/* Generated by Cython 0.29.24 */

/* BEGIN: Cython Metadata
{
    "distutils": {
        "define_macros": [
            [
                "_WIN32_WINNT",
                1536
            ],
            [
                "GRPC_XDS_USER_AGENT_NAME_SUFFIX",
                "\"Python\""
            ],
            [
                "GRPC_XDS_USER_AGENT_VERSION_SUFFIX",
                "\"1.41.0\""
            ],
            [
                "GPR_BACKWARDS_COMPATIBILITY_MODE",
                1
            ],
            [
                "HAVE_CONFIG_H",
                1
            ],
            [
                "GRPC_ENABLE_FORK_SUPPORT",
                1
            ],
            [
                "PyMODINIT_FUNC",
                "extern \"C\" __attribute__((visibility (\"default\"))) PyObject*"
            ],
            [
                "GRPC_POSIX_FORK_ALLOW_PTHREAD_ATFORK",
                1
            ]
        ],
        "depends": [
            "include/grpc/byte_buffer_reader.h",
            "include/grpc/compression.h",
            "include/grpc/grpc.h",
            "include/grpc/grpc_security.h",
            "include/grpc/grpc_security_constants.h",
            "include/grpc/impl/codegen/compression_types.h",
            "include/grpc/impl/codegen/grpc_types.h",
            "include/grpc/impl/codegen/propagation_bits.h",
            "include/grpc/impl/codegen/slice.h",
            "include/grpc/support/alloc.h",
            "src/core/lib/address_utils/sockaddr_utils.h",
            "src/core/lib/iomgr/error.h",
            "src/core/lib/iomgr/executor.h",
            "src/core/lib/iomgr/iomgr_custom.h",
            "src/core/lib/iomgr/iomgr_internal.h",
            "src/core/lib/iomgr/pollset_custom.h",
            "src/core/lib/iomgr/python_util.h",
            "src/core/lib/iomgr/resolve_address.h",
            "src/core/lib/iomgr/resolve_address_custom.h",
            "src/core/lib/iomgr/sockaddr.h",
            "src/core/lib/iomgr/tcp_custom.h",
            "src/core/lib/iomgr/timer_custom.h",
            "src/core/lib/iomgr/timer_manager.h"
        ],
        "extra_compile_args": [
            "-std=c++11",
            "-std=gnu99",
            "-fvisibility=hidden",
            "-fno-wrapv",
            "-fno-exceptions"
        ],
        "extra_link_args": [
            "-lpthread",
            "-Wl,-wrap,memcpy",
            "-static-libgcc"
        ],
        "include_dirs": [
            "src/python/grpcio",
            "include",
            ".",
            "third_party/abseil-cpp",
            "third_party/address_sorting/include",
            "third_party/cares",
            "third_party/cares/cares",
            "third_party/cares/config_linux",
            "third_party/re2",
            "third_party/boringssl-with-bazel/src/include",
            "third_party/upb",
            "src/core/ext/upb-generated",
            "src/core/ext/upbdefs-generated",
            "third_party/xxhash",
            "third_party/zlib"
        ],
        "language": "c++",
        "libraries": [
            "rt",
            "m"
        ],
        "name": "grpc._cython.cygrpc",
        "sources": [
            "src/python/grpcio/grpc/_cython/cygrpc.pyx",
            "src/core/ext/filters/census/grpc_context.cc",
            "src/core/ext/filters/client_channel/backend_metric.cc",
            "src/core/ext/filters/client_channel/backup_poller.cc",
            "src/core/ext/filters/client_channel/channel_connectivity.cc",
            "src/core/ext/filters/client_channel/client_channel.cc",
            "src/core/ext/filters/client_channel/client_channel_channelz.cc",
            "src/core/ext/filters/client_channel/client_channel_factory.cc",
            "src/core/ext/filters/client_channel/client_channel_plugin.cc",
            "src/core/ext/filters/client_channel/config_selector.cc",
            "src/core/ext/filters/client_channel/dynamic_filters.cc",
            "src/core/ext/filters/client_channel/global_subchannel_pool.cc",
            "src/core/ext/filters/client_channel/health/health_check_client.cc",
            "src/core/ext/filters/client_channel/http_connect_handshaker.cc",
            "src/core/ext/filters/client_channel/http_proxy.cc",
            "src/core/ext/filters/client_channel/lb_policy.cc",
            "src/core/ext/filters/client_channel/lb_policy/address_filtering.cc",
            "src/core/ext/filters/client_channel/lb_policy/child_policy_handler.cc",
            "src/core/ext/filters/client_channel/lb_policy/grpclb/client_load_reporting_filter.cc",
            "src/core/ext/filters/client_channel/lb_policy/grpclb/grpclb.cc",
            "src/core/ext/filters/client_channel/lb_policy/grpclb/grpclb_balancer_addresses.cc",
            "src/core/ext/filters/client_channel/lb_policy/grpclb/grpclb_channel_secure.cc",
            "src/core/ext/filters/client_channel/lb_policy/grpclb/grpclb_client_stats.cc",
            "src/core/ext/filters/client_channel/lb_policy/grpclb/load_balancer_api.cc",
            "src/core/ext/filters/client_channel/lb_policy/pick_first/pick_first.cc",
            "src/core/ext/filters/client_channel/lb_policy/priority/priority.cc",
            "src/core/ext/filters/client_channel/lb_policy/ring_hash/ring_hash.cc",
            "src/core/ext/filters/client_channel/lb_policy/round_robin/round_robin.cc",
            "src/core/ext/filters/client_channel/lb_policy/weighted_target/weighted_target.cc",
            "src/core/ext/filters/client_channel/lb_policy/xds/cds.cc",
            "src/core/ext/filters/client_channel/lb_policy/xds/xds_cluster_impl.cc",
            "src/core/ext/filters/client_channel/lb_policy/xds/xds_cluster_manager.cc",
            "src/core/ext/filters/client_channel/lb_policy/xds/xds_cluster_resolver.cc",
            "src/core/ext/filters/client_channel/lb_policy_registry.cc",
            "src/core/ext/filters/client_channel/local_subchannel_pool.cc",
            "src/core/ext/filters/client_channel/proxy_mapper_registry.cc",
            "src/core/ext/filters/client_channel/resolver.cc",
            "src/core/ext/filters/client_channel/resolver/dns/c_ares/dns_resolver_ares.cc",
            "src/core/ext/filters/client_channel/resolver/dns/c_ares/grpc_ares_ev_driver_event_engine.cc",
            "src/core/ext/filters/client_channel/resolver/dns/c_ares/grpc_ares_ev_driver_posix.cc",
            "src/core/ext/filters/client_channel/resolver/dns/c_ares/grpc_ares_ev_driver_windows.cc",
            "src/core/ext/filters/client_channel/resolver/dns/c_ares/grpc_ares_wrapper.cc",
            "src/core/ext/filters/client_channel/resolver/dns/c_ares/grpc_ares_wrapper_event_engine.cc",
            "src/core/ext/filters/client_channel/resolver/dns/c_ares/grpc_ares_wrapper_posix.cc",
            "src/core/ext/filters/client_channel/resolver/dns/c_ares/grpc_ares_wrapper_windows.cc",
            "src/core/ext/filters/client_channel/resolver/dns/dns_resolver_selection.cc",
            "src/core/ext/filters/client_channel/resolver/dns/native/dns_resolver.cc",
            "src/core/ext/filters/client_channel/resolver/fake/fake_resolver.cc",
            "src/core/ext/filters/client_channel/resolver/google_c2p/google_c2p_resolver.cc",
            "src/core/ext/filters/client_channel/resolver/sockaddr/sockaddr_resolver.cc",
            "src/core/ext/filters/client_channel/resolver/xds/xds_resolver.cc",
            "src/core/ext/filters/client_channel/resolver_registry.cc",
            "src/core/ext/filters/client_channel/resolver_result_parsing.cc",
            "src/core/ext/filters/client_channel/retry_filter.cc",
            "src/core/ext/filters/client_channel/retry_service_config.cc",
            "src/core/ext/filters/client_channel/retry_throttle.cc",
            "src/core/ext/filters/client_channel/server_address.cc",
            "src/core/ext/filters/client_channel/service_config.cc",
            "src/core/ext/filters/client_channel/service_config_channel_arg_filter.cc",
            "src/core/ext/filters/client_channel/service_config_parser.cc",
            "src/core/ext/filters/client_channel/subchannel.cc",
            "src/core/ext/filters/client_channel/subchannel_pool_interface.cc",
            "src/core/ext/filters/client_idle/client_idle_filter.cc",
            "src/core/ext/filters/deadline/deadline_filter.cc",
            "src/core/ext/filters/fault_injection/fault_injection_filter.cc",
            "src/core/ext/filters/fault_injection/service_config_parser.cc",
            "src/core/ext/filters/http/client/http_client_filter.cc",
            "src/core/ext/filters/http/client_authority_filter.cc",
            "src/core/ext/filters/http/http_filters_plugin.cc",
            "src/core/ext/filters/http/message_compress/message_compress_filter.cc",
            "src/core/ext/filters/http/message_compress/message_decompress_filter.cc",
            "src/core/ext/filters/http/server/http_server_filter.cc",
            "src/core/ext/filters/max_age/max_age_filter.cc",
            "src/core/ext/filters/message_size/message_size_filter.cc",
            "src/core/ext/filters/workarounds/workaround_cronet_compression_filter.cc",
            "src/core/ext/filters/workarounds/workaround_utils.cc",
            "src/core/ext/transport/chttp2/alpn/alpn.cc",
            "src/core/ext/transport/chttp2/client/authority.cc",
            "src/core/ext/transport/chttp2/client/chttp2_connector.cc",
            "src/core/ext/transport/chttp2/client/insecure/channel_create.cc",
            "src/core/ext/transport/chttp2/client/insecure/channel_create_posix.cc",
            "src/core/ext/transport/chttp2/client/secure/secure_channel_create.cc",
            "src/core/ext/transport/chttp2/server/chttp2_server.cc",
            "src/core/ext/transport/chttp2/server/insecure/server_chttp2.cc",
            "src/core/ext/transport/chttp2/server/insecure/server_chttp2_posix.cc",
            "src/core/ext/transport/chttp2/server/secure/server_secure_chttp2.cc",
            "src/core/ext/transport/chttp2/transport/bin_decoder.cc",
            "src/core/ext/transport/chttp2/transport/bin_encoder.cc",
            "src/core/ext/transport/chttp2/transport/chttp2_plugin.cc",
            "src/core/ext/transport/chttp2/transport/chttp2_slice_allocator.cc",
            "src/core/ext/transport/chttp2/transport/chttp2_transport.cc",
            "src/core/ext/transport/chttp2/transport/context_list.cc",
            "src/core/ext/transport/chttp2/transport/flow_control.cc",
            "src/core/ext/transport/chttp2/transport/frame_data.cc",
            "src/core/ext/transport/chttp2/transport/frame_goaway.cc",
            "src/core/ext/transport/chttp2/transport/frame_ping.cc",
            "src/core/ext/transport/chttp2/transport/frame_rst_stream.cc",
            "src/core/ext/transport/chttp2/transport/frame_settings.cc",
            "src/core/ext/transport/chttp2/transport/frame_window_update.cc",
            "src/core/ext/transport/chttp2/transport/hpack_encoder.cc",
            "src/core/ext/transport/chttp2/transport/hpack_encoder_table.cc",
            "src/core/ext/transport/chttp2/transport/hpack_parser.cc",
            "src/core/ext/transport/chttp2/transport/hpack_parser_table.cc",
            "src/core/ext/transport/chttp2/transport/hpack_utils.cc",
            "src/core/ext/transport/chttp2/transport/http2_settings.cc",
            "src/core/ext/transport/chttp2/transport/huffsyms.cc",
            "src/core/ext/transport/chttp2/transport/incoming_metadata.cc",
            "src/core/ext/transport/chttp2/transport/parsing.cc",
            "src/core/ext/transport/chttp2/transport/stream_lists.cc",
            "src/core/ext/transport/chttp2/transport/stream_map.cc",
            "src/core/ext/transport/chttp2/transport/varint.cc",
            "src/core/ext/transport/chttp2/transport/writing.cc",
            "src/core/ext/transport/inproc/inproc_plugin.cc",
            "src/core/ext/transport/inproc/inproc_transport.cc",
            "src/core/ext/upb-generated/envoy/admin/v3/config_dump.upb.c",
            "src/core/ext/upb-generated/envoy/annotations/deprecation.upb.c",
            "src/core/ext/upb-generated/envoy/annotations/resource.upb.c",
            "src/core/ext/upb-generated/envoy/config/accesslog/v3/accesslog.upb.c",
            "src/core/ext/upb-generated/envoy/config/bootstrap/v3/bootstrap.upb.c",
            "src/core/ext/upb-generated/envoy/config/cluster/v3/circuit_breaker.upb.c",
            "src/core/ext/upb-generated/envoy/config/cluster/v3/cluster.upb.c",
            "src/core/ext/upb-generated/envoy/config/cluster/v3/filter.upb.c",
            "src/core/ext/upb-generated/envoy/config/cluster/v3/outlier_detection.upb.c",
            "src/core/ext/upb-generated/envoy/config/core/v3/address.upb.c",
            "src/core/ext/upb-generated/envoy/config/core/v3/backoff.upb.c",
            "src/core/ext/upb-generated/envoy/config/core/v3/base.upb.c",
            "src/core/ext/upb-generated/envoy/config/core/v3/config_source.upb.c",
            "src/core/ext/upb-generated/envoy/config/core/v3/event_service_config.upb.c",
            "src/core/ext/upb-generated/envoy/config/core/v3/extension.upb.c",
            "src/core/ext/upb-generated/envoy/config/core/v3/grpc_service.upb.c",
            "src/core/ext/upb-generated/envoy/config/core/v3/health_check.upb.c",
            "src/core/ext/upb-generated/envoy/config/core/v3/http_uri.upb.c",
            "src/core/ext/upb-generated/envoy/config/core/v3/protocol.upb.c",
            "src/core/ext/upb-generated/envoy/config/core/v3/proxy_protocol.upb.c",
            "src/core/ext/upb-generated/envoy/config/core/v3/resolver.upb.c",
            "src/core/ext/upb-generated/envoy/config/core/v3/socket_option.upb.c",
            "src/core/ext/upb-generated/envoy/config/core/v3/substitution_format_string.upb.c",
            "src/core/ext/upb-generated/envoy/config/core/v3/udp_socket_config.upb.c",
            "src/core/ext/upb-generated/envoy/config/endpoint/v3/endpoint.upb.c",
            "src/core/ext/upb-generated/envoy/config/endpoint/v3/endpoint_components.upb.c",
            "src/core/ext/upb-generated/envoy/config/endpoint/v3/load_report.upb.c",
            "src/core/ext/upb-generated/envoy/config/listener/v3/api_listener.upb.c",
            "src/core/ext/upb-generated/envoy/config/listener/v3/listener.upb.c",
            "src/core/ext/upb-generated/envoy/config/listener/v3/listener_components.upb.c",
            "src/core/ext/upb-generated/envoy/config/listener/v3/quic_config.upb.c",
            "src/core/ext/upb-generated/envoy/config/listener/v3/udp_listener_config.upb.c",
            "src/core/ext/upb-generated/envoy/config/metrics/v3/stats.upb.c",
            "src/core/ext/upb-generated/envoy/config/overload/v3/overload.upb.c",
            "src/core/ext/upb-generated/envoy/config/rbac/v3/rbac.upb.c",
            "src/core/ext/upb-generated/envoy/config/route/v3/route.upb.c",
            "src/core/ext/upb-generated/envoy/config/route/v3/route_components.upb.c",
            "src/core/ext/upb-generated/envoy/config/route/v3/scoped_route.upb.c",
            "src/core/ext/upb-generated/envoy/config/trace/v3/http_tracer.upb.c",
            "src/core/ext/upb-generated/envoy/extensions/clusters/aggregate/v3/cluster.upb.c",
            "src/core/ext/upb-generated/envoy/extensions/filters/common/fault/v3/fault.upb.c",
            "src/core/ext/upb-generated/envoy/extensions/filters/http/fault/v3/fault.upb.c",
            "src/core/ext/upb-generated/envoy/extensions/filters/http/router/v3/router.upb.c",
            "src/core/ext/upb-generated/envoy/extensions/filters/network/http_connection_manager/v3/http_connection_manager.upb.c",
            "src/core/ext/upb-generated/envoy/extensions/transport_sockets/tls/v3/cert.upb.c",
            "src/core/ext/upb-generated/envoy/extensions/transport_sockets/tls/v3/common.upb.c",
            "src/core/ext/upb-generated/envoy/extensions/transport_sockets/tls/v3/secret.upb.c",
            "src/core/ext/upb-generated/envoy/extensions/transport_sockets/tls/v3/tls.upb.c",
            "src/core/ext/upb-generated/envoy/service/cluster/v3/cds.upb.c",
            "src/core/ext/upb-generated/envoy/service/discovery/v3/ads.upb.c",
            "src/core/ext/upb-generated/envoy/service/discovery/v3/discovery.upb.c",
            "src/core/ext/upb-generated/envoy/service/endpoint/v3/eds.upb.c",
            "src/core/ext/upb-generated/envoy/service/listener/v3/lds.upb.c",
            "src/core/ext/upb-generated/envoy/service/load_stats/v3/lrs.upb.c",
            "src/core/ext/upb-generated/envoy/service/route/v3/rds.upb.c",
            "src/core/ext/upb-generated/envoy/service/route/v3/srds.upb.c",
            "src/core/ext/upb-generated/envoy/service/status/v3/csds.upb.c",
            "src/core/ext/upb-generated/envoy/type/http/v3/path_transformation.upb.c",
            "src/core/ext/upb-generated/envoy/type/matcher/v3/metadata.upb.c",
            "src/core/ext/upb-generated/envoy/type/matcher/v3/node.upb.c",
            "src/core/ext/upb-generated/envoy/type/matcher/v3/number.upb.c",
            "src/core/ext/upb-generated/envoy/type/matcher/v3/path.upb.c",
            "src/core/ext/upb-generated/envoy/type/matcher/v3/regex.upb.c",
            "src/core/ext/upb-generated/envoy/type/matcher/v3/string.upb.c",
            "src/core/ext/upb-generated/envoy/type/matcher/v3/struct.upb.c",
            "src/core/ext/upb-generated/envoy/type/matcher/v3/value.upb.c",
            "src/core/ext/upb-generated/envoy/type/metadata/v3/metadata.upb.c",
            "src/core/ext/upb-generated/envoy/type/tracing/v3/custom_tag.upb.c",
            "src/core/ext/upb-generated/envoy/type/v3/http.upb.c",
            "src/core/ext/upb-generated/envoy/type/v3/percent.upb.c",
            "src/core/ext/upb-generated/envoy/type/v3/range.upb.c",
            "src/core/ext/upb-generated/envoy/type/v3/semantic_version.upb.c",
            "src/core/ext/upb-generated/google/api/annotations.upb.c",
            "src/core/ext/upb-generated/google/api/expr/v1alpha1/checked.upb.c",
            "src/core/ext/upb-generated/google/api/expr/v1alpha1/syntax.upb.c",
            "src/core/ext/upb-generated/google/api/http.upb.c",
            "src/core/ext/upb-generated/google/protobuf/any.upb.c",
            "src/core/ext/upb-generated/google/protobuf/descriptor.upb.c",
            "src/core/ext/upb-generated/google/protobuf/duration.upb.c",
            "src/core/ext/upb-generated/google/protobuf/empty.upb.c",
            "src/core/ext/upb-generated/google/protobuf/struct.upb.c",
            "src/core/ext/upb-generated/google/protobuf/timestamp.upb.c",
            "src/core/ext/upb-generated/google/protobuf/wrappers.upb.c",
            "src/core/ext/upb-generated/google/rpc/status.upb.c",
            "src/core/ext/upb-generated/src/proto/grpc/gcp/altscontext.upb.c",
            "src/core/ext/upb-generated/src/proto/grpc/gcp/handshaker.upb.c",
            "src/core/ext/upb-generated/src/proto/grpc/gcp/transport_security_common.upb.c",
            "src/core/ext/upb-generated/src/proto/grpc/health/v1/health.upb.c",
            "src/core/ext/upb-generated/src/proto/grpc/lb/v1/load_balancer.upb.c",
            "src/core/ext/upb-generated/udpa/annotations/migrate.upb.c",
            "src/core/ext/upb-generated/udpa/annotations/security.upb.c",
            "src/core/ext/upb-generated/udpa/annotations/sensitive.upb.c",
            "src/core/ext/upb-generated/udpa/annotations/status.upb.c",
            "src/core/ext/upb-generated/udpa/annotations/versioning.upb.c",
            "src/core/ext/upb-generated/udpa/data/orca/v1/orca_load_report.upb.c",
            "src/core/ext/upb-generated/udpa/type/v1/typed_struct.upb.c",
            "src/core/ext/upb-generated/validate/validate.upb.c",
            "src/core/ext/upb-generated/xds/core/v3/authority.upb.c",
            "src/core/ext/upb-generated/xds/core/v3/collection_entry.upb.c",
            "src/core/ext/upb-generated/xds/core/v3/context_params.upb.c",
            "src/core/ext/upb-generated/xds/core/v3/resource.upb.c",
            "src/core/ext/upb-generated/xds/core/v3/resource_locator.upb.c",
            "src/core/ext/upb-generated/xds/core/v3/resource_name.upb.c",
            "src/core/ext/upbdefs-generated/envoy/admin/v3/config_dump.upbdefs.c",
            "src/core/ext/upbdefs-generated/envoy/annotations/deprecation.upbdefs.c",
            "src/core/ext/upbdefs-generated/envoy/annotations/resource.upbdefs.c",
            "src/core/ext/upbdefs-generated/envoy/config/accesslog/v3/accesslog.upbdefs.c",
            "src/core/ext/upbdefs-generated/envoy/config/bootstrap/v3/bootstrap.upbdefs.c",
            "src/core/ext/upbdefs-generated/envoy/config/cluster/v3/circuit_breaker.upbdefs.c",
            "src/core/ext/upbdefs-generated/envoy/config/cluster/v3/cluster.upbdefs.c",
            "src/core/ext/upbdefs-generated/envoy/config/cluster/v3/filter.upbdefs.c",
            "src/core/ext/upbdefs-generated/envoy/config/cluster/v3/outlier_detection.upbdefs.c",
            "src/core/ext/upbdefs-generated/envoy/config/core/v3/address.upbdefs.c",
            "src/core/ext/upbdefs-generated/envoy/config/core/v3/backoff.upbdefs.c",
            "src/core/ext/upbdefs-generated/envoy/config/core/v3/base.upbdefs.c",
            "src/core/ext/upbdefs-generated/envoy/config/core/v3/config_source.upbdefs.c",
            "src/core/ext/upbdefs-generated/envoy/config/core/v3/event_service_config.upbdefs.c",
            "src/core/ext/upbdefs-generated/envoy/config/core/v3/extension.upbdefs.c",
            "src/core/ext/upbdefs-generated/envoy/config/core/v3/grpc_service.upbdefs.c",
            "src/core/ext/upbdefs-generated/envoy/config/core/v3/health_check.upbdefs.c",
            "src/core/ext/upbdefs-generated/envoy/config/core/v3/http_uri.upbdefs.c",
            "src/core/ext/upbdefs-generated/envoy/config/core/v3/protocol.upbdefs.c",
            "src/core/ext/upbdefs-generated/envoy/config/core/v3/proxy_protocol.upbdefs.c",
            "src/core/ext/upbdefs-generated/envoy/config/core/v3/resolver.upbdefs.c",
            "src/core/ext/upbdefs-generated/envoy/config/core/v3/socket_option.upbdefs.c",
            "src/core/ext/upbdefs-generated/envoy/config/core/v3/substitution_format_string.upbdefs.c",
            "src/core/ext/upbdefs-generated/envoy/config/core/v3/udp_socket_config.upbdefs.c",
            "src/core/ext/upbdefs-generated/envoy/config/endpoint/v3/endpoint.upbdefs.c",
            "src/core/ext/upbdefs-generated/envoy/config/endpoint/v3/endpoint_components.upbdefs.c",
            "src/core/ext/upbdefs-generated/envoy/config/endpoint/v3/load_report.upbdefs.c",
            "src/core/ext/upbdefs-generated/envoy/config/listener/v3/api_listener.upbdefs.c",
            "src/core/ext/upbdefs-generated/envoy/config/listener/v3/listener.upbdefs.c",
            "src/core/ext/upbdefs-generated/envoy/config/listener/v3/listener_components.upbdefs.c",
            "src/core/ext/upbdefs-generated/envoy/config/listener/v3/quic_config.upbdefs.c",
            "src/core/ext/upbdefs-generated/envoy/config/listener/v3/udp_listener_config.upbdefs.c",
            "src/core/ext/upbdefs-generated/envoy/config/metrics/v3/stats.upbdefs.c",
            "src/core/ext/upbdefs-generated/envoy/config/overload/v3/overload.upbdefs.c",
            "src/core/ext/upbdefs-generated/envoy/config/route/v3/route.upbdefs.c",
            "src/core/ext/upbdefs-generated/envoy/config/route/v3/route_components.upbdefs.c",
            "src/core/ext/upbdefs-generated/envoy/config/route/v3/scoped_route.upbdefs.c",
            "src/core/ext/upbdefs-generated/envoy/config/trace/v3/http_tracer.upbdefs.c",
            "src/core/ext/upbdefs-generated/envoy/extensions/clusters/aggregate/v3/cluster.upbdefs.c",
            "src/core/ext/upbdefs-generated/envoy/extensions/filters/common/fault/v3/fault.upbdefs.c",
            "src/core/ext/upbdefs-generated/envoy/extensions/filters/http/fault/v3/fault.upbdefs.c",
            "src/core/ext/upbdefs-generated/envoy/extensions/filters/http/router/v3/router.upbdefs.c",
            "src/core/ext/upbdefs-generated/envoy/extensions/filters/network/http_connection_manager/v3/http_connection_manager.upbdefs.c",
            "src/core/ext/upbdefs-generated/envoy/extensions/transport_sockets/tls/v3/cert.upbdefs.c",
            "src/core/ext/upbdefs-generated/envoy/extensions/transport_sockets/tls/v3/common.upbdefs.c",
            "src/core/ext/upbdefs-generated/envoy/extensions/transport_sockets/tls/v3/secret.upbdefs.c",
            "src/core/ext/upbdefs-generated/envoy/extensions/transport_sockets/tls/v3/tls.upbdefs.c",
            "src/core/ext/upbdefs-generated/envoy/service/cluster/v3/cds.upbdefs.c",
            "src/core/ext/upbdefs-generated/envoy/service/discovery/v3/ads.upbdefs.c",
            "src/core/ext/upbdefs-generated/envoy/service/discovery/v3/discovery.upbdefs.c",
            "src/core/ext/upbdefs-generated/envoy/service/endpoint/v3/eds.upbdefs.c",
            "src/core/ext/upbdefs-generated/envoy/service/listener/v3/lds.upbdefs.c",
            "src/core/ext/upbdefs-generated/envoy/service/load_stats/v3/lrs.upbdefs.c",
            "src/core/ext/upbdefs-generated/envoy/service/route/v3/rds.upbdefs.c",
            "src/core/ext/upbdefs-generated/envoy/service/route/v3/srds.upbdefs.c",
            "src/core/ext/upbdefs-generated/envoy/service/status/v3/csds.upbdefs.c",
            "src/core/ext/upbdefs-generated/envoy/type/http/v3/path_transformation.upbdefs.c",
            "src/core/ext/upbdefs-generated/envoy/type/matcher/v3/metadata.upbdefs.c",
            "src/core/ext/upbdefs-generated/envoy/type/matcher/v3/node.upbdefs.c",
            "src/core/ext/upbdefs-generated/envoy/type/matcher/v3/number.upbdefs.c",
            "src/core/ext/upbdefs-generated/envoy/type/matcher/v3/path.upbdefs.c",
            "src/core/ext/upbdefs-generated/envoy/type/matcher/v3/regex.upbdefs.c",
            "src/core/ext/upbdefs-generated/envoy/type/matcher/v3/string.upbdefs.c",
            "src/core/ext/upbdefs-generated/envoy/type/matcher/v3/struct.upbdefs.c",
            "src/core/ext/upbdefs-generated/envoy/type/matcher/v3/value.upbdefs.c",
            "src/core/ext/upbdefs-generated/envoy/type/metadata/v3/metadata.upbdefs.c",
            "src/core/ext/upbdefs-generated/envoy/type/tracing/v3/custom_tag.upbdefs.c",
            "src/core/ext/upbdefs-generated/envoy/type/v3/http.upbdefs.c",
            "src/core/ext/upbdefs-generated/envoy/type/v3/percent.upbdefs.c",
            "src/core/ext/upbdefs-generated/envoy/type/v3/range.upbdefs.c",
            "src/core/ext/upbdefs-generated/envoy/type/v3/semantic_version.upbdefs.c",
            "src/core/ext/upbdefs-generated/google/api/annotations.upbdefs.c",
            "src/core/ext/upbdefs-generated/google/api/http.upbdefs.c",
            "src/core/ext/upbdefs-generated/google/protobuf/any.upbdefs.c",
            "src/core/ext/upbdefs-generated/google/protobuf/descriptor.upbdefs.c",
            "src/core/ext/upbdefs-generated/google/protobuf/duration.upbdefs.c",
            "src/core/ext/upbdefs-generated/google/protobuf/empty.upbdefs.c",
            "src/core/ext/upbdefs-generated/google/protobuf/struct.upbdefs.c",
            "src/core/ext/upbdefs-generated/google/protobuf/timestamp.upbdefs.c",
            "src/core/ext/upbdefs-generated/google/protobuf/wrappers.upbdefs.c",
            "src/core/ext/upbdefs-generated/google/rpc/status.upbdefs.c",
            "src/core/ext/upbdefs-generated/udpa/annotations/migrate.upbdefs.c",
            "src/core/ext/upbdefs-generated/udpa/annotations/security.upbdefs.c",
            "src/core/ext/upbdefs-generated/udpa/annotations/sensitive.upbdefs.c",
            "src/core/ext/upbdefs-generated/udpa/annotations/status.upbdefs.c",
            "src/core/ext/upbdefs-generated/udpa/annotations/versioning.upbdefs.c",
            "src/core/ext/upbdefs-generated/udpa/type/v1/typed_struct.upbdefs.c",
            "src/core/ext/upbdefs-generated/validate/validate.upbdefs.c",
            "src/core/ext/upbdefs-generated/xds/core/v3/authority.upbdefs.c",
            "src/core/ext/upbdefs-generated/xds/core/v3/collection_entry.upbdefs.c",
            "src/core/ext/upbdefs-generated/xds/core/v3/context_params.upbdefs.c",
            "src/core/ext/upbdefs-generated/xds/core/v3/resource.upbdefs.c",
            "src/core/ext/upbdefs-generated/xds/core/v3/resource_locator.upbdefs.c",
            "src/core/ext/upbdefs-generated/xds/core/v3/resource_name.upbdefs.c",
            "src/core/ext/xds/certificate_provider_registry.cc",
            "src/core/ext/xds/certificate_provider_store.cc",
            "src/core/ext/xds/file_watcher_certificate_provider_factory.cc",
            "src/core/ext/xds/xds_api.cc",
            "src/core/ext/xds/xds_bootstrap.cc",
            "src/core/ext/xds/xds_certificate_provider.cc",
            "src/core/ext/xds/xds_client.cc",
            "src/core/ext/xds/xds_client_stats.cc",
            "src/core/ext/xds/xds_http_fault_filter.cc",
            "src/core/ext/xds/xds_http_filters.cc",
            "src/core/ext/xds/xds_server_config_fetcher.cc",
            "src/core/lib/address_utils/parse_address.cc",
            "src/core/lib/address_utils/sockaddr_utils.cc",
            "src/core/lib/avl/avl.cc",
            "src/core/lib/backoff/backoff.cc",
            "src/core/lib/channel/channel_args.cc",
            "src/core/lib/channel/channel_stack.cc",
            "src/core/lib/channel/channel_stack_builder.cc",
            "src/core/lib/channel/channel_trace.cc",
            "src/core/lib/channel/channelz.cc",
            "src/core/lib/channel/channelz_registry.cc",
            "src/core/lib/channel/connected_channel.cc",
            "src/core/lib/channel/handshaker.cc",
            "src/core/lib/channel/handshaker_registry.cc",
            "src/core/lib/channel/status_util.cc",
            "src/core/lib/compression/compression.cc",
            "src/core/lib/compression/compression_args.cc",
            "src/core/lib/compression/compression_internal.cc",
            "src/core/lib/compression/message_compress.cc",
            "src/core/lib/compression/stream_compression.cc",
            "src/core/lib/compression/stream_compression_gzip.cc",
            "src/core/lib/compression/stream_compression_identity.cc",
            "src/core/lib/config/core_configuration.cc",
            "src/core/lib/debug/stats.cc",
            "src/core/lib/debug/stats_data.cc",
            "src/core/lib/debug/trace.cc",
            "src/core/lib/event_engine/endpoint_config.cc",
            "src/core/lib/event_engine/event_engine.cc",
            "src/core/lib/event_engine/sockaddr.cc",
            "src/core/lib/gpr/alloc.cc",
            "src/core/lib/gpr/atm.cc",
            "src/core/lib/gpr/cpu_iphone.cc",
            "src/core/lib/gpr/cpu_linux.cc",
            "src/core/lib/gpr/cpu_posix.cc",
            "src/core/lib/gpr/cpu_windows.cc",
            "src/core/lib/gpr/env_linux.cc",
            "src/core/lib/gpr/env_posix.cc",
            "src/core/lib/gpr/env_windows.cc",
            "src/core/lib/gpr/log.cc",
            "src/core/lib/gpr/log_android.cc",
            "src/core/lib/gpr/log_linux.cc",
            "src/core/lib/gpr/log_posix.cc",
            "src/core/lib/gpr/log_windows.cc",
            "src/core/lib/gpr/murmur_hash.cc",
            "src/core/lib/gpr/string.cc",
            "src/core/lib/gpr/string_posix.cc",
            "src/core/lib/gpr/string_util_windows.cc",
            "src/core/lib/gpr/string_windows.cc",
            "src/core/lib/gpr/sync.cc",
            "src/core/lib/gpr/sync_abseil.cc",
            "src/core/lib/gpr/sync_posix.cc",
            "src/core/lib/gpr/sync_windows.cc",
            "src/core/lib/gpr/time.cc",
            "src/core/lib/gpr/time_posix.cc",
            "src/core/lib/gpr/time_precise.cc",
            "src/core/lib/gpr/time_windows.cc",
            "src/core/lib/gpr/tmpfile_msys.cc",
            "src/core/lib/gpr/tmpfile_posix.cc",
            "src/core/lib/gpr/tmpfile_windows.cc",
            "src/core/lib/gpr/wrap_memcpy.cc",
            "src/core/lib/gprpp/arena.cc",
            "src/core/lib/gprpp/examine_stack.cc",
            "src/core/lib/gprpp/fork.cc",
            "src/core/lib/gprpp/global_config_env.cc",
            "src/core/lib/gprpp/host_port.cc",
            "src/core/lib/gprpp/mpscq.cc",
            "src/core/lib/gprpp/stat_posix.cc",
            "src/core/lib/gprpp/stat_windows.cc",
            "src/core/lib/gprpp/status_helper.cc",
            "src/core/lib/gprpp/thd_posix.cc",
            "src/core/lib/gprpp/thd_windows.cc",
            "src/core/lib/gprpp/time_util.cc",
            "src/core/lib/http/format_request.cc",
            "src/core/lib/http/httpcli.cc",
            "src/core/lib/http/httpcli_security_connector.cc",
            "src/core/lib/http/parser.cc",
            "src/core/lib/iomgr/buffer_list.cc",
            "src/core/lib/iomgr/call_combiner.cc",
            "src/core/lib/iomgr/cfstream_handle.cc",
            "src/core/lib/iomgr/combiner.cc",
            "src/core/lib/iomgr/dualstack_socket_posix.cc",
            "src/core/lib/iomgr/endpoint.cc",
            "src/core/lib/iomgr/endpoint_cfstream.cc",
            "src/core/lib/iomgr/endpoint_pair_event_engine.cc",
            "src/core/lib/iomgr/endpoint_pair_posix.cc",
            "src/core/lib/iomgr/endpoint_pair_windows.cc",
            "src/core/lib/iomgr/error.cc",
            "src/core/lib/iomgr/error_cfstream.cc",
            "src/core/lib/iomgr/ev_apple.cc",
            "src/core/lib/iomgr/ev_epoll1_linux.cc",
            "src/core/lib/iomgr/ev_epollex_linux.cc",
            "src/core/lib/iomgr/ev_poll_posix.cc",
            "src/core/lib/iomgr/ev_posix.cc",
            "src/core/lib/iomgr/ev_windows.cc",
            "src/core/lib/iomgr/event_engine/closure.cc",
            "src/core/lib/iomgr/event_engine/endpoint.cc",
            "src/core/lib/iomgr/event_engine/iomgr.cc",
            "src/core/lib/iomgr/event_engine/pollset.cc",
            "src/core/lib/iomgr/event_engine/resolved_address_internal.cc",
            "src/core/lib/iomgr/event_engine/resolver.cc",
            "src/core/lib/iomgr/event_engine/tcp.cc",
            "src/core/lib/iomgr/event_engine/timer.cc",
            "src/core/lib/iomgr/exec_ctx.cc",
            "src/core/lib/iomgr/executor.cc",
            "src/core/lib/iomgr/executor/mpmcqueue.cc",
            "src/core/lib/iomgr/executor/threadpool.cc",
            "src/core/lib/iomgr/fork_posix.cc",
            "src/core/lib/iomgr/fork_windows.cc",
            "src/core/lib/iomgr/gethostname_fallback.cc",
            "src/core/lib/iomgr/gethostname_host_name_max.cc",
            "src/core/lib/iomgr/gethostname_sysconf.cc",
            "src/core/lib/iomgr/grpc_if_nametoindex_posix.cc",
            "src/core/lib/iomgr/grpc_if_nametoindex_unsupported.cc",
            "src/core/lib/iomgr/internal_errqueue.cc",
            "src/core/lib/iomgr/iocp_windows.cc",
            "src/core/lib/iomgr/iomgr.cc",
            "src/core/lib/iomgr/iomgr_custom.cc",
            "src/core/lib/iomgr/iomgr_internal.cc",
            "src/core/lib/iomgr/iomgr_posix.cc",
            "src/core/lib/iomgr/iomgr_posix_cfstream.cc",
            "src/core/lib/iomgr/iomgr_windows.cc",
            "src/core/lib/iomgr/is_epollexclusive_available.cc",
            "src/core/lib/iomgr/load_file.cc",
            "src/core/lib/iomgr/lockfree_event.cc",
            "src/core/lib/iomgr/polling_entity.cc",
            "src/core/lib/iomgr/pollset.cc",
            "src/core/lib/iomgr/pollset_custom.cc",
            "src/core/lib/iomgr/pollset_set.cc",
            "src/core/lib/iomgr/pollset_set_custom.cc",
            "src/core/lib/iomgr/pollset_set_windows.cc",
            "src/core/lib/iomgr/pollset_windows.cc",
            "src/core/lib/iomgr/resolve_address.cc",
            "src/core/lib/iomgr/resolve_address_custom.cc",
            "src/core/lib/iomgr/resolve_address_posix.cc",
            "src/core/lib/iomgr/resolve_address_windows.cc",
            "src/core/lib/iomgr/resource_quota.cc",
            "src/core/lib/iomgr/socket_factory_posix.cc",
            "src/core/lib/iomgr/socket_mutator.cc",
            "src/core/lib/iomgr/socket_utils_common_posix.cc",
            "src/core/lib/iomgr/socket_utils_linux.cc",
            "src/core/lib/iomgr/socket_utils_posix.cc",
            "src/core/lib/iomgr/socket_utils_windows.cc",
            "src/core/lib/iomgr/socket_windows.cc",
            "src/core/lib/iomgr/tcp_client.cc",
            "src/core/lib/iomgr/tcp_client_cfstream.cc",
            "src/core/lib/iomgr/tcp_client_custom.cc",
            "src/core/lib/iomgr/tcp_client_posix.cc",
            "src/core/lib/iomgr/tcp_client_windows.cc",
            "src/core/lib/iomgr/tcp_custom.cc",
            "src/core/lib/iomgr/tcp_posix.cc",
            "src/core/lib/iomgr/tcp_server.cc",
            "src/core/lib/iomgr/tcp_server_custom.cc",
            "src/core/lib/iomgr/tcp_server_posix.cc",
            "src/core/lib/iomgr/tcp_server_utils_posix_common.cc",
            "src/core/lib/iomgr/tcp_server_utils_posix_ifaddrs.cc",
            "src/core/lib/iomgr/tcp_server_utils_posix_noifaddrs.cc",
            "src/core/lib/iomgr/tcp_server_windows.cc",
            "src/core/lib/iomgr/tcp_windows.cc",
            "src/core/lib/iomgr/time_averaged_stats.cc",
            "src/core/lib/iomgr/timer.cc",
            "src/core/lib/iomgr/timer_custom.cc",
            "src/core/lib/iomgr/timer_generic.cc",
            "src/core/lib/iomgr/timer_heap.cc",
            "src/core/lib/iomgr/timer_manager.cc",
            "src/core/lib/iomgr/udp_server.cc",
            "src/core/lib/iomgr/unix_sockets_posix.cc",
            "src/core/lib/iomgr/unix_sockets_posix_noop.cc",
            "src/core/lib/iomgr/wakeup_fd_eventfd.cc",
            "src/core/lib/iomgr/wakeup_fd_nospecial.cc",
            "src/core/lib/iomgr/wakeup_fd_pipe.cc",
            "src/core/lib/iomgr/wakeup_fd_posix.cc",
            "src/core/lib/iomgr/work_serializer.cc",
            "src/core/lib/json/json_reader.cc",
            "src/core/lib/json/json_util.cc",
            "src/core/lib/json/json_writer.cc",
            "src/core/lib/matchers/matchers.cc",
            "src/core/lib/profiling/basic_timers.cc",
            "src/core/lib/profiling/stap_timers.cc",
            "src/core/lib/security/authorization/authorization_policy_provider_vtable.cc",
            "src/core/lib/security/authorization/evaluate_args.cc",
            "src/core/lib/security/authorization/sdk_server_authz_filter.cc",
            "src/core/lib/security/context/security_context.cc",
            "src/core/lib/security/credentials/alts/alts_credentials.cc",
            "src/core/lib/security/credentials/alts/check_gcp_environment.cc",
            "src/core/lib/security/credentials/alts/check_gcp_environment_linux.cc",
            "src/core/lib/security/credentials/alts/check_gcp_environment_no_op.cc",
            "src/core/lib/security/credentials/alts/check_gcp_environment_windows.cc",
            "src/core/lib/security/credentials/alts/grpc_alts_credentials_client_options.cc",
            "src/core/lib/security/credentials/alts/grpc_alts_credentials_options.cc",
            "src/core/lib/security/credentials/alts/grpc_alts_credentials_server_options.cc",
            "src/core/lib/security/credentials/composite/composite_credentials.cc",
            "src/core/lib/security/credentials/credentials.cc",
            "src/core/lib/security/credentials/credentials_metadata.cc",
            "src/core/lib/security/credentials/external/aws_external_account_credentials.cc",
            "src/core/lib/security/credentials/external/aws_request_signer.cc",
            "src/core/lib/security/credentials/external/external_account_credentials.cc",
            "src/core/lib/security/credentials/external/file_external_account_credentials.cc",
            "src/core/lib/security/credentials/external/url_external_account_credentials.cc",
            "src/core/lib/security/credentials/fake/fake_credentials.cc",
            "src/core/lib/security/credentials/google_default/credentials_generic.cc",
            "src/core/lib/security/credentials/google_default/google_default_credentials.cc",
            "src/core/lib/security/credentials/iam/iam_credentials.cc",
            "src/core/lib/security/credentials/insecure/insecure_credentials.cc",
            "src/core/lib/security/credentials/jwt/json_token.cc",
            "src/core/lib/security/credentials/jwt/jwt_credentials.cc",
            "src/core/lib/security/credentials/jwt/jwt_verifier.cc",
            "src/core/lib/security/credentials/local/local_credentials.cc",
            "src/core/lib/security/credentials/oauth2/oauth2_credentials.cc",
            "src/core/lib/security/credentials/plugin/plugin_credentials.cc",
            "src/core/lib/security/credentials/ssl/ssl_credentials.cc",
            "src/core/lib/security/credentials/tls/grpc_tls_certificate_distributor.cc",
            "src/core/lib/security/credentials/tls/grpc_tls_certificate_provider.cc",
            "src/core/lib/security/credentials/tls/grpc_tls_credentials_options.cc",
            "src/core/lib/security/credentials/tls/tls_credentials.cc",
            "src/core/lib/security/credentials/tls/tls_utils.cc",
            "src/core/lib/security/credentials/xds/xds_credentials.cc",
            "src/core/lib/security/security_connector/alts/alts_security_connector.cc",
            "src/core/lib/security/security_connector/fake/fake_security_connector.cc",
            "src/core/lib/security/security_connector/insecure/insecure_security_connector.cc",
            "src/core/lib/security/security_connector/load_system_roots_fallback.cc",
            "src/core/lib/security/security_connector/load_system_roots_linux.cc",
            "src/core/lib/security/security_connector/local/local_security_connector.cc",
            "src/core/lib/security/security_connector/security_connector.cc",
            "src/core/lib/security/security_connector/ssl/ssl_security_connector.cc",
            "src/core/lib/security/security_connector/ssl_utils.cc",
            "src/core/lib/security/security_connector/ssl_utils_config.cc",
            "src/core/lib/security/security_connector/tls/tls_security_connector.cc",
            "src/core/lib/security/transport/client_auth_filter.cc",
            "src/core/lib/security/transport/secure_endpoint.cc",
            "src/core/lib/security/transport/security_handshaker.cc",
            "src/core/lib/security/transport/server_auth_filter.cc",
            "src/core/lib/security/transport/tsi_error.cc",
            "src/core/lib/security/util/json_util.cc",
            "src/core/lib/slice/b64.cc",
            "src/core/lib/slice/percent_encoding.cc",
            "src/core/lib/slice/slice.cc",
            "src/core/lib/slice/slice_buffer.cc",
            "src/core/lib/slice/slice_intern.cc",
            "src/core/lib/slice/slice_string_helpers.cc",
            "src/core/lib/surface/api_trace.cc",
            "src/core/lib/surface/byte_buffer.cc",
            "src/core/lib/surface/byte_buffer_reader.cc",
            "src/core/lib/surface/call.cc",
            "src/core/lib/surface/call_details.cc",
            "src/core/lib/surface/call_log_batch.cc",
            "src/core/lib/surface/channel.cc",
            "src/core/lib/surface/channel_init.cc",
            "src/core/lib/surface/channel_ping.cc",
            "src/core/lib/surface/channel_stack_type.cc",
            "src/core/lib/surface/completion_queue.cc",
            "src/core/lib/surface/completion_queue_factory.cc",
            "src/core/lib/surface/event_string.cc",
            "src/core/lib/surface/init.cc",
            "src/core/lib/surface/init_secure.cc",
            "src/core/lib/surface/lame_client.cc",
            "src/core/lib/surface/metadata_array.cc",
            "src/core/lib/surface/server.cc",
            "src/core/lib/surface/validate_metadata.cc",
            "src/core/lib/surface/version.cc",
            "src/core/lib/transport/authority_override.cc",
            "src/core/lib/transport/bdp_estimator.cc",
            "src/core/lib/transport/byte_stream.cc",
            "src/core/lib/transport/connectivity_state.cc",
            "src/core/lib/transport/error_utils.cc",
            "src/core/lib/transport/metadata.cc",
            "src/core/lib/transport/metadata_batch.cc",
            "src/core/lib/transport/pid_controller.cc",
            "src/core/lib/transport/static_metadata.cc",
            "src/core/lib/transport/status_conversion.cc",
            "src/core/lib/transport/status_metadata.cc",
            "src/core/lib/transport/timeout_encoding.cc",
            "src/core/lib/transport/transport.cc",
            "src/core/lib/transport/transport_op_string.cc",
            "src/core/lib/uri/uri_parser.cc",
            "src/core/plugin_registry/grpc_plugin_registry.cc",
            "src/core/tsi/alts/crypt/aes_gcm.cc",
            "src/core/tsi/alts/crypt/gsec.cc",
            "src/core/tsi/alts/frame_protector/alts_counter.cc",
            "src/core/tsi/alts/frame_protector/alts_crypter.cc",
            "src/core/tsi/alts/frame_protector/alts_frame_protector.cc",
            "src/core/tsi/alts/frame_protector/alts_record_protocol_crypter_common.cc",
            "src/core/tsi/alts/frame_protector/alts_seal_privacy_integrity_crypter.cc",
            "src/core/tsi/alts/frame_protector/alts_unseal_privacy_integrity_crypter.cc",
            "src/core/tsi/alts/frame_protector/frame_handler.cc",
            "src/core/tsi/alts/handshaker/alts_handshaker_client.cc",
            "src/core/tsi/alts/handshaker/alts_shared_resource.cc",
            "src/core/tsi/alts/handshaker/alts_tsi_handshaker.cc",
            "src/core/tsi/alts/handshaker/alts_tsi_utils.cc",
            "src/core/tsi/alts/handshaker/transport_security_common_api.cc",
            "src/core/tsi/alts/zero_copy_frame_protector/alts_grpc_integrity_only_record_protocol.cc",
            "src/core/tsi/alts/zero_copy_frame_protector/alts_grpc_privacy_integrity_record_protocol.cc",
            "src/core/tsi/alts/zero_copy_frame_protector/alts_grpc_record_protocol_common.cc",
            "src/core/tsi/alts/zero_copy_frame_protector/alts_iovec_record_protocol.cc",
            "src/core/tsi/alts/zero_copy_frame_protector/alts_zero_copy_grpc_protector.cc",
            "src/core/tsi/fake_transport_security.cc",
            "src/core/tsi/local_transport_security.cc",
            "src/core/tsi/ssl/session_cache/ssl_session_boringssl.cc",
            "src/core/tsi/ssl/session_cache/ssl_session_cache.cc",
            "src/core/tsi/ssl/session_cache/ssl_session_openssl.cc",
            "src/core/tsi/ssl_transport_security.cc",
            "src/core/tsi/transport_security.cc",
            "src/core/tsi/transport_security_grpc.cc",
            "third_party/abseil-cpp/absl/base/internal/cycleclock.cc",
            "third_party/abseil-cpp/absl/base/internal/exponential_biased.cc",
            "third_party/abseil-cpp/absl/base/internal/low_level_alloc.cc",
            "third_party/abseil-cpp/absl/base/internal/raw_logging.cc",
            "third_party/abseil-cpp/absl/base/internal/spinlock.cc",
            "third_party/abseil-cpp/absl/base/internal/spinlock_wait.cc",
            "third_party/abseil-cpp/absl/base/internal/sysinfo.cc",
            "third_party/abseil-cpp/absl/base/internal/thread_identity.cc",
            "third_party/abseil-cpp/absl/base/internal/throw_delegate.cc",
            "third_party/abseil-cpp/absl/base/internal/unscaledcycleclock.cc",
            "third_party/abseil-cpp/absl/base/log_severity.cc",
            "third_party/abseil-cpp/absl/container/internal/hashtablez_sampler.cc",
            "third_party/abseil-cpp/absl/container/internal/hashtablez_sampler_force_weak_definition.cc",
            "third_party/abseil-cpp/absl/container/internal/raw_hash_set.cc",
            "third_party/abseil-cpp/absl/debugging/internal/address_is_readable.cc",
            "third_party/abseil-cpp/absl/debugging/internal/demangle.cc",
            "third_party/abseil-cpp/absl/debugging/internal/elf_mem_image.cc",
            "third_party/abseil-cpp/absl/debugging/internal/vdso_support.cc",
            "third_party/abseil-cpp/absl/debugging/stacktrace.cc",
            "third_party/abseil-cpp/absl/debugging/symbolize.cc",
            "third_party/abseil-cpp/absl/hash/internal/city.cc",
            "third_party/abseil-cpp/absl/hash/internal/hash.cc",
            "third_party/abseil-cpp/absl/hash/internal/wyhash.cc",
            "third_party/abseil-cpp/absl/numeric/int128.cc",
            "third_party/abseil-cpp/absl/status/status.cc",
            "third_party/abseil-cpp/absl/status/status_payload_printer.cc",
            "third_party/abseil-cpp/absl/status/statusor.cc",
            "third_party/abseil-cpp/absl/strings/ascii.cc",
            "third_party/abseil-cpp/absl/strings/charconv.cc",
            "third_party/abseil-cpp/absl/strings/cord.cc",
            "third_party/abseil-cpp/absl/strings/escaping.cc",
            "third_party/abseil-cpp/absl/strings/internal/charconv_bigint.cc",
            "third_party/abseil-cpp/absl/strings/internal/charconv_parse.cc",
            "third_party/abseil-cpp/absl/strings/internal/cord_internal.cc",
            "third_party/abseil-cpp/absl/strings/internal/cord_rep_ring.cc",
            "third_party/abseil-cpp/absl/strings/internal/escaping.cc",
            "third_party/abseil-cpp/absl/strings/internal/memutil.cc",
            "third_party/abseil-cpp/absl/strings/internal/ostringstream.cc",
            "third_party/abseil-cpp/absl/strings/internal/str_format/arg.cc",
            "third_party/abseil-cpp/absl/strings/internal/str_format/bind.cc",
            "third_party/abseil-cpp/absl/strings/internal/str_format/extension.cc",
            "third_party/abseil-cpp/absl/strings/internal/str_format/float_conversion.cc",
            "third_party/abseil-cpp/absl/strings/internal/str_format/output.cc",
            "third_party/abseil-cpp/absl/strings/internal/str_format/parser.cc",
            "third_party/abseil-cpp/absl/strings/internal/utf8.cc",
            "third_party/abseil-cpp/absl/strings/match.cc",
            "third_party/abseil-cpp/absl/strings/numbers.cc",
            "third_party/abseil-cpp/absl/strings/str_cat.cc",
            "third_party/abseil-cpp/absl/strings/str_replace.cc",
            "third_party/abseil-cpp/absl/strings/str_split.cc",
            "third_party/abseil-cpp/absl/strings/string_view.cc",
            "third_party/abseil-cpp/absl/strings/substitute.cc",
            "third_party/abseil-cpp/absl/synchronization/barrier.cc",
            "third_party/abseil-cpp/absl/synchronization/blocking_counter.cc",
            "third_party/abseil-cpp/absl/synchronization/internal/create_thread_identity.cc",
            "third_party/abseil-cpp/absl/synchronization/internal/graphcycles.cc",
            "third_party/abseil-cpp/absl/synchronization/internal/per_thread_sem.cc",
            "third_party/abseil-cpp/absl/synchronization/internal/waiter.cc",
            "third_party/abseil-cpp/absl/synchronization/mutex.cc",
            "third_party/abseil-cpp/absl/synchronization/notification.cc",
            "third_party/abseil-cpp/absl/time/civil_time.cc",
            "third_party/abseil-cpp/absl/time/clock.cc",
            "third_party/abseil-cpp/absl/time/duration.cc",
            "third_party/abseil-cpp/absl/time/format.cc",
            "third_party/abseil-cpp/absl/time/internal/cctz/src/civil_time_detail.cc",
            "third_party/abseil-cpp/absl/time/internal/cctz/src/time_zone_fixed.cc",
            "third_party/abseil-cpp/absl/time/internal/cctz/src/time_zone_format.cc",
            "third_party/abseil-cpp/absl/time/internal/cctz/src/time_zone_if.cc",
            "third_party/abseil-cpp/absl/time/internal/cctz/src/time_zone_impl.cc",
            "third_party/abseil-cpp/absl/time/internal/cctz/src/time_zone_info.cc",
            "third_party/abseil-cpp/absl/time/internal/cctz/src/time_zone_libc.cc",
            "third_party/abseil-cpp/absl/time/internal/cctz/src/time_zone_lookup.cc",
            "third_party/abseil-cpp/absl/time/internal/cctz/src/time_zone_posix.cc",
            "third_party/abseil-cpp/absl/time/internal/cctz/src/zone_info_source.cc",
            "third_party/abseil-cpp/absl/time/time.cc",
            "third_party/abseil-cpp/absl/types/bad_optional_access.cc",
            "third_party/abseil-cpp/absl/types/bad_variant_access.cc",
            "third_party/address_sorting/address_sorting.c",
            "third_party/address_sorting/address_sorting_posix.c",
            "third_party/address_sorting/address_sorting_windows.c",
            "third_party/boringssl-with-bazel/err_data.c",
            "third_party/boringssl-with-bazel/src/crypto/asn1/a_bitstr.c",
            "third_party/boringssl-with-bazel/src/crypto/asn1/a_bool.c",
            "third_party/boringssl-with-bazel/src/crypto/asn1/a_d2i_fp.c",
            "third_party/boringssl-with-bazel/src/crypto/asn1/a_dup.c",
            "third_party/boringssl-with-bazel/src/crypto/asn1/a_enum.c",
            "third_party/boringssl-with-bazel/src/crypto/asn1/a_gentm.c",
            "third_party/boringssl-with-bazel/src/crypto/asn1/a_i2d_fp.c",
            "third_party/boringssl-with-bazel/src/crypto/asn1/a_int.c",
            "third_party/boringssl-with-bazel/src/crypto/asn1/a_mbstr.c",
            "third_party/boringssl-with-bazel/src/crypto/asn1/a_object.c",
            "third_party/boringssl-with-bazel/src/crypto/asn1/a_octet.c",
            "third_party/boringssl-with-bazel/src/crypto/asn1/a_print.c",
            "third_party/boringssl-with-bazel/src/crypto/asn1/a_strnid.c",
            "third_party/boringssl-with-bazel/src/crypto/asn1/a_time.c",
            "third_party/boringssl-with-bazel/src/crypto/asn1/a_type.c",
            "third_party/boringssl-with-bazel/src/crypto/asn1/a_utctm.c",
            "third_party/boringssl-with-bazel/src/crypto/asn1/a_utf8.c",
            "third_party/boringssl-with-bazel/src/crypto/asn1/asn1_lib.c",
            "third_party/boringssl-with-bazel/src/crypto/asn1/asn1_par.c",
            "third_party/boringssl-with-bazel/src/crypto/asn1/asn_pack.c",
            "third_party/boringssl-with-bazel/src/crypto/asn1/f_enum.c",
            "third_party/boringssl-with-bazel/src/crypto/asn1/f_int.c",
            "third_party/boringssl-with-bazel/src/crypto/asn1/f_string.c",
            "third_party/boringssl-with-bazel/src/crypto/asn1/tasn_dec.c",
            "third_party/boringssl-with-bazel/src/crypto/asn1/tasn_enc.c",
            "third_party/boringssl-with-bazel/src/crypto/asn1/tasn_fre.c",
            "third_party/boringssl-with-bazel/src/crypto/asn1/tasn_new.c",
            "third_party/boringssl-with-bazel/src/crypto/asn1/tasn_typ.c",
            "third_party/boringssl-with-bazel/src/crypto/asn1/tasn_utl.c",
            "third_party/boringssl-with-bazel/src/crypto/asn1/time_support.c",
            "third_party/boringssl-with-bazel/src/crypto/base64/base64.c",
            "third_party/boringssl-with-bazel/src/crypto/bio/bio.c",
            "third_party/boringssl-with-bazel/src/crypto/bio/bio_mem.c",
            "third_party/boringssl-with-bazel/src/crypto/bio/connect.c",
            "third_party/boringssl-with-bazel/src/crypto/bio/fd.c",
            "third_party/boringssl-with-bazel/src/crypto/bio/file.c",
            "third_party/boringssl-with-bazel/src/crypto/bio/hexdump.c",
            "third_party/boringssl-with-bazel/src/crypto/bio/pair.c",
            "third_party/boringssl-with-bazel/src/crypto/bio/printf.c",
            "third_party/boringssl-with-bazel/src/crypto/bio/socket.c",
            "third_party/boringssl-with-bazel/src/crypto/bio/socket_helper.c",
            "third_party/boringssl-with-bazel/src/crypto/blake2/blake2.c",
            "third_party/boringssl-with-bazel/src/crypto/bn_extra/bn_asn1.c",
            "third_party/boringssl-with-bazel/src/crypto/bn_extra/convert.c",
            "third_party/boringssl-with-bazel/src/crypto/buf/buf.c",
            "third_party/boringssl-with-bazel/src/crypto/bytestring/asn1_compat.c",
            "third_party/boringssl-with-bazel/src/crypto/bytestring/ber.c",
            "third_party/boringssl-with-bazel/src/crypto/bytestring/cbb.c",
            "third_party/boringssl-with-bazel/src/crypto/bytestring/cbs.c",
            "third_party/boringssl-with-bazel/src/crypto/bytestring/unicode.c",
            "third_party/boringssl-with-bazel/src/crypto/chacha/chacha.c",
            "third_party/boringssl-with-bazel/src/crypto/cipher_extra/cipher_extra.c",
            "third_party/boringssl-with-bazel/src/crypto/cipher_extra/derive_key.c",
            "third_party/boringssl-with-bazel/src/crypto/cipher_extra/e_aesccm.c",
            "third_party/boringssl-with-bazel/src/crypto/cipher_extra/e_aesctrhmac.c",
            "third_party/boringssl-with-bazel/src/crypto/cipher_extra/e_aesgcmsiv.c",
            "third_party/boringssl-with-bazel/src/crypto/cipher_extra/e_chacha20poly1305.c",
            "third_party/boringssl-with-bazel/src/crypto/cipher_extra/e_null.c",
            "third_party/boringssl-with-bazel/src/crypto/cipher_extra/e_rc2.c",
            "third_party/boringssl-with-bazel/src/crypto/cipher_extra/e_rc4.c",
            "third_party/boringssl-with-bazel/src/crypto/cipher_extra/e_tls.c",
            "third_party/boringssl-with-bazel/src/crypto/cipher_extra/tls_cbc.c",
            "third_party/boringssl-with-bazel/src/crypto/cmac/cmac.c",
            "third_party/boringssl-with-bazel/src/crypto/conf/conf.c",
            "third_party/boringssl-with-bazel/src/crypto/cpu-aarch64-fuchsia.c",
            "third_party/boringssl-with-bazel/src/crypto/cpu-aarch64-linux.c",
            "third_party/boringssl-with-bazel/src/crypto/cpu-aarch64-win.c",
            "third_party/boringssl-with-bazel/src/crypto/cpu-arm-linux.c",
            "third_party/boringssl-with-bazel/src/crypto/cpu-arm.c",
            "third_party/boringssl-with-bazel/src/crypto/cpu-intel.c",
            "third_party/boringssl-with-bazel/src/crypto/cpu-ppc64le.c",
            "third_party/boringssl-with-bazel/src/crypto/crypto.c",
            "third_party/boringssl-with-bazel/src/crypto/curve25519/curve25519.c",
            "third_party/boringssl-with-bazel/src/crypto/curve25519/spake25519.c",
            "third_party/boringssl-with-bazel/src/crypto/dh_extra/dh_asn1.c",
            "third_party/boringssl-with-bazel/src/crypto/dh_extra/params.c",
            "third_party/boringssl-with-bazel/src/crypto/digest_extra/digest_extra.c",
            "third_party/boringssl-with-bazel/src/crypto/dsa/dsa.c",
            "third_party/boringssl-with-bazel/src/crypto/dsa/dsa_asn1.c",
            "third_party/boringssl-with-bazel/src/crypto/ec_extra/ec_asn1.c",
            "third_party/boringssl-with-bazel/src/crypto/ec_extra/ec_derive.c",
            "third_party/boringssl-with-bazel/src/crypto/ec_extra/hash_to_curve.c",
            "third_party/boringssl-with-bazel/src/crypto/ecdh_extra/ecdh_extra.c",
            "third_party/boringssl-with-bazel/src/crypto/ecdsa_extra/ecdsa_asn1.c",
            "third_party/boringssl-with-bazel/src/crypto/engine/engine.c",
            "third_party/boringssl-with-bazel/src/crypto/err/err.c",
            "third_party/boringssl-with-bazel/src/crypto/evp/digestsign.c",
            "third_party/boringssl-with-bazel/src/crypto/evp/evp.c",
            "third_party/boringssl-with-bazel/src/crypto/evp/evp_asn1.c",
            "third_party/boringssl-with-bazel/src/crypto/evp/evp_ctx.c",
            "third_party/boringssl-with-bazel/src/crypto/evp/p_dsa_asn1.c",
            "third_party/boringssl-with-bazel/src/crypto/evp/p_ec.c",
            "third_party/boringssl-with-bazel/src/crypto/evp/p_ec_asn1.c",
            "third_party/boringssl-with-bazel/src/crypto/evp/p_ed25519.c",
            "third_party/boringssl-with-bazel/src/crypto/evp/p_ed25519_asn1.c",
            "third_party/boringssl-with-bazel/src/crypto/evp/p_rsa.c",
            "third_party/boringssl-with-bazel/src/crypto/evp/p_rsa_asn1.c",
            "third_party/boringssl-with-bazel/src/crypto/evp/p_x25519.c",
            "third_party/boringssl-with-bazel/src/crypto/evp/p_x25519_asn1.c",
            "third_party/boringssl-with-bazel/src/crypto/evp/pbkdf.c",
            "third_party/boringssl-with-bazel/src/crypto/evp/print.c",
            "third_party/boringssl-with-bazel/src/crypto/evp/scrypt.c",
            "third_party/boringssl-with-bazel/src/crypto/evp/sign.c",
            "third_party/boringssl-with-bazel/src/crypto/ex_data.c",
            "third_party/boringssl-with-bazel/src/crypto/fipsmodule/bcm.c",
            "third_party/boringssl-with-bazel/src/crypto/fipsmodule/fips_shared_support.c",
            "third_party/boringssl-with-bazel/src/crypto/hkdf/hkdf.c",
            "third_party/boringssl-with-bazel/src/crypto/hpke/hpke.c",
            "third_party/boringssl-with-bazel/src/crypto/hrss/hrss.c",
            "third_party/boringssl-with-bazel/src/crypto/lhash/lhash.c",
            "third_party/boringssl-with-bazel/src/crypto/mem.c",
            "third_party/boringssl-with-bazel/src/crypto/obj/obj.c",
            "third_party/boringssl-with-bazel/src/crypto/obj/obj_xref.c",
            "third_party/boringssl-with-bazel/src/crypto/pem/pem_all.c",
            "third_party/boringssl-with-bazel/src/crypto/pem/pem_info.c",
            "third_party/boringssl-with-bazel/src/crypto/pem/pem_lib.c",
            "third_party/boringssl-with-bazel/src/crypto/pem/pem_oth.c",
            "third_party/boringssl-with-bazel/src/crypto/pem/pem_pk8.c",
            "third_party/boringssl-with-bazel/src/crypto/pem/pem_pkey.c",
            "third_party/boringssl-with-bazel/src/crypto/pem/pem_x509.c",
            "third_party/boringssl-with-bazel/src/crypto/pem/pem_xaux.c",
            "third_party/boringssl-with-bazel/src/crypto/pkcs7/pkcs7.c",
            "third_party/boringssl-with-bazel/src/crypto/pkcs7/pkcs7_x509.c",
            "third_party/boringssl-with-bazel/src/crypto/pkcs8/p5_pbev2.c",
            "third_party/boringssl-with-bazel/src/crypto/pkcs8/pkcs8.c",
            "third_party/boringssl-with-bazel/src/crypto/pkcs8/pkcs8_x509.c",
            "third_party/boringssl-with-bazel/src/crypto/poly1305/poly1305.c",
            "third_party/boringssl-with-bazel/src/crypto/poly1305/poly1305_arm.c",
            "third_party/boringssl-with-bazel/src/crypto/poly1305/poly1305_vec.c",
            "third_party/boringssl-with-bazel/src/crypto/pool/pool.c",
            "third_party/boringssl-with-bazel/src/crypto/rand_extra/deterministic.c",
            "third_party/boringssl-with-bazel/src/crypto/rand_extra/forkunsafe.c",
            "third_party/boringssl-with-bazel/src/crypto/rand_extra/fuchsia.c",
            "third_party/boringssl-with-bazel/src/crypto/rand_extra/passive.c",
            "third_party/boringssl-with-bazel/src/crypto/rand_extra/rand_extra.c",
            "third_party/boringssl-with-bazel/src/crypto/rand_extra/windows.c",
            "third_party/boringssl-with-bazel/src/crypto/rc4/rc4.c",
            "third_party/boringssl-with-bazel/src/crypto/refcount_c11.c",
            "third_party/boringssl-with-bazel/src/crypto/refcount_lock.c",
            "third_party/boringssl-with-bazel/src/crypto/rsa_extra/rsa_asn1.c",
            "third_party/boringssl-with-bazel/src/crypto/rsa_extra/rsa_print.c",
            "third_party/boringssl-with-bazel/src/crypto/siphash/siphash.c",
            "third_party/boringssl-with-bazel/src/crypto/stack/stack.c",
            "third_party/boringssl-with-bazel/src/crypto/thread.c",
            "third_party/boringssl-with-bazel/src/crypto/thread_none.c",
            "third_party/boringssl-with-bazel/src/crypto/thread_pthread.c",
            "third_party/boringssl-with-bazel/src/crypto/thread_win.c",
            "third_party/boringssl-with-bazel/src/crypto/trust_token/pmbtoken.c",
            "third_party/boringssl-with-bazel/src/crypto/trust_token/trust_token.c",
            "third_party/boringssl-with-bazel/src/crypto/trust_token/voprf.c",
            "third_party/boringssl-with-bazel/src/crypto/x509/a_digest.c",
            "third_party/boringssl-with-bazel/src/crypto/x509/a_sign.c",
            "third_party/boringssl-with-bazel/src/crypto/x509/a_strex.c",
            "third_party/boringssl-with-bazel/src/crypto/x509/a_verify.c",
            "third_party/boringssl-with-bazel/src/crypto/x509/algorithm.c",
            "third_party/boringssl-with-bazel/src/crypto/x509/asn1_gen.c",
            "third_party/boringssl-with-bazel/src/crypto/x509/by_dir.c",
            "third_party/boringssl-with-bazel/src/crypto/x509/by_file.c",
            "third_party/boringssl-with-bazel/src/crypto/x509/i2d_pr.c",
            "third_party/boringssl-with-bazel/src/crypto/x509/rsa_pss.c",
            "third_party/boringssl-with-bazel/src/crypto/x509/t_crl.c",
            "third_party/boringssl-with-bazel/src/crypto/x509/t_req.c",
            "third_party/boringssl-with-bazel/src/crypto/x509/t_x509.c",
            "third_party/boringssl-with-bazel/src/crypto/x509/t_x509a.c",
            "third_party/boringssl-with-bazel/src/crypto/x509/x509.c",
            "third_party/boringssl-with-bazel/src/crypto/x509/x509_att.c",
            "third_party/boringssl-with-bazel/src/crypto/x509/x509_cmp.c",
            "third_party/boringssl-with-bazel/src/crypto/x509/x509_d2.c",
            "third_party/boringssl-with-bazel/src/crypto/x509/x509_def.c",
            "third_party/boringssl-with-bazel/src/crypto/x509/x509_ext.c",
            "third_party/boringssl-with-bazel/src/crypto/x509/x509_lu.c",
            "third_party/boringssl-with-bazel/src/crypto/x509/x509_obj.c",
            "third_party/boringssl-with-bazel/src/crypto/x509/x509_req.c",
            "third_party/boringssl-with-bazel/src/crypto/x509/x509_set.c",
            "third_party/boringssl-with-bazel/src/crypto/x509/x509_trs.c",
            "third_party/boringssl-with-bazel/src/crypto/x509/x509_txt.c",
            "third_party/boringssl-with-bazel/src/crypto/x509/x509_v3.c",
            "third_party/boringssl-with-bazel/src/crypto/x509/x509_vfy.c",
            "third_party/boringssl-with-bazel/src/crypto/x509/x509_vpm.c",
            "third_party/boringssl-with-bazel/src/crypto/x509/x509cset.c",
            "third_party/boringssl-with-bazel/src/crypto/x509/x509name.c",
            "third_party/boringssl-with-bazel/src/crypto/x509/x509rset.c",
            "third_party/boringssl-with-bazel/src/crypto/x509/x509spki.c",
            "third_party/boringssl-with-bazel/src/crypto/x509/x_algor.c",
            "third_party/boringssl-with-bazel/src/crypto/x509/x_all.c",
            "third_party/boringssl-with-bazel/src/crypto/x509/x_attrib.c",
            "third_party/boringssl-with-bazel/src/crypto/x509/x_crl.c",
            "third_party/boringssl-with-bazel/src/crypto/x509/x_exten.c",
            "third_party/boringssl-with-bazel/src/crypto/x509/x_info.c",
            "third_party/boringssl-with-bazel/src/crypto/x509/x_name.c",
            "third_party/boringssl-with-bazel/src/crypto/x509/x_pkey.c",
            "third_party/boringssl-with-bazel/src/crypto/x509/x_pubkey.c",
            "third_party/boringssl-with-bazel/src/crypto/x509/x_req.c",
            "third_party/boringssl-with-bazel/src/crypto/x509/x_sig.c",
            "third_party/boringssl-with-bazel/src/crypto/x509/x_spki.c",
            "third_party/boringssl-with-bazel/src/crypto/x509/x_val.c",
            "third_party/boringssl-with-bazel/src/crypto/x509/x_x509.c",
            "third_party/boringssl-with-bazel/src/crypto/x509/x_x509a.c",
            "third_party/boringssl-with-bazel/src/crypto/x509v3/pcy_cache.c",
            "third_party/boringssl-with-bazel/src/crypto/x509v3/pcy_data.c",
            "third_party/boringssl-with-bazel/src/crypto/x509v3/pcy_lib.c",
            "third_party/boringssl-with-bazel/src/crypto/x509v3/pcy_map.c",
            "third_party/boringssl-with-bazel/src/crypto/x509v3/pcy_node.c",
            "third_party/boringssl-with-bazel/src/crypto/x509v3/pcy_tree.c",
            "third_party/boringssl-with-bazel/src/crypto/x509v3/v3_akey.c",
            "third_party/boringssl-with-bazel/src/crypto/x509v3/v3_akeya.c",
            "third_party/boringssl-with-bazel/src/crypto/x509v3/v3_alt.c",
            "third_party/boringssl-with-bazel/src/crypto/x509v3/v3_bcons.c",
            "third_party/boringssl-with-bazel/src/crypto/x509v3/v3_bitst.c",
            "third_party/boringssl-with-bazel/src/crypto/x509v3/v3_conf.c",
            "third_party/boringssl-with-bazel/src/crypto/x509v3/v3_cpols.c",
            "third_party/boringssl-with-bazel/src/crypto/x509v3/v3_crld.c",
            "third_party/boringssl-with-bazel/src/crypto/x509v3/v3_enum.c",
            "third_party/boringssl-with-bazel/src/crypto/x509v3/v3_extku.c",
            "third_party/boringssl-with-bazel/src/crypto/x509v3/v3_genn.c",
            "third_party/boringssl-with-bazel/src/crypto/x509v3/v3_ia5.c",
            "third_party/boringssl-with-bazel/src/crypto/x509v3/v3_info.c",
            "third_party/boringssl-with-bazel/src/crypto/x509v3/v3_int.c",
            "third_party/boringssl-with-bazel/src/crypto/x509v3/v3_lib.c",
            "third_party/boringssl-with-bazel/src/crypto/x509v3/v3_ncons.c",
            "third_party/boringssl-with-bazel/src/crypto/x509v3/v3_ocsp.c",
            "third_party/boringssl-with-bazel/src/crypto/x509v3/v3_pci.c",
            "third_party/boringssl-with-bazel/src/crypto/x509v3/v3_pcia.c",
            "third_party/boringssl-with-bazel/src/crypto/x509v3/v3_pcons.c",
            "third_party/boringssl-with-bazel/src/crypto/x509v3/v3_pmaps.c",
            "third_party/boringssl-with-bazel/src/crypto/x509v3/v3_prn.c",
            "third_party/boringssl-with-bazel/src/crypto/x509v3/v3_purp.c",
            "third_party/boringssl-with-bazel/src/crypto/x509v3/v3_skey.c",
            "third_party/boringssl-with-bazel/src/crypto/x509v3/v3_utl.c",
            "third_party/boringssl-with-bazel/src/ssl/bio_ssl.cc",
            "third_party/boringssl-with-bazel/src/ssl/d1_both.cc",
            "third_party/boringssl-with-bazel/src/ssl/d1_lib.cc",
            "third_party/boringssl-with-bazel/src/ssl/d1_pkt.cc",
            "third_party/boringssl-with-bazel/src/ssl/d1_srtp.cc",
            "third_party/boringssl-with-bazel/src/ssl/dtls_method.cc",
            "third_party/boringssl-with-bazel/src/ssl/dtls_record.cc",
            "third_party/boringssl-with-bazel/src/ssl/encrypted_client_hello.cc",
            "third_party/boringssl-with-bazel/src/ssl/extensions.cc",
            "third_party/boringssl-with-bazel/src/ssl/handoff.cc",
            "third_party/boringssl-with-bazel/src/ssl/handshake.cc",
            "third_party/boringssl-with-bazel/src/ssl/handshake_client.cc",
            "third_party/boringssl-with-bazel/src/ssl/handshake_server.cc",
            "third_party/boringssl-with-bazel/src/ssl/s3_both.cc",
            "third_party/boringssl-with-bazel/src/ssl/s3_lib.cc",
            "third_party/boringssl-with-bazel/src/ssl/s3_pkt.cc",
            "third_party/boringssl-with-bazel/src/ssl/ssl_aead_ctx.cc",
            "third_party/boringssl-with-bazel/src/ssl/ssl_asn1.cc",
            "third_party/boringssl-with-bazel/src/ssl/ssl_buffer.cc",
            "third_party/boringssl-with-bazel/src/ssl/ssl_cert.cc",
            "third_party/boringssl-with-bazel/src/ssl/ssl_cipher.cc",
            "third_party/boringssl-with-bazel/src/ssl/ssl_file.cc",
            "third_party/boringssl-with-bazel/src/ssl/ssl_key_share.cc",
            "third_party/boringssl-with-bazel/src/ssl/ssl_lib.cc",
            "third_party/boringssl-with-bazel/src/ssl/ssl_privkey.cc",
            "third_party/boringssl-with-bazel/src/ssl/ssl_session.cc",
            "third_party/boringssl-with-bazel/src/ssl/ssl_stat.cc",
            "third_party/boringssl-with-bazel/src/ssl/ssl_transcript.cc",
            "third_party/boringssl-with-bazel/src/ssl/ssl_versions.cc",
            "third_party/boringssl-with-bazel/src/ssl/ssl_x509.cc",
            "third_party/boringssl-with-bazel/src/ssl/t1_enc.cc",
            "third_party/boringssl-with-bazel/src/ssl/tls13_both.cc",
            "third_party/boringssl-with-bazel/src/ssl/tls13_client.cc",
            "third_party/boringssl-with-bazel/src/ssl/tls13_enc.cc",
            "third_party/boringssl-with-bazel/src/ssl/tls13_server.cc",
            "third_party/boringssl-with-bazel/src/ssl/tls_method.cc",
            "third_party/boringssl-with-bazel/src/ssl/tls_record.cc",
            "third_party/cares/cares/ares__close_sockets.c",
            "third_party/cares/cares/ares__get_hostent.c",
            "third_party/cares/cares/ares__read_line.c",
            "third_party/cares/cares/ares__timeval.c",
            "third_party/cares/cares/ares_cancel.c",
            "third_party/cares/cares/ares_create_query.c",
            "third_party/cares/cares/ares_data.c",
            "third_party/cares/cares/ares_destroy.c",
            "third_party/cares/cares/ares_expand_name.c",
            "third_party/cares/cares/ares_expand_string.c",
            "third_party/cares/cares/ares_fds.c",
            "third_party/cares/cares/ares_free_hostent.c",
            "third_party/cares/cares/ares_free_string.c",
            "third_party/cares/cares/ares_getenv.c",
            "third_party/cares/cares/ares_gethostbyaddr.c",
            "third_party/cares/cares/ares_gethostbyname.c",
            "third_party/cares/cares/ares_getnameinfo.c",
            "third_party/cares/cares/ares_getopt.c",
            "third_party/cares/cares/ares_getsock.c",
            "third_party/cares/cares/ares_init.c",
            "third_party/cares/cares/ares_library_init.c",
            "third_party/cares/cares/ares_llist.c",
            "third_party/cares/cares/ares_mkquery.c",
            "third_party/cares/cares/ares_nowarn.c",
            "third_party/cares/cares/ares_options.c",
            "third_party/cares/cares/ares_parse_a_reply.c",
            "third_party/cares/cares/ares_parse_aaaa_reply.c",
            "third_party/cares/cares/ares_parse_mx_reply.c",
            "third_party/cares/cares/ares_parse_naptr_reply.c",
            "third_party/cares/cares/ares_parse_ns_reply.c",
            "third_party/cares/cares/ares_parse_ptr_reply.c",
            "third_party/cares/cares/ares_parse_soa_reply.c",
            "third_party/cares/cares/ares_parse_srv_reply.c",
            "third_party/cares/cares/ares_parse_txt_reply.c",
            "third_party/cares/cares/ares_platform.c",
            "third_party/cares/cares/ares_process.c",
            "third_party/cares/cares/ares_query.c",
            "third_party/cares/cares/ares_search.c",
            "third_party/cares/cares/ares_send.c",
            "third_party/cares/cares/ares_strcasecmp.c",
            "third_party/cares/cares/ares_strdup.c",
            "third_party/cares/cares/ares_strerror.c",
            "third_party/cares/cares/ares_strsplit.c",
            "third_party/cares/cares/ares_timeout.c",
            "third_party/cares/cares/ares_version.c",
            "third_party/cares/cares/ares_writev.c",
            "third_party/cares/cares/bitncmp.c",
            "third_party/cares/cares/inet_net_pton.c",
            "third_party/cares/cares/inet_ntop.c",
            "third_party/cares/cares/windows_port.c",
            "third_party/re2/re2/bitstate.cc",
            "third_party/re2/re2/compile.cc",
            "third_party/re2/re2/dfa.cc",
            "third_party/re2/re2/filtered_re2.cc",
            "third_party/re2/re2/mimics_pcre.cc",
            "third_party/re2/re2/nfa.cc",
            "third_party/re2/re2/onepass.cc",
            "third_party/re2/re2/parse.cc",
            "third_party/re2/re2/perl_groups.cc",
            "third_party/re2/re2/prefilter.cc",
            "third_party/re2/re2/prefilter_tree.cc",
            "third_party/re2/re2/prog.cc",
            "third_party/re2/re2/re2.cc",
            "third_party/re2/re2/regexp.cc",
            "third_party/re2/re2/set.cc",
            "third_party/re2/re2/simplify.cc",
            "third_party/re2/re2/stringpiece.cc",
            "third_party/re2/re2/tostring.cc",
            "third_party/re2/re2/unicode_casefold.cc",
            "third_party/re2/re2/unicode_groups.cc",
            "third_party/re2/util/pcre.cc",
            "third_party/re2/util/rune.cc",
            "third_party/re2/util/strutil.cc",
            "third_party/upb/upb/decode.c",
            "third_party/upb/upb/decode_fast.c",
            "third_party/upb/upb/def.c",
            "third_party/upb/upb/encode.c",
            "third_party/upb/upb/msg.c",
            "third_party/upb/upb/reflection.c",
            "third_party/upb/upb/table.c",
            "third_party/upb/upb/text_encode.c",
            "third_party/upb/upb/upb.c",
            "third_party/zlib/adler32.c",
            "third_party/zlib/compress.c",
            "third_party/zlib/crc32.c",
            "third_party/zlib/deflate.c",
            "third_party/zlib/gzclose.c",
            "third_party/zlib/gzlib.c",
            "third_party/zlib/gzread.c",
            "third_party/zlib/gzwrite.c",
            "third_party/zlib/infback.c",
            "third_party/zlib/inffast.c",
            "third_party/zlib/inflate.c",
            "third_party/zlib/inftrees.c",
            "third_party/zlib/trees.c",
            "third_party/zlib/uncompr.c",
            "third_party/zlib/zutil.c",
            "third_party/boringssl-with-bazel/linux-arm/crypto/chacha/chacha-armv4.S",
            "third_party/boringssl-with-bazel/linux-arm/crypto/fipsmodule/aesv8-armx32.S",
            "third_party/boringssl-with-bazel/linux-arm/crypto/fipsmodule/armv4-mont.S",
            "third_party/boringssl-with-bazel/linux-arm/crypto/fipsmodule/bsaes-armv7.S",
            "third_party/boringssl-with-bazel/linux-arm/crypto/fipsmodule/ghash-armv4.S",
            "third_party/boringssl-with-bazel/linux-arm/crypto/fipsmodule/ghashv8-armx32.S",
            "third_party/boringssl-with-bazel/linux-arm/crypto/fipsmodule/sha1-armv4-large.S",
            "third_party/boringssl-with-bazel/linux-arm/crypto/fipsmodule/sha256-armv4.S",
            "third_party/boringssl-with-bazel/linux-arm/crypto/fipsmodule/sha512-armv4.S",
            "third_party/boringssl-with-bazel/linux-arm/crypto/fipsmodule/vpaes-armv7.S",
            "third_party/boringssl-with-bazel/linux-arm/crypto/test/trampoline-armv4.S",
            "third_party/boringssl-with-bazel/src/crypto/curve25519/asm/x25519-asm-arm.S",
            "third_party/boringssl-with-bazel/src/crypto/poly1305/poly1305_arm_asm.S"
        ]
    },
    "module_name": "grpc._cython.cygrpc"
}
END: Cython Metadata */

#ifndef PY_SSIZE_T_CLEAN
#define PY_SSIZE_T_CLEAN
#endif /* PY_SSIZE_T_CLEAN */
#include "Python.h"
#ifndef Py_PYTHON_H
    #error Python headers needed to compile C extensions, please install development version of Python.
#elif PY_VERSION_HEX < 0x02060000 || (0x03000000 <= PY_VERSION_HEX && PY_VERSION_HEX < 0x03030000)
    #error Cython requires Python 2.6+ or Python 3.3+.
#else
#define CYTHON_ABI "0_29_24"
#define CYTHON_HEX_VERSION 0x001D18F0
#define CYTHON_FUTURE_DIVISION 0
#include <stddef.h>
#ifndef offsetof
  #define offsetof(type, member) ( (size_t) & ((type*)0) -> member )
#endif
#if !defined(WIN32) && !defined(MS_WINDOWS)
  #ifndef __stdcall
    #define __stdcall
  #endif
  #ifndef __cdecl
    #define __cdecl
  #endif
  #ifndef __fastcall
    #define __fastcall
  #endif
#endif
#ifndef DL_IMPORT
  #define DL_IMPORT(t) t
#endif
#ifndef DL_EXPORT
  #define DL_EXPORT(t) t
#endif
#define __PYX_COMMA ,
#ifndef HAVE_LONG_LONG
  #if PY_VERSION_HEX >= 0x02070000
    #define HAVE_LONG_LONG
  #endif
#endif
#ifndef PY_LONG_LONG
  #define PY_LONG_LONG LONG_LONG
#endif
#ifndef Py_HUGE_VAL
  #define Py_HUGE_VAL HUGE_VAL
#endif
#ifdef PYPY_VERSION
  #define CYTHON_COMPILING_IN_PYPY 1
  #define CYTHON_COMPILING_IN_PYSTON 0
  #define CYTHON_COMPILING_IN_CPYTHON 0
  #undef CYTHON_USE_TYPE_SLOTS
  #define CYTHON_USE_TYPE_SLOTS 0
  #undef CYTHON_USE_PYTYPE_LOOKUP
  #define CYTHON_USE_PYTYPE_LOOKUP 0
  #if PY_VERSION_HEX < 0x03050000
    #undef CYTHON_USE_ASYNC_SLOTS
    #define CYTHON_USE_ASYNC_SLOTS 0
  #elif !defined(CYTHON_USE_ASYNC_SLOTS)
    #define CYTHON_USE_ASYNC_SLOTS 1
  #endif
  #undef CYTHON_USE_PYLIST_INTERNALS
  #define CYTHON_USE_PYLIST_INTERNALS 0
  #undef CYTHON_USE_UNICODE_INTERNALS
  #define CYTHON_USE_UNICODE_INTERNALS 0
  #undef CYTHON_USE_UNICODE_WRITER
  #define CYTHON_USE_UNICODE_WRITER 0
  #undef CYTHON_USE_PYLONG_INTERNALS
  #define CYTHON_USE_PYLONG_INTERNALS 0
  #undef CYTHON_AVOID_BORROWED_REFS
  #define CYTHON_AVOID_BORROWED_REFS 1
  #undef CYTHON_ASSUME_SAFE_MACROS
  #define CYTHON_ASSUME_SAFE_MACROS 0
  #undef CYTHON_UNPACK_METHODS
  #define CYTHON_UNPACK_METHODS 0
  #undef CYTHON_FAST_THREAD_STATE
  #define CYTHON_FAST_THREAD_STATE 0
  #undef CYTHON_FAST_PYCALL
  #define CYTHON_FAST_PYCALL 0
  #undef CYTHON_PEP489_MULTI_PHASE_INIT
  #define CYTHON_PEP489_MULTI_PHASE_INIT 0
  #undef CYTHON_USE_TP_FINALIZE
  #define CYTHON_USE_TP_FINALIZE 0
  #undef CYTHON_USE_DICT_VERSIONS
  #define CYTHON_USE_DICT_VERSIONS 0
  #undef CYTHON_USE_EXC_INFO_STACK
  #define CYTHON_USE_EXC_INFO_STACK 0
#elif defined(PYSTON_VERSION)
  #define CYTHON_COMPILING_IN_PYPY 0
  #define CYTHON_COMPILING_IN_PYSTON 1
  #define CYTHON_COMPILING_IN_CPYTHON 0
  #ifndef CYTHON_USE_TYPE_SLOTS
    #define CYTHON_USE_TYPE_SLOTS 1
  #endif
  #undef CYTHON_USE_PYTYPE_LOOKUP
  #define CYTHON_USE_PYTYPE_LOOKUP 0
  #undef CYTHON_USE_ASYNC_SLOTS
  #define CYTHON_USE_ASYNC_SLOTS 0
  #undef CYTHON_USE_PYLIST_INTERNALS
  #define CYTHON_USE_PYLIST_INTERNALS 0
  #ifndef CYTHON_USE_UNICODE_INTERNALS
    #define CYTHON_USE_UNICODE_INTERNALS 1
  #endif
  #undef CYTHON_USE_UNICODE_WRITER
  #define CYTHON_USE_UNICODE_WRITER 0
  #undef CYTHON_USE_PYLONG_INTERNALS
  #define CYTHON_USE_PYLONG_INTERNALS 0
  #ifndef CYTHON_AVOID_BORROWED_REFS
    #define CYTHON_AVOID_BORROWED_REFS 0
  #endif
  #ifndef CYTHON_ASSUME_SAFE_MACROS
    #define CYTHON_ASSUME_SAFE_MACROS 1
  #endif
  #ifndef CYTHON_UNPACK_METHODS
    #define CYTHON_UNPACK_METHODS 1
  #endif
  #undef CYTHON_FAST_THREAD_STATE
  #define CYTHON_FAST_THREAD_STATE 0
  #undef CYTHON_FAST_PYCALL
  #define CYTHON_FAST_PYCALL 0
  #undef CYTHON_PEP489_MULTI_PHASE_INIT
  #define CYTHON_PEP489_MULTI_PHASE_INIT 0
  #undef CYTHON_USE_TP_FINALIZE
  #define CYTHON_USE_TP_FINALIZE 0
  #undef CYTHON_USE_DICT_VERSIONS
  #define CYTHON_USE_DICT_VERSIONS 0
  #undef CYTHON_USE_EXC_INFO_STACK
  #define CYTHON_USE_EXC_INFO_STACK 0
#else
  #define CYTHON_COMPILING_IN_PYPY 0
  #define CYTHON_COMPILING_IN_PYSTON 0
  #define CYTHON_COMPILING_IN_CPYTHON 1
  #ifndef CYTHON_USE_TYPE_SLOTS
    #define CYTHON_USE_TYPE_SLOTS 1
  #endif
  #if PY_VERSION_HEX < 0x02070000
    #undef CYTHON_USE_PYTYPE_LOOKUP
    #define CYTHON_USE_PYTYPE_LOOKUP 0
  #elif !defined(CYTHON_USE_PYTYPE_LOOKUP)
    #define CYTHON_USE_PYTYPE_LOOKUP 1
  #endif
  #if PY_MAJOR_VERSION < 3
    #undef CYTHON_USE_ASYNC_SLOTS
    #define CYTHON_USE_ASYNC_SLOTS 0
  #elif !defined(CYTHON_USE_ASYNC_SLOTS)
    #define CYTHON_USE_ASYNC_SLOTS 1
  #endif
  #if PY_VERSION_HEX < 0x02070000
    #undef CYTHON_USE_PYLONG_INTERNALS
    #define CYTHON_USE_PYLONG_INTERNALS 0
  #elif !defined(CYTHON_USE_PYLONG_INTERNALS)
    #define CYTHON_USE_PYLONG_INTERNALS 1
  #endif
  #ifndef CYTHON_USE_PYLIST_INTERNALS
    #define CYTHON_USE_PYLIST_INTERNALS 1
  #endif
  #ifndef CYTHON_USE_UNICODE_INTERNALS
    #define CYTHON_USE_UNICODE_INTERNALS 1
  #endif
  #if PY_VERSION_HEX < 0x030300F0
    #undef CYTHON_USE_UNICODE_WRITER
    #define CYTHON_USE_UNICODE_WRITER 0
  #elif !defined(CYTHON_USE_UNICODE_WRITER)
    #define CYTHON_USE_UNICODE_WRITER 1
  #endif
  #ifndef CYTHON_AVOID_BORROWED_REFS
    #define CYTHON_AVOID_BORROWED_REFS 0
  #endif
  #ifndef CYTHON_ASSUME_SAFE_MACROS
    #define CYTHON_ASSUME_SAFE_MACROS 1
  #endif
  #ifndef CYTHON_UNPACK_METHODS
    #define CYTHON_UNPACK_METHODS 1
  #endif
  #ifndef CYTHON_FAST_THREAD_STATE
    #define CYTHON_FAST_THREAD_STATE 1
  #endif
  #ifndef CYTHON_FAST_PYCALL
    #define CYTHON_FAST_PYCALL 1
  #endif
  #ifndef CYTHON_PEP489_MULTI_PHASE_INIT
    #define CYTHON_PEP489_MULTI_PHASE_INIT (PY_VERSION_HEX >= 0x03050000)
  #endif
  #ifndef CYTHON_USE_TP_FINALIZE
    #define CYTHON_USE_TP_FINALIZE (PY_VERSION_HEX >= 0x030400a1)
  #endif
  #ifndef CYTHON_USE_DICT_VERSIONS
    #define CYTHON_USE_DICT_VERSIONS (PY_VERSION_HEX >= 0x030600B1)
  #endif
  #ifndef CYTHON_USE_EXC_INFO_STACK
    #define CYTHON_USE_EXC_INFO_STACK (PY_VERSION_HEX >= 0x030700A3)
  #endif
#endif
#if !defined(CYTHON_FAST_PYCCALL)
#define CYTHON_FAST_PYCCALL  (CYTHON_FAST_PYCALL && PY_VERSION_HEX >= 0x030600B1)
#endif
#if CYTHON_USE_PYLONG_INTERNALS
  #include "longintrepr.h"
  #undef SHIFT
  #undef BASE
  #undef MASK
  #ifdef SIZEOF_VOID_P
    enum { __pyx_check_sizeof_voidp = 1 / (int)(SIZEOF_VOID_P == sizeof(void*)) };
  #endif
#endif
#ifndef __has_attribute
  #define __has_attribute(x) 0
#endif
#ifndef __has_cpp_attribute
  #define __has_cpp_attribute(x) 0
#endif
#ifndef CYTHON_RESTRICT
  #if defined(__GNUC__)
    #define CYTHON_RESTRICT __restrict__
  #elif defined(_MSC_VER) && _MSC_VER >= 1400
    #define CYTHON_RESTRICT __restrict
  #elif defined (__STDC_VERSION__) && __STDC_VERSION__ >= 199901L
    #define CYTHON_RESTRICT restrict
  #else
    #define CYTHON_RESTRICT
  #endif
#endif
#ifndef CYTHON_UNUSED
# if defined(__GNUC__)
#   if !(defined(__cplusplus)) || (__GNUC__ > 3 || (__GNUC__ == 3 && __GNUC_MINOR__ >= 4))
#     define CYTHON_UNUSED __attribute__ ((__unused__))
#   else
#     define CYTHON_UNUSED
#   endif
# elif defined(__ICC) || (defined(__INTEL_COMPILER) && !defined(_MSC_VER))
#   define CYTHON_UNUSED __attribute__ ((__unused__))
# else
#   define CYTHON_UNUSED
# endif
#endif
#ifndef CYTHON_MAYBE_UNUSED_VAR
#  if defined(__cplusplus)
     template<class T> void CYTHON_MAYBE_UNUSED_VAR( const T& ) { }
#  else
#    define CYTHON_MAYBE_UNUSED_VAR(x) (void)(x)
#  endif
#endif
#ifndef CYTHON_NCP_UNUSED
# if CYTHON_COMPILING_IN_CPYTHON
#  define CYTHON_NCP_UNUSED
# else
#  define CYTHON_NCP_UNUSED CYTHON_UNUSED
# endif
#endif
#define __Pyx_void_to_None(void_result) ((void)(void_result), Py_INCREF(Py_None), Py_None)
#ifdef _MSC_VER
    #ifndef _MSC_STDINT_H_
        #if _MSC_VER < 1300
           typedef unsigned char     uint8_t;
           typedef unsigned int      uint32_t;
        #else
           typedef unsigned __int8   uint8_t;
           typedef unsigned __int32  uint32_t;
        #endif
    #endif
#else
   #include <stdint.h>
#endif
#ifndef CYTHON_FALLTHROUGH
  #if defined(__cplusplus) && __cplusplus >= 201103L
    #if __has_cpp_attribute(fallthrough)
      #define CYTHON_FALLTHROUGH [[fallthrough]]
    #elif __has_cpp_attribute(clang::fallthrough)
      #define CYTHON_FALLTHROUGH [[clang::fallthrough]]
    #elif __has_cpp_attribute(gnu::fallthrough)
      #define CYTHON_FALLTHROUGH [[gnu::fallthrough]]
    #endif
  #endif
  #ifndef CYTHON_FALLTHROUGH
    #if __has_attribute(fallthrough)
      #define CYTHON_FALLTHROUGH __attribute__((fallthrough))
    #else
      #define CYTHON_FALLTHROUGH
    #endif
  #endif
  #if defined(__clang__ ) && defined(__apple_build_version__)
    #if __apple_build_version__ < 7000000
      #undef  CYTHON_FALLTHROUGH
      #define CYTHON_FALLTHROUGH
    #endif
  #endif
#endif

#ifndef __cplusplus
  #error "Cython files generated with the C++ option must be compiled with a C++ compiler."
#endif
#ifndef CYTHON_INLINE
  #if defined(__clang__)
    #define CYTHON_INLINE __inline__ __attribute__ ((__unused__))
  #else
    #define CYTHON_INLINE inline
  #endif
#endif
template<typename T>
void __Pyx_call_destructor(T& x) {
    x.~T();
}
template<typename T>
class __Pyx_FakeReference {
  public:
    __Pyx_FakeReference() : ptr(NULL) { }
    __Pyx_FakeReference(const T& ref) : ptr(const_cast<T*>(&ref)) { }
    T *operator->() { return ptr; }
    T *operator&() { return ptr; }
    operator T&() { return *ptr; }
    template<typename U> bool operator ==(U other) { return *ptr == other; }
    template<typename U> bool operator !=(U other) { return *ptr != other; }
  private:
    T *ptr;
};

#if CYTHON_COMPILING_IN_PYPY && PY_VERSION_HEX < 0x02070600 && !defined(Py_OptimizeFlag)
  #define Py_OptimizeFlag 0
#endif
#define __PYX_BUILD_PY_SSIZE_T "n"
#define CYTHON_FORMAT_SSIZE_T "z"
#if PY_MAJOR_VERSION < 3
  #define __Pyx_BUILTIN_MODULE_NAME "__builtin__"
  #define __Pyx_PyCode_New(a, k, l, s, f, code, c, n, v, fv, cell, fn, name, fline, lnos)\
          PyCode_New(a+k, l, s, f, code, c, n, v, fv, cell, fn, name, fline, lnos)
  #define __Pyx_DefaultClassType PyClass_Type
#else
  #define __Pyx_BUILTIN_MODULE_NAME "builtins"
#if PY_VERSION_HEX >= 0x030800A4 && PY_VERSION_HEX < 0x030800B2
  #define __Pyx_PyCode_New(a, k, l, s, f, code, c, n, v, fv, cell, fn, name, fline, lnos)\
          PyCode_New(a, 0, k, l, s, f, code, c, n, v, fv, cell, fn, name, fline, lnos)
#else
  #define __Pyx_PyCode_New(a, k, l, s, f, code, c, n, v, fv, cell, fn, name, fline, lnos)\
          PyCode_New(a, k, l, s, f, code, c, n, v, fv, cell, fn, name, fline, lnos)
#endif
  #define __Pyx_DefaultClassType PyType_Type
#endif
#ifndef Py_TPFLAGS_CHECKTYPES
  #define Py_TPFLAGS_CHECKTYPES 0
#endif
#ifndef Py_TPFLAGS_HAVE_INDEX
  #define Py_TPFLAGS_HAVE_INDEX 0
#endif
#ifndef Py_TPFLAGS_HAVE_NEWBUFFER
  #define Py_TPFLAGS_HAVE_NEWBUFFER 0
#endif
#ifndef Py_TPFLAGS_HAVE_FINALIZE
  #define Py_TPFLAGS_HAVE_FINALIZE 0
#endif
#ifndef METH_STACKLESS
  #define METH_STACKLESS 0
#endif
#if PY_VERSION_HEX <= 0x030700A3 || !defined(METH_FASTCALL)
  #ifndef METH_FASTCALL
     #define METH_FASTCALL 0x80
  #endif
  typedef PyObject *(*__Pyx_PyCFunctionFast) (PyObject *self, PyObject *const *args, Py_ssize_t nargs);
  typedef PyObject *(*__Pyx_PyCFunctionFastWithKeywords) (PyObject *self, PyObject *const *args,
                                                          Py_ssize_t nargs, PyObject *kwnames);
#else
  #define __Pyx_PyCFunctionFast _PyCFunctionFast
  #define __Pyx_PyCFunctionFastWithKeywords _PyCFunctionFastWithKeywords
#endif
#if CYTHON_FAST_PYCCALL
#define __Pyx_PyFastCFunction_Check(func)\
    ((PyCFunction_Check(func) && (METH_FASTCALL == (PyCFunction_GET_FLAGS(func) & ~(METH_CLASS | METH_STATIC | METH_COEXIST | METH_KEYWORDS | METH_STACKLESS)))))
#else
#define __Pyx_PyFastCFunction_Check(func) 0
#endif
#if CYTHON_COMPILING_IN_PYPY && !defined(PyObject_Malloc)
  #define PyObject_Malloc(s)   PyMem_Malloc(s)
  #define PyObject_Free(p)     PyMem_Free(p)
  #define PyObject_Realloc(p)  PyMem_Realloc(p)
#endif
#if CYTHON_COMPILING_IN_CPYTHON && PY_VERSION_HEX < 0x030400A1
  #define PyMem_RawMalloc(n)           PyMem_Malloc(n)
  #define PyMem_RawRealloc(p, n)       PyMem_Realloc(p, n)
  #define PyMem_RawFree(p)             PyMem_Free(p)
#endif
#if CYTHON_COMPILING_IN_PYSTON
  #define __Pyx_PyCode_HasFreeVars(co)  PyCode_HasFreeVars(co)
  #define __Pyx_PyFrame_SetLineNumber(frame, lineno) PyFrame_SetLineNumber(frame, lineno)
#else
  #define __Pyx_PyCode_HasFreeVars(co)  (PyCode_GetNumFree(co) > 0)
  #define __Pyx_PyFrame_SetLineNumber(frame, lineno)  (frame)->f_lineno = (lineno)
#endif
#if !CYTHON_FAST_THREAD_STATE || PY_VERSION_HEX < 0x02070000
  #define __Pyx_PyThreadState_Current PyThreadState_GET()
#elif PY_VERSION_HEX >= 0x03060000
  #define __Pyx_PyThreadState_Current _PyThreadState_UncheckedGet()
#elif PY_VERSION_HEX >= 0x03000000
  #define __Pyx_PyThreadState_Current PyThreadState_GET()
#else
  #define __Pyx_PyThreadState_Current _PyThreadState_Current
#endif
#if PY_VERSION_HEX < 0x030700A2 && !defined(PyThread_tss_create) && !defined(Py_tss_NEEDS_INIT)
#include "pythread.h"
#define Py_tss_NEEDS_INIT 0
typedef int Py_tss_t;
static CYTHON_INLINE int PyThread_tss_create(Py_tss_t *key) {
  *key = PyThread_create_key();
  return 0;
}
static CYTHON_INLINE Py_tss_t * PyThread_tss_alloc(void) {
  Py_tss_t *key = (Py_tss_t *)PyObject_Malloc(sizeof(Py_tss_t));
  *key = Py_tss_NEEDS_INIT;
  return key;
}
static CYTHON_INLINE void PyThread_tss_free(Py_tss_t *key) {
  PyObject_Free(key);
}
static CYTHON_INLINE int PyThread_tss_is_created(Py_tss_t *key) {
  return *key != Py_tss_NEEDS_INIT;
}
static CYTHON_INLINE void PyThread_tss_delete(Py_tss_t *key) {
  PyThread_delete_key(*key);
  *key = Py_tss_NEEDS_INIT;
}
static CYTHON_INLINE int PyThread_tss_set(Py_tss_t *key, void *value) {
  return PyThread_set_key_value(*key, value);
}
static CYTHON_INLINE void * PyThread_tss_get(Py_tss_t *key) {
  return PyThread_get_key_value(*key);
}
#endif
#if CYTHON_COMPILING_IN_CPYTHON || defined(_PyDict_NewPresized)
#define __Pyx_PyDict_NewPresized(n)  ((n <= 8) ? PyDict_New() : _PyDict_NewPresized(n))
#else
#define __Pyx_PyDict_NewPresized(n)  PyDict_New()
#endif
#if PY_MAJOR_VERSION >= 3 || CYTHON_FUTURE_DIVISION
  #define __Pyx_PyNumber_Divide(x,y)         PyNumber_TrueDivide(x,y)
  #define __Pyx_PyNumber_InPlaceDivide(x,y)  PyNumber_InPlaceTrueDivide(x,y)
#else
  #define __Pyx_PyNumber_Divide(x,y)         PyNumber_Divide(x,y)
  #define __Pyx_PyNumber_InPlaceDivide(x,y)  PyNumber_InPlaceDivide(x,y)
#endif
#if CYTHON_COMPILING_IN_CPYTHON && PY_VERSION_HEX >= 0x030500A1 && CYTHON_USE_UNICODE_INTERNALS
#define __Pyx_PyDict_GetItemStr(dict, name)  _PyDict_GetItem_KnownHash(dict, name, ((PyASCIIObject *) name)->hash)
#else
#define __Pyx_PyDict_GetItemStr(dict, name)  PyDict_GetItem(dict, name)
#endif
#if PY_VERSION_HEX > 0x03030000 && defined(PyUnicode_KIND)
  #define CYTHON_PEP393_ENABLED 1
  #if defined(PyUnicode_IS_READY)
  #define __Pyx_PyUnicode_READY(op)       (likely(PyUnicode_IS_READY(op)) ?\
                                              0 : _PyUnicode_Ready((PyObject *)(op)))
  #else
  #define __Pyx_PyUnicode_READY(op)       (0)
  #endif
  #define __Pyx_PyUnicode_GET_LENGTH(u)   PyUnicode_GET_LENGTH(u)
  #define __Pyx_PyUnicode_READ_CHAR(u, i) PyUnicode_READ_CHAR(u, i)
  #define __Pyx_PyUnicode_MAX_CHAR_VALUE(u)   PyUnicode_MAX_CHAR_VALUE(u)
  #define __Pyx_PyUnicode_KIND(u)         PyUnicode_KIND(u)
  #define __Pyx_PyUnicode_DATA(u)         PyUnicode_DATA(u)
  #define __Pyx_PyUnicode_READ(k, d, i)   PyUnicode_READ(k, d, i)
  #define __Pyx_PyUnicode_WRITE(k, d, i, ch)  PyUnicode_WRITE(k, d, i, ch)
  #if defined(PyUnicode_IS_READY) && defined(PyUnicode_GET_SIZE)
  #if CYTHON_COMPILING_IN_CPYTHON && PY_VERSION_HEX >= 0x03090000
  #define __Pyx_PyUnicode_IS_TRUE(u)      (0 != (likely(PyUnicode_IS_READY(u)) ? PyUnicode_GET_LENGTH(u) : ((PyCompactUnicodeObject *)(u))->wstr_length))
  #else
  #define __Pyx_PyUnicode_IS_TRUE(u)      (0 != (likely(PyUnicode_IS_READY(u)) ? PyUnicode_GET_LENGTH(u) : PyUnicode_GET_SIZE(u)))
  #endif
  #else
  #define __Pyx_PyUnicode_IS_TRUE(u)      (0 != PyUnicode_GET_LENGTH(u))
  #endif
#else
  #define CYTHON_PEP393_ENABLED 0
  #define PyUnicode_1BYTE_KIND  1
  #define PyUnicode_2BYTE_KIND  2
  #define PyUnicode_4BYTE_KIND  4
  #define __Pyx_PyUnicode_READY(op)       (0)
  #define __Pyx_PyUnicode_GET_LENGTH(u)   PyUnicode_GET_SIZE(u)
  #define __Pyx_PyUnicode_READ_CHAR(u, i) ((Py_UCS4)(PyUnicode_AS_UNICODE(u)[i]))
  #define __Pyx_PyUnicode_MAX_CHAR_VALUE(u)   ((sizeof(Py_UNICODE) == 2) ? 65535 : 1114111)
  #define __Pyx_PyUnicode_KIND(u)         (sizeof(Py_UNICODE))
  #define __Pyx_PyUnicode_DATA(u)         ((void*)PyUnicode_AS_UNICODE(u))
  #define __Pyx_PyUnicode_READ(k, d, i)   ((void)(k), (Py_UCS4)(((Py_UNICODE*)d)[i]))
  #define __Pyx_PyUnicode_WRITE(k, d, i, ch)  (((void)(k)), ((Py_UNICODE*)d)[i] = ch)
  #define __Pyx_PyUnicode_IS_TRUE(u)      (0 != PyUnicode_GET_SIZE(u))
#endif
#if CYTHON_COMPILING_IN_PYPY
  #define __Pyx_PyUnicode_Concat(a, b)      PyNumber_Add(a, b)
  #define __Pyx_PyUnicode_ConcatSafe(a, b)  PyNumber_Add(a, b)
#else
  #define __Pyx_PyUnicode_Concat(a, b)      PyUnicode_Concat(a, b)
  #define __Pyx_PyUnicode_ConcatSafe(a, b)  ((unlikely((a) == Py_None) || unlikely((b) == Py_None)) ?\
      PyNumber_Add(a, b) : __Pyx_PyUnicode_Concat(a, b))
#endif
#if CYTHON_COMPILING_IN_PYPY && !defined(PyUnicode_Contains)
  #define PyUnicode_Contains(u, s)  PySequence_Contains(u, s)
#endif
#if CYTHON_COMPILING_IN_PYPY && !defined(PyByteArray_Check)
  #define PyByteArray_Check(obj)  PyObject_TypeCheck(obj, &PyByteArray_Type)
#endif
#if CYTHON_COMPILING_IN_PYPY && !defined(PyObject_Format)
  #define PyObject_Format(obj, fmt)  PyObject_CallMethod(obj, "__format__", "O", fmt)
#endif
#define __Pyx_PyString_FormatSafe(a, b)   ((unlikely((a) == Py_None || (PyString_Check(b) && !PyString_CheckExact(b)))) ? PyNumber_Remainder(a, b) : __Pyx_PyString_Format(a, b))
#define __Pyx_PyUnicode_FormatSafe(a, b)  ((unlikely((a) == Py_None || (PyUnicode_Check(b) && !PyUnicode_CheckExact(b)))) ? PyNumber_Remainder(a, b) : PyUnicode_Format(a, b))
#if PY_MAJOR_VERSION >= 3
  #define __Pyx_PyString_Format(a, b)  PyUnicode_Format(a, b)
#else
  #define __Pyx_PyString_Format(a, b)  PyString_Format(a, b)
#endif
#if PY_MAJOR_VERSION < 3 && !defined(PyObject_ASCII)
  #define PyObject_ASCII(o)            PyObject_Repr(o)
#endif
#if PY_MAJOR_VERSION >= 3
  #define PyBaseString_Type            PyUnicode_Type
  #define PyStringObject               PyUnicodeObject
  #define PyString_Type                PyUnicode_Type
  #define PyString_Check               PyUnicode_Check
  #define PyString_CheckExact          PyUnicode_CheckExact
#ifndef PyObject_Unicode
  #define PyObject_Unicode             PyObject_Str
#endif
#endif
#if PY_MAJOR_VERSION >= 3
  #define __Pyx_PyBaseString_Check(obj) PyUnicode_Check(obj)
  #define __Pyx_PyBaseString_CheckExact(obj) PyUnicode_CheckExact(obj)
#else
  #define __Pyx_PyBaseString_Check(obj) (PyString_Check(obj) || PyUnicode_Check(obj))
  #define __Pyx_PyBaseString_CheckExact(obj) (PyString_CheckExact(obj) || PyUnicode_CheckExact(obj))
#endif
#ifndef PySet_CheckExact
  #define PySet_CheckExact(obj)        (Py_TYPE(obj) == &PySet_Type)
#endif
#if PY_VERSION_HEX >= 0x030900A4
  #define __Pyx_SET_REFCNT(obj, refcnt) Py_SET_REFCNT(obj, refcnt)
  #define __Pyx_SET_SIZE(obj, size) Py_SET_SIZE(obj, size)
#else
  #define __Pyx_SET_REFCNT(obj, refcnt) Py_REFCNT(obj) = (refcnt)
  #define __Pyx_SET_SIZE(obj, size) Py_SIZE(obj) = (size)
#endif
#if CYTHON_ASSUME_SAFE_MACROS
  #define __Pyx_PySequence_SIZE(seq)  Py_SIZE(seq)
#else
  #define __Pyx_PySequence_SIZE(seq)  PySequence_Size(seq)
#endif
#if PY_MAJOR_VERSION >= 3
  #define PyIntObject                  PyLongObject
  #define PyInt_Type                   PyLong_Type
  #define PyInt_Check(op)              PyLong_Check(op)
  #define PyInt_CheckExact(op)         PyLong_CheckExact(op)
  #define PyInt_FromString             PyLong_FromString
  #define PyInt_FromUnicode            PyLong_FromUnicode
  #define PyInt_FromLong               PyLong_FromLong
  #define PyInt_FromSize_t             PyLong_FromSize_t
  #define PyInt_FromSsize_t            PyLong_FromSsize_t
  #define PyInt_AsLong                 PyLong_AsLong
  #define PyInt_AS_LONG                PyLong_AS_LONG
  #define PyInt_AsSsize_t              PyLong_AsSsize_t
  #define PyInt_AsUnsignedLongMask     PyLong_AsUnsignedLongMask
  #define PyInt_AsUnsignedLongLongMask PyLong_AsUnsignedLongLongMask
  #define PyNumber_Int                 PyNumber_Long
#endif
#if PY_MAJOR_VERSION >= 3
  #define PyBoolObject                 PyLongObject
#endif
#if PY_MAJOR_VERSION >= 3 && CYTHON_COMPILING_IN_PYPY
  #ifndef PyUnicode_InternFromString
    #define PyUnicode_InternFromString(s) PyUnicode_FromString(s)
  #endif
#endif
#if PY_VERSION_HEX < 0x030200A4
  typedef long Py_hash_t;
  #define __Pyx_PyInt_FromHash_t PyInt_FromLong
  #define __Pyx_PyInt_AsHash_t   PyInt_AsLong
#else
  #define __Pyx_PyInt_FromHash_t PyInt_FromSsize_t
  #define __Pyx_PyInt_AsHash_t   PyInt_AsSsize_t
#endif
#if PY_MAJOR_VERSION >= 3
  #define __Pyx_PyMethod_New(func, self, klass) ((self) ? ((void)(klass), PyMethod_New(func, self)) : __Pyx_NewRef(func))
#else
  #define __Pyx_PyMethod_New(func, self, klass) PyMethod_New(func, self, klass)
#endif
#if CYTHON_USE_ASYNC_SLOTS
  #if PY_VERSION_HEX >= 0x030500B1
    #define __Pyx_PyAsyncMethodsStruct PyAsyncMethods
    #define __Pyx_PyType_AsAsync(obj) (Py_TYPE(obj)->tp_as_async)
  #else
    #define __Pyx_PyType_AsAsync(obj) ((__Pyx_PyAsyncMethodsStruct*) (Py_TYPE(obj)->tp_reserved))
  #endif
#else
  #define __Pyx_PyType_AsAsync(obj) NULL
#endif
#ifndef __Pyx_PyAsyncMethodsStruct
    typedef struct {
        unaryfunc am_await;
        unaryfunc am_aiter;
        unaryfunc am_anext;
    } __Pyx_PyAsyncMethodsStruct;
#endif

#if defined(WIN32) || defined(MS_WINDOWS)
  #define _USE_MATH_DEFINES
#endif
#include <math.h>
#ifdef NAN
#define __PYX_NAN() ((float) NAN)
#else
static CYTHON_INLINE float __PYX_NAN() {
  float value;
  memset(&value, 0xFF, sizeof(value));
  return value;
}
#endif
#if defined(__CYGWIN__) && defined(_LDBL_EQ_DBL)
#define __Pyx_truncl trunc
#else
#define __Pyx_truncl truncl
#endif

#define __PYX_MARK_ERR_POS(f_index, lineno) \
    { __pyx_filename = __pyx_f[f_index]; (void)__pyx_filename; __pyx_lineno = lineno; (void)__pyx_lineno; __pyx_clineno = __LINE__; (void)__pyx_clineno; }
#define __PYX_ERR(f_index, lineno, Ln_error) \
    { __PYX_MARK_ERR_POS(f_index, lineno) goto Ln_error; }

#ifndef __PYX_EXTERN_C
  #ifdef __cplusplus
    #define __PYX_EXTERN_C extern "C"
  #else
    #define __PYX_EXTERN_C extern
  #endif
#endif

#define __PYX_HAVE__grpc___cython__cygrpc
#define __PYX_HAVE_API__grpc___cython__cygrpc
/* Early includes */
#include <string.h>
#include <stdio.h>
#include "pythread.h"
#include <stddef.h>
#include <time.h>
#include "grpc/support/alloc.h"
#include "grpc/byte_buffer_reader.h"
#include "grpc/impl/codegen/grpc_types.h"
#include "grpc/grpc.h"
#include "grpc/grpc_security.h"
#include "grpc/compression.h"
#include "grpc/impl/codegen/compression_types.h"
#include "grpc/grpc_security_constants.h"
#include "src/core/lib/iomgr/error.h"
#include "grpc/impl/codegen/propagation_bits.h"
#include <string>
#include "ios"
#include "new"
#include "stdexcept"
#include "typeinfo"
#include "grpc/impl/codegen/slice.h"
#include "src/core/lib/iomgr/python_util.h"
#include "src/core/lib/iomgr/sockaddr.h"
#include "src/core/lib/iomgr/resolve_address.h"
#include "src/core/lib/iomgr/resolve_address_custom.h"
#include "src/core/lib/iomgr/tcp_custom.h"
#include "src/core/lib/iomgr/timer_custom.h"
#include "src/core/lib/iomgr/pollset_custom.h"
#include "src/core/lib/iomgr/iomgr_custom.h"
#include "src/core/lib/address_utils/sockaddr_utils.h"
#include "pthread.h"
#include <queue>
#include <mutex>
#include "src/core/lib/iomgr/timer_manager.h"
#include "src/core/lib/iomgr/iomgr_internal.h"
#include "src/core/lib/iomgr/executor.h"
#include <stdlib.h>
#include <sys/types.h>
#include <unistd.h>
#ifdef _OPENMP
#include <omp.h>
#endif /* _OPENMP */

#if defined(PYREX_WITHOUT_ASSERTIONS) && !defined(CYTHON_WITHOUT_ASSERTIONS)
#define CYTHON_WITHOUT_ASSERTIONS
#endif

typedef struct {PyObject **p; const char *s; const Py_ssize_t n; const char* encoding;
                const char is_unicode; const char is_str; const char intern; } __Pyx_StringTabEntry;

#define __PYX_DEFAULT_STRING_ENCODING_IS_ASCII 0
#define __PYX_DEFAULT_STRING_ENCODING_IS_UTF8 0
#define __PYX_DEFAULT_STRING_ENCODING_IS_DEFAULT (PY_MAJOR_VERSION >= 3 && __PYX_DEFAULT_STRING_ENCODING_IS_UTF8)
#define __PYX_DEFAULT_STRING_ENCODING ""
#define __Pyx_PyObject_FromString __Pyx_PyBytes_FromString
#define __Pyx_PyObject_FromStringAndSize __Pyx_PyBytes_FromStringAndSize
#define __Pyx_uchar_cast(c) ((unsigned char)c)
#define __Pyx_long_cast(x) ((long)x)
#define __Pyx_fits_Py_ssize_t(v, type, is_signed)  (\
    (sizeof(type) < sizeof(Py_ssize_t))  ||\
    (sizeof(type) > sizeof(Py_ssize_t) &&\
          likely(v < (type)PY_SSIZE_T_MAX ||\
                 v == (type)PY_SSIZE_T_MAX)  &&\
          (!is_signed || likely(v > (type)PY_SSIZE_T_MIN ||\
                                v == (type)PY_SSIZE_T_MIN)))  ||\
    (sizeof(type) == sizeof(Py_ssize_t) &&\
          (is_signed || likely(v < (type)PY_SSIZE_T_MAX ||\
                               v == (type)PY_SSIZE_T_MAX)))  )
static CYTHON_INLINE int __Pyx_is_valid_index(Py_ssize_t i, Py_ssize_t limit) {
    return (size_t) i < (size_t) limit;
}
#if defined (__cplusplus) && __cplusplus >= 201103L
    #include <cstdlib>
    #define __Pyx_sst_abs(value) std::abs(value)
#elif SIZEOF_INT >= SIZEOF_SIZE_T
    #define __Pyx_sst_abs(value) abs(value)
#elif SIZEOF_LONG >= SIZEOF_SIZE_T
    #define __Pyx_sst_abs(value) labs(value)
#elif defined (_MSC_VER)
    #define __Pyx_sst_abs(value) ((Py_ssize_t)_abs64(value))
#elif defined (__STDC_VERSION__) && __STDC_VERSION__ >= 199901L
    #define __Pyx_sst_abs(value) llabs(value)
#elif defined (__GNUC__)
    #define __Pyx_sst_abs(value) __builtin_llabs(value)
#else
    #define __Pyx_sst_abs(value) ((value<0) ? -value : value)
#endif
static CYTHON_INLINE const char* __Pyx_PyObject_AsString(PyObject*);
static CYTHON_INLINE const char* __Pyx_PyObject_AsStringAndSize(PyObject*, Py_ssize_t* length);
#define __Pyx_PyByteArray_FromString(s) PyByteArray_FromStringAndSize((const char*)s, strlen((const char*)s))
#define __Pyx_PyByteArray_FromStringAndSize(s, l) PyByteArray_FromStringAndSize((const char*)s, l)
#define __Pyx_PyBytes_FromString        PyBytes_FromString
#define __Pyx_PyBytes_FromStringAndSize PyBytes_FromStringAndSize
static CYTHON_INLINE PyObject* __Pyx_PyUnicode_FromString(const char*);
#if PY_MAJOR_VERSION < 3
    #define __Pyx_PyStr_FromString        __Pyx_PyBytes_FromString
    #define __Pyx_PyStr_FromStringAndSize __Pyx_PyBytes_FromStringAndSize
#else
    #define __Pyx_PyStr_FromString        __Pyx_PyUnicode_FromString
    #define __Pyx_PyStr_FromStringAndSize __Pyx_PyUnicode_FromStringAndSize
#endif
#define __Pyx_PyBytes_AsWritableString(s)     ((char*) PyBytes_AS_STRING(s))
#define __Pyx_PyBytes_AsWritableSString(s)    ((signed char*) PyBytes_AS_STRING(s))
#define __Pyx_PyBytes_AsWritableUString(s)    ((unsigned char*) PyBytes_AS_STRING(s))
#define __Pyx_PyBytes_AsString(s)     ((const char*) PyBytes_AS_STRING(s))
#define __Pyx_PyBytes_AsSString(s)    ((const signed char*) PyBytes_AS_STRING(s))
#define __Pyx_PyBytes_AsUString(s)    ((const unsigned char*) PyBytes_AS_STRING(s))
#define __Pyx_PyObject_AsWritableString(s)    ((char*) __Pyx_PyObject_AsString(s))
#define __Pyx_PyObject_AsWritableSString(s)    ((signed char*) __Pyx_PyObject_AsString(s))
#define __Pyx_PyObject_AsWritableUString(s)    ((unsigned char*) __Pyx_PyObject_AsString(s))
#define __Pyx_PyObject_AsSString(s)    ((const signed char*) __Pyx_PyObject_AsString(s))
#define __Pyx_PyObject_AsUString(s)    ((const unsigned char*) __Pyx_PyObject_AsString(s))
#define __Pyx_PyObject_FromCString(s)  __Pyx_PyObject_FromString((const char*)s)
#define __Pyx_PyBytes_FromCString(s)   __Pyx_PyBytes_FromString((const char*)s)
#define __Pyx_PyByteArray_FromCString(s)   __Pyx_PyByteArray_FromString((const char*)s)
#define __Pyx_PyStr_FromCString(s)     __Pyx_PyStr_FromString((const char*)s)
#define __Pyx_PyUnicode_FromCString(s) __Pyx_PyUnicode_FromString((const char*)s)
static CYTHON_INLINE size_t __Pyx_Py_UNICODE_strlen(const Py_UNICODE *u) {
    const Py_UNICODE *u_end = u;
    while (*u_end++) ;
    return (size_t)(u_end - u - 1);
}
#define __Pyx_PyUnicode_FromUnicode(u)       PyUnicode_FromUnicode(u, __Pyx_Py_UNICODE_strlen(u))
#define __Pyx_PyUnicode_FromUnicodeAndLength PyUnicode_FromUnicode
#define __Pyx_PyUnicode_AsUnicode            PyUnicode_AsUnicode
#define __Pyx_NewRef(obj) (Py_INCREF(obj), obj)
#define __Pyx_Owned_Py_None(b) __Pyx_NewRef(Py_None)
static CYTHON_INLINE PyObject * __Pyx_PyBool_FromLong(long b);
static CYTHON_INLINE int __Pyx_PyObject_IsTrue(PyObject*);
static CYTHON_INLINE int __Pyx_PyObject_IsTrueAndDecref(PyObject*);
static CYTHON_INLINE PyObject* __Pyx_PyNumber_IntOrLong(PyObject* x);
#define __Pyx_PySequence_Tuple(obj)\
    (likely(PyTuple_CheckExact(obj)) ? __Pyx_NewRef(obj) : PySequence_Tuple(obj))
static CYTHON_INLINE Py_ssize_t __Pyx_PyIndex_AsSsize_t(PyObject*);
static CYTHON_INLINE PyObject * __Pyx_PyInt_FromSize_t(size_t);
#if CYTHON_ASSUME_SAFE_MACROS
#define __pyx_PyFloat_AsDouble(x) (PyFloat_CheckExact(x) ? PyFloat_AS_DOUBLE(x) : PyFloat_AsDouble(x))
#else
#define __pyx_PyFloat_AsDouble(x) PyFloat_AsDouble(x)
#endif
#define __pyx_PyFloat_AsFloat(x) ((float) __pyx_PyFloat_AsDouble(x))
#if PY_MAJOR_VERSION >= 3
#define __Pyx_PyNumber_Int(x) (PyLong_CheckExact(x) ? __Pyx_NewRef(x) : PyNumber_Long(x))
#else
#define __Pyx_PyNumber_Int(x) (PyInt_CheckExact(x) ? __Pyx_NewRef(x) : PyNumber_Int(x))
#endif
#define __Pyx_PyNumber_Float(x) (PyFloat_CheckExact(x) ? __Pyx_NewRef(x) : PyNumber_Float(x))
#if PY_MAJOR_VERSION < 3 && __PYX_DEFAULT_STRING_ENCODING_IS_ASCII
static int __Pyx_sys_getdefaultencoding_not_ascii;
static int __Pyx_init_sys_getdefaultencoding_params(void) {
    PyObject* sys;
    PyObject* default_encoding = NULL;
    PyObject* ascii_chars_u = NULL;
    PyObject* ascii_chars_b = NULL;
    const char* default_encoding_c;
    sys = PyImport_ImportModule("sys");
    if (!sys) goto bad;
    default_encoding = PyObject_CallMethod(sys, (char*) "getdefaultencoding", NULL);
    Py_DECREF(sys);
    if (!default_encoding) goto bad;
    default_encoding_c = PyBytes_AsString(default_encoding);
    if (!default_encoding_c) goto bad;
    if (strcmp(default_encoding_c, "ascii") == 0) {
        __Pyx_sys_getdefaultencoding_not_ascii = 0;
    } else {
        char ascii_chars[128];
        int c;
        for (c = 0; c < 128; c++) {
            ascii_chars[c] = c;
        }
        __Pyx_sys_getdefaultencoding_not_ascii = 1;
        ascii_chars_u = PyUnicode_DecodeASCII(ascii_chars, 128, NULL);
        if (!ascii_chars_u) goto bad;
        ascii_chars_b = PyUnicode_AsEncodedString(ascii_chars_u, default_encoding_c, NULL);
        if (!ascii_chars_b || !PyBytes_Check(ascii_chars_b) || memcmp(ascii_chars, PyBytes_AS_STRING(ascii_chars_b), 128) != 0) {
            PyErr_Format(
                PyExc_ValueError,
                "This module compiled with c_string_encoding=ascii, but default encoding '%.200s' is not a superset of ascii.",
                default_encoding_c);
            goto bad;
        }
        Py_DECREF(ascii_chars_u);
        Py_DECREF(ascii_chars_b);
    }
    Py_DECREF(default_encoding);
    return 0;
bad:
    Py_XDECREF(default_encoding);
    Py_XDECREF(ascii_chars_u);
    Py_XDECREF(ascii_chars_b);
    return -1;
}
#endif
#if __PYX_DEFAULT_STRING_ENCODING_IS_DEFAULT && PY_MAJOR_VERSION >= 3
#define __Pyx_PyUnicode_FromStringAndSize(c_str, size) PyUnicode_DecodeUTF8(c_str, size, NULL)
#else
#define __Pyx_PyUnicode_FromStringAndSize(c_str, size) PyUnicode_Decode(c_str, size, __PYX_DEFAULT_STRING_ENCODING, NULL)
#if __PYX_DEFAULT_STRING_ENCODING_IS_DEFAULT
static char* __PYX_DEFAULT_STRING_ENCODING;
static int __Pyx_init_sys_getdefaultencoding_params(void) {
    PyObject* sys;
    PyObject* default_encoding = NULL;
    char* default_encoding_c;
    sys = PyImport_ImportModule("sys");
    if (!sys) goto bad;
    default_encoding = PyObject_CallMethod(sys, (char*) (const char*) "getdefaultencoding", NULL);
    Py_DECREF(sys);
    if (!default_encoding) goto bad;
    default_encoding_c = PyBytes_AsString(default_encoding);
    if (!default_encoding_c) goto bad;
    __PYX_DEFAULT_STRING_ENCODING = (char*) malloc(strlen(default_encoding_c) + 1);
    if (!__PYX_DEFAULT_STRING_ENCODING) goto bad;
    strcpy(__PYX_DEFAULT_STRING_ENCODING, default_encoding_c);
    Py_DECREF(default_encoding);
    return 0;
bad:
    Py_XDECREF(default_encoding);
    return -1;
}
#endif
#endif


/* Test for GCC > 2.95 */
#if defined(__GNUC__)     && (__GNUC__ > 2 || (__GNUC__ == 2 && (__GNUC_MINOR__ > 95)))
  #define likely(x)   __builtin_expect(!!(x), 1)
  #define unlikely(x) __builtin_expect(!!(x), 0)
#else /* !__GNUC__ or GCC < 2.95 */
  #define likely(x)   (x)
  #define unlikely(x) (x)
#endif /* __GNUC__ */
static CYTHON_INLINE void __Pyx_pretend_to_initialize(void* ptr) { (void)ptr; }

static PyObject *__pyx_m = NULL;
static PyObject *__pyx_d;
static PyObject *__pyx_b;
static PyObject *__pyx_cython_runtime = NULL;
static PyObject *__pyx_empty_tuple;
static PyObject *__pyx_empty_bytes;
static PyObject *__pyx_empty_unicode;
static int __pyx_lineno;
static int __pyx_clineno = 0;
static const char * __pyx_cfilenm= __FILE__;
static const char *__pyx_filename;


static const char *__pyx_f[] = {
  "src/python/grpcio/grpc/_cython/cygrpc.pyx",
  "src/python/grpcio/grpc/_cython/_cygrpc/fork_posix.pyx.pxi",
  "src/python/grpcio/grpc/_cython/_cygrpc/grpc_string.pyx.pxi",
  "src/python/grpcio/grpc/_cython/_cygrpc/arguments.pyx.pxi",
  "src/python/grpcio/grpc/_cython/_cygrpc/call.pyx.pxi",
  "src/python/grpcio/grpc/_cython/_cygrpc/credentials.pyx.pxi",
  "src/python/grpcio/grpc/_cython/_cygrpc/grpc_gevent.pyx.pxi",
  "src/python/grpcio/grpc/_cython/_cygrpc/aio/common.pyx.pxi",
  "src/python/grpcio/grpc/_cython/_cygrpc/aio/completion_queue.pyx.pxi",
  "src/python/grpcio/grpc/_cython/_cygrpc/aio/channel.pyx.pxi",
  "src/python/grpcio/grpc/_cython/_cygrpc/aio/server.pyx.pxi",
  "stringsource",
  "src/python/grpcio/grpc/_cython/_cygrpc/channel.pyx.pxi",
  "src/python/grpcio/grpc/_cython/_cygrpc/channelz.pyx.pxi",
  "src/python/grpcio/grpc/_cython/_cygrpc/csds.pyx.pxi",
  "src/python/grpcio/grpc/_cython/_cygrpc/completion_queue.pyx.pxi",
  "src/python/grpcio/grpc/_cython/_cygrpc/event.pyx.pxi",
  "src/python/grpcio/grpc/_cython/_cygrpc/event.pxd.pxi",
  "src/python/grpcio/grpc/_cython/_cygrpc/metadata.pyx.pxi",
  "src/python/grpcio/grpc/_cython/_cygrpc/operation.pyx.pxi",
  "src/python/grpcio/grpc/_cython/_cygrpc/operation.pxd.pxi",
  "src/python/grpcio/grpc/_cython/_cygrpc/records.pyx.pxi",
  "src/python/grpcio/grpc/_cython/_cygrpc/security.pyx.pxi",
  "src/python/grpcio/grpc/_cython/_cygrpc/server.pyx.pxi",
  "src/python/grpcio/grpc/_cython/_cygrpc/tag.pyx.pxi",
  "src/python/grpcio/grpc/_cython/_cygrpc/time.pyx.pxi",
  "src/python/grpcio/grpc/_cython/_cygrpc/_hooks.pyx.pxi",
  "src/python/grpcio/grpc/_cython/_cygrpc/iomgr.pyx.pxi",
  "src/python/grpcio/grpc/_cython/_cygrpc/thread.pyx.pxi",
  "src/python/grpcio/grpc/_cython/_cygrpc/aio/rpc_status.pyx.pxi",
  "src/python/grpcio/grpc/_cython/_cygrpc/aio/rpc_status.pxd.pxi",
  "src/python/grpcio/grpc/_cython/_cygrpc/aio/callback_common.pyx.pxi",
  "src/python/grpcio/grpc/_cython/_cygrpc/aio/grpc_aio.pyx.pxi",
  "src/python/grpcio/grpc/_cython/_cygrpc/aio/call.pyx.pxi",
  "src/python/grpcio/grpc/_cython/_cygrpc/aio/callback_common.pxd.pxi",
  "type.pxd",
  "bool.pxd",
  "complex.pxd",
  "src/python/grpcio/grpc/_cython/_cygrpc/propagation_bits.pyx.pxi",
};
/* NoFastGil.proto */
#define __Pyx_PyGILState_Ensure PyGILState_Ensure
#define __Pyx_PyGILState_Release PyGILState_Release
#define __Pyx_FastGIL_Remember()
#define __Pyx_FastGIL_Forget()
#define __Pyx_FastGilFuncInit()

/* ForceInitThreads.proto */
#ifndef __PYX_FORCE_INIT_THREADS
  #define __PYX_FORCE_INIT_THREADS 0
#endif


/* "src/python/grpcio/grpc/_cython/_cygrpc/grpc.pxi":17
 * cimport libc.time
 * 
 * ctypedef          ssize_t   intptr_t             # <<<<<<<<<<<<<<
 * ctypedef          size_t    uintptr_t
 * ctypedef   signed char      int8_t
 */
typedef Py_ssize_t __pyx_t_4grpc_7_cython_6cygrpc_intptr_t;

/* "src/python/grpcio/grpc/_cython/_cygrpc/grpc.pxi":18
 * 
 * ctypedef          ssize_t   intptr_t
 * ctypedef          size_t    uintptr_t             # <<<<<<<<<<<<<<
 * ctypedef   signed char      int8_t
 * ctypedef   signed short     int16_t
 */
typedef size_t __pyx_t_4grpc_7_cython_6cygrpc_uintptr_t;

/* "src/python/grpcio/grpc/_cython/_cygrpc/grpc.pxi":19
 * ctypedef          ssize_t   intptr_t
 * ctypedef          size_t    uintptr_t
 * ctypedef   signed char      int8_t             # <<<<<<<<<<<<<<
 * ctypedef   signed short     int16_t
 * ctypedef   signed int       int32_t
 */
typedef signed char __pyx_t_4grpc_7_cython_6cygrpc_int8_t;

/* "src/python/grpcio/grpc/_cython/_cygrpc/grpc.pxi":20
 * ctypedef          size_t    uintptr_t
 * ctypedef   signed char      int8_t
 * ctypedef   signed short     int16_t             # <<<<<<<<<<<<<<
 * ctypedef   signed int       int32_t
 * ctypedef   signed long long int64_t
 */
typedef short __pyx_t_4grpc_7_cython_6cygrpc_int16_t;

/* "src/python/grpcio/grpc/_cython/_cygrpc/grpc.pxi":21
 * ctypedef   signed char      int8_t
 * ctypedef   signed short     int16_t
 * ctypedef   signed int       int32_t             # <<<<<<<<<<<<<<
 * ctypedef   signed long long int64_t
 * ctypedef unsigned char      uint8_t
 */
typedef int __pyx_t_4grpc_7_cython_6cygrpc_int32_t;

/* "src/python/grpcio/grpc/_cython/_cygrpc/grpc.pxi":22
 * ctypedef   signed short     int16_t
 * ctypedef   signed int       int32_t
 * ctypedef   signed long long int64_t             # <<<<<<<<<<<<<<
 * ctypedef unsigned char      uint8_t
 * ctypedef unsigned short     uint16_t
 */
typedef PY_LONG_LONG __pyx_t_4grpc_7_cython_6cygrpc_int64_t;

/* "src/python/grpcio/grpc/_cython/_cygrpc/grpc.pxi":23
 * ctypedef   signed int       int32_t
 * ctypedef   signed long long int64_t
 * ctypedef unsigned char      uint8_t             # <<<<<<<<<<<<<<
 * ctypedef unsigned short     uint16_t
 * ctypedef unsigned int       uint32_t
 */
typedef unsigned char __pyx_t_4grpc_7_cython_6cygrpc_uint8_t;

/* "src/python/grpcio/grpc/_cython/_cygrpc/grpc.pxi":24
 * ctypedef   signed long long int64_t
 * ctypedef unsigned char      uint8_t
 * ctypedef unsigned short     uint16_t             # <<<<<<<<<<<<<<
 * ctypedef unsigned int       uint32_t
 * ctypedef unsigned long long uint64_t
 */
typedef unsigned short __pyx_t_4grpc_7_cython_6cygrpc_uint16_t;

/* "src/python/grpcio/grpc/_cython/_cygrpc/grpc.pxi":25
 * ctypedef unsigned char      uint8_t
 * ctypedef unsigned short     uint16_t
 * ctypedef unsigned int       uint32_t             # <<<<<<<<<<<<<<
 * ctypedef unsigned long long uint64_t
 * 
 */
typedef unsigned int __pyx_t_4grpc_7_cython_6cygrpc_uint32_t;

/* "src/python/grpcio/grpc/_cython/_cygrpc/grpc.pxi":26
 * ctypedef unsigned short     uint16_t
 * ctypedef unsigned int       uint32_t
 * ctypedef unsigned long long uint64_t             # <<<<<<<<<<<<<<
 * 
 * 
 */
typedef unsigned PY_LONG_LONG __pyx_t_4grpc_7_cython_6cygrpc_uint64_t;

/*--- Type declarations ---*/
struct __pyx_obj_4grpc_7_cython_6cygrpc__ChannelArg;
struct __pyx_obj_4grpc_7_cython_6cygrpc__ChannelArgs;
struct __pyx_obj_4grpc_7_cython_6cygrpc_Call;
struct __pyx_obj_4grpc_7_cython_6cygrpc__CallState;
struct __pyx_obj_4grpc_7_cython_6cygrpc__ChannelState;
struct __pyx_obj_4grpc_7_cython_6cygrpc_IntegratedCall;
struct __pyx_obj_4grpc_7_cython_6cygrpc_SegregatedCall;
struct __pyx_obj_4grpc_7_cython_6cygrpc_Channel;
struct __pyx_obj_4grpc_7_cython_6cygrpc_CallCredentials;
struct __pyx_obj_4grpc_7_cython_6cygrpc_MetadataPluginCallCredentials;
struct __pyx_obj_4grpc_7_cython_6cygrpc_CompositeCallCredentials;
struct __pyx_obj_4grpc_7_cython_6cygrpc_ChannelCredentials;
struct __pyx_obj_4grpc_7_cython_6cygrpc_SSLSessionCacheLRU;
struct __pyx_obj_4grpc_7_cython_6cygrpc_SSLChannelCredentials;
struct __pyx_obj_4grpc_7_cython_6cygrpc_CompositeChannelCredentials;
struct __pyx_obj_4grpc_7_cython_6cygrpc_XDSChannelCredentials;
struct __pyx_obj_4grpc_7_cython_6cygrpc_ServerCertificateConfig;
struct __pyx_obj_4grpc_7_cython_6cygrpc_ServerCredentials;
struct __pyx_obj_4grpc_7_cython_6cygrpc_LocalChannelCredentials;
struct __pyx_obj_4grpc_7_cython_6cygrpc_ALTSChannelCredentials;
struct __pyx_obj_4grpc_7_cython_6cygrpc_CompletionQueue;
struct __pyx_obj_4grpc_7_cython_6cygrpc_ConnectivityEvent;
struct __pyx_obj_4grpc_7_cython_6cygrpc_RequestCallEvent;
struct __pyx_obj_4grpc_7_cython_6cygrpc_BatchOperationEvent;
struct __pyx_obj_4grpc_7_cython_6cygrpc_ServerShutdownEvent;
struct __pyx_obj_4grpc_7_cython_6cygrpc_Operation;
struct __pyx_obj_4grpc_7_cython_6cygrpc_SendInitialMetadataOperation;
struct __pyx_obj_4grpc_7_cython_6cygrpc_SendMessageOperation;
struct __pyx_obj_4grpc_7_cython_6cygrpc_SendCloseFromClientOperation;
struct __pyx_obj_4grpc_7_cython_6cygrpc_SendStatusFromServerOperation;
struct __pyx_obj_4grpc_7_cython_6cygrpc_ReceiveInitialMetadataOperation;
struct __pyx_obj_4grpc_7_cython_6cygrpc_ReceiveMessageOperation;
struct __pyx_obj_4grpc_7_cython_6cygrpc_ReceiveStatusOnClientOperation;
struct __pyx_obj_4grpc_7_cython_6cygrpc_ReceiveCloseOnServerOperation;
struct __pyx_obj_4grpc_7_cython_6cygrpc_CallDetails;
struct __pyx_obj_4grpc_7_cython_6cygrpc_SslPemKeyCertPair;
struct __pyx_obj_4grpc_7_cython_6cygrpc_CompressionOptions;
struct __pyx_obj_4grpc_7_cython_6cygrpc_Server;
struct __pyx_obj_4grpc_7_cython_6cygrpc__Tag;
struct __pyx_obj_4grpc_7_cython_6cygrpc__ConnectivityTag;
struct __pyx_obj_4grpc_7_cython_6cygrpc__RequestCallTag;
struct __pyx_obj_4grpc_7_cython_6cygrpc__BatchOperationTag;
struct __pyx_obj_4grpc_7_cython_6cygrpc__ServerShutdownTag;
struct __pyx_obj_4grpc_7_cython_6cygrpc_TimerWrapper;
struct __pyx_obj_4grpc_7_cython_6cygrpc_SocketWrapper;
struct __pyx_obj_4grpc_7_cython_6cygrpc_ResolveWrapper;
struct __pyx_obj_4grpc_7_cython_6cygrpc_BaseCompletionQueue;
struct __pyx_obj_4grpc_7_cython_6cygrpc__BoundEventLoop;
struct __pyx_obj_4grpc_7_cython_6cygrpc_PollerCompletionQueue;
struct __pyx_obj_4grpc_7_cython_6cygrpc_AioRpcStatus;
struct __pyx_obj_4grpc_7_cython_6cygrpc__AioState;
struct __pyx_obj_4grpc_7_cython_6cygrpc_CallbackFailureHandler;
struct __pyx_obj_4grpc_7_cython_6cygrpc_CallbackWrapper;
struct __pyx_obj_4grpc_7_cython_6cygrpc_GrpcCallWrapper;
struct __pyx_obj_4grpc_7_cython_6cygrpc__AioCall;
struct __pyx_obj_4grpc_7_cython_6cygrpc_AioChannel;
struct __pyx_obj_4grpc_7_cython_6cygrpc__HandlerCallDetails;
struct __pyx_obj_4grpc_7_cython_6cygrpc_RPCState;
struct __pyx_obj_4grpc_7_cython_6cygrpc__ServicerContext;
struct __pyx_obj_4grpc_7_cython_6cygrpc__SyncServicerContext;
struct __pyx_obj_4grpc_7_cython_6cygrpc__MessageReceiver;
struct __pyx_obj_4grpc_7_cython_6cygrpc__ConcurrentRpcLimiter;
struct __pyx_obj_4grpc_7_cython_6cygrpc_AioServer;
struct __pyx_obj_4grpc_7_cython_6cygrpc__GrpcArgWrapper;
struct __pyx_obj_4grpc_7_cython_6cygrpc_InsecureChannelCredentials;
struct __pyx_obj_4grpc_7_cython_6cygrpc_ComputeEngineChannelCredentials;
struct __pyx_obj_4grpc_7_cython_6cygrpc_CensusContext;
struct __pyx_obj_4grpc_7_cython_6cygrpc___pyx_scope_struct____pyx_f_4grpc_7_cython_6cygrpc__integrated_call;
struct __pyx_obj_4grpc_7_cython_6cygrpc___pyx_scope_struct_1_next_event;
struct __pyx_obj_4grpc_7_cython_6cygrpc___pyx_scope_struct_2___pyx_f_4grpc_7_cython_6cygrpc__segregated_call;
struct __pyx_obj_4grpc_7_cython_6cygrpc___pyx_scope_struct_3_next_call_event;
struct __pyx_obj_4grpc_7_cython_6cygrpc___pyx_scope_struct_4___pyx_f_4grpc_7_cython_6cygrpc__get_metadata;
struct __pyx_obj_4grpc_7_cython_6cygrpc___pyx_scope_struct_5___pyx_f_4grpc_7_cython_6cygrpc__metadata;
struct __pyx_obj_4grpc_7_cython_6cygrpc___pyx_scope_struct_6_genexpr;
struct __pyx_obj_4grpc_7_cython_6cygrpc___pyx_scope_struct_7___pyx_f_4grpc_7_cython_6cygrpc_tuples_to_resolvaddr;
struct __pyx_obj_4grpc_7_cython_6cygrpc___pyx_scope_struct_8_genexpr;
struct __pyx_obj_4grpc_7_cython_6cygrpc___pyx_scope_struct_9__run_with_context;
struct __pyx_obj_4grpc_7_cython_6cygrpc___pyx_scope_struct_10__run_with_context;
struct __pyx_obj_4grpc_7_cython_6cygrpc___pyx_scope_struct_11___init__;
struct __pyx_obj_4grpc_7_cython_6cygrpc___pyx_scope_struct_12_async_generator_to_generator;
struct __pyx_obj_4grpc_7_cython_6cygrpc___pyx_scope_struct_13_generator_to_async_generator;
struct __pyx_obj_4grpc_7_cython_6cygrpc___pyx_scope_struct_14_execute_batch;
struct __pyx_obj_4grpc_7_cython_6cygrpc___pyx_scope_struct_15__receive_message;
struct __pyx_obj_4grpc_7_cython_6cygrpc___pyx_scope_struct_16__send_message;
struct __pyx_obj_4grpc_7_cython_6cygrpc___pyx_scope_struct_17__send_initial_metadata;
struct __pyx_obj_4grpc_7_cython_6cygrpc___pyx_scope_struct_18__receive_initial_metadata;
struct __pyx_obj_4grpc_7_cython_6cygrpc___pyx_scope_struct_19__send_error_status_from_server;
struct __pyx_obj_4grpc_7_cython_6cygrpc___pyx_scope_struct_20_status;
struct __pyx_obj_4grpc_7_cython_6cygrpc___pyx_scope_struct_21_initial_metadata;
struct __pyx_obj_4grpc_7_cython_6cygrpc___pyx_scope_struct_22_unary_unary;
struct __pyx_obj_4grpc_7_cython_6cygrpc___pyx_scope_struct_23__handle_status_once_received;
struct __pyx_obj_4grpc_7_cython_6cygrpc___pyx_scope_struct_24_receive_serialized_message;
struct __pyx_obj_4grpc_7_cython_6cygrpc___pyx_scope_struct_25_send_serialized_message;
struct __pyx_obj_4grpc_7_cython_6cygrpc___pyx_scope_struct_26_send_receive_close;
struct __pyx_obj_4grpc_7_cython_6cygrpc___pyx_scope_struct_27_initiate_unary_stream;
struct __pyx_obj_4grpc_7_cython_6cygrpc___pyx_scope_struct_28_stream_unary;
struct __pyx_obj_4grpc_7_cython_6cygrpc___pyx_scope_struct_29_initiate_stream_stream;
struct __pyx_obj_4grpc_7_cython_6cygrpc___pyx_scope_struct_30_watch_connectivity_state;
struct __pyx_obj_4grpc_7_cython_6cygrpc___pyx_scope_struct_31_read;
struct __pyx_obj_4grpc_7_cython_6cygrpc___pyx_scope_struct_32_write;
struct __pyx_obj_4grpc_7_cython_6cygrpc___pyx_scope_struct_33_send_initial_metadata;
struct __pyx_obj_4grpc_7_cython_6cygrpc___pyx_scope_struct_34_abort;
struct __pyx_obj_4grpc_7_cython_6cygrpc___pyx_scope_struct_35_abort_with_status;
struct __pyx_obj_4grpc_7_cython_6cygrpc___pyx_scope_struct_36__run_interceptor;
struct __pyx_obj_4grpc_7_cython_6cygrpc___pyx_scope_struct_37__find_method_handler;
struct __pyx_obj_4grpc_7_cython_6cygrpc___pyx_scope_struct_38__finish_handler_with_unary_response;
struct __pyx_obj_4grpc_7_cython_6cygrpc___pyx_scope_struct_39__finish_handler_with_stream_responses;
struct __pyx_obj_4grpc_7_cython_6cygrpc___pyx_scope_struct_40__handle_unary_unary_rpc;
struct __pyx_obj_4grpc_7_cython_6cygrpc___pyx_scope_struct_41__handle_unary_stream_rpc;
struct __pyx_obj_4grpc_7_cython_6cygrpc___pyx_scope_struct_42__async_message_receiver;
struct __pyx_obj_4grpc_7_cython_6cygrpc___pyx_scope_struct_43___anext__;
struct __pyx_obj_4grpc_7_cython_6cygrpc___pyx_scope_struct_44__handle_stream_unary_rpc;
struct __pyx_obj_4grpc_7_cython_6cygrpc___pyx_scope_struct_45__handle_stream_stream_rpc;
struct __pyx_obj_4grpc_7_cython_6cygrpc___pyx_scope_struct_46__handle_exceptions;
struct __pyx_obj_4grpc_7_cython_6cygrpc___pyx_scope_struct_47__handle_cancellation_from_core;
struct __pyx_obj_4grpc_7_cython_6cygrpc___pyx_scope_struct_48__schedule_rpc_coro;
struct __pyx_obj_4grpc_7_cython_6cygrpc___pyx_scope_struct_49__handle_rpc;
struct __pyx_obj_4grpc_7_cython_6cygrpc___pyx_scope_struct_50_check_before_request_call;
struct __pyx_obj_4grpc_7_cython_6cygrpc___pyx_scope_struct_51__decrease_active_rpcs_count_with_lock;
struct __pyx_obj_4grpc_7_cython_6cygrpc___pyx_scope_struct_52__request_call;
struct __pyx_obj_4grpc_7_cython_6cygrpc___pyx_scope_struct_53__server_main_loop;
struct __pyx_obj_4grpc_7_cython_6cygrpc___pyx_scope_struct_54_start;
struct __pyx_obj_4grpc_7_cython_6cygrpc___pyx_scope_struct_55__start_shutting_down;
struct __pyx_obj_4grpc_7_cython_6cygrpc___pyx_scope_struct_56_shutdown;
struct __pyx_obj_4grpc_7_cython_6cygrpc___pyx_scope_struct_57_wait_for_termination;
struct __pyx_t_4grpc_7_cython_6cygrpc_CallbackContext;

/* "src/python/grpcio/grpc/_cython/_cygrpc/aio/channel.pxd.pxi":15
 * # limitations under the License.
 * 
 * cdef enum AioChannelStatus:             # <<<<<<<<<<<<<<
 *     AIO_CHANNEL_STATUS_UNKNOWN
 *     AIO_CHANNEL_STATUS_READY
 */
enum __pyx_t_4grpc_7_cython_6cygrpc_AioChannelStatus {
  __pyx_e_4grpc_7_cython_6cygrpc_AIO_CHANNEL_STATUS_UNKNOWN,
  __pyx_e_4grpc_7_cython_6cygrpc_AIO_CHANNEL_STATUS_READY,
  __pyx_e_4grpc_7_cython_6cygrpc_AIO_CHANNEL_STATUS_CLOSING,
  __pyx_e_4grpc_7_cython_6cygrpc_AIO_CHANNEL_STATUS_DESTROYED
};

/* "src/python/grpcio/grpc/_cython/_cygrpc/aio/server.pxd.pxi":62
 * 
 * 
 * cdef enum AioServerStatus:             # <<<<<<<<<<<<<<
 *     AIO_SERVER_STATUS_UNKNOWN
 *     AIO_SERVER_STATUS_READY
 */
enum __pyx_t_4grpc_7_cython_6cygrpc_AioServerStatus {
  __pyx_e_4grpc_7_cython_6cygrpc_AIO_SERVER_STATUS_UNKNOWN,
  __pyx_e_4grpc_7_cython_6cygrpc_AIO_SERVER_STATUS_READY,
  __pyx_e_4grpc_7_cython_6cygrpc_AIO_SERVER_STATUS_RUNNING,
  __pyx_e_4grpc_7_cython_6cygrpc_AIO_SERVER_STATUS_STOPPED,
  __pyx_e_4grpc_7_cython_6cygrpc_AIO_SERVER_STATUS_STOPPING
};

/* "src/python/grpcio/grpc/_cython/_cygrpc/aio/completion_queue.pxd.pxi":34
 * 
 * 
 * ctypedef queue[grpc_event] cpp_event_queue             # <<<<<<<<<<<<<<
 * 
 * 
 */
typedef std::queue<grpc_event>  __pyx_t_4grpc_7_cython_6cygrpc_cpp_event_queue;

/* "src/python/grpcio/grpc/_cython/_cygrpc/aio/callback_common.pxd.pxi":24
 * 
 * 
 * cdef struct CallbackContext:             # <<<<<<<<<<<<<<
 *     # C struct to store callback context in the form of pointers.
 *     #
 */
struct __pyx_t_4grpc_7_cython_6cygrpc_CallbackContext {
  grpc_completion_queue_functor functor;
  PyObject *waiter;
  PyObject *loop;
  PyObject *failure_handler;
  PyObject *callback_wrapper;
};

/* "src/python/grpcio/grpc/_cython/_cygrpc/arguments.pxd.pxi":22
 * 
 * 
 * cdef class _ChannelArg:             # <<<<<<<<<<<<<<
 * 
 *   cdef grpc_arg c_argument
 */
struct __pyx_obj_4grpc_7_cython_6cygrpc__ChannelArg {
  PyObject_HEAD
  struct __pyx_vtabstruct_4grpc_7_cython_6cygrpc__ChannelArg *__pyx_vtab;
  grpc_arg c_argument;
};


/* "src/python/grpcio/grpc/_cython/_cygrpc/arguments.pxd.pxi":29
 * 
 * 
 * cdef class _ChannelArgs:             # <<<<<<<<<<<<<<
 * 
 *   cdef readonly tuple _arguments
 */
struct __pyx_obj_4grpc_7_cython_6cygrpc__ChannelArgs {
  PyObject_HEAD
  struct __pyx_vtabstruct_4grpc_7_cython_6cygrpc__ChannelArgs *__pyx_vtab;
  PyObject *_arguments;
  PyObject *_channel_args;
  PyObject *_references;
  grpc_channel_args _c_arguments;
};


/* "src/python/grpcio/grpc/_cython/_cygrpc/call.pxd.pxi":16
 * 
 * 
 * cdef class Call:             # <<<<<<<<<<<<<<
 * 
 *   cdef grpc_call *c_call
 */
struct __pyx_obj_4grpc_7_cython_6cygrpc_Call {
  PyObject_HEAD
  grpc_call *c_call;
  PyObject *references;
};


/* "src/python/grpcio/grpc/_cython/_cygrpc/channel.pxd.pxi":25
 * 
 * 
 * cdef class _CallState:             # <<<<<<<<<<<<<<
 * 
 *   cdef grpc_call *c_call
 */
struct __pyx_obj_4grpc_7_cython_6cygrpc__CallState {
  PyObject_HEAD
  grpc_call *c_call;
  PyObject *due;
};


/* "src/python/grpcio/grpc/_cython/_cygrpc/channel.pxd.pxi":31
 * 
 * 
 * cdef class _ChannelState:             # <<<<<<<<<<<<<<
 * 
 *   cdef object condition
 */
struct __pyx_obj_4grpc_7_cython_6cygrpc__ChannelState {
  PyObject_HEAD
  PyObject *condition;
  grpc_channel *c_channel;
  PyObject *open;
  PyObject *closed_reason;
  PyObject *integrated_call_states;
  grpc_completion_queue *c_call_completion_queue;
  PyObject *segregated_call_states;
  PyObject *connectivity_due;
  grpc_completion_queue *c_connectivity_completion_queue;
};


/* "src/python/grpcio/grpc/_cython/_cygrpc/channel.pxd.pxi":56
 * 
 * 
 * cdef class IntegratedCall:             # <<<<<<<<<<<<<<
 * 
 *   cdef _ChannelState _channel_state
 */
struct __pyx_obj_4grpc_7_cython_6cygrpc_IntegratedCall {
  PyObject_HEAD
  struct __pyx_obj_4grpc_7_cython_6cygrpc__ChannelState *_channel_state;
  struct __pyx_obj_4grpc_7_cython_6cygrpc__CallState *_call_state;
};


/* "src/python/grpcio/grpc/_cython/_cygrpc/channel.pxd.pxi":62
 * 
 * 
 * cdef class SegregatedCall:             # <<<<<<<<<<<<<<
 * 
 *   cdef _ChannelState _channel_state
 */
struct __pyx_obj_4grpc_7_cython_6cygrpc_SegregatedCall {
  PyObject_HEAD
  struct __pyx_obj_4grpc_7_cython_6cygrpc__ChannelState *_channel_state;
  struct __pyx_obj_4grpc_7_cython_6cygrpc__CallState *_call_state;
  grpc_completion_queue *_c_completion_queue;
};


/* "src/python/grpcio/grpc/_cython/_cygrpc/channel.pxd.pxi":69
 * 
 * 
 * cdef class Channel:             # <<<<<<<<<<<<<<
 * 
 *   cdef _ChannelState _state
 */
struct __pyx_obj_4grpc_7_cython_6cygrpc_Channel {
  PyObject_HEAD
  struct __pyx_obj_4grpc_7_cython_6cygrpc__ChannelState *_state;
  PyObject *_arguments;
};


/* "src/python/grpcio/grpc/_cython/_cygrpc/credentials.pxd.pxi":16
 * 
 * 
 * cdef class CallCredentials:             # <<<<<<<<<<<<<<
 * 
 *   cdef grpc_call_credentials *c(self) except *
 */
struct __pyx_obj_4grpc_7_cython_6cygrpc_CallCredentials {
  PyObject_HEAD
  struct __pyx_vtabstruct_4grpc_7_cython_6cygrpc_CallCredentials *__pyx_vtab;
  grpc_call_credentials *c_credentials;
};


/* "src/python/grpcio/grpc/_cython/_cygrpc/credentials.pxd.pxi":34
 * 
 * 
 * cdef class MetadataPluginCallCredentials(CallCredentials):             # <<<<<<<<<<<<<<
 * 
 *   cdef readonly object _metadata_plugin
 */
struct __pyx_obj_4grpc_7_cython_6cygrpc_MetadataPluginCallCredentials {
  struct __pyx_obj_4grpc_7_cython_6cygrpc_CallCredentials __pyx_base;
  PyObject *_metadata_plugin;
  PyObject *_name;
};


/* "src/python/grpcio/grpc/_cython/_cygrpc/credentials.pxd.pxi":45
 * 
 * 
 * cdef class CompositeCallCredentials(CallCredentials):             # <<<<<<<<<<<<<<
 * 
 *   cdef readonly tuple _call_credentialses
 */
struct __pyx_obj_4grpc_7_cython_6cygrpc_CompositeCallCredentials {
  struct __pyx_obj_4grpc_7_cython_6cygrpc_CallCredentials __pyx_base;
  PyObject *_call_credentialses;
};


/* "src/python/grpcio/grpc/_cython/_cygrpc/credentials.pxd.pxi":52
 * 
 * 
 * cdef class ChannelCredentials:             # <<<<<<<<<<<<<<
 * 
 *   cdef grpc_channel_credentials *c(self) except *
 */
struct __pyx_obj_4grpc_7_cython_6cygrpc_ChannelCredentials {
  PyObject_HEAD
  struct __pyx_vtabstruct_4grpc_7_cython_6cygrpc_ChannelCredentials *__pyx_vtab;
};


/* "src/python/grpcio/grpc/_cython/_cygrpc/credentials.pxd.pxi":57
 * 
 * 
 * cdef class SSLSessionCacheLRU:             # <<<<<<<<<<<<<<
 * 
 *   cdef grpc_ssl_session_cache *_cache
 */
struct __pyx_obj_4grpc_7_cython_6cygrpc_SSLSessionCacheLRU {
  PyObject_HEAD
  grpc_ssl_session_cache *_cache;
};


/* "src/python/grpcio/grpc/_cython/_cygrpc/credentials.pxd.pxi":62
 * 
 * 
 * cdef class SSLChannelCredentials(ChannelCredentials):             # <<<<<<<<<<<<<<
 * 
 *   cdef readonly object _pem_root_certificates
 */
struct __pyx_obj_4grpc_7_cython_6cygrpc_SSLChannelCredentials {
  struct __pyx_obj_4grpc_7_cython_6cygrpc_ChannelCredentials __pyx_base;
  PyObject *_pem_root_certificates;
  PyObject *_private_key;
  PyObject *_certificate_chain;
};


/* "src/python/grpcio/grpc/_cython/_cygrpc/credentials.pxd.pxi":71
 * 
 * 
 * cdef class CompositeChannelCredentials(ChannelCredentials):             # <<<<<<<<<<<<<<
 * 
 *   cdef readonly tuple _call_credentialses
 */
struct __pyx_obj_4grpc_7_cython_6cygrpc_CompositeChannelCredentials {
  struct __pyx_obj_4grpc_7_cython_6cygrpc_ChannelCredentials __pyx_base;
  PyObject *_call_credentialses;
  struct __pyx_obj_4grpc_7_cython_6cygrpc_ChannelCredentials *_channel_credentials;
};


/* "src/python/grpcio/grpc/_cython/_cygrpc/credentials.pxd.pxi":79
 * 
 * 
 * cdef class XDSChannelCredentials(ChannelCredentials):             # <<<<<<<<<<<<<<
 * 
 *   cdef readonly ChannelCredentials _fallback_credentials
 */
struct __pyx_obj_4grpc_7_cython_6cygrpc_XDSChannelCredentials {
  struct __pyx_obj_4grpc_7_cython_6cygrpc_ChannelCredentials __pyx_base;
  struct __pyx_obj_4grpc_7_cython_6cygrpc_ChannelCredentials *_fallback_credentials;
};


/* "src/python/grpcio/grpc/_cython/_cygrpc/credentials.pxd.pxi":86
 * 
 * 
 * cdef class ServerCertificateConfig:             # <<<<<<<<<<<<<<
 * 
 *   cdef grpc_ssl_server_certificate_config *c_cert_config
 */
struct __pyx_obj_4grpc_7_cython_6cygrpc_ServerCertificateConfig {
  PyObject_HEAD
  grpc_ssl_server_certificate_config *c_cert_config;
  char const *c_pem_root_certs;
  grpc_ssl_pem_key_cert_pair *c_ssl_pem_key_cert_pairs;
  size_t c_ssl_pem_key_cert_pairs_count;
  PyObject *references;
};


/* "src/python/grpcio/grpc/_cython/_cygrpc/credentials.pxd.pxi":95
 * 
 * 
 * cdef class ServerCredentials:             # <<<<<<<<<<<<<<
 * 
 *   cdef grpc_server_credentials *c_credentials
 */
struct __pyx_obj_4grpc_7_cython_6cygrpc_ServerCredentials {
  PyObject_HEAD
  grpc_server_credentials *c_credentials;
  grpc_ssl_pem_key_cert_pair *c_ssl_pem_key_cert_pairs;
  size_t c_ssl_pem_key_cert_pairs_count;
  PyObject *references;
  PyObject *initial_cert_config;
  PyObject *cert_config_fetcher;
  int initial_cert_config_fetched;
};


/* "src/python/grpcio/grpc/_cython/_cygrpc/credentials.pxd.pxi":109
 * 
 * 
 * cdef class LocalChannelCredentials(ChannelCredentials):             # <<<<<<<<<<<<<<
 * 
 *   cdef grpc_local_connect_type _local_connect_type
 */
struct __pyx_obj_4grpc_7_cython_6cygrpc_LocalChannelCredentials {
  struct __pyx_obj_4grpc_7_cython_6cygrpc_ChannelCredentials __pyx_base;
  grpc_local_connect_type _local_connect_type;
};


/* "src/python/grpcio/grpc/_cython/_cygrpc/credentials.pxd.pxi":114
 * 
 * 
 * cdef class ALTSChannelCredentials(ChannelCredentials):             # <<<<<<<<<<<<<<
 *   cdef grpc_alts_credentials_options *c_options
 * 
 */
struct __pyx_obj_4grpc_7_cython_6cygrpc_ALTSChannelCredentials {
  struct __pyx_obj_4grpc_7_cython_6cygrpc_ChannelCredentials __pyx_base;
  grpc_alts_credentials_options *c_options;
};


/* "src/python/grpcio/grpc/_cython/_cygrpc/completion_queue.pxd.pxi":22
 * 
 * 
 * cdef class CompletionQueue:             # <<<<<<<<<<<<<<
 * 
 *   cdef grpc_completion_queue *c_completion_queue
 */
struct __pyx_obj_4grpc_7_cython_6cygrpc_CompletionQueue {
  PyObject_HEAD
  struct __pyx_vtabstruct_4grpc_7_cython_6cygrpc_CompletionQueue *__pyx_vtab;
  grpc_completion_queue *c_completion_queue;
  int is_shutting_down;
  int is_shutdown;
};


/* "src/python/grpcio/grpc/_cython/_cygrpc/event.pxd.pxi":16
 * 
 * 
 * cdef class ConnectivityEvent:             # <<<<<<<<<<<<<<
 * 
 *   cdef readonly grpc_completion_type completion_type
 */
struct __pyx_obj_4grpc_7_cython_6cygrpc_ConnectivityEvent {
  PyObject_HEAD
  grpc_completion_type completion_type;
  int success;
  PyObject *tag;
};


/* "src/python/grpcio/grpc/_cython/_cygrpc/event.pxd.pxi":23
 * 
 * 
 * cdef class RequestCallEvent:             # <<<<<<<<<<<<<<
 * 
 *   cdef readonly grpc_completion_type completion_type
 */
struct __pyx_obj_4grpc_7_cython_6cygrpc_RequestCallEvent {
  PyObject_HEAD
  grpc_completion_type completion_type;
  int success;
  PyObject *tag;
  struct __pyx_obj_4grpc_7_cython_6cygrpc_Call *call;
  struct __pyx_obj_4grpc_7_cython_6cygrpc_CallDetails *call_details;
  PyObject *invocation_metadata;
};


/* "src/python/grpcio/grpc/_cython/_cygrpc/event.pxd.pxi":33
 * 
 * 
 * cdef class BatchOperationEvent:             # <<<<<<<<<<<<<<
 * 
 *   cdef readonly grpc_completion_type completion_type
 */
struct __pyx_obj_4grpc_7_cython_6cygrpc_BatchOperationEvent {
  PyObject_HEAD
  grpc_completion_type completion_type;
  int success;
  PyObject *tag;
  PyObject *batch_operations;
};


/* "src/python/grpcio/grpc/_cython/_cygrpc/event.pxd.pxi":41
 * 
 * 
 * cdef class ServerShutdownEvent:             # <<<<<<<<<<<<<<
 * 
 *   cdef readonly grpc_completion_type completion_type
 */
struct __pyx_obj_4grpc_7_cython_6cygrpc_ServerShutdownEvent {
  PyObject_HEAD
  grpc_completion_type completion_type;
  int success;
  PyObject *tag;
};


/* "src/python/grpcio/grpc/_cython/_cygrpc/operation.pxd.pxi":16
 * 
 * 
 * cdef class Operation:             # <<<<<<<<<<<<<<
 * 
 *   cdef void c(self) except *
 */
struct __pyx_obj_4grpc_7_cython_6cygrpc_Operation {
  PyObject_HEAD
  struct __pyx_vtabstruct_4grpc_7_cython_6cygrpc_Operation *__pyx_vtab;
  grpc_op c_op;
};


/* "src/python/grpcio/grpc/_cython/_cygrpc/operation.pxd.pxi":25
 * 
 * 
 * cdef class SendInitialMetadataOperation(Operation):             # <<<<<<<<<<<<<<
 * 
 *   cdef readonly object _initial_metadata;
 */
struct __pyx_obj_4grpc_7_cython_6cygrpc_SendInitialMetadataOperation {
  struct __pyx_obj_4grpc_7_cython_6cygrpc_Operation __pyx_base;
  PyObject *_initial_metadata;
  int _flags;
  grpc_metadata *_c_initial_metadata;
  size_t _c_initial_metadata_count;
};


/* "src/python/grpcio/grpc/_cython/_cygrpc/operation.pxd.pxi":36
 * 
 * 
 * cdef class SendMessageOperation(Operation):             # <<<<<<<<<<<<<<
 * 
 *   cdef readonly bytes _message
 */
struct __pyx_obj_4grpc_7_cython_6cygrpc_SendMessageOperation {
  struct __pyx_obj_4grpc_7_cython_6cygrpc_Operation __pyx_base;
  PyObject *_message;
  int _flags;
  grpc_byte_buffer *_c_message_byte_buffer;
};


/* "src/python/grpcio/grpc/_cython/_cygrpc/operation.pxd.pxi":46
 * 
 * 
 * cdef class SendCloseFromClientOperation(Operation):             # <<<<<<<<<<<<<<
 * 
 *   cdef readonly int _flags
 */
struct __pyx_obj_4grpc_7_cython_6cygrpc_SendCloseFromClientOperation {
  struct __pyx_obj_4grpc_7_cython_6cygrpc_Operation __pyx_base;
  int _flags;
};


/* "src/python/grpcio/grpc/_cython/_cygrpc/operation.pxd.pxi":54
 * 
 * 
 * cdef class SendStatusFromServerOperation(Operation):             # <<<<<<<<<<<<<<
 * 
 *   cdef readonly object _trailing_metadata
 */
struct __pyx_obj_4grpc_7_cython_6cygrpc_SendStatusFromServerOperation {
  struct __pyx_obj_4grpc_7_cython_6cygrpc_Operation __pyx_base;
  PyObject *_trailing_metadata;
  PyObject *_code;
  PyObject *_details;
  int _flags;
  grpc_metadata *_c_trailing_metadata;
  size_t _c_trailing_metadata_count;
  grpc_slice _c_details;
};


/* "src/python/grpcio/grpc/_cython/_cygrpc/operation.pxd.pxi":68
 * 
 * 
 * cdef class ReceiveInitialMetadataOperation(Operation):             # <<<<<<<<<<<<<<
 * 
 *   cdef readonly int _flags
 */
struct __pyx_obj_4grpc_7_cython_6cygrpc_ReceiveInitialMetadataOperation {
  struct __pyx_obj_4grpc_7_cython_6cygrpc_Operation __pyx_base;
  int _flags;
  PyObject *_initial_metadata;
  grpc_metadata_array _c_initial_metadata;
};


/* "src/python/grpcio/grpc/_cython/_cygrpc/operation.pxd.pxi":78
 * 
 * 
 * cdef class ReceiveMessageOperation(Operation):             # <<<<<<<<<<<<<<
 * 
 *   cdef readonly int _flags
 */
struct __pyx_obj_4grpc_7_cython_6cygrpc_ReceiveMessageOperation {
  struct __pyx_obj_4grpc_7_cython_6cygrpc_Operation __pyx_base;
  int _flags;
  grpc_byte_buffer *_c_message_byte_buffer;
  PyObject *_message;
};


/* "src/python/grpcio/grpc/_cython/_cygrpc/operation.pxd.pxi":88
 * 
 * 
 * cdef class ReceiveStatusOnClientOperation(Operation):             # <<<<<<<<<<<<<<
 * 
 *   cdef readonly int _flags
 */
struct __pyx_obj_4grpc_7_cython_6cygrpc_ReceiveStatusOnClientOperation {
  struct __pyx_obj_4grpc_7_cython_6cygrpc_Operation __pyx_base;
  int _flags;
  grpc_metadata_array _c_trailing_metadata;
  grpc_status_code _c_code;
  grpc_slice _c_details;
  char const *_c_error_string;
  PyObject *_trailing_metadata;
  PyObject *_code;
  PyObject *_details;
  PyObject *_error_string;
};


/* "src/python/grpcio/grpc/_cython/_cygrpc/operation.pxd.pxi":104
 * 
 * 
 * cdef class ReceiveCloseOnServerOperation(Operation):             # <<<<<<<<<<<<<<
 * 
 *   cdef readonly int _flags
 */
struct __pyx_obj_4grpc_7_cython_6cygrpc_ReceiveCloseOnServerOperation {
  struct __pyx_obj_4grpc_7_cython_6cygrpc_Operation __pyx_base;
  int _flags;
  PyObject *_cancelled;
  int _c_cancelled;
};


/* "src/python/grpcio/grpc/_cython/_cygrpc/records.pxd.pxi":21
 * 
 * 
 * cdef class CallDetails:             # <<<<<<<<<<<<<<
 * 
 *   cdef grpc_call_details c_details
 */
struct __pyx_obj_4grpc_7_cython_6cygrpc_CallDetails {
  PyObject_HEAD
  grpc_call_details c_details;
};


/* "src/python/grpcio/grpc/_cython/_cygrpc/records.pxd.pxi":26
 * 
 * 
 * cdef class SslPemKeyCertPair:             # <<<<<<<<<<<<<<
 * 
 *   cdef grpc_ssl_pem_key_cert_pair c_pair
 */
struct __pyx_obj_4grpc_7_cython_6cygrpc_SslPemKeyCertPair {
  PyObject_HEAD
  grpc_ssl_pem_key_cert_pair c_pair;
  PyObject *private_key;
  PyObject *certificate_chain;
};


/* "src/python/grpcio/grpc/_cython/_cygrpc/records.pxd.pxi":32
 * 
 * 
 * cdef class CompressionOptions:             # <<<<<<<<<<<<<<
 * 
 *   cdef grpc_compression_options c_options
 */
struct __pyx_obj_4grpc_7_cython_6cygrpc_CompressionOptions {
  PyObject_HEAD
  grpc_compression_options c_options;
};


/* "src/python/grpcio/grpc/_cython/_cygrpc/server.pxd.pxi":15
 * # limitations under the License.
 * 
 * cdef class Server:             # <<<<<<<<<<<<<<
 * 
 *   cdef grpc_server *c_server
 */
struct __pyx_obj_4grpc_7_cython_6cygrpc_Server {
  PyObject_HEAD
  struct __pyx_vtabstruct_4grpc_7_cython_6cygrpc_Server *__pyx_vtab;
  grpc_server *c_server;
  int is_started;
  int is_shutting_down;
  int is_shutdown;
  struct __pyx_obj_4grpc_7_cython_6cygrpc_CompletionQueue *backup_shutdown_queue;
  PyObject *references;
  PyObject *registered_completion_queues;
};


/* "src/python/grpcio/grpc/_cython/_cygrpc/tag.pxd.pxi":16
 * 
 * 
 * cdef class _Tag:             # <<<<<<<<<<<<<<
 * 
 *   cdef object event(self, grpc_event c_event)
 */
struct __pyx_obj_4grpc_7_cython_6cygrpc__Tag {
  PyObject_HEAD
  struct __pyx_vtabstruct_4grpc_7_cython_6cygrpc__Tag *__pyx_vtab;
};


/* "src/python/grpcio/grpc/_cython/_cygrpc/tag.pxd.pxi":21
 * 
 * 
 * cdef class _ConnectivityTag(_Tag):             # <<<<<<<<<<<<<<
 * 
 *   cdef readonly object _user_tag
 */
struct __pyx_obj_4grpc_7_cython_6cygrpc__ConnectivityTag {
  struct __pyx_obj_4grpc_7_cython_6cygrpc__Tag __pyx_base;
  PyObject *_user_tag;
};


/* "src/python/grpcio/grpc/_cython/_cygrpc/tag.pxd.pxi":28
 * 
 * 
 * cdef class _RequestCallTag(_Tag):             # <<<<<<<<<<<<<<
 * 
 *   cdef readonly object _user_tag
 */
struct __pyx_obj_4grpc_7_cython_6cygrpc__RequestCallTag {
  struct __pyx_obj_4grpc_7_cython_6cygrpc__Tag __pyx_base;
  PyObject *_user_tag;
  struct __pyx_obj_4grpc_7_cython_6cygrpc_Call *call;
  struct __pyx_obj_4grpc_7_cython_6cygrpc_CallDetails *call_details;
  grpc_metadata_array c_invocation_metadata;
};


/* "src/python/grpcio/grpc/_cython/_cygrpc/tag.pxd.pxi":39
 * 
 * 
 * cdef class _BatchOperationTag(_Tag):             # <<<<<<<<<<<<<<
 * 
 *   cdef object _user_tag
 */
struct __pyx_obj_4grpc_7_cython_6cygrpc__BatchOperationTag {
  struct __pyx_obj_4grpc_7_cython_6cygrpc__Tag __pyx_base;
  PyObject *_user_tag;
  PyObject *_operations;
  PyObject *_retained_call;
  grpc_op *c_ops;
  size_t c_nops;
};


/* "src/python/grpcio/grpc/_cython/_cygrpc/tag.pxd.pxi":51
 * 
 * 
 * cdef class _ServerShutdownTag(_Tag):             # <<<<<<<<<<<<<<
 * 
 *   cdef readonly object _user_tag
 */
struct __pyx_obj_4grpc_7_cython_6cygrpc__ServerShutdownTag {
  struct __pyx_obj_4grpc_7_cython_6cygrpc__Tag __pyx_base;
  PyObject *_user_tag;
  struct __pyx_obj_4grpc_7_cython_6cygrpc_Server *_shutting_down_server;
};


/* "src/python/grpcio/grpc/_cython/_cygrpc/grpc_gevent.pxd.pxi":16
 * # distutils: language=c++
 * 
 * cdef class TimerWrapper:             # <<<<<<<<<<<<<<
 * 
 *   cdef grpc_custom_timer *c_timer
 */
struct __pyx_obj_4grpc_7_cython_6cygrpc_TimerWrapper {
  PyObject_HEAD
  struct grpc_custom_timer *c_timer;
  PyObject *timer;
  PyObject *event;
};


/* "src/python/grpcio/grpc/_cython/_cygrpc/grpc_gevent.pxd.pxi":22
 *   cdef object event
 * 
 * cdef class SocketWrapper:             # <<<<<<<<<<<<<<
 *   cdef object sockopts
 *   cdef object socket
 */
struct __pyx_obj_4grpc_7_cython_6cygrpc_SocketWrapper {
  PyObject_HEAD
  PyObject *sockopts;
  PyObject *socket;
  PyObject *closed;
  struct grpc_custom_socket *c_socket;
  char *c_buffer;
  size_t len;
  struct grpc_custom_socket *accepting_socket;
  grpc_custom_connect_callback connect_cb;
  grpc_custom_write_callback write_cb;
  grpc_custom_read_callback read_cb;
  grpc_custom_accept_callback accept_cb;
  grpc_custom_close_callback close_cb;
};


/* "src/python/grpcio/grpc/_cython/_cygrpc/grpc_gevent.pxd.pxi":38
 * 
 * 
 * cdef class ResolveWrapper:             # <<<<<<<<<<<<<<
 *   cdef grpc_custom_resolver *c_resolver
 *   cdef const char* c_host
 */
struct __pyx_obj_4grpc_7_cython_6cygrpc_ResolveWrapper {
  PyObject_HEAD
  struct grpc_custom_resolver *c_resolver;
  char const *c_host;
  char const *c_port;
};


/* "src/python/grpcio/grpc/_cython/_cygrpc/aio/completion_queue.pxd.pxi":47
 * 
 * 
 * cdef class BaseCompletionQueue:             # <<<<<<<<<<<<<<
 *     cdef grpc_completion_queue *_cq
 * 
 */
struct __pyx_obj_4grpc_7_cython_6cygrpc_BaseCompletionQueue {
  PyObject_HEAD
  struct __pyx_vtabstruct_4grpc_7_cython_6cygrpc_BaseCompletionQueue *__pyx_vtab;
  grpc_completion_queue *_cq;
};


/* "src/python/grpcio/grpc/_cython/_cygrpc/aio/completion_queue.pxd.pxi":53
 * 
 * 
 * cdef class _BoundEventLoop:             # <<<<<<<<<<<<<<
 *     cdef readonly object loop
 *     cdef readonly object read_socket  # socket.socket
 */
struct __pyx_obj_4grpc_7_cython_6cygrpc__BoundEventLoop {
  PyObject_HEAD
  PyObject *loop;
  PyObject *read_socket;
  int _has_reader;
};


/* "src/python/grpcio/grpc/_cython/_cygrpc/aio/completion_queue.pxd.pxi":59
 * 
 * 
 * cdef class PollerCompletionQueue(BaseCompletionQueue):             # <<<<<<<<<<<<<<
 *     cdef bint _shutdown
 *     cdef cpp_event_queue _queue
 */
struct __pyx_obj_4grpc_7_cython_6cygrpc_PollerCompletionQueue {
  struct __pyx_obj_4grpc_7_cython_6cygrpc_BaseCompletionQueue __pyx_base;
  int _shutdown;
  __pyx_t_4grpc_7_cython_6cygrpc_cpp_event_queue _queue;
  std::mutex _queue_mutex;
  PyObject *_poller_thread;
  int _write_fd;
  PyObject *_read_socket;
  PyObject *_write_socket;
  PyObject *_loops;
};


/* "src/python/grpcio/grpc/_cython/_cygrpc/aio/rpc_status.pxd.pxi":17
 * 
 * 
 * cdef class AioRpcStatus(Exception):             # <<<<<<<<<<<<<<
 *     cdef readonly:
 *         grpc_status_code _code
 */
struct __pyx_obj_4grpc_7_cython_6cygrpc_AioRpcStatus {
  PyBaseExceptionObject __pyx_base;
  struct __pyx_vtabstruct_4grpc_7_cython_6cygrpc_AioRpcStatus *__pyx_vtab;
  grpc_status_code _code;
  PyObject *_details;
  PyObject *_trailing_metadata;
  PyObject *_debug_error_string;
};


/* "src/python/grpcio/grpc/_cython/_cygrpc/aio/grpc_aio.pxd.pxi":16
 * # distutils: language=c++
 * 
 * cdef class _AioState:             # <<<<<<<<<<<<<<
 *     cdef object lock  # threading.RLock
 *     cdef int refcount
 */
struct __pyx_obj_4grpc_7_cython_6cygrpc__AioState {
  PyObject_HEAD
  PyObject *lock;
  int refcount;
  PyObject *engine;
  struct __pyx_obj_4grpc_7_cython_6cygrpc_BaseCompletionQueue *cq;
};


/* "src/python/grpcio/grpc/_cython/_cygrpc/aio/callback_common.pxd.pxi":16
 * 
 * 
 * cdef class CallbackFailureHandler:             # <<<<<<<<<<<<<<
 *     cdef str _core_function_name
 *     cdef object _error_details
 */
struct __pyx_obj_4grpc_7_cython_6cygrpc_CallbackFailureHandler {
  PyObject_HEAD
  struct __pyx_vtabstruct_4grpc_7_cython_6cygrpc_CallbackFailureHandler *__pyx_vtab;
  PyObject *_core_function_name;
  PyObject *_error_details;
  PyObject *_exception_type;
};


/* "src/python/grpcio/grpc/_cython/_cygrpc/aio/callback_common.pxd.pxi":43
 * 
 * 
 * cdef class CallbackWrapper:             # <<<<<<<<<<<<<<
 *     cdef CallbackContext context
 *     cdef object _reference_of_future
 */
struct __pyx_obj_4grpc_7_cython_6cygrpc_CallbackWrapper {
  PyObject_HEAD
  struct __pyx_vtabstruct_4grpc_7_cython_6cygrpc_CallbackWrapper *__pyx_vtab;
  struct __pyx_t_4grpc_7_cython_6cygrpc_CallbackContext context;
  PyObject *_reference_of_future;
  PyObject *_reference_of_failure_handler;
};


/* "src/python/grpcio/grpc/_cython/_cygrpc/aio/callback_common.pxd.pxi":56
 * 
 * 
 * cdef class GrpcCallWrapper:             # <<<<<<<<<<<<<<
 *     cdef grpc_call* call
 */
struct __pyx_obj_4grpc_7_cython_6cygrpc_GrpcCallWrapper {
  PyObject_HEAD
  grpc_call *call;
};


/* "src/python/grpcio/grpc/_cython/_cygrpc/aio/call.pxd.pxi":16
 * 
 * 
 * cdef class _AioCall(GrpcCallWrapper):             # <<<<<<<<<<<<<<
 *     cdef:
 *         readonly AioChannel _channel
 */
struct __pyx_obj_4grpc_7_cython_6cygrpc__AioCall {
  struct __pyx_obj_4grpc_7_cython_6cygrpc_GrpcCallWrapper __pyx_base;
  struct __pyx_vtabstruct_4grpc_7_cython_6cygrpc__AioCall *__pyx_vtab;
  struct __pyx_obj_4grpc_7_cython_6cygrpc_AioChannel *_channel;
  PyObject *_references;
  PyObject *_deadline;
  PyObject *_done_callbacks;
  PyObject *_loop;
  int _is_locally_cancelled;
  struct __pyx_obj_4grpc_7_cython_6cygrpc_AioRpcStatus *_status;
  PyObject *_initial_metadata;
  PyObject *_waiters_status;
  PyObject *_waiters_initial_metadata;
  int _send_initial_metadata_flags;
};


/* "src/python/grpcio/grpc/_cython/_cygrpc/aio/channel.pxd.pxi":21
 *     AIO_CHANNEL_STATUS_DESTROYED
 * 
 * cdef class AioChannel:             # <<<<<<<<<<<<<<
 *     cdef:
 *         grpc_channel * channel
 */
struct __pyx_obj_4grpc_7_cython_6cygrpc_AioChannel {
  PyObject_HEAD
  grpc_channel *channel;
  PyObject *loop;
  PyObject *_target;
  enum __pyx_t_4grpc_7_cython_6cygrpc_AioChannelStatus _status;
  int _is_secure;
};


/* "src/python/grpcio/grpc/_cython/_cygrpc/aio/server.pxd.pxi":15
 * # limitations under the License.
 * 
 * cdef class _HandlerCallDetails:             # <<<<<<<<<<<<<<
 *     cdef readonly str method
 *     cdef readonly tuple invocation_metadata
 */
struct __pyx_obj_4grpc_7_cython_6cygrpc__HandlerCallDetails {
  PyObject_HEAD
  PyObject *method;
  PyObject *invocation_metadata;
};


/* "src/python/grpcio/grpc/_cython/_cygrpc/aio/server.pxd.pxi":20
 * 
 * 
 * cdef class RPCState(GrpcCallWrapper):             # <<<<<<<<<<<<<<
 *     cdef grpc_call_details details
 *     cdef grpc_metadata_array request_metadata
 */
struct __pyx_obj_4grpc_7_cython_6cygrpc_RPCState {
  struct __pyx_obj_4grpc_7_cython_6cygrpc_GrpcCallWrapper __pyx_base;
  struct __pyx_vtabstruct_4grpc_7_cython_6cygrpc_RPCState *__pyx_vtab;
  grpc_call_details details;
  grpc_metadata_array request_metadata;
  struct __pyx_obj_4grpc_7_cython_6cygrpc_AioServer *server;
  int client_closed;
  PyObject *abort_exception;
  int metadata_sent;
  int status_sent;
  grpc_status_code status_code;
  PyObject *status_details;
  PyObject *trailing_metadata;
  PyObject *compression_algorithm;
  int disable_next_compression;
};


/* "src/python/grpcio/grpc/_cython/_cygrpc/aio/server.pxd.pxi":44
 * 
 * 
 * cdef class _ServicerContext:             # <<<<<<<<<<<<<<
 *     cdef RPCState _rpc_state
 *     cdef object _loop  # asyncio.AbstractEventLoop
 */
struct __pyx_obj_4grpc_7_cython_6cygrpc__ServicerContext {
  PyObject_HEAD
  struct __pyx_obj_4grpc_7_cython_6cygrpc_RPCState *_rpc_state;
  PyObject *_loop;
  PyObject *_request_deserializer;
  PyObject *_response_serializer;
};


/* "src/python/grpcio/grpc/_cython/_cygrpc/aio/server.pxd.pxi":51
 * 
 * 
 * cdef class _SyncServicerContext:             # <<<<<<<<<<<<<<
 *     cdef _ServicerContext _context
 *     cdef list _callbacks
 */
struct __pyx_obj_4grpc_7_cython_6cygrpc__SyncServicerContext {
  PyObject_HEAD
  struct __pyx_obj_4grpc_7_cython_6cygrpc__ServicerContext *_context;
  PyObject *_callbacks;
  PyObject *_loop;
};


/* "src/python/grpcio/grpc/_cython/_cygrpc/aio/server.pxd.pxi":57
 * 
 * 
 * cdef class _MessageReceiver:             # <<<<<<<<<<<<<<
 *     cdef _ServicerContext _servicer_context
 *     cdef object _agen
 */
struct __pyx_obj_4grpc_7_cython_6cygrpc__MessageReceiver {
  PyObject_HEAD
  struct __pyx_obj_4grpc_7_cython_6cygrpc__ServicerContext *_servicer_context;
  PyObject *_agen;
};


/* "src/python/grpcio/grpc/_cython/_cygrpc/aio/server.pxd.pxi":70
 * 
 * 
 * cdef class _ConcurrentRpcLimiter:             # <<<<<<<<<<<<<<
 *     cdef int _maximum_concurrent_rpcs
 *     cdef int _active_rpcs
 */
struct __pyx_obj_4grpc_7_cython_6cygrpc__ConcurrentRpcLimiter {
  PyObject_HEAD
  int _maximum_concurrent_rpcs;
  int _active_rpcs;
  PyObject *_active_rpcs_condition;
  PyObject *_loop;
};


/* "src/python/grpcio/grpc/_cython/_cygrpc/aio/server.pxd.pxi":77
 * 
 * 
 * cdef class AioServer:             # <<<<<<<<<<<<<<
 *     cdef Server _server
 *     cdef list _generic_handlers
 */
struct __pyx_obj_4grpc_7_cython_6cygrpc_AioServer {
  PyObject_HEAD
  struct __pyx_vtabstruct_4grpc_7_cython_6cygrpc_AioServer *__pyx_vtab;
  struct __pyx_obj_4grpc_7_cython_6cygrpc_Server *_server;
  PyObject *_generic_handlers;
  enum __pyx_t_4grpc_7_cython_6cygrpc_AioServerStatus _status;
  PyObject *_loop;
  PyObject *_serving_task;
  PyObject *_shutdown_lock;
  PyObject *_shutdown_completed;
  struct __pyx_obj_4grpc_7_cython_6cygrpc_CallbackWrapper *_shutdown_callback_wrapper;
  PyObject *_crash_exception;
  PyObject *_interceptors;
  PyObject *_thread_pool;
  struct __pyx_obj_4grpc_7_cython_6cygrpc__ConcurrentRpcLimiter *_limiter;
};


/* "src/python/grpcio/grpc/_cython/_cygrpc/arguments.pyx.pxi":16
 * 
 * 
 * cdef class _GrpcArgWrapper:             # <<<<<<<<<<<<<<
 * 
 *   cdef grpc_arg arg
 */
struct __pyx_obj_4grpc_7_cython_6cygrpc__GrpcArgWrapper {
  PyObject_HEAD
  grpc_arg arg;
};


/* "src/python/grpcio/grpc/_cython/_cygrpc/credentials.pyx.pxi":371
 *   return LocalChannelCredentials(local_connect_type)
 * 
 * cdef class InsecureChannelCredentials(ChannelCredentials):             # <<<<<<<<<<<<<<
 * 
 *   cdef grpc_channel_credentials *c(self) except *:
 */
struct __pyx_obj_4grpc_7_cython_6cygrpc_InsecureChannelCredentials {
  struct __pyx_obj_4grpc_7_cython_6cygrpc_ChannelCredentials __pyx_base;
};


/* "src/python/grpcio/grpc/_cython/_cygrpc/credentials.pyx.pxi":426
 * 
 * 
 * cdef class ComputeEngineChannelCredentials(ChannelCredentials):             # <<<<<<<<<<<<<<
 *   cdef grpc_channel_credentials* _c_creds
 *   cdef grpc_call_credentials* _call_creds
 */
struct __pyx_obj_4grpc_7_cython_6cygrpc_ComputeEngineChannelCredentials {
  struct __pyx_obj_4grpc_7_cython_6cygrpc_ChannelCredentials __pyx_base;
  grpc_channel_credentials *_c_creds;
  grpc_call_credentials *_call_creds;
};


/* "src/python/grpcio/grpc/_cython/_cygrpc/_hooks.pyx.pxi":28
 *   pass
 * 
 * cdef class CensusContext:             # <<<<<<<<<<<<<<
 *   pass
 * 
 */
struct __pyx_obj_4grpc_7_cython_6cygrpc_CensusContext {
  PyObject_HEAD
};


/* "src/python/grpcio/grpc/_cython/_cygrpc/channel.pyx.pxi":284
 * 
 * 
 * cdef IntegratedCall _integrated_call(             # <<<<<<<<<<<<<<
 *     _ChannelState state, int flags, method, host, object deadline,
 *     object metadata, CallCredentials credentials, operationses_and_user_tags,
 */
struct __pyx_obj_4grpc_7_cython_6cygrpc___pyx_scope_struct____pyx_f_4grpc_7_cython_6cygrpc__integrated_call {
  PyObject_HEAD
  struct __pyx_obj_4grpc_7_cython_6cygrpc__CallState *__pyx_v_call_state;
  struct __pyx_obj_4grpc_7_cython_6cygrpc__ChannelState *__pyx_v_state;
};


/* "src/python/grpcio/grpc/_cython/_cygrpc/channel.pyx.pxi":328
 *     _cancel(self._channel_state, self._call_state, code, details)
 * 
 *   def next_event(self):             # <<<<<<<<<<<<<<
 *     def on_success(tag):
 *       _process_segregated_call_tag(
 */
struct __pyx_obj_4grpc_7_cython_6cygrpc___pyx_scope_struct_1_next_event {
  PyObject_HEAD
  struct __pyx_obj_4grpc_7_cython_6cygrpc_SegregatedCall *__pyx_v_self;
};


/* "src/python/grpcio/grpc/_cython/_cygrpc/channel.pyx.pxi":342
 * 
 * 
 * cdef SegregatedCall _segregated_call(             # <<<<<<<<<<<<<<
 *     _ChannelState state, int flags, method, host, object deadline,
 *     object metadata, CallCredentials credentials, operationses_and_user_tags,
 */
struct __pyx_obj_4grpc_7_cython_6cygrpc___pyx_scope_struct_2___pyx_f_4grpc_7_cython_6cygrpc__segregated_call {
  PyObject_HEAD
  struct __pyx_obj_4grpc_7_cython_6cygrpc__CallState *__pyx_v_call_state;
  struct __pyx_obj_4grpc_7_cython_6cygrpc__ChannelState *__pyx_v_state;
};


/* "src/python/grpcio/grpc/_cython/_cygrpc/channel.pyx.pxi":480
 *         operationses_and_tags, context)
 * 
 *   def next_call_event(self):             # <<<<<<<<<<<<<<
 *     def on_success(tag):
 *       if tag is not None:
 */
struct __pyx_obj_4grpc_7_cython_6cygrpc___pyx_scope_struct_3_next_call_event {
  PyObject_HEAD
  struct __pyx_obj_4grpc_7_cython_6cygrpc_Channel *__pyx_v_self;
};


/* "src/python/grpcio/grpc/_cython/_cygrpc/credentials.pyx.pxi":37
 * 
 * 
 * cdef int _get_metadata(void *state,             # <<<<<<<<<<<<<<
 *                        grpc_auth_metadata_context context,
 *                        grpc_credentials_plugin_metadata_cb cb,
 */
struct __pyx_obj_4grpc_7_cython_6cygrpc___pyx_scope_struct_4___pyx_f_4grpc_7_cython_6cygrpc__get_metadata {
  PyObject_HEAD
  grpc_metadata *__pyx_v_c_metadata;
  grpc_credentials_plugin_metadata_cb __pyx_v_cb;
  size_t __pyx_v_metadata_count;
  void *__pyx_v_user_data;
};


/* "src/python/grpcio/grpc/_cython/_cygrpc/metadata.pyx.pxi":68
 * 
 * 
 * cdef tuple _metadata(grpc_metadata_array *c_metadata_array):             # <<<<<<<<<<<<<<
 *   return tuple(
 *       _metadatum(
 */
struct __pyx_obj_4grpc_7_cython_6cygrpc___pyx_scope_struct_5___pyx_f_4grpc_7_cython_6cygrpc__metadata {
  PyObject_HEAD
  grpc_metadata_array *__pyx_v_c_metadata_array;
};


/* "src/python/grpcio/grpc/_cython/_cygrpc/metadata.pyx.pxi":70
 * cdef tuple _metadata(grpc_metadata_array *c_metadata_array):
 *   return tuple(
 *       _metadatum(             # <<<<<<<<<<<<<<
 *           c_metadata_array.metadata[index].key,
 *           c_metadata_array.metadata[index].value)
 */
struct __pyx_obj_4grpc_7_cython_6cygrpc___pyx_scope_struct_6_genexpr {
  PyObject_HEAD
  struct __pyx_obj_4grpc_7_cython_6cygrpc___pyx_scope_struct_5___pyx_f_4grpc_7_cython_6cygrpc__metadata *__pyx_outer_scope;
  size_t __pyx_v_index;
  size_t __pyx_t_0;
  size_t __pyx_t_1;
  size_t __pyx_t_2;
};


/* "src/python/grpcio/grpc/_cython/_cygrpc/iomgr.pyx.pxi":52
 *   return grpc_sockaddr_get_uri_scheme(&c_addr) == b'ipv4'
 * 
 * cdef grpc_resolved_addresses* tuples_to_resolvaddr(tups):             # <<<<<<<<<<<<<<
 *   cdef grpc_resolved_addresses* addresses
 *   tups_set = set((tup[4][0], tup[4][1]) for tup in tups)
 */
struct __pyx_obj_4grpc_7_cython_6cygrpc___pyx_scope_struct_7___pyx_f_4grpc_7_cython_6cygrpc_tuples_to_resolvaddr {
  PyObject_HEAD
  PyObject *__pyx_v_tups;
};


/* "src/python/grpcio/grpc/_cython/_cygrpc/iomgr.pyx.pxi":54
 * cdef grpc_resolved_addresses* tuples_to_resolvaddr(tups):
 *   cdef grpc_resolved_addresses* addresses
 *   tups_set = set((tup[4][0], tup[4][1]) for tup in tups)             # <<<<<<<<<<<<<<
 *   addresses = <grpc_resolved_addresses*> malloc(sizeof(grpc_resolved_addresses))
 *   addresses.naddrs = len(tups_set)
 */
struct __pyx_obj_4grpc_7_cython_6cygrpc___pyx_scope_struct_8_genexpr {
  PyObject_HEAD
  struct __pyx_obj_4grpc_7_cython_6cygrpc___pyx_scope_struct_7___pyx_f_4grpc_7_cython_6cygrpc_tuples_to_resolvaddr *__pyx_outer_scope;
  PyObject *__pyx_v_tup;
};


/* "src/python/grpcio/grpc/_cython/_cygrpc/thread.pyx.pxi":50
 * if _contextvars_supported():
 *     import contextvars
 *     def _run_with_context(target):             # <<<<<<<<<<<<<<
 *         ctx = contextvars.copy_context()
 *         def _run(*args):
 */
struct __pyx_obj_4grpc_7_cython_6cygrpc___pyx_scope_struct_9__run_with_context {
  PyObject_HEAD
  PyObject *__pyx_v_ctx;
  PyObject *__pyx_v_target;
};


/* "src/python/grpcio/grpc/_cython/_cygrpc/thread.pyx.pxi":56
 *         return _run
 * else:
 *     def _run_with_context(target):             # <<<<<<<<<<<<<<
 *         def _run(*args):
 *             target(*args)
 */
struct __pyx_obj_4grpc_7_cython_6cygrpc___pyx_scope_struct_10__run_with_context {
  PyObject_HEAD
  PyObject *__pyx_v_target;
};


/* "src/python/grpcio/grpc/_cython/_cygrpc/fork_posix.pyx.pxi":100
 * 
 * class ForkManagedThread(object):
 *     def __init__(self, target, args=()):             # <<<<<<<<<<<<<<
 *         if _GRPC_ENABLE_FORK_SUPPORT:
 *             def managed_target(*args):
 */
struct __pyx_obj_4grpc_7_cython_6cygrpc___pyx_scope_struct_11___init__ {
  PyObject_HEAD
  PyObject *__pyx_v_target;
};


/* "src/python/grpcio/grpc/_cython/_cygrpc/aio/common.pyx.pxi":119
 * 
 * 
 * def async_generator_to_generator(object agen, object loop):             # <<<<<<<<<<<<<<
 *     """Converts an async generator into generator."""
 *     try:
 */
struct __pyx_obj_4grpc_7_cython_6cygrpc___pyx_scope_struct_12_async_generator_to_generator {
  PyObject_HEAD
  PyObject *__pyx_v_agen;
  PyObject *__pyx_v_future;
  PyObject *__pyx_v_loop;
  PyObject *__pyx_v_response;
  PyObject *__pyx_t_0;
  PyObject *__pyx_t_1;
  PyObject *__pyx_t_2;
};


/* "src/python/grpcio/grpc/_cython/_cygrpc/aio/common.pyx.pxi":137
 * 
 * 
 * async def generator_to_async_generator(object gen, object loop, object thread_pool):             # <<<<<<<<<<<<<<
 *     """Converts a generator into async generator.
 * 
 */
struct __pyx_obj_4grpc_7_cython_6cygrpc___pyx_scope_struct_13_generator_to_async_generator {
  PyObject_HEAD
  PyObject *__pyx_v_future;
  PyObject *__pyx_v_gen;
  PyObject *__pyx_v_loop;
  PyObject *__pyx_v_queue;
  PyObject *__pyx_v_response;
  PyObject *__pyx_v_thread_pool;
  PyObject *__pyx_v_yield_to_queue;
};


/* "src/python/grpcio/grpc/_cython/_cygrpc/aio/callback_common.pyx.pxi":77
 * 
 * 
 * async def execute_batch(GrpcCallWrapper grpc_call_wrapper,             # <<<<<<<<<<<<<<
 *                                tuple operations,
 *                                object loop):
 */
struct __pyx_obj_4grpc_7_cython_6cygrpc___pyx_scope_struct_14_execute_batch {
  PyObject_HEAD
  struct __pyx_obj_4grpc_7_cython_6cygrpc__BatchOperationTag *__pyx_v_batch_operation_tag;
  grpc_event __pyx_v_c_event;
  grpc_call_error __pyx_v_error;
  PyObject *__pyx_v_future;
  struct __pyx_obj_4grpc_7_cython_6cygrpc_GrpcCallWrapper *__pyx_v_grpc_call_wrapper;
  PyObject *__pyx_v_loop;
  PyObject *__pyx_v_operations;
  struct __pyx_obj_4grpc_7_cython_6cygrpc_CallbackWrapper *__pyx_v_wrapper;
};


/* "src/python/grpcio/grpc/_cython/_cygrpc/aio/callback_common.pyx.pxi":114
 * 
 * 
 * async def _receive_message(GrpcCallWrapper grpc_call_wrapper,             # <<<<<<<<<<<<<<
 *                            object loop):
 *     """Retrives parsed messages from Core.
 */
struct __pyx_obj_4grpc_7_cython_6cygrpc___pyx_scope_struct_15__receive_message {
  PyObject_HEAD
  PyObject *__pyx_v_e;
  struct __pyx_obj_4grpc_7_cython_6cygrpc_GrpcCallWrapper *__pyx_v_grpc_call_wrapper;
  PyObject *__pyx_v_loop;
  PyObject *__pyx_v_ops;
  struct __pyx_obj_4grpc_7_cython_6cygrpc_ReceiveMessageOperation *__pyx_v_receive_op;
  PyObject *__pyx_t_0;
  PyObject *__pyx_t_1;
  PyObject *__pyx_t_2;
};


/* "src/python/grpcio/grpc/_cython/_cygrpc/aio/callback_common.pyx.pxi":138
 * 
 * 
 * async def _send_message(GrpcCallWrapper grpc_call_wrapper,             # <<<<<<<<<<<<<<
 *                         bytes message,
 *                         Operation send_initial_metadata_op,
 */
struct __pyx_obj_4grpc_7_cython_6cygrpc___pyx_scope_struct_16__send_message {
  PyObject_HEAD
  struct __pyx_obj_4grpc_7_cython_6cygrpc_GrpcCallWrapper *__pyx_v_grpc_call_wrapper;
  PyObject *__pyx_v_loop;
  PyObject *__pyx_v_message;
  struct __pyx_obj_4grpc_7_cython_6cygrpc_SendMessageOperation *__pyx_v_op;
  PyObject *__pyx_v_ops;
  struct __pyx_obj_4grpc_7_cython_6cygrpc_Operation *__pyx_v_send_initial_metadata_op;
  int __pyx_v_write_flag;
};


/* "src/python/grpcio/grpc/_cython/_cygrpc/aio/callback_common.pyx.pxi":150
 * 
 * 
 * async def _send_initial_metadata(GrpcCallWrapper grpc_call_wrapper,             # <<<<<<<<<<<<<<
 *                                  tuple metadata,
 *                                  int flags,
 */
struct __pyx_obj_4grpc_7_cython_6cygrpc___pyx_scope_struct_17__send_initial_metadata {
  PyObject_HEAD
  int __pyx_v_flags;
  struct __pyx_obj_4grpc_7_cython_6cygrpc_GrpcCallWrapper *__pyx_v_grpc_call_wrapper;
  PyObject *__pyx_v_loop;
  PyObject *__pyx_v_metadata;
  struct __pyx_obj_4grpc_7_cython_6cygrpc_SendInitialMetadataOperation *__pyx_v_op;
  PyObject *__pyx_v_ops;
};


/* "src/python/grpcio/grpc/_cython/_cygrpc/aio/callback_common.pyx.pxi":161
 * 
 * 
 * async def _receive_initial_metadata(GrpcCallWrapper grpc_call_wrapper,             # <<<<<<<<<<<<<<
 *                                     object loop):
 *     cdef ReceiveInitialMetadataOperation op = ReceiveInitialMetadataOperation(_EMPTY_FLAGS)
 */
struct __pyx_obj_4grpc_7_cython_6cygrpc___pyx_scope_struct_18__receive_initial_metadata {
  PyObject_HEAD
  struct __pyx_obj_4grpc_7_cython_6cygrpc_GrpcCallWrapper *__pyx_v_grpc_call_wrapper;
  PyObject *__pyx_v_loop;
  struct __pyx_obj_4grpc_7_cython_6cygrpc_ReceiveInitialMetadataOperation *__pyx_v_op;
  PyObject *__pyx_v_ops;
};


/* "src/python/grpcio/grpc/_cython/_cygrpc/aio/callback_common.pyx.pxi":168
 *     return op.initial_metadata()
 * 
 * async def _send_error_status_from_server(GrpcCallWrapper grpc_call_wrapper,             # <<<<<<<<<<<<<<
 *                                          grpc_status_code code,
 *                                          str details,
 */
struct __pyx_obj_4grpc_7_cython_6cygrpc___pyx_scope_struct_19__send_error_status_from_server {
  PyObject_HEAD
  grpc_status_code __pyx_v_code;
  PyObject *__pyx_v_details;
  struct __pyx_obj_4grpc_7_cython_6cygrpc_GrpcCallWrapper *__pyx_v_grpc_call_wrapper;
  PyObject *__pyx_v_loop;
  struct __pyx_obj_4grpc_7_cython_6cygrpc_SendStatusFromServerOperation *__pyx_v_op;
  PyObject *__pyx_v_ops;
  struct __pyx_obj_4grpc_7_cython_6cygrpc_Operation *__pyx_v_send_initial_metadata_op;
  PyObject *__pyx_v_trailing_metadata;
};


/* "src/python/grpcio/grpc/_cython/_cygrpc/aio/call.pyx.pxi":235
 *         return self._status.code() == StatusCode.cancelled
 * 
 *     async def status(self):             # <<<<<<<<<<<<<<
 *         """Returns the status of the RPC call.
 * 
 */
struct __pyx_obj_4grpc_7_cython_6cygrpc___pyx_scope_struct_20_status {
  PyObject_HEAD
  PyObject *__pyx_v_future;
  struct __pyx_obj_4grpc_7_cython_6cygrpc__AioCall *__pyx_v_self;
};


/* "src/python/grpcio/grpc/_cython/_cygrpc/aio/call.pyx.pxi":258
 *         return self.done() and self._status.code() == StatusCode.ok
 * 
 *     async def initial_metadata(self):             # <<<<<<<<<<<<<<
 *         """Returns the initial metadata of the RPC call.
 * 
 */
struct __pyx_obj_4grpc_7_cython_6cygrpc___pyx_scope_struct_21_initial_metadata {
  PyObject_HEAD
  PyObject *__pyx_v_future;
  struct __pyx_obj_4grpc_7_cython_6cygrpc__AioCall *__pyx_v_self;
};


/* "src/python/grpcio/grpc/_cython/_cygrpc/aio/call.pyx.pxi":288
 *         return False
 * 
 *     async def unary_unary(self,             # <<<<<<<<<<<<<<
 *                           bytes request,
 *                           tuple outbound_initial_metadata):
 */
struct __pyx_obj_4grpc_7_cython_6cygrpc___pyx_scope_struct_22_unary_unary {
  PyObject_HEAD
  grpc_status_code __pyx_v_code;
  struct __pyx_obj_4grpc_7_cython_6cygrpc_SendInitialMetadataOperation *__pyx_v_initial_metadata_op;
  PyObject *__pyx_v_ops;
  PyObject *__pyx_v_outbound_initial_metadata;
  struct __pyx_obj_4grpc_7_cython_6cygrpc_ReceiveInitialMetadataOperation *__pyx_v_receive_initial_metadata_op;
  struct __pyx_obj_4grpc_7_cython_6cygrpc_ReceiveMessageOperation *__pyx_v_receive_message_op;
  struct __pyx_obj_4grpc_7_cython_6cygrpc_ReceiveStatusOnClientOperation *__pyx_v_receive_status_on_client_op;
  PyObject *__pyx_v_request;
  struct __pyx_obj_4grpc_7_cython_6cygrpc__AioCall *__pyx_v_self;
  struct __pyx_obj_4grpc_7_cython_6cygrpc_SendCloseFromClientOperation *__pyx_v_send_close_op;
  struct __pyx_obj_4grpc_7_cython_6cygrpc_SendMessageOperation *__pyx_v_send_message_op;
};


/* "src/python/grpcio/grpc/_cython/_cygrpc/aio/call.pyx.pxi":335
 *             return None
 * 
 *     async def _handle_status_once_received(self):             # <<<<<<<<<<<<<<
 *         """Handles the status sent by peer once received."""
 *         cdef ReceiveStatusOnClientOperation op = ReceiveStatusOnClientOperation(_EMPTY_FLAGS)
 */
struct __pyx_obj_4grpc_7_cython_6cygrpc___pyx_scope_struct_23__handle_status_once_received {
  PyObject_HEAD
  struct __pyx_obj_4grpc_7_cython_6cygrpc_ReceiveStatusOnClientOperation *__pyx_v_op;
  PyObject *__pyx_v_ops;
  struct __pyx_obj_4grpc_7_cython_6cygrpc__AioCall *__pyx_v_self;
};


/* "src/python/grpcio/grpc/_cython/_cygrpc/aio/call.pyx.pxi":352
 *         ))
 * 
 *     async def receive_serialized_message(self):             # <<<<<<<<<<<<<<
 *         """Receives one single raw message in bytes."""
 *         cdef bytes received_message
 */
struct __pyx_obj_4grpc_7_cython_6cygrpc___pyx_scope_struct_24_receive_serialized_message {
  PyObject_HEAD
  PyObject *__pyx_v_received_message;
  struct __pyx_obj_4grpc_7_cython_6cygrpc__AioCall *__pyx_v_self;
};


/* "src/python/grpcio/grpc/_cython/_cygrpc/aio/call.pyx.pxi":369
 *             return EOF
 * 
 *     async def send_serialized_message(self, bytes message):             # <<<<<<<<<<<<<<
 *         """Sends one single raw message in bytes."""
 *         await _send_message(self,
 */
struct __pyx_obj_4grpc_7_cython_6cygrpc___pyx_scope_struct_25_send_serialized_message {
  PyObject_HEAD
  PyObject *__pyx_v_message;
  struct __pyx_obj_4grpc_7_cython_6cygrpc__AioCall *__pyx_v_self;
};


/* "src/python/grpcio/grpc/_cython/_cygrpc/aio/call.pyx.pxi":377
 *                             self._loop)
 * 
 *     async def send_receive_close(self):             # <<<<<<<<<<<<<<
 *         """Half close the RPC on the client-side."""
 *         cdef SendCloseFromClientOperation op = SendCloseFromClientOperation(_EMPTY_FLAGS)
 */
struct __pyx_obj_4grpc_7_cython_6cygrpc___pyx_scope_struct_26_send_receive_close {
  PyObject_HEAD
  struct __pyx_obj_4grpc_7_cython_6cygrpc_SendCloseFromClientOperation *__pyx_v_op;
  PyObject *__pyx_v_ops;
  struct __pyx_obj_4grpc_7_cython_6cygrpc__AioCall *__pyx_v_self;
};


/* "src/python/grpcio/grpc/_cython/_cygrpc/aio/call.pyx.pxi":383
 *         await execute_batch(self, ops, self._loop)
 * 
 *     async def initiate_unary_stream(self,             # <<<<<<<<<<<<<<
 *                            bytes request,
 *                            tuple outbound_initial_metadata):
 */
struct __pyx_obj_4grpc_7_cython_6cygrpc___pyx_scope_struct_27_initiate_unary_stream {
  PyObject_HEAD
  PyObject *__pyx_v_batch_error;
  struct __pyx_obj_4grpc_7_cython_6cygrpc_Operation *__pyx_v_initial_metadata_op;
  PyObject *__pyx_v_outbound_initial_metadata;
  PyObject *__pyx_v_outbound_ops;
  PyObject *__pyx_v_request;
  struct __pyx_obj_4grpc_7_cython_6cygrpc__AioCall *__pyx_v_self;
  struct __pyx_obj_4grpc_7_cython_6cygrpc_Operation *__pyx_v_send_close_op;
  struct __pyx_obj_4grpc_7_cython_6cygrpc_Operation *__pyx_v_send_message_op;
  PyObject *__pyx_v_status_task;
  PyObject *__pyx_t_0;
  PyObject *__pyx_t_1;
  PyObject *__pyx_t_2;
  PyObject *__pyx_t_3;
  PyObject *__pyx_t_4;
  PyObject *__pyx_t_5;
};


/* "src/python/grpcio/grpc/_cython/_cygrpc/aio/call.pyx.pxi":422
 *             await status_task
 * 
 *     async def stream_unary(self,             # <<<<<<<<<<<<<<
 *                            tuple outbound_initial_metadata,
 *                            object metadata_sent_observer):
 */
struct __pyx_obj_4grpc_7_cython_6cygrpc___pyx_scope_struct_28_stream_unary {
  PyObject_HEAD
  grpc_status_code __pyx_v_code;
  PyObject *__pyx_v_inbound_ops;
  PyObject *__pyx_v_metadata_sent_observer;
  PyObject *__pyx_v_outbound_initial_metadata;
  struct __pyx_obj_4grpc_7_cython_6cygrpc_ReceiveMessageOperation *__pyx_v_receive_message_op;
  struct __pyx_obj_4grpc_7_cython_6cygrpc_ReceiveStatusOnClientOperation *__pyx_v_receive_status_on_client_op;
  struct __pyx_obj_4grpc_7_cython_6cygrpc__AioCall *__pyx_v_self;
  PyObject *__pyx_t_0;
  PyObject *__pyx_t_1;
  PyObject *__pyx_t_2;
  PyObject *__pyx_t_3;
  PyObject *__pyx_t_4;
  PyObject *__pyx_t_5;
};


/* "src/python/grpcio/grpc/_cython/_cygrpc/aio/call.pyx.pxi":477
 *             return None
 * 
 *     async def initiate_stream_stream(self,             # <<<<<<<<<<<<<<
 *                            tuple outbound_initial_metadata,
 *                            object metadata_sent_observer):
 */
struct __pyx_obj_4grpc_7_cython_6cygrpc___pyx_scope_struct_29_initiate_stream_stream {
  PyObject_HEAD
  PyObject *__pyx_v_batch_error;
  PyObject *__pyx_v_metadata_sent_observer;
  PyObject *__pyx_v_outbound_initial_metadata;
  struct __pyx_obj_4grpc_7_cython_6cygrpc__AioCall *__pyx_v_self;
  PyObject *__pyx_v_status_task;
  PyObject *__pyx_t_0;
  PyObject *__pyx_t_1;
  PyObject *__pyx_t_2;
  PyObject *__pyx_t_3;
  PyObject *__pyx_t_4;
  PyObject *__pyx_t_5;
};


/* "src/python/grpcio/grpc/_cython/_cygrpc/aio/channel.pyx.pxi":70
 *             )
 * 
 *     async def watch_connectivity_state(self,             # <<<<<<<<<<<<<<
 *                                        grpc_connectivity_state last_observed_state,
 *                                        object deadline):
 */
struct __pyx_obj_4grpc_7_cython_6cygrpc___pyx_scope_struct_30_watch_connectivity_state {
  PyObject_HEAD
  gpr_timespec __pyx_v_c_deadline;
  PyObject *__pyx_v_deadline;
  PyObject *__pyx_v_future;
  grpc_connectivity_state __pyx_v_last_observed_state;
  struct __pyx_obj_4grpc_7_cython_6cygrpc_AioChannel *__pyx_v_self;
  struct __pyx_obj_4grpc_7_cython_6cygrpc_CallbackWrapper *__pyx_v_wrapper;
  PyObject *__pyx_t_0;
  PyObject *__pyx_t_1;
  PyObject *__pyx_t_2;
};


/* "src/python/grpcio/grpc/_cython/_cygrpc/aio/server.pyx.pxi":125
 *         self._loop = loop
 * 
 *     async def read(self):             # <<<<<<<<<<<<<<
 *         cdef bytes raw_message
 *         self._rpc_state.raise_for_termination()
 */
struct __pyx_obj_4grpc_7_cython_6cygrpc___pyx_scope_struct_31_read {
  PyObject_HEAD
  PyObject *__pyx_v_raw_message;
  struct __pyx_obj_4grpc_7_cython_6cygrpc__ServicerContext *__pyx_v_self;
};


/* "src/python/grpcio/grpc/_cython/_cygrpc/aio/server.pyx.pxi":138
 *                             raw_message)
 * 
 *     async def write(self, object message):             # <<<<<<<<<<<<<<
 *         self._rpc_state.raise_for_termination()
 * 
 */
struct __pyx_obj_4grpc_7_cython_6cygrpc___pyx_scope_struct_32_write {
  PyObject_HEAD
  PyObject *__pyx_v_message;
  struct __pyx_obj_4grpc_7_cython_6cygrpc__ServicerContext *__pyx_v_self;
};


/* "src/python/grpcio/grpc/_cython/_cygrpc/aio/server.pyx.pxi":148
 *         self._rpc_state.metadata_sent = True
 * 
 *     async def send_initial_metadata(self, object metadata):             # <<<<<<<<<<<<<<
 *         self._rpc_state.raise_for_termination()
 * 
 */
struct __pyx_obj_4grpc_7_cython_6cygrpc___pyx_scope_struct_33_send_initial_metadata {
  PyObject_HEAD
  PyObject *__pyx_v_metadata;
  struct __pyx_obj_4grpc_7_cython_6cygrpc__ServicerContext *__pyx_v_self;
};


/* "src/python/grpcio/grpc/_cython/_cygrpc/aio/server.pyx.pxi":162
 *             self._rpc_state.metadata_sent = True
 * 
 *     async def abort(self,             # <<<<<<<<<<<<<<
 *               object code,
 *               str details='',
 */
struct __pyx_obj_4grpc_7_cython_6cygrpc___pyx_scope_struct_34_abort {
  PyObject_HEAD
  grpc_status_code __pyx_v_actual_code;
  PyObject *__pyx_v_code;
  PyObject *__pyx_v_details;
  struct __pyx_obj_4grpc_7_cython_6cygrpc__ServicerContext *__pyx_v_self;
  PyObject *__pyx_v_trailing_metadata;
};


/* "src/python/grpcio/grpc/_cython/_cygrpc/aio/server.pyx.pxi":194
 *             raise self._rpc_state.abort_exception
 * 
 *     async def abort_with_status(self, object status):             # <<<<<<<<<<<<<<
 *         await self.abort(status.code, status.details, status.trailing_metadata)
 * 
 */
struct __pyx_obj_4grpc_7_cython_6cygrpc___pyx_scope_struct_35_abort_with_status {
  PyObject_HEAD
  struct __pyx_obj_4grpc_7_cython_6cygrpc__ServicerContext *__pyx_v_self;
  PyObject *__pyx_v_status;
};


/* "src/python/grpcio/grpc/_cython/_cygrpc/aio/server.pyx.pxi":333
 * 
 * 
 * async def _run_interceptor(object interceptors, object query_handler,             # <<<<<<<<<<<<<<
 *                            object handler_call_details):
 *     interceptor = next(interceptors, None)
 */
struct __pyx_obj_4grpc_7_cython_6cygrpc___pyx_scope_struct_36__run_interceptor {
  PyObject_HEAD
  PyObject *__pyx_v_continuation;
  PyObject *__pyx_v_handler_call_details;
  PyObject *__pyx_v_interceptor;
  PyObject *__pyx_v_interceptors;
  PyObject *__pyx_v_query_handler;
};


/* "src/python/grpcio/grpc/_cython/_cygrpc/aio/server.pyx.pxi":349
 * 
 * 
 * async def _find_method_handler(str method, tuple metadata, list generic_handlers,             # <<<<<<<<<<<<<<
 *                           tuple interceptors):
 *     def query_handlers(handler_call_details):
 */
struct __pyx_obj_4grpc_7_cython_6cygrpc___pyx_scope_struct_37__find_method_handler {
  PyObject_HEAD
  PyObject *__pyx_v_generic_handlers;
  struct __pyx_obj_4grpc_7_cython_6cygrpc__HandlerCallDetails *__pyx_v_handler_call_details;
  PyObject *__pyx_v_interceptors;
  PyObject *__pyx_v_metadata;
  PyObject *__pyx_v_method;
  PyObject *__pyx_v_query_handlers;
};


/* "src/python/grpcio/grpc/_cython/_cygrpc/aio/server.pyx.pxi":368
 * 
 * 
 * async def _finish_handler_with_unary_response(RPCState rpc_state,             # <<<<<<<<<<<<<<
 *                                               object unary_handler,
 *                                               object request,
 */
struct __pyx_obj_4grpc_7_cython_6cygrpc___pyx_scope_struct_38__finish_handler_with_unary_response {
  PyObject_HEAD
  PyObject *__pyx_v_callback;
  PyObject *__pyx_v_finish_ops;
  PyObject *__pyx_v_loop;
  PyObject *__pyx_v_request;
  PyObject *__pyx_v_response_message;
  PyObject *__pyx_v_response_raw;
  PyObject *__pyx_v_response_serializer;
  struct __pyx_obj_4grpc_7_cython_6cygrpc_RPCState *__pyx_v_rpc_state;
  struct __pyx_obj_4grpc_7_cython_6cygrpc__ServicerContext *__pyx_v_servicer_context;
  struct __pyx_obj_4grpc_7_cython_6cygrpc__SyncServicerContext *__pyx_v_sync_servicer_context;
  PyObject *__pyx_v_unary_handler;
};


/* "src/python/grpcio/grpc/_cython/_cygrpc/aio/server.pyx.pxi":437
 * 
 * 
 * async def _finish_handler_with_stream_responses(RPCState rpc_state,             # <<<<<<<<<<<<<<
 *                                                 object stream_handler,
 *                                                 object request,
 */
struct __pyx_obj_4grpc_7_cython_6cygrpc___pyx_scope_struct_39__finish_handler_with_stream_responses {
  PyObject_HEAD
  PyObject *__pyx_v_async_response_generator;
  PyObject *__pyx_v_finish_ops;
  PyObject *__pyx_v_gen;
  PyObject *__pyx_v_loop;
  struct __pyx_obj_4grpc_7_cython_6cygrpc_SendStatusFromServerOperation *__pyx_v_op;
  PyObject *__pyx_v_request;
  PyObject *__pyx_v_response_message;
  struct __pyx_obj_4grpc_7_cython_6cygrpc_RPCState *__pyx_v_rpc_state;
  struct __pyx_obj_4grpc_7_cython_6cygrpc__ServicerContext *__pyx_v_servicer_context;
  PyObject *__pyx_v_stream_handler;
  struct __pyx_obj_4grpc_7_cython_6cygrpc__SyncServicerContext *__pyx_v_sync_servicer_context;
  PyObject *__pyx_t_0;
};


/* "src/python/grpcio/grpc/_cython/_cygrpc/aio/server.pyx.pxi":505
 * 
 * 
 * async def _handle_unary_unary_rpc(object method_handler,             # <<<<<<<<<<<<<<
 *                                   RPCState rpc_state,
 *                                   object loop):
 */
struct __pyx_obj_4grpc_7_cython_6cygrpc___pyx_scope_struct_40__handle_unary_unary_rpc {
  PyObject_HEAD
  PyObject *__pyx_v_loop;
  PyObject *__pyx_v_method_handler;
  PyObject *__pyx_v_request_message;
  PyObject *__pyx_v_request_raw;
  struct __pyx_obj_4grpc_7_cython_6cygrpc_RPCState *__pyx_v_rpc_state;
  struct __pyx_obj_4grpc_7_cython_6cygrpc__ServicerContext *__pyx_v_servicer_context;
};


/* "src/python/grpcio/grpc/_cython/_cygrpc/aio/server.pyx.pxi":539
 * 
 * 
 * async def _handle_unary_stream_rpc(object method_handler,             # <<<<<<<<<<<<<<
 *                                    RPCState rpc_state,
 *                                    object loop):
 */
struct __pyx_obj_4grpc_7_cython_6cygrpc___pyx_scope_struct_41__handle_unary_stream_rpc {
  PyObject_HEAD
  PyObject *__pyx_v_loop;
  PyObject *__pyx_v_method_handler;
  PyObject *__pyx_v_request_message;
  PyObject *__pyx_v_request_raw;
  struct __pyx_obj_4grpc_7_cython_6cygrpc_RPCState *__pyx_v_rpc_state;
  struct __pyx_obj_4grpc_7_cython_6cygrpc__ServicerContext *__pyx_v_servicer_context;
};


/* "src/python/grpcio/grpc/_cython/_cygrpc/aio/server.pyx.pxi":578
 *         self._agen = None
 * 
 *     async def _async_message_receiver(self):             # <<<<<<<<<<<<<<
 *         """An async generator that receives messages."""
 *         cdef object message
 */
struct __pyx_obj_4grpc_7_cython_6cygrpc___pyx_scope_struct_42__async_message_receiver {
  PyObject_HEAD
  PyObject *__pyx_v_message;
  struct __pyx_obj_4grpc_7_cython_6cygrpc__MessageReceiver *__pyx_v_self;
};


/* "src/python/grpcio/grpc/_cython/_cygrpc/aio/server.pyx.pxi":594
 *         return self._agen
 * 
 *     async def __anext__(self):             # <<<<<<<<<<<<<<
 *         return await self.__aiter__().__anext__()
 * 
 */
struct __pyx_obj_4grpc_7_cython_6cygrpc___pyx_scope_struct_43___anext__ {
  PyObject_HEAD
  struct __pyx_obj_4grpc_7_cython_6cygrpc__MessageReceiver *__pyx_v_self;
};


/* "src/python/grpcio/grpc/_cython/_cygrpc/aio/server.pyx.pxi":598
 * 
 * 
 * async def _handle_stream_unary_rpc(object method_handler,             # <<<<<<<<<<<<<<
 *                                    RPCState rpc_state,
 *                                    object loop):
 */
struct __pyx_obj_4grpc_7_cython_6cygrpc___pyx_scope_struct_44__handle_stream_unary_rpc {
  PyObject_HEAD
  PyObject *__pyx_v_loop;
  PyObject *__pyx_v_method_handler;
  PyObject *__pyx_v_request_iterator;
  struct __pyx_obj_4grpc_7_cython_6cygrpc_RPCState *__pyx_v_rpc_state;
  struct __pyx_obj_4grpc_7_cython_6cygrpc__ServicerContext *__pyx_v_servicer_context;
};


/* "src/python/grpcio/grpc/_cython/_cygrpc/aio/server.pyx.pxi":630
 * 
 * 
 * async def _handle_stream_stream_rpc(object method_handler,             # <<<<<<<<<<<<<<
 *                                     RPCState rpc_state,
 *                                     object loop):
 */
struct __pyx_obj_4grpc_7_cython_6cygrpc___pyx_scope_struct_45__handle_stream_stream_rpc {
  PyObject_HEAD
  PyObject *__pyx_v_loop;
  PyObject *__pyx_v_method_handler;
  PyObject *__pyx_v_request_iterator;
  struct __pyx_obj_4grpc_7_cython_6cygrpc_RPCState *__pyx_v_rpc_state;
  struct __pyx_obj_4grpc_7_cython_6cygrpc__ServicerContext *__pyx_v_servicer_context;
};


/* "src/python/grpcio/grpc/_cython/_cygrpc/aio/server.pyx.pxi":661
 * 
 * 
 * async def _handle_exceptions(RPCState rpc_state, object rpc_coro, object loop):             # <<<<<<<<<<<<<<
 *     try:
 *         try:
 */
struct __pyx_obj_4grpc_7_cython_6cygrpc___pyx_scope_struct_46__handle_exceptions {
  PyObject_HEAD
  PyObject *__pyx_v_e;
  PyObject *__pyx_v_loop;
  PyObject *__pyx_v_rpc_coro;
  struct __pyx_obj_4grpc_7_cython_6cygrpc_RPCState *__pyx_v_rpc_state;
  PyObject *__pyx_v_status_code;
  PyObject *__pyx_t_0;
  PyObject *__pyx_t_1;
  PyObject *__pyx_t_2;
  PyObject *__pyx_t_3;
  PyObject *__pyx_t_4;
  PyObject *__pyx_t_5;
};


/* "src/python/grpcio/grpc/_cython/_cygrpc/aio/server.pyx.pxi":710
 * 
 * 
 * async def _handle_cancellation_from_core(object rpc_task,             # <<<<<<<<<<<<<<
 *                                          RPCState rpc_state,
 *                                          object loop):
 */
struct __pyx_obj_4grpc_7_cython_6cygrpc___pyx_scope_struct_47__handle_cancellation_from_core {
  PyObject_HEAD
  PyObject *__pyx_v_loop;
  struct __pyx_obj_4grpc_7_cython_6cygrpc_ReceiveCloseOnServerOperation *__pyx_v_op;
  PyObject *__pyx_v_ops;
  struct __pyx_obj_4grpc_7_cython_6cygrpc_RPCState *__pyx_v_rpc_state;
  PyObject *__pyx_v_rpc_task;
};


/* "src/python/grpcio/grpc/_cython/_cygrpc/aio/server.pyx.pxi":727
 * 
 * 
 * async def _schedule_rpc_coro(object rpc_coro,             # <<<<<<<<<<<<<<
 *                              RPCState rpc_state,
 *                              object loop):
 */
struct __pyx_obj_4grpc_7_cython_6cygrpc___pyx_scope_struct_48__schedule_rpc_coro {
  PyObject_HEAD
  PyObject *__pyx_v_loop;
  PyObject *__pyx_v_rpc_coro;
  struct __pyx_obj_4grpc_7_cython_6cygrpc_RPCState *__pyx_v_rpc_state;
  PyObject *__pyx_v_rpc_task;
};


/* "src/python/grpcio/grpc/_cython/_cygrpc/aio/server.pyx.pxi":739
 * 
 * 
 * async def _handle_rpc(list generic_handlers, tuple interceptors,             # <<<<<<<<<<<<<<
 *                       RPCState rpc_state, object loop):
 *     cdef object method_handler
 */
struct __pyx_obj_4grpc_7_cython_6cygrpc___pyx_scope_struct_49__handle_rpc {
  PyObject_HEAD
  PyObject *__pyx_v_generic_handlers;
  PyObject *__pyx_v_interceptors;
  PyObject *__pyx_v_loop;
  PyObject *__pyx_v_method_handler;
  struct __pyx_obj_4grpc_7_cython_6cygrpc_RPCState *__pyx_v_rpc_state;
};


/* "src/python/grpcio/grpc/_cython/_cygrpc/aio/server.pyx.pxi":812
 *         self._loop = loop
 * 
 *     async def check_before_request_call(self):             # <<<<<<<<<<<<<<
 *         await self._active_rpcs_condition.acquire()
 *         try:
 */
struct __pyx_obj_4grpc_7_cython_6cygrpc___pyx_scope_struct_50_check_before_request_call {
  PyObject_HEAD
  PyObject *__pyx_v_predicate;
  struct __pyx_obj_4grpc_7_cython_6cygrpc__ConcurrentRpcLimiter *__pyx_v_self;
};


/* "src/python/grpcio/grpc/_cython/_cygrpc/aio/server.pyx.pxi":821
 *             self._active_rpcs_condition.release()
 * 
 *     async def _decrease_active_rpcs_count_with_lock(self):             # <<<<<<<<<<<<<<
 *         await self._active_rpcs_condition.acquire()
 *         try:
 */
struct __pyx_obj_4grpc_7_cython_6cygrpc___pyx_scope_struct_51__decrease_active_rpcs_count_with_lock {
  PyObject_HEAD
  struct __pyx_obj_4grpc_7_cython_6cygrpc__ConcurrentRpcLimiter *__pyx_v_self;
};


/* "src/python/grpcio/grpc/_cython/_cygrpc/aio/server.pyx.pxi":885
 *                                            server_credentials._credentials)
 * 
 *     async def _request_call(self):             # <<<<<<<<<<<<<<
 *         cdef grpc_call_error error
 *         cdef RPCState rpc_state = RPCState(self)
 */
struct __pyx_obj_4grpc_7_cython_6cygrpc___pyx_scope_struct_52__request_call {
  PyObject_HEAD
  grpc_call_error __pyx_v_error;
  PyObject *__pyx_v_future;
  struct __pyx_obj_4grpc_7_cython_6cygrpc_RPCState *__pyx_v_rpc_state;
  struct __pyx_obj_4grpc_7_cython_6cygrpc_AioServer *__pyx_v_self;
  struct __pyx_obj_4grpc_7_cython_6cygrpc_CallbackWrapper *__pyx_v_wrapper;
};


/* "src/python/grpcio/grpc/_cython/_cygrpc/aio/server.pyx.pxi":905
 *         return rpc_state
 * 
 *     async def _server_main_loop(self,             # <<<<<<<<<<<<<<
 *                                 object server_started):
 *         self._server.start(backup_queue=False)
 */
struct __pyx_obj_4grpc_7_cython_6cygrpc___pyx_scope_struct_53__server_main_loop {
  PyObject_HEAD
  PyObject *__pyx_v_rpc_coro;
  struct __pyx_obj_4grpc_7_cython_6cygrpc_RPCState *__pyx_v_rpc_state;
  PyObject *__pyx_v_rpc_task;
  struct __pyx_obj_4grpc_7_cython_6cygrpc_AioServer *__pyx_v_self;
  PyObject *__pyx_v_server_started;
};


/* "src/python/grpcio/grpc/_cython/_cygrpc/aio/server.pyx.pxi":955
 *             self._loop.create_task(self.shutdown(None))
 * 
 *     async def start(self):             # <<<<<<<<<<<<<<
 *         if self._status == AIO_SERVER_STATUS_RUNNING:
 *             return
 */
struct __pyx_obj_4grpc_7_cython_6cygrpc___pyx_scope_struct_54_start {
  PyObject_HEAD
  struct __pyx_obj_4grpc_7_cython_6cygrpc_AioServer *__pyx_v_self;
  PyObject *__pyx_v_server_started;
};


/* "src/python/grpcio/grpc/_cython/_cygrpc/aio/server.pyx.pxi":969
 *         await server_started
 * 
 *     async def _start_shutting_down(self):             # <<<<<<<<<<<<<<
 *         """Prepares the server to shutting down.
 * 
 */
struct __pyx_obj_4grpc_7_cython_6cygrpc___pyx_scope_struct_55__start_shutting_down {
  PyObject_HEAD
  struct __pyx_obj_4grpc_7_cython_6cygrpc_AioServer *__pyx_v_self;
  PyObject *__pyx_t_0;
  PyObject *__pyx_t_1;
  PyObject *__pyx_t_2;
};


/* "src/python/grpcio/grpc/_cython/_cygrpc/aio/server.pyx.pxi":986
 *             pass
 * 
 *     async def shutdown(self, grace):             # <<<<<<<<<<<<<<
 *         """Gracefully shutdown the Core server.
 * 
 */
struct __pyx_obj_4grpc_7_cython_6cygrpc___pyx_scope_struct_56_shutdown {
  PyObject_HEAD
  PyObject *__pyx_v_grace;
  struct __pyx_obj_4grpc_7_cython_6cygrpc_AioServer *__pyx_v_self;
  PyObject *__pyx_t_0;
  PyObject *__pyx_t_1;
  PyObject *__pyx_t_2;
  PyObject *__pyx_t_3;
  PyObject *__pyx_t_4;
  PyObject *__pyx_t_5;
  PyObject *__pyx_t_6;
  PyObject *__pyx_t_7;
};


/* "src/python/grpcio/grpc/_cython/_cygrpc/aio/server.pyx.pxi":1030
 *                 self._status = AIO_SERVER_STATUS_STOPPED
 * 
 *     async def wait_for_termination(self, object timeout):             # <<<<<<<<<<<<<<
 *         if timeout is None:
 *             await self._shutdown_completed
 */
struct __pyx_obj_4grpc_7_cython_6cygrpc___pyx_scope_struct_57_wait_for_termination {
  PyObject_HEAD
  struct __pyx_obj_4grpc_7_cython_6cygrpc_AioServer *__pyx_v_self;
  PyObject *__pyx_v_timeout;
  PyObject *__pyx_t_0;
  PyObject *__pyx_t_1;
  PyObject *__pyx_t_2;
};



/* "src/python/grpcio/grpc/_cython/_cygrpc/arguments.pyx.pxi":32
 * 
 * 
 * cdef class _ChannelArg:             # <<<<<<<<<<<<<<
 * 
 *   cdef void c(self, argument, references) except *:
 */

struct __pyx_vtabstruct_4grpc_7_cython_6cygrpc__ChannelArg {
  void (*c)(struct __pyx_obj_4grpc_7_cython_6cygrpc__ChannelArg *, PyObject *, PyObject *);
};
static struct __pyx_vtabstruct_4grpc_7_cython_6cygrpc__ChannelArg *__pyx_vtabptr_4grpc_7_cython_6cygrpc__ChannelArg;


/* "src/python/grpcio/grpc/_cython/_cygrpc/arguments.pyx.pxi":64
 * 
 * 
 * cdef class _ChannelArgs:             # <<<<<<<<<<<<<<
 * 
 *   def __cinit__(self, arguments):
 */

struct __pyx_vtabstruct_4grpc_7_cython_6cygrpc__ChannelArgs {
  grpc_channel_args *(*c_args)(struct __pyx_obj_4grpc_7_cython_6cygrpc__ChannelArgs *);
};
static struct __pyx_vtabstruct_4grpc_7_cython_6cygrpc__ChannelArgs *__pyx_vtabptr_4grpc_7_cython_6cygrpc__ChannelArgs;


/* "src/python/grpcio/grpc/_cython/_cygrpc/credentials.pyx.pxi":31
 * 
 * 
 * cdef class CallCredentials:             # <<<<<<<<<<<<<<
 * 
 *   cdef grpc_call_credentials *c(self) except *:
 */

struct __pyx_vtabstruct_4grpc_7_cython_6cygrpc_CallCredentials {
  grpc_call_credentials *(*c)(struct __pyx_obj_4grpc_7_cython_6cygrpc_CallCredentials *);
};
static struct __pyx_vtabstruct_4grpc_7_cython_6cygrpc_CallCredentials *__pyx_vtabptr_4grpc_7_cython_6cygrpc_CallCredentials;


/* "src/python/grpcio/grpc/_cython/_cygrpc/credentials.pyx.pxi":73
 * 
 * 
 * cdef class MetadataPluginCallCredentials(CallCredentials):             # <<<<<<<<<<<<<<
 * 
 *   def __cinit__(self, metadata_plugin, name):
 */

struct __pyx_vtabstruct_4grpc_7_cython_6cygrpc_MetadataPluginCallCredentials {
  struct __pyx_vtabstruct_4grpc_7_cython_6cygrpc_CallCredentials __pyx_base;
};
static struct __pyx_vtabstruct_4grpc_7_cython_6cygrpc_MetadataPluginCallCredentials *__pyx_vtabptr_4grpc_7_cython_6cygrpc_MetadataPluginCallCredentials;


/* "src/python/grpcio/grpc/_cython/_cygrpc/credentials.pyx.pxi":109
 * 
 * 
 * cdef class CompositeCallCredentials(CallCredentials):             # <<<<<<<<<<<<<<
 * 
 *   def __cinit__(self, call_credentialses):
 */

struct __pyx_vtabstruct_4grpc_7_cython_6cygrpc_CompositeCallCredentials {
  struct __pyx_vtabstruct_4grpc_7_cython_6cygrpc_CallCredentials __pyx_base;
};
static struct __pyx_vtabstruct_4grpc_7_cython_6cygrpc_CompositeCallCredentials *__pyx_vtabptr_4grpc_7_cython_6cygrpc_CompositeCallCredentials;


/* "src/python/grpcio/grpc/_cython/_cygrpc/credentials.pyx.pxi":118
 * 
 * 
 * cdef class ChannelCredentials:             # <<<<<<<<<<<<<<
 * 
 *   cdef grpc_channel_credentials *c(self) except *:
 */

struct __pyx_vtabstruct_4grpc_7_cython_6cygrpc_ChannelCredentials {
  grpc_channel_credentials *(*c)(struct __pyx_obj_4grpc_7_cython_6cygrpc_ChannelCredentials *);
};
static struct __pyx_vtabstruct_4grpc_7_cython_6cygrpc_ChannelCredentials *__pyx_vtabptr_4grpc_7_cython_6cygrpc_ChannelCredentials;


/* "src/python/grpcio/grpc/_cython/_cygrpc/credentials.pyx.pxi":139
 * 
 * 
 * cdef class SSLChannelCredentials(ChannelCredentials):             # <<<<<<<<<<<<<<
 * 
 *   def __cinit__(self, pem_root_certificates, private_key, certificate_chain):
 */

struct __pyx_vtabstruct_4grpc_7_cython_6cygrpc_SSLChannelCredentials {
  struct __pyx_vtabstruct_4grpc_7_cython_6cygrpc_ChannelCredentials __pyx_base;
};
static struct __pyx_vtabstruct_4grpc_7_cython_6cygrpc_SSLChannelCredentials *__pyx_vtabptr_4grpc_7_cython_6cygrpc_SSLChannelCredentials;


/* "src/python/grpcio/grpc/_cython/_cygrpc/credentials.pyx.pxi":171
 * 
 * 
 * cdef class CompositeChannelCredentials(ChannelCredentials):             # <<<<<<<<<<<<<<
 * 
 *   def __cinit__(self, call_credentialses, channel_credentials):
 */

struct __pyx_vtabstruct_4grpc_7_cython_6cygrpc_CompositeChannelCredentials {
  struct __pyx_vtabstruct_4grpc_7_cython_6cygrpc_ChannelCredentials __pyx_base;
};
static struct __pyx_vtabstruct_4grpc_7_cython_6cygrpc_CompositeChannelCredentials *__pyx_vtabptr_4grpc_7_cython_6cygrpc_CompositeChannelCredentials;


/* "src/python/grpcio/grpc/_cython/_cygrpc/credentials.pyx.pxi":190
 * 
 * 
 * cdef class XDSChannelCredentials(ChannelCredentials):             # <<<<<<<<<<<<<<
 * 
 *     def __cinit__(self, fallback_credentials):
 */

struct __pyx_vtabstruct_4grpc_7_cython_6cygrpc_XDSChannelCredentials {
  struct __pyx_vtabstruct_4grpc_7_cython_6cygrpc_ChannelCredentials __pyx_base;
};
static struct __pyx_vtabstruct_4grpc_7_cython_6cygrpc_XDSChannelCredentials *__pyx_vtabptr_4grpc_7_cython_6cygrpc_XDSChannelCredentials;


/* "src/python/grpcio/grpc/_cython/_cygrpc/credentials.pyx.pxi":358
 *   local_tcp = LOCAL_TCP
 * 
 * cdef class LocalChannelCredentials(ChannelCredentials):             # <<<<<<<<<<<<<<
 * 
 *   def __cinit__(self, grpc_local_connect_type local_connect_type):
 */

struct __pyx_vtabstruct_4grpc_7_cython_6cygrpc_LocalChannelCredentials {
  struct __pyx_vtabstruct_4grpc_7_cython_6cygrpc_ChannelCredentials __pyx_base;
};
static struct __pyx_vtabstruct_4grpc_7_cython_6cygrpc_LocalChannelCredentials *__pyx_vtabptr_4grpc_7_cython_6cygrpc_LocalChannelCredentials;


/* "src/python/grpcio/grpc/_cython/_cygrpc/credentials.pyx.pxi":397
 *   return credentials
 * 
 * cdef class ALTSChannelCredentials(ChannelCredentials):             # <<<<<<<<<<<<<<
 * 
 *   def __cinit__(self, list service_accounts):
 */

struct __pyx_vtabstruct_4grpc_7_cython_6cygrpc_ALTSChannelCredentials {
  struct __pyx_vtabstruct_4grpc_7_cython_6cygrpc_ChannelCredentials __pyx_base;
};
static struct __pyx_vtabstruct_4grpc_7_cython_6cygrpc_ALTSChannelCredentials *__pyx_vtabptr_4grpc_7_cython_6cygrpc_ALTSChannelCredentials;


/* "src/python/grpcio/grpc/_cython/_cygrpc/completion_queue.pyx.pxi":67
 * 
 * 
 * cdef class CompletionQueue:             # <<<<<<<<<<<<<<
 * 
 *   def __cinit__(self, shutdown_cq=False):
 */

struct __pyx_vtabstruct_4grpc_7_cython_6cygrpc_CompletionQueue {
  PyObject *(*_interpret_event)(struct __pyx_obj_4grpc_7_cython_6cygrpc_CompletionQueue *, grpc_event);
};
static struct __pyx_vtabstruct_4grpc_7_cython_6cygrpc_CompletionQueue *__pyx_vtabptr_4grpc_7_cython_6cygrpc_CompletionQueue;


/* "src/python/grpcio/grpc/_cython/_cygrpc/operation.pyx.pxi":16
 * 
 * 
 * cdef class Operation:             # <<<<<<<<<<<<<<
 * 
 *   cdef void c(self) except *:
 */

struct __pyx_vtabstruct_4grpc_7_cython_6cygrpc_Operation {
  void (*c)(struct __pyx_obj_4grpc_7_cython_6cygrpc_Operation *);
  void (*un_c)(struct __pyx_obj_4grpc_7_cython_6cygrpc_Operation *);
};
static struct __pyx_vtabstruct_4grpc_7_cython_6cygrpc_Operation *__pyx_vtabptr_4grpc_7_cython_6cygrpc_Operation;


/* "src/python/grpcio/grpc/_cython/_cygrpc/operation.pyx.pxi":25
 * 
 * 
 * cdef class SendInitialMetadataOperation(Operation):             # <<<<<<<<<<<<<<
 * 
 *   def __cinit__(self, initial_metadata, flags):
 */

struct __pyx_vtabstruct_4grpc_7_cython_6cygrpc_SendInitialMetadataOperation {
  struct __pyx_vtabstruct_4grpc_7_cython_6cygrpc_Operation __pyx_base;
};
static struct __pyx_vtabstruct_4grpc_7_cython_6cygrpc_SendInitialMetadataOperation *__pyx_vtabptr_4grpc_7_cython_6cygrpc_SendInitialMetadataOperation;


/* "src/python/grpcio/grpc/_cython/_cygrpc/operation.pyx.pxi":49
 * 
 * 
 * cdef class SendMessageOperation(Operation):             # <<<<<<<<<<<<<<
 * 
 *   def __cinit__(self, bytes message, int flags):
 */

struct __pyx_vtabstruct_4grpc_7_cython_6cygrpc_SendMessageOperation {
  struct __pyx_vtabstruct_4grpc_7_cython_6cygrpc_Operation __pyx_base;
};
static struct __pyx_vtabstruct_4grpc_7_cython_6cygrpc_SendMessageOperation *__pyx_vtabptr_4grpc_7_cython_6cygrpc_SendMessageOperation;


/* "src/python/grpcio/grpc/_cython/_cygrpc/operation.pyx.pxi":75
 * 
 * 
 * cdef class SendCloseFromClientOperation(Operation):             # <<<<<<<<<<<<<<
 * 
 *   def __cinit__(self, int flags):
 */

struct __pyx_vtabstruct_4grpc_7_cython_6cygrpc_SendCloseFromClientOperation {
  struct __pyx_vtabstruct_4grpc_7_cython_6cygrpc_Operation __pyx_base;
};
static struct __pyx_vtabstruct_4grpc_7_cython_6cygrpc_SendCloseFromClientOperation *__pyx_vtabptr_4grpc_7_cython_6cygrpc_SendCloseFromClientOperation;


/* "src/python/grpcio/grpc/_cython/_cygrpc/operation.pyx.pxi":91
 * 
 * 
 * cdef class SendStatusFromServerOperation(Operation):             # <<<<<<<<<<<<<<
 * 
 *   def __cinit__(self, trailing_metadata, code, object details, int flags):
 */

struct __pyx_vtabstruct_4grpc_7_cython_6cygrpc_SendStatusFromServerOperation {
  struct __pyx_vtabstruct_4grpc_7_cython_6cygrpc_Operation __pyx_base;
};
static struct __pyx_vtabstruct_4grpc_7_cython_6cygrpc_SendStatusFromServerOperation *__pyx_vtabptr_4grpc_7_cython_6cygrpc_SendStatusFromServerOperation;


/* "src/python/grpcio/grpc/_cython/_cygrpc/operation.pyx.pxi":122
 * 
 * 
 * cdef class ReceiveInitialMetadataOperation(Operation):             # <<<<<<<<<<<<<<
 * 
 *   def __cinit__(self, flags):
 */

struct __pyx_vtabstruct_4grpc_7_cython_6cygrpc_ReceiveInitialMetadataOperation {
  struct __pyx_vtabstruct_4grpc_7_cython_6cygrpc_Operation __pyx_base;
};
static struct __pyx_vtabstruct_4grpc_7_cython_6cygrpc_ReceiveInitialMetadataOperation *__pyx_vtabptr_4grpc_7_cython_6cygrpc_ReceiveInitialMetadataOperation;


/* "src/python/grpcio/grpc/_cython/_cygrpc/operation.pyx.pxi":145
 * 
 * 
 * cdef class ReceiveMessageOperation(Operation):             # <<<<<<<<<<<<<<
 * 
 *   def __cinit__(self, flags):
 */

struct __pyx_vtabstruct_4grpc_7_cython_6cygrpc_ReceiveMessageOperation {
  struct __pyx_vtabstruct_4grpc_7_cython_6cygrpc_Operation __pyx_base;
};
static struct __pyx_vtabstruct_4grpc_7_cython_6cygrpc_ReceiveMessageOperation *__pyx_vtabptr_4grpc_7_cython_6cygrpc_ReceiveMessageOperation;


/* "src/python/grpcio/grpc/_cython/_cygrpc/operation.pyx.pxi":187
 * 
 * 
 * cdef class ReceiveStatusOnClientOperation(Operation):             # <<<<<<<<<<<<<<
 * 
 *   def __cinit__(self, flags):
 */

struct __pyx_vtabstruct_4grpc_7_cython_6cygrpc_ReceiveStatusOnClientOperation {
  struct __pyx_vtabstruct_4grpc_7_cython_6cygrpc_Operation __pyx_base;
};
static struct __pyx_vtabstruct_4grpc_7_cython_6cygrpc_ReceiveStatusOnClientOperation *__pyx_vtabptr_4grpc_7_cython_6cygrpc_ReceiveStatusOnClientOperation;


/* "src/python/grpcio/grpc/_cython/_cygrpc/operation.pyx.pxi":233
 * 
 * 
 * cdef class ReceiveCloseOnServerOperation(Operation):             # <<<<<<<<<<<<<<
 * 
 *   def __cinit__(self, flags):
 */

struct __pyx_vtabstruct_4grpc_7_cython_6cygrpc_ReceiveCloseOnServerOperation {
  struct __pyx_vtabstruct_4grpc_7_cython_6cygrpc_Operation __pyx_base;
};
static struct __pyx_vtabstruct_4grpc_7_cython_6cygrpc_ReceiveCloseOnServerOperation *__pyx_vtabptr_4grpc_7_cython_6cygrpc_ReceiveCloseOnServerOperation;


/* "src/python/grpcio/grpc/_cython/_cygrpc/server.pyx.pxi":16
 * 
 * 
 * cdef class Server:             # <<<<<<<<<<<<<<
 * 
 *   def __cinit__(self, object arguments, bint xds):
 */

struct __pyx_vtabstruct_4grpc_7_cython_6cygrpc_Server {
  PyObject *(*_c_shutdown)(struct __pyx_obj_4grpc_7_cython_6cygrpc_Server *, struct __pyx_obj_4grpc_7_cython_6cygrpc_CompletionQueue *, PyObject *);
  PyObject *(*notify_shutdown_complete)(struct __pyx_obj_4grpc_7_cython_6cygrpc_Server *);
};
static struct __pyx_vtabstruct_4grpc_7_cython_6cygrpc_Server *__pyx_vtabptr_4grpc_7_cython_6cygrpc_Server;


/* "src/python/grpcio/grpc/_cython/_cygrpc/tag.pyx.pxi":16
 * 
 * 
 * cdef class _Tag:             # <<<<<<<<<<<<<<
 * 
 *   cdef object event(self, grpc_event c_event):
 */

struct __pyx_vtabstruct_4grpc_7_cython_6cygrpc__Tag {
  PyObject *(*event)(struct __pyx_obj_4grpc_7_cython_6cygrpc__Tag *, grpc_event);
};
static struct __pyx_vtabstruct_4grpc_7_cython_6cygrpc__Tag *__pyx_vtabptr_4grpc_7_cython_6cygrpc__Tag;


/* "src/python/grpcio/grpc/_cython/_cygrpc/tag.pyx.pxi":22
 * 
 * 
 * cdef class _ConnectivityTag(_Tag):             # <<<<<<<<<<<<<<
 * 
 *   def __cinit__(self, user_tag):
 */

struct __pyx_vtabstruct_4grpc_7_cython_6cygrpc__ConnectivityTag {
  struct __pyx_vtabstruct_4grpc_7_cython_6cygrpc__Tag __pyx_base;
  struct __pyx_obj_4grpc_7_cython_6cygrpc_ConnectivityEvent *(*event)(struct __pyx_obj_4grpc_7_cython_6cygrpc__ConnectivityTag *, grpc_event);
};
static struct __pyx_vtabstruct_4grpc_7_cython_6cygrpc__ConnectivityTag *__pyx_vtabptr_4grpc_7_cython_6cygrpc__ConnectivityTag;


/* "src/python/grpcio/grpc/_cython/_cygrpc/tag.pyx.pxi":31
 * 
 * 
 * cdef class _RequestCallTag(_Tag):             # <<<<<<<<<<<<<<
 * 
 *   def __cinit__(self, user_tag):
 */

struct __pyx_vtabstruct_4grpc_7_cython_6cygrpc__RequestCallTag {
  struct __pyx_vtabstruct_4grpc_7_cython_6cygrpc__Tag __pyx_base;
  void (*prepare)(struct __pyx_obj_4grpc_7_cython_6cygrpc__RequestCallTag *);
  struct __pyx_obj_4grpc_7_cython_6cygrpc_RequestCallEvent *(*event)(struct __pyx_obj_4grpc_7_cython_6cygrpc__RequestCallTag *, grpc_event);
};
static struct __pyx_vtabstruct_4grpc_7_cython_6cygrpc__RequestCallTag *__pyx_vtabptr_4grpc_7_cython_6cygrpc__RequestCallTag;


/* "src/python/grpcio/grpc/_cython/_cygrpc/tag.pyx.pxi":51
 * 
 * 
 * cdef class _BatchOperationTag:             # <<<<<<<<<<<<<<
 * 
 *   def __cinit__(self, user_tag, operations, call):
 */

struct __pyx_vtabstruct_4grpc_7_cython_6cygrpc__BatchOperationTag {
  struct __pyx_vtabstruct_4grpc_7_cython_6cygrpc__Tag __pyx_base;
  void (*prepare)(struct __pyx_obj_4grpc_7_cython_6cygrpc__BatchOperationTag *);
  struct __pyx_obj_4grpc_7_cython_6cygrpc_BatchOperationEvent *(*event)(struct __pyx_obj_4grpc_7_cython_6cygrpc__BatchOperationTag *, grpc_event);
};
static struct __pyx_vtabstruct_4grpc_7_cython_6cygrpc__BatchOperationTag *__pyx_vtabptr_4grpc_7_cython_6cygrpc__BatchOperationTag;


/* "src/python/grpcio/grpc/_cython/_cygrpc/tag.pyx.pxi":80
 * 
 * 
 * cdef class _ServerShutdownTag(_Tag):             # <<<<<<<<<<<<<<
 * 
 *   def __cinit__(self, user_tag, shutting_down_server):
 */

struct __pyx_vtabstruct_4grpc_7_cython_6cygrpc__ServerShutdownTag {
  struct __pyx_vtabstruct_4grpc_7_cython_6cygrpc__Tag __pyx_base;
  struct __pyx_obj_4grpc_7_cython_6cygrpc_ServerShutdownEvent *(*event)(struct __pyx_obj_4grpc_7_cython_6cygrpc__ServerShutdownTag *, grpc_event);
};
static struct __pyx_vtabstruct_4grpc_7_cython_6cygrpc__ServerShutdownTag *__pyx_vtabptr_4grpc_7_cython_6cygrpc__ServerShutdownTag;


/* "src/python/grpcio/grpc/_cython/_cygrpc/aio/completion_queue.pyx.pxi":38
 * 
 * 
 * cdef class BaseCompletionQueue:             # <<<<<<<<<<<<<<
 * 
 *     cdef grpc_completion_queue* c_ptr(self):
 */

struct __pyx_vtabstruct_4grpc_7_cython_6cygrpc_BaseCompletionQueue {
  grpc_completion_queue *(*c_ptr)(struct __pyx_obj_4grpc_7_cython_6cygrpc_BaseCompletionQueue *);
};
static struct __pyx_vtabstruct_4grpc_7_cython_6cygrpc_BaseCompletionQueue *__pyx_vtabptr_4grpc_7_cython_6cygrpc_BaseCompletionQueue;


/* "src/python/grpcio/grpc/_cython/_cygrpc/aio/completion_queue.pyx.pxi":72
 * 
 * 
 * cdef class PollerCompletionQueue(BaseCompletionQueue):             # <<<<<<<<<<<<<<
 * 
 *     def __cinit__(self):
 */

struct __pyx_vtabstruct_4grpc_7_cython_6cygrpc_PollerCompletionQueue {
  struct __pyx_vtabstruct_4grpc_7_cython_6cygrpc_BaseCompletionQueue __pyx_base;
  void (*_poll)(struct __pyx_obj_4grpc_7_cython_6cygrpc_PollerCompletionQueue *);
  PyObject *(*shutdown)(struct __pyx_obj_4grpc_7_cython_6cygrpc_PollerCompletionQueue *);
};
static struct __pyx_vtabstruct_4grpc_7_cython_6cygrpc_PollerCompletionQueue *__pyx_vtabptr_4grpc_7_cython_6cygrpc_PollerCompletionQueue;


/* "src/python/grpcio/grpc/_cython/_cygrpc/aio/rpc_status.pyx.pxi":17
 * 
 * 
 * cdef class AioRpcStatus(Exception):             # <<<<<<<<<<<<<<
 * 
 *     # The final status of gRPC is represented by three trailing metadata:
 */

struct __pyx_vtabstruct_4grpc_7_cython_6cygrpc_AioRpcStatus {
  grpc_status_code (*code)(struct __pyx_obj_4grpc_7_cython_6cygrpc_AioRpcStatus *, int __pyx_skip_dispatch);
  PyObject *(*details)(struct __pyx_obj_4grpc_7_cython_6cygrpc_AioRpcStatus *, int __pyx_skip_dispatch);
  PyObject *(*trailing_metadata)(struct __pyx_obj_4grpc_7_cython_6cygrpc_AioRpcStatus *, int __pyx_skip_dispatch);
  PyObject *(*debug_error_string)(struct __pyx_obj_4grpc_7_cython_6cygrpc_AioRpcStatus *, int __pyx_skip_dispatch);
  grpc_status_code (*c_code)(struct __pyx_obj_4grpc_7_cython_6cygrpc_AioRpcStatus *);
};
static struct __pyx_vtabstruct_4grpc_7_cython_6cygrpc_AioRpcStatus *__pyx_vtabptr_4grpc_7_cython_6cygrpc_AioRpcStatus;


/* "src/python/grpcio/grpc/_cython/_cygrpc/aio/callback_common.pyx.pxi":16
 * 
 * 
 * cdef class CallbackFailureHandler:             # <<<<<<<<<<<<<<
 * 
 *     def __cinit__(self,
 */

struct __pyx_vtabstruct_4grpc_7_cython_6cygrpc_CallbackFailureHandler {
  PyObject *(*handle)(struct __pyx_obj_4grpc_7_cython_6cygrpc_CallbackFailureHandler *, PyObject *);
};
static struct __pyx_vtabstruct_4grpc_7_cython_6cygrpc_CallbackFailureHandler *__pyx_vtabptr_4grpc_7_cython_6cygrpc_CallbackFailureHandler;


/* "src/python/grpcio/grpc/_cython/_cygrpc/aio/callback_common.pyx.pxi":33
 * 
 * 
 * cdef class CallbackWrapper:             # <<<<<<<<<<<<<<
 * 
 *     def __cinit__(self, object future, object loop, CallbackFailureHandler failure_handler):
 */

struct __pyx_vtabstruct_4grpc_7_cython_6cygrpc_CallbackWrapper {
  void (*functor_run)(grpc_completion_queue_functor *, int);
  grpc_completion_queue_functor *(*c_functor)(struct __pyx_obj_4grpc_7_cython_6cygrpc_CallbackWrapper *);
};
static struct __pyx_vtabstruct_4grpc_7_cython_6cygrpc_CallbackWrapper *__pyx_vtabptr_4grpc_7_cython_6cygrpc_CallbackWrapper;


/* "src/python/grpcio/grpc/_cython/_cygrpc/aio/call.pyx.pxi":45
 * 
 * 
 * cdef class _AioCall(GrpcCallWrapper):             # <<<<<<<<<<<<<<
 * 
 *     def __cinit__(self, AioChannel channel, object deadline,
 */

struct __pyx_vtabstruct_4grpc_7_cython_6cygrpc__AioCall {
  void (*_create_grpc_call)(struct __pyx_obj_4grpc_7_cython_6cygrpc__AioCall *, PyObject *, PyObject *, struct __pyx_obj_4grpc_7_cython_6cygrpc_CallCredentials *);
  void (*_set_status)(struct __pyx_obj_4grpc_7_cython_6cygrpc__AioCall *, struct __pyx_obj_4grpc_7_cython_6cygrpc_AioRpcStatus *);
  void (*_set_initial_metadata)(struct __pyx_obj_4grpc_7_cython_6cygrpc__AioCall *, PyObject *);
};
static struct __pyx_vtabstruct_4grpc_7_cython_6cygrpc__AioCall *__pyx_vtabptr_4grpc_7_cython_6cygrpc__AioCall;


/* "src/python/grpcio/grpc/_cython/_cygrpc/aio/server.pyx.pxi":45
 * 
 * 
 * cdef class RPCState:             # <<<<<<<<<<<<<<
 * 
 *     def __cinit__(self, AioServer server):
 */

struct __pyx_vtabstruct_4grpc_7_cython_6cygrpc_RPCState {
  PyObject *(*method)(struct __pyx_obj_4grpc_7_cython_6cygrpc_RPCState *);
  PyObject *(*invocation_metadata)(struct __pyx_obj_4grpc_7_cython_6cygrpc_RPCState *);
  void (*raise_for_termination)(struct __pyx_obj_4grpc_7_cython_6cygrpc_RPCState *);
  int (*get_write_flag)(struct __pyx_obj_4grpc_7_cython_6cygrpc_RPCState *);
  struct __pyx_obj_4grpc_7_cython_6cygrpc_Operation *(*create_send_initial_metadata_op_if_not_sent)(struct __pyx_obj_4grpc_7_cython_6cygrpc_RPCState *);
};
static struct __pyx_vtabstruct_4grpc_7_cython_6cygrpc_RPCState *__pyx_vtabptr_4grpc_7_cython_6cygrpc_RPCState;


/* "src/python/grpcio/grpc/_cython/_cygrpc/aio/server.pyx.pxi":836
 * 
 * 
 * cdef class AioServer:             # <<<<<<<<<<<<<<
 * 
 *     def __init__(self, loop, thread_pool, generic_handlers, interceptors,
 */

struct __pyx_vtabstruct_4grpc_7_cython_6cygrpc_AioServer {
  PyObject *(*thread_pool)(struct __pyx_obj_4grpc_7_cython_6cygrpc_AioServer *);
};
static struct __pyx_vtabstruct_4grpc_7_cython_6cygrpc_AioServer *__pyx_vtabptr_4grpc_7_cython_6cygrpc_AioServer;


/* "src/python/grpcio/grpc/_cython/_cygrpc/credentials.pyx.pxi":371
 *   return LocalChannelCredentials(local_connect_type)
 * 
 * cdef class InsecureChannelCredentials(ChannelCredentials):             # <<<<<<<<<<<<<<
 * 
 *   cdef grpc_channel_credentials *c(self) except *:
 */

struct __pyx_vtabstruct_4grpc_7_cython_6cygrpc_InsecureChannelCredentials {
  struct __pyx_vtabstruct_4grpc_7_cython_6cygrpc_ChannelCredentials __pyx_base;
};
static struct __pyx_vtabstruct_4grpc_7_cython_6cygrpc_InsecureChannelCredentials *__pyx_vtabptr_4grpc_7_cython_6cygrpc_InsecureChannelCredentials;


/* "src/python/grpcio/grpc/_cython/_cygrpc/credentials.pyx.pxi":426
 * 
 * 
 * cdef class ComputeEngineChannelCredentials(ChannelCredentials):             # <<<<<<<<<<<<<<
 *   cdef grpc_channel_credentials* _c_creds
 *   cdef grpc_call_credentials* _call_creds
 */

struct __pyx_vtabstruct_4grpc_7_cython_6cygrpc_ComputeEngineChannelCredentials {
  struct __pyx_vtabstruct_4grpc_7_cython_6cygrpc_ChannelCredentials __pyx_base;
};
static struct __pyx_vtabstruct_4grpc_7_cython_6cygrpc_ComputeEngineChannelCredentials *__pyx_vtabptr_4grpc_7_cython_6cygrpc_ComputeEngineChannelCredentials;

/* --- Runtime support code (head) --- */
/* Refnanny.proto */
#ifndef CYTHON_REFNANNY
  #define CYTHON_REFNANNY 0
#endif
#if CYTHON_REFNANNY
  typedef struct {
    void (*INCREF)(void*, PyObject*, int);
    void (*DECREF)(void*, PyObject*, int);
    void (*GOTREF)(void*, PyObject*, int);
    void (*GIVEREF)(void*, PyObject*, int);
    void* (*SetupContext)(const char*, int, const char*);
    void (*FinishContext)(void**);
  } __Pyx_RefNannyAPIStruct;
  static __Pyx_RefNannyAPIStruct *__Pyx_RefNanny = NULL;
  static __Pyx_RefNannyAPIStruct *__Pyx_RefNannyImportAPI(const char *modname);
  #define __Pyx_RefNannyDeclarations void *__pyx_refnanny = NULL;
#ifdef WITH_THREAD
  #define __Pyx_RefNannySetupContext(name, acquire_gil)\
          if (acquire_gil) {\
              PyGILState_STATE __pyx_gilstate_save = PyGILState_Ensure();\
              __pyx_refnanny = __Pyx_RefNanny->SetupContext((name), __LINE__, __FILE__);\
              PyGILState_Release(__pyx_gilstate_save);\
          } else {\
              __pyx_refnanny = __Pyx_RefNanny->SetupContext((name), __LINE__, __FILE__);\
          }
#else
  #define __Pyx_RefNannySetupContext(name, acquire_gil)\
          __pyx_refnanny = __Pyx_RefNanny->SetupContext((name), __LINE__, __FILE__)
#endif
  #define __Pyx_RefNannyFinishContext()\
          __Pyx_RefNanny->FinishContext(&__pyx_refnanny)
  #define __Pyx_INCREF(r)  __Pyx_RefNanny->INCREF(__pyx_refnanny, (PyObject *)(r), __LINE__)
  #define __Pyx_DECREF(r)  __Pyx_RefNanny->DECREF(__pyx_refnanny, (PyObject *)(r), __LINE__)
  #define __Pyx_GOTREF(r)  __Pyx_RefNanny->GOTREF(__pyx_refnanny, (PyObject *)(r), __LINE__)
  #define __Pyx_GIVEREF(r) __Pyx_RefNanny->GIVEREF(__pyx_refnanny, (PyObject *)(r), __LINE__)
  #define __Pyx_XINCREF(r)  do { if((r) != NULL) {__Pyx_INCREF(r); }} while(0)
  #define __Pyx_XDECREF(r)  do { if((r) != NULL) {__Pyx_DECREF(r); }} while(0)
  #define __Pyx_XGOTREF(r)  do { if((r) != NULL) {__Pyx_GOTREF(r); }} while(0)
  #define __Pyx_XGIVEREF(r) do { if((r) != NULL) {__Pyx_GIVEREF(r);}} while(0)
#else
  #define __Pyx_RefNannyDeclarations
  #define __Pyx_RefNannySetupContext(name, acquire_gil)
  #define __Pyx_RefNannyFinishContext()
  #define __Pyx_INCREF(r) Py_INCREF(r)
  #define __Pyx_DECREF(r) Py_DECREF(r)
  #define __Pyx_GOTREF(r)
  #define __Pyx_GIVEREF(r)
  #define __Pyx_XINCREF(r) Py_XINCREF(r)
  #define __Pyx_XDECREF(r) Py_XDECREF(r)
  #define __Pyx_XGOTREF(r)
  #define __Pyx_XGIVEREF(r)
#endif
#define __Pyx_XDECREF_SET(r, v) do {\
        PyObject *tmp = (PyObject *) r;\
        r = v; __Pyx_XDECREF(tmp);\
    } while (0)
#define __Pyx_DECREF_SET(r, v) do {\
        PyObject *tmp = (PyObject *) r;\
        r = v; __Pyx_DECREF(tmp);\
    } while (0)
#define __Pyx_CLEAR(r)    do { PyObject* tmp = ((PyObject*)(r)); r = NULL; __Pyx_DECREF(tmp);} while(0)
#define __Pyx_XCLEAR(r)   do { if((r) != NULL) {PyObject* tmp = ((PyObject*)(r)); r = NULL; __Pyx_DECREF(tmp);}} while(0)

/* PyObjectGetAttrStr.proto */
#if CYTHON_USE_TYPE_SLOTS
static CYTHON_INLINE PyObject* __Pyx_PyObject_GetAttrStr(PyObject* obj, PyObject* attr_name);
#else
#define __Pyx_PyObject_GetAttrStr(o,n) PyObject_GetAttr(o,n)
#endif

/* GetBuiltinName.proto */
static PyObject *__Pyx_GetBuiltinName(PyObject *name);

/* PyCFunctionFastCall.proto */
#if CYTHON_FAST_PYCCALL
static CYTHON_INLINE PyObject *__Pyx_PyCFunction_FastCall(PyObject *func, PyObject **args, Py_ssize_t nargs);
#else
#define __Pyx_PyCFunction_FastCall(func, args, nargs)  (assert(0), NULL)
#endif

/* PyFunctionFastCall.proto */
#if CYTHON_FAST_PYCALL
#define __Pyx_PyFunction_FastCall(func, args, nargs)\
    __Pyx_PyFunction_FastCallDict((func), (args), (nargs), NULL)
#if 1 || PY_VERSION_HEX < 0x030600B1
static PyObject *__Pyx_PyFunction_FastCallDict(PyObject *func, PyObject **args, Py_ssize_t nargs, PyObject *kwargs);
#else
#define __Pyx_PyFunction_FastCallDict(func, args, nargs, kwargs) _PyFunction_FastCallDict(func, args, nargs, kwargs)
#endif
#define __Pyx_BUILD_ASSERT_EXPR(cond)\
    (sizeof(char [1 - 2*!(cond)]) - 1)
#ifndef Py_MEMBER_SIZE
#define Py_MEMBER_SIZE(type, member) sizeof(((type *)0)->member)
#endif
  static size_t __pyx_pyframe_localsplus_offset = 0;
  #include "frameobject.h"
  #define __Pxy_PyFrame_Initialize_Offsets()\
    ((void)__Pyx_BUILD_ASSERT_EXPR(sizeof(PyFrameObject) == offsetof(PyFrameObject, f_localsplus) + Py_MEMBER_SIZE(PyFrameObject, f_localsplus)),\
     (void)(__pyx_pyframe_localsplus_offset = ((size_t)PyFrame_Type.tp_basicsize) - Py_MEMBER_SIZE(PyFrameObject, f_localsplus)))
  #define __Pyx_PyFrame_GetLocalsplus(frame)\
    (assert(__pyx_pyframe_localsplus_offset), (PyObject **)(((char *)(frame)) + __pyx_pyframe_localsplus_offset))
#endif

/* PyObjectCall.proto */
#if CYTHON_COMPILING_IN_CPYTHON
static CYTHON_INLINE PyObject* __Pyx_PyObject_Call(PyObject *func, PyObject *arg, PyObject *kw);
#else
#define __Pyx_PyObject_Call(func, arg, kw) PyObject_Call(func, arg, kw)
#endif

/* PyObjectCall2Args.proto */
static CYTHON_UNUSED PyObject* __Pyx_PyObject_Call2Args(PyObject* function, PyObject* arg1, PyObject* arg2);

/* PyObjectCallMethO.proto */
#if CYTHON_COMPILING_IN_CPYTHON
static CYTHON_INLINE PyObject* __Pyx_PyObject_CallMethO(PyObject *func, PyObject *arg);
#endif

/* PyObjectCallOneArg.proto */
static CYTHON_INLINE PyObject* __Pyx_PyObject_CallOneArg(PyObject *func, PyObject *arg);

/* PyThreadStateGet.proto */
#if CYTHON_FAST_THREAD_STATE
#define __Pyx_PyThreadState_declare  PyThreadState *__pyx_tstate;
#define __Pyx_PyThreadState_assign  __pyx_tstate = __Pyx_PyThreadState_Current;
#define __Pyx_PyErr_Occurred()  __pyx_tstate->curexc_type
#else
#define __Pyx_PyThreadState_declare
#define __Pyx_PyThreadState_assign
#define __Pyx_PyErr_Occurred()  PyErr_Occurred()
#endif

/* PyErrFetchRestore.proto */
#if CYTHON_FAST_THREAD_STATE
#define __Pyx_PyErr_Clear() __Pyx_ErrRestore(NULL, NULL, NULL)
#define __Pyx_ErrRestoreWithState(type, value, tb)  __Pyx_ErrRestoreInState(PyThreadState_GET(), type, value, tb)
#define __Pyx_ErrFetchWithState(type, value, tb)    __Pyx_ErrFetchInState(PyThreadState_GET(), type, value, tb)
#define __Pyx_ErrRestore(type, value, tb)  __Pyx_ErrRestoreInState(__pyx_tstate, type, value, tb)
#define __Pyx_ErrFetch(type, value, tb)    __Pyx_ErrFetchInState(__pyx_tstate, type, value, tb)
static CYTHON_INLINE void __Pyx_ErrRestoreInState(PyThreadState *tstate, PyObject *type, PyObject *value, PyObject *tb);
static CYTHON_INLINE void __Pyx_ErrFetchInState(PyThreadState *tstate, PyObject **type, PyObject **value, PyObject **tb);
#if CYTHON_COMPILING_IN_CPYTHON
#define __Pyx_PyErr_SetNone(exc) (Py_INCREF(exc), __Pyx_ErrRestore((exc), NULL, NULL))
#else
#define __Pyx_PyErr_SetNone(exc) PyErr_SetNone(exc)
#endif
#else
#define __Pyx_PyErr_Clear() PyErr_Clear()
#define __Pyx_PyErr_SetNone(exc) PyErr_SetNone(exc)
#define __Pyx_ErrRestoreWithState(type, value, tb)  PyErr_Restore(type, value, tb)
#define __Pyx_ErrFetchWithState(type, value, tb)  PyErr_Fetch(type, value, tb)
#define __Pyx_ErrRestoreInState(tstate, type, value, tb)  PyErr_Restore(type, value, tb)
#define __Pyx_ErrFetchInState(tstate, type, value, tb)  PyErr_Fetch(type, value, tb)
#define __Pyx_ErrRestore(type, value, tb)  PyErr_Restore(type, value, tb)
#define __Pyx_ErrFetch(type, value, tb)  PyErr_Fetch(type, value, tb)
#endif

/* RaiseException.proto */
static void __Pyx_Raise(PyObject *type, PyObject *value, PyObject *tb, PyObject *cause);

/* decode_c_string_utf16.proto */
static CYTHON_INLINE PyObject *__Pyx_PyUnicode_DecodeUTF16(const char *s, Py_ssize_t size, const char *errors) {
    int byteorder = 0;
    return PyUnicode_DecodeUTF16(s, size, errors, &byteorder);
}
static CYTHON_INLINE PyObject *__Pyx_PyUnicode_DecodeUTF16LE(const char *s, Py_ssize_t size, const char *errors) {
    int byteorder = -1;
    return PyUnicode_DecodeUTF16(s, size, errors, &byteorder);
}
static CYTHON_INLINE PyObject *__Pyx_PyUnicode_DecodeUTF16BE(const char *s, Py_ssize_t size, const char *errors) {
    int byteorder = 1;
    return PyUnicode_DecodeUTF16(s, size, errors, &byteorder);
}

/* decode_c_bytes.proto */
static CYTHON_INLINE PyObject* __Pyx_decode_c_bytes(
         const char* cstring, Py_ssize_t length, Py_ssize_t start, Py_ssize_t stop,
         const char* encoding, const char* errors,
         PyObject* (*decode_func)(const char *s, Py_ssize_t size, const char *errors));

/* decode_bytes.proto */
static CYTHON_INLINE PyObject* __Pyx_decode_bytes(
         PyObject* string, Py_ssize_t start, Py_ssize_t stop,
         const char* encoding, const char* errors,
         PyObject* (*decode_func)(const char *s, Py_ssize_t size, const char *errors)) {
    return __Pyx_decode_c_bytes(
        PyBytes_AS_STRING(string), PyBytes_GET_SIZE(string),
        start, stop, encoding, errors, decode_func);
}

/* GetTopmostException.proto */
#if CYTHON_USE_EXC_INFO_STACK
static _PyErr_StackItem * __Pyx_PyErr_GetTopmostException(PyThreadState *tstate);
#endif

/* SaveResetException.proto */
#if CYTHON_FAST_THREAD_STATE
#define __Pyx_ExceptionSave(type, value, tb)  __Pyx__ExceptionSave(__pyx_tstate, type, value, tb)
static CYTHON_INLINE void __Pyx__ExceptionSave(PyThreadState *tstate, PyObject **type, PyObject **value, PyObject **tb);
#define __Pyx_ExceptionReset(type, value, tb)  __Pyx__ExceptionReset(__pyx_tstate, type, value, tb)
static CYTHON_INLINE void __Pyx__ExceptionReset(PyThreadState *tstate, PyObject *type, PyObject *value, PyObject *tb);
#else
#define __Pyx_ExceptionSave(type, value, tb)   PyErr_GetExcInfo(type, value, tb)
#define __Pyx_ExceptionReset(type, value, tb)  PyErr_SetExcInfo(type, value, tb)
#endif

/* PyErrExceptionMatches.proto */
#if CYTHON_FAST_THREAD_STATE
#define __Pyx_PyErr_ExceptionMatches(err) __Pyx_PyErr_ExceptionMatchesInState(__pyx_tstate, err)
static CYTHON_INLINE int __Pyx_PyErr_ExceptionMatchesInState(PyThreadState* tstate, PyObject* err);
#else
#define __Pyx_PyErr_ExceptionMatches(err)  PyErr_ExceptionMatches(err)
#endif

/* GetException.proto */
#if CYTHON_FAST_THREAD_STATE
#define __Pyx_GetException(type, value, tb)  __Pyx__GetException(__pyx_tstate, type, value, tb)
static int __Pyx__GetException(PyThreadState *tstate, PyObject **type, PyObject **value, PyObject **tb);
#else
static int __Pyx_GetException(PyObject **type, PyObject **value, PyObject **tb);
#endif

/* PyDictVersioning.proto */
#if CYTHON_USE_DICT_VERSIONS && CYTHON_USE_TYPE_SLOTS
#define __PYX_DICT_VERSION_INIT  ((PY_UINT64_T) -1)
#define __PYX_GET_DICT_VERSION(dict)  (((PyDictObject*)(dict))->ma_version_tag)
#define __PYX_UPDATE_DICT_CACHE(dict, value, cache_var, version_var)\
    (version_var) = __PYX_GET_DICT_VERSION(dict);\
    (cache_var) = (value);
#define __PYX_PY_DICT_LOOKUP_IF_MODIFIED(VAR, DICT, LOOKUP) {\
    static PY_UINT64_T __pyx_dict_version = 0;\
    static PyObject *__pyx_dict_cached_value = NULL;\
    if (likely(__PYX_GET_DICT_VERSION(DICT) == __pyx_dict_version)) {\
        (VAR) = __pyx_dict_cached_value;\
    } else {\
        (VAR) = __pyx_dict_cached_value = (LOOKUP);\
        __pyx_dict_version = __PYX_GET_DICT_VERSION(DICT);\
    }\
}
static CYTHON_INLINE PY_UINT64_T __Pyx_get_tp_dict_version(PyObject *obj);
static CYTHON_INLINE PY_UINT64_T __Pyx_get_object_dict_version(PyObject *obj);
static CYTHON_INLINE int __Pyx_object_dict_version_matches(PyObject* obj, PY_UINT64_T tp_dict_version, PY_UINT64_T obj_dict_version);
#else
#define __PYX_GET_DICT_VERSION(dict)  (0)
#define __PYX_UPDATE_DICT_CACHE(dict, value, cache_var, version_var)
#define __PYX_PY_DICT_LOOKUP_IF_MODIFIED(VAR, DICT, LOOKUP)  (VAR) = (LOOKUP);
#endif

/* GetModuleGlobalName.proto */
#if CYTHON_USE_DICT_VERSIONS
#define __Pyx_GetModuleGlobalName(var, name)  {\
    static PY_UINT64_T __pyx_dict_version = 0;\
    static PyObject *__pyx_dict_cached_value = NULL;\
    (var) = (likely(__pyx_dict_version == __PYX_GET_DICT_VERSION(__pyx_d))) ?\
        (likely(__pyx_dict_cached_value) ? __Pyx_NewRef(__pyx_dict_cached_value) : __Pyx_GetBuiltinName(name)) :\
        __Pyx__GetModuleGlobalName(name, &__pyx_dict_version, &__pyx_dict_cached_value);\
}
#define __Pyx_GetModuleGlobalNameUncached(var, name)  {\
    PY_UINT64_T __pyx_dict_version;\
    PyObject *__pyx_dict_cached_value;\
    (var) = __Pyx__GetModuleGlobalName(name, &__pyx_dict_version, &__pyx_dict_cached_value);\
}
static PyObject *__Pyx__GetModuleGlobalName(PyObject *name, PY_UINT64_T *dict_version, PyObject **dict_cached_value);
#else
#define __Pyx_GetModuleGlobalName(var, name)  (var) = __Pyx__GetModuleGlobalName(name)
#define __Pyx_GetModuleGlobalNameUncached(var, name)  (var) = __Pyx__GetModuleGlobalName(name)
static CYTHON_INLINE PyObject *__Pyx__GetModuleGlobalName(PyObject *name);
#endif

/* PyObjectCallNoArg.proto */
#if CYTHON_COMPILING_IN_CPYTHON
static CYTHON_INLINE PyObject* __Pyx_PyObject_CallNoArg(PyObject *func);
#else
#define __Pyx_PyObject_CallNoArg(func) __Pyx_PyObject_Call(func, __pyx_empty_tuple, NULL)
#endif

/* GetItemInt.proto */
#define __Pyx_GetItemInt(o, i, type, is_signed, to_py_func, is_list, wraparound, boundscheck)\
    (__Pyx_fits_Py_ssize_t(i, type, is_signed) ?\
    __Pyx_GetItemInt_Fast(o, (Py_ssize_t)i, is_list, wraparound, boundscheck) :\
    (is_list ? (PyErr_SetString(PyExc_IndexError, "list index out of range"), (PyObject*)NULL) :\
               __Pyx_GetItemInt_Generic(o, to_py_func(i))))
#define __Pyx_GetItemInt_List(o, i, type, is_signed, to_py_func, is_list, wraparound, boundscheck)\
    (__Pyx_fits_Py_ssize_t(i, type, is_signed) ?\
    __Pyx_GetItemInt_List_Fast(o, (Py_ssize_t)i, wraparound, boundscheck) :\
    (PyErr_SetString(PyExc_IndexError, "list index out of range"), (PyObject*)NULL))
static CYTHON_INLINE PyObject *__Pyx_GetItemInt_List_Fast(PyObject *o, Py_ssize_t i,
                                                              int wraparound, int boundscheck);
#define __Pyx_GetItemInt_Tuple(o, i, type, is_signed, to_py_func, is_list, wraparound, boundscheck)\
    (__Pyx_fits_Py_ssize_t(i, type, is_signed) ?\
    __Pyx_GetItemInt_Tuple_Fast(o, (Py_ssize_t)i, wraparound, boundscheck) :\
    (PyErr_SetString(PyExc_IndexError, "tuple index out of range"), (PyObject*)NULL))
static CYTHON_INLINE PyObject *__Pyx_GetItemInt_Tuple_Fast(PyObject *o, Py_ssize_t i,
                                                              int wraparound, int boundscheck);
static PyObject *__Pyx_GetItemInt_Generic(PyObject *o, PyObject* j);
static CYTHON_INLINE PyObject *__Pyx_GetItemInt_Fast(PyObject *o, Py_ssize_t i,
                                                     int is_list, int wraparound, int boundscheck);

/* ExtTypeTest.proto */
static CYTHON_INLINE int __Pyx_TypeTest(PyObject *obj, PyTypeObject *type);

/* WriteUnraisableException.proto */
static void __Pyx_WriteUnraisable(const char *name, int clineno,
                                  int lineno, const char *filename,
                                  int full_traceback, int nogil);

/* RaiseTooManyValuesToUnpack.proto */
static CYTHON_INLINE void __Pyx_RaiseTooManyValuesError(Py_ssize_t expected);

/* RaiseNeedMoreValuesToUnpack.proto */
static CYTHON_INLINE void __Pyx_RaiseNeedMoreValuesError(Py_ssize_t index);

/* IterFinish.proto */
static CYTHON_INLINE int __Pyx_IterFinish(void);

/* UnpackItemEndCheck.proto */
static int __Pyx_IternextUnpackEndCheck(PyObject *retval, Py_ssize_t expected);

/* ListAppend.proto */
#if CYTHON_USE_PYLIST_INTERNALS && CYTHON_ASSUME_SAFE_MACROS
static CYTHON_INLINE int __Pyx_PyList_Append(PyObject* list, PyObject* x) {
    PyListObject* L = (PyListObject*) list;
    Py_ssize_t len = Py_SIZE(list);
    if (likely(L->allocated > len) & likely(len > (L->allocated >> 1))) {
        Py_INCREF(x);
        PyList_SET_ITEM(list, len, x);
        __Pyx_SET_SIZE(list, len + 1);
        return 0;
    }
    return PyList_Append(list, x);
}
#else
#define __Pyx_PyList_Append(L,x) PyList_Append(L,x)
#endif

/* PyObjectGetMethod.proto */
static int __Pyx_PyObject_GetMethod(PyObject *obj, PyObject *name, PyObject **method);

/* PyObjectCallMethod1.proto */
static PyObject* __Pyx_PyObject_CallMethod1(PyObject* obj, PyObject* method_name, PyObject* arg);

/* append.proto */
static CYTHON_INLINE int __Pyx_PyObject_Append(PyObject* L, PyObject* x);

/* GetAttr.proto */
static CYTHON_INLINE PyObject *__Pyx_GetAttr(PyObject *, PyObject *);

/* HasAttr.proto */
static CYTHON_INLINE int __Pyx_HasAttr(PyObject *, PyObject *);

/* RaiseDoubleKeywords.proto */
static void __Pyx_RaiseDoubleKeywordsError(const char* func_name, PyObject* kw_name);

/* ParseKeywords.proto */
static int __Pyx_ParseOptionalKeywords(PyObject *kwds, PyObject **argnames[],\
    PyObject *kwds2, PyObject *values[], Py_ssize_t num_pos_args,\
    const char* function_name);

/* RaiseArgTupleInvalid.proto */
static void __Pyx_RaiseArgtupleInvalid(const char* func_name, int exact,
    Py_ssize_t num_min, Py_ssize_t num_max, Py_ssize_t num_found);

/* PyIntBinop.proto */
#if !CYTHON_COMPILING_IN_PYPY
static PyObject* __Pyx_PyInt_AddObjC(PyObject *op1, PyObject *op2, long intval, int inplace, int zerodivision_check);
#else
#define __Pyx_PyInt_AddObjC(op1, op2, intval, inplace, zerodivision_check)\
    (inplace ? PyNumber_InPlaceAdd(op1, op2) : PyNumber_Add(op1, op2))
#endif

/* KeywordStringCheck.proto */
static int __Pyx_CheckKeywordStrings(PyObject *kwdict, const char* function_name, int kw_allowed);

/* ArgTypeTest.proto */
#define __Pyx_ArgTypeTest(obj, type, none_allowed, name, exact)\
    ((likely((Py_TYPE(obj) == type) | (none_allowed && (obj == Py_None)))) ? 1 :\
        __Pyx__ArgTypeTest(obj, type, name, exact))
static int __Pyx__ArgTypeTest(PyObject *obj, PyTypeObject *type, const char *name, int exact);

/* PyObjectLookupSpecial.proto */
#if CYTHON_USE_PYTYPE_LOOKUP && CYTHON_USE_TYPE_SLOTS
static CYTHON_INLINE PyObject* __Pyx_PyObject_LookupSpecial(PyObject* obj, PyObject* attr_name) {
    PyObject *res;
    PyTypeObject *tp = Py_TYPE(obj);
#if PY_MAJOR_VERSION < 3
    if (unlikely(PyInstance_Check(obj)))
        return __Pyx_PyObject_GetAttrStr(obj, attr_name);
#endif
    res = _PyType_Lookup(tp, attr_name);
    if (likely(res)) {
        descrgetfunc f = Py_TYPE(res)->tp_descr_get;
        if (!f) {
            Py_INCREF(res);
        } else {
            res = f(res, obj, (PyObject *)tp);
        }
    } else {
        PyErr_SetObject(PyExc_AttributeError, attr_name);
    }
    return res;
}
#else
#define __Pyx_PyObject_LookupSpecial(o,n) __Pyx_PyObject_GetAttrStr(o,n)
#endif

/* RaiseNoneIterError.proto */
static CYTHON_INLINE void __Pyx_RaiseNoneNotIterableError(void);

/* py_dict_pop.proto */
static CYTHON_INLINE PyObject *__Pyx_PyDict_Pop(PyObject *d, PyObject *key, PyObject *default_value);

/* UnpackUnboundCMethod.proto */
typedef struct {
    PyObject *type;
    PyObject **method_name;
    PyCFunction func;
    PyObject *method;
    int flag;
} __Pyx_CachedCFunction;

/* CallUnboundCMethod2.proto */
static PyObject* __Pyx__CallUnboundCMethod2(__Pyx_CachedCFunction* cfunc, PyObject* self, PyObject* arg1, PyObject* arg2);
#if CYTHON_COMPILING_IN_CPYTHON && PY_VERSION_HEX >= 0x030600B1
static CYTHON_INLINE PyObject *__Pyx_CallUnboundCMethod2(__Pyx_CachedCFunction *cfunc, PyObject *self, PyObject *arg1, PyObject *arg2);
#else
#define __Pyx_CallUnboundCMethod2(cfunc, self, arg1, arg2)  __Pyx__CallUnboundCMethod2(cfunc, self, arg1, arg2)
#endif

/* CallUnboundCMethod1.proto */
static PyObject* __Pyx__CallUnboundCMethod1(__Pyx_CachedCFunction* cfunc, PyObject* self, PyObject* arg);
#if CYTHON_COMPILING_IN_CPYTHON
static CYTHON_INLINE PyObject* __Pyx_CallUnboundCMethod1(__Pyx_CachedCFunction* cfunc, PyObject* self, PyObject* arg);
#else
#define __Pyx_CallUnboundCMethod1(cfunc, self, arg)  __Pyx__CallUnboundCMethod1(cfunc, self, arg)
#endif

/* pyfrozenset_new.proto */
static CYTHON_INLINE PyObject* __Pyx_PyFrozenSet_New(PyObject* it);

/* py_set_remove.proto */
static CYTHON_INLINE int __Pyx_PySet_Remove(PyObject *set, PyObject *key);

/* None.proto */
static CYTHON_INLINE void __Pyx_RaiseClosureNameError(const char *varname);

/* FetchCommonType.proto */
static PyTypeObject* __Pyx_FetchCommonType(PyTypeObject* type);

/* CythonFunctionShared.proto */
#define __Pyx_CyFunction_USED 1
#define __Pyx_CYFUNCTION_STATICMETHOD  0x01
#define __Pyx_CYFUNCTION_CLASSMETHOD   0x02
#define __Pyx_CYFUNCTION_CCLASS        0x04
#define __Pyx_CyFunction_GetClosure(f)\
    (((__pyx_CyFunctionObject *) (f))->func_closure)
#define __Pyx_CyFunction_GetClassObj(f)\
    (((__pyx_CyFunctionObject *) (f))->func_classobj)
#define __Pyx_CyFunction_Defaults(type, f)\
    ((type *)(((__pyx_CyFunctionObject *) (f))->defaults))
#define __Pyx_CyFunction_SetDefaultsGetter(f, g)\
    ((__pyx_CyFunctionObject *) (f))->defaults_getter = (g)
typedef struct {
    PyCFunctionObject func;
#if PY_VERSION_HEX < 0x030500A0
    PyObject *func_weakreflist;
#endif
    PyObject *func_dict;
    PyObject *func_name;
    PyObject *func_qualname;
    PyObject *func_doc;
    PyObject *func_globals;
    PyObject *func_code;
    PyObject *func_closure;
    PyObject *func_classobj;
    void *defaults;
    int defaults_pyobjects;
    size_t defaults_size;  // used by FusedFunction for copying defaults
    int flags;
    PyObject *defaults_tuple;
    PyObject *defaults_kwdict;
    PyObject *(*defaults_getter)(PyObject *);
    PyObject *func_annotations;
} __pyx_CyFunctionObject;
static PyTypeObject *__pyx_CyFunctionType = 0;
#define __Pyx_CyFunction_Check(obj)  (__Pyx_TypeCheck(obj, __pyx_CyFunctionType))
static PyObject *__Pyx_CyFunction_Init(__pyx_CyFunctionObject* op, PyMethodDef *ml,
                                      int flags, PyObject* qualname,
                                      PyObject *self,
                                      PyObject *module, PyObject *globals,
                                      PyObject* code);
static CYTHON_INLINE void *__Pyx_CyFunction_InitDefaults(PyObject *m,
                                                         size_t size,
                                                         int pyobjects);
static CYTHON_INLINE void __Pyx_CyFunction_SetDefaultsTuple(PyObject *m,
                                                            PyObject *tuple);
static CYTHON_INLINE void __Pyx_CyFunction_SetDefaultsKwDict(PyObject *m,
                                                             PyObject *dict);
static CYTHON_INLINE void __Pyx_CyFunction_SetAnnotationsDict(PyObject *m,
                                                              PyObject *dict);
static int __pyx_CyFunction_init(void);

/* CythonFunction.proto */
static PyObject *__Pyx_CyFunction_New(PyMethodDef *ml,
                                      int flags, PyObject* qualname,
                                      PyObject *closure,
                                      PyObject *module, PyObject *globals,
                                      PyObject* code);

/* set_iter.proto */
static CYTHON_INLINE PyObject* __Pyx_set_iterator(PyObject* iterable, int is_set,
                                                  Py_ssize_t* p_orig_length, int* p_source_is_set);
static CYTHON_INLINE int __Pyx_set_iter_next(
        PyObject* iter_obj, Py_ssize_t orig_length,
        Py_ssize_t* ppos, PyObject **value,
        int source_is_set);

/* py_dict_values.proto */
static CYTHON_INLINE PyObject* __Pyx_PyDict_Values(PyObject* d);

/* CallUnboundCMethod0.proto */
static PyObject* __Pyx__CallUnboundCMethod0(__Pyx_CachedCFunction* cfunc, PyObject* self);
#if CYTHON_COMPILING_IN_CPYTHON
#define __Pyx_CallUnboundCMethod0(cfunc, self)\
    (likely((cfunc)->func) ?\
        (likely((cfunc)->flag == METH_NOARGS) ?  (*((cfunc)->func))(self, NULL) :\
         (PY_VERSION_HEX >= 0x030600B1 && likely((cfunc)->flag == METH_FASTCALL) ?\
            (PY_VERSION_HEX >= 0x030700A0 ?\
                (*(__Pyx_PyCFunctionFast)(void*)(PyCFunction)(cfunc)->func)(self, &__pyx_empty_tuple, 0) :\
                (*(__Pyx_PyCFunctionFastWithKeywords)(void*)(PyCFunction)(cfunc)->func)(self, &__pyx_empty_tuple, 0, NULL)) :\
          (PY_VERSION_HEX >= 0x030700A0 && (cfunc)->flag == (METH_FASTCALL | METH_KEYWORDS) ?\
            (*(__Pyx_PyCFunctionFastWithKeywords)(void*)(PyCFunction)(cfunc)->func)(self, &__pyx_empty_tuple, 0, NULL) :\
            (likely((cfunc)->flag == (METH_VARARGS | METH_KEYWORDS)) ?  ((*(PyCFunctionWithKeywords)(void*)(PyCFunction)(cfunc)->func)(self, __pyx_empty_tuple, NULL)) :\
               ((cfunc)->flag == METH_VARARGS ?  (*((cfunc)->func))(self, __pyx_empty_tuple) :\
               __Pyx__CallUnboundCMethod0(cfunc, self)))))) :\
        __Pyx__CallUnboundCMethod0(cfunc, self))
#else
#define __Pyx_CallUnboundCMethod0(cfunc, self)  __Pyx__CallUnboundCMethod0(cfunc, self)
#endif

/* PyFloatBinop.proto */
#if !CYTHON_COMPILING_IN_PYPY
static PyObject* __Pyx_PyFloat_AddObjC(PyObject *op1, PyObject *op2, double floatval, int inplace, int zerodivision_check);
#else
#define __Pyx_PyFloat_AddObjC(op1, op2, floatval, inplace, zerodivision_check)\
    (inplace ? PyNumber_InPlaceAdd(op1, op2) : PyNumber_Add(op1, op2))
#endif

/* IterNext.proto */
#define __Pyx_PyIter_Next(obj) __Pyx_PyIter_Next2(obj, NULL)
static CYTHON_INLINE PyObject *__Pyx_PyIter_Next2(PyObject *, PyObject *);

/* GetAttr3.proto */
static CYTHON_INLINE PyObject *__Pyx_GetAttr3(PyObject *, PyObject *, PyObject *);

/* CallableCheck.proto */
#if CYTHON_USE_TYPE_SLOTS && PY_MAJOR_VERSION >= 3
#define __Pyx_PyCallable_Check(obj)   (Py_TYPE(obj)->tp_call != NULL)
#else
#define __Pyx_PyCallable_Check(obj)   PyCallable_Check(obj)
#endif

/* PyIntCompare.proto */
static CYTHON_INLINE PyObject* __Pyx_PyInt_EqObjC(PyObject *op1, PyObject *op2, long intval, long inplace);

/* IncludeStringH.proto */
#include <string.h>

/* BytesEquals.proto */
static CYTHON_INLINE int __Pyx_PyBytes_Equals(PyObject* s1, PyObject* s2, int equals);

/* SliceObject.proto */
static CYTHON_INLINE PyObject* __Pyx_PyObject_GetSlice(
        PyObject* obj, Py_ssize_t cstart, Py_ssize_t cstop,
        PyObject** py_start, PyObject** py_stop, PyObject** py_slice,
        int has_cstart, int has_cstop, int wraparound);

/* PyDictContains.proto */
static CYTHON_INLINE int __Pyx_PyDict_ContainsTF(PyObject* item, PyObject* dict, int eq) {
    int result = PyDict_Contains(dict, item);
    return unlikely(result < 0) ? result : (result == (eq == Py_EQ));
}

/* DictGetItem.proto */
#if PY_MAJOR_VERSION >= 3 && !CYTHON_COMPILING_IN_PYPY
static PyObject *__Pyx_PyDict_GetItem(PyObject *d, PyObject* key);
#define __Pyx_PyObject_Dict_GetItem(obj, name)\
    (likely(PyDict_CheckExact(obj)) ?\
     __Pyx_PyDict_GetItem(obj, name) : PyObject_GetItem(obj, name))
#else
#define __Pyx_PyDict_GetItem(d, key) PyObject_GetItem(d, key)
#define __Pyx_PyObject_Dict_GetItem(obj, name)  PyObject_GetItem(obj, name)
#endif

/* PySequenceContains.proto */
static CYTHON_INLINE int __Pyx_PySequence_ContainsTF(PyObject* item, PyObject* seq, int eq) {
    int result = PySequence_Contains(seq, item);
    return unlikely(result < 0) ? result : (result == (eq == Py_EQ));
}

/* StringJoin.proto */
#if PY_MAJOR_VERSION < 3
#define __Pyx_PyString_Join __Pyx_PyBytes_Join
#define __Pyx_PyBaseString_Join(s, v) (PyUnicode_CheckExact(s) ? PyUnicode_Join(s, v) : __Pyx_PyBytes_Join(s, v))
#else
#define __Pyx_PyString_Join PyUnicode_Join
#define __Pyx_PyBaseString_Join PyUnicode_Join
#endif
#if CYTHON_COMPILING_IN_CPYTHON
    #if PY_MAJOR_VERSION < 3
    #define __Pyx_PyBytes_Join _PyString_Join
    #else
    #define __Pyx_PyBytes_Join _PyBytes_Join
    #endif
#else
static CYTHON_INLINE PyObject* __Pyx_PyBytes_Join(PyObject* sep, PyObject* values);
#endif

/* SetItemInt.proto */
#define __Pyx_SetItemInt(o, i, v, type, is_signed, to_py_func, is_list, wraparound, boundscheck)\
    (__Pyx_fits_Py_ssize_t(i, type, is_signed) ?\
    __Pyx_SetItemInt_Fast(o, (Py_ssize_t)i, v, is_list, wraparound, boundscheck) :\
    (is_list ? (PyErr_SetString(PyExc_IndexError, "list assignment index out of range"), -1) :\
               __Pyx_SetItemInt_Generic(o, to_py_func(i), v)))
static int __Pyx_SetItemInt_Generic(PyObject *o, PyObject *j, PyObject *v);
static CYTHON_INLINE int __Pyx_SetItemInt_Fast(PyObject *o, Py_ssize_t i, PyObject *v,
                                               int is_list, int wraparound, int boundscheck);

/* FastTypeChecks.proto */
#if CYTHON_COMPILING_IN_CPYTHON
#define __Pyx_TypeCheck(obj, type) __Pyx_IsSubtype(Py_TYPE(obj), (PyTypeObject *)type)
static CYTHON_INLINE int __Pyx_IsSubtype(PyTypeObject *a, PyTypeObject *b);
static CYTHON_INLINE int __Pyx_PyErr_GivenExceptionMatches(PyObject *err, PyObject *type);
static CYTHON_INLINE int __Pyx_PyErr_GivenExceptionMatches2(PyObject *err, PyObject *type1, PyObject *type2);
#else
#define __Pyx_TypeCheck(obj, type) PyObject_TypeCheck(obj, (PyTypeObject *)type)
#define __Pyx_PyErr_GivenExceptionMatches(err, type) PyErr_GivenExceptionMatches(err, type)
#define __Pyx_PyErr_GivenExceptionMatches2(err, type1, type2) (PyErr_GivenExceptionMatches(err, type1) || PyErr_GivenExceptionMatches(err, type2))
#endif
#define __Pyx_PyException_Check(obj) __Pyx_TypeCheck(obj, PyExc_Exception)

/* PyFloatBinop.proto */
#if !CYTHON_COMPILING_IN_PYPY
static PyObject* __Pyx_PyFloat_DivideObjC(PyObject *op1, PyObject *op2, double floatval, int inplace, int zerodivision_check);
#else
#define __Pyx_PyFloat_DivideObjC(op1, op2, floatval, inplace, zerodivision_check)\
    ((inplace ? __Pyx_PyNumber_InPlaceDivide(op1, op2) : __Pyx_PyNumber_Divide(op1, op2)))
    #endif

/* SwapException.proto */
#if CYTHON_FAST_THREAD_STATE
#define __Pyx_ExceptionSwap(type, value, tb)  __Pyx__ExceptionSwap(__pyx_tstate, type, value, tb)
static CYTHON_INLINE void __Pyx__ExceptionSwap(PyThreadState *tstate, PyObject **type, PyObject **value, PyObject **tb);
#else
static CYTHON_INLINE void __Pyx_ExceptionSwap(PyObject **type, PyObject **value, PyObject **tb);
#endif

/* Import.proto */
static PyObject *__Pyx_Import(PyObject *name, PyObject *from_list, int level);

/* PyObjectSetAttrStr.proto */
#if CYTHON_USE_TYPE_SLOTS
#define __Pyx_PyObject_DelAttrStr(o,n) __Pyx_PyObject_SetAttrStr(o, n, NULL)
static CYTHON_INLINE int __Pyx_PyObject_SetAttrStr(PyObject* obj, PyObject* attr_name, PyObject* value);
#else
#define __Pyx_PyObject_DelAttrStr(o,n)   PyObject_DelAttr(o,n)
#define __Pyx_PyObject_SetAttrStr(o,n,v) PyObject_SetAttr(o,n,v)
#endif

/* PyIntBinop.proto */
#if !CYTHON_COMPILING_IN_PYPY
static PyObject* __Pyx_PyInt_SubtractObjC(PyObject *op1, PyObject *op2, long intval, int inplace, int zerodivision_check);
#else
#define __Pyx_PyInt_SubtractObjC(op1, op2, intval, inplace, zerodivision_check)\
    (inplace ? PyNumber_InPlaceSubtract(op1, op2) : PyNumber_Subtract(op1, op2))
#endif

/* StopAsyncIteration.proto */
#define __Pyx_StopAsyncIteration_USED
static PyObject *__Pyx_PyExc_StopAsyncIteration;
static int __pyx_StopAsyncIteration_init(void);

/* CoroutineBase.proto */
typedef PyObject *(*__pyx_coroutine_body_t)(PyObject *, PyThreadState *, PyObject *);
#if CYTHON_USE_EXC_INFO_STACK
#define __Pyx_ExcInfoStruct  _PyErr_StackItem
#else
typedef struct {
    PyObject *exc_type;
    PyObject *exc_value;
    PyObject *exc_traceback;
} __Pyx_ExcInfoStruct;
#endif
typedef struct {
    PyObject_HEAD
    __pyx_coroutine_body_t body;
    PyObject *closure;
    __Pyx_ExcInfoStruct gi_exc_state;
    PyObject *gi_weakreflist;
    PyObject *classobj;
    PyObject *yieldfrom;
    PyObject *gi_name;
    PyObject *gi_qualname;
    PyObject *gi_modulename;
    PyObject *gi_code;
    PyObject *gi_frame;
    int resume_label;
    char is_running;
} __pyx_CoroutineObject;
static __pyx_CoroutineObject *__Pyx__Coroutine_New(
    PyTypeObject *type, __pyx_coroutine_body_t body, PyObject *code, PyObject *closure,
    PyObject *name, PyObject *qualname, PyObject *module_name);
static __pyx_CoroutineObject *__Pyx__Coroutine_NewInit(
            __pyx_CoroutineObject *gen, __pyx_coroutine_body_t body, PyObject *code, PyObject *closure,
            PyObject *name, PyObject *qualname, PyObject *module_name);
static CYTHON_INLINE void __Pyx_Coroutine_ExceptionClear(__Pyx_ExcInfoStruct *self);
static int __Pyx_Coroutine_clear(PyObject *self);
static PyObject *__Pyx_Coroutine_Send(PyObject *self, PyObject *value);
static PyObject *__Pyx_Coroutine_Close(PyObject *self);
static PyObject *__Pyx_Coroutine_Throw(PyObject *gen, PyObject *args);
#if CYTHON_USE_EXC_INFO_STACK
#define __Pyx_Coroutine_SwapException(self)
#define __Pyx_Coroutine_ResetAndClearException(self)  __Pyx_Coroutine_ExceptionClear(&(self)->gi_exc_state)
#else
#define __Pyx_Coroutine_SwapException(self) {\
    __Pyx_ExceptionSwap(&(self)->gi_exc_state.exc_type, &(self)->gi_exc_state.exc_value, &(self)->gi_exc_state.exc_traceback);\
    __Pyx_Coroutine_ResetFrameBackpointer(&(self)->gi_exc_state);\
    }
#define __Pyx_Coroutine_ResetAndClearException(self) {\
    __Pyx_ExceptionReset((self)->gi_exc_state.exc_type, (self)->gi_exc_state.exc_value, (self)->gi_exc_state.exc_traceback);\
    (self)->gi_exc_state.exc_type = (self)->gi_exc_state.exc_value = (self)->gi_exc_state.exc_traceback = NULL;\
    }
#endif
#if CYTHON_FAST_THREAD_STATE
#define __Pyx_PyGen_FetchStopIterationValue(pvalue)\
    __Pyx_PyGen__FetchStopIterationValue(__pyx_tstate, pvalue)
#else
#define __Pyx_PyGen_FetchStopIterationValue(pvalue)\
    __Pyx_PyGen__FetchStopIterationValue(__Pyx_PyThreadState_Current, pvalue)
#endif
static int __Pyx_PyGen__FetchStopIterationValue(PyThreadState *tstate, PyObject **pvalue);
static CYTHON_INLINE void __Pyx_Coroutine_ResetFrameBackpointer(__Pyx_ExcInfoStruct *exc_state);

/* PyObject_GenericGetAttrNoDict.proto */
#if CYTHON_USE_TYPE_SLOTS && CYTHON_USE_PYTYPE_LOOKUP && PY_VERSION_HEX < 0x03070000
static CYTHON_INLINE PyObject* __Pyx_PyObject_GenericGetAttrNoDict(PyObject* obj, PyObject* attr_name);
#else
#define __Pyx_PyObject_GenericGetAttrNoDict PyObject_GenericGetAttr
#endif

/* PatchModuleWithCoroutine.proto */
static PyObject* __Pyx_Coroutine_patch_module(PyObject* module, const char* py_code);

/* PatchGeneratorABC.proto */
static int __Pyx_patch_abc(void);

/* Coroutine.proto */
#define __Pyx_Coroutine_USED
static PyTypeObject *__pyx_CoroutineType = 0;
static PyTypeObject *__pyx_CoroutineAwaitType = 0;
#define __Pyx_Coroutine_CheckExact(obj) (Py_TYPE(obj) == __pyx_CoroutineType)
#define __Pyx_Coroutine_Check(obj) __Pyx_Coroutine_CheckExact(obj)
#define __Pyx_CoroutineAwait_CheckExact(obj) (Py_TYPE(obj) == __pyx_CoroutineAwaitType)
#define __Pyx_Coroutine_New(body, code, closure, name, qualname, module_name)\
    __Pyx__Coroutine_New(__pyx_CoroutineType, body, code, closure, name, qualname, module_name)
static int __pyx_Coroutine_init(void);
static PyObject *__Pyx__Coroutine_await(PyObject *coroutine);
typedef struct {
    PyObject_HEAD
    PyObject *coroutine;
} __pyx_CoroutineAwaitObject;
static PyObject *__Pyx_CoroutineAwait_Close(__pyx_CoroutineAwaitObject *self, PyObject *arg);
static PyObject *__Pyx_CoroutineAwait_Throw(__pyx_CoroutineAwaitObject *self, PyObject *args);

/* GetAwaitIter.proto */
static CYTHON_INLINE PyObject *__Pyx_Coroutine_GetAwaitableIter(PyObject *o);
static PyObject *__Pyx__Coroutine_GetAwaitableIter(PyObject *o);

/* CoroutineYieldFrom.proto */
static CYTHON_INLINE PyObject* __Pyx_Coroutine_Yield_From(__pyx_CoroutineObject *gen, PyObject *source);

/* PyObjectCallMethod0.proto */
static PyObject* __Pyx_PyObject_CallMethod0(PyObject* obj, PyObject* method_name);

/* UnpackTupleError.proto */
static void __Pyx_UnpackTupleError(PyObject *, Py_ssize_t index);

/* UnpackTuple2.proto */
#define __Pyx_unpack_tuple2(tuple, value1, value2, is_tuple, has_known_size, decref_tuple)\
    (likely(is_tuple || PyTuple_Check(tuple)) ?\
        (likely(has_known_size || PyTuple_GET_SIZE(tuple) == 2) ?\
            __Pyx_unpack_tuple2_exact(tuple, value1, value2, decref_tuple) :\
            (__Pyx_UnpackTupleError(tuple, 2), -1)) :\
        __Pyx_unpack_tuple2_generic(tuple, value1, value2, has_known_size, decref_tuple))
static CYTHON_INLINE int __Pyx_unpack_tuple2_exact(
    PyObject* tuple, PyObject** value1, PyObject** value2, int decref_tuple);
static int __Pyx_unpack_tuple2_generic(
    PyObject* tuple, PyObject** value1, PyObject** value2, int has_known_size, int decref_tuple);

/* dict_iter.proto */
static CYTHON_INLINE PyObject* __Pyx_dict_iterator(PyObject* dict, int is_dict, PyObject* method_name,
                                                   Py_ssize_t* p_orig_length, int* p_is_dict);
static CYTHON_INLINE int __Pyx_dict_iter_next(PyObject* dict_or_iter, Py_ssize_t orig_length, Py_ssize_t* ppos,
                                              PyObject** pkey, PyObject** pvalue, PyObject** pitem, int is_dict);

/* dict_getitem_default.proto */
static PyObject* __Pyx_PyDict_GetItemDefault(PyObject* d, PyObject* key, PyObject* default_value);

/* ReturnWithStopIteration.proto */
#define __Pyx_ReturnWithStopIteration(value)\
    if (value == Py_None) PyErr_SetNone(PyExc_StopIteration); else __Pyx__ReturnWithStopIteration(value)
static void __Pyx__ReturnWithStopIteration(PyObject* value);

/* ImportFrom.proto */
static PyObject* __Pyx_ImportFrom(PyObject* module, PyObject* name);

/* ObjectGetItem.proto */
#if CYTHON_USE_TYPE_SLOTS
static CYTHON_INLINE PyObject *__Pyx_PyObject_GetItem(PyObject *obj, PyObject* key);
#else
#define __Pyx_PyObject_GetItem(obj, key)  PyObject_GetItem(obj, key)
#endif

/* PyObjectFormatSimple.proto */
#if CYTHON_COMPILING_IN_PYPY
    #define __Pyx_PyObject_FormatSimple(s, f) (\
        likely(PyUnicode_CheckExact(s)) ? (Py_INCREF(s), s) :\
        PyObject_Format(s, f))
#elif PY_MAJOR_VERSION < 3
    #define __Pyx_PyObject_FormatSimple(s, f) (\
        likely(PyUnicode_CheckExact(s)) ? (Py_INCREF(s), s) :\
        likely(PyString_CheckExact(s)) ? PyUnicode_FromEncodedObject(s, NULL, "strict") :\
        PyObject_Format(s, f))
#elif CYTHON_USE_TYPE_SLOTS
    #define __Pyx_PyObject_FormatSimple(s, f) (\
        likely(PyUnicode_CheckExact(s)) ? (Py_INCREF(s), s) :\
        likely(PyLong_CheckExact(s)) ? PyLong_Type.tp_str(s) :\
        likely(PyFloat_CheckExact(s)) ? PyFloat_Type.tp_str(s) :\
        PyObject_Format(s, f))
#else
    #define __Pyx_PyObject_FormatSimple(s, f) (\
        likely(PyUnicode_CheckExact(s)) ? (Py_INCREF(s), s) :\
        PyObject_Format(s, f))
#endif

/* JoinPyUnicode.proto */
static PyObject* __Pyx_PyUnicode_Join(PyObject* value_tuple, Py_ssize_t value_count, Py_ssize_t result_ulength,
                                      Py_UCS4 max_char);

/* UnicodeEquals.proto */
static CYTHON_INLINE int __Pyx_PyUnicode_Equals(PyObject* s1, PyObject* s2, int equals);

/* StrEquals.proto */
#if PY_MAJOR_VERSION >= 3
#define __Pyx_PyString_Equals __Pyx_PyUnicode_Equals
#else
#define __Pyx_PyString_Equals __Pyx_PyBytes_Equals
#endif

/* AsyncIter.proto */
static CYTHON_INLINE PyObject *__Pyx_Coroutine_GetAsyncIter(PyObject *o);
static CYTHON_INLINE PyObject *__Pyx_Coroutine_AsyncIterNext(PyObject *o);

/* ListExtend.proto */
static CYTHON_INLINE int __Pyx_PyList_Extend(PyObject* L, PyObject* v) {
#if CYTHON_COMPILING_IN_CPYTHON
    PyObject* none = _PyList_Extend((PyListObject*)L, v);
    if (unlikely(!none))
        return -1;
    Py_DECREF(none);
    return 0;
#else
    return PyList_SetSlice(L, PY_SSIZE_T_MAX, PY_SSIZE_T_MAX, v);
#endif
}

/* CallNextTpTraverse.proto */
static int __Pyx_call_next_tp_traverse(PyObject* obj, visitproc v, void *a, traverseproc current_tp_traverse);

/* CallNextTpClear.proto */
static void __Pyx_call_next_tp_clear(PyObject* obj, inquiry current_tp_dealloc);

/* PyObject_GenericGetAttr.proto */
#if CYTHON_USE_TYPE_SLOTS && CYTHON_USE_PYTYPE_LOOKUP && PY_VERSION_HEX < 0x03070000
static PyObject* __Pyx_PyObject_GenericGetAttr(PyObject* obj, PyObject* attr_name);
#else
#define __Pyx_PyObject_GenericGetAttr PyObject_GenericGetAttr
#endif

/* SetVTable.proto */
static int __Pyx_SetVtable(PyObject *dict, void *vtable);

/* PyObjectGetAttrStrNoError.proto */
static CYTHON_INLINE PyObject* __Pyx_PyObject_GetAttrStrNoError(PyObject* obj, PyObject* attr_name);

/* SetupReduce.proto */
static int __Pyx_setup_reduce(PyObject* type_obj);

/* TypeImport.proto */
#ifndef __PYX_HAVE_RT_ImportType_proto
#define __PYX_HAVE_RT_ImportType_proto
enum __Pyx_ImportType_CheckSize {
   __Pyx_ImportType_CheckSize_Error = 0,
   __Pyx_ImportType_CheckSize_Warn = 1,
   __Pyx_ImportType_CheckSize_Ignore = 2
};
static PyTypeObject *__Pyx_ImportType(PyObject* module, const char *module_name, const char *class_name, size_t size, enum __Pyx_ImportType_CheckSize check_size);
#endif

/* PatchInspect.proto */
static PyObject* __Pyx_patch_inspect(PyObject* module);

/* PatchAsyncIO.proto */
static PyObject* __Pyx_patch_asyncio(PyObject* module);

/* SetNameInClass.proto */
#if CYTHON_COMPILING_IN_CPYTHON && PY_VERSION_HEX >= 0x030500A1
#define __Pyx_SetNameInClass(ns, name, value)\
    (likely(PyDict_CheckExact(ns)) ? _PyDict_SetItem_KnownHash(ns, name, value, ((PyASCIIObject *) name)->hash) : PyObject_SetItem(ns, name, value))
#elif CYTHON_COMPILING_IN_CPYTHON
#define __Pyx_SetNameInClass(ns, name, value)\
    (likely(PyDict_CheckExact(ns)) ? PyDict_SetItem(ns, name, value) : PyObject_SetItem(ns, name, value))
#else
#define __Pyx_SetNameInClass(ns, name, value)  PyObject_SetItem(ns, name, value)
#endif

/* CalculateMetaclass.proto */
static PyObject *__Pyx_CalculateMetaclass(PyTypeObject *metaclass, PyObject *bases);

/* Py3ClassCreate.proto */
static PyObject *__Pyx_Py3MetaclassPrepare(PyObject *metaclass, PyObject *bases, PyObject *name, PyObject *qualname,
                                           PyObject *mkw, PyObject *modname, PyObject *doc);
static PyObject *__Pyx_Py3ClassCreate(PyObject *metaclass, PyObject *name, PyObject *bases, PyObject *dict,
                                      PyObject *mkw, int calculate_metaclass, int allow_py2_metaclass);

/* CLineInTraceback.proto */
#ifdef CYTHON_CLINE_IN_TRACEBACK
#define __Pyx_CLineForTraceback(tstate, c_line)  (((CYTHON_CLINE_IN_TRACEBACK)) ? c_line : 0)
#else
static int __Pyx_CLineForTraceback(PyThreadState *tstate, int c_line);
#endif

/* CodeObjectCache.proto */
typedef struct {
    PyCodeObject* code_object;
    int code_line;
} __Pyx_CodeObjectCacheEntry;
struct __Pyx_CodeObjectCache {
    int count;
    int max_count;
    __Pyx_CodeObjectCacheEntry* entries;
};
static struct __Pyx_CodeObjectCache __pyx_code_cache = {0,0,NULL};
static int __pyx_bisect_code_objects(__Pyx_CodeObjectCacheEntry* entries, int count, int code_line);
static PyCodeObject *__pyx_find_code_object(int code_line);
static void __pyx_insert_code_object(int code_line, PyCodeObject* code_object);

/* AddTraceback.proto */
static void __Pyx_AddTraceback(const char *funcname, int c_line,
                               int py_line, const char *filename);

/* None.proto */
#include <new>

/* GCCDiagnostics.proto */
#if defined(__GNUC__) && (__GNUC__ > 4 || (__GNUC__ == 4 && __GNUC_MINOR__ >= 6))
#define __Pyx_HAS_GCC_DIAGNOSTIC
#endif

/* CIntToPy.proto */
static CYTHON_INLINE PyObject* __Pyx_PyInt_From_enum____pyx_t_4grpc_7_cython_6cygrpc_AioServerStatus(enum __pyx_t_4grpc_7_cython_6cygrpc_AioServerStatus value);

/* CIntFromPy.proto */
static CYTHON_INLINE enum __pyx_t_4grpc_7_cython_6cygrpc_AioServerStatus __Pyx_PyInt_As_enum____pyx_t_4grpc_7_cython_6cygrpc_AioServerStatus(PyObject *);

/* CIntFromPy.proto */
static CYTHON_INLINE grpc_status_code __Pyx_PyInt_As_grpc_status_code(PyObject *);

/* CIntFromPy.proto */
static CYTHON_INLINE int __Pyx_PyInt_As_int(PyObject *);

/* CIntFromPy.proto */
static CYTHON_INLINE grpc_connectivity_state __Pyx_PyInt_As_grpc_connectivity_state(PyObject *);

/* CIntToPy.proto */
static CYTHON_INLINE PyObject* __Pyx_PyInt_From_grpc_local_connect_type(grpc_local_connect_type value);

/* CIntFromPy.proto */
static CYTHON_INLINE grpc_local_connect_type __Pyx_PyInt_As_grpc_local_connect_type(PyObject *);

/* CIntFromPy.proto */
static CYTHON_INLINE grpc_completion_type __Pyx_PyInt_As_grpc_completion_type(PyObject *);

/* CIntToPy.proto */
static CYTHON_INLINE PyObject* __Pyx_PyInt_From_int(int value);

/* CIntToPy.proto */
static CYTHON_INLINE PyObject* __Pyx_PyInt_From_grpc_connectivity_state(grpc_connectivity_state value);

/* CIntToPy.proto */
static CYTHON_INLINE PyObject* __Pyx_PyInt_From_grpc_status_code(grpc_status_code value);

/* CIntToPy.proto */
static CYTHON_INLINE PyObject* __Pyx_PyInt_From_grpc_call_error(grpc_call_error value);

/* CIntToPy.proto */
static CYTHON_INLINE PyObject* __Pyx_PyInt_From_grpc_completion_type(grpc_completion_type value);

/* CIntToPy.proto */
static CYTHON_INLINE PyObject* __Pyx_PyInt_From_grpc_op_type(grpc_op_type value);

/* CIntToPy.proto */
static CYTHON_INLINE PyObject* __Pyx_PyInt_From_grpc_compression_algorithm(grpc_compression_algorithm value);

/* CIntToPy.proto */
static CYTHON_INLINE PyObject* __Pyx_PyInt_From_grpc_compression_level(grpc_compression_level value);

/* CIntFromPy.proto */
static CYTHON_INLINE grpc_compression_algorithm __Pyx_PyInt_As_grpc_compression_algorithm(PyObject *);

/* CIntFromPy.proto */
static CYTHON_INLINE long __Pyx_PyInt_As_long(PyObject *);

/* CIntToPy.proto */
static CYTHON_INLINE PyObject* __Pyx_PyInt_From_long(long value);

/* CIntFromPy.proto */
static CYTHON_INLINE grpc_call_error __Pyx_PyInt_As_grpc_call_error(PyObject *);

/* CIntFromPy.proto */
static CYTHON_INLINE size_t __Pyx_PyInt_As_size_t(PyObject *);

/* CIntToPy.proto */
static CYTHON_INLINE PyObject* __Pyx_PyInt_From_unsigned_int(unsigned int value);

/* CIntFromPy.proto */
static CYTHON_INLINE unsigned int __Pyx_PyInt_As_unsigned_int(PyObject *);

/* Generator.proto */
#define __Pyx_Generator_USED
static PyTypeObject *__pyx_GeneratorType = 0;
#define __Pyx_Generator_CheckExact(obj) (Py_TYPE(obj) == __pyx_GeneratorType)
#define __Pyx_Generator_New(body, code, closure, name, qualname, module_name)\
    __Pyx__Coroutine_New(__pyx_GeneratorType, body, code, closure, name, qualname, module_name)
static PyObject *__Pyx_Generator_Next(PyObject *self);
static int __pyx_Generator_init(void);

/* AsyncGenerator.proto */
#define __Pyx_AsyncGen_USED
typedef struct {
    __pyx_CoroutineObject coro;
    PyObject *ag_finalizer;
    int ag_hooks_inited;
    int ag_closed;
} __pyx_PyAsyncGenObject;
static PyTypeObject *__pyx__PyAsyncGenWrappedValueType = 0;
static PyTypeObject *__pyx__PyAsyncGenASendType = 0;
static PyTypeObject *__pyx__PyAsyncGenAThrowType = 0;
static PyTypeObject *__pyx_AsyncGenType = 0;
#define __Pyx_AsyncGen_CheckExact(obj) (Py_TYPE(obj) == __pyx_AsyncGenType)
#define __pyx_PyAsyncGenASend_CheckExact(o)\
                    (Py_TYPE(o) == __pyx__PyAsyncGenASendType)
#define __pyx_PyAsyncGenAThrow_CheckExact(o)\
                    (Py_TYPE(o) == __pyx__PyAsyncGenAThrowType)
static PyObject *__Pyx_async_gen_anext(PyObject *o);
static CYTHON_INLINE PyObject *__Pyx_async_gen_asend_iternext(PyObject *o);
static PyObject *__Pyx_async_gen_asend_send(PyObject *o, PyObject *arg);
static PyObject *__Pyx_async_gen_asend_close(PyObject *o, PyObject *args);
static PyObject *__Pyx_async_gen_athrow_close(PyObject *o, PyObject *args);
static PyObject *__Pyx__PyAsyncGenValueWrapperNew(PyObject *val);
static __pyx_CoroutineObject *__Pyx_AsyncGen_New(
            __pyx_coroutine_body_t body, PyObject *code, PyObject *closure,
            PyObject *name, PyObject *qualname, PyObject *module_name) {
    __pyx_PyAsyncGenObject *gen = PyObject_GC_New(__pyx_PyAsyncGenObject, __pyx_AsyncGenType);
    if (unlikely(!gen))
        return NULL;
    gen->ag_finalizer = NULL;
    gen->ag_closed = 0;
    gen->ag_hooks_inited = 0;
    return __Pyx__Coroutine_NewInit((__pyx_CoroutineObject*)gen, body, code, closure, name, qualname, module_name);
}
static int __pyx_AsyncGen_init(void);
static void __Pyx_PyAsyncGen_Fini(void);

/* CheckBinaryVersion.proto */
static int __Pyx_check_binary_version(void);

/* VoidPtrExport.proto */
static int __Pyx_ExportVoidPtr(PyObject *name, void *p, const char *sig);

/* FunctionExport.proto */
static int __Pyx_ExportFunction(const char *name, void (*f)(void), const char *sig);

/* InitStrings.proto */
static int __Pyx_InitStrings(__Pyx_StringTabEntry *t);

static void __pyx_f_4grpc_7_cython_6cygrpc_11_ChannelArg_c(struct __pyx_obj_4grpc_7_cython_6cygrpc__ChannelArg *__pyx_v_self, PyObject *__pyx_v_argument, PyObject *__pyx_v_references); /* proto*/
static grpc_channel_args *__pyx_f_4grpc_7_cython_6cygrpc_12_ChannelArgs_c_args(struct __pyx_obj_4grpc_7_cython_6cygrpc__ChannelArgs *__pyx_v_self); /* proto*/
static grpc_call_credentials *__pyx_f_4grpc_7_cython_6cygrpc_15CallCredentials_c(CYTHON_UNUSED struct __pyx_obj_4grpc_7_cython_6cygrpc_CallCredentials *__pyx_v_self); /* proto*/
static grpc_call_credentials *__pyx_f_4grpc_7_cython_6cygrpc_29MetadataPluginCallCredentials_c(struct __pyx_obj_4grpc_7_cython_6cygrpc_MetadataPluginCallCredentials *__pyx_v_self); /* proto*/
static grpc_call_credentials *__pyx_f_4grpc_7_cython_6cygrpc_24CompositeCallCredentials_c(struct __pyx_obj_4grpc_7_cython_6cygrpc_CompositeCallCredentials *__pyx_v_self); /* proto*/
static grpc_channel_credentials *__pyx_f_4grpc_7_cython_6cygrpc_18ChannelCredentials_c(CYTHON_UNUSED struct __pyx_obj_4grpc_7_cython_6cygrpc_ChannelCredentials *__pyx_v_self); /* proto*/
static grpc_channel_credentials *__pyx_f_4grpc_7_cython_6cygrpc_21SSLChannelCredentials_c(struct __pyx_obj_4grpc_7_cython_6cygrpc_SSLChannelCredentials *__pyx_v_self); /* proto*/
static grpc_channel_credentials *__pyx_f_4grpc_7_cython_6cygrpc_27CompositeChannelCredentials_c(struct __pyx_obj_4grpc_7_cython_6cygrpc_CompositeChannelCredentials *__pyx_v_self); /* proto*/
static grpc_channel_credentials *__pyx_f_4grpc_7_cython_6cygrpc_21XDSChannelCredentials_c(struct __pyx_obj_4grpc_7_cython_6cygrpc_XDSChannelCredentials *__pyx_v_self); /* proto*/
static grpc_channel_credentials *__pyx_f_4grpc_7_cython_6cygrpc_23LocalChannelCredentials_c(struct __pyx_obj_4grpc_7_cython_6cygrpc_LocalChannelCredentials *__pyx_v_self); /* proto*/
static grpc_channel_credentials *__pyx_f_4grpc_7_cython_6cygrpc_26InsecureChannelCredentials_c(CYTHON_UNUSED struct __pyx_obj_4grpc_7_cython_6cygrpc_InsecureChannelCredentials *__pyx_v_self); /* proto*/
static grpc_channel_credentials *__pyx_f_4grpc_7_cython_6cygrpc_22ALTSChannelCredentials_c(struct __pyx_obj_4grpc_7_cython_6cygrpc_ALTSChannelCredentials *__pyx_v_self); /* proto*/
static grpc_channel_credentials *__pyx_f_4grpc_7_cython_6cygrpc_31ComputeEngineChannelCredentials_c(struct __pyx_obj_4grpc_7_cython_6cygrpc_ComputeEngineChannelCredentials *__pyx_v_self); /* proto*/
static PyObject *__pyx_f_4grpc_7_cython_6cygrpc_15CompletionQueue__interpret_event(struct __pyx_obj_4grpc_7_cython_6cygrpc_CompletionQueue *__pyx_v_self, grpc_event __pyx_v_c_event); /* proto*/
static void __pyx_f_4grpc_7_cython_6cygrpc_9Operation_c(CYTHON_UNUSED struct __pyx_obj_4grpc_7_cython_6cygrpc_Operation *__pyx_v_self); /* proto*/
static void __pyx_f_4grpc_7_cython_6cygrpc_9Operation_un_c(CYTHON_UNUSED struct __pyx_obj_4grpc_7_cython_6cygrpc_Operation *__pyx_v_self); /* proto*/
static void __pyx_f_4grpc_7_cython_6cygrpc_28SendInitialMetadataOperation_c(struct __pyx_obj_4grpc_7_cython_6cygrpc_SendInitialMetadataOperation *__pyx_v_self); /* proto*/
static void __pyx_f_4grpc_7_cython_6cygrpc_28SendInitialMetadataOperation_un_c(struct __pyx_obj_4grpc_7_cython_6cygrpc_SendInitialMetadataOperation *__pyx_v_self); /* proto*/
static void __pyx_f_4grpc_7_cython_6cygrpc_20SendMessageOperation_c(struct __pyx_obj_4grpc_7_cython_6cygrpc_SendMessageOperation *__pyx_v_self); /* proto*/
static void __pyx_f_4grpc_7_cython_6cygrpc_20SendMessageOperation_un_c(struct __pyx_obj_4grpc_7_cython_6cygrpc_SendMessageOperation *__pyx_v_self); /* proto*/
static void __pyx_f_4grpc_7_cython_6cygrpc_28SendCloseFromClientOperation_c(struct __pyx_obj_4grpc_7_cython_6cygrpc_SendCloseFromClientOperation *__pyx_v_self); /* proto*/
static void __pyx_f_4grpc_7_cython_6cygrpc_28SendCloseFromClientOperation_un_c(CYTHON_UNUSED struct __pyx_obj_4grpc_7_cython_6cygrpc_SendCloseFromClientOperation *__pyx_v_self); /* proto*/
static void __pyx_f_4grpc_7_cython_6cygrpc_29SendStatusFromServerOperation_c(struct __pyx_obj_4grpc_7_cython_6cygrpc_SendStatusFromServerOperation *__pyx_v_self); /* proto*/
static void __pyx_f_4grpc_7_cython_6cygrpc_29SendStatusFromServerOperation_un_c(struct __pyx_obj_4grpc_7_cython_6cygrpc_SendStatusFromServerOperation *__pyx_v_self); /* proto*/
static void __pyx_f_4grpc_7_cython_6cygrpc_31ReceiveInitialMetadataOperation_c(struct __pyx_obj_4grpc_7_cython_6cygrpc_ReceiveInitialMetadataOperation *__pyx_v_self); /* proto*/
static void __pyx_f_4grpc_7_cython_6cygrpc_31ReceiveInitialMetadataOperation_un_c(struct __pyx_obj_4grpc_7_cython_6cygrpc_ReceiveInitialMetadataOperation *__pyx_v_self); /* proto*/
static void __pyx_f_4grpc_7_cython_6cygrpc_23ReceiveMessageOperation_c(struct __pyx_obj_4grpc_7_cython_6cygrpc_ReceiveMessageOperation *__pyx_v_self); /* proto*/
static void __pyx_f_4grpc_7_cython_6cygrpc_23ReceiveMessageOperation_un_c(struct __pyx_obj_4grpc_7_cython_6cygrpc_ReceiveMessageOperation *__pyx_v_self); /* proto*/
static void __pyx_f_4grpc_7_cython_6cygrpc_30ReceiveStatusOnClientOperation_c(struct __pyx_obj_4grpc_7_cython_6cygrpc_ReceiveStatusOnClientOperation *__pyx_v_self); /* proto*/
static void __pyx_f_4grpc_7_cython_6cygrpc_30ReceiveStatusOnClientOperation_un_c(struct __pyx_obj_4grpc_7_cython_6cygrpc_ReceiveStatusOnClientOperation *__pyx_v_self); /* proto*/
static void __pyx_f_4grpc_7_cython_6cygrpc_29ReceiveCloseOnServerOperation_c(struct __pyx_obj_4grpc_7_cython_6cygrpc_ReceiveCloseOnServerOperation *__pyx_v_self); /* proto*/
static void __pyx_f_4grpc_7_cython_6cygrpc_29ReceiveCloseOnServerOperation_un_c(struct __pyx_obj_4grpc_7_cython_6cygrpc_ReceiveCloseOnServerOperation *__pyx_v_self); /* proto*/
static PyObject *__pyx_f_4grpc_7_cython_6cygrpc_6Server__c_shutdown(struct __pyx_obj_4grpc_7_cython_6cygrpc_Server *__pyx_v_self, struct __pyx_obj_4grpc_7_cython_6cygrpc_CompletionQueue *__pyx_v_queue, PyObject *__pyx_v_tag); /* proto*/
static PyObject *__pyx_f_4grpc_7_cython_6cygrpc_6Server_notify_shutdown_complete(struct __pyx_obj_4grpc_7_cython_6cygrpc_Server *__pyx_v_self); /* proto*/
static PyObject *__pyx_f_4grpc_7_cython_6cygrpc_4_Tag_event(CYTHON_UNUSED struct __pyx_obj_4grpc_7_cython_6cygrpc__Tag *__pyx_v_self, CYTHON_UNUSED grpc_event __pyx_v_c_event); /* proto*/
struct __pyx_obj_4grpc_7_cython_6cygrpc_ConnectivityEvent *__pyx_f_4grpc_7_cython_6cygrpc_16_ConnectivityTag_event(struct __pyx_obj_4grpc_7_cython_6cygrpc__ConnectivityTag *__pyx_v_self, grpc_event __pyx_v_c_event); /* proto*/
struct __pyx_obj_4grpc_7_cython_6cygrpc_ConnectivityEvent *__pyx_f_4grpc_7_cython_6cygrpc_16_ConnectivityTag_event__pyx_wrap_1(struct __pyx_obj_4grpc_7_cython_6cygrpc__ConnectivityTag *__pyx_v_self, grpc_event __pyx_v_c_event); /* proto*/
static void __pyx_f_4grpc_7_cython_6cygrpc_15_RequestCallTag_prepare(struct __pyx_obj_4grpc_7_cython_6cygrpc__RequestCallTag *__pyx_v_self); /* proto*/
struct __pyx_obj_4grpc_7_cython_6cygrpc_RequestCallEvent *__pyx_f_4grpc_7_cython_6cygrpc_15_RequestCallTag_event(struct __pyx_obj_4grpc_7_cython_6cygrpc__RequestCallTag *__pyx_v_self, grpc_event __pyx_v_c_event); /* proto*/
struct __pyx_obj_4grpc_7_cython_6cygrpc_RequestCallEvent *__pyx_f_4grpc_7_cython_6cygrpc_15_RequestCallTag_event__pyx_wrap_1(struct __pyx_obj_4grpc_7_cython_6cygrpc__RequestCallTag *__pyx_v_self, grpc_event __pyx_v_c_event); /* proto*/
static void __pyx_f_4grpc_7_cython_6cygrpc_18_BatchOperationTag_prepare(struct __pyx_obj_4grpc_7_cython_6cygrpc__BatchOperationTag *__pyx_v_self); /* proto*/
struct __pyx_obj_4grpc_7_cython_6cygrpc_BatchOperationEvent *__pyx_f_4grpc_7_cython_6cygrpc_18_BatchOperationTag_event(struct __pyx_obj_4grpc_7_cython_6cygrpc__BatchOperationTag *__pyx_v_self, grpc_event __pyx_v_c_event); /* proto*/
struct __pyx_obj_4grpc_7_cython_6cygrpc_BatchOperationEvent *__pyx_f_4grpc_7_cython_6cygrpc_18_BatchOperationTag_event__pyx_wrap_1(struct __pyx_obj_4grpc_7_cython_6cygrpc__BatchOperationTag *__pyx_v_self, grpc_event __pyx_v_c_event); /* proto*/
struct __pyx_obj_4grpc_7_cython_6cygrpc_ServerShutdownEvent *__pyx_f_4grpc_7_cython_6cygrpc_18_ServerShutdownTag_event(struct __pyx_obj_4grpc_7_cython_6cygrpc__ServerShutdownTag *__pyx_v_self, grpc_event __pyx_v_c_event); /* proto*/
struct __pyx_obj_4grpc_7_cython_6cygrpc_ServerShutdownEvent *__pyx_f_4grpc_7_cython_6cygrpc_18_ServerShutdownTag_event__pyx_wrap_1(struct __pyx_obj_4grpc_7_cython_6cygrpc__ServerShutdownTag *__pyx_v_self, grpc_event __pyx_v_c_event); /* proto*/
static grpc_status_code __pyx_f_4grpc_7_cython_6cygrpc_12AioRpcStatus_code(struct __pyx_obj_4grpc_7_cython_6cygrpc_AioRpcStatus *__pyx_v_self, int __pyx_skip_dispatch); /* proto*/
static PyObject *__pyx_f_4grpc_7_cython_6cygrpc_12AioRpcStatus_details(struct __pyx_obj_4grpc_7_cython_6cygrpc_AioRpcStatus *__pyx_v_self, int __pyx_skip_dispatch); /* proto*/
static PyObject *__pyx_f_4grpc_7_cython_6cygrpc_12AioRpcStatus_trailing_metadata(struct __pyx_obj_4grpc_7_cython_6cygrpc_AioRpcStatus *__pyx_v_self, int __pyx_skip_dispatch); /* proto*/
static PyObject *__pyx_f_4grpc_7_cython_6cygrpc_12AioRpcStatus_debug_error_string(struct __pyx_obj_4grpc_7_cython_6cygrpc_AioRpcStatus *__pyx_v_self, int __pyx_skip_dispatch); /* proto*/
static grpc_status_code __pyx_f_4grpc_7_cython_6cygrpc_12AioRpcStatus_c_code(struct __pyx_obj_4grpc_7_cython_6cygrpc_AioRpcStatus *__pyx_v_self); /* proto*/
static grpc_completion_queue *__pyx_f_4grpc_7_cython_6cygrpc_19BaseCompletionQueue_c_ptr(struct __pyx_obj_4grpc_7_cython_6cygrpc_BaseCompletionQueue *__pyx_v_self); /* proto*/
static void __pyx_f_4grpc_7_cython_6cygrpc_21PollerCompletionQueue__poll(struct __pyx_obj_4grpc_7_cython_6cygrpc_PollerCompletionQueue *__pyx_v_self); /* proto*/
static PyObject *__pyx_f_4grpc_7_cython_6cygrpc_21PollerCompletionQueue_shutdown(struct __pyx_obj_4grpc_7_cython_6cygrpc_PollerCompletionQueue *__pyx_v_self); /* proto*/
static PyObject *__pyx_f_4grpc_7_cython_6cygrpc_22CallbackFailureHandler_handle(struct __pyx_obj_4grpc_7_cython_6cygrpc_CallbackFailureHandler *__pyx_v_self, PyObject *__pyx_v_future); /* proto*/
static void __pyx_f_4grpc_7_cython_6cygrpc_15CallbackWrapper_functor_run(grpc_completion_queue_functor *__pyx_v_functor, int __pyx_v_success); /* proto*/
static grpc_completion_queue_functor *__pyx_f_4grpc_7_cython_6cygrpc_15CallbackWrapper_c_functor(struct __pyx_obj_4grpc_7_cython_6cygrpc_CallbackWrapper *__pyx_v_self); /* proto*/
static void __pyx_f_4grpc_7_cython_6cygrpc_8_AioCall__create_grpc_call(struct __pyx_obj_4grpc_7_cython_6cygrpc__AioCall *__pyx_v_self, PyObject *__pyx_v_deadline, PyObject *__pyx_v_method, struct __pyx_obj_4grpc_7_cython_6cygrpc_CallCredentials *__pyx_v_credentials); /* proto*/
static void __pyx_f_4grpc_7_cython_6cygrpc_8_AioCall__set_status(struct __pyx_obj_4grpc_7_cython_6cygrpc__AioCall *__pyx_v_self, struct __pyx_obj_4grpc_7_cython_6cygrpc_AioRpcStatus *__pyx_v_status); /* proto*/
static void __pyx_f_4grpc_7_cython_6cygrpc_8_AioCall__set_initial_metadata(struct __pyx_obj_4grpc_7_cython_6cygrpc__AioCall *__pyx_v_self, PyObject *__pyx_v_initial_metadata); /* proto*/
static PyObject *__pyx_f_4grpc_7_cython_6cygrpc_8RPCState_method(struct __pyx_obj_4grpc_7_cython_6cygrpc_RPCState *__pyx_v_self); /* proto*/
static PyObject *__pyx_f_4grpc_7_cython_6cygrpc_8RPCState_invocation_metadata(struct __pyx_obj_4grpc_7_cython_6cygrpc_RPCState *__pyx_v_self); /* proto*/
static void __pyx_f_4grpc_7_cython_6cygrpc_8RPCState_raise_for_termination(struct __pyx_obj_4grpc_7_cython_6cygrpc_RPCState *__pyx_v_self); /* proto*/
static int __pyx_f_4grpc_7_cython_6cygrpc_8RPCState_get_write_flag(struct __pyx_obj_4grpc_7_cython_6cygrpc_RPCState *__pyx_v_self); /* proto*/
static struct __pyx_obj_4grpc_7_cython_6cygrpc_Operation *__pyx_f_4grpc_7_cython_6cygrpc_8RPCState_create_send_initial_metadata_op_if_not_sent(struct __pyx_obj_4grpc_7_cython_6cygrpc_RPCState *__pyx_v_self); /* proto*/
static PyObject *__pyx_f_4grpc_7_cython_6cygrpc_9AioServer_thread_pool(struct __pyx_obj_4grpc_7_cython_6cygrpc_AioServer *__pyx_v_self); /* proto*/

/* Module declarations from 'cpython.version' */

/* Module declarations from '__builtin__' */

/* Module declarations from 'cpython.type' */
static PyTypeObject *__pyx_ptype_7cpython_4type_type = 0;

/* Module declarations from 'libc.string' */

/* Module declarations from 'libc.stdio' */

/* Module declarations from 'cpython.object' */

/* Module declarations from 'cpython.ref' */

/* Module declarations from 'cpython.exc' */

/* Module declarations from 'cpython.module' */

/* Module declarations from 'cpython.mem' */

/* Module declarations from 'cpython.tuple' */

/* Module declarations from 'cpython.list' */

/* Module declarations from 'cpython.sequence' */

/* Module declarations from 'cpython.mapping' */

/* Module declarations from 'cpython.iterator' */

/* Module declarations from 'cpython.number' */

/* Module declarations from 'cpython.int' */

/* Module declarations from '__builtin__' */

/* Module declarations from 'cpython.bool' */
static PyTypeObject *__pyx_ptype_7cpython_4bool_bool = 0;

/* Module declarations from 'cpython.long' */

/* Module declarations from 'cpython.float' */

/* Module declarations from '__builtin__' */

/* Module declarations from 'cpython.complex' */
static PyTypeObject *__pyx_ptype_7cpython_7complex_complex = 0;

/* Module declarations from 'cpython.string' */

/* Module declarations from 'cpython.unicode' */

/* Module declarations from 'cpython.dict' */

/* Module declarations from 'cpython.instance' */

/* Module declarations from 'cpython.function' */

/* Module declarations from 'cpython.method' */

/* Module declarations from 'cpython.weakref' */

/* Module declarations from 'cpython.getargs' */

/* Module declarations from 'cpython.pythread' */

/* Module declarations from 'cpython.pystate' */

/* Module declarations from 'cpython.cobject' */

/* Module declarations from 'cpython.oldbuffer' */

/* Module declarations from 'cpython.set' */

/* Module declarations from 'cpython.buffer' */

/* Module declarations from 'cpython.bytes' */

/* Module declarations from 'cpython.pycapsule' */

/* Module declarations from 'cpython' */

/* Module declarations from 'libc.stddef' */

/* Module declarations from 'libc.time' */

/* Module declarations from 'libc' */

/* Module declarations from 'libcpp' */

/* Module declarations from 'libcpp.string' */

/* Module declarations from 'libc.stdlib' */

/* Module declarations from 'posix' */

/* Module declarations from 'posix.types' */

/* Module declarations from 'posix.unistd' */

/* Module declarations from 'grpc._cython.cygrpc' */
static PyTypeObject *__pyx_ptype_4grpc_7_cython_6cygrpc__ChannelArg = 0;
static PyTypeObject *__pyx_ptype_4grpc_7_cython_6cygrpc__ChannelArgs = 0;
static PyTypeObject *__pyx_ptype_4grpc_7_cython_6cygrpc_Call = 0;
static PyTypeObject *__pyx_ptype_4grpc_7_cython_6cygrpc__CallState = 0;
static PyTypeObject *__pyx_ptype_4grpc_7_cython_6cygrpc__ChannelState = 0;
static PyTypeObject *__pyx_ptype_4grpc_7_cython_6cygrpc_IntegratedCall = 0;
static PyTypeObject *__pyx_ptype_4grpc_7_cython_6cygrpc_SegregatedCall = 0;
static PyTypeObject *__pyx_ptype_4grpc_7_cython_6cygrpc_Channel = 0;
static PyTypeObject *__pyx_ptype_4grpc_7_cython_6cygrpc_CallCredentials = 0;
static PyTypeObject *__pyx_ptype_4grpc_7_cython_6cygrpc_MetadataPluginCallCredentials = 0;
static PyTypeObject *__pyx_ptype_4grpc_7_cython_6cygrpc_CompositeCallCredentials = 0;
static PyTypeObject *__pyx_ptype_4grpc_7_cython_6cygrpc_ChannelCredentials = 0;
static PyTypeObject *__pyx_ptype_4grpc_7_cython_6cygrpc_SSLSessionCacheLRU = 0;
static PyTypeObject *__pyx_ptype_4grpc_7_cython_6cygrpc_SSLChannelCredentials = 0;
static PyTypeObject *__pyx_ptype_4grpc_7_cython_6cygrpc_CompositeChannelCredentials = 0;
static PyTypeObject *__pyx_ptype_4grpc_7_cython_6cygrpc_XDSChannelCredentials = 0;
static PyTypeObject *__pyx_ptype_4grpc_7_cython_6cygrpc_ServerCertificateConfig = 0;
static PyTypeObject *__pyx_ptype_4grpc_7_cython_6cygrpc_ServerCredentials = 0;
static PyTypeObject *__pyx_ptype_4grpc_7_cython_6cygrpc_LocalChannelCredentials = 0;
static PyTypeObject *__pyx_ptype_4grpc_7_cython_6cygrpc_ALTSChannelCredentials = 0;
static PyTypeObject *__pyx_ptype_4grpc_7_cython_6cygrpc_CompletionQueue = 0;
static PyTypeObject *__pyx_ptype_4grpc_7_cython_6cygrpc_ConnectivityEvent = 0;
static PyTypeObject *__pyx_ptype_4grpc_7_cython_6cygrpc_RequestCallEvent = 0;
static PyTypeObject *__pyx_ptype_4grpc_7_cython_6cygrpc_BatchOperationEvent = 0;
static PyTypeObject *__pyx_ptype_4grpc_7_cython_6cygrpc_ServerShutdownEvent = 0;
static PyTypeObject *__pyx_ptype_4grpc_7_cython_6cygrpc_Operation = 0;
static PyTypeObject *__pyx_ptype_4grpc_7_cython_6cygrpc_SendInitialMetadataOperation = 0;
static PyTypeObject *__pyx_ptype_4grpc_7_cython_6cygrpc_SendMessageOperation = 0;
static PyTypeObject *__pyx_ptype_4grpc_7_cython_6cygrpc_SendCloseFromClientOperation = 0;
static PyTypeObject *__pyx_ptype_4grpc_7_cython_6cygrpc_SendStatusFromServerOperation = 0;
static PyTypeObject *__pyx_ptype_4grpc_7_cython_6cygrpc_ReceiveInitialMetadataOperation = 0;
static PyTypeObject *__pyx_ptype_4grpc_7_cython_6cygrpc_ReceiveMessageOperation = 0;
static PyTypeObject *__pyx_ptype_4grpc_7_cython_6cygrpc_ReceiveStatusOnClientOperation = 0;
static PyTypeObject *__pyx_ptype_4grpc_7_cython_6cygrpc_ReceiveCloseOnServerOperation = 0;
static PyTypeObject *__pyx_ptype_4grpc_7_cython_6cygrpc_CallDetails = 0;
static PyTypeObject *__pyx_ptype_4grpc_7_cython_6cygrpc_SslPemKeyCertPair = 0;
static PyTypeObject *__pyx_ptype_4grpc_7_cython_6cygrpc_CompressionOptions = 0;
static PyTypeObject *__pyx_ptype_4grpc_7_cython_6cygrpc_Server = 0;
static PyTypeObject *__pyx_ptype_4grpc_7_cython_6cygrpc__Tag = 0;
static PyTypeObject *__pyx_ptype_4grpc_7_cython_6cygrpc__ConnectivityTag = 0;
static PyTypeObject *__pyx_ptype_4grpc_7_cython_6cygrpc__RequestCallTag = 0;
static PyTypeObject *__pyx_ptype_4grpc_7_cython_6cygrpc__BatchOperationTag = 0;
static PyTypeObject *__pyx_ptype_4grpc_7_cython_6cygrpc__ServerShutdownTag = 0;
static PyTypeObject *__pyx_ptype_4grpc_7_cython_6cygrpc_TimerWrapper = 0;
static PyTypeObject *__pyx_ptype_4grpc_7_cython_6cygrpc_SocketWrapper = 0;
static PyTypeObject *__pyx_ptype_4grpc_7_cython_6cygrpc_ResolveWrapper = 0;
static PyTypeObject *__pyx_ptype_4grpc_7_cython_6cygrpc_BaseCompletionQueue = 0;
static PyTypeObject *__pyx_ptype_4grpc_7_cython_6cygrpc__BoundEventLoop = 0;
static PyTypeObject *__pyx_ptype_4grpc_7_cython_6cygrpc_PollerCompletionQueue = 0;
static PyTypeObject *__pyx_ptype_4grpc_7_cython_6cygrpc_AioRpcStatus = 0;
static PyTypeObject *__pyx_ptype_4grpc_7_cython_6cygrpc__AioState = 0;
static PyTypeObject *__pyx_ptype_4grpc_7_cython_6cygrpc_CallbackFailureHandler = 0;
static PyTypeObject *__pyx_ptype_4grpc_7_cython_6cygrpc_CallbackWrapper = 0;
static PyTypeObject *__pyx_ptype_4grpc_7_cython_6cygrpc_GrpcCallWrapper = 0;
static PyTypeObject *__pyx_ptype_4grpc_7_cython_6cygrpc__AioCall = 0;
static PyTypeObject *__pyx_ptype_4grpc_7_cython_6cygrpc_AioChannel = 0;
static PyTypeObject *__pyx_ptype_4grpc_7_cython_6cygrpc__HandlerCallDetails = 0;
static PyTypeObject *__pyx_ptype_4grpc_7_cython_6cygrpc_RPCState = 0;
static PyTypeObject *__pyx_ptype_4grpc_7_cython_6cygrpc__ServicerContext = 0;
static PyTypeObject *__pyx_ptype_4grpc_7_cython_6cygrpc__SyncServicerContext = 0;
static PyTypeObject *__pyx_ptype_4grpc_7_cython_6cygrpc__MessageReceiver = 0;
static PyTypeObject *__pyx_ptype_4grpc_7_cython_6cygrpc__ConcurrentRpcLimiter = 0;
static PyTypeObject *__pyx_ptype_4grpc_7_cython_6cygrpc_AioServer = 0;
static PyTypeObject *__pyx_ptype_4grpc_7_cython_6cygrpc__GrpcArgWrapper = 0;
static PyTypeObject *__pyx_ptype_4grpc_7_cython_6cygrpc_InsecureChannelCredentials = 0;
static PyTypeObject *__pyx_ptype_4grpc_7_cython_6cygrpc_ComputeEngineChannelCredentials = 0;
static PyTypeObject *__pyx_ptype_4grpc_7_cython_6cygrpc_CensusContext = 0;
static PyTypeObject *__pyx_ptype_4grpc_7_cython_6cygrpc___pyx_scope_struct____pyx_f_4grpc_7_cython_6cygrpc__integrated_call = 0;
static PyTypeObject *__pyx_ptype_4grpc_7_cython_6cygrpc___pyx_scope_struct_1_next_event = 0;
static PyTypeObject *__pyx_ptype_4grpc_7_cython_6cygrpc___pyx_scope_struct_2___pyx_f_4grpc_7_cython_6cygrpc__segregated_call = 0;
static PyTypeObject *__pyx_ptype_4grpc_7_cython_6cygrpc___pyx_scope_struct_3_next_call_event = 0;
static PyTypeObject *__pyx_ptype_4grpc_7_cython_6cygrpc___pyx_scope_struct_4___pyx_f_4grpc_7_cython_6cygrpc__get_metadata = 0;
static PyTypeObject *__pyx_ptype_4grpc_7_cython_6cygrpc___pyx_scope_struct_5___pyx_f_4grpc_7_cython_6cygrpc__metadata = 0;
static PyTypeObject *__pyx_ptype_4grpc_7_cython_6cygrpc___pyx_scope_struct_6_genexpr = 0;
static PyTypeObject *__pyx_ptype_4grpc_7_cython_6cygrpc___pyx_scope_struct_7___pyx_f_4grpc_7_cython_6cygrpc_tuples_to_resolvaddr = 0;
static PyTypeObject *__pyx_ptype_4grpc_7_cython_6cygrpc___pyx_scope_struct_8_genexpr = 0;
static PyTypeObject *__pyx_ptype_4grpc_7_cython_6cygrpc___pyx_scope_struct_9__run_with_context = 0;
static PyTypeObject *__pyx_ptype_4grpc_7_cython_6cygrpc___pyx_scope_struct_10__run_with_context = 0;
static PyTypeObject *__pyx_ptype_4grpc_7_cython_6cygrpc___pyx_scope_struct_11___init__ = 0;
static PyTypeObject *__pyx_ptype_4grpc_7_cython_6cygrpc___pyx_scope_struct_12_async_generator_to_generator = 0;
static PyTypeObject *__pyx_ptype_4grpc_7_cython_6cygrpc___pyx_scope_struct_13_generator_to_async_generator = 0;
static PyTypeObject *__pyx_ptype_4grpc_7_cython_6cygrpc___pyx_scope_struct_14_execute_batch = 0;
static PyTypeObject *__pyx_ptype_4grpc_7_cython_6cygrpc___pyx_scope_struct_15__receive_message = 0;
static PyTypeObject *__pyx_ptype_4grpc_7_cython_6cygrpc___pyx_scope_struct_16__send_message = 0;
static PyTypeObject *__pyx_ptype_4grpc_7_cython_6cygrpc___pyx_scope_struct_17__send_initial_metadata = 0;
static PyTypeObject *__pyx_ptype_4grpc_7_cython_6cygrpc___pyx_scope_struct_18__receive_initial_metadata = 0;
static PyTypeObject *__pyx_ptype_4grpc_7_cython_6cygrpc___pyx_scope_struct_19__send_error_status_from_server = 0;
static PyTypeObject *__pyx_ptype_4grpc_7_cython_6cygrpc___pyx_scope_struct_20_status = 0;
static PyTypeObject *__pyx_ptype_4grpc_7_cython_6cygrpc___pyx_scope_struct_21_initial_metadata = 0;
static PyTypeObject *__pyx_ptype_4grpc_7_cython_6cygrpc___pyx_scope_struct_22_unary_unary = 0;
static PyTypeObject *__pyx_ptype_4grpc_7_cython_6cygrpc___pyx_scope_struct_23__handle_status_once_received = 0;
static PyTypeObject *__pyx_ptype_4grpc_7_cython_6cygrpc___pyx_scope_struct_24_receive_serialized_message = 0;
static PyTypeObject *__pyx_ptype_4grpc_7_cython_6cygrpc___pyx_scope_struct_25_send_serialized_message = 0;
static PyTypeObject *__pyx_ptype_4grpc_7_cython_6cygrpc___pyx_scope_struct_26_send_receive_close = 0;
static PyTypeObject *__pyx_ptype_4grpc_7_cython_6cygrpc___pyx_scope_struct_27_initiate_unary_stream = 0;
static PyTypeObject *__pyx_ptype_4grpc_7_cython_6cygrpc___pyx_scope_struct_28_stream_unary = 0;
static PyTypeObject *__pyx_ptype_4grpc_7_cython_6cygrpc___pyx_scope_struct_29_initiate_stream_stream = 0;
static PyTypeObject *__pyx_ptype_4grpc_7_cython_6cygrpc___pyx_scope_struct_30_watch_connectivity_state = 0;
static PyTypeObject *__pyx_ptype_4grpc_7_cython_6cygrpc___pyx_scope_struct_31_read = 0;
static PyTypeObject *__pyx_ptype_4grpc_7_cython_6cygrpc___pyx_scope_struct_32_write = 0;
static PyTypeObject *__pyx_ptype_4grpc_7_cython_6cygrpc___pyx_scope_struct_33_send_initial_metadata = 0;
static PyTypeObject *__pyx_ptype_4grpc_7_cython_6cygrpc___pyx_scope_struct_34_abort = 0;
static PyTypeObject *__pyx_ptype_4grpc_7_cython_6cygrpc___pyx_scope_struct_35_abort_with_status = 0;
static PyTypeObject *__pyx_ptype_4grpc_7_cython_6cygrpc___pyx_scope_struct_36__run_interceptor = 0;
static PyTypeObject *__pyx_ptype_4grpc_7_cython_6cygrpc___pyx_scope_struct_37__find_method_handler = 0;
static PyTypeObject *__pyx_ptype_4grpc_7_cython_6cygrpc___pyx_scope_struct_38__finish_handler_with_unary_response = 0;
static PyTypeObject *__pyx_ptype_4grpc_7_cython_6cygrpc___pyx_scope_struct_39__finish_handler_with_stream_responses = 0;
static PyTypeObject *__pyx_ptype_4grpc_7_cython_6cygrpc___pyx_scope_struct_40__handle_unary_unary_rpc = 0;
static PyTypeObject *__pyx_ptype_4grpc_7_cython_6cygrpc___pyx_scope_struct_41__handle_unary_stream_rpc = 0;
static PyTypeObject *__pyx_ptype_4grpc_7_cython_6cygrpc___pyx_scope_struct_42__async_message_receiver = 0;
static PyTypeObject *__pyx_ptype_4grpc_7_cython_6cygrpc___pyx_scope_struct_43___anext__ = 0;
static PyTypeObject *__pyx_ptype_4grpc_7_cython_6cygrpc___pyx_scope_struct_44__handle_stream_unary_rpc = 0;
static PyTypeObject *__pyx_ptype_4grpc_7_cython_6cygrpc___pyx_scope_struct_45__handle_stream_stream_rpc = 0;
static PyTypeObject *__pyx_ptype_4grpc_7_cython_6cygrpc___pyx_scope_struct_46__handle_exceptions = 0;
static PyTypeObject *__pyx_ptype_4grpc_7_cython_6cygrpc___pyx_scope_struct_47__handle_cancellation_from_core = 0;
static PyTypeObject *__pyx_ptype_4grpc_7_cython_6cygrpc___pyx_scope_struct_48__schedule_rpc_coro = 0;
static PyTypeObject *__pyx_ptype_4grpc_7_cython_6cygrpc___pyx_scope_struct_49__handle_rpc = 0;
static PyTypeObject *__pyx_ptype_4grpc_7_cython_6cygrpc___pyx_scope_struct_50_check_before_request_call = 0;
static PyTypeObject *__pyx_ptype_4grpc_7_cython_6cygrpc___pyx_scope_struct_51__decrease_active_rpcs_count_with_lock = 0;
static PyTypeObject *__pyx_ptype_4grpc_7_cython_6cygrpc___pyx_scope_struct_52__request_call = 0;
static PyTypeObject *__pyx_ptype_4grpc_7_cython_6cygrpc___pyx_scope_struct_53__server_main_loop = 0;
static PyTypeObject *__pyx_ptype_4grpc_7_cython_6cygrpc___pyx_scope_struct_54_start = 0;
static PyTypeObject *__pyx_ptype_4grpc_7_cython_6cygrpc___pyx_scope_struct_55__start_shutting_down = 0;
static PyTypeObject *__pyx_ptype_4grpc_7_cython_6cygrpc___pyx_scope_struct_56_shutdown = 0;
static PyTypeObject *__pyx_ptype_4grpc_7_cython_6cygrpc___pyx_scope_struct_57_wait_for_termination = 0;
static grpc_arg_pointer_vtable __pyx_v_4grpc_7_cython_6cygrpc_default_vtable;
static int __pyx_v_4grpc_7_cython_6cygrpc__INTERRUPT_CHECK_PERIOD_MS;
static struct grpc_socket_vtable __pyx_v_4grpc_7_cython_6cygrpc_gevent_socket_vtable;
static struct grpc_custom_resolver_vtable __pyx_v_4grpc_7_cython_6cygrpc_gevent_resolver_vtable;
static struct grpc_custom_timer_vtable __pyx_v_4grpc_7_cython_6cygrpc_gevent_timer_vtable;
static struct grpc_custom_poller_vtable __pyx_v_4grpc_7_cython_6cygrpc_gevent_pollset_vtable;
static gpr_timespec __pyx_v_4grpc_7_cython_6cygrpc__GPR_INF_FUTURE;
static float __pyx_v_4grpc_7_cython_6cygrpc__POLL_AWAKE_INTERVAL_S;
static int __pyx_v_4grpc_7_cython_6cygrpc__has_fd_monitoring;
static struct __pyx_obj_4grpc_7_cython_6cygrpc_CallbackFailureHandler *__pyx_v_4grpc_7_cython_6cygrpc_CQ_SHUTDOWN_FAILURE_HANDLER = 0;
static PyObject *__pyx_v_4grpc_7_cython_6cygrpc__GRPC_ASYNCIO_ENGINE = 0;
static struct __pyx_obj_4grpc_7_cython_6cygrpc__AioState *__pyx_v_4grpc_7_cython_6cygrpc__global_aio_state = 0;
static struct __pyx_obj_4grpc_7_cython_6cygrpc_CallbackFailureHandler *__pyx_v_4grpc_7_cython_6cygrpc__WATCH_CONNECTIVITY_FAILURE_HANDLER = 0;
static int __pyx_v_4grpc_7_cython_6cygrpc__EMPTY_FLAG;
static PyObject *__pyx_v_4grpc_7_cython_6cygrpc__RPC_FINISHED_DETAILS = 0;
static PyObject *__pyx_v_4grpc_7_cython_6cygrpc__SERVER_STOPPED_DETAILS = 0;
static struct __pyx_obj_4grpc_7_cython_6cygrpc_CallbackFailureHandler *__pyx_v_4grpc_7_cython_6cygrpc_REQUEST_CALL_FAILURE_HANDLER = 0;
static struct __pyx_obj_4grpc_7_cython_6cygrpc_CallbackFailureHandler *__pyx_v_4grpc_7_cython_6cygrpc_SERVER_SHUTDOWN_FAILURE_HANDLER = 0;
static PyObject *__pyx_f_4grpc_7_cython_6cygrpc__check_call_error_no_metadata(PyObject *); /*proto*/
static PyObject *__pyx_f_4grpc_7_cython_6cygrpc__check_and_raise_call_error_no_metadata(PyObject *); /*proto*/
static int __pyx_f_4grpc_7_cython_6cygrpc__get_metadata(void *, grpc_auth_metadata_context, grpc_credentials_plugin_metadata_cb, void *, grpc_metadata *, size_t *, grpc_status_code *, char const **); /*proto*/
static void __pyx_f_4grpc_7_cython_6cygrpc__destroy(void *); /*proto*/
static grpc_call_credentials *__pyx_f_4grpc_7_cython_6cygrpc__composition(PyObject *); /*proto*/
static grpc_event __pyx_f_4grpc_7_cython_6cygrpc__next(grpc_completion_queue *, PyObject *); /*proto*/
static PyObject *__pyx_f_4grpc_7_cython_6cygrpc__interpret_event(grpc_event); /*proto*/
static void __pyx_f_4grpc_7_cython_6cygrpc__store_c_metadata(PyObject *, grpc_metadata **, size_t *); /*proto*/
static void __pyx_f_4grpc_7_cython_6cygrpc__release_c_metadata(grpc_metadata *, int); /*proto*/
static PyObject *__pyx_f_4grpc_7_cython_6cygrpc__metadatum(grpc_slice, grpc_slice); /*proto*/
static PyObject *__pyx_f_4grpc_7_cython_6cygrpc__metadata(grpc_metadata_array *); /*proto*/
static PyObject *__pyx_f_4grpc_7_cython_6cygrpc__slice_bytes(grpc_slice); /*proto*/
static grpc_slice __pyx_f_4grpc_7_cython_6cygrpc__slice_from_bytes(PyObject *); /*proto*/
static grpc_ssl_roots_override_result __pyx_f_4grpc_7_cython_6cygrpc_ssl_roots_override_callback(char **); /*proto*/
static gpr_timespec __pyx_f_4grpc_7_cython_6cygrpc__timespec_from_time(PyObject *); /*proto*/
static double __pyx_f_4grpc_7_cython_6cygrpc__time_from_timespec(gpr_timespec); /*proto*/
static void *__pyx_f_4grpc_7_cython_6cygrpc__copy_pointer(void *); /*proto*/
static void __pyx_f_4grpc_7_cython_6cygrpc__destroy_pointer(void *); /*proto*/
static int __pyx_f_4grpc_7_cython_6cygrpc__compare_pointer(void *, void *); /*proto*/
static PyObject *__pyx_f_4grpc_7_cython_6cygrpc__custom_op_on_c_call(int, grpc_call *); /*proto*/
static void __pyx_f_4grpc_7_cython_6cygrpc___prefork(void); /*proto*/
static void __pyx_f_4grpc_7_cython_6cygrpc___postfork_parent(void); /*proto*/
static void __pyx_f_4grpc_7_cython_6cygrpc___postfork_child(void); /*proto*/
static void __pyx_f_4grpc_7_cython_6cygrpc__unified_socket_write(int); /*proto*/
static grpc_completion_queue *__pyx_f_4grpc_7_cython_6cygrpc_global_completion_queue(void); /*proto*/
static PyObject *__pyx_f_4grpc_7_cython_6cygrpc_init_grpc_aio(int __pyx_skip_dispatch); /*proto*/
static PyObject *__pyx_f_4grpc_7_cython_6cygrpc_shutdown_grpc_aio(int __pyx_skip_dispatch); /*proto*/
static PyObject *__pyx_f_4grpc_7_cython_6cygrpc_str_to_bytes(PyObject *); /*proto*/
static PyObject *__pyx_f_4grpc_7_cython_6cygrpc__encode(PyObject *); /*proto*/
static PyObject *__pyx_f_4grpc_7_cython_6cygrpc__decode(PyObject *); /*proto*/
static PyObject *__pyx_f_4grpc_7_cython_6cygrpc__call_error_metadata(PyObject *); /*proto*/
static PyObject *__pyx_f_4grpc_7_cython_6cygrpc__call_error_no_metadata(PyObject *); /*proto*/
static PyObject *__pyx_f_4grpc_7_cython_6cygrpc__call_error(PyObject *, PyObject *); /*proto*/
static void __pyx_f_4grpc_7_cython_6cygrpc__raise_call_error_no_metadata(PyObject *); /*proto*/
static void __pyx_f_4grpc_7_cython_6cygrpc__raise_call_error(PyObject *, PyObject *); /*proto*/
static PyObject *__pyx_f_4grpc_7_cython_6cygrpc__destroy_c_completion_queue(grpc_completion_queue *); /*proto*/
static PyObject *__pyx_f_4grpc_7_cython_6cygrpc__operate(grpc_call *, PyObject *, PyObject *); /*proto*/
static PyObject *__pyx_f_4grpc_7_cython_6cygrpc__operate_from_integrated_call(struct __pyx_obj_4grpc_7_cython_6cygrpc__ChannelState *, struct __pyx_obj_4grpc_7_cython_6cygrpc__CallState *, PyObject *, PyObject *); /*proto*/
static PyObject *__pyx_f_4grpc_7_cython_6cygrpc__operate_from_segregated_call(struct __pyx_obj_4grpc_7_cython_6cygrpc__ChannelState *, struct __pyx_obj_4grpc_7_cython_6cygrpc__CallState *, PyObject *, PyObject *); /*proto*/
static PyObject *__pyx_f_4grpc_7_cython_6cygrpc__cancel(struct __pyx_obj_4grpc_7_cython_6cygrpc__ChannelState *, struct __pyx_obj_4grpc_7_cython_6cygrpc__CallState *, grpc_status_code, PyObject *); /*proto*/
static PyObject *__pyx_f_4grpc_7_cython_6cygrpc__next_call_event(struct __pyx_obj_4grpc_7_cython_6cygrpc__ChannelState *, grpc_completion_queue *, PyObject *, PyObject *, PyObject *); /*proto*/
static void __pyx_f_4grpc_7_cython_6cygrpc__call(struct __pyx_obj_4grpc_7_cython_6cygrpc__ChannelState *, struct __pyx_obj_4grpc_7_cython_6cygrpc__CallState *, grpc_completion_queue *, PyObject *, int, PyObject *, PyObject *, PyObject *, struct __pyx_obj_4grpc_7_cython_6cygrpc_CallCredentials *, PyObject *, PyObject *, PyObject *); /*proto*/
static void __pyx_f_4grpc_7_cython_6cygrpc__process_integrated_call_tag(struct __pyx_obj_4grpc_7_cython_6cygrpc__ChannelState *, struct __pyx_obj_4grpc_7_cython_6cygrpc__BatchOperationTag *); /*proto*/
static struct __pyx_obj_4grpc_7_cython_6cygrpc_IntegratedCall *__pyx_f_4grpc_7_cython_6cygrpc__integrated_call(struct __pyx_obj_4grpc_7_cython_6cygrpc__ChannelState *, int, PyObject *, PyObject *, PyObject *, PyObject *, struct __pyx_obj_4grpc_7_cython_6cygrpc_CallCredentials *, PyObject *, PyObject *); /*proto*/
static PyObject *__pyx_f_4grpc_7_cython_6cygrpc__process_segregated_call_tag(struct __pyx_obj_4grpc_7_cython_6cygrpc__ChannelState *, struct __pyx_obj_4grpc_7_cython_6cygrpc__CallState *, grpc_completion_queue *, struct __pyx_obj_4grpc_7_cython_6cygrpc__BatchOperationTag *); /*proto*/
static struct __pyx_obj_4grpc_7_cython_6cygrpc_SegregatedCall *__pyx_f_4grpc_7_cython_6cygrpc__segregated_call(struct __pyx_obj_4grpc_7_cython_6cygrpc__ChannelState *, int, PyObject *, PyObject *, PyObject *, PyObject *, struct __pyx_obj_4grpc_7_cython_6cygrpc_CallCredentials *, PyObject *, PyObject *); /*proto*/
static PyObject *__pyx_f_4grpc_7_cython_6cygrpc__watch_connectivity_state(struct __pyx_obj_4grpc_7_cython_6cygrpc__ChannelState *, grpc_connectivity_state, PyObject *); /*proto*/
static PyObject *__pyx_f_4grpc_7_cython_6cygrpc__close(struct __pyx_obj_4grpc_7_cython_6cygrpc_Channel *, grpc_status_code, PyObject *, PyObject *); /*proto*/
static PyObject *__pyx_f_4grpc_7_cython_6cygrpc__calls_drained(struct __pyx_obj_4grpc_7_cython_6cygrpc__ChannelState *); /*proto*/
static char const *__pyx_f_4grpc_7_cython_6cygrpc__get_c_pem_root_certs(PyObject *); /*proto*/
static grpc_ssl_pem_key_cert_pair *__pyx_f_4grpc_7_cython_6cygrpc__create_c_ssl_pem_key_cert_pairs(PyObject *); /*proto*/
static grpc_ssl_certificate_config_reload_status __pyx_f_4grpc_7_cython_6cygrpc__server_cert_config_fetcher_wrapper(void *, grpc_ssl_server_certificate_config **); /*proto*/
static PyObject *__pyx_f_4grpc_7_cython_6cygrpc__latent_event(grpc_completion_queue *, PyObject *); /*proto*/
static grpc_error_handle __pyx_f_4grpc_7_cython_6cygrpc_grpc_error_none(void); /*proto*/
static grpc_error_handle __pyx_f_4grpc_7_cython_6cygrpc_socket_error(PyObject *, PyObject *); /*proto*/
static PyObject *__pyx_f_4grpc_7_cython_6cygrpc_resolved_addr_to_tuple(grpc_resolved_address *); /*proto*/
static PyObject *__pyx_f_4grpc_7_cython_6cygrpc_sockaddr_to_tuple(grpc_sockaddr const *, size_t); /*proto*/
static PyObject *__pyx_f_4grpc_7_cython_6cygrpc_sockaddr_is_ipv4(grpc_sockaddr const *, size_t); /*proto*/
static grpc_resolved_addresses *__pyx_f_4grpc_7_cython_6cygrpc_tuples_to_resolvaddr(PyObject *); /*proto*/
static grpc_error_handle __pyx_f_4grpc_7_cython_6cygrpc_socket_init(struct grpc_custom_socket *, int); /*proto*/
static PyObject *__pyx_f_4grpc_7_cython_6cygrpc_socket_connect_async_cython(struct __pyx_obj_4grpc_7_cython_6cygrpc_SocketWrapper *, PyObject *); /*proto*/
static void __pyx_f_4grpc_7_cython_6cygrpc_socket_connect(struct grpc_custom_socket *, grpc_sockaddr const *, size_t, grpc_custom_connect_callback); /*proto*/
static void __pyx_f_4grpc_7_cython_6cygrpc_socket_destroy(struct grpc_custom_socket *); /*proto*/
static void __pyx_f_4grpc_7_cython_6cygrpc_socket_shutdown(struct grpc_custom_socket *); /*proto*/
static void __pyx_f_4grpc_7_cython_6cygrpc_socket_close(struct grpc_custom_socket *, grpc_custom_close_callback); /*proto*/
static PyObject *__pyx_f_4grpc_7_cython_6cygrpc_socket_write_async_cython(struct __pyx_obj_4grpc_7_cython_6cygrpc_SocketWrapper *, PyObject *); /*proto*/
static void __pyx_f_4grpc_7_cython_6cygrpc_socket_write(struct grpc_custom_socket *, struct grpc_slice_buffer *, grpc_custom_write_callback); /*proto*/
static PyObject *__pyx_f_4grpc_7_cython_6cygrpc_socket_read_async_cython(struct __pyx_obj_4grpc_7_cython_6cygrpc_SocketWrapper *); /*proto*/
static void __pyx_f_4grpc_7_cython_6cygrpc_socket_read(struct grpc_custom_socket *, char *, size_t, grpc_custom_read_callback); /*proto*/
static grpc_error_handle __pyx_f_4grpc_7_cython_6cygrpc_socket_getpeername(struct grpc_custom_socket *, grpc_sockaddr const *, int *); /*proto*/
static grpc_error_handle __pyx_f_4grpc_7_cython_6cygrpc_socket_getsockname(struct grpc_custom_socket *, grpc_sockaddr const *, int *); /*proto*/
static grpc_error_handle __pyx_f_4grpc_7_cython_6cygrpc_socket_bind(struct grpc_custom_socket *, grpc_sockaddr const *, size_t, int); /*proto*/
static grpc_error_handle __pyx_f_4grpc_7_cython_6cygrpc_socket_listen(struct grpc_custom_socket *); /*proto*/
static void __pyx_f_4grpc_7_cython_6cygrpc_accept_callback_cython(struct __pyx_obj_4grpc_7_cython_6cygrpc_SocketWrapper *); /*proto*/
static void __pyx_f_4grpc_7_cython_6cygrpc_socket_accept(struct grpc_custom_socket *, struct grpc_custom_socket *, grpc_custom_accept_callback); /*proto*/
static PyObject *__pyx_f_4grpc_7_cython_6cygrpc_socket_resolve_async_cython(struct __pyx_obj_4grpc_7_cython_6cygrpc_ResolveWrapper *); /*proto*/
static void __pyx_f_4grpc_7_cython_6cygrpc_socket_resolve_async(struct grpc_custom_resolver *, char const *, char const *); /*proto*/
static grpc_error_handle __pyx_f_4grpc_7_cython_6cygrpc_socket_resolve(char const *, char const *, grpc_resolved_addresses **); /*proto*/
static void __pyx_f_4grpc_7_cython_6cygrpc_timer_start(struct grpc_custom_timer *); /*proto*/
static void __pyx_f_4grpc_7_cython_6cygrpc_timer_stop(struct grpc_custom_timer *); /*proto*/
static void __pyx_f_4grpc_7_cython_6cygrpc_init_loop(void); /*proto*/
static void __pyx_f_4grpc_7_cython_6cygrpc_destroy_loop(void); /*proto*/
static void __pyx_f_4grpc_7_cython_6cygrpc_kick_loop(void); /*proto*/
static struct grpc_error *__pyx_f_4grpc_7_cython_6cygrpc_run_loop(size_t); /*proto*/
static grpc_status_code __pyx_f_4grpc_7_cython_6cygrpc_get_status_code(PyObject *); /*proto*/
static PyObject *__pyx_f_4grpc_7_cython_6cygrpc_deserialize(PyObject *, PyObject *); /*proto*/
static PyObject *__pyx_f_4grpc_7_cython_6cygrpc_serialize(PyObject *, PyObject *); /*proto*/
static PyObject *__pyx_f_4grpc_7_cython_6cygrpc_prepend_send_initial_metadata_op(PyObject *, PyObject *); /*proto*/
static PyObject *__pyx_f_4grpc_7_cython_6cygrpc__default_asyncio_engine(void); /*proto*/
static PyObject *__pyx_f_4grpc_7_cython_6cygrpc__initialize_poller(void); /*proto*/
static PyObject *__pyx_f_4grpc_7_cython_6cygrpc__actual_aio_initialization(void); /*proto*/
static PyObject *__pyx_f_4grpc_7_cython_6cygrpc__actual_aio_shutdown(void); /*proto*/
static PyObject *__pyx_f_4grpc_7_cython_6cygrpc__initialize_per_loop(void); /*proto*/
static int __pyx_f_4grpc_7_cython_6cygrpc__get_send_initial_metadata_flags(PyObject *); /*proto*/
static PyObject *__pyx_f_4grpc_7_cython_6cygrpc__augment_metadata(PyObject *, PyObject *); /*proto*/
static PyObject *__pyx_f_4grpc_7_cython_6cygrpc__initialize(void); /*proto*/
static PyObject *__pyx_f_4grpc_7_cython_6cygrpc___pyx_unpickle_ChannelCredentials__set_state(struct __pyx_obj_4grpc_7_cython_6cygrpc_ChannelCredentials *, PyObject *); /*proto*/
static PyObject *__pyx_f_4grpc_7_cython_6cygrpc___pyx_unpickle_InsecureChannelCredentials__set_state(struct __pyx_obj_4grpc_7_cython_6cygrpc_InsecureChannelCredentials *, PyObject *); /*proto*/
static PyObject *__pyx_f_4grpc_7_cython_6cygrpc___pyx_unpickle__Tag__set_state(struct __pyx_obj_4grpc_7_cython_6cygrpc__Tag *, PyObject *); /*proto*/
static PyObject *__pyx_f_4grpc_7_cython_6cygrpc___pyx_unpickle_CensusContext__set_state(struct __pyx_obj_4grpc_7_cython_6cygrpc_CensusContext *, PyObject *); /*proto*/
static PyObject *__pyx_f_4grpc_7_cython_6cygrpc___pyx_unpickle_AioServer__set_state(struct __pyx_obj_4grpc_7_cython_6cygrpc_AioServer *, PyObject *); /*proto*/
static CYTHON_INLINE PyObject *__pyx_convert_PyObject_string_to_py_std__in_string(std::string const &); /*proto*/
static CYTHON_INLINE PyObject *__pyx_convert_PyUnicode_string_to_py_std__in_string(std::string const &); /*proto*/
static CYTHON_INLINE PyObject *__pyx_convert_PyStr_string_to_py_std__in_string(std::string const &); /*proto*/
static CYTHON_INLINE PyObject *__pyx_convert_PyBytes_string_to_py_std__in_string(std::string const &); /*proto*/
static CYTHON_INLINE PyObject *__pyx_convert_PyByteArray_string_to_py_std__in_string(std::string const &); /*proto*/
#define __Pyx_MODULE_NAME "grpc._cython.cygrpc"
extern int __pyx_module_is_main_grpc___cython__cygrpc;
int __pyx_module_is_main_grpc___cython__cygrpc = 0;

/* Implementation of 'grpc._cython.cygrpc' */
static PyObject *__pyx_builtin_ImportError;
static PyObject *__pyx_builtin_object;
static PyObject *__pyx_builtin_TypeError;
static PyObject *__pyx_builtin_UnicodeDecodeError;
static PyObject *__pyx_builtin_enumerate;
static PyObject *__pyx_builtin_ValueError;
static PyObject *__pyx_builtin_NotImplementedError;
static PyObject *__pyx_builtin_range;
static PyObject *__pyx_builtin_IOError;
static PyObject *__pyx_builtin_AttributeError;
static PyObject *__pyx_builtin_BaseException;
static PyObject *__pyx_builtin_KeyError;
static PyObject *__pyx_builtin_RuntimeError;
static PyObject *__pyx_builtin_AssertionError;
static PyObject *__pyx_builtin_id;
static PyObject *__pyx_builtin_KeyboardInterrupt;
static PyObject *__pyx_builtin_SystemExit;
static const char __pyx_k_[] = "";
static const char __pyx_k_0[] = "0";
static const char __pyx_k_1[] = "1";
static const char __pyx_k_e[] = "e";
static const char __pyx_k_s[] = "s";
static const char __pyx_k_t[] = "t";
static const char __pyx_k_cb[] = "cb";
static const char __pyx_k_id[] = "id";
static const char __pyx_k_ok[] = "ok";
static const char __pyx_k_op[] = "op";
static const char __pyx_k_os[] = "os";
static const char __pyx_k_EOF[] = "EOF";
static const char __pyx_k_Tag[] = "_Tag";
static const char __pyx_k_YES[] = "YES";
static const char __pyx_k_Yes[] = "Yes";
static const char __pyx_k_add[] = "add";
static const char __pyx_k_bin[] = "-bin";
static const char __pyx_k_ctx[] = "ctx";
static const char __pyx_k_doc[] = "__doc__";
static const char __pyx_k_gen[] = "gen";
static const char __pyx_k_get[] = "get";
static const char __pyx_k_hub[] = "hub";
static const char __pyx_k_int[] = "__int__";
static const char __pyx_k_key[] = "key";
static const char __pyx_k_len[] = "__len__";
static const char __pyx_k_low[] = "low";
static const char __pyx_k_new[] = "__new__";
static const char __pyx_k_ops[] = "ops";
static const char __pyx_k_pop[] = "pop";
static const char __pyx_k_put[] = "put";
static const char __pyx_k_run[] = "run";
static const char __pyx_k_set[] = "set";
static const char __pyx_k_str[] = "str";
static const char __pyx_k_sys[] = "sys";
static const char __pyx_k_tag[] = "tag";
static const char __pyx_k_uds[] = "uds";
static const char __pyx_k_xds[] = "xds";
static const char __pyx_k_yes[] = "yes";
static const char __pyx_k_Call[] = "Call";
static const char __pyx_k_Enum[] = "Enum";
static const char __pyx_k_Lock[] = "Lock";
static const char __pyx_k_TRUE[] = "TRUE";
static const char __pyx_k_True[] = "True";
static const char __pyx_k__118[] = ":";
static const char __pyx_k__119[] = "[";
static const char __pyx_k__120[] = "]";
static const char __pyx_k__121[] = "{}";
static const char __pyx_k__165[] = "<";
static const char __pyx_k__166[] = " ";
static const char __pyx_k__167[] = ">";
static const char __pyx_k__347[] = "_";
static const char __pyx_k_agen[] = "agen";
static const char __pyx_k_args[] = "args";
static const char __pyx_k_bind[] = "bind";
static const char __pyx_k_bool[] = "__bool__";
static const char __pyx_k_call[] = "call";
static const char __pyx_k_code[] = "code";
static const char __pyx_k_copy[] = "copy";
static const char __pyx_k_coro[] = "coro";
static const char __pyx_k_dict[] = "__dict__";
static const char __pyx_k_done[] = "done";
static const char __pyx_k_enum[] = "enum";
static const char __pyx_k_exit[] = "__exit__";
static const char __pyx_k_grpc[] = "grpc";
static const char __pyx_k_gzip[] = "gzip";
static const char __pyx_k_high[] = "high";
static const char __pyx_k_host[] = "host";
static const char __pyx_k_idle[] = "idle";
static const char __pyx_k_init[] = "__init__";
static const char __pyx_k_ipv4[] = "ipv4";
static const char __pyx_k_item[] = "item";
static const char __pyx_k_join[] = "join";
static const char __pyx_k_loop[] = "loop";
static const char __pyx_k_main[] = "__main__";
static const char __pyx_k_name[] = "name";
static const char __pyx_k_none[] = "none";
static const char __pyx_k_peer[] = "peer";
static const char __pyx_k_poll[] = "poll";
static const char __pyx_k_pool[] = "pool";
static const char __pyx_k_read[] = "read";
static const char __pyx_k_recv[] = "recv";
static const char __pyx_k_repr[] = "_repr";
static const char __pyx_k_self[] = "self";
static const char __pyx_k_send[] = "send";
static const char __pyx_k_stop[] = "stop";
static const char __pyx_k_test[] = "__test__";
static const char __pyx_k_time[] = "time";
static const char __pyx_k_true[] = "true";
static const char __pyx_k_type[] = "type";
static const char __pyx_k_utf8[] = "utf8";
static const char __pyx_k_wait[] = "wait";
static const char __pyx_k_EOF_2[] = "_EOF";
static const char __pyx_k_Event[] = "Event";
static const char __pyx_k_Group[] = "Group";
static const char __pyx_k_Queue[] = "Queue";
static const char __pyx_k_RLock[] = "RLock";
static const char __pyx_k_abort[] = "abort";
static const char __pyx_k_aexit[] = "__aexit__";
static const char __pyx_k_aiter[] = "__aiter__";
static const char __pyx_k_anext[] = "__anext__";
static const char __pyx_k_ascii[] = "ascii";
static const char __pyx_k_await[] = "__await__";
static const char __pyx_k_c_key[] = "c_key";
static const char __pyx_k_class[] = "__class__";
static const char __pyx_k_clear[] = "clear";
static const char __pyx_k_close[] = "close";
static const char __pyx_k_debug[] = "debug";
static const char __pyx_k_enter[] = "__enter__";
static const char __pyx_k_errno[] = "errno";
static const char __pyx_k_error[] = "error";
static const char __pyx_k_event[] = "event";
static const char __pyx_k_flags[] = "flags";
static const char __pyx_k_lower[] = "lower";
static const char __pyx_k_queue[] = "queue";
static const char __pyx_k_range[] = "range";
static const char __pyx_k_ready[] = "ready";
static const char __pyx_k_run_2[] = "_run";
static const char __pyx_k_sleep[] = "sleep";
static const char __pyx_k_spawn[] = "spawn";
static const char __pyx_k_start[] = "start";
static const char __pyx_k_str_2[] = "__str__";
static const char __pyx_k_throw[] = "throw";
static const char __pyx_k_timer[] = "timer";
static const char __pyx_k_upper[] = "upper";
static const char __pyx_k_utf_8[] = "utf-8";
static const char __pyx_k_value[] = "value";
static const char __pyx_k_write[] = "write";
static const char __pyx_k_LOGGER[] = "_LOGGER";
static const char __pyx_k_POLLER[] = "POLLER";
static const char __pyx_k_Server[] = "Server";
static const char __pyx_k_Thread[] = "Thread";
static const char __pyx_k_accept[] = "accept";
static const char __pyx_k_aenter[] = "__aenter__";
static const char __pyx_k_append[] = "append";
static const char __pyx_k_cancel[] = "cancel";
static const char __pyx_k_closed[] = "closed";
static const char __pyx_k_common[] = "_common";
static const char __pyx_k_cygrpc[] = ".cygrpc";
static const char __pyx_k_daemon[] = "daemon";
static const char __pyx_k_decode[] = "decode";
static const char __pyx_k_encode[] = "encode";
static const char __pyx_k_exit_2[] = "_exit";
static const char __pyx_k_failed[] = "{} failed: {}";
static const char __pyx_k_fileno[] = "fileno";
static const char __pyx_k_format[] = "format";
static const char __pyx_k_future[] = "future";
static const char __pyx_k_g_pool[] = "g_pool";
static const char __pyx_k_gevent[] = "gevent";
static const char __pyx_k_import[] = "__import__";
static const char __pyx_k_listen[] = "listen";
static const char __pyx_k_lstrip[] = "lstrip";
static const char __pyx_k_medium[] = "medium";
static const char __pyx_k_method[] = "method";
static const char __pyx_k_module[] = "__module__";
static const char __pyx_k_name_2[] = "__name__";
static const char __pyx_k_notify[] = "notify";
static const char __pyx_k_object[] = "object";
static const char __pyx_k_pickle[] = "pickle";
static const char __pyx_k_poller[] = "poller";
static const char __pyx_k_reduce[] = "__reduce__";
static const char __pyx_k_repr_2[] = "__repr__";
static const char __pyx_k_result[] = "result";
static const char __pyx_k_return[] = "return";
static const char __pyx_k_rstrip[] = "rstrip";
static const char __pyx_k_server[] = "server";
static const char __pyx_k_shield[] = "shield";
static const char __pyx_k_socket[] = "socket";
static const char __pyx_k_status[] = "status";
static const char __pyx_k_target[] = "target";
static const char __pyx_k_thread[] = "_thread";
static const char __pyx_k_update[] = "update";
static const char __pyx_k_values[] = "values";
static const char __pyx_k_0_0_0_0[] = "0.0.0.0";
static const char __pyx_k_AF_INET[] = "AF_INET";
static const char __pyx_k_AioCall[] = "_AioCall";
static const char __pyx_k_Channel[] = "Channel";
static const char __pyx_k_IOError[] = "IOError";
static const char __pyx_k_Unknown[] = "Unknown";
static const char __pyx_k_aborted[] = "aborted";
static const char __pyx_k_acquire[] = "acquire";
static const char __pyx_k_address[] = "address";
static const char __pyx_k_asyncio[] = "asyncio";
static const char __pyx_k_c_event[] = "c_event";
static const char __pyx_k_cb_func[] = "cb_func";
static const char __pyx_k_channel[] = "channel";
static const char __pyx_k_connect[] = "connect";
static const char __pyx_k_context[] = "context";
static const char __pyx_k_deflate[] = "deflate";
static const char __pyx_k_details[] = "details";
static const char __pyx_k_discard[] = "discard";
static const char __pyx_k_environ[] = "environ";
static const char __pyx_k_g_event[] = "g_event";
static const char __pyx_k_genexpr[] = "genexpr";
static const char __pyx_k_get_hub[] = "get_hub";
static const char __pyx_k_handler[] = "handler";
static const char __pyx_k_inspect[] = "inspect";
static const char __pyx_k_logging[] = "logging";
static const char __pyx_k_maxsize[] = "maxsize";
static const char __pyx_k_members[] = "__members__";
static const char __pyx_k_message[] = "message";
static const char __pyx_k_options[] = "options";
static const char __pyx_k_partial[] = "partial";
static const char __pyx_k_pkgutil[] = "pkgutil";
static const char __pyx_k_prepare[] = "__prepare__";
static const char __pyx_k_release[] = "release";
static const char __pyx_k_request[] = "request";
static const char __pyx_k_sendmsg[] = "sendmsg";
static const char __pyx_k_service[] = "service";
static const char __pyx_k_success[] = "success";
static const char __pyx_k_timeout[] = "timeout";
static const char __pyx_k_unknown[] = "unknown";
static const char __pyx_k_warning[] = "warning";
static const char __pyx_k_wrapper[] = "wrapper";
static const char __pyx_k_AF_INET6[] = "AF_INET6";
static const char __pyx_k_AioState[] = "_AioState";
static const char __pyx_k_ENOTCONN[] = "ENOTCONN";
static const char __pyx_k_EX_USAGE[] = "EX_USAGE";
static const char __pyx_k_KeyError[] = "KeyError";
static const char __pyx_k_RPCState[] = "RPCState";
static const char __pyx_k_callback[] = "callback";
static const char __pyx_k_capacity[] = "capacity";
static const char __pyx_k_channels[] = "channels";
static const char __pyx_k_daemonic[] = "daemonic";
static const char __pyx_k_deadline[] = "deadline";
static const char __pyx_k_end_time[] = "end_time";
static const char __pyx_k_endswith[] = "endswith";
static const char __pyx_k_exc_info[] = "exc_info";
static const char __pyx_k_gaierror[] = "gaierror";
static const char __pyx_k_get_data[] = "get_data";
static const char __pyx_k_getstate[] = "__getstate__";
static const char __pyx_k_gevent_g[] = "gevent_g";
static const char __pyx_k_greenlet[] = "greenlet";
static const char __pyx_k_identity[] = "identity";
static const char __pyx_k_internal[] = "internal";
static const char __pyx_k_is_valid[] = "is_valid";
static const char __pyx_k_metadata[] = "metadata";
static const char __pyx_k_object_2[] = "<{} object>";
static const char __pyx_k_property[] = "property";
static const char __pyx_k_pyx_capi[] = "__pyx_capi__";
static const char __pyx_k_pyx_type[] = "__pyx_type";
static const char __pyx_k_qualname[] = "__qualname__";
static const char __pyx_k_response[] = "response";
static const char __pyx_k_rpc_coro[] = "rpc_coro";
static const char __pyx_k_rpc_task[] = "rpc_task";
static const char __pyx_k_run_loop[] = "_run_loop";
static const char __pyx_k_set_code[] = "set_code";
static const char __pyx_k_setstate[] = "__setstate__";
static const char __pyx_k_shutdown[] = "shutdown";
static const char __pyx_k_user_tag[] = "user_tag";
static const char __pyx_k_wait_for[] = "wait_for";
static const char __pyx_k_AioServer[] = "AioServer";
static const char __pyx_k_BaseError[] = "BaseError";
static const char __pyx_k_CallError[] = "CallError";
static const char __pyx_k_CallState[] = "_CallState";
static const char __pyx_k_Condition[] = "Condition";
static const char __pyx_k_EOF___len[] = "_EOF.__len__";
static const char __pyx_k_EOF___str[] = "_EOF.__str__";
static const char __pyx_k_EOF__repr[] = "_EOF._repr";
static const char __pyx_k_ForkState[] = "_ForkState";
static const char __pyx_k_Metadatum[] = "_Metadatum";
static const char __pyx_k_Operation[] = "Operation";
static const char __pyx_k_SHUT_RDWR[] = "SHUT_RDWR";
static const char __pyx_k_Timed_out[] = "Timed out";
static const char __pyx_k_TypeError[] = "TypeError";
static const char __pyx_k_WriteFlag[] = "WriteFlag";
static const char __pyx_k_algorithm[] = "algorithm";
static const char __pyx_k_arguments[] = "arguments";
static const char __pyx_k_bind_loop[] = "bind_loop";
static const char __pyx_k_c_options[] = "c_options";
static const char __pyx_k_cancelled[] = "cancelled";
static const char __pyx_k_condition[] = "_condition";
static const char __pyx_k_data_loss[] = "data_loss";
static const char __pyx_k_decrement[] = "decrement";
static const char __pyx_k_enumerate[] = "enumerate";
static const char __pyx_k_exception[] = "exception";
static const char __pyx_k_functools[] = "functools";
static const char __pyx_k_getLogger[] = "getLogger";
static const char __pyx_k_increment[] = "increment";
static const char __pyx_k_local_tcp[] = "local_tcp";
static const char __pyx_k_metaclass[] = "__metaclass__";
static const char __pyx_k_not_found[] = "not_found";
static const char __pyx_k_on_finish[] = "on_finish";
static const char __pyx_k_pyx_state[] = "__pyx_state";
static const char __pyx_k_reduce_ex[] = "__reduce_ex__";
static const char __pyx_k_rpc_state[] = "rpc_state";
static const char __pyx_k_server_id[] = "server_id";
static const char __pyx_k_setDaemon[] = "setDaemon";
static const char __pyx_k_socket_id[] = "socket_id";
static const char __pyx_k_threading[] = "threading";
static const char __pyx_k_traceback[] = "traceback";
static const char __pyx_k_used_mask[] = "used_mask";
static const char __pyx_k_wait_time[] = "wait_time";
static const char __pyx_k_AbortError[] = "AbortError";
static const char __pyx_k_AioChannel[] = "AioChannel";
static const char __pyx_k_ChannelArg[] = "_ChannelArg";
static const char __pyx_k_EMPTY_MASK[] = "_EMPTY_MASK";
static const char __pyx_k_EOF___bool[] = "_EOF.__bool__";
static const char __pyx_k_EOF___repr[] = "_EOF.__repr__";
static const char __pyx_k_Failed_s_s[] = "Failed \"%s\": %s";
static const char __pyx_k_SOL_SOCKET[] = "SOL_SOCKET";
static const char __pyx_k_StatusCode[] = "StatusCode";
static const char __pyx_k_SystemExit[] = "SystemExit";
static const char __pyx_k_UsageError[] = "UsageError";
static const char __pyx_k_ValueError[] = "ValueError";
static const char __pyx_k_add_reader[] = "add_reader";
static const char __pyx_k_addr_tuple[] = "addr_tuple";
static const char __pyx_k_call_creds[] = "call_creds";
static const char __pyx_k_call_queue[] = "call_queue";
static const char __pyx_k_call_state[] = "call_state";
static const char __pyx_k_census_ctx[] = "census_ctx";
static const char __pyx_k_channel_id[] = "channel_id";
static const char __pyx_k_connecting[] = "connecting";
static const char __pyx_k_error_code[] = "error_code";
static const char __pyx_k_finish_ops[] = "finish_ops";
static const char __pyx_k_fork_epoch[] = "fork_epoch";
static const char __pyx_k_fork_state[] = "_fork_state";
static const char __pyx_k_gevent_hub[] = "gevent_hub";
static const char __pyx_k_handle_rpc[] = "_handle_rpc";
static const char __pyx_k_identities[] = "identities";
static const char __pyx_k_namedtuple[] = "namedtuple";
static const char __pyx_k_notify_all[] = "notify_all";
static const char __pyx_k_on_failure[] = "on_failure";
static const char __pyx_k_on_success[] = "on_success";
static const char __pyx_k_operations[] = "operations";
static const char __pyx_k_properties[] = "properties";
static const char __pyx_k_pyx_result[] = "__pyx_result";
static const char __pyx_k_pyx_vtable[] = "__pyx_vtable__";
static const char __pyx_k_receive_op[] = "receive_op";
static const char __pyx_k_set_result[] = "set_result";
static const char __pyx_k_setsockopt[] = "setsockopt";
static const char __pyx_k_socketpair[] = "socketpair";
static const char __pyx_k_stored_ctx[] = "_stored_ctx";
static const char __pyx_k_timeout_ms[] = "timeout_ms";
static const char __pyx_k_write_flag[] = "write_flag";
static const char __pyx_k_CallDetails[] = "CallDetails";
static const char __pyx_k_ChannelArgs[] = "_ChannelArgs";
static const char __pyx_k_EMPTY_FLAGS[] = "_EMPTY_FLAGS";
static const char __pyx_k_IPPROTO_TCP[] = "IPPROTO_TCP";
static const char __pyx_k_ImportError[] = "ImportError";
static const char __pyx_k_PickleError[] = "PickleError";
static const char __pyx_k_TCP_NODELAY[] = "TCP_NODELAY";
static const char __pyx_k_TRUE_VALUES[] = "_TRUE_VALUES";
static const char __pyx_k_buffer_hint[] = "buffer_hint";
static const char __pyx_k_cert_config[] = "cert_config";
static const char __pyx_k_collections[] = "collections";
static const char __pyx_k_contextvars[] = "contextvars";
static const char __pyx_k_create_task[] = "create_task";
static const char __pyx_k_credentials[] = "credentials";
static const char __pyx_k_getaddrinfo[] = "getaddrinfo";
static const char __pyx_k_getpeername[] = "getpeername";
static const char __pyx_k_getsockname[] = "getsockname";
static const char __pyx_k_gevent_pool[] = "gevent.pool";
static const char __pyx_k_interceptor[] = "interceptor";
static const char __pyx_k_isawaitable[] = "isawaitable";
static const char __pyx_k_max_results[] = "max_results";
static const char __pyx_k_no_compress[] = "no_compress";
static const char __pyx_k_not_invoked[] = "not_invoked";
static const char __pyx_k_private_key[] = "private_key";
static const char __pyx_k_read_socket[] = "read_socket";
static const char __pyx_k_request_raw[] = "request_raw";
static const char __pyx_k_retain_self[] = "retain_self";
static const char __pyx_k_set_details[] = "set_details";
static const char __pyx_k_setblocking[] = "setblocking";
static const char __pyx_k_shutdown_cq[] = "shutdown_cq";
static const char __pyx_k_start_batch[] = "_start_batch";
static const char __pyx_k_started_tag[] = "started_tag";
static const char __pyx_k_status_code[] = "status_code";
static const char __pyx_k_thread_pool[] = "thread_pool";
static const char __pyx_k_unary_unary[] = "unary_unary";
static const char __pyx_k_unavailable[] = "unavailable";
static const char __pyx_k_write_bytes[] = "write_bytes";
static const char __pyx_k_AioRpcStatus[] = "AioRpcStatus";
static const char __pyx_k_ChannelState[] = "_ChannelState";
static const char __pyx_k_RuntimeError[] = "RuntimeError";
static const char __pyx_k_SO_REUSEADDR[] = "SO_REUSEADDR";
static const char __pyx_k_TimeoutError[] = "TimeoutError";
static const char __pyx_k_TimerWrapper[] = "TimerWrapper";
static const char __pyx_k_auth_context[] = "auth_context";
static const char __pyx_k_backup_queue[] = "backup_queue";
static const char __pyx_k_call_details[] = "call_details";
static const char __pyx_k_continuation[] = "continuation";
static const char __pyx_k_copy_context[] = "copy_context";
static const char __pyx_k_error_string[] = "error_string";
static const char __pyx_k_gevent_event[] = "gevent_event";
static const char __pyx_k_gevent_hub_2[] = "gevent.hub";
static const char __pyx_k_grpc_aio_EOF[] = "<grpc.aio.EOF>";
static const char __pyx_k_interceptors[] = "interceptors";
static const char __pyx_k_out_of_range[] = "out_of_range";
static const char __pyx_k_poll_wrapper[] = "_poll_wrapper";
static const char __pyx_k_pyx_checksum[] = "__pyx_checksum";
static const char __pyx_k_request_call[] = "_request_call";
static const char __pyx_k_response_raw[] = "response_raw";
static const char __pyx_k_send_message[] = "_send_message";
static const char __pyx_k_server_queue[] = "server_queue";
static const char __pyx_k_started_tags[] = "started_tags";
static const char __pyx_k_stream_unary[] = "stream_unary";
static const char __pyx_k_stringsource[] = "stringsource";
static const char __pyx_k_timeout_secs[] = "timeout_secs";
static const char __pyx_k_unary_stream[] = "unary_stream";
static const char __pyx_k_AsyncIOEngine[] = "AsyncIOEngine";
static const char __pyx_k_BaseException[] = "BaseException";
static const char __pyx_k_CensusContext[] = "CensusContext";
static const char __pyx_k_ChannelArgKey[] = "ChannelArgKey";
static const char __pyx_k_InternalError[] = "InternalError";
static const char __pyx_k_OperationType[] = "OperationType";
static const char __pyx_k_SocketWrapper[] = "SocketWrapper";
static const char __pyx_k_applysockopts[] = "applysockopts";
static const char __pyx_k_asyncio_tasks[] = "asyncio.tasks";
static const char __pyx_k_c_cert_config[] = "c_cert_config";
static const char __pyx_k_callback_func[] = "callback_func";
static const char __pyx_k_channel_state[] = "channel_state";
static const char __pyx_k_close_on_fork[] = "_close_on_fork";
static const char __pyx_k_create_future[] = "create_future";
static const char __pyx_k_credentials_2[] = "_credentials";
static const char __pyx_k_enable_census[] = "enable_census";
static const char __pyx_k_error_details[] = "error_details";
static const char __pyx_k_execute_batch[] = "execute_batch";
static const char __pyx_k_gevent_socket[] = "gevent_socket";
static const char __pyx_k_handle_events[] = "_handle_events";
static const char __pyx_k_invalid_flags[] = "invalid_flags";
static const char __pyx_k_not_on_client[] = "not_on_client";
static const char __pyx_k_not_on_server[] = "not_on_server";
static const char __pyx_k_query_handler[] = "query_handler";
static const char __pyx_k_queue_timeout[] = "queue_timeout";
static const char __pyx_k_reduce_cython[] = "__reduce_cython__";
static const char __pyx_k_remove_reader[] = "remove_reader";
static const char __pyx_k_runtime_error[] = "runtime_error";
static const char __pyx_k_set_exception[] = "set_exception";
static const char __pyx_k_stream_stream[] = "stream_stream";
static const char __pyx_k_subchannel_id[] = "subchannel_id";
static const char __pyx_k_unary_handler[] = "unary_handler";
static const char __pyx_k_unimplemented[] = "unimplemented";
static const char __pyx_k_AioCall_status[] = "_AioCall.status";
static const char __pyx_k_AssertionError[] = "AssertionError";
static const char __pyx_k_AttributeError[] = "AttributeError";
static const char __pyx_k_BoundEventLoop[] = "_BoundEventLoop";
static const char __pyx_k_CancelledError[] = "CancelledError";
static const char __pyx_k_CompletionType[] = "CompletionType";
static const char __pyx_k_GrpcArgWrapper[] = "_GrpcArgWrapper";
static const char __pyx_k_IntegratedCall[] = "IntegratedCall";
static const char __pyx_k_RequestCallTag[] = "_RequestCallTag";
static const char __pyx_k_ResolveWrapper[] = "ResolveWrapper";
static const char __pyx_k_SegregatedCall[] = "SegregatedCall";
static const char __pyx_k_Unexpected_s_s[] = "Unexpected %s: %s";
static const char __pyx_k_add_http2_port[] = "add_http2_port";
static const char __pyx_k_already_exists[] = "already_exists";
static const char __pyx_k_c_returned_str[] = "c_returned_str";
static const char __pyx_k_default_vtable[] = "default_vtable";
static const char __pyx_k_exception_type[] = "exception_type";
static const char __pyx_k_get_event_loop[] = "get_event_loop";
static const char __pyx_k_get_fork_epoch[] = "get_fork_epoch";
static const char __pyx_k_gevent_event_2[] = "gevent.event";
static const char __pyx_k_managed_target[] = "managed_target";
static const char __pyx_k_method_handler[] = "method_handler";
static const char __pyx_k_pem_root_certs[] = "pem_root_certs";
static const char __pyx_k_query_handlers[] = "query_handlers";
static const char __pyx_k_queue_shutdown[] = "queue_shutdown";
static const char __pyx_k_send_message_2[] = "send_message";
static const char __pyx_k_socket_sendmsg[] = "socket_sendmsg";
static const char __pyx_k_socket_wrapper[] = "socket_wrapper";
static const char __pyx_k_spawn_greenlet[] = "_spawn_greenlet";
static const char __pyx_k_stream_handler[] = "stream_handler";
static const char __pyx_k_time_remaining[] = "time_remaining";
static const char __pyx_k_wait_for_ready[] = "wait_for_ready";
static const char __pyx_k_yield_to_queue[] = "yield_to_queue";
static const char __pyx_k_AioServer_start[] = "AioServer.start";
static const char __pyx_k_CallCredentials[] = "CallCredentials";
static const char __pyx_k_CallbackWrapper[] = "CallbackWrapper";
static const char __pyx_k_CompletionQueue[] = "CompletionQueue";
static const char __pyx_k_ConnectivityTag[] = "_ConnectivityTag";
static const char __pyx_k_GrpcCallWrapper[] = "GrpcCallWrapper";
static const char __pyx_k_Locally_aborted[] = "Locally aborted.";
static const char __pyx_k_MessageReceiver[] = "_MessageReceiver";
static const char __pyx_k_ServicerContext[] = "_ServicerContext";
static const char __pyx_k_already_invoked[] = "already_invoked";
static const char __pyx_k_c_error_details[] = "c_error_details";
static const char __pyx_k_completion_type[] = "completion_type";
static const char __pyx_k_failure_handler[] = "failure_handler";
static const char __pyx_k_generic_handler[] = "generic_handler";
static const char __pyx_k_gevent_socket_2[] = "gevent.socket";
static const char __pyx_k_metadata_plugin[] = "metadata_plugin";
static const char __pyx_k_next_call_event[] = "next_call_event";
static const char __pyx_k_peer_identities[] = "peer_identities";
static const char __pyx_k_py_auth_context[] = "py_auth_context";
static const char __pyx_k_pyx_PickleError[] = "__pyx_PickleError";
static const char __pyx_k_receive_message[] = "_receive_message";
static const char __pyx_k_request_message[] = "request_message";
static const char __pyx_k_resolve_wrapper[] = "resolve_wrapper";
static const char __pyx_k_run_in_executor[] = "run_in_executor";
static const char __pyx_k_run_interceptor[] = "_run_interceptor";
static const char __pyx_k_set_compression[] = "set_compression";
static const char __pyx_k_setstate_cython[] = "__setstate_cython__";
static const char __pyx_k_start_server_id[] = "start_server_id";
static const char __pyx_k_start_socket_id[] = "start_socket_id";
static const char __pyx_k_unauthenticated[] = "unauthenticated";
static const char __pyx_k_CompressionLevel[] = "CompressionLevel";
static const char __pyx_k_Expected_str_not[] = "Expected str, not {}";
static const char __pyx_k_ForkState___init[] = "_ForkState.__init__";
static const char __pyx_k_Method_not_found[] = "Method not found!";
static const char __pyx_k_RequestCallError[] = "_RequestCallError";
static const char __pyx_k_RequestCallEvent[] = "RequestCallEvent";
static const char __pyx_k_already_accepted[] = "already_accepted";
static const char __pyx_k_already_finished[] = "already_finished";
static const char __pyx_k_batch_operations[] = "batch_operations";
static const char __pyx_k_c_pem_root_certs[] = "c_pem_root_certs";
static const char __pyx_k_call_credentials[] = "call_credentials";
static const char __pyx_k_callback_wrapper[] = "callback_wrapper";
static const char __pyx_k_dump_xds_configs[] = "dump_xds_configs";
static const char __pyx_k_fork_in_progress[] = "fork_in_progress";
static const char __pyx_k_format_exception[] = "format_exception";
static const char __pyx_k_generic_handlers[] = "generic_handlers";
static const char __pyx_k_get_running_loop[] = "get_running_loop";
static const char __pyx_k_get_working_loop[] = "get_working_loop";
static const char __pyx_k_init_grpc_gevent[] = "init_grpc_gevent";
static const char __pyx_k_initial_metadata[] = "initial_metadata";
static const char __pyx_k_invalid_argument[] = "invalid_argument";
static const char __pyx_k_invalid_metadata[] = "invalid_metadata";
static const char __pyx_k_is_async_handler[] = "_is_async_handler";
static const char __pyx_k_request_iterator[] = "request_iterator";
static const char __pyx_k_response_message[] = "response_message";
static const char __pyx_k_run_with_context[] = "_run_with_context";
static const char __pyx_k_server_main_loop[] = "_server_main_loop";
static const char __pyx_k_service_accounts[] = "service_accounts";
static const char __pyx_k_servicer_context[] = "servicer_context";
static const char __pyx_k_start_channel_id[] = "start_channel_id";
static const char __pyx_k_ActiveThreadCount[] = "_ActiveThreadCount";
static const char __pyx_k_BatchOperationTag[] = "_BatchOperationTag";
static const char __pyx_k_CUSTOM_IO_MANAGER[] = "CUSTOM_IO_MANAGER";
static const char __pyx_k_Channel_is_closed[] = "Channel is closed.";
static const char __pyx_k_ConnectivityEvent[] = "ConnectivityEvent";
static const char __pyx_k_ConnectivityState[] = "ConnectivityState";
static const char __pyx_k_ExecuteBatchError[] = "ExecuteBatchError";
static const char __pyx_k_ForkManagedThread[] = "ForkManagedThread";
static const char __pyx_k_KeyboardInterrupt[] = "KeyboardInterrupt";
static const char __pyx_k_ServerCredentials[] = "ServerCredentials";
static const char __pyx_k_ServerShutdownTag[] = "_ServerShutdownTag";
static const char __pyx_k_SslPemKeyCertPair[] = "SslPemKeyCertPair";
static const char __pyx_k_abort_with_status[] = "abort_with_status";
static const char __pyx_k_add_done_callback[] = "add_done_callback";
static const char __pyx_k_certificate_chain[] = "certificate_chain";
static const char __pyx_k_custom_io_manager[] = "custom_io_manager";
static const char __pyx_k_deadline_exceeded[] = "deadline_exceeded";
static const char __pyx_k_default_authority[] = "default_authority";
static const char __pyx_k_force_client_auth[] = "force_client_auth";
static const char __pyx_k_grpc_call_wrapper[] = "grpc_call_wrapper";
static const char __pyx_k_handle_exceptions[] = "_handle_exceptions";
static const char __pyx_k_intercept_service[] = "intercept_service";
static const char __pyx_k_peer_identity_key[] = "peer_identity_key";
static const char __pyx_k_permission_denied[] = "permission_denied";
static const char __pyx_k_pyx_unpickle__Tag[] = "__pyx_unpickle__Tag";
static const char __pyx_k_receive_message_2[] = "receive_message";
static const char __pyx_k_request_streaming[] = "request_streaming";
static const char __pyx_k_schedule_rpc_coro[] = "_schedule_rpc_coro";
static const char __pyx_k_socket_read_async[] = "socket_read_async";
static const char __pyx_k_ssl_session_cache[] = "ssl_session_cache";
static const char __pyx_k_trailing_metadata[] = "trailing_metadata";
static const char __pyx_k_transient_failure[] = "transient_failure";
static const char __pyx_k_uninstall_context[] = "uninstall_context";
static const char __pyx_k_AioServer_shutdown[] = "AioServer.shutdown";
static const char __pyx_k_ChannelCredentials[] = "ChannelCredentials";
static const char __pyx_k_CompressionOptions[] = "CompressionOptions";
static const char __pyx_k_HandlerCallDetails[] = "_HandlerCallDetails";
static const char __pyx_k_SSLSessionCacheLRU[] = "SSLSessionCacheLRU";
static const char __pyx_k_ServerStoppedError[] = "_ServerStoppedError";
static const char __pyx_k_UnicodeDecodeError[] = "UnicodeDecodeError";
static const char __pyx_k_asyncio_coroutines[] = "asyncio.coroutines";
static const char __pyx_k_await_zero_threads[] = "await_zero_threads";
static const char __pyx_k_call_credentialses[] = "call_credentialses";
static const char __pyx_k_cline_in_traceback[] = "cline_in_traceback";
static const char __pyx_k_core_function_name[] = "core_function_name";
static const char __pyx_k_debug_error_string[] = "debug_error_string";
static const char __pyx_k_isasyncgenfunction[] = "isasyncgenfunction";
static const char __pyx_k_local_connect_type[] = "local_connect_type";
static const char __pyx_k_num_active_threads[] = "_num_active_threads";
static const char __pyx_k_operation_complete[] = "operation_complete";
static const char __pyx_k_pem_key_cert_pairs[] = "pem_key_cert_pairs";
static const char __pyx_k_queue_must_be_live[] = "queue must be live";
static const char __pyx_k_resource_exhausted[] = "resource_exhausted";
static const char __pyx_k_response_streaming[] = "response_streaming";
static const char __pyx_k_send_receive_close[] = "send_receive_close";
static const char __pyx_k_server_credentials[] = "server_credentials";
static const char __pyx_k_socket_write_async[] = "socket_write_async";
static const char __pyx_k_AioCall_unary_unary[] = "_AioCall.unary_unary";
static const char __pyx_k_BaseCompletionQueue[] = "BaseCompletionQueue";
static const char __pyx_k_BatchOperationEvent[] = "BatchOperationEvent";
static const char __pyx_k_Cannot_invoke_RPC_s[] = "Cannot invoke RPC: %s";
static const char __pyx_k_GRPC_ASYNCIO_ENGINE[] = "GRPC_ASYNCIO_ENGINE";
static const char __pyx_k_LocalConnectionType[] = "LocalConnectionType";
static const char __pyx_k_NotImplementedError[] = "NotImplementedError";
static const char __pyx_k_ServerShutdownEvent[] = "ServerShutdownEvent";
static const char __pyx_k_SyncServicerContext[] = "_SyncServicerContext";
static const char __pyx_k_active_thread_count[] = "active_thread_count";
static const char __pyx_k_async_callback_func[] = "async_callback_func";
static const char __pyx_k_batch_operation_tag[] = "batch_operation_tag";
static const char __pyx_k_cert_config_fetcher[] = "cert_config_fetcher";
static const char __pyx_k_channel_credentials[] = "channel_credentials";
static const char __pyx_k_channelz_get_server[] = "channelz_get_server";
static const char __pyx_k_channelz_get_socket[] = "channelz_get_socket";
static const char __pyx_k_failed_precondition[] = "failed_precondition";
static const char __pyx_k_find_method_handler[] = "_find_method_handler";
static const char __pyx_k_fork_handler_failed[] = "_fork_handler_failed";
static const char __pyx_k_grpc__cython_cygrpc[] = "grpc._cython.cygrpc";
static const char __pyx_k_initial_cert_config[] = "initial_cert_config";
static const char __pyx_k_invocation_metadata[] = "invocation_metadata";
static const char __pyx_k_iscoroutinefunction[] = "iscoroutinefunction";
static const char __pyx_k_last_observed_state[] = "last_observed_state";
static const char __pyx_k_response_serializer[] = "response_serializer";
static const char __pyx_k_socket_accept_async[] = "socket_accept_async";
static const char __pyx_k_start_shutting_down[] = "_start_shutting_down";
static const char __pyx_k_too_many_operations[] = "too_many_operations";
static const char __pyx_k_Abort_already_called[] = "Abort already called!";
static const char __pyx_k_AioCall_stream_unary[] = "_AioCall.stream_unary";
static const char __pyx_k_CompressionAlgorithm[] = "CompressionAlgorithm";
static const char __pyx_k_ConcurrentRpcLimiter[] = "_ConcurrentRpcLimiter";
static const char __pyx_k_InitialMetadataFlags[] = "InitialMetadataFlags";
static const char __pyx_k_PropagationConstants[] = "PropagationConstants";
static const char __pyx_k_RPC_already_finished[] = "RPC already finished.";
static const char __pyx_k_SendMessageOperation[] = "SendMessageOperation";
static const char __pyx_k_ServicerContext_read[] = "_ServicerContext.read";
static const char __pyx_k_build_census_context[] = "build_census_context";
static const char __pyx_k_call_soon_threadsafe[] = "call_soon_threadsafe";
static const char __pyx_k_channelz_get_channel[] = "channelz_get_channel";
static const char __pyx_k_channelz_get_servers[] = "channelz_get_servers";
static const char __pyx_k_fallback_credentials[] = "fallback_credentials";
static const char __pyx_k_handler_call_details[] = "handler_call_details";
static const char __pyx_k_request_deserializer[] = "request_deserializer";
static const char __pyx_k_reset_postfork_child[] = "reset_postfork_child";
static const char __pyx_k_shutting_down_server[] = "shutting_down_server";
static const char __pyx_k_socket_connect_async[] = "socket_connect_async";
static const char __pyx_k_spawn_callback_async[] = "_spawn_callback_async";
static const char __pyx_k_wait_for_termination[] = "wait_for_termination";
static const char __pyx_k_Invalid_encoding_on_s[] = "Invalid encoding on %s";
static const char __pyx_k_PollerCompletionQueue[] = "PollerCompletionQueue";
static const char __pyx_k_SSLChannelCredentials[] = "SSLChannelCredentials";
static const char __pyx_k_ServicerContext_abort[] = "_ServicerContext.abort";
static const char __pyx_k_ServicerContext_write[] = "_ServicerContext.write";
static const char __pyx_k_Using_s_as_I_O_engine[] = "Using %s as I/O engine";
static const char __pyx_k_XDSChannelCredentials[] = "XDSChannelCredentials";
static const char __pyx_k_contextvars_supported[] = "_contextvars_supported";
static const char __pyx_k_credentials_roots_pem[] = "_credentials/roots.pem";
static const char __pyx_k_fork_register_channel[] = "fork_register_channel";
static const char __pyx_k_grpc_shutdown_wrapper[] = "_grpc_shutdown_wrapper";
static const char __pyx_k_initiate_unary_stream[] = "initiate_unary_stream";
static const char __pyx_k_operationses_and_tags[] = "operationses_and_tags";
static const char __pyx_k_pem_root_certificates[] = "pem_root_certificates";
static const char __pyx_k_send_initial_metadata[] = "_send_initial_metadata";
static const char __pyx_k_set_trailing_metadata[] = "set_trailing_metadata";
static const char __pyx_k_sync_servicer_context[] = "sync_servicer_context";
static const char __pyx_k_ALTSChannelCredentials[] = "ALTSChannelCredentials";
static const char __pyx_k_CallbackFailureHandler[] = "CallbackFailureHandler";
static const char __pyx_k_ForkManagedThread_join[] = "ForkManagedThread.join";
static const char __pyx_k_OK_CALL_REPRESENTATION[] = "_OK_CALL_REPRESENTATION";
static const char __pyx_k_Server_already_stopped[] = "Server already stopped.";
static const char __pyx_k_async_message_receiver[] = "_async_message_receiver";
static const char __pyx_k_client_config_in_slice[] = "client_config_in_slice";
static const char __pyx_k_decrease_once_finished[] = "decrease_once_finished";
static const char __pyx_k_handle_unary_unary_rpc[] = "_handle_unary_unary_rpc";
static const char __pyx_k_initiate_stream_stream[] = "initiate_stream_stream";
static const char __pyx_k_max_concurrent_streams[] = "max_concurrent_streams";
static const char __pyx_k_metadata_sent_observer[] = "metadata_sent_observer";
static const char __pyx_k_metadata_was_invalid_s[] = "metadata was invalid: %s";
static const char __pyx_k_pyx_unpickle_AioServer[] = "__pyx_unpickle_AioServer";
static const char __pyx_k_send_close_from_client[] = "send_close_from_client";
static const char __pyx_k_server_credentials_ssl[] = "server_credentials_ssl";
static const char __pyx_k_xds_server_credentials[] = "xds_server_credentials";
static const char __pyx_k_AioServer__request_call[] = "AioServer._request_call";
static const char __pyx_k_ForkManagedThread_start[] = "ForkManagedThread.start";
static const char __pyx_k_GRPC_PROPAGATE_DEADLINE[] = "GRPC_PROPAGATE_DEADLINE";
static const char __pyx_k_GRPC_PROPAGATE_DEFAULTS[] = "GRPC_PROPAGATE_DEFAULTS";
static const char __pyx_k_LocalChannelCredentials[] = "LocalChannelCredentials";
static const char __pyx_k_MessageReceiver___anext[] = "_MessageReceiver.__anext__";
static const char __pyx_k_ReceiveMessageOperation[] = "ReceiveMessageOperation";
static const char __pyx_k_ServerCertificateConfig[] = "ServerCertificateConfig";
static const char __pyx_k_WatchConnectivityFailed[] = "_WatchConnectivityFailed";
static const char __pyx_k_channelz_get_subchannel[] = "channelz_get_subchannel";
static const char __pyx_k_fork_handler_registered[] = "fork_handler_registered";
static const char __pyx_k_fork_unregister_channel[] = "fork_unregister_channel";
static const char __pyx_k_handle_callback_wrapper[] = "_handle_callback_wrapper";
static const char __pyx_k_handle_stream_unary_rpc[] = "_handle_stream_unary_rpc";
static const char __pyx_k_handle_unary_stream_rpc[] = "_handle_unary_stream_rpc";
static const char __pyx_k_is_fork_support_enabled[] = "is_fork_support_enabled";
static const char __pyx_k_max_send_message_length[] = "max_send_message_length";
static const char __pyx_k_maximum_concurrent_rpcs[] = "maximum_concurrent_rpcs";
static const char __pyx_k_metadata_locals_genexpr[] = "_metadata.<locals>.genexpr";
static const char __pyx_k_postfork_state_to_reset[] = "postfork_state_to_reset";
static const char __pyx_k_python_call_credentials[] = "python_call_credentials";
static const char __pyx_k_receive_close_on_server[] = "receive_close_on_server";
static const char __pyx_k_send_initial_metadata_2[] = "send_initial_metadata";
static const char __pyx_k_send_serialized_message[] = "send_serialized_message";
static const char __pyx_k_send_status_from_server[] = "send_status_from_server";
static const char __pyx_k_server_credentials_alts[] = "server_credentials_alts";
static const char __pyx_k_set_async_callback_func[] = "set_async_callback_func";
static const char __pyx_k_ActiveThreadCount___init[] = "_ActiveThreadCount.__init__";
static const char __pyx_k_AioCall_initial_metadata[] = "_AioCall.initial_metadata";
static const char __pyx_k_CompositeCallCredentials[] = "CompositeCallCredentials";
static const char __pyx_k_ForkManagedThread___init[] = "ForkManagedThread.__init__";
static const char __pyx_k_GRPC_ENABLE_FORK_SUPPORT[] = "_GRPC_ENABLE_FORK_SUPPORT";
static const char __pyx_k_IMMUTABLE_EMPTY_METADATA[] = "_IMMUTABLE_EMPTY_METADATA";
static const char __pyx_k_add_generic_rpc_handlers[] = "add_generic_rpc_handlers";
static const char __pyx_k_async_response_generator[] = "async_response_generator";
static const char __pyx_k_channel_credentials_alts[] = "channel_credentials_alts";
static const char __pyx_k_grpc_server_request_call[] = "grpc_server_request_call";
static const char __pyx_k_handle_stream_stream_rpc[] = "_handle_stream_stream_rpc";
static const char __pyx_k_postfork_states_to_reset[] = "postfork_states_to_reset";
static const char __pyx_k_receive_initial_metadata[] = "_receive_initial_metadata";
static const char __pyx_k_receive_status_on_client[] = "receive_status_on_client";
static const char __pyx_k_run_coroutine_threadsafe[] = "run_coroutine_threadsafe";
static const char __pyx_k_schedule_coro_threadsafe[] = "schedule_coro_threadsafe";
static const char __pyx_k_send_initial_metadata_op[] = "send_initial_metadata_op";
static const char __pyx_k_server_credentials_local[] = "server_credentials_local";
static const char __pyx_k_spawn_callback_in_thread[] = "_spawn_callback_in_thread";
static const char __pyx_k_ssl_target_name_override[] = "ssl_target_name_override";
static const char __pyx_k_watch_connectivity_state[] = "watch_connectivity_state";
static const char __pyx_k_Non_thread_safe_operation[] = "Non-thread-safe operation";
static const char __pyx_k_Server_not_in_ready_state[] = "Server not in ready state";
static const char __pyx_k_Unsupported_engine_type_s[] = "Unsupported engine type [%s]";
static const char __pyx_k_block_if_fork_in_progress[] = "block_if_fork_in_progress";
static const char __pyx_k_certificate_configuration[] = "_certificate_configuration";
static const char __pyx_k_channel_credentials_local[] = "channel_credentials_local";
static const char __pyx_k_channelz_get_top_channels[] = "channelz_get_top_channels";
static const char __pyx_k_check_before_request_call[] = "check_before_request_call";
static const char __pyx_k_get_deadline_from_context[] = "get_deadline_from_context";
static const char __pyx_k_outbound_initial_metadata[] = "outbound_initial_metadata";
static const char __pyx_k_primary_user_agent_string[] = "primary_user_agent_string";
static const char __pyx_k_register_completion_queue[] = "register_completion_queue";
static const char __pyx_k_AioCall_send_receive_close[] = "_AioCall.send_receive_close";
static const char __pyx_k_GRPC_ENABLE_FORK_SUPPORT_2[] = "GRPC_ENABLE_FORK_SUPPORT";
static const char __pyx_k_InsecureChannelCredentials[] = "InsecureChannelCredentials";
static const char __pyx_k_Internal_gRPC_call_error_d[] = "Internal gRPC call error %d. ";
static const char __pyx_k_NON_OK_CALL_REPRESENTATION[] = "_NON_OK_CALL_REPRESENTATION";
static const char __pyx_k_compression_algorithm_name[] = "compression_algorithm_name";
static const char __pyx_k_decrease_active_rpcs_count[] = "_decrease_active_rpcs_count";
static const char __pyx_k_fork_in_progress_condition[] = "fork_in_progress_condition";
static const char __pyx_k_max_receive_message_length[] = "max_receive_message_length";
static const char __pyx_k_pyx_unpickle_CensusContext[] = "__pyx_unpickle_CensusContext";
static const char __pyx_k_receive_initial_metadata_2[] = "receive_initial_metadata";
static const char __pyx_k_receive_serialized_message[] = "receive_serialized_message";
static const char __pyx_k_serving_task_crash_handler[] = "_serving_task_crash_handler";
static const char __pyx_k_set_census_context_on_call[] = "set_census_context_on_call";
static const char __pyx_k_ActiveThreadCount_decrement[] = "_ActiveThreadCount.decrement";
static const char __pyx_k_ActiveThreadCount_increment[] = "_ActiveThreadCount.increment";
static const char __pyx_k_AioServer__server_main_loop[] = "AioServer._server_main_loop";
static const char __pyx_k_CompositeChannelCredentials[] = "CompositeChannelCredentials";
static const char __pyx_k_ForkManagedThread_setDaemon[] = "ForkManagedThread.setDaemon";
static const char __pyx_k_GRPC_PROPAGATE_CANCELLATION[] = "GRPC_PROPAGATE_CANCELLATION";
static const char __pyx_k_channelz_get_server_sockets[] = "channelz_get_server_sockets";
static const char __pyx_k_fork_handlers_and_grpc_init[] = "fork_handlers_and_grpc_init";
static const char __pyx_k_handle_status_once_received[] = "_handle_status_once_received";
static const char __pyx_k_insecure_server_credentials[] = "insecure_server_credentials";
static const char __pyx_k_secondary_user_agent_string[] = "secondary_user_agent_string";
static const char __pyx_k_socket_resolve_async_python[] = "socket_resolve_async_python";
static const char __pyx_k_Expecting_non_ok_status_code[] = "Expecting non-ok status code.";
static const char __pyx_k_Failed_grpc_call_start_batch[] = "Failed grpc_call_start_batch: {}";
static const char __pyx_k_SendCloseFromClientOperation[] = "SendCloseFromClientOperation";
static const char __pyx_k_SendInitialMetadataOperation[] = "SendInitialMetadataOperation";
static const char __pyx_k_UNKNOWN_CANCELLATION_DETAILS[] = "_UNKNOWN_CANCELLATION_DETAILS";
static const char __pyx_k_async_generator_to_generator[] = "async_generator_to_generator";
static const char __pyx_k_channel_credentials_insecure[] = "channel_credentials_insecure";
static const char __pyx_k_enter_user_request_generator[] = "enter_user_request_generator";
static const char __pyx_k_fork_handler_registered_lock[] = "fork_handler_registered_lock";
static const char __pyx_k_generator_to_async_generator[] = "generator_to_async_generator";
static const char __pyx_k_get_metadata_locals_callback[] = "_get_metadata.<locals>.callback";
static const char __pyx_k_next_event_locals_on_failure[] = "next_event.<locals>.on_failure";
static const char __pyx_k_next_event_locals_on_success[] = "next_event.<locals>.on_success";
static const char __pyx_k_run_with_context_locals__run[] = "_run_with_context.<locals>._run";
static const char __pyx_k_AWAIT_THREADS_TIMEOUT_SECONDS[] = "_AWAIT_THREADS_TIMEOUT_SECONDS";
static const char __pyx_k_Abort_error_has_been_replaced[] = "Abort error has been replaced!";
static const char __pyx_k_AioCall_initiate_unary_stream[] = "_AioCall.initiate_unary_stream";
static const char __pyx_k_MetadataPluginCallCredentials[] = "MetadataPluginCallCredentials";
static const char __pyx_k_ReceiveCloseOnServerOperation[] = "ReceiveCloseOnServerOperation";
static const char __pyx_k_SendStatusFromServerOperation[] = "SendStatusFromServerOperation";
static const char __pyx_k_handle_cancellation_from_core[] = "_handle_cancellation_from_core";
static const char __pyx_k_http2_initial_sequence_number[] = "http2_initial_sequence_number";
static const char __pyx_k_send_error_status_from_server[] = "_send_error_status_from_server";
static const char __pyx_k_server_certificate_config_ssl[] = "server_certificate_config_ssl";
static const char __pyx_k_the_server_hasn_t_started_yet[] = "the server hasn't started yet";
static const char __pyx_k_wait_for_ready_explicitly_set[] = "wait_for_ready_explicitly_set";
static const char __pyx_k_AioCall_initiate_stream_stream[] = "_AioCall.initiate_stream_stream";
static const char __pyx_k_AioServer__start_shutting_down[] = "AioServer._start_shutting_down";
static const char __pyx_k_AioServer_wait_for_termination[] = "AioServer.wait_for_termination";
static const char __pyx_k_ConcurrentRpcLimiter__decrease[] = "_ConcurrentRpcLimiter._decrease_active_rpcs_count_with_lock";
static const char __pyx_k_MessageReceiver__async_message[] = "_MessageReceiver._async_message_receiver";
static const char __pyx_k_ReceiveStatusOnClientOperation[] = "ReceiveStatusOnClientOperation";
static const char __pyx_k_ServerCertificateConfiguration[] = "ServerCertificateConfiguration";
static const char __pyx_k_dealloc___called_on_running_se[] = "__dealloc__ called on running server %s with status %d";
static const char __pyx_k_grpc_completion_queue_shutdown[] = "grpc_completion_queue_shutdown";
static const char __pyx_k_pyx_unpickle_ChannelCredential[] = "__pyx_unpickle_ChannelCredentials";
static const char __pyx_k_pyx_unpickle_InsecureChannelCr[] = "__pyx_unpickle_InsecureChannelCredentials";
static const char __pyx_k_src_python_grpcio_grpc__cython[] = "src/python/grpcio/grpc/_cython/_cygrpc/channel.pyx.pxi";
static const char __pyx_k_the_server_has_already_started[] = "the server has already started";
static const char __pyx_k_Aborting_method_s_due_to_server[] = "Aborting method [%s] due to server stop.";
static const char __pyx_k_ActiveThreadCount_await_zero_th[] = "_ActiveThreadCount.await_zero_threads";
static const char __pyx_k_AioCall__handle_status_once_rec[] = "_AioCall._handle_status_once_received";
static const char __pyx_k_AioCall_receive_serialized_mess[] = "_AioCall.receive_serialized_message";
static const char __pyx_k_AioCall_send_serialized_message[] = "_AioCall.send_serialized_message";
static const char __pyx_k_COMPRESSION_METADATA_STRING_MAP[] = "_COMPRESSION_METADATA_STRING_MAPPING";
static const char __pyx_k_Call_credentials_are_only_valid[] = "Call credentials are only valid on secure channels";
static const char __pyx_k_ComputeEngineChannelCredentials[] = "ComputeEngineChannelCredentials";
static const char __pyx_k_ConcurrentRpcLimiter_check_befo[] = "_ConcurrentRpcLimiter.check_before_request_call";
static const char __pyx_k_Failed_to_get_the_server_please[] = "Failed to get the server, please ensure your server_id==%s is valid";
static const char __pyx_k_Failed_to_get_the_socket_please[] = "Failed to get the socket, please ensure your socket_id==%s is valid";
static const char __pyx_k_INTERNAL_CALL_ERROR_MESSAGE_FOR[] = "_INTERNAL_CALL_ERROR_MESSAGE_FORMAT";
static const char __pyx_k_No_custom_hooks_are_implemented[] = "No custom hooks are implemented";
static const char __pyx_k_Raised_if_the_server_is_stopped[] = "Raised if the server is stopped.";
static const char __pyx_k_Raised_when_the_usage_of_API_by[] = "Raised when the usage of API by applications is inappropriate.\n\n    For example, trying to invoke RPC on a closed channel, mixing two styles\n    of streaming API on the client side. This exception should not be\n    suppressed.\n    ";
static const char __pyx_k_ReceiveInitialMetadataOperation[] = "ReceiveInitialMetadataOperation";
static const char __pyx_k_ServicerContext_abort_with_stat[] = "_ServicerContext.abort_with_status";
static const char __pyx_k_ServicerContext_send_initial_me[] = "_ServicerContext.send_initial_metadata";
static const char __pyx_k_Unexpected_s_raised_by_servicer[] = "Unexpected [%s] raised by servicer method [%s]";
static const char __pyx_k_decrease_active_rpcs_count_with[] = "_decrease_active_rpcs_count_with_lock";
static const char __pyx_k_find_method_handler_locals_quer[] = "_find_method_handler.<locals>.query_handlers";
static const char __pyx_k_finish_handler_with_stream_resp[] = "_finish_handler_with_stream_responses";
static const char __pyx_k_finish_handler_with_unary_respo[] = "_finish_handler_with_unary_response";
static const char __pyx_k_grpc_server_shutdown_and_notify[] = "grpc_server_shutdown_and_notify";
static const char __pyx_k_init_grpc_gevent_locals_cb_func[] = "init_grpc_gevent.<locals>.cb_func";
static const char __pyx_k_integrated_call_locals_on_succe[] = "_integrated_call.<locals>.on_success";
static const char __pyx_k_of_RPC_that_terminated_with_sta[] = "<{} of RPC that terminated with:\n\tstatus = {}\n\tdetails = \"{}\"\n>";
static const char __pyx_k_segregated_call_locals_on_succe[] = "_segregated_call.<locals>.on_success";
static const char __pyx_k_self__cq_cannot_be_converted_to[] = "self._cq cannot be converted to a Python object for pickling";
static const char __pyx_k_self_arg_cannot_be_converted_to[] = "self.arg cannot be converted to a Python object for pickling";
static const char __pyx_k_Abort_error_unexpectedly_suppres[] = "Abort error unexpectedly suppressed: %s";
static const char __pyx_k_AioChannel_watch_connectivity_st[] = "AioChannel.watch_connectivity_state";
static const char __pyx_k_Binary_metadata_key_s_expected_b[] = "Binary metadata key=\"%s\" expected bytes, got %s";
static const char __pyx_k_CYGRPC_STATUS_CODE_TO_STATUS_COD[] = "CYGRPC_STATUS_CODE_TO_STATUS_CODE";
static const char __pyx_k_Call_credentials_may_not_be_NULL[] = "Call credentials may not be NULL.";
static const char __pyx_k_Cannot_invoke_RPC_on_closed_chan[] = "Cannot invoke RPC on closed channel!";
static const char __pyx_k_Compression_setting_must_be_spec[] = "Compression setting must be specified before sending initial metadata";
static const char __pyx_k_Core_should_not_return_GRPC_QUEU[] = "Core should not return GRPC_QUEUE_TIMEOUT!";
static const char __pyx_k_Credentials_couldn_t_have_been_s[] = "Credentials couldn't have been set: {0}";
static const char __pyx_k_Dedicated_exception_class_for_wa[] = "Dedicated exception class for watch connectivity failed.\n\n    It might be failed due to deadline exceeded.\n    ";
static const char __pyx_k_Error_fetching_certificate_confi[] = "Error fetching certificate config";
static const char __pyx_k_Error_in_grpc_server_request_cal[] = "Error in grpc_server_request_call: %s";
static const char __pyx_k_Exiting_child_due_to_raised_exce[] = "Exiting child due to raised exception";
static const char __pyx_k_Expected_bytes_str_or_unicode_no[] = "Expected bytes, str, or unicode, not {}";
static const char __pyx_k_Expected_int_bytes_or_behavior_g[] = "Expected int, bytes, or behavior, got {}";
static const char __pyx_k_Failed_to_get_server_sockets_ple[] = "Failed to get server sockets, please ensure your server_id==%s and start_socket_id==%s and max_results==%s is valid";
static const char __pyx_k_Failed_to_get_servers_please_ens[] = "Failed to get servers, please ensure your start_server_id==%s is valid";
static const char __pyx_k_Failed_to_get_the_channel_please[] = "Failed to get the channel, please ensure your channel_id==%s is valid";
static const char __pyx_k_Failed_to_get_the_subchannel_ple[] = "Failed to get the subchannel, please ensure your subchannel_id==%s is valid";
static const char __pyx_k_Failed_to_get_top_channels_pleas[] = "Failed to get top channels, please ensure your start_channel_id==%s is valid";
static const char __pyx_k_Failed_to_receive_any_message_fr[] = "Failed to receive any message from Core";
static const char __pyx_k_Failed_to_shutdown_gRPC_Core_aft[] = "Failed to shutdown gRPC Core after fork()";
static const char __pyx_k_Failed_to_shutdown_gRPC_Python_t[] = "Failed to shutdown gRPC Python threads prior to fork. Behavior after fork will be undefined.";
static const char __pyx_k_ForkManagedThread___init___local[] = "ForkManagedThread.__init__.<locals>.managed_target";
static const char __pyx_k_GRPC_COMPRESSION_CHANNEL_DEFAULT[] = "GRPC_COMPRESSION_CHANNEL_DEFAULT_ALGORITHM";
static const char __pyx_k_GRPC_COMPRESSION_REQUEST_ALGORIT[] = "GRPC_COMPRESSION_REQUEST_ALGORITHM_MD_KEY";
static const char __pyx_k_GRPC_PROPAGATE_CENSUS_STATS_CONT[] = "GRPC_PROPAGATE_CENSUS_STATS_CONTEXT";
static const char __pyx_k_GRPC_PROPAGATE_CENSUS_TRACING_CO[] = "GRPC_PROPAGATE_CENSUS_TRACING_CONTEXT";
static const char __pyx_k_Incompatible_checksums_s_vs_0xa3[] = "Incompatible checksums (%s vs 0xa3714dd = (_crash_exception, _generic_handlers, _interceptors, _limiter, _loop, _server, _serving_task, _shutdown_callback_wrapper, _shutdown_completed, _shutdown_lock, _status, _thread_pool))";
static const char __pyx_k_Incompatible_checksums_s_vs_0xd4[] = "Incompatible checksums (%s vs 0xd41d8cd = ())";
static const char __pyx_k_Please_report_to_https_github_co[] = "Please report to https://github.com/grpc/grpc/issues";
static const char __pyx_k_RPC_cancelled_for_servicer_metho[] = "RPC cancelled for servicer method [%s]";
static const char __pyx_k_RPC_cancelled_for_unknown_reason[] = "RPC cancelled for unknown reason.";
static const char __pyx_k_Raised_upon_unexpected_errors_in[] = "Raised upon unexpected errors in native code.";
static const char __pyx_k_Raised_when_calling_abort_in_ser[] = "Raised when calling abort in servicer methods.\n\n    This exception should not be suppressed. Applications may catch it to\n    perform certain clean-up logic, and then re-raise it.\n    ";
static const char __pyx_k_Raised_when_execute_batch_return[] = "Raised when execute batch returns a failure from Core.";
static const char __pyx_k_Send_initial_metadata_failed_alr[] = "Send initial metadata failed: already sent";
static const char __pyx_k_Server_shutdown_failed_no_comple[] = "Server shutdown failed: no completion queue.";
static const char __pyx_k_The_base_class_for_exceptions_ge[] = "The base class for exceptions generated by gRPC AsyncIO stack.";
static const char __pyx_k_cannot_register_completion_queue[] = "cannot register completion queues after start";
static const char __pyx_k_cert_config_fetcher_must_be_call[] = "cert_config_fetcher must be callable";
static const char __pyx_k_channel_credentials_compute_engi[] = "channel_credentials_compute_engine";
static const char __pyx_k_check_before_request_call_locals[] = "check_before_request_call.<locals>.<lambda>";
static const char __pyx_k_disable_next_message_compression[] = "disable_next_message_compression";
static const char __pyx_k_expected_certificate_to_be_bytes[] = "expected certificate to be bytes, got %s";
static const char __pyx_k_expected_pem_key_cert_pairs_to_b[] = "expected pem_key_cert_pairs to be sequence of SslPemKeyCertPair";
static const char __pyx_k_expected_registered_completion_q[] = "expected registered completion queue";
static const char __pyx_k_generator_to_async_generator_loc[] = "generator_to_async_generator.<locals>.yield_to_queue";
static const char __pyx_k_grpc_python__cygrpc__GrpcArgWrap[] = "grpc.python._cygrpc._GrpcArgWrapper";
static const char __pyx_k_if_error_code_is_specified_so_mu[] = "if error_code is specified, so must details (and vice-versa)";
static const char __pyx_k_initial_cert_config_must_be_a_gr[] = "initial_cert_config must be a grpc.ServerCertificateConfiguration";
static const char __pyx_k_install_context_from_request_cal[] = "install_context_from_request_call_event";
static const char __pyx_k_internal_error_user_data_must_be[] = "internal error: user_data must be specified";
static const char __pyx_k_invalid_call_object_cannot_be_us[] = "invalid call object cannot be used from Python";
static const char __pyx_k_maximum_concurrent_rpcs_should_b[] = "maximum_concurrent_rpcs should be a postive integer";
static const char __pyx_k_next_call_event_locals_on_succes[] = "next_call_event.<locals>.on_success";
static const char __pyx_k_no_default___reduce___due_to_non[] = "no default __reduce__ due to non-trivial __cinit__";
static const char __pyx_k_queue_must_be_shutting_down_to_b[] = "queue must be shutting down to be cleared";
static const char __pyx_k_return_from_user_request_generat[] = "return_from_user_request_generator";
static const char __pyx_k_self_c_argument_cannot_be_conver[] = "self.c_argument cannot be converted to a Python object for pickling";
static const char __pyx_k_self_c_credentials_cannot_be_con[] = "self.c_credentials cannot be converted to a Python object for pickling";
static const char __pyx_k_self_c_op_cannot_be_converted_to[] = "self.c_op cannot be converted to a Python object for pickling";
static const char __pyx_k_server_credentials_ssl_dynamic_c[] = "server_credentials_ssl_dynamic_cert_config";
static const char __pyx_k_server_must_be_started_and_not_s[] = "server must be started and not shutting down";
static const char __pyx_k_server_queue_must_be_a_registere[] = "server_queue must be a registered completion queue";
static const char __pyx_k_src_python_grpcio_grpc__cython_2[] = "src/python/grpcio/grpc/_cython/_cygrpc/credentials.pyx.pxi";
static const char __pyx_k_src_python_grpcio_grpc__cython_3[] = "src/python/grpcio/grpc/_cython/_cygrpc/grpc_gevent.pyx.pxi";
static const char __pyx_k_src_python_grpcio_grpc__cython_4[] = "src/python/grpcio/grpc/_cython/_cygrpc/thread.pyx.pxi";
static const char __pyx_k_src_python_grpcio_grpc__cython_5[] = "src/python/grpcio/grpc/_cython/_cygrpc/fork_posix.pyx.pxi";
static const char __pyx_k_src_python_grpcio_grpc__cython_6[] = "src/python/grpcio/grpc/_cython/_cygrpc/aio/common.pyx.pxi";
static const char __pyx_k_src_python_grpcio_grpc__cython_7[] = "src/python/grpcio/grpc/_cython/_cygrpc/aio/server.pyx.pxi";
static const char __pyx_k_src_python_grpcio_grpc__cython_8[] = "src/python/grpcio/grpc/_cython/_cygrpc/channelz.pyx.pxi";
static const char __pyx_k_src_python_grpcio_grpc__cython_9[] = "src/python/grpcio/grpc/_cython/_cygrpc/csds.pyx.pxi";
static const char __pyx_k_the_server_must_be_shutting_down[] = "the server must be shutting down to cancel all calls";
static const char __pyx_k_tuples_to_resolvaddr_locals_gene[] = "tuples_to_resolvaddr.<locals>.genexpr";
static const char __pyx_k_of_RPC_that_terminated_with_sta_2[] = "<{} of RPC that terminated with:\n\tstatus = {}\n\tdetails = \"{}\"\n\tdebug_error_string = \"{}\"\n>";
static const char __pyx_k_src_python_grpcio_grpc__cython_10[] = "src/python/grpcio/grpc/_cython/_cygrpc/records.pyx.pxi";
static const char __pyx_k_src_python_grpcio_grpc__cython_11[] = "src/python/grpcio/grpc/_cython/_cygrpc/security.pyx.pxi";
static const char __pyx_k_src_python_grpcio_grpc__cython_12[] = "src/python/grpcio/grpc/_cython/_cygrpc/_hooks.pyx.pxi";
static const char __pyx_k_src_python_grpcio_grpc__cython_13[] = "src/python/grpcio/grpc/_cython/_cygrpc/aio/completion_queue.pyx.pxi";
static const char __pyx_k_src_python_grpcio_grpc__cython_14[] = "src/python/grpcio/grpc/_cython/_cygrpc/aio/callback_common.pyx.pxi";
static const char __pyx_k_src_python_grpcio_grpc__cython_15[] = "src/python/grpcio/grpc/_cython/_cygrpc/aio/grpc_aio.pyx.pxi";
static const char __pyx_k_Error_fetching_certificate_confi_2[] = "Error fetching certificate configuration: certificate configuration must be of type grpc.ServerCertificateConfiguration, not %s";
static PyObject *__pyx_kp_b_;
static PyObject *__pyx_kp_s_;
static PyObject *__pyx_kp_s_0;
static PyObject *__pyx_kp_s_0_0_0_0;
static PyObject *__pyx_kp_s_1;
static PyObject *__pyx_n_s_AF_INET;
static PyObject *__pyx_n_s_AF_INET6;
static PyObject *__pyx_n_s_ALTSChannelCredentials;
static PyObject *__pyx_n_s_AWAIT_THREADS_TIMEOUT_SECONDS;
static PyObject *__pyx_n_s_AbortError;
static PyObject *__pyx_kp_s_Abort_already_called;
static PyObject *__pyx_kp_s_Abort_error_has_been_replaced;
static PyObject *__pyx_kp_s_Abort_error_unexpectedly_suppres;
static PyObject *__pyx_kp_s_Aborting_method_s_due_to_server;
static PyObject *__pyx_n_s_ActiveThreadCount;
static PyObject *__pyx_n_s_ActiveThreadCount___init;
static PyObject *__pyx_n_s_ActiveThreadCount_await_zero_th;
static PyObject *__pyx_n_s_ActiveThreadCount_decrement;
static PyObject *__pyx_n_s_ActiveThreadCount_increment;
static PyObject *__pyx_n_s_AioCall;
static PyObject *__pyx_n_s_AioCall__handle_status_once_rec;
static PyObject *__pyx_n_s_AioCall_initial_metadata;
static PyObject *__pyx_n_s_AioCall_initiate_stream_stream;
static PyObject *__pyx_n_s_AioCall_initiate_unary_stream;
static PyObject *__pyx_n_s_AioCall_receive_serialized_mess;
static PyObject *__pyx_n_s_AioCall_send_receive_close;
static PyObject *__pyx_n_s_AioCall_send_serialized_message;
static PyObject *__pyx_n_s_AioCall_status;
static PyObject *__pyx_n_s_AioCall_stream_unary;
static PyObject *__pyx_n_s_AioCall_unary_unary;
static PyObject *__pyx_n_s_AioChannel;
static PyObject *__pyx_n_s_AioChannel_watch_connectivity_st;
static PyObject *__pyx_n_s_AioRpcStatus;
static PyObject *__pyx_n_s_AioServer;
static PyObject *__pyx_n_s_AioServer__request_call;
static PyObject *__pyx_n_s_AioServer__server_main_loop;
static PyObject *__pyx_n_s_AioServer__start_shutting_down;
static PyObject *__pyx_n_s_AioServer_shutdown;
static PyObject *__pyx_n_s_AioServer_start;
static PyObject *__pyx_n_s_AioServer_wait_for_termination;
static PyObject *__pyx_n_s_AioState;
static PyObject *__pyx_n_s_AssertionError;
static PyObject *__pyx_n_s_AsyncIOEngine;
static PyObject *__pyx_n_s_AttributeError;
static PyObject *__pyx_n_s_BaseCompletionQueue;
static PyObject *__pyx_n_s_BaseError;
static PyObject *__pyx_n_s_BaseException;
static PyObject *__pyx_n_s_BatchOperationEvent;
static PyObject *__pyx_n_s_BatchOperationTag;
static PyObject *__pyx_kp_s_Binary_metadata_key_s_expected_b;
static PyObject *__pyx_n_s_BoundEventLoop;
static PyObject *__pyx_n_s_COMPRESSION_METADATA_STRING_MAP;
static PyObject *__pyx_n_s_CUSTOM_IO_MANAGER;
static PyObject *__pyx_n_s_CYGRPC_STATUS_CODE_TO_STATUS_COD;
static PyObject *__pyx_n_s_Call;
static PyObject *__pyx_n_s_CallCredentials;
static PyObject *__pyx_n_s_CallDetails;
static PyObject *__pyx_n_s_CallError;
static PyObject *__pyx_n_s_CallState;
static PyObject *__pyx_kp_s_Call_credentials_are_only_valid;
static PyObject *__pyx_kp_s_Call_credentials_may_not_be_NULL;
static PyObject *__pyx_n_s_CallbackFailureHandler;
static PyObject *__pyx_n_s_CallbackWrapper;
static PyObject *__pyx_n_s_CancelledError;
static PyObject *__pyx_kp_s_Cannot_invoke_RPC_on_closed_chan;
static PyObject *__pyx_kp_s_Cannot_invoke_RPC_s;
static PyObject *__pyx_n_s_CensusContext;
static PyObject *__pyx_n_s_Channel;
static PyObject *__pyx_n_s_ChannelArg;
static PyObject *__pyx_n_s_ChannelArgKey;
static PyObject *__pyx_n_s_ChannelArgs;
static PyObject *__pyx_n_s_ChannelCredentials;
static PyObject *__pyx_n_s_ChannelState;
static PyObject *__pyx_kp_s_Channel_is_closed;
static PyObject *__pyx_n_s_CompletionQueue;
static PyObject *__pyx_n_s_CompletionType;
static PyObject *__pyx_n_s_CompositeCallCredentials;
static PyObject *__pyx_n_s_CompositeChannelCredentials;
static PyObject *__pyx_n_s_CompressionAlgorithm;
static PyObject *__pyx_n_s_CompressionLevel;
static PyObject *__pyx_n_s_CompressionOptions;
static PyObject *__pyx_kp_s_Compression_setting_must_be_spec;
static PyObject *__pyx_n_s_ComputeEngineChannelCredentials;
static PyObject *__pyx_n_s_ConcurrentRpcLimiter;
static PyObject *__pyx_n_s_ConcurrentRpcLimiter__decrease;
static PyObject *__pyx_n_s_ConcurrentRpcLimiter_check_befo;
static PyObject *__pyx_n_s_Condition;
static PyObject *__pyx_n_s_ConnectivityEvent;
static PyObject *__pyx_n_s_ConnectivityState;
static PyObject *__pyx_n_s_ConnectivityTag;
static PyObject *__pyx_kp_s_Core_should_not_return_GRPC_QUEU;
static PyObject *__pyx_kp_s_Credentials_couldn_t_have_been_s;
static PyObject *__pyx_kp_s_Dedicated_exception_class_for_wa;
static PyObject *__pyx_n_s_EMPTY_FLAGS;
static PyObject *__pyx_n_s_EMPTY_MASK;
static PyObject *__pyx_n_s_ENOTCONN;
static PyObject *__pyx_n_s_EOF;
static PyObject *__pyx_n_s_EOF_2;
static PyObject *__pyx_n_s_EOF___bool;
static PyObject *__pyx_n_s_EOF___len;
static PyObject *__pyx_n_s_EOF___repr;
static PyObject *__pyx_n_s_EOF___str;
static PyObject *__pyx_n_s_EOF__repr;
static PyObject *__pyx_n_s_EX_USAGE;
static PyObject *__pyx_n_s_Enum;
static PyObject *__pyx_kp_s_Error_fetching_certificate_confi;
static PyObject *__pyx_kp_s_Error_fetching_certificate_confi_2;
static PyObject *__pyx_kp_s_Error_in_grpc_server_request_cal;
static PyObject *__pyx_n_s_Event;
static PyObject *__pyx_n_s_ExecuteBatchError;
static PyObject *__pyx_kp_s_Exiting_child_due_to_raised_exce;
static PyObject *__pyx_kp_s_Expected_bytes_str_or_unicode_no;
static PyObject *__pyx_kp_s_Expected_int_bytes_or_behavior_g;
static PyObject *__pyx_kp_s_Expected_str_not;
static PyObject *__pyx_kp_s_Expecting_non_ok_status_code;
static PyObject *__pyx_kp_s_Failed_grpc_call_start_batch;
static PyObject *__pyx_kp_s_Failed_s_s;
static PyObject *__pyx_kp_s_Failed_to_get_server_sockets_ple;
static PyObject *__pyx_kp_s_Failed_to_get_servers_please_ens;
static PyObject *__pyx_kp_s_Failed_to_get_the_channel_please;
static PyObject *__pyx_kp_s_Failed_to_get_the_server_please;
static PyObject *__pyx_kp_s_Failed_to_get_the_socket_please;
static PyObject *__pyx_kp_s_Failed_to_get_the_subchannel_ple;
static PyObject *__pyx_kp_s_Failed_to_get_top_channels_pleas;
static PyObject *__pyx_kp_s_Failed_to_receive_any_message_fr;
static PyObject *__pyx_kp_s_Failed_to_shutdown_gRPC_Core_aft;
static PyObject *__pyx_kp_s_Failed_to_shutdown_gRPC_Python_t;
static PyObject *__pyx_n_s_ForkManagedThread;
static PyObject *__pyx_n_s_ForkManagedThread___init;
static PyObject *__pyx_n_s_ForkManagedThread___init___local;
static PyObject *__pyx_n_s_ForkManagedThread_join;
static PyObject *__pyx_n_s_ForkManagedThread_setDaemon;
static PyObject *__pyx_n_s_ForkManagedThread_start;
static PyObject *__pyx_n_s_ForkState;
static PyObject *__pyx_n_s_ForkState___init;
static PyObject *__pyx_n_s_GRPC_ASYNCIO_ENGINE;
static PyObject *__pyx_n_s_GRPC_COMPRESSION_CHANNEL_DEFAULT;
static PyObject *__pyx_n_s_GRPC_COMPRESSION_REQUEST_ALGORIT;
static PyObject *__pyx_n_s_GRPC_ENABLE_FORK_SUPPORT;
static PyObject *__pyx_n_s_GRPC_ENABLE_FORK_SUPPORT_2;
static PyObject *__pyx_n_s_GRPC_PROPAGATE_CANCELLATION;
static PyObject *__pyx_n_s_GRPC_PROPAGATE_CENSUS_STATS_CONT;
static PyObject *__pyx_n_s_GRPC_PROPAGATE_CENSUS_TRACING_CO;
static PyObject *__pyx_n_s_GRPC_PROPAGATE_DEADLINE;
static PyObject *__pyx_n_s_GRPC_PROPAGATE_DEFAULTS;
static PyObject *__pyx_n_s_Group;
static PyObject *__pyx_n_s_GrpcArgWrapper;
static PyObject *__pyx_n_s_GrpcCallWrapper;
static PyObject *__pyx_n_s_HandlerCallDetails;
static PyObject *__pyx_n_s_IMMUTABLE_EMPTY_METADATA;
static PyObject *__pyx_n_s_INTERNAL_CALL_ERROR_MESSAGE_FOR;
static PyObject *__pyx_n_s_IOError;
static PyObject *__pyx_n_s_IPPROTO_TCP;
static PyObject *__pyx_n_s_ImportError;
static PyObject *__pyx_kp_s_Incompatible_checksums_s_vs_0xa3;
static PyObject *__pyx_kp_s_Incompatible_checksums_s_vs_0xd4;
static PyObject *__pyx_n_s_InitialMetadataFlags;
static PyObject *__pyx_n_s_InsecureChannelCredentials;
static PyObject *__pyx_n_s_IntegratedCall;
static PyObject *__pyx_n_s_InternalError;
static PyObject *__pyx_kp_s_Internal_gRPC_call_error_d;
static PyObject *__pyx_kp_s_Invalid_encoding_on_s;
static PyObject *__pyx_n_s_KeyError;
static PyObject *__pyx_n_s_KeyboardInterrupt;
static PyObject *__pyx_n_s_LOGGER;
static PyObject *__pyx_n_s_LocalChannelCredentials;
static PyObject *__pyx_n_s_LocalConnectionType;
static PyObject *__pyx_kp_s_Locally_aborted;
static PyObject *__pyx_n_s_Lock;
static PyObject *__pyx_n_s_MessageReceiver;
static PyObject *__pyx_n_s_MessageReceiver___anext;
static PyObject *__pyx_n_s_MessageReceiver__async_message;
static PyObject *__pyx_n_s_MetadataPluginCallCredentials;
static PyObject *__pyx_n_s_Metadatum;
static PyObject *__pyx_kp_s_Method_not_found;
static PyObject *__pyx_n_s_NON_OK_CALL_REPRESENTATION;
static PyObject *__pyx_kp_s_No_custom_hooks_are_implemented;
static PyObject *__pyx_kp_s_Non_thread_safe_operation;
static PyObject *__pyx_n_s_NotImplementedError;
static PyObject *__pyx_n_s_OK_CALL_REPRESENTATION;
static PyObject *__pyx_n_s_Operation;
static PyObject *__pyx_n_s_OperationType;
static PyObject *__pyx_n_s_POLLER;
static PyObject *__pyx_n_s_PickleError;
static PyObject *__pyx_kp_s_Please_report_to_https_github_co;
static PyObject *__pyx_n_s_PollerCompletionQueue;
static PyObject *__pyx_n_s_PropagationConstants;
static PyObject *__pyx_n_s_Queue;
static PyObject *__pyx_n_s_RLock;
static PyObject *__pyx_n_s_RPCState;
static PyObject *__pyx_kp_s_RPC_already_finished;
static PyObject *__pyx_kp_s_RPC_cancelled_for_servicer_metho;
static PyObject *__pyx_kp_s_RPC_cancelled_for_unknown_reason;
static PyObject *__pyx_kp_s_Raised_if_the_server_is_stopped;
static PyObject *__pyx_kp_s_Raised_upon_unexpected_errors_in;
static PyObject *__pyx_kp_s_Raised_when_calling_abort_in_ser;
static PyObject *__pyx_kp_s_Raised_when_execute_batch_return;
static PyObject *__pyx_kp_s_Raised_when_the_usage_of_API_by;
static PyObject *__pyx_n_s_ReceiveCloseOnServerOperation;
static PyObject *__pyx_n_s_ReceiveInitialMetadataOperation;
static PyObject *__pyx_n_s_ReceiveMessageOperation;
static PyObject *__pyx_n_s_ReceiveStatusOnClientOperation;
static PyObject *__pyx_n_s_RequestCallError;
static PyObject *__pyx_n_s_RequestCallEvent;
static PyObject *__pyx_n_s_RequestCallTag;
static PyObject *__pyx_n_s_ResolveWrapper;
static PyObject *__pyx_n_s_RuntimeError;
static PyObject *__pyx_n_s_SHUT_RDWR;
static PyObject *__pyx_n_s_SOL_SOCKET;
static PyObject *__pyx_n_s_SO_REUSEADDR;
static PyObject *__pyx_n_s_SSLChannelCredentials;
static PyObject *__pyx_n_s_SSLSessionCacheLRU;
static PyObject *__pyx_n_s_SegregatedCall;
static PyObject *__pyx_n_s_SendCloseFromClientOperation;
static PyObject *__pyx_n_s_SendInitialMetadataOperation;
static PyObject *__pyx_n_s_SendMessageOperation;
static PyObject *__pyx_n_s_SendStatusFromServerOperation;
static PyObject *__pyx_kp_s_Send_initial_metadata_failed_alr;
static PyObject *__pyx_n_s_Server;
static PyObject *__pyx_n_s_ServerCertificateConfig;
static PyObject *__pyx_n_s_ServerCertificateConfiguration;
static PyObject *__pyx_n_s_ServerCredentials;
static PyObject *__pyx_n_s_ServerShutdownEvent;
static PyObject *__pyx_n_s_ServerShutdownTag;
static PyObject *__pyx_n_s_ServerStoppedError;
static PyObject *__pyx_kp_s_Server_already_stopped;
static PyObject *__pyx_kp_s_Server_not_in_ready_state;
static PyObject *__pyx_kp_s_Server_shutdown_failed_no_comple;
static PyObject *__pyx_n_s_ServicerContext;
static PyObject *__pyx_n_s_ServicerContext_abort;
static PyObject *__pyx_n_s_ServicerContext_abort_with_stat;
static PyObject *__pyx_n_s_ServicerContext_read;
static PyObject *__pyx_n_s_ServicerContext_send_initial_me;
static PyObject *__pyx_n_s_ServicerContext_write;
static PyObject *__pyx_n_s_SocketWrapper;
static PyObject *__pyx_n_s_SslPemKeyCertPair;
static PyObject *__pyx_n_s_StatusCode;
static PyObject *__pyx_n_s_SyncServicerContext;
static PyObject *__pyx_n_s_SystemExit;
static PyObject *__pyx_n_s_TCP_NODELAY;
static PyObject *__pyx_n_s_TRUE;
static PyObject *__pyx_n_s_TRUE_VALUES;
static PyObject *__pyx_n_s_Tag;
static PyObject *__pyx_kp_s_The_base_class_for_exceptions_ge;
static PyObject *__pyx_n_s_Thread;
static PyObject *__pyx_kp_s_Timed_out;
static PyObject *__pyx_n_s_TimeoutError;
static PyObject *__pyx_n_s_TimerWrapper;
static PyObject *__pyx_n_s_True;
static PyObject *__pyx_n_s_TypeError;
static PyObject *__pyx_n_s_UNKNOWN_CANCELLATION_DETAILS;
static PyObject *__pyx_kp_s_Unexpected_s_raised_by_servicer;
static PyObject *__pyx_kp_s_Unexpected_s_s;
static PyObject *__pyx_n_s_UnicodeDecodeError;
static PyObject *__pyx_n_s_Unknown;
static PyObject *__pyx_kp_s_Unsupported_engine_type_s;
static PyObject *__pyx_n_s_UsageError;
static PyObject *__pyx_kp_s_Using_s_as_I_O_engine;
static PyObject *__pyx_n_s_ValueError;
static PyObject *__pyx_n_s_WatchConnectivityFailed;
static PyObject *__pyx_n_s_WriteFlag;
static PyObject *__pyx_n_s_XDSChannelCredentials;
static PyObject *__pyx_n_s_YES;
static PyObject *__pyx_n_s_Yes;
static PyObject *__pyx_kp_s__118;
static PyObject *__pyx_kp_s__119;
static PyObject *__pyx_kp_s__120;
static PyObject *__pyx_kp_s__121;
static PyObject *__pyx_kp_u__165;
static PyObject *__pyx_kp_u__166;
static PyObject *__pyx_kp_u__167;
static PyObject *__pyx_n_s__347;
static PyObject *__pyx_n_s_abort;
static PyObject *__pyx_n_s_abort_with_status;
static PyObject *__pyx_n_s_aborted;
static PyObject *__pyx_n_s_accept;
static PyObject *__pyx_n_s_acquire;
static PyObject *__pyx_n_s_active_thread_count;
static PyObject *__pyx_n_s_add;
static PyObject *__pyx_n_s_add_done_callback;
static PyObject *__pyx_n_s_add_generic_rpc_handlers;
static PyObject *__pyx_n_s_add_http2_port;
static PyObject *__pyx_n_s_add_reader;
static PyObject *__pyx_n_s_addr_tuple;
static PyObject *__pyx_n_s_address;
static PyObject *__pyx_n_s_aenter;
static PyObject *__pyx_n_s_aexit;
static PyObject *__pyx_n_s_agen;
static PyObject *__pyx_n_s_aiter;
static PyObject *__pyx_n_s_algorithm;
static PyObject *__pyx_n_s_already_accepted;
static PyObject *__pyx_n_s_already_exists;
static PyObject *__pyx_n_s_already_finished;
static PyObject *__pyx_n_s_already_invoked;
static PyObject *__pyx_n_s_anext;
static PyObject *__pyx_n_s_append;
static PyObject *__pyx_n_s_applysockopts;
static PyObject *__pyx_n_s_args;
static PyObject *__pyx_n_s_arguments;
static PyObject *__pyx_n_s_ascii;
static PyObject *__pyx_n_s_async_callback_func;
static PyObject *__pyx_n_s_async_generator_to_generator;
static PyObject *__pyx_n_s_async_message_receiver;
static PyObject *__pyx_n_s_async_response_generator;
static PyObject *__pyx_n_s_asyncio;
static PyObject *__pyx_n_s_asyncio_coroutines;
static PyObject *__pyx_n_s_asyncio_tasks;
static PyObject *__pyx_n_s_auth_context;
static PyObject *__pyx_n_s_await;
static PyObject *__pyx_n_s_await_zero_threads;
static PyObject *__pyx_n_s_backup_queue;
static PyObject *__pyx_n_s_batch_operation_tag;
static PyObject *__pyx_n_s_batch_operations;
static PyObject *__pyx_kp_b_bin;
static PyObject *__pyx_n_s_bind;
static PyObject *__pyx_n_s_bind_loop;
static PyObject *__pyx_n_s_block_if_fork_in_progress;
static PyObject *__pyx_n_s_bool;
static PyObject *__pyx_n_s_buffer_hint;
static PyObject *__pyx_n_s_build_census_context;
static PyObject *__pyx_n_s_c_cert_config;
static PyObject *__pyx_n_s_c_error_details;
static PyObject *__pyx_n_s_c_event;
static PyObject *__pyx_n_s_c_key;
static PyObject *__pyx_n_s_c_options;
static PyObject *__pyx_n_s_c_pem_root_certs;
static PyObject *__pyx_n_s_c_returned_str;
static PyObject *__pyx_n_s_call;
static PyObject *__pyx_n_s_call_credentials;
static PyObject *__pyx_n_s_call_credentialses;
static PyObject *__pyx_n_s_call_creds;
static PyObject *__pyx_n_s_call_details;
static PyObject *__pyx_n_s_call_queue;
static PyObject *__pyx_n_s_call_soon_threadsafe;
static PyObject *__pyx_n_s_call_state;
static PyObject *__pyx_n_s_callback;
static PyObject *__pyx_n_s_callback_func;
static PyObject *__pyx_n_s_callback_wrapper;
static PyObject *__pyx_n_s_cancel;
static PyObject *__pyx_n_s_cancelled;
static PyObject *__pyx_kp_s_cannot_register_completion_queue;
static PyObject *__pyx_n_s_capacity;
static PyObject *__pyx_n_s_cb;
static PyObject *__pyx_n_s_cb_func;
static PyObject *__pyx_n_s_census_ctx;
static PyObject *__pyx_n_s_cert_config;
static PyObject *__pyx_n_s_cert_config_fetcher;
static PyObject *__pyx_kp_s_cert_config_fetcher_must_be_call;
static PyObject *__pyx_n_s_certificate_chain;
static PyObject *__pyx_n_s_certificate_configuration;
static PyObject *__pyx_n_s_channel;
static PyObject *__pyx_n_s_channel_credentials;
static PyObject *__pyx_n_s_channel_credentials_alts;
static PyObject *__pyx_n_s_channel_credentials_compute_engi;
static PyObject *__pyx_n_s_channel_credentials_insecure;
static PyObject *__pyx_n_s_channel_credentials_local;
static PyObject *__pyx_n_s_channel_id;
static PyObject *__pyx_n_s_channel_state;
static PyObject *__pyx_n_s_channels;
static PyObject *__pyx_n_s_channelz_get_channel;
static PyObject *__pyx_n_s_channelz_get_server;
static PyObject *__pyx_n_s_channelz_get_server_sockets;
static PyObject *__pyx_n_s_channelz_get_servers;
static PyObject *__pyx_n_s_channelz_get_socket;
static PyObject *__pyx_n_s_channelz_get_subchannel;
static PyObject *__pyx_n_s_channelz_get_top_channels;
static PyObject *__pyx_n_s_check_before_request_call;
static PyObject *__pyx_n_s_check_before_request_call_locals;
static PyObject *__pyx_n_s_class;
static PyObject *__pyx_n_s_clear;
static PyObject *__pyx_n_s_client_config_in_slice;
static PyObject *__pyx_n_s_cline_in_traceback;
static PyObject *__pyx_n_s_close;
static PyObject *__pyx_n_s_close_on_fork;
static PyObject *__pyx_n_s_closed;
static PyObject *__pyx_n_s_code;
static PyObject *__pyx_n_s_collections;
static PyObject *__pyx_n_s_common;
static PyObject *__pyx_n_s_completion_type;
static PyObject *__pyx_n_s_compression_algorithm_name;
static PyObject *__pyx_n_s_condition;
static PyObject *__pyx_n_s_connect;
static PyObject *__pyx_n_s_connecting;
static PyObject *__pyx_n_s_context;
static PyObject *__pyx_n_s_contextvars;
static PyObject *__pyx_n_s_contextvars_supported;
static PyObject *__pyx_n_s_continuation;
static PyObject *__pyx_n_s_copy;
static PyObject *__pyx_n_s_copy_context;
static PyObject *__pyx_n_s_core_function_name;
static PyObject *__pyx_n_s_coro;
static PyObject *__pyx_n_s_create_future;
static PyObject *__pyx_n_s_create_task;
static PyObject *__pyx_n_s_credentials;
static PyObject *__pyx_n_s_credentials_2;
static PyObject *__pyx_kp_s_credentials_roots_pem;
static PyObject *__pyx_n_s_ctx;
static PyObject *__pyx_n_s_custom_io_manager;
static PyObject *__pyx_kp_s_cygrpc;
static PyObject *__pyx_n_s_daemon;
static PyObject *__pyx_n_s_daemonic;
static PyObject *__pyx_n_s_data_loss;
static PyObject *__pyx_n_s_deadline;
static PyObject *__pyx_n_s_deadline_exceeded;
static PyObject *__pyx_kp_s_dealloc___called_on_running_se;
static PyObject *__pyx_n_s_debug;
static PyObject *__pyx_n_s_debug_error_string;
static PyObject *__pyx_n_s_decode;
static PyObject *__pyx_n_s_decrease_active_rpcs_count;
static PyObject *__pyx_n_s_decrease_active_rpcs_count_with;
static PyObject *__pyx_n_s_decrease_once_finished;
static PyObject *__pyx_n_s_decrement;
static PyObject *__pyx_n_s_default_authority;
static PyObject *__pyx_n_s_default_vtable;
static PyObject *__pyx_n_s_deflate;
static PyObject *__pyx_n_s_details;
static PyObject *__pyx_n_s_dict;
static PyObject *__pyx_n_s_disable_next_message_compression;
static PyObject *__pyx_n_s_discard;
static PyObject *__pyx_n_s_doc;
static PyObject *__pyx_n_s_done;
static PyObject *__pyx_n_s_dump_xds_configs;
static PyObject *__pyx_n_s_e;
static PyObject *__pyx_n_s_enable_census;
static PyObject *__pyx_n_s_encode;
static PyObject *__pyx_n_s_end_time;
static PyObject *__pyx_n_s_endswith;
static PyObject *__pyx_n_s_enter;
static PyObject *__pyx_n_s_enter_user_request_generator;
static PyObject *__pyx_n_s_enum;
static PyObject *__pyx_n_s_enumerate;
static PyObject *__pyx_n_s_environ;
static PyObject *__pyx_n_s_errno;
static PyObject *__pyx_n_s_error;
static PyObject *__pyx_n_s_error_code;
static PyObject *__pyx_n_s_error_details;
static PyObject *__pyx_n_s_error_string;
static PyObject *__pyx_n_s_event;
static PyObject *__pyx_n_s_exc_info;
static PyObject *__pyx_n_s_exception;
static PyObject *__pyx_n_s_exception_type;
static PyObject *__pyx_n_s_execute_batch;
static PyObject *__pyx_n_s_exit;
static PyObject *__pyx_n_s_exit_2;
static PyObject *__pyx_kp_s_expected_certificate_to_be_bytes;
static PyObject *__pyx_kp_s_expected_pem_key_cert_pairs_to_b;
static PyObject *__pyx_kp_s_expected_registered_completion_q;
static PyObject *__pyx_kp_s_failed;
static PyObject *__pyx_n_s_failed_precondition;
static PyObject *__pyx_n_s_failure_handler;
static PyObject *__pyx_n_s_fallback_credentials;
static PyObject *__pyx_n_s_fileno;
static PyObject *__pyx_n_s_find_method_handler;
static PyObject *__pyx_n_s_find_method_handler_locals_quer;
static PyObject *__pyx_n_s_finish_handler_with_stream_resp;
static PyObject *__pyx_n_s_finish_handler_with_unary_respo;
static PyObject *__pyx_n_s_finish_ops;
static PyObject *__pyx_n_s_flags;
static PyObject *__pyx_n_s_force_client_auth;
static PyObject *__pyx_n_s_fork_epoch;
static PyObject *__pyx_n_s_fork_handler_failed;
static PyObject *__pyx_n_s_fork_handler_registered;
static PyObject *__pyx_n_s_fork_handler_registered_lock;
static PyObject *__pyx_n_s_fork_handlers_and_grpc_init;
static PyObject *__pyx_n_s_fork_in_progress;
static PyObject *__pyx_n_s_fork_in_progress_condition;
static PyObject *__pyx_n_s_fork_register_channel;
static PyObject *__pyx_n_s_fork_state;
static PyObject *__pyx_n_s_fork_unregister_channel;
static PyObject *__pyx_n_s_format;
static PyObject *__pyx_n_s_format_exception;
static PyObject *__pyx_n_s_functools;
static PyObject *__pyx_n_s_future;
static PyObject *__pyx_n_s_g_event;
static PyObject *__pyx_n_s_g_pool;
static PyObject *__pyx_n_s_gaierror;
static PyObject *__pyx_n_s_gen;
static PyObject *__pyx_n_s_generator_to_async_generator;
static PyObject *__pyx_n_s_generator_to_async_generator_loc;
static PyObject *__pyx_n_s_generic_handler;
static PyObject *__pyx_n_s_generic_handlers;
static PyObject *__pyx_n_s_genexpr;
static PyObject *__pyx_n_s_get;
static PyObject *__pyx_n_s_getLogger;
static PyObject *__pyx_n_s_get_data;
static PyObject *__pyx_n_s_get_deadline_from_context;
static PyObject *__pyx_n_s_get_event_loop;
static PyObject *__pyx_n_s_get_fork_epoch;
static PyObject *__pyx_n_s_get_hub;
static PyObject *__pyx_n_s_get_metadata_locals_callback;
static PyObject *__pyx_n_s_get_running_loop;
static PyObject *__pyx_n_s_get_working_loop;
static PyObject *__pyx_n_s_getaddrinfo;
static PyObject *__pyx_n_s_getpeername;
static PyObject *__pyx_n_s_getsockname;
static PyObject *__pyx_n_s_getstate;
static PyObject *__pyx_n_s_gevent;
static PyObject *__pyx_n_s_gevent_event;
static PyObject *__pyx_n_s_gevent_event_2;
static PyObject *__pyx_n_s_gevent_g;
static PyObject *__pyx_n_s_gevent_hub;
static PyObject *__pyx_n_s_gevent_hub_2;
static PyObject *__pyx_n_s_gevent_pool;
static PyObject *__pyx_n_s_gevent_socket;
static PyObject *__pyx_n_s_gevent_socket_2;
static PyObject *__pyx_n_s_greenlet;
static PyObject *__pyx_n_s_grpc;
static PyObject *__pyx_n_s_grpc__cython_cygrpc;
static PyObject *__pyx_kp_s_grpc_aio_EOF;
static PyObject *__pyx_n_s_grpc_call_wrapper;
static PyObject *__pyx_n_s_grpc_completion_queue_shutdown;
static PyObject *__pyx_kp_s_grpc_python__cygrpc__GrpcArgWrap;
static PyObject *__pyx_n_s_grpc_server_request_call;
static PyObject *__pyx_n_s_grpc_server_shutdown_and_notify;
static PyObject *__pyx_n_s_grpc_shutdown_wrapper;
static PyObject *__pyx_n_s_gzip;
static PyObject *__pyx_n_s_handle_callback_wrapper;
static PyObject *__pyx_n_s_handle_cancellation_from_core;
static PyObject *__pyx_n_s_handle_events;
static PyObject *__pyx_n_s_handle_exceptions;
static PyObject *__pyx_n_s_handle_rpc;
static PyObject *__pyx_n_s_handle_status_once_received;
static PyObject *__pyx_n_s_handle_stream_stream_rpc;
static PyObject *__pyx_n_s_handle_stream_unary_rpc;
static PyObject *__pyx_n_s_handle_unary_stream_rpc;
static PyObject *__pyx_n_s_handle_unary_unary_rpc;
static PyObject *__pyx_n_s_handler;
static PyObject *__pyx_n_s_handler_call_details;
static PyObject *__pyx_n_s_high;
static PyObject *__pyx_n_s_host;
static PyObject *__pyx_n_s_http2_initial_sequence_number;
static PyObject *__pyx_n_s_hub;
static PyObject *__pyx_n_s_id;
static PyObject *__pyx_n_s_identities;
static PyObject *__pyx_n_s_identity;
static PyObject *__pyx_n_s_idle;
static PyObject *__pyx_kp_s_if_error_code_is_specified_so_mu;
static PyObject *__pyx_n_s_import;
static PyObject *__pyx_n_s_increment;
static PyObject *__pyx_n_s_init;
static PyObject *__pyx_n_s_init_grpc_gevent;
static PyObject *__pyx_n_s_init_grpc_gevent_locals_cb_func;
static PyObject *__pyx_n_s_initial_cert_config;
static PyObject *__pyx_kp_s_initial_cert_config_must_be_a_gr;
static PyObject *__pyx_n_s_initial_metadata;
static PyObject *__pyx_n_s_initiate_stream_stream;
static PyObject *__pyx_n_s_initiate_unary_stream;
static PyObject *__pyx_n_s_insecure_server_credentials;
static PyObject *__pyx_n_s_inspect;
static PyObject *__pyx_n_s_install_context_from_request_cal;
static PyObject *__pyx_n_s_int;
static PyObject *__pyx_n_s_integrated_call_locals_on_succe;
static PyObject *__pyx_n_s_intercept_service;
static PyObject *__pyx_n_s_interceptor;
static PyObject *__pyx_n_s_interceptors;
static PyObject *__pyx_n_s_internal;
static PyObject *__pyx_kp_s_internal_error_user_data_must_be;
static PyObject *__pyx_n_s_invalid_argument;
static PyObject *__pyx_kp_s_invalid_call_object_cannot_be_us;
static PyObject *__pyx_n_s_invalid_flags;
static PyObject *__pyx_n_s_invalid_metadata;
static PyObject *__pyx_n_s_invocation_metadata;
static PyObject *__pyx_n_b_ipv4;
static PyObject *__pyx_n_s_is_async_handler;
static PyObject *__pyx_n_s_is_fork_support_enabled;
static PyObject *__pyx_n_s_is_valid;
static PyObject *__pyx_n_s_isasyncgenfunction;
static PyObject *__pyx_n_s_isawaitable;
static PyObject *__pyx_n_s_iscoroutinefunction;
static PyObject *__pyx_n_s_item;
static PyObject *__pyx_n_s_join;
static PyObject *__pyx_n_s_key;
static PyObject *__pyx_n_s_last_observed_state;
static PyObject *__pyx_n_s_len;
static PyObject *__pyx_n_s_listen;
static PyObject *__pyx_n_s_local_connect_type;
static PyObject *__pyx_n_s_local_tcp;
static PyObject *__pyx_n_s_logging;
static PyObject *__pyx_n_s_loop;
static PyObject *__pyx_n_s_low;
static PyObject *__pyx_n_s_lower;
static PyObject *__pyx_n_s_lstrip;
static PyObject *__pyx_n_s_main;
static PyObject *__pyx_n_s_managed_target;
static PyObject *__pyx_n_s_max_concurrent_streams;
static PyObject *__pyx_n_s_max_receive_message_length;
static PyObject *__pyx_n_s_max_results;
static PyObject *__pyx_n_s_max_send_message_length;
static PyObject *__pyx_n_s_maximum_concurrent_rpcs;
static PyObject *__pyx_kp_s_maximum_concurrent_rpcs_should_b;
static PyObject *__pyx_n_s_maxsize;
static PyObject *__pyx_n_s_medium;
static PyObject *__pyx_n_s_members;
static PyObject *__pyx_n_s_message;
static PyObject *__pyx_n_s_metaclass;
static PyObject *__pyx_n_s_metadata;
static PyObject *__pyx_n_s_metadata_locals_genexpr;
static PyObject *__pyx_n_s_metadata_plugin;
static PyObject *__pyx_n_s_metadata_sent_observer;
static PyObject *__pyx_kp_s_metadata_was_invalid_s;
static PyObject *__pyx_n_s_method;
static PyObject *__pyx_n_s_method_handler;
static PyObject *__pyx_n_s_module;
static PyObject *__pyx_n_s_name;
static PyObject *__pyx_n_s_name_2;
static PyObject *__pyx_n_s_namedtuple;
static PyObject *__pyx_n_s_new;
static PyObject *__pyx_n_s_next_call_event;
static PyObject *__pyx_n_s_next_call_event_locals_on_succes;
static PyObject *__pyx_n_s_next_event_locals_on_failure;
static PyObject *__pyx_n_s_next_event_locals_on_success;
static PyObject *__pyx_n_s_no_compress;
static PyObject *__pyx_kp_s_no_default___reduce___due_to_non;
static PyObject *__pyx_n_s_none;
static PyObject *__pyx_n_s_not_found;
static PyObject *__pyx_n_s_not_invoked;
static PyObject *__pyx_n_s_not_on_client;
static PyObject *__pyx_n_s_not_on_server;
static PyObject *__pyx_n_s_notify;
static PyObject *__pyx_n_s_notify_all;
static PyObject *__pyx_n_s_num_active_threads;
static PyObject *__pyx_n_s_object;
static PyObject *__pyx_kp_s_object_2;
static PyObject *__pyx_kp_s_of_RPC_that_terminated_with_sta;
static PyObject *__pyx_kp_s_of_RPC_that_terminated_with_sta_2;
static PyObject *__pyx_n_s_ok;
static PyObject *__pyx_n_s_on_failure;
static PyObject *__pyx_n_s_on_finish;
static PyObject *__pyx_n_s_on_success;
static PyObject *__pyx_n_s_op;
static PyObject *__pyx_n_s_operation_complete;
static PyObject *__pyx_n_s_operations;
static PyObject *__pyx_n_s_operationses_and_tags;
static PyObject *__pyx_n_s_ops;
static PyObject *__pyx_n_s_options;
static PyObject *__pyx_n_s_os;
static PyObject *__pyx_n_s_out_of_range;
static PyObject *__pyx_n_s_outbound_initial_metadata;
static PyObject *__pyx_n_s_partial;
static PyObject *__pyx_n_s_peer;
static PyObject *__pyx_n_s_peer_identities;
static PyObject *__pyx_n_s_peer_identity_key;
static PyObject *__pyx_n_s_pem_key_cert_pairs;
static PyObject *__pyx_n_s_pem_root_certificates;
static PyObject *__pyx_n_s_pem_root_certs;
static PyObject *__pyx_n_s_permission_denied;
static PyObject *__pyx_n_s_pickle;
static PyObject *__pyx_n_s_pkgutil;
static PyObject *__pyx_n_s_poll;
static PyObject *__pyx_n_s_poll_wrapper;
static PyObject *__pyx_n_s_poller;
static PyObject *__pyx_n_s_pool;
static PyObject *__pyx_n_s_pop;
static PyObject *__pyx_n_s_postfork_state_to_reset;
static PyObject *__pyx_n_s_postfork_states_to_reset;
static PyObject *__pyx_n_s_prepare;
static PyObject *__pyx_n_s_primary_user_agent_string;
static PyObject *__pyx_n_s_private_key;
static PyObject *__pyx_n_s_properties;
static PyObject *__pyx_n_s_property;
static PyObject *__pyx_n_s_put;
static PyObject *__pyx_n_s_py_auth_context;
static PyObject *__pyx_n_s_python_call_credentials;
static PyObject *__pyx_n_s_pyx_PickleError;
static PyObject *__pyx_n_s_pyx_capi;
static PyObject *__pyx_n_s_pyx_checksum;
static PyObject *__pyx_n_s_pyx_result;
static PyObject *__pyx_n_s_pyx_state;
static PyObject *__pyx_n_s_pyx_type;
static PyObject *__pyx_n_s_pyx_unpickle_AioServer;
static PyObject *__pyx_n_s_pyx_unpickle_CensusContext;
static PyObject *__pyx_n_s_pyx_unpickle_ChannelCredential;
static PyObject *__pyx_n_s_pyx_unpickle_InsecureChannelCr;
static PyObject *__pyx_n_s_pyx_unpickle__Tag;
static PyObject *__pyx_n_s_pyx_vtable;
static PyObject *__pyx_n_s_qualname;
static PyObject *__pyx_n_s_query_handler;
static PyObject *__pyx_n_s_query_handlers;
static PyObject *__pyx_n_s_queue;
static PyObject *__pyx_kp_s_queue_must_be_live;
static PyObject *__pyx_kp_s_queue_must_be_shutting_down_to_b;
static PyObject *__pyx_n_s_queue_shutdown;
static PyObject *__pyx_n_s_queue_timeout;
static PyObject *__pyx_n_s_range;
static PyObject *__pyx_n_s_read;
static PyObject *__pyx_n_s_read_socket;
static PyObject *__pyx_n_s_ready;
static PyObject *__pyx_n_s_receive_close_on_server;
static PyObject *__pyx_n_s_receive_initial_metadata;
static PyObject *__pyx_n_s_receive_initial_metadata_2;
static PyObject *__pyx_n_s_receive_message;
static PyObject *__pyx_n_s_receive_message_2;
static PyObject *__pyx_n_s_receive_op;
static PyObject *__pyx_n_s_receive_serialized_message;
static PyObject *__pyx_n_s_receive_status_on_client;
static PyObject *__pyx_n_s_recv;
static PyObject *__pyx_n_s_reduce;
static PyObject *__pyx_n_s_reduce_cython;
static PyObject *__pyx_n_s_reduce_ex;
static PyObject *__pyx_n_s_register_completion_queue;
static PyObject *__pyx_n_s_release;
static PyObject *__pyx_n_s_remove_reader;
static PyObject *__pyx_n_s_repr;
static PyObject *__pyx_n_s_repr_2;
static PyObject *__pyx_n_s_request;
static PyObject *__pyx_n_s_request_call;
static PyObject *__pyx_n_s_request_deserializer;
static PyObject *__pyx_n_s_request_iterator;
static PyObject *__pyx_n_s_request_message;
static PyObject *__pyx_n_s_request_raw;
static PyObject *__pyx_n_s_request_streaming;
static PyObject *__pyx_n_s_reset_postfork_child;
static PyObject *__pyx_n_s_resolve_wrapper;
static PyObject *__pyx_n_s_resource_exhausted;
static PyObject *__pyx_n_s_response;
static PyObject *__pyx_n_s_response_message;
static PyObject *__pyx_n_s_response_raw;
static PyObject *__pyx_n_s_response_serializer;
static PyObject *__pyx_n_s_response_streaming;
static PyObject *__pyx_n_s_result;
static PyObject *__pyx_n_s_retain_self;
static PyObject *__pyx_n_s_return;
static PyObject *__pyx_n_s_return_from_user_request_generat;
static PyObject *__pyx_n_s_rpc_coro;
static PyObject *__pyx_n_s_rpc_state;
static PyObject *__pyx_n_s_rpc_task;
static PyObject *__pyx_n_s_rstrip;
static PyObject *__pyx_n_s_run;
static PyObject *__pyx_n_s_run_2;
static PyObject *__pyx_n_s_run_coroutine_threadsafe;
static PyObject *__pyx_n_s_run_in_executor;
static PyObject *__pyx_n_s_run_interceptor;
static PyObject *__pyx_n_s_run_loop;
static PyObject *__pyx_n_s_run_with_context;
static PyObject *__pyx_n_s_run_with_context_locals__run;
static PyObject *__pyx_n_s_runtime_error;
static PyObject *__pyx_n_s_s;
static PyObject *__pyx_n_s_schedule_coro_threadsafe;
static PyObject *__pyx_n_s_schedule_rpc_coro;
static PyObject *__pyx_n_s_secondary_user_agent_string;
static PyObject *__pyx_n_s_segregated_call_locals_on_succe;
static PyObject *__pyx_n_s_self;
static PyObject *__pyx_kp_s_self__cq_cannot_be_converted_to;
static PyObject *__pyx_kp_s_self_arg_cannot_be_converted_to;
static PyObject *__pyx_kp_s_self_c_argument_cannot_be_conver;
static PyObject *__pyx_kp_s_self_c_credentials_cannot_be_con;
static PyObject *__pyx_kp_s_self_c_op_cannot_be_converted_to;
static PyObject *__pyx_n_s_send;
static PyObject *__pyx_n_s_send_close_from_client;
static PyObject *__pyx_n_s_send_error_status_from_server;
static PyObject *__pyx_n_s_send_initial_metadata;
static PyObject *__pyx_n_s_send_initial_metadata_2;
static PyObject *__pyx_n_s_send_initial_metadata_op;
static PyObject *__pyx_n_s_send_message;
static PyObject *__pyx_n_s_send_message_2;
static PyObject *__pyx_n_s_send_receive_close;
static PyObject *__pyx_n_s_send_serialized_message;
static PyObject *__pyx_n_s_send_status_from_server;
static PyObject *__pyx_n_s_sendmsg;
static PyObject *__pyx_n_s_server;
static PyObject *__pyx_n_s_server_certificate_config_ssl;
static PyObject *__pyx_n_s_server_credentials;
static PyObject *__pyx_n_s_server_credentials_alts;
static PyObject *__pyx_n_s_server_credentials_local;
static PyObject *__pyx_n_s_server_credentials_ssl;
static PyObject *__pyx_n_s_server_credentials_ssl_dynamic_c;
static PyObject *__pyx_n_s_server_id;
static PyObject *__pyx_n_s_server_main_loop;
static PyObject *__pyx_kp_s_server_must_be_started_and_not_s;
static PyObject *__pyx_n_s_server_queue;
static PyObject *__pyx_kp_s_server_queue_must_be_a_registere;
static PyObject *__pyx_n_s_service;
static PyObject *__pyx_n_s_service_accounts;
static PyObject *__pyx_n_s_servicer_context;
static PyObject *__pyx_n_s_serving_task_crash_handler;
static PyObject *__pyx_n_s_set;
static PyObject *__pyx_n_s_setDaemon;
static PyObject *__pyx_n_s_set_async_callback_func;
static PyObject *__pyx_n_s_set_census_context_on_call;
static PyObject *__pyx_n_s_set_code;
static PyObject *__pyx_n_s_set_compression;
static PyObject *__pyx_n_s_set_details;
static PyObject *__pyx_n_s_set_exception;
static PyObject *__pyx_n_s_set_result;
static PyObject *__pyx_n_s_set_trailing_metadata;
static PyObject *__pyx_n_s_setblocking;
static PyObject *__pyx_n_s_setsockopt;
static PyObject *__pyx_n_s_setstate;
static PyObject *__pyx_n_s_setstate_cython;
static PyObject *__pyx_n_s_shield;
static PyObject *__pyx_n_s_shutdown;
static PyObject *__pyx_n_s_shutdown_cq;
static PyObject *__pyx_n_s_shutting_down_server;
static PyObject *__pyx_n_s_sleep;
static PyObject *__pyx_n_s_socket;
static PyObject *__pyx_n_s_socket_accept_async;
static PyObject *__pyx_n_s_socket_connect_async;
static PyObject *__pyx_n_s_socket_id;
static PyObject *__pyx_n_s_socket_read_async;
static PyObject *__pyx_n_s_socket_resolve_async_python;
static PyObject *__pyx_n_s_socket_sendmsg;
static PyObject *__pyx_n_s_socket_wrapper;
static PyObject *__pyx_n_s_socket_write_async;
static PyObject *__pyx_n_s_socketpair;
static PyObject *__pyx_n_s_spawn;
static PyObject *__pyx_n_s_spawn_callback_async;
static PyObject *__pyx_n_s_spawn_callback_in_thread;
static PyObject *__pyx_n_s_spawn_greenlet;
static PyObject *__pyx_kp_s_src_python_grpcio_grpc__cython;
static PyObject *__pyx_kp_s_src_python_grpcio_grpc__cython_10;
static PyObject *__pyx_kp_s_src_python_grpcio_grpc__cython_11;
static PyObject *__pyx_kp_s_src_python_grpcio_grpc__cython_12;
static PyObject *__pyx_kp_s_src_python_grpcio_grpc__cython_13;
static PyObject *__pyx_kp_s_src_python_grpcio_grpc__cython_14;
static PyObject *__pyx_kp_s_src_python_grpcio_grpc__cython_15;
static PyObject *__pyx_kp_s_src_python_grpcio_grpc__cython_2;
static PyObject *__pyx_kp_s_src_python_grpcio_grpc__cython_3;
static PyObject *__pyx_kp_s_src_python_grpcio_grpc__cython_4;
static PyObject *__pyx_kp_s_src_python_grpcio_grpc__cython_5;
static PyObject *__pyx_kp_s_src_python_grpcio_grpc__cython_6;
static PyObject *__pyx_kp_s_src_python_grpcio_grpc__cython_7;
static PyObject *__pyx_kp_s_src_python_grpcio_grpc__cython_8;
static PyObject *__pyx_kp_s_src_python_grpcio_grpc__cython_9;
static PyObject *__pyx_n_s_ssl_session_cache;
static PyObject *__pyx_n_s_ssl_target_name_override;
static PyObject *__pyx_n_s_start;
static PyObject *__pyx_n_s_start_batch;
static PyObject *__pyx_n_s_start_channel_id;
static PyObject *__pyx_n_s_start_server_id;
static PyObject *__pyx_n_s_start_shutting_down;
static PyObject *__pyx_n_s_start_socket_id;
static PyObject *__pyx_n_s_started_tag;
static PyObject *__pyx_n_s_started_tags;
static PyObject *__pyx_n_s_status;
static PyObject *__pyx_n_s_status_code;
static PyObject *__pyx_n_s_stop;
static PyObject *__pyx_n_s_stored_ctx;
static PyObject *__pyx_n_u_str;
static PyObject *__pyx_n_s_str_2;
static PyObject *__pyx_n_s_stream_handler;
static PyObject *__pyx_n_s_stream_stream;
static PyObject *__pyx_n_s_stream_unary;
static PyObject *__pyx_kp_s_stringsource;
static PyObject *__pyx_n_s_subchannel_id;
static PyObject *__pyx_n_s_success;
static PyObject *__pyx_n_s_sync_servicer_context;
static PyObject *__pyx_n_s_sys;
static PyObject *__pyx_n_s_t;
static PyObject *__pyx_n_s_tag;
static PyObject *__pyx_n_s_target;
static PyObject *__pyx_n_s_test;
static PyObject *__pyx_kp_s_the_server_has_already_started;
static PyObject *__pyx_kp_s_the_server_hasn_t_started_yet;
static PyObject *__pyx_kp_s_the_server_must_be_shutting_down;
static PyObject *__pyx_n_s_thread;
static PyObject *__pyx_n_s_thread_pool;
static PyObject *__pyx_n_s_threading;
static PyObject *__pyx_n_s_throw;
static PyObject *__pyx_n_s_time;
static PyObject *__pyx_n_s_time_remaining;
static PyObject *__pyx_n_s_timeout;
static PyObject *__pyx_n_s_timeout_ms;
static PyObject *__pyx_n_s_timeout_secs;
static PyObject *__pyx_n_s_timer;
static PyObject *__pyx_n_s_too_many_operations;
static PyObject *__pyx_n_s_traceback;
static PyObject *__pyx_n_s_trailing_metadata;
static PyObject *__pyx_n_s_transient_failure;
static PyObject *__pyx_n_s_true;
static PyObject *__pyx_n_s_tuples_to_resolvaddr_locals_gene;
static PyObject *__pyx_n_s_type;
static PyObject *__pyx_n_s_uds;
static PyObject *__pyx_n_s_unary_handler;
static PyObject *__pyx_n_s_unary_stream;
static PyObject *__pyx_n_s_unary_unary;
static PyObject *__pyx_n_s_unauthenticated;
static PyObject *__pyx_n_s_unavailable;
static PyObject *__pyx_n_s_unimplemented;
static PyObject *__pyx_n_s_uninstall_context;
static PyObject *__pyx_n_s_unknown;
static PyObject *__pyx_n_s_update;
static PyObject *__pyx_n_s_upper;
static PyObject *__pyx_n_s_used_mask;
static PyObject *__pyx_n_s_user_tag;
static PyObject *__pyx_n_s_utf8;
static PyObject *__pyx_kp_s_utf_8;
static PyObject *__pyx_n_s_value;
static PyObject *__pyx_n_s_values;
static PyObject *__pyx_n_s_wait;
static PyObject *__pyx_n_s_wait_for;
static PyObject *__pyx_n_s_wait_for_ready;
static PyObject *__pyx_n_s_wait_for_ready_explicitly_set;
static PyObject *__pyx_n_s_wait_for_termination;
static PyObject *__pyx_n_s_wait_time;
static PyObject *__pyx_n_s_warning;
static PyObject *__pyx_n_s_watch_connectivity_state;
static PyObject *__pyx_n_s_wrapper;
static PyObject *__pyx_n_s_write;
static PyObject *__pyx_n_s_write_bytes;
static PyObject *__pyx_n_s_write_flag;
static PyObject *__pyx_n_s_xds;
static PyObject *__pyx_n_s_xds_server_credentials;
static PyObject *__pyx_n_s_yes;
static PyObject *__pyx_n_s_yield_to_queue;
static PyObject *__pyx_pf_4grpc_7_cython_6cygrpc_15_GrpcArgWrapper___reduce_cython__(CYTHON_UNUSED struct __pyx_obj_4grpc_7_cython_6cygrpc__GrpcArgWrapper *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_4grpc_7_cython_6cygrpc_15_GrpcArgWrapper_2__setstate_cython__(CYTHON_UNUSED struct __pyx_obj_4grpc_7_cython_6cygrpc__GrpcArgWrapper *__pyx_v_self, CYTHON_UNUSED PyObject *__pyx_v___pyx_state); /* proto */
static PyObject *__pyx_pf_4grpc_7_cython_6cygrpc_11_ChannelArg___reduce_cython__(CYTHON_UNUSED struct __pyx_obj_4grpc_7_cython_6cygrpc__ChannelArg *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_4grpc_7_cython_6cygrpc_11_ChannelArg_2__setstate_cython__(CYTHON_UNUSED struct __pyx_obj_4grpc_7_cython_6cygrpc__ChannelArg *__pyx_v_self, CYTHON_UNUSED PyObject *__pyx_v___pyx_state); /* proto */
static int __pyx_pf_4grpc_7_cython_6cygrpc_12_ChannelArgs___cinit__(struct __pyx_obj_4grpc_7_cython_6cygrpc__ChannelArgs *__pyx_v_self, PyObject *__pyx_v_arguments); /* proto */
static void __pyx_pf_4grpc_7_cython_6cygrpc_12_ChannelArgs_2__dealloc__(struct __pyx_obj_4grpc_7_cython_6cygrpc__ChannelArgs *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_4grpc_7_cython_6cygrpc_12_ChannelArgs_10_arguments___get__(struct __pyx_obj_4grpc_7_cython_6cygrpc__ChannelArgs *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_4grpc_7_cython_6cygrpc_12_ChannelArgs_11_references___get__(struct __pyx_obj_4grpc_7_cython_6cygrpc__ChannelArgs *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_4grpc_7_cython_6cygrpc_12_ChannelArgs_4__reduce_cython__(CYTHON_UNUSED struct __pyx_obj_4grpc_7_cython_6cygrpc__ChannelArgs *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_4grpc_7_cython_6cygrpc_12_ChannelArgs_6__setstate_cython__(CYTHON_UNUSED struct __pyx_obj_4grpc_7_cython_6cygrpc__ChannelArgs *__pyx_v_self, CYTHON_UNUSED PyObject *__pyx_v___pyx_state); /* proto */
static int __pyx_pf_4grpc_7_cython_6cygrpc_4Call___cinit__(struct __pyx_obj_4grpc_7_cython_6cygrpc_Call *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_4grpc_7_cython_6cygrpc_4Call_2_start_batch(struct __pyx_obj_4grpc_7_cython_6cygrpc_Call *__pyx_v_self, PyObject *__pyx_v_operations, PyObject *__pyx_v_tag, PyObject *__pyx_v_retain_self); /* proto */
static PyObject *__pyx_pf_4grpc_7_cython_6cygrpc_4Call_4start_client_batch(struct __pyx_obj_4grpc_7_cython_6cygrpc_Call *__pyx_v_self, PyObject *__pyx_v_operations, PyObject *__pyx_v_tag); /* proto */
static PyObject *__pyx_pf_4grpc_7_cython_6cygrpc_4Call_6start_server_batch(struct __pyx_obj_4grpc_7_cython_6cygrpc_Call *__pyx_v_self, PyObject *__pyx_v_operations, PyObject *__pyx_v_tag); /* proto */
static PyObject *__pyx_pf_4grpc_7_cython_6cygrpc_4Call_8cancel(struct __pyx_obj_4grpc_7_cython_6cygrpc_Call *__pyx_v_self, grpc_status_code __pyx_v_error_code, PyObject *__pyx_v_details); /* proto */
static PyObject *__pyx_pf_4grpc_7_cython_6cygrpc_4Call_10set_credentials(struct __pyx_obj_4grpc_7_cython_6cygrpc_Call *__pyx_v_self, struct __pyx_obj_4grpc_7_cython_6cygrpc_CallCredentials *__pyx_v_call_credentials); /* proto */
static PyObject *__pyx_pf_4grpc_7_cython_6cygrpc_4Call_12peer(struct __pyx_obj_4grpc_7_cython_6cygrpc_Call *__pyx_v_self); /* proto */
static void __pyx_pf_4grpc_7_cython_6cygrpc_4Call_14__dealloc__(struct __pyx_obj_4grpc_7_cython_6cygrpc_Call *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_4grpc_7_cython_6cygrpc_4Call_8is_valid___get__(struct __pyx_obj_4grpc_7_cython_6cygrpc_Call *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_4grpc_7_cython_6cygrpc_4Call_16_custom_op_on_c_call(struct __pyx_obj_4grpc_7_cython_6cygrpc_Call *__pyx_v_self, int __pyx_v_op); /* proto */
static PyObject *__pyx_pf_4grpc_7_cython_6cygrpc_4Call_18__reduce_cython__(CYTHON_UNUSED struct __pyx_obj_4grpc_7_cython_6cygrpc_Call *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_4grpc_7_cython_6cygrpc_4Call_20__setstate_cython__(CYTHON_UNUSED struct __pyx_obj_4grpc_7_cython_6cygrpc_Call *__pyx_v_self, CYTHON_UNUSED PyObject *__pyx_v___pyx_state); /* proto */
static int __pyx_pf_4grpc_7_cython_6cygrpc_10_CallState___cinit__(struct __pyx_obj_4grpc_7_cython_6cygrpc__CallState *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_4grpc_7_cython_6cygrpc_10_CallState_2__reduce_cython__(CYTHON_UNUSED struct __pyx_obj_4grpc_7_cython_6cygrpc__CallState *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_4grpc_7_cython_6cygrpc_10_CallState_4__setstate_cython__(CYTHON_UNUSED struct __pyx_obj_4grpc_7_cython_6cygrpc__CallState *__pyx_v_self, CYTHON_UNUSED PyObject *__pyx_v___pyx_state); /* proto */
static int __pyx_pf_4grpc_7_cython_6cygrpc_13_ChannelState___cinit__(struct __pyx_obj_4grpc_7_cython_6cygrpc__ChannelState *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_4grpc_7_cython_6cygrpc_13_ChannelState_2__reduce_cython__(CYTHON_UNUSED struct __pyx_obj_4grpc_7_cython_6cygrpc__ChannelState *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_4grpc_7_cython_6cygrpc_13_ChannelState_4__setstate_cython__(CYTHON_UNUSED struct __pyx_obj_4grpc_7_cython_6cygrpc__ChannelState *__pyx_v_self, CYTHON_UNUSED PyObject *__pyx_v___pyx_state); /* proto */
static int __pyx_pf_4grpc_7_cython_6cygrpc_14IntegratedCall___cinit__(struct __pyx_obj_4grpc_7_cython_6cygrpc_IntegratedCall *__pyx_v_self, struct __pyx_obj_4grpc_7_cython_6cygrpc__ChannelState *__pyx_v_channel_state, struct __pyx_obj_4grpc_7_cython_6cygrpc__CallState *__pyx_v_call_state); /* proto */
static PyObject *__pyx_pf_4grpc_7_cython_6cygrpc_14IntegratedCall_2operate(struct __pyx_obj_4grpc_7_cython_6cygrpc_IntegratedCall *__pyx_v_self, PyObject *__pyx_v_operations, PyObject *__pyx_v_tag); /* proto */
static PyObject *__pyx_pf_4grpc_7_cython_6cygrpc_14IntegratedCall_4cancel(struct __pyx_obj_4grpc_7_cython_6cygrpc_IntegratedCall *__pyx_v_self, PyObject *__pyx_v_code, PyObject *__pyx_v_details); /* proto */
static PyObject *__pyx_pf_4grpc_7_cython_6cygrpc_14IntegratedCall_6__reduce_cython__(CYTHON_UNUSED struct __pyx_obj_4grpc_7_cython_6cygrpc_IntegratedCall *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_4grpc_7_cython_6cygrpc_14IntegratedCall_8__setstate_cython__(CYTHON_UNUSED struct __pyx_obj_4grpc_7_cython_6cygrpc_IntegratedCall *__pyx_v_self, CYTHON_UNUSED PyObject *__pyx_v___pyx_state); /* proto */
static PyObject *__pyx_pf_4grpc_7_cython_6cygrpc_16_integrated_call_on_success(PyObject *__pyx_self, PyObject *__pyx_v_started_tags); /* proto */
static int __pyx_pf_4grpc_7_cython_6cygrpc_14SegregatedCall___cinit__(struct __pyx_obj_4grpc_7_cython_6cygrpc_SegregatedCall *__pyx_v_self, struct __pyx_obj_4grpc_7_cython_6cygrpc__ChannelState *__pyx_v_channel_state, struct __pyx_obj_4grpc_7_cython_6cygrpc__CallState *__pyx_v_call_state); /* proto */
static PyObject *__pyx_pf_4grpc_7_cython_6cygrpc_14SegregatedCall_2operate(struct __pyx_obj_4grpc_7_cython_6cygrpc_SegregatedCall *__pyx_v_self, PyObject *__pyx_v_operations, PyObject *__pyx_v_tag); /* proto */
static PyObject *__pyx_pf_4grpc_7_cython_6cygrpc_14SegregatedCall_4cancel(struct __pyx_obj_4grpc_7_cython_6cygrpc_SegregatedCall *__pyx_v_self, PyObject *__pyx_v_code, PyObject *__pyx_v_details); /* proto */
static PyObject *__pyx_pf_4grpc_7_cython_6cygrpc_14SegregatedCall_10next_event_on_success(PyObject *__pyx_self, PyObject *__pyx_v_tag); /* proto */
static PyObject *__pyx_pf_4grpc_7_cython_6cygrpc_14SegregatedCall_10next_event_2on_failure(PyObject *__pyx_self); /* proto */
static PyObject *__pyx_pf_4grpc_7_cython_6cygrpc_14SegregatedCall_6next_event(struct __pyx_obj_4grpc_7_cython_6cygrpc_SegregatedCall *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_4grpc_7_cython_6cygrpc_14SegregatedCall_8__reduce_cython__(CYTHON_UNUSED struct __pyx_obj_4grpc_7_cython_6cygrpc_SegregatedCall *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_4grpc_7_cython_6cygrpc_14SegregatedCall_10__setstate_cython__(CYTHON_UNUSED struct __pyx_obj_4grpc_7_cython_6cygrpc_SegregatedCall *__pyx_v_self, CYTHON_UNUSED PyObject *__pyx_v___pyx_state); /* proto */
static PyObject *__pyx_pf_4grpc_7_cython_6cygrpc_16_segregated_call_on_success(PyObject *__pyx_self, CYTHON_UNUSED PyObject *__pyx_v_started_tags); /* proto */
static int __pyx_pf_4grpc_7_cython_6cygrpc_7Channel___cinit__(struct __pyx_obj_4grpc_7_cython_6cygrpc_Channel *__pyx_v_self, PyObject *__pyx_v_target, PyObject *__pyx_v_arguments, struct __pyx_obj_4grpc_7_cython_6cygrpc_ChannelCredentials *__pyx_v_channel_credentials); /* proto */
static PyObject *__pyx_pf_4grpc_7_cython_6cygrpc_7Channel_2target(struct __pyx_obj_4grpc_7_cython_6cygrpc_Channel *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_4grpc_7_cython_6cygrpc_7Channel_4integrated_call(struct __pyx_obj_4grpc_7_cython_6cygrpc_Channel *__pyx_v_self, int __pyx_v_flags, PyObject *__pyx_v_method, PyObject *__pyx_v_host, PyObject *__pyx_v_deadline, PyObject *__pyx_v_metadata, struct __pyx_obj_4grpc_7_cython_6cygrpc_CallCredentials *__pyx_v_credentials, PyObject *__pyx_v_operationses_and_tags, PyObject *__pyx_v_context); /* proto */
static PyObject *__pyx_pf_4grpc_7_cython_6cygrpc_7Channel_15next_call_event_on_success(PyObject *__pyx_self, PyObject *__pyx_v_tag); /* proto */
static PyObject *__pyx_pf_4grpc_7_cython_6cygrpc_7Channel_6next_call_event(struct __pyx_obj_4grpc_7_cython_6cygrpc_Channel *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_4grpc_7_cython_6cygrpc_7Channel_8segregated_call(struct __pyx_obj_4grpc_7_cython_6cygrpc_Channel *__pyx_v_self, int __pyx_v_flags, PyObject *__pyx_v_method, PyObject *__pyx_v_host, PyObject *__pyx_v_deadline, PyObject *__pyx_v_metadata, struct __pyx_obj_4grpc_7_cython_6cygrpc_CallCredentials *__pyx_v_credentials, PyObject *__pyx_v_operationses_and_tags, PyObject *__pyx_v_context); /* proto */
static PyObject *__pyx_pf_4grpc_7_cython_6cygrpc_7Channel_10check_connectivity_state(struct __pyx_obj_4grpc_7_cython_6cygrpc_Channel *__pyx_v_self, int __pyx_v_try_to_connect); /* proto */
static PyObject *__pyx_pf_4grpc_7_cython_6cygrpc_7Channel_12watch_connectivity_state(struct __pyx_obj_4grpc_7_cython_6cygrpc_Channel *__pyx_v_self, grpc_connectivity_state __pyx_v_last_observed_state, PyObject *__pyx_v_deadline); /* proto */
static PyObject *__pyx_pf_4grpc_7_cython_6cygrpc_7Channel_14close(struct __pyx_obj_4grpc_7_cython_6cygrpc_Channel *__pyx_v_self, PyObject *__pyx_v_code, PyObject *__pyx_v_details); /* proto */
static PyObject *__pyx_pf_4grpc_7_cython_6cygrpc_7Channel_16close_on_fork(struct __pyx_obj_4grpc_7_cython_6cygrpc_Channel *__pyx_v_self, PyObject *__pyx_v_code, PyObject *__pyx_v_details); /* proto */
static PyObject *__pyx_pf_4grpc_7_cython_6cygrpc_7Channel_18__reduce_cython__(CYTHON_UNUSED struct __pyx_obj_4grpc_7_cython_6cygrpc_Channel *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_4grpc_7_cython_6cygrpc_7Channel_20__setstate_cython__(CYTHON_UNUSED struct __pyx_obj_4grpc_7_cython_6cygrpc_Channel *__pyx_v_self, CYTHON_UNUSED PyObject *__pyx_v___pyx_state); /* proto */
static PyObject *__pyx_pf_4grpc_7_cython_6cygrpc_channelz_get_top_channels(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__pyx_v_start_channel_id); /* proto */
static PyObject *__pyx_pf_4grpc_7_cython_6cygrpc_2channelz_get_servers(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__pyx_v_start_server_id); /* proto */
static PyObject *__pyx_pf_4grpc_7_cython_6cygrpc_4channelz_get_server(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__pyx_v_server_id); /* proto */
static PyObject *__pyx_pf_4grpc_7_cython_6cygrpc_6channelz_get_server_sockets(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__pyx_v_server_id, PyObject *__pyx_v_start_socket_id, PyObject *__pyx_v_max_results); /* proto */
static PyObject *__pyx_pf_4grpc_7_cython_6cygrpc_8channelz_get_channel(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__pyx_v_channel_id); /* proto */
static PyObject *__pyx_pf_4grpc_7_cython_6cygrpc_10channelz_get_subchannel(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__pyx_v_subchannel_id); /* proto */
static PyObject *__pyx_pf_4grpc_7_cython_6cygrpc_12channelz_get_socket(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__pyx_v_socket_id); /* proto */
static PyObject *__pyx_pf_4grpc_7_cython_6cygrpc_14dump_xds_configs(CYTHON_UNUSED PyObject *__pyx_self); /* proto */
static PyObject *__pyx_pf_4grpc_7_cython_6cygrpc_16_spawn_callback_in_thread(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__pyx_v_cb_func, PyObject *__pyx_v_args); /* proto */
static PyObject *__pyx_pf_4grpc_7_cython_6cygrpc_18set_async_callback_func(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__pyx_v_callback_func); /* proto */
static PyObject *__pyx_pf_4grpc_7_cython_6cygrpc_20_spawn_callback_async(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__pyx_v_callback, PyObject *__pyx_v_args); /* proto */
static PyObject *__pyx_pf_4grpc_7_cython_6cygrpc_15CallCredentials___reduce_cython__(CYTHON_UNUSED struct __pyx_obj_4grpc_7_cython_6cygrpc_CallCredentials *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_4grpc_7_cython_6cygrpc_15CallCredentials_2__setstate_cython__(CYTHON_UNUSED struct __pyx_obj_4grpc_7_cython_6cygrpc_CallCredentials *__pyx_v_self, CYTHON_UNUSED PyObject *__pyx_v___pyx_state); /* proto */
static PyObject *__pyx_pf_4grpc_7_cython_6cygrpc_13_get_metadata_callback(PyObject *__pyx_self, PyObject *__pyx_v_metadata, grpc_status_code __pyx_v_status, PyObject *__pyx_v_error_details); /* proto */
static int __pyx_pf_4grpc_7_cython_6cygrpc_29MetadataPluginCallCredentials___cinit__(struct __pyx_obj_4grpc_7_cython_6cygrpc_MetadataPluginCallCredentials *__pyx_v_self, PyObject *__pyx_v_metadata_plugin, PyObject *__pyx_v_name); /* proto */
static PyObject *__pyx_pf_4grpc_7_cython_6cygrpc_29MetadataPluginCallCredentials_16_metadata_plugin___get__(struct __pyx_obj_4grpc_7_cython_6cygrpc_MetadataPluginCallCredentials *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_4grpc_7_cython_6cygrpc_29MetadataPluginCallCredentials_5_name___get__(struct __pyx_obj_4grpc_7_cython_6cygrpc_MetadataPluginCallCredentials *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_4grpc_7_cython_6cygrpc_29MetadataPluginCallCredentials_2__reduce_cython__(CYTHON_UNUSED struct __pyx_obj_4grpc_7_cython_6cygrpc_MetadataPluginCallCredentials *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_4grpc_7_cython_6cygrpc_29MetadataPluginCallCredentials_4__setstate_cython__(CYTHON_UNUSED struct __pyx_obj_4grpc_7_cython_6cygrpc_MetadataPluginCallCredentials *__pyx_v_self, CYTHON_UNUSED PyObject *__pyx_v___pyx_state); /* proto */
static int __pyx_pf_4grpc_7_cython_6cygrpc_24CompositeCallCredentials___cinit__(struct __pyx_obj_4grpc_7_cython_6cygrpc_CompositeCallCredentials *__pyx_v_self, PyObject *__pyx_v_call_credentialses); /* proto */
static PyObject *__pyx_pf_4grpc_7_cython_6cygrpc_24CompositeCallCredentials_19_call_credentialses___get__(struct __pyx_obj_4grpc_7_cython_6cygrpc_CompositeCallCredentials *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_4grpc_7_cython_6cygrpc_24CompositeCallCredentials_2__reduce_cython__(CYTHON_UNUSED struct __pyx_obj_4grpc_7_cython_6cygrpc_CompositeCallCredentials *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_4grpc_7_cython_6cygrpc_24CompositeCallCredentials_4__setstate_cython__(CYTHON_UNUSED struct __pyx_obj_4grpc_7_cython_6cygrpc_CompositeCallCredentials *__pyx_v_self, CYTHON_UNUSED PyObject *__pyx_v___pyx_state); /* proto */
static PyObject *__pyx_pf_4grpc_7_cython_6cygrpc_18ChannelCredentials___reduce_cython__(struct __pyx_obj_4grpc_7_cython_6cygrpc_ChannelCredentials *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_4grpc_7_cython_6cygrpc_18ChannelCredentials_2__setstate_cython__(struct __pyx_obj_4grpc_7_cython_6cygrpc_ChannelCredentials *__pyx_v_self, PyObject *__pyx_v___pyx_state); /* proto */
static int __pyx_pf_4grpc_7_cython_6cygrpc_18SSLSessionCacheLRU___cinit__(struct __pyx_obj_4grpc_7_cython_6cygrpc_SSLSessionCacheLRU *__pyx_v_self, PyObject *__pyx_v_capacity); /* proto */
static PyObject *__pyx_pf_4grpc_7_cython_6cygrpc_18SSLSessionCacheLRU_2__int__(struct __pyx_obj_4grpc_7_cython_6cygrpc_SSLSessionCacheLRU *__pyx_v_self); /* proto */
static void __pyx_pf_4grpc_7_cython_6cygrpc_18SSLSessionCacheLRU_4__dealloc__(struct __pyx_obj_4grpc_7_cython_6cygrpc_SSLSessionCacheLRU *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_4grpc_7_cython_6cygrpc_18SSLSessionCacheLRU_6__reduce_cython__(CYTHON_UNUSED struct __pyx_obj_4grpc_7_cython_6cygrpc_SSLSessionCacheLRU *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_4grpc_7_cython_6cygrpc_18SSLSessionCacheLRU_8__setstate_cython__(CYTHON_UNUSED struct __pyx_obj_4grpc_7_cython_6cygrpc_SSLSessionCacheLRU *__pyx_v_self, CYTHON_UNUSED PyObject *__pyx_v___pyx_state); /* proto */
static int __pyx_pf_4grpc_7_cython_6cygrpc_21SSLChannelCredentials___cinit__(struct __pyx_obj_4grpc_7_cython_6cygrpc_SSLChannelCredentials *__pyx_v_self, PyObject *__pyx_v_pem_root_certificates, PyObject *__pyx_v_private_key, PyObject *__pyx_v_certificate_chain); /* proto */
static PyObject *__pyx_pf_4grpc_7_cython_6cygrpc_21SSLChannelCredentials_22_pem_root_certificates___get__(struct __pyx_obj_4grpc_7_cython_6cygrpc_SSLChannelCredentials *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_4grpc_7_cython_6cygrpc_21SSLChannelCredentials_12_private_key___get__(struct __pyx_obj_4grpc_7_cython_6cygrpc_SSLChannelCredentials *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_4grpc_7_cython_6cygrpc_21SSLChannelCredentials_18_certificate_chain___get__(struct __pyx_obj_4grpc_7_cython_6cygrpc_SSLChannelCredentials *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_4grpc_7_cython_6cygrpc_21SSLChannelCredentials_2__reduce_cython__(CYTHON_UNUSED struct __pyx_obj_4grpc_7_cython_6cygrpc_SSLChannelCredentials *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_4grpc_7_cython_6cygrpc_21SSLChannelCredentials_4__setstate_cython__(CYTHON_UNUSED struct __pyx_obj_4grpc_7_cython_6cygrpc_SSLChannelCredentials *__pyx_v_self, CYTHON_UNUSED PyObject *__pyx_v___pyx_state); /* proto */
static int __pyx_pf_4grpc_7_cython_6cygrpc_27CompositeChannelCredentials___cinit__(struct __pyx_obj_4grpc_7_cython_6cygrpc_CompositeChannelCredentials *__pyx_v_self, PyObject *__pyx_v_call_credentialses, PyObject *__pyx_v_channel_credentials); /* proto */
static PyObject *__pyx_pf_4grpc_7_cython_6cygrpc_27CompositeChannelCredentials_19_call_credentialses___get__(struct __pyx_obj_4grpc_7_cython_6cygrpc_CompositeChannelCredentials *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_4grpc_7_cython_6cygrpc_27CompositeChannelCredentials_20_channel_credentials___get__(struct __pyx_obj_4grpc_7_cython_6cygrpc_CompositeChannelCredentials *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_4grpc_7_cython_6cygrpc_27CompositeChannelCredentials_2__reduce_cython__(CYTHON_UNUSED struct __pyx_obj_4grpc_7_cython_6cygrpc_CompositeChannelCredentials *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_4grpc_7_cython_6cygrpc_27CompositeChannelCredentials_4__setstate_cython__(CYTHON_UNUSED struct __pyx_obj_4grpc_7_cython_6cygrpc_CompositeChannelCredentials *__pyx_v_self, CYTHON_UNUSED PyObject *__pyx_v___pyx_state); /* proto */
static int __pyx_pf_4grpc_7_cython_6cygrpc_21XDSChannelCredentials___cinit__(struct __pyx_obj_4grpc_7_cython_6cygrpc_XDSChannelCredentials *__pyx_v_self, PyObject *__pyx_v_fallback_credentials); /* proto */
static PyObject *__pyx_pf_4grpc_7_cython_6cygrpc_21XDSChannelCredentials_21_fallback_credentials___get__(struct __pyx_obj_4grpc_7_cython_6cygrpc_XDSChannelCredentials *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_4grpc_7_cython_6cygrpc_21XDSChannelCredentials_2__reduce_cython__(CYTHON_UNUSED struct __pyx_obj_4grpc_7_cython_6cygrpc_XDSChannelCredentials *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_4grpc_7_cython_6cygrpc_21XDSChannelCredentials_4__setstate_cython__(CYTHON_UNUSED struct __pyx_obj_4grpc_7_cython_6cygrpc_XDSChannelCredentials *__pyx_v_self, CYTHON_UNUSED PyObject *__pyx_v___pyx_state); /* proto */
static int __pyx_pf_4grpc_7_cython_6cygrpc_23ServerCertificateConfig___cinit__(struct __pyx_obj_4grpc_7_cython_6cygrpc_ServerCertificateConfig *__pyx_v_self); /* proto */
static void __pyx_pf_4grpc_7_cython_6cygrpc_23ServerCertificateConfig_2__dealloc__(struct __pyx_obj_4grpc_7_cython_6cygrpc_ServerCertificateConfig *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_4grpc_7_cython_6cygrpc_23ServerCertificateConfig_4__reduce_cython__(CYTHON_UNUSED struct __pyx_obj_4grpc_7_cython_6cygrpc_ServerCertificateConfig *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_4grpc_7_cython_6cygrpc_23ServerCertificateConfig_6__setstate_cython__(CYTHON_UNUSED struct __pyx_obj_4grpc_7_cython_6cygrpc_ServerCertificateConfig *__pyx_v_self, CYTHON_UNUSED PyObject *__pyx_v___pyx_state); /* proto */
static int __pyx_pf_4grpc_7_cython_6cygrpc_17ServerCredentials___cinit__(struct __pyx_obj_4grpc_7_cython_6cygrpc_ServerCredentials *__pyx_v_self); /* proto */
static void __pyx_pf_4grpc_7_cython_6cygrpc_17ServerCredentials_2__dealloc__(struct __pyx_obj_4grpc_7_cython_6cygrpc_ServerCredentials *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_4grpc_7_cython_6cygrpc_17ServerCredentials_4__reduce_cython__(CYTHON_UNUSED struct __pyx_obj_4grpc_7_cython_6cygrpc_ServerCredentials *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_4grpc_7_cython_6cygrpc_17ServerCredentials_6__setstate_cython__(CYTHON_UNUSED struct __pyx_obj_4grpc_7_cython_6cygrpc_ServerCredentials *__pyx_v_self, CYTHON_UNUSED PyObject *__pyx_v___pyx_state); /* proto */
static PyObject *__pyx_pf_4grpc_7_cython_6cygrpc_22server_credentials_ssl(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__pyx_v_pem_root_certs, PyObject *__pyx_v_pem_key_cert_pairs, int __pyx_v_force_client_auth); /* proto */
static PyObject *__pyx_pf_4grpc_7_cython_6cygrpc_24server_certificate_config_ssl(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__pyx_v_pem_root_certs, PyObject *__pyx_v_pem_key_cert_pairs); /* proto */
static PyObject *__pyx_pf_4grpc_7_cython_6cygrpc_26server_credentials_ssl_dynamic_cert_config(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__pyx_v_initial_cert_config, PyObject *__pyx_v_cert_config_fetcher, int __pyx_v_force_client_auth); /* proto */
static int __pyx_pf_4grpc_7_cython_6cygrpc_23LocalChannelCredentials___cinit__(struct __pyx_obj_4grpc_7_cython_6cygrpc_LocalChannelCredentials *__pyx_v_self, grpc_local_connect_type __pyx_v_local_connect_type); /* proto */
static PyObject *__pyx_pf_4grpc_7_cython_6cygrpc_23LocalChannelCredentials_2__reduce_cython__(CYTHON_UNUSED struct __pyx_obj_4grpc_7_cython_6cygrpc_LocalChannelCredentials *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_4grpc_7_cython_6cygrpc_23LocalChannelCredentials_4__setstate_cython__(CYTHON_UNUSED struct __pyx_obj_4grpc_7_cython_6cygrpc_LocalChannelCredentials *__pyx_v_self, CYTHON_UNUSED PyObject *__pyx_v___pyx_state); /* proto */
static PyObject *__pyx_pf_4grpc_7_cython_6cygrpc_28channel_credentials_local(CYTHON_UNUSED PyObject *__pyx_self, grpc_local_connect_type __pyx_v_local_connect_type); /* proto */
static PyObject *__pyx_pf_4grpc_7_cython_6cygrpc_26InsecureChannelCredentials___reduce_cython__(struct __pyx_obj_4grpc_7_cython_6cygrpc_InsecureChannelCredentials *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_4grpc_7_cython_6cygrpc_26InsecureChannelCredentials_2__setstate_cython__(struct __pyx_obj_4grpc_7_cython_6cygrpc_InsecureChannelCredentials *__pyx_v_self, PyObject *__pyx_v___pyx_state); /* proto */
static PyObject *__pyx_pf_4grpc_7_cython_6cygrpc_30channel_credentials_insecure(CYTHON_UNUSED PyObject *__pyx_self); /* proto */
static PyObject *__pyx_pf_4grpc_7_cython_6cygrpc_32server_credentials_local(CYTHON_UNUSED PyObject *__pyx_self, grpc_local_connect_type __pyx_v_local_connect_type); /* proto */
static PyObject *__pyx_pf_4grpc_7_cython_6cygrpc_34xds_server_credentials(CYTHON_UNUSED PyObject *__pyx_self, struct __pyx_obj_4grpc_7_cython_6cygrpc_ServerCredentials *__pyx_v_fallback_credentials); /* proto */
static PyObject *__pyx_pf_4grpc_7_cython_6cygrpc_36insecure_server_credentials(CYTHON_UNUSED PyObject *__pyx_self); /* proto */
static int __pyx_pf_4grpc_7_cython_6cygrpc_22ALTSChannelCredentials___cinit__(struct __pyx_obj_4grpc_7_cython_6cygrpc_ALTSChannelCredentials *__pyx_v_self, PyObject *__pyx_v_service_accounts); /* proto */
static void __pyx_pf_4grpc_7_cython_6cygrpc_22ALTSChannelCredentials_2__dealloc__(struct __pyx_obj_4grpc_7_cython_6cygrpc_ALTSChannelCredentials *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_4grpc_7_cython_6cygrpc_22ALTSChannelCredentials_4__reduce_cython__(CYTHON_UNUSED struct __pyx_obj_4grpc_7_cython_6cygrpc_ALTSChannelCredentials *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_4grpc_7_cython_6cygrpc_22ALTSChannelCredentials_6__setstate_cython__(CYTHON_UNUSED struct __pyx_obj_4grpc_7_cython_6cygrpc_ALTSChannelCredentials *__pyx_v_self, CYTHON_UNUSED PyObject *__pyx_v___pyx_state); /* proto */
static PyObject *__pyx_pf_4grpc_7_cython_6cygrpc_38channel_credentials_alts(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__pyx_v_service_accounts); /* proto */
static PyObject *__pyx_pf_4grpc_7_cython_6cygrpc_40server_credentials_alts(CYTHON_UNUSED PyObject *__pyx_self); /* proto */
static int __pyx_pf_4grpc_7_cython_6cygrpc_31ComputeEngineChannelCredentials___cinit__(struct __pyx_obj_4grpc_7_cython_6cygrpc_ComputeEngineChannelCredentials *__pyx_v_self, struct __pyx_obj_4grpc_7_cython_6cygrpc_CallCredentials *__pyx_v_call_creds); /* proto */
static PyObject *__pyx_pf_4grpc_7_cython_6cygrpc_31ComputeEngineChannelCredentials_2__reduce_cython__(CYTHON_UNUSED struct __pyx_obj_4grpc_7_cython_6cygrpc_ComputeEngineChannelCredentials *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_4grpc_7_cython_6cygrpc_31ComputeEngineChannelCredentials_4__setstate_cython__(CYTHON_UNUSED struct __pyx_obj_4grpc_7_cython_6cygrpc_ComputeEngineChannelCredentials *__pyx_v_self, CYTHON_UNUSED PyObject *__pyx_v___pyx_state); /* proto */
static PyObject *__pyx_pf_4grpc_7_cython_6cygrpc_42channel_credentials_compute_engine(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__pyx_v_call_creds); /* proto */
static int __pyx_pf_4grpc_7_cython_6cygrpc_15CompletionQueue___cinit__(struct __pyx_obj_4grpc_7_cython_6cygrpc_CompletionQueue *__pyx_v_self, PyObject *__pyx_v_shutdown_cq); /* proto */
static PyObject *__pyx_pf_4grpc_7_cython_6cygrpc_15CompletionQueue_2poll(struct __pyx_obj_4grpc_7_cython_6cygrpc_CompletionQueue *__pyx_v_self, PyObject *__pyx_v_deadline); /* proto */
static PyObject *__pyx_pf_4grpc_7_cython_6cygrpc_15CompletionQueue_4shutdown(struct __pyx_obj_4grpc_7_cython_6cygrpc_CompletionQueue *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_4grpc_7_cython_6cygrpc_15CompletionQueue_6clear(struct __pyx_obj_4grpc_7_cython_6cygrpc_CompletionQueue *__pyx_v_self); /* proto */
static void __pyx_pf_4grpc_7_cython_6cygrpc_15CompletionQueue_8__dealloc__(struct __pyx_obj_4grpc_7_cython_6cygrpc_CompletionQueue *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_4grpc_7_cython_6cygrpc_15CompletionQueue_10__reduce_cython__(CYTHON_UNUSED struct __pyx_obj_4grpc_7_cython_6cygrpc_CompletionQueue *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_4grpc_7_cython_6cygrpc_15CompletionQueue_12__setstate_cython__(CYTHON_UNUSED struct __pyx_obj_4grpc_7_cython_6cygrpc_CompletionQueue *__pyx_v_self, CYTHON_UNUSED PyObject *__pyx_v___pyx_state); /* proto */
static int __pyx_pf_4grpc_7_cython_6cygrpc_17ConnectivityEvent___cinit__(struct __pyx_obj_4grpc_7_cython_6cygrpc_ConnectivityEvent *__pyx_v_self, grpc_completion_type __pyx_v_completion_type, int __pyx_v_success, PyObject *__pyx_v_tag); /* proto */
static PyObject *__pyx_pf_4grpc_7_cython_6cygrpc_17ConnectivityEvent_15completion_type___get__(struct __pyx_obj_4grpc_7_cython_6cygrpc_ConnectivityEvent *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_4grpc_7_cython_6cygrpc_17ConnectivityEvent_7success___get__(struct __pyx_obj_4grpc_7_cython_6cygrpc_ConnectivityEvent *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_4grpc_7_cython_6cygrpc_17ConnectivityEvent_3tag___get__(struct __pyx_obj_4grpc_7_cython_6cygrpc_ConnectivityEvent *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_4grpc_7_cython_6cygrpc_17ConnectivityEvent_2__reduce_cython__(CYTHON_UNUSED struct __pyx_obj_4grpc_7_cython_6cygrpc_ConnectivityEvent *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_4grpc_7_cython_6cygrpc_17ConnectivityEvent_4__setstate_cython__(CYTHON_UNUSED struct __pyx_obj_4grpc_7_cython_6cygrpc_ConnectivityEvent *__pyx_v_self, CYTHON_UNUSED PyObject *__pyx_v___pyx_state); /* proto */
static int __pyx_pf_4grpc_7_cython_6cygrpc_16RequestCallEvent___cinit__(struct __pyx_obj_4grpc_7_cython_6cygrpc_RequestCallEvent *__pyx_v_self, grpc_completion_type __pyx_v_completion_type, int __pyx_v_success, PyObject *__pyx_v_tag, struct __pyx_obj_4grpc_7_cython_6cygrpc_Call *__pyx_v_call, struct __pyx_obj_4grpc_7_cython_6cygrpc_CallDetails *__pyx_v_call_details, PyObject *__pyx_v_invocation_metadata); /* proto */
static PyObject *__pyx_pf_4grpc_7_cython_6cygrpc_16RequestCallEvent_15completion_type___get__(struct __pyx_obj_4grpc_7_cython_6cygrpc_RequestCallEvent *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_4grpc_7_cython_6cygrpc_16RequestCallEvent_7success___get__(struct __pyx_obj_4grpc_7_cython_6cygrpc_RequestCallEvent *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_4grpc_7_cython_6cygrpc_16RequestCallEvent_3tag___get__(struct __pyx_obj_4grpc_7_cython_6cygrpc_RequestCallEvent *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_4grpc_7_cython_6cygrpc_16RequestCallEvent_4call___get__(struct __pyx_obj_4grpc_7_cython_6cygrpc_RequestCallEvent *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_4grpc_7_cython_6cygrpc_16RequestCallEvent_12call_details___get__(struct __pyx_obj_4grpc_7_cython_6cygrpc_RequestCallEvent *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_4grpc_7_cython_6cygrpc_16RequestCallEvent_19invocation_metadata___get__(struct __pyx_obj_4grpc_7_cython_6cygrpc_RequestCallEvent *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_4grpc_7_cython_6cygrpc_16RequestCallEvent_2__reduce_cython__(CYTHON_UNUSED struct __pyx_obj_4grpc_7_cython_6cygrpc_RequestCallEvent *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_4grpc_7_cython_6cygrpc_16RequestCallEvent_4__setstate_cython__(CYTHON_UNUSED struct __pyx_obj_4grpc_7_cython_6cygrpc_RequestCallEvent *__pyx_v_self, CYTHON_UNUSED PyObject *__pyx_v___pyx_state); /* proto */
static int __pyx_pf_4grpc_7_cython_6cygrpc_19BatchOperationEvent___cinit__(struct __pyx_obj_4grpc_7_cython_6cygrpc_BatchOperationEvent *__pyx_v_self, grpc_completion_type __pyx_v_completion_type, int __pyx_v_success, PyObject *__pyx_v_tag, PyObject *__pyx_v_batch_operations); /* proto */
static PyObject *__pyx_pf_4grpc_7_cython_6cygrpc_19BatchOperationEvent_15completion_type___get__(struct __pyx_obj_4grpc_7_cython_6cygrpc_BatchOperationEvent *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_4grpc_7_cython_6cygrpc_19BatchOperationEvent_7success___get__(struct __pyx_obj_4grpc_7_cython_6cygrpc_BatchOperationEvent *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_4grpc_7_cython_6cygrpc_19BatchOperationEvent_3tag___get__(struct __pyx_obj_4grpc_7_cython_6cygrpc_BatchOperationEvent *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_4grpc_7_cython_6cygrpc_19BatchOperationEvent_16batch_operations___get__(struct __pyx_obj_4grpc_7_cython_6cygrpc_BatchOperationEvent *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_4grpc_7_cython_6cygrpc_19BatchOperationEvent_2__reduce_cython__(CYTHON_UNUSED struct __pyx_obj_4grpc_7_cython_6cygrpc_BatchOperationEvent *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_4grpc_7_cython_6cygrpc_19BatchOperationEvent_4__setstate_cython__(CYTHON_UNUSED struct __pyx_obj_4grpc_7_cython_6cygrpc_BatchOperationEvent *__pyx_v_self, CYTHON_UNUSED PyObject *__pyx_v___pyx_state); /* proto */
static int __pyx_pf_4grpc_7_cython_6cygrpc_19ServerShutdownEvent___cinit__(struct __pyx_obj_4grpc_7_cython_6cygrpc_ServerShutdownEvent *__pyx_v_self, grpc_completion_type __pyx_v_completion_type, int __pyx_v_success, PyObject *__pyx_v_tag); /* proto */
static PyObject *__pyx_pf_4grpc_7_cython_6cygrpc_19ServerShutdownEvent_15completion_type___get__(struct __pyx_obj_4grpc_7_cython_6cygrpc_ServerShutdownEvent *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_4grpc_7_cython_6cygrpc_19ServerShutdownEvent_7success___get__(struct __pyx_obj_4grpc_7_cython_6cygrpc_ServerShutdownEvent *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_4grpc_7_cython_6cygrpc_19ServerShutdownEvent_3tag___get__(struct __pyx_obj_4grpc_7_cython_6cygrpc_ServerShutdownEvent *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_4grpc_7_cython_6cygrpc_19ServerShutdownEvent_2__reduce_cython__(CYTHON_UNUSED struct __pyx_obj_4grpc_7_cython_6cygrpc_ServerShutdownEvent *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_4grpc_7_cython_6cygrpc_19ServerShutdownEvent_4__setstate_cython__(CYTHON_UNUSED struct __pyx_obj_4grpc_7_cython_6cygrpc_ServerShutdownEvent *__pyx_v_self, CYTHON_UNUSED PyObject *__pyx_v___pyx_state); /* proto */
static PyObject *__pyx_pf_4grpc_7_cython_6cygrpc_9_metadata_genexpr(PyObject *__pyx_self); /* proto */
static PyObject *__pyx_pf_4grpc_7_cython_6cygrpc_9Operation___reduce_cython__(CYTHON_UNUSED struct __pyx_obj_4grpc_7_cython_6cygrpc_Operation *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_4grpc_7_cython_6cygrpc_9Operation_2__setstate_cython__(CYTHON_UNUSED struct __pyx_obj_4grpc_7_cython_6cygrpc_Operation *__pyx_v_self, CYTHON_UNUSED PyObject *__pyx_v___pyx_state); /* proto */
static int __pyx_pf_4grpc_7_cython_6cygrpc_28SendInitialMetadataOperation___cinit__(struct __pyx_obj_4grpc_7_cython_6cygrpc_SendInitialMetadataOperation *__pyx_v_self, PyObject *__pyx_v_initial_metadata, PyObject *__pyx_v_flags); /* proto */
static PyObject *__pyx_pf_4grpc_7_cython_6cygrpc_28SendInitialMetadataOperation_2type(CYTHON_UNUSED struct __pyx_obj_4grpc_7_cython_6cygrpc_SendInitialMetadataOperation *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_4grpc_7_cython_6cygrpc_28SendInitialMetadataOperation_17_initial_metadata___get__(struct __pyx_obj_4grpc_7_cython_6cygrpc_SendInitialMetadataOperation *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_4grpc_7_cython_6cygrpc_28SendInitialMetadataOperation_6_flags___get__(struct __pyx_obj_4grpc_7_cython_6cygrpc_SendInitialMetadataOperation *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_4grpc_7_cython_6cygrpc_28SendInitialMetadataOperation_4__reduce_cython__(CYTHON_UNUSED struct __pyx_obj_4grpc_7_cython_6cygrpc_SendInitialMetadataOperation *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_4grpc_7_cython_6cygrpc_28SendInitialMetadataOperation_6__setstate_cython__(CYTHON_UNUSED struct __pyx_obj_4grpc_7_cython_6cygrpc_SendInitialMetadataOperation *__pyx_v_self, CYTHON_UNUSED PyObject *__pyx_v___pyx_state); /* proto */
static int __pyx_pf_4grpc_7_cython_6cygrpc_20SendMessageOperation___cinit__(struct __pyx_obj_4grpc_7_cython_6cygrpc_SendMessageOperation *__pyx_v_self, PyObject *__pyx_v_message, int __pyx_v_flags); /* proto */
static PyObject *__pyx_pf_4grpc_7_cython_6cygrpc_20SendMessageOperation_2type(CYTHON_UNUSED struct __pyx_obj_4grpc_7_cython_6cygrpc_SendMessageOperation *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_4grpc_7_cython_6cygrpc_20SendMessageOperation_8_message___get__(struct __pyx_obj_4grpc_7_cython_6cygrpc_SendMessageOperation *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_4grpc_7_cython_6cygrpc_20SendMessageOperation_6_flags___get__(struct __pyx_obj_4grpc_7_cython_6cygrpc_SendMessageOperation *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_4grpc_7_cython_6cygrpc_20SendMessageOperation_4__reduce_cython__(CYTHON_UNUSED struct __pyx_obj_4grpc_7_cython_6cygrpc_SendMessageOperation *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_4grpc_7_cython_6cygrpc_20SendMessageOperation_6__setstate_cython__(CYTHON_UNUSED struct __pyx_obj_4grpc_7_cython_6cygrpc_SendMessageOperation *__pyx_v_self, CYTHON_UNUSED PyObject *__pyx_v___pyx_state); /* proto */
static int __pyx_pf_4grpc_7_cython_6cygrpc_28SendCloseFromClientOperation___cinit__(struct __pyx_obj_4grpc_7_cython_6cygrpc_SendCloseFromClientOperation *__pyx_v_self, int __pyx_v_flags); /* proto */
static PyObject *__pyx_pf_4grpc_7_cython_6cygrpc_28SendCloseFromClientOperation_2type(CYTHON_UNUSED struct __pyx_obj_4grpc_7_cython_6cygrpc_SendCloseFromClientOperation *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_4grpc_7_cython_6cygrpc_28SendCloseFromClientOperation_6_flags___get__(struct __pyx_obj_4grpc_7_cython_6cygrpc_SendCloseFromClientOperation *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_4grpc_7_cython_6cygrpc_28SendCloseFromClientOperation_4__reduce_cython__(CYTHON_UNUSED struct __pyx_obj_4grpc_7_cython_6cygrpc_SendCloseFromClientOperation *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_4grpc_7_cython_6cygrpc_28SendCloseFromClientOperation_6__setstate_cython__(CYTHON_UNUSED struct __pyx_obj_4grpc_7_cython_6cygrpc_SendCloseFromClientOperation *__pyx_v_self, CYTHON_UNUSED PyObject *__pyx_v___pyx_state); /* proto */
static int __pyx_pf_4grpc_7_cython_6cygrpc_29SendStatusFromServerOperation___cinit__(struct __pyx_obj_4grpc_7_cython_6cygrpc_SendStatusFromServerOperation *__pyx_v_self, PyObject *__pyx_v_trailing_metadata, PyObject *__pyx_v_code, PyObject *__pyx_v_details, int __pyx_v_flags); /* proto */
static PyObject *__pyx_pf_4grpc_7_cython_6cygrpc_29SendStatusFromServerOperation_2type(CYTHON_UNUSED struct __pyx_obj_4grpc_7_cython_6cygrpc_SendStatusFromServerOperation *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_4grpc_7_cython_6cygrpc_29SendStatusFromServerOperation_18_trailing_metadata___get__(struct __pyx_obj_4grpc_7_cython_6cygrpc_SendStatusFromServerOperation *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_4grpc_7_cython_6cygrpc_29SendStatusFromServerOperation_5_code___get__(struct __pyx_obj_4grpc_7_cython_6cygrpc_SendStatusFromServerOperation *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_4grpc_7_cython_6cygrpc_29SendStatusFromServerOperation_8_details___get__(struct __pyx_obj_4grpc_7_cython_6cygrpc_SendStatusFromServerOperation *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_4grpc_7_cython_6cygrpc_29SendStatusFromServerOperation_6_flags___get__(struct __pyx_obj_4grpc_7_cython_6cygrpc_SendStatusFromServerOperation *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_4grpc_7_cython_6cygrpc_29SendStatusFromServerOperation_4__reduce_cython__(CYTHON_UNUSED struct __pyx_obj_4grpc_7_cython_6cygrpc_SendStatusFromServerOperation *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_4grpc_7_cython_6cygrpc_29SendStatusFromServerOperation_6__setstate_cython__(CYTHON_UNUSED struct __pyx_obj_4grpc_7_cython_6cygrpc_SendStatusFromServerOperation *__pyx_v_self, CYTHON_UNUSED PyObject *__pyx_v___pyx_state); /* proto */
static int __pyx_pf_4grpc_7_cython_6cygrpc_31ReceiveInitialMetadataOperation___cinit__(struct __pyx_obj_4grpc_7_cython_6cygrpc_ReceiveInitialMetadataOperation *__pyx_v_self, PyObject *__pyx_v_flags); /* proto */
static PyObject *__pyx_pf_4grpc_7_cython_6cygrpc_31ReceiveInitialMetadataOperation_2type(CYTHON_UNUSED struct __pyx_obj_4grpc_7_cython_6cygrpc_ReceiveInitialMetadataOperation *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_4grpc_7_cython_6cygrpc_31ReceiveInitialMetadataOperation_4initial_metadata(struct __pyx_obj_4grpc_7_cython_6cygrpc_ReceiveInitialMetadataOperation *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_4grpc_7_cython_6cygrpc_31ReceiveInitialMetadataOperation_6_flags___get__(struct __pyx_obj_4grpc_7_cython_6cygrpc_ReceiveInitialMetadataOperation *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_4grpc_7_cython_6cygrpc_31ReceiveInitialMetadataOperation_6__reduce_cython__(CYTHON_UNUSED struct __pyx_obj_4grpc_7_cython_6cygrpc_ReceiveInitialMetadataOperation *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_4grpc_7_cython_6cygrpc_31ReceiveInitialMetadataOperation_8__setstate_cython__(CYTHON_UNUSED struct __pyx_obj_4grpc_7_cython_6cygrpc_ReceiveInitialMetadataOperation *__pyx_v_self, CYTHON_UNUSED PyObject *__pyx_v___pyx_state); /* proto */
static int __pyx_pf_4grpc_7_cython_6cygrpc_23ReceiveMessageOperation___cinit__(struct __pyx_obj_4grpc_7_cython_6cygrpc_ReceiveMessageOperation *__pyx_v_self, PyObject *__pyx_v_flags); /* proto */
static PyObject *__pyx_pf_4grpc_7_cython_6cygrpc_23ReceiveMessageOperation_2type(CYTHON_UNUSED struct __pyx_obj_4grpc_7_cython_6cygrpc_ReceiveMessageOperation *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_4grpc_7_cython_6cygrpc_23ReceiveMessageOperation_4message(struct __pyx_obj_4grpc_7_cython_6cygrpc_ReceiveMessageOperation *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_4grpc_7_cython_6cygrpc_23ReceiveMessageOperation_6_flags___get__(struct __pyx_obj_4grpc_7_cython_6cygrpc_ReceiveMessageOperation *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_4grpc_7_cython_6cygrpc_23ReceiveMessageOperation_6__reduce_cython__(CYTHON_UNUSED struct __pyx_obj_4grpc_7_cython_6cygrpc_ReceiveMessageOperation *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_4grpc_7_cython_6cygrpc_23ReceiveMessageOperation_8__setstate_cython__(CYTHON_UNUSED struct __pyx_obj_4grpc_7_cython_6cygrpc_ReceiveMessageOperation *__pyx_v_self, CYTHON_UNUSED PyObject *__pyx_v___pyx_state); /* proto */
static int __pyx_pf_4grpc_7_cython_6cygrpc_30ReceiveStatusOnClientOperation___cinit__(struct __pyx_obj_4grpc_7_cython_6cygrpc_ReceiveStatusOnClientOperation *__pyx_v_self, PyObject *__pyx_v_flags); /* proto */
static PyObject *__pyx_pf_4grpc_7_cython_6cygrpc_30ReceiveStatusOnClientOperation_2type(CYTHON_UNUSED struct __pyx_obj_4grpc_7_cython_6cygrpc_ReceiveStatusOnClientOperation *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_4grpc_7_cython_6cygrpc_30ReceiveStatusOnClientOperation_4trailing_metadata(struct __pyx_obj_4grpc_7_cython_6cygrpc_ReceiveStatusOnClientOperation *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_4grpc_7_cython_6cygrpc_30ReceiveStatusOnClientOperation_6code(struct __pyx_obj_4grpc_7_cython_6cygrpc_ReceiveStatusOnClientOperation *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_4grpc_7_cython_6cygrpc_30ReceiveStatusOnClientOperation_8details(struct __pyx_obj_4grpc_7_cython_6cygrpc_ReceiveStatusOnClientOperation *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_4grpc_7_cython_6cygrpc_30ReceiveStatusOnClientOperation_10error_string(struct __pyx_obj_4grpc_7_cython_6cygrpc_ReceiveStatusOnClientOperation *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_4grpc_7_cython_6cygrpc_30ReceiveStatusOnClientOperation_6_flags___get__(struct __pyx_obj_4grpc_7_cython_6cygrpc_ReceiveStatusOnClientOperation *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_4grpc_7_cython_6cygrpc_30ReceiveStatusOnClientOperation_12__reduce_cython__(CYTHON_UNUSED struct __pyx_obj_4grpc_7_cython_6cygrpc_ReceiveStatusOnClientOperation *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_4grpc_7_cython_6cygrpc_30ReceiveStatusOnClientOperation_14__setstate_cython__(CYTHON_UNUSED struct __pyx_obj_4grpc_7_cython_6cygrpc_ReceiveStatusOnClientOperation *__pyx_v_self, CYTHON_UNUSED PyObject *__pyx_v___pyx_state); /* proto */
static int __pyx_pf_4grpc_7_cython_6cygrpc_29ReceiveCloseOnServerOperation___cinit__(struct __pyx_obj_4grpc_7_cython_6cygrpc_ReceiveCloseOnServerOperation *__pyx_v_self, PyObject *__pyx_v_flags); /* proto */
static PyObject *__pyx_pf_4grpc_7_cython_6cygrpc_29ReceiveCloseOnServerOperation_2type(CYTHON_UNUSED struct __pyx_obj_4grpc_7_cython_6cygrpc_ReceiveCloseOnServerOperation *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_4grpc_7_cython_6cygrpc_29ReceiveCloseOnServerOperation_4cancelled(struct __pyx_obj_4grpc_7_cython_6cygrpc_ReceiveCloseOnServerOperation *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_4grpc_7_cython_6cygrpc_29ReceiveCloseOnServerOperation_6_flags___get__(struct __pyx_obj_4grpc_7_cython_6cygrpc_ReceiveCloseOnServerOperation *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_4grpc_7_cython_6cygrpc_29ReceiveCloseOnServerOperation_6__reduce_cython__(CYTHON_UNUSED struct __pyx_obj_4grpc_7_cython_6cygrpc_ReceiveCloseOnServerOperation *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_4grpc_7_cython_6cygrpc_29ReceiveCloseOnServerOperation_8__setstate_cython__(CYTHON_UNUSED struct __pyx_obj_4grpc_7_cython_6cygrpc_ReceiveCloseOnServerOperation *__pyx_v_self, CYTHON_UNUSED PyObject *__pyx_v___pyx_state); /* proto */
static int __pyx_pf_4grpc_7_cython_6cygrpc_11CallDetails___cinit__(struct __pyx_obj_4grpc_7_cython_6cygrpc_CallDetails *__pyx_v_self); /* proto */
static void __pyx_pf_4grpc_7_cython_6cygrpc_11CallDetails_2__dealloc__(struct __pyx_obj_4grpc_7_cython_6cygrpc_CallDetails *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_4grpc_7_cython_6cygrpc_11CallDetails_6method___get__(struct __pyx_obj_4grpc_7_cython_6cygrpc_CallDetails *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_4grpc_7_cython_6cygrpc_11CallDetails_4host___get__(struct __pyx_obj_4grpc_7_cython_6cygrpc_CallDetails *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_4grpc_7_cython_6cygrpc_11CallDetails_8deadline___get__(struct __pyx_obj_4grpc_7_cython_6cygrpc_CallDetails *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_4grpc_7_cython_6cygrpc_11CallDetails_4__reduce_cython__(CYTHON_UNUSED struct __pyx_obj_4grpc_7_cython_6cygrpc_CallDetails *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_4grpc_7_cython_6cygrpc_11CallDetails_6__setstate_cython__(CYTHON_UNUSED struct __pyx_obj_4grpc_7_cython_6cygrpc_CallDetails *__pyx_v_self, CYTHON_UNUSED PyObject *__pyx_v___pyx_state); /* proto */
static int __pyx_pf_4grpc_7_cython_6cygrpc_17SslPemKeyCertPair___cinit__(struct __pyx_obj_4grpc_7_cython_6cygrpc_SslPemKeyCertPair *__pyx_v_self, PyObject *__pyx_v_private_key, PyObject *__pyx_v_certificate_chain); /* proto */
static PyObject *__pyx_pf_4grpc_7_cython_6cygrpc_17SslPemKeyCertPair_11private_key___get__(struct __pyx_obj_4grpc_7_cython_6cygrpc_SslPemKeyCertPair *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_4grpc_7_cython_6cygrpc_17SslPemKeyCertPair_17certificate_chain___get__(struct __pyx_obj_4grpc_7_cython_6cygrpc_SslPemKeyCertPair *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_4grpc_7_cython_6cygrpc_17SslPemKeyCertPair_2__reduce_cython__(CYTHON_UNUSED struct __pyx_obj_4grpc_7_cython_6cygrpc_SslPemKeyCertPair *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_4grpc_7_cython_6cygrpc_17SslPemKeyCertPair_4__setstate_cython__(CYTHON_UNUSED struct __pyx_obj_4grpc_7_cython_6cygrpc_SslPemKeyCertPair *__pyx_v_self, CYTHON_UNUSED PyObject *__pyx_v___pyx_state); /* proto */
static int __pyx_pf_4grpc_7_cython_6cygrpc_18CompressionOptions___cinit__(struct __pyx_obj_4grpc_7_cython_6cygrpc_CompressionOptions *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_4grpc_7_cython_6cygrpc_18CompressionOptions_2enable_algorithm(struct __pyx_obj_4grpc_7_cython_6cygrpc_CompressionOptions *__pyx_v_self, grpc_compression_algorithm __pyx_v_algorithm); /* proto */
static PyObject *__pyx_pf_4grpc_7_cython_6cygrpc_18CompressionOptions_4disable_algorithm(struct __pyx_obj_4grpc_7_cython_6cygrpc_CompressionOptions *__pyx_v_self, grpc_compression_algorithm __pyx_v_algorithm); /* proto */
static PyObject *__pyx_pf_4grpc_7_cython_6cygrpc_18CompressionOptions_6is_algorithm_enabled(struct __pyx_obj_4grpc_7_cython_6cygrpc_CompressionOptions *__pyx_v_self, grpc_compression_algorithm __pyx_v_algorithm); /* proto */
static PyObject *__pyx_pf_4grpc_7_cython_6cygrpc_18CompressionOptions_8to_channel_arg(struct __pyx_obj_4grpc_7_cython_6cygrpc_CompressionOptions *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_4grpc_7_cython_6cygrpc_18CompressionOptions_10__reduce_cython__(CYTHON_UNUSED struct __pyx_obj_4grpc_7_cython_6cygrpc_CompressionOptions *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_4grpc_7_cython_6cygrpc_18CompressionOptions_12__setstate_cython__(CYTHON_UNUSED struct __pyx_obj_4grpc_7_cython_6cygrpc_CompressionOptions *__pyx_v_self, CYTHON_UNUSED PyObject *__pyx_v___pyx_state); /* proto */
static PyObject *__pyx_pf_4grpc_7_cython_6cygrpc_44compression_algorithm_name(CYTHON_UNUSED PyObject *__pyx_self, grpc_compression_algorithm __pyx_v_algorithm); /* proto */
static PyObject *__pyx_pf_4grpc_7_cython_6cygrpc_46peer_identities(CYTHON_UNUSED PyObject *__pyx_self, struct __pyx_obj_4grpc_7_cython_6cygrpc_Call *__pyx_v_call); /* proto */
static PyObject *__pyx_pf_4grpc_7_cython_6cygrpc_48peer_identity_key(CYTHON_UNUSED PyObject *__pyx_self, struct __pyx_obj_4grpc_7_cython_6cygrpc_Call *__pyx_v_call); /* proto */
static PyObject *__pyx_pf_4grpc_7_cython_6cygrpc_50auth_context(CYTHON_UNUSED PyObject *__pyx_self, struct __pyx_obj_4grpc_7_cython_6cygrpc_Call *__pyx_v_call); /* proto */
static int __pyx_pf_4grpc_7_cython_6cygrpc_6Server___cinit__(struct __pyx_obj_4grpc_7_cython_6cygrpc_Server *__pyx_v_self, PyObject *__pyx_v_arguments, int __pyx_v_xds); /* proto */
static PyObject *__pyx_pf_4grpc_7_cython_6cygrpc_6Server_2request_call(struct __pyx_obj_4grpc_7_cython_6cygrpc_Server *__pyx_v_self, struct __pyx_obj_4grpc_7_cython_6cygrpc_CompletionQueue *__pyx_v_call_queue, struct __pyx_obj_4grpc_7_cython_6cygrpc_CompletionQueue *__pyx_v_server_queue, PyObject *__pyx_v_tag); /* proto */
static PyObject *__pyx_pf_4grpc_7_cython_6cygrpc_6Server_4register_completion_queue(struct __pyx_obj_4grpc_7_cython_6cygrpc_Server *__pyx_v_self, struct __pyx_obj_4grpc_7_cython_6cygrpc_CompletionQueue *__pyx_v_queue); /* proto */
static PyObject *__pyx_pf_4grpc_7_cython_6cygrpc_6Server_6start(struct __pyx_obj_4grpc_7_cython_6cygrpc_Server *__pyx_v_self, PyObject *__pyx_v_backup_queue); /* proto */
static PyObject *__pyx_pf_4grpc_7_cython_6cygrpc_6Server_8add_http2_port(struct __pyx_obj_4grpc_7_cython_6cygrpc_Server *__pyx_v_self, PyObject *__pyx_v_address, struct __pyx_obj_4grpc_7_cython_6cygrpc_ServerCredentials *__pyx_v_server_credentials); /* proto */
static PyObject *__pyx_pf_4grpc_7_cython_6cygrpc_6Server_10shutdown(struct __pyx_obj_4grpc_7_cython_6cygrpc_Server *__pyx_v_self, struct __pyx_obj_4grpc_7_cython_6cygrpc_CompletionQueue *__pyx_v_queue, PyObject *__pyx_v_tag); /* proto */
static PyObject *__pyx_pf_4grpc_7_cython_6cygrpc_6Server_12cancel_all_calls(struct __pyx_obj_4grpc_7_cython_6cygrpc_Server *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_4grpc_7_cython_6cygrpc_6Server_14destroy(struct __pyx_obj_4grpc_7_cython_6cygrpc_Server *__pyx_v_self); /* proto */
static void __pyx_pf_4grpc_7_cython_6cygrpc_6Server_16__dealloc__(struct __pyx_obj_4grpc_7_cython_6cygrpc_Server *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_4grpc_7_cython_6cygrpc_6Server_18__reduce_cython__(CYTHON_UNUSED struct __pyx_obj_4grpc_7_cython_6cygrpc_Server *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_4grpc_7_cython_6cygrpc_6Server_20__setstate_cython__(CYTHON_UNUSED struct __pyx_obj_4grpc_7_cython_6cygrpc_Server *__pyx_v_self, CYTHON_UNUSED PyObject *__pyx_v___pyx_state); /* proto */
static PyObject *__pyx_pf_4grpc_7_cython_6cygrpc_4_Tag___reduce_cython__(struct __pyx_obj_4grpc_7_cython_6cygrpc__Tag *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_4grpc_7_cython_6cygrpc_4_Tag_2__setstate_cython__(struct __pyx_obj_4grpc_7_cython_6cygrpc__Tag *__pyx_v_self, PyObject *__pyx_v___pyx_state); /* proto */
static int __pyx_pf_4grpc_7_cython_6cygrpc_16_ConnectivityTag___cinit__(struct __pyx_obj_4grpc_7_cython_6cygrpc__ConnectivityTag *__pyx_v_self, PyObject *__pyx_v_user_tag); /* proto */
static PyObject *__pyx_pf_4grpc_7_cython_6cygrpc_16_ConnectivityTag_9_user_tag___get__(struct __pyx_obj_4grpc_7_cython_6cygrpc__ConnectivityTag *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_4grpc_7_cython_6cygrpc_16_ConnectivityTag_2__reduce_cython__(CYTHON_UNUSED struct __pyx_obj_4grpc_7_cython_6cygrpc__ConnectivityTag *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_4grpc_7_cython_6cygrpc_16_ConnectivityTag_4__setstate_cython__(CYTHON_UNUSED struct __pyx_obj_4grpc_7_cython_6cygrpc__ConnectivityTag *__pyx_v_self, CYTHON_UNUSED PyObject *__pyx_v___pyx_state); /* proto */
static int __pyx_pf_4grpc_7_cython_6cygrpc_15_RequestCallTag___cinit__(struct __pyx_obj_4grpc_7_cython_6cygrpc__RequestCallTag *__pyx_v_self, PyObject *__pyx_v_user_tag); /* proto */
static PyObject *__pyx_pf_4grpc_7_cython_6cygrpc_15_RequestCallTag_9_user_tag___get__(struct __pyx_obj_4grpc_7_cython_6cygrpc__RequestCallTag *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_4grpc_7_cython_6cygrpc_15_RequestCallTag_2__reduce_cython__(CYTHON_UNUSED struct __pyx_obj_4grpc_7_cython_6cygrpc__RequestCallTag *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_4grpc_7_cython_6cygrpc_15_RequestCallTag_4__setstate_cython__(CYTHON_UNUSED struct __pyx_obj_4grpc_7_cython_6cygrpc__RequestCallTag *__pyx_v_self, CYTHON_UNUSED PyObject *__pyx_v___pyx_state); /* proto */
static int __pyx_pf_4grpc_7_cython_6cygrpc_18_BatchOperationTag___cinit__(struct __pyx_obj_4grpc_7_cython_6cygrpc__BatchOperationTag *__pyx_v_self, PyObject *__pyx_v_user_tag, PyObject *__pyx_v_operations, PyObject *__pyx_v_call); /* proto */
static PyObject *__pyx_pf_4grpc_7_cython_6cygrpc_18_BatchOperationTag_11_operations___get__(struct __pyx_obj_4grpc_7_cython_6cygrpc__BatchOperationTag *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_4grpc_7_cython_6cygrpc_18_BatchOperationTag_14_retained_call___get__(struct __pyx_obj_4grpc_7_cython_6cygrpc__BatchOperationTag *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_4grpc_7_cython_6cygrpc_18_BatchOperationTag_2__reduce_cython__(CYTHON_UNUSED struct __pyx_obj_4grpc_7_cython_6cygrpc__BatchOperationTag *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_4grpc_7_cython_6cygrpc_18_BatchOperationTag_4__setstate_cython__(CYTHON_UNUSED struct __pyx_obj_4grpc_7_cython_6cygrpc__BatchOperationTag *__pyx_v_self, CYTHON_UNUSED PyObject *__pyx_v___pyx_state); /* proto */
static int __pyx_pf_4grpc_7_cython_6cygrpc_18_ServerShutdownTag___cinit__(struct __pyx_obj_4grpc_7_cython_6cygrpc__ServerShutdownTag *__pyx_v_self, PyObject *__pyx_v_user_tag, PyObject *__pyx_v_shutting_down_server); /* proto */
static PyObject *__pyx_pf_4grpc_7_cython_6cygrpc_18_ServerShutdownTag_9_user_tag___get__(struct __pyx_obj_4grpc_7_cython_6cygrpc__ServerShutdownTag *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_4grpc_7_cython_6cygrpc_18_ServerShutdownTag_21_shutting_down_server___get__(struct __pyx_obj_4grpc_7_cython_6cygrpc__ServerShutdownTag *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_4grpc_7_cython_6cygrpc_18_ServerShutdownTag_2__reduce_cython__(CYTHON_UNUSED struct __pyx_obj_4grpc_7_cython_6cygrpc__ServerShutdownTag *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_4grpc_7_cython_6cygrpc_18_ServerShutdownTag_4__setstate_cython__(CYTHON_UNUSED struct __pyx_obj_4grpc_7_cython_6cygrpc__ServerShutdownTag *__pyx_v_self, CYTHON_UNUSED PyObject *__pyx_v___pyx_state); /* proto */
static PyObject *__pyx_pf_4grpc_7_cython_6cygrpc_52install_context_from_request_call_event(CYTHON_UNUSED PyObject *__pyx_self, CYTHON_UNUSED struct __pyx_obj_4grpc_7_cython_6cygrpc_RequestCallEvent *__pyx_v_event); /* proto */
static PyObject *__pyx_pf_4grpc_7_cython_6cygrpc_54uninstall_context(CYTHON_UNUSED PyObject *__pyx_self); /* proto */
static PyObject *__pyx_pf_4grpc_7_cython_6cygrpc_56build_census_context(CYTHON_UNUSED PyObject *__pyx_self); /* proto */
static PyObject *__pyx_pf_4grpc_7_cython_6cygrpc_13CensusContext___reduce_cython__(struct __pyx_obj_4grpc_7_cython_6cygrpc_CensusContext *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_4grpc_7_cython_6cygrpc_13CensusContext_2__setstate_cython__(struct __pyx_obj_4grpc_7_cython_6cygrpc_CensusContext *__pyx_v_self, PyObject *__pyx_v___pyx_state); /* proto */
static PyObject *__pyx_pf_4grpc_7_cython_6cygrpc_58set_census_context_on_call(CYTHON_UNUSED PyObject *__pyx_self, CYTHON_UNUSED struct __pyx_obj_4grpc_7_cython_6cygrpc__CallState *__pyx_v_call_state, CYTHON_UNUSED struct __pyx_obj_4grpc_7_cython_6cygrpc_CensusContext *__pyx_v_census_ctx); /* proto */
static PyObject *__pyx_pf_4grpc_7_cython_6cygrpc_60get_deadline_from_context(CYTHON_UNUSED PyObject *__pyx_self); /* proto */
static PyObject *__pyx_pf_4grpc_7_cython_6cygrpc_20tuples_to_resolvaddr_genexpr(PyObject *__pyx_self); /* proto */
static PyObject *__pyx_pf_4grpc_7_cython_6cygrpc_62_spawn_greenlet(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__pyx_v_args); /* proto */
static int __pyx_pf_4grpc_7_cython_6cygrpc_13SocketWrapper___cinit__(struct __pyx_obj_4grpc_7_cython_6cygrpc_SocketWrapper *__pyx_v_self); /* proto */
static void __pyx_pf_4grpc_7_cython_6cygrpc_13SocketWrapper_2__dealloc__(CYTHON_UNUSED struct __pyx_obj_4grpc_7_cython_6cygrpc_SocketWrapper *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_4grpc_7_cython_6cygrpc_13SocketWrapper_4__reduce_cython__(CYTHON_UNUSED struct __pyx_obj_4grpc_7_cython_6cygrpc_SocketWrapper *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_4grpc_7_cython_6cygrpc_13SocketWrapper_6__setstate_cython__(CYTHON_UNUSED struct __pyx_obj_4grpc_7_cython_6cygrpc_SocketWrapper *__pyx_v_self, CYTHON_UNUSED PyObject *__pyx_v___pyx_state); /* proto */
static PyObject *__pyx_pf_4grpc_7_cython_6cygrpc_64socket_connect_async(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__pyx_v_socket_wrapper, PyObject *__pyx_v_addr_tuple); /* proto */
static PyObject *__pyx_pf_4grpc_7_cython_6cygrpc_66socket_sendmsg(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__pyx_v_socket, PyObject *__pyx_v_write_bytes); /* proto */
static PyObject *__pyx_pf_4grpc_7_cython_6cygrpc_68socket_write_async(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__pyx_v_socket_wrapper, PyObject *__pyx_v_write_bytes); /* proto */
static PyObject *__pyx_pf_4grpc_7_cython_6cygrpc_70socket_read_async(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__pyx_v_socket_wrapper); /* proto */
static PyObject *__pyx_pf_4grpc_7_cython_6cygrpc_72applysockopts(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__pyx_v_s); /* proto */
static PyObject *__pyx_pf_4grpc_7_cython_6cygrpc_74socket_accept_async(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__pyx_v_s); /* proto */
static int __pyx_pf_4grpc_7_cython_6cygrpc_14ResolveWrapper___cinit__(struct __pyx_obj_4grpc_7_cython_6cygrpc_ResolveWrapper *__pyx_v_self); /* proto */
static void __pyx_pf_4grpc_7_cython_6cygrpc_14ResolveWrapper_2__dealloc__(CYTHON_UNUSED struct __pyx_obj_4grpc_7_cython_6cygrpc_ResolveWrapper *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_4grpc_7_cython_6cygrpc_14ResolveWrapper_4__reduce_cython__(CYTHON_UNUSED struct __pyx_obj_4grpc_7_cython_6cygrpc_ResolveWrapper *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_4grpc_7_cython_6cygrpc_14ResolveWrapper_6__setstate_cython__(CYTHON_UNUSED struct __pyx_obj_4grpc_7_cython_6cygrpc_ResolveWrapper *__pyx_v_self, CYTHON_UNUSED PyObject *__pyx_v___pyx_state); /* proto */
static PyObject *__pyx_pf_4grpc_7_cython_6cygrpc_76socket_resolve_async_python(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__pyx_v_resolve_wrapper); /* proto */
static int __pyx_pf_4grpc_7_cython_6cygrpc_12TimerWrapper___cinit__(struct __pyx_obj_4grpc_7_cython_6cygrpc_TimerWrapper *__pyx_v_self, PyObject *__pyx_v_deadline); /* proto */
static PyObject *__pyx_pf_4grpc_7_cython_6cygrpc_12TimerWrapper_2start(struct __pyx_obj_4grpc_7_cython_6cygrpc_TimerWrapper *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_4grpc_7_cython_6cygrpc_12TimerWrapper_4on_finish(struct __pyx_obj_4grpc_7_cython_6cygrpc_TimerWrapper *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_4grpc_7_cython_6cygrpc_12TimerWrapper_6stop(struct __pyx_obj_4grpc_7_cython_6cygrpc_TimerWrapper *__pyx_v_self); /* proto */
static void __pyx_pf_4grpc_7_cython_6cygrpc_12TimerWrapper_8__dealloc__(CYTHON_UNUSED struct __pyx_obj_4grpc_7_cython_6cygrpc_TimerWrapper *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_4grpc_7_cython_6cygrpc_12TimerWrapper_10__reduce_cython__(CYTHON_UNUSED struct __pyx_obj_4grpc_7_cython_6cygrpc_TimerWrapper *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_4grpc_7_cython_6cygrpc_12TimerWrapper_12__setstate_cython__(CYTHON_UNUSED struct __pyx_obj_4grpc_7_cython_6cygrpc_TimerWrapper *__pyx_v_self, CYTHON_UNUSED PyObject *__pyx_v___pyx_state); /* proto */
static PyObject *__pyx_pf_4grpc_7_cython_6cygrpc_78_run_loop(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__pyx_v_timeout_ms); /* proto */
static PyObject *__pyx_pf_4grpc_7_cython_6cygrpc_16init_grpc_gevent_cb_func(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__pyx_v_cb, PyObject *__pyx_v_args); /* proto */
static PyObject *__pyx_pf_4grpc_7_cython_6cygrpc_80init_grpc_gevent(CYTHON_UNUSED PyObject *__pyx_self); /* proto */
static PyObject *__pyx_pf_4grpc_7_cython_6cygrpc_82_contextvars_supported(CYTHON_UNUSED PyObject *__pyx_self); /* proto */
static PyObject *__pyx_pf_4grpc_7_cython_6cygrpc_84_run_with_context(CYTHON_UNUSED PyObject *__pyx_self, CYTHON_UNUSED PyObject *__pyx_v_target); /* proto */
static PyObject *__pyx_pf_4grpc_7_cython_6cygrpc_17_run_with_context__run(PyObject *__pyx_self, PyObject *__pyx_v_args); /* proto */
static PyObject *__pyx_pf_4grpc_7_cython_6cygrpc_86_run_with_context(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__pyx_v_target); /* proto */
static PyObject *__pyx_pf_4grpc_7_cython_6cygrpc_17_run_with_context_2_run(PyObject *__pyx_self, PyObject *__pyx_v_args); /* proto */
static PyObject *__pyx_pf_4grpc_7_cython_6cygrpc_88_run_with_context(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__pyx_v_target); /* proto */
static PyObject *__pyx_pf_4grpc_7_cython_6cygrpc_90fork_handlers_and_grpc_init(CYTHON_UNUSED PyObject *__pyx_self); /* proto */
static PyObject *__pyx_pf_4grpc_7_cython_6cygrpc_17ForkManagedThread_8__init___managed_target(PyObject *__pyx_self, PyObject *__pyx_v_args); /* proto */
static PyObject *__pyx_pf_4grpc_7_cython_6cygrpc_17ForkManagedThread___init__(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__pyx_v_self, PyObject *__pyx_v_target, PyObject *__pyx_v_args); /* proto */
static PyObject *__pyx_pf_4grpc_7_cython_6cygrpc_17ForkManagedThread_2setDaemon(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__pyx_v_self, PyObject *__pyx_v_daemonic); /* proto */
static PyObject *__pyx_pf_4grpc_7_cython_6cygrpc_17ForkManagedThread_4start(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_4grpc_7_cython_6cygrpc_17ForkManagedThread_6join(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_4grpc_7_cython_6cygrpc_92block_if_fork_in_progress(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__pyx_v_postfork_state_to_reset); /* proto */
static PyObject *__pyx_pf_4grpc_7_cython_6cygrpc_94enter_user_request_generator(CYTHON_UNUSED PyObject *__pyx_self); /* proto */
static PyObject *__pyx_pf_4grpc_7_cython_6cygrpc_96return_from_user_request_generator(CYTHON_UNUSED PyObject *__pyx_self); /* proto */
static PyObject *__pyx_pf_4grpc_7_cython_6cygrpc_98get_fork_epoch(CYTHON_UNUSED PyObject *__pyx_self); /* proto */
static PyObject *__pyx_pf_4grpc_7_cython_6cygrpc_100is_fork_support_enabled(CYTHON_UNUSED PyObject *__pyx_self); /* proto */
static PyObject *__pyx_pf_4grpc_7_cython_6cygrpc_102fork_register_channel(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__pyx_v_channel); /* proto */
static PyObject *__pyx_pf_4grpc_7_cython_6cygrpc_104fork_unregister_channel(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__pyx_v_channel); /* proto */
static PyObject *__pyx_pf_4grpc_7_cython_6cygrpc_18_ActiveThreadCount___init__(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_4grpc_7_cython_6cygrpc_18_ActiveThreadCount_2increment(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_4grpc_7_cython_6cygrpc_18_ActiveThreadCount_4decrement(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_4grpc_7_cython_6cygrpc_18_ActiveThreadCount_6await_zero_threads(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__pyx_v_self, PyObject *__pyx_v_timeout_secs); /* proto */
static PyObject *__pyx_pf_4grpc_7_cython_6cygrpc_10_ForkState___init__(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_4grpc_7_cython_6cygrpc_4_EOF___bool__(CYTHON_UNUSED PyObject *__pyx_self, CYTHON_UNUSED PyObject *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_4grpc_7_cython_6cygrpc_4_EOF_2__len__(CYTHON_UNUSED PyObject *__pyx_self, CYTHON_UNUSED PyObject *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_4grpc_7_cython_6cygrpc_4_EOF_4_repr(CYTHON_UNUSED PyObject *__pyx_self, CYTHON_UNUSED PyObject *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_4grpc_7_cython_6cygrpc_4_EOF_6__repr__(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_4grpc_7_cython_6cygrpc_4_EOF_8__str__(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_4grpc_7_cython_6cygrpc_106schedule_coro_threadsafe(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__pyx_v_coro, PyObject *__pyx_v_loop); /* proto */
static PyObject *__pyx_pf_4grpc_7_cython_6cygrpc_108async_generator_to_generator(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__pyx_v_agen, PyObject *__pyx_v_loop); /* proto */
static PyObject *__pyx_pf_4grpc_7_cython_6cygrpc_111generator_to_async_generator(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__pyx_v_gen, PyObject *__pyx_v_loop, PyObject *__pyx_v_thread_pool); /* proto */
static PyObject *__pyx_pf_4grpc_7_cython_6cygrpc_28generator_to_async_generator_yield_to_queue(PyObject *__pyx_self); /* proto */
static PyObject *__pyx_pf_4grpc_7_cython_6cygrpc_114get_working_loop(CYTHON_UNUSED PyObject *__pyx_self); /* proto */
static PyObject *__pyx_pf_4grpc_7_cython_6cygrpc_116get_working_loop(CYTHON_UNUSED PyObject *__pyx_self); /* proto */
static int __pyx_pf_4grpc_7_cython_6cygrpc_12AioRpcStatus___cinit__(struct __pyx_obj_4grpc_7_cython_6cygrpc_AioRpcStatus *__pyx_v_self, grpc_status_code __pyx_v_code, PyObject *__pyx_v_details, PyObject *__pyx_v_trailing_metadata, PyObject *__pyx_v_debug_error_string); /* proto */
static PyObject *__pyx_pf_4grpc_7_cython_6cygrpc_12AioRpcStatus_2code(struct __pyx_obj_4grpc_7_cython_6cygrpc_AioRpcStatus *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_4grpc_7_cython_6cygrpc_12AioRpcStatus_4details(struct __pyx_obj_4grpc_7_cython_6cygrpc_AioRpcStatus *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_4grpc_7_cython_6cygrpc_12AioRpcStatus_6trailing_metadata(struct __pyx_obj_4grpc_7_cython_6cygrpc_AioRpcStatus *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_4grpc_7_cython_6cygrpc_12AioRpcStatus_8debug_error_string(struct __pyx_obj_4grpc_7_cython_6cygrpc_AioRpcStatus *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_4grpc_7_cython_6cygrpc_12AioRpcStatus_5_code___get__(struct __pyx_obj_4grpc_7_cython_6cygrpc_AioRpcStatus *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_4grpc_7_cython_6cygrpc_12AioRpcStatus_8_details___get__(struct __pyx_obj_4grpc_7_cython_6cygrpc_AioRpcStatus *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_4grpc_7_cython_6cygrpc_12AioRpcStatus_18_trailing_metadata___get__(struct __pyx_obj_4grpc_7_cython_6cygrpc_AioRpcStatus *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_4grpc_7_cython_6cygrpc_12AioRpcStatus_19_debug_error_string___get__(struct __pyx_obj_4grpc_7_cython_6cygrpc_AioRpcStatus *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_4grpc_7_cython_6cygrpc_12AioRpcStatus_10__reduce_cython__(CYTHON_UNUSED struct __pyx_obj_4grpc_7_cython_6cygrpc_AioRpcStatus *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_4grpc_7_cython_6cygrpc_12AioRpcStatus_12__setstate_cython__(CYTHON_UNUSED struct __pyx_obj_4grpc_7_cython_6cygrpc_AioRpcStatus *__pyx_v_self, CYTHON_UNUSED PyObject *__pyx_v___pyx_state); /* proto */
static PyObject *__pyx_pf_4grpc_7_cython_6cygrpc_118_handle_callback_wrapper(CYTHON_UNUSED PyObject *__pyx_self, struct __pyx_obj_4grpc_7_cython_6cygrpc_CallbackWrapper *__pyx_v_callback_wrapper, int __pyx_v_success); /* proto */
static PyObject *__pyx_pf_4grpc_7_cython_6cygrpc_19BaseCompletionQueue___reduce_cython__(CYTHON_UNUSED struct __pyx_obj_4grpc_7_cython_6cygrpc_BaseCompletionQueue *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_4grpc_7_cython_6cygrpc_19BaseCompletionQueue_2__setstate_cython__(CYTHON_UNUSED struct __pyx_obj_4grpc_7_cython_6cygrpc_BaseCompletionQueue *__pyx_v_self, CYTHON_UNUSED PyObject *__pyx_v___pyx_state); /* proto */
static int __pyx_pf_4grpc_7_cython_6cygrpc_15_BoundEventLoop___cinit__(struct __pyx_obj_4grpc_7_cython_6cygrpc__BoundEventLoop *__pyx_v_self, PyObject *__pyx_v_loop, PyObject *__pyx_v_read_socket, PyObject *__pyx_v_handler); /* proto */
static PyObject *__pyx_pf_4grpc_7_cython_6cygrpc_15_BoundEventLoop_2close(struct __pyx_obj_4grpc_7_cython_6cygrpc__BoundEventLoop *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_4grpc_7_cython_6cygrpc_15_BoundEventLoop_4loop___get__(struct __pyx_obj_4grpc_7_cython_6cygrpc__BoundEventLoop *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_4grpc_7_cython_6cygrpc_15_BoundEventLoop_11read_socket___get__(struct __pyx_obj_4grpc_7_cython_6cygrpc__BoundEventLoop *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_4grpc_7_cython_6cygrpc_15_BoundEventLoop_4__reduce_cython__(CYTHON_UNUSED struct __pyx_obj_4grpc_7_cython_6cygrpc__BoundEventLoop *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_4grpc_7_cython_6cygrpc_15_BoundEventLoop_6__setstate_cython__(CYTHON_UNUSED struct __pyx_obj_4grpc_7_cython_6cygrpc__BoundEventLoop *__pyx_v_self, CYTHON_UNUSED PyObject *__pyx_v___pyx_state); /* proto */
static int __pyx_pf_4grpc_7_cython_6cygrpc_21PollerCompletionQueue___cinit__(struct __pyx_obj_4grpc_7_cython_6cygrpc_PollerCompletionQueue *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_4grpc_7_cython_6cygrpc_21PollerCompletionQueue_2bind_loop(struct __pyx_obj_4grpc_7_cython_6cygrpc_PollerCompletionQueue *__pyx_v_self, PyObject *__pyx_v_loop); /* proto */
static PyObject *__pyx_pf_4grpc_7_cython_6cygrpc_21PollerCompletionQueue_4_poll_wrapper(struct __pyx_obj_4grpc_7_cython_6cygrpc_PollerCompletionQueue *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_4grpc_7_cython_6cygrpc_21PollerCompletionQueue_6_handle_events(struct __pyx_obj_4grpc_7_cython_6cygrpc_PollerCompletionQueue *__pyx_v_self, PyObject *__pyx_v_context_loop); /* proto */
static PyObject *__pyx_pf_4grpc_7_cython_6cygrpc_21PollerCompletionQueue_8__reduce_cython__(CYTHON_UNUSED struct __pyx_obj_4grpc_7_cython_6cygrpc_PollerCompletionQueue *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_4grpc_7_cython_6cygrpc_21PollerCompletionQueue_10__setstate_cython__(CYTHON_UNUSED struct __pyx_obj_4grpc_7_cython_6cygrpc_PollerCompletionQueue *__pyx_v_self, CYTHON_UNUSED PyObject *__pyx_v___pyx_state); /* proto */
static int __pyx_pf_4grpc_7_cython_6cygrpc_22CallbackFailureHandler___cinit__(struct __pyx_obj_4grpc_7_cython_6cygrpc_CallbackFailureHandler *__pyx_v_self, PyObject *__pyx_v_core_function_name, PyObject *__pyx_v_error_details, PyObject *__pyx_v_exception_type); /* proto */
static PyObject *__pyx_pf_4grpc_7_cython_6cygrpc_22CallbackFailureHandler_2__reduce_cython__(CYTHON_UNUSED struct __pyx_obj_4grpc_7_cython_6cygrpc_CallbackFailureHandler *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_4grpc_7_cython_6cygrpc_22CallbackFailureHandler_4__setstate_cython__(CYTHON_UNUSED struct __pyx_obj_4grpc_7_cython_6cygrpc_CallbackFailureHandler *__pyx_v_self, CYTHON_UNUSED PyObject *__pyx_v___pyx_state); /* proto */
static int __pyx_pf_4grpc_7_cython_6cygrpc_15CallbackWrapper___cinit__(struct __pyx_obj_4grpc_7_cython_6cygrpc_CallbackWrapper *__pyx_v_self, PyObject *__pyx_v_future, PyObject *__pyx_v_loop, struct __pyx_obj_4grpc_7_cython_6cygrpc_CallbackFailureHandler *__pyx_v_failure_handler); /* proto */
static PyObject *__pyx_pf_4grpc_7_cython_6cygrpc_15CallbackWrapper_2__reduce_cython__(CYTHON_UNUSED struct __pyx_obj_4grpc_7_cython_6cygrpc_CallbackWrapper *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_4grpc_7_cython_6cygrpc_15CallbackWrapper_4__setstate_cython__(CYTHON_UNUSED struct __pyx_obj_4grpc_7_cython_6cygrpc_CallbackWrapper *__pyx_v_self, CYTHON_UNUSED PyObject *__pyx_v___pyx_state); /* proto */
static PyObject *__pyx_pf_4grpc_7_cython_6cygrpc_120execute_batch(CYTHON_UNUSED PyObject *__pyx_self, struct __pyx_obj_4grpc_7_cython_6cygrpc_GrpcCallWrapper *__pyx_v_grpc_call_wrapper, PyObject *__pyx_v_operations, PyObject *__pyx_v_loop); /* proto */
static PyObject *__pyx_pf_4grpc_7_cython_6cygrpc_123_receive_message(CYTHON_UNUSED PyObject *__pyx_self, struct __pyx_obj_4grpc_7_cython_6cygrpc_GrpcCallWrapper *__pyx_v_grpc_call_wrapper, PyObject *__pyx_v_loop); /* proto */
static PyObject *__pyx_pf_4grpc_7_cython_6cygrpc_126_send_message(CYTHON_UNUSED PyObject *__pyx_self, struct __pyx_obj_4grpc_7_cython_6cygrpc_GrpcCallWrapper *__pyx_v_grpc_call_wrapper, PyObject *__pyx_v_message, struct __pyx_obj_4grpc_7_cython_6cygrpc_Operation *__pyx_v_send_initial_metadata_op, int __pyx_v_write_flag, PyObject *__pyx_v_loop); /* proto */
static PyObject *__pyx_pf_4grpc_7_cython_6cygrpc_129_send_initial_metadata(CYTHON_UNUSED PyObject *__pyx_self, struct __pyx_obj_4grpc_7_cython_6cygrpc_GrpcCallWrapper *__pyx_v_grpc_call_wrapper, PyObject *__pyx_v_metadata, int __pyx_v_flags, PyObject *__pyx_v_loop); /* proto */
static PyObject *__pyx_pf_4grpc_7_cython_6cygrpc_132_receive_initial_metadata(CYTHON_UNUSED PyObject *__pyx_self, struct __pyx_obj_4grpc_7_cython_6cygrpc_GrpcCallWrapper *__pyx_v_grpc_call_wrapper, PyObject *__pyx_v_loop); /* proto */
static PyObject *__pyx_pf_4grpc_7_cython_6cygrpc_135_send_error_status_from_server(CYTHON_UNUSED PyObject *__pyx_self, struct __pyx_obj_4grpc_7_cython_6cygrpc_GrpcCallWrapper *__pyx_v_grpc_call_wrapper, grpc_status_code __pyx_v_code, PyObject *__pyx_v_details, PyObject *__pyx_v_trailing_metadata, struct __pyx_obj_4grpc_7_cython_6cygrpc_Operation *__pyx_v_send_initial_metadata_op, PyObject *__pyx_v_loop); /* proto */
static int __pyx_pf_4grpc_7_cython_6cygrpc_9_AioState___cinit__(struct __pyx_obj_4grpc_7_cython_6cygrpc__AioState *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_4grpc_7_cython_6cygrpc_9_AioState_2__reduce_cython__(CYTHON_UNUSED struct __pyx_obj_4grpc_7_cython_6cygrpc__AioState *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_4grpc_7_cython_6cygrpc_9_AioState_4__setstate_cython__(CYTHON_UNUSED struct __pyx_obj_4grpc_7_cython_6cygrpc__AioState *__pyx_v_self, CYTHON_UNUSED PyObject *__pyx_v___pyx_state); /* proto */
static PyObject *__pyx_pf_4grpc_7_cython_6cygrpc_138_grpc_shutdown_wrapper(CYTHON_UNUSED PyObject *__pyx_self, CYTHON_UNUSED PyObject *__pyx_v__); /* proto */
static PyObject *__pyx_pf_4grpc_7_cython_6cygrpc_140init_grpc_aio(CYTHON_UNUSED PyObject *__pyx_self); /* proto */
static PyObject *__pyx_pf_4grpc_7_cython_6cygrpc_142shutdown_grpc_aio(CYTHON_UNUSED PyObject *__pyx_self); /* proto */
static int __pyx_pf_4grpc_7_cython_6cygrpc_8_AioCall___cinit__(struct __pyx_obj_4grpc_7_cython_6cygrpc__AioCall *__pyx_v_self, struct __pyx_obj_4grpc_7_cython_6cygrpc_AioChannel *__pyx_v_channel, PyObject *__pyx_v_deadline, PyObject *__pyx_v_method, struct __pyx_obj_4grpc_7_cython_6cygrpc_CallCredentials *__pyx_v_call_credentials, PyObject *__pyx_v_wait_for_ready); /* proto */
static void __pyx_pf_4grpc_7_cython_6cygrpc_8_AioCall_2__dealloc__(struct __pyx_obj_4grpc_7_cython_6cygrpc__AioCall *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_4grpc_7_cython_6cygrpc_8_AioCall_4_repr(struct __pyx_obj_4grpc_7_cython_6cygrpc__AioCall *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_4grpc_7_cython_6cygrpc_8_AioCall_6__repr__(struct __pyx_obj_4grpc_7_cython_6cygrpc__AioCall *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_4grpc_7_cython_6cygrpc_8_AioCall_8__str__(struct __pyx_obj_4grpc_7_cython_6cygrpc__AioCall *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_4grpc_7_cython_6cygrpc_8_AioCall_10add_done_callback(struct __pyx_obj_4grpc_7_cython_6cygrpc__AioCall *__pyx_v_self, PyObject *__pyx_v_callback); /* proto */
static PyObject *__pyx_pf_4grpc_7_cython_6cygrpc_8_AioCall_12time_remaining(struct __pyx_obj_4grpc_7_cython_6cygrpc__AioCall *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_4grpc_7_cython_6cygrpc_8_AioCall_14cancel(struct __pyx_obj_4grpc_7_cython_6cygrpc__AioCall *__pyx_v_self, PyObject *__pyx_v_details); /* proto */
static PyObject *__pyx_pf_4grpc_7_cython_6cygrpc_8_AioCall_16done(struct __pyx_obj_4grpc_7_cython_6cygrpc__AioCall *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_4grpc_7_cython_6cygrpc_8_AioCall_18cancelled(struct __pyx_obj_4grpc_7_cython_6cygrpc__AioCall *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_4grpc_7_cython_6cygrpc_8_AioCall_20status(struct __pyx_obj_4grpc_7_cython_6cygrpc__AioCall *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_4grpc_7_cython_6cygrpc_8_AioCall_23is_ok(struct __pyx_obj_4grpc_7_cython_6cygrpc__AioCall *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_4grpc_7_cython_6cygrpc_8_AioCall_25initial_metadata(struct __pyx_obj_4grpc_7_cython_6cygrpc__AioCall *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_4grpc_7_cython_6cygrpc_8_AioCall_28is_locally_cancelled(struct __pyx_obj_4grpc_7_cython_6cygrpc__AioCall *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_4grpc_7_cython_6cygrpc_8_AioCall_30unary_unary(struct __pyx_obj_4grpc_7_cython_6cygrpc__AioCall *__pyx_v_self, PyObject *__pyx_v_request, PyObject *__pyx_v_outbound_initial_metadata); /* proto */
static PyObject *__pyx_pf_4grpc_7_cython_6cygrpc_8_AioCall_33_handle_status_once_received(struct __pyx_obj_4grpc_7_cython_6cygrpc__AioCall *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_4grpc_7_cython_6cygrpc_8_AioCall_36receive_serialized_message(struct __pyx_obj_4grpc_7_cython_6cygrpc__AioCall *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_4grpc_7_cython_6cygrpc_8_AioCall_39send_serialized_message(struct __pyx_obj_4grpc_7_cython_6cygrpc__AioCall *__pyx_v_self, PyObject *__pyx_v_message); /* proto */
static PyObject *__pyx_pf_4grpc_7_cython_6cygrpc_8_AioCall_42send_receive_close(struct __pyx_obj_4grpc_7_cython_6cygrpc__AioCall *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_4grpc_7_cython_6cygrpc_8_AioCall_45initiate_unary_stream(struct __pyx_obj_4grpc_7_cython_6cygrpc__AioCall *__pyx_v_self, PyObject *__pyx_v_request, PyObject *__pyx_v_outbound_initial_metadata); /* proto */
static PyObject *__pyx_pf_4grpc_7_cython_6cygrpc_8_AioCall_48stream_unary(struct __pyx_obj_4grpc_7_cython_6cygrpc__AioCall *__pyx_v_self, PyObject *__pyx_v_outbound_initial_metadata, PyObject *__pyx_v_metadata_sent_observer); /* proto */
static PyObject *__pyx_pf_4grpc_7_cython_6cygrpc_8_AioCall_51initiate_stream_stream(struct __pyx_obj_4grpc_7_cython_6cygrpc__AioCall *__pyx_v_self, PyObject *__pyx_v_outbound_initial_metadata, PyObject *__pyx_v_metadata_sent_observer); /* proto */
static PyObject *__pyx_pf_4grpc_7_cython_6cygrpc_8_AioCall_8_channel___get__(struct __pyx_obj_4grpc_7_cython_6cygrpc__AioCall *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_4grpc_7_cython_6cygrpc_8_AioCall_7_status___get__(struct __pyx_obj_4grpc_7_cython_6cygrpc__AioCall *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_4grpc_7_cython_6cygrpc_8_AioCall_17_initial_metadata___get__(struct __pyx_obj_4grpc_7_cython_6cygrpc__AioCall *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_4grpc_7_cython_6cygrpc_8_AioCall_54__reduce_cython__(CYTHON_UNUSED struct __pyx_obj_4grpc_7_cython_6cygrpc__AioCall *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_4grpc_7_cython_6cygrpc_8_AioCall_56__setstate_cython__(CYTHON_UNUSED struct __pyx_obj_4grpc_7_cython_6cygrpc__AioCall *__pyx_v_self, CYTHON_UNUSED PyObject *__pyx_v___pyx_state); /* proto */
static int __pyx_pf_4grpc_7_cython_6cygrpc_10AioChannel___cinit__(struct __pyx_obj_4grpc_7_cython_6cygrpc_AioChannel *__pyx_v_self, PyObject *__pyx_v_target, PyObject *__pyx_v_options, struct __pyx_obj_4grpc_7_cython_6cygrpc_ChannelCredentials *__pyx_v_credentials, PyObject *__pyx_v_loop); /* proto */
static void __pyx_pf_4grpc_7_cython_6cygrpc_10AioChannel_2__dealloc__(CYTHON_UNUSED struct __pyx_obj_4grpc_7_cython_6cygrpc_AioChannel *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_4grpc_7_cython_6cygrpc_10AioChannel_4__repr__(struct __pyx_obj_4grpc_7_cython_6cygrpc_AioChannel *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_4grpc_7_cython_6cygrpc_10AioChannel_6check_connectivity_state(struct __pyx_obj_4grpc_7_cython_6cygrpc_AioChannel *__pyx_v_self, int __pyx_v_try_to_connect); /* proto */
static PyObject *__pyx_pf_4grpc_7_cython_6cygrpc_10AioChannel_8watch_connectivity_state(struct __pyx_obj_4grpc_7_cython_6cygrpc_AioChannel *__pyx_v_self, grpc_connectivity_state __pyx_v_last_observed_state, PyObject *__pyx_v_deadline); /* proto */
static PyObject *__pyx_pf_4grpc_7_cython_6cygrpc_10AioChannel_11closing(struct __pyx_obj_4grpc_7_cython_6cygrpc_AioChannel *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_4grpc_7_cython_6cygrpc_10AioChannel_13close(struct __pyx_obj_4grpc_7_cython_6cygrpc_AioChannel *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_4grpc_7_cython_6cygrpc_10AioChannel_15closed(struct __pyx_obj_4grpc_7_cython_6cygrpc_AioChannel *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_4grpc_7_cython_6cygrpc_10AioChannel_17call(struct __pyx_obj_4grpc_7_cython_6cygrpc_AioChannel *__pyx_v_self, PyObject *__pyx_v_method, PyObject *__pyx_v_deadline, PyObject *__pyx_v_python_call_credentials, PyObject *__pyx_v_wait_for_ready); /* proto */
static PyObject *__pyx_pf_4grpc_7_cython_6cygrpc_10AioChannel_19__reduce_cython__(CYTHON_UNUSED struct __pyx_obj_4grpc_7_cython_6cygrpc_AioChannel *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_4grpc_7_cython_6cygrpc_10AioChannel_21__setstate_cython__(CYTHON_UNUSED struct __pyx_obj_4grpc_7_cython_6cygrpc_AioChannel *__pyx_v_self, CYTHON_UNUSED PyObject *__pyx_v___pyx_state); /* proto */
static int __pyx_pf_4grpc_7_cython_6cygrpc_19_HandlerCallDetails___cinit__(struct __pyx_obj_4grpc_7_cython_6cygrpc__HandlerCallDetails *__pyx_v_self, PyObject *__pyx_v_method, PyObject *__pyx_v_invocation_metadata); /* proto */
static PyObject *__pyx_pf_4grpc_7_cython_6cygrpc_19_HandlerCallDetails_6method___get__(struct __pyx_obj_4grpc_7_cython_6cygrpc__HandlerCallDetails *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_4grpc_7_cython_6cygrpc_19_HandlerCallDetails_19invocation_metadata___get__(struct __pyx_obj_4grpc_7_cython_6cygrpc__HandlerCallDetails *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_4grpc_7_cython_6cygrpc_19_HandlerCallDetails_2__reduce_cython__(CYTHON_UNUSED struct __pyx_obj_4grpc_7_cython_6cygrpc__HandlerCallDetails *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_4grpc_7_cython_6cygrpc_19_HandlerCallDetails_4__setstate_cython__(CYTHON_UNUSED struct __pyx_obj_4grpc_7_cython_6cygrpc__HandlerCallDetails *__pyx_v_self, CYTHON_UNUSED PyObject *__pyx_v___pyx_state); /* proto */
static int __pyx_pf_4grpc_7_cython_6cygrpc_8RPCState___cinit__(struct __pyx_obj_4grpc_7_cython_6cygrpc_RPCState *__pyx_v_self, struct __pyx_obj_4grpc_7_cython_6cygrpc_AioServer *__pyx_v_server); /* proto */
static void __pyx_pf_4grpc_7_cython_6cygrpc_8RPCState_2__dealloc__(struct __pyx_obj_4grpc_7_cython_6cygrpc_RPCState *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_4grpc_7_cython_6cygrpc_8RPCState_4__reduce_cython__(CYTHON_UNUSED struct __pyx_obj_4grpc_7_cython_6cygrpc_RPCState *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_4grpc_7_cython_6cygrpc_8RPCState_6__setstate_cython__(CYTHON_UNUSED struct __pyx_obj_4grpc_7_cython_6cygrpc_RPCState *__pyx_v_self, CYTHON_UNUSED PyObject *__pyx_v___pyx_state); /* proto */
static int __pyx_pf_4grpc_7_cython_6cygrpc_16_ServicerContext___cinit__(struct __pyx_obj_4grpc_7_cython_6cygrpc__ServicerContext *__pyx_v_self, struct __pyx_obj_4grpc_7_cython_6cygrpc_RPCState *__pyx_v_rpc_state, PyObject *__pyx_v_request_deserializer, PyObject *__pyx_v_response_serializer, PyObject *__pyx_v_loop); /* proto */
static PyObject *__pyx_pf_4grpc_7_cython_6cygrpc_16_ServicerContext_2read(struct __pyx_obj_4grpc_7_cython_6cygrpc__ServicerContext *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_4grpc_7_cython_6cygrpc_16_ServicerContext_5write(struct __pyx_obj_4grpc_7_cython_6cygrpc__ServicerContext *__pyx_v_self, PyObject *__pyx_v_message); /* proto */
static PyObject *__pyx_pf_4grpc_7_cython_6cygrpc_16_ServicerContext_8send_initial_metadata(struct __pyx_obj_4grpc_7_cython_6cygrpc__ServicerContext *__pyx_v_self, PyObject *__pyx_v_metadata); /* proto */
static PyObject *__pyx_pf_4grpc_7_cython_6cygrpc_16_ServicerContext_11abort(struct __pyx_obj_4grpc_7_cython_6cygrpc__ServicerContext *__pyx_v_self, PyObject *__pyx_v_code, PyObject *__pyx_v_details, PyObject *__pyx_v_trailing_metadata); /* proto */
static PyObject *__pyx_pf_4grpc_7_cython_6cygrpc_16_ServicerContext_14abort_with_status(struct __pyx_obj_4grpc_7_cython_6cygrpc__ServicerContext *__pyx_v_self, PyObject *__pyx_v_status); /* proto */
static PyObject *__pyx_pf_4grpc_7_cython_6cygrpc_16_ServicerContext_17set_trailing_metadata(struct __pyx_obj_4grpc_7_cython_6cygrpc__ServicerContext *__pyx_v_self, PyObject *__pyx_v_metadata); /* proto */
static PyObject *__pyx_pf_4grpc_7_cython_6cygrpc_16_ServicerContext_19trailing_metadata(struct __pyx_obj_4grpc_7_cython_6cygrpc__ServicerContext *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_4grpc_7_cython_6cygrpc_16_ServicerContext_21invocation_metadata(struct __pyx_obj_4grpc_7_cython_6cygrpc__ServicerContext *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_4grpc_7_cython_6cygrpc_16_ServicerContext_23set_code(struct __pyx_obj_4grpc_7_cython_6cygrpc__ServicerContext *__pyx_v_self, PyObject *__pyx_v_code); /* proto */
static PyObject *__pyx_pf_4grpc_7_cython_6cygrpc_16_ServicerContext_25code(struct __pyx_obj_4grpc_7_cython_6cygrpc__ServicerContext *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_4grpc_7_cython_6cygrpc_16_ServicerContext_27set_details(struct __pyx_obj_4grpc_7_cython_6cygrpc__ServicerContext *__pyx_v_self, PyObject *__pyx_v_details); /* proto */
static PyObject *__pyx_pf_4grpc_7_cython_6cygrpc_16_ServicerContext_29details(struct __pyx_obj_4grpc_7_cython_6cygrpc__ServicerContext *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_4grpc_7_cython_6cygrpc_16_ServicerContext_31set_compression(struct __pyx_obj_4grpc_7_cython_6cygrpc__ServicerContext *__pyx_v_self, PyObject *__pyx_v_compression); /* proto */
static PyObject *__pyx_pf_4grpc_7_cython_6cygrpc_16_ServicerContext_33disable_next_message_compression(struct __pyx_obj_4grpc_7_cython_6cygrpc__ServicerContext *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_4grpc_7_cython_6cygrpc_16_ServicerContext_35peer(struct __pyx_obj_4grpc_7_cython_6cygrpc__ServicerContext *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_4grpc_7_cython_6cygrpc_16_ServicerContext_37peer_identities(struct __pyx_obj_4grpc_7_cython_6cygrpc__ServicerContext *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_4grpc_7_cython_6cygrpc_16_ServicerContext_39peer_identity_key(struct __pyx_obj_4grpc_7_cython_6cygrpc__ServicerContext *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_4grpc_7_cython_6cygrpc_16_ServicerContext_41auth_context(struct __pyx_obj_4grpc_7_cython_6cygrpc__ServicerContext *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_4grpc_7_cython_6cygrpc_16_ServicerContext_43time_remaining(struct __pyx_obj_4grpc_7_cython_6cygrpc__ServicerContext *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_4grpc_7_cython_6cygrpc_16_ServicerContext_45__reduce_cython__(CYTHON_UNUSED struct __pyx_obj_4grpc_7_cython_6cygrpc__ServicerContext *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_4grpc_7_cython_6cygrpc_16_ServicerContext_47__setstate_cython__(CYTHON_UNUSED struct __pyx_obj_4grpc_7_cython_6cygrpc__ServicerContext *__pyx_v_self, CYTHON_UNUSED PyObject *__pyx_v___pyx_state); /* proto */
static int __pyx_pf_4grpc_7_cython_6cygrpc_20_SyncServicerContext___cinit__(struct __pyx_obj_4grpc_7_cython_6cygrpc__SyncServicerContext *__pyx_v_self, struct __pyx_obj_4grpc_7_cython_6cygrpc__ServicerContext *__pyx_v_context); /* proto */
static PyObject *__pyx_pf_4grpc_7_cython_6cygrpc_20_SyncServicerContext_2abort(struct __pyx_obj_4grpc_7_cython_6cygrpc__SyncServicerContext *__pyx_v_self, PyObject *__pyx_v_code, PyObject *__pyx_v_details, PyObject *__pyx_v_trailing_metadata); /* proto */
static PyObject *__pyx_pf_4grpc_7_cython_6cygrpc_20_SyncServicerContext_4send_initial_metadata(struct __pyx_obj_4grpc_7_cython_6cygrpc__SyncServicerContext *__pyx_v_self, PyObject *__pyx_v_metadata); /* proto */
static PyObject *__pyx_pf_4grpc_7_cython_6cygrpc_20_SyncServicerContext_6set_trailing_metadata(struct __pyx_obj_4grpc_7_cython_6cygrpc__SyncServicerContext *__pyx_v_self, PyObject *__pyx_v_metadata); /* proto */
static PyObject *__pyx_pf_4grpc_7_cython_6cygrpc_20_SyncServicerContext_8invocation_metadata(struct __pyx_obj_4grpc_7_cython_6cygrpc__SyncServicerContext *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_4grpc_7_cython_6cygrpc_20_SyncServicerContext_10set_code(struct __pyx_obj_4grpc_7_cython_6cygrpc__SyncServicerContext *__pyx_v_self, PyObject *__pyx_v_code); /* proto */
static PyObject *__pyx_pf_4grpc_7_cython_6cygrpc_20_SyncServicerContext_12set_details(struct __pyx_obj_4grpc_7_cython_6cygrpc__SyncServicerContext *__pyx_v_self, PyObject *__pyx_v_details); /* proto */
static PyObject *__pyx_pf_4grpc_7_cython_6cygrpc_20_SyncServicerContext_14set_compression(struct __pyx_obj_4grpc_7_cython_6cygrpc__SyncServicerContext *__pyx_v_self, PyObject *__pyx_v_compression); /* proto */
static PyObject *__pyx_pf_4grpc_7_cython_6cygrpc_20_SyncServicerContext_16disable_next_message_compression(struct __pyx_obj_4grpc_7_cython_6cygrpc__SyncServicerContext *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_4grpc_7_cython_6cygrpc_20_SyncServicerContext_18add_callback(struct __pyx_obj_4grpc_7_cython_6cygrpc__SyncServicerContext *__pyx_v_self, PyObject *__pyx_v_callback); /* proto */
static PyObject *__pyx_pf_4grpc_7_cython_6cygrpc_20_SyncServicerContext_20peer(struct __pyx_obj_4grpc_7_cython_6cygrpc__SyncServicerContext *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_4grpc_7_cython_6cygrpc_20_SyncServicerContext_22peer_identities(struct __pyx_obj_4grpc_7_cython_6cygrpc__SyncServicerContext *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_4grpc_7_cython_6cygrpc_20_SyncServicerContext_24peer_identity_key(struct __pyx_obj_4grpc_7_cython_6cygrpc__SyncServicerContext *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_4grpc_7_cython_6cygrpc_20_SyncServicerContext_26auth_context(struct __pyx_obj_4grpc_7_cython_6cygrpc__SyncServicerContext *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_4grpc_7_cython_6cygrpc_20_SyncServicerContext_28time_remaining(struct __pyx_obj_4grpc_7_cython_6cygrpc__SyncServicerContext *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_4grpc_7_cython_6cygrpc_20_SyncServicerContext_30__reduce_cython__(CYTHON_UNUSED struct __pyx_obj_4grpc_7_cython_6cygrpc__SyncServicerContext *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_4grpc_7_cython_6cygrpc_20_SyncServicerContext_32__setstate_cython__(CYTHON_UNUSED struct __pyx_obj_4grpc_7_cython_6cygrpc__SyncServicerContext *__pyx_v_self, CYTHON_UNUSED PyObject *__pyx_v___pyx_state); /* proto */
static PyObject *__pyx_pf_4grpc_7_cython_6cygrpc_144_run_interceptor(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__pyx_v_interceptors, PyObject *__pyx_v_query_handler, PyObject *__pyx_v_handler_call_details); /* proto */
static PyObject *__pyx_pf_4grpc_7_cython_6cygrpc_147_is_async_handler(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__pyx_v_handler); /* proto */
static PyObject *__pyx_pf_4grpc_7_cython_6cygrpc_149_find_method_handler(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__pyx_v_method, PyObject *__pyx_v_metadata, PyObject *__pyx_v_generic_handlers, PyObject *__pyx_v_interceptors); /* proto */
static PyObject *__pyx_pf_4grpc_7_cython_6cygrpc_20_find_method_handler_query_handlers(PyObject *__pyx_self, PyObject *__pyx_v_handler_call_details); /* proto */
static PyObject *__pyx_pf_4grpc_7_cython_6cygrpc_152_finish_handler_with_unary_response(CYTHON_UNUSED PyObject *__pyx_self, struct __pyx_obj_4grpc_7_cython_6cygrpc_RPCState *__pyx_v_rpc_state, PyObject *__pyx_v_unary_handler, PyObject *__pyx_v_request, struct __pyx_obj_4grpc_7_cython_6cygrpc__ServicerContext *__pyx_v_servicer_context, PyObject *__pyx_v_response_serializer, PyObject *__pyx_v_loop); /* proto */
static PyObject *__pyx_pf_4grpc_7_cython_6cygrpc_155_finish_handler_with_stream_responses(CYTHON_UNUSED PyObject *__pyx_self, struct __pyx_obj_4grpc_7_cython_6cygrpc_RPCState *__pyx_v_rpc_state, PyObject *__pyx_v_stream_handler, PyObject *__pyx_v_request, struct __pyx_obj_4grpc_7_cython_6cygrpc__ServicerContext *__pyx_v_servicer_context, PyObject *__pyx_v_loop); /* proto */
static PyObject *__pyx_pf_4grpc_7_cython_6cygrpc_158_handle_unary_unary_rpc(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__pyx_v_method_handler, struct __pyx_obj_4grpc_7_cython_6cygrpc_RPCState *__pyx_v_rpc_state, PyObject *__pyx_v_loop); /* proto */
static PyObject *__pyx_pf_4grpc_7_cython_6cygrpc_161_handle_unary_stream_rpc(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__pyx_v_method_handler, struct __pyx_obj_4grpc_7_cython_6cygrpc_RPCState *__pyx_v_rpc_state, PyObject *__pyx_v_loop); /* proto */
static int __pyx_pf_4grpc_7_cython_6cygrpc_16_MessageReceiver___cinit__(struct __pyx_obj_4grpc_7_cython_6cygrpc__MessageReceiver *__pyx_v_self, struct __pyx_obj_4grpc_7_cython_6cygrpc__ServicerContext *__pyx_v_servicer_context); /* proto */
static PyObject *__pyx_pf_4grpc_7_cython_6cygrpc_16_MessageReceiver_2_async_message_receiver(struct __pyx_obj_4grpc_7_cython_6cygrpc__MessageReceiver *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_4grpc_7_cython_6cygrpc_16_MessageReceiver_5__aiter__(struct __pyx_obj_4grpc_7_cython_6cygrpc__MessageReceiver *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_4grpc_7_cython_6cygrpc_16_MessageReceiver_7__anext__(struct __pyx_obj_4grpc_7_cython_6cygrpc__MessageReceiver *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_4grpc_7_cython_6cygrpc_16_MessageReceiver_10__reduce_cython__(CYTHON_UNUSED struct __pyx_obj_4grpc_7_cython_6cygrpc__MessageReceiver *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_4grpc_7_cython_6cygrpc_16_MessageReceiver_12__setstate_cython__(CYTHON_UNUSED struct __pyx_obj_4grpc_7_cython_6cygrpc__MessageReceiver *__pyx_v_self, CYTHON_UNUSED PyObject *__pyx_v___pyx_state); /* proto */
static PyObject *__pyx_pf_4grpc_7_cython_6cygrpc_164_handle_stream_unary_rpc(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__pyx_v_method_handler, struct __pyx_obj_4grpc_7_cython_6cygrpc_RPCState *__pyx_v_rpc_state, PyObject *__pyx_v_loop); /* proto */
static PyObject *__pyx_pf_4grpc_7_cython_6cygrpc_167_handle_stream_stream_rpc(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__pyx_v_method_handler, struct __pyx_obj_4grpc_7_cython_6cygrpc_RPCState *__pyx_v_rpc_state, PyObject *__pyx_v_loop); /* proto */
static PyObject *__pyx_pf_4grpc_7_cython_6cygrpc_170_handle_exceptions(CYTHON_UNUSED PyObject *__pyx_self, struct __pyx_obj_4grpc_7_cython_6cygrpc_RPCState *__pyx_v_rpc_state, PyObject *__pyx_v_rpc_coro, PyObject *__pyx_v_loop); /* proto */
static PyObject *__pyx_pf_4grpc_7_cython_6cygrpc_173_handle_cancellation_from_core(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__pyx_v_rpc_task, struct __pyx_obj_4grpc_7_cython_6cygrpc_RPCState *__pyx_v_rpc_state, PyObject *__pyx_v_loop); /* proto */
static PyObject *__pyx_pf_4grpc_7_cython_6cygrpc_176_schedule_rpc_coro(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__pyx_v_rpc_coro, struct __pyx_obj_4grpc_7_cython_6cygrpc_RPCState *__pyx_v_rpc_state, PyObject *__pyx_v_loop); /* proto */
static PyObject *__pyx_pf_4grpc_7_cython_6cygrpc_179_handle_rpc(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__pyx_v_generic_handlers, PyObject *__pyx_v_interceptors, struct __pyx_obj_4grpc_7_cython_6cygrpc_RPCState *__pyx_v_rpc_state, PyObject *__pyx_v_loop); /* proto */
static int __pyx_pf_4grpc_7_cython_6cygrpc_21_ConcurrentRpcLimiter___cinit__(struct __pyx_obj_4grpc_7_cython_6cygrpc__ConcurrentRpcLimiter *__pyx_v_self, int __pyx_v_maximum_concurrent_rpcs, PyObject *__pyx_v_loop); /* proto */
static PyObject *__pyx_lambda_funcdef_lambda2(PyObject *__pyx_self); /* proto */
static PyObject *__pyx_pf_4grpc_7_cython_6cygrpc_21_ConcurrentRpcLimiter_2check_before_request_call(struct __pyx_obj_4grpc_7_cython_6cygrpc__ConcurrentRpcLimiter *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_4grpc_7_cython_6cygrpc_21_ConcurrentRpcLimiter_5_decrease_active_rpcs_count_with_lock(struct __pyx_obj_4grpc_7_cython_6cygrpc__ConcurrentRpcLimiter *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_4grpc_7_cython_6cygrpc_21_ConcurrentRpcLimiter_8_decrease_active_rpcs_count(struct __pyx_obj_4grpc_7_cython_6cygrpc__ConcurrentRpcLimiter *__pyx_v_self, CYTHON_UNUSED PyObject *__pyx_v_unused_future); /* proto */
static PyObject *__pyx_pf_4grpc_7_cython_6cygrpc_21_ConcurrentRpcLimiter_10decrease_once_finished(struct __pyx_obj_4grpc_7_cython_6cygrpc__ConcurrentRpcLimiter *__pyx_v_self, PyObject *__pyx_v_rpc_task); /* proto */
static PyObject *__pyx_pf_4grpc_7_cython_6cygrpc_21_ConcurrentRpcLimiter_12__reduce_cython__(CYTHON_UNUSED struct __pyx_obj_4grpc_7_cython_6cygrpc__ConcurrentRpcLimiter *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_4grpc_7_cython_6cygrpc_21_ConcurrentRpcLimiter_14__setstate_cython__(CYTHON_UNUSED struct __pyx_obj_4grpc_7_cython_6cygrpc__ConcurrentRpcLimiter *__pyx_v_self, CYTHON_UNUSED PyObject *__pyx_v___pyx_state); /* proto */
static int __pyx_pf_4grpc_7_cython_6cygrpc_9AioServer___init__(struct __pyx_obj_4grpc_7_cython_6cygrpc_AioServer *__pyx_v_self, PyObject *__pyx_v_loop, PyObject *__pyx_v_thread_pool, PyObject *__pyx_v_generic_handlers, PyObject *__pyx_v_interceptors, PyObject *__pyx_v_options, PyObject *__pyx_v_maximum_concurrent_rpcs); /* proto */
static PyObject *__pyx_pf_4grpc_7_cython_6cygrpc_9AioServer_2add_generic_rpc_handlers(struct __pyx_obj_4grpc_7_cython_6cygrpc_AioServer *__pyx_v_self, PyObject *__pyx_v_generic_rpc_handlers); /* proto */
static PyObject *__pyx_pf_4grpc_7_cython_6cygrpc_9AioServer_4add_insecure_port(struct __pyx_obj_4grpc_7_cython_6cygrpc_AioServer *__pyx_v_self, PyObject *__pyx_v_address); /* proto */
static PyObject *__pyx_pf_4grpc_7_cython_6cygrpc_9AioServer_6add_secure_port(struct __pyx_obj_4grpc_7_cython_6cygrpc_AioServer *__pyx_v_self, PyObject *__pyx_v_address, PyObject *__pyx_v_server_credentials); /* proto */
static PyObject *__pyx_pf_4grpc_7_cython_6cygrpc_9AioServer_8_request_call(struct __pyx_obj_4grpc_7_cython_6cygrpc_AioServer *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_4grpc_7_cython_6cygrpc_9AioServer_11_server_main_loop(struct __pyx_obj_4grpc_7_cython_6cygrpc_AioServer *__pyx_v_self, PyObject *__pyx_v_server_started); /* proto */
static PyObject *__pyx_pf_4grpc_7_cython_6cygrpc_9AioServer_14_serving_task_crash_handler(struct __pyx_obj_4grpc_7_cython_6cygrpc_AioServer *__pyx_v_self, PyObject *__pyx_v_task); /* proto */
static PyObject *__pyx_pf_4grpc_7_cython_6cygrpc_9AioServer_16start(struct __pyx_obj_4grpc_7_cython_6cygrpc_AioServer *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_4grpc_7_cython_6cygrpc_9AioServer_19_start_shutting_down(struct __pyx_obj_4grpc_7_cython_6cygrpc_AioServer *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_4grpc_7_cython_6cygrpc_9AioServer_22shutdown(struct __pyx_obj_4grpc_7_cython_6cygrpc_AioServer *__pyx_v_self, PyObject *__pyx_v_grace); /* proto */
static PyObject *__pyx_pf_4grpc_7_cython_6cygrpc_9AioServer_25wait_for_termination(struct __pyx_obj_4grpc_7_cython_6cygrpc_AioServer *__pyx_v_self, PyObject *__pyx_v_timeout); /* proto */
static void __pyx_pf_4grpc_7_cython_6cygrpc_9AioServer_28__dealloc__(struct __pyx_obj_4grpc_7_cython_6cygrpc_AioServer *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_4grpc_7_cython_6cygrpc_9AioServer_30is_running(struct __pyx_obj_4grpc_7_cython_6cygrpc_AioServer *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_4grpc_7_cython_6cygrpc_9AioServer_32__reduce_cython__(struct __pyx_obj_4grpc_7_cython_6cygrpc_AioServer *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_4grpc_7_cython_6cygrpc_9AioServer_34__setstate_cython__(struct __pyx_obj_4grpc_7_cython_6cygrpc_AioServer *__pyx_v_self, PyObject *__pyx_v___pyx_state); /* proto */
static PyObject *__pyx_pf_4grpc_7_cython_6cygrpc_182__pyx_unpickle_ChannelCredentials(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__pyx_v___pyx_type, long __pyx_v___pyx_checksum, PyObject *__pyx_v___pyx_state); /* proto */
static PyObject *__pyx_pf_4grpc_7_cython_6cygrpc_184__pyx_unpickle_InsecureChannelCredentials(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__pyx_v___pyx_type, long __pyx_v___pyx_checksum, PyObject *__pyx_v___pyx_state); /* proto */
static PyObject *__pyx_pf_4grpc_7_cython_6cygrpc_186__pyx_unpickle__Tag(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__pyx_v___pyx_type, long __pyx_v___pyx_checksum, PyObject *__pyx_v___pyx_state); /* proto */
static PyObject *__pyx_pf_4grpc_7_cython_6cygrpc_188__pyx_unpickle_CensusContext(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__pyx_v___pyx_type, long __pyx_v___pyx_checksum, PyObject *__pyx_v___pyx_state); /* proto */
static PyObject *__pyx_pf_4grpc_7_cython_6cygrpc_190__pyx_unpickle_AioServer(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__pyx_v___pyx_type, long __pyx_v___pyx_checksum, PyObject *__pyx_v___pyx_state); /* proto */
static PyObject *__pyx_tp_new_4grpc_7_cython_6cygrpc__ChannelArg(PyTypeObject *t, PyObject *a, PyObject *k); /*proto*/
static PyObject *__pyx_tp_new_4grpc_7_cython_6cygrpc__ChannelArgs(PyTypeObject *t, PyObject *a, PyObject *k); /*proto*/
static PyObject *__pyx_tp_new_4grpc_7_cython_6cygrpc_Call(PyTypeObject *t, PyObject *a, PyObject *k); /*proto*/
static PyObject *__pyx_tp_new_4grpc_7_cython_6cygrpc__CallState(PyTypeObject *t, PyObject *a, PyObject *k); /*proto*/
static PyObject *__pyx_tp_new_4grpc_7_cython_6cygrpc__ChannelState(PyTypeObject *t, PyObject *a, PyObject *k); /*proto*/
static PyObject *__pyx_tp_new_4grpc_7_cython_6cygrpc_IntegratedCall(PyTypeObject *t, PyObject *a, PyObject *k); /*proto*/
static PyObject *__pyx_tp_new_4grpc_7_cython_6cygrpc_SegregatedCall(PyTypeObject *t, PyObject *a, PyObject *k); /*proto*/
static PyObject *__pyx_tp_new_4grpc_7_cython_6cygrpc_Channel(PyTypeObject *t, PyObject *a, PyObject *k); /*proto*/
static PyObject *__pyx_tp_new_4grpc_7_cython_6cygrpc_CallCredentials(PyTypeObject *t, PyObject *a, PyObject *k); /*proto*/
static PyObject *__pyx_tp_new_4grpc_7_cython_6cygrpc_MetadataPluginCallCredentials(PyTypeObject *t, PyObject *a, PyObject *k); /*proto*/
static PyObject *__pyx_tp_new_4grpc_7_cython_6cygrpc_CompositeCallCredentials(PyTypeObject *t, PyObject *a, PyObject *k); /*proto*/
static PyObject *__pyx_tp_new_4grpc_7_cython_6cygrpc_ChannelCredentials(PyTypeObject *t, PyObject *a, PyObject *k); /*proto*/
static PyObject *__pyx_tp_new_4grpc_7_cython_6cygrpc_SSLSessionCacheLRU(PyTypeObject *t, PyObject *a, PyObject *k); /*proto*/
static PyObject *__pyx_tp_new_4grpc_7_cython_6cygrpc_SSLChannelCredentials(PyTypeObject *t, PyObject *a, PyObject *k); /*proto*/
static PyObject *__pyx_tp_new_4grpc_7_cython_6cygrpc_CompositeChannelCredentials(PyTypeObject *t, PyObject *a, PyObject *k); /*proto*/
static PyObject *__pyx_tp_new_4grpc_7_cython_6cygrpc_XDSChannelCredentials(PyTypeObject *t, PyObject *a, PyObject *k); /*proto*/
static PyObject *__pyx_tp_new_4grpc_7_cython_6cygrpc_ServerCertificateConfig(PyTypeObject *t, PyObject *a, PyObject *k); /*proto*/
static PyObject *__pyx_tp_new_4grpc_7_cython_6cygrpc_ServerCredentials(PyTypeObject *t, PyObject *a, PyObject *k); /*proto*/
static PyObject *__pyx_tp_new_4grpc_7_cython_6cygrpc_LocalChannelCredentials(PyTypeObject *t, PyObject *a, PyObject *k); /*proto*/
static PyObject *__pyx_tp_new_4grpc_7_cython_6cygrpc_ALTSChannelCredentials(PyTypeObject *t, PyObject *a, PyObject *k); /*proto*/
static PyObject *__pyx_tp_new_4grpc_7_cython_6cygrpc_CompletionQueue(PyTypeObject *t, PyObject *a, PyObject *k); /*proto*/
static PyObject *__pyx_tp_new_4grpc_7_cython_6cygrpc_ConnectivityEvent(PyTypeObject *t, PyObject *a, PyObject *k); /*proto*/
static PyObject *__pyx_tp_new_4grpc_7_cython_6cygrpc_RequestCallEvent(PyTypeObject *t, PyObject *a, PyObject *k); /*proto*/
static PyObject *__pyx_tp_new_4grpc_7_cython_6cygrpc_BatchOperationEvent(PyTypeObject *t, PyObject *a, PyObject *k); /*proto*/
static PyObject *__pyx_tp_new_4grpc_7_cython_6cygrpc_ServerShutdownEvent(PyTypeObject *t, PyObject *a, PyObject *k); /*proto*/
static PyObject *__pyx_tp_new_4grpc_7_cython_6cygrpc_Operation(PyTypeObject *t, PyObject *a, PyObject *k); /*proto*/
static PyObject *__pyx_tp_new_4grpc_7_cython_6cygrpc_SendInitialMetadataOperation(PyTypeObject *t, PyObject *a, PyObject *k); /*proto*/
static PyObject *__pyx_tp_new_4grpc_7_cython_6cygrpc_SendMessageOperation(PyTypeObject *t, PyObject *a, PyObject *k); /*proto*/
static PyObject *__pyx_tp_new_4grpc_7_cython_6cygrpc_SendCloseFromClientOperation(PyTypeObject *t, PyObject *a, PyObject *k); /*proto*/
static PyObject *__pyx_tp_new_4grpc_7_cython_6cygrpc_SendStatusFromServerOperation(PyTypeObject *t, PyObject *a, PyObject *k); /*proto*/
static PyObject *__pyx_tp_new_4grpc_7_cython_6cygrpc_ReceiveInitialMetadataOperation(PyTypeObject *t, PyObject *a, PyObject *k); /*proto*/
static PyObject *__pyx_tp_new_4grpc_7_cython_6cygrpc_ReceiveMessageOperation(PyTypeObject *t, PyObject *a, PyObject *k); /*proto*/
static PyObject *__pyx_tp_new_4grpc_7_cython_6cygrpc_ReceiveStatusOnClientOperation(PyTypeObject *t, PyObject *a, PyObject *k); /*proto*/
static PyObject *__pyx_tp_new_4grpc_7_cython_6cygrpc_ReceiveCloseOnServerOperation(PyTypeObject *t, PyObject *a, PyObject *k); /*proto*/
static PyObject *__pyx_tp_new_4grpc_7_cython_6cygrpc_CallDetails(PyTypeObject *t, PyObject *a, PyObject *k); /*proto*/
static PyObject *__pyx_tp_new_4grpc_7_cython_6cygrpc_SslPemKeyCertPair(PyTypeObject *t, PyObject *a, PyObject *k); /*proto*/
static PyObject *__pyx_tp_new_4grpc_7_cython_6cygrpc_CompressionOptions(PyTypeObject *t, PyObject *a, PyObject *k); /*proto*/
static PyObject *__pyx_tp_new_4grpc_7_cython_6cygrpc_Server(PyTypeObject *t, PyObject *a, PyObject *k); /*proto*/
static PyObject *__pyx_tp_new_4grpc_7_cython_6cygrpc__Tag(PyTypeObject *t, PyObject *a, PyObject *k); /*proto*/
static PyObject *__pyx_tp_new_4grpc_7_cython_6cygrpc__ConnectivityTag(PyTypeObject *t, PyObject *a, PyObject *k); /*proto*/
static PyObject *__pyx_tp_new_4grpc_7_cython_6cygrpc__RequestCallTag(PyTypeObject *t, PyObject *a, PyObject *k); /*proto*/
static PyObject *__pyx_tp_new_4grpc_7_cython_6cygrpc__BatchOperationTag(PyTypeObject *t, PyObject *a, PyObject *k); /*proto*/
static PyObject *__pyx_tp_new_4grpc_7_cython_6cygrpc__ServerShutdownTag(PyTypeObject *t, PyObject *a, PyObject *k); /*proto*/
static PyObject *__pyx_tp_new_4grpc_7_cython_6cygrpc_TimerWrapper(PyTypeObject *t, PyObject *a, PyObject *k); /*proto*/
static PyObject *__pyx_tp_new_4grpc_7_cython_6cygrpc_SocketWrapper(PyTypeObject *t, PyObject *a, PyObject *k); /*proto*/
static PyObject *__pyx_tp_new_4grpc_7_cython_6cygrpc_ResolveWrapper(PyTypeObject *t, PyObject *a, PyObject *k); /*proto*/
static PyObject *__pyx_tp_new_4grpc_7_cython_6cygrpc_BaseCompletionQueue(PyTypeObject *t, PyObject *a, PyObject *k); /*proto*/
static PyObject *__pyx_tp_new_4grpc_7_cython_6cygrpc__BoundEventLoop(PyTypeObject *t, PyObject *a, PyObject *k); /*proto*/
static PyObject *__pyx_tp_new_4grpc_7_cython_6cygrpc_PollerCompletionQueue(PyTypeObject *t, PyObject *a, PyObject *k); /*proto*/
static PyObject *__pyx_tp_new_4grpc_7_cython_6cygrpc_AioRpcStatus(PyTypeObject *t, PyObject *a, PyObject *k); /*proto*/
static PyObject *__pyx_tp_new_4grpc_7_cython_6cygrpc__AioState(PyTypeObject *t, PyObject *a, PyObject *k); /*proto*/
static PyObject *__pyx_tp_new_4grpc_7_cython_6cygrpc_CallbackFailureHandler(PyTypeObject *t, PyObject *a, PyObject *k); /*proto*/
static PyObject *__pyx_tp_new_4grpc_7_cython_6cygrpc_CallbackWrapper(PyTypeObject *t, PyObject *a, PyObject *k); /*proto*/
static PyObject *__pyx_tp_new_4grpc_7_cython_6cygrpc_GrpcCallWrapper(PyTypeObject *t, PyObject *a, PyObject *k); /*proto*/
static PyObject *__pyx_tp_new_4grpc_7_cython_6cygrpc__AioCall(PyTypeObject *t, PyObject *a, PyObject *k); /*proto*/
static PyObject *__pyx_tp_new_4grpc_7_cython_6cygrpc_AioChannel(PyTypeObject *t, PyObject *a, PyObject *k); /*proto*/
static PyObject *__pyx_tp_new_4grpc_7_cython_6cygrpc__HandlerCallDetails(PyTypeObject *t, PyObject *a, PyObject *k); /*proto*/
static PyObject *__pyx_tp_new_4grpc_7_cython_6cygrpc_RPCState(PyTypeObject *t, PyObject *a, PyObject *k); /*proto*/
static PyObject *__pyx_tp_new_4grpc_7_cython_6cygrpc__ServicerContext(PyTypeObject *t, PyObject *a, PyObject *k); /*proto*/
static PyObject *__pyx_tp_new_4grpc_7_cython_6cygrpc__SyncServicerContext(PyTypeObject *t, PyObject *a, PyObject *k); /*proto*/
static PyObject *__pyx_tp_new_4grpc_7_cython_6cygrpc__MessageReceiver(PyTypeObject *t, PyObject *a, PyObject *k); /*proto*/
static PyObject *__pyx_tp_new_4grpc_7_cython_6cygrpc__ConcurrentRpcLimiter(PyTypeObject *t, PyObject *a, PyObject *k); /*proto*/
static PyObject *__pyx_tp_new_4grpc_7_cython_6cygrpc_AioServer(PyTypeObject *t, PyObject *a, PyObject *k); /*proto*/
static PyObject *__pyx_tp_new_4grpc_7_cython_6cygrpc__GrpcArgWrapper(PyTypeObject *t, PyObject *a, PyObject *k); /*proto*/
static PyObject *__pyx_tp_new_4grpc_7_cython_6cygrpc_InsecureChannelCredentials(PyTypeObject *t, PyObject *a, PyObject *k); /*proto*/
static PyObject *__pyx_tp_new_4grpc_7_cython_6cygrpc_ComputeEngineChannelCredentials(PyTypeObject *t, PyObject *a, PyObject *k); /*proto*/
static PyObject *__pyx_tp_new_4grpc_7_cython_6cygrpc_CensusContext(PyTypeObject *t, PyObject *a, PyObject *k); /*proto*/
static PyObject *__pyx_tp_new_4grpc_7_cython_6cygrpc___pyx_scope_struct____pyx_f_4grpc_7_cython_6cygrpc__integrated_call(PyTypeObject *t, PyObject *a, PyObject *k); /*proto*/
static PyObject *__pyx_tp_new_4grpc_7_cython_6cygrpc___pyx_scope_struct_1_next_event(PyTypeObject *t, PyObject *a, PyObject *k); /*proto*/
static PyObject *__pyx_tp_new_4grpc_7_cython_6cygrpc___pyx_scope_struct_2___pyx_f_4grpc_7_cython_6cygrpc__segregated_call(PyTypeObject *t, PyObject *a, PyObject *k); /*proto*/
static PyObject *__pyx_tp_new_4grpc_7_cython_6cygrpc___pyx_scope_struct_3_next_call_event(PyTypeObject *t, PyObject *a, PyObject *k); /*proto*/
static PyObject *__pyx_tp_new_4grpc_7_cython_6cygrpc___pyx_scope_struct_4___pyx_f_4grpc_7_cython_6cygrpc__get_metadata(PyTypeObject *t, PyObject *a, PyObject *k); /*proto*/
static PyObject *__pyx_tp_new_4grpc_7_cython_6cygrpc___pyx_scope_struct_5___pyx_f_4grpc_7_cython_6cygrpc__metadata(PyTypeObject *t, PyObject *a, PyObject *k); /*proto*/
static PyObject *__pyx_tp_new_4grpc_7_cython_6cygrpc___pyx_scope_struct_6_genexpr(PyTypeObject *t, PyObject *a, PyObject *k); /*proto*/
static PyObject *__pyx_tp_new_4grpc_7_cython_6cygrpc___pyx_scope_struct_7___pyx_f_4grpc_7_cython_6cygrpc_tuples_to_resolvaddr(PyTypeObject *t, PyObject *a, PyObject *k); /*proto*/
static PyObject *__pyx_tp_new_4grpc_7_cython_6cygrpc___pyx_scope_struct_8_genexpr(PyTypeObject *t, PyObject *a, PyObject *k); /*proto*/
static PyObject *__pyx_tp_new_4grpc_7_cython_6cygrpc___pyx_scope_struct_9__run_with_context(PyTypeObject *t, PyObject *a, PyObject *k); /*proto*/
static PyObject *__pyx_tp_new_4grpc_7_cython_6cygrpc___pyx_scope_struct_10__run_with_context(PyTypeObject *t, PyObject *a, PyObject *k); /*proto*/
static PyObject *__pyx_tp_new_4grpc_7_cython_6cygrpc___pyx_scope_struct_11___init__(PyTypeObject *t, PyObject *a, PyObject *k); /*proto*/
static PyObject *__pyx_tp_new_4grpc_7_cython_6cygrpc___pyx_scope_struct_12_async_generator_to_generator(PyTypeObject *t, PyObject *a, PyObject *k); /*proto*/
static PyObject *__pyx_tp_new_4grpc_7_cython_6cygrpc___pyx_scope_struct_13_generator_to_async_generator(PyTypeObject *t, PyObject *a, PyObject *k); /*proto*/
static PyObject *__pyx_tp_new_4grpc_7_cython_6cygrpc___pyx_scope_struct_14_execute_batch(PyTypeObject *t, PyObject *a, PyObject *k); /*proto*/
static PyObject *__pyx_tp_new_4grpc_7_cython_6cygrpc___pyx_scope_struct_15__receive_message(PyTypeObject *t, PyObject *a, PyObject *k); /*proto*/
static PyObject *__pyx_tp_new_4grpc_7_cython_6cygrpc___pyx_scope_struct_16__send_message(PyTypeObject *t, PyObject *a, PyObject *k); /*proto*/
static PyObject *__pyx_tp_new_4grpc_7_cython_6cygrpc___pyx_scope_struct_17__send_initial_metadata(PyTypeObject *t, PyObject *a, PyObject *k); /*proto*/
static PyObject *__pyx_tp_new_4grpc_7_cython_6cygrpc___pyx_scope_struct_18__receive_initial_metadata(PyTypeObject *t, PyObject *a, PyObject *k); /*proto*/
static PyObject *__pyx_tp_new_4grpc_7_cython_6cygrpc___pyx_scope_struct_19__send_error_status_from_server(PyTypeObject *t, PyObject *a, PyObject *k); /*proto*/
static PyObject *__pyx_tp_new_4grpc_7_cython_6cygrpc___pyx_scope_struct_20_status(PyTypeObject *t, PyObject *a, PyObject *k); /*proto*/
static PyObject *__pyx_tp_new_4grpc_7_cython_6cygrpc___pyx_scope_struct_21_initial_metadata(PyTypeObject *t, PyObject *a, PyObject *k); /*proto*/
static PyObject *__pyx_tp_new_4grpc_7_cython_6cygrpc___pyx_scope_struct_22_unary_unary(PyTypeObject *t, PyObject *a, PyObject *k); /*proto*/
static PyObject *__pyx_tp_new_4grpc_7_cython_6cygrpc___pyx_scope_struct_23__handle_status_once_received(PyTypeObject *t, PyObject *a, PyObject *k); /*proto*/
static PyObject *__pyx_tp_new_4grpc_7_cython_6cygrpc___pyx_scope_struct_24_receive_serialized_message(PyTypeObject *t, PyObject *a, PyObject *k); /*proto*/
static PyObject *__pyx_tp_new_4grpc_7_cython_6cygrpc___pyx_scope_struct_25_send_serialized_message(PyTypeObject *t, PyObject *a, PyObject *k); /*proto*/
static PyObject *__pyx_tp_new_4grpc_7_cython_6cygrpc___pyx_scope_struct_26_send_receive_close(PyTypeObject *t, PyObject *a, PyObject *k); /*proto*/
static PyObject *__pyx_tp_new_4grpc_7_cython_6cygrpc___pyx_scope_struct_27_initiate_unary_stream(PyTypeObject *t, PyObject *a, PyObject *k); /*proto*/
static PyObject *__pyx_tp_new_4grpc_7_cython_6cygrpc___pyx_scope_struct_28_stream_unary(PyTypeObject *t, PyObject *a, PyObject *k); /*proto*/
static PyObject *__pyx_tp_new_4grpc_7_cython_6cygrpc___pyx_scope_struct_29_initiate_stream_stream(PyTypeObject *t, PyObject *a, PyObject *k); /*proto*/
static PyObject *__pyx_tp_new_4grpc_7_cython_6cygrpc___pyx_scope_struct_30_watch_connectivity_state(PyTypeObject *t, PyObject *a, PyObject *k); /*proto*/
static PyObject *__pyx_tp_new_4grpc_7_cython_6cygrpc___pyx_scope_struct_31_read(PyTypeObject *t, PyObject *a, PyObject *k); /*proto*/
static PyObject *__pyx_tp_new_4grpc_7_cython_6cygrpc___pyx_scope_struct_32_write(PyTypeObject *t, PyObject *a, PyObject *k); /*proto*/
static PyObject *__pyx_tp_new_4grpc_7_cython_6cygrpc___pyx_scope_struct_33_send_initial_metadata(PyTypeObject *t, PyObject *a, PyObject *k); /*proto*/
static PyObject *__pyx_tp_new_4grpc_7_cython_6cygrpc___pyx_scope_struct_34_abort(PyTypeObject *t, PyObject *a, PyObject *k); /*proto*/
static PyObject *__pyx_tp_new_4grpc_7_cython_6cygrpc___pyx_scope_struct_35_abort_with_status(PyTypeObject *t, PyObject *a, PyObject *k); /*proto*/
static PyObject *__pyx_tp_new_4grpc_7_cython_6cygrpc___pyx_scope_struct_36__run_interceptor(PyTypeObject *t, PyObject *a, PyObject *k); /*proto*/
static PyObject *__pyx_tp_new_4grpc_7_cython_6cygrpc___pyx_scope_struct_37__find_method_handler(PyTypeObject *t, PyObject *a, PyObject *k); /*proto*/
static PyObject *__pyx_tp_new_4grpc_7_cython_6cygrpc___pyx_scope_struct_38__finish_handler_with_unary_response(PyTypeObject *t, PyObject *a, PyObject *k); /*proto*/
static PyObject *__pyx_tp_new_4grpc_7_cython_6cygrpc___pyx_scope_struct_39__finish_handler_with_stream_responses(PyTypeObject *t, PyObject *a, PyObject *k); /*proto*/
static PyObject *__pyx_tp_new_4grpc_7_cython_6cygrpc___pyx_scope_struct_40__handle_unary_unary_rpc(PyTypeObject *t, PyObject *a, PyObject *k); /*proto*/
static PyObject *__pyx_tp_new_4grpc_7_cython_6cygrpc___pyx_scope_struct_41__handle_unary_stream_rpc(PyTypeObject *t, PyObject *a, PyObject *k); /*proto*/
static PyObject *__pyx_tp_new_4grpc_7_cython_6cygrpc___pyx_scope_struct_42__async_message_receiver(PyTypeObject *t, PyObject *a, PyObject *k); /*proto*/
static PyObject *__pyx_tp_new_4grpc_7_cython_6cygrpc___pyx_scope_struct_43___anext__(PyTypeObject *t, PyObject *a, PyObject *k); /*proto*/
static PyObject *__pyx_tp_new_4grpc_7_cython_6cygrpc___pyx_scope_struct_44__handle_stream_unary_rpc(PyTypeObject *t, PyObject *a, PyObject *k); /*proto*/
static PyObject *__pyx_tp_new_4grpc_7_cython_6cygrpc___pyx_scope_struct_45__handle_stream_stream_rpc(PyTypeObject *t, PyObject *a, PyObject *k); /*proto*/
static PyObject *__pyx_tp_new_4grpc_7_cython_6cygrpc___pyx_scope_struct_46__handle_exceptions(PyTypeObject *t, PyObject *a, PyObject *k); /*proto*/
static PyObject *__pyx_tp_new_4grpc_7_cython_6cygrpc___pyx_scope_struct_47__handle_cancellation_from_core(PyTypeObject *t, PyObject *a, PyObject *k); /*proto*/
static PyObject *__pyx_tp_new_4grpc_7_cython_6cygrpc___pyx_scope_struct_48__schedule_rpc_coro(PyTypeObject *t, PyObject *a, PyObject *k); /*proto*/
static PyObject *__pyx_tp_new_4grpc_7_cython_6cygrpc___pyx_scope_struct_49__handle_rpc(PyTypeObject *t, PyObject *a, PyObject *k); /*proto*/
static PyObject *__pyx_tp_new_4grpc_7_cython_6cygrpc___pyx_scope_struct_50_check_before_request_call(PyTypeObject *t, PyObject *a, PyObject *k); /*proto*/
static PyObject *__pyx_tp_new_4grpc_7_cython_6cygrpc___pyx_scope_struct_51__decrease_active_rpcs_count_with_lock(PyTypeObject *t, PyObject *a, PyObject *k); /*proto*/
static PyObject *__pyx_tp_new_4grpc_7_cython_6cygrpc___pyx_scope_struct_52__request_call(PyTypeObject *t, PyObject *a, PyObject *k); /*proto*/
static PyObject *__pyx_tp_new_4grpc_7_cython_6cygrpc___pyx_scope_struct_53__server_main_loop(PyTypeObject *t, PyObject *a, PyObject *k); /*proto*/
static PyObject *__pyx_tp_new_4grpc_7_cython_6cygrpc___pyx_scope_struct_54_start(PyTypeObject *t, PyObject *a, PyObject *k); /*proto*/
static PyObject *__pyx_tp_new_4grpc_7_cython_6cygrpc___pyx_scope_struct_55__start_shutting_down(PyTypeObject *t, PyObject *a, PyObject *k); /*proto*/
static PyObject *__pyx_tp_new_4grpc_7_cython_6cygrpc___pyx_scope_struct_56_shutdown(PyTypeObject *t, PyObject *a, PyObject *k); /*proto*/
static PyObject *__pyx_tp_new_4grpc_7_cython_6cygrpc___pyx_scope_struct_57_wait_for_termination(PyTypeObject *t, PyObject *a, PyObject *k); /*proto*/
static __Pyx_CachedCFunction __pyx_umethod_PyDict_Type_get = {0, &__pyx_n_s_get, 0, 0, 0};
static __Pyx_CachedCFunction __pyx_umethod_PyDict_Type_pop = {0, &__pyx_n_s_pop, 0, 0, 0};
static __Pyx_CachedCFunction __pyx_umethod_PyDict_Type_values = {0, &__pyx_n_s_values, 0, 0, 0};
static PyObject *__pyx_float_1_0;
static PyObject *__pyx_float_1000_0;
static PyObject *__pyx_int_0;
static PyObject *__pyx_int_1;
static PyObject *__pyx_int_5;
static PyObject *__pyx_int_50;
static PyObject *__pyx_int_171381981;
static PyObject *__pyx_int_222419149;
static grpc_status_code __pyx_k__9;
static PyObject *__pyx_k__174;
static PyObject *__pyx_k__178;
static PyObject *__pyx_tuple__2;
static PyObject *__pyx_tuple__3;
static PyObject *__pyx_tuple__4;
static PyObject *__pyx_tuple__5;
static PyObject *__pyx_tuple__6;
static PyObject *__pyx_tuple__7;
static PyObject *__pyx_tuple__8;
static PyObject *__pyx_tuple__10;
static PyObject *__pyx_tuple__11;
static PyObject *__pyx_tuple__12;
static PyObject *__pyx_tuple__13;
static PyObject *__pyx_tuple__14;
static PyObject *__pyx_tuple__15;
static PyObject *__pyx_tuple__16;
static PyObject *__pyx_tuple__17;
static PyObject *__pyx_tuple__18;
static PyObject *__pyx_tuple__19;
static PyObject *__pyx_tuple__20;
static PyObject *__pyx_tuple__22;
static PyObject *__pyx_tuple__25;
static PyObject *__pyx_tuple__26;
static PyObject *__pyx_tuple__27;
static PyObject *__pyx_tuple__29;
static PyObject *__pyx_tuple__30;
static PyObject *__pyx_tuple__32;
static PyObject *__pyx_tuple__33;
static PyObject *__pyx_tuple__34;
static PyObject *__pyx_tuple__35;
static PyObject *__pyx_tuple__36;
static PyObject *__pyx_tuple__38;
static PyObject *__pyx_tuple__39;
static PyObject *__pyx_tuple__40;
static PyObject *__pyx_tuple__41;
static PyObject *__pyx_tuple__42;
static PyObject *__pyx_tuple__43;
static PyObject *__pyx_tuple__44;
static PyObject *__pyx_tuple__45;
static PyObject *__pyx_tuple__46;
static PyObject *__pyx_tuple__47;
static PyObject *__pyx_tuple__48;
static PyObject *__pyx_tuple__49;
static PyObject *__pyx_tuple__50;
static PyObject *__pyx_tuple__51;
static PyObject *__pyx_tuple__52;
static PyObject *__pyx_tuple__53;
static PyObject *__pyx_tuple__54;
static PyObject *__pyx_tuple__55;
static PyObject *__pyx_tuple__56;
static PyObject *__pyx_tuple__57;
static PyObject *__pyx_tuple__58;
static PyObject *__pyx_tuple__59;
static PyObject *__pyx_tuple__60;
static PyObject *__pyx_tuple__61;
static PyObject *__pyx_tuple__62;
static PyObject *__pyx_tuple__63;
static PyObject *__pyx_tuple__64;
static PyObject *__pyx_tuple__65;
static PyObject *__pyx_tuple__66;
static PyObject *__pyx_tuple__67;
static PyObject *__pyx_tuple__68;
static PyObject *__pyx_tuple__69;
static PyObject *__pyx_tuple__70;
static PyObject *__pyx_tuple__71;
static PyObject *__pyx_tuple__72;
static PyObject *__pyx_tuple__73;
static PyObject *__pyx_tuple__74;
static PyObject *__pyx_tuple__75;
static PyObject *__pyx_tuple__76;
static PyObject *__pyx_tuple__77;
static PyObject *__pyx_tuple__78;
static PyObject *__pyx_tuple__79;
static PyObject *__pyx_tuple__80;
static PyObject *__pyx_tuple__81;
static PyObject *__pyx_tuple__82;
static PyObject *__pyx_tuple__83;
static PyObject *__pyx_tuple__84;
static PyObject *__pyx_tuple__85;
static PyObject *__pyx_tuple__86;
static PyObject *__pyx_tuple__87;
static PyObject *__pyx_tuple__88;
static PyObject *__pyx_tuple__89;
static PyObject *__pyx_tuple__90;
static PyObject *__pyx_tuple__91;
static PyObject *__pyx_tuple__92;
static PyObject *__pyx_tuple__93;
static PyObject *__pyx_tuple__94;
static PyObject *__pyx_tuple__95;
static PyObject *__pyx_tuple__96;
static PyObject *__pyx_tuple__97;
static PyObject *__pyx_tuple__98;
static PyObject *__pyx_tuple__99;
static PyObject *__pyx_slice__124;
static PyObject *__pyx_tuple__100;
static PyObject *__pyx_tuple__101;
static PyObject *__pyx_tuple__102;
static PyObject *__pyx_tuple__103;
static PyObject *__pyx_tuple__104;
static PyObject *__pyx_tuple__105;
static PyObject *__pyx_tuple__106;
static PyObject *__pyx_tuple__107;
static PyObject *__pyx_tuple__108;
static PyObject *__pyx_tuple__109;
static PyObject *__pyx_tuple__110;
static PyObject *__pyx_tuple__111;
static PyObject *__pyx_tuple__112;
static PyObject *__pyx_tuple__113;
static PyObject *__pyx_tuple__114;
static PyObject *__pyx_tuple__115;
static PyObject *__pyx_tuple__116;
static PyObject *__pyx_tuple__117;
static PyObject *__pyx_tuple__122;
static PyObject *__pyx_tuple__123;
static PyObject *__pyx_tuple__125;
static PyObject *__pyx_tuple__126;
static PyObject *__pyx_tuple__127;
static PyObject *__pyx_tuple__128;
static PyObject *__pyx_tuple__129;
static PyObject *__pyx_tuple__130;
static PyObject *__pyx_tuple__132;
static PyObject *__pyx_tuple__134;
static PyObject *__pyx_tuple__136;
static PyObject *__pyx_tuple__140;
static PyObject *__pyx_tuple__142;
static PyObject *__pyx_tuple__143;
static PyObject *__pyx_tuple__144;
static PyObject *__pyx_tuple__145;
static PyObject *__pyx_tuple__146;
static PyObject *__pyx_tuple__147;
static PyObject *__pyx_tuple__148;
static PyObject *__pyx_tuple__149;
static PyObject *__pyx_tuple__150;
static PyObject *__pyx_tuple__151;
static PyObject *__pyx_tuple__152;
static PyObject *__pyx_tuple__153;
static PyObject *__pyx_tuple__154;
static PyObject *__pyx_tuple__161;
static PyObject *__pyx_tuple__162;
static PyObject *__pyx_tuple__163;
static PyObject *__pyx_tuple__164;
static PyObject *__pyx_tuple__168;
static PyObject *__pyx_tuple__169;
static PyObject *__pyx_tuple__170;
static PyObject *__pyx_tuple__171;
static PyObject *__pyx_tuple__172;
static PyObject *__pyx_tuple__173;
static PyObject *__pyx_tuple__175;
static PyObject *__pyx_tuple__176;
static PyObject *__pyx_tuple__177;
static PyObject *__pyx_tuple__179;
static PyObject *__pyx_tuple__180;
static PyObject *__pyx_tuple__183;
static PyObject *__pyx_tuple__189;
static PyObject *__pyx_tuple__190;
static PyObject *__pyx_tuple__197;
static PyObject *__pyx_tuple__198;
static PyObject *__pyx_tuple__199;
static PyObject *__pyx_tuple__200;
static PyObject *__pyx_tuple__202;
static PyObject *__pyx_tuple__204;
static PyObject *__pyx_tuple__206;
static PyObject *__pyx_tuple__208;
static PyObject *__pyx_tuple__210;
static PyObject *__pyx_tuple__212;
static PyObject *__pyx_tuple__214;
static PyObject *__pyx_tuple__216;
static PyObject *__pyx_tuple__218;
static PyObject *__pyx_tuple__220;
static PyObject *__pyx_tuple__222;
static PyObject *__pyx_tuple__224;
static PyObject *__pyx_tuple__226;
static PyObject *__pyx_tuple__228;
static PyObject *__pyx_tuple__231;
static PyObject *__pyx_tuple__233;
static PyObject *__pyx_tuple__235;
static PyObject *__pyx_tuple__237;
static PyObject *__pyx_tuple__239;
static PyObject *__pyx_tuple__241;
static PyObject *__pyx_tuple__243;
static PyObject *__pyx_tuple__244;
static PyObject *__pyx_tuple__245;
static PyObject *__pyx_tuple__247;
static PyObject *__pyx_tuple__249;
static PyObject *__pyx_tuple__251;
static PyObject *__pyx_tuple__253;
static PyObject *__pyx_tuple__257;
static PyObject *__pyx_tuple__260;
static PyObject *__pyx_tuple__262;
static PyObject *__pyx_tuple__264;
static PyObject *__pyx_tuple__266;
static PyObject *__pyx_tuple__268;
static PyObject *__pyx_tuple__270;
static PyObject *__pyx_tuple__272;
static PyObject *__pyx_tuple__274;
static PyObject *__pyx_tuple__276;
static PyObject *__pyx_tuple__278;
static PyObject *__pyx_tuple__280;
static PyObject *__pyx_tuple__282;
static PyObject *__pyx_tuple__284;
static PyObject *__pyx_tuple__286;
static PyObject *__pyx_tuple__288;
static PyObject *__pyx_tuple__290;
static PyObject *__pyx_tuple__291;
static PyObject *__pyx_tuple__293;
static PyObject *__pyx_tuple__294;
static PyObject *__pyx_tuple__296;
static PyObject *__pyx_tuple__298;
static PyObject *__pyx_tuple__300;
static PyObject *__pyx_tuple__306;
static PyObject *__pyx_tuple__308;
static PyObject *__pyx_tuple__310;
static PyObject *__pyx_tuple__311;
static PyObject *__pyx_tuple__313;
static PyObject *__pyx_tuple__315;
static PyObject *__pyx_tuple__317;
static PyObject *__pyx_tuple__319;
static PyObject *__pyx_tuple__320;
static PyObject *__pyx_tuple__322;
static PyObject *__pyx_tuple__324;
static PyObject *__pyx_tuple__326;
static PyObject *__pyx_tuple__328;
static PyObject *__pyx_tuple__330;
static PyObject *__pyx_tuple__332;
static PyObject *__pyx_tuple__334;
static PyObject *__pyx_tuple__335;
static PyObject *__pyx_tuple__338;
static PyObject *__pyx_tuple__340;
static PyObject *__pyx_tuple__341;
static PyObject *__pyx_tuple__342;
static PyObject *__pyx_tuple__343;
static PyObject *__pyx_tuple__344;
static PyObject *__pyx_tuple__345;
static PyObject *__pyx_tuple__346;
static PyObject *__pyx_tuple__348;
static PyObject *__pyx_tuple__350;
static PyObject *__pyx_tuple__351;
static PyObject *__pyx_tuple__353;
static PyObject *__pyx_tuple__354;
static PyObject *__pyx_tuple__355;
static PyObject *__pyx_tuple__356;
static PyObject *__pyx_tuple__357;
static PyObject *__pyx_tuple__358;
static PyObject *__pyx_tuple__359;
static PyObject *__pyx_tuple__360;
static PyObject *__pyx_tuple__361;
static PyObject *__pyx_tuple__362;
static PyObject *__pyx_tuple__363;
static PyObject *__pyx_tuple__364;
static PyObject *__pyx_tuple__366;
static PyObject *__pyx_tuple__368;
static PyObject *__pyx_tuple__370;
static PyObject *__pyx_tuple__372;
static PyObject *__pyx_codeobj__21;
static PyObject *__pyx_codeobj__23;
static PyObject *__pyx_codeobj__24;
static PyObject *__pyx_codeobj__28;
static PyObject *__pyx_codeobj__31;
static PyObject *__pyx_codeobj__37;
static PyObject *__pyx_codeobj__131;
static PyObject *__pyx_codeobj__133;
static PyObject *__pyx_codeobj__135;
static PyObject *__pyx_codeobj__137;
static PyObject *__pyx_codeobj__138;
static PyObject *__pyx_codeobj__139;
static PyObject *__pyx_codeobj__141;
static PyObject *__pyx_codeobj__155;
static PyObject *__pyx_codeobj__156;
static PyObject *__pyx_codeobj__157;
static PyObject *__pyx_codeobj__158;
static PyObject *__pyx_codeobj__159;
static PyObject *__pyx_codeobj__160;
static PyObject *__pyx_codeobj__181;
static PyObject *__pyx_codeobj__182;
static PyObject *__pyx_codeobj__184;
static PyObject *__pyx_codeobj__185;
static PyObject *__pyx_codeobj__186;
static PyObject *__pyx_codeobj__187;
static PyObject *__pyx_codeobj__188;
static PyObject *__pyx_codeobj__191;
static PyObject *__pyx_codeobj__192;
static PyObject *__pyx_codeobj__193;
static PyObject *__pyx_codeobj__194;
static PyObject *__pyx_codeobj__195;
static PyObject *__pyx_codeobj__196;
static PyObject *__pyx_codeobj__201;
static PyObject *__pyx_codeobj__203;
static PyObject *__pyx_codeobj__205;
static PyObject *__pyx_codeobj__207;
static PyObject *__pyx_codeobj__209;
static PyObject *__pyx_codeobj__211;
static PyObject *__pyx_codeobj__213;
static PyObject *__pyx_codeobj__215;
static PyObject *__pyx_codeobj__217;
static PyObject *__pyx_codeobj__219;
static PyObject *__pyx_codeobj__221;
static PyObject *__pyx_codeobj__223;
static PyObject *__pyx_codeobj__225;
static PyObject *__pyx_codeobj__227;
static PyObject *__pyx_codeobj__229;
static PyObject *__pyx_codeobj__230;
static PyObject *__pyx_codeobj__232;
static PyObject *__pyx_codeobj__234;
static PyObject *__pyx_codeobj__236;
static PyObject *__pyx_codeobj__238;
static PyObject *__pyx_codeobj__240;
static PyObject *__pyx_codeobj__242;
static PyObject *__pyx_codeobj__246;
static PyObject *__pyx_codeobj__248;
static PyObject *__pyx_codeobj__250;
static PyObject *__pyx_codeobj__252;
static PyObject *__pyx_codeobj__254;
static PyObject *__pyx_codeobj__255;
static PyObject *__pyx_codeobj__256;
static PyObject *__pyx_codeobj__258;
static PyObject *__pyx_codeobj__259;
static PyObject *__pyx_codeobj__261;
static PyObject *__pyx_codeobj__263;
static PyObject *__pyx_codeobj__265;
static PyObject *__pyx_codeobj__267;
static PyObject *__pyx_codeobj__269;
static PyObject *__pyx_codeobj__271;
static PyObject *__pyx_codeobj__273;
static PyObject *__pyx_codeobj__275;
static PyObject *__pyx_codeobj__277;
static PyObject *__pyx_codeobj__279;
static PyObject *__pyx_codeobj__281;
static PyObject *__pyx_codeobj__283;
static PyObject *__pyx_codeobj__285;
static PyObject *__pyx_codeobj__287;
static PyObject *__pyx_codeobj__289;
static PyObject *__pyx_codeobj__292;
static PyObject *__pyx_codeobj__295;
static PyObject *__pyx_codeobj__297;
static PyObject *__pyx_codeobj__299;
static PyObject *__pyx_codeobj__301;
static PyObject *__pyx_codeobj__302;
static PyObject *__pyx_codeobj__303;
static PyObject *__pyx_codeobj__304;
static PyObject *__pyx_codeobj__305;
static PyObject *__pyx_codeobj__307;
static PyObject *__pyx_codeobj__309;
static PyObject *__pyx_codeobj__312;
static PyObject *__pyx_codeobj__314;
static PyObject *__pyx_codeobj__316;
static PyObject *__pyx_codeobj__318;
static PyObject *__pyx_codeobj__321;
static PyObject *__pyx_codeobj__323;
static PyObject *__pyx_codeobj__325;
static PyObject *__pyx_codeobj__327;
static PyObject *__pyx_codeobj__329;
static PyObject *__pyx_codeobj__331;
static PyObject *__pyx_codeobj__333;
static PyObject *__pyx_codeobj__336;
static PyObject *__pyx_codeobj__337;
static PyObject *__pyx_codeobj__339;
static PyObject *__pyx_codeobj__349;
static PyObject *__pyx_codeobj__352;
static PyObject *__pyx_codeobj__365;
static PyObject *__pyx_codeobj__367;
static PyObject *__pyx_codeobj__369;
static PyObject *__pyx_codeobj__371;
static PyObject *__pyx_codeobj__373;
/* Late includes */

/* "src/python/grpcio/grpc/_cython/_cygrpc/grpc_string.pyx.pxi":18
 * # This function will ascii encode unicode string inputs if necessary.
 * # In Python3, unicode strings are the default str type.
 * cdef bytes str_to_bytes(object s):             # <<<<<<<<<<<<<<
 *   if s is None or isinstance(s, bytes):
 *     return s
 */

static PyObject *__pyx_f_4grpc_7_cython_6cygrpc_str_to_bytes(PyObject *__pyx_v_s) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  int __pyx_t_1;
  int __pyx_t_2;
  int __pyx_t_3;
  PyObject *__pyx_t_4 = NULL;
  PyObject *__pyx_t_5 = NULL;
  PyObject *__pyx_t_6 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("str_to_bytes", 0);

  /* "src/python/grpcio/grpc/_cython/_cygrpc/grpc_string.pyx.pxi":19
 * # In Python3, unicode strings are the default str type.
 * cdef bytes str_to_bytes(object s):
 *   if s is None or isinstance(s, bytes):             # <<<<<<<<<<<<<<
 *     return s
 *   elif isinstance(s, unicode):
 */
  __pyx_t_2 = (__pyx_v_s == Py_None);
  __pyx_t_3 = (__pyx_t_2 != 0);
  if (!__pyx_t_3) {
  } else {
    __pyx_t_1 = __pyx_t_3;
    goto __pyx_L4_bool_binop_done;
  }
  __pyx_t_3 = PyBytes_Check(__pyx_v_s); 
  __pyx_t_2 = (__pyx_t_3 != 0);
  __pyx_t_1 = __pyx_t_2;
  __pyx_L4_bool_binop_done:;
  if (__pyx_t_1) {

    /* "src/python/grpcio/grpc/_cython/_cygrpc/grpc_string.pyx.pxi":20
 * cdef bytes str_to_bytes(object s):
 *   if s is None or isinstance(s, bytes):
 *     return s             # <<<<<<<<<<<<<<
 *   elif isinstance(s, unicode):
 *     return s.encode('ascii')
 */
    __Pyx_XDECREF(__pyx_r);
    if (!(likely(PyBytes_CheckExact(__pyx_v_s))||((__pyx_v_s) == Py_None)||(PyErr_Format(PyExc_TypeError, "Expected %.16s, got %.200s", "bytes", Py_TYPE(__pyx_v_s)->tp_name), 0))) __PYX_ERR(2, 20, __pyx_L1_error)
    __Pyx_INCREF(__pyx_v_s);
    __pyx_r = ((PyObject*)__pyx_v_s);
    goto __pyx_L0;

    /* "src/python/grpcio/grpc/_cython/_cygrpc/grpc_string.pyx.pxi":19
 * # In Python3, unicode strings are the default str type.
 * cdef bytes str_to_bytes(object s):
 *   if s is None or isinstance(s, bytes):             # <<<<<<<<<<<<<<
 *     return s
 *   elif isinstance(s, unicode):
 */
  }

  /* "src/python/grpcio/grpc/_cython/_cygrpc/grpc_string.pyx.pxi":21
 *   if s is None or isinstance(s, bytes):
 *     return s
 *   elif isinstance(s, unicode):             # <<<<<<<<<<<<<<
 *     return s.encode('ascii')
 *   else:
 */
  __pyx_t_1 = PyUnicode_Check(__pyx_v_s); 
  __pyx_t_2 = (__pyx_t_1 != 0);
  if (likely(__pyx_t_2)) {

    /* "src/python/grpcio/grpc/_cython/_cygrpc/grpc_string.pyx.pxi":22
 *     return s
 *   elif isinstance(s, unicode):
 *     return s.encode('ascii')             # <<<<<<<<<<<<<<
 *   else:
 *     raise TypeError('Expected bytes, str, or unicode, not {}'.format(type(s)))
 */
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_5 = __Pyx_PyObject_GetAttrStr(__pyx_v_s, __pyx_n_s_encode); if (unlikely(!__pyx_t_5)) __PYX_ERR(2, 22, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_5);
    __pyx_t_6 = NULL;
    if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_5))) {
      __pyx_t_6 = PyMethod_GET_SELF(__pyx_t_5);
      if (likely(__pyx_t_6)) {
        PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_5);
        __Pyx_INCREF(__pyx_t_6);
        __Pyx_INCREF(function);
        __Pyx_DECREF_SET(__pyx_t_5, function);
      }
    }
    __pyx_t_4 = (__pyx_t_6) ? __Pyx_PyObject_Call2Args(__pyx_t_5, __pyx_t_6, __pyx_n_s_ascii) : __Pyx_PyObject_CallOneArg(__pyx_t_5, __pyx_n_s_ascii);
    __Pyx_XDECREF(__pyx_t_6); __pyx_t_6 = 0;
    if (unlikely(!__pyx_t_4)) __PYX_ERR(2, 22, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_4);
    __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
    if (!(likely(PyBytes_CheckExact(__pyx_t_4))||((__pyx_t_4) == Py_None)||(PyErr_Format(PyExc_TypeError, "Expected %.16s, got %.200s", "bytes", Py_TYPE(__pyx_t_4)->tp_name), 0))) __PYX_ERR(2, 22, __pyx_L1_error)
    __pyx_r = ((PyObject*)__pyx_t_4);
    __pyx_t_4 = 0;
    goto __pyx_L0;

    /* "src/python/grpcio/grpc/_cython/_cygrpc/grpc_string.pyx.pxi":21
 *   if s is None or isinstance(s, bytes):
 *     return s
 *   elif isinstance(s, unicode):             # <<<<<<<<<<<<<<
 *     return s.encode('ascii')
 *   else:
 */
  }

  /* "src/python/grpcio/grpc/_cython/_cygrpc/grpc_string.pyx.pxi":24
 *     return s.encode('ascii')
 *   else:
 *     raise TypeError('Expected bytes, str, or unicode, not {}'.format(type(s)))             # <<<<<<<<<<<<<<
 * 
 * 
 */
  /*else*/ {
    __pyx_t_5 = __Pyx_PyObject_GetAttrStr(__pyx_kp_s_Expected_bytes_str_or_unicode_no, __pyx_n_s_format); if (unlikely(!__pyx_t_5)) __PYX_ERR(2, 24, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_5);
    __pyx_t_6 = NULL;
    if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_5))) {
      __pyx_t_6 = PyMethod_GET_SELF(__pyx_t_5);
      if (likely(__pyx_t_6)) {
        PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_5);
        __Pyx_INCREF(__pyx_t_6);
        __Pyx_INCREF(function);
        __Pyx_DECREF_SET(__pyx_t_5, function);
      }
    }
    __pyx_t_4 = (__pyx_t_6) ? __Pyx_PyObject_Call2Args(__pyx_t_5, __pyx_t_6, ((PyObject *)Py_TYPE(__pyx_v_s))) : __Pyx_PyObject_CallOneArg(__pyx_t_5, ((PyObject *)Py_TYPE(__pyx_v_s)));
    __Pyx_XDECREF(__pyx_t_6); __pyx_t_6 = 0;
    if (unlikely(!__pyx_t_4)) __PYX_ERR(2, 24, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_4);
    __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
    __pyx_t_5 = __Pyx_PyObject_CallOneArg(__pyx_builtin_TypeError, __pyx_t_4); if (unlikely(!__pyx_t_5)) __PYX_ERR(2, 24, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_5);
    __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
    __Pyx_Raise(__pyx_t_5, 0, 0, 0);
    __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
    __PYX_ERR(2, 24, __pyx_L1_error)
  }

  /* "src/python/grpcio/grpc/_cython/_cygrpc/grpc_string.pyx.pxi":18
 * # This function will ascii encode unicode string inputs if necessary.
 * # In Python3, unicode strings are the default str type.
 * cdef bytes str_to_bytes(object s):             # <<<<<<<<<<<<<<
 *   if s is None or isinstance(s, bytes):
 *     return s
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_4);
  __Pyx_XDECREF(__pyx_t_5);
  __Pyx_XDECREF(__pyx_t_6);
  __Pyx_AddTraceback("grpc._cython.cygrpc.str_to_bytes", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = 0;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "src/python/grpcio/grpc/_cython/_cygrpc/grpc_string.pyx.pxi":32
 * # parameter rather than "object"), but would it be nice for our users? Right
 * # now we haven't yet heard from enough users to know one way or another.
 * cdef bytes _encode(object string_or_none):             # <<<<<<<<<<<<<<
 *   if string_or_none is None:
 *     return b''
 */

static PyObject *__pyx_f_4grpc_7_cython_6cygrpc__encode(PyObject *__pyx_v_string_or_none) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  int __pyx_t_1;
  int __pyx_t_2;
  PyObject *__pyx_t_3 = NULL;
  PyObject *__pyx_t_4 = NULL;
  PyObject *__pyx_t_5 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("_encode", 0);

  /* "src/python/grpcio/grpc/_cython/_cygrpc/grpc_string.pyx.pxi":33
 * # now we haven't yet heard from enough users to know one way or another.
 * cdef bytes _encode(object string_or_none):
 *   if string_or_none is None:             # <<<<<<<<<<<<<<
 *     return b''
 *   elif isinstance(string_or_none, (bytes,)):
 */
  __pyx_t_1 = (__pyx_v_string_or_none == Py_None);
  __pyx_t_2 = (__pyx_t_1 != 0);
  if (__pyx_t_2) {

    /* "src/python/grpcio/grpc/_cython/_cygrpc/grpc_string.pyx.pxi":34
 * cdef bytes _encode(object string_or_none):
 *   if string_or_none is None:
 *     return b''             # <<<<<<<<<<<<<<
 *   elif isinstance(string_or_none, (bytes,)):
 *     return <bytes>string_or_none
 */
    __Pyx_XDECREF(__pyx_r);
    __Pyx_INCREF(__pyx_kp_b_);
    __pyx_r = __pyx_kp_b_;
    goto __pyx_L0;

    /* "src/python/grpcio/grpc/_cython/_cygrpc/grpc_string.pyx.pxi":33
 * # now we haven't yet heard from enough users to know one way or another.
 * cdef bytes _encode(object string_or_none):
 *   if string_or_none is None:             # <<<<<<<<<<<<<<
 *     return b''
 *   elif isinstance(string_or_none, (bytes,)):
 */
  }

  /* "src/python/grpcio/grpc/_cython/_cygrpc/grpc_string.pyx.pxi":35
 *   if string_or_none is None:
 *     return b''
 *   elif isinstance(string_or_none, (bytes,)):             # <<<<<<<<<<<<<<
 *     return <bytes>string_or_none
 *   elif isinstance(string_or_none, (unicode,)):
 */
  __pyx_t_2 = PyBytes_Check(__pyx_v_string_or_none); 
  __pyx_t_1 = (__pyx_t_2 != 0);
  if (__pyx_t_1) {

    /* "src/python/grpcio/grpc/_cython/_cygrpc/grpc_string.pyx.pxi":36
 *     return b''
 *   elif isinstance(string_or_none, (bytes,)):
 *     return <bytes>string_or_none             # <<<<<<<<<<<<<<
 *   elif isinstance(string_or_none, (unicode,)):
 *     return string_or_none.encode('utf8')
 */
    __Pyx_XDECREF(__pyx_r);
    __Pyx_INCREF(((PyObject*)__pyx_v_string_or_none));
    __pyx_r = ((PyObject*)__pyx_v_string_or_none);
    goto __pyx_L0;

    /* "src/python/grpcio/grpc/_cython/_cygrpc/grpc_string.pyx.pxi":35
 *   if string_or_none is None:
 *     return b''
 *   elif isinstance(string_or_none, (bytes,)):             # <<<<<<<<<<<<<<
 *     return <bytes>string_or_none
 *   elif isinstance(string_or_none, (unicode,)):
 */
  }

  /* "src/python/grpcio/grpc/_cython/_cygrpc/grpc_string.pyx.pxi":37
 *   elif isinstance(string_or_none, (bytes,)):
 *     return <bytes>string_or_none
 *   elif isinstance(string_or_none, (unicode,)):             # <<<<<<<<<<<<<<
 *     return string_or_none.encode('utf8')
 *   else:
 */
  __pyx_t_1 = PyUnicode_Check(__pyx_v_string_or_none); 
  __pyx_t_2 = (__pyx_t_1 != 0);
  if (likely(__pyx_t_2)) {

    /* "src/python/grpcio/grpc/_cython/_cygrpc/grpc_string.pyx.pxi":38
 *     return <bytes>string_or_none
 *   elif isinstance(string_or_none, (unicode,)):
 *     return string_or_none.encode('utf8')             # <<<<<<<<<<<<<<
 *   else:
 *     raise TypeError('Expected str, not {}'.format(type(string_or_none)))
 */
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_4 = __Pyx_PyObject_GetAttrStr(__pyx_v_string_or_none, __pyx_n_s_encode); if (unlikely(!__pyx_t_4)) __PYX_ERR(2, 38, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_4);
    __pyx_t_5 = NULL;
    if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_4))) {
      __pyx_t_5 = PyMethod_GET_SELF(__pyx_t_4);
      if (likely(__pyx_t_5)) {
        PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_4);
        __Pyx_INCREF(__pyx_t_5);
        __Pyx_INCREF(function);
        __Pyx_DECREF_SET(__pyx_t_4, function);
      }
    }
    __pyx_t_3 = (__pyx_t_5) ? __Pyx_PyObject_Call2Args(__pyx_t_4, __pyx_t_5, __pyx_n_s_utf8) : __Pyx_PyObject_CallOneArg(__pyx_t_4, __pyx_n_s_utf8);
    __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0;
    if (unlikely(!__pyx_t_3)) __PYX_ERR(2, 38, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_3);
    __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
    if (!(likely(PyBytes_CheckExact(__pyx_t_3))||((__pyx_t_3) == Py_None)||(PyErr_Format(PyExc_TypeError, "Expected %.16s, got %.200s", "bytes", Py_TYPE(__pyx_t_3)->tp_name), 0))) __PYX_ERR(2, 38, __pyx_L1_error)
    __pyx_r = ((PyObject*)__pyx_t_3);
    __pyx_t_3 = 0;
    goto __pyx_L0;

    /* "src/python/grpcio/grpc/_cython/_cygrpc/grpc_string.pyx.pxi":37
 *   elif isinstance(string_or_none, (bytes,)):
 *     return <bytes>string_or_none
 *   elif isinstance(string_or_none, (unicode,)):             # <<<<<<<<<<<<<<
 *     return string_or_none.encode('utf8')
 *   else:
 */
  }

  /* "src/python/grpcio/grpc/_cython/_cygrpc/grpc_string.pyx.pxi":40
 *     return string_or_none.encode('utf8')
 *   else:
 *     raise TypeError('Expected str, not {}'.format(type(string_or_none)))             # <<<<<<<<<<<<<<
 * 
 * 
 */
  /*else*/ {
    __pyx_t_4 = __Pyx_PyObject_GetAttrStr(__pyx_kp_s_Expected_str_not, __pyx_n_s_format); if (unlikely(!__pyx_t_4)) __PYX_ERR(2, 40, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_4);
    __pyx_t_5 = NULL;
    if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_4))) {
      __pyx_t_5 = PyMethod_GET_SELF(__pyx_t_4);
      if (likely(__pyx_t_5)) {
        PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_4);
        __Pyx_INCREF(__pyx_t_5);
        __Pyx_INCREF(function);
        __Pyx_DECREF_SET(__pyx_t_4, function);
      }
    }
    __pyx_t_3 = (__pyx_t_5) ? __Pyx_PyObject_Call2Args(__pyx_t_4, __pyx_t_5, ((PyObject *)Py_TYPE(__pyx_v_string_or_none))) : __Pyx_PyObject_CallOneArg(__pyx_t_4, ((PyObject *)Py_TYPE(__pyx_v_string_or_none)));
    __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0;
    if (unlikely(!__pyx_t_3)) __PYX_ERR(2, 40, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_3);
    __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
    __pyx_t_4 = __Pyx_PyObject_CallOneArg(__pyx_builtin_TypeError, __pyx_t_3); if (unlikely(!__pyx_t_4)) __PYX_ERR(2, 40, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_4);
    __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
    __Pyx_Raise(__pyx_t_4, 0, 0, 0);
    __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
    __PYX_ERR(2, 40, __pyx_L1_error)
  }

  /* "src/python/grpcio/grpc/_cython/_cygrpc/grpc_string.pyx.pxi":32
 * # parameter rather than "object"), but would it be nice for our users? Right
 * # now we haven't yet heard from enough users to know one way or another.
 * cdef bytes _encode(object string_or_none):             # <<<<<<<<<<<<<<
 *   if string_or_none is None:
 *     return b''
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_3);
  __Pyx_XDECREF(__pyx_t_4);
  __Pyx_XDECREF(__pyx_t_5);
  __Pyx_AddTraceback("grpc._cython.cygrpc._encode", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = 0;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "src/python/grpcio/grpc/_cython/_cygrpc/grpc_string.pyx.pxi":43
 * 
 * 
 * cdef str _decode(bytes bytestring):             # <<<<<<<<<<<<<<
 *     if isinstance(bytestring, (str,)):
 *         return <str>bytestring
 */

static PyObject *__pyx_f_4grpc_7_cython_6cygrpc__decode(PyObject *__pyx_v_bytestring) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  int __pyx_t_1;
  int __pyx_t_2;
  PyObject *__pyx_t_3 = NULL;
  PyObject *__pyx_t_4 = NULL;
  PyObject *__pyx_t_5 = NULL;
  PyObject *__pyx_t_6 = NULL;
  int __pyx_t_7;
  PyObject *__pyx_t_8 = NULL;
  PyObject *__pyx_t_9 = NULL;
  PyObject *__pyx_t_10 = NULL;
  PyObject *__pyx_t_11 = NULL;
  PyObject *__pyx_t_12 = NULL;
  PyObject *__pyx_t_13 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("_decode", 0);

  /* "src/python/grpcio/grpc/_cython/_cygrpc/grpc_string.pyx.pxi":44
 * 
 * cdef str _decode(bytes bytestring):
 *     if isinstance(bytestring, (str,)):             # <<<<<<<<<<<<<<
 *         return <str>bytestring
 *     else:
 */
  __pyx_t_1 = PyString_Check(__pyx_v_bytestring); 
  __pyx_t_2 = (__pyx_t_1 != 0);
  if (__pyx_t_2) {

    /* "src/python/grpcio/grpc/_cython/_cygrpc/grpc_string.pyx.pxi":45
 * cdef str _decode(bytes bytestring):
 *     if isinstance(bytestring, (str,)):
 *         return <str>bytestring             # <<<<<<<<<<<<<<
 *     else:
 *         try:
 */
    __Pyx_XDECREF(__pyx_r);
    __Pyx_INCREF(((PyObject*)__pyx_v_bytestring));
    __pyx_r = ((PyObject*)__pyx_v_bytestring);
    goto __pyx_L0;

    /* "src/python/grpcio/grpc/_cython/_cygrpc/grpc_string.pyx.pxi":44
 * 
 * cdef str _decode(bytes bytestring):
 *     if isinstance(bytestring, (str,)):             # <<<<<<<<<<<<<<
 *         return <str>bytestring
 *     else:
 */
  }

  /* "src/python/grpcio/grpc/_cython/_cygrpc/grpc_string.pyx.pxi":47
 *         return <str>bytestring
 *     else:
 *         try:             # <<<<<<<<<<<<<<
 *             return bytestring.decode('utf8')
 *         except UnicodeDecodeError:
 */
  /*else*/ {
    {
      __Pyx_PyThreadState_declare
      __Pyx_PyThreadState_assign
      __Pyx_ExceptionSave(&__pyx_t_3, &__pyx_t_4, &__pyx_t_5);
      __Pyx_XGOTREF(__pyx_t_3);
      __Pyx_XGOTREF(__pyx_t_4);
      __Pyx_XGOTREF(__pyx_t_5);
      /*try:*/ {

        /* "src/python/grpcio/grpc/_cython/_cygrpc/grpc_string.pyx.pxi":48
 *     else:
 *         try:
 *             return bytestring.decode('utf8')             # <<<<<<<<<<<<<<
 *         except UnicodeDecodeError:
 *             _LOGGER.exception('Invalid encoding on %s', bytestring)
 */
        __Pyx_XDECREF(__pyx_r);
        if (unlikely(__pyx_v_bytestring == Py_None)) {
          PyErr_Format(PyExc_AttributeError, "'NoneType' object has no attribute '%.30s'", "decode");
          __PYX_ERR(2, 48, __pyx_L4_error)
        }
        __pyx_t_6 = __Pyx_decode_bytes(__pyx_v_bytestring, 0, PY_SSIZE_T_MAX, NULL, NULL, PyUnicode_DecodeUTF8); if (unlikely(!__pyx_t_6)) __PYX_ERR(2, 48, __pyx_L4_error)
        __Pyx_GOTREF(__pyx_t_6);
        if (!(likely(PyString_CheckExact(__pyx_t_6))||(PyErr_Format(PyExc_TypeError, "Expected %.16s, got %.200s", "str", Py_TYPE(__pyx_t_6)->tp_name), 0))) __PYX_ERR(2, 48, __pyx_L4_error)
        __pyx_r = ((PyObject*)__pyx_t_6);
        __pyx_t_6 = 0;
        goto __pyx_L8_try_return;

        /* "src/python/grpcio/grpc/_cython/_cygrpc/grpc_string.pyx.pxi":47
 *         return <str>bytestring
 *     else:
 *         try:             # <<<<<<<<<<<<<<
 *             return bytestring.decode('utf8')
 *         except UnicodeDecodeError:
 */
      }
      __pyx_L4_error:;
      __Pyx_XDECREF(__pyx_t_6); __pyx_t_6 = 0;

      /* "src/python/grpcio/grpc/_cython/_cygrpc/grpc_string.pyx.pxi":49
 *         try:
 *             return bytestring.decode('utf8')
 *         except UnicodeDecodeError:             # <<<<<<<<<<<<<<
 *             _LOGGER.exception('Invalid encoding on %s', bytestring)
 *             return bytestring.decode('latin1')
 */
      __pyx_t_7 = __Pyx_PyErr_ExceptionMatches(__pyx_builtin_UnicodeDecodeError);
      if (__pyx_t_7) {
        __Pyx_AddTraceback("grpc._cython.cygrpc._decode", __pyx_clineno, __pyx_lineno, __pyx_filename);
        if (__Pyx_GetException(&__pyx_t_6, &__pyx_t_8, &__pyx_t_9) < 0) __PYX_ERR(2, 49, __pyx_L6_except_error)
        __Pyx_GOTREF(__pyx_t_6);
        __Pyx_GOTREF(__pyx_t_8);
        __Pyx_GOTREF(__pyx_t_9);

        /* "src/python/grpcio/grpc/_cython/_cygrpc/grpc_string.pyx.pxi":50
 *             return bytestring.decode('utf8')
 *         except UnicodeDecodeError:
 *             _LOGGER.exception('Invalid encoding on %s', bytestring)             # <<<<<<<<<<<<<<
 *             return bytestring.decode('latin1')
 */
        __Pyx_GetModuleGlobalName(__pyx_t_11, __pyx_n_s_LOGGER); if (unlikely(!__pyx_t_11)) __PYX_ERR(2, 50, __pyx_L6_except_error)
        __Pyx_GOTREF(__pyx_t_11);
        __pyx_t_12 = __Pyx_PyObject_GetAttrStr(__pyx_t_11, __pyx_n_s_exception); if (unlikely(!__pyx_t_12)) __PYX_ERR(2, 50, __pyx_L6_except_error)
        __Pyx_GOTREF(__pyx_t_12);
        __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0;
        __pyx_t_11 = NULL;
        __pyx_t_7 = 0;
        if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_12))) {
          __pyx_t_11 = PyMethod_GET_SELF(__pyx_t_12);
          if (likely(__pyx_t_11)) {
            PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_12);
            __Pyx_INCREF(__pyx_t_11);
            __Pyx_INCREF(function);
            __Pyx_DECREF_SET(__pyx_t_12, function);
            __pyx_t_7 = 1;
          }
        }
        #if CYTHON_FAST_PYCALL
        if (PyFunction_Check(__pyx_t_12)) {
          PyObject *__pyx_temp[3] = {__pyx_t_11, __pyx_kp_s_Invalid_encoding_on_s, __pyx_v_bytestring};
          __pyx_t_10 = __Pyx_PyFunction_FastCall(__pyx_t_12, __pyx_temp+1-__pyx_t_7, 2+__pyx_t_7); if (unlikely(!__pyx_t_10)) __PYX_ERR(2, 50, __pyx_L6_except_error)
          __Pyx_XDECREF(__pyx_t_11); __pyx_t_11 = 0;
          __Pyx_GOTREF(__pyx_t_10);
        } else
        #endif
        #if CYTHON_FAST_PYCCALL
        if (__Pyx_PyFastCFunction_Check(__pyx_t_12)) {
          PyObject *__pyx_temp[3] = {__pyx_t_11, __pyx_kp_s_Invalid_encoding_on_s, __pyx_v_bytestring};
          __pyx_t_10 = __Pyx_PyCFunction_FastCall(__pyx_t_12, __pyx_temp+1-__pyx_t_7, 2+__pyx_t_7); if (unlikely(!__pyx_t_10)) __PYX_ERR(2, 50, __pyx_L6_except_error)
          __Pyx_XDECREF(__pyx_t_11); __pyx_t_11 = 0;
          __Pyx_GOTREF(__pyx_t_10);
        } else
        #endif
        {
          __pyx_t_13 = PyTuple_New(2+__pyx_t_7); if (unlikely(!__pyx_t_13)) __PYX_ERR(2, 50, __pyx_L6_except_error)
          __Pyx_GOTREF(__pyx_t_13);
          if (__pyx_t_11) {
            __Pyx_GIVEREF(__pyx_t_11); PyTuple_SET_ITEM(__pyx_t_13, 0, __pyx_t_11); __pyx_t_11 = NULL;
          }
          __Pyx_INCREF(__pyx_kp_s_Invalid_encoding_on_s);
          __Pyx_GIVEREF(__pyx_kp_s_Invalid_encoding_on_s);
          PyTuple_SET_ITEM(__pyx_t_13, 0+__pyx_t_7, __pyx_kp_s_Invalid_encoding_on_s);
          __Pyx_INCREF(__pyx_v_bytestring);
          __Pyx_GIVEREF(__pyx_v_bytestring);
          PyTuple_SET_ITEM(__pyx_t_13, 1+__pyx_t_7, __pyx_v_bytestring);
          __pyx_t_10 = __Pyx_PyObject_Call(__pyx_t_12, __pyx_t_13, NULL); if (unlikely(!__pyx_t_10)) __PYX_ERR(2, 50, __pyx_L6_except_error)
          __Pyx_GOTREF(__pyx_t_10);
          __Pyx_DECREF(__pyx_t_13); __pyx_t_13 = 0;
        }
        __Pyx_DECREF(__pyx_t_12); __pyx_t_12 = 0;
        __Pyx_DECREF(__pyx_t_10); __pyx_t_10 = 0;

        /* "src/python/grpcio/grpc/_cython/_cygrpc/grpc_string.pyx.pxi":51
 *         except UnicodeDecodeError:
 *             _LOGGER.exception('Invalid encoding on %s', bytestring)
 *             return bytestring.decode('latin1')             # <<<<<<<<<<<<<<
 */
        __Pyx_XDECREF(__pyx_r);
        if (unlikely(__pyx_v_bytestring == Py_None)) {
          PyErr_Format(PyExc_AttributeError, "'NoneType' object has no attribute '%.30s'", "decode");
          __PYX_ERR(2, 51, __pyx_L6_except_error)
        }
        __pyx_t_10 = __Pyx_decode_bytes(__pyx_v_bytestring, 0, PY_SSIZE_T_MAX, NULL, NULL, PyUnicode_DecodeLatin1); if (unlikely(!__pyx_t_10)) __PYX_ERR(2, 51, __pyx_L6_except_error)
        __Pyx_GOTREF(__pyx_t_10);
        if (!(likely(PyString_CheckExact(__pyx_t_10))||(PyErr_Format(PyExc_TypeError, "Expected %.16s, got %.200s", "str", Py_TYPE(__pyx_t_10)->tp_name), 0))) __PYX_ERR(2, 51, __pyx_L6_except_error)
        __pyx_r = ((PyObject*)__pyx_t_10);
        __pyx_t_10 = 0;
        __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
        __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
        __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0;
        goto __pyx_L7_except_return;
      }
      goto __pyx_L6_except_error;
      __pyx_L6_except_error:;

      /* "src/python/grpcio/grpc/_cython/_cygrpc/grpc_string.pyx.pxi":47
 *         return <str>bytestring
 *     else:
 *         try:             # <<<<<<<<<<<<<<
 *             return bytestring.decode('utf8')
 *         except UnicodeDecodeError:
 */
      __Pyx_XGIVEREF(__pyx_t_3);
      __Pyx_XGIVEREF(__pyx_t_4);
      __Pyx_XGIVEREF(__pyx_t_5);
      __Pyx_ExceptionReset(__pyx_t_3, __pyx_t_4, __pyx_t_5);
      goto __pyx_L1_error;
      __pyx_L8_try_return:;
      __Pyx_XGIVEREF(__pyx_t_3);
      __Pyx_XGIVEREF(__pyx_t_4);
      __Pyx_XGIVEREF(__pyx_t_5);
      __Pyx_ExceptionReset(__pyx_t_3, __pyx_t_4, __pyx_t_5);
      goto __pyx_L0;
      __pyx_L7_except_return:;
      __Pyx_XGIVEREF(__pyx_t_3);
      __Pyx_XGIVEREF(__pyx_t_4);
      __Pyx_XGIVEREF(__pyx_t_5);
      __Pyx_ExceptionReset(__pyx_t_3, __pyx_t_4, __pyx_t_5);
      goto __pyx_L0;
    }
  }

  /* "src/python/grpcio/grpc/_cython/_cygrpc/grpc_string.pyx.pxi":43
 * 
 * 
 * cdef str _decode(bytes bytestring):             # <<<<<<<<<<<<<<
 *     if isinstance(bytestring, (str,)):
 *         return <str>bytestring
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_6);
  __Pyx_XDECREF(__pyx_t_8);
  __Pyx_XDECREF(__pyx_t_9);
  __Pyx_XDECREF(__pyx_t_10);
  __Pyx_XDECREF(__pyx_t_11);
  __Pyx_XDECREF(__pyx_t_12);
  __Pyx_XDECREF(__pyx_t_13);
  __Pyx_AddTraceback("grpc._cython.cygrpc._decode", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = 0;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "(tree fragment)":1
 * def __reduce_cython__(self):             # <<<<<<<<<<<<<<
 *     raise TypeError("self.arg cannot be converted to a Python object for pickling")
 * def __setstate_cython__(self, __pyx_state):
 */

/* Python wrapper */
static PyObject *__pyx_pw_4grpc_7_cython_6cygrpc_15_GrpcArgWrapper_1__reduce_cython__(PyObject *__pyx_v_self, CYTHON_UNUSED PyObject *unused); /*proto*/
static PyObject *__pyx_pw_4grpc_7_cython_6cygrpc_15_GrpcArgWrapper_1__reduce_cython__(PyObject *__pyx_v_self, CYTHON_UNUSED PyObject *unused) {
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__reduce_cython__ (wrapper)", 0);
  __pyx_r = __pyx_pf_4grpc_7_cython_6cygrpc_15_GrpcArgWrapper___reduce_cython__(((struct __pyx_obj_4grpc_7_cython_6cygrpc__GrpcArgWrapper *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_4grpc_7_cython_6cygrpc_15_GrpcArgWrapper___reduce_cython__(CYTHON_UNUSED struct __pyx_obj_4grpc_7_cython_6cygrpc__GrpcArgWrapper *__pyx_v_self) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("__reduce_cython__", 0);

  /* "(tree fragment)":2
 * def __reduce_cython__(self):
 *     raise TypeError("self.arg cannot be converted to a Python object for pickling")             # <<<<<<<<<<<<<<
 * def __setstate_cython__(self, __pyx_state):
 *     raise TypeError("self.arg cannot be converted to a Python object for pickling")
 */
  __pyx_t_1 = __Pyx_PyObject_Call(__pyx_builtin_TypeError, __pyx_tuple__2, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(11, 2, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_Raise(__pyx_t_1, 0, 0, 0);
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  __PYX_ERR(11, 2, __pyx_L1_error)

  /* "(tree fragment)":1
 * def __reduce_cython__(self):             # <<<<<<<<<<<<<<
 *     raise TypeError("self.arg cannot be converted to a Python object for pickling")
 * def __setstate_cython__(self, __pyx_state):
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_AddTraceback("grpc._cython.cygrpc._GrpcArgWrapper.__reduce_cython__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "(tree fragment)":3
 * def __reduce_cython__(self):
 *     raise TypeError("self.arg cannot be converted to a Python object for pickling")
 * def __setstate_cython__(self, __pyx_state):             # <<<<<<<<<<<<<<
 *     raise TypeError("self.arg cannot be converted to a Python object for pickling")
 */

/* Python wrapper */
static PyObject *__pyx_pw_4grpc_7_cython_6cygrpc_15_GrpcArgWrapper_3__setstate_cython__(PyObject *__pyx_v_self, PyObject *__pyx_v___pyx_state); /*proto*/
static PyObject *__pyx_pw_4grpc_7_cython_6cygrpc_15_GrpcArgWrapper_3__setstate_cython__(PyObject *__pyx_v_self, PyObject *__pyx_v___pyx_state) {
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__setstate_cython__ (wrapper)", 0);
  __pyx_r = __pyx_pf_4grpc_7_cython_6cygrpc_15_GrpcArgWrapper_2__setstate_cython__(((struct __pyx_obj_4grpc_7_cython_6cygrpc__GrpcArgWrapper *)__pyx_v_self), ((PyObject *)__pyx_v___pyx_state));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_4grpc_7_cython_6cygrpc_15_GrpcArgWrapper_2__setstate_cython__(CYTHON_UNUSED struct __pyx_obj_4grpc_7_cython_6cygrpc__GrpcArgWrapper *__pyx_v_self, CYTHON_UNUSED PyObject *__pyx_v___pyx_state) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("__setstate_cython__", 0);

  /* "(tree fragment)":4
 *     raise TypeError("self.arg cannot be converted to a Python object for pickling")
 * def __setstate_cython__(self, __pyx_state):
 *     raise TypeError("self.arg cannot be converted to a Python object for pickling")             # <<<<<<<<<<<<<<
 */
  __pyx_t_1 = __Pyx_PyObject_Call(__pyx_builtin_TypeError, __pyx_tuple__3, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(11, 4, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_Raise(__pyx_t_1, 0, 0, 0);
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  __PYX_ERR(11, 4, __pyx_L1_error)

  /* "(tree fragment)":3
 * def __reduce_cython__(self):
 *     raise TypeError("self.arg cannot be converted to a Python object for pickling")
 * def __setstate_cython__(self, __pyx_state):             # <<<<<<<<<<<<<<
 *     raise TypeError("self.arg cannot be converted to a Python object for pickling")
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_AddTraceback("grpc._cython.cygrpc._GrpcArgWrapper.__setstate_cython__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "src/python/grpcio/grpc/_cython/_cygrpc/arguments.pyx.pxi":21
 * 
 * 
 * cdef tuple _wrap_grpc_arg(grpc_arg arg):             # <<<<<<<<<<<<<<
 *   wrapped = _GrpcArgWrapper()
 *   wrapped.arg = arg
 */

static PyObject *__pyx_f_4grpc_7_cython_6cygrpc__wrap_grpc_arg(grpc_arg __pyx_v_arg) {
  struct __pyx_obj_4grpc_7_cython_6cygrpc__GrpcArgWrapper *__pyx_v_wrapped = NULL;
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("_wrap_grpc_arg", 0);

  /* "src/python/grpcio/grpc/_cython/_cygrpc/arguments.pyx.pxi":22
 * 
 * cdef tuple _wrap_grpc_arg(grpc_arg arg):
 *   wrapped = _GrpcArgWrapper()             # <<<<<<<<<<<<<<
 *   wrapped.arg = arg
 *   return ("grpc.python._cygrpc._GrpcArgWrapper", wrapped)
 */
  __pyx_t_1 = __Pyx_PyObject_CallNoArg(((PyObject *)__pyx_ptype_4grpc_7_cython_6cygrpc__GrpcArgWrapper)); if (unlikely(!__pyx_t_1)) __PYX_ERR(3, 22, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_v_wrapped = ((struct __pyx_obj_4grpc_7_cython_6cygrpc__GrpcArgWrapper *)__pyx_t_1);
  __pyx_t_1 = 0;

  /* "src/python/grpcio/grpc/_cython/_cygrpc/arguments.pyx.pxi":23
 * cdef tuple _wrap_grpc_arg(grpc_arg arg):
 *   wrapped = _GrpcArgWrapper()
 *   wrapped.arg = arg             # <<<<<<<<<<<<<<
 *   return ("grpc.python._cygrpc._GrpcArgWrapper", wrapped)
 * 
 */
  __pyx_v_wrapped->arg = __pyx_v_arg;

  /* "src/python/grpcio/grpc/_cython/_cygrpc/arguments.pyx.pxi":24
 *   wrapped = _GrpcArgWrapper()
 *   wrapped.arg = arg
 *   return ("grpc.python._cygrpc._GrpcArgWrapper", wrapped)             # <<<<<<<<<<<<<<
 * 
 * 
 */
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_1 = PyTuple_New(2); if (unlikely(!__pyx_t_1)) __PYX_ERR(3, 24, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_INCREF(__pyx_kp_s_grpc_python__cygrpc__GrpcArgWrap);
  __Pyx_GIVEREF(__pyx_kp_s_grpc_python__cygrpc__GrpcArgWrap);
  PyTuple_SET_ITEM(__pyx_t_1, 0, __pyx_kp_s_grpc_python__cygrpc__GrpcArgWrap);
  __Pyx_INCREF(((PyObject *)__pyx_v_wrapped));
  __Pyx_GIVEREF(((PyObject *)__pyx_v_wrapped));
  PyTuple_SET_ITEM(__pyx_t_1, 1, ((PyObject *)__pyx_v_wrapped));
  __pyx_r = ((PyObject*)__pyx_t_1);
  __pyx_t_1 = 0;
  goto __pyx_L0;

  /* "src/python/grpcio/grpc/_cython/_cygrpc/arguments.pyx.pxi":21
 * 
 * 
 * cdef tuple _wrap_grpc_arg(grpc_arg arg):             # <<<<<<<<<<<<<<
 *   wrapped = _GrpcArgWrapper()
 *   wrapped.arg = arg
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_AddTraceback("grpc._cython.cygrpc._wrap_grpc_arg", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = 0;
  __pyx_L0:;
  __Pyx_XDECREF((PyObject *)__pyx_v_wrapped);
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "src/python/grpcio/grpc/_cython/_cygrpc/arguments.pyx.pxi":27
 * 
 * 
 * cdef grpc_arg _unwrap_grpc_arg(tuple wrapped_arg):             # <<<<<<<<<<<<<<
 *   cdef _GrpcArgWrapper wrapped = wrapped_arg[1]
 *   return wrapped.arg
 */

static grpc_arg __pyx_f_4grpc_7_cython_6cygrpc__unwrap_grpc_arg(PyObject *__pyx_v_wrapped_arg) {
  struct __pyx_obj_4grpc_7_cython_6cygrpc__GrpcArgWrapper *__pyx_v_wrapped = 0;
  grpc_arg __pyx_r;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("_unwrap_grpc_arg", 0);

  /* "src/python/grpcio/grpc/_cython/_cygrpc/arguments.pyx.pxi":28
 * 
 * cdef grpc_arg _unwrap_grpc_arg(tuple wrapped_arg):
 *   cdef _GrpcArgWrapper wrapped = wrapped_arg[1]             # <<<<<<<<<<<<<<
 *   return wrapped.arg
 * 
 */
  if (unlikely(__pyx_v_wrapped_arg == Py_None)) {
    PyErr_SetString(PyExc_TypeError, "'NoneType' object is not subscriptable");
    __PYX_ERR(3, 28, __pyx_L1_error)
  }
  __pyx_t_1 = __Pyx_GetItemInt_Tuple(__pyx_v_wrapped_arg, 1, long, 1, __Pyx_PyInt_From_long, 0, 0, 1); if (unlikely(!__pyx_t_1)) __PYX_ERR(3, 28, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  if (!(likely(((__pyx_t_1) == Py_None) || likely(__Pyx_TypeTest(__pyx_t_1, __pyx_ptype_4grpc_7_cython_6cygrpc__GrpcArgWrapper))))) __PYX_ERR(3, 28, __pyx_L1_error)
  __pyx_v_wrapped = ((struct __pyx_obj_4grpc_7_cython_6cygrpc__GrpcArgWrapper *)__pyx_t_1);
  __pyx_t_1 = 0;

  /* "src/python/grpcio/grpc/_cython/_cygrpc/arguments.pyx.pxi":29
 * cdef grpc_arg _unwrap_grpc_arg(tuple wrapped_arg):
 *   cdef _GrpcArgWrapper wrapped = wrapped_arg[1]
 *   return wrapped.arg             # <<<<<<<<<<<<<<
 * 
 * 
 */
  __pyx_r = __pyx_v_wrapped->arg;
  goto __pyx_L0;

  /* "src/python/grpcio/grpc/_cython/_cygrpc/arguments.pyx.pxi":27
 * 
 * 
 * cdef grpc_arg _unwrap_grpc_arg(tuple wrapped_arg):             # <<<<<<<<<<<<<<
 *   cdef _GrpcArgWrapper wrapped = wrapped_arg[1]
 *   return wrapped.arg
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_WriteUnraisable("grpc._cython.cygrpc._unwrap_grpc_arg", __pyx_clineno, __pyx_lineno, __pyx_filename, 1, 0);
  __Pyx_pretend_to_initialize(&__pyx_r);
  __pyx_L0:;
  __Pyx_XDECREF((PyObject *)__pyx_v_wrapped);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "src/python/grpcio/grpc/_cython/_cygrpc/arguments.pyx.pxi":34
 * cdef class _ChannelArg:
 * 
 *   cdef void c(self, argument, references) except *:             # <<<<<<<<<<<<<<
 *     key, value = argument
 *     cdef bytes encoded_key = _encode(key)
 */

static void __pyx_f_4grpc_7_cython_6cygrpc_11_ChannelArg_c(struct __pyx_obj_4grpc_7_cython_6cygrpc__ChannelArg *__pyx_v_self, PyObject *__pyx_v_argument, PyObject *__pyx_v_references) {
  PyObject *__pyx_v_key = NULL;
  PyObject *__pyx_v_value = NULL;
  PyObject *__pyx_v_encoded_key = 0;
  PyObject *__pyx_v_encoded_value = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  PyObject *__pyx_t_2 = NULL;
  PyObject *__pyx_t_3 = NULL;
  PyObject *(*__pyx_t_4)(PyObject *);
  int __pyx_t_5;
  int __pyx_t_6;
  int __pyx_t_7;
  char *__pyx_t_8;
  int __pyx_t_9;
  int __pyx_t_10;
  grpc_arg __pyx_t_11;
  __pyx_t_4grpc_7_cython_6cygrpc_intptr_t __pyx_t_12;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("c", 0);

  /* "src/python/grpcio/grpc/_cython/_cygrpc/arguments.pyx.pxi":35
 * 
 *   cdef void c(self, argument, references) except *:
 *     key, value = argument             # <<<<<<<<<<<<<<
 *     cdef bytes encoded_key = _encode(key)
 *     if encoded_key is not key:
 */
  if ((likely(PyTuple_CheckExact(__pyx_v_argument))) || (PyList_CheckExact(__pyx_v_argument))) {
    PyObject* sequence = __pyx_v_argument;
    Py_ssize_t size = __Pyx_PySequence_SIZE(sequence);
    if (unlikely(size != 2)) {
      if (size > 2) __Pyx_RaiseTooManyValuesError(2);
      else if (size >= 0) __Pyx_RaiseNeedMoreValuesError(size);
      __PYX_ERR(3, 35, __pyx_L1_error)
    }
    #if CYTHON_ASSUME_SAFE_MACROS && !CYTHON_AVOID_BORROWED_REFS
    if (likely(PyTuple_CheckExact(sequence))) {
      __pyx_t_1 = PyTuple_GET_ITEM(sequence, 0); 
      __pyx_t_2 = PyTuple_GET_ITEM(sequence, 1); 
    } else {
      __pyx_t_1 = PyList_GET_ITEM(sequence, 0); 
      __pyx_t_2 = PyList_GET_ITEM(sequence, 1); 
    }
    __Pyx_INCREF(__pyx_t_1);
    __Pyx_INCREF(__pyx_t_2);
    #else
    __pyx_t_1 = PySequence_ITEM(sequence, 0); if (unlikely(!__pyx_t_1)) __PYX_ERR(3, 35, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_1);
    __pyx_t_2 = PySequence_ITEM(sequence, 1); if (unlikely(!__pyx_t_2)) __PYX_ERR(3, 35, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_2);
    #endif
  } else {
    Py_ssize_t index = -1;
    __pyx_t_3 = PyObject_GetIter(__pyx_v_argument); if (unlikely(!__pyx_t_3)) __PYX_ERR(3, 35, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_3);
    __pyx_t_4 = Py_TYPE(__pyx_t_3)->tp_iternext;
    index = 0; __pyx_t_1 = __pyx_t_4(__pyx_t_3); if (unlikely(!__pyx_t_1)) goto __pyx_L3_unpacking_failed;
    __Pyx_GOTREF(__pyx_t_1);
    index = 1; __pyx_t_2 = __pyx_t_4(__pyx_t_3); if (unlikely(!__pyx_t_2)) goto __pyx_L3_unpacking_failed;
    __Pyx_GOTREF(__pyx_t_2);
    if (__Pyx_IternextUnpackEndCheck(__pyx_t_4(__pyx_t_3), 2) < 0) __PYX_ERR(3, 35, __pyx_L1_error)
    __pyx_t_4 = NULL;
    __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
    goto __pyx_L4_unpacking_done;
    __pyx_L3_unpacking_failed:;
    __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
    __pyx_t_4 = NULL;
    if (__Pyx_IterFinish() == 0) __Pyx_RaiseNeedMoreValuesError(index);
    __PYX_ERR(3, 35, __pyx_L1_error)
    __pyx_L4_unpacking_done:;
  }
  __pyx_v_key = __pyx_t_1;
  __pyx_t_1 = 0;
  __pyx_v_value = __pyx_t_2;
  __pyx_t_2 = 0;

  /* "src/python/grpcio/grpc/_cython/_cygrpc/arguments.pyx.pxi":36
 *   cdef void c(self, argument, references) except *:
 *     key, value = argument
 *     cdef bytes encoded_key = _encode(key)             # <<<<<<<<<<<<<<
 *     if encoded_key is not key:
 *       references.append(encoded_key)
 */
  __pyx_t_2 = __pyx_f_4grpc_7_cython_6cygrpc__encode(__pyx_v_key); if (unlikely(!__pyx_t_2)) __PYX_ERR(3, 36, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __pyx_v_encoded_key = ((PyObject*)__pyx_t_2);
  __pyx_t_2 = 0;

  /* "src/python/grpcio/grpc/_cython/_cygrpc/arguments.pyx.pxi":37
 *     key, value = argument
 *     cdef bytes encoded_key = _encode(key)
 *     if encoded_key is not key:             # <<<<<<<<<<<<<<
 *       references.append(encoded_key)
 *     self.c_argument.key = encoded_key
 */
  __pyx_t_5 = (__pyx_v_encoded_key != ((PyObject*)__pyx_v_key));
  __pyx_t_6 = (__pyx_t_5 != 0);
  if (__pyx_t_6) {

    /* "src/python/grpcio/grpc/_cython/_cygrpc/arguments.pyx.pxi":38
 *     cdef bytes encoded_key = _encode(key)
 *     if encoded_key is not key:
 *       references.append(encoded_key)             # <<<<<<<<<<<<<<
 *     self.c_argument.key = encoded_key
 *     if isinstance(value, int):
 */
    __pyx_t_7 = __Pyx_PyObject_Append(__pyx_v_references, __pyx_v_encoded_key); if (unlikely(__pyx_t_7 == ((int)-1))) __PYX_ERR(3, 38, __pyx_L1_error)

    /* "src/python/grpcio/grpc/_cython/_cygrpc/arguments.pyx.pxi":37
 *     key, value = argument
 *     cdef bytes encoded_key = _encode(key)
 *     if encoded_key is not key:             # <<<<<<<<<<<<<<
 *       references.append(encoded_key)
 *     self.c_argument.key = encoded_key
 */
  }

  /* "src/python/grpcio/grpc/_cython/_cygrpc/arguments.pyx.pxi":39
 *     if encoded_key is not key:
 *       references.append(encoded_key)
 *     self.c_argument.key = encoded_key             # <<<<<<<<<<<<<<
 *     if isinstance(value, int):
 *       self.c_argument.type = GRPC_ARG_INTEGER
 */
  if (unlikely(__pyx_v_encoded_key == Py_None)) {
    PyErr_SetString(PyExc_TypeError, "expected bytes, NoneType found");
    __PYX_ERR(3, 39, __pyx_L1_error)
  }
  __pyx_t_8 = __Pyx_PyBytes_AsWritableString(__pyx_v_encoded_key); if (unlikely((!__pyx_t_8) && PyErr_Occurred())) __PYX_ERR(3, 39, __pyx_L1_error)
  __pyx_v_self->c_argument.key = __pyx_t_8;

  /* "src/python/grpcio/grpc/_cython/_cygrpc/arguments.pyx.pxi":40
 *       references.append(encoded_key)
 *     self.c_argument.key = encoded_key
 *     if isinstance(value, int):             # <<<<<<<<<<<<<<
 *       self.c_argument.type = GRPC_ARG_INTEGER
 *       self.c_argument.value.integer = value
 */
  __pyx_t_6 = PyInt_Check(__pyx_v_value); 
  __pyx_t_5 = (__pyx_t_6 != 0);
  if (__pyx_t_5) {

    /* "src/python/grpcio/grpc/_cython/_cygrpc/arguments.pyx.pxi":41
 *     self.c_argument.key = encoded_key
 *     if isinstance(value, int):
 *       self.c_argument.type = GRPC_ARG_INTEGER             # <<<<<<<<<<<<<<
 *       self.c_argument.value.integer = value
 *     elif isinstance(value, (bytes, str, unicode,)):
 */
    __pyx_v_self->c_argument.type = GRPC_ARG_INTEGER;

    /* "src/python/grpcio/grpc/_cython/_cygrpc/arguments.pyx.pxi":42
 *     if isinstance(value, int):
 *       self.c_argument.type = GRPC_ARG_INTEGER
 *       self.c_argument.value.integer = value             # <<<<<<<<<<<<<<
 *     elif isinstance(value, (bytes, str, unicode,)):
 *       self.c_argument.type = GRPC_ARG_STRING
 */
    __pyx_t_9 = __Pyx_PyInt_As_int(__pyx_v_value); if (unlikely((__pyx_t_9 == (int)-1) && PyErr_Occurred())) __PYX_ERR(3, 42, __pyx_L1_error)
    __pyx_v_self->c_argument.value.integer = __pyx_t_9;

    /* "src/python/grpcio/grpc/_cython/_cygrpc/arguments.pyx.pxi":40
 *       references.append(encoded_key)
 *     self.c_argument.key = encoded_key
 *     if isinstance(value, int):             # <<<<<<<<<<<<<<
 *       self.c_argument.type = GRPC_ARG_INTEGER
 *       self.c_argument.value.integer = value
 */
    goto __pyx_L6;
  }

  /* "src/python/grpcio/grpc/_cython/_cygrpc/arguments.pyx.pxi":43
 *       self.c_argument.type = GRPC_ARG_INTEGER
 *       self.c_argument.value.integer = value
 *     elif isinstance(value, (bytes, str, unicode,)):             # <<<<<<<<<<<<<<
 *       self.c_argument.type = GRPC_ARG_STRING
 *       encoded_value = _encode(value)
 */
  __pyx_t_6 = PyBytes_Check(__pyx_v_value); 
  __pyx_t_10 = (__pyx_t_6 != 0);
  if (!__pyx_t_10) {
  } else {
    __pyx_t_5 = __pyx_t_10;
    goto __pyx_L7_bool_binop_done;
  }
  __pyx_t_10 = PyString_Check(__pyx_v_value); 
  __pyx_t_6 = (__pyx_t_10 != 0);
  if (!__pyx_t_6) {
  } else {
    __pyx_t_5 = __pyx_t_6;
    goto __pyx_L7_bool_binop_done;
  }
  __pyx_t_6 = PyUnicode_Check(__pyx_v_value); 
  __pyx_t_10 = (__pyx_t_6 != 0);
  __pyx_t_5 = __pyx_t_10;
  __pyx_L7_bool_binop_done:;
  __pyx_t_10 = (__pyx_t_5 != 0);
  if (__pyx_t_10) {

    /* "src/python/grpcio/grpc/_cython/_cygrpc/arguments.pyx.pxi":44
 *       self.c_argument.value.integer = value
 *     elif isinstance(value, (bytes, str, unicode,)):
 *       self.c_argument.type = GRPC_ARG_STRING             # <<<<<<<<<<<<<<
 *       encoded_value = _encode(value)
 *       if encoded_value is not value:
 */
    __pyx_v_self->c_argument.type = GRPC_ARG_STRING;

    /* "src/python/grpcio/grpc/_cython/_cygrpc/arguments.pyx.pxi":45
 *     elif isinstance(value, (bytes, str, unicode,)):
 *       self.c_argument.type = GRPC_ARG_STRING
 *       encoded_value = _encode(value)             # <<<<<<<<<<<<<<
 *       if encoded_value is not value:
 *         references.append(encoded_value)
 */
    __pyx_t_2 = __pyx_f_4grpc_7_cython_6cygrpc__encode(__pyx_v_value); if (unlikely(!__pyx_t_2)) __PYX_ERR(3, 45, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_2);
    __pyx_v_encoded_value = ((PyObject*)__pyx_t_2);
    __pyx_t_2 = 0;

    /* "src/python/grpcio/grpc/_cython/_cygrpc/arguments.pyx.pxi":46
 *       self.c_argument.type = GRPC_ARG_STRING
 *       encoded_value = _encode(value)
 *       if encoded_value is not value:             # <<<<<<<<<<<<<<
 *         references.append(encoded_value)
 *       self.c_argument.value.string = encoded_value
 */
    __pyx_t_10 = (__pyx_v_encoded_value != ((PyObject*)__pyx_v_value));
    __pyx_t_5 = (__pyx_t_10 != 0);
    if (__pyx_t_5) {

      /* "src/python/grpcio/grpc/_cython/_cygrpc/arguments.pyx.pxi":47
 *       encoded_value = _encode(value)
 *       if encoded_value is not value:
 *         references.append(encoded_value)             # <<<<<<<<<<<<<<
 *       self.c_argument.value.string = encoded_value
 *     elif isinstance(value, _GrpcArgWrapper):
 */
      __pyx_t_7 = __Pyx_PyObject_Append(__pyx_v_references, __pyx_v_encoded_value); if (unlikely(__pyx_t_7 == ((int)-1))) __PYX_ERR(3, 47, __pyx_L1_error)

      /* "src/python/grpcio/grpc/_cython/_cygrpc/arguments.pyx.pxi":46
 *       self.c_argument.type = GRPC_ARG_STRING
 *       encoded_value = _encode(value)
 *       if encoded_value is not value:             # <<<<<<<<<<<<<<
 *         references.append(encoded_value)
 *       self.c_argument.value.string = encoded_value
 */
    }

    /* "src/python/grpcio/grpc/_cython/_cygrpc/arguments.pyx.pxi":48
 *       if encoded_value is not value:
 *         references.append(encoded_value)
 *       self.c_argument.value.string = encoded_value             # <<<<<<<<<<<<<<
 *     elif isinstance(value, _GrpcArgWrapper):
 *       self.c_argument = (<_GrpcArgWrapper>value).arg
 */
    if (unlikely(__pyx_v_encoded_value == Py_None)) {
      PyErr_SetString(PyExc_TypeError, "expected bytes, NoneType found");
      __PYX_ERR(3, 48, __pyx_L1_error)
    }
    __pyx_t_8 = __Pyx_PyBytes_AsWritableString(__pyx_v_encoded_value); if (unlikely((!__pyx_t_8) && PyErr_Occurred())) __PYX_ERR(3, 48, __pyx_L1_error)
    __pyx_v_self->c_argument.value.string = __pyx_t_8;

    /* "src/python/grpcio/grpc/_cython/_cygrpc/arguments.pyx.pxi":43
 *       self.c_argument.type = GRPC_ARG_INTEGER
 *       self.c_argument.value.integer = value
 *     elif isinstance(value, (bytes, str, unicode,)):             # <<<<<<<<<<<<<<
 *       self.c_argument.type = GRPC_ARG_STRING
 *       encoded_value = _encode(value)
 */
    goto __pyx_L6;
  }

  /* "src/python/grpcio/grpc/_cython/_cygrpc/arguments.pyx.pxi":49
 *         references.append(encoded_value)
 *       self.c_argument.value.string = encoded_value
 *     elif isinstance(value, _GrpcArgWrapper):             # <<<<<<<<<<<<<<
 *       self.c_argument = (<_GrpcArgWrapper>value).arg
 *     elif hasattr(value, '__int__'):
 */
  __pyx_t_5 = __Pyx_TypeCheck(__pyx_v_value, __pyx_ptype_4grpc_7_cython_6cygrpc__GrpcArgWrapper); 
  __pyx_t_10 = (__pyx_t_5 != 0);
  if (__pyx_t_10) {

    /* "src/python/grpcio/grpc/_cython/_cygrpc/arguments.pyx.pxi":50
 *       self.c_argument.value.string = encoded_value
 *     elif isinstance(value, _GrpcArgWrapper):
 *       self.c_argument = (<_GrpcArgWrapper>value).arg             # <<<<<<<<<<<<<<
 *     elif hasattr(value, '__int__'):
 *       # Pointer objects must override __int__() to return
 */
    __pyx_t_11 = ((struct __pyx_obj_4grpc_7_cython_6cygrpc__GrpcArgWrapper *)__pyx_v_value)->arg;
    __pyx_v_self->c_argument = __pyx_t_11;

    /* "src/python/grpcio/grpc/_cython/_cygrpc/arguments.pyx.pxi":49
 *         references.append(encoded_value)
 *       self.c_argument.value.string = encoded_value
 *     elif isinstance(value, _GrpcArgWrapper):             # <<<<<<<<<<<<<<
 *       self.c_argument = (<_GrpcArgWrapper>value).arg
 *     elif hasattr(value, '__int__'):
 */
    goto __pyx_L6;
  }

  /* "src/python/grpcio/grpc/_cython/_cygrpc/arguments.pyx.pxi":51
 *     elif isinstance(value, _GrpcArgWrapper):
 *       self.c_argument = (<_GrpcArgWrapper>value).arg
 *     elif hasattr(value, '__int__'):             # <<<<<<<<<<<<<<
 *       # Pointer objects must override __int__() to return
 *       # the underlying C address (Python ints are word size). The
 */
  __pyx_t_10 = __Pyx_HasAttr(__pyx_v_value, __pyx_n_s_int); if (unlikely(__pyx_t_10 == ((int)-1))) __PYX_ERR(3, 51, __pyx_L1_error)
  __pyx_t_5 = (__pyx_t_10 != 0);
  if (likely(__pyx_t_5)) {

    /* "src/python/grpcio/grpc/_cython/_cygrpc/arguments.pyx.pxi":56
 *       # lifecycle of the pointer is fixed to the lifecycle of the
 *       # python object wrapping it.
 *       self.c_argument.type = GRPC_ARG_POINTER             # <<<<<<<<<<<<<<
 *       self.c_argument.value.pointer.vtable = &default_vtable
 *       self.c_argument.value.pointer.address = <void*>(<intptr_t>int(value))
 */
    __pyx_v_self->c_argument.type = GRPC_ARG_POINTER;

    /* "src/python/grpcio/grpc/_cython/_cygrpc/arguments.pyx.pxi":57
 *       # python object wrapping it.
 *       self.c_argument.type = GRPC_ARG_POINTER
 *       self.c_argument.value.pointer.vtable = &default_vtable             # <<<<<<<<<<<<<<
 *       self.c_argument.value.pointer.address = <void*>(<intptr_t>int(value))
 *     else:
 */
    __pyx_v_self->c_argument.value.pointer.vtable = (&__pyx_v_4grpc_7_cython_6cygrpc_default_vtable);

    /* "src/python/grpcio/grpc/_cython/_cygrpc/arguments.pyx.pxi":58
 *       self.c_argument.type = GRPC_ARG_POINTER
 *       self.c_argument.value.pointer.vtable = &default_vtable
 *       self.c_argument.value.pointer.address = <void*>(<intptr_t>int(value))             # <<<<<<<<<<<<<<
 *     else:
 *       raise TypeError(
 */
    __pyx_t_2 = __Pyx_PyNumber_Int(__pyx_v_value); if (unlikely(!__pyx_t_2)) __PYX_ERR(3, 58, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_2);
    __pyx_t_12 = PyInt_AsSsize_t(__pyx_t_2); if (unlikely((__pyx_t_12 == (Py_ssize_t)-1) && PyErr_Occurred())) __PYX_ERR(3, 58, __pyx_L1_error)
    __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
    __pyx_v_self->c_argument.value.pointer.p = ((void *)((__pyx_t_4grpc_7_cython_6cygrpc_intptr_t)__pyx_t_12));

    /* "src/python/grpcio/grpc/_cython/_cygrpc/arguments.pyx.pxi":51
 *     elif isinstance(value, _GrpcArgWrapper):
 *       self.c_argument = (<_GrpcArgWrapper>value).arg
 *     elif hasattr(value, '__int__'):             # <<<<<<<<<<<<<<
 *       # Pointer objects must override __int__() to return
 *       # the underlying C address (Python ints are word size). The
 */
    goto __pyx_L6;
  }

  /* "src/python/grpcio/grpc/_cython/_cygrpc/arguments.pyx.pxi":60
 *       self.c_argument.value.pointer.address = <void*>(<intptr_t>int(value))
 *     else:
 *       raise TypeError(             # <<<<<<<<<<<<<<
 *           'Expected int, bytes, or behavior, got {}'.format(type(value)))
 * 
 */
  /*else*/ {

    /* "src/python/grpcio/grpc/_cython/_cygrpc/arguments.pyx.pxi":61
 *     else:
 *       raise TypeError(
 *           'Expected int, bytes, or behavior, got {}'.format(type(value)))             # <<<<<<<<<<<<<<
 * 
 * 
 */
    __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_kp_s_Expected_int_bytes_or_behavior_g, __pyx_n_s_format); if (unlikely(!__pyx_t_1)) __PYX_ERR(3, 61, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_1);
    __pyx_t_3 = NULL;
    if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_1))) {
      __pyx_t_3 = PyMethod_GET_SELF(__pyx_t_1);
      if (likely(__pyx_t_3)) {
        PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_1);
        __Pyx_INCREF(__pyx_t_3);
        __Pyx_INCREF(function);
        __Pyx_DECREF_SET(__pyx_t_1, function);
      }
    }
    __pyx_t_2 = (__pyx_t_3) ? __Pyx_PyObject_Call2Args(__pyx_t_1, __pyx_t_3, ((PyObject *)Py_TYPE(__pyx_v_value))) : __Pyx_PyObject_CallOneArg(__pyx_t_1, ((PyObject *)Py_TYPE(__pyx_v_value)));
    __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0;
    if (unlikely(!__pyx_t_2)) __PYX_ERR(3, 61, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_2);
    __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;

    /* "src/python/grpcio/grpc/_cython/_cygrpc/arguments.pyx.pxi":60
 *       self.c_argument.value.pointer.address = <void*>(<intptr_t>int(value))
 *     else:
 *       raise TypeError(             # <<<<<<<<<<<<<<
 *           'Expected int, bytes, or behavior, got {}'.format(type(value)))
 * 
 */
    __pyx_t_1 = __Pyx_PyObject_CallOneArg(__pyx_builtin_TypeError, __pyx_t_2); if (unlikely(!__pyx_t_1)) __PYX_ERR(3, 60, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_1);
    __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
    __Pyx_Raise(__pyx_t_1, 0, 0, 0);
    __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
    __PYX_ERR(3, 60, __pyx_L1_error)
  }
  __pyx_L6:;

  /* "src/python/grpcio/grpc/_cython/_cygrpc/arguments.pyx.pxi":34
 * cdef class _ChannelArg:
 * 
 *   cdef void c(self, argument, references) except *:             # <<<<<<<<<<<<<<
 *     key, value = argument
 *     cdef bytes encoded_key = _encode(key)
 */

  /* function exit code */
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_XDECREF(__pyx_t_3);
  __Pyx_AddTraceback("grpc._cython.cygrpc._ChannelArg.c", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_L0:;
  __Pyx_XDECREF(__pyx_v_key);
  __Pyx_XDECREF(__pyx_v_value);
  __Pyx_XDECREF(__pyx_v_encoded_key);
  __Pyx_XDECREF(__pyx_v_encoded_value);
  __Pyx_RefNannyFinishContext();
}

/* "(tree fragment)":1
 * def __reduce_cython__(self):             # <<<<<<<<<<<<<<
 *     raise TypeError("self.c_argument cannot be converted to a Python object for pickling")
 * def __setstate_cython__(self, __pyx_state):
 */

/* Python wrapper */
static PyObject *__pyx_pw_4grpc_7_cython_6cygrpc_11_ChannelArg_1__reduce_cython__(PyObject *__pyx_v_self, CYTHON_UNUSED PyObject *unused); /*proto*/
static PyObject *__pyx_pw_4grpc_7_cython_6cygrpc_11_ChannelArg_1__reduce_cython__(PyObject *__pyx_v_self, CYTHON_UNUSED PyObject *unused) {
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__reduce_cython__ (wrapper)", 0);
  __pyx_r = __pyx_pf_4grpc_7_cython_6cygrpc_11_ChannelArg___reduce_cython__(((struct __pyx_obj_4grpc_7_cython_6cygrpc__ChannelArg *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_4grpc_7_cython_6cygrpc_11_ChannelArg___reduce_cython__(CYTHON_UNUSED struct __pyx_obj_4grpc_7_cython_6cygrpc__ChannelArg *__pyx_v_self) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("__reduce_cython__", 0);

  /* "(tree fragment)":2
 * def __reduce_cython__(self):
 *     raise TypeError("self.c_argument cannot be converted to a Python object for pickling")             # <<<<<<<<<<<<<<
 * def __setstate_cython__(self, __pyx_state):
 *     raise TypeError("self.c_argument cannot be converted to a Python object for pickling")
 */
  __pyx_t_1 = __Pyx_PyObject_Call(__pyx_builtin_TypeError, __pyx_tuple__4, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(11, 2, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_Raise(__pyx_t_1, 0, 0, 0);
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  __PYX_ERR(11, 2, __pyx_L1_error)

  /* "(tree fragment)":1
 * def __reduce_cython__(self):             # <<<<<<<<<<<<<<
 *     raise TypeError("self.c_argument cannot be converted to a Python object for pickling")
 * def __setstate_cython__(self, __pyx_state):
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_AddTraceback("grpc._cython.cygrpc._ChannelArg.__reduce_cython__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "(tree fragment)":3
 * def __reduce_cython__(self):
 *     raise TypeError("self.c_argument cannot be converted to a Python object for pickling")
 * def __setstate_cython__(self, __pyx_state):             # <<<<<<<<<<<<<<
 *     raise TypeError("self.c_argument cannot be converted to a Python object for pickling")
 */

/* Python wrapper */
static PyObject *__pyx_pw_4grpc_7_cython_6cygrpc_11_ChannelArg_3__setstate_cython__(PyObject *__pyx_v_self, PyObject *__pyx_v___pyx_state); /*proto*/
static PyObject *__pyx_pw_4grpc_7_cython_6cygrpc_11_ChannelArg_3__setstate_cython__(PyObject *__pyx_v_self, PyObject *__pyx_v___pyx_state) {
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__setstate_cython__ (wrapper)", 0);
  __pyx_r = __pyx_pf_4grpc_7_cython_6cygrpc_11_ChannelArg_2__setstate_cython__(((struct __pyx_obj_4grpc_7_cython_6cygrpc__ChannelArg *)__pyx_v_self), ((PyObject *)__pyx_v___pyx_state));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_4grpc_7_cython_6cygrpc_11_ChannelArg_2__setstate_cython__(CYTHON_UNUSED struct __pyx_obj_4grpc_7_cython_6cygrpc__ChannelArg *__pyx_v_self, CYTHON_UNUSED PyObject *__pyx_v___pyx_state) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("__setstate_cython__", 0);

  /* "(tree fragment)":4
 *     raise TypeError("self.c_argument cannot be converted to a Python object for pickling")
 * def __setstate_cython__(self, __pyx_state):
 *     raise TypeError("self.c_argument cannot be converted to a Python object for pickling")             # <<<<<<<<<<<<<<
 */
  __pyx_t_1 = __Pyx_PyObject_Call(__pyx_builtin_TypeError, __pyx_tuple__5, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(11, 4, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_Raise(__pyx_t_1, 0, 0, 0);
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  __PYX_ERR(11, 4, __pyx_L1_error)

  /* "(tree fragment)":3
 * def __reduce_cython__(self):
 *     raise TypeError("self.c_argument cannot be converted to a Python object for pickling")
 * def __setstate_cython__(self, __pyx_state):             # <<<<<<<<<<<<<<
 *     raise TypeError("self.c_argument cannot be converted to a Python object for pickling")
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_AddTraceback("grpc._cython.cygrpc._ChannelArg.__setstate_cython__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "src/python/grpcio/grpc/_cython/_cygrpc/arguments.pyx.pxi":66
 * cdef class _ChannelArgs:
 * 
 *   def __cinit__(self, arguments):             # <<<<<<<<<<<<<<
 *     self._arguments = () if arguments is None else tuple(arguments)
 *     self._channel_args = []
 */

/* Python wrapper */
static int __pyx_pw_4grpc_7_cython_6cygrpc_12_ChannelArgs_1__cinit__(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
static int __pyx_pw_4grpc_7_cython_6cygrpc_12_ChannelArgs_1__cinit__(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
  PyObject *__pyx_v_arguments = 0;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  int __pyx_r;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__cinit__ (wrapper)", 0);
  {
    static PyObject **__pyx_pyargnames[] = {&__pyx_n_s_arguments,0};
    PyObject* values[1] = {0};
    if (unlikely(__pyx_kwds)) {
      Py_ssize_t kw_args;
      const Py_ssize_t pos_args = PyTuple_GET_SIZE(__pyx_args);
      switch (pos_args) {
        case  1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
        CYTHON_FALLTHROUGH;
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      kw_args = PyDict_Size(__pyx_kwds);
      switch (pos_args) {
        case  0:
        if (likely((values[0] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_arguments)) != 0)) kw_args--;
        else goto __pyx_L5_argtuple_error;
      }
      if (unlikely(kw_args > 0)) {
        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "__cinit__") < 0)) __PYX_ERR(3, 66, __pyx_L3_error)
      }
    } else if (PyTuple_GET_SIZE(__pyx_args) != 1) {
      goto __pyx_L5_argtuple_error;
    } else {
      values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
    }
    __pyx_v_arguments = values[0];
  }
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("__cinit__", 1, 1, 1, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(3, 66, __pyx_L3_error)
  __pyx_L3_error:;
  __Pyx_AddTraceback("grpc._cython.cygrpc._ChannelArgs.__cinit__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return -1;
  __pyx_L4_argument_unpacking_done:;
  __pyx_r = __pyx_pf_4grpc_7_cython_6cygrpc_12_ChannelArgs___cinit__(((struct __pyx_obj_4grpc_7_cython_6cygrpc__ChannelArgs *)__pyx_v_self), __pyx_v_arguments);

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static int __pyx_pf_4grpc_7_cython_6cygrpc_12_ChannelArgs___cinit__(struct __pyx_obj_4grpc_7_cython_6cygrpc__ChannelArgs *__pyx_v_self, PyObject *__pyx_v_arguments) {
  PyObject *__pyx_v_index = NULL;
  PyObject *__pyx_v_argument = NULL;
  struct __pyx_obj_4grpc_7_cython_6cygrpc__ChannelArg *__pyx_v_channel_arg = NULL;
  int __pyx_r;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  int __pyx_t_2;
  PyObject *__pyx_t_3 = NULL;
  Py_ssize_t __pyx_t_4;
  PyObject *__pyx_t_5 = NULL;
  grpc_arg __pyx_t_6;
  Py_ssize_t __pyx_t_7;
  int __pyx_t_8;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("__cinit__", 0);

  /* "src/python/grpcio/grpc/_cython/_cygrpc/arguments.pyx.pxi":67
 * 
 *   def __cinit__(self, arguments):
 *     self._arguments = () if arguments is None else tuple(arguments)             # <<<<<<<<<<<<<<
 *     self._channel_args = []
 *     self._references = []
 */
  __pyx_t_2 = (__pyx_v_arguments == Py_None);
  if ((__pyx_t_2 != 0)) {
    __Pyx_INCREF(__pyx_empty_tuple);
    __pyx_t_1 = __pyx_empty_tuple;
  } else {
    __pyx_t_3 = __Pyx_PySequence_Tuple(__pyx_v_arguments); if (unlikely(!__pyx_t_3)) __PYX_ERR(3, 67, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_3);
    __pyx_t_1 = __pyx_t_3;
    __pyx_t_3 = 0;
  }
  __Pyx_GIVEREF(__pyx_t_1);
  __Pyx_GOTREF(__pyx_v_self->_arguments);
  __Pyx_DECREF(__pyx_v_self->_arguments);
  __pyx_v_self->_arguments = ((PyObject*)__pyx_t_1);
  __pyx_t_1 = 0;

  /* "src/python/grpcio/grpc/_cython/_cygrpc/arguments.pyx.pxi":68
 *   def __cinit__(self, arguments):
 *     self._arguments = () if arguments is None else tuple(arguments)
 *     self._channel_args = []             # <<<<<<<<<<<<<<
 *     self._references = []
 *     self._c_arguments.arguments_length = len(self._arguments)
 */
  __pyx_t_1 = PyList_New(0); if (unlikely(!__pyx_t_1)) __PYX_ERR(3, 68, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_GIVEREF(__pyx_t_1);
  __Pyx_GOTREF(__pyx_v_self->_channel_args);
  __Pyx_DECREF(__pyx_v_self->_channel_args);
  __pyx_v_self->_channel_args = ((PyObject*)__pyx_t_1);
  __pyx_t_1 = 0;

  /* "src/python/grpcio/grpc/_cython/_cygrpc/arguments.pyx.pxi":69
 *     self._arguments = () if arguments is None else tuple(arguments)
 *     self._channel_args = []
 *     self._references = []             # <<<<<<<<<<<<<<
 *     self._c_arguments.arguments_length = len(self._arguments)
 *     if self._c_arguments.arguments_length != 0:
 */
  __pyx_t_1 = PyList_New(0); if (unlikely(!__pyx_t_1)) __PYX_ERR(3, 69, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_GIVEREF(__pyx_t_1);
  __Pyx_GOTREF(__pyx_v_self->_references);
  __Pyx_DECREF(__pyx_v_self->_references);
  __pyx_v_self->_references = ((PyObject*)__pyx_t_1);
  __pyx_t_1 = 0;

  /* "src/python/grpcio/grpc/_cython/_cygrpc/arguments.pyx.pxi":70
 *     self._channel_args = []
 *     self._references = []
 *     self._c_arguments.arguments_length = len(self._arguments)             # <<<<<<<<<<<<<<
 *     if self._c_arguments.arguments_length != 0:
 *       self._c_arguments.arguments = <grpc_arg *>gpr_malloc(
 */
  __pyx_t_1 = __pyx_v_self->_arguments;
  __Pyx_INCREF(__pyx_t_1);
  if (unlikely(__pyx_t_1 == Py_None)) {
    PyErr_SetString(PyExc_TypeError, "object of type 'NoneType' has no len()");
    __PYX_ERR(3, 70, __pyx_L1_error)
  }
  __pyx_t_4 = PyTuple_GET_SIZE(__pyx_t_1); if (unlikely(__pyx_t_4 == ((Py_ssize_t)-1))) __PYX_ERR(3, 70, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  __pyx_v_self->_c_arguments.num_args = __pyx_t_4;

  /* "src/python/grpcio/grpc/_cython/_cygrpc/arguments.pyx.pxi":71
 *     self._references = []
 *     self._c_arguments.arguments_length = len(self._arguments)
 *     if self._c_arguments.arguments_length != 0:             # <<<<<<<<<<<<<<
 *       self._c_arguments.arguments = <grpc_arg *>gpr_malloc(
 *           self._c_arguments.arguments_length * sizeof(grpc_arg))
 */
  __pyx_t_2 = ((__pyx_v_self->_c_arguments.num_args != 0) != 0);
  if (__pyx_t_2) {

    /* "src/python/grpcio/grpc/_cython/_cygrpc/arguments.pyx.pxi":72
 *     self._c_arguments.arguments_length = len(self._arguments)
 *     if self._c_arguments.arguments_length != 0:
 *       self._c_arguments.arguments = <grpc_arg *>gpr_malloc(             # <<<<<<<<<<<<<<
 *           self._c_arguments.arguments_length * sizeof(grpc_arg))
 *       for index, argument in enumerate(self._arguments):
 */
    __pyx_v_self->_c_arguments.args = ((grpc_arg *)gpr_malloc((__pyx_v_self->_c_arguments.num_args * (sizeof(grpc_arg)))));

    /* "src/python/grpcio/grpc/_cython/_cygrpc/arguments.pyx.pxi":74
 *       self._c_arguments.arguments = <grpc_arg *>gpr_malloc(
 *           self._c_arguments.arguments_length * sizeof(grpc_arg))
 *       for index, argument in enumerate(self._arguments):             # <<<<<<<<<<<<<<
 *         channel_arg = _ChannelArg()
 *         channel_arg.c(argument, self._references)
 */
    __Pyx_INCREF(__pyx_int_0);
    __pyx_t_1 = __pyx_int_0;
    __pyx_t_3 = __pyx_v_self->_arguments; __Pyx_INCREF(__pyx_t_3); __pyx_t_4 = 0;
    for (;;) {
      if (__pyx_t_4 >= PyTuple_GET_SIZE(__pyx_t_3)) break;
      #if CYTHON_ASSUME_SAFE_MACROS && !CYTHON_AVOID_BORROWED_REFS
      __pyx_t_5 = PyTuple_GET_ITEM(__pyx_t_3, __pyx_t_4); __Pyx_INCREF(__pyx_t_5); __pyx_t_4++; if (unlikely(0 < 0)) __PYX_ERR(3, 74, __pyx_L1_error)
      #else
      __pyx_t_5 = PySequence_ITEM(__pyx_t_3, __pyx_t_4); __pyx_t_4++; if (unlikely(!__pyx_t_5)) __PYX_ERR(3, 74, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_5);
      #endif
      __Pyx_XDECREF_SET(__pyx_v_argument, __pyx_t_5);
      __pyx_t_5 = 0;
      __Pyx_INCREF(__pyx_t_1);
      __Pyx_XDECREF_SET(__pyx_v_index, __pyx_t_1);
      __pyx_t_5 = __Pyx_PyInt_AddObjC(__pyx_t_1, __pyx_int_1, 1, 0, 0); if (unlikely(!__pyx_t_5)) __PYX_ERR(3, 74, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_5);
      __Pyx_DECREF(__pyx_t_1);
      __pyx_t_1 = __pyx_t_5;
      __pyx_t_5 = 0;

      /* "src/python/grpcio/grpc/_cython/_cygrpc/arguments.pyx.pxi":75
 *           self._c_arguments.arguments_length * sizeof(grpc_arg))
 *       for index, argument in enumerate(self._arguments):
 *         channel_arg = _ChannelArg()             # <<<<<<<<<<<<<<
 *         channel_arg.c(argument, self._references)
 *         self._c_arguments.arguments[index] = channel_arg.c_argument
 */
      __pyx_t_5 = __Pyx_PyObject_CallNoArg(((PyObject *)__pyx_ptype_4grpc_7_cython_6cygrpc__ChannelArg)); if (unlikely(!__pyx_t_5)) __PYX_ERR(3, 75, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_5);
      __Pyx_XDECREF_SET(__pyx_v_channel_arg, ((struct __pyx_obj_4grpc_7_cython_6cygrpc__ChannelArg *)__pyx_t_5));
      __pyx_t_5 = 0;

      /* "src/python/grpcio/grpc/_cython/_cygrpc/arguments.pyx.pxi":76
 *       for index, argument in enumerate(self._arguments):
 *         channel_arg = _ChannelArg()
 *         channel_arg.c(argument, self._references)             # <<<<<<<<<<<<<<
 *         self._c_arguments.arguments[index] = channel_arg.c_argument
 *         self._channel_args.append(channel_arg)
 */
      __pyx_t_5 = __pyx_v_self->_references;
      __Pyx_INCREF(__pyx_t_5);
      ((struct __pyx_vtabstruct_4grpc_7_cython_6cygrpc__ChannelArg *)__pyx_v_channel_arg->__pyx_vtab)->c(__pyx_v_channel_arg, __pyx_v_argument, __pyx_t_5); if (unlikely(PyErr_Occurred())) __PYX_ERR(3, 76, __pyx_L1_error)
      __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;

      /* "src/python/grpcio/grpc/_cython/_cygrpc/arguments.pyx.pxi":77
 *         channel_arg = _ChannelArg()
 *         channel_arg.c(argument, self._references)
 *         self._c_arguments.arguments[index] = channel_arg.c_argument             # <<<<<<<<<<<<<<
 *         self._channel_args.append(channel_arg)
 * 
 */
      __pyx_t_6 = __pyx_v_channel_arg->c_argument;
      __pyx_t_7 = __Pyx_PyIndex_AsSsize_t(__pyx_v_index); if (unlikely((__pyx_t_7 == (Py_ssize_t)-1) && PyErr_Occurred())) __PYX_ERR(3, 77, __pyx_L1_error)
      (__pyx_v_self->_c_arguments.args[__pyx_t_7]) = __pyx_t_6;

      /* "src/python/grpcio/grpc/_cython/_cygrpc/arguments.pyx.pxi":78
 *         channel_arg.c(argument, self._references)
 *         self._c_arguments.arguments[index] = channel_arg.c_argument
 *         self._channel_args.append(channel_arg)             # <<<<<<<<<<<<<<
 * 
 *   cdef grpc_channel_args *c_args(self) except *:
 */
      if (unlikely(__pyx_v_self->_channel_args == Py_None)) {
        PyErr_Format(PyExc_AttributeError, "'NoneType' object has no attribute '%.30s'", "append");
        __PYX_ERR(3, 78, __pyx_L1_error)
      }
      __pyx_t_8 = __Pyx_PyList_Append(__pyx_v_self->_channel_args, ((PyObject *)__pyx_v_channel_arg)); if (unlikely(__pyx_t_8 == ((int)-1))) __PYX_ERR(3, 78, __pyx_L1_error)

      /* "src/python/grpcio/grpc/_cython/_cygrpc/arguments.pyx.pxi":74
 *       self._c_arguments.arguments = <grpc_arg *>gpr_malloc(
 *           self._c_arguments.arguments_length * sizeof(grpc_arg))
 *       for index, argument in enumerate(self._arguments):             # <<<<<<<<<<<<<<
 *         channel_arg = _ChannelArg()
 *         channel_arg.c(argument, self._references)
 */
    }
    __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
    __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;

    /* "src/python/grpcio/grpc/_cython/_cygrpc/arguments.pyx.pxi":71
 *     self._references = []
 *     self._c_arguments.arguments_length = len(self._arguments)
 *     if self._c_arguments.arguments_length != 0:             # <<<<<<<<<<<<<<
 *       self._c_arguments.arguments = <grpc_arg *>gpr_malloc(
 *           self._c_arguments.arguments_length * sizeof(grpc_arg))
 */
  }

  /* "src/python/grpcio/grpc/_cython/_cygrpc/arguments.pyx.pxi":66
 * cdef class _ChannelArgs:
 * 
 *   def __cinit__(self, arguments):             # <<<<<<<<<<<<<<
 *     self._arguments = () if arguments is None else tuple(arguments)
 *     self._channel_args = []
 */

  /* function exit code */
  __pyx_r = 0;
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_XDECREF(__pyx_t_3);
  __Pyx_XDECREF(__pyx_t_5);
  __Pyx_AddTraceback("grpc._cython.cygrpc._ChannelArgs.__cinit__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = -1;
  __pyx_L0:;
  __Pyx_XDECREF(__pyx_v_index);
  __Pyx_XDECREF(__pyx_v_argument);
  __Pyx_XDECREF((PyObject *)__pyx_v_channel_arg);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "src/python/grpcio/grpc/_cython/_cygrpc/arguments.pyx.pxi":80
 *         self._channel_args.append(channel_arg)
 * 
 *   cdef grpc_channel_args *c_args(self) except *:             # <<<<<<<<<<<<<<
 *     return &self._c_arguments
 * 
 */

static grpc_channel_args *__pyx_f_4grpc_7_cython_6cygrpc_12_ChannelArgs_c_args(struct __pyx_obj_4grpc_7_cython_6cygrpc__ChannelArgs *__pyx_v_self) {
  grpc_channel_args *__pyx_r;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("c_args", 0);

  /* "src/python/grpcio/grpc/_cython/_cygrpc/arguments.pyx.pxi":81
 * 
 *   cdef grpc_channel_args *c_args(self) except *:
 *     return &self._c_arguments             # <<<<<<<<<<<<<<
 * 
 *   def __dealloc__(self):
 */
  __pyx_r = (&__pyx_v_self->_c_arguments);
  goto __pyx_L0;

  /* "src/python/grpcio/grpc/_cython/_cygrpc/arguments.pyx.pxi":80
 *         self._channel_args.append(channel_arg)
 * 
 *   cdef grpc_channel_args *c_args(self) except *:             # <<<<<<<<<<<<<<
 *     return &self._c_arguments
 * 
 */

  /* function exit code */
  __pyx_L0:;
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "src/python/grpcio/grpc/_cython/_cygrpc/arguments.pyx.pxi":83
 *     return &self._c_arguments
 * 
 *   def __dealloc__(self):             # <<<<<<<<<<<<<<
 *     if self._c_arguments.arguments != NULL:
 *       gpr_free(self._c_arguments.arguments)
 */

/* Python wrapper */
static void __pyx_pw_4grpc_7_cython_6cygrpc_12_ChannelArgs_3__dealloc__(PyObject *__pyx_v_self); /*proto*/
static void __pyx_pw_4grpc_7_cython_6cygrpc_12_ChannelArgs_3__dealloc__(PyObject *__pyx_v_self) {
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__dealloc__ (wrapper)", 0);
  __pyx_pf_4grpc_7_cython_6cygrpc_12_ChannelArgs_2__dealloc__(((struct __pyx_obj_4grpc_7_cython_6cygrpc__ChannelArgs *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
}

static void __pyx_pf_4grpc_7_cython_6cygrpc_12_ChannelArgs_2__dealloc__(struct __pyx_obj_4grpc_7_cython_6cygrpc__ChannelArgs *__pyx_v_self) {
  __Pyx_RefNannyDeclarations
  int __pyx_t_1;
  __Pyx_RefNannySetupContext("__dealloc__", 0);

  /* "src/python/grpcio/grpc/_cython/_cygrpc/arguments.pyx.pxi":84
 * 
 *   def __dealloc__(self):
 *     if self._c_arguments.arguments != NULL:             # <<<<<<<<<<<<<<
 *       gpr_free(self._c_arguments.arguments)
 */
  __pyx_t_1 = ((__pyx_v_self->_c_arguments.args != NULL) != 0);
  if (__pyx_t_1) {

    /* "src/python/grpcio/grpc/_cython/_cygrpc/arguments.pyx.pxi":85
 *   def __dealloc__(self):
 *     if self._c_arguments.arguments != NULL:
 *       gpr_free(self._c_arguments.arguments)             # <<<<<<<<<<<<<<
 */
    gpr_free(__pyx_v_self->_c_arguments.args);

    /* "src/python/grpcio/grpc/_cython/_cygrpc/arguments.pyx.pxi":84
 * 
 *   def __dealloc__(self):
 *     if self._c_arguments.arguments != NULL:             # <<<<<<<<<<<<<<
 *       gpr_free(self._c_arguments.arguments)
 */
  }

  /* "src/python/grpcio/grpc/_cython/_cygrpc/arguments.pyx.pxi":83
 *     return &self._c_arguments
 * 
 *   def __dealloc__(self):             # <<<<<<<<<<<<<<
 *     if self._c_arguments.arguments != NULL:
 *       gpr_free(self._c_arguments.arguments)
 */

  /* function exit code */
  __Pyx_RefNannyFinishContext();
}

/* "src/python/grpcio/grpc/_cython/_cygrpc/arguments.pxd.pxi":31
 * cdef class _ChannelArgs:
 * 
 *   cdef readonly tuple _arguments             # <<<<<<<<<<<<<<
 *   cdef list _channel_args
 *   cdef readonly list _references
 */

/* Python wrapper */
static PyObject *__pyx_pw_4grpc_7_cython_6cygrpc_12_ChannelArgs_10_arguments_1__get__(PyObject *__pyx_v_self); /*proto*/
static PyObject *__pyx_pw_4grpc_7_cython_6cygrpc_12_ChannelArgs_10_arguments_1__get__(PyObject *__pyx_v_self) {
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__get__ (wrapper)", 0);
  __pyx_r = __pyx_pf_4grpc_7_cython_6cygrpc_12_ChannelArgs_10_arguments___get__(((struct __pyx_obj_4grpc_7_cython_6cygrpc__ChannelArgs *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_4grpc_7_cython_6cygrpc_12_ChannelArgs_10_arguments___get__(struct __pyx_obj_4grpc_7_cython_6cygrpc__ChannelArgs *__pyx_v_self) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__get__", 0);
  __Pyx_XDECREF(__pyx_r);
  __Pyx_INCREF(__pyx_v_self->_arguments);
  __pyx_r = __pyx_v_self->_arguments;
  goto __pyx_L0;

  /* function exit code */
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "src/python/grpcio/grpc/_cython/_cygrpc/arguments.pxd.pxi":33
 *   cdef readonly tuple _arguments
 *   cdef list _channel_args
 *   cdef readonly list _references             # <<<<<<<<<<<<<<
 *   cdef grpc_channel_args _c_arguments
 * 
 */

/* Python wrapper */
static PyObject *__pyx_pw_4grpc_7_cython_6cygrpc_12_ChannelArgs_11_references_1__get__(PyObject *__pyx_v_self); /*proto*/
static PyObject *__pyx_pw_4grpc_7_cython_6cygrpc_12_ChannelArgs_11_references_1__get__(PyObject *__pyx_v_self) {
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__get__ (wrapper)", 0);
  __pyx_r = __pyx_pf_4grpc_7_cython_6cygrpc_12_ChannelArgs_11_references___get__(((struct __pyx_obj_4grpc_7_cython_6cygrpc__ChannelArgs *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_4grpc_7_cython_6cygrpc_12_ChannelArgs_11_references___get__(struct __pyx_obj_4grpc_7_cython_6cygrpc__ChannelArgs *__pyx_v_self) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__get__", 0);
  __Pyx_XDECREF(__pyx_r);
  __Pyx_INCREF(__pyx_v_self->_references);
  __pyx_r = __pyx_v_self->_references;
  goto __pyx_L0;

  /* function exit code */
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "(tree fragment)":1
 * def __reduce_cython__(self):             # <<<<<<<<<<<<<<
 *     raise TypeError("no default __reduce__ due to non-trivial __cinit__")
 * def __setstate_cython__(self, __pyx_state):
 */

/* Python wrapper */
static PyObject *__pyx_pw_4grpc_7_cython_6cygrpc_12_ChannelArgs_5__reduce_cython__(PyObject *__pyx_v_self, CYTHON_UNUSED PyObject *unused); /*proto*/
static PyObject *__pyx_pw_4grpc_7_cython_6cygrpc_12_ChannelArgs_5__reduce_cython__(PyObject *__pyx_v_self, CYTHON_UNUSED PyObject *unused) {
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__reduce_cython__ (wrapper)", 0);
  __pyx_r = __pyx_pf_4grpc_7_cython_6cygrpc_12_ChannelArgs_4__reduce_cython__(((struct __pyx_obj_4grpc_7_cython_6cygrpc__ChannelArgs *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_4grpc_7_cython_6cygrpc_12_ChannelArgs_4__reduce_cython__(CYTHON_UNUSED struct __pyx_obj_4grpc_7_cython_6cygrpc__ChannelArgs *__pyx_v_self) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("__reduce_cython__", 0);

  /* "(tree fragment)":2
 * def __reduce_cython__(self):
 *     raise TypeError("no default __reduce__ due to non-trivial __cinit__")             # <<<<<<<<<<<<<<
 * def __setstate_cython__(self, __pyx_state):
 *     raise TypeError("no default __reduce__ due to non-trivial __cinit__")
 */
  __pyx_t_1 = __Pyx_PyObject_Call(__pyx_builtin_TypeError, __pyx_tuple__6, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(11, 2, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_Raise(__pyx_t_1, 0, 0, 0);
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  __PYX_ERR(11, 2, __pyx_L1_error)

  /* "(tree fragment)":1
 * def __reduce_cython__(self):             # <<<<<<<<<<<<<<
 *     raise TypeError("no default __reduce__ due to non-trivial __cinit__")
 * def __setstate_cython__(self, __pyx_state):
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_AddTraceback("grpc._cython.cygrpc._ChannelArgs.__reduce_cython__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "(tree fragment)":3
 * def __reduce_cython__(self):
 *     raise TypeError("no default __reduce__ due to non-trivial __cinit__")
 * def __setstate_cython__(self, __pyx_state):             # <<<<<<<<<<<<<<
 *     raise TypeError("no default __reduce__ due to non-trivial __cinit__")
 */

/* Python wrapper */
static PyObject *__pyx_pw_4grpc_7_cython_6cygrpc_12_ChannelArgs_7__setstate_cython__(PyObject *__pyx_v_self, PyObject *__pyx_v___pyx_state); /*proto*/
static PyObject *__pyx_pw_4grpc_7_cython_6cygrpc_12_ChannelArgs_7__setstate_cython__(PyObject *__pyx_v_self, PyObject *__pyx_v___pyx_state) {
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__setstate_cython__ (wrapper)", 0);
  __pyx_r = __pyx_pf_4grpc_7_cython_6cygrpc_12_ChannelArgs_6__setstate_cython__(((struct __pyx_obj_4grpc_7_cython_6cygrpc__ChannelArgs *)__pyx_v_self), ((PyObject *)__pyx_v___pyx_state));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_4grpc_7_cython_6cygrpc_12_ChannelArgs_6__setstate_cython__(CYTHON_UNUSED struct __pyx_obj_4grpc_7_cython_6cygrpc__ChannelArgs *__pyx_v_self, CYTHON_UNUSED PyObject *__pyx_v___pyx_state) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("__setstate_cython__", 0);

  /* "(tree fragment)":4
 *     raise TypeError("no default __reduce__ due to non-trivial __cinit__")
 * def __setstate_cython__(self, __pyx_state):
 *     raise TypeError("no default __reduce__ due to non-trivial __cinit__")             # <<<<<<<<<<<<<<
 */
  __pyx_t_1 = __Pyx_PyObject_Call(__pyx_builtin_TypeError, __pyx_tuple__7, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(11, 4, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_Raise(__pyx_t_1, 0, 0, 0);
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  __PYX_ERR(11, 4, __pyx_L1_error)

  /* "(tree fragment)":3
 * def __reduce_cython__(self):
 *     raise TypeError("no default __reduce__ due to non-trivial __cinit__")
 * def __setstate_cython__(self, __pyx_state):             # <<<<<<<<<<<<<<
 *     raise TypeError("no default __reduce__ due to non-trivial __cinit__")
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_AddTraceback("grpc._cython.cygrpc._ChannelArgs.__setstate_cython__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "src/python/grpcio/grpc/_cython/_cygrpc/call.pyx.pxi":18
 * cdef class Call:
 * 
 *   def __cinit__(self):             # <<<<<<<<<<<<<<
 *     # Create an *empty* call
 *     fork_handlers_and_grpc_init()
 */

/* Python wrapper */
static int __pyx_pw_4grpc_7_cython_6cygrpc_4Call_1__cinit__(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
static int __pyx_pw_4grpc_7_cython_6cygrpc_4Call_1__cinit__(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
  int __pyx_r;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__cinit__ (wrapper)", 0);
  if (unlikely(PyTuple_GET_SIZE(__pyx_args) > 0)) {
    __Pyx_RaiseArgtupleInvalid("__cinit__", 1, 0, 0, PyTuple_GET_SIZE(__pyx_args)); return -1;}
  if (unlikely(__pyx_kwds) && unlikely(PyDict_Size(__pyx_kwds) > 0) && unlikely(!__Pyx_CheckKeywordStrings(__pyx_kwds, "__cinit__", 0))) return -1;
  __pyx_r = __pyx_pf_4grpc_7_cython_6cygrpc_4Call___cinit__(((struct __pyx_obj_4grpc_7_cython_6cygrpc_Call *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static int __pyx_pf_4grpc_7_cython_6cygrpc_4Call___cinit__(struct __pyx_obj_4grpc_7_cython_6cygrpc_Call *__pyx_v_self) {
  int __pyx_r;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  PyObject *__pyx_t_2 = NULL;
  PyObject *__pyx_t_3 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("__cinit__", 0);

  /* "src/python/grpcio/grpc/_cython/_cygrpc/call.pyx.pxi":20
 *   def __cinit__(self):
 *     # Create an *empty* call
 *     fork_handlers_and_grpc_init()             # <<<<<<<<<<<<<<
 *     self.c_call = NULL
 *     self.references = []
 */
  __Pyx_GetModuleGlobalName(__pyx_t_2, __pyx_n_s_fork_handlers_and_grpc_init); if (unlikely(!__pyx_t_2)) __PYX_ERR(4, 20, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __pyx_t_3 = NULL;
  if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_2))) {
    __pyx_t_3 = PyMethod_GET_SELF(__pyx_t_2);
    if (likely(__pyx_t_3)) {
      PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_2);
      __Pyx_INCREF(__pyx_t_3);
      __Pyx_INCREF(function);
      __Pyx_DECREF_SET(__pyx_t_2, function);
    }
  }
  __pyx_t_1 = (__pyx_t_3) ? __Pyx_PyObject_CallOneArg(__pyx_t_2, __pyx_t_3) : __Pyx_PyObject_CallNoArg(__pyx_t_2);
  __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0;
  if (unlikely(!__pyx_t_1)) __PYX_ERR(4, 20, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;

  /* "src/python/grpcio/grpc/_cython/_cygrpc/call.pyx.pxi":21
 *     # Create an *empty* call
 *     fork_handlers_and_grpc_init()
 *     self.c_call = NULL             # <<<<<<<<<<<<<<
 *     self.references = []
 * 
 */
  __pyx_v_self->c_call = NULL;

  /* "src/python/grpcio/grpc/_cython/_cygrpc/call.pyx.pxi":22
 *     fork_handlers_and_grpc_init()
 *     self.c_call = NULL
 *     self.references = []             # <<<<<<<<<<<<<<
 * 
 *   def _start_batch(self, operations, tag, retain_self):
 */
  __pyx_t_1 = PyList_New(0); if (unlikely(!__pyx_t_1)) __PYX_ERR(4, 22, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_GIVEREF(__pyx_t_1);
  __Pyx_GOTREF(__pyx_v_self->references);
  __Pyx_DECREF(__pyx_v_self->references);
  __pyx_v_self->references = ((PyObject*)__pyx_t_1);
  __pyx_t_1 = 0;

  /* "src/python/grpcio/grpc/_cython/_cygrpc/call.pyx.pxi":18
 * cdef class Call:
 * 
 *   def __cinit__(self):             # <<<<<<<<<<<<<<
 *     # Create an *empty* call
 *     fork_handlers_and_grpc_init()
 */

  /* function exit code */
  __pyx_r = 0;
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_XDECREF(__pyx_t_3);
  __Pyx_AddTraceback("grpc._cython.cygrpc.Call.__cinit__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = -1;
  __pyx_L0:;
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "src/python/grpcio/grpc/_cython/_cygrpc/call.pyx.pxi":24
 *     self.references = []
 * 
 *   def _start_batch(self, operations, tag, retain_self):             # <<<<<<<<<<<<<<
 *     if not self.is_valid:
 *       raise ValueError("invalid call object cannot be used from Python")
 */

/* Python wrapper */
static PyObject *__pyx_pw_4grpc_7_cython_6cygrpc_4Call_3_start_batch(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
static PyObject *__pyx_pw_4grpc_7_cython_6cygrpc_4Call_3_start_batch(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
  PyObject *__pyx_v_operations = 0;
  PyObject *__pyx_v_tag = 0;
  PyObject *__pyx_v_retain_self = 0;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("_start_batch (wrapper)", 0);
  {
    static PyObject **__pyx_pyargnames[] = {&__pyx_n_s_operations,&__pyx_n_s_tag,&__pyx_n_s_retain_self,0};
    PyObject* values[3] = {0,0,0};
    if (unlikely(__pyx_kwds)) {
      Py_ssize_t kw_args;
      const Py_ssize_t pos_args = PyTuple_GET_SIZE(__pyx_args);
      switch (pos_args) {
        case  3: values[2] = PyTuple_GET_ITEM(__pyx_args, 2);
        CYTHON_FALLTHROUGH;
        case  2: values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
        CYTHON_FALLTHROUGH;
        case  1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
        CYTHON_FALLTHROUGH;
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      kw_args = PyDict_Size(__pyx_kwds);
      switch (pos_args) {
        case  0:
        if (likely((values[0] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_operations)) != 0)) kw_args--;
        else goto __pyx_L5_argtuple_error;
        CYTHON_FALLTHROUGH;
        case  1:
        if (likely((values[1] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_tag)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("_start_batch", 1, 3, 3, 1); __PYX_ERR(4, 24, __pyx_L3_error)
        }
        CYTHON_FALLTHROUGH;
        case  2:
        if (likely((values[2] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_retain_self)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("_start_batch", 1, 3, 3, 2); __PYX_ERR(4, 24, __pyx_L3_error)
        }
      }
      if (unlikely(kw_args > 0)) {
        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "_start_batch") < 0)) __PYX_ERR(4, 24, __pyx_L3_error)
      }
    } else if (PyTuple_GET_SIZE(__pyx_args) != 3) {
      goto __pyx_L5_argtuple_error;
    } else {
      values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
      values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
      values[2] = PyTuple_GET_ITEM(__pyx_args, 2);
    }
    __pyx_v_operations = values[0];
    __pyx_v_tag = values[1];
    __pyx_v_retain_self = values[2];
  }
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("_start_batch", 1, 3, 3, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(4, 24, __pyx_L3_error)
  __pyx_L3_error:;
  __Pyx_AddTraceback("grpc._cython.cygrpc.Call._start_batch", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  __pyx_r = __pyx_pf_4grpc_7_cython_6cygrpc_4Call_2_start_batch(((struct __pyx_obj_4grpc_7_cython_6cygrpc_Call *)__pyx_v_self), __pyx_v_operations, __pyx_v_tag, __pyx_v_retain_self);

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_4grpc_7_cython_6cygrpc_4Call_2_start_batch(struct __pyx_obj_4grpc_7_cython_6cygrpc_Call *__pyx_v_self, PyObject *__pyx_v_operations, PyObject *__pyx_v_tag, PyObject *__pyx_v_retain_self) {
  struct __pyx_obj_4grpc_7_cython_6cygrpc__BatchOperationTag *__pyx_v_batch_operation_tag = 0;
  grpc_call_error __pyx_v_error;
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  int __pyx_t_2;
  int __pyx_t_3;
  PyObject *__pyx_t_4 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("_start_batch", 0);

  /* "src/python/grpcio/grpc/_cython/_cygrpc/call.pyx.pxi":25
 * 
 *   def _start_batch(self, operations, tag, retain_self):
 *     if not self.is_valid:             # <<<<<<<<<<<<<<
 *       raise ValueError("invalid call object cannot be used from Python")
 *     cdef _BatchOperationTag batch_operation_tag = _BatchOperationTag(
 */
  __pyx_t_1 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_is_valid); if (unlikely(!__pyx_t_1)) __PYX_ERR(4, 25, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_t_2 = __Pyx_PyObject_IsTrue(__pyx_t_1); if (unlikely(__pyx_t_2 < 0)) __PYX_ERR(4, 25, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  __pyx_t_3 = ((!__pyx_t_2) != 0);
  if (unlikely(__pyx_t_3)) {

    /* "src/python/grpcio/grpc/_cython/_cygrpc/call.pyx.pxi":26
 *   def _start_batch(self, operations, tag, retain_self):
 *     if not self.is_valid:
 *       raise ValueError("invalid call object cannot be used from Python")             # <<<<<<<<<<<<<<
 *     cdef _BatchOperationTag batch_operation_tag = _BatchOperationTag(
 *         tag, operations, self if retain_self else None)
 */
    __pyx_t_1 = __Pyx_PyObject_Call(__pyx_builtin_ValueError, __pyx_tuple__8, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(4, 26, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_1);
    __Pyx_Raise(__pyx_t_1, 0, 0, 0);
    __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
    __PYX_ERR(4, 26, __pyx_L1_error)

    /* "src/python/grpcio/grpc/_cython/_cygrpc/call.pyx.pxi":25
 * 
 *   def _start_batch(self, operations, tag, retain_self):
 *     if not self.is_valid:             # <<<<<<<<<<<<<<
 *       raise ValueError("invalid call object cannot be used from Python")
 *     cdef _BatchOperationTag batch_operation_tag = _BatchOperationTag(
 */
  }

  /* "src/python/grpcio/grpc/_cython/_cygrpc/call.pyx.pxi":28
 *       raise ValueError("invalid call object cannot be used from Python")
 *     cdef _BatchOperationTag batch_operation_tag = _BatchOperationTag(
 *         tag, operations, self if retain_self else None)             # <<<<<<<<<<<<<<
 *     batch_operation_tag.prepare()
 *     cpython.Py_INCREF(batch_operation_tag)
 */
  __pyx_t_3 = __Pyx_PyObject_IsTrue(__pyx_v_retain_self); if (unlikely(__pyx_t_3 < 0)) __PYX_ERR(4, 28, __pyx_L1_error)
  if (__pyx_t_3) {
    __Pyx_INCREF(((PyObject *)__pyx_v_self));
    __pyx_t_1 = ((PyObject *)__pyx_v_self);
  } else {
    __Pyx_INCREF(Py_None);
    __pyx_t_1 = Py_None;
  }

  /* "src/python/grpcio/grpc/_cython/_cygrpc/call.pyx.pxi":27
 *     if not self.is_valid:
 *       raise ValueError("invalid call object cannot be used from Python")
 *     cdef _BatchOperationTag batch_operation_tag = _BatchOperationTag(             # <<<<<<<<<<<<<<
 *         tag, operations, self if retain_self else None)
 *     batch_operation_tag.prepare()
 */
  __pyx_t_4 = PyTuple_New(3); if (unlikely(!__pyx_t_4)) __PYX_ERR(4, 27, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_4);
  __Pyx_INCREF(__pyx_v_tag);
  __Pyx_GIVEREF(__pyx_v_tag);
  PyTuple_SET_ITEM(__pyx_t_4, 0, __pyx_v_tag);
  __Pyx_INCREF(__pyx_v_operations);
  __Pyx_GIVEREF(__pyx_v_operations);
  PyTuple_SET_ITEM(__pyx_t_4, 1, __pyx_v_operations);
  __Pyx_GIVEREF(__pyx_t_1);
  PyTuple_SET_ITEM(__pyx_t_4, 2, __pyx_t_1);
  __pyx_t_1 = 0;
  __pyx_t_1 = __Pyx_PyObject_Call(((PyObject *)__pyx_ptype_4grpc_7_cython_6cygrpc__BatchOperationTag), __pyx_t_4, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(4, 27, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
  __pyx_v_batch_operation_tag = ((struct __pyx_obj_4grpc_7_cython_6cygrpc__BatchOperationTag *)__pyx_t_1);
  __pyx_t_1 = 0;

  /* "src/python/grpcio/grpc/_cython/_cygrpc/call.pyx.pxi":29
 *     cdef _BatchOperationTag batch_operation_tag = _BatchOperationTag(
 *         tag, operations, self if retain_self else None)
 *     batch_operation_tag.prepare()             # <<<<<<<<<<<<<<
 *     cpython.Py_INCREF(batch_operation_tag)
 *     cdef grpc_call_error error
 */
  ((struct __pyx_vtabstruct_4grpc_7_cython_6cygrpc__BatchOperationTag *)__pyx_v_batch_operation_tag->__pyx_base.__pyx_vtab)->prepare(__pyx_v_batch_operation_tag); if (unlikely(PyErr_Occurred())) __PYX_ERR(4, 29, __pyx_L1_error)

  /* "src/python/grpcio/grpc/_cython/_cygrpc/call.pyx.pxi":30
 *         tag, operations, self if retain_self else None)
 *     batch_operation_tag.prepare()
 *     cpython.Py_INCREF(batch_operation_tag)             # <<<<<<<<<<<<<<
 *     cdef grpc_call_error error
 *     with nogil:
 */
  Py_INCREF(((PyObject *)__pyx_v_batch_operation_tag));

  /* "src/python/grpcio/grpc/_cython/_cygrpc/call.pyx.pxi":32
 *     cpython.Py_INCREF(batch_operation_tag)
 *     cdef grpc_call_error error
 *     with nogil:             # <<<<<<<<<<<<<<
 *       error = grpc_call_start_batch(
 *           self.c_call, batch_operation_tag.c_ops, batch_operation_tag.c_nops,
 */
  {
      #ifdef WITH_THREAD
      PyThreadState *_save;
      Py_UNBLOCK_THREADS
      __Pyx_FastGIL_Remember();
      #endif
      /*try:*/ {

        /* "src/python/grpcio/grpc/_cython/_cygrpc/call.pyx.pxi":33
 *     cdef grpc_call_error error
 *     with nogil:
 *       error = grpc_call_start_batch(             # <<<<<<<<<<<<<<
 *           self.c_call, batch_operation_tag.c_ops, batch_operation_tag.c_nops,
 *           <cpython.PyObject *>batch_operation_tag, NULL)
 */
        __pyx_v_error = grpc_call_start_batch(__pyx_v_self->c_call, __pyx_v_batch_operation_tag->c_ops, __pyx_v_batch_operation_tag->c_nops, ((PyObject *)__pyx_v_batch_operation_tag), NULL);
      }

      /* "src/python/grpcio/grpc/_cython/_cygrpc/call.pyx.pxi":32
 *     cpython.Py_INCREF(batch_operation_tag)
 *     cdef grpc_call_error error
 *     with nogil:             # <<<<<<<<<<<<<<
 *       error = grpc_call_start_batch(
 *           self.c_call, batch_operation_tag.c_ops, batch_operation_tag.c_nops,
 */
      /*finally:*/ {
        /*normal exit:*/{
          #ifdef WITH_THREAD
          __Pyx_FastGIL_Forget();
          Py_BLOCK_THREADS
          #endif
          goto __pyx_L6;
        }
        __pyx_L6:;
      }
  }

  /* "src/python/grpcio/grpc/_cython/_cygrpc/call.pyx.pxi":36
 *           self.c_call, batch_operation_tag.c_ops, batch_operation_tag.c_nops,
 *           <cpython.PyObject *>batch_operation_tag, NULL)
 *     return error             # <<<<<<<<<<<<<<
 * 
 *   def start_client_batch(self, operations, tag):
 */
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_1 = __Pyx_PyInt_From_grpc_call_error(__pyx_v_error); if (unlikely(!__pyx_t_1)) __PYX_ERR(4, 36, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_r = __pyx_t_1;
  __pyx_t_1 = 0;
  goto __pyx_L0;

  /* "src/python/grpcio/grpc/_cython/_cygrpc/call.pyx.pxi":24
 *     self.references = []
 * 
 *   def _start_batch(self, operations, tag, retain_self):             # <<<<<<<<<<<<<<
 *     if not self.is_valid:
 *       raise ValueError("invalid call object cannot be used from Python")
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_XDECREF(__pyx_t_4);
  __Pyx_AddTraceback("grpc._cython.cygrpc.Call._start_batch", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XDECREF((PyObject *)__pyx_v_batch_operation_tag);
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "src/python/grpcio/grpc/_cython/_cygrpc/call.pyx.pxi":38
 *     return error
 * 
 *   def start_client_batch(self, operations, tag):             # <<<<<<<<<<<<<<
 *     # We don't reference this call in the operations tag because
 *     # it should be cancelled when it goes out of scope
 */

/* Python wrapper */
static PyObject *__pyx_pw_4grpc_7_cython_6cygrpc_4Call_5start_client_batch(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
static PyObject *__pyx_pw_4grpc_7_cython_6cygrpc_4Call_5start_client_batch(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
  PyObject *__pyx_v_operations = 0;
  PyObject *__pyx_v_tag = 0;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("start_client_batch (wrapper)", 0);
  {
    static PyObject **__pyx_pyargnames[] = {&__pyx_n_s_operations,&__pyx_n_s_tag,0};
    PyObject* values[2] = {0,0};
    if (unlikely(__pyx_kwds)) {
      Py_ssize_t kw_args;
      const Py_ssize_t pos_args = PyTuple_GET_SIZE(__pyx_args);
      switch (pos_args) {
        case  2: values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
        CYTHON_FALLTHROUGH;
        case  1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
        CYTHON_FALLTHROUGH;
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      kw_args = PyDict_Size(__pyx_kwds);
      switch (pos_args) {
        case  0:
        if (likely((values[0] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_operations)) != 0)) kw_args--;
        else goto __pyx_L5_argtuple_error;
        CYTHON_FALLTHROUGH;
        case  1:
        if (likely((values[1] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_tag)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("start_client_batch", 1, 2, 2, 1); __PYX_ERR(4, 38, __pyx_L3_error)
        }
      }
      if (unlikely(kw_args > 0)) {
        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "start_client_batch") < 0)) __PYX_ERR(4, 38, __pyx_L3_error)
      }
    } else if (PyTuple_GET_SIZE(__pyx_args) != 2) {
      goto __pyx_L5_argtuple_error;
    } else {
      values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
      values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
    }
    __pyx_v_operations = values[0];
    __pyx_v_tag = values[1];
  }
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("start_client_batch", 1, 2, 2, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(4, 38, __pyx_L3_error)
  __pyx_L3_error:;
  __Pyx_AddTraceback("grpc._cython.cygrpc.Call.start_client_batch", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  __pyx_r = __pyx_pf_4grpc_7_cython_6cygrpc_4Call_4start_client_batch(((struct __pyx_obj_4grpc_7_cython_6cygrpc_Call *)__pyx_v_self), __pyx_v_operations, __pyx_v_tag);

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_4grpc_7_cython_6cygrpc_4Call_4start_client_batch(struct __pyx_obj_4grpc_7_cython_6cygrpc_Call *__pyx_v_self, PyObject *__pyx_v_operations, PyObject *__pyx_v_tag) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  PyObject *__pyx_t_2 = NULL;
  PyObject *__pyx_t_3 = NULL;
  int __pyx_t_4;
  PyObject *__pyx_t_5 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("start_client_batch", 0);

  /* "src/python/grpcio/grpc/_cython/_cygrpc/call.pyx.pxi":41
 *     # We don't reference this call in the operations tag because
 *     # it should be cancelled when it goes out of scope
 *     return self._start_batch(operations, tag, False)             # <<<<<<<<<<<<<<
 * 
 *   def start_server_batch(self, operations, tag):
 */
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_2 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_start_batch); if (unlikely(!__pyx_t_2)) __PYX_ERR(4, 41, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __pyx_t_3 = NULL;
  __pyx_t_4 = 0;
  if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_2))) {
    __pyx_t_3 = PyMethod_GET_SELF(__pyx_t_2);
    if (likely(__pyx_t_3)) {
      PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_2);
      __Pyx_INCREF(__pyx_t_3);
      __Pyx_INCREF(function);
      __Pyx_DECREF_SET(__pyx_t_2, function);
      __pyx_t_4 = 1;
    }
  }
  #if CYTHON_FAST_PYCALL
  if (PyFunction_Check(__pyx_t_2)) {
    PyObject *__pyx_temp[4] = {__pyx_t_3, __pyx_v_operations, __pyx_v_tag, Py_False};
    __pyx_t_1 = __Pyx_PyFunction_FastCall(__pyx_t_2, __pyx_temp+1-__pyx_t_4, 3+__pyx_t_4); if (unlikely(!__pyx_t_1)) __PYX_ERR(4, 41, __pyx_L1_error)
    __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0;
    __Pyx_GOTREF(__pyx_t_1);
  } else
  #endif
  #if CYTHON_FAST_PYCCALL
  if (__Pyx_PyFastCFunction_Check(__pyx_t_2)) {
    PyObject *__pyx_temp[4] = {__pyx_t_3, __pyx_v_operations, __pyx_v_tag, Py_False};
    __pyx_t_1 = __Pyx_PyCFunction_FastCall(__pyx_t_2, __pyx_temp+1-__pyx_t_4, 3+__pyx_t_4); if (unlikely(!__pyx_t_1)) __PYX_ERR(4, 41, __pyx_L1_error)
    __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0;
    __Pyx_GOTREF(__pyx_t_1);
  } else
  #endif
  {
    __pyx_t_5 = PyTuple_New(3+__pyx_t_4); if (unlikely(!__pyx_t_5)) __PYX_ERR(4, 41, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_5);
    if (__pyx_t_3) {
      __Pyx_GIVEREF(__pyx_t_3); PyTuple_SET_ITEM(__pyx_t_5, 0, __pyx_t_3); __pyx_t_3 = NULL;
    }
    __Pyx_INCREF(__pyx_v_operations);
    __Pyx_GIVEREF(__pyx_v_operations);
    PyTuple_SET_ITEM(__pyx_t_5, 0+__pyx_t_4, __pyx_v_operations);
    __Pyx_INCREF(__pyx_v_tag);
    __Pyx_GIVEREF(__pyx_v_tag);
    PyTuple_SET_ITEM(__pyx_t_5, 1+__pyx_t_4, __pyx_v_tag);
    __Pyx_INCREF(Py_False);
    __Pyx_GIVEREF(Py_False);
    PyTuple_SET_ITEM(__pyx_t_5, 2+__pyx_t_4, Py_False);
    __pyx_t_1 = __Pyx_PyObject_Call(__pyx_t_2, __pyx_t_5, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(4, 41, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_1);
    __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
  }
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  __pyx_r = __pyx_t_1;
  __pyx_t_1 = 0;
  goto __pyx_L0;

  /* "src/python/grpcio/grpc/_cython/_cygrpc/call.pyx.pxi":38
 *     return error
 * 
 *   def start_client_batch(self, operations, tag):             # <<<<<<<<<<<<<<
 *     # We don't reference this call in the operations tag because
 *     # it should be cancelled when it goes out of scope
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_XDECREF(__pyx_t_3);
  __Pyx_XDECREF(__pyx_t_5);
  __Pyx_AddTraceback("grpc._cython.cygrpc.Call.start_client_batch", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "src/python/grpcio/grpc/_cython/_cygrpc/call.pyx.pxi":43
 *     return self._start_batch(operations, tag, False)
 * 
 *   def start_server_batch(self, operations, tag):             # <<<<<<<<<<<<<<
 *     return self._start_batch(operations, tag, True)
 * 
 */

/* Python wrapper */
static PyObject *__pyx_pw_4grpc_7_cython_6cygrpc_4Call_7start_server_batch(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
static PyObject *__pyx_pw_4grpc_7_cython_6cygrpc_4Call_7start_server_batch(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
  PyObject *__pyx_v_operations = 0;
  PyObject *__pyx_v_tag = 0;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("start_server_batch (wrapper)", 0);
  {
    static PyObject **__pyx_pyargnames[] = {&__pyx_n_s_operations,&__pyx_n_s_tag,0};
    PyObject* values[2] = {0,0};
    if (unlikely(__pyx_kwds)) {
      Py_ssize_t kw_args;
      const Py_ssize_t pos_args = PyTuple_GET_SIZE(__pyx_args);
      switch (pos_args) {
        case  2: values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
        CYTHON_FALLTHROUGH;
        case  1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
        CYTHON_FALLTHROUGH;
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      kw_args = PyDict_Size(__pyx_kwds);
      switch (pos_args) {
        case  0:
        if (likely((values[0] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_operations)) != 0)) kw_args--;
        else goto __pyx_L5_argtuple_error;
        CYTHON_FALLTHROUGH;
        case  1:
        if (likely((values[1] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_tag)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("start_server_batch", 1, 2, 2, 1); __PYX_ERR(4, 43, __pyx_L3_error)
        }
      }
      if (unlikely(kw_args > 0)) {
        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "start_server_batch") < 0)) __PYX_ERR(4, 43, __pyx_L3_error)
      }
    } else if (PyTuple_GET_SIZE(__pyx_args) != 2) {
      goto __pyx_L5_argtuple_error;
    } else {
      values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
      values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
    }
    __pyx_v_operations = values[0];
    __pyx_v_tag = values[1];
  }
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("start_server_batch", 1, 2, 2, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(4, 43, __pyx_L3_error)
  __pyx_L3_error:;
  __Pyx_AddTraceback("grpc._cython.cygrpc.Call.start_server_batch", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  __pyx_r = __pyx_pf_4grpc_7_cython_6cygrpc_4Call_6start_server_batch(((struct __pyx_obj_4grpc_7_cython_6cygrpc_Call *)__pyx_v_self), __pyx_v_operations, __pyx_v_tag);

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_4grpc_7_cython_6cygrpc_4Call_6start_server_batch(struct __pyx_obj_4grpc_7_cython_6cygrpc_Call *__pyx_v_self, PyObject *__pyx_v_operations, PyObject *__pyx_v_tag) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  PyObject *__pyx_t_2 = NULL;
  PyObject *__pyx_t_3 = NULL;
  int __pyx_t_4;
  PyObject *__pyx_t_5 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("start_server_batch", 0);

  /* "src/python/grpcio/grpc/_cython/_cygrpc/call.pyx.pxi":44
 * 
 *   def start_server_batch(self, operations, tag):
 *     return self._start_batch(operations, tag, True)             # <<<<<<<<<<<<<<
 * 
 *   def cancel(
 */
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_2 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_start_batch); if (unlikely(!__pyx_t_2)) __PYX_ERR(4, 44, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __pyx_t_3 = NULL;
  __pyx_t_4 = 0;
  if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_2))) {
    __pyx_t_3 = PyMethod_GET_SELF(__pyx_t_2);
    if (likely(__pyx_t_3)) {
      PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_2);
      __Pyx_INCREF(__pyx_t_3);
      __Pyx_INCREF(function);
      __Pyx_DECREF_SET(__pyx_t_2, function);
      __pyx_t_4 = 1;
    }
  }
  #if CYTHON_FAST_PYCALL
  if (PyFunction_Check(__pyx_t_2)) {
    PyObject *__pyx_temp[4] = {__pyx_t_3, __pyx_v_operations, __pyx_v_tag, Py_True};
    __pyx_t_1 = __Pyx_PyFunction_FastCall(__pyx_t_2, __pyx_temp+1-__pyx_t_4, 3+__pyx_t_4); if (unlikely(!__pyx_t_1)) __PYX_ERR(4, 44, __pyx_L1_error)
    __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0;
    __Pyx_GOTREF(__pyx_t_1);
  } else
  #endif
  #if CYTHON_FAST_PYCCALL
  if (__Pyx_PyFastCFunction_Check(__pyx_t_2)) {
    PyObject *__pyx_temp[4] = {__pyx_t_3, __pyx_v_operations, __pyx_v_tag, Py_True};
    __pyx_t_1 = __Pyx_PyCFunction_FastCall(__pyx_t_2, __pyx_temp+1-__pyx_t_4, 3+__pyx_t_4); if (unlikely(!__pyx_t_1)) __PYX_ERR(4, 44, __pyx_L1_error)
    __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0;
    __Pyx_GOTREF(__pyx_t_1);
  } else
  #endif
  {
    __pyx_t_5 = PyTuple_New(3+__pyx_t_4); if (unlikely(!__pyx_t_5)) __PYX_ERR(4, 44, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_5);
    if (__pyx_t_3) {
      __Pyx_GIVEREF(__pyx_t_3); PyTuple_SET_ITEM(__pyx_t_5, 0, __pyx_t_3); __pyx_t_3 = NULL;
    }
    __Pyx_INCREF(__pyx_v_operations);
    __Pyx_GIVEREF(__pyx_v_operations);
    PyTuple_SET_ITEM(__pyx_t_5, 0+__pyx_t_4, __pyx_v_operations);
    __Pyx_INCREF(__pyx_v_tag);
    __Pyx_GIVEREF(__pyx_v_tag);
    PyTuple_SET_ITEM(__pyx_t_5, 1+__pyx_t_4, __pyx_v_tag);
    __Pyx_INCREF(Py_True);
    __Pyx_GIVEREF(Py_True);
    PyTuple_SET_ITEM(__pyx_t_5, 2+__pyx_t_4, Py_True);
    __pyx_t_1 = __Pyx_PyObject_Call(__pyx_t_2, __pyx_t_5, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(4, 44, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_1);
    __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
  }
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  __pyx_r = __pyx_t_1;
  __pyx_t_1 = 0;
  goto __pyx_L0;

  /* "src/python/grpcio/grpc/_cython/_cygrpc/call.pyx.pxi":43
 *     return self._start_batch(operations, tag, False)
 * 
 *   def start_server_batch(self, operations, tag):             # <<<<<<<<<<<<<<
 *     return self._start_batch(operations, tag, True)
 * 
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_XDECREF(__pyx_t_3);
  __Pyx_XDECREF(__pyx_t_5);
  __Pyx_AddTraceback("grpc._cython.cygrpc.Call.start_server_batch", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "src/python/grpcio/grpc/_cython/_cygrpc/call.pyx.pxi":46
 *     return self._start_batch(operations, tag, True)
 * 
 *   def cancel(             # <<<<<<<<<<<<<<
 *       self, grpc_status_code error_code=GRPC_STATUS__DO_NOT_USE,
 *       details=None):
 */

/* Python wrapper */
static PyObject *__pyx_pw_4grpc_7_cython_6cygrpc_4Call_9cancel(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
static PyObject *__pyx_pw_4grpc_7_cython_6cygrpc_4Call_9cancel(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
  grpc_status_code __pyx_v_error_code;
  PyObject *__pyx_v_details = 0;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("cancel (wrapper)", 0);
  {
    static PyObject **__pyx_pyargnames[] = {&__pyx_n_s_error_code,&__pyx_n_s_details,0};
    PyObject* values[2] = {0,0};

    /* "src/python/grpcio/grpc/_cython/_cygrpc/call.pyx.pxi":48
 *   def cancel(
 *       self, grpc_status_code error_code=GRPC_STATUS__DO_NOT_USE,
 *       details=None):             # <<<<<<<<<<<<<<
 *     details = str_to_bytes(details)
 *     if not self.is_valid:
 */
    values[1] = ((PyObject *)Py_None);
    if (unlikely(__pyx_kwds)) {
      Py_ssize_t kw_args;
      const Py_ssize_t pos_args = PyTuple_GET_SIZE(__pyx_args);
      switch (pos_args) {
        case  2: values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
        CYTHON_FALLTHROUGH;
        case  1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
        CYTHON_FALLTHROUGH;
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      kw_args = PyDict_Size(__pyx_kwds);
      switch (pos_args) {
        case  0:
        if (kw_args > 0) {
          PyObject* value = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_error_code);
          if (value) { values[0] = value; kw_args--; }
        }
        CYTHON_FALLTHROUGH;
        case  1:
        if (kw_args > 0) {
          PyObject* value = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_details);
          if (value) { values[1] = value; kw_args--; }
        }
      }
      if (unlikely(kw_args > 0)) {
        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "cancel") < 0)) __PYX_ERR(4, 46, __pyx_L3_error)
      }
    } else {
      switch (PyTuple_GET_SIZE(__pyx_args)) {
        case  2: values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
        CYTHON_FALLTHROUGH;
        case  1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
        CYTHON_FALLTHROUGH;
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
    }
    if (values[0]) {
      __pyx_v_error_code = ((grpc_status_code)__Pyx_PyInt_As_grpc_status_code(values[0])); if (unlikely(PyErr_Occurred())) __PYX_ERR(4, 47, __pyx_L3_error)
    } else {
      __pyx_v_error_code = __pyx_k__9;
    }
    __pyx_v_details = values[1];
  }
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("cancel", 0, 0, 2, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(4, 46, __pyx_L3_error)
  __pyx_L3_error:;
  __Pyx_AddTraceback("grpc._cython.cygrpc.Call.cancel", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  __pyx_r = __pyx_pf_4grpc_7_cython_6cygrpc_4Call_8cancel(((struct __pyx_obj_4grpc_7_cython_6cygrpc_Call *)__pyx_v_self), __pyx_v_error_code, __pyx_v_details);

  /* "src/python/grpcio/grpc/_cython/_cygrpc/call.pyx.pxi":46
 *     return self._start_batch(operations, tag, True)
 * 
 *   def cancel(             # <<<<<<<<<<<<<<
 *       self, grpc_status_code error_code=GRPC_STATUS__DO_NOT_USE,
 *       details=None):
 */

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_4grpc_7_cython_6cygrpc_4Call_8cancel(struct __pyx_obj_4grpc_7_cython_6cygrpc_Call *__pyx_v_self, grpc_status_code __pyx_v_error_code, PyObject *__pyx_v_details) {
  grpc_call_error __pyx_v_result;
  char *__pyx_v_c_details;
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  int __pyx_t_2;
  int __pyx_t_3;
  int __pyx_t_4;
  char *__pyx_t_5;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("cancel", 0);
  __Pyx_INCREF(__pyx_v_details);

  /* "src/python/grpcio/grpc/_cython/_cygrpc/call.pyx.pxi":49
 *       self, grpc_status_code error_code=GRPC_STATUS__DO_NOT_USE,
 *       details=None):
 *     details = str_to_bytes(details)             # <<<<<<<<<<<<<<
 *     if not self.is_valid:
 *       raise ValueError("invalid call object cannot be used from Python")
 */
  __pyx_t_1 = __pyx_f_4grpc_7_cython_6cygrpc_str_to_bytes(__pyx_v_details); if (unlikely(!__pyx_t_1)) __PYX_ERR(4, 49, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_DECREF_SET(__pyx_v_details, __pyx_t_1);
  __pyx_t_1 = 0;

  /* "src/python/grpcio/grpc/_cython/_cygrpc/call.pyx.pxi":50
 *       details=None):
 *     details = str_to_bytes(details)
 *     if not self.is_valid:             # <<<<<<<<<<<<<<
 *       raise ValueError("invalid call object cannot be used from Python")
 *     if (details is None) != (error_code == GRPC_STATUS__DO_NOT_USE):
 */
  __pyx_t_1 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_is_valid); if (unlikely(!__pyx_t_1)) __PYX_ERR(4, 50, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_t_2 = __Pyx_PyObject_IsTrue(__pyx_t_1); if (unlikely(__pyx_t_2 < 0)) __PYX_ERR(4, 50, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  __pyx_t_3 = ((!__pyx_t_2) != 0);
  if (unlikely(__pyx_t_3)) {

    /* "src/python/grpcio/grpc/_cython/_cygrpc/call.pyx.pxi":51
 *     details = str_to_bytes(details)
 *     if not self.is_valid:
 *       raise ValueError("invalid call object cannot be used from Python")             # <<<<<<<<<<<<<<
 *     if (details is None) != (error_code == GRPC_STATUS__DO_NOT_USE):
 *       raise ValueError("if error_code is specified, so must details "
 */
    __pyx_t_1 = __Pyx_PyObject_Call(__pyx_builtin_ValueError, __pyx_tuple__8, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(4, 51, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_1);
    __Pyx_Raise(__pyx_t_1, 0, 0, 0);
    __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
    __PYX_ERR(4, 51, __pyx_L1_error)

    /* "src/python/grpcio/grpc/_cython/_cygrpc/call.pyx.pxi":50
 *       details=None):
 *     details = str_to_bytes(details)
 *     if not self.is_valid:             # <<<<<<<<<<<<<<
 *       raise ValueError("invalid call object cannot be used from Python")
 *     if (details is None) != (error_code == GRPC_STATUS__DO_NOT_USE):
 */
  }

  /* "src/python/grpcio/grpc/_cython/_cygrpc/call.pyx.pxi":52
 *     if not self.is_valid:
 *       raise ValueError("invalid call object cannot be used from Python")
 *     if (details is None) != (error_code == GRPC_STATUS__DO_NOT_USE):             # <<<<<<<<<<<<<<
 *       raise ValueError("if error_code is specified, so must details "
 *                        "(and vice-versa)")
 */
  __pyx_t_3 = (__pyx_v_details == Py_None);
  __pyx_t_2 = ((__pyx_t_3 != (__pyx_v_error_code == GRPC_STATUS__DO_NOT_USE)) != 0);
  if (unlikely(__pyx_t_2)) {

    /* "src/python/grpcio/grpc/_cython/_cygrpc/call.pyx.pxi":53
 *       raise ValueError("invalid call object cannot be used from Python")
 *     if (details is None) != (error_code == GRPC_STATUS__DO_NOT_USE):
 *       raise ValueError("if error_code is specified, so must details "             # <<<<<<<<<<<<<<
 *                        "(and vice-versa)")
 *     cdef grpc_call_error result
 */
    __pyx_t_1 = __Pyx_PyObject_Call(__pyx_builtin_ValueError, __pyx_tuple__10, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(4, 53, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_1);
    __Pyx_Raise(__pyx_t_1, 0, 0, 0);
    __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
    __PYX_ERR(4, 53, __pyx_L1_error)

    /* "src/python/grpcio/grpc/_cython/_cygrpc/call.pyx.pxi":52
 *     if not self.is_valid:
 *       raise ValueError("invalid call object cannot be used from Python")
 *     if (details is None) != (error_code == GRPC_STATUS__DO_NOT_USE):             # <<<<<<<<<<<<<<
 *       raise ValueError("if error_code is specified, so must details "
 *                        "(and vice-versa)")
 */
  }

  /* "src/python/grpcio/grpc/_cython/_cygrpc/call.pyx.pxi":56
 *                        "(and vice-versa)")
 *     cdef grpc_call_error result
 *     cdef char *c_details = NULL             # <<<<<<<<<<<<<<
 *     if error_code != GRPC_STATUS__DO_NOT_USE:
 *       self.references.append(details)
 */
  __pyx_v_c_details = NULL;

  /* "src/python/grpcio/grpc/_cython/_cygrpc/call.pyx.pxi":57
 *     cdef grpc_call_error result
 *     cdef char *c_details = NULL
 *     if error_code != GRPC_STATUS__DO_NOT_USE:             # <<<<<<<<<<<<<<
 *       self.references.append(details)
 *       c_details = details
 */
  __pyx_t_2 = ((__pyx_v_error_code != GRPC_STATUS__DO_NOT_USE) != 0);
  if (__pyx_t_2) {

    /* "src/python/grpcio/grpc/_cython/_cygrpc/call.pyx.pxi":58
 *     cdef char *c_details = NULL
 *     if error_code != GRPC_STATUS__DO_NOT_USE:
 *       self.references.append(details)             # <<<<<<<<<<<<<<
 *       c_details = details
 *       with nogil:
 */
    if (unlikely(__pyx_v_self->references == Py_None)) {
      PyErr_Format(PyExc_AttributeError, "'NoneType' object has no attribute '%.30s'", "append");
      __PYX_ERR(4, 58, __pyx_L1_error)
    }
    __pyx_t_4 = __Pyx_PyList_Append(__pyx_v_self->references, __pyx_v_details); if (unlikely(__pyx_t_4 == ((int)-1))) __PYX_ERR(4, 58, __pyx_L1_error)

    /* "src/python/grpcio/grpc/_cython/_cygrpc/call.pyx.pxi":59
 *     if error_code != GRPC_STATUS__DO_NOT_USE:
 *       self.references.append(details)
 *       c_details = details             # <<<<<<<<<<<<<<
 *       with nogil:
 *         result = grpc_call_cancel_with_status(
 */
    __pyx_t_5 = __Pyx_PyObject_AsWritableString(__pyx_v_details); if (unlikely((!__pyx_t_5) && PyErr_Occurred())) __PYX_ERR(4, 59, __pyx_L1_error)
    __pyx_v_c_details = __pyx_t_5;

    /* "src/python/grpcio/grpc/_cython/_cygrpc/call.pyx.pxi":60
 *       self.references.append(details)
 *       c_details = details
 *       with nogil:             # <<<<<<<<<<<<<<
 *         result = grpc_call_cancel_with_status(
 *             self.c_call, error_code, c_details, NULL)
 */
    {
        #ifdef WITH_THREAD
        PyThreadState *_save;
        Py_UNBLOCK_THREADS
        __Pyx_FastGIL_Remember();
        #endif
        /*try:*/ {

          /* "src/python/grpcio/grpc/_cython/_cygrpc/call.pyx.pxi":61
 *       c_details = details
 *       with nogil:
 *         result = grpc_call_cancel_with_status(             # <<<<<<<<<<<<<<
 *             self.c_call, error_code, c_details, NULL)
 *       return result
 */
          __pyx_v_result = grpc_call_cancel_with_status(__pyx_v_self->c_call, __pyx_v_error_code, __pyx_v_c_details, NULL);
        }

        /* "src/python/grpcio/grpc/_cython/_cygrpc/call.pyx.pxi":60
 *       self.references.append(details)
 *       c_details = details
 *       with nogil:             # <<<<<<<<<<<<<<
 *         result = grpc_call_cancel_with_status(
 *             self.c_call, error_code, c_details, NULL)
 */
        /*finally:*/ {
          /*normal exit:*/{
            #ifdef WITH_THREAD
            __Pyx_FastGIL_Forget();
            Py_BLOCK_THREADS
            #endif
            goto __pyx_L8;
          }
          __pyx_L8:;
        }
    }

    /* "src/python/grpcio/grpc/_cython/_cygrpc/call.pyx.pxi":63
 *         result = grpc_call_cancel_with_status(
 *             self.c_call, error_code, c_details, NULL)
 *       return result             # <<<<<<<<<<<<<<
 *     else:
 *       with nogil:
 */
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_1 = __Pyx_PyInt_From_grpc_call_error(__pyx_v_result); if (unlikely(!__pyx_t_1)) __PYX_ERR(4, 63, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_1);
    __pyx_r = __pyx_t_1;
    __pyx_t_1 = 0;
    goto __pyx_L0;

    /* "src/python/grpcio/grpc/_cython/_cygrpc/call.pyx.pxi":57
 *     cdef grpc_call_error result
 *     cdef char *c_details = NULL
 *     if error_code != GRPC_STATUS__DO_NOT_USE:             # <<<<<<<<<<<<<<
 *       self.references.append(details)
 *       c_details = details
 */
  }

  /* "src/python/grpcio/grpc/_cython/_cygrpc/call.pyx.pxi":65
 *       return result
 *     else:
 *       with nogil:             # <<<<<<<<<<<<<<
 *         result = grpc_call_cancel(self.c_call, NULL)
 *       return result
 */
  /*else*/ {
    {
        #ifdef WITH_THREAD
        PyThreadState *_save;
        Py_UNBLOCK_THREADS
        __Pyx_FastGIL_Remember();
        #endif
        /*try:*/ {

          /* "src/python/grpcio/grpc/_cython/_cygrpc/call.pyx.pxi":66
 *     else:
 *       with nogil:
 *         result = grpc_call_cancel(self.c_call, NULL)             # <<<<<<<<<<<<<<
 *       return result
 * 
 */
          __pyx_v_result = grpc_call_cancel(__pyx_v_self->c_call, NULL);
        }

        /* "src/python/grpcio/grpc/_cython/_cygrpc/call.pyx.pxi":65
 *       return result
 *     else:
 *       with nogil:             # <<<<<<<<<<<<<<
 *         result = grpc_call_cancel(self.c_call, NULL)
 *       return result
 */
        /*finally:*/ {
          /*normal exit:*/{
            #ifdef WITH_THREAD
            __Pyx_FastGIL_Forget();
            Py_BLOCK_THREADS
            #endif
            goto __pyx_L11;
          }
          __pyx_L11:;
        }
    }

    /* "src/python/grpcio/grpc/_cython/_cygrpc/call.pyx.pxi":67
 *       with nogil:
 *         result = grpc_call_cancel(self.c_call, NULL)
 *       return result             # <<<<<<<<<<<<<<
 * 
 *   def set_credentials(self, CallCredentials call_credentials not None):
 */
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_1 = __Pyx_PyInt_From_grpc_call_error(__pyx_v_result); if (unlikely(!__pyx_t_1)) __PYX_ERR(4, 67, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_1);
    __pyx_r = __pyx_t_1;
    __pyx_t_1 = 0;
    goto __pyx_L0;
  }

  /* "src/python/grpcio/grpc/_cython/_cygrpc/call.pyx.pxi":46
 *     return self._start_batch(operations, tag, True)
 * 
 *   def cancel(             # <<<<<<<<<<<<<<
 *       self, grpc_status_code error_code=GRPC_STATUS__DO_NOT_USE,
 *       details=None):
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_AddTraceback("grpc._cython.cygrpc.Call.cancel", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XDECREF(__pyx_v_details);
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "src/python/grpcio/grpc/_cython/_cygrpc/call.pyx.pxi":69
 *       return result
 * 
 *   def set_credentials(self, CallCredentials call_credentials not None):             # <<<<<<<<<<<<<<
 *     cdef grpc_call_credentials *c_call_credentials = call_credentials.c()
 *     cdef grpc_call_error call_error = grpc_call_set_credentials(
 */

/* Python wrapper */
static PyObject *__pyx_pw_4grpc_7_cython_6cygrpc_4Call_11set_credentials(PyObject *__pyx_v_self, PyObject *__pyx_v_call_credentials); /*proto*/
static PyObject *__pyx_pw_4grpc_7_cython_6cygrpc_4Call_11set_credentials(PyObject *__pyx_v_self, PyObject *__pyx_v_call_credentials) {
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("set_credentials (wrapper)", 0);
  if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_call_credentials), __pyx_ptype_4grpc_7_cython_6cygrpc_CallCredentials, 0, "call_credentials", 0))) __PYX_ERR(4, 69, __pyx_L1_error)
  __pyx_r = __pyx_pf_4grpc_7_cython_6cygrpc_4Call_10set_credentials(((struct __pyx_obj_4grpc_7_cython_6cygrpc_Call *)__pyx_v_self), ((struct __pyx_obj_4grpc_7_cython_6cygrpc_CallCredentials *)__pyx_v_call_credentials));

  /* function exit code */
  goto __pyx_L0;
  __pyx_L1_error:;
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_4grpc_7_cython_6cygrpc_4Call_10set_credentials(struct __pyx_obj_4grpc_7_cython_6cygrpc_Call *__pyx_v_self, struct __pyx_obj_4grpc_7_cython_6cygrpc_CallCredentials *__pyx_v_call_credentials) {
  grpc_call_credentials *__pyx_v_c_call_credentials;
  grpc_call_error __pyx_v_call_error;
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  grpc_call_credentials *__pyx_t_1;
  PyObject *__pyx_t_2 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("set_credentials", 0);

  /* "src/python/grpcio/grpc/_cython/_cygrpc/call.pyx.pxi":70
 * 
 *   def set_credentials(self, CallCredentials call_credentials not None):
 *     cdef grpc_call_credentials *c_call_credentials = call_credentials.c()             # <<<<<<<<<<<<<<
 *     cdef grpc_call_error call_error = grpc_call_set_credentials(
 *         self.c_call, c_call_credentials)
 */
  __pyx_t_1 = ((struct __pyx_vtabstruct_4grpc_7_cython_6cygrpc_CallCredentials *)__pyx_v_call_credentials->__pyx_vtab)->c(__pyx_v_call_credentials); if (unlikely(PyErr_Occurred())) __PYX_ERR(4, 70, __pyx_L1_error)
  __pyx_v_c_call_credentials = __pyx_t_1;

  /* "src/python/grpcio/grpc/_cython/_cygrpc/call.pyx.pxi":71
 *   def set_credentials(self, CallCredentials call_credentials not None):
 *     cdef grpc_call_credentials *c_call_credentials = call_credentials.c()
 *     cdef grpc_call_error call_error = grpc_call_set_credentials(             # <<<<<<<<<<<<<<
 *         self.c_call, c_call_credentials)
 *     grpc_call_credentials_release(c_call_credentials)
 */
  __pyx_v_call_error = grpc_call_set_credentials(__pyx_v_self->c_call, __pyx_v_c_call_credentials);

  /* "src/python/grpcio/grpc/_cython/_cygrpc/call.pyx.pxi":73
 *     cdef grpc_call_error call_error = grpc_call_set_credentials(
 *         self.c_call, c_call_credentials)
 *     grpc_call_credentials_release(c_call_credentials)             # <<<<<<<<<<<<<<
 *     return call_error
 * 
 */
  grpc_call_credentials_release(__pyx_v_c_call_credentials);

  /* "src/python/grpcio/grpc/_cython/_cygrpc/call.pyx.pxi":74
 *         self.c_call, c_call_credentials)
 *     grpc_call_credentials_release(c_call_credentials)
 *     return call_error             # <<<<<<<<<<<<<<
 * 
 *   def peer(self):
 */
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_2 = __Pyx_PyInt_From_grpc_call_error(__pyx_v_call_error); if (unlikely(!__pyx_t_2)) __PYX_ERR(4, 74, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __pyx_r = __pyx_t_2;
  __pyx_t_2 = 0;
  goto __pyx_L0;

  /* "src/python/grpcio/grpc/_cython/_cygrpc/call.pyx.pxi":69
 *       return result
 * 
 *   def set_credentials(self, CallCredentials call_credentials not None):             # <<<<<<<<<<<<<<
 *     cdef grpc_call_credentials *c_call_credentials = call_credentials.c()
 *     cdef grpc_call_error call_error = grpc_call_set_credentials(
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_AddTraceback("grpc._cython.cygrpc.Call.set_credentials", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "src/python/grpcio/grpc/_cython/_cygrpc/call.pyx.pxi":76
 *     return call_error
 * 
 *   def peer(self):             # <<<<<<<<<<<<<<
 *     cdef char *peer = NULL
 *     with nogil:
 */

/* Python wrapper */
static PyObject *__pyx_pw_4grpc_7_cython_6cygrpc_4Call_13peer(PyObject *__pyx_v_self, CYTHON_UNUSED PyObject *unused); /*proto*/
static PyObject *__pyx_pw_4grpc_7_cython_6cygrpc_4Call_13peer(PyObject *__pyx_v_self, CYTHON_UNUSED PyObject *unused) {
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("peer (wrapper)", 0);
  __pyx_r = __pyx_pf_4grpc_7_cython_6cygrpc_4Call_12peer(((struct __pyx_obj_4grpc_7_cython_6cygrpc_Call *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_4grpc_7_cython_6cygrpc_4Call_12peer(struct __pyx_obj_4grpc_7_cython_6cygrpc_Call *__pyx_v_self) {
  char *__pyx_v_peer;
  PyObject *__pyx_v_result = NULL;
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  PyObject *__pyx_t_2 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("peer", 0);

  /* "src/python/grpcio/grpc/_cython/_cygrpc/call.pyx.pxi":77
 * 
 *   def peer(self):
 *     cdef char *peer = NULL             # <<<<<<<<<<<<<<
 *     with nogil:
 *       peer = grpc_call_get_peer(self.c_call)
 */
  __pyx_v_peer = NULL;

  /* "src/python/grpcio/grpc/_cython/_cygrpc/call.pyx.pxi":78
 *   def peer(self):
 *     cdef char *peer = NULL
 *     with nogil:             # <<<<<<<<<<<<<<
 *       peer = grpc_call_get_peer(self.c_call)
 *     result = <bytes>peer
 */
  {
      #ifdef WITH_THREAD
      PyThreadState *_save;
      Py_UNBLOCK_THREADS
      __Pyx_FastGIL_Remember();
      #endif
      /*try:*/ {

        /* "src/python/grpcio/grpc/_cython/_cygrpc/call.pyx.pxi":79
 *     cdef char *peer = NULL
 *     with nogil:
 *       peer = grpc_call_get_peer(self.c_call)             # <<<<<<<<<<<<<<
 *     result = <bytes>peer
 *     with nogil:
 */
        __pyx_v_peer = grpc_call_get_peer(__pyx_v_self->c_call);
      }

      /* "src/python/grpcio/grpc/_cython/_cygrpc/call.pyx.pxi":78
 *   def peer(self):
 *     cdef char *peer = NULL
 *     with nogil:             # <<<<<<<<<<<<<<
 *       peer = grpc_call_get_peer(self.c_call)
 *     result = <bytes>peer
 */
      /*finally:*/ {
        /*normal exit:*/{
          #ifdef WITH_THREAD
          __Pyx_FastGIL_Forget();
          Py_BLOCK_THREADS
          #endif
          goto __pyx_L5;
        }
        __pyx_L5:;
      }
  }

  /* "src/python/grpcio/grpc/_cython/_cygrpc/call.pyx.pxi":80
 *     with nogil:
 *       peer = grpc_call_get_peer(self.c_call)
 *     result = <bytes>peer             # <<<<<<<<<<<<<<
 *     with nogil:
 *       gpr_free(peer)
 */
  __pyx_t_1 = __Pyx_PyBytes_FromString(__pyx_v_peer); if (unlikely(!__pyx_t_1)) __PYX_ERR(4, 80, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_t_2 = __pyx_t_1;
  __Pyx_INCREF(__pyx_t_2);
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  __pyx_v_result = ((PyObject*)__pyx_t_2);
  __pyx_t_2 = 0;

  /* "src/python/grpcio/grpc/_cython/_cygrpc/call.pyx.pxi":81
 *       peer = grpc_call_get_peer(self.c_call)
 *     result = <bytes>peer
 *     with nogil:             # <<<<<<<<<<<<<<
 *       gpr_free(peer)
 *     return result
 */
  {
      #ifdef WITH_THREAD
      PyThreadState *_save;
      Py_UNBLOCK_THREADS
      __Pyx_FastGIL_Remember();
      #endif
      /*try:*/ {

        /* "src/python/grpcio/grpc/_cython/_cygrpc/call.pyx.pxi":82
 *     result = <bytes>peer
 *     with nogil:
 *       gpr_free(peer)             # <<<<<<<<<<<<<<
 *     return result
 * 
 */
        gpr_free(__pyx_v_peer);
      }

      /* "src/python/grpcio/grpc/_cython/_cygrpc/call.pyx.pxi":81
 *       peer = grpc_call_get_peer(self.c_call)
 *     result = <bytes>peer
 *     with nogil:             # <<<<<<<<<<<<<<
 *       gpr_free(peer)
 *     return result
 */
      /*finally:*/ {
        /*normal exit:*/{
          #ifdef WITH_THREAD
          __Pyx_FastGIL_Forget();
          Py_BLOCK_THREADS
          #endif
          goto __pyx_L8;
        }
        __pyx_L8:;
      }
  }

  /* "src/python/grpcio/grpc/_cython/_cygrpc/call.pyx.pxi":83
 *     with nogil:
 *       gpr_free(peer)
 *     return result             # <<<<<<<<<<<<<<
 * 
 *   def __dealloc__(self):
 */
  __Pyx_XDECREF(__pyx_r);
  __Pyx_INCREF(__pyx_v_result);
  __pyx_r = __pyx_v_result;
  goto __pyx_L0;

  /* "src/python/grpcio/grpc/_cython/_cygrpc/call.pyx.pxi":76
 *     return call_error
 * 
 *   def peer(self):             # <<<<<<<<<<<<<<
 *     cdef char *peer = NULL
 *     with nogil:
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_AddTraceback("grpc._cython.cygrpc.Call.peer", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XDECREF(__pyx_v_result);
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "src/python/grpcio/grpc/_cython/_cygrpc/call.pyx.pxi":85
 *     return result
 * 
 *   def __dealloc__(self):             # <<<<<<<<<<<<<<
 *     with nogil:
 *       if self.c_call != NULL:
 */

/* Python wrapper */
static void __pyx_pw_4grpc_7_cython_6cygrpc_4Call_15__dealloc__(PyObject *__pyx_v_self); /*proto*/
static void __pyx_pw_4grpc_7_cython_6cygrpc_4Call_15__dealloc__(PyObject *__pyx_v_self) {
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__dealloc__ (wrapper)", 0);
  __pyx_pf_4grpc_7_cython_6cygrpc_4Call_14__dealloc__(((struct __pyx_obj_4grpc_7_cython_6cygrpc_Call *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
}

static void __pyx_pf_4grpc_7_cython_6cygrpc_4Call_14__dealloc__(struct __pyx_obj_4grpc_7_cython_6cygrpc_Call *__pyx_v_self) {
  __Pyx_RefNannyDeclarations
  int __pyx_t_1;
  __Pyx_RefNannySetupContext("__dealloc__", 0);

  /* "src/python/grpcio/grpc/_cython/_cygrpc/call.pyx.pxi":86
 * 
 *   def __dealloc__(self):
 *     with nogil:             # <<<<<<<<<<<<<<
 *       if self.c_call != NULL:
 *         grpc_call_unref(self.c_call)
 */
  {
      #ifdef WITH_THREAD
      PyThreadState *_save;
      Py_UNBLOCK_THREADS
      __Pyx_FastGIL_Remember();
      #endif
      /*try:*/ {

        /* "src/python/grpcio/grpc/_cython/_cygrpc/call.pyx.pxi":87
 *   def __dealloc__(self):
 *     with nogil:
 *       if self.c_call != NULL:             # <<<<<<<<<<<<<<
 *         grpc_call_unref(self.c_call)
 *       grpc_shutdown()
 */
        __pyx_t_1 = ((__pyx_v_self->c_call != NULL) != 0);
        if (__pyx_t_1) {

          /* "src/python/grpcio/grpc/_cython/_cygrpc/call.pyx.pxi":88
 *     with nogil:
 *       if self.c_call != NULL:
 *         grpc_call_unref(self.c_call)             # <<<<<<<<<<<<<<
 *       grpc_shutdown()
 * 
 */
          grpc_call_unref(__pyx_v_self->c_call);

          /* "src/python/grpcio/grpc/_cython/_cygrpc/call.pyx.pxi":87
 *   def __dealloc__(self):
 *     with nogil:
 *       if self.c_call != NULL:             # <<<<<<<<<<<<<<
 *         grpc_call_unref(self.c_call)
 *       grpc_shutdown()
 */
        }

        /* "src/python/grpcio/grpc/_cython/_cygrpc/call.pyx.pxi":89
 *       if self.c_call != NULL:
 *         grpc_call_unref(self.c_call)
 *       grpc_shutdown()             # <<<<<<<<<<<<<<
 * 
 *   # The object *should* always be valid from Python. Used for debugging.
 */
        grpc_shutdown();
      }

      /* "src/python/grpcio/grpc/_cython/_cygrpc/call.pyx.pxi":86
 * 
 *   def __dealloc__(self):
 *     with nogil:             # <<<<<<<<<<<<<<
 *       if self.c_call != NULL:
 *         grpc_call_unref(self.c_call)
 */
      /*finally:*/ {
        /*normal exit:*/{
          #ifdef WITH_THREAD
          __Pyx_FastGIL_Forget();
          Py_BLOCK_THREADS
          #endif
          goto __pyx_L5;
        }
        __pyx_L5:;
      }
  }

  /* "src/python/grpcio/grpc/_cython/_cygrpc/call.pyx.pxi":85
 *     return result
 * 
 *   def __dealloc__(self):             # <<<<<<<<<<<<<<
 *     with nogil:
 *       if self.c_call != NULL:
 */

  /* function exit code */
  __Pyx_RefNannyFinishContext();
}

/* "src/python/grpcio/grpc/_cython/_cygrpc/call.pyx.pxi":93
 *   # The object *should* always be valid from Python. Used for debugging.
 *   @property
 *   def is_valid(self):             # <<<<<<<<<<<<<<
 *     return self.c_call != NULL
 * 
 */

/* Python wrapper */
static PyObject *__pyx_pw_4grpc_7_cython_6cygrpc_4Call_8is_valid_1__get__(PyObject *__pyx_v_self); /*proto*/
static PyObject *__pyx_pw_4grpc_7_cython_6cygrpc_4Call_8is_valid_1__get__(PyObject *__pyx_v_self) {
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__get__ (wrapper)", 0);
  __pyx_r = __pyx_pf_4grpc_7_cython_6cygrpc_4Call_8is_valid___get__(((struct __pyx_obj_4grpc_7_cython_6cygrpc_Call *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_4grpc_7_cython_6cygrpc_4Call_8is_valid___get__(struct __pyx_obj_4grpc_7_cython_6cygrpc_Call *__pyx_v_self) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("__get__", 0);

  /* "src/python/grpcio/grpc/_cython/_cygrpc/call.pyx.pxi":94
 *   @property
 *   def is_valid(self):
 *     return self.c_call != NULL             # <<<<<<<<<<<<<<
 * 
 *   def _custom_op_on_c_call(self, int op):
 */
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_1 = __Pyx_PyBool_FromLong((__pyx_v_self->c_call != NULL)); if (unlikely(!__pyx_t_1)) __PYX_ERR(4, 94, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_r = __pyx_t_1;
  __pyx_t_1 = 0;
  goto __pyx_L0;

  /* "src/python/grpcio/grpc/_cython/_cygrpc/call.pyx.pxi":93
 *   # The object *should* always be valid from Python. Used for debugging.
 *   @property
 *   def is_valid(self):             # <<<<<<<<<<<<<<
 *     return self.c_call != NULL
 * 
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_AddTraceback("grpc._cython.cygrpc.Call.is_valid.__get__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "src/python/grpcio/grpc/_cython/_cygrpc/call.pyx.pxi":96
 *     return self.c_call != NULL
 * 
 *   def _custom_op_on_c_call(self, int op):             # <<<<<<<<<<<<<<
 *     return _custom_op_on_c_call(op, self.c_call)
 */

/* Python wrapper */
static PyObject *__pyx_pw_4grpc_7_cython_6cygrpc_4Call_17_custom_op_on_c_call(PyObject *__pyx_v_self, PyObject *__pyx_arg_op); /*proto*/
static PyObject *__pyx_pw_4grpc_7_cython_6cygrpc_4Call_17_custom_op_on_c_call(PyObject *__pyx_v_self, PyObject *__pyx_arg_op) {
  int __pyx_v_op;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("_custom_op_on_c_call (wrapper)", 0);
  assert(__pyx_arg_op); {
    __pyx_v_op = __Pyx_PyInt_As_int(__pyx_arg_op); if (unlikely((__pyx_v_op == (int)-1) && PyErr_Occurred())) __PYX_ERR(4, 96, __pyx_L3_error)
  }
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L3_error:;
  __Pyx_AddTraceback("grpc._cython.cygrpc.Call._custom_op_on_c_call", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  __pyx_r = __pyx_pf_4grpc_7_cython_6cygrpc_4Call_16_custom_op_on_c_call(((struct __pyx_obj_4grpc_7_cython_6cygrpc_Call *)__pyx_v_self), ((int)__pyx_v_op));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_4grpc_7_cython_6cygrpc_4Call_16_custom_op_on_c_call(struct __pyx_obj_4grpc_7_cython_6cygrpc_Call *__pyx_v_self, int __pyx_v_op) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("_custom_op_on_c_call", 0);

  /* "src/python/grpcio/grpc/_cython/_cygrpc/call.pyx.pxi":97
 * 
 *   def _custom_op_on_c_call(self, int op):
 *     return _custom_op_on_c_call(op, self.c_call)             # <<<<<<<<<<<<<<
 */
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_1 = __pyx_f_4grpc_7_cython_6cygrpc__custom_op_on_c_call(__pyx_v_op, __pyx_v_self->c_call); if (unlikely(!__pyx_t_1)) __PYX_ERR(4, 97, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_r = __pyx_t_1;
  __pyx_t_1 = 0;
  goto __pyx_L0;

  /* "src/python/grpcio/grpc/_cython/_cygrpc/call.pyx.pxi":96
 *     return self.c_call != NULL
 * 
 *   def _custom_op_on_c_call(self, int op):             # <<<<<<<<<<<<<<
 *     return _custom_op_on_c_call(op, self.c_call)
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_AddTraceback("grpc._cython.cygrpc.Call._custom_op_on_c_call", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "(tree fragment)":1
 * def __reduce_cython__(self):             # <<<<<<<<<<<<<<
 *     raise TypeError("no default __reduce__ due to non-trivial __cinit__")
 * def __setstate_cython__(self, __pyx_state):
 */

/* Python wrapper */
static PyObject *__pyx_pw_4grpc_7_cython_6cygrpc_4Call_19__reduce_cython__(PyObject *__pyx_v_self, CYTHON_UNUSED PyObject *unused); /*proto*/
static PyObject *__pyx_pw_4grpc_7_cython_6cygrpc_4Call_19__reduce_cython__(PyObject *__pyx_v_self, CYTHON_UNUSED PyObject *unused) {
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__reduce_cython__ (wrapper)", 0);
  __pyx_r = __pyx_pf_4grpc_7_cython_6cygrpc_4Call_18__reduce_cython__(((struct __pyx_obj_4grpc_7_cython_6cygrpc_Call *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_4grpc_7_cython_6cygrpc_4Call_18__reduce_cython__(CYTHON_UNUSED struct __pyx_obj_4grpc_7_cython_6cygrpc_Call *__pyx_v_self) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("__reduce_cython__", 0);

  /* "(tree fragment)":2
 * def __reduce_cython__(self):
 *     raise TypeError("no default __reduce__ due to non-trivial __cinit__")             # <<<<<<<<<<<<<<
 * def __setstate_cython__(self, __pyx_state):
 *     raise TypeError("no default __reduce__ due to non-trivial __cinit__")
 */
  __pyx_t_1 = __Pyx_PyObject_Call(__pyx_builtin_TypeError, __pyx_tuple__11, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(11, 2, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_Raise(__pyx_t_1, 0, 0, 0);
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  __PYX_ERR(11, 2, __pyx_L1_error)

  /* "(tree fragment)":1
 * def __reduce_cython__(self):             # <<<<<<<<<<<<<<
 *     raise TypeError("no default __reduce__ due to non-trivial __cinit__")
 * def __setstate_cython__(self, __pyx_state):
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_AddTraceback("grpc._cython.cygrpc.Call.__reduce_cython__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "(tree fragment)":3
 * def __reduce_cython__(self):
 *     raise TypeError("no default __reduce__ due to non-trivial __cinit__")
 * def __setstate_cython__(self, __pyx_state):             # <<<<<<<<<<<<<<
 *     raise TypeError("no default __reduce__ due to non-trivial __cinit__")
 */

/* Python wrapper */
static PyObject *__pyx_pw_4grpc_7_cython_6cygrpc_4Call_21__setstate_cython__(PyObject *__pyx_v_self, PyObject *__pyx_v___pyx_state); /*proto*/
static PyObject *__pyx_pw_4grpc_7_cython_6cygrpc_4Call_21__setstate_cython__(PyObject *__pyx_v_self, PyObject *__pyx_v___pyx_state) {
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__setstate_cython__ (wrapper)", 0);
  __pyx_r = __pyx_pf_4grpc_7_cython_6cygrpc_4Call_20__setstate_cython__(((struct __pyx_obj_4grpc_7_cython_6cygrpc_Call *)__pyx_v_self), ((PyObject *)__pyx_v___pyx_state));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_4grpc_7_cython_6cygrpc_4Call_20__setstate_cython__(CYTHON_UNUSED struct __pyx_obj_4grpc_7_cython_6cygrpc_Call *__pyx_v_self, CYTHON_UNUSED PyObject *__pyx_v___pyx_state) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("__setstate_cython__", 0);

  /* "(tree fragment)":4
 *     raise TypeError("no default __reduce__ due to non-trivial __cinit__")
 * def __setstate_cython__(self, __pyx_state):
 *     raise TypeError("no default __reduce__ due to non-trivial __cinit__")             # <<<<<<<<<<<<<<
 */
  __pyx_t_1 = __Pyx_PyObject_Call(__pyx_builtin_TypeError, __pyx_tuple__12, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(11, 4, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_Raise(__pyx_t_1, 0, 0, 0);
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  __PYX_ERR(11, 4, __pyx_L1_error)

  /* "(tree fragment)":3
 * def __reduce_cython__(self):
 *     raise TypeError("no default __reduce__ due to non-trivial __cinit__")
 * def __setstate_cython__(self, __pyx_state):             # <<<<<<<<<<<<<<
 *     raise TypeError("no default __reduce__ due to non-trivial __cinit__")
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_AddTraceback("grpc._cython.cygrpc.Call.__setstate_cython__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "src/python/grpcio/grpc/_cython/_cygrpc/channel.pyx.pxi":21
 * 
 * 
 * cdef str _call_error_metadata(metadata):             # <<<<<<<<<<<<<<
 *   return 'metadata was invalid: %s' % metadata
 * 
 */

static PyObject *__pyx_f_4grpc_7_cython_6cygrpc__call_error_metadata(PyObject *__pyx_v_metadata) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("_call_error_metadata", 0);

  /* "src/python/grpcio/grpc/_cython/_cygrpc/channel.pyx.pxi":22
 * 
 * cdef str _call_error_metadata(metadata):
 *   return 'metadata was invalid: %s' % metadata             # <<<<<<<<<<<<<<
 * 
 * 
 */
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_1 = __Pyx_PyString_FormatSafe(__pyx_kp_s_metadata_was_invalid_s, __pyx_v_metadata); if (unlikely(!__pyx_t_1)) __PYX_ERR(12, 22, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  if (!(likely(PyString_CheckExact(__pyx_t_1))||(PyErr_Format(PyExc_TypeError, "Expected %.16s, got %.200s", "str", Py_TYPE(__pyx_t_1)->tp_name), 0))) __PYX_ERR(12, 22, __pyx_L1_error)
  __pyx_r = ((PyObject*)__pyx_t_1);
  __pyx_t_1 = 0;
  goto __pyx_L0;

  /* "src/python/grpcio/grpc/_cython/_cygrpc/channel.pyx.pxi":21
 * 
 * 
 * cdef str _call_error_metadata(metadata):             # <<<<<<<<<<<<<<
 *   return 'metadata was invalid: %s' % metadata
 * 
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_AddTraceback("grpc._cython.cygrpc._call_error_metadata", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = 0;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "src/python/grpcio/grpc/_cython/_cygrpc/channel.pyx.pxi":25
 * 
 * 
 * cdef str _call_error_no_metadata(c_call_error):             # <<<<<<<<<<<<<<
 *   return _INTERNAL_CALL_ERROR_MESSAGE_FORMAT % c_call_error
 * 
 */

static PyObject *__pyx_f_4grpc_7_cython_6cygrpc__call_error_no_metadata(PyObject *__pyx_v_c_call_error) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  PyObject *__pyx_t_2 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("_call_error_no_metadata", 0);

  /* "src/python/grpcio/grpc/_cython/_cygrpc/channel.pyx.pxi":26
 * 
 * cdef str _call_error_no_metadata(c_call_error):
 *   return _INTERNAL_CALL_ERROR_MESSAGE_FORMAT % c_call_error             # <<<<<<<<<<<<<<
 * 
 * 
 */
  __Pyx_XDECREF(__pyx_r);
  __Pyx_GetModuleGlobalName(__pyx_t_1, __pyx_n_s_INTERNAL_CALL_ERROR_MESSAGE_FOR); if (unlikely(!__pyx_t_1)) __PYX_ERR(12, 26, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_t_2 = PyNumber_Remainder(__pyx_t_1, __pyx_v_c_call_error); if (unlikely(!__pyx_t_2)) __PYX_ERR(12, 26, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  if (!(likely(PyString_CheckExact(__pyx_t_2))||((__pyx_t_2) == Py_None)||(PyErr_Format(PyExc_TypeError, "Expected %.16s, got %.200s", "str", Py_TYPE(__pyx_t_2)->tp_name), 0))) __PYX_ERR(12, 26, __pyx_L1_error)
  __pyx_r = ((PyObject*)__pyx_t_2);
  __pyx_t_2 = 0;
  goto __pyx_L0;

  /* "src/python/grpcio/grpc/_cython/_cygrpc/channel.pyx.pxi":25
 * 
 * 
 * cdef str _call_error_no_metadata(c_call_error):             # <<<<<<<<<<<<<<
 *   return _INTERNAL_CALL_ERROR_MESSAGE_FORMAT % c_call_error
 * 
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_AddTraceback("grpc._cython.cygrpc._call_error_no_metadata", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = 0;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "src/python/grpcio/grpc/_cython/_cygrpc/channel.pyx.pxi":29
 * 
 * 
 * cdef str _call_error(c_call_error, metadata):             # <<<<<<<<<<<<<<
 *   if c_call_error == GRPC_CALL_ERROR_INVALID_METADATA:
 *     return _call_error_metadata(metadata)
 */

static PyObject *__pyx_f_4grpc_7_cython_6cygrpc__call_error(PyObject *__pyx_v_c_call_error, PyObject *__pyx_v_metadata) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  PyObject *__pyx_t_2 = NULL;
  int __pyx_t_3;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("_call_error", 0);

  /* "src/python/grpcio/grpc/_cython/_cygrpc/channel.pyx.pxi":30
 * 
 * cdef str _call_error(c_call_error, metadata):
 *   if c_call_error == GRPC_CALL_ERROR_INVALID_METADATA:             # <<<<<<<<<<<<<<
 *     return _call_error_metadata(metadata)
 *   else:
 */
  __pyx_t_1 = __Pyx_PyInt_From_grpc_call_error(GRPC_CALL_ERROR_INVALID_METADATA); if (unlikely(!__pyx_t_1)) __PYX_ERR(12, 30, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_t_2 = PyObject_RichCompare(__pyx_v_c_call_error, __pyx_t_1, Py_EQ); __Pyx_XGOTREF(__pyx_t_2); if (unlikely(!__pyx_t_2)) __PYX_ERR(12, 30, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  __pyx_t_3 = __Pyx_PyObject_IsTrue(__pyx_t_2); if (unlikely(__pyx_t_3 < 0)) __PYX_ERR(12, 30, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  if (__pyx_t_3) {

    /* "src/python/grpcio/grpc/_cython/_cygrpc/channel.pyx.pxi":31
 * cdef str _call_error(c_call_error, metadata):
 *   if c_call_error == GRPC_CALL_ERROR_INVALID_METADATA:
 *     return _call_error_metadata(metadata)             # <<<<<<<<<<<<<<
 *   else:
 *     return _call_error_no_metadata(c_call_error)
 */
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_2 = __pyx_f_4grpc_7_cython_6cygrpc__call_error_metadata(__pyx_v_metadata); if (unlikely(!__pyx_t_2)) __PYX_ERR(12, 31, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_2);
    __pyx_r = ((PyObject*)__pyx_t_2);
    __pyx_t_2 = 0;
    goto __pyx_L0;

    /* "src/python/grpcio/grpc/_cython/_cygrpc/channel.pyx.pxi":30
 * 
 * cdef str _call_error(c_call_error, metadata):
 *   if c_call_error == GRPC_CALL_ERROR_INVALID_METADATA:             # <<<<<<<<<<<<<<
 *     return _call_error_metadata(metadata)
 *   else:
 */
  }

  /* "src/python/grpcio/grpc/_cython/_cygrpc/channel.pyx.pxi":33
 *     return _call_error_metadata(metadata)
 *   else:
 *     return _call_error_no_metadata(c_call_error)             # <<<<<<<<<<<<<<
 * 
 * 
 */
  /*else*/ {
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_2 = __pyx_f_4grpc_7_cython_6cygrpc__call_error_no_metadata(__pyx_v_c_call_error); if (unlikely(!__pyx_t_2)) __PYX_ERR(12, 33, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_2);
    __pyx_r = ((PyObject*)__pyx_t_2);
    __pyx_t_2 = 0;
    goto __pyx_L0;
  }

  /* "src/python/grpcio/grpc/_cython/_cygrpc/channel.pyx.pxi":29
 * 
 * 
 * cdef str _call_error(c_call_error, metadata):             # <<<<<<<<<<<<<<
 *   if c_call_error == GRPC_CALL_ERROR_INVALID_METADATA:
 *     return _call_error_metadata(metadata)
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_AddTraceback("grpc._cython.cygrpc._call_error", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = 0;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "src/python/grpcio/grpc/_cython/_cygrpc/channel.pyx.pxi":36
 * 
 * 
 * cdef _check_call_error_no_metadata(c_call_error):             # <<<<<<<<<<<<<<
 *   if c_call_error != GRPC_CALL_OK:
 *     return _INTERNAL_CALL_ERROR_MESSAGE_FORMAT % c_call_error
 */

static PyObject *__pyx_f_4grpc_7_cython_6cygrpc__check_call_error_no_metadata(PyObject *__pyx_v_c_call_error) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  PyObject *__pyx_t_2 = NULL;
  int __pyx_t_3;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("_check_call_error_no_metadata", 0);

  /* "src/python/grpcio/grpc/_cython/_cygrpc/channel.pyx.pxi":37
 * 
 * cdef _check_call_error_no_metadata(c_call_error):
 *   if c_call_error != GRPC_CALL_OK:             # <<<<<<<<<<<<<<
 *     return _INTERNAL_CALL_ERROR_MESSAGE_FORMAT % c_call_error
 *   else:
 */
  __pyx_t_1 = __Pyx_PyInt_From_grpc_call_error(GRPC_CALL_OK); if (unlikely(!__pyx_t_1)) __PYX_ERR(12, 37, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_t_2 = PyObject_RichCompare(__pyx_v_c_call_error, __pyx_t_1, Py_NE); __Pyx_XGOTREF(__pyx_t_2); if (unlikely(!__pyx_t_2)) __PYX_ERR(12, 37, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  __pyx_t_3 = __Pyx_PyObject_IsTrue(__pyx_t_2); if (unlikely(__pyx_t_3 < 0)) __PYX_ERR(12, 37, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  if (__pyx_t_3) {

    /* "src/python/grpcio/grpc/_cython/_cygrpc/channel.pyx.pxi":38
 * cdef _check_call_error_no_metadata(c_call_error):
 *   if c_call_error != GRPC_CALL_OK:
 *     return _INTERNAL_CALL_ERROR_MESSAGE_FORMAT % c_call_error             # <<<<<<<<<<<<<<
 *   else:
 *     return None
 */
    __Pyx_XDECREF(__pyx_r);
    __Pyx_GetModuleGlobalName(__pyx_t_2, __pyx_n_s_INTERNAL_CALL_ERROR_MESSAGE_FOR); if (unlikely(!__pyx_t_2)) __PYX_ERR(12, 38, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_2);
    __pyx_t_1 = PyNumber_Remainder(__pyx_t_2, __pyx_v_c_call_error); if (unlikely(!__pyx_t_1)) __PYX_ERR(12, 38, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_1);
    __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
    __pyx_r = __pyx_t_1;
    __pyx_t_1 = 0;
    goto __pyx_L0;

    /* "src/python/grpcio/grpc/_cython/_cygrpc/channel.pyx.pxi":37
 * 
 * cdef _check_call_error_no_metadata(c_call_error):
 *   if c_call_error != GRPC_CALL_OK:             # <<<<<<<<<<<<<<
 *     return _INTERNAL_CALL_ERROR_MESSAGE_FORMAT % c_call_error
 *   else:
 */
  }

  /* "src/python/grpcio/grpc/_cython/_cygrpc/channel.pyx.pxi":40
 *     return _INTERNAL_CALL_ERROR_MESSAGE_FORMAT % c_call_error
 *   else:
 *     return None             # <<<<<<<<<<<<<<
 * 
 * 
 */
  /*else*/ {
    __Pyx_XDECREF(__pyx_r);
    __pyx_r = Py_None; __Pyx_INCREF(Py_None);
    goto __pyx_L0;
  }

  /* "src/python/grpcio/grpc/_cython/_cygrpc/channel.pyx.pxi":36
 * 
 * 
 * cdef _check_call_error_no_metadata(c_call_error):             # <<<<<<<<<<<<<<
 *   if c_call_error != GRPC_CALL_OK:
 *     return _INTERNAL_CALL_ERROR_MESSAGE_FORMAT % c_call_error
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_AddTraceback("grpc._cython.cygrpc._check_call_error_no_metadata", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = 0;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "src/python/grpcio/grpc/_cython/_cygrpc/channel.pyx.pxi":43
 * 
 * 
 * cdef _check_and_raise_call_error_no_metadata(c_call_error):             # <<<<<<<<<<<<<<
 *   error = _check_call_error_no_metadata(c_call_error)
 *   if error is not None:
 */

static PyObject *__pyx_f_4grpc_7_cython_6cygrpc__check_and_raise_call_error_no_metadata(PyObject *__pyx_v_c_call_error) {
  PyObject *__pyx_v_error = NULL;
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  int __pyx_t_2;
  int __pyx_t_3;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("_check_and_raise_call_error_no_metadata", 0);

  /* "src/python/grpcio/grpc/_cython/_cygrpc/channel.pyx.pxi":44
 * 
 * cdef _check_and_raise_call_error_no_metadata(c_call_error):
 *   error = _check_call_error_no_metadata(c_call_error)             # <<<<<<<<<<<<<<
 *   if error is not None:
 *     raise ValueError(error)
 */
  __pyx_t_1 = __pyx_f_4grpc_7_cython_6cygrpc__check_call_error_no_metadata(__pyx_v_c_call_error); if (unlikely(!__pyx_t_1)) __PYX_ERR(12, 44, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_v_error = __pyx_t_1;
  __pyx_t_1 = 0;

  /* "src/python/grpcio/grpc/_cython/_cygrpc/channel.pyx.pxi":45
 * cdef _check_and_raise_call_error_no_metadata(c_call_error):
 *   error = _check_call_error_no_metadata(c_call_error)
 *   if error is not None:             # <<<<<<<<<<<<<<
 *     raise ValueError(error)
 * 
 */
  __pyx_t_2 = (__pyx_v_error != Py_None);
  __pyx_t_3 = (__pyx_t_2 != 0);
  if (unlikely(__pyx_t_3)) {

    /* "src/python/grpcio/grpc/_cython/_cygrpc/channel.pyx.pxi":46
 *   error = _check_call_error_no_metadata(c_call_error)
 *   if error is not None:
 *     raise ValueError(error)             # <<<<<<<<<<<<<<
 * 
 * 
 */
    __pyx_t_1 = __Pyx_PyObject_CallOneArg(__pyx_builtin_ValueError, __pyx_v_error); if (unlikely(!__pyx_t_1)) __PYX_ERR(12, 46, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_1);
    __Pyx_Raise(__pyx_t_1, 0, 0, 0);
    __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
    __PYX_ERR(12, 46, __pyx_L1_error)

    /* "src/python/grpcio/grpc/_cython/_cygrpc/channel.pyx.pxi":45
 * cdef _check_and_raise_call_error_no_metadata(c_call_error):
 *   error = _check_call_error_no_metadata(c_call_error)
 *   if error is not None:             # <<<<<<<<<<<<<<
 *     raise ValueError(error)
 * 
 */
  }

  /* "src/python/grpcio/grpc/_cython/_cygrpc/channel.pyx.pxi":43
 * 
 * 
 * cdef _check_and_raise_call_error_no_metadata(c_call_error):             # <<<<<<<<<<<<<<
 *   error = _check_call_error_no_metadata(c_call_error)
 *   if error is not None:
 */

  /* function exit code */
  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_AddTraceback("grpc._cython.cygrpc._check_and_raise_call_error_no_metadata", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = 0;
  __pyx_L0:;
  __Pyx_XDECREF(__pyx_v_error);
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "src/python/grpcio/grpc/_cython/_cygrpc/channel.pyx.pxi":49
 * 
 * 
 * cdef _check_call_error(c_call_error, metadata):             # <<<<<<<<<<<<<<
 *   if c_call_error == GRPC_CALL_ERROR_INVALID_METADATA:
 *     return _call_error_metadata(metadata)
 */

static PyObject *__pyx_f_4grpc_7_cython_6cygrpc__check_call_error(PyObject *__pyx_v_c_call_error, PyObject *__pyx_v_metadata) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  PyObject *__pyx_t_2 = NULL;
  int __pyx_t_3;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("_check_call_error", 0);

  /* "src/python/grpcio/grpc/_cython/_cygrpc/channel.pyx.pxi":50
 * 
 * cdef _check_call_error(c_call_error, metadata):
 *   if c_call_error == GRPC_CALL_ERROR_INVALID_METADATA:             # <<<<<<<<<<<<<<
 *     return _call_error_metadata(metadata)
 *   else:
 */
  __pyx_t_1 = __Pyx_PyInt_From_grpc_call_error(GRPC_CALL_ERROR_INVALID_METADATA); if (unlikely(!__pyx_t_1)) __PYX_ERR(12, 50, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_t_2 = PyObject_RichCompare(__pyx_v_c_call_error, __pyx_t_1, Py_EQ); __Pyx_XGOTREF(__pyx_t_2); if (unlikely(!__pyx_t_2)) __PYX_ERR(12, 50, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  __pyx_t_3 = __Pyx_PyObject_IsTrue(__pyx_t_2); if (unlikely(__pyx_t_3 < 0)) __PYX_ERR(12, 50, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  if (__pyx_t_3) {

    /* "src/python/grpcio/grpc/_cython/_cygrpc/channel.pyx.pxi":51
 * cdef _check_call_error(c_call_error, metadata):
 *   if c_call_error == GRPC_CALL_ERROR_INVALID_METADATA:
 *     return _call_error_metadata(metadata)             # <<<<<<<<<<<<<<
 *   else:
 *     return _check_call_error_no_metadata(c_call_error)
 */
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_2 = __pyx_f_4grpc_7_cython_6cygrpc__call_error_metadata(__pyx_v_metadata); if (unlikely(!__pyx_t_2)) __PYX_ERR(12, 51, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_2);
    __pyx_r = __pyx_t_2;
    __pyx_t_2 = 0;
    goto __pyx_L0;

    /* "src/python/grpcio/grpc/_cython/_cygrpc/channel.pyx.pxi":50
 * 
 * cdef _check_call_error(c_call_error, metadata):
 *   if c_call_error == GRPC_CALL_ERROR_INVALID_METADATA:             # <<<<<<<<<<<<<<
 *     return _call_error_metadata(metadata)
 *   else:
 */
  }

  /* "src/python/grpcio/grpc/_cython/_cygrpc/channel.pyx.pxi":53
 *     return _call_error_metadata(metadata)
 *   else:
 *     return _check_call_error_no_metadata(c_call_error)             # <<<<<<<<<<<<<<
 * 
 * 
 */
  /*else*/ {
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_2 = __pyx_f_4grpc_7_cython_6cygrpc__check_call_error_no_metadata(__pyx_v_c_call_error); if (unlikely(!__pyx_t_2)) __PYX_ERR(12, 53, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_2);
    __pyx_r = __pyx_t_2;
    __pyx_t_2 = 0;
    goto __pyx_L0;
  }

  /* "src/python/grpcio/grpc/_cython/_cygrpc/channel.pyx.pxi":49
 * 
 * 
 * cdef _check_call_error(c_call_error, metadata):             # <<<<<<<<<<<<<<
 *   if c_call_error == GRPC_CALL_ERROR_INVALID_METADATA:
 *     return _call_error_metadata(metadata)
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_AddTraceback("grpc._cython.cygrpc._check_call_error", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = 0;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "src/python/grpcio/grpc/_cython/_cygrpc/channel.pyx.pxi":56
 * 
 * 
 * cdef void _raise_call_error_no_metadata(c_call_error) except *:             # <<<<<<<<<<<<<<
 *   raise ValueError(_call_error_no_metadata(c_call_error))
 * 
 */

static void __pyx_f_4grpc_7_cython_6cygrpc__raise_call_error_no_metadata(PyObject *__pyx_v_c_call_error) {
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  PyObject *__pyx_t_2 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("_raise_call_error_no_metadata", 0);

  /* "src/python/grpcio/grpc/_cython/_cygrpc/channel.pyx.pxi":57
 * 
 * cdef void _raise_call_error_no_metadata(c_call_error) except *:
 *   raise ValueError(_call_error_no_metadata(c_call_error))             # <<<<<<<<<<<<<<
 * 
 * 
 */
  __pyx_t_1 = __pyx_f_4grpc_7_cython_6cygrpc__call_error_no_metadata(__pyx_v_c_call_error); if (unlikely(!__pyx_t_1)) __PYX_ERR(12, 57, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_t_2 = __Pyx_PyObject_CallOneArg(__pyx_builtin_ValueError, __pyx_t_1); if (unlikely(!__pyx_t_2)) __PYX_ERR(12, 57, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  __Pyx_Raise(__pyx_t_2, 0, 0, 0);
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  __PYX_ERR(12, 57, __pyx_L1_error)

  /* "src/python/grpcio/grpc/_cython/_cygrpc/channel.pyx.pxi":56
 * 
 * 
 * cdef void _raise_call_error_no_metadata(c_call_error) except *:             # <<<<<<<<<<<<<<
 *   raise ValueError(_call_error_no_metadata(c_call_error))
 * 
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_AddTraceback("grpc._cython.cygrpc._raise_call_error_no_metadata", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
}

/* "src/python/grpcio/grpc/_cython/_cygrpc/channel.pyx.pxi":60
 * 
 * 
 * cdef void _raise_call_error(c_call_error, metadata) except *:             # <<<<<<<<<<<<<<
 *   raise ValueError(_call_error(c_call_error, metadata))
 * 
 */

static void __pyx_f_4grpc_7_cython_6cygrpc__raise_call_error(PyObject *__pyx_v_c_call_error, PyObject *__pyx_v_metadata) {
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  PyObject *__pyx_t_2 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("_raise_call_error", 0);

  /* "src/python/grpcio/grpc/_cython/_cygrpc/channel.pyx.pxi":61
 * 
 * cdef void _raise_call_error(c_call_error, metadata) except *:
 *   raise ValueError(_call_error(c_call_error, metadata))             # <<<<<<<<<<<<<<
 * 
 * 
 */
  __pyx_t_1 = __pyx_f_4grpc_7_cython_6cygrpc__call_error(__pyx_v_c_call_error, __pyx_v_metadata); if (unlikely(!__pyx_t_1)) __PYX_ERR(12, 61, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_t_2 = __Pyx_PyObject_CallOneArg(__pyx_builtin_ValueError, __pyx_t_1); if (unlikely(!__pyx_t_2)) __PYX_ERR(12, 61, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  __Pyx_Raise(__pyx_t_2, 0, 0, 0);
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  __PYX_ERR(12, 61, __pyx_L1_error)

  /* "src/python/grpcio/grpc/_cython/_cygrpc/channel.pyx.pxi":60
 * 
 * 
 * cdef void _raise_call_error(c_call_error, metadata) except *:             # <<<<<<<<<<<<<<
 *   raise ValueError(_call_error(c_call_error, metadata))
 * 
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_AddTraceback("grpc._cython.cygrpc._raise_call_error", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
}

/* "src/python/grpcio/grpc/_cython/_cygrpc/channel.pyx.pxi":64
 * 
 * 
 * cdef _destroy_c_completion_queue(grpc_completion_queue *c_completion_queue):             # <<<<<<<<<<<<<<
 *   grpc_completion_queue_shutdown(c_completion_queue)
 *   grpc_completion_queue_destroy(c_completion_queue)
 */

static PyObject *__pyx_f_4grpc_7_cython_6cygrpc__destroy_c_completion_queue(grpc_completion_queue *__pyx_v_c_completion_queue) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("_destroy_c_completion_queue", 0);

  /* "src/python/grpcio/grpc/_cython/_cygrpc/channel.pyx.pxi":65
 * 
 * cdef _destroy_c_completion_queue(grpc_completion_queue *c_completion_queue):
 *   grpc_completion_queue_shutdown(c_completion_queue)             # <<<<<<<<<<<<<<
 *   grpc_completion_queue_destroy(c_completion_queue)
 * 
 */
  grpc_completion_queue_shutdown(__pyx_v_c_completion_queue);

  /* "src/python/grpcio/grpc/_cython/_cygrpc/channel.pyx.pxi":66
 * cdef _destroy_c_completion_queue(grpc_completion_queue *c_completion_queue):
 *   grpc_completion_queue_shutdown(c_completion_queue)
 *   grpc_completion_queue_destroy(c_completion_queue)             # <<<<<<<<<<<<<<
 * 
 * 
 */
  grpc_completion_queue_destroy(__pyx_v_c_completion_queue);

  /* "src/python/grpcio/grpc/_cython/_cygrpc/channel.pyx.pxi":64
 * 
 * 
 * cdef _destroy_c_completion_queue(grpc_completion_queue *c_completion_queue):             # <<<<<<<<<<<<<<
 *   grpc_completion_queue_shutdown(c_completion_queue)
 *   grpc_completion_queue_destroy(c_completion_queue)
 */

  /* function exit code */
  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "src/python/grpcio/grpc/_cython/_cygrpc/channel.pyx.pxi":71
 * cdef class _CallState:
 * 
 *   def __cinit__(self):             # <<<<<<<<<<<<<<
 *     self.due = set()
 * 
 */

/* Python wrapper */
static int __pyx_pw_4grpc_7_cython_6cygrpc_10_CallState_1__cinit__(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
static int __pyx_pw_4grpc_7_cython_6cygrpc_10_CallState_1__cinit__(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
  int __pyx_r;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__cinit__ (wrapper)", 0);
  if (unlikely(PyTuple_GET_SIZE(__pyx_args) > 0)) {
    __Pyx_RaiseArgtupleInvalid("__cinit__", 1, 0, 0, PyTuple_GET_SIZE(__pyx_args)); return -1;}
  if (unlikely(__pyx_kwds) && unlikely(PyDict_Size(__pyx_kwds) > 0) && unlikely(!__Pyx_CheckKeywordStrings(__pyx_kwds, "__cinit__", 0))) return -1;
  __pyx_r = __pyx_pf_4grpc_7_cython_6cygrpc_10_CallState___cinit__(((struct __pyx_obj_4grpc_7_cython_6cygrpc__CallState *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static int __pyx_pf_4grpc_7_cython_6cygrpc_10_CallState___cinit__(struct __pyx_obj_4grpc_7_cython_6cygrpc__CallState *__pyx_v_self) {
  int __pyx_r;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("__cinit__", 0);

  /* "src/python/grpcio/grpc/_cython/_cygrpc/channel.pyx.pxi":72
 * 
 *   def __cinit__(self):
 *     self.due = set()             # <<<<<<<<<<<<<<
 * 
 * 
 */
  __pyx_t_1 = PySet_New(0); if (unlikely(!__pyx_t_1)) __PYX_ERR(12, 72, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_GIVEREF(__pyx_t_1);
  __Pyx_GOTREF(__pyx_v_self->due);
  __Pyx_DECREF(__pyx_v_self->due);
  __pyx_v_self->due = ((PyObject*)__pyx_t_1);
  __pyx_t_1 = 0;

  /* "src/python/grpcio/grpc/_cython/_cygrpc/channel.pyx.pxi":71
 * cdef class _CallState:
 * 
 *   def __cinit__(self):             # <<<<<<<<<<<<<<
 *     self.due = set()
 * 
 */

  /* function exit code */
  __pyx_r = 0;
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_AddTraceback("grpc._cython.cygrpc._CallState.__cinit__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = -1;
  __pyx_L0:;
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "(tree fragment)":1
 * def __reduce_cython__(self):             # <<<<<<<<<<<<<<
 *     raise TypeError("no default __reduce__ due to non-trivial __cinit__")
 * def __setstate_cython__(self, __pyx_state):
 */

/* Python wrapper */
static PyObject *__pyx_pw_4grpc_7_cython_6cygrpc_10_CallState_3__reduce_cython__(PyObject *__pyx_v_self, CYTHON_UNUSED PyObject *unused); /*proto*/
static PyObject *__pyx_pw_4grpc_7_cython_6cygrpc_10_CallState_3__reduce_cython__(PyObject *__pyx_v_self, CYTHON_UNUSED PyObject *unused) {
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__reduce_cython__ (wrapper)", 0);
  __pyx_r = __pyx_pf_4grpc_7_cython_6cygrpc_10_CallState_2__reduce_cython__(((struct __pyx_obj_4grpc_7_cython_6cygrpc__CallState *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_4grpc_7_cython_6cygrpc_10_CallState_2__reduce_cython__(CYTHON_UNUSED struct __pyx_obj_4grpc_7_cython_6cygrpc__CallState *__pyx_v_self) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("__reduce_cython__", 0);

  /* "(tree fragment)":2
 * def __reduce_cython__(self):
 *     raise TypeError("no default __reduce__ due to non-trivial __cinit__")             # <<<<<<<<<<<<<<
 * def __setstate_cython__(self, __pyx_state):
 *     raise TypeError("no default __reduce__ due to non-trivial __cinit__")
 */
  __pyx_t_1 = __Pyx_PyObject_Call(__pyx_builtin_TypeError, __pyx_tuple__13, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(11, 2, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_Raise(__pyx_t_1, 0, 0, 0);
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  __PYX_ERR(11, 2, __pyx_L1_error)

  /* "(tree fragment)":1
 * def __reduce_cython__(self):             # <<<<<<<<<<<<<<
 *     raise TypeError("no default __reduce__ due to non-trivial __cinit__")
 * def __setstate_cython__(self, __pyx_state):
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_AddTraceback("grpc._cython.cygrpc._CallState.__reduce_cython__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "(tree fragment)":3
 * def __reduce_cython__(self):
 *     raise TypeError("no default __reduce__ due to non-trivial __cinit__")
 * def __setstate_cython__(self, __pyx_state):             # <<<<<<<<<<<<<<
 *     raise TypeError("no default __reduce__ due to non-trivial __cinit__")
 */

/* Python wrapper */
static PyObject *__pyx_pw_4grpc_7_cython_6cygrpc_10_CallState_5__setstate_cython__(PyObject *__pyx_v_self, PyObject *__pyx_v___pyx_state); /*proto*/
static PyObject *__pyx_pw_4grpc_7_cython_6cygrpc_10_CallState_5__setstate_cython__(PyObject *__pyx_v_self, PyObject *__pyx_v___pyx_state) {
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__setstate_cython__ (wrapper)", 0);
  __pyx_r = __pyx_pf_4grpc_7_cython_6cygrpc_10_CallState_4__setstate_cython__(((struct __pyx_obj_4grpc_7_cython_6cygrpc__CallState *)__pyx_v_self), ((PyObject *)__pyx_v___pyx_state));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_4grpc_7_cython_6cygrpc_10_CallState_4__setstate_cython__(CYTHON_UNUSED struct __pyx_obj_4grpc_7_cython_6cygrpc__CallState *__pyx_v_self, CYTHON_UNUSED PyObject *__pyx_v___pyx_state) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("__setstate_cython__", 0);

  /* "(tree fragment)":4
 *     raise TypeError("no default __reduce__ due to non-trivial __cinit__")
 * def __setstate_cython__(self, __pyx_state):
 *     raise TypeError("no default __reduce__ due to non-trivial __cinit__")             # <<<<<<<<<<<<<<
 */
  __pyx_t_1 = __Pyx_PyObject_Call(__pyx_builtin_TypeError, __pyx_tuple__14, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(11, 4, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_Raise(__pyx_t_1, 0, 0, 0);
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  __PYX_ERR(11, 4, __pyx_L1_error)

  /* "(tree fragment)":3
 * def __reduce_cython__(self):
 *     raise TypeError("no default __reduce__ due to non-trivial __cinit__")
 * def __setstate_cython__(self, __pyx_state):             # <<<<<<<<<<<<<<
 *     raise TypeError("no default __reduce__ due to non-trivial __cinit__")
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_AddTraceback("grpc._cython.cygrpc._CallState.__setstate_cython__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "src/python/grpcio/grpc/_cython/_cygrpc/channel.pyx.pxi":77
 * cdef class _ChannelState:
 * 
 *   def __cinit__(self):             # <<<<<<<<<<<<<<
 *     self.condition = threading.Condition()
 *     self.open = True
 */

/* Python wrapper */
static int __pyx_pw_4grpc_7_cython_6cygrpc_13_ChannelState_1__cinit__(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
static int __pyx_pw_4grpc_7_cython_6cygrpc_13_ChannelState_1__cinit__(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
  int __pyx_r;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__cinit__ (wrapper)", 0);
  if (unlikely(PyTuple_GET_SIZE(__pyx_args) > 0)) {
    __Pyx_RaiseArgtupleInvalid("__cinit__", 1, 0, 0, PyTuple_GET_SIZE(__pyx_args)); return -1;}
  if (unlikely(__pyx_kwds) && unlikely(PyDict_Size(__pyx_kwds) > 0) && unlikely(!__Pyx_CheckKeywordStrings(__pyx_kwds, "__cinit__", 0))) return -1;
  __pyx_r = __pyx_pf_4grpc_7_cython_6cygrpc_13_ChannelState___cinit__(((struct __pyx_obj_4grpc_7_cython_6cygrpc__ChannelState *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static int __pyx_pf_4grpc_7_cython_6cygrpc_13_ChannelState___cinit__(struct __pyx_obj_4grpc_7_cython_6cygrpc__ChannelState *__pyx_v_self) {
  int __pyx_r;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  PyObject *__pyx_t_2 = NULL;
  PyObject *__pyx_t_3 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("__cinit__", 0);

  /* "src/python/grpcio/grpc/_cython/_cygrpc/channel.pyx.pxi":78
 * 
 *   def __cinit__(self):
 *     self.condition = threading.Condition()             # <<<<<<<<<<<<<<
 *     self.open = True
 *     self.integrated_call_states = {}
 */
  __Pyx_GetModuleGlobalName(__pyx_t_2, __pyx_n_s_threading); if (unlikely(!__pyx_t_2)) __PYX_ERR(12, 78, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __pyx_t_3 = __Pyx_PyObject_GetAttrStr(__pyx_t_2, __pyx_n_s_Condition); if (unlikely(!__pyx_t_3)) __PYX_ERR(12, 78, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  __pyx_t_2 = NULL;
  if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_3))) {
    __pyx_t_2 = PyMethod_GET_SELF(__pyx_t_3);
    if (likely(__pyx_t_2)) {
      PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_3);
      __Pyx_INCREF(__pyx_t_2);
      __Pyx_INCREF(function);
      __Pyx_DECREF_SET(__pyx_t_3, function);
    }
  }
  __pyx_t_1 = (__pyx_t_2) ? __Pyx_PyObject_CallOneArg(__pyx_t_3, __pyx_t_2) : __Pyx_PyObject_CallNoArg(__pyx_t_3);
  __Pyx_XDECREF(__pyx_t_2); __pyx_t_2 = 0;
  if (unlikely(!__pyx_t_1)) __PYX_ERR(12, 78, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
  __Pyx_GIVEREF(__pyx_t_1);
  __Pyx_GOTREF(__pyx_v_self->condition);
  __Pyx_DECREF(__pyx_v_self->condition);
  __pyx_v_self->condition = __pyx_t_1;
  __pyx_t_1 = 0;

  /* "src/python/grpcio/grpc/_cython/_cygrpc/channel.pyx.pxi":79
 *   def __cinit__(self):
 *     self.condition = threading.Condition()
 *     self.open = True             # <<<<<<<<<<<<<<
 *     self.integrated_call_states = {}
 *     self.segregated_call_states = set()
 */
  __Pyx_INCREF(Py_True);
  __Pyx_GIVEREF(Py_True);
  __Pyx_GOTREF(__pyx_v_self->open);
  __Pyx_DECREF(__pyx_v_self->open);
  __pyx_v_self->open = Py_True;

  /* "src/python/grpcio/grpc/_cython/_cygrpc/channel.pyx.pxi":80
 *     self.condition = threading.Condition()
 *     self.open = True
 *     self.integrated_call_states = {}             # <<<<<<<<<<<<<<
 *     self.segregated_call_states = set()
 *     self.connectivity_due = set()
 */
  __pyx_t_1 = __Pyx_PyDict_NewPresized(0); if (unlikely(!__pyx_t_1)) __PYX_ERR(12, 80, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_GIVEREF(__pyx_t_1);
  __Pyx_GOTREF(__pyx_v_self->integrated_call_states);
  __Pyx_DECREF(__pyx_v_self->integrated_call_states);
  __pyx_v_self->integrated_call_states = ((PyObject*)__pyx_t_1);
  __pyx_t_1 = 0;

  /* "src/python/grpcio/grpc/_cython/_cygrpc/channel.pyx.pxi":81
 *     self.open = True
 *     self.integrated_call_states = {}
 *     self.segregated_call_states = set()             # <<<<<<<<<<<<<<
 *     self.connectivity_due = set()
 *     self.closed_reason = None
 */
  __pyx_t_1 = PySet_New(0); if (unlikely(!__pyx_t_1)) __PYX_ERR(12, 81, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_GIVEREF(__pyx_t_1);
  __Pyx_GOTREF(__pyx_v_self->segregated_call_states);
  __Pyx_DECREF(__pyx_v_self->segregated_call_states);
  __pyx_v_self->segregated_call_states = ((PyObject*)__pyx_t_1);
  __pyx_t_1 = 0;

  /* "src/python/grpcio/grpc/_cython/_cygrpc/channel.pyx.pxi":82
 *     self.integrated_call_states = {}
 *     self.segregated_call_states = set()
 *     self.connectivity_due = set()             # <<<<<<<<<<<<<<
 *     self.closed_reason = None
 * 
 */
  __pyx_t_1 = PySet_New(0); if (unlikely(!__pyx_t_1)) __PYX_ERR(12, 82, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_GIVEREF(__pyx_t_1);
  __Pyx_GOTREF(__pyx_v_self->connectivity_due);
  __Pyx_DECREF(__pyx_v_self->connectivity_due);
  __pyx_v_self->connectivity_due = ((PyObject*)__pyx_t_1);
  __pyx_t_1 = 0;

  /* "src/python/grpcio/grpc/_cython/_cygrpc/channel.pyx.pxi":83
 *     self.segregated_call_states = set()
 *     self.connectivity_due = set()
 *     self.closed_reason = None             # <<<<<<<<<<<<<<
 * 
 * 
 */
  __Pyx_INCREF(Py_None);
  __Pyx_GIVEREF(Py_None);
  __Pyx_GOTREF(__pyx_v_self->closed_reason);
  __Pyx_DECREF(__pyx_v_self->closed_reason);
  __pyx_v_self->closed_reason = Py_None;

  /* "src/python/grpcio/grpc/_cython/_cygrpc/channel.pyx.pxi":77
 * cdef class _ChannelState:
 * 
 *   def __cinit__(self):             # <<<<<<<<<<<<<<
 *     self.condition = threading.Condition()
 *     self.open = True
 */

  /* function exit code */
  __pyx_r = 0;
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_XDECREF(__pyx_t_3);
  __Pyx_AddTraceback("grpc._cython.cygrpc._ChannelState.__cinit__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = -1;
  __pyx_L0:;
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "(tree fragment)":1
 * def __reduce_cython__(self):             # <<<<<<<<<<<<<<
 *     raise TypeError("no default __reduce__ due to non-trivial __cinit__")
 * def __setstate_cython__(self, __pyx_state):
 */

/* Python wrapper */
static PyObject *__pyx_pw_4grpc_7_cython_6cygrpc_13_ChannelState_3__reduce_cython__(PyObject *__pyx_v_self, CYTHON_UNUSED PyObject *unused); /*proto*/
static PyObject *__pyx_pw_4grpc_7_cython_6cygrpc_13_ChannelState_3__reduce_cython__(PyObject *__pyx_v_self, CYTHON_UNUSED PyObject *unused) {
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__reduce_cython__ (wrapper)", 0);
  __pyx_r = __pyx_pf_4grpc_7_cython_6cygrpc_13_ChannelState_2__reduce_cython__(((struct __pyx_obj_4grpc_7_cython_6cygrpc__ChannelState *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_4grpc_7_cython_6cygrpc_13_ChannelState_2__reduce_cython__(CYTHON_UNUSED struct __pyx_obj_4grpc_7_cython_6cygrpc__ChannelState *__pyx_v_self) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("__reduce_cython__", 0);

  /* "(tree fragment)":2
 * def __reduce_cython__(self):
 *     raise TypeError("no default __reduce__ due to non-trivial __cinit__")             # <<<<<<<<<<<<<<
 * def __setstate_cython__(self, __pyx_state):
 *     raise TypeError("no default __reduce__ due to non-trivial __cinit__")
 */
  __pyx_t_1 = __Pyx_PyObject_Call(__pyx_builtin_TypeError, __pyx_tuple__15, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(11, 2, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_Raise(__pyx_t_1, 0, 0, 0);
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  __PYX_ERR(11, 2, __pyx_L1_error)

  /* "(tree fragment)":1
 * def __reduce_cython__(self):             # <<<<<<<<<<<<<<
 *     raise TypeError("no default __reduce__ due to non-trivial __cinit__")
 * def __setstate_cython__(self, __pyx_state):
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_AddTraceback("grpc._cython.cygrpc._ChannelState.__reduce_cython__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "(tree fragment)":3
 * def __reduce_cython__(self):
 *     raise TypeError("no default __reduce__ due to non-trivial __cinit__")
 * def __setstate_cython__(self, __pyx_state):             # <<<<<<<<<<<<<<
 *     raise TypeError("no default __reduce__ due to non-trivial __cinit__")
 */

/* Python wrapper */
static PyObject *__pyx_pw_4grpc_7_cython_6cygrpc_13_ChannelState_5__setstate_cython__(PyObject *__pyx_v_self, PyObject *__pyx_v___pyx_state); /*proto*/
static PyObject *__pyx_pw_4grpc_7_cython_6cygrpc_13_ChannelState_5__setstate_cython__(PyObject *__pyx_v_self, PyObject *__pyx_v___pyx_state) {
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__setstate_cython__ (wrapper)", 0);
  __pyx_r = __pyx_pf_4grpc_7_cython_6cygrpc_13_ChannelState_4__setstate_cython__(((struct __pyx_obj_4grpc_7_cython_6cygrpc__ChannelState *)__pyx_v_self), ((PyObject *)__pyx_v___pyx_state));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_4grpc_7_cython_6cygrpc_13_ChannelState_4__setstate_cython__(CYTHON_UNUSED struct __pyx_obj_4grpc_7_cython_6cygrpc__ChannelState *__pyx_v_self, CYTHON_UNUSED PyObject *__pyx_v___pyx_state) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("__setstate_cython__", 0);

  /* "(tree fragment)":4
 *     raise TypeError("no default __reduce__ due to non-trivial __cinit__")
 * def __setstate_cython__(self, __pyx_state):
 *     raise TypeError("no default __reduce__ due to non-trivial __cinit__")             # <<<<<<<<<<<<<<
 */
  __pyx_t_1 = __Pyx_PyObject_Call(__pyx_builtin_TypeError, __pyx_tuple__16, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(11, 4, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_Raise(__pyx_t_1, 0, 0, 0);
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  __PYX_ERR(11, 4, __pyx_L1_error)

  /* "(tree fragment)":3
 * def __reduce_cython__(self):
 *     raise TypeError("no default __reduce__ due to non-trivial __cinit__")
 * def __setstate_cython__(self, __pyx_state):             # <<<<<<<<<<<<<<
 *     raise TypeError("no default __reduce__ due to non-trivial __cinit__")
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_AddTraceback("grpc._cython.cygrpc._ChannelState.__setstate_cython__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "src/python/grpcio/grpc/_cython/_cygrpc/channel.pyx.pxi":86
 * 
 * 
 * cdef tuple _operate(grpc_call *c_call, object operations, object user_tag):             # <<<<<<<<<<<<<<
 *   cdef grpc_call_error c_call_error
 *   cdef _BatchOperationTag tag = _BatchOperationTag(user_tag, operations, None)
 */

static PyObject *__pyx_f_4grpc_7_cython_6cygrpc__operate(grpc_call *__pyx_v_c_call, PyObject *__pyx_v_operations, PyObject *__pyx_v_user_tag) {
  grpc_call_error __pyx_v_c_call_error;
  struct __pyx_obj_4grpc_7_cython_6cygrpc__BatchOperationTag *__pyx_v_tag = 0;
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  PyObject *__pyx_t_2 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("_operate", 0);

  /* "src/python/grpcio/grpc/_cython/_cygrpc/channel.pyx.pxi":88
 * cdef tuple _operate(grpc_call *c_call, object operations, object user_tag):
 *   cdef grpc_call_error c_call_error
 *   cdef _BatchOperationTag tag = _BatchOperationTag(user_tag, operations, None)             # <<<<<<<<<<<<<<
 *   tag.prepare()
 *   cpython.Py_INCREF(tag)
 */
  __pyx_t_1 = PyTuple_New(3); if (unlikely(!__pyx_t_1)) __PYX_ERR(12, 88, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_INCREF(__pyx_v_user_tag);
  __Pyx_GIVEREF(__pyx_v_user_tag);
  PyTuple_SET_ITEM(__pyx_t_1, 0, __pyx_v_user_tag);
  __Pyx_INCREF(__pyx_v_operations);
  __Pyx_GIVEREF(__pyx_v_operations);
  PyTuple_SET_ITEM(__pyx_t_1, 1, __pyx_v_operations);
  __Pyx_INCREF(Py_None);
  __Pyx_GIVEREF(Py_None);
  PyTuple_SET_ITEM(__pyx_t_1, 2, Py_None);
  __pyx_t_2 = __Pyx_PyObject_Call(((PyObject *)__pyx_ptype_4grpc_7_cython_6cygrpc__BatchOperationTag), __pyx_t_1, NULL); if (unlikely(!__pyx_t_2)) __PYX_ERR(12, 88, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  __pyx_v_tag = ((struct __pyx_obj_4grpc_7_cython_6cygrpc__BatchOperationTag *)__pyx_t_2);
  __pyx_t_2 = 0;

  /* "src/python/grpcio/grpc/_cython/_cygrpc/channel.pyx.pxi":89
 *   cdef grpc_call_error c_call_error
 *   cdef _BatchOperationTag tag = _BatchOperationTag(user_tag, operations, None)
 *   tag.prepare()             # <<<<<<<<<<<<<<
 *   cpython.Py_INCREF(tag)
 *   with nogil:
 */
  ((struct __pyx_vtabstruct_4grpc_7_cython_6cygrpc__BatchOperationTag *)__pyx_v_tag->__pyx_base.__pyx_vtab)->prepare(__pyx_v_tag); if (unlikely(PyErr_Occurred())) __PYX_ERR(12, 89, __pyx_L1_error)

  /* "src/python/grpcio/grpc/_cython/_cygrpc/channel.pyx.pxi":90
 *   cdef _BatchOperationTag tag = _BatchOperationTag(user_tag, operations, None)
 *   tag.prepare()
 *   cpython.Py_INCREF(tag)             # <<<<<<<<<<<<<<
 *   with nogil:
 *     c_call_error = grpc_call_start_batch(
 */
  Py_INCREF(((PyObject *)__pyx_v_tag));

  /* "src/python/grpcio/grpc/_cython/_cygrpc/channel.pyx.pxi":91
 *   tag.prepare()
 *   cpython.Py_INCREF(tag)
 *   with nogil:             # <<<<<<<<<<<<<<
 *     c_call_error = grpc_call_start_batch(
 *         c_call, tag.c_ops, tag.c_nops, <cpython.PyObject *>tag, NULL)
 */
  {
      #ifdef WITH_THREAD
      PyThreadState *_save;
      Py_UNBLOCK_THREADS
      __Pyx_FastGIL_Remember();
      #endif
      /*try:*/ {

        /* "src/python/grpcio/grpc/_cython/_cygrpc/channel.pyx.pxi":92
 *   cpython.Py_INCREF(tag)
 *   with nogil:
 *     c_call_error = grpc_call_start_batch(             # <<<<<<<<<<<<<<
 *         c_call, tag.c_ops, tag.c_nops, <cpython.PyObject *>tag, NULL)
 *   return c_call_error, tag
 */
        __pyx_v_c_call_error = grpc_call_start_batch(__pyx_v_c_call, __pyx_v_tag->c_ops, __pyx_v_tag->c_nops, ((PyObject *)__pyx_v_tag), NULL);
      }

      /* "src/python/grpcio/grpc/_cython/_cygrpc/channel.pyx.pxi":91
 *   tag.prepare()
 *   cpython.Py_INCREF(tag)
 *   with nogil:             # <<<<<<<<<<<<<<
 *     c_call_error = grpc_call_start_batch(
 *         c_call, tag.c_ops, tag.c_nops, <cpython.PyObject *>tag, NULL)
 */
      /*finally:*/ {
        /*normal exit:*/{
          #ifdef WITH_THREAD
          __Pyx_FastGIL_Forget();
          Py_BLOCK_THREADS
          #endif
          goto __pyx_L5;
        }
        __pyx_L5:;
      }
  }

  /* "src/python/grpcio/grpc/_cython/_cygrpc/channel.pyx.pxi":94
 *     c_call_error = grpc_call_start_batch(
 *         c_call, tag.c_ops, tag.c_nops, <cpython.PyObject *>tag, NULL)
 *   return c_call_error, tag             # <<<<<<<<<<<<<<
 * 
 * 
 */
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_2 = __Pyx_PyInt_From_grpc_call_error(__pyx_v_c_call_error); if (unlikely(!__pyx_t_2)) __PYX_ERR(12, 94, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __pyx_t_1 = PyTuple_New(2); if (unlikely(!__pyx_t_1)) __PYX_ERR(12, 94, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_GIVEREF(__pyx_t_2);
  PyTuple_SET_ITEM(__pyx_t_1, 0, __pyx_t_2);
  __Pyx_INCREF(((PyObject *)__pyx_v_tag));
  __Pyx_GIVEREF(((PyObject *)__pyx_v_tag));
  PyTuple_SET_ITEM(__pyx_t_1, 1, ((PyObject *)__pyx_v_tag));
  __pyx_t_2 = 0;
  __pyx_r = ((PyObject*)__pyx_t_1);
  __pyx_t_1 = 0;
  goto __pyx_L0;

  /* "src/python/grpcio/grpc/_cython/_cygrpc/channel.pyx.pxi":86
 * 
 * 
 * cdef tuple _operate(grpc_call *c_call, object operations, object user_tag):             # <<<<<<<<<<<<<<
 *   cdef grpc_call_error c_call_error
 *   cdef _BatchOperationTag tag = _BatchOperationTag(user_tag, operations, None)
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_AddTraceback("grpc._cython.cygrpc._operate", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = 0;
  __pyx_L0:;
  __Pyx_XDECREF((PyObject *)__pyx_v_tag);
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "src/python/grpcio/grpc/_cython/_cygrpc/channel.pyx.pxi":97
 * 
 * 
 * cdef object _operate_from_integrated_call(             # <<<<<<<<<<<<<<
 *     _ChannelState channel_state, _CallState call_state, object operations,
 *     object user_tag):
 */

static PyObject *__pyx_f_4grpc_7_cython_6cygrpc__operate_from_integrated_call(struct __pyx_obj_4grpc_7_cython_6cygrpc__ChannelState *__pyx_v_channel_state, struct __pyx_obj_4grpc_7_cython_6cygrpc__CallState *__pyx_v_call_state, PyObject *__pyx_v_operations, PyObject *__pyx_v_user_tag) {
  grpc_call_error __pyx_v_c_call_error;
  struct __pyx_obj_4grpc_7_cython_6cygrpc__BatchOperationTag *__pyx_v_tag = 0;
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  PyObject *__pyx_t_2 = NULL;
  PyObject *__pyx_t_3 = NULL;
  PyObject *__pyx_t_4 = NULL;
  PyObject *__pyx_t_5 = NULL;
  PyObject *__pyx_t_6 = NULL;
  PyObject *__pyx_t_7 = NULL;
  int __pyx_t_8;
  grpc_call_error __pyx_t_9;
  int __pyx_t_10;
  PyObject *__pyx_t_11 = NULL;
  PyObject *__pyx_t_12 = NULL;
  int __pyx_t_13;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("_operate_from_integrated_call", 0);

  /* "src/python/grpcio/grpc/_cython/_cygrpc/channel.pyx.pxi":102
 *   cdef grpc_call_error c_call_error
 *   cdef _BatchOperationTag tag
 *   with channel_state.condition:             # <<<<<<<<<<<<<<
 *     if call_state.due:
 *       c_call_error, tag = _operate(call_state.c_call, operations, user_tag)
 */
  /*with:*/ {
    __pyx_t_1 = __Pyx_PyObject_LookupSpecial(__pyx_v_channel_state->condition, __pyx_n_s_exit); if (unlikely(!__pyx_t_1)) __PYX_ERR(12, 102, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_1);
    __pyx_t_3 = __Pyx_PyObject_LookupSpecial(__pyx_v_channel_state->condition, __pyx_n_s_enter); if (unlikely(!__pyx_t_3)) __PYX_ERR(12, 102, __pyx_L3_error)
    __Pyx_GOTREF(__pyx_t_3);
    __pyx_t_4 = NULL;
    if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_3))) {
      __pyx_t_4 = PyMethod_GET_SELF(__pyx_t_3);
      if (likely(__pyx_t_4)) {
        PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_3);
        __Pyx_INCREF(__pyx_t_4);
        __Pyx_INCREF(function);
        __Pyx_DECREF_SET(__pyx_t_3, function);
      }
    }
    __pyx_t_2 = (__pyx_t_4) ? __Pyx_PyObject_CallOneArg(__pyx_t_3, __pyx_t_4) : __Pyx_PyObject_CallNoArg(__pyx_t_3);
    __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0;
    if (unlikely(!__pyx_t_2)) __PYX_ERR(12, 102, __pyx_L3_error)
    __Pyx_GOTREF(__pyx_t_2);
    __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
    __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
    /*try:*/ {
      {
        __Pyx_PyThreadState_declare
        __Pyx_PyThreadState_assign
        __Pyx_ExceptionSave(&__pyx_t_5, &__pyx_t_6, &__pyx_t_7);
        __Pyx_XGOTREF(__pyx_t_5);
        __Pyx_XGOTREF(__pyx_t_6);
        __Pyx_XGOTREF(__pyx_t_7);
        /*try:*/ {

          /* "src/python/grpcio/grpc/_cython/_cygrpc/channel.pyx.pxi":103
 *   cdef _BatchOperationTag tag
 *   with channel_state.condition:
 *     if call_state.due:             # <<<<<<<<<<<<<<
 *       c_call_error, tag = _operate(call_state.c_call, operations, user_tag)
 *       if c_call_error == GRPC_CALL_OK:
 */
          __pyx_t_8 = (__pyx_v_call_state->due != Py_None)&&(PySet_GET_SIZE(__pyx_v_call_state->due) != 0);
          if (__pyx_t_8) {

            /* "src/python/grpcio/grpc/_cython/_cygrpc/channel.pyx.pxi":104
 *   with channel_state.condition:
 *     if call_state.due:
 *       c_call_error, tag = _operate(call_state.c_call, operations, user_tag)             # <<<<<<<<<<<<<<
 *       if c_call_error == GRPC_CALL_OK:
 *         call_state.due.add(tag)
 */
            __pyx_t_2 = __pyx_f_4grpc_7_cython_6cygrpc__operate(__pyx_v_call_state->c_call, __pyx_v_operations, __pyx_v_user_tag); if (unlikely(!__pyx_t_2)) __PYX_ERR(12, 104, __pyx_L7_error)
            __Pyx_GOTREF(__pyx_t_2);
            if (likely(__pyx_t_2 != Py_None)) {
              PyObject* sequence = __pyx_t_2;
              Py_ssize_t size = __Pyx_PySequence_SIZE(sequence);
              if (unlikely(size != 2)) {
                if (size > 2) __Pyx_RaiseTooManyValuesError(2);
                else if (size >= 0) __Pyx_RaiseNeedMoreValuesError(size);
                __PYX_ERR(12, 104, __pyx_L7_error)
              }
              #if CYTHON_ASSUME_SAFE_MACROS && !CYTHON_AVOID_BORROWED_REFS
              __pyx_t_3 = PyTuple_GET_ITEM(sequence, 0); 
              __pyx_t_4 = PyTuple_GET_ITEM(sequence, 1); 
              __Pyx_INCREF(__pyx_t_3);
              __Pyx_INCREF(__pyx_t_4);
              #else
              __pyx_t_3 = PySequence_ITEM(sequence, 0); if (unlikely(!__pyx_t_3)) __PYX_ERR(12, 104, __pyx_L7_error)
              __Pyx_GOTREF(__pyx_t_3);
              __pyx_t_4 = PySequence_ITEM(sequence, 1); if (unlikely(!__pyx_t_4)) __PYX_ERR(12, 104, __pyx_L7_error)
              __Pyx_GOTREF(__pyx_t_4);
              #endif
              __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
            } else {
              __Pyx_RaiseNoneNotIterableError(); __PYX_ERR(12, 104, __pyx_L7_error)
            }
            __pyx_t_9 = ((grpc_call_error)__Pyx_PyInt_As_grpc_call_error(__pyx_t_3)); if (unlikely(PyErr_Occurred())) __PYX_ERR(12, 104, __pyx_L7_error)
            __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
            if (!(likely(((__pyx_t_4) == Py_None) || likely(__Pyx_TypeTest(__pyx_t_4, __pyx_ptype_4grpc_7_cython_6cygrpc__BatchOperationTag))))) __PYX_ERR(12, 104, __pyx_L7_error)
            __pyx_v_c_call_error = __pyx_t_9;
            __pyx_v_tag = ((struct __pyx_obj_4grpc_7_cython_6cygrpc__BatchOperationTag *)__pyx_t_4);
            __pyx_t_4 = 0;

            /* "src/python/grpcio/grpc/_cython/_cygrpc/channel.pyx.pxi":105
 *     if call_state.due:
 *       c_call_error, tag = _operate(call_state.c_call, operations, user_tag)
 *       if c_call_error == GRPC_CALL_OK:             # <<<<<<<<<<<<<<
 *         call_state.due.add(tag)
 *         channel_state.integrated_call_states[tag] = call_state
 */
            __pyx_t_8 = ((__pyx_v_c_call_error == GRPC_CALL_OK) != 0);
            if (__pyx_t_8) {

              /* "src/python/grpcio/grpc/_cython/_cygrpc/channel.pyx.pxi":106
 *       c_call_error, tag = _operate(call_state.c_call, operations, user_tag)
 *       if c_call_error == GRPC_CALL_OK:
 *         call_state.due.add(tag)             # <<<<<<<<<<<<<<
 *         channel_state.integrated_call_states[tag] = call_state
 *         return True
 */
              if (unlikely(__pyx_v_call_state->due == Py_None)) {
                PyErr_Format(PyExc_AttributeError, "'NoneType' object has no attribute '%.30s'", "add");
                __PYX_ERR(12, 106, __pyx_L7_error)
              }
              __pyx_t_10 = PySet_Add(__pyx_v_call_state->due, ((PyObject *)__pyx_v_tag)); if (unlikely(__pyx_t_10 == ((int)-1))) __PYX_ERR(12, 106, __pyx_L7_error)

              /* "src/python/grpcio/grpc/_cython/_cygrpc/channel.pyx.pxi":107
 *       if c_call_error == GRPC_CALL_OK:
 *         call_state.due.add(tag)
 *         channel_state.integrated_call_states[tag] = call_state             # <<<<<<<<<<<<<<
 *         return True
 *       else:
 */
              if (unlikely(__pyx_v_channel_state->integrated_call_states == Py_None)) {
                PyErr_SetString(PyExc_TypeError, "'NoneType' object is not subscriptable");
                __PYX_ERR(12, 107, __pyx_L7_error)
              }
              if (unlikely(PyDict_SetItem(__pyx_v_channel_state->integrated_call_states, ((PyObject *)__pyx_v_tag), ((PyObject *)__pyx_v_call_state)) < 0)) __PYX_ERR(12, 107, __pyx_L7_error)

              /* "src/python/grpcio/grpc/_cython/_cygrpc/channel.pyx.pxi":108
 *         call_state.due.add(tag)
 *         channel_state.integrated_call_states[tag] = call_state
 *         return True             # <<<<<<<<<<<<<<
 *       else:
 *         _raise_call_error_no_metadata(c_call_error)
 */
              __Pyx_XDECREF(__pyx_r);
              __Pyx_INCREF(Py_True);
              __pyx_r = Py_True;
              goto __pyx_L11_try_return;

              /* "src/python/grpcio/grpc/_cython/_cygrpc/channel.pyx.pxi":105
 *     if call_state.due:
 *       c_call_error, tag = _operate(call_state.c_call, operations, user_tag)
 *       if c_call_error == GRPC_CALL_OK:             # <<<<<<<<<<<<<<
 *         call_state.due.add(tag)
 *         channel_state.integrated_call_states[tag] = call_state
 */
            }

            /* "src/python/grpcio/grpc/_cython/_cygrpc/channel.pyx.pxi":110
 *         return True
 *       else:
 *         _raise_call_error_no_metadata(c_call_error)             # <<<<<<<<<<<<<<
 *     else:
 *       return False
 */
            /*else*/ {
              __pyx_t_2 = __Pyx_PyInt_From_grpc_call_error(__pyx_v_c_call_error); if (unlikely(!__pyx_t_2)) __PYX_ERR(12, 110, __pyx_L7_error)
              __Pyx_GOTREF(__pyx_t_2);
              __pyx_f_4grpc_7_cython_6cygrpc__raise_call_error_no_metadata(__pyx_t_2); if (unlikely(PyErr_Occurred())) __PYX_ERR(12, 110, __pyx_L7_error)
              __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
            }

            /* "src/python/grpcio/grpc/_cython/_cygrpc/channel.pyx.pxi":103
 *   cdef _BatchOperationTag tag
 *   with channel_state.condition:
 *     if call_state.due:             # <<<<<<<<<<<<<<
 *       c_call_error, tag = _operate(call_state.c_call, operations, user_tag)
 *       if c_call_error == GRPC_CALL_OK:
 */
            goto __pyx_L13;
          }

          /* "src/python/grpcio/grpc/_cython/_cygrpc/channel.pyx.pxi":112
 *         _raise_call_error_no_metadata(c_call_error)
 *     else:
 *       return False             # <<<<<<<<<<<<<<
 * 
 * 
 */
          /*else*/ {
            __Pyx_XDECREF(__pyx_r);
            __Pyx_INCREF(Py_False);
            __pyx_r = Py_False;
            goto __pyx_L11_try_return;
          }
          __pyx_L13:;

          /* "src/python/grpcio/grpc/_cython/_cygrpc/channel.pyx.pxi":102
 *   cdef grpc_call_error c_call_error
 *   cdef _BatchOperationTag tag
 *   with channel_state.condition:             # <<<<<<<<<<<<<<
 *     if call_state.due:
 *       c_call_error, tag = _operate(call_state.c_call, operations, user_tag)
 */
        }
        __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0;
        __Pyx_XDECREF(__pyx_t_6); __pyx_t_6 = 0;
        __Pyx_XDECREF(__pyx_t_7); __pyx_t_7 = 0;
        goto __pyx_L12_try_end;
        __pyx_L7_error:;
        __Pyx_XDECREF(__pyx_t_2); __pyx_t_2 = 0;
        __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0;
        __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0;
        /*except:*/ {
          __Pyx_AddTraceback("grpc._cython.cygrpc._operate_from_integrated_call", __pyx_clineno, __pyx_lineno, __pyx_filename);
          if (__Pyx_GetException(&__pyx_t_2, &__pyx_t_4, &__pyx_t_3) < 0) __PYX_ERR(12, 102, __pyx_L9_except_error)
          __Pyx_GOTREF(__pyx_t_2);
          __Pyx_GOTREF(__pyx_t_4);
          __Pyx_GOTREF(__pyx_t_3);
          __pyx_t_11 = PyTuple_Pack(3, __pyx_t_2, __pyx_t_4, __pyx_t_3); if (unlikely(!__pyx_t_11)) __PYX_ERR(12, 102, __pyx_L9_except_error)
          __Pyx_GOTREF(__pyx_t_11);
          __pyx_t_12 = __Pyx_PyObject_Call(__pyx_t_1, __pyx_t_11, NULL);
          __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
          __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0;
          if (unlikely(!__pyx_t_12)) __PYX_ERR(12, 102, __pyx_L9_except_error)
          __Pyx_GOTREF(__pyx_t_12);
          __pyx_t_8 = __Pyx_PyObject_IsTrue(__pyx_t_12);
          __Pyx_DECREF(__pyx_t_12); __pyx_t_12 = 0;
          if (__pyx_t_8 < 0) __PYX_ERR(12, 102, __pyx_L9_except_error)
          __pyx_t_13 = ((!(__pyx_t_8 != 0)) != 0);
          if (__pyx_t_13) {
            __Pyx_GIVEREF(__pyx_t_2);
            __Pyx_GIVEREF(__pyx_t_4);
            __Pyx_XGIVEREF(__pyx_t_3);
            __Pyx_ErrRestoreWithState(__pyx_t_2, __pyx_t_4, __pyx_t_3);
            __pyx_t_2 = 0; __pyx_t_4 = 0; __pyx_t_3 = 0; 
            __PYX_ERR(12, 102, __pyx_L9_except_error)
          }
          __Pyx_XDECREF(__pyx_t_2); __pyx_t_2 = 0;
          __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0;
          __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0;
          goto __pyx_L8_exception_handled;
        }
        __pyx_L9_except_error:;
        __Pyx_XGIVEREF(__pyx_t_5);
        __Pyx_XGIVEREF(__pyx_t_6);
        __Pyx_XGIVEREF(__pyx_t_7);
        __Pyx_ExceptionReset(__pyx_t_5, __pyx_t_6, __pyx_t_7);
        goto __pyx_L1_error;
        __pyx_L11_try_return:;
        __Pyx_XGIVEREF(__pyx_t_5);
        __Pyx_XGIVEREF(__pyx_t_6);
        __Pyx_XGIVEREF(__pyx_t_7);
        __Pyx_ExceptionReset(__pyx_t_5, __pyx_t_6, __pyx_t_7);
        goto __pyx_L4_return;
        __pyx_L8_exception_handled:;
        __Pyx_XGIVEREF(__pyx_t_5);
        __Pyx_XGIVEREF(__pyx_t_6);
        __Pyx_XGIVEREF(__pyx_t_7);
        __Pyx_ExceptionReset(__pyx_t_5, __pyx_t_6, __pyx_t_7);
        __pyx_L12_try_end:;
      }
    }
    /*finally:*/ {
      /*normal exit:*/{
        if (__pyx_t_1) {
          __pyx_t_7 = __Pyx_PyObject_Call(__pyx_t_1, __pyx_tuple__17, NULL);
          __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
          if (unlikely(!__pyx_t_7)) __PYX_ERR(12, 102, __pyx_L1_error)
          __Pyx_GOTREF(__pyx_t_7);
          __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
        }
        goto __pyx_L6;
      }
      __pyx_L4_return: {
        __pyx_t_7 = __pyx_r;
        __pyx_r = 0;
        if (__pyx_t_1) {
          __pyx_t_6 = __Pyx_PyObject_Call(__pyx_t_1, __pyx_tuple__17, NULL);
          __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
          if (unlikely(!__pyx_t_6)) __PYX_ERR(12, 102, __pyx_L1_error)
          __Pyx_GOTREF(__pyx_t_6);
          __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
        }
        __pyx_r = __pyx_t_7;
        __pyx_t_7 = 0;
        goto __pyx_L0;
      }
      __pyx_L6:;
    }
    goto __pyx_L18;
    __pyx_L3_error:;
    __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
    goto __pyx_L1_error;
    __pyx_L18:;
  }

  /* "src/python/grpcio/grpc/_cython/_cygrpc/channel.pyx.pxi":97
 * 
 * 
 * cdef object _operate_from_integrated_call(             # <<<<<<<<<<<<<<
 *     _ChannelState channel_state, _CallState call_state, object operations,
 *     object user_tag):
 */

  /* function exit code */
  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_XDECREF(__pyx_t_3);
  __Pyx_XDECREF(__pyx_t_4);
  __Pyx_XDECREF(__pyx_t_11);
  __Pyx_AddTraceback("grpc._cython.cygrpc._operate_from_integrated_call", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = 0;
  __pyx_L0:;
  __Pyx_XDECREF((PyObject *)__pyx_v_tag);
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "src/python/grpcio/grpc/_cython/_cygrpc/channel.pyx.pxi":115
 * 
 * 
 * cdef object _operate_from_segregated_call(             # <<<<<<<<<<<<<<
 *     _ChannelState channel_state, _CallState call_state, object operations,
 *     object user_tag):
 */

static PyObject *__pyx_f_4grpc_7_cython_6cygrpc__operate_from_segregated_call(struct __pyx_obj_4grpc_7_cython_6cygrpc__ChannelState *__pyx_v_channel_state, struct __pyx_obj_4grpc_7_cython_6cygrpc__CallState *__pyx_v_call_state, PyObject *__pyx_v_operations, PyObject *__pyx_v_user_tag) {
  grpc_call_error __pyx_v_c_call_error;
  struct __pyx_obj_4grpc_7_cython_6cygrpc__BatchOperationTag *__pyx_v_tag = 0;
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  PyObject *__pyx_t_2 = NULL;
  PyObject *__pyx_t_3 = NULL;
  PyObject *__pyx_t_4 = NULL;
  PyObject *__pyx_t_5 = NULL;
  PyObject *__pyx_t_6 = NULL;
  PyObject *__pyx_t_7 = NULL;
  int __pyx_t_8;
  grpc_call_error __pyx_t_9;
  int __pyx_t_10;
  PyObject *__pyx_t_11 = NULL;
  PyObject *__pyx_t_12 = NULL;
  int __pyx_t_13;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("_operate_from_segregated_call", 0);

  /* "src/python/grpcio/grpc/_cython/_cygrpc/channel.pyx.pxi":120
 *   cdef grpc_call_error c_call_error
 *   cdef _BatchOperationTag tag
 *   with channel_state.condition:             # <<<<<<<<<<<<<<
 *     if call_state.due:
 *       c_call_error, tag = _operate(call_state.c_call, operations, user_tag)
 */
  /*with:*/ {
    __pyx_t_1 = __Pyx_PyObject_LookupSpecial(__pyx_v_channel_state->condition, __pyx_n_s_exit); if (unlikely(!__pyx_t_1)) __PYX_ERR(12, 120, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_1);
    __pyx_t_3 = __Pyx_PyObject_LookupSpecial(__pyx_v_channel_state->condition, __pyx_n_s_enter); if (unlikely(!__pyx_t_3)) __PYX_ERR(12, 120, __pyx_L3_error)
    __Pyx_GOTREF(__pyx_t_3);
    __pyx_t_4 = NULL;
    if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_3))) {
      __pyx_t_4 = PyMethod_GET_SELF(__pyx_t_3);
      if (likely(__pyx_t_4)) {
        PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_3);
        __Pyx_INCREF(__pyx_t_4);
        __Pyx_INCREF(function);
        __Pyx_DECREF_SET(__pyx_t_3, function);
      }
    }
    __pyx_t_2 = (__pyx_t_4) ? __Pyx_PyObject_CallOneArg(__pyx_t_3, __pyx_t_4) : __Pyx_PyObject_CallNoArg(__pyx_t_3);
    __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0;
    if (unlikely(!__pyx_t_2)) __PYX_ERR(12, 120, __pyx_L3_error)
    __Pyx_GOTREF(__pyx_t_2);
    __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
    __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
    /*try:*/ {
      {
        __Pyx_PyThreadState_declare
        __Pyx_PyThreadState_assign
        __Pyx_ExceptionSave(&__pyx_t_5, &__pyx_t_6, &__pyx_t_7);
        __Pyx_XGOTREF(__pyx_t_5);
        __Pyx_XGOTREF(__pyx_t_6);
        __Pyx_XGOTREF(__pyx_t_7);
        /*try:*/ {

          /* "src/python/grpcio/grpc/_cython/_cygrpc/channel.pyx.pxi":121
 *   cdef _BatchOperationTag tag
 *   with channel_state.condition:
 *     if call_state.due:             # <<<<<<<<<<<<<<
 *       c_call_error, tag = _operate(call_state.c_call, operations, user_tag)
 *       if c_call_error == GRPC_CALL_OK:
 */
          __pyx_t_8 = (__pyx_v_call_state->due != Py_None)&&(PySet_GET_SIZE(__pyx_v_call_state->due) != 0);
          if (__pyx_t_8) {

            /* "src/python/grpcio/grpc/_cython/_cygrpc/channel.pyx.pxi":122
 *   with channel_state.condition:
 *     if call_state.due:
 *       c_call_error, tag = _operate(call_state.c_call, operations, user_tag)             # <<<<<<<<<<<<<<
 *       if c_call_error == GRPC_CALL_OK:
 *         call_state.due.add(tag)
 */
            __pyx_t_2 = __pyx_f_4grpc_7_cython_6cygrpc__operate(__pyx_v_call_state->c_call, __pyx_v_operations, __pyx_v_user_tag); if (unlikely(!__pyx_t_2)) __PYX_ERR(12, 122, __pyx_L7_error)
            __Pyx_GOTREF(__pyx_t_2);
            if (likely(__pyx_t_2 != Py_None)) {
              PyObject* sequence = __pyx_t_2;
              Py_ssize_t size = __Pyx_PySequence_SIZE(sequence);
              if (unlikely(size != 2)) {
                if (size > 2) __Pyx_RaiseTooManyValuesError(2);
                else if (size >= 0) __Pyx_RaiseNeedMoreValuesError(size);
                __PYX_ERR(12, 122, __pyx_L7_error)
              }
              #if CYTHON_ASSUME_SAFE_MACROS && !CYTHON_AVOID_BORROWED_REFS
              __pyx_t_3 = PyTuple_GET_ITEM(sequence, 0); 
              __pyx_t_4 = PyTuple_GET_ITEM(sequence, 1); 
              __Pyx_INCREF(__pyx_t_3);
              __Pyx_INCREF(__pyx_t_4);
              #else
              __pyx_t_3 = PySequence_ITEM(sequence, 0); if (unlikely(!__pyx_t_3)) __PYX_ERR(12, 122, __pyx_L7_error)
              __Pyx_GOTREF(__pyx_t_3);
              __pyx_t_4 = PySequence_ITEM(sequence, 1); if (unlikely(!__pyx_t_4)) __PYX_ERR(12, 122, __pyx_L7_error)
              __Pyx_GOTREF(__pyx_t_4);
              #endif
              __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
            } else {
              __Pyx_RaiseNoneNotIterableError(); __PYX_ERR(12, 122, __pyx_L7_error)
            }
            __pyx_t_9 = ((grpc_call_error)__Pyx_PyInt_As_grpc_call_error(__pyx_t_3)); if (unlikely(PyErr_Occurred())) __PYX_ERR(12, 122, __pyx_L7_error)
            __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
            if (!(likely(((__pyx_t_4) == Py_None) || likely(__Pyx_TypeTest(__pyx_t_4, __pyx_ptype_4grpc_7_cython_6cygrpc__BatchOperationTag))))) __PYX_ERR(12, 122, __pyx_L7_error)
            __pyx_v_c_call_error = __pyx_t_9;
            __pyx_v_tag = ((struct __pyx_obj_4grpc_7_cython_6cygrpc__BatchOperationTag *)__pyx_t_4);
            __pyx_t_4 = 0;

            /* "src/python/grpcio/grpc/_cython/_cygrpc/channel.pyx.pxi":123
 *     if call_state.due:
 *       c_call_error, tag = _operate(call_state.c_call, operations, user_tag)
 *       if c_call_error == GRPC_CALL_OK:             # <<<<<<<<<<<<<<
 *         call_state.due.add(tag)
 *         return True
 */
            __pyx_t_8 = ((__pyx_v_c_call_error == GRPC_CALL_OK) != 0);
            if (__pyx_t_8) {

              /* "src/python/grpcio/grpc/_cython/_cygrpc/channel.pyx.pxi":124
 *       c_call_error, tag = _operate(call_state.c_call, operations, user_tag)
 *       if c_call_error == GRPC_CALL_OK:
 *         call_state.due.add(tag)             # <<<<<<<<<<<<<<
 *         return True
 *       else:
 */
              if (unlikely(__pyx_v_call_state->due == Py_None)) {
                PyErr_Format(PyExc_AttributeError, "'NoneType' object has no attribute '%.30s'", "add");
                __PYX_ERR(12, 124, __pyx_L7_error)
              }
              __pyx_t_10 = PySet_Add(__pyx_v_call_state->due, ((PyObject *)__pyx_v_tag)); if (unlikely(__pyx_t_10 == ((int)-1))) __PYX_ERR(12, 124, __pyx_L7_error)

              /* "src/python/grpcio/grpc/_cython/_cygrpc/channel.pyx.pxi":125
 *       if c_call_error == GRPC_CALL_OK:
 *         call_state.due.add(tag)
 *         return True             # <<<<<<<<<<<<<<
 *       else:
 *         _raise_call_error_no_metadata(c_call_error)
 */
              __Pyx_XDECREF(__pyx_r);
              __Pyx_INCREF(Py_True);
              __pyx_r = Py_True;
              goto __pyx_L11_try_return;

              /* "src/python/grpcio/grpc/_cython/_cygrpc/channel.pyx.pxi":123
 *     if call_state.due:
 *       c_call_error, tag = _operate(call_state.c_call, operations, user_tag)
 *       if c_call_error == GRPC_CALL_OK:             # <<<<<<<<<<<<<<
 *         call_state.due.add(tag)
 *         return True
 */
            }

            /* "src/python/grpcio/grpc/_cython/_cygrpc/channel.pyx.pxi":127
 *         return True
 *       else:
 *         _raise_call_error_no_metadata(c_call_error)             # <<<<<<<<<<<<<<
 *     else:
 *       return False
 */
            /*else*/ {
              __pyx_t_2 = __Pyx_PyInt_From_grpc_call_error(__pyx_v_c_call_error); if (unlikely(!__pyx_t_2)) __PYX_ERR(12, 127, __pyx_L7_error)
              __Pyx_GOTREF(__pyx_t_2);
              __pyx_f_4grpc_7_cython_6cygrpc__raise_call_error_no_metadata(__pyx_t_2); if (unlikely(PyErr_Occurred())) __PYX_ERR(12, 127, __pyx_L7_error)
              __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
            }

            /* "src/python/grpcio/grpc/_cython/_cygrpc/channel.pyx.pxi":121
 *   cdef _BatchOperationTag tag
 *   with channel_state.condition:
 *     if call_state.due:             # <<<<<<<<<<<<<<
 *       c_call_error, tag = _operate(call_state.c_call, operations, user_tag)
 *       if c_call_error == GRPC_CALL_OK:
 */
            goto __pyx_L13;
          }

          /* "src/python/grpcio/grpc/_cython/_cygrpc/channel.pyx.pxi":129
 *         _raise_call_error_no_metadata(c_call_error)
 *     else:
 *       return False             # <<<<<<<<<<<<<<
 * 
 * 
 */
          /*else*/ {
            __Pyx_XDECREF(__pyx_r);
            __Pyx_INCREF(Py_False);
            __pyx_r = Py_False;
            goto __pyx_L11_try_return;
          }
          __pyx_L13:;

          /* "src/python/grpcio/grpc/_cython/_cygrpc/channel.pyx.pxi":120
 *   cdef grpc_call_error c_call_error
 *   cdef _BatchOperationTag tag
 *   with channel_state.condition:             # <<<<<<<<<<<<<<
 *     if call_state.due:
 *       c_call_error, tag = _operate(call_state.c_call, operations, user_tag)
 */
        }
        __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0;
        __Pyx_XDECREF(__pyx_t_6); __pyx_t_6 = 0;
        __Pyx_XDECREF(__pyx_t_7); __pyx_t_7 = 0;
        goto __pyx_L12_try_end;
        __pyx_L7_error:;
        __Pyx_XDECREF(__pyx_t_2); __pyx_t_2 = 0;
        __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0;
        __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0;
        /*except:*/ {
          __Pyx_AddTraceback("grpc._cython.cygrpc._operate_from_segregated_call", __pyx_clineno, __pyx_lineno, __pyx_filename);
          if (__Pyx_GetException(&__pyx_t_2, &__pyx_t_4, &__pyx_t_3) < 0) __PYX_ERR(12, 120, __pyx_L9_except_error)
          __Pyx_GOTREF(__pyx_t_2);
          __Pyx_GOTREF(__pyx_t_4);
          __Pyx_GOTREF(__pyx_t_3);
          __pyx_t_11 = PyTuple_Pack(3, __pyx_t_2, __pyx_t_4, __pyx_t_3); if (unlikely(!__pyx_t_11)) __PYX_ERR(12, 120, __pyx_L9_except_error)
          __Pyx_GOTREF(__pyx_t_11);
          __pyx_t_12 = __Pyx_PyObject_Call(__pyx_t_1, __pyx_t_11, NULL);
          __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
          __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0;
          if (unlikely(!__pyx_t_12)) __PYX_ERR(12, 120, __pyx_L9_except_error)
          __Pyx_GOTREF(__pyx_t_12);
          __pyx_t_8 = __Pyx_PyObject_IsTrue(__pyx_t_12);
          __Pyx_DECREF(__pyx_t_12); __pyx_t_12 = 0;
          if (__pyx_t_8 < 0) __PYX_ERR(12, 120, __pyx_L9_except_error)
          __pyx_t_13 = ((!(__pyx_t_8 != 0)) != 0);
          if (__pyx_t_13) {
            __Pyx_GIVEREF(__pyx_t_2);
            __Pyx_GIVEREF(__pyx_t_4);
            __Pyx_XGIVEREF(__pyx_t_3);
            __Pyx_ErrRestoreWithState(__pyx_t_2, __pyx_t_4, __pyx_t_3);
            __pyx_t_2 = 0; __pyx_t_4 = 0; __pyx_t_3 = 0; 
            __PYX_ERR(12, 120, __pyx_L9_except_error)
          }
          __Pyx_XDECREF(__pyx_t_2); __pyx_t_2 = 0;
          __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0;
          __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0;
          goto __pyx_L8_exception_handled;
        }
        __pyx_L9_except_error:;
        __Pyx_XGIVEREF(__pyx_t_5);
        __Pyx_XGIVEREF(__pyx_t_6);
        __Pyx_XGIVEREF(__pyx_t_7);
        __Pyx_ExceptionReset(__pyx_t_5, __pyx_t_6, __pyx_t_7);
        goto __pyx_L1_error;
        __pyx_L11_try_return:;
        __Pyx_XGIVEREF(__pyx_t_5);
        __Pyx_XGIVEREF(__pyx_t_6);
        __Pyx_XGIVEREF(__pyx_t_7);
        __Pyx_ExceptionReset(__pyx_t_5, __pyx_t_6, __pyx_t_7);
        goto __pyx_L4_return;
        __pyx_L8_exception_handled:;
        __Pyx_XGIVEREF(__pyx_t_5);
        __Pyx_XGIVEREF(__pyx_t_6);
        __Pyx_XGIVEREF(__pyx_t_7);
        __Pyx_ExceptionReset(__pyx_t_5, __pyx_t_6, __pyx_t_7);
        __pyx_L12_try_end:;
      }
    }
    /*finally:*/ {
      /*normal exit:*/{
        if (__pyx_t_1) {
          __pyx_t_7 = __Pyx_PyObject_Call(__pyx_t_1, __pyx_tuple__17, NULL);
          __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
          if (unlikely(!__pyx_t_7)) __PYX_ERR(12, 120, __pyx_L1_error)
          __Pyx_GOTREF(__pyx_t_7);
          __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
        }
        goto __pyx_L6;
      }
      __pyx_L4_return: {
        __pyx_t_7 = __pyx_r;
        __pyx_r = 0;
        if (__pyx_t_1) {
          __pyx_t_6 = __Pyx_PyObject_Call(__pyx_t_1, __pyx_tuple__17, NULL);
          __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
          if (unlikely(!__pyx_t_6)) __PYX_ERR(12, 120, __pyx_L1_error)
          __Pyx_GOTREF(__pyx_t_6);
          __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
        }
        __pyx_r = __pyx_t_7;
        __pyx_t_7 = 0;
        goto __pyx_L0;
      }
      __pyx_L6:;
    }
    goto __pyx_L18;
    __pyx_L3_error:;
    __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
    goto __pyx_L1_error;
    __pyx_L18:;
  }

  /* "src/python/grpcio/grpc/_cython/_cygrpc/channel.pyx.pxi":115
 * 
 * 
 * cdef object _operate_from_segregated_call(             # <<<<<<<<<<<<<<
 *     _ChannelState channel_state, _CallState call_state, object operations,
 *     object user_tag):
 */

  /* function exit code */
  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_XDECREF(__pyx_t_3);
  __Pyx_XDECREF(__pyx_t_4);
  __Pyx_XDECREF(__pyx_t_11);
  __Pyx_AddTraceback("grpc._cython.cygrpc._operate_from_segregated_call", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = 0;
  __pyx_L0:;
  __Pyx_XDECREF((PyObject *)__pyx_v_tag);
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "src/python/grpcio/grpc/_cython/_cygrpc/channel.pyx.pxi":132
 * 
 * 
 * cdef _cancel(             # <<<<<<<<<<<<<<
 *     _ChannelState channel_state, _CallState call_state, grpc_status_code code,
 *     str details):
 */

static PyObject *__pyx_f_4grpc_7_cython_6cygrpc__cancel(struct __pyx_obj_4grpc_7_cython_6cygrpc__ChannelState *__pyx_v_channel_state, struct __pyx_obj_4grpc_7_cython_6cygrpc__CallState *__pyx_v_call_state, grpc_status_code __pyx_v_code, PyObject *__pyx_v_details) {
  grpc_call_error __pyx_v_c_call_error;
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  PyObject *__pyx_t_2 = NULL;
  PyObject *__pyx_t_3 = NULL;
  PyObject *__pyx_t_4 = NULL;
  PyObject *__pyx_t_5 = NULL;
  PyObject *__pyx_t_6 = NULL;
  PyObject *__pyx_t_7 = NULL;
  int __pyx_t_8;
  char const *__pyx_t_9;
  PyObject *__pyx_t_10 = NULL;
  PyObject *__pyx_t_11 = NULL;
  int __pyx_t_12;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("_cancel", 0);

  /* "src/python/grpcio/grpc/_cython/_cygrpc/channel.pyx.pxi":136
 *     str details):
 *   cdef grpc_call_error c_call_error
 *   with channel_state.condition:             # <<<<<<<<<<<<<<
 *     if call_state.due:
 *       c_call_error = grpc_call_cancel_with_status(
 */
  /*with:*/ {
    __pyx_t_1 = __Pyx_PyObject_LookupSpecial(__pyx_v_channel_state->condition, __pyx_n_s_exit); if (unlikely(!__pyx_t_1)) __PYX_ERR(12, 136, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_1);
    __pyx_t_3 = __Pyx_PyObject_LookupSpecial(__pyx_v_channel_state->condition, __pyx_n_s_enter); if (unlikely(!__pyx_t_3)) __PYX_ERR(12, 136, __pyx_L3_error)
    __Pyx_GOTREF(__pyx_t_3);
    __pyx_t_4 = NULL;
    if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_3))) {
      __pyx_t_4 = PyMethod_GET_SELF(__pyx_t_3);
      if (likely(__pyx_t_4)) {
        PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_3);
        __Pyx_INCREF(__pyx_t_4);
        __Pyx_INCREF(function);
        __Pyx_DECREF_SET(__pyx_t_3, function);
      }
    }
    __pyx_t_2 = (__pyx_t_4) ? __Pyx_PyObject_CallOneArg(__pyx_t_3, __pyx_t_4) : __Pyx_PyObject_CallNoArg(__pyx_t_3);
    __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0;
    if (unlikely(!__pyx_t_2)) __PYX_ERR(12, 136, __pyx_L3_error)
    __Pyx_GOTREF(__pyx_t_2);
    __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
    __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
    /*try:*/ {
      {
        __Pyx_PyThreadState_declare
        __Pyx_PyThreadState_assign
        __Pyx_ExceptionSave(&__pyx_t_5, &__pyx_t_6, &__pyx_t_7);
        __Pyx_XGOTREF(__pyx_t_5);
        __Pyx_XGOTREF(__pyx_t_6);
        __Pyx_XGOTREF(__pyx_t_7);
        /*try:*/ {

          /* "src/python/grpcio/grpc/_cython/_cygrpc/channel.pyx.pxi":137
 *   cdef grpc_call_error c_call_error
 *   with channel_state.condition:
 *     if call_state.due:             # <<<<<<<<<<<<<<
 *       c_call_error = grpc_call_cancel_with_status(
 *           call_state.c_call, code, _encode(details), NULL)
 */
          __pyx_t_8 = (__pyx_v_call_state->due != Py_None)&&(PySet_GET_SIZE(__pyx_v_call_state->due) != 0);
          if (__pyx_t_8) {

            /* "src/python/grpcio/grpc/_cython/_cygrpc/channel.pyx.pxi":139
 *     if call_state.due:
 *       c_call_error = grpc_call_cancel_with_status(
 *           call_state.c_call, code, _encode(details), NULL)             # <<<<<<<<<<<<<<
 *       _check_and_raise_call_error_no_metadata(c_call_error)
 * 
 */
            __pyx_t_2 = __pyx_f_4grpc_7_cython_6cygrpc__encode(__pyx_v_details); if (unlikely(!__pyx_t_2)) __PYX_ERR(12, 139, __pyx_L7_error)
            __Pyx_GOTREF(__pyx_t_2);
            if (unlikely(__pyx_t_2 == Py_None)) {
              PyErr_SetString(PyExc_TypeError, "expected bytes, NoneType found");
              __PYX_ERR(12, 139, __pyx_L7_error)
            }
            __pyx_t_9 = __Pyx_PyBytes_AsString(__pyx_t_2); if (unlikely((!__pyx_t_9) && PyErr_Occurred())) __PYX_ERR(12, 139, __pyx_L7_error)

            /* "src/python/grpcio/grpc/_cython/_cygrpc/channel.pyx.pxi":138
 *   with channel_state.condition:
 *     if call_state.due:
 *       c_call_error = grpc_call_cancel_with_status(             # <<<<<<<<<<<<<<
 *           call_state.c_call, code, _encode(details), NULL)
 *       _check_and_raise_call_error_no_metadata(c_call_error)
 */
            __pyx_v_c_call_error = grpc_call_cancel_with_status(__pyx_v_call_state->c_call, __pyx_v_code, __pyx_t_9, NULL);
            __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;

            /* "src/python/grpcio/grpc/_cython/_cygrpc/channel.pyx.pxi":140
 *       c_call_error = grpc_call_cancel_with_status(
 *           call_state.c_call, code, _encode(details), NULL)
 *       _check_and_raise_call_error_no_metadata(c_call_error)             # <<<<<<<<<<<<<<
 * 
 * 
 */
            __pyx_t_2 = __Pyx_PyInt_From_grpc_call_error(__pyx_v_c_call_error); if (unlikely(!__pyx_t_2)) __PYX_ERR(12, 140, __pyx_L7_error)
            __Pyx_GOTREF(__pyx_t_2);
            __pyx_t_3 = __pyx_f_4grpc_7_cython_6cygrpc__check_and_raise_call_error_no_metadata(__pyx_t_2); if (unlikely(!__pyx_t_3)) __PYX_ERR(12, 140, __pyx_L7_error)
            __Pyx_GOTREF(__pyx_t_3);
            __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
            __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;

            /* "src/python/grpcio/grpc/_cython/_cygrpc/channel.pyx.pxi":137
 *   cdef grpc_call_error c_call_error
 *   with channel_state.condition:
 *     if call_state.due:             # <<<<<<<<<<<<<<
 *       c_call_error = grpc_call_cancel_with_status(
 *           call_state.c_call, code, _encode(details), NULL)
 */
          }

          /* "src/python/grpcio/grpc/_cython/_cygrpc/channel.pyx.pxi":136
 *     str details):
 *   cdef grpc_call_error c_call_error
 *   with channel_state.condition:             # <<<<<<<<<<<<<<
 *     if call_state.due:
 *       c_call_error = grpc_call_cancel_with_status(
 */
        }
        __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0;
        __Pyx_XDECREF(__pyx_t_6); __pyx_t_6 = 0;
        __Pyx_XDECREF(__pyx_t_7); __pyx_t_7 = 0;
        goto __pyx_L12_try_end;
        __pyx_L7_error:;
        __Pyx_XDECREF(__pyx_t_2); __pyx_t_2 = 0;
        __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0;
        __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0;
        /*except:*/ {
          __Pyx_AddTraceback("grpc._cython.cygrpc._cancel", __pyx_clineno, __pyx_lineno, __pyx_filename);
          if (__Pyx_GetException(&__pyx_t_3, &__pyx_t_2, &__pyx_t_4) < 0) __PYX_ERR(12, 136, __pyx_L9_except_error)
          __Pyx_GOTREF(__pyx_t_3);
          __Pyx_GOTREF(__pyx_t_2);
          __Pyx_GOTREF(__pyx_t_4);
          __pyx_t_10 = PyTuple_Pack(3, __pyx_t_3, __pyx_t_2, __pyx_t_4); if (unlikely(!__pyx_t_10)) __PYX_ERR(12, 136, __pyx_L9_except_error)
          __Pyx_GOTREF(__pyx_t_10);
          __pyx_t_11 = __Pyx_PyObject_Call(__pyx_t_1, __pyx_t_10, NULL);
          __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
          __Pyx_DECREF(__pyx_t_10); __pyx_t_10 = 0;
          if (unlikely(!__pyx_t_11)) __PYX_ERR(12, 136, __pyx_L9_except_error)
          __Pyx_GOTREF(__pyx_t_11);
          __pyx_t_8 = __Pyx_PyObject_IsTrue(__pyx_t_11);
          __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0;
          if (__pyx_t_8 < 0) __PYX_ERR(12, 136, __pyx_L9_except_error)
          __pyx_t_12 = ((!(__pyx_t_8 != 0)) != 0);
          if (__pyx_t_12) {
            __Pyx_GIVEREF(__pyx_t_3);
            __Pyx_GIVEREF(__pyx_t_2);
            __Pyx_XGIVEREF(__pyx_t_4);
            __Pyx_ErrRestoreWithState(__pyx_t_3, __pyx_t_2, __pyx_t_4);
            __pyx_t_3 = 0; __pyx_t_2 = 0; __pyx_t_4 = 0; 
            __PYX_ERR(12, 136, __pyx_L9_except_error)
          }
          __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0;
          __Pyx_XDECREF(__pyx_t_2); __pyx_t_2 = 0;
          __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0;
          goto __pyx_L8_exception_handled;
        }
        __pyx_L9_except_error:;
        __Pyx_XGIVEREF(__pyx_t_5);
        __Pyx_XGIVEREF(__pyx_t_6);
        __Pyx_XGIVEREF(__pyx_t_7);
        __Pyx_ExceptionReset(__pyx_t_5, __pyx_t_6, __pyx_t_7);
        goto __pyx_L1_error;
        __pyx_L8_exception_handled:;
        __Pyx_XGIVEREF(__pyx_t_5);
        __Pyx_XGIVEREF(__pyx_t_6);
        __Pyx_XGIVEREF(__pyx_t_7);
        __Pyx_ExceptionReset(__pyx_t_5, __pyx_t_6, __pyx_t_7);
        __pyx_L12_try_end:;
      }
    }
    /*finally:*/ {
      /*normal exit:*/{
        if (__pyx_t_1) {
          __pyx_t_7 = __Pyx_PyObject_Call(__pyx_t_1, __pyx_tuple__17, NULL);
          __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
          if (unlikely(!__pyx_t_7)) __PYX_ERR(12, 136, __pyx_L1_error)
          __Pyx_GOTREF(__pyx_t_7);
          __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
        }
        goto __pyx_L6;
      }
      __pyx_L6:;
    }
    goto __pyx_L17;
    __pyx_L3_error:;
    __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
    goto __pyx_L1_error;
    __pyx_L17:;
  }

  /* "src/python/grpcio/grpc/_cython/_cygrpc/channel.pyx.pxi":132
 * 
 * 
 * cdef _cancel(             # <<<<<<<<<<<<<<
 *     _ChannelState channel_state, _CallState call_state, grpc_status_code code,
 *     str details):
 */

  /* function exit code */
  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_XDECREF(__pyx_t_3);
  __Pyx_XDECREF(__pyx_t_4);
  __Pyx_XDECREF(__pyx_t_10);
  __Pyx_AddTraceback("grpc._cython.cygrpc._cancel", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = 0;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "src/python/grpcio/grpc/_cython/_cygrpc/channel.pyx.pxi":143
 * 
 * 
 * cdef _next_call_event(             # <<<<<<<<<<<<<<
 *     _ChannelState channel_state, grpc_completion_queue *c_completion_queue,
 *     on_success, on_failure, deadline):
 */

static PyObject *__pyx_f_4grpc_7_cython_6cygrpc__next_call_event(struct __pyx_obj_4grpc_7_cython_6cygrpc__ChannelState *__pyx_v_channel_state, grpc_completion_queue *__pyx_v_c_completion_queue, PyObject *__pyx_v_on_success, PyObject *__pyx_v_on_failure, PyObject *__pyx_v_deadline) {
  PyObject *__pyx_v_tag = NULL;
  PyObject *__pyx_v_event = NULL;
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  PyObject *__pyx_t_2 = NULL;
  PyObject *__pyx_t_3 = NULL;
  PyObject *__pyx_t_4 = NULL;
  PyObject *__pyx_t_5 = NULL;
  PyObject *__pyx_t_6 = NULL;
  PyObject *__pyx_t_7 = NULL;
  PyObject *(*__pyx_t_8)(PyObject *);
  PyObject *__pyx_t_9 = NULL;
  PyObject *__pyx_t_10 = NULL;
  PyObject *__pyx_t_11 = NULL;
  PyObject *__pyx_t_12 = NULL;
  PyObject *__pyx_t_13 = NULL;
  int __pyx_t_14;
  int __pyx_t_15;
  PyObject *__pyx_t_16 = NULL;
  PyObject *__pyx_t_17 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("_next_call_event", 0);

  /* "src/python/grpcio/grpc/_cython/_cygrpc/channel.pyx.pxi":162
 *     deadline: The point after which the RPC will time out.
 *   """
 *   try:             # <<<<<<<<<<<<<<
 *     tag, event = _latent_event(c_completion_queue, deadline)
 *   # NOTE(rbellevi): This broad except enables us to clean up resources before
 */
  {
    __Pyx_PyThreadState_declare
    __Pyx_PyThreadState_assign
    __Pyx_ExceptionSave(&__pyx_t_1, &__pyx_t_2, &__pyx_t_3);
    __Pyx_XGOTREF(__pyx_t_1);
    __Pyx_XGOTREF(__pyx_t_2);
    __Pyx_XGOTREF(__pyx_t_3);
    /*try:*/ {

      /* "src/python/grpcio/grpc/_cython/_cygrpc/channel.pyx.pxi":163
 *   """
 *   try:
 *     tag, event = _latent_event(c_completion_queue, deadline)             # <<<<<<<<<<<<<<
 *   # NOTE(rbellevi): This broad except enables us to clean up resources before
 *   # propagating any exceptions raised by signal handlers to the application.
 */
      __pyx_t_4 = __pyx_f_4grpc_7_cython_6cygrpc__latent_event(__pyx_v_c_completion_queue, __pyx_v_deadline); if (unlikely(!__pyx_t_4)) __PYX_ERR(12, 163, __pyx_L3_error)
      __Pyx_GOTREF(__pyx_t_4);
      if ((likely(PyTuple_CheckExact(__pyx_t_4))) || (PyList_CheckExact(__pyx_t_4))) {
        PyObject* sequence = __pyx_t_4;
        Py_ssize_t size = __Pyx_PySequence_SIZE(sequence);
        if (unlikely(size != 2)) {
          if (size > 2) __Pyx_RaiseTooManyValuesError(2);
          else if (size >= 0) __Pyx_RaiseNeedMoreValuesError(size);
          __PYX_ERR(12, 163, __pyx_L3_error)
        }
        #if CYTHON_ASSUME_SAFE_MACROS && !CYTHON_AVOID_BORROWED_REFS
        if (likely(PyTuple_CheckExact(sequence))) {
          __pyx_t_5 = PyTuple_GET_ITEM(sequence, 0); 
          __pyx_t_6 = PyTuple_GET_ITEM(sequence, 1); 
        } else {
          __pyx_t_5 = PyList_GET_ITEM(sequence, 0); 
          __pyx_t_6 = PyList_GET_ITEM(sequence, 1); 
        }
        __Pyx_INCREF(__pyx_t_5);
        __Pyx_INCREF(__pyx_t_6);
        #else
        __pyx_t_5 = PySequence_ITEM(sequence, 0); if (unlikely(!__pyx_t_5)) __PYX_ERR(12, 163, __pyx_L3_error)
        __Pyx_GOTREF(__pyx_t_5);
        __pyx_t_6 = PySequence_ITEM(sequence, 1); if (unlikely(!__pyx_t_6)) __PYX_ERR(12, 163, __pyx_L3_error)
        __Pyx_GOTREF(__pyx_t_6);
        #endif
        __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
      } else {
        Py_ssize_t index = -1;
        __pyx_t_7 = PyObject_GetIter(__pyx_t_4); if (unlikely(!__pyx_t_7)) __PYX_ERR(12, 163, __pyx_L3_error)
        __Pyx_GOTREF(__pyx_t_7);
        __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
        __pyx_t_8 = Py_TYPE(__pyx_t_7)->tp_iternext;
        index = 0; __pyx_t_5 = __pyx_t_8(__pyx_t_7); if (unlikely(!__pyx_t_5)) goto __pyx_L9_unpacking_failed;
        __Pyx_GOTREF(__pyx_t_5);
        index = 1; __pyx_t_6 = __pyx_t_8(__pyx_t_7); if (unlikely(!__pyx_t_6)) goto __pyx_L9_unpacking_failed;
        __Pyx_GOTREF(__pyx_t_6);
        if (__Pyx_IternextUnpackEndCheck(__pyx_t_8(__pyx_t_7), 2) < 0) __PYX_ERR(12, 163, __pyx_L3_error)
        __pyx_t_8 = NULL;
        __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
        goto __pyx_L10_unpacking_done;
        __pyx_L9_unpacking_failed:;
        __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
        __pyx_t_8 = NULL;
        if (__Pyx_IterFinish() == 0) __Pyx_RaiseNeedMoreValuesError(index);
        __PYX_ERR(12, 163, __pyx_L3_error)
        __pyx_L10_unpacking_done:;
      }
      __pyx_v_tag = __pyx_t_5;
      __pyx_t_5 = 0;
      __pyx_v_event = __pyx_t_6;
      __pyx_t_6 = 0;

      /* "src/python/grpcio/grpc/_cython/_cygrpc/channel.pyx.pxi":162
 *     deadline: The point after which the RPC will time out.
 *   """
 *   try:             # <<<<<<<<<<<<<<
 *     tag, event = _latent_event(c_completion_queue, deadline)
 *   # NOTE(rbellevi): This broad except enables us to clean up resources before
 */
    }

    /* "src/python/grpcio/grpc/_cython/_cygrpc/channel.pyx.pxi":171
 *     raise
 *   else:
 *     with channel_state.condition:             # <<<<<<<<<<<<<<
 *       on_success(tag)
 *       channel_state.condition.notify_all()
 */
    /*else:*/ {
      /*with:*/ {
        __pyx_t_9 = __Pyx_PyObject_LookupSpecial(__pyx_v_channel_state->condition, __pyx_n_s_exit); if (unlikely(!__pyx_t_9)) __PYX_ERR(12, 171, __pyx_L5_except_error)
        __Pyx_GOTREF(__pyx_t_9);
        __pyx_t_6 = __Pyx_PyObject_LookupSpecial(__pyx_v_channel_state->condition, __pyx_n_s_enter); if (unlikely(!__pyx_t_6)) __PYX_ERR(12, 171, __pyx_L11_error)
        __Pyx_GOTREF(__pyx_t_6);
        __pyx_t_5 = NULL;
        if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_6))) {
          __pyx_t_5 = PyMethod_GET_SELF(__pyx_t_6);
          if (likely(__pyx_t_5)) {
            PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_6);
            __Pyx_INCREF(__pyx_t_5);
            __Pyx_INCREF(function);
            __Pyx_DECREF_SET(__pyx_t_6, function);
          }
        }
        __pyx_t_4 = (__pyx_t_5) ? __Pyx_PyObject_CallOneArg(__pyx_t_6, __pyx_t_5) : __Pyx_PyObject_CallNoArg(__pyx_t_6);
        __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0;
        if (unlikely(!__pyx_t_4)) __PYX_ERR(12, 171, __pyx_L11_error)
        __Pyx_GOTREF(__pyx_t_4);
        __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
        __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
        /*try:*/ {
          {
            __Pyx_PyThreadState_declare
            __Pyx_PyThreadState_assign
            __Pyx_ExceptionSave(&__pyx_t_10, &__pyx_t_11, &__pyx_t_12);
            __Pyx_XGOTREF(__pyx_t_10);
            __Pyx_XGOTREF(__pyx_t_11);
            __Pyx_XGOTREF(__pyx_t_12);
            /*try:*/ {

              /* "src/python/grpcio/grpc/_cython/_cygrpc/channel.pyx.pxi":172
 *   else:
 *     with channel_state.condition:
 *       on_success(tag)             # <<<<<<<<<<<<<<
 *       channel_state.condition.notify_all()
 *     return event
 */
              __Pyx_INCREF(__pyx_v_on_success);
              __pyx_t_6 = __pyx_v_on_success; __pyx_t_5 = NULL;
              if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_6))) {
                __pyx_t_5 = PyMethod_GET_SELF(__pyx_t_6);
                if (likely(__pyx_t_5)) {
                  PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_6);
                  __Pyx_INCREF(__pyx_t_5);
                  __Pyx_INCREF(function);
                  __Pyx_DECREF_SET(__pyx_t_6, function);
                }
              }
              __pyx_t_4 = (__pyx_t_5) ? __Pyx_PyObject_Call2Args(__pyx_t_6, __pyx_t_5, __pyx_v_tag) : __Pyx_PyObject_CallOneArg(__pyx_t_6, __pyx_v_tag);
              __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0;
              if (unlikely(!__pyx_t_4)) __PYX_ERR(12, 172, __pyx_L15_error)
              __Pyx_GOTREF(__pyx_t_4);
              __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
              __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;

              /* "src/python/grpcio/grpc/_cython/_cygrpc/channel.pyx.pxi":173
 *     with channel_state.condition:
 *       on_success(tag)
 *       channel_state.condition.notify_all()             # <<<<<<<<<<<<<<
 *     return event
 * 
 */
              __pyx_t_6 = __Pyx_PyObject_GetAttrStr(__pyx_v_channel_state->condition, __pyx_n_s_notify_all); if (unlikely(!__pyx_t_6)) __PYX_ERR(12, 173, __pyx_L15_error)
              __Pyx_GOTREF(__pyx_t_6);
              __pyx_t_5 = NULL;
              if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_6))) {
                __pyx_t_5 = PyMethod_GET_SELF(__pyx_t_6);
                if (likely(__pyx_t_5)) {
                  PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_6);
                  __Pyx_INCREF(__pyx_t_5);
                  __Pyx_INCREF(function);
                  __Pyx_DECREF_SET(__pyx_t_6, function);
                }
              }
              __pyx_t_4 = (__pyx_t_5) ? __Pyx_PyObject_CallOneArg(__pyx_t_6, __pyx_t_5) : __Pyx_PyObject_CallNoArg(__pyx_t_6);
              __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0;
              if (unlikely(!__pyx_t_4)) __PYX_ERR(12, 173, __pyx_L15_error)
              __Pyx_GOTREF(__pyx_t_4);
              __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
              __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;

              /* "src/python/grpcio/grpc/_cython/_cygrpc/channel.pyx.pxi":171
 *     raise
 *   else:
 *     with channel_state.condition:             # <<<<<<<<<<<<<<
 *       on_success(tag)
 *       channel_state.condition.notify_all()
 */
            }
            __Pyx_XDECREF(__pyx_t_10); __pyx_t_10 = 0;
            __Pyx_XDECREF(__pyx_t_11); __pyx_t_11 = 0;
            __Pyx_XDECREF(__pyx_t_12); __pyx_t_12 = 0;
            goto __pyx_L20_try_end;
            __pyx_L15_error:;
            __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0;
            __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0;
            __Pyx_XDECREF(__pyx_t_6); __pyx_t_6 = 0;
            __Pyx_XDECREF(__pyx_t_7); __pyx_t_7 = 0;
            /*except:*/ {
              __Pyx_AddTraceback("grpc._cython.cygrpc._next_call_event", __pyx_clineno, __pyx_lineno, __pyx_filename);
              if (__Pyx_GetException(&__pyx_t_4, &__pyx_t_6, &__pyx_t_5) < 0) __PYX_ERR(12, 171, __pyx_L17_except_error)
              __Pyx_GOTREF(__pyx_t_4);
              __Pyx_GOTREF(__pyx_t_6);
              __Pyx_GOTREF(__pyx_t_5);
              __pyx_t_7 = PyTuple_Pack(3, __pyx_t_4, __pyx_t_6, __pyx_t_5); if (unlikely(!__pyx_t_7)) __PYX_ERR(12, 171, __pyx_L17_except_error)
              __Pyx_GOTREF(__pyx_t_7);
              __pyx_t_13 = __Pyx_PyObject_Call(__pyx_t_9, __pyx_t_7, NULL);
              __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0;
              __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
              if (unlikely(!__pyx_t_13)) __PYX_ERR(12, 171, __pyx_L17_except_error)
              __Pyx_GOTREF(__pyx_t_13);
              __pyx_t_14 = __Pyx_PyObject_IsTrue(__pyx_t_13);
              __Pyx_DECREF(__pyx_t_13); __pyx_t_13 = 0;
              if (__pyx_t_14 < 0) __PYX_ERR(12, 171, __pyx_L17_except_error)
              __pyx_t_15 = ((!(__pyx_t_14 != 0)) != 0);
              if (__pyx_t_15) {
                __Pyx_GIVEREF(__pyx_t_4);
                __Pyx_GIVEREF(__pyx_t_6);
                __Pyx_XGIVEREF(__pyx_t_5);
                __Pyx_ErrRestoreWithState(__pyx_t_4, __pyx_t_6, __pyx_t_5);
                __pyx_t_4 = 0; __pyx_t_6 = 0; __pyx_t_5 = 0; 
                __PYX_ERR(12, 171, __pyx_L17_except_error)
              }
              __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0;
              __Pyx_XDECREF(__pyx_t_6); __pyx_t_6 = 0;
              __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0;
              goto __pyx_L16_exception_handled;
            }
            __pyx_L17_except_error:;
            __Pyx_XGIVEREF(__pyx_t_10);
            __Pyx_XGIVEREF(__pyx_t_11);
            __Pyx_XGIVEREF(__pyx_t_12);
            __Pyx_ExceptionReset(__pyx_t_10, __pyx_t_11, __pyx_t_12);
            goto __pyx_L5_except_error;
            __pyx_L16_exception_handled:;
            __Pyx_XGIVEREF(__pyx_t_10);
            __Pyx_XGIVEREF(__pyx_t_11);
            __Pyx_XGIVEREF(__pyx_t_12);
            __Pyx_ExceptionReset(__pyx_t_10, __pyx_t_11, __pyx_t_12);
            __pyx_L20_try_end:;
          }
        }
        /*finally:*/ {
          /*normal exit:*/{
            if (__pyx_t_9) {
              __pyx_t_12 = __Pyx_PyObject_Call(__pyx_t_9, __pyx_tuple__17, NULL);
              __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0;
              if (unlikely(!__pyx_t_12)) __PYX_ERR(12, 171, __pyx_L5_except_error)
              __Pyx_GOTREF(__pyx_t_12);
              __Pyx_DECREF(__pyx_t_12); __pyx_t_12 = 0;
            }
            goto __pyx_L14;
          }
          __pyx_L14:;
        }
        goto __pyx_L24;
        __pyx_L11_error:;
        __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0;
        goto __pyx_L5_except_error;
        __pyx_L24:;
      }

      /* "src/python/grpcio/grpc/_cython/_cygrpc/channel.pyx.pxi":174
 *       on_success(tag)
 *       channel_state.condition.notify_all()
 *     return event             # <<<<<<<<<<<<<<
 * 
 * 
 */
      __Pyx_XDECREF(__pyx_r);
      __Pyx_INCREF(__pyx_v_event);
      __pyx_r = __pyx_v_event;
      goto __pyx_L6_except_return;
    }
    __pyx_L3_error:;
    __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0;
    __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0;
    __Pyx_XDECREF(__pyx_t_6); __pyx_t_6 = 0;
    __Pyx_XDECREF(__pyx_t_7); __pyx_t_7 = 0;

    /* "src/python/grpcio/grpc/_cython/_cygrpc/channel.pyx.pxi":166
 *   # NOTE(rbellevi): This broad except enables us to clean up resources before
 *   # propagating any exceptions raised by signal handlers to the application.
 *   except:             # <<<<<<<<<<<<<<
 *     if on_failure is not None:
 *       on_failure()
 */
    /*except:*/ {
      __Pyx_AddTraceback("grpc._cython.cygrpc._next_call_event", __pyx_clineno, __pyx_lineno, __pyx_filename);
      if (__Pyx_GetException(&__pyx_t_5, &__pyx_t_6, &__pyx_t_4) < 0) __PYX_ERR(12, 166, __pyx_L5_except_error)
      __Pyx_GOTREF(__pyx_t_5);
      __Pyx_GOTREF(__pyx_t_6);
      __Pyx_GOTREF(__pyx_t_4);

      /* "src/python/grpcio/grpc/_cython/_cygrpc/channel.pyx.pxi":167
 *   # propagating any exceptions raised by signal handlers to the application.
 *   except:
 *     if on_failure is not None:             # <<<<<<<<<<<<<<
 *       on_failure()
 *     raise
 */
      __pyx_t_15 = (__pyx_v_on_failure != Py_None);
      __pyx_t_14 = (__pyx_t_15 != 0);
      if (__pyx_t_14) {

        /* "src/python/grpcio/grpc/_cython/_cygrpc/channel.pyx.pxi":168
 *   except:
 *     if on_failure is not None:
 *       on_failure()             # <<<<<<<<<<<<<<
 *     raise
 *   else:
 */
        __Pyx_INCREF(__pyx_v_on_failure);
        __pyx_t_16 = __pyx_v_on_failure; __pyx_t_17 = NULL;
        if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_16))) {
          __pyx_t_17 = PyMethod_GET_SELF(__pyx_t_16);
          if (likely(__pyx_t_17)) {
            PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_16);
            __Pyx_INCREF(__pyx_t_17);
            __Pyx_INCREF(function);
            __Pyx_DECREF_SET(__pyx_t_16, function);
          }
        }
        __pyx_t_7 = (__pyx_t_17) ? __Pyx_PyObject_CallOneArg(__pyx_t_16, __pyx_t_17) : __Pyx_PyObject_CallNoArg(__pyx_t_16);
        __Pyx_XDECREF(__pyx_t_17); __pyx_t_17 = 0;
        if (unlikely(!__pyx_t_7)) __PYX_ERR(12, 168, __pyx_L5_except_error)
        __Pyx_GOTREF(__pyx_t_7);
        __Pyx_DECREF(__pyx_t_16); __pyx_t_16 = 0;
        __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;

        /* "src/python/grpcio/grpc/_cython/_cygrpc/channel.pyx.pxi":167
 *   # propagating any exceptions raised by signal handlers to the application.
 *   except:
 *     if on_failure is not None:             # <<<<<<<<<<<<<<
 *       on_failure()
 *     raise
 */
      }

      /* "src/python/grpcio/grpc/_cython/_cygrpc/channel.pyx.pxi":169
 *     if on_failure is not None:
 *       on_failure()
 *     raise             # <<<<<<<<<<<<<<
 *   else:
 *     with channel_state.condition:
 */
      __Pyx_GIVEREF(__pyx_t_5);
      __Pyx_GIVEREF(__pyx_t_6);
      __Pyx_XGIVEREF(__pyx_t_4);
      __Pyx_ErrRestoreWithState(__pyx_t_5, __pyx_t_6, __pyx_t_4);
      __pyx_t_5 = 0; __pyx_t_6 = 0; __pyx_t_4 = 0; 
      __PYX_ERR(12, 169, __pyx_L5_except_error)
    }
    __pyx_L5_except_error:;

    /* "src/python/grpcio/grpc/_cython/_cygrpc/channel.pyx.pxi":162
 *     deadline: The point after which the RPC will time out.
 *   """
 *   try:             # <<<<<<<<<<<<<<
 *     tag, event = _latent_event(c_completion_queue, deadline)
 *   # NOTE(rbellevi): This broad except enables us to clean up resources before
 */
    __Pyx_XGIVEREF(__pyx_t_1);
    __Pyx_XGIVEREF(__pyx_t_2);
    __Pyx_XGIVEREF(__pyx_t_3);
    __Pyx_ExceptionReset(__pyx_t_1, __pyx_t_2, __pyx_t_3);
    goto __pyx_L1_error;
    __pyx_L6_except_return:;
    __Pyx_XGIVEREF(__pyx_t_1);
    __Pyx_XGIVEREF(__pyx_t_2);
    __Pyx_XGIVEREF(__pyx_t_3);
    __Pyx_ExceptionReset(__pyx_t_1, __pyx_t_2, __pyx_t_3);
    goto __pyx_L0;
  }

  /* "src/python/grpcio/grpc/_cython/_cygrpc/channel.pyx.pxi":143
 * 
 * 
 * cdef _next_call_event(             # <<<<<<<<<<<<<<
 *     _ChannelState channel_state, grpc_completion_queue *c_completion_queue,
 *     on_success, on_failure, deadline):
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_4);
  __Pyx_XDECREF(__pyx_t_5);
  __Pyx_XDECREF(__pyx_t_6);
  __Pyx_XDECREF(__pyx_t_7);
  __Pyx_XDECREF(__pyx_t_16);
  __Pyx_XDECREF(__pyx_t_17);
  __Pyx_AddTraceback("grpc._cython.cygrpc._next_call_event", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = 0;
  __pyx_L0:;
  __Pyx_XDECREF(__pyx_v_tag);
  __Pyx_XDECREF(__pyx_v_event);
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "src/python/grpcio/grpc/_cython/_cygrpc/channel.pyx.pxi":178
 * 
 * # TODO(https://github.com/grpc/grpc/issues/14569): This could be a lot simpler.
 * cdef void _call(             # <<<<<<<<<<<<<<
 *     _ChannelState channel_state, _CallState call_state,
 *     grpc_completion_queue *c_completion_queue, on_success, int flags, method,
 */

static void __pyx_f_4grpc_7_cython_6cygrpc__call(struct __pyx_obj_4grpc_7_cython_6cygrpc__ChannelState *__pyx_v_channel_state, struct __pyx_obj_4grpc_7_cython_6cygrpc__CallState *__pyx_v_call_state, grpc_completion_queue *__pyx_v_c_completion_queue, PyObject *__pyx_v_on_success, int __pyx_v_flags, PyObject *__pyx_v_method, PyObject *__pyx_v_host, PyObject *__pyx_v_deadline, struct __pyx_obj_4grpc_7_cython_6cygrpc_CallCredentials *__pyx_v_credentials, PyObject *__pyx_v_operationses_and_user_tags, PyObject *__pyx_v_metadata, PyObject *__pyx_v_context) {
  grpc_slice __pyx_v_method_slice;
  grpc_slice __pyx_v_host_slice;
  grpc_slice *__pyx_v_host_slice_ptr;
  grpc_call_credentials *__pyx_v_c_call_credentials;
  grpc_call_error __pyx_v_c_call_error;
  PyObject *__pyx_v_started_tags = NULL;
  PyObject *__pyx_v_operations = NULL;
  PyObject *__pyx_v_user_tag = NULL;
  PyObject *__pyx_v_tag = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  PyObject *__pyx_t_2 = NULL;
  PyObject *__pyx_t_3 = NULL;
  PyObject *__pyx_t_4 = NULL;
  PyObject *__pyx_t_5 = NULL;
  PyObject *__pyx_t_6 = NULL;
  PyObject *__pyx_t_7 = NULL;
  int __pyx_t_8;
  int __pyx_t_9;
  gpr_timespec __pyx_t_10;
  int __pyx_t_11;
  PyObject *__pyx_t_12 = NULL;
  grpc_call_credentials *__pyx_t_13;
  Py_ssize_t __pyx_t_14;
  PyObject *(*__pyx_t_15)(PyObject *);
  PyObject *__pyx_t_16 = NULL;
  PyObject *(*__pyx_t_17)(PyObject *);
  grpc_call_error __pyx_t_18;
  int __pyx_t_19;
  PyObject *__pyx_t_20 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("_call", 0);

  /* "src/python/grpcio/grpc/_cython/_cygrpc/channel.pyx.pxi":218
 *   cdef tuple error_and_wrapper_tag
 *   cdef _BatchOperationTag wrapper_tag
 *   with channel_state.condition:             # <<<<<<<<<<<<<<
 *     if channel_state.open:
 *       method_slice = _slice_from_bytes(method)
 */
  /*with:*/ {
    __pyx_t_1 = __Pyx_PyObject_LookupSpecial(__pyx_v_channel_state->condition, __pyx_n_s_exit); if (unlikely(!__pyx_t_1)) __PYX_ERR(12, 218, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_1);
    __pyx_t_3 = __Pyx_PyObject_LookupSpecial(__pyx_v_channel_state->condition, __pyx_n_s_enter); if (unlikely(!__pyx_t_3)) __PYX_ERR(12, 218, __pyx_L3_error)
    __Pyx_GOTREF(__pyx_t_3);
    __pyx_t_4 = NULL;
    if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_3))) {
      __pyx_t_4 = PyMethod_GET_SELF(__pyx_t_3);
      if (likely(__pyx_t_4)) {
        PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_3);
        __Pyx_INCREF(__pyx_t_4);
        __Pyx_INCREF(function);
        __Pyx_DECREF_SET(__pyx_t_3, function);
      }
    }
    __pyx_t_2 = (__pyx_t_4) ? __Pyx_PyObject_CallOneArg(__pyx_t_3, __pyx_t_4) : __Pyx_PyObject_CallNoArg(__pyx_t_3);
    __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0;
    if (unlikely(!__pyx_t_2)) __PYX_ERR(12, 218, __pyx_L3_error)
    __Pyx_GOTREF(__pyx_t_2);
    __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
    __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
    /*try:*/ {
      {
        __Pyx_PyThreadState_declare
        __Pyx_PyThreadState_assign
        __Pyx_ExceptionSave(&__pyx_t_5, &__pyx_t_6, &__pyx_t_7);
        __Pyx_XGOTREF(__pyx_t_5);
        __Pyx_XGOTREF(__pyx_t_6);
        __Pyx_XGOTREF(__pyx_t_7);
        /*try:*/ {

          /* "src/python/grpcio/grpc/_cython/_cygrpc/channel.pyx.pxi":219
 *   cdef _BatchOperationTag wrapper_tag
 *   with channel_state.condition:
 *     if channel_state.open:             # <<<<<<<<<<<<<<
 *       method_slice = _slice_from_bytes(method)
 *       if host is None:
 */
          __pyx_t_8 = __Pyx_PyObject_IsTrue(__pyx_v_channel_state->open); if (unlikely(__pyx_t_8 < 0)) __PYX_ERR(12, 219, __pyx_L7_error)
          if (likely(__pyx_t_8)) {

            /* "src/python/grpcio/grpc/_cython/_cygrpc/channel.pyx.pxi":220
 *   with channel_state.condition:
 *     if channel_state.open:
 *       method_slice = _slice_from_bytes(method)             # <<<<<<<<<<<<<<
 *       if host is None:
 *         host_slice_ptr = NULL
 */
            if (!(likely(PyBytes_CheckExact(__pyx_v_method))||((__pyx_v_method) == Py_None)||(PyErr_Format(PyExc_TypeError, "Expected %.16s, got %.200s", "bytes", Py_TYPE(__pyx_v_method)->tp_name), 0))) __PYX_ERR(12, 220, __pyx_L7_error)
            __pyx_v_method_slice = __pyx_f_4grpc_7_cython_6cygrpc__slice_from_bytes(((PyObject*)__pyx_v_method));

            /* "src/python/grpcio/grpc/_cython/_cygrpc/channel.pyx.pxi":221
 *     if channel_state.open:
 *       method_slice = _slice_from_bytes(method)
 *       if host is None:             # <<<<<<<<<<<<<<
 *         host_slice_ptr = NULL
 *       else:
 */
            __pyx_t_8 = (__pyx_v_host == Py_None);
            __pyx_t_9 = (__pyx_t_8 != 0);
            if (__pyx_t_9) {

              /* "src/python/grpcio/grpc/_cython/_cygrpc/channel.pyx.pxi":222
 *       method_slice = _slice_from_bytes(method)
 *       if host is None:
 *         host_slice_ptr = NULL             # <<<<<<<<<<<<<<
 *       else:
 *         host_slice = _slice_from_bytes(host)
 */
              __pyx_v_host_slice_ptr = NULL;

              /* "src/python/grpcio/grpc/_cython/_cygrpc/channel.pyx.pxi":221
 *     if channel_state.open:
 *       method_slice = _slice_from_bytes(method)
 *       if host is None:             # <<<<<<<<<<<<<<
 *         host_slice_ptr = NULL
 *       else:
 */
              goto __pyx_L14;
            }

            /* "src/python/grpcio/grpc/_cython/_cygrpc/channel.pyx.pxi":224
 *         host_slice_ptr = NULL
 *       else:
 *         host_slice = _slice_from_bytes(host)             # <<<<<<<<<<<<<<
 *         host_slice_ptr = &host_slice
 *       call_state.c_call = grpc_channel_create_call(
 */
            /*else*/ {
              if (!(likely(PyBytes_CheckExact(__pyx_v_host))||((__pyx_v_host) == Py_None)||(PyErr_Format(PyExc_TypeError, "Expected %.16s, got %.200s", "bytes", Py_TYPE(__pyx_v_host)->tp_name), 0))) __PYX_ERR(12, 224, __pyx_L7_error)
              __pyx_v_host_slice = __pyx_f_4grpc_7_cython_6cygrpc__slice_from_bytes(((PyObject*)__pyx_v_host));

              /* "src/python/grpcio/grpc/_cython/_cygrpc/channel.pyx.pxi":225
 *       else:
 *         host_slice = _slice_from_bytes(host)
 *         host_slice_ptr = &host_slice             # <<<<<<<<<<<<<<
 *       call_state.c_call = grpc_channel_create_call(
 *           channel_state.c_channel, NULL, flags,
 */
              __pyx_v_host_slice_ptr = (&__pyx_v_host_slice);
            }
            __pyx_L14:;

            /* "src/python/grpcio/grpc/_cython/_cygrpc/channel.pyx.pxi":229
 *           channel_state.c_channel, NULL, flags,
 *           c_completion_queue, method_slice, host_slice_ptr,
 *           _timespec_from_time(deadline), NULL)             # <<<<<<<<<<<<<<
 *       grpc_slice_unref(method_slice)
 *       if host_slice_ptr:
 */
            __pyx_t_10 = __pyx_f_4grpc_7_cython_6cygrpc__timespec_from_time(__pyx_v_deadline); if (unlikely(PyErr_Occurred())) __PYX_ERR(12, 229, __pyx_L7_error)

            /* "src/python/grpcio/grpc/_cython/_cygrpc/channel.pyx.pxi":226
 *         host_slice = _slice_from_bytes(host)
 *         host_slice_ptr = &host_slice
 *       call_state.c_call = grpc_channel_create_call(             # <<<<<<<<<<<<<<
 *           channel_state.c_channel, NULL, flags,
 *           c_completion_queue, method_slice, host_slice_ptr,
 */
            __pyx_v_call_state->c_call = grpc_channel_create_call(__pyx_v_channel_state->c_channel, NULL, __pyx_v_flags, __pyx_v_c_completion_queue, __pyx_v_method_slice, __pyx_v_host_slice_ptr, __pyx_t_10, NULL);

            /* "src/python/grpcio/grpc/_cython/_cygrpc/channel.pyx.pxi":230
 *           c_completion_queue, method_slice, host_slice_ptr,
 *           _timespec_from_time(deadline), NULL)
 *       grpc_slice_unref(method_slice)             # <<<<<<<<<<<<<<
 *       if host_slice_ptr:
 *         grpc_slice_unref(host_slice)
 */
            grpc_slice_unref(__pyx_v_method_slice);

            /* "src/python/grpcio/grpc/_cython/_cygrpc/channel.pyx.pxi":231
 *           _timespec_from_time(deadline), NULL)
 *       grpc_slice_unref(method_slice)
 *       if host_slice_ptr:             # <<<<<<<<<<<<<<
 *         grpc_slice_unref(host_slice)
 *       if context is not None:
 */
            __pyx_t_9 = (__pyx_v_host_slice_ptr != 0);
            if (__pyx_t_9) {

              /* "src/python/grpcio/grpc/_cython/_cygrpc/channel.pyx.pxi":232
 *       grpc_slice_unref(method_slice)
 *       if host_slice_ptr:
 *         grpc_slice_unref(host_slice)             # <<<<<<<<<<<<<<
 *       if context is not None:
 *         set_census_context_on_call(call_state, context)
 */
              grpc_slice_unref(__pyx_v_host_slice);

              /* "src/python/grpcio/grpc/_cython/_cygrpc/channel.pyx.pxi":231
 *           _timespec_from_time(deadline), NULL)
 *       grpc_slice_unref(method_slice)
 *       if host_slice_ptr:             # <<<<<<<<<<<<<<
 *         grpc_slice_unref(host_slice)
 *       if context is not None:
 */
            }

            /* "src/python/grpcio/grpc/_cython/_cygrpc/channel.pyx.pxi":233
 *       if host_slice_ptr:
 *         grpc_slice_unref(host_slice)
 *       if context is not None:             # <<<<<<<<<<<<<<
 *         set_census_context_on_call(call_state, context)
 *       if credentials is not None:
 */
            __pyx_t_9 = (__pyx_v_context != Py_None);
            __pyx_t_8 = (__pyx_t_9 != 0);
            if (__pyx_t_8) {

              /* "src/python/grpcio/grpc/_cython/_cygrpc/channel.pyx.pxi":234
 *         grpc_slice_unref(host_slice)
 *       if context is not None:
 *         set_census_context_on_call(call_state, context)             # <<<<<<<<<<<<<<
 *       if credentials is not None:
 *         c_call_credentials = credentials.c()
 */
              __Pyx_GetModuleGlobalName(__pyx_t_3, __pyx_n_s_set_census_context_on_call); if (unlikely(!__pyx_t_3)) __PYX_ERR(12, 234, __pyx_L7_error)
              __Pyx_GOTREF(__pyx_t_3);
              __pyx_t_4 = NULL;
              __pyx_t_11 = 0;
              if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_3))) {
                __pyx_t_4 = PyMethod_GET_SELF(__pyx_t_3);
                if (likely(__pyx_t_4)) {
                  PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_3);
                  __Pyx_INCREF(__pyx_t_4);
                  __Pyx_INCREF(function);
                  __Pyx_DECREF_SET(__pyx_t_3, function);
                  __pyx_t_11 = 1;
                }
              }
              #if CYTHON_FAST_PYCALL
              if (PyFunction_Check(__pyx_t_3)) {
                PyObject *__pyx_temp[3] = {__pyx_t_4, ((PyObject *)__pyx_v_call_state), __pyx_v_context};
                __pyx_t_2 = __Pyx_PyFunction_FastCall(__pyx_t_3, __pyx_temp+1-__pyx_t_11, 2+__pyx_t_11); if (unlikely(!__pyx_t_2)) __PYX_ERR(12, 234, __pyx_L7_error)
                __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0;
                __Pyx_GOTREF(__pyx_t_2);
              } else
              #endif
              #if CYTHON_FAST_PYCCALL
              if (__Pyx_PyFastCFunction_Check(__pyx_t_3)) {
                PyObject *__pyx_temp[3] = {__pyx_t_4, ((PyObject *)__pyx_v_call_state), __pyx_v_context};
                __pyx_t_2 = __Pyx_PyCFunction_FastCall(__pyx_t_3, __pyx_temp+1-__pyx_t_11, 2+__pyx_t_11); if (unlikely(!__pyx_t_2)) __PYX_ERR(12, 234, __pyx_L7_error)
                __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0;
                __Pyx_GOTREF(__pyx_t_2);
              } else
              #endif
              {
                __pyx_t_12 = PyTuple_New(2+__pyx_t_11); if (unlikely(!__pyx_t_12)) __PYX_ERR(12, 234, __pyx_L7_error)
                __Pyx_GOTREF(__pyx_t_12);
                if (__pyx_t_4) {
                  __Pyx_GIVEREF(__pyx_t_4); PyTuple_SET_ITEM(__pyx_t_12, 0, __pyx_t_4); __pyx_t_4 = NULL;
                }
                __Pyx_INCREF(((PyObject *)__pyx_v_call_state));
                __Pyx_GIVEREF(((PyObject *)__pyx_v_call_state));
                PyTuple_SET_ITEM(__pyx_t_12, 0+__pyx_t_11, ((PyObject *)__pyx_v_call_state));
                __Pyx_INCREF(__pyx_v_context);
                __Pyx_GIVEREF(__pyx_v_context);
                PyTuple_SET_ITEM(__pyx_t_12, 1+__pyx_t_11, __pyx_v_context);
                __pyx_t_2 = __Pyx_PyObject_Call(__pyx_t_3, __pyx_t_12, NULL); if (unlikely(!__pyx_t_2)) __PYX_ERR(12, 234, __pyx_L7_error)
                __Pyx_GOTREF(__pyx_t_2);
                __Pyx_DECREF(__pyx_t_12); __pyx_t_12 = 0;
              }
              __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
              __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;

              /* "src/python/grpcio/grpc/_cython/_cygrpc/channel.pyx.pxi":233
 *       if host_slice_ptr:
 *         grpc_slice_unref(host_slice)
 *       if context is not None:             # <<<<<<<<<<<<<<
 *         set_census_context_on_call(call_state, context)
 *       if credentials is not None:
 */
            }

            /* "src/python/grpcio/grpc/_cython/_cygrpc/channel.pyx.pxi":235
 *       if context is not None:
 *         set_census_context_on_call(call_state, context)
 *       if credentials is not None:             # <<<<<<<<<<<<<<
 *         c_call_credentials = credentials.c()
 *         c_call_error = grpc_call_set_credentials(
 */
            __pyx_t_8 = (((PyObject *)__pyx_v_credentials) != Py_None);
            __pyx_t_9 = (__pyx_t_8 != 0);
            if (__pyx_t_9) {

              /* "src/python/grpcio/grpc/_cython/_cygrpc/channel.pyx.pxi":236
 *         set_census_context_on_call(call_state, context)
 *       if credentials is not None:
 *         c_call_credentials = credentials.c()             # <<<<<<<<<<<<<<
 *         c_call_error = grpc_call_set_credentials(
 *             call_state.c_call, c_call_credentials)
 */
              __pyx_t_13 = ((struct __pyx_vtabstruct_4grpc_7_cython_6cygrpc_CallCredentials *)__pyx_v_credentials->__pyx_vtab)->c(__pyx_v_credentials); if (unlikely(PyErr_Occurred())) __PYX_ERR(12, 236, __pyx_L7_error)
              __pyx_v_c_call_credentials = __pyx_t_13;

              /* "src/python/grpcio/grpc/_cython/_cygrpc/channel.pyx.pxi":237
 *       if credentials is not None:
 *         c_call_credentials = credentials.c()
 *         c_call_error = grpc_call_set_credentials(             # <<<<<<<<<<<<<<
 *             call_state.c_call, c_call_credentials)
 *         grpc_call_credentials_release(c_call_credentials)
 */
              __pyx_v_c_call_error = grpc_call_set_credentials(__pyx_v_call_state->c_call, __pyx_v_c_call_credentials);

              /* "src/python/grpcio/grpc/_cython/_cygrpc/channel.pyx.pxi":239
 *         c_call_error = grpc_call_set_credentials(
 *             call_state.c_call, c_call_credentials)
 *         grpc_call_credentials_release(c_call_credentials)             # <<<<<<<<<<<<<<
 *         if c_call_error != GRPC_CALL_OK:
 *           grpc_call_unref(call_state.c_call)
 */
              grpc_call_credentials_release(__pyx_v_c_call_credentials);

              /* "src/python/grpcio/grpc/_cython/_cygrpc/channel.pyx.pxi":240
 *             call_state.c_call, c_call_credentials)
 *         grpc_call_credentials_release(c_call_credentials)
 *         if c_call_error != GRPC_CALL_OK:             # <<<<<<<<<<<<<<
 *           grpc_call_unref(call_state.c_call)
 *           call_state.c_call = NULL
 */
              __pyx_t_9 = ((__pyx_v_c_call_error != GRPC_CALL_OK) != 0);
              if (__pyx_t_9) {

                /* "src/python/grpcio/grpc/_cython/_cygrpc/channel.pyx.pxi":241
 *         grpc_call_credentials_release(c_call_credentials)
 *         if c_call_error != GRPC_CALL_OK:
 *           grpc_call_unref(call_state.c_call)             # <<<<<<<<<<<<<<
 *           call_state.c_call = NULL
 *           _raise_call_error_no_metadata(c_call_error)
 */
                grpc_call_unref(__pyx_v_call_state->c_call);

                /* "src/python/grpcio/grpc/_cython/_cygrpc/channel.pyx.pxi":242
 *         if c_call_error != GRPC_CALL_OK:
 *           grpc_call_unref(call_state.c_call)
 *           call_state.c_call = NULL             # <<<<<<<<<<<<<<
 *           _raise_call_error_no_metadata(c_call_error)
 *       started_tags = set()
 */
                __pyx_v_call_state->c_call = NULL;

                /* "src/python/grpcio/grpc/_cython/_cygrpc/channel.pyx.pxi":243
 *           grpc_call_unref(call_state.c_call)
 *           call_state.c_call = NULL
 *           _raise_call_error_no_metadata(c_call_error)             # <<<<<<<<<<<<<<
 *       started_tags = set()
 *       for operations, user_tag in operationses_and_user_tags:
 */
                __pyx_t_2 = __Pyx_PyInt_From_grpc_call_error(__pyx_v_c_call_error); if (unlikely(!__pyx_t_2)) __PYX_ERR(12, 243, __pyx_L7_error)
                __Pyx_GOTREF(__pyx_t_2);
                __pyx_f_4grpc_7_cython_6cygrpc__raise_call_error_no_metadata(__pyx_t_2); if (unlikely(PyErr_Occurred())) __PYX_ERR(12, 243, __pyx_L7_error)
                __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;

                /* "src/python/grpcio/grpc/_cython/_cygrpc/channel.pyx.pxi":240
 *             call_state.c_call, c_call_credentials)
 *         grpc_call_credentials_release(c_call_credentials)
 *         if c_call_error != GRPC_CALL_OK:             # <<<<<<<<<<<<<<
 *           grpc_call_unref(call_state.c_call)
 *           call_state.c_call = NULL
 */
              }

              /* "src/python/grpcio/grpc/_cython/_cygrpc/channel.pyx.pxi":235
 *       if context is not None:
 *         set_census_context_on_call(call_state, context)
 *       if credentials is not None:             # <<<<<<<<<<<<<<
 *         c_call_credentials = credentials.c()
 *         c_call_error = grpc_call_set_credentials(
 */
            }

            /* "src/python/grpcio/grpc/_cython/_cygrpc/channel.pyx.pxi":244
 *           call_state.c_call = NULL
 *           _raise_call_error_no_metadata(c_call_error)
 *       started_tags = set()             # <<<<<<<<<<<<<<
 *       for operations, user_tag in operationses_and_user_tags:
 *         c_call_error, tag = _operate(call_state.c_call, operations, user_tag)
 */
            __pyx_t_2 = PySet_New(0); if (unlikely(!__pyx_t_2)) __PYX_ERR(12, 244, __pyx_L7_error)
            __Pyx_GOTREF(__pyx_t_2);
            __pyx_v_started_tags = ((PyObject*)__pyx_t_2);
            __pyx_t_2 = 0;

            /* "src/python/grpcio/grpc/_cython/_cygrpc/channel.pyx.pxi":245
 *           _raise_call_error_no_metadata(c_call_error)
 *       started_tags = set()
 *       for operations, user_tag in operationses_and_user_tags:             # <<<<<<<<<<<<<<
 *         c_call_error, tag = _operate(call_state.c_call, operations, user_tag)
 *         if c_call_error == GRPC_CALL_OK:
 */
            if (likely(PyList_CheckExact(__pyx_v_operationses_and_user_tags)) || PyTuple_CheckExact(__pyx_v_operationses_and_user_tags)) {
              __pyx_t_2 = __pyx_v_operationses_and_user_tags; __Pyx_INCREF(__pyx_t_2); __pyx_t_14 = 0;
              __pyx_t_15 = NULL;
            } else {
              __pyx_t_14 = -1; __pyx_t_2 = PyObject_GetIter(__pyx_v_operationses_and_user_tags); if (unlikely(!__pyx_t_2)) __PYX_ERR(12, 245, __pyx_L7_error)
              __Pyx_GOTREF(__pyx_t_2);
              __pyx_t_15 = Py_TYPE(__pyx_t_2)->tp_iternext; if (unlikely(!__pyx_t_15)) __PYX_ERR(12, 245, __pyx_L7_error)
            }
            for (;;) {
              if (likely(!__pyx_t_15)) {
                if (likely(PyList_CheckExact(__pyx_t_2))) {
                  if (__pyx_t_14 >= PyList_GET_SIZE(__pyx_t_2)) break;
                  #if CYTHON_ASSUME_SAFE_MACROS && !CYTHON_AVOID_BORROWED_REFS
                  __pyx_t_3 = PyList_GET_ITEM(__pyx_t_2, __pyx_t_14); __Pyx_INCREF(__pyx_t_3); __pyx_t_14++; if (unlikely(0 < 0)) __PYX_ERR(12, 245, __pyx_L7_error)
                  #else
                  __pyx_t_3 = PySequence_ITEM(__pyx_t_2, __pyx_t_14); __pyx_t_14++; if (unlikely(!__pyx_t_3)) __PYX_ERR(12, 245, __pyx_L7_error)
                  __Pyx_GOTREF(__pyx_t_3);
                  #endif
                } else {
                  if (__pyx_t_14 >= PyTuple_GET_SIZE(__pyx_t_2)) break;
                  #if CYTHON_ASSUME_SAFE_MACROS && !CYTHON_AVOID_BORROWED_REFS
                  __pyx_t_3 = PyTuple_GET_ITEM(__pyx_t_2, __pyx_t_14); __Pyx_INCREF(__pyx_t_3); __pyx_t_14++; if (unlikely(0 < 0)) __PYX_ERR(12, 245, __pyx_L7_error)
                  #else
                  __pyx_t_3 = PySequence_ITEM(__pyx_t_2, __pyx_t_14); __pyx_t_14++; if (unlikely(!__pyx_t_3)) __PYX_ERR(12, 245, __pyx_L7_error)
                  __Pyx_GOTREF(__pyx_t_3);
                  #endif
                }
              } else {
                __pyx_t_3 = __pyx_t_15(__pyx_t_2);
                if (unlikely(!__pyx_t_3)) {
                  PyObject* exc_type = PyErr_Occurred();
                  if (exc_type) {
                    if (likely(__Pyx_PyErr_GivenExceptionMatches(exc_type, PyExc_StopIteration))) PyErr_Clear();
                    else __PYX_ERR(12, 245, __pyx_L7_error)
                  }
                  break;
                }
                __Pyx_GOTREF(__pyx_t_3);
              }
              if ((likely(PyTuple_CheckExact(__pyx_t_3))) || (PyList_CheckExact(__pyx_t_3))) {
                PyObject* sequence = __pyx_t_3;
                Py_ssize_t size = __Pyx_PySequence_SIZE(sequence);
                if (unlikely(size != 2)) {
                  if (size > 2) __Pyx_RaiseTooManyValuesError(2);
                  else if (size >= 0) __Pyx_RaiseNeedMoreValuesError(size);
                  __PYX_ERR(12, 245, __pyx_L7_error)
                }
                #if CYTHON_ASSUME_SAFE_MACROS && !CYTHON_AVOID_BORROWED_REFS
                if (likely(PyTuple_CheckExact(sequence))) {
                  __pyx_t_12 = PyTuple_GET_ITEM(sequence, 0); 
                  __pyx_t_4 = PyTuple_GET_ITEM(sequence, 1); 
                } else {
                  __pyx_t_12 = PyList_GET_ITEM(sequence, 0); 
                  __pyx_t_4 = PyList_GET_ITEM(sequence, 1); 
                }
                __Pyx_INCREF(__pyx_t_12);
                __Pyx_INCREF(__pyx_t_4);
                #else
                __pyx_t_12 = PySequence_ITEM(sequence, 0); if (unlikely(!__pyx_t_12)) __PYX_ERR(12, 245, __pyx_L7_error)
                __Pyx_GOTREF(__pyx_t_12);
                __pyx_t_4 = PySequence_ITEM(sequence, 1); if (unlikely(!__pyx_t_4)) __PYX_ERR(12, 245, __pyx_L7_error)
                __Pyx_GOTREF(__pyx_t_4);
                #endif
                __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
              } else {
                Py_ssize_t index = -1;
                __pyx_t_16 = PyObject_GetIter(__pyx_t_3); if (unlikely(!__pyx_t_16)) __PYX_ERR(12, 245, __pyx_L7_error)
                __Pyx_GOTREF(__pyx_t_16);
                __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
                __pyx_t_17 = Py_TYPE(__pyx_t_16)->tp_iternext;
                index = 0; __pyx_t_12 = __pyx_t_17(__pyx_t_16); if (unlikely(!__pyx_t_12)) goto __pyx_L21_unpacking_failed;
                __Pyx_GOTREF(__pyx_t_12);
                index = 1; __pyx_t_4 = __pyx_t_17(__pyx_t_16); if (unlikely(!__pyx_t_4)) goto __pyx_L21_unpacking_failed;
                __Pyx_GOTREF(__pyx_t_4);
                if (__Pyx_IternextUnpackEndCheck(__pyx_t_17(__pyx_t_16), 2) < 0) __PYX_ERR(12, 245, __pyx_L7_error)
                __pyx_t_17 = NULL;
                __Pyx_DECREF(__pyx_t_16); __pyx_t_16 = 0;
                goto __pyx_L22_unpacking_done;
                __pyx_L21_unpacking_failed:;
                __Pyx_DECREF(__pyx_t_16); __pyx_t_16 = 0;
                __pyx_t_17 = NULL;
                if (__Pyx_IterFinish() == 0) __Pyx_RaiseNeedMoreValuesError(index);
                __PYX_ERR(12, 245, __pyx_L7_error)
                __pyx_L22_unpacking_done:;
              }
              __Pyx_XDECREF_SET(__pyx_v_operations, __pyx_t_12);
              __pyx_t_12 = 0;
              __Pyx_XDECREF_SET(__pyx_v_user_tag, __pyx_t_4);
              __pyx_t_4 = 0;

              /* "src/python/grpcio/grpc/_cython/_cygrpc/channel.pyx.pxi":246
 *       started_tags = set()
 *       for operations, user_tag in operationses_and_user_tags:
 *         c_call_error, tag = _operate(call_state.c_call, operations, user_tag)             # <<<<<<<<<<<<<<
 *         if c_call_error == GRPC_CALL_OK:
 *           started_tags.add(tag)
 */
              __pyx_t_3 = __pyx_f_4grpc_7_cython_6cygrpc__operate(__pyx_v_call_state->c_call, __pyx_v_operations, __pyx_v_user_tag); if (unlikely(!__pyx_t_3)) __PYX_ERR(12, 246, __pyx_L7_error)
              __Pyx_GOTREF(__pyx_t_3);
              if (likely(__pyx_t_3 != Py_None)) {
                PyObject* sequence = __pyx_t_3;
                Py_ssize_t size = __Pyx_PySequence_SIZE(sequence);
                if (unlikely(size != 2)) {
                  if (size > 2) __Pyx_RaiseTooManyValuesError(2);
                  else if (size >= 0) __Pyx_RaiseNeedMoreValuesError(size);
                  __PYX_ERR(12, 246, __pyx_L7_error)
                }
                #if CYTHON_ASSUME_SAFE_MACROS && !CYTHON_AVOID_BORROWED_REFS
                __pyx_t_4 = PyTuple_GET_ITEM(sequence, 0); 
                __pyx_t_12 = PyTuple_GET_ITEM(sequence, 1); 
                __Pyx_INCREF(__pyx_t_4);
                __Pyx_INCREF(__pyx_t_12);
                #else
                __pyx_t_4 = PySequence_ITEM(sequence, 0); if (unlikely(!__pyx_t_4)) __PYX_ERR(12, 246, __pyx_L7_error)
                __Pyx_GOTREF(__pyx_t_4);
                __pyx_t_12 = PySequence_ITEM(sequence, 1); if (unlikely(!__pyx_t_12)) __PYX_ERR(12, 246, __pyx_L7_error)
                __Pyx_GOTREF(__pyx_t_12);
                #endif
                __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
              } else {
                __Pyx_RaiseNoneNotIterableError(); __PYX_ERR(12, 246, __pyx_L7_error)
              }
              __pyx_t_18 = ((grpc_call_error)__Pyx_PyInt_As_grpc_call_error(__pyx_t_4)); if (unlikely(PyErr_Occurred())) __PYX_ERR(12, 246, __pyx_L7_error)
              __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
              __pyx_v_c_call_error = __pyx_t_18;
              __Pyx_XDECREF_SET(__pyx_v_tag, __pyx_t_12);
              __pyx_t_12 = 0;

              /* "src/python/grpcio/grpc/_cython/_cygrpc/channel.pyx.pxi":247
 *       for operations, user_tag in operationses_and_user_tags:
 *         c_call_error, tag = _operate(call_state.c_call, operations, user_tag)
 *         if c_call_error == GRPC_CALL_OK:             # <<<<<<<<<<<<<<
 *           started_tags.add(tag)
 *         else:
 */
              __pyx_t_9 = ((__pyx_v_c_call_error == GRPC_CALL_OK) != 0);
              if (__pyx_t_9) {

                /* "src/python/grpcio/grpc/_cython/_cygrpc/channel.pyx.pxi":248
 *         c_call_error, tag = _operate(call_state.c_call, operations, user_tag)
 *         if c_call_error == GRPC_CALL_OK:
 *           started_tags.add(tag)             # <<<<<<<<<<<<<<
 *         else:
 *           grpc_call_cancel(call_state.c_call, NULL)
 */
                __pyx_t_19 = PySet_Add(__pyx_v_started_tags, __pyx_v_tag); if (unlikely(__pyx_t_19 == ((int)-1))) __PYX_ERR(12, 248, __pyx_L7_error)

                /* "src/python/grpcio/grpc/_cython/_cygrpc/channel.pyx.pxi":247
 *       for operations, user_tag in operationses_and_user_tags:
 *         c_call_error, tag = _operate(call_state.c_call, operations, user_tag)
 *         if c_call_error == GRPC_CALL_OK:             # <<<<<<<<<<<<<<
 *           started_tags.add(tag)
 *         else:
 */
                goto __pyx_L23;
              }

              /* "src/python/grpcio/grpc/_cython/_cygrpc/channel.pyx.pxi":250
 *           started_tags.add(tag)
 *         else:
 *           grpc_call_cancel(call_state.c_call, NULL)             # <<<<<<<<<<<<<<
 *           grpc_call_unref(call_state.c_call)
 *           call_state.c_call = NULL
 */
              /*else*/ {
                (void)(grpc_call_cancel(__pyx_v_call_state->c_call, NULL));

                /* "src/python/grpcio/grpc/_cython/_cygrpc/channel.pyx.pxi":251
 *         else:
 *           grpc_call_cancel(call_state.c_call, NULL)
 *           grpc_call_unref(call_state.c_call)             # <<<<<<<<<<<<<<
 *           call_state.c_call = NULL
 *           _raise_call_error(c_call_error, metadata)
 */
                grpc_call_unref(__pyx_v_call_state->c_call);

                /* "src/python/grpcio/grpc/_cython/_cygrpc/channel.pyx.pxi":252
 *           grpc_call_cancel(call_state.c_call, NULL)
 *           grpc_call_unref(call_state.c_call)
 *           call_state.c_call = NULL             # <<<<<<<<<<<<<<
 *           _raise_call_error(c_call_error, metadata)
 *       else:
 */
                __pyx_v_call_state->c_call = NULL;

                /* "src/python/grpcio/grpc/_cython/_cygrpc/channel.pyx.pxi":253
 *           grpc_call_unref(call_state.c_call)
 *           call_state.c_call = NULL
 *           _raise_call_error(c_call_error, metadata)             # <<<<<<<<<<<<<<
 *       else:
 *         call_state.due.update(started_tags)
 */
                __pyx_t_3 = __Pyx_PyInt_From_grpc_call_error(__pyx_v_c_call_error); if (unlikely(!__pyx_t_3)) __PYX_ERR(12, 253, __pyx_L7_error)
                __Pyx_GOTREF(__pyx_t_3);
                __pyx_f_4grpc_7_cython_6cygrpc__raise_call_error(__pyx_t_3, __pyx_v_metadata); if (unlikely(PyErr_Occurred())) __PYX_ERR(12, 253, __pyx_L7_error)
                __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
              }
              __pyx_L23:;

              /* "src/python/grpcio/grpc/_cython/_cygrpc/channel.pyx.pxi":245
 *           _raise_call_error_no_metadata(c_call_error)
 *       started_tags = set()
 *       for operations, user_tag in operationses_and_user_tags:             # <<<<<<<<<<<<<<
 *         c_call_error, tag = _operate(call_state.c_call, operations, user_tag)
 *         if c_call_error == GRPC_CALL_OK:
 */
            }
            /*else*/ {

              /* "src/python/grpcio/grpc/_cython/_cygrpc/channel.pyx.pxi":255
 *           _raise_call_error(c_call_error, metadata)
 *       else:
 *         call_state.due.update(started_tags)             # <<<<<<<<<<<<<<
 *         on_success(started_tags)
 *     else:
 */
              __pyx_t_12 = __Pyx_PyObject_GetAttrStr(__pyx_v_call_state->due, __pyx_n_s_update); if (unlikely(!__pyx_t_12)) __PYX_ERR(12, 255, __pyx_L7_error)
              __Pyx_GOTREF(__pyx_t_12);
              __pyx_t_4 = NULL;
              if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_12))) {
                __pyx_t_4 = PyMethod_GET_SELF(__pyx_t_12);
                if (likely(__pyx_t_4)) {
                  PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_12);
                  __Pyx_INCREF(__pyx_t_4);
                  __Pyx_INCREF(function);
                  __Pyx_DECREF_SET(__pyx_t_12, function);
                }
              }
              __pyx_t_3 = (__pyx_t_4) ? __Pyx_PyObject_Call2Args(__pyx_t_12, __pyx_t_4, __pyx_v_started_tags) : __Pyx_PyObject_CallOneArg(__pyx_t_12, __pyx_v_started_tags);
              __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0;
              if (unlikely(!__pyx_t_3)) __PYX_ERR(12, 255, __pyx_L7_error)
              __Pyx_GOTREF(__pyx_t_3);
              __Pyx_DECREF(__pyx_t_12); __pyx_t_12 = 0;
              __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;

              /* "src/python/grpcio/grpc/_cython/_cygrpc/channel.pyx.pxi":256
 *       else:
 *         call_state.due.update(started_tags)
 *         on_success(started_tags)             # <<<<<<<<<<<<<<
 *     else:
 *       raise ValueError('Cannot invoke RPC: %s' % channel_state.closed_reason)
 */
              __Pyx_INCREF(__pyx_v_on_success);
              __pyx_t_12 = __pyx_v_on_success; __pyx_t_4 = NULL;
              if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_12))) {
                __pyx_t_4 = PyMethod_GET_SELF(__pyx_t_12);
                if (likely(__pyx_t_4)) {
                  PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_12);
                  __Pyx_INCREF(__pyx_t_4);
                  __Pyx_INCREF(function);
                  __Pyx_DECREF_SET(__pyx_t_12, function);
                }
              }
              __pyx_t_3 = (__pyx_t_4) ? __Pyx_PyObject_Call2Args(__pyx_t_12, __pyx_t_4, __pyx_v_started_tags) : __Pyx_PyObject_CallOneArg(__pyx_t_12, __pyx_v_started_tags);
              __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0;
              if (unlikely(!__pyx_t_3)) __PYX_ERR(12, 256, __pyx_L7_error)
              __Pyx_GOTREF(__pyx_t_3);
              __Pyx_DECREF(__pyx_t_12); __pyx_t_12 = 0;
              __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
            }

            /* "src/python/grpcio/grpc/_cython/_cygrpc/channel.pyx.pxi":245
 *           _raise_call_error_no_metadata(c_call_error)
 *       started_tags = set()
 *       for operations, user_tag in operationses_and_user_tags:             # <<<<<<<<<<<<<<
 *         c_call_error, tag = _operate(call_state.c_call, operations, user_tag)
 *         if c_call_error == GRPC_CALL_OK:
 */
            __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;

            /* "src/python/grpcio/grpc/_cython/_cygrpc/channel.pyx.pxi":219
 *   cdef _BatchOperationTag wrapper_tag
 *   with channel_state.condition:
 *     if channel_state.open:             # <<<<<<<<<<<<<<
 *       method_slice = _slice_from_bytes(method)
 *       if host is None:
 */
            goto __pyx_L13;
          }

          /* "src/python/grpcio/grpc/_cython/_cygrpc/channel.pyx.pxi":258
 *         on_success(started_tags)
 *     else:
 *       raise ValueError('Cannot invoke RPC: %s' % channel_state.closed_reason)             # <<<<<<<<<<<<<<
 * 
 * 
 */
          /*else*/ {
            __pyx_t_2 = __Pyx_PyString_FormatSafe(__pyx_kp_s_Cannot_invoke_RPC_s, __pyx_v_channel_state->closed_reason); if (unlikely(!__pyx_t_2)) __PYX_ERR(12, 258, __pyx_L7_error)
            __Pyx_GOTREF(__pyx_t_2);
            __pyx_t_3 = __Pyx_PyObject_CallOneArg(__pyx_builtin_ValueError, __pyx_t_2); if (unlikely(!__pyx_t_3)) __PYX_ERR(12, 258, __pyx_L7_error)
            __Pyx_GOTREF(__pyx_t_3);
            __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
            __Pyx_Raise(__pyx_t_3, 0, 0, 0);
            __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
            __PYX_ERR(12, 258, __pyx_L7_error)
          }
          __pyx_L13:;

          /* "src/python/grpcio/grpc/_cython/_cygrpc/channel.pyx.pxi":218
 *   cdef tuple error_and_wrapper_tag
 *   cdef _BatchOperationTag wrapper_tag
 *   with channel_state.condition:             # <<<<<<<<<<<<<<
 *     if channel_state.open:
 *       method_slice = _slice_from_bytes(method)
 */
        }
        __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0;
        __Pyx_XDECREF(__pyx_t_6); __pyx_t_6 = 0;
        __Pyx_XDECREF(__pyx_t_7); __pyx_t_7 = 0;
        goto __pyx_L12_try_end;
        __pyx_L7_error:;
        __Pyx_XDECREF(__pyx_t_12); __pyx_t_12 = 0;
        __Pyx_XDECREF(__pyx_t_16); __pyx_t_16 = 0;
        __Pyx_XDECREF(__pyx_t_2); __pyx_t_2 = 0;
        __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0;
        __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0;
        /*except:*/ {
          __Pyx_AddTraceback("grpc._cython.cygrpc._call", __pyx_clineno, __pyx_lineno, __pyx_filename);
          if (__Pyx_GetException(&__pyx_t_3, &__pyx_t_2, &__pyx_t_12) < 0) __PYX_ERR(12, 218, __pyx_L9_except_error)
          __Pyx_GOTREF(__pyx_t_3);
          __Pyx_GOTREF(__pyx_t_2);
          __Pyx_GOTREF(__pyx_t_12);
          __pyx_t_4 = PyTuple_Pack(3, __pyx_t_3, __pyx_t_2, __pyx_t_12); if (unlikely(!__pyx_t_4)) __PYX_ERR(12, 218, __pyx_L9_except_error)
          __Pyx_GOTREF(__pyx_t_4);
          __pyx_t_20 = __Pyx_PyObject_Call(__pyx_t_1, __pyx_t_4, NULL);
          __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
          __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
          if (unlikely(!__pyx_t_20)) __PYX_ERR(12, 218, __pyx_L9_except_error)
          __Pyx_GOTREF(__pyx_t_20);
          __pyx_t_9 = __Pyx_PyObject_IsTrue(__pyx_t_20);
          __Pyx_DECREF(__pyx_t_20); __pyx_t_20 = 0;
          if (__pyx_t_9 < 0) __PYX_ERR(12, 218, __pyx_L9_except_error)
          __pyx_t_8 = ((!(__pyx_t_9 != 0)) != 0);
          if (__pyx_t_8) {
            __Pyx_GIVEREF(__pyx_t_3);
            __Pyx_GIVEREF(__pyx_t_2);
            __Pyx_XGIVEREF(__pyx_t_12);
            __Pyx_ErrRestoreWithState(__pyx_t_3, __pyx_t_2, __pyx_t_12);
            __pyx_t_3 = 0; __pyx_t_2 = 0; __pyx_t_12 = 0; 
            __PYX_ERR(12, 218, __pyx_L9_except_error)
          }
          __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0;
          __Pyx_XDECREF(__pyx_t_2); __pyx_t_2 = 0;
          __Pyx_XDECREF(__pyx_t_12); __pyx_t_12 = 0;
          goto __pyx_L8_exception_handled;
        }
        __pyx_L9_except_error:;
        __Pyx_XGIVEREF(__pyx_t_5);
        __Pyx_XGIVEREF(__pyx_t_6);
        __Pyx_XGIVEREF(__pyx_t_7);
        __Pyx_ExceptionReset(__pyx_t_5, __pyx_t_6, __pyx_t_7);
        goto __pyx_L1_error;
        __pyx_L8_exception_handled:;
        __Pyx_XGIVEREF(__pyx_t_5);
        __Pyx_XGIVEREF(__pyx_t_6);
        __Pyx_XGIVEREF(__pyx_t_7);
        __Pyx_ExceptionReset(__pyx_t_5, __pyx_t_6, __pyx_t_7);
        __pyx_L12_try_end:;
      }
    }
    /*finally:*/ {
      /*normal exit:*/{
        if (__pyx_t_1) {
          __pyx_t_7 = __Pyx_PyObject_Call(__pyx_t_1, __pyx_tuple__17, NULL);
          __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
          if (unlikely(!__pyx_t_7)) __PYX_ERR(12, 218, __pyx_L1_error)
          __Pyx_GOTREF(__pyx_t_7);
          __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
        }
        goto __pyx_L6;
      }
      __pyx_L6:;
    }
    goto __pyx_L28;
    __pyx_L3_error:;
    __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
    goto __pyx_L1_error;
    __pyx_L28:;
  }

  /* "src/python/grpcio/grpc/_cython/_cygrpc/channel.pyx.pxi":178
 * 
 * # TODO(https://github.com/grpc/grpc/issues/14569): This could be a lot simpler.
 * cdef void _call(             # <<<<<<<<<<<<<<
 *     _ChannelState channel_state, _CallState call_state,
 *     grpc_completion_queue *c_completion_queue, on_success, int flags, method,
 */

  /* function exit code */
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_XDECREF(__pyx_t_3);
  __Pyx_XDECREF(__pyx_t_4);
  __Pyx_XDECREF(__pyx_t_12);
  __Pyx_XDECREF(__pyx_t_16);
  __Pyx_AddTraceback("grpc._cython.cygrpc._call", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_L0:;
  __Pyx_XDECREF(__pyx_v_started_tags);
  __Pyx_XDECREF(__pyx_v_operations);
  __Pyx_XDECREF(__pyx_v_user_tag);
  __Pyx_XDECREF(__pyx_v_tag);
  __Pyx_RefNannyFinishContext();
}

/* "src/python/grpcio/grpc/_cython/_cygrpc/channel.pyx.pxi":261
 * 
 * 
 * cdef void _process_integrated_call_tag(             # <<<<<<<<<<<<<<
 *     _ChannelState state, _BatchOperationTag tag) except *:
 *   cdef _CallState call_state = state.integrated_call_states.pop(tag)
 */

static void __pyx_f_4grpc_7_cython_6cygrpc__process_integrated_call_tag(struct __pyx_obj_4grpc_7_cython_6cygrpc__ChannelState *__pyx_v_state, struct __pyx_obj_4grpc_7_cython_6cygrpc__BatchOperationTag *__pyx_v_tag) {
  struct __pyx_obj_4grpc_7_cython_6cygrpc__CallState *__pyx_v_call_state = 0;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  int __pyx_t_2;
  int __pyx_t_3;
  int __pyx_t_4;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("_process_integrated_call_tag", 0);

  /* "src/python/grpcio/grpc/_cython/_cygrpc/channel.pyx.pxi":263
 * cdef void _process_integrated_call_tag(
 *     _ChannelState state, _BatchOperationTag tag) except *:
 *   cdef _CallState call_state = state.integrated_call_states.pop(tag)             # <<<<<<<<<<<<<<
 *   call_state.due.remove(tag)
 *   if not call_state.due:
 */
  if (unlikely(__pyx_v_state->integrated_call_states == Py_None)) {
    PyErr_Format(PyExc_AttributeError, "'NoneType' object has no attribute '%.30s'", "pop");
    __PYX_ERR(12, 263, __pyx_L1_error)
  }
  __pyx_t_1 = __Pyx_PyDict_Pop(__pyx_v_state->integrated_call_states, ((PyObject *)__pyx_v_tag), ((PyObject *)NULL)); if (unlikely(!__pyx_t_1)) __PYX_ERR(12, 263, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  if (!(likely(((__pyx_t_1) == Py_None) || likely(__Pyx_TypeTest(__pyx_t_1, __pyx_ptype_4grpc_7_cython_6cygrpc__CallState))))) __PYX_ERR(12, 263, __pyx_L1_error)
  __pyx_v_call_state = ((struct __pyx_obj_4grpc_7_cython_6cygrpc__CallState *)__pyx_t_1);
  __pyx_t_1 = 0;

  /* "src/python/grpcio/grpc/_cython/_cygrpc/channel.pyx.pxi":264
 *     _ChannelState state, _BatchOperationTag tag) except *:
 *   cdef _CallState call_state = state.integrated_call_states.pop(tag)
 *   call_state.due.remove(tag)             # <<<<<<<<<<<<<<
 *   if not call_state.due:
 *     grpc_call_unref(call_state.c_call)
 */
  if (unlikely(__pyx_v_call_state->due == Py_None)) {
    PyErr_Format(PyExc_AttributeError, "'NoneType' object has no attribute '%.30s'", "remove");
    __PYX_ERR(12, 264, __pyx_L1_error)
  }
  __pyx_t_2 = __Pyx_PySet_Remove(__pyx_v_call_state->due, ((PyObject *)__pyx_v_tag)); if (unlikely(__pyx_t_2 == ((int)-1))) __PYX_ERR(12, 264, __pyx_L1_error)

  /* "src/python/grpcio/grpc/_cython/_cygrpc/channel.pyx.pxi":265
 *   cdef _CallState call_state = state.integrated_call_states.pop(tag)
 *   call_state.due.remove(tag)
 *   if not call_state.due:             # <<<<<<<<<<<<<<
 *     grpc_call_unref(call_state.c_call)
 *     call_state.c_call = NULL
 */
  __pyx_t_3 = (__pyx_v_call_state->due != Py_None)&&(PySet_GET_SIZE(__pyx_v_call_state->due) != 0);
  __pyx_t_4 = ((!__pyx_t_3) != 0);
  if (__pyx_t_4) {

    /* "src/python/grpcio/grpc/_cython/_cygrpc/channel.pyx.pxi":266
 *   call_state.due.remove(tag)
 *   if not call_state.due:
 *     grpc_call_unref(call_state.c_call)             # <<<<<<<<<<<<<<
 *     call_state.c_call = NULL
 * 
 */
    grpc_call_unref(__pyx_v_call_state->c_call);

    /* "src/python/grpcio/grpc/_cython/_cygrpc/channel.pyx.pxi":267
 *   if not call_state.due:
 *     grpc_call_unref(call_state.c_call)
 *     call_state.c_call = NULL             # <<<<<<<<<<<<<<
 * 
 * 
 */
    __pyx_v_call_state->c_call = NULL;

    /* "src/python/grpcio/grpc/_cython/_cygrpc/channel.pyx.pxi":265
 *   cdef _CallState call_state = state.integrated_call_states.pop(tag)
 *   call_state.due.remove(tag)
 *   if not call_state.due:             # <<<<<<<<<<<<<<
 *     grpc_call_unref(call_state.c_call)
 *     call_state.c_call = NULL
 */
  }

  /* "src/python/grpcio/grpc/_cython/_cygrpc/channel.pyx.pxi":261
 * 
 * 
 * cdef void _process_integrated_call_tag(             # <<<<<<<<<<<<<<
 *     _ChannelState state, _BatchOperationTag tag) except *:
 *   cdef _CallState call_state = state.integrated_call_states.pop(tag)
 */

  /* function exit code */
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_AddTraceback("grpc._cython.cygrpc._process_integrated_call_tag", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_L0:;
  __Pyx_XDECREF((PyObject *)__pyx_v_call_state);
  __Pyx_RefNannyFinishContext();
}

/* "src/python/grpcio/grpc/_cython/_cygrpc/channel.pyx.pxi":272
 * cdef class IntegratedCall:
 * 
 *   def __cinit__(self, _ChannelState channel_state, _CallState call_state):             # <<<<<<<<<<<<<<
 *     self._channel_state = channel_state
 *     self._call_state = call_state
 */

/* Python wrapper */
static int __pyx_pw_4grpc_7_cython_6cygrpc_14IntegratedCall_1__cinit__(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
static int __pyx_pw_4grpc_7_cython_6cygrpc_14IntegratedCall_1__cinit__(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
  struct __pyx_obj_4grpc_7_cython_6cygrpc__ChannelState *__pyx_v_channel_state = 0;
  struct __pyx_obj_4grpc_7_cython_6cygrpc__CallState *__pyx_v_call_state = 0;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  int __pyx_r;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__cinit__ (wrapper)", 0);
  {
    static PyObject **__pyx_pyargnames[] = {&__pyx_n_s_channel_state,&__pyx_n_s_call_state,0};
    PyObject* values[2] = {0,0};
    if (unlikely(__pyx_kwds)) {
      Py_ssize_t kw_args;
      const Py_ssize_t pos_args = PyTuple_GET_SIZE(__pyx_args);
      switch (pos_args) {
        case  2: values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
        CYTHON_FALLTHROUGH;
        case  1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
        CYTHON_FALLTHROUGH;
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      kw_args = PyDict_Size(__pyx_kwds);
      switch (pos_args) {
        case  0:
        if (likely((values[0] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_channel_state)) != 0)) kw_args--;
        else goto __pyx_L5_argtuple_error;
        CYTHON_FALLTHROUGH;
        case  1:
        if (likely((values[1] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_call_state)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("__cinit__", 1, 2, 2, 1); __PYX_ERR(12, 272, __pyx_L3_error)
        }
      }
      if (unlikely(kw_args > 0)) {
        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "__cinit__") < 0)) __PYX_ERR(12, 272, __pyx_L3_error)
      }
    } else if (PyTuple_GET_SIZE(__pyx_args) != 2) {
      goto __pyx_L5_argtuple_error;
    } else {
      values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
      values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
    }
    __pyx_v_channel_state = ((struct __pyx_obj_4grpc_7_cython_6cygrpc__ChannelState *)values[0]);
    __pyx_v_call_state = ((struct __pyx_obj_4grpc_7_cython_6cygrpc__CallState *)values[1]);
  }
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("__cinit__", 1, 2, 2, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(12, 272, __pyx_L3_error)
  __pyx_L3_error:;
  __Pyx_AddTraceback("grpc._cython.cygrpc.IntegratedCall.__cinit__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return -1;
  __pyx_L4_argument_unpacking_done:;
  if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_channel_state), __pyx_ptype_4grpc_7_cython_6cygrpc__ChannelState, 1, "channel_state", 0))) __PYX_ERR(12, 272, __pyx_L1_error)
  if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_call_state), __pyx_ptype_4grpc_7_cython_6cygrpc__CallState, 1, "call_state", 0))) __PYX_ERR(12, 272, __pyx_L1_error)
  __pyx_r = __pyx_pf_4grpc_7_cython_6cygrpc_14IntegratedCall___cinit__(((struct __pyx_obj_4grpc_7_cython_6cygrpc_IntegratedCall *)__pyx_v_self), __pyx_v_channel_state, __pyx_v_call_state);

  /* function exit code */
  goto __pyx_L0;
  __pyx_L1_error:;
  __pyx_r = -1;
  __pyx_L0:;
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static int __pyx_pf_4grpc_7_cython_6cygrpc_14IntegratedCall___cinit__(struct __pyx_obj_4grpc_7_cython_6cygrpc_IntegratedCall *__pyx_v_self, struct __pyx_obj_4grpc_7_cython_6cygrpc__ChannelState *__pyx_v_channel_state, struct __pyx_obj_4grpc_7_cython_6cygrpc__CallState *__pyx_v_call_state) {
  int __pyx_r;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__cinit__", 0);

  /* "src/python/grpcio/grpc/_cython/_cygrpc/channel.pyx.pxi":273
 * 
 *   def __cinit__(self, _ChannelState channel_state, _CallState call_state):
 *     self._channel_state = channel_state             # <<<<<<<<<<<<<<
 *     self._call_state = call_state
 * 
 */
  __Pyx_INCREF(((PyObject *)__pyx_v_channel_state));
  __Pyx_GIVEREF(((PyObject *)__pyx_v_channel_state));
  __Pyx_GOTREF(__pyx_v_self->_channel_state);
  __Pyx_DECREF(((PyObject *)__pyx_v_self->_channel_state));
  __pyx_v_self->_channel_state = __pyx_v_channel_state;

  /* "src/python/grpcio/grpc/_cython/_cygrpc/channel.pyx.pxi":274
 *   def __cinit__(self, _ChannelState channel_state, _CallState call_state):
 *     self._channel_state = channel_state
 *     self._call_state = call_state             # <<<<<<<<<<<<<<
 * 
 *   def operate(self, operations, tag):
 */
  __Pyx_INCREF(((PyObject *)__pyx_v_call_state));
  __Pyx_GIVEREF(((PyObject *)__pyx_v_call_state));
  __Pyx_GOTREF(__pyx_v_self->_call_state);
  __Pyx_DECREF(((PyObject *)__pyx_v_self->_call_state));
  __pyx_v_self->_call_state = __pyx_v_call_state;

  /* "src/python/grpcio/grpc/_cython/_cygrpc/channel.pyx.pxi":272
 * cdef class IntegratedCall:
 * 
 *   def __cinit__(self, _ChannelState channel_state, _CallState call_state):             # <<<<<<<<<<<<<<
 *     self._channel_state = channel_state
 *     self._call_state = call_state
 */

  /* function exit code */
  __pyx_r = 0;
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "src/python/grpcio/grpc/_cython/_cygrpc/channel.pyx.pxi":276
 *     self._call_state = call_state
 * 
 *   def operate(self, operations, tag):             # <<<<<<<<<<<<<<
 *     return _operate_from_integrated_call(
 *         self._channel_state, self._call_state, operations, tag)
 */

/* Python wrapper */
static PyObject *__pyx_pw_4grpc_7_cython_6cygrpc_14IntegratedCall_3operate(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
static PyObject *__pyx_pw_4grpc_7_cython_6cygrpc_14IntegratedCall_3operate(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
  PyObject *__pyx_v_operations = 0;
  PyObject *__pyx_v_tag = 0;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("operate (wrapper)", 0);
  {
    static PyObject **__pyx_pyargnames[] = {&__pyx_n_s_operations,&__pyx_n_s_tag,0};
    PyObject* values[2] = {0,0};
    if (unlikely(__pyx_kwds)) {
      Py_ssize_t kw_args;
      const Py_ssize_t pos_args = PyTuple_GET_SIZE(__pyx_args);
      switch (pos_args) {
        case  2: values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
        CYTHON_FALLTHROUGH;
        case  1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
        CYTHON_FALLTHROUGH;
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      kw_args = PyDict_Size(__pyx_kwds);
      switch (pos_args) {
        case  0:
        if (likely((values[0] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_operations)) != 0)) kw_args--;
        else goto __pyx_L5_argtuple_error;
        CYTHON_FALLTHROUGH;
        case  1:
        if (likely((values[1] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_tag)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("operate", 1, 2, 2, 1); __PYX_ERR(12, 276, __pyx_L3_error)
        }
      }
      if (unlikely(kw_args > 0)) {
        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "operate") < 0)) __PYX_ERR(12, 276, __pyx_L3_error)
      }
    } else if (PyTuple_GET_SIZE(__pyx_args) != 2) {
      goto __pyx_L5_argtuple_error;
    } else {
      values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
      values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
    }
    __pyx_v_operations = values[0];
    __pyx_v_tag = values[1];
  }
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("operate", 1, 2, 2, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(12, 276, __pyx_L3_error)
  __pyx_L3_error:;
  __Pyx_AddTraceback("grpc._cython.cygrpc.IntegratedCall.operate", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  __pyx_r = __pyx_pf_4grpc_7_cython_6cygrpc_14IntegratedCall_2operate(((struct __pyx_obj_4grpc_7_cython_6cygrpc_IntegratedCall *)__pyx_v_self), __pyx_v_operations, __pyx_v_tag);

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_4grpc_7_cython_6cygrpc_14IntegratedCall_2operate(struct __pyx_obj_4grpc_7_cython_6cygrpc_IntegratedCall *__pyx_v_self, PyObject *__pyx_v_operations, PyObject *__pyx_v_tag) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  PyObject *__pyx_t_2 = NULL;
  PyObject *__pyx_t_3 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("operate", 0);

  /* "src/python/grpcio/grpc/_cython/_cygrpc/channel.pyx.pxi":277
 * 
 *   def operate(self, operations, tag):
 *     return _operate_from_integrated_call(             # <<<<<<<<<<<<<<
 *         self._channel_state, self._call_state, operations, tag)
 * 
 */
  __Pyx_XDECREF(__pyx_r);

  /* "src/python/grpcio/grpc/_cython/_cygrpc/channel.pyx.pxi":278
 *   def operate(self, operations, tag):
 *     return _operate_from_integrated_call(
 *         self._channel_state, self._call_state, operations, tag)             # <<<<<<<<<<<<<<
 * 
 *   def cancel(self, code, details):
 */
  __pyx_t_1 = ((PyObject *)__pyx_v_self->_channel_state);
  __Pyx_INCREF(__pyx_t_1);
  __pyx_t_2 = ((PyObject *)__pyx_v_self->_call_state);
  __Pyx_INCREF(__pyx_t_2);

  /* "src/python/grpcio/grpc/_cython/_cygrpc/channel.pyx.pxi":277
 * 
 *   def operate(self, operations, tag):
 *     return _operate_from_integrated_call(             # <<<<<<<<<<<<<<
 *         self._channel_state, self._call_state, operations, tag)
 * 
 */
  __pyx_t_3 = __pyx_f_4grpc_7_cython_6cygrpc__operate_from_integrated_call(((struct __pyx_obj_4grpc_7_cython_6cygrpc__ChannelState *)__pyx_t_1), ((struct __pyx_obj_4grpc_7_cython_6cygrpc__CallState *)__pyx_t_2), __pyx_v_operations, __pyx_v_tag); if (unlikely(!__pyx_t_3)) __PYX_ERR(12, 277, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  __pyx_r = __pyx_t_3;
  __pyx_t_3 = 0;
  goto __pyx_L0;

  /* "src/python/grpcio/grpc/_cython/_cygrpc/channel.pyx.pxi":276
 *     self._call_state = call_state
 * 
 *   def operate(self, operations, tag):             # <<<<<<<<<<<<<<
 *     return _operate_from_integrated_call(
 *         self._channel_state, self._call_state, operations, tag)
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_XDECREF(__pyx_t_3);
  __Pyx_AddTraceback("grpc._cython.cygrpc.IntegratedCall.operate", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "src/python/grpcio/grpc/_cython/_cygrpc/channel.pyx.pxi":280
 *         self._channel_state, self._call_state, operations, tag)
 * 
 *   def cancel(self, code, details):             # <<<<<<<<<<<<<<
 *     _cancel(self._channel_state, self._call_state, code, details)
 * 
 */

/* Python wrapper */
static PyObject *__pyx_pw_4grpc_7_cython_6cygrpc_14IntegratedCall_5cancel(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
static PyObject *__pyx_pw_4grpc_7_cython_6cygrpc_14IntegratedCall_5cancel(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
  PyObject *__pyx_v_code = 0;
  PyObject *__pyx_v_details = 0;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("cancel (wrapper)", 0);
  {
    static PyObject **__pyx_pyargnames[] = {&__pyx_n_s_code,&__pyx_n_s_details,0};
    PyObject* values[2] = {0,0};
    if (unlikely(__pyx_kwds)) {
      Py_ssize_t kw_args;
      const Py_ssize_t pos_args = PyTuple_GET_SIZE(__pyx_args);
      switch (pos_args) {
        case  2: values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
        CYTHON_FALLTHROUGH;
        case  1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
        CYTHON_FALLTHROUGH;
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      kw_args = PyDict_Size(__pyx_kwds);
      switch (pos_args) {
        case  0:
        if (likely((values[0] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_code)) != 0)) kw_args--;
        else goto __pyx_L5_argtuple_error;
        CYTHON_FALLTHROUGH;
        case  1:
        if (likely((values[1] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_details)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("cancel", 1, 2, 2, 1); __PYX_ERR(12, 280, __pyx_L3_error)
        }
      }
      if (unlikely(kw_args > 0)) {
        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "cancel") < 0)) __PYX_ERR(12, 280, __pyx_L3_error)
      }
    } else if (PyTuple_GET_SIZE(__pyx_args) != 2) {
      goto __pyx_L5_argtuple_error;
    } else {
      values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
      values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
    }
    __pyx_v_code = values[0];
    __pyx_v_details = values[1];
  }
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("cancel", 1, 2, 2, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(12, 280, __pyx_L3_error)
  __pyx_L3_error:;
  __Pyx_AddTraceback("grpc._cython.cygrpc.IntegratedCall.cancel", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  __pyx_r = __pyx_pf_4grpc_7_cython_6cygrpc_14IntegratedCall_4cancel(((struct __pyx_obj_4grpc_7_cython_6cygrpc_IntegratedCall *)__pyx_v_self), __pyx_v_code, __pyx_v_details);

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_4grpc_7_cython_6cygrpc_14IntegratedCall_4cancel(struct __pyx_obj_4grpc_7_cython_6cygrpc_IntegratedCall *__pyx_v_self, PyObject *__pyx_v_code, PyObject *__pyx_v_details) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  PyObject *__pyx_t_2 = NULL;
  grpc_status_code __pyx_t_3;
  PyObject *__pyx_t_4 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("cancel", 0);

  /* "src/python/grpcio/grpc/_cython/_cygrpc/channel.pyx.pxi":281
 * 
 *   def cancel(self, code, details):
 *     _cancel(self._channel_state, self._call_state, code, details)             # <<<<<<<<<<<<<<
 * 
 * 
 */
  __pyx_t_1 = ((PyObject *)__pyx_v_self->_channel_state);
  __Pyx_INCREF(__pyx_t_1);
  __pyx_t_2 = ((PyObject *)__pyx_v_self->_call_state);
  __Pyx_INCREF(__pyx_t_2);
  __pyx_t_3 = ((grpc_status_code)__Pyx_PyInt_As_grpc_status_code(__pyx_v_code)); if (unlikely(PyErr_Occurred())) __PYX_ERR(12, 281, __pyx_L1_error)
  if (!(likely(PyString_CheckExact(__pyx_v_details))||((__pyx_v_details) == Py_None)||(PyErr_Format(PyExc_TypeError, "Expected %.16s, got %.200s", "str", Py_TYPE(__pyx_v_details)->tp_name), 0))) __PYX_ERR(12, 281, __pyx_L1_error)
  __pyx_t_4 = __pyx_f_4grpc_7_cython_6cygrpc__cancel(((struct __pyx_obj_4grpc_7_cython_6cygrpc__ChannelState *)__pyx_t_1), ((struct __pyx_obj_4grpc_7_cython_6cygrpc__CallState *)__pyx_t_2), __pyx_t_3, ((PyObject*)__pyx_v_details)); if (unlikely(!__pyx_t_4)) __PYX_ERR(12, 281, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_4);
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;

  /* "src/python/grpcio/grpc/_cython/_cygrpc/channel.pyx.pxi":280
 *         self._channel_state, self._call_state, operations, tag)
 * 
 *   def cancel(self, code, details):             # <<<<<<<<<<<<<<
 *     _cancel(self._channel_state, self._call_state, code, details)
 * 
 */

  /* function exit code */
  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_XDECREF(__pyx_t_4);
  __Pyx_AddTraceback("grpc._cython.cygrpc.IntegratedCall.cancel", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "(tree fragment)":1
 * def __reduce_cython__(self):             # <<<<<<<<<<<<<<
 *     raise TypeError("no default __reduce__ due to non-trivial __cinit__")
 * def __setstate_cython__(self, __pyx_state):
 */

/* Python wrapper */
static PyObject *__pyx_pw_4grpc_7_cython_6cygrpc_14IntegratedCall_7__reduce_cython__(PyObject *__pyx_v_self, CYTHON_UNUSED PyObject *unused); /*proto*/
static PyObject *__pyx_pw_4grpc_7_cython_6cygrpc_14IntegratedCall_7__reduce_cython__(PyObject *__pyx_v_self, CYTHON_UNUSED PyObject *unused) {
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__reduce_cython__ (wrapper)", 0);
  __pyx_r = __pyx_pf_4grpc_7_cython_6cygrpc_14IntegratedCall_6__reduce_cython__(((struct __pyx_obj_4grpc_7_cython_6cygrpc_IntegratedCall *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_4grpc_7_cython_6cygrpc_14IntegratedCall_6__reduce_cython__(CYTHON_UNUSED struct __pyx_obj_4grpc_7_cython_6cygrpc_IntegratedCall *__pyx_v_self) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("__reduce_cython__", 0);

  /* "(tree fragment)":2
 * def __reduce_cython__(self):
 *     raise TypeError("no default __reduce__ due to non-trivial __cinit__")             # <<<<<<<<<<<<<<
 * def __setstate_cython__(self, __pyx_state):
 *     raise TypeError("no default __reduce__ due to non-trivial __cinit__")
 */
  __pyx_t_1 = __Pyx_PyObject_Call(__pyx_builtin_TypeError, __pyx_tuple__18, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(11, 2, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_Raise(__pyx_t_1, 0, 0, 0);
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  __PYX_ERR(11, 2, __pyx_L1_error)

  /* "(tree fragment)":1
 * def __reduce_cython__(self):             # <<<<<<<<<<<<<<
 *     raise TypeError("no default __reduce__ due to non-trivial __cinit__")
 * def __setstate_cython__(self, __pyx_state):
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_AddTraceback("grpc._cython.cygrpc.IntegratedCall.__reduce_cython__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "(tree fragment)":3
 * def __reduce_cython__(self):
 *     raise TypeError("no default __reduce__ due to non-trivial __cinit__")
 * def __setstate_cython__(self, __pyx_state):             # <<<<<<<<<<<<<<
 *     raise TypeError("no default __reduce__ due to non-trivial __cinit__")
 */

/* Python wrapper */
static PyObject *__pyx_pw_4grpc_7_cython_6cygrpc_14IntegratedCall_9__setstate_cython__(PyObject *__pyx_v_self, PyObject *__pyx_v___pyx_state); /*proto*/
static PyObject *__pyx_pw_4grpc_7_cython_6cygrpc_14IntegratedCall_9__setstate_cython__(PyObject *__pyx_v_self, PyObject *__pyx_v___pyx_state) {
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__setstate_cython__ (wrapper)", 0);
  __pyx_r = __pyx_pf_4grpc_7_cython_6cygrpc_14IntegratedCall_8__setstate_cython__(((struct __pyx_obj_4grpc_7_cython_6cygrpc_IntegratedCall *)__pyx_v_self), ((PyObject *)__pyx_v___pyx_state));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_4grpc_7_cython_6cygrpc_14IntegratedCall_8__setstate_cython__(CYTHON_UNUSED struct __pyx_obj_4grpc_7_cython_6cygrpc_IntegratedCall *__pyx_v_self, CYTHON_UNUSED PyObject *__pyx_v___pyx_state) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("__setstate_cython__", 0);

  /* "(tree fragment)":4
 *     raise TypeError("no default __reduce__ due to non-trivial __cinit__")
 * def __setstate_cython__(self, __pyx_state):
 *     raise TypeError("no default __reduce__ due to non-trivial __cinit__")             # <<<<<<<<<<<<<<
 */
  __pyx_t_1 = __Pyx_PyObject_Call(__pyx_builtin_TypeError, __pyx_tuple__19, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(11, 4, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_Raise(__pyx_t_1, 0, 0, 0);
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  __PYX_ERR(11, 4, __pyx_L1_error)

  /* "(tree fragment)":3
 * def __reduce_cython__(self):
 *     raise TypeError("no default __reduce__ due to non-trivial __cinit__")
 * def __setstate_cython__(self, __pyx_state):             # <<<<<<<<<<<<<<
 *     raise TypeError("no default __reduce__ due to non-trivial __cinit__")
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_AddTraceback("grpc._cython.cygrpc.IntegratedCall.__setstate_cython__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "src/python/grpcio/grpc/_cython/_cygrpc/channel.pyx.pxi":290
 *   call_state = _CallState()
 * 
 *   def on_success(started_tags):             # <<<<<<<<<<<<<<
 *     for started_tag in started_tags:
 *       state.integrated_call_states[started_tag] = call_state
 */

/* Python wrapper */
static PyObject *__pyx_pw_4grpc_7_cython_6cygrpc_16_integrated_call_1on_success(PyObject *__pyx_self, PyObject *__pyx_v_started_tags); /*proto*/
static PyMethodDef __pyx_mdef_4grpc_7_cython_6cygrpc_16_integrated_call_1on_success = {"on_success", (PyCFunction)__pyx_pw_4grpc_7_cython_6cygrpc_16_integrated_call_1on_success, METH_O, 0};
static PyObject *__pyx_pw_4grpc_7_cython_6cygrpc_16_integrated_call_1on_success(PyObject *__pyx_self, PyObject *__pyx_v_started_tags) {
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("on_success (wrapper)", 0);
  __pyx_r = __pyx_pf_4grpc_7_cython_6cygrpc_16_integrated_call_on_success(__pyx_self, ((PyObject *)__pyx_v_started_tags));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_4grpc_7_cython_6cygrpc_16_integrated_call_on_success(PyObject *__pyx_self, PyObject *__pyx_v_started_tags) {
  struct __pyx_obj_4grpc_7_cython_6cygrpc___pyx_scope_struct____pyx_f_4grpc_7_cython_6cygrpc__integrated_call *__pyx_cur_scope;
  struct __pyx_obj_4grpc_7_cython_6cygrpc___pyx_scope_struct____pyx_f_4grpc_7_cython_6cygrpc__integrated_call *__pyx_outer_scope;
  PyObject *__pyx_v_started_tag = NULL;
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  Py_ssize_t __pyx_t_2;
  PyObject *(*__pyx_t_3)(PyObject *);
  PyObject *__pyx_t_4 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("on_success", 0);
  __pyx_outer_scope = (struct __pyx_obj_4grpc_7_cython_6cygrpc___pyx_scope_struct____pyx_f_4grpc_7_cython_6cygrpc__integrated_call *) __Pyx_CyFunction_GetClosure(__pyx_self);
  __pyx_cur_scope = __pyx_outer_scope;

  /* "src/python/grpcio/grpc/_cython/_cygrpc/channel.pyx.pxi":291
 * 
 *   def on_success(started_tags):
 *     for started_tag in started_tags:             # <<<<<<<<<<<<<<
 *       state.integrated_call_states[started_tag] = call_state
 * 
 */
  if (likely(PyList_CheckExact(__pyx_v_started_tags)) || PyTuple_CheckExact(__pyx_v_started_tags)) {
    __pyx_t_1 = __pyx_v_started_tags; __Pyx_INCREF(__pyx_t_1); __pyx_t_2 = 0;
    __pyx_t_3 = NULL;
  } else {
    __pyx_t_2 = -1; __pyx_t_1 = PyObject_GetIter(__pyx_v_started_tags); if (unlikely(!__pyx_t_1)) __PYX_ERR(12, 291, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_1);
    __pyx_t_3 = Py_TYPE(__pyx_t_1)->tp_iternext; if (unlikely(!__pyx_t_3)) __PYX_ERR(12, 291, __pyx_L1_error)
  }
  for (;;) {
    if (likely(!__pyx_t_3)) {
      if (likely(PyList_CheckExact(__pyx_t_1))) {
        if (__pyx_t_2 >= PyList_GET_SIZE(__pyx_t_1)) break;
        #if CYTHON_ASSUME_SAFE_MACROS && !CYTHON_AVOID_BORROWED_REFS
        __pyx_t_4 = PyList_GET_ITEM(__pyx_t_1, __pyx_t_2); __Pyx_INCREF(__pyx_t_4); __pyx_t_2++; if (unlikely(0 < 0)) __PYX_ERR(12, 291, __pyx_L1_error)
        #else
        __pyx_t_4 = PySequence_ITEM(__pyx_t_1, __pyx_t_2); __pyx_t_2++; if (unlikely(!__pyx_t_4)) __PYX_ERR(12, 291, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_4);
        #endif
      } else {
        if (__pyx_t_2 >= PyTuple_GET_SIZE(__pyx_t_1)) break;
        #if CYTHON_ASSUME_SAFE_MACROS && !CYTHON_AVOID_BORROWED_REFS
        __pyx_t_4 = PyTuple_GET_ITEM(__pyx_t_1, __pyx_t_2); __Pyx_INCREF(__pyx_t_4); __pyx_t_2++; if (unlikely(0 < 0)) __PYX_ERR(12, 291, __pyx_L1_error)
        #else
        __pyx_t_4 = PySequence_ITEM(__pyx_t_1, __pyx_t_2); __pyx_t_2++; if (unlikely(!__pyx_t_4)) __PYX_ERR(12, 291, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_4);
        #endif
      }
    } else {
      __pyx_t_4 = __pyx_t_3(__pyx_t_1);
      if (unlikely(!__pyx_t_4)) {
        PyObject* exc_type = PyErr_Occurred();
        if (exc_type) {
          if (likely(__Pyx_PyErr_GivenExceptionMatches(exc_type, PyExc_StopIteration))) PyErr_Clear();
          else __PYX_ERR(12, 291, __pyx_L1_error)
        }
        break;
      }
      __Pyx_GOTREF(__pyx_t_4);
    }
    __Pyx_XDECREF_SET(__pyx_v_started_tag, __pyx_t_4);
    __pyx_t_4 = 0;

    /* "src/python/grpcio/grpc/_cython/_cygrpc/channel.pyx.pxi":292
 *   def on_success(started_tags):
 *     for started_tag in started_tags:
 *       state.integrated_call_states[started_tag] = call_state             # <<<<<<<<<<<<<<
 * 
 *   _call(
 */
    if (unlikely(!__pyx_cur_scope->__pyx_v_call_state)) { __Pyx_RaiseClosureNameError("call_state"); __PYX_ERR(12, 292, __pyx_L1_error) }
    if (unlikely(!__pyx_cur_scope->__pyx_v_state)) { __Pyx_RaiseClosureNameError("state"); __PYX_ERR(12, 292, __pyx_L1_error) }
    if (unlikely(__pyx_cur_scope->__pyx_v_state->integrated_call_states == Py_None)) {
      PyErr_SetString(PyExc_TypeError, "'NoneType' object is not subscriptable");
      __PYX_ERR(12, 292, __pyx_L1_error)
    }
    if (unlikely(PyDict_SetItem(__pyx_cur_scope->__pyx_v_state->integrated_call_states, __pyx_v_started_tag, ((PyObject *)__pyx_cur_scope->__pyx_v_call_state)) < 0)) __PYX_ERR(12, 292, __pyx_L1_error)

    /* "src/python/grpcio/grpc/_cython/_cygrpc/channel.pyx.pxi":291
 * 
 *   def on_success(started_tags):
 *     for started_tag in started_tags:             # <<<<<<<<<<<<<<
 *       state.integrated_call_states[started_tag] = call_state
 * 
 */
  }
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;

  /* "src/python/grpcio/grpc/_cython/_cygrpc/channel.pyx.pxi":290
 *   call_state = _CallState()
 * 
 *   def on_success(started_tags):             # <<<<<<<<<<<<<<
 *     for started_tag in started_tags:
 *       state.integrated_call_states[started_tag] = call_state
 */

  /* function exit code */
  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_XDECREF(__pyx_t_4);
  __Pyx_AddTraceback("grpc._cython.cygrpc._integrated_call.on_success", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XDECREF(__pyx_v_started_tag);
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "src/python/grpcio/grpc/_cython/_cygrpc/channel.pyx.pxi":284
 * 
 * 
 * cdef IntegratedCall _integrated_call(             # <<<<<<<<<<<<<<
 *     _ChannelState state, int flags, method, host, object deadline,
 *     object metadata, CallCredentials credentials, operationses_and_user_tags,
 */

static struct __pyx_obj_4grpc_7_cython_6cygrpc_IntegratedCall *__pyx_f_4grpc_7_cython_6cygrpc__integrated_call(struct __pyx_obj_4grpc_7_cython_6cygrpc__ChannelState *__pyx_v_state, int __pyx_v_flags, PyObject *__pyx_v_method, PyObject *__pyx_v_host, PyObject *__pyx_v_deadline, PyObject *__pyx_v_metadata, struct __pyx_obj_4grpc_7_cython_6cygrpc_CallCredentials *__pyx_v_credentials, PyObject *__pyx_v_operationses_and_user_tags, PyObject *__pyx_v_context) {
  struct __pyx_obj_4grpc_7_cython_6cygrpc___pyx_scope_struct____pyx_f_4grpc_7_cython_6cygrpc__integrated_call *__pyx_cur_scope;
  PyObject *__pyx_v_on_success = 0;
  struct __pyx_obj_4grpc_7_cython_6cygrpc_IntegratedCall *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  PyObject *__pyx_t_2 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("_integrated_call", 0);
  __pyx_cur_scope = (struct __pyx_obj_4grpc_7_cython_6cygrpc___pyx_scope_struct____pyx_f_4grpc_7_cython_6cygrpc__integrated_call *)__pyx_tp_new_4grpc_7_cython_6cygrpc___pyx_scope_struct____pyx_f_4grpc_7_cython_6cygrpc__integrated_call(__pyx_ptype_4grpc_7_cython_6cygrpc___pyx_scope_struct____pyx_f_4grpc_7_cython_6cygrpc__integrated_call, __pyx_empty_tuple, NULL);
  if (unlikely(!__pyx_cur_scope)) {
    __pyx_cur_scope = ((struct __pyx_obj_4grpc_7_cython_6cygrpc___pyx_scope_struct____pyx_f_4grpc_7_cython_6cygrpc__integrated_call *)Py_None);
    __Pyx_INCREF(Py_None);
    __PYX_ERR(12, 284, __pyx_L1_error)
  } else {
    __Pyx_GOTREF(__pyx_cur_scope);
  }
  __pyx_cur_scope->__pyx_v_state = __pyx_v_state;
  __Pyx_INCREF((PyObject *)__pyx_cur_scope->__pyx_v_state);
  __Pyx_GIVEREF((PyObject *)__pyx_cur_scope->__pyx_v_state);

  /* "src/python/grpcio/grpc/_cython/_cygrpc/channel.pyx.pxi":288
 *     object metadata, CallCredentials credentials, operationses_and_user_tags,
 *     object context):
 *   call_state = _CallState()             # <<<<<<<<<<<<<<
 * 
 *   def on_success(started_tags):
 */
  __pyx_t_1 = __Pyx_PyObject_CallNoArg(((PyObject *)__pyx_ptype_4grpc_7_cython_6cygrpc__CallState)); if (unlikely(!__pyx_t_1)) __PYX_ERR(12, 288, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_GIVEREF(__pyx_t_1);
  __pyx_cur_scope->__pyx_v_call_state = ((struct __pyx_obj_4grpc_7_cython_6cygrpc__CallState *)__pyx_t_1);
  __pyx_t_1 = 0;

  /* "src/python/grpcio/grpc/_cython/_cygrpc/channel.pyx.pxi":290
 *   call_state = _CallState()
 * 
 *   def on_success(started_tags):             # <<<<<<<<<<<<<<
 *     for started_tag in started_tags:
 *       state.integrated_call_states[started_tag] = call_state
 */
  __pyx_t_1 = __Pyx_CyFunction_New(&__pyx_mdef_4grpc_7_cython_6cygrpc_16_integrated_call_1on_success, 0, __pyx_n_s_integrated_call_locals_on_succe, ((PyObject*)__pyx_cur_scope), __pyx_n_s_grpc__cython_cygrpc, __pyx_d, ((PyObject *)__pyx_codeobj__21)); if (unlikely(!__pyx_t_1)) __PYX_ERR(12, 290, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_v_on_success = __pyx_t_1;
  __pyx_t_1 = 0;

  /* "src/python/grpcio/grpc/_cython/_cygrpc/channel.pyx.pxi":295
 * 
 *   _call(
 *       state, call_state, state.c_call_completion_queue, on_success, flags,             # <<<<<<<<<<<<<<
 *       method, host, deadline, credentials, operationses_and_user_tags, metadata, context)
 * 
 */
  __pyx_t_1 = ((PyObject *)__pyx_cur_scope->__pyx_v_state);
  __Pyx_INCREF(__pyx_t_1);
  __pyx_t_2 = ((PyObject *)__pyx_cur_scope->__pyx_v_call_state);
  __Pyx_INCREF(__pyx_t_2);

  /* "src/python/grpcio/grpc/_cython/_cygrpc/channel.pyx.pxi":294
 *       state.integrated_call_states[started_tag] = call_state
 * 
 *   _call(             # <<<<<<<<<<<<<<
 *       state, call_state, state.c_call_completion_queue, on_success, flags,
 *       method, host, deadline, credentials, operationses_and_user_tags, metadata, context)
 */
  __pyx_f_4grpc_7_cython_6cygrpc__call(((struct __pyx_obj_4grpc_7_cython_6cygrpc__ChannelState *)__pyx_t_1), ((struct __pyx_obj_4grpc_7_cython_6cygrpc__CallState *)__pyx_t_2), __pyx_cur_scope->__pyx_v_state->c_call_completion_queue, __pyx_v_on_success, __pyx_v_flags, __pyx_v_method, __pyx_v_host, __pyx_v_deadline, __pyx_v_credentials, __pyx_v_operationses_and_user_tags, __pyx_v_metadata, __pyx_v_context); if (unlikely(PyErr_Occurred())) __PYX_ERR(12, 294, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;

  /* "src/python/grpcio/grpc/_cython/_cygrpc/channel.pyx.pxi":298
 *       method, host, deadline, credentials, operationses_and_user_tags, metadata, context)
 * 
 *   return IntegratedCall(state, call_state)             # <<<<<<<<<<<<<<
 * 
 * 
 */
  __Pyx_XDECREF(((PyObject *)__pyx_r));
  __pyx_t_2 = PyTuple_New(2); if (unlikely(!__pyx_t_2)) __PYX_ERR(12, 298, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __Pyx_INCREF(((PyObject *)__pyx_cur_scope->__pyx_v_state));
  __Pyx_GIVEREF(((PyObject *)__pyx_cur_scope->__pyx_v_state));
  PyTuple_SET_ITEM(__pyx_t_2, 0, ((PyObject *)__pyx_cur_scope->__pyx_v_state));
  __Pyx_INCREF(((PyObject *)__pyx_cur_scope->__pyx_v_call_state));
  __Pyx_GIVEREF(((PyObject *)__pyx_cur_scope->__pyx_v_call_state));
  PyTuple_SET_ITEM(__pyx_t_2, 1, ((PyObject *)__pyx_cur_scope->__pyx_v_call_state));
  __pyx_t_1 = __Pyx_PyObject_Call(((PyObject *)__pyx_ptype_4grpc_7_cython_6cygrpc_IntegratedCall), __pyx_t_2, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(12, 298, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  __pyx_r = ((struct __pyx_obj_4grpc_7_cython_6cygrpc_IntegratedCall *)__pyx_t_1);
  __pyx_t_1 = 0;
  goto __pyx_L0;

  /* "src/python/grpcio/grpc/_cython/_cygrpc/channel.pyx.pxi":284
 * 
 * 
 * cdef IntegratedCall _integrated_call(             # <<<<<<<<<<<<<<
 *     _ChannelState state, int flags, method, host, object deadline,
 *     object metadata, CallCredentials credentials, operationses_and_user_tags,
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_AddTraceback("grpc._cython.cygrpc._integrated_call", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = 0;
  __pyx_L0:;
  __Pyx_XDECREF(__pyx_v_on_success);
  __Pyx_DECREF(((PyObject *)__pyx_cur_scope));
  __Pyx_XGIVEREF((PyObject *)__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "src/python/grpcio/grpc/_cython/_cygrpc/channel.pyx.pxi":301
 * 
 * 
 * cdef object _process_segregated_call_tag(             # <<<<<<<<<<<<<<
 *     _ChannelState state, _CallState call_state,
 *     grpc_completion_queue *c_completion_queue, _BatchOperationTag tag):
 */

static PyObject *__pyx_f_4grpc_7_cython_6cygrpc__process_segregated_call_tag(struct __pyx_obj_4grpc_7_cython_6cygrpc__ChannelState *__pyx_v_state, struct __pyx_obj_4grpc_7_cython_6cygrpc__CallState *__pyx_v_call_state, grpc_completion_queue *__pyx_v_c_completion_queue, struct __pyx_obj_4grpc_7_cython_6cygrpc__BatchOperationTag *__pyx_v_tag) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  int __pyx_t_1;
  int __pyx_t_2;
  int __pyx_t_3;
  PyObject *__pyx_t_4 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("_process_segregated_call_tag", 0);

  /* "src/python/grpcio/grpc/_cython/_cygrpc/channel.pyx.pxi":304
 *     _ChannelState state, _CallState call_state,
 *     grpc_completion_queue *c_completion_queue, _BatchOperationTag tag):
 *   call_state.due.remove(tag)             # <<<<<<<<<<<<<<
 *   if not call_state.due:
 *     grpc_call_unref(call_state.c_call)
 */
  if (unlikely(__pyx_v_call_state->due == Py_None)) {
    PyErr_Format(PyExc_AttributeError, "'NoneType' object has no attribute '%.30s'", "remove");
    __PYX_ERR(12, 304, __pyx_L1_error)
  }
  __pyx_t_1 = __Pyx_PySet_Remove(__pyx_v_call_state->due, ((PyObject *)__pyx_v_tag)); if (unlikely(__pyx_t_1 == ((int)-1))) __PYX_ERR(12, 304, __pyx_L1_error)

  /* "src/python/grpcio/grpc/_cython/_cygrpc/channel.pyx.pxi":305
 *     grpc_completion_queue *c_completion_queue, _BatchOperationTag tag):
 *   call_state.due.remove(tag)
 *   if not call_state.due:             # <<<<<<<<<<<<<<
 *     grpc_call_unref(call_state.c_call)
 *     call_state.c_call = NULL
 */
  __pyx_t_2 = (__pyx_v_call_state->due != Py_None)&&(PySet_GET_SIZE(__pyx_v_call_state->due) != 0);
  __pyx_t_3 = ((!__pyx_t_2) != 0);
  if (__pyx_t_3) {

    /* "src/python/grpcio/grpc/_cython/_cygrpc/channel.pyx.pxi":306
 *   call_state.due.remove(tag)
 *   if not call_state.due:
 *     grpc_call_unref(call_state.c_call)             # <<<<<<<<<<<<<<
 *     call_state.c_call = NULL
 *     state.segregated_call_states.remove(call_state)
 */
    grpc_call_unref(__pyx_v_call_state->c_call);

    /* "src/python/grpcio/grpc/_cython/_cygrpc/channel.pyx.pxi":307
 *   if not call_state.due:
 *     grpc_call_unref(call_state.c_call)
 *     call_state.c_call = NULL             # <<<<<<<<<<<<<<
 *     state.segregated_call_states.remove(call_state)
 *     _destroy_c_completion_queue(c_completion_queue)
 */
    __pyx_v_call_state->c_call = NULL;

    /* "src/python/grpcio/grpc/_cython/_cygrpc/channel.pyx.pxi":308
 *     grpc_call_unref(call_state.c_call)
 *     call_state.c_call = NULL
 *     state.segregated_call_states.remove(call_state)             # <<<<<<<<<<<<<<
 *     _destroy_c_completion_queue(c_completion_queue)
 *     return True
 */
    if (unlikely(__pyx_v_state->segregated_call_states == Py_None)) {
      PyErr_Format(PyExc_AttributeError, "'NoneType' object has no attribute '%.30s'", "remove");
      __PYX_ERR(12, 308, __pyx_L1_error)
    }
    __pyx_t_1 = __Pyx_PySet_Remove(__pyx_v_state->segregated_call_states, ((PyObject *)__pyx_v_call_state)); if (unlikely(__pyx_t_1 == ((int)-1))) __PYX_ERR(12, 308, __pyx_L1_error)

    /* "src/python/grpcio/grpc/_cython/_cygrpc/channel.pyx.pxi":309
 *     call_state.c_call = NULL
 *     state.segregated_call_states.remove(call_state)
 *     _destroy_c_completion_queue(c_completion_queue)             # <<<<<<<<<<<<<<
 *     return True
 *   else:
 */
    __pyx_t_4 = __pyx_f_4grpc_7_cython_6cygrpc__destroy_c_completion_queue(__pyx_v_c_completion_queue); if (unlikely(!__pyx_t_4)) __PYX_ERR(12, 309, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_4);
    __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;

    /* "src/python/grpcio/grpc/_cython/_cygrpc/channel.pyx.pxi":310
 *     state.segregated_call_states.remove(call_state)
 *     _destroy_c_completion_queue(c_completion_queue)
 *     return True             # <<<<<<<<<<<<<<
 *   else:
 *     return False
 */
    __Pyx_XDECREF(__pyx_r);
    __Pyx_INCREF(Py_True);
    __pyx_r = Py_True;
    goto __pyx_L0;

    /* "src/python/grpcio/grpc/_cython/_cygrpc/channel.pyx.pxi":305
 *     grpc_completion_queue *c_completion_queue, _BatchOperationTag tag):
 *   call_state.due.remove(tag)
 *   if not call_state.due:             # <<<<<<<<<<<<<<
 *     grpc_call_unref(call_state.c_call)
 *     call_state.c_call = NULL
 */
  }

  /* "src/python/grpcio/grpc/_cython/_cygrpc/channel.pyx.pxi":312
 *     return True
 *   else:
 *     return False             # <<<<<<<<<<<<<<
 * 
 * 
 */
  /*else*/ {
    __Pyx_XDECREF(__pyx_r);
    __Pyx_INCREF(Py_False);
    __pyx_r = Py_False;
    goto __pyx_L0;
  }

  /* "src/python/grpcio/grpc/_cython/_cygrpc/channel.pyx.pxi":301
 * 
 * 
 * cdef object _process_segregated_call_tag(             # <<<<<<<<<<<<<<
 *     _ChannelState state, _CallState call_state,
 *     grpc_completion_queue *c_completion_queue, _BatchOperationTag tag):
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_4);
  __Pyx_AddTraceback("grpc._cython.cygrpc._process_segregated_call_tag", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = 0;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "src/python/grpcio/grpc/_cython/_cygrpc/channel.pyx.pxi":317
 * cdef class SegregatedCall:
 * 
 *   def __cinit__(self, _ChannelState channel_state, _CallState call_state):             # <<<<<<<<<<<<<<
 *     self._channel_state = channel_state
 *     self._call_state = call_state
 */

/* Python wrapper */
static int __pyx_pw_4grpc_7_cython_6cygrpc_14SegregatedCall_1__cinit__(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
static int __pyx_pw_4grpc_7_cython_6cygrpc_14SegregatedCall_1__cinit__(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
  struct __pyx_obj_4grpc_7_cython_6cygrpc__ChannelState *__pyx_v_channel_state = 0;
  struct __pyx_obj_4grpc_7_cython_6cygrpc__CallState *__pyx_v_call_state = 0;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  int __pyx_r;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__cinit__ (wrapper)", 0);
  {
    static PyObject **__pyx_pyargnames[] = {&__pyx_n_s_channel_state,&__pyx_n_s_call_state,0};
    PyObject* values[2] = {0,0};
    if (unlikely(__pyx_kwds)) {
      Py_ssize_t kw_args;
      const Py_ssize_t pos_args = PyTuple_GET_SIZE(__pyx_args);
      switch (pos_args) {
        case  2: values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
        CYTHON_FALLTHROUGH;
        case  1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
        CYTHON_FALLTHROUGH;
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      kw_args = PyDict_Size(__pyx_kwds);
      switch (pos_args) {
        case  0:
        if (likely((values[0] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_channel_state)) != 0)) kw_args--;
        else goto __pyx_L5_argtuple_error;
        CYTHON_FALLTHROUGH;
        case  1:
        if (likely((values[1] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_call_state)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("__cinit__", 1, 2, 2, 1); __PYX_ERR(12, 317, __pyx_L3_error)
        }
      }
      if (unlikely(kw_args > 0)) {
        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "__cinit__") < 0)) __PYX_ERR(12, 317, __pyx_L3_error)
      }
    } else if (PyTuple_GET_SIZE(__pyx_args) != 2) {
      goto __pyx_L5_argtuple_error;
    } else {
      values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
      values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
    }
    __pyx_v_channel_state = ((struct __pyx_obj_4grpc_7_cython_6cygrpc__ChannelState *)values[0]);
    __pyx_v_call_state = ((struct __pyx_obj_4grpc_7_cython_6cygrpc__CallState *)values[1]);
  }
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("__cinit__", 1, 2, 2, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(12, 317, __pyx_L3_error)
  __pyx_L3_error:;
  __Pyx_AddTraceback("grpc._cython.cygrpc.SegregatedCall.__cinit__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return -1;
  __pyx_L4_argument_unpacking_done:;
  if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_channel_state), __pyx_ptype_4grpc_7_cython_6cygrpc__ChannelState, 1, "channel_state", 0))) __PYX_ERR(12, 317, __pyx_L1_error)
  if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_call_state), __pyx_ptype_4grpc_7_cython_6cygrpc__CallState, 1, "call_state", 0))) __PYX_ERR(12, 317, __pyx_L1_error)
  __pyx_r = __pyx_pf_4grpc_7_cython_6cygrpc_14SegregatedCall___cinit__(((struct __pyx_obj_4grpc_7_cython_6cygrpc_SegregatedCall *)__pyx_v_self), __pyx_v_channel_state, __pyx_v_call_state);

  /* function exit code */
  goto __pyx_L0;
  __pyx_L1_error:;
  __pyx_r = -1;
  __pyx_L0:;
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static int __pyx_pf_4grpc_7_cython_6cygrpc_14SegregatedCall___cinit__(struct __pyx_obj_4grpc_7_cython_6cygrpc_SegregatedCall *__pyx_v_self, struct __pyx_obj_4grpc_7_cython_6cygrpc__ChannelState *__pyx_v_channel_state, struct __pyx_obj_4grpc_7_cython_6cygrpc__CallState *__pyx_v_call_state) {
  int __pyx_r;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__cinit__", 0);

  /* "src/python/grpcio/grpc/_cython/_cygrpc/channel.pyx.pxi":318
 * 
 *   def __cinit__(self, _ChannelState channel_state, _CallState call_state):
 *     self._channel_state = channel_state             # <<<<<<<<<<<<<<
 *     self._call_state = call_state
 * 
 */
  __Pyx_INCREF(((PyObject *)__pyx_v_channel_state));
  __Pyx_GIVEREF(((PyObject *)__pyx_v_channel_state));
  __Pyx_GOTREF(__pyx_v_self->_channel_state);
  __Pyx_DECREF(((PyObject *)__pyx_v_self->_channel_state));
  __pyx_v_self->_channel_state = __pyx_v_channel_state;

  /* "src/python/grpcio/grpc/_cython/_cygrpc/channel.pyx.pxi":319
 *   def __cinit__(self, _ChannelState channel_state, _CallState call_state):
 *     self._channel_state = channel_state
 *     self._call_state = call_state             # <<<<<<<<<<<<<<
 * 
 *   def operate(self, operations, tag):
 */
  __Pyx_INCREF(((PyObject *)__pyx_v_call_state));
  __Pyx_GIVEREF(((PyObject *)__pyx_v_call_state));
  __Pyx_GOTREF(__pyx_v_self->_call_state);
  __Pyx_DECREF(((PyObject *)__pyx_v_self->_call_state));
  __pyx_v_self->_call_state = __pyx_v_call_state;

  /* "src/python/grpcio/grpc/_cython/_cygrpc/channel.pyx.pxi":317
 * cdef class SegregatedCall:
 * 
 *   def __cinit__(self, _ChannelState channel_state, _CallState call_state):             # <<<<<<<<<<<<<<
 *     self._channel_state = channel_state
 *     self._call_state = call_state
 */

  /* function exit code */
  __pyx_r = 0;
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "src/python/grpcio/grpc/_cython/_cygrpc/channel.pyx.pxi":321
 *     self._call_state = call_state
 * 
 *   def operate(self, operations, tag):             # <<<<<<<<<<<<<<
 *     return _operate_from_segregated_call(
 *         self._channel_state, self._call_state, operations, tag)
 */

/* Python wrapper */
static PyObject *__pyx_pw_4grpc_7_cython_6cygrpc_14SegregatedCall_3operate(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
static PyObject *__pyx_pw_4grpc_7_cython_6cygrpc_14SegregatedCall_3operate(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
  PyObject *__pyx_v_operations = 0;
  PyObject *__pyx_v_tag = 0;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("operate (wrapper)", 0);
  {
    static PyObject **__pyx_pyargnames[] = {&__pyx_n_s_operations,&__pyx_n_s_tag,0};
    PyObject* values[2] = {0,0};
    if (unlikely(__pyx_kwds)) {
      Py_ssize_t kw_args;
      const Py_ssize_t pos_args = PyTuple_GET_SIZE(__pyx_args);
      switch (pos_args) {
        case  2: values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
        CYTHON_FALLTHROUGH;
        case  1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
        CYTHON_FALLTHROUGH;
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      kw_args = PyDict_Size(__pyx_kwds);
      switch (pos_args) {
        case  0:
        if (likely((values[0] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_operations)) != 0)) kw_args--;
        else goto __pyx_L5_argtuple_error;
        CYTHON_FALLTHROUGH;
        case  1:
        if (likely((values[1] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_tag)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("operate", 1, 2, 2, 1); __PYX_ERR(12, 321, __pyx_L3_error)
        }
      }
      if (unlikely(kw_args > 0)) {
        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "operate") < 0)) __PYX_ERR(12, 321, __pyx_L3_error)
      }
    } else if (PyTuple_GET_SIZE(__pyx_args) != 2) {
      goto __pyx_L5_argtuple_error;
    } else {
      values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
      values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
    }
    __pyx_v_operations = values[0];
    __pyx_v_tag = values[1];
  }
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("operate", 1, 2, 2, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(12, 321, __pyx_L3_error)
  __pyx_L3_error:;
  __Pyx_AddTraceback("grpc._cython.cygrpc.SegregatedCall.operate", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  __pyx_r = __pyx_pf_4grpc_7_cython_6cygrpc_14SegregatedCall_2operate(((struct __pyx_obj_4grpc_7_cython_6cygrpc_SegregatedCall *)__pyx_v_self), __pyx_v_operations, __pyx_v_tag);

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_4grpc_7_cython_6cygrpc_14SegregatedCall_2operate(struct __pyx_obj_4grpc_7_cython_6cygrpc_SegregatedCall *__pyx_v_self, PyObject *__pyx_v_operations, PyObject *__pyx_v_tag) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  PyObject *__pyx_t_2 = NULL;
  PyObject *__pyx_t_3 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("operate", 0);

  /* "src/python/grpcio/grpc/_cython/_cygrpc/channel.pyx.pxi":322
 * 
 *   def operate(self, operations, tag):
 *     return _operate_from_segregated_call(             # <<<<<<<<<<<<<<
 *         self._channel_state, self._call_state, operations, tag)
 * 
 */
  __Pyx_XDECREF(__pyx_r);

  /* "src/python/grpcio/grpc/_cython/_cygrpc/channel.pyx.pxi":323
 *   def operate(self, operations, tag):
 *     return _operate_from_segregated_call(
 *         self._channel_state, self._call_state, operations, tag)             # <<<<<<<<<<<<<<
 * 
 *   def cancel(self, code, details):
 */
  __pyx_t_1 = ((PyObject *)__pyx_v_self->_channel_state);
  __Pyx_INCREF(__pyx_t_1);
  __pyx_t_2 = ((PyObject *)__pyx_v_self->_call_state);
  __Pyx_INCREF(__pyx_t_2);

  /* "src/python/grpcio/grpc/_cython/_cygrpc/channel.pyx.pxi":322
 * 
 *   def operate(self, operations, tag):
 *     return _operate_from_segregated_call(             # <<<<<<<<<<<<<<
 *         self._channel_state, self._call_state, operations, tag)
 * 
 */
  __pyx_t_3 = __pyx_f_4grpc_7_cython_6cygrpc__operate_from_segregated_call(((struct __pyx_obj_4grpc_7_cython_6cygrpc__ChannelState *)__pyx_t_1), ((struct __pyx_obj_4grpc_7_cython_6cygrpc__CallState *)__pyx_t_2), __pyx_v_operations, __pyx_v_tag); if (unlikely(!__pyx_t_3)) __PYX_ERR(12, 322, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  __pyx_r = __pyx_t_3;
  __pyx_t_3 = 0;
  goto __pyx_L0;

  /* "src/python/grpcio/grpc/_cython/_cygrpc/channel.pyx.pxi":321
 *     self._call_state = call_state
 * 
 *   def operate(self, operations, tag):             # <<<<<<<<<<<<<<
 *     return _operate_from_segregated_call(
 *         self._channel_state, self._call_state, operations, tag)
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_XDECREF(__pyx_t_3);
  __Pyx_AddTraceback("grpc._cython.cygrpc.SegregatedCall.operate", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "src/python/grpcio/grpc/_cython/_cygrpc/channel.pyx.pxi":325
 *         self._channel_state, self._call_state, operations, tag)
 * 
 *   def cancel(self, code, details):             # <<<<<<<<<<<<<<
 *     _cancel(self._channel_state, self._call_state, code, details)
 * 
 */

/* Python wrapper */
static PyObject *__pyx_pw_4grpc_7_cython_6cygrpc_14SegregatedCall_5cancel(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
static PyObject *__pyx_pw_4grpc_7_cython_6cygrpc_14SegregatedCall_5cancel(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
  PyObject *__pyx_v_code = 0;
  PyObject *__pyx_v_details = 0;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("cancel (wrapper)", 0);
  {
    static PyObject **__pyx_pyargnames[] = {&__pyx_n_s_code,&__pyx_n_s_details,0};
    PyObject* values[2] = {0,0};
    if (unlikely(__pyx_kwds)) {
      Py_ssize_t kw_args;
      const Py_ssize_t pos_args = PyTuple_GET_SIZE(__pyx_args);
      switch (pos_args) {
        case  2: values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
        CYTHON_FALLTHROUGH;
        case  1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
        CYTHON_FALLTHROUGH;
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      kw_args = PyDict_Size(__pyx_kwds);
      switch (pos_args) {
        case  0:
        if (likely((values[0] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_code)) != 0)) kw_args--;
        else goto __pyx_L5_argtuple_error;
        CYTHON_FALLTHROUGH;
        case  1:
        if (likely((values[1] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_details)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("cancel", 1, 2, 2, 1); __PYX_ERR(12, 325, __pyx_L3_error)
        }
      }
      if (unlikely(kw_args > 0)) {
        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "cancel") < 0)) __PYX_ERR(12, 325, __pyx_L3_error)
      }
    } else if (PyTuple_GET_SIZE(__pyx_args) != 2) {
      goto __pyx_L5_argtuple_error;
    } else {
      values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
      values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
    }
    __pyx_v_code = values[0];
    __pyx_v_details = values[1];
  }
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("cancel", 1, 2, 2, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(12, 325, __pyx_L3_error)
  __pyx_L3_error:;
  __Pyx_AddTraceback("grpc._cython.cygrpc.SegregatedCall.cancel", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  __pyx_r = __pyx_pf_4grpc_7_cython_6cygrpc_14SegregatedCall_4cancel(((struct __pyx_obj_4grpc_7_cython_6cygrpc_SegregatedCall *)__pyx_v_self), __pyx_v_code, __pyx_v_details);

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_4grpc_7_cython_6cygrpc_14SegregatedCall_4cancel(struct __pyx_obj_4grpc_7_cython_6cygrpc_SegregatedCall *__pyx_v_self, PyObject *__pyx_v_code, PyObject *__pyx_v_details) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  PyObject *__pyx_t_2 = NULL;
  grpc_status_code __pyx_t_3;
  PyObject *__pyx_t_4 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("cancel", 0);

  /* "src/python/grpcio/grpc/_cython/_cygrpc/channel.pyx.pxi":326
 * 
 *   def cancel(self, code, details):
 *     _cancel(self._channel_state, self._call_state, code, details)             # <<<<<<<<<<<<<<
 * 
 *   def next_event(self):
 */
  __pyx_t_1 = ((PyObject *)__pyx_v_self->_channel_state);
  __Pyx_INCREF(__pyx_t_1);
  __pyx_t_2 = ((PyObject *)__pyx_v_self->_call_state);
  __Pyx_INCREF(__pyx_t_2);
  __pyx_t_3 = ((grpc_status_code)__Pyx_PyInt_As_grpc_status_code(__pyx_v_code)); if (unlikely(PyErr_Occurred())) __PYX_ERR(12, 326, __pyx_L1_error)
  if (!(likely(PyString_CheckExact(__pyx_v_details))||((__pyx_v_details) == Py_None)||(PyErr_Format(PyExc_TypeError, "Expected %.16s, got %.200s", "str", Py_TYPE(__pyx_v_details)->tp_name), 0))) __PYX_ERR(12, 326, __pyx_L1_error)
  __pyx_t_4 = __pyx_f_4grpc_7_cython_6cygrpc__cancel(((struct __pyx_obj_4grpc_7_cython_6cygrpc__ChannelState *)__pyx_t_1), ((struct __pyx_obj_4grpc_7_cython_6cygrpc__CallState *)__pyx_t_2), __pyx_t_3, ((PyObject*)__pyx_v_details)); if (unlikely(!__pyx_t_4)) __PYX_ERR(12, 326, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_4);
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;

  /* "src/python/grpcio/grpc/_cython/_cygrpc/channel.pyx.pxi":325
 *         self._channel_state, self._call_state, operations, tag)
 * 
 *   def cancel(self, code, details):             # <<<<<<<<<<<<<<
 *     _cancel(self._channel_state, self._call_state, code, details)
 * 
 */

  /* function exit code */
  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_XDECREF(__pyx_t_4);
  __Pyx_AddTraceback("grpc._cython.cygrpc.SegregatedCall.cancel", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "src/python/grpcio/grpc/_cython/_cygrpc/channel.pyx.pxi":328
 *     _cancel(self._channel_state, self._call_state, code, details)
 * 
 *   def next_event(self):             # <<<<<<<<<<<<<<
 *     def on_success(tag):
 *       _process_segregated_call_tag(
 */

/* Python wrapper */
static PyObject *__pyx_pw_4grpc_7_cython_6cygrpc_14SegregatedCall_7next_event(PyObject *__pyx_v_self, CYTHON_UNUSED PyObject *unused); /*proto*/
static PyObject *__pyx_pw_4grpc_7_cython_6cygrpc_14SegregatedCall_7next_event(PyObject *__pyx_v_self, CYTHON_UNUSED PyObject *unused) {
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("next_event (wrapper)", 0);
  __pyx_r = __pyx_pf_4grpc_7_cython_6cygrpc_14SegregatedCall_6next_event(((struct __pyx_obj_4grpc_7_cython_6cygrpc_SegregatedCall *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "src/python/grpcio/grpc/_cython/_cygrpc/channel.pyx.pxi":329
 * 
 *   def next_event(self):
 *     def on_success(tag):             # <<<<<<<<<<<<<<
 *       _process_segregated_call_tag(
 *         self._channel_state, self._call_state, self._c_completion_queue, tag)
 */

/* Python wrapper */
static PyObject *__pyx_pw_4grpc_7_cython_6cygrpc_14SegregatedCall_10next_event_1on_success(PyObject *__pyx_self, PyObject *__pyx_v_tag); /*proto*/
static PyMethodDef __pyx_mdef_4grpc_7_cython_6cygrpc_14SegregatedCall_10next_event_1on_success = {"on_success", (PyCFunction)__pyx_pw_4grpc_7_cython_6cygrpc_14SegregatedCall_10next_event_1on_success, METH_O, 0};
static PyObject *__pyx_pw_4grpc_7_cython_6cygrpc_14SegregatedCall_10next_event_1on_success(PyObject *__pyx_self, PyObject *__pyx_v_tag) {
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("on_success (wrapper)", 0);
  __pyx_r = __pyx_pf_4grpc_7_cython_6cygrpc_14SegregatedCall_10next_event_on_success(__pyx_self, ((PyObject *)__pyx_v_tag));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_4grpc_7_cython_6cygrpc_14SegregatedCall_10next_event_on_success(PyObject *__pyx_self, PyObject *__pyx_v_tag) {
  struct __pyx_obj_4grpc_7_cython_6cygrpc___pyx_scope_struct_1_next_event *__pyx_cur_scope;
  struct __pyx_obj_4grpc_7_cython_6cygrpc___pyx_scope_struct_1_next_event *__pyx_outer_scope;
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  PyObject *__pyx_t_2 = NULL;
  PyObject *__pyx_t_3 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("on_success", 0);
  __pyx_outer_scope = (struct __pyx_obj_4grpc_7_cython_6cygrpc___pyx_scope_struct_1_next_event *) __Pyx_CyFunction_GetClosure(__pyx_self);
  __pyx_cur_scope = __pyx_outer_scope;

  /* "src/python/grpcio/grpc/_cython/_cygrpc/channel.pyx.pxi":331
 *     def on_success(tag):
 *       _process_segregated_call_tag(
 *         self._channel_state, self._call_state, self._c_completion_queue, tag)             # <<<<<<<<<<<<<<
 *     def on_failure():
 *       self._call_state.due.clear()
 */
  if (unlikely(!__pyx_cur_scope->__pyx_v_self)) { __Pyx_RaiseClosureNameError("self"); __PYX_ERR(12, 331, __pyx_L1_error) }
  __pyx_t_1 = ((PyObject *)__pyx_cur_scope->__pyx_v_self->_channel_state);
  __Pyx_INCREF(__pyx_t_1);
  if (unlikely(!__pyx_cur_scope->__pyx_v_self)) { __Pyx_RaiseClosureNameError("self"); __PYX_ERR(12, 331, __pyx_L1_error) }
  __pyx_t_2 = ((PyObject *)__pyx_cur_scope->__pyx_v_self->_call_state);
  __Pyx_INCREF(__pyx_t_2);
  if (unlikely(!__pyx_cur_scope->__pyx_v_self)) { __Pyx_RaiseClosureNameError("self"); __PYX_ERR(12, 331, __pyx_L1_error) }
  if (!(likely(((__pyx_v_tag) == Py_None) || likely(__Pyx_TypeTest(__pyx_v_tag, __pyx_ptype_4grpc_7_cython_6cygrpc__BatchOperationTag))))) __PYX_ERR(12, 331, __pyx_L1_error)

  /* "src/python/grpcio/grpc/_cython/_cygrpc/channel.pyx.pxi":330
 *   def next_event(self):
 *     def on_success(tag):
 *       _process_segregated_call_tag(             # <<<<<<<<<<<<<<
 *         self._channel_state, self._call_state, self._c_completion_queue, tag)
 *     def on_failure():
 */
  __pyx_t_3 = __pyx_f_4grpc_7_cython_6cygrpc__process_segregated_call_tag(((struct __pyx_obj_4grpc_7_cython_6cygrpc__ChannelState *)__pyx_t_1), ((struct __pyx_obj_4grpc_7_cython_6cygrpc__CallState *)__pyx_t_2), __pyx_cur_scope->__pyx_v_self->_c_completion_queue, ((struct __pyx_obj_4grpc_7_cython_6cygrpc__BatchOperationTag *)__pyx_v_tag)); if (unlikely(!__pyx_t_3)) __PYX_ERR(12, 330, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;

  /* "src/python/grpcio/grpc/_cython/_cygrpc/channel.pyx.pxi":329
 * 
 *   def next_event(self):
 *     def on_success(tag):             # <<<<<<<<<<<<<<
 *       _process_segregated_call_tag(
 *         self._channel_state, self._call_state, self._c_completion_queue, tag)
 */

  /* function exit code */
  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_XDECREF(__pyx_t_3);
  __Pyx_AddTraceback("grpc._cython.cygrpc.SegregatedCall.next_event.on_success", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "src/python/grpcio/grpc/_cython/_cygrpc/channel.pyx.pxi":332
 *       _process_segregated_call_tag(
 *         self._channel_state, self._call_state, self._c_completion_queue, tag)
 *     def on_failure():             # <<<<<<<<<<<<<<
 *       self._call_state.due.clear()
 *       grpc_call_unref(self._call_state.c_call)
 */

/* Python wrapper */
static PyObject *__pyx_pw_4grpc_7_cython_6cygrpc_14SegregatedCall_10next_event_3on_failure(PyObject *__pyx_self, CYTHON_UNUSED PyObject *unused); /*proto*/
static PyMethodDef __pyx_mdef_4grpc_7_cython_6cygrpc_14SegregatedCall_10next_event_3on_failure = {"on_failure", (PyCFunction)__pyx_pw_4grpc_7_cython_6cygrpc_14SegregatedCall_10next_event_3on_failure, METH_NOARGS, 0};
static PyObject *__pyx_pw_4grpc_7_cython_6cygrpc_14SegregatedCall_10next_event_3on_failure(PyObject *__pyx_self, CYTHON_UNUSED PyObject *unused) {
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("on_failure (wrapper)", 0);
  __pyx_r = __pyx_pf_4grpc_7_cython_6cygrpc_14SegregatedCall_10next_event_2on_failure(__pyx_self);

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_4grpc_7_cython_6cygrpc_14SegregatedCall_10next_event_2on_failure(PyObject *__pyx_self) {
  struct __pyx_obj_4grpc_7_cython_6cygrpc___pyx_scope_struct_1_next_event *__pyx_cur_scope;
  struct __pyx_obj_4grpc_7_cython_6cygrpc___pyx_scope_struct_1_next_event *__pyx_outer_scope;
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  int __pyx_t_1;
  PyObject *__pyx_t_2 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("on_failure", 0);
  __pyx_outer_scope = (struct __pyx_obj_4grpc_7_cython_6cygrpc___pyx_scope_struct_1_next_event *) __Pyx_CyFunction_GetClosure(__pyx_self);
  __pyx_cur_scope = __pyx_outer_scope;

  /* "src/python/grpcio/grpc/_cython/_cygrpc/channel.pyx.pxi":333
 *         self._channel_state, self._call_state, self._c_completion_queue, tag)
 *     def on_failure():
 *       self._call_state.due.clear()             # <<<<<<<<<<<<<<
 *       grpc_call_unref(self._call_state.c_call)
 *       self._call_state.c_call = NULL
 */
  if (unlikely(!__pyx_cur_scope->__pyx_v_self)) { __Pyx_RaiseClosureNameError("self"); __PYX_ERR(12, 333, __pyx_L1_error) }
  if (unlikely(__pyx_cur_scope->__pyx_v_self->_call_state->due == Py_None)) {
    PyErr_Format(PyExc_AttributeError, "'NoneType' object has no attribute '%.30s'", "clear");
    __PYX_ERR(12, 333, __pyx_L1_error)
  }
  __pyx_t_1 = PySet_Clear(__pyx_cur_scope->__pyx_v_self->_call_state->due); if (unlikely(__pyx_t_1 == ((int)-1))) __PYX_ERR(12, 333, __pyx_L1_error)

  /* "src/python/grpcio/grpc/_cython/_cygrpc/channel.pyx.pxi":334
 *     def on_failure():
 *       self._call_state.due.clear()
 *       grpc_call_unref(self._call_state.c_call)             # <<<<<<<<<<<<<<
 *       self._call_state.c_call = NULL
 *       self._channel_state.segregated_call_states.remove(self._call_state)
 */
  if (unlikely(!__pyx_cur_scope->__pyx_v_self)) { __Pyx_RaiseClosureNameError("self"); __PYX_ERR(12, 334, __pyx_L1_error) }
  grpc_call_unref(__pyx_cur_scope->__pyx_v_self->_call_state->c_call);

  /* "src/python/grpcio/grpc/_cython/_cygrpc/channel.pyx.pxi":335
 *       self._call_state.due.clear()
 *       grpc_call_unref(self._call_state.c_call)
 *       self._call_state.c_call = NULL             # <<<<<<<<<<<<<<
 *       self._channel_state.segregated_call_states.remove(self._call_state)
 *       _destroy_c_completion_queue(self._c_completion_queue)
 */
  if (unlikely(!__pyx_cur_scope->__pyx_v_self)) { __Pyx_RaiseClosureNameError("self"); __PYX_ERR(12, 335, __pyx_L1_error) }
  __pyx_cur_scope->__pyx_v_self->_call_state->c_call = NULL;

  /* "src/python/grpcio/grpc/_cython/_cygrpc/channel.pyx.pxi":336
 *       grpc_call_unref(self._call_state.c_call)
 *       self._call_state.c_call = NULL
 *       self._channel_state.segregated_call_states.remove(self._call_state)             # <<<<<<<<<<<<<<
 *       _destroy_c_completion_queue(self._c_completion_queue)
 *     return _next_call_event(
 */
  if (unlikely(!__pyx_cur_scope->__pyx_v_self)) { __Pyx_RaiseClosureNameError("self"); __PYX_ERR(12, 336, __pyx_L1_error) }
  if (unlikely(__pyx_cur_scope->__pyx_v_self->_channel_state->segregated_call_states == Py_None)) {
    PyErr_Format(PyExc_AttributeError, "'NoneType' object has no attribute '%.30s'", "remove");
    __PYX_ERR(12, 336, __pyx_L1_error)
  }
  if (unlikely(!__pyx_cur_scope->__pyx_v_self)) { __Pyx_RaiseClosureNameError("self"); __PYX_ERR(12, 336, __pyx_L1_error) }
  __pyx_t_2 = ((PyObject *)__pyx_cur_scope->__pyx_v_self->_call_state);
  __Pyx_INCREF(__pyx_t_2);
  __pyx_t_1 = __Pyx_PySet_Remove(__pyx_cur_scope->__pyx_v_self->_channel_state->segregated_call_states, __pyx_t_2); if (unlikely(__pyx_t_1 == ((int)-1))) __PYX_ERR(12, 336, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;

  /* "src/python/grpcio/grpc/_cython/_cygrpc/channel.pyx.pxi":337
 *       self._call_state.c_call = NULL
 *       self._channel_state.segregated_call_states.remove(self._call_state)
 *       _destroy_c_completion_queue(self._c_completion_queue)             # <<<<<<<<<<<<<<
 *     return _next_call_event(
 *         self._channel_state, self._c_completion_queue, on_success, on_failure, None)
 */
  if (unlikely(!__pyx_cur_scope->__pyx_v_self)) { __Pyx_RaiseClosureNameError("self"); __PYX_ERR(12, 337, __pyx_L1_error) }
  __pyx_t_2 = __pyx_f_4grpc_7_cython_6cygrpc__destroy_c_completion_queue(__pyx_cur_scope->__pyx_v_self->_c_completion_queue); if (unlikely(!__pyx_t_2)) __PYX_ERR(12, 337, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;

  /* "src/python/grpcio/grpc/_cython/_cygrpc/channel.pyx.pxi":332
 *       _process_segregated_call_tag(
 *         self._channel_state, self._call_state, self._c_completion_queue, tag)
 *     def on_failure():             # <<<<<<<<<<<<<<
 *       self._call_state.due.clear()
 *       grpc_call_unref(self._call_state.c_call)
 */

  /* function exit code */
  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_AddTraceback("grpc._cython.cygrpc.SegregatedCall.next_event.on_failure", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "src/python/grpcio/grpc/_cython/_cygrpc/channel.pyx.pxi":328
 *     _cancel(self._channel_state, self._call_state, code, details)
 * 
 *   def next_event(self):             # <<<<<<<<<<<<<<
 *     def on_success(tag):
 *       _process_segregated_call_tag(
 */

static PyObject *__pyx_pf_4grpc_7_cython_6cygrpc_14SegregatedCall_6next_event(struct __pyx_obj_4grpc_7_cython_6cygrpc_SegregatedCall *__pyx_v_self) {
  struct __pyx_obj_4grpc_7_cython_6cygrpc___pyx_scope_struct_1_next_event *__pyx_cur_scope;
  PyObject *__pyx_v_on_success = 0;
  PyObject *__pyx_v_on_failure = 0;
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  PyObject *__pyx_t_2 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("next_event", 0);
  __pyx_cur_scope = (struct __pyx_obj_4grpc_7_cython_6cygrpc___pyx_scope_struct_1_next_event *)__pyx_tp_new_4grpc_7_cython_6cygrpc___pyx_scope_struct_1_next_event(__pyx_ptype_4grpc_7_cython_6cygrpc___pyx_scope_struct_1_next_event, __pyx_empty_tuple, NULL);
  if (unlikely(!__pyx_cur_scope)) {
    __pyx_cur_scope = ((struct __pyx_obj_4grpc_7_cython_6cygrpc___pyx_scope_struct_1_next_event *)Py_None);
    __Pyx_INCREF(Py_None);
    __PYX_ERR(12, 328, __pyx_L1_error)
  } else {
    __Pyx_GOTREF(__pyx_cur_scope);
  }
  __pyx_cur_scope->__pyx_v_self = __pyx_v_self;
  __Pyx_INCREF((PyObject *)__pyx_cur_scope->__pyx_v_self);
  __Pyx_GIVEREF((PyObject *)__pyx_cur_scope->__pyx_v_self);

  /* "src/python/grpcio/grpc/_cython/_cygrpc/channel.pyx.pxi":329
 * 
 *   def next_event(self):
 *     def on_success(tag):             # <<<<<<<<<<<<<<
 *       _process_segregated_call_tag(
 *         self._channel_state, self._call_state, self._c_completion_queue, tag)
 */
  __pyx_t_1 = __Pyx_CyFunction_New(&__pyx_mdef_4grpc_7_cython_6cygrpc_14SegregatedCall_10next_event_1on_success, 0, __pyx_n_s_next_event_locals_on_success, ((PyObject*)__pyx_cur_scope), __pyx_n_s_grpc__cython_cygrpc, __pyx_d, ((PyObject *)__pyx_codeobj__23)); if (unlikely(!__pyx_t_1)) __PYX_ERR(12, 329, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_v_on_success = __pyx_t_1;
  __pyx_t_1 = 0;

  /* "src/python/grpcio/grpc/_cython/_cygrpc/channel.pyx.pxi":332
 *       _process_segregated_call_tag(
 *         self._channel_state, self._call_state, self._c_completion_queue, tag)
 *     def on_failure():             # <<<<<<<<<<<<<<
 *       self._call_state.due.clear()
 *       grpc_call_unref(self._call_state.c_call)
 */
  __pyx_t_1 = __Pyx_CyFunction_New(&__pyx_mdef_4grpc_7_cython_6cygrpc_14SegregatedCall_10next_event_3on_failure, 0, __pyx_n_s_next_event_locals_on_failure, ((PyObject*)__pyx_cur_scope), __pyx_n_s_grpc__cython_cygrpc, __pyx_d, ((PyObject *)__pyx_codeobj__24)); if (unlikely(!__pyx_t_1)) __PYX_ERR(12, 332, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_v_on_failure = __pyx_t_1;
  __pyx_t_1 = 0;

  /* "src/python/grpcio/grpc/_cython/_cygrpc/channel.pyx.pxi":338
 *       self._channel_state.segregated_call_states.remove(self._call_state)
 *       _destroy_c_completion_queue(self._c_completion_queue)
 *     return _next_call_event(             # <<<<<<<<<<<<<<
 *         self._channel_state, self._c_completion_queue, on_success, on_failure, None)
 * 
 */
  __Pyx_XDECREF(__pyx_r);

  /* "src/python/grpcio/grpc/_cython/_cygrpc/channel.pyx.pxi":339
 *       _destroy_c_completion_queue(self._c_completion_queue)
 *     return _next_call_event(
 *         self._channel_state, self._c_completion_queue, on_success, on_failure, None)             # <<<<<<<<<<<<<<
 * 
 * 
 */
  __pyx_t_1 = ((PyObject *)__pyx_cur_scope->__pyx_v_self->_channel_state);
  __Pyx_INCREF(__pyx_t_1);

  /* "src/python/grpcio/grpc/_cython/_cygrpc/channel.pyx.pxi":338
 *       self._channel_state.segregated_call_states.remove(self._call_state)
 *       _destroy_c_completion_queue(self._c_completion_queue)
 *     return _next_call_event(             # <<<<<<<<<<<<<<
 *         self._channel_state, self._c_completion_queue, on_success, on_failure, None)
 * 
 */
  __pyx_t_2 = __pyx_f_4grpc_7_cython_6cygrpc__next_call_event(((struct __pyx_obj_4grpc_7_cython_6cygrpc__ChannelState *)__pyx_t_1), __pyx_cur_scope->__pyx_v_self->_c_completion_queue, __pyx_v_on_success, __pyx_v_on_failure, Py_None); if (unlikely(!__pyx_t_2)) __PYX_ERR(12, 338, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  __pyx_r = __pyx_t_2;
  __pyx_t_2 = 0;
  goto __pyx_L0;

  /* "src/python/grpcio/grpc/_cython/_cygrpc/channel.pyx.pxi":328
 *     _cancel(self._channel_state, self._call_state, code, details)
 * 
 *   def next_event(self):             # <<<<<<<<<<<<<<
 *     def on_success(tag):
 *       _process_segregated_call_tag(
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_AddTraceback("grpc._cython.cygrpc.SegregatedCall.next_event", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XDECREF(__pyx_v_on_success);
  __Pyx_XDECREF(__pyx_v_on_failure);
  __Pyx_DECREF(((PyObject *)__pyx_cur_scope));
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "(tree fragment)":1
 * def __reduce_cython__(self):             # <<<<<<<<<<<<<<
 *     raise TypeError("no default __reduce__ due to non-trivial __cinit__")
 * def __setstate_cython__(self, __pyx_state):
 */

/* Python wrapper */
static PyObject *__pyx_pw_4grpc_7_cython_6cygrpc_14SegregatedCall_9__reduce_cython__(PyObject *__pyx_v_self, CYTHON_UNUSED PyObject *unused); /*proto*/
static PyObject *__pyx_pw_4grpc_7_cython_6cygrpc_14SegregatedCall_9__reduce_cython__(PyObject *__pyx_v_self, CYTHON_UNUSED PyObject *unused) {
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__reduce_cython__ (wrapper)", 0);
  __pyx_r = __pyx_pf_4grpc_7_cython_6cygrpc_14SegregatedCall_8__reduce_cython__(((struct __pyx_obj_4grpc_7_cython_6cygrpc_SegregatedCall *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_4grpc_7_cython_6cygrpc_14SegregatedCall_8__reduce_cython__(CYTHON_UNUSED struct __pyx_obj_4grpc_7_cython_6cygrpc_SegregatedCall *__pyx_v_self) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("__reduce_cython__", 0);

  /* "(tree fragment)":2
 * def __reduce_cython__(self):
 *     raise TypeError("no default __reduce__ due to non-trivial __cinit__")             # <<<<<<<<<<<<<<
 * def __setstate_cython__(self, __pyx_state):
 *     raise TypeError("no default __reduce__ due to non-trivial __cinit__")
 */
  __pyx_t_1 = __Pyx_PyObject_Call(__pyx_builtin_TypeError, __pyx_tuple__25, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(11, 2, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_Raise(__pyx_t_1, 0, 0, 0);
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  __PYX_ERR(11, 2, __pyx_L1_error)

  /* "(tree fragment)":1
 * def __reduce_cython__(self):             # <<<<<<<<<<<<<<
 *     raise TypeError("no default __reduce__ due to non-trivial __cinit__")
 * def __setstate_cython__(self, __pyx_state):
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_AddTraceback("grpc._cython.cygrpc.SegregatedCall.__reduce_cython__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "(tree fragment)":3
 * def __reduce_cython__(self):
 *     raise TypeError("no default __reduce__ due to non-trivial __cinit__")
 * def __setstate_cython__(self, __pyx_state):             # <<<<<<<<<<<<<<
 *     raise TypeError("no default __reduce__ due to non-trivial __cinit__")
 */

/* Python wrapper */
static PyObject *__pyx_pw_4grpc_7_cython_6cygrpc_14SegregatedCall_11__setstate_cython__(PyObject *__pyx_v_self, PyObject *__pyx_v___pyx_state); /*proto*/
static PyObject *__pyx_pw_4grpc_7_cython_6cygrpc_14SegregatedCall_11__setstate_cython__(PyObject *__pyx_v_self, PyObject *__pyx_v___pyx_state) {
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__setstate_cython__ (wrapper)", 0);
  __pyx_r = __pyx_pf_4grpc_7_cython_6cygrpc_14SegregatedCall_10__setstate_cython__(((struct __pyx_obj_4grpc_7_cython_6cygrpc_SegregatedCall *)__pyx_v_self), ((PyObject *)__pyx_v___pyx_state));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_4grpc_7_cython_6cygrpc_14SegregatedCall_10__setstate_cython__(CYTHON_UNUSED struct __pyx_obj_4grpc_7_cython_6cygrpc_SegregatedCall *__pyx_v_self, CYTHON_UNUSED PyObject *__pyx_v___pyx_state) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("__setstate_cython__", 0);

  /* "(tree fragment)":4
 *     raise TypeError("no default __reduce__ due to non-trivial __cinit__")
 * def __setstate_cython__(self, __pyx_state):
 *     raise TypeError("no default __reduce__ due to non-trivial __cinit__")             # <<<<<<<<<<<<<<
 */
  __pyx_t_1 = __Pyx_PyObject_Call(__pyx_builtin_TypeError, __pyx_tuple__26, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(11, 4, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_Raise(__pyx_t_1, 0, 0, 0);
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  __PYX_ERR(11, 4, __pyx_L1_error)

  /* "(tree fragment)":3
 * def __reduce_cython__(self):
 *     raise TypeError("no default __reduce__ due to non-trivial __cinit__")
 * def __setstate_cython__(self, __pyx_state):             # <<<<<<<<<<<<<<
 *     raise TypeError("no default __reduce__ due to non-trivial __cinit__")
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_AddTraceback("grpc._cython.cygrpc.SegregatedCall.__setstate_cython__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "src/python/grpcio/grpc/_cython/_cygrpc/channel.pyx.pxi":350
 *   cdef grpc_completion_queue *c_completion_queue
 * 
 *   def on_success(started_tags):             # <<<<<<<<<<<<<<
 *     state.segregated_call_states.add(call_state)
 * 
 */

/* Python wrapper */
static PyObject *__pyx_pw_4grpc_7_cython_6cygrpc_16_segregated_call_1on_success(PyObject *__pyx_self, PyObject *__pyx_v_started_tags); /*proto*/
static PyMethodDef __pyx_mdef_4grpc_7_cython_6cygrpc_16_segregated_call_1on_success = {"on_success", (PyCFunction)__pyx_pw_4grpc_7_cython_6cygrpc_16_segregated_call_1on_success, METH_O, 0};
static PyObject *__pyx_pw_4grpc_7_cython_6cygrpc_16_segregated_call_1on_success(PyObject *__pyx_self, PyObject *__pyx_v_started_tags) {
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("on_success (wrapper)", 0);
  __pyx_r = __pyx_pf_4grpc_7_cython_6cygrpc_16_segregated_call_on_success(__pyx_self, ((PyObject *)__pyx_v_started_tags));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_4grpc_7_cython_6cygrpc_16_segregated_call_on_success(PyObject *__pyx_self, CYTHON_UNUSED PyObject *__pyx_v_started_tags) {
  struct __pyx_obj_4grpc_7_cython_6cygrpc___pyx_scope_struct_2___pyx_f_4grpc_7_cython_6cygrpc__segregated_call *__pyx_cur_scope;
  struct __pyx_obj_4grpc_7_cython_6cygrpc___pyx_scope_struct_2___pyx_f_4grpc_7_cython_6cygrpc__segregated_call *__pyx_outer_scope;
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  int __pyx_t_2;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("on_success", 0);
  __pyx_outer_scope = (struct __pyx_obj_4grpc_7_cython_6cygrpc___pyx_scope_struct_2___pyx_f_4grpc_7_cython_6cygrpc__segregated_call *) __Pyx_CyFunction_GetClosure(__pyx_self);
  __pyx_cur_scope = __pyx_outer_scope;

  /* "src/python/grpcio/grpc/_cython/_cygrpc/channel.pyx.pxi":351
 * 
 *   def on_success(started_tags):
 *     state.segregated_call_states.add(call_state)             # <<<<<<<<<<<<<<
 * 
 *   with state.condition:
 */
  if (unlikely(!__pyx_cur_scope->__pyx_v_state)) { __Pyx_RaiseClosureNameError("state"); __PYX_ERR(12, 351, __pyx_L1_error) }
  if (unlikely(__pyx_cur_scope->__pyx_v_state->segregated_call_states == Py_None)) {
    PyErr_Format(PyExc_AttributeError, "'NoneType' object has no attribute '%.30s'", "add");
    __PYX_ERR(12, 351, __pyx_L1_error)
  }
  if (unlikely(!__pyx_cur_scope->__pyx_v_call_state)) { __Pyx_RaiseClosureNameError("call_state"); __PYX_ERR(12, 351, __pyx_L1_error) }
  __pyx_t_1 = ((PyObject *)__pyx_cur_scope->__pyx_v_call_state);
  __Pyx_INCREF(__pyx_t_1);
  __pyx_t_2 = PySet_Add(__pyx_cur_scope->__pyx_v_state->segregated_call_states, __pyx_t_1); if (unlikely(__pyx_t_2 == ((int)-1))) __PYX_ERR(12, 351, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;

  /* "src/python/grpcio/grpc/_cython/_cygrpc/channel.pyx.pxi":350
 *   cdef grpc_completion_queue *c_completion_queue
 * 
 *   def on_success(started_tags):             # <<<<<<<<<<<<<<
 *     state.segregated_call_states.add(call_state)
 * 
 */

  /* function exit code */
  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_AddTraceback("grpc._cython.cygrpc._segregated_call.on_success", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "src/python/grpcio/grpc/_cython/_cygrpc/channel.pyx.pxi":342
 * 
 * 
 * cdef SegregatedCall _segregated_call(             # <<<<<<<<<<<<<<
 *     _ChannelState state, int flags, method, host, object deadline,
 *     object metadata, CallCredentials credentials, operationses_and_user_tags,
 */

static struct __pyx_obj_4grpc_7_cython_6cygrpc_SegregatedCall *__pyx_f_4grpc_7_cython_6cygrpc__segregated_call(struct __pyx_obj_4grpc_7_cython_6cygrpc__ChannelState *__pyx_v_state, int __pyx_v_flags, PyObject *__pyx_v_method, PyObject *__pyx_v_host, PyObject *__pyx_v_deadline, PyObject *__pyx_v_metadata, struct __pyx_obj_4grpc_7_cython_6cygrpc_CallCredentials *__pyx_v_credentials, PyObject *__pyx_v_operationses_and_user_tags, PyObject *__pyx_v_context) {
  struct __pyx_obj_4grpc_7_cython_6cygrpc___pyx_scope_struct_2___pyx_f_4grpc_7_cython_6cygrpc__segregated_call *__pyx_cur_scope;
  struct __pyx_obj_4grpc_7_cython_6cygrpc_SegregatedCall *__pyx_v_segregated_call = 0;
  grpc_completion_queue *__pyx_v_c_completion_queue;
  PyObject *__pyx_v_on_success = 0;
  struct __pyx_obj_4grpc_7_cython_6cygrpc_SegregatedCall *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  PyObject *__pyx_t_2 = NULL;
  PyObject *__pyx_t_3 = NULL;
  PyObject *__pyx_t_4 = NULL;
  PyObject *__pyx_t_5 = NULL;
  PyObject *__pyx_t_6 = NULL;
  PyObject *__pyx_t_7 = NULL;
  int __pyx_t_8;
  PyObject *__pyx_t_9 = NULL;
  PyObject *__pyx_t_10 = NULL;
  int __pyx_t_11;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("_segregated_call", 0);
  __pyx_cur_scope = (struct __pyx_obj_4grpc_7_cython_6cygrpc___pyx_scope_struct_2___pyx_f_4grpc_7_cython_6cygrpc__segregated_call *)__pyx_tp_new_4grpc_7_cython_6cygrpc___pyx_scope_struct_2___pyx_f_4grpc_7_cython_6cygrpc__segregated_call(__pyx_ptype_4grpc_7_cython_6cygrpc___pyx_scope_struct_2___pyx_f_4grpc_7_cython_6cygrpc__segregated_call, __pyx_empty_tuple, NULL);
  if (unlikely(!__pyx_cur_scope)) {
    __pyx_cur_scope = ((struct __pyx_obj_4grpc_7_cython_6cygrpc___pyx_scope_struct_2___pyx_f_4grpc_7_cython_6cygrpc__segregated_call *)Py_None);
    __Pyx_INCREF(Py_None);
    __PYX_ERR(12, 342, __pyx_L1_error)
  } else {
    __Pyx_GOTREF(__pyx_cur_scope);
  }
  __pyx_cur_scope->__pyx_v_state = __pyx_v_state;
  __Pyx_INCREF((PyObject *)__pyx_cur_scope->__pyx_v_state);
  __Pyx_GIVEREF((PyObject *)__pyx_cur_scope->__pyx_v_state);

  /* "src/python/grpcio/grpc/_cython/_cygrpc/channel.pyx.pxi":346
 *     object metadata, CallCredentials credentials, operationses_and_user_tags,
 *     object context):
 *   cdef _CallState call_state = _CallState()             # <<<<<<<<<<<<<<
 *   cdef SegregatedCall segregated_call
 *   cdef grpc_completion_queue *c_completion_queue
 */
  __pyx_t_1 = __Pyx_PyObject_CallNoArg(((PyObject *)__pyx_ptype_4grpc_7_cython_6cygrpc__CallState)); if (unlikely(!__pyx_t_1)) __PYX_ERR(12, 346, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_GIVEREF(__pyx_t_1);
  __pyx_cur_scope->__pyx_v_call_state = ((struct __pyx_obj_4grpc_7_cython_6cygrpc__CallState *)__pyx_t_1);
  __pyx_t_1 = 0;

  /* "src/python/grpcio/grpc/_cython/_cygrpc/channel.pyx.pxi":350
 *   cdef grpc_completion_queue *c_completion_queue
 * 
 *   def on_success(started_tags):             # <<<<<<<<<<<<<<
 *     state.segregated_call_states.add(call_state)
 * 
 */
  __pyx_t_1 = __Pyx_CyFunction_New(&__pyx_mdef_4grpc_7_cython_6cygrpc_16_segregated_call_1on_success, 0, __pyx_n_s_segregated_call_locals_on_succe, ((PyObject*)__pyx_cur_scope), __pyx_n_s_grpc__cython_cygrpc, __pyx_d, ((PyObject *)__pyx_codeobj__28)); if (unlikely(!__pyx_t_1)) __PYX_ERR(12, 350, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_v_on_success = __pyx_t_1;
  __pyx_t_1 = 0;

  /* "src/python/grpcio/grpc/_cython/_cygrpc/channel.pyx.pxi":353
 *     state.segregated_call_states.add(call_state)
 * 
 *   with state.condition:             # <<<<<<<<<<<<<<
 *     if state.open:
 *       c_completion_queue = (grpc_completion_queue_create_for_next(NULL))
 */
  /*with:*/ {
    __pyx_t_2 = __Pyx_PyObject_LookupSpecial(__pyx_cur_scope->__pyx_v_state->condition, __pyx_n_s_exit); if (unlikely(!__pyx_t_2)) __PYX_ERR(12, 353, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_2);
    __pyx_t_3 = __Pyx_PyObject_LookupSpecial(__pyx_cur_scope->__pyx_v_state->condition, __pyx_n_s_enter); if (unlikely(!__pyx_t_3)) __PYX_ERR(12, 353, __pyx_L3_error)
    __Pyx_GOTREF(__pyx_t_3);
    __pyx_t_4 = NULL;
    if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_3))) {
      __pyx_t_4 = PyMethod_GET_SELF(__pyx_t_3);
      if (likely(__pyx_t_4)) {
        PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_3);
        __Pyx_INCREF(__pyx_t_4);
        __Pyx_INCREF(function);
        __Pyx_DECREF_SET(__pyx_t_3, function);
      }
    }
    __pyx_t_1 = (__pyx_t_4) ? __Pyx_PyObject_CallOneArg(__pyx_t_3, __pyx_t_4) : __Pyx_PyObject_CallNoArg(__pyx_t_3);
    __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0;
    if (unlikely(!__pyx_t_1)) __PYX_ERR(12, 353, __pyx_L3_error)
    __Pyx_GOTREF(__pyx_t_1);
    __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
    __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
    /*try:*/ {
      {
        __Pyx_PyThreadState_declare
        __Pyx_PyThreadState_assign
        __Pyx_ExceptionSave(&__pyx_t_5, &__pyx_t_6, &__pyx_t_7);
        __Pyx_XGOTREF(__pyx_t_5);
        __Pyx_XGOTREF(__pyx_t_6);
        __Pyx_XGOTREF(__pyx_t_7);
        /*try:*/ {

          /* "src/python/grpcio/grpc/_cython/_cygrpc/channel.pyx.pxi":354
 * 
 *   with state.condition:
 *     if state.open:             # <<<<<<<<<<<<<<
 *       c_completion_queue = (grpc_completion_queue_create_for_next(NULL))
 *     else:
 */
          __pyx_t_8 = __Pyx_PyObject_IsTrue(__pyx_cur_scope->__pyx_v_state->open); if (unlikely(__pyx_t_8 < 0)) __PYX_ERR(12, 354, __pyx_L7_error)
          if (likely(__pyx_t_8)) {

            /* "src/python/grpcio/grpc/_cython/_cygrpc/channel.pyx.pxi":355
 *   with state.condition:
 *     if state.open:
 *       c_completion_queue = (grpc_completion_queue_create_for_next(NULL))             # <<<<<<<<<<<<<<
 *     else:
 *       raise ValueError('Cannot invoke RPC on closed channel!')
 */
            __pyx_v_c_completion_queue = grpc_completion_queue_create_for_next(NULL);

            /* "src/python/grpcio/grpc/_cython/_cygrpc/channel.pyx.pxi":354
 * 
 *   with state.condition:
 *     if state.open:             # <<<<<<<<<<<<<<
 *       c_completion_queue = (grpc_completion_queue_create_for_next(NULL))
 *     else:
 */
            goto __pyx_L13;
          }

          /* "src/python/grpcio/grpc/_cython/_cygrpc/channel.pyx.pxi":357
 *       c_completion_queue = (grpc_completion_queue_create_for_next(NULL))
 *     else:
 *       raise ValueError('Cannot invoke RPC on closed channel!')             # <<<<<<<<<<<<<<
 * 
 *   try:
 */
          /*else*/ {
            __pyx_t_1 = __Pyx_PyObject_Call(__pyx_builtin_ValueError, __pyx_tuple__29, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(12, 357, __pyx_L7_error)
            __Pyx_GOTREF(__pyx_t_1);
            __Pyx_Raise(__pyx_t_1, 0, 0, 0);
            __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
            __PYX_ERR(12, 357, __pyx_L7_error)
          }
          __pyx_L13:;

          /* "src/python/grpcio/grpc/_cython/_cygrpc/channel.pyx.pxi":353
 *     state.segregated_call_states.add(call_state)
 * 
 *   with state.condition:             # <<<<<<<<<<<<<<
 *     if state.open:
 *       c_completion_queue = (grpc_completion_queue_create_for_next(NULL))
 */
        }
        __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0;
        __Pyx_XDECREF(__pyx_t_6); __pyx_t_6 = 0;
        __Pyx_XDECREF(__pyx_t_7); __pyx_t_7 = 0;
        goto __pyx_L12_try_end;
        __pyx_L7_error:;
        __Pyx_XDECREF(__pyx_t_1); __pyx_t_1 = 0;
        __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0;
        __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0;
        /*except:*/ {
          __Pyx_AddTraceback("grpc._cython.cygrpc._segregated_call", __pyx_clineno, __pyx_lineno, __pyx_filename);
          if (__Pyx_GetException(&__pyx_t_1, &__pyx_t_3, &__pyx_t_4) < 0) __PYX_ERR(12, 353, __pyx_L9_except_error)
          __Pyx_GOTREF(__pyx_t_1);
          __Pyx_GOTREF(__pyx_t_3);
          __Pyx_GOTREF(__pyx_t_4);
          __pyx_t_9 = PyTuple_Pack(3, __pyx_t_1, __pyx_t_3, __pyx_t_4); if (unlikely(!__pyx_t_9)) __PYX_ERR(12, 353, __pyx_L9_except_error)
          __Pyx_GOTREF(__pyx_t_9);
          __pyx_t_10 = __Pyx_PyObject_Call(__pyx_t_2, __pyx_t_9, NULL);
          __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
          __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0;
          if (unlikely(!__pyx_t_10)) __PYX_ERR(12, 353, __pyx_L9_except_error)
          __Pyx_GOTREF(__pyx_t_10);
          __pyx_t_8 = __Pyx_PyObject_IsTrue(__pyx_t_10);
          __Pyx_DECREF(__pyx_t_10); __pyx_t_10 = 0;
          if (__pyx_t_8 < 0) __PYX_ERR(12, 353, __pyx_L9_except_error)
          __pyx_t_11 = ((!(__pyx_t_8 != 0)) != 0);
          if (__pyx_t_11) {
            __Pyx_GIVEREF(__pyx_t_1);
            __Pyx_GIVEREF(__pyx_t_3);
            __Pyx_XGIVEREF(__pyx_t_4);
            __Pyx_ErrRestoreWithState(__pyx_t_1, __pyx_t_3, __pyx_t_4);
            __pyx_t_1 = 0; __pyx_t_3 = 0; __pyx_t_4 = 0; 
            __PYX_ERR(12, 353, __pyx_L9_except_error)
          }
          __Pyx_XDECREF(__pyx_t_1); __pyx_t_1 = 0;
          __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0;
          __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0;
          goto __pyx_L8_exception_handled;
        }
        __pyx_L9_except_error:;
        __Pyx_XGIVEREF(__pyx_t_5);
        __Pyx_XGIVEREF(__pyx_t_6);
        __Pyx_XGIVEREF(__pyx_t_7);
        __Pyx_ExceptionReset(__pyx_t_5, __pyx_t_6, __pyx_t_7);
        goto __pyx_L1_error;
        __pyx_L8_exception_handled:;
        __Pyx_XGIVEREF(__pyx_t_5);
        __Pyx_XGIVEREF(__pyx_t_6);
        __Pyx_XGIVEREF(__pyx_t_7);
        __Pyx_ExceptionReset(__pyx_t_5, __pyx_t_6, __pyx_t_7);
        __pyx_L12_try_end:;
      }
    }
    /*finally:*/ {
      /*normal exit:*/{
        if (__pyx_t_2) {
          __pyx_t_7 = __Pyx_PyObject_Call(__pyx_t_2, __pyx_tuple__17, NULL);
          __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
          if (unlikely(!__pyx_t_7)) __PYX_ERR(12, 353, __pyx_L1_error)
          __Pyx_GOTREF(__pyx_t_7);
          __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
        }
        goto __pyx_L6;
      }
      __pyx_L6:;
    }
    goto __pyx_L17;
    __pyx_L3_error:;
    __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
    goto __pyx_L1_error;
    __pyx_L17:;
  }

  /* "src/python/grpcio/grpc/_cython/_cygrpc/channel.pyx.pxi":359
 *       raise ValueError('Cannot invoke RPC on closed channel!')
 * 
 *   try:             # <<<<<<<<<<<<<<
 *     _call(
 *         state, call_state, c_completion_queue, on_success, flags, method, host,
 */
  {
    __Pyx_PyThreadState_declare
    __Pyx_PyThreadState_assign
    __Pyx_ExceptionSave(&__pyx_t_2, &__pyx_t_7, &__pyx_t_6);
    __Pyx_XGOTREF(__pyx_t_2);
    __Pyx_XGOTREF(__pyx_t_7);
    __Pyx_XGOTREF(__pyx_t_6);
    /*try:*/ {

      /* "src/python/grpcio/grpc/_cython/_cygrpc/channel.pyx.pxi":361
 *   try:
 *     _call(
 *         state, call_state, c_completion_queue, on_success, flags, method, host,             # <<<<<<<<<<<<<<
 *         deadline, credentials, operationses_and_user_tags, metadata,
 *         context)
 */
      __pyx_t_4 = ((PyObject *)__pyx_cur_scope->__pyx_v_state);
      __Pyx_INCREF(__pyx_t_4);
      __pyx_t_3 = ((PyObject *)__pyx_cur_scope->__pyx_v_call_state);
      __Pyx_INCREF(__pyx_t_3);

      /* "src/python/grpcio/grpc/_cython/_cygrpc/channel.pyx.pxi":360
 * 
 *   try:
 *     _call(             # <<<<<<<<<<<<<<
 *         state, call_state, c_completion_queue, on_success, flags, method, host,
 *         deadline, credentials, operationses_and_user_tags, metadata,
 */
      __pyx_f_4grpc_7_cython_6cygrpc__call(((struct __pyx_obj_4grpc_7_cython_6cygrpc__ChannelState *)__pyx_t_4), ((struct __pyx_obj_4grpc_7_cython_6cygrpc__CallState *)__pyx_t_3), __pyx_v_c_completion_queue, __pyx_v_on_success, __pyx_v_flags, __pyx_v_method, __pyx_v_host, __pyx_v_deadline, __pyx_v_credentials, __pyx_v_operationses_and_user_tags, __pyx_v_metadata, __pyx_v_context); if (unlikely(PyErr_Occurred())) __PYX_ERR(12, 360, __pyx_L18_error)
      __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
      __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;

      /* "src/python/grpcio/grpc/_cython/_cygrpc/channel.pyx.pxi":359
 *       raise ValueError('Cannot invoke RPC on closed channel!')
 * 
 *   try:             # <<<<<<<<<<<<<<
 *     _call(
 *         state, call_state, c_completion_queue, on_success, flags, method, host,
 */
    }
    __Pyx_XDECREF(__pyx_t_2); __pyx_t_2 = 0;
    __Pyx_XDECREF(__pyx_t_7); __pyx_t_7 = 0;
    __Pyx_XDECREF(__pyx_t_6); __pyx_t_6 = 0;
    goto __pyx_L23_try_end;
    __pyx_L18_error:;
    __Pyx_XDECREF(__pyx_t_1); __pyx_t_1 = 0;
    __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0;
    __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0;
    __Pyx_XDECREF(__pyx_t_9); __pyx_t_9 = 0;

    /* "src/python/grpcio/grpc/_cython/_cygrpc/channel.pyx.pxi":364
 *         deadline, credentials, operationses_and_user_tags, metadata,
 *         context)
 *   except:             # <<<<<<<<<<<<<<
 *     _destroy_c_completion_queue(c_completion_queue)
 *     raise
 */
    /*except:*/ {
      __Pyx_AddTraceback("grpc._cython.cygrpc._segregated_call", __pyx_clineno, __pyx_lineno, __pyx_filename);
      if (__Pyx_GetException(&__pyx_t_3, &__pyx_t_4, &__pyx_t_1) < 0) __PYX_ERR(12, 364, __pyx_L20_except_error)
      __Pyx_GOTREF(__pyx_t_3);
      __Pyx_GOTREF(__pyx_t_4);
      __Pyx_GOTREF(__pyx_t_1);

      /* "src/python/grpcio/grpc/_cython/_cygrpc/channel.pyx.pxi":365
 *         context)
 *   except:
 *     _destroy_c_completion_queue(c_completion_queue)             # <<<<<<<<<<<<<<
 *     raise
 * 
 */
      __pyx_t_9 = __pyx_f_4grpc_7_cython_6cygrpc__destroy_c_completion_queue(__pyx_v_c_completion_queue); if (unlikely(!__pyx_t_9)) __PYX_ERR(12, 365, __pyx_L20_except_error)
      __Pyx_GOTREF(__pyx_t_9);
      __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0;

      /* "src/python/grpcio/grpc/_cython/_cygrpc/channel.pyx.pxi":366
 *   except:
 *     _destroy_c_completion_queue(c_completion_queue)
 *     raise             # <<<<<<<<<<<<<<
 * 
 *   segregated_call = SegregatedCall(state, call_state)
 */
      __Pyx_GIVEREF(__pyx_t_3);
      __Pyx_GIVEREF(__pyx_t_4);
      __Pyx_XGIVEREF(__pyx_t_1);
      __Pyx_ErrRestoreWithState(__pyx_t_3, __pyx_t_4, __pyx_t_1);
      __pyx_t_3 = 0; __pyx_t_4 = 0; __pyx_t_1 = 0; 
      __PYX_ERR(12, 366, __pyx_L20_except_error)
    }
    __pyx_L20_except_error:;

    /* "src/python/grpcio/grpc/_cython/_cygrpc/channel.pyx.pxi":359
 *       raise ValueError('Cannot invoke RPC on closed channel!')
 * 
 *   try:             # <<<<<<<<<<<<<<
 *     _call(
 *         state, call_state, c_completion_queue, on_success, flags, method, host,
 */
    __Pyx_XGIVEREF(__pyx_t_2);
    __Pyx_XGIVEREF(__pyx_t_7);
    __Pyx_XGIVEREF(__pyx_t_6);
    __Pyx_ExceptionReset(__pyx_t_2, __pyx_t_7, __pyx_t_6);
    goto __pyx_L1_error;
    __pyx_L23_try_end:;
  }

  /* "src/python/grpcio/grpc/_cython/_cygrpc/channel.pyx.pxi":368
 *     raise
 * 
 *   segregated_call = SegregatedCall(state, call_state)             # <<<<<<<<<<<<<<
 *   segregated_call._c_completion_queue = c_completion_queue
 *   return segregated_call
 */
  __pyx_t_1 = PyTuple_New(2); if (unlikely(!__pyx_t_1)) __PYX_ERR(12, 368, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_INCREF(((PyObject *)__pyx_cur_scope->__pyx_v_state));
  __Pyx_GIVEREF(((PyObject *)__pyx_cur_scope->__pyx_v_state));
  PyTuple_SET_ITEM(__pyx_t_1, 0, ((PyObject *)__pyx_cur_scope->__pyx_v_state));
  __Pyx_INCREF(((PyObject *)__pyx_cur_scope->__pyx_v_call_state));
  __Pyx_GIVEREF(((PyObject *)__pyx_cur_scope->__pyx_v_call_state));
  PyTuple_SET_ITEM(__pyx_t_1, 1, ((PyObject *)__pyx_cur_scope->__pyx_v_call_state));
  __pyx_t_4 = __Pyx_PyObject_Call(((PyObject *)__pyx_ptype_4grpc_7_cython_6cygrpc_SegregatedCall), __pyx_t_1, NULL); if (unlikely(!__pyx_t_4)) __PYX_ERR(12, 368, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_4);
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  __pyx_v_segregated_call = ((struct __pyx_obj_4grpc_7_cython_6cygrpc_SegregatedCall *)__pyx_t_4);
  __pyx_t_4 = 0;

  /* "src/python/grpcio/grpc/_cython/_cygrpc/channel.pyx.pxi":369
 * 
 *   segregated_call = SegregatedCall(state, call_state)
 *   segregated_call._c_completion_queue = c_completion_queue             # <<<<<<<<<<<<<<
 *   return segregated_call
 * 
 */
  __pyx_v_segregated_call->_c_completion_queue = __pyx_v_c_completion_queue;

  /* "src/python/grpcio/grpc/_cython/_cygrpc/channel.pyx.pxi":370
 *   segregated_call = SegregatedCall(state, call_state)
 *   segregated_call._c_completion_queue = c_completion_queue
 *   return segregated_call             # <<<<<<<<<<<<<<
 * 
 * 
 */
  __Pyx_XDECREF(((PyObject *)__pyx_r));
  __Pyx_INCREF(((PyObject *)__pyx_v_segregated_call));
  __pyx_r = __pyx_v_segregated_call;
  goto __pyx_L0;

  /* "src/python/grpcio/grpc/_cython/_cygrpc/channel.pyx.pxi":342
 * 
 * 
 * cdef SegregatedCall _segregated_call(             # <<<<<<<<<<<<<<
 *     _ChannelState state, int flags, method, host, object deadline,
 *     object metadata, CallCredentials credentials, operationses_and_user_tags,
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_XDECREF(__pyx_t_3);
  __Pyx_XDECREF(__pyx_t_4);
  __Pyx_XDECREF(__pyx_t_9);
  __Pyx_AddTraceback("grpc._cython.cygrpc._segregated_call", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = 0;
  __pyx_L0:;
  __Pyx_XDECREF((PyObject *)__pyx_v_segregated_call);
  __Pyx_XDECREF(__pyx_v_on_success);
  __Pyx_DECREF(((PyObject *)__pyx_cur_scope));
  __Pyx_XGIVEREF((PyObject *)__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "src/python/grpcio/grpc/_cython/_cygrpc/channel.pyx.pxi":373
 * 
 * 
 * cdef object _watch_connectivity_state(             # <<<<<<<<<<<<<<
 *     _ChannelState state, grpc_connectivity_state last_observed_state,
 *     object deadline):
 */

static PyObject *__pyx_f_4grpc_7_cython_6cygrpc__watch_connectivity_state(struct __pyx_obj_4grpc_7_cython_6cygrpc__ChannelState *__pyx_v_state, grpc_connectivity_state __pyx_v_last_observed_state, PyObject *__pyx_v_deadline) {
  struct __pyx_obj_4grpc_7_cython_6cygrpc__ConnectivityTag *__pyx_v_tag = 0;
  PyObject *__pyx_v_completed_tag = NULL;
  PyObject *__pyx_v_event = NULL;
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  PyObject *__pyx_t_2 = NULL;
  PyObject *__pyx_t_3 = NULL;
  PyObject *__pyx_t_4 = NULL;
  PyObject *__pyx_t_5 = NULL;
  PyObject *__pyx_t_6 = NULL;
  PyObject *__pyx_t_7 = NULL;
  int __pyx_t_8;
  gpr_timespec __pyx_t_9;
  int __pyx_t_10;
  PyObject *__pyx_t_11 = NULL;
  PyObject *__pyx_t_12 = NULL;
  int __pyx_t_13;
  PyObject *(*__pyx_t_14)(PyObject *);
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("_watch_connectivity_state", 0);

  /* "src/python/grpcio/grpc/_cython/_cygrpc/channel.pyx.pxi":376
 *     _ChannelState state, grpc_connectivity_state last_observed_state,
 *     object deadline):
 *   cdef _ConnectivityTag tag = _ConnectivityTag(object())             # <<<<<<<<<<<<<<
 *   with state.condition:
 *     if state.open:
 */
  __pyx_t_1 = __Pyx_PyObject_CallNoArg(__pyx_builtin_object); if (unlikely(!__pyx_t_1)) __PYX_ERR(12, 376, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_t_2 = __Pyx_PyObject_CallOneArg(((PyObject *)__pyx_ptype_4grpc_7_cython_6cygrpc__ConnectivityTag), __pyx_t_1); if (unlikely(!__pyx_t_2)) __PYX_ERR(12, 376, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  __pyx_v_tag = ((struct __pyx_obj_4grpc_7_cython_6cygrpc__ConnectivityTag *)__pyx_t_2);
  __pyx_t_2 = 0;

  /* "src/python/grpcio/grpc/_cython/_cygrpc/channel.pyx.pxi":377
 *     object deadline):
 *   cdef _ConnectivityTag tag = _ConnectivityTag(object())
 *   with state.condition:             # <<<<<<<<<<<<<<
 *     if state.open:
 *       cpython.Py_INCREF(tag)
 */
  /*with:*/ {
    __pyx_t_3 = __Pyx_PyObject_LookupSpecial(__pyx_v_state->condition, __pyx_n_s_exit); if (unlikely(!__pyx_t_3)) __PYX_ERR(12, 377, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_3);
    __pyx_t_1 = __Pyx_PyObject_LookupSpecial(__pyx_v_state->condition, __pyx_n_s_enter); if (unlikely(!__pyx_t_1)) __PYX_ERR(12, 377, __pyx_L3_error)
    __Pyx_GOTREF(__pyx_t_1);
    __pyx_t_4 = NULL;
    if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_1))) {
      __pyx_t_4 = PyMethod_GET_SELF(__pyx_t_1);
      if (likely(__pyx_t_4)) {
        PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_1);
        __Pyx_INCREF(__pyx_t_4);
        __Pyx_INCREF(function);
        __Pyx_DECREF_SET(__pyx_t_1, function);
      }
    }
    __pyx_t_2 = (__pyx_t_4) ? __Pyx_PyObject_CallOneArg(__pyx_t_1, __pyx_t_4) : __Pyx_PyObject_CallNoArg(__pyx_t_1);
    __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0;
    if (unlikely(!__pyx_t_2)) __PYX_ERR(12, 377, __pyx_L3_error)
    __Pyx_GOTREF(__pyx_t_2);
    __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
    __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
    /*try:*/ {
      {
        __Pyx_PyThreadState_declare
        __Pyx_PyThreadState_assign
        __Pyx_ExceptionSave(&__pyx_t_5, &__pyx_t_6, &__pyx_t_7);
        __Pyx_XGOTREF(__pyx_t_5);
        __Pyx_XGOTREF(__pyx_t_6);
        __Pyx_XGOTREF(__pyx_t_7);
        /*try:*/ {

          /* "src/python/grpcio/grpc/_cython/_cygrpc/channel.pyx.pxi":378
 *   cdef _ConnectivityTag tag = _ConnectivityTag(object())
 *   with state.condition:
 *     if state.open:             # <<<<<<<<<<<<<<
 *       cpython.Py_INCREF(tag)
 *       grpc_channel_watch_connectivity_state(
 */
          __pyx_t_8 = __Pyx_PyObject_IsTrue(__pyx_v_state->open); if (unlikely(__pyx_t_8 < 0)) __PYX_ERR(12, 378, __pyx_L7_error)
          if (likely(__pyx_t_8)) {

            /* "src/python/grpcio/grpc/_cython/_cygrpc/channel.pyx.pxi":379
 *   with state.condition:
 *     if state.open:
 *       cpython.Py_INCREF(tag)             # <<<<<<<<<<<<<<
 *       grpc_channel_watch_connectivity_state(
 *           state.c_channel, last_observed_state, _timespec_from_time(deadline),
 */
            Py_INCREF(((PyObject *)__pyx_v_tag));

            /* "src/python/grpcio/grpc/_cython/_cygrpc/channel.pyx.pxi":381
 *       cpython.Py_INCREF(tag)
 *       grpc_channel_watch_connectivity_state(
 *           state.c_channel, last_observed_state, _timespec_from_time(deadline),             # <<<<<<<<<<<<<<
 *           state.c_connectivity_completion_queue, <cpython.PyObject *>tag)
 *       state.connectivity_due.add(tag)
 */
            __pyx_t_9 = __pyx_f_4grpc_7_cython_6cygrpc__timespec_from_time(__pyx_v_deadline); if (unlikely(PyErr_Occurred())) __PYX_ERR(12, 381, __pyx_L7_error)

            /* "src/python/grpcio/grpc/_cython/_cygrpc/channel.pyx.pxi":380
 *     if state.open:
 *       cpython.Py_INCREF(tag)
 *       grpc_channel_watch_connectivity_state(             # <<<<<<<<<<<<<<
 *           state.c_channel, last_observed_state, _timespec_from_time(deadline),
 *           state.c_connectivity_completion_queue, <cpython.PyObject *>tag)
 */
            grpc_channel_watch_connectivity_state(__pyx_v_state->c_channel, __pyx_v_last_observed_state, __pyx_t_9, __pyx_v_state->c_connectivity_completion_queue, ((PyObject *)__pyx_v_tag));

            /* "src/python/grpcio/grpc/_cython/_cygrpc/channel.pyx.pxi":383
 *           state.c_channel, last_observed_state, _timespec_from_time(deadline),
 *           state.c_connectivity_completion_queue, <cpython.PyObject *>tag)
 *       state.connectivity_due.add(tag)             # <<<<<<<<<<<<<<
 *     else:
 *       raise ValueError('Cannot invoke RPC: %s' % state.closed_reason)
 */
            if (unlikely(__pyx_v_state->connectivity_due == Py_None)) {
              PyErr_Format(PyExc_AttributeError, "'NoneType' object has no attribute '%.30s'", "add");
              __PYX_ERR(12, 383, __pyx_L7_error)
            }
            __pyx_t_10 = PySet_Add(__pyx_v_state->connectivity_due, ((PyObject *)__pyx_v_tag)); if (unlikely(__pyx_t_10 == ((int)-1))) __PYX_ERR(12, 383, __pyx_L7_error)

            /* "src/python/grpcio/grpc/_cython/_cygrpc/channel.pyx.pxi":378
 *   cdef _ConnectivityTag tag = _ConnectivityTag(object())
 *   with state.condition:
 *     if state.open:             # <<<<<<<<<<<<<<
 *       cpython.Py_INCREF(tag)
 *       grpc_channel_watch_connectivity_state(
 */
            goto __pyx_L13;
          }

          /* "src/python/grpcio/grpc/_cython/_cygrpc/channel.pyx.pxi":385
 *       state.connectivity_due.add(tag)
 *     else:
 *       raise ValueError('Cannot invoke RPC: %s' % state.closed_reason)             # <<<<<<<<<<<<<<
 *   completed_tag, event = _latent_event(
 *       state.c_connectivity_completion_queue, None)
 */
          /*else*/ {
            __pyx_t_2 = __Pyx_PyString_FormatSafe(__pyx_kp_s_Cannot_invoke_RPC_s, __pyx_v_state->closed_reason); if (unlikely(!__pyx_t_2)) __PYX_ERR(12, 385, __pyx_L7_error)
            __Pyx_GOTREF(__pyx_t_2);
            __pyx_t_1 = __Pyx_PyObject_CallOneArg(__pyx_builtin_ValueError, __pyx_t_2); if (unlikely(!__pyx_t_1)) __PYX_ERR(12, 385, __pyx_L7_error)
            __Pyx_GOTREF(__pyx_t_1);
            __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
            __Pyx_Raise(__pyx_t_1, 0, 0, 0);
            __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
            __PYX_ERR(12, 385, __pyx_L7_error)
          }
          __pyx_L13:;

          /* "src/python/grpcio/grpc/_cython/_cygrpc/channel.pyx.pxi":377
 *     object deadline):
 *   cdef _ConnectivityTag tag = _ConnectivityTag(object())
 *   with state.condition:             # <<<<<<<<<<<<<<
 *     if state.open:
 *       cpython.Py_INCREF(tag)
 */
        }
        __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0;
        __Pyx_XDECREF(__pyx_t_6); __pyx_t_6 = 0;
        __Pyx_XDECREF(__pyx_t_7); __pyx_t_7 = 0;
        goto __pyx_L12_try_end;
        __pyx_L7_error:;
        __Pyx_XDECREF(__pyx_t_1); __pyx_t_1 = 0;
        __Pyx_XDECREF(__pyx_t_2); __pyx_t_2 = 0;
        __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0;
        /*except:*/ {
          __Pyx_AddTraceback("grpc._cython.cygrpc._watch_connectivity_state", __pyx_clineno, __pyx_lineno, __pyx_filename);
          if (__Pyx_GetException(&__pyx_t_1, &__pyx_t_2, &__pyx_t_4) < 0) __PYX_ERR(12, 377, __pyx_L9_except_error)
          __Pyx_GOTREF(__pyx_t_1);
          __Pyx_GOTREF(__pyx_t_2);
          __Pyx_GOTREF(__pyx_t_4);
          __pyx_t_11 = PyTuple_Pack(3, __pyx_t_1, __pyx_t_2, __pyx_t_4); if (unlikely(!__pyx_t_11)) __PYX_ERR(12, 377, __pyx_L9_except_error)
          __Pyx_GOTREF(__pyx_t_11);
          __pyx_t_12 = __Pyx_PyObject_Call(__pyx_t_3, __pyx_t_11, NULL);
          __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
          __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0;
          if (unlikely(!__pyx_t_12)) __PYX_ERR(12, 377, __pyx_L9_except_error)
          __Pyx_GOTREF(__pyx_t_12);
          __pyx_t_8 = __Pyx_PyObject_IsTrue(__pyx_t_12);
          __Pyx_DECREF(__pyx_t_12); __pyx_t_12 = 0;
          if (__pyx_t_8 < 0) __PYX_ERR(12, 377, __pyx_L9_except_error)
          __pyx_t_13 = ((!(__pyx_t_8 != 0)) != 0);
          if (__pyx_t_13) {
            __Pyx_GIVEREF(__pyx_t_1);
            __Pyx_GIVEREF(__pyx_t_2);
            __Pyx_XGIVEREF(__pyx_t_4);
            __Pyx_ErrRestoreWithState(__pyx_t_1, __pyx_t_2, __pyx_t_4);
            __pyx_t_1 = 0; __pyx_t_2 = 0; __pyx_t_4 = 0; 
            __PYX_ERR(12, 377, __pyx_L9_except_error)
          }
          __Pyx_XDECREF(__pyx_t_1); __pyx_t_1 = 0;
          __Pyx_XDECREF(__pyx_t_2); __pyx_t_2 = 0;
          __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0;
          goto __pyx_L8_exception_handled;
        }
        __pyx_L9_except_error:;
        __Pyx_XGIVEREF(__pyx_t_5);
        __Pyx_XGIVEREF(__pyx_t_6);
        __Pyx_XGIVEREF(__pyx_t_7);
        __Pyx_ExceptionReset(__pyx_t_5, __pyx_t_6, __pyx_t_7);
        goto __pyx_L1_error;
        __pyx_L8_exception_handled:;
        __Pyx_XGIVEREF(__pyx_t_5);
        __Pyx_XGIVEREF(__pyx_t_6);
        __Pyx_XGIVEREF(__pyx_t_7);
        __Pyx_ExceptionReset(__pyx_t_5, __pyx_t_6, __pyx_t_7);
        __pyx_L12_try_end:;
      }
    }
    /*finally:*/ {
      /*normal exit:*/{
        if (__pyx_t_3) {
          __pyx_t_7 = __Pyx_PyObject_Call(__pyx_t_3, __pyx_tuple__17, NULL);
          __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
          if (unlikely(!__pyx_t_7)) __PYX_ERR(12, 377, __pyx_L1_error)
          __Pyx_GOTREF(__pyx_t_7);
          __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
        }
        goto __pyx_L6;
      }
      __pyx_L6:;
    }
    goto __pyx_L17;
    __pyx_L3_error:;
    __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
    goto __pyx_L1_error;
    __pyx_L17:;
  }

  /* "src/python/grpcio/grpc/_cython/_cygrpc/channel.pyx.pxi":386
 *     else:
 *       raise ValueError('Cannot invoke RPC: %s' % state.closed_reason)
 *   completed_tag, event = _latent_event(             # <<<<<<<<<<<<<<
 *       state.c_connectivity_completion_queue, None)
 *   with state.condition:
 */
  __pyx_t_4 = __pyx_f_4grpc_7_cython_6cygrpc__latent_event(__pyx_v_state->c_connectivity_completion_queue, Py_None); if (unlikely(!__pyx_t_4)) __PYX_ERR(12, 386, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_4);
  if ((likely(PyTuple_CheckExact(__pyx_t_4))) || (PyList_CheckExact(__pyx_t_4))) {
    PyObject* sequence = __pyx_t_4;
    Py_ssize_t size = __Pyx_PySequence_SIZE(sequence);
    if (unlikely(size != 2)) {
      if (size > 2) __Pyx_RaiseTooManyValuesError(2);
      else if (size >= 0) __Pyx_RaiseNeedMoreValuesError(size);
      __PYX_ERR(12, 386, __pyx_L1_error)
    }
    #if CYTHON_ASSUME_SAFE_MACROS && !CYTHON_AVOID_BORROWED_REFS
    if (likely(PyTuple_CheckExact(sequence))) {
      __pyx_t_2 = PyTuple_GET_ITEM(sequence, 0); 
      __pyx_t_1 = PyTuple_GET_ITEM(sequence, 1); 
    } else {
      __pyx_t_2 = PyList_GET_ITEM(sequence, 0); 
      __pyx_t_1 = PyList_GET_ITEM(sequence, 1); 
    }
    __Pyx_INCREF(__pyx_t_2);
    __Pyx_INCREF(__pyx_t_1);
    #else
    __pyx_t_2 = PySequence_ITEM(sequence, 0); if (unlikely(!__pyx_t_2)) __PYX_ERR(12, 386, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_2);
    __pyx_t_1 = PySequence_ITEM(sequence, 1); if (unlikely(!__pyx_t_1)) __PYX_ERR(12, 386, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_1);
    #endif
    __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
  } else {
    Py_ssize_t index = -1;
    __pyx_t_11 = PyObject_GetIter(__pyx_t_4); if (unlikely(!__pyx_t_11)) __PYX_ERR(12, 386, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_11);
    __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
    __pyx_t_14 = Py_TYPE(__pyx_t_11)->tp_iternext;
    index = 0; __pyx_t_2 = __pyx_t_14(__pyx_t_11); if (unlikely(!__pyx_t_2)) goto __pyx_L18_unpacking_failed;
    __Pyx_GOTREF(__pyx_t_2);
    index = 1; __pyx_t_1 = __pyx_t_14(__pyx_t_11); if (unlikely(!__pyx_t_1)) goto __pyx_L18_unpacking_failed;
    __Pyx_GOTREF(__pyx_t_1);
    if (__Pyx_IternextUnpackEndCheck(__pyx_t_14(__pyx_t_11), 2) < 0) __PYX_ERR(12, 386, __pyx_L1_error)
    __pyx_t_14 = NULL;
    __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0;
    goto __pyx_L19_unpacking_done;
    __pyx_L18_unpacking_failed:;
    __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0;
    __pyx_t_14 = NULL;
    if (__Pyx_IterFinish() == 0) __Pyx_RaiseNeedMoreValuesError(index);
    __PYX_ERR(12, 386, __pyx_L1_error)
    __pyx_L19_unpacking_done:;
  }
  __pyx_v_completed_tag = __pyx_t_2;
  __pyx_t_2 = 0;
  __pyx_v_event = __pyx_t_1;
  __pyx_t_1 = 0;

  /* "src/python/grpcio/grpc/_cython/_cygrpc/channel.pyx.pxi":388
 *   completed_tag, event = _latent_event(
 *       state.c_connectivity_completion_queue, None)
 *   with state.condition:             # <<<<<<<<<<<<<<
 *     state.connectivity_due.remove(completed_tag)
 *     state.condition.notify_all()
 */
  /*with:*/ {
    __pyx_t_3 = __Pyx_PyObject_LookupSpecial(__pyx_v_state->condition, __pyx_n_s_exit); if (unlikely(!__pyx_t_3)) __PYX_ERR(12, 388, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_3);
    __pyx_t_1 = __Pyx_PyObject_LookupSpecial(__pyx_v_state->condition, __pyx_n_s_enter); if (unlikely(!__pyx_t_1)) __PYX_ERR(12, 388, __pyx_L20_error)
    __Pyx_GOTREF(__pyx_t_1);
    __pyx_t_2 = NULL;
    if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_1))) {
      __pyx_t_2 = PyMethod_GET_SELF(__pyx_t_1);
      if (likely(__pyx_t_2)) {
        PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_1);
        __Pyx_INCREF(__pyx_t_2);
        __Pyx_INCREF(function);
        __Pyx_DECREF_SET(__pyx_t_1, function);
      }
    }
    __pyx_t_4 = (__pyx_t_2) ? __Pyx_PyObject_CallOneArg(__pyx_t_1, __pyx_t_2) : __Pyx_PyObject_CallNoArg(__pyx_t_1);
    __Pyx_XDECREF(__pyx_t_2); __pyx_t_2 = 0;
    if (unlikely(!__pyx_t_4)) __PYX_ERR(12, 388, __pyx_L20_error)
    __Pyx_GOTREF(__pyx_t_4);
    __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
    __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
    /*try:*/ {
      {
        __Pyx_PyThreadState_declare
        __Pyx_PyThreadState_assign
        __Pyx_ExceptionSave(&__pyx_t_7, &__pyx_t_6, &__pyx_t_5);
        __Pyx_XGOTREF(__pyx_t_7);
        __Pyx_XGOTREF(__pyx_t_6);
        __Pyx_XGOTREF(__pyx_t_5);
        /*try:*/ {

          /* "src/python/grpcio/grpc/_cython/_cygrpc/channel.pyx.pxi":389
 *       state.c_connectivity_completion_queue, None)
 *   with state.condition:
 *     state.connectivity_due.remove(completed_tag)             # <<<<<<<<<<<<<<
 *     state.condition.notify_all()
 *   return event
 */
          if (unlikely(__pyx_v_state->connectivity_due == Py_None)) {
            PyErr_Format(PyExc_AttributeError, "'NoneType' object has no attribute '%.30s'", "remove");
            __PYX_ERR(12, 389, __pyx_L24_error)
          }
          __pyx_t_10 = __Pyx_PySet_Remove(__pyx_v_state->connectivity_due, __pyx_v_completed_tag); if (unlikely(__pyx_t_10 == ((int)-1))) __PYX_ERR(12, 389, __pyx_L24_error)

          /* "src/python/grpcio/grpc/_cython/_cygrpc/channel.pyx.pxi":390
 *   with state.condition:
 *     state.connectivity_due.remove(completed_tag)
 *     state.condition.notify_all()             # <<<<<<<<<<<<<<
 *   return event
 * 
 */
          __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_v_state->condition, __pyx_n_s_notify_all); if (unlikely(!__pyx_t_1)) __PYX_ERR(12, 390, __pyx_L24_error)
          __Pyx_GOTREF(__pyx_t_1);
          __pyx_t_2 = NULL;
          if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_1))) {
            __pyx_t_2 = PyMethod_GET_SELF(__pyx_t_1);
            if (likely(__pyx_t_2)) {
              PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_1);
              __Pyx_INCREF(__pyx_t_2);
              __Pyx_INCREF(function);
              __Pyx_DECREF_SET(__pyx_t_1, function);
            }
          }
          __pyx_t_4 = (__pyx_t_2) ? __Pyx_PyObject_CallOneArg(__pyx_t_1, __pyx_t_2) : __Pyx_PyObject_CallNoArg(__pyx_t_1);
          __Pyx_XDECREF(__pyx_t_2); __pyx_t_2 = 0;
          if (unlikely(!__pyx_t_4)) __PYX_ERR(12, 390, __pyx_L24_error)
          __Pyx_GOTREF(__pyx_t_4);
          __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
          __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;

          /* "src/python/grpcio/grpc/_cython/_cygrpc/channel.pyx.pxi":388
 *   completed_tag, event = _latent_event(
 *       state.c_connectivity_completion_queue, None)
 *   with state.condition:             # <<<<<<<<<<<<<<
 *     state.connectivity_due.remove(completed_tag)
 *     state.condition.notify_all()
 */
        }
        __Pyx_XDECREF(__pyx_t_7); __pyx_t_7 = 0;
        __Pyx_XDECREF(__pyx_t_6); __pyx_t_6 = 0;
        __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0;
        goto __pyx_L29_try_end;
        __pyx_L24_error:;
        __Pyx_XDECREF(__pyx_t_1); __pyx_t_1 = 0;
        __Pyx_XDECREF(__pyx_t_11); __pyx_t_11 = 0;
        __Pyx_XDECREF(__pyx_t_2); __pyx_t_2 = 0;
        __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0;
        /*except:*/ {
          __Pyx_AddTraceback("grpc._cython.cygrpc._watch_connectivity_state", __pyx_clineno, __pyx_lineno, __pyx_filename);
          if (__Pyx_GetException(&__pyx_t_4, &__pyx_t_1, &__pyx_t_2) < 0) __PYX_ERR(12, 388, __pyx_L26_except_error)
          __Pyx_GOTREF(__pyx_t_4);
          __Pyx_GOTREF(__pyx_t_1);
          __Pyx_GOTREF(__pyx_t_2);
          __pyx_t_11 = PyTuple_Pack(3, __pyx_t_4, __pyx_t_1, __pyx_t_2); if (unlikely(!__pyx_t_11)) __PYX_ERR(12, 388, __pyx_L26_except_error)
          __Pyx_GOTREF(__pyx_t_11);
          __pyx_t_12 = __Pyx_PyObject_Call(__pyx_t_3, __pyx_t_11, NULL);
          __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
          __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0;
          if (unlikely(!__pyx_t_12)) __PYX_ERR(12, 388, __pyx_L26_except_error)
          __Pyx_GOTREF(__pyx_t_12);
          __pyx_t_13 = __Pyx_PyObject_IsTrue(__pyx_t_12);
          __Pyx_DECREF(__pyx_t_12); __pyx_t_12 = 0;
          if (__pyx_t_13 < 0) __PYX_ERR(12, 388, __pyx_L26_except_error)
          __pyx_t_8 = ((!(__pyx_t_13 != 0)) != 0);
          if (__pyx_t_8) {
            __Pyx_GIVEREF(__pyx_t_4);
            __Pyx_GIVEREF(__pyx_t_1);
            __Pyx_XGIVEREF(__pyx_t_2);
            __Pyx_ErrRestoreWithState(__pyx_t_4, __pyx_t_1, __pyx_t_2);
            __pyx_t_4 = 0; __pyx_t_1 = 0; __pyx_t_2 = 0; 
            __PYX_ERR(12, 388, __pyx_L26_except_error)
          }
          __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0;
          __Pyx_XDECREF(__pyx_t_1); __pyx_t_1 = 0;
          __Pyx_XDECREF(__pyx_t_2); __pyx_t_2 = 0;
          goto __pyx_L25_exception_handled;
        }
        __pyx_L26_except_error:;
        __Pyx_XGIVEREF(__pyx_t_7);
        __Pyx_XGIVEREF(__pyx_t_6);
        __Pyx_XGIVEREF(__pyx_t_5);
        __Pyx_ExceptionReset(__pyx_t_7, __pyx_t_6, __pyx_t_5);
        goto __pyx_L1_error;
        __pyx_L25_exception_handled:;
        __Pyx_XGIVEREF(__pyx_t_7);
        __Pyx_XGIVEREF(__pyx_t_6);
        __Pyx_XGIVEREF(__pyx_t_5);
        __Pyx_ExceptionReset(__pyx_t_7, __pyx_t_6, __pyx_t_5);
        __pyx_L29_try_end:;
      }
    }
    /*finally:*/ {
      /*normal exit:*/{
        if (__pyx_t_3) {
          __pyx_t_5 = __Pyx_PyObject_Call(__pyx_t_3, __pyx_tuple__17, NULL);
          __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
          if (unlikely(!__pyx_t_5)) __PYX_ERR(12, 388, __pyx_L1_error)
          __Pyx_GOTREF(__pyx_t_5);
          __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
        }
        goto __pyx_L23;
      }
      __pyx_L23:;
    }
    goto __pyx_L33;
    __pyx_L20_error:;
    __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
    goto __pyx_L1_error;
    __pyx_L33:;
  }

  /* "src/python/grpcio/grpc/_cython/_cygrpc/channel.pyx.pxi":391
 *     state.connectivity_due.remove(completed_tag)
 *     state.condition.notify_all()
 *   return event             # <<<<<<<<<<<<<<
 * 
 * 
 */
  __Pyx_XDECREF(__pyx_r);
  __Pyx_INCREF(__pyx_v_event);
  __pyx_r = __pyx_v_event;
  goto __pyx_L0;

  /* "src/python/grpcio/grpc/_cython/_cygrpc/channel.pyx.pxi":373
 * 
 * 
 * cdef object _watch_connectivity_state(             # <<<<<<<<<<<<<<
 *     _ChannelState state, grpc_connectivity_state last_observed_state,
 *     object deadline):
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_XDECREF(__pyx_t_4);
  __Pyx_XDECREF(__pyx_t_11);
  __Pyx_AddTraceback("grpc._cython.cygrpc._watch_connectivity_state", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = 0;
  __pyx_L0:;
  __Pyx_XDECREF((PyObject *)__pyx_v_tag);
  __Pyx_XDECREF(__pyx_v_completed_tag);
  __Pyx_XDECREF(__pyx_v_event);
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "src/python/grpcio/grpc/_cython/_cygrpc/channel.pyx.pxi":394
 * 
 * 
 * cdef _close(Channel channel, grpc_status_code code, object details,             # <<<<<<<<<<<<<<
 *     drain_calls):
 *   cdef _ChannelState state = channel._state
 */

static PyObject *__pyx_f_4grpc_7_cython_6cygrpc__close(struct __pyx_obj_4grpc_7_cython_6cygrpc_Channel *__pyx_v_channel, grpc_status_code __pyx_v_code, PyObject *__pyx_v_details, PyObject *__pyx_v_drain_calls) {
  struct __pyx_obj_4grpc_7_cython_6cygrpc__ChannelState *__pyx_v_state = 0;
  struct __pyx_obj_4grpc_7_cython_6cygrpc__CallState *__pyx_v_call_state = 0;
  PyObject *__pyx_v_encoded_details = NULL;
  PyObject *__pyx_v_event = NULL;
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  PyObject *__pyx_t_2 = NULL;
  PyObject *__pyx_t_3 = NULL;
  PyObject *__pyx_t_4 = NULL;
  PyObject *__pyx_t_5 = NULL;
  PyObject *__pyx_t_6 = NULL;
  PyObject *__pyx_t_7 = NULL;
  int __pyx_t_8;
  Py_ssize_t __pyx_t_9;
  Py_ssize_t __pyx_t_10;
  int __pyx_t_11;
  int __pyx_t_12;
  char const *__pyx_t_13;
  int __pyx_t_14;
  PyObject *__pyx_t_15 = NULL;
  PyObject *__pyx_t_16 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("_close", 0);

  /* "src/python/grpcio/grpc/_cython/_cygrpc/channel.pyx.pxi":396
 * cdef _close(Channel channel, grpc_status_code code, object details,
 *     drain_calls):
 *   cdef _ChannelState state = channel._state             # <<<<<<<<<<<<<<
 *   cdef _CallState call_state
 *   encoded_details = _encode(details)
 */
  __pyx_t_1 = ((PyObject *)__pyx_v_channel->_state);
  __Pyx_INCREF(__pyx_t_1);
  __pyx_v_state = ((struct __pyx_obj_4grpc_7_cython_6cygrpc__ChannelState *)__pyx_t_1);
  __pyx_t_1 = 0;

  /* "src/python/grpcio/grpc/_cython/_cygrpc/channel.pyx.pxi":398
 *   cdef _ChannelState state = channel._state
 *   cdef _CallState call_state
 *   encoded_details = _encode(details)             # <<<<<<<<<<<<<<
 *   with state.condition:
 *     if state.open:
 */
  __pyx_t_1 = __pyx_f_4grpc_7_cython_6cygrpc__encode(__pyx_v_details); if (unlikely(!__pyx_t_1)) __PYX_ERR(12, 398, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_v_encoded_details = ((PyObject*)__pyx_t_1);
  __pyx_t_1 = 0;

  /* "src/python/grpcio/grpc/_cython/_cygrpc/channel.pyx.pxi":399
 *   cdef _CallState call_state
 *   encoded_details = _encode(details)
 *   with state.condition:             # <<<<<<<<<<<<<<
 *     if state.open:
 *       state.open = False
 */
  /*with:*/ {
    __pyx_t_2 = __Pyx_PyObject_LookupSpecial(__pyx_v_state->condition, __pyx_n_s_exit); if (unlikely(!__pyx_t_2)) __PYX_ERR(12, 399, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_2);
    __pyx_t_3 = __Pyx_PyObject_LookupSpecial(__pyx_v_state->condition, __pyx_n_s_enter); if (unlikely(!__pyx_t_3)) __PYX_ERR(12, 399, __pyx_L3_error)
    __Pyx_GOTREF(__pyx_t_3);
    __pyx_t_4 = NULL;
    if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_3))) {
      __pyx_t_4 = PyMethod_GET_SELF(__pyx_t_3);
      if (likely(__pyx_t_4)) {
        PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_3);
        __Pyx_INCREF(__pyx_t_4);
        __Pyx_INCREF(function);
        __Pyx_DECREF_SET(__pyx_t_3, function);
      }
    }
    __pyx_t_1 = (__pyx_t_4) ? __Pyx_PyObject_CallOneArg(__pyx_t_3, __pyx_t_4) : __Pyx_PyObject_CallNoArg(__pyx_t_3);
    __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0;
    if (unlikely(!__pyx_t_1)) __PYX_ERR(12, 399, __pyx_L3_error)
    __Pyx_GOTREF(__pyx_t_1);
    __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
    __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
    /*try:*/ {
      {
        __Pyx_PyThreadState_declare
        __Pyx_PyThreadState_assign
        __Pyx_ExceptionSave(&__pyx_t_5, &__pyx_t_6, &__pyx_t_7);
        __Pyx_XGOTREF(__pyx_t_5);
        __Pyx_XGOTREF(__pyx_t_6);
        __Pyx_XGOTREF(__pyx_t_7);
        /*try:*/ {

          /* "src/python/grpcio/grpc/_cython/_cygrpc/channel.pyx.pxi":400
 *   encoded_details = _encode(details)
 *   with state.condition:
 *     if state.open:             # <<<<<<<<<<<<<<
 *       state.open = False
 *       state.closed_reason = details
 */
          __pyx_t_8 = __Pyx_PyObject_IsTrue(__pyx_v_state->open); if (unlikely(__pyx_t_8 < 0)) __PYX_ERR(12, 400, __pyx_L7_error)
          if (__pyx_t_8) {

            /* "src/python/grpcio/grpc/_cython/_cygrpc/channel.pyx.pxi":401
 *   with state.condition:
 *     if state.open:
 *       state.open = False             # <<<<<<<<<<<<<<
 *       state.closed_reason = details
 *       for call_state in set(state.integrated_call_states.values()):
 */
            __Pyx_INCREF(Py_False);
            __Pyx_GIVEREF(Py_False);
            __Pyx_GOTREF(__pyx_v_state->open);
            __Pyx_DECREF(__pyx_v_state->open);
            __pyx_v_state->open = Py_False;

            /* "src/python/grpcio/grpc/_cython/_cygrpc/channel.pyx.pxi":402
 *     if state.open:
 *       state.open = False
 *       state.closed_reason = details             # <<<<<<<<<<<<<<
 *       for call_state in set(state.integrated_call_states.values()):
 *         grpc_call_cancel_with_status(
 */
            __Pyx_INCREF(__pyx_v_details);
            __Pyx_GIVEREF(__pyx_v_details);
            __Pyx_GOTREF(__pyx_v_state->closed_reason);
            __Pyx_DECREF(__pyx_v_state->closed_reason);
            __pyx_v_state->closed_reason = __pyx_v_details;

            /* "src/python/grpcio/grpc/_cython/_cygrpc/channel.pyx.pxi":403
 *       state.open = False
 *       state.closed_reason = details
 *       for call_state in set(state.integrated_call_states.values()):             # <<<<<<<<<<<<<<
 *         grpc_call_cancel_with_status(
 *             call_state.c_call, code, encoded_details, NULL)
 */
            __pyx_t_9 = 0;
            if (unlikely(__pyx_v_state->integrated_call_states == Py_None)) {
              PyErr_Format(PyExc_AttributeError, "'NoneType' object has no attribute '%.30s'", "values");
              __PYX_ERR(12, 403, __pyx_L7_error)
            }
            __pyx_t_3 = __Pyx_PyDict_Values(__pyx_v_state->integrated_call_states); if (unlikely(!__pyx_t_3)) __PYX_ERR(12, 403, __pyx_L7_error)
            __Pyx_GOTREF(__pyx_t_3);
            __pyx_t_4 = PySet_New(__pyx_t_3); if (unlikely(!__pyx_t_4)) __PYX_ERR(12, 403, __pyx_L7_error)
            __Pyx_GOTREF(__pyx_t_4);
            __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
            __pyx_t_3 = __Pyx_set_iterator(__pyx_t_4, 1, (&__pyx_t_10), (&__pyx_t_11)); if (unlikely(!__pyx_t_3)) __PYX_ERR(12, 403, __pyx_L7_error)
            __Pyx_GOTREF(__pyx_t_3);
            __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
            __Pyx_XDECREF(__pyx_t_1);
            __pyx_t_1 = __pyx_t_3;
            __pyx_t_3 = 0;
            while (1) {
              __pyx_t_12 = __Pyx_set_iter_next(__pyx_t_1, __pyx_t_10, &__pyx_t_9, &__pyx_t_3, __pyx_t_11);
              if (unlikely(__pyx_t_12 == 0)) break;
              if (unlikely(__pyx_t_12 == -1)) __PYX_ERR(12, 403, __pyx_L7_error)
              __Pyx_GOTREF(__pyx_t_3);
              if (!(likely(((__pyx_t_3) == Py_None) || likely(__Pyx_TypeTest(__pyx_t_3, __pyx_ptype_4grpc_7_cython_6cygrpc__CallState))))) __PYX_ERR(12, 403, __pyx_L7_error)
              __Pyx_XDECREF_SET(__pyx_v_call_state, ((struct __pyx_obj_4grpc_7_cython_6cygrpc__CallState *)__pyx_t_3));
              __pyx_t_3 = 0;

              /* "src/python/grpcio/grpc/_cython/_cygrpc/channel.pyx.pxi":405
 *       for call_state in set(state.integrated_call_states.values()):
 *         grpc_call_cancel_with_status(
 *             call_state.c_call, code, encoded_details, NULL)             # <<<<<<<<<<<<<<
 *       for call_state in state.segregated_call_states:
 *         grpc_call_cancel_with_status(
 */
              if (unlikely(__pyx_v_encoded_details == Py_None)) {
                PyErr_SetString(PyExc_TypeError, "expected bytes, NoneType found");
                __PYX_ERR(12, 405, __pyx_L7_error)
              }
              __pyx_t_13 = __Pyx_PyBytes_AsString(__pyx_v_encoded_details); if (unlikely((!__pyx_t_13) && PyErr_Occurred())) __PYX_ERR(12, 405, __pyx_L7_error)

              /* "src/python/grpcio/grpc/_cython/_cygrpc/channel.pyx.pxi":404
 *       state.closed_reason = details
 *       for call_state in set(state.integrated_call_states.values()):
 *         grpc_call_cancel_with_status(             # <<<<<<<<<<<<<<
 *             call_state.c_call, code, encoded_details, NULL)
 *       for call_state in state.segregated_call_states:
 */
              (void)(grpc_call_cancel_with_status(__pyx_v_call_state->c_call, __pyx_v_code, __pyx_t_13, NULL));
            }
            __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;

            /* "src/python/grpcio/grpc/_cython/_cygrpc/channel.pyx.pxi":406
 *         grpc_call_cancel_with_status(
 *             call_state.c_call, code, encoded_details, NULL)
 *       for call_state in state.segregated_call_states:             # <<<<<<<<<<<<<<
 *         grpc_call_cancel_with_status(
 *             call_state.c_call, code, encoded_details, NULL)
 */
            __pyx_t_10 = 0;
            __pyx_t_3 = __Pyx_set_iterator(__pyx_v_state->segregated_call_states, 1, (&__pyx_t_9), (&__pyx_t_11)); if (unlikely(!__pyx_t_3)) __PYX_ERR(12, 406, __pyx_L7_error)
            __Pyx_GOTREF(__pyx_t_3);
            __Pyx_XDECREF(__pyx_t_1);
            __pyx_t_1 = __pyx_t_3;
            __pyx_t_3 = 0;
            while (1) {
              __pyx_t_12 = __Pyx_set_iter_next(__pyx_t_1, __pyx_t_9, &__pyx_t_10, &__pyx_t_3, __pyx_t_11);
              if (unlikely(__pyx_t_12 == 0)) break;
              if (unlikely(__pyx_t_12 == -1)) __PYX_ERR(12, 406, __pyx_L7_error)
              __Pyx_GOTREF(__pyx_t_3);
              if (!(likely(((__pyx_t_3) == Py_None) || likely(__Pyx_TypeTest(__pyx_t_3, __pyx_ptype_4grpc_7_cython_6cygrpc__CallState))))) __PYX_ERR(12, 406, __pyx_L7_error)
              __Pyx_XDECREF_SET(__pyx_v_call_state, ((struct __pyx_obj_4grpc_7_cython_6cygrpc__CallState *)__pyx_t_3));
              __pyx_t_3 = 0;

              /* "src/python/grpcio/grpc/_cython/_cygrpc/channel.pyx.pxi":408
 *       for call_state in state.segregated_call_states:
 *         grpc_call_cancel_with_status(
 *             call_state.c_call, code, encoded_details, NULL)             # <<<<<<<<<<<<<<
 *       # TODO(https://github.com/grpc/grpc/issues/3064): Cancel connectivity
 *       # watching.
 */
              if (unlikely(__pyx_v_encoded_details == Py_None)) {
                PyErr_SetString(PyExc_TypeError, "expected bytes, NoneType found");
                __PYX_ERR(12, 408, __pyx_L7_error)
              }
              __pyx_t_13 = __Pyx_PyBytes_AsString(__pyx_v_encoded_details); if (unlikely((!__pyx_t_13) && PyErr_Occurred())) __PYX_ERR(12, 408, __pyx_L7_error)

              /* "src/python/grpcio/grpc/_cython/_cygrpc/channel.pyx.pxi":407
 *             call_state.c_call, code, encoded_details, NULL)
 *       for call_state in state.segregated_call_states:
 *         grpc_call_cancel_with_status(             # <<<<<<<<<<<<<<
 *             call_state.c_call, code, encoded_details, NULL)
 *       # TODO(https://github.com/grpc/grpc/issues/3064): Cancel connectivity
 */
              (void)(grpc_call_cancel_with_status(__pyx_v_call_state->c_call, __pyx_v_code, __pyx_t_13, NULL));
            }
            __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;

            /* "src/python/grpcio/grpc/_cython/_cygrpc/channel.pyx.pxi":412
 *       # watching.
 * 
 *       if drain_calls:             # <<<<<<<<<<<<<<
 *         while not _calls_drained(state):
 *           event = channel.next_call_event()
 */
            __pyx_t_8 = __Pyx_PyObject_IsTrue(__pyx_v_drain_calls); if (unlikely(__pyx_t_8 < 0)) __PYX_ERR(12, 412, __pyx_L7_error)
            if (__pyx_t_8) {

              /* "src/python/grpcio/grpc/_cython/_cygrpc/channel.pyx.pxi":413
 * 
 *       if drain_calls:
 *         while not _calls_drained(state):             # <<<<<<<<<<<<<<
 *           event = channel.next_call_event()
 *           if event.completion_type == CompletionType.queue_timeout:
 */
              while (1) {
                __pyx_t_1 = __pyx_f_4grpc_7_cython_6cygrpc__calls_drained(__pyx_v_state); if (unlikely(!__pyx_t_1)) __PYX_ERR(12, 413, __pyx_L7_error)
                __Pyx_GOTREF(__pyx_t_1);
                __pyx_t_8 = __Pyx_PyObject_IsTrue(__pyx_t_1); if (unlikely(__pyx_t_8 < 0)) __PYX_ERR(12, 413, __pyx_L7_error)
                __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
                __pyx_t_14 = ((!__pyx_t_8) != 0);
                if (!__pyx_t_14) break;

                /* "src/python/grpcio/grpc/_cython/_cygrpc/channel.pyx.pxi":414
 *       if drain_calls:
 *         while not _calls_drained(state):
 *           event = channel.next_call_event()             # <<<<<<<<<<<<<<
 *           if event.completion_type == CompletionType.queue_timeout:
 *               continue
 */
                __pyx_t_3 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_channel), __pyx_n_s_next_call_event); if (unlikely(!__pyx_t_3)) __PYX_ERR(12, 414, __pyx_L7_error)
                __Pyx_GOTREF(__pyx_t_3);
                __pyx_t_4 = NULL;
                if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_3))) {
                  __pyx_t_4 = PyMethod_GET_SELF(__pyx_t_3);
                  if (likely(__pyx_t_4)) {
                    PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_3);
                    __Pyx_INCREF(__pyx_t_4);
                    __Pyx_INCREF(function);
                    __Pyx_DECREF_SET(__pyx_t_3, function);
                  }
                }
                __pyx_t_1 = (__pyx_t_4) ? __Pyx_PyObject_CallOneArg(__pyx_t_3, __pyx_t_4) : __Pyx_PyObject_CallNoArg(__pyx_t_3);
                __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0;
                if (unlikely(!__pyx_t_1)) __PYX_ERR(12, 414, __pyx_L7_error)
                __Pyx_GOTREF(__pyx_t_1);
                __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
                __Pyx_XDECREF_SET(__pyx_v_event, __pyx_t_1);
                __pyx_t_1 = 0;

                /* "src/python/grpcio/grpc/_cython/_cygrpc/channel.pyx.pxi":415
 *         while not _calls_drained(state):
 *           event = channel.next_call_event()
 *           if event.completion_type == CompletionType.queue_timeout:             # <<<<<<<<<<<<<<
 *               continue
 *           event.tag(event)
 */
                __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_v_event, __pyx_n_s_completion_type); if (unlikely(!__pyx_t_1)) __PYX_ERR(12, 415, __pyx_L7_error)
                __Pyx_GOTREF(__pyx_t_1);
                __Pyx_GetModuleGlobalName(__pyx_t_3, __pyx_n_s_CompletionType); if (unlikely(!__pyx_t_3)) __PYX_ERR(12, 415, __pyx_L7_error)
                __Pyx_GOTREF(__pyx_t_3);
                __pyx_t_4 = __Pyx_PyObject_GetAttrStr(__pyx_t_3, __pyx_n_s_queue_timeout); if (unlikely(!__pyx_t_4)) __PYX_ERR(12, 415, __pyx_L7_error)
                __Pyx_GOTREF(__pyx_t_4);
                __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
                __pyx_t_3 = PyObject_RichCompare(__pyx_t_1, __pyx_t_4, Py_EQ); __Pyx_XGOTREF(__pyx_t_3); if (unlikely(!__pyx_t_3)) __PYX_ERR(12, 415, __pyx_L7_error)
                __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
                __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
                __pyx_t_14 = __Pyx_PyObject_IsTrue(__pyx_t_3); if (unlikely(__pyx_t_14 < 0)) __PYX_ERR(12, 415, __pyx_L7_error)
                __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
                if (__pyx_t_14) {

                  /* "src/python/grpcio/grpc/_cython/_cygrpc/channel.pyx.pxi":416
 *           event = channel.next_call_event()
 *           if event.completion_type == CompletionType.queue_timeout:
 *               continue             # <<<<<<<<<<<<<<
 *           event.tag(event)
 *       else:
 */
                  goto __pyx_L19_continue;

                  /* "src/python/grpcio/grpc/_cython/_cygrpc/channel.pyx.pxi":415
 *         while not _calls_drained(state):
 *           event = channel.next_call_event()
 *           if event.completion_type == CompletionType.queue_timeout:             # <<<<<<<<<<<<<<
 *               continue
 *           event.tag(event)
 */
                }

                /* "src/python/grpcio/grpc/_cython/_cygrpc/channel.pyx.pxi":417
 *           if event.completion_type == CompletionType.queue_timeout:
 *               continue
 *           event.tag(event)             # <<<<<<<<<<<<<<
 *       else:
 *         while state.integrated_call_states:
 */
                __pyx_t_4 = __Pyx_PyObject_GetAttrStr(__pyx_v_event, __pyx_n_s_tag); if (unlikely(!__pyx_t_4)) __PYX_ERR(12, 417, __pyx_L7_error)
                __Pyx_GOTREF(__pyx_t_4);
                __pyx_t_1 = NULL;
                if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_4))) {
                  __pyx_t_1 = PyMethod_GET_SELF(__pyx_t_4);
                  if (likely(__pyx_t_1)) {
                    PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_4);
                    __Pyx_INCREF(__pyx_t_1);
                    __Pyx_INCREF(function);
                    __Pyx_DECREF_SET(__pyx_t_4, function);
                  }
                }
                __pyx_t_3 = (__pyx_t_1) ? __Pyx_PyObject_Call2Args(__pyx_t_4, __pyx_t_1, __pyx_v_event) : __Pyx_PyObject_CallOneArg(__pyx_t_4, __pyx_v_event);
                __Pyx_XDECREF(__pyx_t_1); __pyx_t_1 = 0;
                if (unlikely(!__pyx_t_3)) __PYX_ERR(12, 417, __pyx_L7_error)
                __Pyx_GOTREF(__pyx_t_3);
                __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
                __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
                __pyx_L19_continue:;
              }

              /* "src/python/grpcio/grpc/_cython/_cygrpc/channel.pyx.pxi":412
 *       # watching.
 * 
 *       if drain_calls:             # <<<<<<<<<<<<<<
 *         while not _calls_drained(state):
 *           event = channel.next_call_event()
 */
              goto __pyx_L18;
            }

            /* "src/python/grpcio/grpc/_cython/_cygrpc/channel.pyx.pxi":419
 *           event.tag(event)
 *       else:
 *         while state.integrated_call_states:             # <<<<<<<<<<<<<<
 *           state.condition.wait()
 *         while state.connectivity_due:
 */
            /*else*/ {
              while (1) {
                __pyx_t_14 = __Pyx_PyObject_IsTrue(__pyx_v_state->integrated_call_states); if (unlikely(__pyx_t_14 < 0)) __PYX_ERR(12, 419, __pyx_L7_error)
                if (!__pyx_t_14) break;

                /* "src/python/grpcio/grpc/_cython/_cygrpc/channel.pyx.pxi":420
 *       else:
 *         while state.integrated_call_states:
 *           state.condition.wait()             # <<<<<<<<<<<<<<
 *         while state.connectivity_due:
 *           state.condition.wait()
 */
                __pyx_t_4 = __Pyx_PyObject_GetAttrStr(__pyx_v_state->condition, __pyx_n_s_wait); if (unlikely(!__pyx_t_4)) __PYX_ERR(12, 420, __pyx_L7_error)
                __Pyx_GOTREF(__pyx_t_4);
                __pyx_t_1 = NULL;
                if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_4))) {
                  __pyx_t_1 = PyMethod_GET_SELF(__pyx_t_4);
                  if (likely(__pyx_t_1)) {
                    PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_4);
                    __Pyx_INCREF(__pyx_t_1);
                    __Pyx_INCREF(function);
                    __Pyx_DECREF_SET(__pyx_t_4, function);
                  }
                }
                __pyx_t_3 = (__pyx_t_1) ? __Pyx_PyObject_CallOneArg(__pyx_t_4, __pyx_t_1) : __Pyx_PyObject_CallNoArg(__pyx_t_4);
                __Pyx_XDECREF(__pyx_t_1); __pyx_t_1 = 0;
                if (unlikely(!__pyx_t_3)) __PYX_ERR(12, 420, __pyx_L7_error)
                __Pyx_GOTREF(__pyx_t_3);
                __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
                __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
              }

              /* "src/python/grpcio/grpc/_cython/_cygrpc/channel.pyx.pxi":421
 *         while state.integrated_call_states:
 *           state.condition.wait()
 *         while state.connectivity_due:             # <<<<<<<<<<<<<<
 *           state.condition.wait()
 * 
 */
              while (1) {
                __pyx_t_14 = (__pyx_v_state->connectivity_due != Py_None)&&(PySet_GET_SIZE(__pyx_v_state->connectivity_due) != 0);
                if (!__pyx_t_14) break;

                /* "src/python/grpcio/grpc/_cython/_cygrpc/channel.pyx.pxi":422
 *           state.condition.wait()
 *         while state.connectivity_due:
 *           state.condition.wait()             # <<<<<<<<<<<<<<
 * 
 *       _destroy_c_completion_queue(state.c_call_completion_queue)
 */
                __pyx_t_4 = __Pyx_PyObject_GetAttrStr(__pyx_v_state->condition, __pyx_n_s_wait); if (unlikely(!__pyx_t_4)) __PYX_ERR(12, 422, __pyx_L7_error)
                __Pyx_GOTREF(__pyx_t_4);
                __pyx_t_1 = NULL;
                if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_4))) {
                  __pyx_t_1 = PyMethod_GET_SELF(__pyx_t_4);
                  if (likely(__pyx_t_1)) {
                    PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_4);
                    __Pyx_INCREF(__pyx_t_1);
                    __Pyx_INCREF(function);
                    __Pyx_DECREF_SET(__pyx_t_4, function);
                  }
                }
                __pyx_t_3 = (__pyx_t_1) ? __Pyx_PyObject_CallOneArg(__pyx_t_4, __pyx_t_1) : __Pyx_PyObject_CallNoArg(__pyx_t_4);
                __Pyx_XDECREF(__pyx_t_1); __pyx_t_1 = 0;
                if (unlikely(!__pyx_t_3)) __PYX_ERR(12, 422, __pyx_L7_error)
                __Pyx_GOTREF(__pyx_t_3);
                __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
                __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
              }
            }
            __pyx_L18:;

            /* "src/python/grpcio/grpc/_cython/_cygrpc/channel.pyx.pxi":424
 *           state.condition.wait()
 * 
 *       _destroy_c_completion_queue(state.c_call_completion_queue)             # <<<<<<<<<<<<<<
 *       _destroy_c_completion_queue(state.c_connectivity_completion_queue)
 *       grpc_channel_destroy(state.c_channel)
 */
            __pyx_t_3 = __pyx_f_4grpc_7_cython_6cygrpc__destroy_c_completion_queue(__pyx_v_state->c_call_completion_queue); if (unlikely(!__pyx_t_3)) __PYX_ERR(12, 424, __pyx_L7_error)
            __Pyx_GOTREF(__pyx_t_3);
            __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;

            /* "src/python/grpcio/grpc/_cython/_cygrpc/channel.pyx.pxi":425
 * 
 *       _destroy_c_completion_queue(state.c_call_completion_queue)
 *       _destroy_c_completion_queue(state.c_connectivity_completion_queue)             # <<<<<<<<<<<<<<
 *       grpc_channel_destroy(state.c_channel)
 *       state.c_channel = NULL
 */
            __pyx_t_3 = __pyx_f_4grpc_7_cython_6cygrpc__destroy_c_completion_queue(__pyx_v_state->c_connectivity_completion_queue); if (unlikely(!__pyx_t_3)) __PYX_ERR(12, 425, __pyx_L7_error)
            __Pyx_GOTREF(__pyx_t_3);
            __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;

            /* "src/python/grpcio/grpc/_cython/_cygrpc/channel.pyx.pxi":426
 *       _destroy_c_completion_queue(state.c_call_completion_queue)
 *       _destroy_c_completion_queue(state.c_connectivity_completion_queue)
 *       grpc_channel_destroy(state.c_channel)             # <<<<<<<<<<<<<<
 *       state.c_channel = NULL
 *       grpc_shutdown()
 */
            grpc_channel_destroy(__pyx_v_state->c_channel);

            /* "src/python/grpcio/grpc/_cython/_cygrpc/channel.pyx.pxi":427
 *       _destroy_c_completion_queue(state.c_connectivity_completion_queue)
 *       grpc_channel_destroy(state.c_channel)
 *       state.c_channel = NULL             # <<<<<<<<<<<<<<
 *       grpc_shutdown()
 *       state.condition.notify_all()
 */
            __pyx_v_state->c_channel = NULL;

            /* "src/python/grpcio/grpc/_cython/_cygrpc/channel.pyx.pxi":428
 *       grpc_channel_destroy(state.c_channel)
 *       state.c_channel = NULL
 *       grpc_shutdown()             # <<<<<<<<<<<<<<
 *       state.condition.notify_all()
 *     else:
 */
            grpc_shutdown();

            /* "src/python/grpcio/grpc/_cython/_cygrpc/channel.pyx.pxi":429
 *       state.c_channel = NULL
 *       grpc_shutdown()
 *       state.condition.notify_all()             # <<<<<<<<<<<<<<
 *     else:
 *       # Another call to close already completed in the past or is currently
 */
            __pyx_t_4 = __Pyx_PyObject_GetAttrStr(__pyx_v_state->condition, __pyx_n_s_notify_all); if (unlikely(!__pyx_t_4)) __PYX_ERR(12, 429, __pyx_L7_error)
            __Pyx_GOTREF(__pyx_t_4);
            __pyx_t_1 = NULL;
            if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_4))) {
              __pyx_t_1 = PyMethod_GET_SELF(__pyx_t_4);
              if (likely(__pyx_t_1)) {
                PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_4);
                __Pyx_INCREF(__pyx_t_1);
                __Pyx_INCREF(function);
                __Pyx_DECREF_SET(__pyx_t_4, function);
              }
            }
            __pyx_t_3 = (__pyx_t_1) ? __Pyx_PyObject_CallOneArg(__pyx_t_4, __pyx_t_1) : __Pyx_PyObject_CallNoArg(__pyx_t_4);
            __Pyx_XDECREF(__pyx_t_1); __pyx_t_1 = 0;
            if (unlikely(!__pyx_t_3)) __PYX_ERR(12, 429, __pyx_L7_error)
            __Pyx_GOTREF(__pyx_t_3);
            __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
            __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;

            /* "src/python/grpcio/grpc/_cython/_cygrpc/channel.pyx.pxi":400
 *   encoded_details = _encode(details)
 *   with state.condition:
 *     if state.open:             # <<<<<<<<<<<<<<
 *       state.open = False
 *       state.closed_reason = details
 */
            goto __pyx_L13;
          }

          /* "src/python/grpcio/grpc/_cython/_cygrpc/channel.pyx.pxi":433
 *       # Another call to close already completed in the past or is currently
 *       # being executed in another thread.
 *       while state.c_channel != NULL:             # <<<<<<<<<<<<<<
 *         state.condition.wait()
 * 
 */
          /*else*/ {
            while (1) {
              __pyx_t_14 = ((__pyx_v_state->c_channel != NULL) != 0);
              if (!__pyx_t_14) break;

              /* "src/python/grpcio/grpc/_cython/_cygrpc/channel.pyx.pxi":434
 *       # being executed in another thread.
 *       while state.c_channel != NULL:
 *         state.condition.wait()             # <<<<<<<<<<<<<<
 * 
 * 
 */
              __pyx_t_4 = __Pyx_PyObject_GetAttrStr(__pyx_v_state->condition, __pyx_n_s_wait); if (unlikely(!__pyx_t_4)) __PYX_ERR(12, 434, __pyx_L7_error)
              __Pyx_GOTREF(__pyx_t_4);
              __pyx_t_1 = NULL;
              if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_4))) {
                __pyx_t_1 = PyMethod_GET_SELF(__pyx_t_4);
                if (likely(__pyx_t_1)) {
                  PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_4);
                  __Pyx_INCREF(__pyx_t_1);
                  __Pyx_INCREF(function);
                  __Pyx_DECREF_SET(__pyx_t_4, function);
                }
              }
              __pyx_t_3 = (__pyx_t_1) ? __Pyx_PyObject_CallOneArg(__pyx_t_4, __pyx_t_1) : __Pyx_PyObject_CallNoArg(__pyx_t_4);
              __Pyx_XDECREF(__pyx_t_1); __pyx_t_1 = 0;
              if (unlikely(!__pyx_t_3)) __PYX_ERR(12, 434, __pyx_L7_error)
              __Pyx_GOTREF(__pyx_t_3);
              __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
              __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
            }
          }
          __pyx_L13:;

          /* "src/python/grpcio/grpc/_cython/_cygrpc/channel.pyx.pxi":399
 *   cdef _CallState call_state
 *   encoded_details = _encode(details)
 *   with state.condition:             # <<<<<<<<<<<<<<
 *     if state.open:
 *       state.open = False
 */
        }
        __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0;
        __Pyx_XDECREF(__pyx_t_6); __pyx_t_6 = 0;
        __Pyx_XDECREF(__pyx_t_7); __pyx_t_7 = 0;
        goto __pyx_L12_try_end;
        __pyx_L7_error:;
        __Pyx_XDECREF(__pyx_t_1); __pyx_t_1 = 0;
        __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0;
        __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0;
        /*except:*/ {
          __Pyx_AddTraceback("grpc._cython.cygrpc._close", __pyx_clineno, __pyx_lineno, __pyx_filename);
          if (__Pyx_GetException(&__pyx_t_3, &__pyx_t_4, &__pyx_t_1) < 0) __PYX_ERR(12, 399, __pyx_L9_except_error)
          __Pyx_GOTREF(__pyx_t_3);
          __Pyx_GOTREF(__pyx_t_4);
          __Pyx_GOTREF(__pyx_t_1);
          __pyx_t_15 = PyTuple_Pack(3, __pyx_t_3, __pyx_t_4, __pyx_t_1); if (unlikely(!__pyx_t_15)) __PYX_ERR(12, 399, __pyx_L9_except_error)
          __Pyx_GOTREF(__pyx_t_15);
          __pyx_t_16 = __Pyx_PyObject_Call(__pyx_t_2, __pyx_t_15, NULL);
          __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
          __Pyx_DECREF(__pyx_t_15); __pyx_t_15 = 0;
          if (unlikely(!__pyx_t_16)) __PYX_ERR(12, 399, __pyx_L9_except_error)
          __Pyx_GOTREF(__pyx_t_16);
          __pyx_t_14 = __Pyx_PyObject_IsTrue(__pyx_t_16);
          __Pyx_DECREF(__pyx_t_16); __pyx_t_16 = 0;
          if (__pyx_t_14 < 0) __PYX_ERR(12, 399, __pyx_L9_except_error)
          __pyx_t_8 = ((!(__pyx_t_14 != 0)) != 0);
          if (__pyx_t_8) {
            __Pyx_GIVEREF(__pyx_t_3);
            __Pyx_GIVEREF(__pyx_t_4);
            __Pyx_XGIVEREF(__pyx_t_1);
            __Pyx_ErrRestoreWithState(__pyx_t_3, __pyx_t_4, __pyx_t_1);
            __pyx_t_3 = 0; __pyx_t_4 = 0; __pyx_t_1 = 0; 
            __PYX_ERR(12, 399, __pyx_L9_except_error)
          }
          __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0;
          __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0;
          __Pyx_XDECREF(__pyx_t_1); __pyx_t_1 = 0;
          goto __pyx_L8_exception_handled;
        }
        __pyx_L9_except_error:;
        __Pyx_XGIVEREF(__pyx_t_5);
        __Pyx_XGIVEREF(__pyx_t_6);
        __Pyx_XGIVEREF(__pyx_t_7);
        __Pyx_ExceptionReset(__pyx_t_5, __pyx_t_6, __pyx_t_7);
        goto __pyx_L1_error;
        __pyx_L8_exception_handled:;
        __Pyx_XGIVEREF(__pyx_t_5);
        __Pyx_XGIVEREF(__pyx_t_6);
        __Pyx_XGIVEREF(__pyx_t_7);
        __Pyx_ExceptionReset(__pyx_t_5, __pyx_t_6, __pyx_t_7);
        __pyx_L12_try_end:;
      }
    }
    /*finally:*/ {
      /*normal exit:*/{
        if (__pyx_t_2) {
          __pyx_t_7 = __Pyx_PyObject_Call(__pyx_t_2, __pyx_tuple__17, NULL);
          __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
          if (unlikely(!__pyx_t_7)) __PYX_ERR(12, 399, __pyx_L1_error)
          __Pyx_GOTREF(__pyx_t_7);
          __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
        }
        goto __pyx_L6;
      }
      __pyx_L6:;
    }
    goto __pyx_L31;
    __pyx_L3_error:;
    __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
    goto __pyx_L1_error;
    __pyx_L31:;
  }

  /* "src/python/grpcio/grpc/_cython/_cygrpc/channel.pyx.pxi":394
 * 
 * 
 * cdef _close(Channel channel, grpc_status_code code, object details,             # <<<<<<<<<<<<<<
 *     drain_calls):
 *   cdef _ChannelState state = channel._state
 */

  /* function exit code */
  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_XDECREF(__pyx_t_3);
  __Pyx_XDECREF(__pyx_t_4);
  __Pyx_XDECREF(__pyx_t_15);
  __Pyx_AddTraceback("grpc._cython.cygrpc._close", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = 0;
  __pyx_L0:;
  __Pyx_XDECREF((PyObject *)__pyx_v_state);
  __Pyx_XDECREF((PyObject *)__pyx_v_call_state);
  __Pyx_XDECREF(__pyx_v_encoded_details);
  __Pyx_XDECREF(__pyx_v_event);
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "src/python/grpcio/grpc/_cython/_cygrpc/channel.pyx.pxi":437
 * 
 * 
 * cdef _calls_drained(_ChannelState state):             # <<<<<<<<<<<<<<
 *   return not (state.integrated_call_states or state.segregated_call_states or
 *               state.connectivity_due)
 */

static PyObject *__pyx_f_4grpc_7_cython_6cygrpc__calls_drained(struct __pyx_obj_4grpc_7_cython_6cygrpc__ChannelState *__pyx_v_state) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  int __pyx_t_1;
  int __pyx_t_2;
  PyObject *__pyx_t_3 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("_calls_drained", 0);

  /* "src/python/grpcio/grpc/_cython/_cygrpc/channel.pyx.pxi":438
 * 
 * cdef _calls_drained(_ChannelState state):
 *   return not (state.integrated_call_states or state.segregated_call_states or             # <<<<<<<<<<<<<<
 *               state.connectivity_due)
 * 
 */
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_2 = __Pyx_PyObject_IsTrue(__pyx_v_state->integrated_call_states); if (unlikely(__pyx_t_2 < 0)) __PYX_ERR(12, 438, __pyx_L1_error)
  if (!__pyx_t_2) {
  } else {
    __pyx_t_1 = __pyx_t_2;
    goto __pyx_L3_bool_binop_done;
  }
  __pyx_t_2 = (__pyx_v_state->segregated_call_states != Py_None)&&(PySet_GET_SIZE(__pyx_v_state->segregated_call_states) != 0);
  if (!__pyx_t_2) {
  } else {
    __pyx_t_1 = __pyx_t_2;
    goto __pyx_L3_bool_binop_done;
  }

  /* "src/python/grpcio/grpc/_cython/_cygrpc/channel.pyx.pxi":439
 * cdef _calls_drained(_ChannelState state):
 *   return not (state.integrated_call_states or state.segregated_call_states or
 *               state.connectivity_due)             # <<<<<<<<<<<<<<
 * 
 * cdef class Channel:
 */
  __pyx_t_2 = (__pyx_v_state->connectivity_due != Py_None)&&(PySet_GET_SIZE(__pyx_v_state->connectivity_due) != 0);
  __pyx_t_1 = __pyx_t_2;
  __pyx_L3_bool_binop_done:;

  /* "src/python/grpcio/grpc/_cython/_cygrpc/channel.pyx.pxi":438
 * 
 * cdef _calls_drained(_ChannelState state):
 *   return not (state.integrated_call_states or state.segregated_call_states or             # <<<<<<<<<<<<<<
 *               state.connectivity_due)
 * 
 */
  __pyx_t_3 = __Pyx_PyBool_FromLong((!__pyx_t_1)); if (unlikely(!__pyx_t_3)) __PYX_ERR(12, 438, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  __pyx_r = __pyx_t_3;
  __pyx_t_3 = 0;
  goto __pyx_L0;

  /* "src/python/grpcio/grpc/_cython/_cygrpc/channel.pyx.pxi":437
 * 
 * 
 * cdef _calls_drained(_ChannelState state):             # <<<<<<<<<<<<<<
 *   return not (state.integrated_call_states or state.segregated_call_states or
 *               state.connectivity_due)
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_3);
  __Pyx_AddTraceback("grpc._cython.cygrpc._calls_drained", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = 0;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "src/python/grpcio/grpc/_cython/_cygrpc/channel.pyx.pxi":443
 * cdef class Channel:
 * 
 *   def __cinit__(             # <<<<<<<<<<<<<<
 *       self, bytes target, object arguments,
 *       ChannelCredentials channel_credentials):
 */

/* Python wrapper */
static int __pyx_pw_4grpc_7_cython_6cygrpc_7Channel_1__cinit__(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
static int __pyx_pw_4grpc_7_cython_6cygrpc_7Channel_1__cinit__(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
  PyObject *__pyx_v_target = 0;
  PyObject *__pyx_v_arguments = 0;
  struct __pyx_obj_4grpc_7_cython_6cygrpc_ChannelCredentials *__pyx_v_channel_credentials = 0;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  int __pyx_r;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__cinit__ (wrapper)", 0);
  {
    static PyObject **__pyx_pyargnames[] = {&__pyx_n_s_target,&__pyx_n_s_arguments,&__pyx_n_s_channel_credentials,0};
    PyObject* values[3] = {0,0,0};
    if (unlikely(__pyx_kwds)) {
      Py_ssize_t kw_args;
      const Py_ssize_t pos_args = PyTuple_GET_SIZE(__pyx_args);
      switch (pos_args) {
        case  3: values[2] = PyTuple_GET_ITEM(__pyx_args, 2);
        CYTHON_FALLTHROUGH;
        case  2: values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
        CYTHON_FALLTHROUGH;
        case  1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
        CYTHON_FALLTHROUGH;
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      kw_args = PyDict_Size(__pyx_kwds);
      switch (pos_args) {
        case  0:
        if (likely((values[0] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_target)) != 0)) kw_args--;
        else goto __pyx_L5_argtuple_error;
        CYTHON_FALLTHROUGH;
        case  1:
        if (likely((values[1] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_arguments)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("__cinit__", 1, 3, 3, 1); __PYX_ERR(12, 443, __pyx_L3_error)
        }
        CYTHON_FALLTHROUGH;
        case  2:
        if (likely((values[2] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_channel_credentials)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("__cinit__", 1, 3, 3, 2); __PYX_ERR(12, 443, __pyx_L3_error)
        }
      }
      if (unlikely(kw_args > 0)) {
        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "__cinit__") < 0)) __PYX_ERR(12, 443, __pyx_L3_error)
      }
    } else if (PyTuple_GET_SIZE(__pyx_args) != 3) {
      goto __pyx_L5_argtuple_error;
    } else {
      values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
      values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
      values[2] = PyTuple_GET_ITEM(__pyx_args, 2);
    }
    __pyx_v_target = ((PyObject*)values[0]);
    __pyx_v_arguments = values[1];
    __pyx_v_channel_credentials = ((struct __pyx_obj_4grpc_7_cython_6cygrpc_ChannelCredentials *)values[2]);
  }
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("__cinit__", 1, 3, 3, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(12, 443, __pyx_L3_error)
  __pyx_L3_error:;
  __Pyx_AddTraceback("grpc._cython.cygrpc.Channel.__cinit__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return -1;
  __pyx_L4_argument_unpacking_done:;
  if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_target), (&PyBytes_Type), 1, "target", 1))) __PYX_ERR(12, 444, __pyx_L1_error)
  if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_channel_credentials), __pyx_ptype_4grpc_7_cython_6cygrpc_ChannelCredentials, 1, "channel_credentials", 0))) __PYX_ERR(12, 445, __pyx_L1_error)
  __pyx_r = __pyx_pf_4grpc_7_cython_6cygrpc_7Channel___cinit__(((struct __pyx_obj_4grpc_7_cython_6cygrpc_Channel *)__pyx_v_self), __pyx_v_target, __pyx_v_arguments, __pyx_v_channel_credentials);

  /* function exit code */
  goto __pyx_L0;
  __pyx_L1_error:;
  __pyx_r = -1;
  __pyx_L0:;
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static int __pyx_pf_4grpc_7_cython_6cygrpc_7Channel___cinit__(struct __pyx_obj_4grpc_7_cython_6cygrpc_Channel *__pyx_v_self, PyObject *__pyx_v_target, PyObject *__pyx_v_arguments, struct __pyx_obj_4grpc_7_cython_6cygrpc_ChannelCredentials *__pyx_v_channel_credentials) {
  struct __pyx_obj_4grpc_7_cython_6cygrpc__ChannelArgs *__pyx_v_channel_args = 0;
  grpc_channel_credentials *__pyx_v_c_channel_credentials;
  int __pyx_r;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  int __pyx_t_2;
  PyObject *__pyx_t_3 = NULL;
  PyObject *__pyx_t_4 = NULL;
  int __pyx_t_5;
  char *__pyx_t_6;
  grpc_channel_args *__pyx_t_7;
  grpc_channel_credentials *__pyx_t_8;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("__cinit__", 0);
  __Pyx_INCREF(__pyx_v_arguments);

  /* "src/python/grpcio/grpc/_cython/_cygrpc/channel.pyx.pxi":446
 *       self, bytes target, object arguments,
 *       ChannelCredentials channel_credentials):
 *     arguments = () if arguments is None else tuple(arguments)             # <<<<<<<<<<<<<<
 *     fork_handlers_and_grpc_init()
 *     self._state = _ChannelState()
 */
  __pyx_t_2 = (__pyx_v_arguments == Py_None);
  if ((__pyx_t_2 != 0)) {
    __Pyx_INCREF(__pyx_empty_tuple);
    __pyx_t_1 = __pyx_empty_tuple;
  } else {
    __pyx_t_3 = __Pyx_PySequence_Tuple(__pyx_v_arguments); if (unlikely(!__pyx_t_3)) __PYX_ERR(12, 446, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_3);
    __pyx_t_1 = __pyx_t_3;
    __pyx_t_3 = 0;
  }
  __Pyx_DECREF_SET(__pyx_v_arguments, __pyx_t_1);
  __pyx_t_1 = 0;

  /* "src/python/grpcio/grpc/_cython/_cygrpc/channel.pyx.pxi":447
 *       ChannelCredentials channel_credentials):
 *     arguments = () if arguments is None else tuple(arguments)
 *     fork_handlers_and_grpc_init()             # <<<<<<<<<<<<<<
 *     self._state = _ChannelState()
 *     self._state.c_call_completion_queue = (
 */
  __Pyx_GetModuleGlobalName(__pyx_t_3, __pyx_n_s_fork_handlers_and_grpc_init); if (unlikely(!__pyx_t_3)) __PYX_ERR(12, 447, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  __pyx_t_4 = NULL;
  if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_3))) {
    __pyx_t_4 = PyMethod_GET_SELF(__pyx_t_3);
    if (likely(__pyx_t_4)) {
      PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_3);
      __Pyx_INCREF(__pyx_t_4);
      __Pyx_INCREF(function);
      __Pyx_DECREF_SET(__pyx_t_3, function);
    }
  }
  __pyx_t_1 = (__pyx_t_4) ? __Pyx_PyObject_CallOneArg(__pyx_t_3, __pyx_t_4) : __Pyx_PyObject_CallNoArg(__pyx_t_3);
  __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0;
  if (unlikely(!__pyx_t_1)) __PYX_ERR(12, 447, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;

  /* "src/python/grpcio/grpc/_cython/_cygrpc/channel.pyx.pxi":448
 *     arguments = () if arguments is None else tuple(arguments)
 *     fork_handlers_and_grpc_init()
 *     self._state = _ChannelState()             # <<<<<<<<<<<<<<
 *     self._state.c_call_completion_queue = (
 *         grpc_completion_queue_create_for_next(NULL))
 */
  __pyx_t_1 = __Pyx_PyObject_CallNoArg(((PyObject *)__pyx_ptype_4grpc_7_cython_6cygrpc__ChannelState)); if (unlikely(!__pyx_t_1)) __PYX_ERR(12, 448, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_GIVEREF(__pyx_t_1);
  __Pyx_GOTREF(__pyx_v_self->_state);
  __Pyx_DECREF(((PyObject *)__pyx_v_self->_state));
  __pyx_v_self->_state = ((struct __pyx_obj_4grpc_7_cython_6cygrpc__ChannelState *)__pyx_t_1);
  __pyx_t_1 = 0;

  /* "src/python/grpcio/grpc/_cython/_cygrpc/channel.pyx.pxi":449
 *     fork_handlers_and_grpc_init()
 *     self._state = _ChannelState()
 *     self._state.c_call_completion_queue = (             # <<<<<<<<<<<<<<
 *         grpc_completion_queue_create_for_next(NULL))
 *     self._state.c_connectivity_completion_queue = (
 */
  __pyx_v_self->_state->c_call_completion_queue = grpc_completion_queue_create_for_next(NULL);

  /* "src/python/grpcio/grpc/_cython/_cygrpc/channel.pyx.pxi":451
 *     self._state.c_call_completion_queue = (
 *         grpc_completion_queue_create_for_next(NULL))
 *     self._state.c_connectivity_completion_queue = (             # <<<<<<<<<<<<<<
 *         grpc_completion_queue_create_for_next(NULL))
 *     self._arguments = arguments
 */
  __pyx_v_self->_state->c_connectivity_completion_queue = grpc_completion_queue_create_for_next(NULL);

  /* "src/python/grpcio/grpc/_cython/_cygrpc/channel.pyx.pxi":453
 *     self._state.c_connectivity_completion_queue = (
 *         grpc_completion_queue_create_for_next(NULL))
 *     self._arguments = arguments             # <<<<<<<<<<<<<<
 *     cdef _ChannelArgs channel_args = _ChannelArgs(arguments)
 *     if channel_credentials is None:
 */
  if (!(likely(PyTuple_CheckExact(__pyx_v_arguments))||((__pyx_v_arguments) == Py_None)||(PyErr_Format(PyExc_TypeError, "Expected %.16s, got %.200s", "tuple", Py_TYPE(__pyx_v_arguments)->tp_name), 0))) __PYX_ERR(12, 453, __pyx_L1_error)
  __pyx_t_1 = __pyx_v_arguments;
  __Pyx_INCREF(__pyx_t_1);
  __Pyx_GIVEREF(__pyx_t_1);
  __Pyx_GOTREF(__pyx_v_self->_arguments);
  __Pyx_DECREF(__pyx_v_self->_arguments);
  __pyx_v_self->_arguments = ((PyObject*)__pyx_t_1);
  __pyx_t_1 = 0;

  /* "src/python/grpcio/grpc/_cython/_cygrpc/channel.pyx.pxi":454
 *         grpc_completion_queue_create_for_next(NULL))
 *     self._arguments = arguments
 *     cdef _ChannelArgs channel_args = _ChannelArgs(arguments)             # <<<<<<<<<<<<<<
 *     if channel_credentials is None:
 *       self._state.c_channel = grpc_insecure_channel_create(
 */
  __pyx_t_1 = __Pyx_PyObject_CallOneArg(((PyObject *)__pyx_ptype_4grpc_7_cython_6cygrpc__ChannelArgs), __pyx_v_arguments); if (unlikely(!__pyx_t_1)) __PYX_ERR(12, 454, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_v_channel_args = ((struct __pyx_obj_4grpc_7_cython_6cygrpc__ChannelArgs *)__pyx_t_1);
  __pyx_t_1 = 0;

  /* "src/python/grpcio/grpc/_cython/_cygrpc/channel.pyx.pxi":455
 *     self._arguments = arguments
 *     cdef _ChannelArgs channel_args = _ChannelArgs(arguments)
 *     if channel_credentials is None:             # <<<<<<<<<<<<<<
 *       self._state.c_channel = grpc_insecure_channel_create(
 *           <char *>target, channel_args.c_args(), NULL)
 */
  __pyx_t_2 = (((PyObject *)__pyx_v_channel_credentials) == Py_None);
  __pyx_t_5 = (__pyx_t_2 != 0);
  if (__pyx_t_5) {

    /* "src/python/grpcio/grpc/_cython/_cygrpc/channel.pyx.pxi":457
 *     if channel_credentials is None:
 *       self._state.c_channel = grpc_insecure_channel_create(
 *           <char *>target, channel_args.c_args(), NULL)             # <<<<<<<<<<<<<<
 *     else:
 *       c_channel_credentials = channel_credentials.c()
 */
    if (unlikely(__pyx_v_target == Py_None)) {
      PyErr_SetString(PyExc_TypeError, "expected bytes, NoneType found");
      __PYX_ERR(12, 457, __pyx_L1_error)
    }
    __pyx_t_6 = __Pyx_PyBytes_AsWritableString(__pyx_v_target); if (unlikely((!__pyx_t_6) && PyErr_Occurred())) __PYX_ERR(12, 457, __pyx_L1_error)
    __pyx_t_7 = ((struct __pyx_vtabstruct_4grpc_7_cython_6cygrpc__ChannelArgs *)__pyx_v_channel_args->__pyx_vtab)->c_args(__pyx_v_channel_args); if (unlikely(PyErr_Occurred())) __PYX_ERR(12, 457, __pyx_L1_error)

    /* "src/python/grpcio/grpc/_cython/_cygrpc/channel.pyx.pxi":456
 *     cdef _ChannelArgs channel_args = _ChannelArgs(arguments)
 *     if channel_credentials is None:
 *       self._state.c_channel = grpc_insecure_channel_create(             # <<<<<<<<<<<<<<
 *           <char *>target, channel_args.c_args(), NULL)
 *     else:
 */
    __pyx_v_self->_state->c_channel = grpc_insecure_channel_create(((char *)__pyx_t_6), __pyx_t_7, NULL);

    /* "src/python/grpcio/grpc/_cython/_cygrpc/channel.pyx.pxi":455
 *     self._arguments = arguments
 *     cdef _ChannelArgs channel_args = _ChannelArgs(arguments)
 *     if channel_credentials is None:             # <<<<<<<<<<<<<<
 *       self._state.c_channel = grpc_insecure_channel_create(
 *           <char *>target, channel_args.c_args(), NULL)
 */
    goto __pyx_L3;
  }

  /* "src/python/grpcio/grpc/_cython/_cygrpc/channel.pyx.pxi":459
 *           <char *>target, channel_args.c_args(), NULL)
 *     else:
 *       c_channel_credentials = channel_credentials.c()             # <<<<<<<<<<<<<<
 *       self._state.c_channel = grpc_secure_channel_create(
 *           c_channel_credentials, <char *>target, channel_args.c_args(), NULL)
 */
  /*else*/ {
    __pyx_t_8 = ((struct __pyx_vtabstruct_4grpc_7_cython_6cygrpc_ChannelCredentials *)__pyx_v_channel_credentials->__pyx_vtab)->c(__pyx_v_channel_credentials); if (unlikely(PyErr_Occurred())) __PYX_ERR(12, 459, __pyx_L1_error)
    __pyx_v_c_channel_credentials = __pyx_t_8;

    /* "src/python/grpcio/grpc/_cython/_cygrpc/channel.pyx.pxi":461
 *       c_channel_credentials = channel_credentials.c()
 *       self._state.c_channel = grpc_secure_channel_create(
 *           c_channel_credentials, <char *>target, channel_args.c_args(), NULL)             # <<<<<<<<<<<<<<
 *       grpc_channel_credentials_release(c_channel_credentials)
 * 
 */
    if (unlikely(__pyx_v_target == Py_None)) {
      PyErr_SetString(PyExc_TypeError, "expected bytes, NoneType found");
      __PYX_ERR(12, 461, __pyx_L1_error)
    }
    __pyx_t_6 = __Pyx_PyBytes_AsWritableString(__pyx_v_target); if (unlikely((!__pyx_t_6) && PyErr_Occurred())) __PYX_ERR(12, 461, __pyx_L1_error)
    __pyx_t_7 = ((struct __pyx_vtabstruct_4grpc_7_cython_6cygrpc__ChannelArgs *)__pyx_v_channel_args->__pyx_vtab)->c_args(__pyx_v_channel_args); if (unlikely(PyErr_Occurred())) __PYX_ERR(12, 461, __pyx_L1_error)

    /* "src/python/grpcio/grpc/_cython/_cygrpc/channel.pyx.pxi":460
 *     else:
 *       c_channel_credentials = channel_credentials.c()
 *       self._state.c_channel = grpc_secure_channel_create(             # <<<<<<<<<<<<<<
 *           c_channel_credentials, <char *>target, channel_args.c_args(), NULL)
 *       grpc_channel_credentials_release(c_channel_credentials)
 */
    __pyx_v_self->_state->c_channel = grpc_secure_channel_create(__pyx_v_c_channel_credentials, ((char *)__pyx_t_6), __pyx_t_7, NULL);

    /* "src/python/grpcio/grpc/_cython/_cygrpc/channel.pyx.pxi":462
 *       self._state.c_channel = grpc_secure_channel_create(
 *           c_channel_credentials, <char *>target, channel_args.c_args(), NULL)
 *       grpc_channel_credentials_release(c_channel_credentials)             # <<<<<<<<<<<<<<
 * 
 *   def target(self):
 */
    grpc_channel_credentials_release(__pyx_v_c_channel_credentials);
  }
  __pyx_L3:;

  /* "src/python/grpcio/grpc/_cython/_cygrpc/channel.pyx.pxi":443
 * cdef class Channel:
 * 
 *   def __cinit__(             # <<<<<<<<<<<<<<
 *       self, bytes target, object arguments,
 *       ChannelCredentials channel_credentials):
 */

  /* function exit code */
  __pyx_r = 0;
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_XDECREF(__pyx_t_3);
  __Pyx_XDECREF(__pyx_t_4);
  __Pyx_AddTraceback("grpc._cython.cygrpc.Channel.__cinit__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = -1;
  __pyx_L0:;
  __Pyx_XDECREF((PyObject *)__pyx_v_channel_args);
  __Pyx_XDECREF(__pyx_v_arguments);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "src/python/grpcio/grpc/_cython/_cygrpc/channel.pyx.pxi":464
 *       grpc_channel_credentials_release(c_channel_credentials)
 * 
 *   def target(self):             # <<<<<<<<<<<<<<
 *     cdef char *c_target
 *     with self._state.condition:
 */

/* Python wrapper */
static PyObject *__pyx_pw_4grpc_7_cython_6cygrpc_7Channel_3target(PyObject *__pyx_v_self, CYTHON_UNUSED PyObject *unused); /*proto*/
static PyObject *__pyx_pw_4grpc_7_cython_6cygrpc_7Channel_3target(PyObject *__pyx_v_self, CYTHON_UNUSED PyObject *unused) {
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("target (wrapper)", 0);
  __pyx_r = __pyx_pf_4grpc_7_cython_6cygrpc_7Channel_2target(((struct __pyx_obj_4grpc_7_cython_6cygrpc_Channel *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_4grpc_7_cython_6cygrpc_7Channel_2target(struct __pyx_obj_4grpc_7_cython_6cygrpc_Channel *__pyx_v_self) {
  char *__pyx_v_c_target;
  PyObject *__pyx_v_target = NULL;
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  PyObject *__pyx_t_2 = NULL;
  PyObject *__pyx_t_3 = NULL;
  PyObject *__pyx_t_4 = NULL;
  PyObject *__pyx_t_5 = NULL;
  PyObject *__pyx_t_6 = NULL;
  PyObject *__pyx_t_7 = NULL;
  PyObject *__pyx_t_8 = NULL;
  PyObject *__pyx_t_9 = NULL;
  int __pyx_t_10;
  int __pyx_t_11;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("target", 0);

  /* "src/python/grpcio/grpc/_cython/_cygrpc/channel.pyx.pxi":466
 *   def target(self):
 *     cdef char *c_target
 *     with self._state.condition:             # <<<<<<<<<<<<<<
 *       c_target = grpc_channel_get_target(self._state.c_channel)
 *       target = <bytes>c_target
 */
  /*with:*/ {
    __pyx_t_1 = __Pyx_PyObject_LookupSpecial(__pyx_v_self->_state->condition, __pyx_n_s_exit); if (unlikely(!__pyx_t_1)) __PYX_ERR(12, 466, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_1);
    __pyx_t_3 = __Pyx_PyObject_LookupSpecial(__pyx_v_self->_state->condition, __pyx_n_s_enter); if (unlikely(!__pyx_t_3)) __PYX_ERR(12, 466, __pyx_L3_error)
    __Pyx_GOTREF(__pyx_t_3);
    __pyx_t_4 = NULL;
    if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_3))) {
      __pyx_t_4 = PyMethod_GET_SELF(__pyx_t_3);
      if (likely(__pyx_t_4)) {
        PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_3);
        __Pyx_INCREF(__pyx_t_4);
        __Pyx_INCREF(function);
        __Pyx_DECREF_SET(__pyx_t_3, function);
      }
    }
    __pyx_t_2 = (__pyx_t_4) ? __Pyx_PyObject_CallOneArg(__pyx_t_3, __pyx_t_4) : __Pyx_PyObject_CallNoArg(__pyx_t_3);
    __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0;
    if (unlikely(!__pyx_t_2)) __PYX_ERR(12, 466, __pyx_L3_error)
    __Pyx_GOTREF(__pyx_t_2);
    __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
    __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
    /*try:*/ {
      {
        __Pyx_PyThreadState_declare
        __Pyx_PyThreadState_assign
        __Pyx_ExceptionSave(&__pyx_t_5, &__pyx_t_6, &__pyx_t_7);
        __Pyx_XGOTREF(__pyx_t_5);
        __Pyx_XGOTREF(__pyx_t_6);
        __Pyx_XGOTREF(__pyx_t_7);
        /*try:*/ {

          /* "src/python/grpcio/grpc/_cython/_cygrpc/channel.pyx.pxi":467
 *     cdef char *c_target
 *     with self._state.condition:
 *       c_target = grpc_channel_get_target(self._state.c_channel)             # <<<<<<<<<<<<<<
 *       target = <bytes>c_target
 *       gpr_free(c_target)
 */
          __pyx_v_c_target = grpc_channel_get_target(__pyx_v_self->_state->c_channel);

          /* "src/python/grpcio/grpc/_cython/_cygrpc/channel.pyx.pxi":468
 *     with self._state.condition:
 *       c_target = grpc_channel_get_target(self._state.c_channel)
 *       target = <bytes>c_target             # <<<<<<<<<<<<<<
 *       gpr_free(c_target)
 *       return target
 */
          __pyx_t_2 = __Pyx_PyBytes_FromString(__pyx_v_c_target); if (unlikely(!__pyx_t_2)) __PYX_ERR(12, 468, __pyx_L7_error)
          __Pyx_GOTREF(__pyx_t_2);
          __pyx_t_3 = __pyx_t_2;
          __Pyx_INCREF(__pyx_t_3);
          __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
          __pyx_v_target = ((PyObject*)__pyx_t_3);
          __pyx_t_3 = 0;

          /* "src/python/grpcio/grpc/_cython/_cygrpc/channel.pyx.pxi":469
 *       c_target = grpc_channel_get_target(self._state.c_channel)
 *       target = <bytes>c_target
 *       gpr_free(c_target)             # <<<<<<<<<<<<<<
 *       return target
 * 
 */
          gpr_free(__pyx_v_c_target);

          /* "src/python/grpcio/grpc/_cython/_cygrpc/channel.pyx.pxi":470
 *       target = <bytes>c_target
 *       gpr_free(c_target)
 *       return target             # <<<<<<<<<<<<<<
 * 
 *   def integrated_call(
 */
          __Pyx_XDECREF(__pyx_r);
          __Pyx_INCREF(__pyx_v_target);
          __pyx_r = __pyx_v_target;
          goto __pyx_L11_try_return;

          /* "src/python/grpcio/grpc/_cython/_cygrpc/channel.pyx.pxi":466
 *   def target(self):
 *     cdef char *c_target
 *     with self._state.condition:             # <<<<<<<<<<<<<<
 *       c_target = grpc_channel_get_target(self._state.c_channel)
 *       target = <bytes>c_target
 */
        }
        __pyx_L7_error:;
        __Pyx_XDECREF(__pyx_t_2); __pyx_t_2 = 0;
        __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0;
        __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0;
        /*except:*/ {
          __Pyx_AddTraceback("grpc._cython.cygrpc.Channel.target", __pyx_clineno, __pyx_lineno, __pyx_filename);
          if (__Pyx_GetException(&__pyx_t_3, &__pyx_t_2, &__pyx_t_4) < 0) __PYX_ERR(12, 466, __pyx_L9_except_error)
          __Pyx_GOTREF(__pyx_t_3);
          __Pyx_GOTREF(__pyx_t_2);
          __Pyx_GOTREF(__pyx_t_4);
          __pyx_t_8 = PyTuple_Pack(3, __pyx_t_3, __pyx_t_2, __pyx_t_4); if (unlikely(!__pyx_t_8)) __PYX_ERR(12, 466, __pyx_L9_except_error)
          __Pyx_GOTREF(__pyx_t_8);
          __pyx_t_9 = __Pyx_PyObject_Call(__pyx_t_1, __pyx_t_8, NULL);
          __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
          __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
          if (unlikely(!__pyx_t_9)) __PYX_ERR(12, 466, __pyx_L9_except_error)
          __Pyx_GOTREF(__pyx_t_9);
          __pyx_t_10 = __Pyx_PyObject_IsTrue(__pyx_t_9);
          __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0;
          if (__pyx_t_10 < 0) __PYX_ERR(12, 466, __pyx_L9_except_error)
          __pyx_t_11 = ((!(__pyx_t_10 != 0)) != 0);
          if (__pyx_t_11) {
            __Pyx_GIVEREF(__pyx_t_3);
            __Pyx_GIVEREF(__pyx_t_2);
            __Pyx_XGIVEREF(__pyx_t_4);
            __Pyx_ErrRestoreWithState(__pyx_t_3, __pyx_t_2, __pyx_t_4);
            __pyx_t_3 = 0; __pyx_t_2 = 0; __pyx_t_4 = 0; 
            __PYX_ERR(12, 466, __pyx_L9_except_error)
          }
          __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0;
          __Pyx_XDECREF(__pyx_t_2); __pyx_t_2 = 0;
          __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0;
          goto __pyx_L8_exception_handled;
        }
        __pyx_L9_except_error:;
        __Pyx_XGIVEREF(__pyx_t_5);
        __Pyx_XGIVEREF(__pyx_t_6);
        __Pyx_XGIVEREF(__pyx_t_7);
        __Pyx_ExceptionReset(__pyx_t_5, __pyx_t_6, __pyx_t_7);
        goto __pyx_L1_error;
        __pyx_L11_try_return:;
        __Pyx_XGIVEREF(__pyx_t_5);
        __Pyx_XGIVEREF(__pyx_t_6);
        __Pyx_XGIVEREF(__pyx_t_7);
        __Pyx_ExceptionReset(__pyx_t_5, __pyx_t_6, __pyx_t_7);
        goto __pyx_L4_return;
        __pyx_L8_exception_handled:;
        __Pyx_XGIVEREF(__pyx_t_5);
        __Pyx_XGIVEREF(__pyx_t_6);
        __Pyx_XGIVEREF(__pyx_t_7);
        __Pyx_ExceptionReset(__pyx_t_5, __pyx_t_6, __pyx_t_7);
      }
    }
    /*finally:*/ {
      /*normal exit:*/{
        if (__pyx_t_1) {
          __pyx_t_7 = __Pyx_PyObject_Call(__pyx_t_1, __pyx_tuple__17, NULL);
          __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
          if (unlikely(!__pyx_t_7)) __PYX_ERR(12, 466, __pyx_L1_error)
          __Pyx_GOTREF(__pyx_t_7);
          __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
        }
        goto __pyx_L6;
      }
      __pyx_L4_return: {
        __pyx_t_7 = __pyx_r;
        __pyx_r = 0;
        if (__pyx_t_1) {
          __pyx_t_6 = __Pyx_PyObject_Call(__pyx_t_1, __pyx_tuple__17, NULL);
          __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
          if (unlikely(!__pyx_t_6)) __PYX_ERR(12, 466, __pyx_L1_error)
          __Pyx_GOTREF(__pyx_t_6);
          __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
        }
        __pyx_r = __pyx_t_7;
        __pyx_t_7 = 0;
        goto __pyx_L0;
      }
      __pyx_L6:;
    }
    goto __pyx_L16;
    __pyx_L3_error:;
    __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
    goto __pyx_L1_error;
    __pyx_L16:;
  }

  /* "src/python/grpcio/grpc/_cython/_cygrpc/channel.pyx.pxi":464
 *       grpc_channel_credentials_release(c_channel_credentials)
 * 
 *   def target(self):             # <<<<<<<<<<<<<<
 *     cdef char *c_target
 *     with self._state.condition:
 */

  /* function exit code */
  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_XDECREF(__pyx_t_3);
  __Pyx_XDECREF(__pyx_t_4);
  __Pyx_XDECREF(__pyx_t_8);
  __Pyx_AddTraceback("grpc._cython.cygrpc.Channel.target", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XDECREF(__pyx_v_target);
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "src/python/grpcio/grpc/_cython/_cygrpc/channel.pyx.pxi":472
 *       return target
 * 
 *   def integrated_call(             # <<<<<<<<<<<<<<
 *       self, int flags, method, host, object deadline, object metadata,
 *       CallCredentials credentials, operationses_and_tags,
 */

/* Python wrapper */
static PyObject *__pyx_pw_4grpc_7_cython_6cygrpc_7Channel_5integrated_call(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
static PyObject *__pyx_pw_4grpc_7_cython_6cygrpc_7Channel_5integrated_call(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
  int __pyx_v_flags;
  PyObject *__pyx_v_method = 0;
  PyObject *__pyx_v_host = 0;
  PyObject *__pyx_v_deadline = 0;
  PyObject *__pyx_v_metadata = 0;
  struct __pyx_obj_4grpc_7_cython_6cygrpc_CallCredentials *__pyx_v_credentials = 0;
  PyObject *__pyx_v_operationses_and_tags = 0;
  PyObject *__pyx_v_context = 0;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("integrated_call (wrapper)", 0);
  {
    static PyObject **__pyx_pyargnames[] = {&__pyx_n_s_flags,&__pyx_n_s_method,&__pyx_n_s_host,&__pyx_n_s_deadline,&__pyx_n_s_metadata,&__pyx_n_s_credentials,&__pyx_n_s_operationses_and_tags,&__pyx_n_s_context,0};
    PyObject* values[8] = {0,0,0,0,0,0,0,0};

    /* "src/python/grpcio/grpc/_cython/_cygrpc/channel.pyx.pxi":475
 *       self, int flags, method, host, object deadline, object metadata,
 *       CallCredentials credentials, operationses_and_tags,
 *       object context = None):             # <<<<<<<<<<<<<<
 *     return _integrated_call(
 *         self._state, flags, method, host, deadline, metadata, credentials,
 */
    values[7] = ((PyObject *)Py_None);
    if (unlikely(__pyx_kwds)) {
      Py_ssize_t kw_args;
      const Py_ssize_t pos_args = PyTuple_GET_SIZE(__pyx_args);
      switch (pos_args) {
        case  8: values[7] = PyTuple_GET_ITEM(__pyx_args, 7);
        CYTHON_FALLTHROUGH;
        case  7: values[6] = PyTuple_GET_ITEM(__pyx_args, 6);
        CYTHON_FALLTHROUGH;
        case  6: values[5] = PyTuple_GET_ITEM(__pyx_args, 5);
        CYTHON_FALLTHROUGH;
        case  5: values[4] = PyTuple_GET_ITEM(__pyx_args, 4);
        CYTHON_FALLTHROUGH;
        case  4: values[3] = PyTuple_GET_ITEM(__pyx_args, 3);
        CYTHON_FALLTHROUGH;
        case  3: values[2] = PyTuple_GET_ITEM(__pyx_args, 2);
        CYTHON_FALLTHROUGH;
        case  2: values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
        CYTHON_FALLTHROUGH;
        case  1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
        CYTHON_FALLTHROUGH;
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      kw_args = PyDict_Size(__pyx_kwds);
      switch (pos_args) {
        case  0:
        if (likely((values[0] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_flags)) != 0)) kw_args--;
        else goto __pyx_L5_argtuple_error;
        CYTHON_FALLTHROUGH;
        case  1:
        if (likely((values[1] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_method)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("integrated_call", 0, 7, 8, 1); __PYX_ERR(12, 472, __pyx_L3_error)
        }
        CYTHON_FALLTHROUGH;
        case  2:
        if (likely((values[2] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_host)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("integrated_call", 0, 7, 8, 2); __PYX_ERR(12, 472, __pyx_L3_error)
        }
        CYTHON_FALLTHROUGH;
        case  3:
        if (likely((values[3] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_deadline)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("integrated_call", 0, 7, 8, 3); __PYX_ERR(12, 472, __pyx_L3_error)
        }
        CYTHON_FALLTHROUGH;
        case  4:
        if (likely((values[4] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_metadata)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("integrated_call", 0, 7, 8, 4); __PYX_ERR(12, 472, __pyx_L3_error)
        }
        CYTHON_FALLTHROUGH;
        case  5:
        if (likely((values[5] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_credentials)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("integrated_call", 0, 7, 8, 5); __PYX_ERR(12, 472, __pyx_L3_error)
        }
        CYTHON_FALLTHROUGH;
        case  6:
        if (likely((values[6] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_operationses_and_tags)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("integrated_call", 0, 7, 8, 6); __PYX_ERR(12, 472, __pyx_L3_error)
        }
        CYTHON_FALLTHROUGH;
        case  7:
        if (kw_args > 0) {
          PyObject* value = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_context);
          if (value) { values[7] = value; kw_args--; }
        }
      }
      if (unlikely(kw_args > 0)) {
        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "integrated_call") < 0)) __PYX_ERR(12, 472, __pyx_L3_error)
      }
    } else {
      switch (PyTuple_GET_SIZE(__pyx_args)) {
        case  8: values[7] = PyTuple_GET_ITEM(__pyx_args, 7);
        CYTHON_FALLTHROUGH;
        case  7: values[6] = PyTuple_GET_ITEM(__pyx_args, 6);
        values[5] = PyTuple_GET_ITEM(__pyx_args, 5);
        values[4] = PyTuple_GET_ITEM(__pyx_args, 4);
        values[3] = PyTuple_GET_ITEM(__pyx_args, 3);
        values[2] = PyTuple_GET_ITEM(__pyx_args, 2);
        values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
        values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
        break;
        default: goto __pyx_L5_argtuple_error;
      }
    }
    __pyx_v_flags = __Pyx_PyInt_As_int(values[0]); if (unlikely((__pyx_v_flags == (int)-1) && PyErr_Occurred())) __PYX_ERR(12, 473, __pyx_L3_error)
    __pyx_v_method = values[1];
    __pyx_v_host = values[2];
    __pyx_v_deadline = values[3];
    __pyx_v_metadata = values[4];
    __pyx_v_credentials = ((struct __pyx_obj_4grpc_7_cython_6cygrpc_CallCredentials *)values[5]);
    __pyx_v_operationses_and_tags = values[6];
    __pyx_v_context = values[7];
  }
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("integrated_call", 0, 7, 8, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(12, 472, __pyx_L3_error)
  __pyx_L3_error:;
  __Pyx_AddTraceback("grpc._cython.cygrpc.Channel.integrated_call", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_credentials), __pyx_ptype_4grpc_7_cython_6cygrpc_CallCredentials, 1, "credentials", 0))) __PYX_ERR(12, 474, __pyx_L1_error)
  __pyx_r = __pyx_pf_4grpc_7_cython_6cygrpc_7Channel_4integrated_call(((struct __pyx_obj_4grpc_7_cython_6cygrpc_Channel *)__pyx_v_self), __pyx_v_flags, __pyx_v_method, __pyx_v_host, __pyx_v_deadline, __pyx_v_metadata, __pyx_v_credentials, __pyx_v_operationses_and_tags, __pyx_v_context);

  /* "src/python/grpcio/grpc/_cython/_cygrpc/channel.pyx.pxi":472
 *       return target
 * 
 *   def integrated_call(             # <<<<<<<<<<<<<<
 *       self, int flags, method, host, object deadline, object metadata,
 *       CallCredentials credentials, operationses_and_tags,
 */

  /* function exit code */
  goto __pyx_L0;
  __pyx_L1_error:;
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_4grpc_7_cython_6cygrpc_7Channel_4integrated_call(struct __pyx_obj_4grpc_7_cython_6cygrpc_Channel *__pyx_v_self, int __pyx_v_flags, PyObject *__pyx_v_method, PyObject *__pyx_v_host, PyObject *__pyx_v_deadline, PyObject *__pyx_v_metadata, struct __pyx_obj_4grpc_7_cython_6cygrpc_CallCredentials *__pyx_v_credentials, PyObject *__pyx_v_operationses_and_tags, PyObject *__pyx_v_context) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  PyObject *__pyx_t_2 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("integrated_call", 0);

  /* "src/python/grpcio/grpc/_cython/_cygrpc/channel.pyx.pxi":476
 *       CallCredentials credentials, operationses_and_tags,
 *       object context = None):
 *     return _integrated_call(             # <<<<<<<<<<<<<<
 *         self._state, flags, method, host, deadline, metadata, credentials,
 *         operationses_and_tags, context)
 */
  __Pyx_XDECREF(__pyx_r);

  /* "src/python/grpcio/grpc/_cython/_cygrpc/channel.pyx.pxi":477
 *       object context = None):
 *     return _integrated_call(
 *         self._state, flags, method, host, deadline, metadata, credentials,             # <<<<<<<<<<<<<<
 *         operationses_and_tags, context)
 * 
 */
  __pyx_t_1 = ((PyObject *)__pyx_v_self->_state);
  __Pyx_INCREF(__pyx_t_1);

  /* "src/python/grpcio/grpc/_cython/_cygrpc/channel.pyx.pxi":476
 *       CallCredentials credentials, operationses_and_tags,
 *       object context = None):
 *     return _integrated_call(             # <<<<<<<<<<<<<<
 *         self._state, flags, method, host, deadline, metadata, credentials,
 *         operationses_and_tags, context)
 */
  __pyx_t_2 = ((PyObject *)__pyx_f_4grpc_7_cython_6cygrpc__integrated_call(((struct __pyx_obj_4grpc_7_cython_6cygrpc__ChannelState *)__pyx_t_1), __pyx_v_flags, __pyx_v_method, __pyx_v_host, __pyx_v_deadline, __pyx_v_metadata, __pyx_v_credentials, __pyx_v_operationses_and_tags, __pyx_v_context)); if (unlikely(!__pyx_t_2)) __PYX_ERR(12, 476, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  __pyx_r = __pyx_t_2;
  __pyx_t_2 = 0;
  goto __pyx_L0;

  /* "src/python/grpcio/grpc/_cython/_cygrpc/channel.pyx.pxi":472
 *       return target
 * 
 *   def integrated_call(             # <<<<<<<<<<<<<<
 *       self, int flags, method, host, object deadline, object metadata,
 *       CallCredentials credentials, operationses_and_tags,
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_AddTraceback("grpc._cython.cygrpc.Channel.integrated_call", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "src/python/grpcio/grpc/_cython/_cygrpc/channel.pyx.pxi":480
 *         operationses_and_tags, context)
 * 
 *   def next_call_event(self):             # <<<<<<<<<<<<<<
 *     def on_success(tag):
 *       if tag is not None:
 */

/* Python wrapper */
static PyObject *__pyx_pw_4grpc_7_cython_6cygrpc_7Channel_7next_call_event(PyObject *__pyx_v_self, CYTHON_UNUSED PyObject *unused); /*proto*/
static PyObject *__pyx_pw_4grpc_7_cython_6cygrpc_7Channel_7next_call_event(PyObject *__pyx_v_self, CYTHON_UNUSED PyObject *unused) {
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("next_call_event (wrapper)", 0);
  __pyx_r = __pyx_pf_4grpc_7_cython_6cygrpc_7Channel_6next_call_event(((struct __pyx_obj_4grpc_7_cython_6cygrpc_Channel *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "src/python/grpcio/grpc/_cython/_cygrpc/channel.pyx.pxi":481
 * 
 *   def next_call_event(self):
 *     def on_success(tag):             # <<<<<<<<<<<<<<
 *       if tag is not None:
 *         _process_integrated_call_tag(self._state, tag)
 */

/* Python wrapper */
static PyObject *__pyx_pw_4grpc_7_cython_6cygrpc_7Channel_15next_call_event_1on_success(PyObject *__pyx_self, PyObject *__pyx_v_tag); /*proto*/
static PyMethodDef __pyx_mdef_4grpc_7_cython_6cygrpc_7Channel_15next_call_event_1on_success = {"on_success", (PyCFunction)__pyx_pw_4grpc_7_cython_6cygrpc_7Channel_15next_call_event_1on_success, METH_O, 0};
static PyObject *__pyx_pw_4grpc_7_cython_6cygrpc_7Channel_15next_call_event_1on_success(PyObject *__pyx_self, PyObject *__pyx_v_tag) {
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("on_success (wrapper)", 0);
  __pyx_r = __pyx_pf_4grpc_7_cython_6cygrpc_7Channel_15next_call_event_on_success(__pyx_self, ((PyObject *)__pyx_v_tag));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_4grpc_7_cython_6cygrpc_7Channel_15next_call_event_on_success(PyObject *__pyx_self, PyObject *__pyx_v_tag) {
  struct __pyx_obj_4grpc_7_cython_6cygrpc___pyx_scope_struct_3_next_call_event *__pyx_cur_scope;
  struct __pyx_obj_4grpc_7_cython_6cygrpc___pyx_scope_struct_3_next_call_event *__pyx_outer_scope;
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  int __pyx_t_1;
  int __pyx_t_2;
  PyObject *__pyx_t_3 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("on_success", 0);
  __pyx_outer_scope = (struct __pyx_obj_4grpc_7_cython_6cygrpc___pyx_scope_struct_3_next_call_event *) __Pyx_CyFunction_GetClosure(__pyx_self);
  __pyx_cur_scope = __pyx_outer_scope;

  /* "src/python/grpcio/grpc/_cython/_cygrpc/channel.pyx.pxi":482
 *   def next_call_event(self):
 *     def on_success(tag):
 *       if tag is not None:             # <<<<<<<<<<<<<<
 *         _process_integrated_call_tag(self._state, tag)
 *     if is_fork_support_enabled():
 */
  __pyx_t_1 = (__pyx_v_tag != Py_None);
  __pyx_t_2 = (__pyx_t_1 != 0);
  if (__pyx_t_2) {

    /* "src/python/grpcio/grpc/_cython/_cygrpc/channel.pyx.pxi":483
 *     def on_success(tag):
 *       if tag is not None:
 *         _process_integrated_call_tag(self._state, tag)             # <<<<<<<<<<<<<<
 *     if is_fork_support_enabled():
 *       queue_deadline = time.time() + 1.0
 */
    if (unlikely(!__pyx_cur_scope->__pyx_v_self)) { __Pyx_RaiseClosureNameError("self"); __PYX_ERR(12, 483, __pyx_L1_error) }
    __pyx_t_3 = ((PyObject *)__pyx_cur_scope->__pyx_v_self->_state);
    __Pyx_INCREF(__pyx_t_3);
    if (!(likely(((__pyx_v_tag) == Py_None) || likely(__Pyx_TypeTest(__pyx_v_tag, __pyx_ptype_4grpc_7_cython_6cygrpc__BatchOperationTag))))) __PYX_ERR(12, 483, __pyx_L1_error)
    __pyx_f_4grpc_7_cython_6cygrpc__process_integrated_call_tag(((struct __pyx_obj_4grpc_7_cython_6cygrpc__ChannelState *)__pyx_t_3), ((struct __pyx_obj_4grpc_7_cython_6cygrpc__BatchOperationTag *)__pyx_v_tag)); if (unlikely(PyErr_Occurred())) __PYX_ERR(12, 483, __pyx_L1_error)
    __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;

    /* "src/python/grpcio/grpc/_cython/_cygrpc/channel.pyx.pxi":482
 *   def next_call_event(self):
 *     def on_success(tag):
 *       if tag is not None:             # <<<<<<<<<<<<<<
 *         _process_integrated_call_tag(self._state, tag)
 *     if is_fork_support_enabled():
 */
  }

  /* "src/python/grpcio/grpc/_cython/_cygrpc/channel.pyx.pxi":481
 * 
 *   def next_call_event(self):
 *     def on_success(tag):             # <<<<<<<<<<<<<<
 *       if tag is not None:
 *         _process_integrated_call_tag(self._state, tag)
 */

  /* function exit code */
  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_3);
  __Pyx_AddTraceback("grpc._cython.cygrpc.Channel.next_call_event.on_success", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "src/python/grpcio/grpc/_cython/_cygrpc/channel.pyx.pxi":480
 *         operationses_and_tags, context)
 * 
 *   def next_call_event(self):             # <<<<<<<<<<<<<<
 *     def on_success(tag):
 *       if tag is not None:
 */

static PyObject *__pyx_pf_4grpc_7_cython_6cygrpc_7Channel_6next_call_event(struct __pyx_obj_4grpc_7_cython_6cygrpc_Channel *__pyx_v_self) {
  struct __pyx_obj_4grpc_7_cython_6cygrpc___pyx_scope_struct_3_next_call_event *__pyx_cur_scope;
  PyObject *__pyx_v_on_success = 0;
  PyObject *__pyx_v_queue_deadline = NULL;
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  PyObject *__pyx_t_2 = NULL;
  PyObject *__pyx_t_3 = NULL;
  int __pyx_t_4;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("next_call_event", 0);
  __pyx_cur_scope = (struct __pyx_obj_4grpc_7_cython_6cygrpc___pyx_scope_struct_3_next_call_event *)__pyx_tp_new_4grpc_7_cython_6cygrpc___pyx_scope_struct_3_next_call_event(__pyx_ptype_4grpc_7_cython_6cygrpc___pyx_scope_struct_3_next_call_event, __pyx_empty_tuple, NULL);
  if (unlikely(!__pyx_cur_scope)) {
    __pyx_cur_scope = ((struct __pyx_obj_4grpc_7_cython_6cygrpc___pyx_scope_struct_3_next_call_event *)Py_None);
    __Pyx_INCREF(Py_None);
    __PYX_ERR(12, 480, __pyx_L1_error)
  } else {
    __Pyx_GOTREF(__pyx_cur_scope);
  }
  __pyx_cur_scope->__pyx_v_self = __pyx_v_self;
  __Pyx_INCREF((PyObject *)__pyx_cur_scope->__pyx_v_self);
  __Pyx_GIVEREF((PyObject *)__pyx_cur_scope->__pyx_v_self);

  /* "src/python/grpcio/grpc/_cython/_cygrpc/channel.pyx.pxi":481
 * 
 *   def next_call_event(self):
 *     def on_success(tag):             # <<<<<<<<<<<<<<
 *       if tag is not None:
 *         _process_integrated_call_tag(self._state, tag)
 */
  __pyx_t_1 = __Pyx_CyFunction_New(&__pyx_mdef_4grpc_7_cython_6cygrpc_7Channel_15next_call_event_1on_success, 0, __pyx_n_s_next_call_event_locals_on_succes, ((PyObject*)__pyx_cur_scope), __pyx_n_s_grpc__cython_cygrpc, __pyx_d, ((PyObject *)__pyx_codeobj__31)); if (unlikely(!__pyx_t_1)) __PYX_ERR(12, 481, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_v_on_success = __pyx_t_1;
  __pyx_t_1 = 0;

  /* "src/python/grpcio/grpc/_cython/_cygrpc/channel.pyx.pxi":484
 *       if tag is not None:
 *         _process_integrated_call_tag(self._state, tag)
 *     if is_fork_support_enabled():             # <<<<<<<<<<<<<<
 *       queue_deadline = time.time() + 1.0
 *     else:
 */
  __Pyx_GetModuleGlobalName(__pyx_t_2, __pyx_n_s_is_fork_support_enabled); if (unlikely(!__pyx_t_2)) __PYX_ERR(12, 484, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __pyx_t_3 = NULL;
  if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_2))) {
    __pyx_t_3 = PyMethod_GET_SELF(__pyx_t_2);
    if (likely(__pyx_t_3)) {
      PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_2);
      __Pyx_INCREF(__pyx_t_3);
      __Pyx_INCREF(function);
      __Pyx_DECREF_SET(__pyx_t_2, function);
    }
  }
  __pyx_t_1 = (__pyx_t_3) ? __Pyx_PyObject_CallOneArg(__pyx_t_2, __pyx_t_3) : __Pyx_PyObject_CallNoArg(__pyx_t_2);
  __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0;
  if (unlikely(!__pyx_t_1)) __PYX_ERR(12, 484, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  __pyx_t_4 = __Pyx_PyObject_IsTrue(__pyx_t_1); if (unlikely(__pyx_t_4 < 0)) __PYX_ERR(12, 484, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  if (__pyx_t_4) {

    /* "src/python/grpcio/grpc/_cython/_cygrpc/channel.pyx.pxi":485
 *         _process_integrated_call_tag(self._state, tag)
 *     if is_fork_support_enabled():
 *       queue_deadline = time.time() + 1.0             # <<<<<<<<<<<<<<
 *     else:
 *       queue_deadline = None
 */
    __Pyx_GetModuleGlobalName(__pyx_t_2, __pyx_n_s_time); if (unlikely(!__pyx_t_2)) __PYX_ERR(12, 485, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_2);
    __pyx_t_3 = __Pyx_PyObject_GetAttrStr(__pyx_t_2, __pyx_n_s_time); if (unlikely(!__pyx_t_3)) __PYX_ERR(12, 485, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_3);
    __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
    __pyx_t_2 = NULL;
    if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_3))) {
      __pyx_t_2 = PyMethod_GET_SELF(__pyx_t_3);
      if (likely(__pyx_t_2)) {
        PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_3);
        __Pyx_INCREF(__pyx_t_2);
        __Pyx_INCREF(function);
        __Pyx_DECREF_SET(__pyx_t_3, function);
      }
    }
    __pyx_t_1 = (__pyx_t_2) ? __Pyx_PyObject_CallOneArg(__pyx_t_3, __pyx_t_2) : __Pyx_PyObject_CallNoArg(__pyx_t_3);
    __Pyx_XDECREF(__pyx_t_2); __pyx_t_2 = 0;
    if (unlikely(!__pyx_t_1)) __PYX_ERR(12, 485, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_1);
    __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
    __pyx_t_3 = __Pyx_PyFloat_AddObjC(__pyx_t_1, __pyx_float_1_0, 1.0, 0, 0); if (unlikely(!__pyx_t_3)) __PYX_ERR(12, 485, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_3);
    __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
    __pyx_v_queue_deadline = __pyx_t_3;
    __pyx_t_3 = 0;

    /* "src/python/grpcio/grpc/_cython/_cygrpc/channel.pyx.pxi":484
 *       if tag is not None:
 *         _process_integrated_call_tag(self._state, tag)
 *     if is_fork_support_enabled():             # <<<<<<<<<<<<<<
 *       queue_deadline = time.time() + 1.0
 *     else:
 */
    goto __pyx_L3;
  }

  /* "src/python/grpcio/grpc/_cython/_cygrpc/channel.pyx.pxi":487
 *       queue_deadline = time.time() + 1.0
 *     else:
 *       queue_deadline = None             # <<<<<<<<<<<<<<
 *     # NOTE(gnossen): It is acceptable for on_failure to be None here because
 *     # failure conditions can only ever happen on the main thread and this
 */
  /*else*/ {
    __Pyx_INCREF(Py_None);
    __pyx_v_queue_deadline = Py_None;
  }
  __pyx_L3:;

  /* "src/python/grpcio/grpc/_cython/_cygrpc/channel.pyx.pxi":491
 *     # failure conditions can only ever happen on the main thread and this
 *     # method is only ever invoked on the channel spin thread.
 *     return _next_call_event(self._state, self._state.c_call_completion_queue,             # <<<<<<<<<<<<<<
 *                             on_success, None, queue_deadline)
 * 
 */
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_3 = ((PyObject *)__pyx_cur_scope->__pyx_v_self->_state);
  __Pyx_INCREF(__pyx_t_3);

  /* "src/python/grpcio/grpc/_cython/_cygrpc/channel.pyx.pxi":492
 *     # method is only ever invoked on the channel spin thread.
 *     return _next_call_event(self._state, self._state.c_call_completion_queue,
 *                             on_success, None, queue_deadline)             # <<<<<<<<<<<<<<
 * 
 *   def segregated_call(
 */
  __pyx_t_1 = __pyx_f_4grpc_7_cython_6cygrpc__next_call_event(((struct __pyx_obj_4grpc_7_cython_6cygrpc__ChannelState *)__pyx_t_3), __pyx_cur_scope->__pyx_v_self->_state->c_call_completion_queue, __pyx_v_on_success, Py_None, __pyx_v_queue_deadline); if (unlikely(!__pyx_t_1)) __PYX_ERR(12, 491, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
  __pyx_r = __pyx_t_1;
  __pyx_t_1 = 0;
  goto __pyx_L0;

  /* "src/python/grpcio/grpc/_cython/_cygrpc/channel.pyx.pxi":480
 *         operationses_and_tags, context)
 * 
 *   def next_call_event(self):             # <<<<<<<<<<<<<<
 *     def on_success(tag):
 *       if tag is not None:
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_XDECREF(__pyx_t_3);
  __Pyx_AddTraceback("grpc._cython.cygrpc.Channel.next_call_event", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XDECREF(__pyx_v_on_success);
  __Pyx_XDECREF(__pyx_v_queue_deadline);
  __Pyx_DECREF(((PyObject *)__pyx_cur_scope));
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "src/python/grpcio/grpc/_cython/_cygrpc/channel.pyx.pxi":494
 *                             on_success, None, queue_deadline)
 * 
 *   def segregated_call(             # <<<<<<<<<<<<<<
 *       self, int flags, method, host, object deadline, object metadata,
 *       CallCredentials credentials, operationses_and_tags,
 */

/* Python wrapper */
static PyObject *__pyx_pw_4grpc_7_cython_6cygrpc_7Channel_9segregated_call(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
static PyObject *__pyx_pw_4grpc_7_cython_6cygrpc_7Channel_9segregated_call(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
  int __pyx_v_flags;
  PyObject *__pyx_v_method = 0;
  PyObject *__pyx_v_host = 0;
  PyObject *__pyx_v_deadline = 0;
  PyObject *__pyx_v_metadata = 0;
  struct __pyx_obj_4grpc_7_cython_6cygrpc_CallCredentials *__pyx_v_credentials = 0;
  PyObject *__pyx_v_operationses_and_tags = 0;
  PyObject *__pyx_v_context = 0;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("segregated_call (wrapper)", 0);
  {
    static PyObject **__pyx_pyargnames[] = {&__pyx_n_s_flags,&__pyx_n_s_method,&__pyx_n_s_host,&__pyx_n_s_deadline,&__pyx_n_s_metadata,&__pyx_n_s_credentials,&__pyx_n_s_operationses_and_tags,&__pyx_n_s_context,0};
    PyObject* values[8] = {0,0,0,0,0,0,0,0};

    /* "src/python/grpcio/grpc/_cython/_cygrpc/channel.pyx.pxi":497
 *       self, int flags, method, host, object deadline, object metadata,
 *       CallCredentials credentials, operationses_and_tags,
 *       object context = None):             # <<<<<<<<<<<<<<
 *     return _segregated_call(
 *         self._state, flags, method, host, deadline, metadata, credentials,
 */
    values[7] = ((PyObject *)Py_None);
    if (unlikely(__pyx_kwds)) {
      Py_ssize_t kw_args;
      const Py_ssize_t pos_args = PyTuple_GET_SIZE(__pyx_args);
      switch (pos_args) {
        case  8: values[7] = PyTuple_GET_ITEM(__pyx_args, 7);
        CYTHON_FALLTHROUGH;
        case  7: values[6] = PyTuple_GET_ITEM(__pyx_args, 6);
        CYTHON_FALLTHROUGH;
        case  6: values[5] = PyTuple_GET_ITEM(__pyx_args, 5);
        CYTHON_FALLTHROUGH;
        case  5: values[4] = PyTuple_GET_ITEM(__pyx_args, 4);
        CYTHON_FALLTHROUGH;
        case  4: values[3] = PyTuple_GET_ITEM(__pyx_args, 3);
        CYTHON_FALLTHROUGH;
        case  3: values[2] = PyTuple_GET_ITEM(__pyx_args, 2);
        CYTHON_FALLTHROUGH;
        case  2: values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
        CYTHON_FALLTHROUGH;
        case  1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
        CYTHON_FALLTHROUGH;
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      kw_args = PyDict_Size(__pyx_kwds);
      switch (pos_args) {
        case  0:
        if (likely((values[0] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_flags)) != 0)) kw_args--;
        else goto __pyx_L5_argtuple_error;
        CYTHON_FALLTHROUGH;
        case  1:
        if (likely((values[1] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_method)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("segregated_call", 0, 7, 8, 1); __PYX_ERR(12, 494, __pyx_L3_error)
        }
        CYTHON_FALLTHROUGH;
        case  2:
        if (likely((values[2] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_host)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("segregated_call", 0, 7, 8, 2); __PYX_ERR(12, 494, __pyx_L3_error)
        }
        CYTHON_FALLTHROUGH;
        case  3:
        if (likely((values[3] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_deadline)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("segregated_call", 0, 7, 8, 3); __PYX_ERR(12, 494, __pyx_L3_error)
        }
        CYTHON_FALLTHROUGH;
        case  4:
        if (likely((values[4] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_metadata)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("segregated_call", 0, 7, 8, 4); __PYX_ERR(12, 494, __pyx_L3_error)
        }
        CYTHON_FALLTHROUGH;
        case  5:
        if (likely((values[5] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_credentials)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("segregated_call", 0, 7, 8, 5); __PYX_ERR(12, 494, __pyx_L3_error)
        }
        CYTHON_FALLTHROUGH;
        case  6:
        if (likely((values[6] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_operationses_and_tags)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("segregated_call", 0, 7, 8, 6); __PYX_ERR(12, 494, __pyx_L3_error)
        }
        CYTHON_FALLTHROUGH;
        case  7:
        if (kw_args > 0) {
          PyObject* value = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_context);
          if (value) { values[7] = value; kw_args--; }
        }
      }
      if (unlikely(kw_args > 0)) {
        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "segregated_call") < 0)) __PYX_ERR(12, 494, __pyx_L3_error)
      }
    } else {
      switch (PyTuple_GET_SIZE(__pyx_args)) {
        case  8: values[7] = PyTuple_GET_ITEM(__pyx_args, 7);
        CYTHON_FALLTHROUGH;
        case  7: values[6] = PyTuple_GET_ITEM(__pyx_args, 6);
        values[5] = PyTuple_GET_ITEM(__pyx_args, 5);
        values[4] = PyTuple_GET_ITEM(__pyx_args, 4);
        values[3] = PyTuple_GET_ITEM(__pyx_args, 3);
        values[2] = PyTuple_GET_ITEM(__pyx_args, 2);
        values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
        values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
        break;
        default: goto __pyx_L5_argtuple_error;
      }
    }
    __pyx_v_flags = __Pyx_PyInt_As_int(values[0]); if (unlikely((__pyx_v_flags == (int)-1) && PyErr_Occurred())) __PYX_ERR(12, 495, __pyx_L3_error)
    __pyx_v_method = values[1];
    __pyx_v_host = values[2];
    __pyx_v_deadline = values[3];
    __pyx_v_metadata = values[4];
    __pyx_v_credentials = ((struct __pyx_obj_4grpc_7_cython_6cygrpc_CallCredentials *)values[5]);
    __pyx_v_operationses_and_tags = values[6];
    __pyx_v_context = values[7];
  }
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("segregated_call", 0, 7, 8, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(12, 494, __pyx_L3_error)
  __pyx_L3_error:;
  __Pyx_AddTraceback("grpc._cython.cygrpc.Channel.segregated_call", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_credentials), __pyx_ptype_4grpc_7_cython_6cygrpc_CallCredentials, 1, "credentials", 0))) __PYX_ERR(12, 496, __pyx_L1_error)
  __pyx_r = __pyx_pf_4grpc_7_cython_6cygrpc_7Channel_8segregated_call(((struct __pyx_obj_4grpc_7_cython_6cygrpc_Channel *)__pyx_v_self), __pyx_v_flags, __pyx_v_method, __pyx_v_host, __pyx_v_deadline, __pyx_v_metadata, __pyx_v_credentials, __pyx_v_operationses_and_tags, __pyx_v_context);

  /* "src/python/grpcio/grpc/_cython/_cygrpc/channel.pyx.pxi":494
 *                             on_success, None, queue_deadline)
 * 
 *   def segregated_call(             # <<<<<<<<<<<<<<
 *       self, int flags, method, host, object deadline, object metadata,
 *       CallCredentials credentials, operationses_and_tags,
 */

  /* function exit code */
  goto __pyx_L0;
  __pyx_L1_error:;
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_4grpc_7_cython_6cygrpc_7Channel_8segregated_call(struct __pyx_obj_4grpc_7_cython_6cygrpc_Channel *__pyx_v_self, int __pyx_v_flags, PyObject *__pyx_v_method, PyObject *__pyx_v_host, PyObject *__pyx_v_deadline, PyObject *__pyx_v_metadata, struct __pyx_obj_4grpc_7_cython_6cygrpc_CallCredentials *__pyx_v_credentials, PyObject *__pyx_v_operationses_and_tags, PyObject *__pyx_v_context) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  PyObject *__pyx_t_2 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("segregated_call", 0);

  /* "src/python/grpcio/grpc/_cython/_cygrpc/channel.pyx.pxi":498
 *       CallCredentials credentials, operationses_and_tags,
 *       object context = None):
 *     return _segregated_call(             # <<<<<<<<<<<<<<
 *         self._state, flags, method, host, deadline, metadata, credentials,
 *         operationses_and_tags, context)
 */
  __Pyx_XDECREF(__pyx_r);

  /* "src/python/grpcio/grpc/_cython/_cygrpc/channel.pyx.pxi":499
 *       object context = None):
 *     return _segregated_call(
 *         self._state, flags, method, host, deadline, metadata, credentials,             # <<<<<<<<<<<<<<
 *         operationses_and_tags, context)
 * 
 */
  __pyx_t_1 = ((PyObject *)__pyx_v_self->_state);
  __Pyx_INCREF(__pyx_t_1);

  /* "src/python/grpcio/grpc/_cython/_cygrpc/channel.pyx.pxi":498
 *       CallCredentials credentials, operationses_and_tags,
 *       object context = None):
 *     return _segregated_call(             # <<<<<<<<<<<<<<
 *         self._state, flags, method, host, deadline, metadata, credentials,
 *         operationses_and_tags, context)
 */
  __pyx_t_2 = ((PyObject *)__pyx_f_4grpc_7_cython_6cygrpc__segregated_call(((struct __pyx_obj_4grpc_7_cython_6cygrpc__ChannelState *)__pyx_t_1), __pyx_v_flags, __pyx_v_method, __pyx_v_host, __pyx_v_deadline, __pyx_v_metadata, __pyx_v_credentials, __pyx_v_operationses_and_tags, __pyx_v_context)); if (unlikely(!__pyx_t_2)) __PYX_ERR(12, 498, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  __pyx_r = __pyx_t_2;
  __pyx_t_2 = 0;
  goto __pyx_L0;

  /* "src/python/grpcio/grpc/_cython/_cygrpc/channel.pyx.pxi":494
 *                             on_success, None, queue_deadline)
 * 
 *   def segregated_call(             # <<<<<<<<<<<<<<
 *       self, int flags, method, host, object deadline, object metadata,
 *       CallCredentials credentials, operationses_and_tags,
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_AddTraceback("grpc._cython.cygrpc.Channel.segregated_call", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "src/python/grpcio/grpc/_cython/_cygrpc/channel.pyx.pxi":502
 *         operationses_and_tags, context)
 * 
 *   def check_connectivity_state(self, bint try_to_connect):             # <<<<<<<<<<<<<<
 *     with self._state.condition:
 *       if self._state.open:
 */

/* Python wrapper */
static PyObject *__pyx_pw_4grpc_7_cython_6cygrpc_7Channel_11check_connectivity_state(PyObject *__pyx_v_self, PyObject *__pyx_arg_try_to_connect); /*proto*/
static PyObject *__pyx_pw_4grpc_7_cython_6cygrpc_7Channel_11check_connectivity_state(PyObject *__pyx_v_self, PyObject *__pyx_arg_try_to_connect) {
  int __pyx_v_try_to_connect;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("check_connectivity_state (wrapper)", 0);
  assert(__pyx_arg_try_to_connect); {
    __pyx_v_try_to_connect = __Pyx_PyObject_IsTrue(__pyx_arg_try_to_connect); if (unlikely((__pyx_v_try_to_connect == (int)-1) && PyErr_Occurred())) __PYX_ERR(12, 502, __pyx_L3_error)
  }
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L3_error:;
  __Pyx_AddTraceback("grpc._cython.cygrpc.Channel.check_connectivity_state", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  __pyx_r = __pyx_pf_4grpc_7_cython_6cygrpc_7Channel_10check_connectivity_state(((struct __pyx_obj_4grpc_7_cython_6cygrpc_Channel *)__pyx_v_self), ((int)__pyx_v_try_to_connect));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_4grpc_7_cython_6cygrpc_7Channel_10check_connectivity_state(struct __pyx_obj_4grpc_7_cython_6cygrpc_Channel *__pyx_v_self, int __pyx_v_try_to_connect) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  PyObject *__pyx_t_2 = NULL;
  PyObject *__pyx_t_3 = NULL;
  PyObject *__pyx_t_4 = NULL;
  PyObject *__pyx_t_5 = NULL;
  PyObject *__pyx_t_6 = NULL;
  PyObject *__pyx_t_7 = NULL;
  int __pyx_t_8;
  PyObject *__pyx_t_9 = NULL;
  PyObject *__pyx_t_10 = NULL;
  int __pyx_t_11;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("check_connectivity_state", 0);

  /* "src/python/grpcio/grpc/_cython/_cygrpc/channel.pyx.pxi":503
 * 
 *   def check_connectivity_state(self, bint try_to_connect):
 *     with self._state.condition:             # <<<<<<<<<<<<<<
 *       if self._state.open:
 *         return grpc_channel_check_connectivity_state(
 */
  /*with:*/ {
    __pyx_t_1 = __Pyx_PyObject_LookupSpecial(__pyx_v_self->_state->condition, __pyx_n_s_exit); if (unlikely(!__pyx_t_1)) __PYX_ERR(12, 503, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_1);
    __pyx_t_3 = __Pyx_PyObject_LookupSpecial(__pyx_v_self->_state->condition, __pyx_n_s_enter); if (unlikely(!__pyx_t_3)) __PYX_ERR(12, 503, __pyx_L3_error)
    __Pyx_GOTREF(__pyx_t_3);
    __pyx_t_4 = NULL;
    if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_3))) {
      __pyx_t_4 = PyMethod_GET_SELF(__pyx_t_3);
      if (likely(__pyx_t_4)) {
        PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_3);
        __Pyx_INCREF(__pyx_t_4);
        __Pyx_INCREF(function);
        __Pyx_DECREF_SET(__pyx_t_3, function);
      }
    }
    __pyx_t_2 = (__pyx_t_4) ? __Pyx_PyObject_CallOneArg(__pyx_t_3, __pyx_t_4) : __Pyx_PyObject_CallNoArg(__pyx_t_3);
    __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0;
    if (unlikely(!__pyx_t_2)) __PYX_ERR(12, 503, __pyx_L3_error)
    __Pyx_GOTREF(__pyx_t_2);
    __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
    __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
    /*try:*/ {
      {
        __Pyx_PyThreadState_declare
        __Pyx_PyThreadState_assign
        __Pyx_ExceptionSave(&__pyx_t_5, &__pyx_t_6, &__pyx_t_7);
        __Pyx_XGOTREF(__pyx_t_5);
        __Pyx_XGOTREF(__pyx_t_6);
        __Pyx_XGOTREF(__pyx_t_7);
        /*try:*/ {

          /* "src/python/grpcio/grpc/_cython/_cygrpc/channel.pyx.pxi":504
 *   def check_connectivity_state(self, bint try_to_connect):
 *     with self._state.condition:
 *       if self._state.open:             # <<<<<<<<<<<<<<
 *         return grpc_channel_check_connectivity_state(
 *             self._state.c_channel, try_to_connect)
 */
          __pyx_t_8 = __Pyx_PyObject_IsTrue(__pyx_v_self->_state->open); if (unlikely(__pyx_t_8 < 0)) __PYX_ERR(12, 504, __pyx_L7_error)
          if (likely(__pyx_t_8)) {

            /* "src/python/grpcio/grpc/_cython/_cygrpc/channel.pyx.pxi":505
 *     with self._state.condition:
 *       if self._state.open:
 *         return grpc_channel_check_connectivity_state(             # <<<<<<<<<<<<<<
 *             self._state.c_channel, try_to_connect)
 *       else:
 */
            __Pyx_XDECREF(__pyx_r);

            /* "src/python/grpcio/grpc/_cython/_cygrpc/channel.pyx.pxi":506
 *       if self._state.open:
 *         return grpc_channel_check_connectivity_state(
 *             self._state.c_channel, try_to_connect)             # <<<<<<<<<<<<<<
 *       else:
 *         raise ValueError('Cannot invoke RPC: %s' % self._state.closed_reason)
 */
            __pyx_t_2 = __Pyx_PyInt_From_grpc_connectivity_state(grpc_channel_check_connectivity_state(__pyx_v_self->_state->c_channel, __pyx_v_try_to_connect)); if (unlikely(!__pyx_t_2)) __PYX_ERR(12, 505, __pyx_L7_error)
            __Pyx_GOTREF(__pyx_t_2);
            __pyx_r = __pyx_t_2;
            __pyx_t_2 = 0;
            goto __pyx_L11_try_return;

            /* "src/python/grpcio/grpc/_cython/_cygrpc/channel.pyx.pxi":504
 *   def check_connectivity_state(self, bint try_to_connect):
 *     with self._state.condition:
 *       if self._state.open:             # <<<<<<<<<<<<<<
 *         return grpc_channel_check_connectivity_state(
 *             self._state.c_channel, try_to_connect)
 */
          }

          /* "src/python/grpcio/grpc/_cython/_cygrpc/channel.pyx.pxi":508
 *             self._state.c_channel, try_to_connect)
 *       else:
 *         raise ValueError('Cannot invoke RPC: %s' % self._state.closed_reason)             # <<<<<<<<<<<<<<
 * 
 *   def watch_connectivity_state(
 */
          /*else*/ {
            __pyx_t_2 = __Pyx_PyString_FormatSafe(__pyx_kp_s_Cannot_invoke_RPC_s, __pyx_v_self->_state->closed_reason); if (unlikely(!__pyx_t_2)) __PYX_ERR(12, 508, __pyx_L7_error)
            __Pyx_GOTREF(__pyx_t_2);
            __pyx_t_3 = __Pyx_PyObject_CallOneArg(__pyx_builtin_ValueError, __pyx_t_2); if (unlikely(!__pyx_t_3)) __PYX_ERR(12, 508, __pyx_L7_error)
            __Pyx_GOTREF(__pyx_t_3);
            __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
            __Pyx_Raise(__pyx_t_3, 0, 0, 0);
            __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
            __PYX_ERR(12, 508, __pyx_L7_error)
          }

          /* "src/python/grpcio/grpc/_cython/_cygrpc/channel.pyx.pxi":503
 * 
 *   def check_connectivity_state(self, bint try_to_connect):
 *     with self._state.condition:             # <<<<<<<<<<<<<<
 *       if self._state.open:
 *         return grpc_channel_check_connectivity_state(
 */
        }
        __pyx_L7_error:;
        __Pyx_XDECREF(__pyx_t_2); __pyx_t_2 = 0;
        __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0;
        __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0;
        /*except:*/ {
          __Pyx_AddTraceback("grpc._cython.cygrpc.Channel.check_connectivity_state", __pyx_clineno, __pyx_lineno, __pyx_filename);
          if (__Pyx_GetException(&__pyx_t_3, &__pyx_t_2, &__pyx_t_4) < 0) __PYX_ERR(12, 503, __pyx_L9_except_error)
          __Pyx_GOTREF(__pyx_t_3);
          __Pyx_GOTREF(__pyx_t_2);
          __Pyx_GOTREF(__pyx_t_4);
          __pyx_t_9 = PyTuple_Pack(3, __pyx_t_3, __pyx_t_2, __pyx_t_4); if (unlikely(!__pyx_t_9)) __PYX_ERR(12, 503, __pyx_L9_except_error)
          __Pyx_GOTREF(__pyx_t_9);
          __pyx_t_10 = __Pyx_PyObject_Call(__pyx_t_1, __pyx_t_9, NULL);
          __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
          __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0;
          if (unlikely(!__pyx_t_10)) __PYX_ERR(12, 503, __pyx_L9_except_error)
          __Pyx_GOTREF(__pyx_t_10);
          __pyx_t_8 = __Pyx_PyObject_IsTrue(__pyx_t_10);
          __Pyx_DECREF(__pyx_t_10); __pyx_t_10 = 0;
          if (__pyx_t_8 < 0) __PYX_ERR(12, 503, __pyx_L9_except_error)
          __pyx_t_11 = ((!(__pyx_t_8 != 0)) != 0);
          if (__pyx_t_11) {
            __Pyx_GIVEREF(__pyx_t_3);
            __Pyx_GIVEREF(__pyx_t_2);
            __Pyx_XGIVEREF(__pyx_t_4);
            __Pyx_ErrRestoreWithState(__pyx_t_3, __pyx_t_2, __pyx_t_4);
            __pyx_t_3 = 0; __pyx_t_2 = 0; __pyx_t_4 = 0; 
            __PYX_ERR(12, 503, __pyx_L9_except_error)
          }
          __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0;
          __Pyx_XDECREF(__pyx_t_2); __pyx_t_2 = 0;
          __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0;
          goto __pyx_L8_exception_handled;
        }
        __pyx_L9_except_error:;
        __Pyx_XGIVEREF(__pyx_t_5);
        __Pyx_XGIVEREF(__pyx_t_6);
        __Pyx_XGIVEREF(__pyx_t_7);
        __Pyx_ExceptionReset(__pyx_t_5, __pyx_t_6, __pyx_t_7);
        goto __pyx_L1_error;
        __pyx_L11_try_return:;
        __Pyx_XGIVEREF(__pyx_t_5);
        __Pyx_XGIVEREF(__pyx_t_6);
        __Pyx_XGIVEREF(__pyx_t_7);
        __Pyx_ExceptionReset(__pyx_t_5, __pyx_t_6, __pyx_t_7);
        goto __pyx_L4_return;
        __pyx_L8_exception_handled:;
        __Pyx_XGIVEREF(__pyx_t_5);
        __Pyx_XGIVEREF(__pyx_t_6);
        __Pyx_XGIVEREF(__pyx_t_7);
        __Pyx_ExceptionReset(__pyx_t_5, __pyx_t_6, __pyx_t_7);
      }
    }
    /*finally:*/ {
      /*normal exit:*/{
        if (__pyx_t_1) {
          __pyx_t_7 = __Pyx_PyObject_Call(__pyx_t_1, __pyx_tuple__17, NULL);
          __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
          if (unlikely(!__pyx_t_7)) __PYX_ERR(12, 503, __pyx_L1_error)
          __Pyx_GOTREF(__pyx_t_7);
          __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
        }
        goto __pyx_L6;
      }
      __pyx_L4_return: {
        __pyx_t_7 = __pyx_r;
        __pyx_r = 0;
        if (__pyx_t_1) {
          __pyx_t_6 = __Pyx_PyObject_Call(__pyx_t_1, __pyx_tuple__17, NULL);
          __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
          if (unlikely(!__pyx_t_6)) __PYX_ERR(12, 503, __pyx_L1_error)
          __Pyx_GOTREF(__pyx_t_6);
          __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
        }
        __pyx_r = __pyx_t_7;
        __pyx_t_7 = 0;
        goto __pyx_L0;
      }
      __pyx_L6:;
    }
    goto __pyx_L17;
    __pyx_L3_error:;
    __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
    goto __pyx_L1_error;
    __pyx_L17:;
  }

  /* "src/python/grpcio/grpc/_cython/_cygrpc/channel.pyx.pxi":502
 *         operationses_and_tags, context)
 * 
 *   def check_connectivity_state(self, bint try_to_connect):             # <<<<<<<<<<<<<<
 *     with self._state.condition:
 *       if self._state.open:
 */

  /* function exit code */
  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_XDECREF(__pyx_t_3);
  __Pyx_XDECREF(__pyx_t_4);
  __Pyx_XDECREF(__pyx_t_9);
  __Pyx_AddTraceback("grpc._cython.cygrpc.Channel.check_connectivity_state", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "src/python/grpcio/grpc/_cython/_cygrpc/channel.pyx.pxi":510
 *         raise ValueError('Cannot invoke RPC: %s' % self._state.closed_reason)
 * 
 *   def watch_connectivity_state(             # <<<<<<<<<<<<<<
 *       self, grpc_connectivity_state last_observed_state, object deadline):
 *     return _watch_connectivity_state(self._state, last_observed_state, deadline)
 */

/* Python wrapper */
static PyObject *__pyx_pw_4grpc_7_cython_6cygrpc_7Channel_13watch_connectivity_state(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
static PyObject *__pyx_pw_4grpc_7_cython_6cygrpc_7Channel_13watch_connectivity_state(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
  grpc_connectivity_state __pyx_v_last_observed_state;
  PyObject *__pyx_v_deadline = 0;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("watch_connectivity_state (wrapper)", 0);
  {
    static PyObject **__pyx_pyargnames[] = {&__pyx_n_s_last_observed_state,&__pyx_n_s_deadline,0};
    PyObject* values[2] = {0,0};
    if (unlikely(__pyx_kwds)) {
      Py_ssize_t kw_args;
      const Py_ssize_t pos_args = PyTuple_GET_SIZE(__pyx_args);
      switch (pos_args) {
        case  2: values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
        CYTHON_FALLTHROUGH;
        case  1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
        CYTHON_FALLTHROUGH;
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      kw_args = PyDict_Size(__pyx_kwds);
      switch (pos_args) {
        case  0:
        if (likely((values[0] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_last_observed_state)) != 0)) kw_args--;
        else goto __pyx_L5_argtuple_error;
        CYTHON_FALLTHROUGH;
        case  1:
        if (likely((values[1] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_deadline)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("watch_connectivity_state", 1, 2, 2, 1); __PYX_ERR(12, 510, __pyx_L3_error)
        }
      }
      if (unlikely(kw_args > 0)) {
        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "watch_connectivity_state") < 0)) __PYX_ERR(12, 510, __pyx_L3_error)
      }
    } else if (PyTuple_GET_SIZE(__pyx_args) != 2) {
      goto __pyx_L5_argtuple_error;
    } else {
      values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
      values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
    }
    __pyx_v_last_observed_state = ((grpc_connectivity_state)__Pyx_PyInt_As_grpc_connectivity_state(values[0])); if (unlikely(PyErr_Occurred())) __PYX_ERR(12, 511, __pyx_L3_error)
    __pyx_v_deadline = values[1];
  }
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("watch_connectivity_state", 1, 2, 2, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(12, 510, __pyx_L3_error)
  __pyx_L3_error:;
  __Pyx_AddTraceback("grpc._cython.cygrpc.Channel.watch_connectivity_state", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  __pyx_r = __pyx_pf_4grpc_7_cython_6cygrpc_7Channel_12watch_connectivity_state(((struct __pyx_obj_4grpc_7_cython_6cygrpc_Channel *)__pyx_v_self), __pyx_v_last_observed_state, __pyx_v_deadline);

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_4grpc_7_cython_6cygrpc_7Channel_12watch_connectivity_state(struct __pyx_obj_4grpc_7_cython_6cygrpc_Channel *__pyx_v_self, grpc_connectivity_state __pyx_v_last_observed_state, PyObject *__pyx_v_deadline) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  PyObject *__pyx_t_2 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("watch_connectivity_state", 0);

  /* "src/python/grpcio/grpc/_cython/_cygrpc/channel.pyx.pxi":512
 *   def watch_connectivity_state(
 *       self, grpc_connectivity_state last_observed_state, object deadline):
 *     return _watch_connectivity_state(self._state, last_observed_state, deadline)             # <<<<<<<<<<<<<<
 * 
 *   def close(self, code, details):
 */
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_1 = ((PyObject *)__pyx_v_self->_state);
  __Pyx_INCREF(__pyx_t_1);
  __pyx_t_2 = __pyx_f_4grpc_7_cython_6cygrpc__watch_connectivity_state(((struct __pyx_obj_4grpc_7_cython_6cygrpc__ChannelState *)__pyx_t_1), __pyx_v_last_observed_state, __pyx_v_deadline); if (unlikely(!__pyx_t_2)) __PYX_ERR(12, 512, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  __pyx_r = __pyx_t_2;
  __pyx_t_2 = 0;
  goto __pyx_L0;

  /* "src/python/grpcio/grpc/_cython/_cygrpc/channel.pyx.pxi":510
 *         raise ValueError('Cannot invoke RPC: %s' % self._state.closed_reason)
 * 
 *   def watch_connectivity_state(             # <<<<<<<<<<<<<<
 *       self, grpc_connectivity_state last_observed_state, object deadline):
 *     return _watch_connectivity_state(self._state, last_observed_state, deadline)
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_AddTraceback("grpc._cython.cygrpc.Channel.watch_connectivity_state", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "src/python/grpcio/grpc/_cython/_cygrpc/channel.pyx.pxi":514
 *     return _watch_connectivity_state(self._state, last_observed_state, deadline)
 * 
 *   def close(self, code, details):             # <<<<<<<<<<<<<<
 *     _close(self, code, details, False)
 * 
 */

/* Python wrapper */
static PyObject *__pyx_pw_4grpc_7_cython_6cygrpc_7Channel_15close(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
static PyObject *__pyx_pw_4grpc_7_cython_6cygrpc_7Channel_15close(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
  PyObject *__pyx_v_code = 0;
  PyObject *__pyx_v_details = 0;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("close (wrapper)", 0);
  {
    static PyObject **__pyx_pyargnames[] = {&__pyx_n_s_code,&__pyx_n_s_details,0};
    PyObject* values[2] = {0,0};
    if (unlikely(__pyx_kwds)) {
      Py_ssize_t kw_args;
      const Py_ssize_t pos_args = PyTuple_GET_SIZE(__pyx_args);
      switch (pos_args) {
        case  2: values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
        CYTHON_FALLTHROUGH;
        case  1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
        CYTHON_FALLTHROUGH;
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      kw_args = PyDict_Size(__pyx_kwds);
      switch (pos_args) {
        case  0:
        if (likely((values[0] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_code)) != 0)) kw_args--;
        else goto __pyx_L5_argtuple_error;
        CYTHON_FALLTHROUGH;
        case  1:
        if (likely((values[1] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_details)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("close", 1, 2, 2, 1); __PYX_ERR(12, 514, __pyx_L3_error)
        }
      }
      if (unlikely(kw_args > 0)) {
        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "close") < 0)) __PYX_ERR(12, 514, __pyx_L3_error)
      }
    } else if (PyTuple_GET_SIZE(__pyx_args) != 2) {
      goto __pyx_L5_argtuple_error;
    } else {
      values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
      values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
    }
    __pyx_v_code = values[0];
    __pyx_v_details = values[1];
  }
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("close", 1, 2, 2, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(12, 514, __pyx_L3_error)
  __pyx_L3_error:;
  __Pyx_AddTraceback("grpc._cython.cygrpc.Channel.close", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  __pyx_r = __pyx_pf_4grpc_7_cython_6cygrpc_7Channel_14close(((struct __pyx_obj_4grpc_7_cython_6cygrpc_Channel *)__pyx_v_self), __pyx_v_code, __pyx_v_details);

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_4grpc_7_cython_6cygrpc_7Channel_14close(struct __pyx_obj_4grpc_7_cython_6cygrpc_Channel *__pyx_v_self, PyObject *__pyx_v_code, PyObject *__pyx_v_details) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  grpc_status_code __pyx_t_1;
  PyObject *__pyx_t_2 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("close", 0);

  /* "src/python/grpcio/grpc/_cython/_cygrpc/channel.pyx.pxi":515
 * 
 *   def close(self, code, details):
 *     _close(self, code, details, False)             # <<<<<<<<<<<<<<
 * 
 *   def close_on_fork(self, code, details):
 */
  __pyx_t_1 = ((grpc_status_code)__Pyx_PyInt_As_grpc_status_code(__pyx_v_code)); if (unlikely(PyErr_Occurred())) __PYX_ERR(12, 515, __pyx_L1_error)
  __pyx_t_2 = __pyx_f_4grpc_7_cython_6cygrpc__close(__pyx_v_self, __pyx_t_1, __pyx_v_details, Py_False); if (unlikely(!__pyx_t_2)) __PYX_ERR(12, 515, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;

  /* "src/python/grpcio/grpc/_cython/_cygrpc/channel.pyx.pxi":514
 *     return _watch_connectivity_state(self._state, last_observed_state, deadline)
 * 
 *   def close(self, code, details):             # <<<<<<<<<<<<<<
 *     _close(self, code, details, False)
 * 
 */

  /* function exit code */
  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_AddTraceback("grpc._cython.cygrpc.Channel.close", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "src/python/grpcio/grpc/_cython/_cygrpc/channel.pyx.pxi":517
 *     _close(self, code, details, False)
 * 
 *   def close_on_fork(self, code, details):             # <<<<<<<<<<<<<<
 *     _close(self, code, details, True)
 */

/* Python wrapper */
static PyObject *__pyx_pw_4grpc_7_cython_6cygrpc_7Channel_17close_on_fork(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
static PyObject *__pyx_pw_4grpc_7_cython_6cygrpc_7Channel_17close_on_fork(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
  PyObject *__pyx_v_code = 0;
  PyObject *__pyx_v_details = 0;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("close_on_fork (wrapper)", 0);
  {
    static PyObject **__pyx_pyargnames[] = {&__pyx_n_s_code,&__pyx_n_s_details,0};
    PyObject* values[2] = {0,0};
    if (unlikely(__pyx_kwds)) {
      Py_ssize_t kw_args;
      const Py_ssize_t pos_args = PyTuple_GET_SIZE(__pyx_args);
      switch (pos_args) {
        case  2: values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
        CYTHON_FALLTHROUGH;
        case  1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
        CYTHON_FALLTHROUGH;
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      kw_args = PyDict_Size(__pyx_kwds);
      switch (pos_args) {
        case  0:
        if (likely((values[0] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_code)) != 0)) kw_args--;
        else goto __pyx_L5_argtuple_error;
        CYTHON_FALLTHROUGH;
        case  1:
        if (likely((values[1] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_details)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("close_on_fork", 1, 2, 2, 1); __PYX_ERR(12, 517, __pyx_L3_error)
        }
      }
      if (unlikely(kw_args > 0)) {
        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "close_on_fork") < 0)) __PYX_ERR(12, 517, __pyx_L3_error)
      }
    } else if (PyTuple_GET_SIZE(__pyx_args) != 2) {
      goto __pyx_L5_argtuple_error;
    } else {
      values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
      values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
    }
    __pyx_v_code = values[0];
    __pyx_v_details = values[1];
  }
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("close_on_fork", 1, 2, 2, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(12, 517, __pyx_L3_error)
  __pyx_L3_error:;
  __Pyx_AddTraceback("grpc._cython.cygrpc.Channel.close_on_fork", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  __pyx_r = __pyx_pf_4grpc_7_cython_6cygrpc_7Channel_16close_on_fork(((struct __pyx_obj_4grpc_7_cython_6cygrpc_Channel *)__pyx_v_self), __pyx_v_code, __pyx_v_details);

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_4grpc_7_cython_6cygrpc_7Channel_16close_on_fork(struct __pyx_obj_4grpc_7_cython_6cygrpc_Channel *__pyx_v_self, PyObject *__pyx_v_code, PyObject *__pyx_v_details) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  grpc_status_code __pyx_t_1;
  PyObject *__pyx_t_2 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("close_on_fork", 0);

  /* "src/python/grpcio/grpc/_cython/_cygrpc/channel.pyx.pxi":518
 * 
 *   def close_on_fork(self, code, details):
 *     _close(self, code, details, True)             # <<<<<<<<<<<<<<
 */
  __pyx_t_1 = ((grpc_status_code)__Pyx_PyInt_As_grpc_status_code(__pyx_v_code)); if (unlikely(PyErr_Occurred())) __PYX_ERR(12, 518, __pyx_L1_error)
  __pyx_t_2 = __pyx_f_4grpc_7_cython_6cygrpc__close(__pyx_v_self, __pyx_t_1, __pyx_v_details, Py_True); if (unlikely(!__pyx_t_2)) __PYX_ERR(12, 518, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;

  /* "src/python/grpcio/grpc/_cython/_cygrpc/channel.pyx.pxi":517
 *     _close(self, code, details, False)
 * 
 *   def close_on_fork(self, code, details):             # <<<<<<<<<<<<<<
 *     _close(self, code, details, True)
 */

  /* function exit code */
  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_AddTraceback("grpc._cython.cygrpc.Channel.close_on_fork", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "(tree fragment)":1
 * def __reduce_cython__(self):             # <<<<<<<<<<<<<<
 *     raise TypeError("no default __reduce__ due to non-trivial __cinit__")
 * def __setstate_cython__(self, __pyx_state):
 */

/* Python wrapper */
static PyObject *__pyx_pw_4grpc_7_cython_6cygrpc_7Channel_19__reduce_cython__(PyObject *__pyx_v_self, CYTHON_UNUSED PyObject *unused); /*proto*/
static PyObject *__pyx_pw_4grpc_7_cython_6cygrpc_7Channel_19__reduce_cython__(PyObject *__pyx_v_self, CYTHON_UNUSED PyObject *unused) {
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__reduce_cython__ (wrapper)", 0);
  __pyx_r = __pyx_pf_4grpc_7_cython_6cygrpc_7Channel_18__reduce_cython__(((struct __pyx_obj_4grpc_7_cython_6cygrpc_Channel *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_4grpc_7_cython_6cygrpc_7Channel_18__reduce_cython__(CYTHON_UNUSED struct __pyx_obj_4grpc_7_cython_6cygrpc_Channel *__pyx_v_self) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("__reduce_cython__", 0);

  /* "(tree fragment)":2
 * def __reduce_cython__(self):
 *     raise TypeError("no default __reduce__ due to non-trivial __cinit__")             # <<<<<<<<<<<<<<
 * def __setstate_cython__(self, __pyx_state):
 *     raise TypeError("no default __reduce__ due to non-trivial __cinit__")
 */
  __pyx_t_1 = __Pyx_PyObject_Call(__pyx_builtin_TypeError, __pyx_tuple__32, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(11, 2, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_Raise(__pyx_t_1, 0, 0, 0);
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  __PYX_ERR(11, 2, __pyx_L1_error)

  /* "(tree fragment)":1
 * def __reduce_cython__(self):             # <<<<<<<<<<<<<<
 *     raise TypeError("no default __reduce__ due to non-trivial __cinit__")
 * def __setstate_cython__(self, __pyx_state):
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_AddTraceback("grpc._cython.cygrpc.Channel.__reduce_cython__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "(tree fragment)":3
 * def __reduce_cython__(self):
 *     raise TypeError("no default __reduce__ due to non-trivial __cinit__")
 * def __setstate_cython__(self, __pyx_state):             # <<<<<<<<<<<<<<
 *     raise TypeError("no default __reduce__ due to non-trivial __cinit__")
 */

/* Python wrapper */
static PyObject *__pyx_pw_4grpc_7_cython_6cygrpc_7Channel_21__setstate_cython__(PyObject *__pyx_v_self, PyObject *__pyx_v___pyx_state); /*proto*/
static PyObject *__pyx_pw_4grpc_7_cython_6cygrpc_7Channel_21__setstate_cython__(PyObject *__pyx_v_self, PyObject *__pyx_v___pyx_state) {
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__setstate_cython__ (wrapper)", 0);
  __pyx_r = __pyx_pf_4grpc_7_cython_6cygrpc_7Channel_20__setstate_cython__(((struct __pyx_obj_4grpc_7_cython_6cygrpc_Channel *)__pyx_v_self), ((PyObject *)__pyx_v___pyx_state));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_4grpc_7_cython_6cygrpc_7Channel_20__setstate_cython__(CYTHON_UNUSED struct __pyx_obj_4grpc_7_cython_6cygrpc_Channel *__pyx_v_self, CYTHON_UNUSED PyObject *__pyx_v___pyx_state) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("__setstate_cython__", 0);

  /* "(tree fragment)":4
 *     raise TypeError("no default __reduce__ due to non-trivial __cinit__")
 * def __setstate_cython__(self, __pyx_state):
 *     raise TypeError("no default __reduce__ due to non-trivial __cinit__")             # <<<<<<<<<<<<<<
 */
  __pyx_t_1 = __Pyx_PyObject_Call(__pyx_builtin_TypeError, __pyx_tuple__33, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(11, 4, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_Raise(__pyx_t_1, 0, 0, 0);
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  __PYX_ERR(11, 4, __pyx_L1_error)

  /* "(tree fragment)":3
 * def __reduce_cython__(self):
 *     raise TypeError("no default __reduce__ due to non-trivial __cinit__")
 * def __setstate_cython__(self, __pyx_state):             # <<<<<<<<<<<<<<
 *     raise TypeError("no default __reduce__ due to non-trivial __cinit__")
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_AddTraceback("grpc._cython.cygrpc.Channel.__setstate_cython__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "src/python/grpcio/grpc/_cython/_cygrpc/channelz.pyx.pxi":16
 * 
 * 
 * def channelz_get_top_channels(start_channel_id):             # <<<<<<<<<<<<<<
 *     cdef char *c_returned_str = grpc_channelz_get_top_channels(
 *         start_channel_id,
 */

/* Python wrapper */
static PyObject *__pyx_pw_4grpc_7_cython_6cygrpc_1channelz_get_top_channels(PyObject *__pyx_self, PyObject *__pyx_v_start_channel_id); /*proto*/
static PyMethodDef __pyx_mdef_4grpc_7_cython_6cygrpc_1channelz_get_top_channels = {"channelz_get_top_channels", (PyCFunction)__pyx_pw_4grpc_7_cython_6cygrpc_1channelz_get_top_channels, METH_O, 0};
static PyObject *__pyx_pw_4grpc_7_cython_6cygrpc_1channelz_get_top_channels(PyObject *__pyx_self, PyObject *__pyx_v_start_channel_id) {
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("channelz_get_top_channels (wrapper)", 0);
  __pyx_r = __pyx_pf_4grpc_7_cython_6cygrpc_channelz_get_top_channels(__pyx_self, ((PyObject *)__pyx_v_start_channel_id));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_4grpc_7_cython_6cygrpc_channelz_get_top_channels(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__pyx_v_start_channel_id) {
  char *__pyx_v_c_returned_str;
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  __pyx_t_4grpc_7_cython_6cygrpc_intptr_t __pyx_t_1;
  int __pyx_t_2;
  PyObject *__pyx_t_3 = NULL;
  PyObject *__pyx_t_4 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("channelz_get_top_channels", 0);

  /* "src/python/grpcio/grpc/_cython/_cygrpc/channelz.pyx.pxi":18
 * def channelz_get_top_channels(start_channel_id):
 *     cdef char *c_returned_str = grpc_channelz_get_top_channels(
 *         start_channel_id,             # <<<<<<<<<<<<<<
 *     )
 *     if c_returned_str == NULL:
 */
  __pyx_t_1 = PyInt_AsSsize_t(__pyx_v_start_channel_id); if (unlikely((__pyx_t_1 == (Py_ssize_t)-1) && PyErr_Occurred())) __PYX_ERR(13, 18, __pyx_L1_error)

  /* "src/python/grpcio/grpc/_cython/_cygrpc/channelz.pyx.pxi":17
 * 
 * def channelz_get_top_channels(start_channel_id):
 *     cdef char *c_returned_str = grpc_channelz_get_top_channels(             # <<<<<<<<<<<<<<
 *         start_channel_id,
 *     )
 */
  __pyx_v_c_returned_str = grpc_channelz_get_top_channels(__pyx_t_1);

  /* "src/python/grpcio/grpc/_cython/_cygrpc/channelz.pyx.pxi":20
 *         start_channel_id,
 *     )
 *     if c_returned_str == NULL:             # <<<<<<<<<<<<<<
 *         raise ValueError('Failed to get top channels, please ensure your' \
 *                          ' start_channel_id==%s is valid' % start_channel_id)
 */
  __pyx_t_2 = ((__pyx_v_c_returned_str == NULL) != 0);
  if (unlikely(__pyx_t_2)) {

    /* "src/python/grpcio/grpc/_cython/_cygrpc/channelz.pyx.pxi":22
 *     if c_returned_str == NULL:
 *         raise ValueError('Failed to get top channels, please ensure your' \
 *                          ' start_channel_id==%s is valid' % start_channel_id)             # <<<<<<<<<<<<<<
 *     return c_returned_str
 * 
 */
    __pyx_t_3 = __Pyx_PyString_FormatSafe(__pyx_kp_s_Failed_to_get_top_channels_pleas, __pyx_v_start_channel_id); if (unlikely(!__pyx_t_3)) __PYX_ERR(13, 22, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_3);

    /* "src/python/grpcio/grpc/_cython/_cygrpc/channelz.pyx.pxi":21
 *     )
 *     if c_returned_str == NULL:
 *         raise ValueError('Failed to get top channels, please ensure your' \             # <<<<<<<<<<<<<<
 *                          ' start_channel_id==%s is valid' % start_channel_id)
 *     return c_returned_str
 */
    __pyx_t_4 = __Pyx_PyObject_CallOneArg(__pyx_builtin_ValueError, __pyx_t_3); if (unlikely(!__pyx_t_4)) __PYX_ERR(13, 21, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_4);
    __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
    __Pyx_Raise(__pyx_t_4, 0, 0, 0);
    __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
    __PYX_ERR(13, 21, __pyx_L1_error)

    /* "src/python/grpcio/grpc/_cython/_cygrpc/channelz.pyx.pxi":20
 *         start_channel_id,
 *     )
 *     if c_returned_str == NULL:             # <<<<<<<<<<<<<<
 *         raise ValueError('Failed to get top channels, please ensure your' \
 *                          ' start_channel_id==%s is valid' % start_channel_id)
 */
  }

  /* "src/python/grpcio/grpc/_cython/_cygrpc/channelz.pyx.pxi":23
 *         raise ValueError('Failed to get top channels, please ensure your' \
 *                          ' start_channel_id==%s is valid' % start_channel_id)
 *     return c_returned_str             # <<<<<<<<<<<<<<
 * 
 * def channelz_get_servers(start_server_id):
 */
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_4 = __Pyx_PyBytes_FromString(__pyx_v_c_returned_str); if (unlikely(!__pyx_t_4)) __PYX_ERR(13, 23, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_4);
  __pyx_r = __pyx_t_4;
  __pyx_t_4 = 0;
  goto __pyx_L0;

  /* "src/python/grpcio/grpc/_cython/_cygrpc/channelz.pyx.pxi":16
 * 
 * 
 * def channelz_get_top_channels(start_channel_id):             # <<<<<<<<<<<<<<
 *     cdef char *c_returned_str = grpc_channelz_get_top_channels(
 *         start_channel_id,
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_3);
  __Pyx_XDECREF(__pyx_t_4);
  __Pyx_AddTraceback("grpc._cython.cygrpc.channelz_get_top_channels", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "src/python/grpcio/grpc/_cython/_cygrpc/channelz.pyx.pxi":25
 *     return c_returned_str
 * 
 * def channelz_get_servers(start_server_id):             # <<<<<<<<<<<<<<
 *     cdef char *c_returned_str = grpc_channelz_get_servers(start_server_id)
 *     if c_returned_str == NULL:
 */

/* Python wrapper */
static PyObject *__pyx_pw_4grpc_7_cython_6cygrpc_3channelz_get_servers(PyObject *__pyx_self, PyObject *__pyx_v_start_server_id); /*proto*/
static PyMethodDef __pyx_mdef_4grpc_7_cython_6cygrpc_3channelz_get_servers = {"channelz_get_servers", (PyCFunction)__pyx_pw_4grpc_7_cython_6cygrpc_3channelz_get_servers, METH_O, 0};
static PyObject *__pyx_pw_4grpc_7_cython_6cygrpc_3channelz_get_servers(PyObject *__pyx_self, PyObject *__pyx_v_start_server_id) {
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("channelz_get_servers (wrapper)", 0);
  __pyx_r = __pyx_pf_4grpc_7_cython_6cygrpc_2channelz_get_servers(__pyx_self, ((PyObject *)__pyx_v_start_server_id));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_4grpc_7_cython_6cygrpc_2channelz_get_servers(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__pyx_v_start_server_id) {
  char *__pyx_v_c_returned_str;
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  __pyx_t_4grpc_7_cython_6cygrpc_intptr_t __pyx_t_1;
  int __pyx_t_2;
  PyObject *__pyx_t_3 = NULL;
  PyObject *__pyx_t_4 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("channelz_get_servers", 0);

  /* "src/python/grpcio/grpc/_cython/_cygrpc/channelz.pyx.pxi":26
 * 
 * def channelz_get_servers(start_server_id):
 *     cdef char *c_returned_str = grpc_channelz_get_servers(start_server_id)             # <<<<<<<<<<<<<<
 *     if c_returned_str == NULL:
 *         raise ValueError('Failed to get servers, please ensure your' \
 */
  __pyx_t_1 = PyInt_AsSsize_t(__pyx_v_start_server_id); if (unlikely((__pyx_t_1 == (Py_ssize_t)-1) && PyErr_Occurred())) __PYX_ERR(13, 26, __pyx_L1_error)
  __pyx_v_c_returned_str = grpc_channelz_get_servers(__pyx_t_1);

  /* "src/python/grpcio/grpc/_cython/_cygrpc/channelz.pyx.pxi":27
 * def channelz_get_servers(start_server_id):
 *     cdef char *c_returned_str = grpc_channelz_get_servers(start_server_id)
 *     if c_returned_str == NULL:             # <<<<<<<<<<<<<<
 *         raise ValueError('Failed to get servers, please ensure your' \
 *                          ' start_server_id==%s is valid' % start_server_id)
 */
  __pyx_t_2 = ((__pyx_v_c_returned_str == NULL) != 0);
  if (unlikely(__pyx_t_2)) {

    /* "src/python/grpcio/grpc/_cython/_cygrpc/channelz.pyx.pxi":29
 *     if c_returned_str == NULL:
 *         raise ValueError('Failed to get servers, please ensure your' \
 *                          ' start_server_id==%s is valid' % start_server_id)             # <<<<<<<<<<<<<<
 *     return c_returned_str
 * 
 */
    __pyx_t_3 = __Pyx_PyString_FormatSafe(__pyx_kp_s_Failed_to_get_servers_please_ens, __pyx_v_start_server_id); if (unlikely(!__pyx_t_3)) __PYX_ERR(13, 29, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_3);

    /* "src/python/grpcio/grpc/_cython/_cygrpc/channelz.pyx.pxi":28
 *     cdef char *c_returned_str = grpc_channelz_get_servers(start_server_id)
 *     if c_returned_str == NULL:
 *         raise ValueError('Failed to get servers, please ensure your' \             # <<<<<<<<<<<<<<
 *                          ' start_server_id==%s is valid' % start_server_id)
 *     return c_returned_str
 */
    __pyx_t_4 = __Pyx_PyObject_CallOneArg(__pyx_builtin_ValueError, __pyx_t_3); if (unlikely(!__pyx_t_4)) __PYX_ERR(13, 28, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_4);
    __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
    __Pyx_Raise(__pyx_t_4, 0, 0, 0);
    __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
    __PYX_ERR(13, 28, __pyx_L1_error)

    /* "src/python/grpcio/grpc/_cython/_cygrpc/channelz.pyx.pxi":27
 * def channelz_get_servers(start_server_id):
 *     cdef char *c_returned_str = grpc_channelz_get_servers(start_server_id)
 *     if c_returned_str == NULL:             # <<<<<<<<<<<<<<
 *         raise ValueError('Failed to get servers, please ensure your' \
 *                          ' start_server_id==%s is valid' % start_server_id)
 */
  }

  /* "src/python/grpcio/grpc/_cython/_cygrpc/channelz.pyx.pxi":30
 *         raise ValueError('Failed to get servers, please ensure your' \
 *                          ' start_server_id==%s is valid' % start_server_id)
 *     return c_returned_str             # <<<<<<<<<<<<<<
 * 
 * def channelz_get_server(server_id):
 */
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_4 = __Pyx_PyBytes_FromString(__pyx_v_c_returned_str); if (unlikely(!__pyx_t_4)) __PYX_ERR(13, 30, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_4);
  __pyx_r = __pyx_t_4;
  __pyx_t_4 = 0;
  goto __pyx_L0;

  /* "src/python/grpcio/grpc/_cython/_cygrpc/channelz.pyx.pxi":25
 *     return c_returned_str
 * 
 * def channelz_get_servers(start_server_id):             # <<<<<<<<<<<<<<
 *     cdef char *c_returned_str = grpc_channelz_get_servers(start_server_id)
 *     if c_returned_str == NULL:
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_3);
  __Pyx_XDECREF(__pyx_t_4);
  __Pyx_AddTraceback("grpc._cython.cygrpc.channelz_get_servers", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "src/python/grpcio/grpc/_cython/_cygrpc/channelz.pyx.pxi":32
 *     return c_returned_str
 * 
 * def channelz_get_server(server_id):             # <<<<<<<<<<<<<<
 *     cdef char *c_returned_str = grpc_channelz_get_server(server_id)
 *     if c_returned_str == NULL:
 */

/* Python wrapper */
static PyObject *__pyx_pw_4grpc_7_cython_6cygrpc_5channelz_get_server(PyObject *__pyx_self, PyObject *__pyx_v_server_id); /*proto*/
static PyMethodDef __pyx_mdef_4grpc_7_cython_6cygrpc_5channelz_get_server = {"channelz_get_server", (PyCFunction)__pyx_pw_4grpc_7_cython_6cygrpc_5channelz_get_server, METH_O, 0};
static PyObject *__pyx_pw_4grpc_7_cython_6cygrpc_5channelz_get_server(PyObject *__pyx_self, PyObject *__pyx_v_server_id) {
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("channelz_get_server (wrapper)", 0);
  __pyx_r = __pyx_pf_4grpc_7_cython_6cygrpc_4channelz_get_server(__pyx_self, ((PyObject *)__pyx_v_server_id));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_4grpc_7_cython_6cygrpc_4channelz_get_server(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__pyx_v_server_id) {
  char *__pyx_v_c_returned_str;
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  __pyx_t_4grpc_7_cython_6cygrpc_intptr_t __pyx_t_1;
  int __pyx_t_2;
  PyObject *__pyx_t_3 = NULL;
  PyObject *__pyx_t_4 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("channelz_get_server", 0);

  /* "src/python/grpcio/grpc/_cython/_cygrpc/channelz.pyx.pxi":33
 * 
 * def channelz_get_server(server_id):
 *     cdef char *c_returned_str = grpc_channelz_get_server(server_id)             # <<<<<<<<<<<<<<
 *     if c_returned_str == NULL:
 *         raise ValueError('Failed to get the server, please ensure your' \
 */
  __pyx_t_1 = PyInt_AsSsize_t(__pyx_v_server_id); if (unlikely((__pyx_t_1 == (Py_ssize_t)-1) && PyErr_Occurred())) __PYX_ERR(13, 33, __pyx_L1_error)
  __pyx_v_c_returned_str = grpc_channelz_get_server(__pyx_t_1);

  /* "src/python/grpcio/grpc/_cython/_cygrpc/channelz.pyx.pxi":34
 * def channelz_get_server(server_id):
 *     cdef char *c_returned_str = grpc_channelz_get_server(server_id)
 *     if c_returned_str == NULL:             # <<<<<<<<<<<<<<
 *         raise ValueError('Failed to get the server, please ensure your' \
 *                          ' server_id==%s is valid' % server_id)
 */
  __pyx_t_2 = ((__pyx_v_c_returned_str == NULL) != 0);
  if (unlikely(__pyx_t_2)) {

    /* "src/python/grpcio/grpc/_cython/_cygrpc/channelz.pyx.pxi":36
 *     if c_returned_str == NULL:
 *         raise ValueError('Failed to get the server, please ensure your' \
 *                          ' server_id==%s is valid' % server_id)             # <<<<<<<<<<<<<<
 *     return c_returned_str
 * 
 */
    __pyx_t_3 = __Pyx_PyString_FormatSafe(__pyx_kp_s_Failed_to_get_the_server_please, __pyx_v_server_id); if (unlikely(!__pyx_t_3)) __PYX_ERR(13, 36, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_3);

    /* "src/python/grpcio/grpc/_cython/_cygrpc/channelz.pyx.pxi":35
 *     cdef char *c_returned_str = grpc_channelz_get_server(server_id)
 *     if c_returned_str == NULL:
 *         raise ValueError('Failed to get the server, please ensure your' \             # <<<<<<<<<<<<<<
 *                          ' server_id==%s is valid' % server_id)
 *     return c_returned_str
 */
    __pyx_t_4 = __Pyx_PyObject_CallOneArg(__pyx_builtin_ValueError, __pyx_t_3); if (unlikely(!__pyx_t_4)) __PYX_ERR(13, 35, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_4);
    __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
    __Pyx_Raise(__pyx_t_4, 0, 0, 0);
    __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
    __PYX_ERR(13, 35, __pyx_L1_error)

    /* "src/python/grpcio/grpc/_cython/_cygrpc/channelz.pyx.pxi":34
 * def channelz_get_server(server_id):
 *     cdef char *c_returned_str = grpc_channelz_get_server(server_id)
 *     if c_returned_str == NULL:             # <<<<<<<<<<<<<<
 *         raise ValueError('Failed to get the server, please ensure your' \
 *                          ' server_id==%s is valid' % server_id)
 */
  }

  /* "src/python/grpcio/grpc/_cython/_cygrpc/channelz.pyx.pxi":37
 *         raise ValueError('Failed to get the server, please ensure your' \
 *                          ' server_id==%s is valid' % server_id)
 *     return c_returned_str             # <<<<<<<<<<<<<<
 * 
 * def channelz_get_server_sockets(server_id, start_socket_id, max_results):
 */
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_4 = __Pyx_PyBytes_FromString(__pyx_v_c_returned_str); if (unlikely(!__pyx_t_4)) __PYX_ERR(13, 37, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_4);
  __pyx_r = __pyx_t_4;
  __pyx_t_4 = 0;
  goto __pyx_L0;

  /* "src/python/grpcio/grpc/_cython/_cygrpc/channelz.pyx.pxi":32
 *     return c_returned_str
 * 
 * def channelz_get_server(server_id):             # <<<<<<<<<<<<<<
 *     cdef char *c_returned_str = grpc_channelz_get_server(server_id)
 *     if c_returned_str == NULL:
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_3);
  __Pyx_XDECREF(__pyx_t_4);
  __Pyx_AddTraceback("grpc._cython.cygrpc.channelz_get_server", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "src/python/grpcio/grpc/_cython/_cygrpc/channelz.pyx.pxi":39
 *     return c_returned_str
 * 
 * def channelz_get_server_sockets(server_id, start_socket_id, max_results):             # <<<<<<<<<<<<<<
 *     cdef char *c_returned_str = grpc_channelz_get_server_sockets(
 *         server_id,
 */

/* Python wrapper */
static PyObject *__pyx_pw_4grpc_7_cython_6cygrpc_7channelz_get_server_sockets(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
static PyMethodDef __pyx_mdef_4grpc_7_cython_6cygrpc_7channelz_get_server_sockets = {"channelz_get_server_sockets", (PyCFunction)(void*)(PyCFunctionWithKeywords)__pyx_pw_4grpc_7_cython_6cygrpc_7channelz_get_server_sockets, METH_VARARGS|METH_KEYWORDS, 0};
static PyObject *__pyx_pw_4grpc_7_cython_6cygrpc_7channelz_get_server_sockets(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
  PyObject *__pyx_v_server_id = 0;
  PyObject *__pyx_v_start_socket_id = 0;
  PyObject *__pyx_v_max_results = 0;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("channelz_get_server_sockets (wrapper)", 0);
  {
    static PyObject **__pyx_pyargnames[] = {&__pyx_n_s_server_id,&__pyx_n_s_start_socket_id,&__pyx_n_s_max_results,0};
    PyObject* values[3] = {0,0,0};
    if (unlikely(__pyx_kwds)) {
      Py_ssize_t kw_args;
      const Py_ssize_t pos_args = PyTuple_GET_SIZE(__pyx_args);
      switch (pos_args) {
        case  3: values[2] = PyTuple_GET_ITEM(__pyx_args, 2);
        CYTHON_FALLTHROUGH;
        case  2: values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
        CYTHON_FALLTHROUGH;
        case  1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
        CYTHON_FALLTHROUGH;
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      kw_args = PyDict_Size(__pyx_kwds);
      switch (pos_args) {
        case  0:
        if (likely((values[0] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_server_id)) != 0)) kw_args--;
        else goto __pyx_L5_argtuple_error;
        CYTHON_FALLTHROUGH;
        case  1:
        if (likely((values[1] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_start_socket_id)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("channelz_get_server_sockets", 1, 3, 3, 1); __PYX_ERR(13, 39, __pyx_L3_error)
        }
        CYTHON_FALLTHROUGH;
        case  2:
        if (likely((values[2] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_max_results)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("channelz_get_server_sockets", 1, 3, 3, 2); __PYX_ERR(13, 39, __pyx_L3_error)
        }
      }
      if (unlikely(kw_args > 0)) {
        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "channelz_get_server_sockets") < 0)) __PYX_ERR(13, 39, __pyx_L3_error)
      }
    } else if (PyTuple_GET_SIZE(__pyx_args) != 3) {
      goto __pyx_L5_argtuple_error;
    } else {
      values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
      values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
      values[2] = PyTuple_GET_ITEM(__pyx_args, 2);
    }
    __pyx_v_server_id = values[0];
    __pyx_v_start_socket_id = values[1];
    __pyx_v_max_results = values[2];
  }
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("channelz_get_server_sockets", 1, 3, 3, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(13, 39, __pyx_L3_error)
  __pyx_L3_error:;
  __Pyx_AddTraceback("grpc._cython.cygrpc.channelz_get_server_sockets", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  __pyx_r = __pyx_pf_4grpc_7_cython_6cygrpc_6channelz_get_server_sockets(__pyx_self, __pyx_v_server_id, __pyx_v_start_socket_id, __pyx_v_max_results);

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_4grpc_7_cython_6cygrpc_6channelz_get_server_sockets(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__pyx_v_server_id, PyObject *__pyx_v_start_socket_id, PyObject *__pyx_v_max_results) {
  char *__pyx_v_c_returned_str;
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  __pyx_t_4grpc_7_cython_6cygrpc_intptr_t __pyx_t_1;
  __pyx_t_4grpc_7_cython_6cygrpc_intptr_t __pyx_t_2;
  __pyx_t_4grpc_7_cython_6cygrpc_intptr_t __pyx_t_3;
  int __pyx_t_4;
  PyObject *__pyx_t_5 = NULL;
  PyObject *__pyx_t_6 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("channelz_get_server_sockets", 0);

  /* "src/python/grpcio/grpc/_cython/_cygrpc/channelz.pyx.pxi":41
 * def channelz_get_server_sockets(server_id, start_socket_id, max_results):
 *     cdef char *c_returned_str = grpc_channelz_get_server_sockets(
 *         server_id,             # <<<<<<<<<<<<<<
 *         start_socket_id,
 *         max_results,
 */
  __pyx_t_1 = PyInt_AsSsize_t(__pyx_v_server_id); if (unlikely((__pyx_t_1 == (Py_ssize_t)-1) && PyErr_Occurred())) __PYX_ERR(13, 41, __pyx_L1_error)

  /* "src/python/grpcio/grpc/_cython/_cygrpc/channelz.pyx.pxi":42
 *     cdef char *c_returned_str = grpc_channelz_get_server_sockets(
 *         server_id,
 *         start_socket_id,             # <<<<<<<<<<<<<<
 *         max_results,
 *     )
 */
  __pyx_t_2 = PyInt_AsSsize_t(__pyx_v_start_socket_id); if (unlikely((__pyx_t_2 == (Py_ssize_t)-1) && PyErr_Occurred())) __PYX_ERR(13, 42, __pyx_L1_error)

  /* "src/python/grpcio/grpc/_cython/_cygrpc/channelz.pyx.pxi":43
 *         server_id,
 *         start_socket_id,
 *         max_results,             # <<<<<<<<<<<<<<
 *     )
 *     if c_returned_str == NULL:
 */
  __pyx_t_3 = PyInt_AsSsize_t(__pyx_v_max_results); if (unlikely((__pyx_t_3 == (Py_ssize_t)-1) && PyErr_Occurred())) __PYX_ERR(13, 43, __pyx_L1_error)

  /* "src/python/grpcio/grpc/_cython/_cygrpc/channelz.pyx.pxi":40
 * 
 * def channelz_get_server_sockets(server_id, start_socket_id, max_results):
 *     cdef char *c_returned_str = grpc_channelz_get_server_sockets(             # <<<<<<<<<<<<<<
 *         server_id,
 *         start_socket_id,
 */
  __pyx_v_c_returned_str = grpc_channelz_get_server_sockets(__pyx_t_1, __pyx_t_2, __pyx_t_3);

  /* "src/python/grpcio/grpc/_cython/_cygrpc/channelz.pyx.pxi":45
 *         max_results,
 *     )
 *     if c_returned_str == NULL:             # <<<<<<<<<<<<<<
 *         raise ValueError('Failed to get server sockets, please ensure your' \
 *                          ' server_id==%s and start_socket_id==%s and' \
 */
  __pyx_t_4 = ((__pyx_v_c_returned_str == NULL) != 0);
  if (unlikely(__pyx_t_4)) {

    /* "src/python/grpcio/grpc/_cython/_cygrpc/channelz.pyx.pxi":49
 *                          ' server_id==%s and start_socket_id==%s and' \
 *                          ' max_results==%s is valid' %
 *                          (server_id, start_socket_id, max_results))             # <<<<<<<<<<<<<<
 *     return c_returned_str
 * 
 */
    __pyx_t_5 = PyTuple_New(3); if (unlikely(!__pyx_t_5)) __PYX_ERR(13, 49, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_5);
    __Pyx_INCREF(__pyx_v_server_id);
    __Pyx_GIVEREF(__pyx_v_server_id);
    PyTuple_SET_ITEM(__pyx_t_5, 0, __pyx_v_server_id);
    __Pyx_INCREF(__pyx_v_start_socket_id);
    __Pyx_GIVEREF(__pyx_v_start_socket_id);
    PyTuple_SET_ITEM(__pyx_t_5, 1, __pyx_v_start_socket_id);
    __Pyx_INCREF(__pyx_v_max_results);
    __Pyx_GIVEREF(__pyx_v_max_results);
    PyTuple_SET_ITEM(__pyx_t_5, 2, __pyx_v_max_results);

    /* "src/python/grpcio/grpc/_cython/_cygrpc/channelz.pyx.pxi":48
 *         raise ValueError('Failed to get server sockets, please ensure your' \
 *                          ' server_id==%s and start_socket_id==%s and' \
 *                          ' max_results==%s is valid' %             # <<<<<<<<<<<<<<
 *                          (server_id, start_socket_id, max_results))
 *     return c_returned_str
 */
    __pyx_t_6 = __Pyx_PyString_Format(__pyx_kp_s_Failed_to_get_server_sockets_ple, __pyx_t_5); if (unlikely(!__pyx_t_6)) __PYX_ERR(13, 48, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_6);
    __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;

    /* "src/python/grpcio/grpc/_cython/_cygrpc/channelz.pyx.pxi":46
 *     )
 *     if c_returned_str == NULL:
 *         raise ValueError('Failed to get server sockets, please ensure your' \             # <<<<<<<<<<<<<<
 *                          ' server_id==%s and start_socket_id==%s and' \
 *                          ' max_results==%s is valid' %
 */
    __pyx_t_5 = __Pyx_PyObject_CallOneArg(__pyx_builtin_ValueError, __pyx_t_6); if (unlikely(!__pyx_t_5)) __PYX_ERR(13, 46, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_5);
    __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
    __Pyx_Raise(__pyx_t_5, 0, 0, 0);
    __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
    __PYX_ERR(13, 46, __pyx_L1_error)

    /* "src/python/grpcio/grpc/_cython/_cygrpc/channelz.pyx.pxi":45
 *         max_results,
 *     )
 *     if c_returned_str == NULL:             # <<<<<<<<<<<<<<
 *         raise ValueError('Failed to get server sockets, please ensure your' \
 *                          ' server_id==%s and start_socket_id==%s and' \
 */
  }

  /* "src/python/grpcio/grpc/_cython/_cygrpc/channelz.pyx.pxi":50
 *                          ' max_results==%s is valid' %
 *                          (server_id, start_socket_id, max_results))
 *     return c_returned_str             # <<<<<<<<<<<<<<
 * 
 * def channelz_get_channel(channel_id):
 */
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_5 = __Pyx_PyBytes_FromString(__pyx_v_c_returned_str); if (unlikely(!__pyx_t_5)) __PYX_ERR(13, 50, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_5);
  __pyx_r = __pyx_t_5;
  __pyx_t_5 = 0;
  goto __pyx_L0;

  /* "src/python/grpcio/grpc/_cython/_cygrpc/channelz.pyx.pxi":39
 *     return c_returned_str
 * 
 * def channelz_get_server_sockets(server_id, start_socket_id, max_results):             # <<<<<<<<<<<<<<
 *     cdef char *c_returned_str = grpc_channelz_get_server_sockets(
 *         server_id,
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_5);
  __Pyx_XDECREF(__pyx_t_6);
  __Pyx_AddTraceback("grpc._cython.cygrpc.channelz_get_server_sockets", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "src/python/grpcio/grpc/_cython/_cygrpc/channelz.pyx.pxi":52
 *     return c_returned_str
 * 
 * def channelz_get_channel(channel_id):             # <<<<<<<<<<<<<<
 *     cdef char *c_returned_str = grpc_channelz_get_channel(channel_id)
 *     if c_returned_str == NULL:
 */

/* Python wrapper */
static PyObject *__pyx_pw_4grpc_7_cython_6cygrpc_9channelz_get_channel(PyObject *__pyx_self, PyObject *__pyx_v_channel_id); /*proto*/
static PyMethodDef __pyx_mdef_4grpc_7_cython_6cygrpc_9channelz_get_channel = {"channelz_get_channel", (PyCFunction)__pyx_pw_4grpc_7_cython_6cygrpc_9channelz_get_channel, METH_O, 0};
static PyObject *__pyx_pw_4grpc_7_cython_6cygrpc_9channelz_get_channel(PyObject *__pyx_self, PyObject *__pyx_v_channel_id) {
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("channelz_get_channel (wrapper)", 0);
  __pyx_r = __pyx_pf_4grpc_7_cython_6cygrpc_8channelz_get_channel(__pyx_self, ((PyObject *)__pyx_v_channel_id));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_4grpc_7_cython_6cygrpc_8channelz_get_channel(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__pyx_v_channel_id) {
  char *__pyx_v_c_returned_str;
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  __pyx_t_4grpc_7_cython_6cygrpc_intptr_t __pyx_t_1;
  int __pyx_t_2;
  PyObject *__pyx_t_3 = NULL;
  PyObject *__pyx_t_4 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("channelz_get_channel", 0);

  /* "src/python/grpcio/grpc/_cython/_cygrpc/channelz.pyx.pxi":53
 * 
 * def channelz_get_channel(channel_id):
 *     cdef char *c_returned_str = grpc_channelz_get_channel(channel_id)             # <<<<<<<<<<<<<<
 *     if c_returned_str == NULL:
 *         raise ValueError('Failed to get the channel, please ensure your' \
 */
  __pyx_t_1 = PyInt_AsSsize_t(__pyx_v_channel_id); if (unlikely((__pyx_t_1 == (Py_ssize_t)-1) && PyErr_Occurred())) __PYX_ERR(13, 53, __pyx_L1_error)
  __pyx_v_c_returned_str = grpc_channelz_get_channel(__pyx_t_1);

  /* "src/python/grpcio/grpc/_cython/_cygrpc/channelz.pyx.pxi":54
 * def channelz_get_channel(channel_id):
 *     cdef char *c_returned_str = grpc_channelz_get_channel(channel_id)
 *     if c_returned_str == NULL:             # <<<<<<<<<<<<<<
 *         raise ValueError('Failed to get the channel, please ensure your' \
 *                          ' channel_id==%s is valid' % (channel_id))
 */
  __pyx_t_2 = ((__pyx_v_c_returned_str == NULL) != 0);
  if (unlikely(__pyx_t_2)) {

    /* "src/python/grpcio/grpc/_cython/_cygrpc/channelz.pyx.pxi":56
 *     if c_returned_str == NULL:
 *         raise ValueError('Failed to get the channel, please ensure your' \
 *                          ' channel_id==%s is valid' % (channel_id))             # <<<<<<<<<<<<<<
 *     return c_returned_str
 * 
 */
    __pyx_t_3 = __Pyx_PyString_FormatSafe(__pyx_kp_s_Failed_to_get_the_channel_please, __pyx_v_channel_id); if (unlikely(!__pyx_t_3)) __PYX_ERR(13, 56, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_3);

    /* "src/python/grpcio/grpc/_cython/_cygrpc/channelz.pyx.pxi":55
 *     cdef char *c_returned_str = grpc_channelz_get_channel(channel_id)
 *     if c_returned_str == NULL:
 *         raise ValueError('Failed to get the channel, please ensure your' \             # <<<<<<<<<<<<<<
 *                          ' channel_id==%s is valid' % (channel_id))
 *     return c_returned_str
 */
    __pyx_t_4 = __Pyx_PyObject_CallOneArg(__pyx_builtin_ValueError, __pyx_t_3); if (unlikely(!__pyx_t_4)) __PYX_ERR(13, 55, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_4);
    __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
    __Pyx_Raise(__pyx_t_4, 0, 0, 0);
    __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
    __PYX_ERR(13, 55, __pyx_L1_error)

    /* "src/python/grpcio/grpc/_cython/_cygrpc/channelz.pyx.pxi":54
 * def channelz_get_channel(channel_id):
 *     cdef char *c_returned_str = grpc_channelz_get_channel(channel_id)
 *     if c_returned_str == NULL:             # <<<<<<<<<<<<<<
 *         raise ValueError('Failed to get the channel, please ensure your' \
 *                          ' channel_id==%s is valid' % (channel_id))
 */
  }

  /* "src/python/grpcio/grpc/_cython/_cygrpc/channelz.pyx.pxi":57
 *         raise ValueError('Failed to get the channel, please ensure your' \
 *                          ' channel_id==%s is valid' % (channel_id))
 *     return c_returned_str             # <<<<<<<<<<<<<<
 * 
 * def channelz_get_subchannel(subchannel_id):
 */
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_4 = __Pyx_PyBytes_FromString(__pyx_v_c_returned_str); if (unlikely(!__pyx_t_4)) __PYX_ERR(13, 57, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_4);
  __pyx_r = __pyx_t_4;
  __pyx_t_4 = 0;
  goto __pyx_L0;

  /* "src/python/grpcio/grpc/_cython/_cygrpc/channelz.pyx.pxi":52
 *     return c_returned_str
 * 
 * def channelz_get_channel(channel_id):             # <<<<<<<<<<<<<<
 *     cdef char *c_returned_str = grpc_channelz_get_channel(channel_id)
 *     if c_returned_str == NULL:
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_3);
  __Pyx_XDECREF(__pyx_t_4);
  __Pyx_AddTraceback("grpc._cython.cygrpc.channelz_get_channel", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "src/python/grpcio/grpc/_cython/_cygrpc/channelz.pyx.pxi":59
 *     return c_returned_str
 * 
 * def channelz_get_subchannel(subchannel_id):             # <<<<<<<<<<<<<<
 *     cdef char *c_returned_str = grpc_channelz_get_subchannel(subchannel_id)
 *     if c_returned_str == NULL:
 */

/* Python wrapper */
static PyObject *__pyx_pw_4grpc_7_cython_6cygrpc_11channelz_get_subchannel(PyObject *__pyx_self, PyObject *__pyx_v_subchannel_id); /*proto*/
static PyMethodDef __pyx_mdef_4grpc_7_cython_6cygrpc_11channelz_get_subchannel = {"channelz_get_subchannel", (PyCFunction)__pyx_pw_4grpc_7_cython_6cygrpc_11channelz_get_subchannel, METH_O, 0};
static PyObject *__pyx_pw_4grpc_7_cython_6cygrpc_11channelz_get_subchannel(PyObject *__pyx_self, PyObject *__pyx_v_subchannel_id) {
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("channelz_get_subchannel (wrapper)", 0);
  __pyx_r = __pyx_pf_4grpc_7_cython_6cygrpc_10channelz_get_subchannel(__pyx_self, ((PyObject *)__pyx_v_subchannel_id));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_4grpc_7_cython_6cygrpc_10channelz_get_subchannel(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__pyx_v_subchannel_id) {
  char *__pyx_v_c_returned_str;
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  __pyx_t_4grpc_7_cython_6cygrpc_intptr_t __pyx_t_1;
  int __pyx_t_2;
  PyObject *__pyx_t_3 = NULL;
  PyObject *__pyx_t_4 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("channelz_get_subchannel", 0);

  /* "src/python/grpcio/grpc/_cython/_cygrpc/channelz.pyx.pxi":60
 * 
 * def channelz_get_subchannel(subchannel_id):
 *     cdef char *c_returned_str = grpc_channelz_get_subchannel(subchannel_id)             # <<<<<<<<<<<<<<
 *     if c_returned_str == NULL:
 *         raise ValueError('Failed to get the subchannel, please ensure your' \
 */
  __pyx_t_1 = PyInt_AsSsize_t(__pyx_v_subchannel_id); if (unlikely((__pyx_t_1 == (Py_ssize_t)-1) && PyErr_Occurred())) __PYX_ERR(13, 60, __pyx_L1_error)
  __pyx_v_c_returned_str = grpc_channelz_get_subchannel(__pyx_t_1);

  /* "src/python/grpcio/grpc/_cython/_cygrpc/channelz.pyx.pxi":61
 * def channelz_get_subchannel(subchannel_id):
 *     cdef char *c_returned_str = grpc_channelz_get_subchannel(subchannel_id)
 *     if c_returned_str == NULL:             # <<<<<<<<<<<<<<
 *         raise ValueError('Failed to get the subchannel, please ensure your' \
 *                          ' subchannel_id==%s is valid' % (subchannel_id))
 */
  __pyx_t_2 = ((__pyx_v_c_returned_str == NULL) != 0);
  if (unlikely(__pyx_t_2)) {

    /* "src/python/grpcio/grpc/_cython/_cygrpc/channelz.pyx.pxi":63
 *     if c_returned_str == NULL:
 *         raise ValueError('Failed to get the subchannel, please ensure your' \
 *                          ' subchannel_id==%s is valid' % (subchannel_id))             # <<<<<<<<<<<<<<
 *     return c_returned_str
 * 
 */
    __pyx_t_3 = __Pyx_PyString_FormatSafe(__pyx_kp_s_Failed_to_get_the_subchannel_ple, __pyx_v_subchannel_id); if (unlikely(!__pyx_t_3)) __PYX_ERR(13, 63, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_3);

    /* "src/python/grpcio/grpc/_cython/_cygrpc/channelz.pyx.pxi":62
 *     cdef char *c_returned_str = grpc_channelz_get_subchannel(subchannel_id)
 *     if c_returned_str == NULL:
 *         raise ValueError('Failed to get the subchannel, please ensure your' \             # <<<<<<<<<<<<<<
 *                          ' subchannel_id==%s is valid' % (subchannel_id))
 *     return c_returned_str
 */
    __pyx_t_4 = __Pyx_PyObject_CallOneArg(__pyx_builtin_ValueError, __pyx_t_3); if (unlikely(!__pyx_t_4)) __PYX_ERR(13, 62, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_4);
    __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
    __Pyx_Raise(__pyx_t_4, 0, 0, 0);
    __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
    __PYX_ERR(13, 62, __pyx_L1_error)

    /* "src/python/grpcio/grpc/_cython/_cygrpc/channelz.pyx.pxi":61
 * def channelz_get_subchannel(subchannel_id):
 *     cdef char *c_returned_str = grpc_channelz_get_subchannel(subchannel_id)
 *     if c_returned_str == NULL:             # <<<<<<<<<<<<<<
 *         raise ValueError('Failed to get the subchannel, please ensure your' \
 *                          ' subchannel_id==%s is valid' % (subchannel_id))
 */
  }

  /* "src/python/grpcio/grpc/_cython/_cygrpc/channelz.pyx.pxi":64
 *         raise ValueError('Failed to get the subchannel, please ensure your' \
 *                          ' subchannel_id==%s is valid' % (subchannel_id))
 *     return c_returned_str             # <<<<<<<<<<<<<<
 * 
 * def channelz_get_socket(socket_id):
 */
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_4 = __Pyx_PyBytes_FromString(__pyx_v_c_returned_str); if (unlikely(!__pyx_t_4)) __PYX_ERR(13, 64, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_4);
  __pyx_r = __pyx_t_4;
  __pyx_t_4 = 0;
  goto __pyx_L0;

  /* "src/python/grpcio/grpc/_cython/_cygrpc/channelz.pyx.pxi":59
 *     return c_returned_str
 * 
 * def channelz_get_subchannel(subchannel_id):             # <<<<<<<<<<<<<<
 *     cdef char *c_returned_str = grpc_channelz_get_subchannel(subchannel_id)
 *     if c_returned_str == NULL:
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_3);
  __Pyx_XDECREF(__pyx_t_4);
  __Pyx_AddTraceback("grpc._cython.cygrpc.channelz_get_subchannel", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "src/python/grpcio/grpc/_cython/_cygrpc/channelz.pyx.pxi":66
 *     return c_returned_str
 * 
 * def channelz_get_socket(socket_id):             # <<<<<<<<<<<<<<
 *     cdef char *c_returned_str = grpc_channelz_get_socket(socket_id)
 *     if c_returned_str == NULL:
 */

/* Python wrapper */
static PyObject *__pyx_pw_4grpc_7_cython_6cygrpc_13channelz_get_socket(PyObject *__pyx_self, PyObject *__pyx_v_socket_id); /*proto*/
static PyMethodDef __pyx_mdef_4grpc_7_cython_6cygrpc_13channelz_get_socket = {"channelz_get_socket", (PyCFunction)__pyx_pw_4grpc_7_cython_6cygrpc_13channelz_get_socket, METH_O, 0};
static PyObject *__pyx_pw_4grpc_7_cython_6cygrpc_13channelz_get_socket(PyObject *__pyx_self, PyObject *__pyx_v_socket_id) {
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("channelz_get_socket (wrapper)", 0);
  __pyx_r = __pyx_pf_4grpc_7_cython_6cygrpc_12channelz_get_socket(__pyx_self, ((PyObject *)__pyx_v_socket_id));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_4grpc_7_cython_6cygrpc_12channelz_get_socket(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__pyx_v_socket_id) {
  char *__pyx_v_c_returned_str;
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  __pyx_t_4grpc_7_cython_6cygrpc_intptr_t __pyx_t_1;
  int __pyx_t_2;
  PyObject *__pyx_t_3 = NULL;
  PyObject *__pyx_t_4 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("channelz_get_socket", 0);

  /* "src/python/grpcio/grpc/_cython/_cygrpc/channelz.pyx.pxi":67
 * 
 * def channelz_get_socket(socket_id):
 *     cdef char *c_returned_str = grpc_channelz_get_socket(socket_id)             # <<<<<<<<<<<<<<
 *     if c_returned_str == NULL:
 *         raise ValueError('Failed to get the socket, please ensure your' \
 */
  __pyx_t_1 = PyInt_AsSsize_t(__pyx_v_socket_id); if (unlikely((__pyx_t_1 == (Py_ssize_t)-1) && PyErr_Occurred())) __PYX_ERR(13, 67, __pyx_L1_error)
  __pyx_v_c_returned_str = grpc_channelz_get_socket(__pyx_t_1);

  /* "src/python/grpcio/grpc/_cython/_cygrpc/channelz.pyx.pxi":68
 * def channelz_get_socket(socket_id):
 *     cdef char *c_returned_str = grpc_channelz_get_socket(socket_id)
 *     if c_returned_str == NULL:             # <<<<<<<<<<<<<<
 *         raise ValueError('Failed to get the socket, please ensure your' \
 *                          ' socket_id==%s is valid' % (socket_id))
 */
  __pyx_t_2 = ((__pyx_v_c_returned_str == NULL) != 0);
  if (unlikely(__pyx_t_2)) {

    /* "src/python/grpcio/grpc/_cython/_cygrpc/channelz.pyx.pxi":70
 *     if c_returned_str == NULL:
 *         raise ValueError('Failed to get the socket, please ensure your' \
 *                          ' socket_id==%s is valid' % (socket_id))             # <<<<<<<<<<<<<<
 *     return c_returned_str
 */
    __pyx_t_3 = __Pyx_PyString_FormatSafe(__pyx_kp_s_Failed_to_get_the_socket_please, __pyx_v_socket_id); if (unlikely(!__pyx_t_3)) __PYX_ERR(13, 70, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_3);

    /* "src/python/grpcio/grpc/_cython/_cygrpc/channelz.pyx.pxi":69
 *     cdef char *c_returned_str = grpc_channelz_get_socket(socket_id)
 *     if c_returned_str == NULL:
 *         raise ValueError('Failed to get the socket, please ensure your' \             # <<<<<<<<<<<<<<
 *                          ' socket_id==%s is valid' % (socket_id))
 *     return c_returned_str
 */
    __pyx_t_4 = __Pyx_PyObject_CallOneArg(__pyx_builtin_ValueError, __pyx_t_3); if (unlikely(!__pyx_t_4)) __PYX_ERR(13, 69, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_4);
    __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
    __Pyx_Raise(__pyx_t_4, 0, 0, 0);
    __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
    __PYX_ERR(13, 69, __pyx_L1_error)

    /* "src/python/grpcio/grpc/_cython/_cygrpc/channelz.pyx.pxi":68
 * def channelz_get_socket(socket_id):
 *     cdef char *c_returned_str = grpc_channelz_get_socket(socket_id)
 *     if c_returned_str == NULL:             # <<<<<<<<<<<<<<
 *         raise ValueError('Failed to get the socket, please ensure your' \
 *                          ' socket_id==%s is valid' % (socket_id))
 */
  }

  /* "src/python/grpcio/grpc/_cython/_cygrpc/channelz.pyx.pxi":71
 *         raise ValueError('Failed to get the socket, please ensure your' \
 *                          ' socket_id==%s is valid' % (socket_id))
 *     return c_returned_str             # <<<<<<<<<<<<<<
 */
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_4 = __Pyx_PyBytes_FromString(__pyx_v_c_returned_str); if (unlikely(!__pyx_t_4)) __PYX_ERR(13, 71, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_4);
  __pyx_r = __pyx_t_4;
  __pyx_t_4 = 0;
  goto __pyx_L0;

  /* "src/python/grpcio/grpc/_cython/_cygrpc/channelz.pyx.pxi":66
 *     return c_returned_str
 * 
 * def channelz_get_socket(socket_id):             # <<<<<<<<<<<<<<
 *     cdef char *c_returned_str = grpc_channelz_get_socket(socket_id)
 *     if c_returned_str == NULL:
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_3);
  __Pyx_XDECREF(__pyx_t_4);
  __Pyx_AddTraceback("grpc._cython.cygrpc.channelz_get_socket", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "src/python/grpcio/grpc/_cython/_cygrpc/csds.pyx.pxi":16
 * 
 * 
 * def dump_xds_configs():             # <<<<<<<<<<<<<<
 *     cdef grpc_slice client_config_in_slice
 *     with nogil:
 */

/* Python wrapper */
static PyObject *__pyx_pw_4grpc_7_cython_6cygrpc_15dump_xds_configs(PyObject *__pyx_self, CYTHON_UNUSED PyObject *unused); /*proto*/
static PyMethodDef __pyx_mdef_4grpc_7_cython_6cygrpc_15dump_xds_configs = {"dump_xds_configs", (PyCFunction)__pyx_pw_4grpc_7_cython_6cygrpc_15dump_xds_configs, METH_NOARGS, 0};
static PyObject *__pyx_pw_4grpc_7_cython_6cygrpc_15dump_xds_configs(PyObject *__pyx_self, CYTHON_UNUSED PyObject *unused) {
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("dump_xds_configs (wrapper)", 0);
  __pyx_r = __pyx_pf_4grpc_7_cython_6cygrpc_14dump_xds_configs(__pyx_self);

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_4grpc_7_cython_6cygrpc_14dump_xds_configs(CYTHON_UNUSED PyObject *__pyx_self) {
  grpc_slice __pyx_v_client_config_in_slice;
  PyObject *__pyx_v_result = 0;
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("dump_xds_configs", 0);

  /* "src/python/grpcio/grpc/_cython/_cygrpc/csds.pyx.pxi":18
 * def dump_xds_configs():
 *     cdef grpc_slice client_config_in_slice
 *     with nogil:             # <<<<<<<<<<<<<<
 *         client_config_in_slice = grpc_dump_xds_configs()
 *     cdef bytes result = _slice_bytes(client_config_in_slice)
 */
  {
      #ifdef WITH_THREAD
      PyThreadState *_save;
      Py_UNBLOCK_THREADS
      __Pyx_FastGIL_Remember();
      #endif
      /*try:*/ {

        /* "src/python/grpcio/grpc/_cython/_cygrpc/csds.pyx.pxi":19
 *     cdef grpc_slice client_config_in_slice
 *     with nogil:
 *         client_config_in_slice = grpc_dump_xds_configs()             # <<<<<<<<<<<<<<
 *     cdef bytes result = _slice_bytes(client_config_in_slice)
 *     return result
 */
        __pyx_v_client_config_in_slice = grpc_dump_xds_configs();
      }

      /* "src/python/grpcio/grpc/_cython/_cygrpc/csds.pyx.pxi":18
 * def dump_xds_configs():
 *     cdef grpc_slice client_config_in_slice
 *     with nogil:             # <<<<<<<<<<<<<<
 *         client_config_in_slice = grpc_dump_xds_configs()
 *     cdef bytes result = _slice_bytes(client_config_in_slice)
 */
      /*finally:*/ {
        /*normal exit:*/{
          #ifdef WITH_THREAD
          __Pyx_FastGIL_Forget();
          Py_BLOCK_THREADS
          #endif
          goto __pyx_L5;
        }
        __pyx_L5:;
      }
  }

  /* "src/python/grpcio/grpc/_cython/_cygrpc/csds.pyx.pxi":20
 *     with nogil:
 *         client_config_in_slice = grpc_dump_xds_configs()
 *     cdef bytes result = _slice_bytes(client_config_in_slice)             # <<<<<<<<<<<<<<
 *     return result
 */
  __pyx_t_1 = __pyx_f_4grpc_7_cython_6cygrpc__slice_bytes(__pyx_v_client_config_in_slice); if (unlikely(!__pyx_t_1)) __PYX_ERR(14, 20, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_v_result = ((PyObject*)__pyx_t_1);
  __pyx_t_1 = 0;

  /* "src/python/grpcio/grpc/_cython/_cygrpc/csds.pyx.pxi":21
 *         client_config_in_slice = grpc_dump_xds_configs()
 *     cdef bytes result = _slice_bytes(client_config_in_slice)
 *     return result             # <<<<<<<<<<<<<<
 */
  __Pyx_XDECREF(__pyx_r);
  __Pyx_INCREF(__pyx_v_result);
  __pyx_r = __pyx_v_result;
  goto __pyx_L0;

  /* "src/python/grpcio/grpc/_cython/_cygrpc/csds.pyx.pxi":16
 * 
 * 
 * def dump_xds_configs():             # <<<<<<<<<<<<<<
 *     cdef grpc_slice client_config_in_slice
 *     with nogil:
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_AddTraceback("grpc._cython.cygrpc.dump_xds_configs", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XDECREF(__pyx_v_result);
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "src/python/grpcio/grpc/_cython/_cygrpc/credentials.pyx.pxi":16
 * 
 * 
 * def _spawn_callback_in_thread(cb_func, args):             # <<<<<<<<<<<<<<
 *   t = ForkManagedThread(target=cb_func, args=args)
 *   t.setDaemon(True)
 */

/* Python wrapper */
static PyObject *__pyx_pw_4grpc_7_cython_6cygrpc_17_spawn_callback_in_thread(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
static PyMethodDef __pyx_mdef_4grpc_7_cython_6cygrpc_17_spawn_callback_in_thread = {"_spawn_callback_in_thread", (PyCFunction)(void*)(PyCFunctionWithKeywords)__pyx_pw_4grpc_7_cython_6cygrpc_17_spawn_callback_in_thread, METH_VARARGS|METH_KEYWORDS, 0};
static PyObject *__pyx_pw_4grpc_7_cython_6cygrpc_17_spawn_callback_in_thread(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
  PyObject *__pyx_v_cb_func = 0;
  PyObject *__pyx_v_args = 0;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("_spawn_callback_in_thread (wrapper)", 0);
  {
    static PyObject **__pyx_pyargnames[] = {&__pyx_n_s_cb_func,&__pyx_n_s_args,0};
    PyObject* values[2] = {0,0};
    if (unlikely(__pyx_kwds)) {
      Py_ssize_t kw_args;
      const Py_ssize_t pos_args = PyTuple_GET_SIZE(__pyx_args);
      switch (pos_args) {
        case  2: values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
        CYTHON_FALLTHROUGH;
        case  1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
        CYTHON_FALLTHROUGH;
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      kw_args = PyDict_Size(__pyx_kwds);
      switch (pos_args) {
        case  0:
        if (likely((values[0] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_cb_func)) != 0)) kw_args--;
        else goto __pyx_L5_argtuple_error;
        CYTHON_FALLTHROUGH;
        case  1:
        if (likely((values[1] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_args)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("_spawn_callback_in_thread", 1, 2, 2, 1); __PYX_ERR(5, 16, __pyx_L3_error)
        }
      }
      if (unlikely(kw_args > 0)) {
        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "_spawn_callback_in_thread") < 0)) __PYX_ERR(5, 16, __pyx_L3_error)
      }
    } else if (PyTuple_GET_SIZE(__pyx_args) != 2) {
      goto __pyx_L5_argtuple_error;
    } else {
      values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
      values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
    }
    __pyx_v_cb_func = values[0];
    __pyx_v_args = values[1];
  }
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("_spawn_callback_in_thread", 1, 2, 2, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(5, 16, __pyx_L3_error)
  __pyx_L3_error:;
  __Pyx_AddTraceback("grpc._cython.cygrpc._spawn_callback_in_thread", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  __pyx_r = __pyx_pf_4grpc_7_cython_6cygrpc_16_spawn_callback_in_thread(__pyx_self, __pyx_v_cb_func, __pyx_v_args);

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_4grpc_7_cython_6cygrpc_16_spawn_callback_in_thread(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__pyx_v_cb_func, PyObject *__pyx_v_args) {
  PyObject *__pyx_v_t = NULL;
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  PyObject *__pyx_t_2 = NULL;
  PyObject *__pyx_t_3 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("_spawn_callback_in_thread", 0);

  /* "src/python/grpcio/grpc/_cython/_cygrpc/credentials.pyx.pxi":17
 * 
 * def _spawn_callback_in_thread(cb_func, args):
 *   t = ForkManagedThread(target=cb_func, args=args)             # <<<<<<<<<<<<<<
 *   t.setDaemon(True)
 *   t.start()
 */
  __Pyx_GetModuleGlobalName(__pyx_t_1, __pyx_n_s_ForkManagedThread); if (unlikely(!__pyx_t_1)) __PYX_ERR(5, 17, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_t_2 = __Pyx_PyDict_NewPresized(2); if (unlikely(!__pyx_t_2)) __PYX_ERR(5, 17, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  if (PyDict_SetItem(__pyx_t_2, __pyx_n_s_target, __pyx_v_cb_func) < 0) __PYX_ERR(5, 17, __pyx_L1_error)
  if (PyDict_SetItem(__pyx_t_2, __pyx_n_s_args, __pyx_v_args) < 0) __PYX_ERR(5, 17, __pyx_L1_error)
  __pyx_t_3 = __Pyx_PyObject_Call(__pyx_t_1, __pyx_empty_tuple, __pyx_t_2); if (unlikely(!__pyx_t_3)) __PYX_ERR(5, 17, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  __pyx_v_t = __pyx_t_3;
  __pyx_t_3 = 0;

  /* "src/python/grpcio/grpc/_cython/_cygrpc/credentials.pyx.pxi":18
 * def _spawn_callback_in_thread(cb_func, args):
 *   t = ForkManagedThread(target=cb_func, args=args)
 *   t.setDaemon(True)             # <<<<<<<<<<<<<<
 *   t.start()
 * 
 */
  __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_v_t, __pyx_n_s_setDaemon); if (unlikely(!__pyx_t_2)) __PYX_ERR(5, 18, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __pyx_t_1 = NULL;
  if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_2))) {
    __pyx_t_1 = PyMethod_GET_SELF(__pyx_t_2);
    if (likely(__pyx_t_1)) {
      PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_2);
      __Pyx_INCREF(__pyx_t_1);
      __Pyx_INCREF(function);
      __Pyx_DECREF_SET(__pyx_t_2, function);
    }
  }
  __pyx_t_3 = (__pyx_t_1) ? __Pyx_PyObject_Call2Args(__pyx_t_2, __pyx_t_1, Py_True) : __Pyx_PyObject_CallOneArg(__pyx_t_2, Py_True);
  __Pyx_XDECREF(__pyx_t_1); __pyx_t_1 = 0;
  if (unlikely(!__pyx_t_3)) __PYX_ERR(5, 18, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;

  /* "src/python/grpcio/grpc/_cython/_cygrpc/credentials.pyx.pxi":19
 *   t = ForkManagedThread(target=cb_func, args=args)
 *   t.setDaemon(True)
 *   t.start()             # <<<<<<<<<<<<<<
 * 
 * async_callback_func = _spawn_callback_in_thread
 */
  __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_v_t, __pyx_n_s_start); if (unlikely(!__pyx_t_2)) __PYX_ERR(5, 19, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __pyx_t_1 = NULL;
  if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_2))) {
    __pyx_t_1 = PyMethod_GET_SELF(__pyx_t_2);
    if (likely(__pyx_t_1)) {
      PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_2);
      __Pyx_INCREF(__pyx_t_1);
      __Pyx_INCREF(function);
      __Pyx_DECREF_SET(__pyx_t_2, function);
    }
  }
  __pyx_t_3 = (__pyx_t_1) ? __Pyx_PyObject_CallOneArg(__pyx_t_2, __pyx_t_1) : __Pyx_PyObject_CallNoArg(__pyx_t_2);
  __Pyx_XDECREF(__pyx_t_1); __pyx_t_1 = 0;
  if (unlikely(!__pyx_t_3)) __PYX_ERR(5, 19, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;

  /* "src/python/grpcio/grpc/_cython/_cygrpc/credentials.pyx.pxi":16
 * 
 * 
 * def _spawn_callback_in_thread(cb_func, args):             # <<<<<<<<<<<<<<
 *   t = ForkManagedThread(target=cb_func, args=args)
 *   t.setDaemon(True)
 */

  /* function exit code */
  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_XDECREF(__pyx_t_3);
  __Pyx_AddTraceback("grpc._cython.cygrpc._spawn_callback_in_thread", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XDECREF(__pyx_v_t);
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "src/python/grpcio/grpc/_cython/_cygrpc/credentials.pyx.pxi":23
 * async_callback_func = _spawn_callback_in_thread
 * 
 * def set_async_callback_func(callback_func):             # <<<<<<<<<<<<<<
 *   global async_callback_func
 *   async_callback_func = callback_func
 */

/* Python wrapper */
static PyObject *__pyx_pw_4grpc_7_cython_6cygrpc_19set_async_callback_func(PyObject *__pyx_self, PyObject *__pyx_v_callback_func); /*proto*/
static PyMethodDef __pyx_mdef_4grpc_7_cython_6cygrpc_19set_async_callback_func = {"set_async_callback_func", (PyCFunction)__pyx_pw_4grpc_7_cython_6cygrpc_19set_async_callback_func, METH_O, 0};
static PyObject *__pyx_pw_4grpc_7_cython_6cygrpc_19set_async_callback_func(PyObject *__pyx_self, PyObject *__pyx_v_callback_func) {
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("set_async_callback_func (wrapper)", 0);
  __pyx_r = __pyx_pf_4grpc_7_cython_6cygrpc_18set_async_callback_func(__pyx_self, ((PyObject *)__pyx_v_callback_func));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_4grpc_7_cython_6cygrpc_18set_async_callback_func(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__pyx_v_callback_func) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("set_async_callback_func", 0);

  /* "src/python/grpcio/grpc/_cython/_cygrpc/credentials.pyx.pxi":25
 * def set_async_callback_func(callback_func):
 *   global async_callback_func
 *   async_callback_func = callback_func             # <<<<<<<<<<<<<<
 * 
 * def _spawn_callback_async(callback, args):
 */
  if (PyDict_SetItem(__pyx_d, __pyx_n_s_async_callback_func, __pyx_v_callback_func) < 0) __PYX_ERR(5, 25, __pyx_L1_error)

  /* "src/python/grpcio/grpc/_cython/_cygrpc/credentials.pyx.pxi":23
 * async_callback_func = _spawn_callback_in_thread
 * 
 * def set_async_callback_func(callback_func):             # <<<<<<<<<<<<<<
 *   global async_callback_func
 *   async_callback_func = callback_func
 */

  /* function exit code */
  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_AddTraceback("grpc._cython.cygrpc.set_async_callback_func", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "src/python/grpcio/grpc/_cython/_cygrpc/credentials.pyx.pxi":27
 *   async_callback_func = callback_func
 * 
 * def _spawn_callback_async(callback, args):             # <<<<<<<<<<<<<<
 *   async_callback_func(callback, args)
 * 
 */

/* Python wrapper */
static PyObject *__pyx_pw_4grpc_7_cython_6cygrpc_21_spawn_callback_async(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
static PyMethodDef __pyx_mdef_4grpc_7_cython_6cygrpc_21_spawn_callback_async = {"_spawn_callback_async", (PyCFunction)(void*)(PyCFunctionWithKeywords)__pyx_pw_4grpc_7_cython_6cygrpc_21_spawn_callback_async, METH_VARARGS|METH_KEYWORDS, 0};
static PyObject *__pyx_pw_4grpc_7_cython_6cygrpc_21_spawn_callback_async(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
  PyObject *__pyx_v_callback = 0;
  PyObject *__pyx_v_args = 0;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("_spawn_callback_async (wrapper)", 0);
  {
    static PyObject **__pyx_pyargnames[] = {&__pyx_n_s_callback,&__pyx_n_s_args,0};
    PyObject* values[2] = {0,0};
    if (unlikely(__pyx_kwds)) {
      Py_ssize_t kw_args;
      const Py_ssize_t pos_args = PyTuple_GET_SIZE(__pyx_args);
      switch (pos_args) {
        case  2: values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
        CYTHON_FALLTHROUGH;
        case  1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
        CYTHON_FALLTHROUGH;
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      kw_args = PyDict_Size(__pyx_kwds);
      switch (pos_args) {
        case  0:
        if (likely((values[0] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_callback)) != 0)) kw_args--;
        else goto __pyx_L5_argtuple_error;
        CYTHON_FALLTHROUGH;
        case  1:
        if (likely((values[1] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_args)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("_spawn_callback_async", 1, 2, 2, 1); __PYX_ERR(5, 27, __pyx_L3_error)
        }
      }
      if (unlikely(kw_args > 0)) {
        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "_spawn_callback_async") < 0)) __PYX_ERR(5, 27, __pyx_L3_error)
      }
    } else if (PyTuple_GET_SIZE(__pyx_args) != 2) {
      goto __pyx_L5_argtuple_error;
    } else {
      values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
      values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
    }
    __pyx_v_callback = values[0];
    __pyx_v_args = values[1];
  }
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("_spawn_callback_async", 1, 2, 2, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(5, 27, __pyx_L3_error)
  __pyx_L3_error:;
  __Pyx_AddTraceback("grpc._cython.cygrpc._spawn_callback_async", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  __pyx_r = __pyx_pf_4grpc_7_cython_6cygrpc_20_spawn_callback_async(__pyx_self, __pyx_v_callback, __pyx_v_args);

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_4grpc_7_cython_6cygrpc_20_spawn_callback_async(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__pyx_v_callback, PyObject *__pyx_v_args) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  PyObject *__pyx_t_2 = NULL;
  PyObject *__pyx_t_3 = NULL;
  int __pyx_t_4;
  PyObject *__pyx_t_5 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("_spawn_callback_async", 0);

  /* "src/python/grpcio/grpc/_cython/_cygrpc/credentials.pyx.pxi":28
 * 
 * def _spawn_callback_async(callback, args):
 *   async_callback_func(callback, args)             # <<<<<<<<<<<<<<
 * 
 * 
 */
  __Pyx_GetModuleGlobalName(__pyx_t_2, __pyx_n_s_async_callback_func); if (unlikely(!__pyx_t_2)) __PYX_ERR(5, 28, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __pyx_t_3 = NULL;
  __pyx_t_4 = 0;
  if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_2))) {
    __pyx_t_3 = PyMethod_GET_SELF(__pyx_t_2);
    if (likely(__pyx_t_3)) {
      PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_2);
      __Pyx_INCREF(__pyx_t_3);
      __Pyx_INCREF(function);
      __Pyx_DECREF_SET(__pyx_t_2, function);
      __pyx_t_4 = 1;
    }
  }
  #if CYTHON_FAST_PYCALL
  if (PyFunction_Check(__pyx_t_2)) {
    PyObject *__pyx_temp[3] = {__pyx_t_3, __pyx_v_callback, __pyx_v_args};
    __pyx_t_1 = __Pyx_PyFunction_FastCall(__pyx_t_2, __pyx_temp+1-__pyx_t_4, 2+__pyx_t_4); if (unlikely(!__pyx_t_1)) __PYX_ERR(5, 28, __pyx_L1_error)
    __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0;
    __Pyx_GOTREF(__pyx_t_1);
  } else
  #endif
  #if CYTHON_FAST_PYCCALL
  if (__Pyx_PyFastCFunction_Check(__pyx_t_2)) {
    PyObject *__pyx_temp[3] = {__pyx_t_3, __pyx_v_callback, __pyx_v_args};
    __pyx_t_1 = __Pyx_PyCFunction_FastCall(__pyx_t_2, __pyx_temp+1-__pyx_t_4, 2+__pyx_t_4); if (unlikely(!__pyx_t_1)) __PYX_ERR(5, 28, __pyx_L1_error)
    __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0;
    __Pyx_GOTREF(__pyx_t_1);
  } else
  #endif
  {
    __pyx_t_5 = PyTuple_New(2+__pyx_t_4); if (unlikely(!__pyx_t_5)) __PYX_ERR(5, 28, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_5);
    if (__pyx_t_3) {
      __Pyx_GIVEREF(__pyx_t_3); PyTuple_SET_ITEM(__pyx_t_5, 0, __pyx_t_3); __pyx_t_3 = NULL;
    }
    __Pyx_INCREF(__pyx_v_callback);
    __Pyx_GIVEREF(__pyx_v_callback);
    PyTuple_SET_ITEM(__pyx_t_5, 0+__pyx_t_4, __pyx_v_callback);
    __Pyx_INCREF(__pyx_v_args);
    __Pyx_GIVEREF(__pyx_v_args);
    PyTuple_SET_ITEM(__pyx_t_5, 1+__pyx_t_4, __pyx_v_args);
    __pyx_t_1 = __Pyx_PyObject_Call(__pyx_t_2, __pyx_t_5, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(5, 28, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_1);
    __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
  }
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;

  /* "src/python/grpcio/grpc/_cython/_cygrpc/credentials.pyx.pxi":27
 *   async_callback_func = callback_func
 * 
 * def _spawn_callback_async(callback, args):             # <<<<<<<<<<<<<<
 *   async_callback_func(callback, args)
 * 
 */

  /* function exit code */
  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_XDECREF(__pyx_t_3);
  __Pyx_XDECREF(__pyx_t_5);
  __Pyx_AddTraceback("grpc._cython.cygrpc._spawn_callback_async", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "src/python/grpcio/grpc/_cython/_cygrpc/credentials.pyx.pxi":33
 * cdef class CallCredentials:
 * 
 *   cdef grpc_call_credentials *c(self) except *:             # <<<<<<<<<<<<<<
 *     raise NotImplementedError()
 * 
 */

static grpc_call_credentials *__pyx_f_4grpc_7_cython_6cygrpc_15CallCredentials_c(CYTHON_UNUSED struct __pyx_obj_4grpc_7_cython_6cygrpc_CallCredentials *__pyx_v_self) {
  grpc_call_credentials *__pyx_r;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("c", 0);

  /* "src/python/grpcio/grpc/_cython/_cygrpc/credentials.pyx.pxi":34
 * 
 *   cdef grpc_call_credentials *c(self) except *:
 *     raise NotImplementedError()             # <<<<<<<<<<<<<<
 * 
 * 
 */
  __pyx_t_1 = __Pyx_PyObject_CallNoArg(__pyx_builtin_NotImplementedError); if (unlikely(!__pyx_t_1)) __PYX_ERR(5, 34, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_Raise(__pyx_t_1, 0, 0, 0);
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  __PYX_ERR(5, 34, __pyx_L1_error)

  /* "src/python/grpcio/grpc/_cython/_cygrpc/credentials.pyx.pxi":33
 * cdef class CallCredentials:
 * 
 *   cdef grpc_call_credentials *c(self) except *:             # <<<<<<<<<<<<<<
 *     raise NotImplementedError()
 * 
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_AddTraceback("grpc._cython.cygrpc.CallCredentials.c", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = 0;
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "(tree fragment)":1
 * def __reduce_cython__(self):             # <<<<<<<<<<<<<<
 *     raise TypeError("self.c_credentials cannot be converted to a Python object for pickling")
 * def __setstate_cython__(self, __pyx_state):
 */

/* Python wrapper */
static PyObject *__pyx_pw_4grpc_7_cython_6cygrpc_15CallCredentials_1__reduce_cython__(PyObject *__pyx_v_self, CYTHON_UNUSED PyObject *unused); /*proto*/
static PyObject *__pyx_pw_4grpc_7_cython_6cygrpc_15CallCredentials_1__reduce_cython__(PyObject *__pyx_v_self, CYTHON_UNUSED PyObject *unused) {
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__reduce_cython__ (wrapper)", 0);
  __pyx_r = __pyx_pf_4grpc_7_cython_6cygrpc_15CallCredentials___reduce_cython__(((struct __pyx_obj_4grpc_7_cython_6cygrpc_CallCredentials *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_4grpc_7_cython_6cygrpc_15CallCredentials___reduce_cython__(CYTHON_UNUSED struct __pyx_obj_4grpc_7_cython_6cygrpc_CallCredentials *__pyx_v_self) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("__reduce_cython__", 0);

  /* "(tree fragment)":2
 * def __reduce_cython__(self):
 *     raise TypeError("self.c_credentials cannot be converted to a Python object for pickling")             # <<<<<<<<<<<<<<
 * def __setstate_cython__(self, __pyx_state):
 *     raise TypeError("self.c_credentials cannot be converted to a Python object for pickling")
 */
  __pyx_t_1 = __Pyx_PyObject_Call(__pyx_builtin_TypeError, __pyx_tuple__34, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(11, 2, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_Raise(__pyx_t_1, 0, 0, 0);
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  __PYX_ERR(11, 2, __pyx_L1_error)

  /* "(tree fragment)":1
 * def __reduce_cython__(self):             # <<<<<<<<<<<<<<
 *     raise TypeError("self.c_credentials cannot be converted to a Python object for pickling")
 * def __setstate_cython__(self, __pyx_state):
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_AddTraceback("grpc._cython.cygrpc.CallCredentials.__reduce_cython__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "(tree fragment)":3
 * def __reduce_cython__(self):
 *     raise TypeError("self.c_credentials cannot be converted to a Python object for pickling")
 * def __setstate_cython__(self, __pyx_state):             # <<<<<<<<<<<<<<
 *     raise TypeError("self.c_credentials cannot be converted to a Python object for pickling")
 */

/* Python wrapper */
static PyObject *__pyx_pw_4grpc_7_cython_6cygrpc_15CallCredentials_3__setstate_cython__(PyObject *__pyx_v_self, PyObject *__pyx_v___pyx_state); /*proto*/
static PyObject *__pyx_pw_4grpc_7_cython_6cygrpc_15CallCredentials_3__setstate_cython__(PyObject *__pyx_v_self, PyObject *__pyx_v___pyx_state) {
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__setstate_cython__ (wrapper)", 0);
  __pyx_r = __pyx_pf_4grpc_7_cython_6cygrpc_15CallCredentials_2__setstate_cython__(((struct __pyx_obj_4grpc_7_cython_6cygrpc_CallCredentials *)__pyx_v_self), ((PyObject *)__pyx_v___pyx_state));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_4grpc_7_cython_6cygrpc_15CallCredentials_2__setstate_cython__(CYTHON_UNUSED struct __pyx_obj_4grpc_7_cython_6cygrpc_CallCredentials *__pyx_v_self, CYTHON_UNUSED PyObject *__pyx_v___pyx_state) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("__setstate_cython__", 0);

  /* "(tree fragment)":4
 *     raise TypeError("self.c_credentials cannot be converted to a Python object for pickling")
 * def __setstate_cython__(self, __pyx_state):
 *     raise TypeError("self.c_credentials cannot be converted to a Python object for pickling")             # <<<<<<<<<<<<<<
 */
  __pyx_t_1 = __Pyx_PyObject_Call(__pyx_builtin_TypeError, __pyx_tuple__35, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(11, 4, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_Raise(__pyx_t_1, 0, 0, 0);
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  __PYX_ERR(11, 4, __pyx_L1_error)

  /* "(tree fragment)":3
 * def __reduce_cython__(self):
 *     raise TypeError("self.c_credentials cannot be converted to a Python object for pickling")
 * def __setstate_cython__(self, __pyx_state):             # <<<<<<<<<<<<<<
 *     raise TypeError("self.c_credentials cannot be converted to a Python object for pickling")
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_AddTraceback("grpc._cython.cygrpc.CallCredentials.__setstate_cython__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "src/python/grpcio/grpc/_cython/_cygrpc/credentials.pyx.pxi":47
 *   cdef size_t metadata_count
 *   cdef grpc_metadata *c_metadata
 *   def callback(metadata, grpc_status_code status, bytes error_details):             # <<<<<<<<<<<<<<
 *     cdef char* c_error_details = NULL
 *     if error_details is not None:
 */

/* Python wrapper */
static PyObject *__pyx_pw_4grpc_7_cython_6cygrpc_13_get_metadata_1callback(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
static PyMethodDef __pyx_mdef_4grpc_7_cython_6cygrpc_13_get_metadata_1callback = {"callback", (PyCFunction)(void*)(PyCFunctionWithKeywords)__pyx_pw_4grpc_7_cython_6cygrpc_13_get_metadata_1callback, METH_VARARGS|METH_KEYWORDS, 0};
static PyObject *__pyx_pw_4grpc_7_cython_6cygrpc_13_get_metadata_1callback(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
  PyObject *__pyx_v_metadata = 0;
  grpc_status_code __pyx_v_status;
  PyObject *__pyx_v_error_details = 0;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("callback (wrapper)", 0);
  {
    static PyObject **__pyx_pyargnames[] = {&__pyx_n_s_metadata,&__pyx_n_s_status,&__pyx_n_s_error_details,0};
    PyObject* values[3] = {0,0,0};
    if (unlikely(__pyx_kwds)) {
      Py_ssize_t kw_args;
      const Py_ssize_t pos_args = PyTuple_GET_SIZE(__pyx_args);
      switch (pos_args) {
        case  3: values[2] = PyTuple_GET_ITEM(__pyx_args, 2);
        CYTHON_FALLTHROUGH;
        case  2: values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
        CYTHON_FALLTHROUGH;
        case  1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
        CYTHON_FALLTHROUGH;
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      kw_args = PyDict_Size(__pyx_kwds);
      switch (pos_args) {
        case  0:
        if (likely((values[0] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_metadata)) != 0)) kw_args--;
        else goto __pyx_L5_argtuple_error;
        CYTHON_FALLTHROUGH;
        case  1:
        if (likely((values[1] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_status)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("callback", 1, 3, 3, 1); __PYX_ERR(5, 47, __pyx_L3_error)
        }
        CYTHON_FALLTHROUGH;
        case  2:
        if (likely((values[2] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_error_details)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("callback", 1, 3, 3, 2); __PYX_ERR(5, 47, __pyx_L3_error)
        }
      }
      if (unlikely(kw_args > 0)) {
        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "callback") < 0)) __PYX_ERR(5, 47, __pyx_L3_error)
      }
    } else if (PyTuple_GET_SIZE(__pyx_args) != 3) {
      goto __pyx_L5_argtuple_error;
    } else {
      values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
      values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
      values[2] = PyTuple_GET_ITEM(__pyx_args, 2);
    }
    __pyx_v_metadata = values[0];
    __pyx_v_status = ((grpc_status_code)__Pyx_PyInt_As_grpc_status_code(values[1])); if (unlikely(PyErr_Occurred())) __PYX_ERR(5, 47, __pyx_L3_error)
    __pyx_v_error_details = ((PyObject*)values[2]);
  }
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("callback", 1, 3, 3, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(5, 47, __pyx_L3_error)
  __pyx_L3_error:;
  __Pyx_AddTraceback("grpc._cython.cygrpc._get_metadata.callback", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_error_details), (&PyBytes_Type), 1, "error_details", 1))) __PYX_ERR(5, 47, __pyx_L1_error)
  __pyx_r = __pyx_pf_4grpc_7_cython_6cygrpc_13_get_metadata_callback(__pyx_self, __pyx_v_metadata, __pyx_v_status, __pyx_v_error_details);

  /* function exit code */
  goto __pyx_L0;
  __pyx_L1_error:;
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_4grpc_7_cython_6cygrpc_13_get_metadata_callback(PyObject *__pyx_self, PyObject *__pyx_v_metadata, grpc_status_code __pyx_v_status, PyObject *__pyx_v_error_details) {
  struct __pyx_obj_4grpc_7_cython_6cygrpc___pyx_scope_struct_4___pyx_f_4grpc_7_cython_6cygrpc__get_metadata *__pyx_cur_scope;
  struct __pyx_obj_4grpc_7_cython_6cygrpc___pyx_scope_struct_4___pyx_f_4grpc_7_cython_6cygrpc__get_metadata *__pyx_outer_scope;
  char *__pyx_v_c_error_details;
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  int __pyx_t_1;
  int __pyx_t_2;
  char *__pyx_t_3;
  PyObject *__pyx_t_4 = NULL;
  PyObject *__pyx_t_5 = NULL;
  PyObject *__pyx_t_6 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("callback", 0);
  __pyx_outer_scope = (struct __pyx_obj_4grpc_7_cython_6cygrpc___pyx_scope_struct_4___pyx_f_4grpc_7_cython_6cygrpc__get_metadata *) __Pyx_CyFunction_GetClosure(__pyx_self);
  __pyx_cur_scope = __pyx_outer_scope;

  /* "src/python/grpcio/grpc/_cython/_cygrpc/credentials.pyx.pxi":48
 *   cdef grpc_metadata *c_metadata
 *   def callback(metadata, grpc_status_code status, bytes error_details):
 *     cdef char* c_error_details = NULL             # <<<<<<<<<<<<<<
 *     if error_details is not None:
 *       c_error_details = <char*> error_details
 */
  __pyx_v_c_error_details = NULL;

  /* "src/python/grpcio/grpc/_cython/_cygrpc/credentials.pyx.pxi":49
 *   def callback(metadata, grpc_status_code status, bytes error_details):
 *     cdef char* c_error_details = NULL
 *     if error_details is not None:             # <<<<<<<<<<<<<<
 *       c_error_details = <char*> error_details
 *     if status == StatusCode.ok:
 */
  __pyx_t_1 = (__pyx_v_error_details != ((PyObject*)Py_None));
  __pyx_t_2 = (__pyx_t_1 != 0);
  if (__pyx_t_2) {

    /* "src/python/grpcio/grpc/_cython/_cygrpc/credentials.pyx.pxi":50
 *     cdef char* c_error_details = NULL
 *     if error_details is not None:
 *       c_error_details = <char*> error_details             # <<<<<<<<<<<<<<
 *     if status == StatusCode.ok:
 *       _store_c_metadata(metadata, &c_metadata, &metadata_count)
 */
    if (unlikely(__pyx_v_error_details == Py_None)) {
      PyErr_SetString(PyExc_TypeError, "expected bytes, NoneType found");
      __PYX_ERR(5, 50, __pyx_L1_error)
    }
    __pyx_t_3 = __Pyx_PyBytes_AsWritableString(__pyx_v_error_details); if (unlikely((!__pyx_t_3) && PyErr_Occurred())) __PYX_ERR(5, 50, __pyx_L1_error)
    __pyx_v_c_error_details = ((char *)__pyx_t_3);

    /* "src/python/grpcio/grpc/_cython/_cygrpc/credentials.pyx.pxi":49
 *   def callback(metadata, grpc_status_code status, bytes error_details):
 *     cdef char* c_error_details = NULL
 *     if error_details is not None:             # <<<<<<<<<<<<<<
 *       c_error_details = <char*> error_details
 *     if status == StatusCode.ok:
 */
  }

  /* "src/python/grpcio/grpc/_cython/_cygrpc/credentials.pyx.pxi":51
 *     if error_details is not None:
 *       c_error_details = <char*> error_details
 *     if status == StatusCode.ok:             # <<<<<<<<<<<<<<
 *       _store_c_metadata(metadata, &c_metadata, &metadata_count)
 *       with nogil:
 */
  __pyx_t_4 = __Pyx_PyInt_From_grpc_status_code(__pyx_v_status); if (unlikely(!__pyx_t_4)) __PYX_ERR(5, 51, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_4);
  __Pyx_GetModuleGlobalName(__pyx_t_5, __pyx_n_s_StatusCode); if (unlikely(!__pyx_t_5)) __PYX_ERR(5, 51, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_5);
  __pyx_t_6 = __Pyx_PyObject_GetAttrStr(__pyx_t_5, __pyx_n_s_ok); if (unlikely(!__pyx_t_6)) __PYX_ERR(5, 51, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_6);
  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
  __pyx_t_5 = PyObject_RichCompare(__pyx_t_4, __pyx_t_6, Py_EQ); __Pyx_XGOTREF(__pyx_t_5); if (unlikely(!__pyx_t_5)) __PYX_ERR(5, 51, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
  __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
  __pyx_t_2 = __Pyx_PyObject_IsTrue(__pyx_t_5); if (unlikely(__pyx_t_2 < 0)) __PYX_ERR(5, 51, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
  if (__pyx_t_2) {

    /* "src/python/grpcio/grpc/_cython/_cygrpc/credentials.pyx.pxi":52
 *       c_error_details = <char*> error_details
 *     if status == StatusCode.ok:
 *       _store_c_metadata(metadata, &c_metadata, &metadata_count)             # <<<<<<<<<<<<<<
 *       with nogil:
 *         cb(user_data, c_metadata, metadata_count, status, NULL)
 */
    __pyx_f_4grpc_7_cython_6cygrpc__store_c_metadata(__pyx_v_metadata, (&__pyx_cur_scope->__pyx_v_c_metadata), (&__pyx_cur_scope->__pyx_v_metadata_count)); if (unlikely(PyErr_Occurred())) __PYX_ERR(5, 52, __pyx_L1_error)

    /* "src/python/grpcio/grpc/_cython/_cygrpc/credentials.pyx.pxi":53
 *     if status == StatusCode.ok:
 *       _store_c_metadata(metadata, &c_metadata, &metadata_count)
 *       with nogil:             # <<<<<<<<<<<<<<
 *         cb(user_data, c_metadata, metadata_count, status, NULL)
 *       _release_c_metadata(c_metadata, metadata_count)
 */
    {
        #ifdef WITH_THREAD
        PyThreadState *_save;
        Py_UNBLOCK_THREADS
        __Pyx_FastGIL_Remember();
        #endif
        /*try:*/ {

          /* "src/python/grpcio/grpc/_cython/_cygrpc/credentials.pyx.pxi":54
 *       _store_c_metadata(metadata, &c_metadata, &metadata_count)
 *       with nogil:
 *         cb(user_data, c_metadata, metadata_count, status, NULL)             # <<<<<<<<<<<<<<
 *       _release_c_metadata(c_metadata, metadata_count)
 *     else:
 */
          __pyx_cur_scope->__pyx_v_cb(__pyx_cur_scope->__pyx_v_user_data, __pyx_cur_scope->__pyx_v_c_metadata, __pyx_cur_scope->__pyx_v_metadata_count, __pyx_v_status, NULL);
        }

        /* "src/python/grpcio/grpc/_cython/_cygrpc/credentials.pyx.pxi":53
 *     if status == StatusCode.ok:
 *       _store_c_metadata(metadata, &c_metadata, &metadata_count)
 *       with nogil:             # <<<<<<<<<<<<<<
 *         cb(user_data, c_metadata, metadata_count, status, NULL)
 *       _release_c_metadata(c_metadata, metadata_count)
 */
        /*finally:*/ {
          /*normal exit:*/{
            #ifdef WITH_THREAD
            __Pyx_FastGIL_Forget();
            Py_BLOCK_THREADS
            #endif
            goto __pyx_L7;
          }
          __pyx_L7:;
        }
    }

    /* "src/python/grpcio/grpc/_cython/_cygrpc/credentials.pyx.pxi":55
 *       with nogil:
 *         cb(user_data, c_metadata, metadata_count, status, NULL)
 *       _release_c_metadata(c_metadata, metadata_count)             # <<<<<<<<<<<<<<
 *     else:
 *       with nogil:
 */
    __pyx_f_4grpc_7_cython_6cygrpc__release_c_metadata(__pyx_cur_scope->__pyx_v_c_metadata, __pyx_cur_scope->__pyx_v_metadata_count); if (unlikely(PyErr_Occurred())) __PYX_ERR(5, 55, __pyx_L1_error)

    /* "src/python/grpcio/grpc/_cython/_cygrpc/credentials.pyx.pxi":51
 *     if error_details is not None:
 *       c_error_details = <char*> error_details
 *     if status == StatusCode.ok:             # <<<<<<<<<<<<<<
 *       _store_c_metadata(metadata, &c_metadata, &metadata_count)
 *       with nogil:
 */
    goto __pyx_L4;
  }

  /* "src/python/grpcio/grpc/_cython/_cygrpc/credentials.pyx.pxi":57
 *       _release_c_metadata(c_metadata, metadata_count)
 *     else:
 *       with nogil:             # <<<<<<<<<<<<<<
 *         cb(user_data, NULL, 0, status, c_error_details)
 *   args = context.service_url, context.method_name, callback,
 */
  /*else*/ {
    {
        #ifdef WITH_THREAD
        PyThreadState *_save;
        Py_UNBLOCK_THREADS
        __Pyx_FastGIL_Remember();
        #endif
        /*try:*/ {

          /* "src/python/grpcio/grpc/_cython/_cygrpc/credentials.pyx.pxi":58
 *     else:
 *       with nogil:
 *         cb(user_data, NULL, 0, status, c_error_details)             # <<<<<<<<<<<<<<
 *   args = context.service_url, context.method_name, callback,
 *   plugin = <object>state
 */
          __pyx_cur_scope->__pyx_v_cb(__pyx_cur_scope->__pyx_v_user_data, NULL, 0, __pyx_v_status, __pyx_v_c_error_details);
        }

        /* "src/python/grpcio/grpc/_cython/_cygrpc/credentials.pyx.pxi":57
 *       _release_c_metadata(c_metadata, metadata_count)
 *     else:
 *       with nogil:             # <<<<<<<<<<<<<<
 *         cb(user_data, NULL, 0, status, c_error_details)
 *   args = context.service_url, context.method_name, callback,
 */
        /*finally:*/ {
          /*normal exit:*/{
            #ifdef WITH_THREAD
            __Pyx_FastGIL_Forget();
            Py_BLOCK_THREADS
            #endif
            goto __pyx_L10;
          }
          __pyx_L10:;
        }
    }
  }
  __pyx_L4:;

  /* "src/python/grpcio/grpc/_cython/_cygrpc/credentials.pyx.pxi":47
 *   cdef size_t metadata_count
 *   cdef grpc_metadata *c_metadata
 *   def callback(metadata, grpc_status_code status, bytes error_details):             # <<<<<<<<<<<<<<
 *     cdef char* c_error_details = NULL
 *     if error_details is not None:
 */

  /* function exit code */
  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_4);
  __Pyx_XDECREF(__pyx_t_5);
  __Pyx_XDECREF(__pyx_t_6);
  __Pyx_AddTraceback("grpc._cython.cygrpc._get_metadata.callback", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "src/python/grpcio/grpc/_cython/_cygrpc/credentials.pyx.pxi":37
 * 
 * 
 * cdef int _get_metadata(void *state,             # <<<<<<<<<<<<<<
 *                        grpc_auth_metadata_context context,
 *                        grpc_credentials_plugin_metadata_cb cb,
 */

static int __pyx_f_4grpc_7_cython_6cygrpc__get_metadata(void *__pyx_v_state, grpc_auth_metadata_context __pyx_v_context, grpc_credentials_plugin_metadata_cb __pyx_v_cb, void *__pyx_v_user_data, CYTHON_UNUSED grpc_metadata *__pyx_v_creds_md, CYTHON_UNUSED size_t *__pyx_v_num_creds_md, CYTHON_UNUSED grpc_status_code *__pyx_v_status, CYTHON_UNUSED char const **__pyx_v_error_details) {
  struct __pyx_obj_4grpc_7_cython_6cygrpc___pyx_scope_struct_4___pyx_f_4grpc_7_cython_6cygrpc__get_metadata *__pyx_cur_scope;
  PyObject *__pyx_v_callback = 0;
  PyObject *__pyx_v_args = NULL;
  PyObject *__pyx_v_plugin = NULL;
  int __pyx_r;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  PyObject *__pyx_t_2 = NULL;
  PyObject *__pyx_t_3 = NULL;
  int __pyx_t_4;
  int __pyx_t_5;
  PyObject *__pyx_t_6 = NULL;
  int __pyx_t_7;
  PyObject *__pyx_t_8 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  #ifdef WITH_THREAD
  PyGILState_STATE __pyx_gilstate_save = __Pyx_PyGILState_Ensure();
  #endif
  __Pyx_RefNannySetupContext("_get_metadata", 0);
  __pyx_cur_scope = (struct __pyx_obj_4grpc_7_cython_6cygrpc___pyx_scope_struct_4___pyx_f_4grpc_7_cython_6cygrpc__get_metadata *)__pyx_tp_new_4grpc_7_cython_6cygrpc___pyx_scope_struct_4___pyx_f_4grpc_7_cython_6cygrpc__get_metadata(__pyx_ptype_4grpc_7_cython_6cygrpc___pyx_scope_struct_4___pyx_f_4grpc_7_cython_6cygrpc__get_metadata, __pyx_empty_tuple, NULL);
  if (unlikely(!__pyx_cur_scope)) {
    __pyx_cur_scope = ((struct __pyx_obj_4grpc_7_cython_6cygrpc___pyx_scope_struct_4___pyx_f_4grpc_7_cython_6cygrpc__get_metadata *)Py_None);
    __Pyx_INCREF(Py_None);
    __PYX_ERR(5, 37, __pyx_L1_error)
  } else {
    __Pyx_GOTREF(__pyx_cur_scope);
  }
  __pyx_cur_scope->__pyx_v_cb = __pyx_v_cb;
  __pyx_cur_scope->__pyx_v_user_data = __pyx_v_user_data;

  /* "src/python/grpcio/grpc/_cython/_cygrpc/credentials.pyx.pxi":47
 *   cdef size_t metadata_count
 *   cdef grpc_metadata *c_metadata
 *   def callback(metadata, grpc_status_code status, bytes error_details):             # <<<<<<<<<<<<<<
 *     cdef char* c_error_details = NULL
 *     if error_details is not None:
 */
  __pyx_t_1 = __Pyx_CyFunction_New(&__pyx_mdef_4grpc_7_cython_6cygrpc_13_get_metadata_1callback, 0, __pyx_n_s_get_metadata_locals_callback, ((PyObject*)__pyx_cur_scope), __pyx_n_s_grpc__cython_cygrpc, __pyx_d, ((PyObject *)__pyx_codeobj__37)); if (unlikely(!__pyx_t_1)) __PYX_ERR(5, 47, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_v_callback = __pyx_t_1;
  __pyx_t_1 = 0;

  /* "src/python/grpcio/grpc/_cython/_cygrpc/credentials.pyx.pxi":59
 *       with nogil:
 *         cb(user_data, NULL, 0, status, c_error_details)
 *   args = context.service_url, context.method_name, callback,             # <<<<<<<<<<<<<<
 *   plugin = <object>state
 *   if plugin._stored_ctx is not None:
 */
  __pyx_t_1 = __Pyx_PyBytes_FromString(__pyx_v_context.service_url); if (unlikely(!__pyx_t_1)) __PYX_ERR(5, 59, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_t_2 = __Pyx_PyBytes_FromString(__pyx_v_context.method_name); if (unlikely(!__pyx_t_2)) __PYX_ERR(5, 59, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __pyx_t_3 = PyTuple_New(3); if (unlikely(!__pyx_t_3)) __PYX_ERR(5, 59, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  __Pyx_GIVEREF(__pyx_t_1);
  PyTuple_SET_ITEM(__pyx_t_3, 0, __pyx_t_1);
  __Pyx_GIVEREF(__pyx_t_2);
  PyTuple_SET_ITEM(__pyx_t_3, 1, __pyx_t_2);
  __Pyx_INCREF(__pyx_v_callback);
  __Pyx_GIVEREF(__pyx_v_callback);
  PyTuple_SET_ITEM(__pyx_t_3, 2, __pyx_v_callback);
  __pyx_t_1 = 0;
  __pyx_t_2 = 0;
  __pyx_v_args = ((PyObject*)__pyx_t_3);
  __pyx_t_3 = 0;

  /* "src/python/grpcio/grpc/_cython/_cygrpc/credentials.pyx.pxi":60
 *         cb(user_data, NULL, 0, status, c_error_details)
 *   args = context.service_url, context.method_name, callback,
 *   plugin = <object>state             # <<<<<<<<<<<<<<
 *   if plugin._stored_ctx is not None:
 *     plugin._stored_ctx.copy().run(_spawn_callback_async, plugin, args)
 */
  __pyx_t_3 = ((PyObject *)__pyx_v_state);
  __Pyx_INCREF(__pyx_t_3);
  __pyx_v_plugin = __pyx_t_3;
  __pyx_t_3 = 0;

  /* "src/python/grpcio/grpc/_cython/_cygrpc/credentials.pyx.pxi":61
 *   args = context.service_url, context.method_name, callback,
 *   plugin = <object>state
 *   if plugin._stored_ctx is not None:             # <<<<<<<<<<<<<<
 *     plugin._stored_ctx.copy().run(_spawn_callback_async, plugin, args)
 *   else:
 */
  __pyx_t_3 = __Pyx_PyObject_GetAttrStr(__pyx_v_plugin, __pyx_n_s_stored_ctx); if (unlikely(!__pyx_t_3)) __PYX_ERR(5, 61, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  __pyx_t_4 = (__pyx_t_3 != Py_None);
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
  __pyx_t_5 = (__pyx_t_4 != 0);
  if (__pyx_t_5) {

    /* "src/python/grpcio/grpc/_cython/_cygrpc/credentials.pyx.pxi":62
 *   plugin = <object>state
 *   if plugin._stored_ctx is not None:
 *     plugin._stored_ctx.copy().run(_spawn_callback_async, plugin, args)             # <<<<<<<<<<<<<<
 *   else:
 *     _spawn_callback_async(<object>state, args)
 */
    __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_v_plugin, __pyx_n_s_stored_ctx); if (unlikely(!__pyx_t_1)) __PYX_ERR(5, 62, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_1);
    __pyx_t_6 = __Pyx_PyObject_GetAttrStr(__pyx_t_1, __pyx_n_s_copy); if (unlikely(!__pyx_t_6)) __PYX_ERR(5, 62, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_6);
    __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
    __pyx_t_1 = NULL;
    if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_6))) {
      __pyx_t_1 = PyMethod_GET_SELF(__pyx_t_6);
      if (likely(__pyx_t_1)) {
        PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_6);
        __Pyx_INCREF(__pyx_t_1);
        __Pyx_INCREF(function);
        __Pyx_DECREF_SET(__pyx_t_6, function);
      }
    }
    __pyx_t_2 = (__pyx_t_1) ? __Pyx_PyObject_CallOneArg(__pyx_t_6, __pyx_t_1) : __Pyx_PyObject_CallNoArg(__pyx_t_6);
    __Pyx_XDECREF(__pyx_t_1); __pyx_t_1 = 0;
    if (unlikely(!__pyx_t_2)) __PYX_ERR(5, 62, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_2);
    __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
    __pyx_t_6 = __Pyx_PyObject_GetAttrStr(__pyx_t_2, __pyx_n_s_run); if (unlikely(!__pyx_t_6)) __PYX_ERR(5, 62, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_6);
    __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
    __Pyx_GetModuleGlobalName(__pyx_t_2, __pyx_n_s_spawn_callback_async); if (unlikely(!__pyx_t_2)) __PYX_ERR(5, 62, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_2);
    __pyx_t_1 = NULL;
    __pyx_t_7 = 0;
    if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_6))) {
      __pyx_t_1 = PyMethod_GET_SELF(__pyx_t_6);
      if (likely(__pyx_t_1)) {
        PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_6);
        __Pyx_INCREF(__pyx_t_1);
        __Pyx_INCREF(function);
        __Pyx_DECREF_SET(__pyx_t_6, function);
        __pyx_t_7 = 1;
      }
    }
    #if CYTHON_FAST_PYCALL
    if (PyFunction_Check(__pyx_t_6)) {
      PyObject *__pyx_temp[4] = {__pyx_t_1, __pyx_t_2, __pyx_v_plugin, __pyx_v_args};
      __pyx_t_3 = __Pyx_PyFunction_FastCall(__pyx_t_6, __pyx_temp+1-__pyx_t_7, 3+__pyx_t_7); if (unlikely(!__pyx_t_3)) __PYX_ERR(5, 62, __pyx_L1_error)
      __Pyx_XDECREF(__pyx_t_1); __pyx_t_1 = 0;
      __Pyx_GOTREF(__pyx_t_3);
      __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
    } else
    #endif
    #if CYTHON_FAST_PYCCALL
    if (__Pyx_PyFastCFunction_Check(__pyx_t_6)) {
      PyObject *__pyx_temp[4] = {__pyx_t_1, __pyx_t_2, __pyx_v_plugin, __pyx_v_args};
      __pyx_t_3 = __Pyx_PyCFunction_FastCall(__pyx_t_6, __pyx_temp+1-__pyx_t_7, 3+__pyx_t_7); if (unlikely(!__pyx_t_3)) __PYX_ERR(5, 62, __pyx_L1_error)
      __Pyx_XDECREF(__pyx_t_1); __pyx_t_1 = 0;
      __Pyx_GOTREF(__pyx_t_3);
      __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
    } else
    #endif
    {
      __pyx_t_8 = PyTuple_New(3+__pyx_t_7); if (unlikely(!__pyx_t_8)) __PYX_ERR(5, 62, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_8);
      if (__pyx_t_1) {
        __Pyx_GIVEREF(__pyx_t_1); PyTuple_SET_ITEM(__pyx_t_8, 0, __pyx_t_1); __pyx_t_1 = NULL;
      }
      __Pyx_GIVEREF(__pyx_t_2);
      PyTuple_SET_ITEM(__pyx_t_8, 0+__pyx_t_7, __pyx_t_2);
      __Pyx_INCREF(__pyx_v_plugin);
      __Pyx_GIVEREF(__pyx_v_plugin);
      PyTuple_SET_ITEM(__pyx_t_8, 1+__pyx_t_7, __pyx_v_plugin);
      __Pyx_INCREF(__pyx_v_args);
      __Pyx_GIVEREF(__pyx_v_args);
      PyTuple_SET_ITEM(__pyx_t_8, 2+__pyx_t_7, __pyx_v_args);
      __pyx_t_2 = 0;
      __pyx_t_3 = __Pyx_PyObject_Call(__pyx_t_6, __pyx_t_8, NULL); if (unlikely(!__pyx_t_3)) __PYX_ERR(5, 62, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_3);
      __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
    }
    __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
    __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;

    /* "src/python/grpcio/grpc/_cython/_cygrpc/credentials.pyx.pxi":61
 *   args = context.service_url, context.method_name, callback,
 *   plugin = <object>state
 *   if plugin._stored_ctx is not None:             # <<<<<<<<<<<<<<
 *     plugin._stored_ctx.copy().run(_spawn_callback_async, plugin, args)
 *   else:
 */
    goto __pyx_L3;
  }

  /* "src/python/grpcio/grpc/_cython/_cygrpc/credentials.pyx.pxi":64
 *     plugin._stored_ctx.copy().run(_spawn_callback_async, plugin, args)
 *   else:
 *     _spawn_callback_async(<object>state, args)             # <<<<<<<<<<<<<<
 *   return 0  # Asynchronous return
 * 
 */
  /*else*/ {
    __Pyx_GetModuleGlobalName(__pyx_t_6, __pyx_n_s_spawn_callback_async); if (unlikely(!__pyx_t_6)) __PYX_ERR(5, 64, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_6);
    __pyx_t_8 = NULL;
    __pyx_t_7 = 0;
    if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_6))) {
      __pyx_t_8 = PyMethod_GET_SELF(__pyx_t_6);
      if (likely(__pyx_t_8)) {
        PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_6);
        __Pyx_INCREF(__pyx_t_8);
        __Pyx_INCREF(function);
        __Pyx_DECREF_SET(__pyx_t_6, function);
        __pyx_t_7 = 1;
      }
    }
    #if CYTHON_FAST_PYCALL
    if (PyFunction_Check(__pyx_t_6)) {
      PyObject *__pyx_temp[3] = {__pyx_t_8, ((PyObject *)__pyx_v_state), __pyx_v_args};
      __pyx_t_3 = __Pyx_PyFunction_FastCall(__pyx_t_6, __pyx_temp+1-__pyx_t_7, 2+__pyx_t_7); if (unlikely(!__pyx_t_3)) __PYX_ERR(5, 64, __pyx_L1_error)
      __Pyx_XDECREF(__pyx_t_8); __pyx_t_8 = 0;
      __Pyx_GOTREF(__pyx_t_3);
    } else
    #endif
    #if CYTHON_FAST_PYCCALL
    if (__Pyx_PyFastCFunction_Check(__pyx_t_6)) {
      PyObject *__pyx_temp[3] = {__pyx_t_8, ((PyObject *)__pyx_v_state), __pyx_v_args};
      __pyx_t_3 = __Pyx_PyCFunction_FastCall(__pyx_t_6, __pyx_temp+1-__pyx_t_7, 2+__pyx_t_7); if (unlikely(!__pyx_t_3)) __PYX_ERR(5, 64, __pyx_L1_error)
      __Pyx_XDECREF(__pyx_t_8); __pyx_t_8 = 0;
      __Pyx_GOTREF(__pyx_t_3);
    } else
    #endif
    {
      __pyx_t_2 = PyTuple_New(2+__pyx_t_7); if (unlikely(!__pyx_t_2)) __PYX_ERR(5, 64, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_2);
      if (__pyx_t_8) {
        __Pyx_GIVEREF(__pyx_t_8); PyTuple_SET_ITEM(__pyx_t_2, 0, __pyx_t_8); __pyx_t_8 = NULL;
      }
      __Pyx_INCREF(((PyObject *)__pyx_v_state));
      __Pyx_GIVEREF(((PyObject *)__pyx_v_state));
      PyTuple_SET_ITEM(__pyx_t_2, 0+__pyx_t_7, ((PyObject *)__pyx_v_state));
      __Pyx_INCREF(__pyx_v_args);
      __Pyx_GIVEREF(__pyx_v_args);
      PyTuple_SET_ITEM(__pyx_t_2, 1+__pyx_t_7, __pyx_v_args);
      __pyx_t_3 = __Pyx_PyObject_Call(__pyx_t_6, __pyx_t_2, NULL); if (unlikely(!__pyx_t_3)) __PYX_ERR(5, 64, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_3);
      __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
    }
    __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
    __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
  }
  __pyx_L3:;

  /* "src/python/grpcio/grpc/_cython/_cygrpc/credentials.pyx.pxi":65
 *   else:
 *     _spawn_callback_async(<object>state, args)
 *   return 0  # Asynchronous return             # <<<<<<<<<<<<<<
 * 
 * 
 */
  __pyx_r = 0;
  goto __pyx_L0;

  /* "src/python/grpcio/grpc/_cython/_cygrpc/credentials.pyx.pxi":37
 * 
 * 
 * cdef int _get_metadata(void *state,             # <<<<<<<<<<<<<<
 *                        grpc_auth_metadata_context context,
 *                        grpc_credentials_plugin_metadata_cb cb,
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_XDECREF(__pyx_t_3);
  __Pyx_XDECREF(__pyx_t_6);
  __Pyx_XDECREF(__pyx_t_8);
  __Pyx_AddTraceback("grpc._cython.cygrpc._get_metadata", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = -1;
  __pyx_L0:;
  __Pyx_XDECREF(__pyx_v_callback);
  __Pyx_XDECREF(__pyx_v_args);
  __Pyx_XDECREF(__pyx_v_plugin);
  __Pyx_DECREF(((PyObject *)__pyx_cur_scope));
  __Pyx_RefNannyFinishContext();
  #ifdef WITH_THREAD
  __Pyx_PyGILState_Release(__pyx_gilstate_save);
  #endif
  return __pyx_r;
}

/* "src/python/grpcio/grpc/_cython/_cygrpc/credentials.pyx.pxi":68
 * 
 * 
 * cdef void _destroy(void *state) except * with gil:             # <<<<<<<<<<<<<<
 *   cpython.Py_DECREF(<object>state)
 *   grpc_shutdown()
 */

static void __pyx_f_4grpc_7_cython_6cygrpc__destroy(void *__pyx_v_state) {
  __Pyx_RefNannyDeclarations
  #ifdef WITH_THREAD
  PyGILState_STATE __pyx_gilstate_save = __Pyx_PyGILState_Ensure();
  #endif
  __Pyx_RefNannySetupContext("_destroy", 0);

  /* "src/python/grpcio/grpc/_cython/_cygrpc/credentials.pyx.pxi":69
 * 
 * cdef void _destroy(void *state) except * with gil:
 *   cpython.Py_DECREF(<object>state)             # <<<<<<<<<<<<<<
 *   grpc_shutdown()
 * 
 */
  Py_DECREF(((PyObject *)__pyx_v_state));

  /* "src/python/grpcio/grpc/_cython/_cygrpc/credentials.pyx.pxi":70
 * cdef void _destroy(void *state) except * with gil:
 *   cpython.Py_DECREF(<object>state)
 *   grpc_shutdown()             # <<<<<<<<<<<<<<
 * 
 * 
 */
  grpc_shutdown();

  /* "src/python/grpcio/grpc/_cython/_cygrpc/credentials.pyx.pxi":68
 * 
 * 
 * cdef void _destroy(void *state) except * with gil:             # <<<<<<<<<<<<<<
 *   cpython.Py_DECREF(<object>state)
 *   grpc_shutdown()
 */

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  #ifdef WITH_THREAD
  __Pyx_PyGILState_Release(__pyx_gilstate_save);
  #endif
}

/* "src/python/grpcio/grpc/_cython/_cygrpc/credentials.pyx.pxi":75
 * cdef class MetadataPluginCallCredentials(CallCredentials):
 * 
 *   def __cinit__(self, metadata_plugin, name):             # <<<<<<<<<<<<<<
 *     self._metadata_plugin = metadata_plugin
 *     self._name = name
 */

/* Python wrapper */
static int __pyx_pw_4grpc_7_cython_6cygrpc_29MetadataPluginCallCredentials_1__cinit__(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
static int __pyx_pw_4grpc_7_cython_6cygrpc_29MetadataPluginCallCredentials_1__cinit__(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
  PyObject *__pyx_v_metadata_plugin = 0;
  PyObject *__pyx_v_name = 0;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  int __pyx_r;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__cinit__ (wrapper)", 0);
  {
    static PyObject **__pyx_pyargnames[] = {&__pyx_n_s_metadata_plugin,&__pyx_n_s_name,0};
    PyObject* values[2] = {0,0};
    if (unlikely(__pyx_kwds)) {
      Py_ssize_t kw_args;
      const Py_ssize_t pos_args = PyTuple_GET_SIZE(__pyx_args);
      switch (pos_args) {
        case  2: values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
        CYTHON_FALLTHROUGH;
        case  1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
        CYTHON_FALLTHROUGH;
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      kw_args = PyDict_Size(__pyx_kwds);
      switch (pos_args) {
        case  0:
        if (likely((values[0] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_metadata_plugin)) != 0)) kw_args--;
        else goto __pyx_L5_argtuple_error;
        CYTHON_FALLTHROUGH;
        case  1:
        if (likely((values[1] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_name)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("__cinit__", 1, 2, 2, 1); __PYX_ERR(5, 75, __pyx_L3_error)
        }
      }
      if (unlikely(kw_args > 0)) {
        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "__cinit__") < 0)) __PYX_ERR(5, 75, __pyx_L3_error)
      }
    } else if (PyTuple_GET_SIZE(__pyx_args) != 2) {
      goto __pyx_L5_argtuple_error;
    } else {
      values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
      values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
    }
    __pyx_v_metadata_plugin = values[0];
    __pyx_v_name = values[1];
  }
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("__cinit__", 1, 2, 2, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(5, 75, __pyx_L3_error)
  __pyx_L3_error:;
  __Pyx_AddTraceback("grpc._cython.cygrpc.MetadataPluginCallCredentials.__cinit__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return -1;
  __pyx_L4_argument_unpacking_done:;
  __pyx_r = __pyx_pf_4grpc_7_cython_6cygrpc_29MetadataPluginCallCredentials___cinit__(((struct __pyx_obj_4grpc_7_cython_6cygrpc_MetadataPluginCallCredentials *)__pyx_v_self), __pyx_v_metadata_plugin, __pyx_v_name);

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static int __pyx_pf_4grpc_7_cython_6cygrpc_29MetadataPluginCallCredentials___cinit__(struct __pyx_obj_4grpc_7_cython_6cygrpc_MetadataPluginCallCredentials *__pyx_v_self, PyObject *__pyx_v_metadata_plugin, PyObject *__pyx_v_name) {
  int __pyx_r;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("__cinit__", 0);

  /* "src/python/grpcio/grpc/_cython/_cygrpc/credentials.pyx.pxi":76
 * 
 *   def __cinit__(self, metadata_plugin, name):
 *     self._metadata_plugin = metadata_plugin             # <<<<<<<<<<<<<<
 *     self._name = name
 * 
 */
  __Pyx_INCREF(__pyx_v_metadata_plugin);
  __Pyx_GIVEREF(__pyx_v_metadata_plugin);
  __Pyx_GOTREF(__pyx_v_self->_metadata_plugin);
  __Pyx_DECREF(__pyx_v_self->_metadata_plugin);
  __pyx_v_self->_metadata_plugin = __pyx_v_metadata_plugin;

  /* "src/python/grpcio/grpc/_cython/_cygrpc/credentials.pyx.pxi":77
 *   def __cinit__(self, metadata_plugin, name):
 *     self._metadata_plugin = metadata_plugin
 *     self._name = name             # <<<<<<<<<<<<<<
 * 
 *   cdef grpc_call_credentials *c(self) except *:
 */
  if (!(likely(PyBytes_CheckExact(__pyx_v_name))||((__pyx_v_name) == Py_None)||(PyErr_Format(PyExc_TypeError, "Expected %.16s, got %.200s", "bytes", Py_TYPE(__pyx_v_name)->tp_name), 0))) __PYX_ERR(5, 77, __pyx_L1_error)
  __pyx_t_1 = __pyx_v_name;
  __Pyx_INCREF(__pyx_t_1);
  __Pyx_GIVEREF(__pyx_t_1);
  __Pyx_GOTREF(__pyx_v_self->_name);
  __Pyx_DECREF(__pyx_v_self->_name);
  __pyx_v_self->_name = ((PyObject*)__pyx_t_1);
  __pyx_t_1 = 0;

  /* "src/python/grpcio/grpc/_cython/_cygrpc/credentials.pyx.pxi":75
 * cdef class MetadataPluginCallCredentials(CallCredentials):
 * 
 *   def __cinit__(self, metadata_plugin, name):             # <<<<<<<<<<<<<<
 *     self._metadata_plugin = metadata_plugin
 *     self._name = name
 */

  /* function exit code */
  __pyx_r = 0;
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_AddTraceback("grpc._cython.cygrpc.MetadataPluginCallCredentials.__cinit__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = -1;
  __pyx_L0:;
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "src/python/grpcio/grpc/_cython/_cygrpc/credentials.pyx.pxi":79
 *     self._name = name
 * 
 *   cdef grpc_call_credentials *c(self) except *:             # <<<<<<<<<<<<<<
 *     cdef grpc_metadata_credentials_plugin c_metadata_plugin
 *     c_metadata_plugin.get_metadata = _get_metadata
 */

static grpc_call_credentials *__pyx_f_4grpc_7_cython_6cygrpc_29MetadataPluginCallCredentials_c(struct __pyx_obj_4grpc_7_cython_6cygrpc_MetadataPluginCallCredentials *__pyx_v_self) {
  grpc_metadata_credentials_plugin __pyx_v_c_metadata_plugin;
  grpc_call_credentials *__pyx_r;
  __Pyx_RefNannyDeclarations
  char const *__pyx_t_1;
  PyObject *__pyx_t_2 = NULL;
  PyObject *__pyx_t_3 = NULL;
  PyObject *__pyx_t_4 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("c", 0);

  /* "src/python/grpcio/grpc/_cython/_cygrpc/credentials.pyx.pxi":81
 *   cdef grpc_call_credentials *c(self) except *:
 *     cdef grpc_metadata_credentials_plugin c_metadata_plugin
 *     c_metadata_plugin.get_metadata = _get_metadata             # <<<<<<<<<<<<<<
 *     c_metadata_plugin.destroy = _destroy
 *     c_metadata_plugin.state = <void *>self._metadata_plugin
 */
  __pyx_v_c_metadata_plugin.get_metadata = __pyx_f_4grpc_7_cython_6cygrpc__get_metadata;

  /* "src/python/grpcio/grpc/_cython/_cygrpc/credentials.pyx.pxi":82
 *     cdef grpc_metadata_credentials_plugin c_metadata_plugin
 *     c_metadata_plugin.get_metadata = _get_metadata
 *     c_metadata_plugin.destroy = _destroy             # <<<<<<<<<<<<<<
 *     c_metadata_plugin.state = <void *>self._metadata_plugin
 *     c_metadata_plugin.type = self._name
 */
  __pyx_v_c_metadata_plugin.destroy = __pyx_f_4grpc_7_cython_6cygrpc__destroy;

  /* "src/python/grpcio/grpc/_cython/_cygrpc/credentials.pyx.pxi":83
 *     c_metadata_plugin.get_metadata = _get_metadata
 *     c_metadata_plugin.destroy = _destroy
 *     c_metadata_plugin.state = <void *>self._metadata_plugin             # <<<<<<<<<<<<<<
 *     c_metadata_plugin.type = self._name
 *     cpython.Py_INCREF(self._metadata_plugin)
 */
  __pyx_v_c_metadata_plugin.state = ((void *)__pyx_v_self->_metadata_plugin);

  /* "src/python/grpcio/grpc/_cython/_cygrpc/credentials.pyx.pxi":84
 *     c_metadata_plugin.destroy = _destroy
 *     c_metadata_plugin.state = <void *>self._metadata_plugin
 *     c_metadata_plugin.type = self._name             # <<<<<<<<<<<<<<
 *     cpython.Py_INCREF(self._metadata_plugin)
 *     fork_handlers_and_grpc_init()
 */
  if (unlikely(__pyx_v_self->_name == Py_None)) {
    PyErr_SetString(PyExc_TypeError, "expected bytes, NoneType found");
    __PYX_ERR(5, 84, __pyx_L1_error)
  }
  __pyx_t_1 = __Pyx_PyBytes_AsString(__pyx_v_self->_name); if (unlikely((!__pyx_t_1) && PyErr_Occurred())) __PYX_ERR(5, 84, __pyx_L1_error)
  __pyx_v_c_metadata_plugin.type = __pyx_t_1;

  /* "src/python/grpcio/grpc/_cython/_cygrpc/credentials.pyx.pxi":85
 *     c_metadata_plugin.state = <void *>self._metadata_plugin
 *     c_metadata_plugin.type = self._name
 *     cpython.Py_INCREF(self._metadata_plugin)             # <<<<<<<<<<<<<<
 *     fork_handlers_and_grpc_init()
 *     # TODO(yihuazhang): Expose min_security_level via the Python API so that
 */
  __pyx_t_2 = __pyx_v_self->_metadata_plugin;
  __Pyx_INCREF(__pyx_t_2);
  Py_INCREF(__pyx_t_2);
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;

  /* "src/python/grpcio/grpc/_cython/_cygrpc/credentials.pyx.pxi":86
 *     c_metadata_plugin.type = self._name
 *     cpython.Py_INCREF(self._metadata_plugin)
 *     fork_handlers_and_grpc_init()             # <<<<<<<<<<<<<<
 *     # TODO(yihuazhang): Expose min_security_level via the Python API so that
 *     # applications can decide what minimum security level their plugins require.
 */
  __Pyx_GetModuleGlobalName(__pyx_t_3, __pyx_n_s_fork_handlers_and_grpc_init); if (unlikely(!__pyx_t_3)) __PYX_ERR(5, 86, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  __pyx_t_4 = NULL;
  if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_3))) {
    __pyx_t_4 = PyMethod_GET_SELF(__pyx_t_3);
    if (likely(__pyx_t_4)) {
      PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_3);
      __Pyx_INCREF(__pyx_t_4);
      __Pyx_INCREF(function);
      __Pyx_DECREF_SET(__pyx_t_3, function);
    }
  }
  __pyx_t_2 = (__pyx_t_4) ? __Pyx_PyObject_CallOneArg(__pyx_t_3, __pyx_t_4) : __Pyx_PyObject_CallNoArg(__pyx_t_3);
  __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0;
  if (unlikely(!__pyx_t_2)) __PYX_ERR(5, 86, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;

  /* "src/python/grpcio/grpc/_cython/_cygrpc/credentials.pyx.pxi":89
 *     # TODO(yihuazhang): Expose min_security_level via the Python API so that
 *     # applications can decide what minimum security level their plugins require.
 *     return grpc_metadata_credentials_create_from_plugin(c_metadata_plugin, GRPC_PRIVACY_AND_INTEGRITY, NULL)             # <<<<<<<<<<<<<<
 * 
 * 
 */
  __pyx_r = grpc_metadata_credentials_create_from_plugin(__pyx_v_c_metadata_plugin, GRPC_PRIVACY_AND_INTEGRITY, NULL);
  goto __pyx_L0;

  /* "src/python/grpcio/grpc/_cython/_cygrpc/credentials.pyx.pxi":79
 *     self._name = name
 * 
 *   cdef grpc_call_credentials *c(self) except *:             # <<<<<<<<<<<<<<
 *     cdef grpc_metadata_credentials_plugin c_metadata_plugin
 *     c_metadata_plugin.get_metadata = _get_metadata
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_XDECREF(__pyx_t_3);
  __Pyx_XDECREF(__pyx_t_4);
  __Pyx_AddTraceback("grpc._cython.cygrpc.MetadataPluginCallCredentials.c", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = 0;
  __pyx_L0:;
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "src/python/grpcio/grpc/_cython/_cygrpc/credentials.pxd.pxi":36
 * cdef class MetadataPluginCallCredentials(CallCredentials):
 * 
 *   cdef readonly object _metadata_plugin             # <<<<<<<<<<<<<<
 *   cdef readonly bytes _name
 * 
 */

/* Python wrapper */
static PyObject *__pyx_pw_4grpc_7_cython_6cygrpc_29MetadataPluginCallCredentials_16_metadata_plugin_1__get__(PyObject *__pyx_v_self); /*proto*/
static PyObject *__pyx_pw_4grpc_7_cython_6cygrpc_29MetadataPluginCallCredentials_16_metadata_plugin_1__get__(PyObject *__pyx_v_self) {
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__get__ (wrapper)", 0);
  __pyx_r = __pyx_pf_4grpc_7_cython_6cygrpc_29MetadataPluginCallCredentials_16_metadata_plugin___get__(((struct __pyx_obj_4grpc_7_cython_6cygrpc_MetadataPluginCallCredentials *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_4grpc_7_cython_6cygrpc_29MetadataPluginCallCredentials_16_metadata_plugin___get__(struct __pyx_obj_4grpc_7_cython_6cygrpc_MetadataPluginCallCredentials *__pyx_v_self) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__get__", 0);
  __Pyx_XDECREF(__pyx_r);
  __Pyx_INCREF(__pyx_v_self->_metadata_plugin);
  __pyx_r = __pyx_v_self->_metadata_plugin;
  goto __pyx_L0;

  /* function exit code */
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "src/python/grpcio/grpc/_cython/_cygrpc/credentials.pxd.pxi":37
 * 
 *   cdef readonly object _metadata_plugin
 *   cdef readonly bytes _name             # <<<<<<<<<<<<<<
 * 
 *   cdef grpc_call_credentials *c(self) except *
 */

/* Python wrapper */
static PyObject *__pyx_pw_4grpc_7_cython_6cygrpc_29MetadataPluginCallCredentials_5_name_1__get__(PyObject *__pyx_v_self); /*proto*/
static PyObject *__pyx_pw_4grpc_7_cython_6cygrpc_29MetadataPluginCallCredentials_5_name_1__get__(PyObject *__pyx_v_self) {
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__get__ (wrapper)", 0);
  __pyx_r = __pyx_pf_4grpc_7_cython_6cygrpc_29MetadataPluginCallCredentials_5_name___get__(((struct __pyx_obj_4grpc_7_cython_6cygrpc_MetadataPluginCallCredentials *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_4grpc_7_cython_6cygrpc_29MetadataPluginCallCredentials_5_name___get__(struct __pyx_obj_4grpc_7_cython_6cygrpc_MetadataPluginCallCredentials *__pyx_v_self) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__get__", 0);
  __Pyx_XDECREF(__pyx_r);
  __Pyx_INCREF(__pyx_v_self->_name);
  __pyx_r = __pyx_v_self->_name;
  goto __pyx_L0;

  /* function exit code */
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "(tree fragment)":1
 * def __reduce_cython__(self):             # <<<<<<<<<<<<<<
 *     raise TypeError("no default __reduce__ due to non-trivial __cinit__")
 * def __setstate_cython__(self, __pyx_state):
 */

/* Python wrapper */
static PyObject *__pyx_pw_4grpc_7_cython_6cygrpc_29MetadataPluginCallCredentials_3__reduce_cython__(PyObject *__pyx_v_self, CYTHON_UNUSED PyObject *unused); /*proto*/
static PyObject *__pyx_pw_4grpc_7_cython_6cygrpc_29MetadataPluginCallCredentials_3__reduce_cython__(PyObject *__pyx_v_self, CYTHON_UNUSED PyObject *unused) {
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__reduce_cython__ (wrapper)", 0);
  __pyx_r = __pyx_pf_4grpc_7_cython_6cygrpc_29MetadataPluginCallCredentials_2__reduce_cython__(((struct __pyx_obj_4grpc_7_cython_6cygrpc_MetadataPluginCallCredentials *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_4grpc_7_cython_6cygrpc_29MetadataPluginCallCredentials_2__reduce_cython__(CYTHON_UNUSED struct __pyx_obj_4grpc_7_cython_6cygrpc_MetadataPluginCallCredentials *__pyx_v_self) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("__reduce_cython__", 0);

  /* "(tree fragment)":2
 * def __reduce_cython__(self):
 *     raise TypeError("no default __reduce__ due to non-trivial __cinit__")             # <<<<<<<<<<<<<<
 * def __setstate_cython__(self, __pyx_state):
 *     raise TypeError("no default __reduce__ due to non-trivial __cinit__")
 */
  __pyx_t_1 = __Pyx_PyObject_Call(__pyx_builtin_TypeError, __pyx_tuple__38, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(11, 2, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_Raise(__pyx_t_1, 0, 0, 0);
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  __PYX_ERR(11, 2, __pyx_L1_error)

  /* "(tree fragment)":1
 * def __reduce_cython__(self):             # <<<<<<<<<<<<<<
 *     raise TypeError("no default __reduce__ due to non-trivial __cinit__")
 * def __setstate_cython__(self, __pyx_state):
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_AddTraceback("grpc._cython.cygrpc.MetadataPluginCallCredentials.__reduce_cython__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "(tree fragment)":3
 * def __reduce_cython__(self):
 *     raise TypeError("no default __reduce__ due to non-trivial __cinit__")
 * def __setstate_cython__(self, __pyx_state):             # <<<<<<<<<<<<<<
 *     raise TypeError("no default __reduce__ due to non-trivial __cinit__")
 */

/* Python wrapper */
static PyObject *__pyx_pw_4grpc_7_cython_6cygrpc_29MetadataPluginCallCredentials_5__setstate_cython__(PyObject *__pyx_v_self, PyObject *__pyx_v___pyx_state); /*proto*/
static PyObject *__pyx_pw_4grpc_7_cython_6cygrpc_29MetadataPluginCallCredentials_5__setstate_cython__(PyObject *__pyx_v_self, PyObject *__pyx_v___pyx_state) {
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__setstate_cython__ (wrapper)", 0);
  __pyx_r = __pyx_pf_4grpc_7_cython_6cygrpc_29MetadataPluginCallCredentials_4__setstate_cython__(((struct __pyx_obj_4grpc_7_cython_6cygrpc_MetadataPluginCallCredentials *)__pyx_v_self), ((PyObject *)__pyx_v___pyx_state));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_4grpc_7_cython_6cygrpc_29MetadataPluginCallCredentials_4__setstate_cython__(CYTHON_UNUSED struct __pyx_obj_4grpc_7_cython_6cygrpc_MetadataPluginCallCredentials *__pyx_v_self, CYTHON_UNUSED PyObject *__pyx_v___pyx_state) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("__setstate_cython__", 0);

  /* "(tree fragment)":4
 *     raise TypeError("no default __reduce__ due to non-trivial __cinit__")
 * def __setstate_cython__(self, __pyx_state):
 *     raise TypeError("no default __reduce__ due to non-trivial __cinit__")             # <<<<<<<<<<<<<<
 */
  __pyx_t_1 = __Pyx_PyObject_Call(__pyx_builtin_TypeError, __pyx_tuple__39, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(11, 4, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_Raise(__pyx_t_1, 0, 0, 0);
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  __PYX_ERR(11, 4, __pyx_L1_error)

  /* "(tree fragment)":3
 * def __reduce_cython__(self):
 *     raise TypeError("no default __reduce__ due to non-trivial __cinit__")
 * def __setstate_cython__(self, __pyx_state):             # <<<<<<<<<<<<<<
 *     raise TypeError("no default __reduce__ due to non-trivial __cinit__")
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_AddTraceback("grpc._cython.cygrpc.MetadataPluginCallCredentials.__setstate_cython__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "src/python/grpcio/grpc/_cython/_cygrpc/credentials.pyx.pxi":92
 * 
 * 
 * cdef grpc_call_credentials *_composition(call_credentialses):             # <<<<<<<<<<<<<<
 *   call_credentials_iterator = iter(call_credentialses)
 *   cdef CallCredentials composition = next(call_credentials_iterator)
 */

static grpc_call_credentials *__pyx_f_4grpc_7_cython_6cygrpc__composition(PyObject *__pyx_v_call_credentialses) {
  PyObject *__pyx_v_call_credentials_iterator = NULL;
  struct __pyx_obj_4grpc_7_cython_6cygrpc_CallCredentials *__pyx_v_composition = 0;
  grpc_call_credentials *__pyx_v_c_composition;
  struct __pyx_obj_4grpc_7_cython_6cygrpc_CallCredentials *__pyx_v_additional_call_credentials = 0;
  grpc_call_credentials *__pyx_v_c_additional_call_credentials;
  grpc_call_credentials *__pyx_v_c_next_composition;
  grpc_call_credentials *__pyx_r;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  grpc_call_credentials *__pyx_t_2;
  Py_ssize_t __pyx_t_3;
  PyObject *(*__pyx_t_4)(PyObject *);
  PyObject *__pyx_t_5 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("_composition", 0);

  /* "src/python/grpcio/grpc/_cython/_cygrpc/credentials.pyx.pxi":93
 * 
 * cdef grpc_call_credentials *_composition(call_credentialses):
 *   call_credentials_iterator = iter(call_credentialses)             # <<<<<<<<<<<<<<
 *   cdef CallCredentials composition = next(call_credentials_iterator)
 *   cdef grpc_call_credentials *c_composition = composition.c()
 */
  __pyx_t_1 = PyObject_GetIter(__pyx_v_call_credentialses); if (unlikely(!__pyx_t_1)) __PYX_ERR(5, 93, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_v_call_credentials_iterator = __pyx_t_1;
  __pyx_t_1 = 0;

  /* "src/python/grpcio/grpc/_cython/_cygrpc/credentials.pyx.pxi":94
 * cdef grpc_call_credentials *_composition(call_credentialses):
 *   call_credentials_iterator = iter(call_credentialses)
 *   cdef CallCredentials composition = next(call_credentials_iterator)             # <<<<<<<<<<<<<<
 *   cdef grpc_call_credentials *c_composition = composition.c()
 *   cdef CallCredentials additional_call_credentials
 */
  __pyx_t_1 = __Pyx_PyIter_Next(__pyx_v_call_credentials_iterator); if (unlikely(!__pyx_t_1)) __PYX_ERR(5, 94, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  if (!(likely(((__pyx_t_1) == Py_None) || likely(__Pyx_TypeTest(__pyx_t_1, __pyx_ptype_4grpc_7_cython_6cygrpc_CallCredentials))))) __PYX_ERR(5, 94, __pyx_L1_error)
  __pyx_v_composition = ((struct __pyx_obj_4grpc_7_cython_6cygrpc_CallCredentials *)__pyx_t_1);
  __pyx_t_1 = 0;

  /* "src/python/grpcio/grpc/_cython/_cygrpc/credentials.pyx.pxi":95
 *   call_credentials_iterator = iter(call_credentialses)
 *   cdef CallCredentials composition = next(call_credentials_iterator)
 *   cdef grpc_call_credentials *c_composition = composition.c()             # <<<<<<<<<<<<<<
 *   cdef CallCredentials additional_call_credentials
 *   cdef grpc_call_credentials *c_additional_call_credentials
 */
  __pyx_t_2 = ((struct __pyx_vtabstruct_4grpc_7_cython_6cygrpc_CallCredentials *)__pyx_v_composition->__pyx_vtab)->c(__pyx_v_composition); if (unlikely(PyErr_Occurred())) __PYX_ERR(5, 95, __pyx_L1_error)
  __pyx_v_c_composition = __pyx_t_2;

  /* "src/python/grpcio/grpc/_cython/_cygrpc/credentials.pyx.pxi":99
 *   cdef grpc_call_credentials *c_additional_call_credentials
 *   cdef grpc_call_credentials *c_next_composition
 *   for additional_call_credentials in call_credentials_iterator:             # <<<<<<<<<<<<<<
 *     c_additional_call_credentials = additional_call_credentials.c()
 *     c_next_composition = grpc_composite_call_credentials_create(
 */
  if (likely(PyList_CheckExact(__pyx_v_call_credentials_iterator)) || PyTuple_CheckExact(__pyx_v_call_credentials_iterator)) {
    __pyx_t_1 = __pyx_v_call_credentials_iterator; __Pyx_INCREF(__pyx_t_1); __pyx_t_3 = 0;
    __pyx_t_4 = NULL;
  } else {
    __pyx_t_3 = -1; __pyx_t_1 = PyObject_GetIter(__pyx_v_call_credentials_iterator); if (unlikely(!__pyx_t_1)) __PYX_ERR(5, 99, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_1);
    __pyx_t_4 = Py_TYPE(__pyx_t_1)->tp_iternext; if (unlikely(!__pyx_t_4)) __PYX_ERR(5, 99, __pyx_L1_error)
  }
  for (;;) {
    if (likely(!__pyx_t_4)) {
      if (likely(PyList_CheckExact(__pyx_t_1))) {
        if (__pyx_t_3 >= PyList_GET_SIZE(__pyx_t_1)) break;
        #if CYTHON_ASSUME_SAFE_MACROS && !CYTHON_AVOID_BORROWED_REFS
        __pyx_t_5 = PyList_GET_ITEM(__pyx_t_1, __pyx_t_3); __Pyx_INCREF(__pyx_t_5); __pyx_t_3++; if (unlikely(0 < 0)) __PYX_ERR(5, 99, __pyx_L1_error)
        #else
        __pyx_t_5 = PySequence_ITEM(__pyx_t_1, __pyx_t_3); __pyx_t_3++; if (unlikely(!__pyx_t_5)) __PYX_ERR(5, 99, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_5);
        #endif
      } else {
        if (__pyx_t_3 >= PyTuple_GET_SIZE(__pyx_t_1)) break;
        #if CYTHON_ASSUME_SAFE_MACROS && !CYTHON_AVOID_BORROWED_REFS
        __pyx_t_5 = PyTuple_GET_ITEM(__pyx_t_1, __pyx_t_3); __Pyx_INCREF(__pyx_t_5); __pyx_t_3++; if (unlikely(0 < 0)) __PYX_ERR(5, 99, __pyx_L1_error)
        #else
        __pyx_t_5 = PySequence_ITEM(__pyx_t_1, __pyx_t_3); __pyx_t_3++; if (unlikely(!__pyx_t_5)) __PYX_ERR(5, 99, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_5);
        #endif
      }
    } else {
      __pyx_t_5 = __pyx_t_4(__pyx_t_1);
      if (unlikely(!__pyx_t_5)) {
        PyObject* exc_type = PyErr_Occurred();
        if (exc_type) {
          if (likely(__Pyx_PyErr_GivenExceptionMatches(exc_type, PyExc_StopIteration))) PyErr_Clear();
          else __PYX_ERR(5, 99, __pyx_L1_error)
        }
        break;
      }
      __Pyx_GOTREF(__pyx_t_5);
    }
    if (!(likely(((__pyx_t_5) == Py_None) || likely(__Pyx_TypeTest(__pyx_t_5, __pyx_ptype_4grpc_7_cython_6cygrpc_CallCredentials))))) __PYX_ERR(5, 99, __pyx_L1_error)
    __Pyx_XDECREF_SET(__pyx_v_additional_call_credentials, ((struct __pyx_obj_4grpc_7_cython_6cygrpc_CallCredentials *)__pyx_t_5));
    __pyx_t_5 = 0;

    /* "src/python/grpcio/grpc/_cython/_cygrpc/credentials.pyx.pxi":100
 *   cdef grpc_call_credentials *c_next_composition
 *   for additional_call_credentials in call_credentials_iterator:
 *     c_additional_call_credentials = additional_call_credentials.c()             # <<<<<<<<<<<<<<
 *     c_next_composition = grpc_composite_call_credentials_create(
 *         c_composition, c_additional_call_credentials, NULL)
 */
    __pyx_t_2 = ((struct __pyx_vtabstruct_4grpc_7_cython_6cygrpc_CallCredentials *)__pyx_v_additional_call_credentials->__pyx_vtab)->c(__pyx_v_additional_call_credentials); if (unlikely(PyErr_Occurred())) __PYX_ERR(5, 100, __pyx_L1_error)
    __pyx_v_c_additional_call_credentials = __pyx_t_2;

    /* "src/python/grpcio/grpc/_cython/_cygrpc/credentials.pyx.pxi":101
 *   for additional_call_credentials in call_credentials_iterator:
 *     c_additional_call_credentials = additional_call_credentials.c()
 *     c_next_composition = grpc_composite_call_credentials_create(             # <<<<<<<<<<<<<<
 *         c_composition, c_additional_call_credentials, NULL)
 *     grpc_call_credentials_release(c_composition)
 */
    __pyx_v_c_next_composition = grpc_composite_call_credentials_create(__pyx_v_c_composition, __pyx_v_c_additional_call_credentials, NULL);

    /* "src/python/grpcio/grpc/_cython/_cygrpc/credentials.pyx.pxi":103
 *     c_next_composition = grpc_composite_call_credentials_create(
 *         c_composition, c_additional_call_credentials, NULL)
 *     grpc_call_credentials_release(c_composition)             # <<<<<<<<<<<<<<
 *     grpc_call_credentials_release(c_additional_call_credentials)
 *     c_composition = c_next_composition
 */
    grpc_call_credentials_release(__pyx_v_c_composition);

    /* "src/python/grpcio/grpc/_cython/_cygrpc/credentials.pyx.pxi":104
 *         c_composition, c_additional_call_credentials, NULL)
 *     grpc_call_credentials_release(c_composition)
 *     grpc_call_credentials_release(c_additional_call_credentials)             # <<<<<<<<<<<<<<
 *     c_composition = c_next_composition
 *   return c_composition
 */
    grpc_call_credentials_release(__pyx_v_c_additional_call_credentials);

    /* "src/python/grpcio/grpc/_cython/_cygrpc/credentials.pyx.pxi":105
 *     grpc_call_credentials_release(c_composition)
 *     grpc_call_credentials_release(c_additional_call_credentials)
 *     c_composition = c_next_composition             # <<<<<<<<<<<<<<
 *   return c_composition
 * 
 */
    __pyx_v_c_composition = __pyx_v_c_next_composition;

    /* "src/python/grpcio/grpc/_cython/_cygrpc/credentials.pyx.pxi":99
 *   cdef grpc_call_credentials *c_additional_call_credentials
 *   cdef grpc_call_credentials *c_next_composition
 *   for additional_call_credentials in call_credentials_iterator:             # <<<<<<<<<<<<<<
 *     c_additional_call_credentials = additional_call_credentials.c()
 *     c_next_composition = grpc_composite_call_credentials_create(
 */
  }
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;

  /* "src/python/grpcio/grpc/_cython/_cygrpc/credentials.pyx.pxi":106
 *     grpc_call_credentials_release(c_additional_call_credentials)
 *     c_composition = c_next_composition
 *   return c_composition             # <<<<<<<<<<<<<<
 * 
 * 
 */
  __pyx_r = __pyx_v_c_composition;
  goto __pyx_L0;

  /* "src/python/grpcio/grpc/_cython/_cygrpc/credentials.pyx.pxi":92
 * 
 * 
 * cdef grpc_call_credentials *_composition(call_credentialses):             # <<<<<<<<<<<<<<
 *   call_credentials_iterator = iter(call_credentialses)
 *   cdef CallCredentials composition = next(call_credentials_iterator)
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_XDECREF(__pyx_t_5);
  __Pyx_WriteUnraisable("grpc._cython.cygrpc._composition", __pyx_clineno, __pyx_lineno, __pyx_filename, 1, 0);
  __pyx_r = 0;
  __pyx_L0:;
  __Pyx_XDECREF(__pyx_v_call_credentials_iterator);
  __Pyx_XDECREF((PyObject *)__pyx_v_composition);
  __Pyx_XDECREF((PyObject *)__pyx_v_additional_call_credentials);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "src/python/grpcio/grpc/_cython/_cygrpc/credentials.pyx.pxi":111
 * cdef class CompositeCallCredentials(CallCredentials):
 * 
 *   def __cinit__(self, call_credentialses):             # <<<<<<<<<<<<<<
 *     self._call_credentialses = call_credentialses
 * 
 */

/* Python wrapper */
static int __pyx_pw_4grpc_7_cython_6cygrpc_24CompositeCallCredentials_1__cinit__(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
static int __pyx_pw_4grpc_7_cython_6cygrpc_24CompositeCallCredentials_1__cinit__(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
  PyObject *__pyx_v_call_credentialses = 0;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  int __pyx_r;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__cinit__ (wrapper)", 0);
  {
    static PyObject **__pyx_pyargnames[] = {&__pyx_n_s_call_credentialses,0};
    PyObject* values[1] = {0};
    if (unlikely(__pyx_kwds)) {
      Py_ssize_t kw_args;
      const Py_ssize_t pos_args = PyTuple_GET_SIZE(__pyx_args);
      switch (pos_args) {
        case  1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
        CYTHON_FALLTHROUGH;
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      kw_args = PyDict_Size(__pyx_kwds);
      switch (pos_args) {
        case  0:
        if (likely((values[0] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_call_credentialses)) != 0)) kw_args--;
        else goto __pyx_L5_argtuple_error;
      }
      if (unlikely(kw_args > 0)) {
        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "__cinit__") < 0)) __PYX_ERR(5, 111, __pyx_L3_error)
      }
    } else if (PyTuple_GET_SIZE(__pyx_args) != 1) {
      goto __pyx_L5_argtuple_error;
    } else {
      values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
    }
    __pyx_v_call_credentialses = values[0];
  }
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("__cinit__", 1, 1, 1, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(5, 111, __pyx_L3_error)
  __pyx_L3_error:;
  __Pyx_AddTraceback("grpc._cython.cygrpc.CompositeCallCredentials.__cinit__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return -1;
  __pyx_L4_argument_unpacking_done:;
  __pyx_r = __pyx_pf_4grpc_7_cython_6cygrpc_24CompositeCallCredentials___cinit__(((struct __pyx_obj_4grpc_7_cython_6cygrpc_CompositeCallCredentials *)__pyx_v_self), __pyx_v_call_credentialses);

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static int __pyx_pf_4grpc_7_cython_6cygrpc_24CompositeCallCredentials___cinit__(struct __pyx_obj_4grpc_7_cython_6cygrpc_CompositeCallCredentials *__pyx_v_self, PyObject *__pyx_v_call_credentialses) {
  int __pyx_r;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("__cinit__", 0);

  /* "src/python/grpcio/grpc/_cython/_cygrpc/credentials.pyx.pxi":112
 * 
 *   def __cinit__(self, call_credentialses):
 *     self._call_credentialses = call_credentialses             # <<<<<<<<<<<<<<
 * 
 *   cdef grpc_call_credentials *c(self) except *:
 */
  if (!(likely(PyTuple_CheckExact(__pyx_v_call_credentialses))||((__pyx_v_call_credentialses) == Py_None)||(PyErr_Format(PyExc_TypeError, "Expected %.16s, got %.200s", "tuple", Py_TYPE(__pyx_v_call_credentialses)->tp_name), 0))) __PYX_ERR(5, 112, __pyx_L1_error)
  __pyx_t_1 = __pyx_v_call_credentialses;
  __Pyx_INCREF(__pyx_t_1);
  __Pyx_GIVEREF(__pyx_t_1);
  __Pyx_GOTREF(__pyx_v_self->_call_credentialses);
  __Pyx_DECREF(__pyx_v_self->_call_credentialses);
  __pyx_v_self->_call_credentialses = ((PyObject*)__pyx_t_1);
  __pyx_t_1 = 0;

  /* "src/python/grpcio/grpc/_cython/_cygrpc/credentials.pyx.pxi":111
 * cdef class CompositeCallCredentials(CallCredentials):
 * 
 *   def __cinit__(self, call_credentialses):             # <<<<<<<<<<<<<<
 *     self._call_credentialses = call_credentialses
 * 
 */

  /* function exit code */
  __pyx_r = 0;
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_AddTraceback("grpc._cython.cygrpc.CompositeCallCredentials.__cinit__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = -1;
  __pyx_L0:;
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "src/python/grpcio/grpc/_cython/_cygrpc/credentials.pyx.pxi":114
 *     self._call_credentialses = call_credentialses
 * 
 *   cdef grpc_call_credentials *c(self) except *:             # <<<<<<<<<<<<<<
 *     return _composition(self._call_credentialses)
 * 
 */

static grpc_call_credentials *__pyx_f_4grpc_7_cython_6cygrpc_24CompositeCallCredentials_c(struct __pyx_obj_4grpc_7_cython_6cygrpc_CompositeCallCredentials *__pyx_v_self) {
  grpc_call_credentials *__pyx_r;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  __Pyx_RefNannySetupContext("c", 0);

  /* "src/python/grpcio/grpc/_cython/_cygrpc/credentials.pyx.pxi":115
 * 
 *   cdef grpc_call_credentials *c(self) except *:
 *     return _composition(self._call_credentialses)             # <<<<<<<<<<<<<<
 * 
 * 
 */
  __pyx_t_1 = __pyx_v_self->_call_credentialses;
  __Pyx_INCREF(__pyx_t_1);
  __pyx_r = __pyx_f_4grpc_7_cython_6cygrpc__composition(__pyx_t_1);
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  goto __pyx_L0;

  /* "src/python/grpcio/grpc/_cython/_cygrpc/credentials.pyx.pxi":114
 *     self._call_credentialses = call_credentialses
 * 
 *   cdef grpc_call_credentials *c(self) except *:             # <<<<<<<<<<<<<<
 *     return _composition(self._call_credentialses)
 * 
 */

  /* function exit code */
  __pyx_L0:;
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "src/python/grpcio/grpc/_cython/_cygrpc/credentials.pxd.pxi":47
 * cdef class CompositeCallCredentials(CallCredentials):
 * 
 *   cdef readonly tuple _call_credentialses             # <<<<<<<<<<<<<<
 * 
 *   cdef grpc_call_credentials *c(self) except *
 */

/* Python wrapper */
static PyObject *__pyx_pw_4grpc_7_cython_6cygrpc_24CompositeCallCredentials_19_call_credentialses_1__get__(PyObject *__pyx_v_self); /*proto*/
static PyObject *__pyx_pw_4grpc_7_cython_6cygrpc_24CompositeCallCredentials_19_call_credentialses_1__get__(PyObject *__pyx_v_self) {
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__get__ (wrapper)", 0);
  __pyx_r = __pyx_pf_4grpc_7_cython_6cygrpc_24CompositeCallCredentials_19_call_credentialses___get__(((struct __pyx_obj_4grpc_7_cython_6cygrpc_CompositeCallCredentials *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_4grpc_7_cython_6cygrpc_24CompositeCallCredentials_19_call_credentialses___get__(struct __pyx_obj_4grpc_7_cython_6cygrpc_CompositeCallCredentials *__pyx_v_self) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__get__", 0);
  __Pyx_XDECREF(__pyx_r);
  __Pyx_INCREF(__pyx_v_self->_call_credentialses);
  __pyx_r = __pyx_v_self->_call_credentialses;
  goto __pyx_L0;

  /* function exit code */
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "(tree fragment)":1
 * def __reduce_cython__(self):             # <<<<<<<<<<<<<<
 *     raise TypeError("no default __reduce__ due to non-trivial __cinit__")
 * def __setstate_cython__(self, __pyx_state):
 */

/* Python wrapper */
static PyObject *__pyx_pw_4grpc_7_cython_6cygrpc_24CompositeCallCredentials_3__reduce_cython__(PyObject *__pyx_v_self, CYTHON_UNUSED PyObject *unused); /*proto*/
static PyObject *__pyx_pw_4grpc_7_cython_6cygrpc_24CompositeCallCredentials_3__reduce_cython__(PyObject *__pyx_v_self, CYTHON_UNUSED PyObject *unused) {
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__reduce_cython__ (wrapper)", 0);
  __pyx_r = __pyx_pf_4grpc_7_cython_6cygrpc_24CompositeCallCredentials_2__reduce_cython__(((struct __pyx_obj_4grpc_7_cython_6cygrpc_CompositeCallCredentials *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_4grpc_7_cython_6cygrpc_24CompositeCallCredentials_2__reduce_cython__(CYTHON_UNUSED struct __pyx_obj_4grpc_7_cython_6cygrpc_CompositeCallCredentials *__pyx_v_self) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("__reduce_cython__", 0);

  /* "(tree fragment)":2
 * def __reduce_cython__(self):
 *     raise TypeError("no default __reduce__ due to non-trivial __cinit__")             # <<<<<<<<<<<<<<
 * def __setstate_cython__(self, __pyx_state):
 *     raise TypeError("no default __reduce__ due to non-trivial __cinit__")
 */
  __pyx_t_1 = __Pyx_PyObject_Call(__pyx_builtin_TypeError, __pyx_tuple__40, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(11, 2, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_Raise(__pyx_t_1, 0, 0, 0);
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  __PYX_ERR(11, 2, __pyx_L1_error)

  /* "(tree fragment)":1
 * def __reduce_cython__(self):             # <<<<<<<<<<<<<<
 *     raise TypeError("no default __reduce__ due to non-trivial __cinit__")
 * def __setstate_cython__(self, __pyx_state):
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_AddTraceback("grpc._cython.cygrpc.CompositeCallCredentials.__reduce_cython__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "(tree fragment)":3
 * def __reduce_cython__(self):
 *     raise TypeError("no default __reduce__ due to non-trivial __cinit__")
 * def __setstate_cython__(self, __pyx_state):             # <<<<<<<<<<<<<<
 *     raise TypeError("no default __reduce__ due to non-trivial __cinit__")
 */

/* Python wrapper */
static PyObject *__pyx_pw_4grpc_7_cython_6cygrpc_24CompositeCallCredentials_5__setstate_cython__(PyObject *__pyx_v_self, PyObject *__pyx_v___pyx_state); /*proto*/
static PyObject *__pyx_pw_4grpc_7_cython_6cygrpc_24CompositeCallCredentials_5__setstate_cython__(PyObject *__pyx_v_self, PyObject *__pyx_v___pyx_state) {
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__setstate_cython__ (wrapper)", 0);
  __pyx_r = __pyx_pf_4grpc_7_cython_6cygrpc_24CompositeCallCredentials_4__setstate_cython__(((struct __pyx_obj_4grpc_7_cython_6cygrpc_CompositeCallCredentials *)__pyx_v_self), ((PyObject *)__pyx_v___pyx_state));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_4grpc_7_cython_6cygrpc_24CompositeCallCredentials_4__setstate_cython__(CYTHON_UNUSED struct __pyx_obj_4grpc_7_cython_6cygrpc_CompositeCallCredentials *__pyx_v_self, CYTHON_UNUSED PyObject *__pyx_v___pyx_state) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("__setstate_cython__", 0);

  /* "(tree fragment)":4
 *     raise TypeError("no default __reduce__ due to non-trivial __cinit__")
 * def __setstate_cython__(self, __pyx_state):
 *     raise TypeError("no default __reduce__ due to non-trivial __cinit__")             # <<<<<<<<<<<<<<
 */
  __pyx_t_1 = __Pyx_PyObject_Call(__pyx_builtin_TypeError, __pyx_tuple__41, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(11, 4, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_Raise(__pyx_t_1, 0, 0, 0);
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  __PYX_ERR(11, 4, __pyx_L1_error)

  /* "(tree fragment)":3
 * def __reduce_cython__(self):
 *     raise TypeError("no default __reduce__ due to non-trivial __cinit__")
 * def __setstate_cython__(self, __pyx_state):             # <<<<<<<<<<<<<<
 *     raise TypeError("no default __reduce__ due to non-trivial __cinit__")
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_AddTraceback("grpc._cython.cygrpc.CompositeCallCredentials.__setstate_cython__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "src/python/grpcio/grpc/_cython/_cygrpc/credentials.pyx.pxi":120
 * cdef class ChannelCredentials:
 * 
 *   cdef grpc_channel_credentials *c(self) except *:             # <<<<<<<<<<<<<<
 *     raise NotImplementedError()
 * 
 */

static grpc_channel_credentials *__pyx_f_4grpc_7_cython_6cygrpc_18ChannelCredentials_c(CYTHON_UNUSED struct __pyx_obj_4grpc_7_cython_6cygrpc_ChannelCredentials *__pyx_v_self) {
  grpc_channel_credentials *__pyx_r;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("c", 0);

  /* "src/python/grpcio/grpc/_cython/_cygrpc/credentials.pyx.pxi":121
 * 
 *   cdef grpc_channel_credentials *c(self) except *:
 *     raise NotImplementedError()             # <<<<<<<<<<<<<<
 * 
 * 
 */
  __pyx_t_1 = __Pyx_PyObject_CallNoArg(__pyx_builtin_NotImplementedError); if (unlikely(!__pyx_t_1)) __PYX_ERR(5, 121, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_Raise(__pyx_t_1, 0, 0, 0);
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  __PYX_ERR(5, 121, __pyx_L1_error)

  /* "src/python/grpcio/grpc/_cython/_cygrpc/credentials.pyx.pxi":120
 * cdef class ChannelCredentials:
 * 
 *   cdef grpc_channel_credentials *c(self) except *:             # <<<<<<<<<<<<<<
 *     raise NotImplementedError()
 * 
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_AddTraceback("grpc._cython.cygrpc.ChannelCredentials.c", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = 0;
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "(tree fragment)":1
 * def __reduce_cython__(self):             # <<<<<<<<<<<<<<
 *     cdef tuple state
 *     cdef object _dict
 */

/* Python wrapper */
static PyObject *__pyx_pw_4grpc_7_cython_6cygrpc_18ChannelCredentials_1__reduce_cython__(PyObject *__pyx_v_self, CYTHON_UNUSED PyObject *unused); /*proto*/
static PyObject *__pyx_pw_4grpc_7_cython_6cygrpc_18ChannelCredentials_1__reduce_cython__(PyObject *__pyx_v_self, CYTHON_UNUSED PyObject *unused) {
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__reduce_cython__ (wrapper)", 0);
  __pyx_r = __pyx_pf_4grpc_7_cython_6cygrpc_18ChannelCredentials___reduce_cython__(((struct __pyx_obj_4grpc_7_cython_6cygrpc_ChannelCredentials *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_4grpc_7_cython_6cygrpc_18ChannelCredentials___reduce_cython__(struct __pyx_obj_4grpc_7_cython_6cygrpc_ChannelCredentials *__pyx_v_self) {
  PyObject *__pyx_v_state = 0;
  PyObject *__pyx_v__dict = 0;
  int __pyx_v_use_setstate;
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  int __pyx_t_2;
  int __pyx_t_3;
  PyObject *__pyx_t_4 = NULL;
  PyObject *__pyx_t_5 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("__reduce_cython__", 0);

  /* "(tree fragment)":5
 *     cdef object _dict
 *     cdef bint use_setstate
 *     state = ()             # <<<<<<<<<<<<<<
 *     _dict = getattr(self, '__dict__', None)
 *     if _dict is not None:
 */
  __Pyx_INCREF(__pyx_empty_tuple);
  __pyx_v_state = __pyx_empty_tuple;

  /* "(tree fragment)":6
 *     cdef bint use_setstate
 *     state = ()
 *     _dict = getattr(self, '__dict__', None)             # <<<<<<<<<<<<<<
 *     if _dict is not None:
 *         state += (_dict,)
 */
  __pyx_t_1 = __Pyx_GetAttr3(((PyObject *)__pyx_v_self), __pyx_n_s_dict, Py_None); if (unlikely(!__pyx_t_1)) __PYX_ERR(11, 6, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_v__dict = __pyx_t_1;
  __pyx_t_1 = 0;

  /* "(tree fragment)":7
 *     state = ()
 *     _dict = getattr(self, '__dict__', None)
 *     if _dict is not None:             # <<<<<<<<<<<<<<
 *         state += (_dict,)
 *         use_setstate = True
 */
  __pyx_t_2 = (__pyx_v__dict != Py_None);
  __pyx_t_3 = (__pyx_t_2 != 0);
  if (__pyx_t_3) {

    /* "(tree fragment)":8
 *     _dict = getattr(self, '__dict__', None)
 *     if _dict is not None:
 *         state += (_dict,)             # <<<<<<<<<<<<<<
 *         use_setstate = True
 *     else:
 */
    __pyx_t_1 = PyTuple_New(1); if (unlikely(!__pyx_t_1)) __PYX_ERR(11, 8, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_1);
    __Pyx_INCREF(__pyx_v__dict);
    __Pyx_GIVEREF(__pyx_v__dict);
    PyTuple_SET_ITEM(__pyx_t_1, 0, __pyx_v__dict);
    __pyx_t_4 = PyNumber_InPlaceAdd(__pyx_v_state, __pyx_t_1); if (unlikely(!__pyx_t_4)) __PYX_ERR(11, 8, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_4);
    __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
    __Pyx_DECREF_SET(__pyx_v_state, ((PyObject*)__pyx_t_4));
    __pyx_t_4 = 0;

    /* "(tree fragment)":9
 *     if _dict is not None:
 *         state += (_dict,)
 *         use_setstate = True             # <<<<<<<<<<<<<<
 *     else:
 *         use_setstate = False
 */
    __pyx_v_use_setstate = 1;

    /* "(tree fragment)":7
 *     state = ()
 *     _dict = getattr(self, '__dict__', None)
 *     if _dict is not None:             # <<<<<<<<<<<<<<
 *         state += (_dict,)
 *         use_setstate = True
 */
    goto __pyx_L3;
  }

  /* "(tree fragment)":11
 *         use_setstate = True
 *     else:
 *         use_setstate = False             # <<<<<<<<<<<<<<
 *     if use_setstate:
 *         return __pyx_unpickle_ChannelCredentials, (type(self), 0xd41d8cd, None), state
 */
  /*else*/ {
    __pyx_v_use_setstate = 0;
  }
  __pyx_L3:;

  /* "(tree fragment)":12
 *     else:
 *         use_setstate = False
 *     if use_setstate:             # <<<<<<<<<<<<<<
 *         return __pyx_unpickle_ChannelCredentials, (type(self), 0xd41d8cd, None), state
 *     else:
 */
  __pyx_t_3 = (__pyx_v_use_setstate != 0);
  if (__pyx_t_3) {

    /* "(tree fragment)":13
 *         use_setstate = False
 *     if use_setstate:
 *         return __pyx_unpickle_ChannelCredentials, (type(self), 0xd41d8cd, None), state             # <<<<<<<<<<<<<<
 *     else:
 *         return __pyx_unpickle_ChannelCredentials, (type(self), 0xd41d8cd, state)
 */
    __Pyx_XDECREF(__pyx_r);
    __Pyx_GetModuleGlobalName(__pyx_t_4, __pyx_n_s_pyx_unpickle_ChannelCredential); if (unlikely(!__pyx_t_4)) __PYX_ERR(11, 13, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_4);
    __pyx_t_1 = PyTuple_New(3); if (unlikely(!__pyx_t_1)) __PYX_ERR(11, 13, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_1);
    __Pyx_INCREF(((PyObject *)Py_TYPE(((PyObject *)__pyx_v_self))));
    __Pyx_GIVEREF(((PyObject *)Py_TYPE(((PyObject *)__pyx_v_self))));
    PyTuple_SET_ITEM(__pyx_t_1, 0, ((PyObject *)Py_TYPE(((PyObject *)__pyx_v_self))));
    __Pyx_INCREF(__pyx_int_222419149);
    __Pyx_GIVEREF(__pyx_int_222419149);
    PyTuple_SET_ITEM(__pyx_t_1, 1, __pyx_int_222419149);
    __Pyx_INCREF(Py_None);
    __Pyx_GIVEREF(Py_None);
    PyTuple_SET_ITEM(__pyx_t_1, 2, Py_None);
    __pyx_t_5 = PyTuple_New(3); if (unlikely(!__pyx_t_5)) __PYX_ERR(11, 13, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_5);
    __Pyx_GIVEREF(__pyx_t_4);
    PyTuple_SET_ITEM(__pyx_t_5, 0, __pyx_t_4);
    __Pyx_GIVEREF(__pyx_t_1);
    PyTuple_SET_ITEM(__pyx_t_5, 1, __pyx_t_1);
    __Pyx_INCREF(__pyx_v_state);
    __Pyx_GIVEREF(__pyx_v_state);
    PyTuple_SET_ITEM(__pyx_t_5, 2, __pyx_v_state);
    __pyx_t_4 = 0;
    __pyx_t_1 = 0;
    __pyx_r = __pyx_t_5;
    __pyx_t_5 = 0;
    goto __pyx_L0;

    /* "(tree fragment)":12
 *     else:
 *         use_setstate = False
 *     if use_setstate:             # <<<<<<<<<<<<<<
 *         return __pyx_unpickle_ChannelCredentials, (type(self), 0xd41d8cd, None), state
 *     else:
 */
  }

  /* "(tree fragment)":15
 *         return __pyx_unpickle_ChannelCredentials, (type(self), 0xd41d8cd, None), state
 *     else:
 *         return __pyx_unpickle_ChannelCredentials, (type(self), 0xd41d8cd, state)             # <<<<<<<<<<<<<<
 * def __setstate_cython__(self, __pyx_state):
 *     __pyx_unpickle_ChannelCredentials__set_state(self, __pyx_state)
 */
  /*else*/ {
    __Pyx_XDECREF(__pyx_r);
    __Pyx_GetModuleGlobalName(__pyx_t_5, __pyx_n_s_pyx_unpickle_ChannelCredential); if (unlikely(!__pyx_t_5)) __PYX_ERR(11, 15, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_5);
    __pyx_t_1 = PyTuple_New(3); if (unlikely(!__pyx_t_1)) __PYX_ERR(11, 15, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_1);
    __Pyx_INCREF(((PyObject *)Py_TYPE(((PyObject *)__pyx_v_self))));
    __Pyx_GIVEREF(((PyObject *)Py_TYPE(((PyObject *)__pyx_v_self))));
    PyTuple_SET_ITEM(__pyx_t_1, 0, ((PyObject *)Py_TYPE(((PyObject *)__pyx_v_self))));
    __Pyx_INCREF(__pyx_int_222419149);
    __Pyx_GIVEREF(__pyx_int_222419149);
    PyTuple_SET_ITEM(__pyx_t_1, 1, __pyx_int_222419149);
    __Pyx_INCREF(__pyx_v_state);
    __Pyx_GIVEREF(__pyx_v_state);
    PyTuple_SET_ITEM(__pyx_t_1, 2, __pyx_v_state);
    __pyx_t_4 = PyTuple_New(2); if (unlikely(!__pyx_t_4)) __PYX_ERR(11, 15, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_4);
    __Pyx_GIVEREF(__pyx_t_5);
    PyTuple_SET_ITEM(__pyx_t_4, 0, __pyx_t_5);
    __Pyx_GIVEREF(__pyx_t_1);
    PyTuple_SET_ITEM(__pyx_t_4, 1, __pyx_t_1);
    __pyx_t_5 = 0;
    __pyx_t_1 = 0;
    __pyx_r = __pyx_t_4;
    __pyx_t_4 = 0;
    goto __pyx_L0;
  }

  /* "(tree fragment)":1
 * def __reduce_cython__(self):             # <<<<<<<<<<<<<<
 *     cdef tuple state
 *     cdef object _dict
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_XDECREF(__pyx_t_4);
  __Pyx_XDECREF(__pyx_t_5);
  __Pyx_AddTraceback("grpc._cython.cygrpc.ChannelCredentials.__reduce_cython__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XDECREF(__pyx_v_state);
  __Pyx_XDECREF(__pyx_v__dict);
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "(tree fragment)":16
 *     else:
 *         return __pyx_unpickle_ChannelCredentials, (type(self), 0xd41d8cd, state)
 * def __setstate_cython__(self, __pyx_state):             # <<<<<<<<<<<<<<
 *     __pyx_unpickle_ChannelCredentials__set_state(self, __pyx_state)
 */

/* Python wrapper */
static PyObject *__pyx_pw_4grpc_7_cython_6cygrpc_18ChannelCredentials_3__setstate_cython__(PyObject *__pyx_v_self, PyObject *__pyx_v___pyx_state); /*proto*/
static PyObject *__pyx_pw_4grpc_7_cython_6cygrpc_18ChannelCredentials_3__setstate_cython__(PyObject *__pyx_v_self, PyObject *__pyx_v___pyx_state) {
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__setstate_cython__ (wrapper)", 0);
  __pyx_r = __pyx_pf_4grpc_7_cython_6cygrpc_18ChannelCredentials_2__setstate_cython__(((struct __pyx_obj_4grpc_7_cython_6cygrpc_ChannelCredentials *)__pyx_v_self), ((PyObject *)__pyx_v___pyx_state));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_4grpc_7_cython_6cygrpc_18ChannelCredentials_2__setstate_cython__(struct __pyx_obj_4grpc_7_cython_6cygrpc_ChannelCredentials *__pyx_v_self, PyObject *__pyx_v___pyx_state) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("__setstate_cython__", 0);

  /* "(tree fragment)":17
 *         return __pyx_unpickle_ChannelCredentials, (type(self), 0xd41d8cd, state)
 * def __setstate_cython__(self, __pyx_state):
 *     __pyx_unpickle_ChannelCredentials__set_state(self, __pyx_state)             # <<<<<<<<<<<<<<
 */
  if (!(likely(PyTuple_CheckExact(__pyx_v___pyx_state))||((__pyx_v___pyx_state) == Py_None)||(PyErr_Format(PyExc_TypeError, "Expected %.16s, got %.200s", "tuple", Py_TYPE(__pyx_v___pyx_state)->tp_name), 0))) __PYX_ERR(11, 17, __pyx_L1_error)
  __pyx_t_1 = __pyx_f_4grpc_7_cython_6cygrpc___pyx_unpickle_ChannelCredentials__set_state(__pyx_v_self, ((PyObject*)__pyx_v___pyx_state)); if (unlikely(!__pyx_t_1)) __PYX_ERR(11, 17, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;

  /* "(tree fragment)":16
 *     else:
 *         return __pyx_unpickle_ChannelCredentials, (type(self), 0xd41d8cd, state)
 * def __setstate_cython__(self, __pyx_state):             # <<<<<<<<<<<<<<
 *     __pyx_unpickle_ChannelCredentials__set_state(self, __pyx_state)
 */

  /* function exit code */
  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_AddTraceback("grpc._cython.cygrpc.ChannelCredentials.__setstate_cython__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "src/python/grpcio/grpc/_cython/_cygrpc/credentials.pyx.pxi":126
 * cdef class SSLSessionCacheLRU:
 * 
 *   def __cinit__(self, capacity):             # <<<<<<<<<<<<<<
 *     fork_handlers_and_grpc_init()
 *     self._cache = grpc_ssl_session_cache_create_lru(capacity)
 */

/* Python wrapper */
static int __pyx_pw_4grpc_7_cython_6cygrpc_18SSLSessionCacheLRU_1__cinit__(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
static int __pyx_pw_4grpc_7_cython_6cygrpc_18SSLSessionCacheLRU_1__cinit__(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
  PyObject *__pyx_v_capacity = 0;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  int __pyx_r;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__cinit__ (wrapper)", 0);
  {
    static PyObject **__pyx_pyargnames[] = {&__pyx_n_s_capacity,0};
    PyObject* values[1] = {0};
    if (unlikely(__pyx_kwds)) {
      Py_ssize_t kw_args;
      const Py_ssize_t pos_args = PyTuple_GET_SIZE(__pyx_args);
      switch (pos_args) {
        case  1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
        CYTHON_FALLTHROUGH;
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      kw_args = PyDict_Size(__pyx_kwds);
      switch (pos_args) {
        case  0:
        if (likely((values[0] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_capacity)) != 0)) kw_args--;
        else goto __pyx_L5_argtuple_error;
      }
      if (unlikely(kw_args > 0)) {
        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "__cinit__") < 0)) __PYX_ERR(5, 126, __pyx_L3_error)
      }
    } else if (PyTuple_GET_SIZE(__pyx_args) != 1) {
      goto __pyx_L5_argtuple_error;
    } else {
      values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
    }
    __pyx_v_capacity = values[0];
  }
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("__cinit__", 1, 1, 1, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(5, 126, __pyx_L3_error)
  __pyx_L3_error:;
  __Pyx_AddTraceback("grpc._cython.cygrpc.SSLSessionCacheLRU.__cinit__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return -1;
  __pyx_L4_argument_unpacking_done:;
  __pyx_r = __pyx_pf_4grpc_7_cython_6cygrpc_18SSLSessionCacheLRU___cinit__(((struct __pyx_obj_4grpc_7_cython_6cygrpc_SSLSessionCacheLRU *)__pyx_v_self), __pyx_v_capacity);

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static int __pyx_pf_4grpc_7_cython_6cygrpc_18SSLSessionCacheLRU___cinit__(struct __pyx_obj_4grpc_7_cython_6cygrpc_SSLSessionCacheLRU *__pyx_v_self, PyObject *__pyx_v_capacity) {
  int __pyx_r;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  PyObject *__pyx_t_2 = NULL;
  PyObject *__pyx_t_3 = NULL;
  size_t __pyx_t_4;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("__cinit__", 0);

  /* "src/python/grpcio/grpc/_cython/_cygrpc/credentials.pyx.pxi":127
 * 
 *   def __cinit__(self, capacity):
 *     fork_handlers_and_grpc_init()             # <<<<<<<<<<<<<<
 *     self._cache = grpc_ssl_session_cache_create_lru(capacity)
 * 
 */
  __Pyx_GetModuleGlobalName(__pyx_t_2, __pyx_n_s_fork_handlers_and_grpc_init); if (unlikely(!__pyx_t_2)) __PYX_ERR(5, 127, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __pyx_t_3 = NULL;
  if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_2))) {
    __pyx_t_3 = PyMethod_GET_SELF(__pyx_t_2);
    if (likely(__pyx_t_3)) {
      PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_2);
      __Pyx_INCREF(__pyx_t_3);
      __Pyx_INCREF(function);
      __Pyx_DECREF_SET(__pyx_t_2, function);
    }
  }
  __pyx_t_1 = (__pyx_t_3) ? __Pyx_PyObject_CallOneArg(__pyx_t_2, __pyx_t_3) : __Pyx_PyObject_CallNoArg(__pyx_t_2);
  __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0;
  if (unlikely(!__pyx_t_1)) __PYX_ERR(5, 127, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;

  /* "src/python/grpcio/grpc/_cython/_cygrpc/credentials.pyx.pxi":128
 *   def __cinit__(self, capacity):
 *     fork_handlers_and_grpc_init()
 *     self._cache = grpc_ssl_session_cache_create_lru(capacity)             # <<<<<<<<<<<<<<
 * 
 *   def __int__(self):
 */
  __pyx_t_4 = __Pyx_PyInt_As_size_t(__pyx_v_capacity); if (unlikely((__pyx_t_4 == (size_t)-1) && PyErr_Occurred())) __PYX_ERR(5, 128, __pyx_L1_error)
  __pyx_v_self->_cache = grpc_ssl_session_cache_create_lru(__pyx_t_4);

  /* "src/python/grpcio/grpc/_cython/_cygrpc/credentials.pyx.pxi":126
 * cdef class SSLSessionCacheLRU:
 * 
 *   def __cinit__(self, capacity):             # <<<<<<<<<<<<<<
 *     fork_handlers_and_grpc_init()
 *     self._cache = grpc_ssl_session_cache_create_lru(capacity)
 */

  /* function exit code */
  __pyx_r = 0;
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_XDECREF(__pyx_t_3);
  __Pyx_AddTraceback("grpc._cython.cygrpc.SSLSessionCacheLRU.__cinit__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = -1;
  __pyx_L0:;
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "src/python/grpcio/grpc/_cython/_cygrpc/credentials.pyx.pxi":130
 *     self._cache = grpc_ssl_session_cache_create_lru(capacity)
 * 
 *   def __int__(self):             # <<<<<<<<<<<<<<
 *     return <uintptr_t>self._cache
 * 
 */

/* Python wrapper */
static PyObject *__pyx_pw_4grpc_7_cython_6cygrpc_18SSLSessionCacheLRU_3__int__(PyObject *__pyx_v_self); /*proto*/
static PyObject *__pyx_pw_4grpc_7_cython_6cygrpc_18SSLSessionCacheLRU_3__int__(PyObject *__pyx_v_self) {
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__int__ (wrapper)", 0);
  __pyx_r = __pyx_pf_4grpc_7_cython_6cygrpc_18SSLSessionCacheLRU_2__int__(((struct __pyx_obj_4grpc_7_cython_6cygrpc_SSLSessionCacheLRU *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_4grpc_7_cython_6cygrpc_18SSLSessionCacheLRU_2__int__(struct __pyx_obj_4grpc_7_cython_6cygrpc_SSLSessionCacheLRU *__pyx_v_self) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("__int__", 0);

  /* "src/python/grpcio/grpc/_cython/_cygrpc/credentials.pyx.pxi":131
 * 
 *   def __int__(self):
 *     return <uintptr_t>self._cache             # <<<<<<<<<<<<<<
 * 
 *   def __dealloc__(self):
 */
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_1 = __Pyx_PyInt_FromSize_t(((__pyx_t_4grpc_7_cython_6cygrpc_uintptr_t)__pyx_v_self->_cache)); if (unlikely(!__pyx_t_1)) __PYX_ERR(5, 131, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_r = __pyx_t_1;
  __pyx_t_1 = 0;
  goto __pyx_L0;

  /* "src/python/grpcio/grpc/_cython/_cygrpc/credentials.pyx.pxi":130
 *     self._cache = grpc_ssl_session_cache_create_lru(capacity)
 * 
 *   def __int__(self):             # <<<<<<<<<<<<<<
 *     return <uintptr_t>self._cache
 * 
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_AddTraceback("grpc._cython.cygrpc.SSLSessionCacheLRU.__int__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "src/python/grpcio/grpc/_cython/_cygrpc/credentials.pyx.pxi":133
 *     return <uintptr_t>self._cache
 * 
 *   def __dealloc__(self):             # <<<<<<<<<<<<<<
 *     if self._cache != NULL:
 *         grpc_ssl_session_cache_destroy(self._cache)
 */

/* Python wrapper */
static void __pyx_pw_4grpc_7_cython_6cygrpc_18SSLSessionCacheLRU_5__dealloc__(PyObject *__pyx_v_self); /*proto*/
static void __pyx_pw_4grpc_7_cython_6cygrpc_18SSLSessionCacheLRU_5__dealloc__(PyObject *__pyx_v_self) {
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__dealloc__ (wrapper)", 0);
  __pyx_pf_4grpc_7_cython_6cygrpc_18SSLSessionCacheLRU_4__dealloc__(((struct __pyx_obj_4grpc_7_cython_6cygrpc_SSLSessionCacheLRU *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
}

static void __pyx_pf_4grpc_7_cython_6cygrpc_18SSLSessionCacheLRU_4__dealloc__(struct __pyx_obj_4grpc_7_cython_6cygrpc_SSLSessionCacheLRU *__pyx_v_self) {
  __Pyx_RefNannyDeclarations
  int __pyx_t_1;
  __Pyx_RefNannySetupContext("__dealloc__", 0);

  /* "src/python/grpcio/grpc/_cython/_cygrpc/credentials.pyx.pxi":134
 * 
 *   def __dealloc__(self):
 *     if self._cache != NULL:             # <<<<<<<<<<<<<<
 *         grpc_ssl_session_cache_destroy(self._cache)
 *     grpc_shutdown()
 */
  __pyx_t_1 = ((__pyx_v_self->_cache != NULL) != 0);
  if (__pyx_t_1) {

    /* "src/python/grpcio/grpc/_cython/_cygrpc/credentials.pyx.pxi":135
 *   def __dealloc__(self):
 *     if self._cache != NULL:
 *         grpc_ssl_session_cache_destroy(self._cache)             # <<<<<<<<<<<<<<
 *     grpc_shutdown()
 * 
 */
    grpc_ssl_session_cache_destroy(__pyx_v_self->_cache);

    /* "src/python/grpcio/grpc/_cython/_cygrpc/credentials.pyx.pxi":134
 * 
 *   def __dealloc__(self):
 *     if self._cache != NULL:             # <<<<<<<<<<<<<<
 *         grpc_ssl_session_cache_destroy(self._cache)
 *     grpc_shutdown()
 */
  }

  /* "src/python/grpcio/grpc/_cython/_cygrpc/credentials.pyx.pxi":136
 *     if self._cache != NULL:
 *         grpc_ssl_session_cache_destroy(self._cache)
 *     grpc_shutdown()             # <<<<<<<<<<<<<<
 * 
 * 
 */
  grpc_shutdown();

  /* "src/python/grpcio/grpc/_cython/_cygrpc/credentials.pyx.pxi":133
 *     return <uintptr_t>self._cache
 * 
 *   def __dealloc__(self):             # <<<<<<<<<<<<<<
 *     if self._cache != NULL:
 *         grpc_ssl_session_cache_destroy(self._cache)
 */

  /* function exit code */
  __Pyx_RefNannyFinishContext();
}

/* "(tree fragment)":1
 * def __reduce_cython__(self):             # <<<<<<<<<<<<<<
 *     raise TypeError("no default __reduce__ due to non-trivial __cinit__")
 * def __setstate_cython__(self, __pyx_state):
 */

/* Python wrapper */
static PyObject *__pyx_pw_4grpc_7_cython_6cygrpc_18SSLSessionCacheLRU_7__reduce_cython__(PyObject *__pyx_v_self, CYTHON_UNUSED PyObject *unused); /*proto*/
static PyObject *__pyx_pw_4grpc_7_cython_6cygrpc_18SSLSessionCacheLRU_7__reduce_cython__(PyObject *__pyx_v_self, CYTHON_UNUSED PyObject *unused) {
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__reduce_cython__ (wrapper)", 0);
  __pyx_r = __pyx_pf_4grpc_7_cython_6cygrpc_18SSLSessionCacheLRU_6__reduce_cython__(((struct __pyx_obj_4grpc_7_cython_6cygrpc_SSLSessionCacheLRU *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_4grpc_7_cython_6cygrpc_18SSLSessionCacheLRU_6__reduce_cython__(CYTHON_UNUSED struct __pyx_obj_4grpc_7_cython_6cygrpc_SSLSessionCacheLRU *__pyx_v_self) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("__reduce_cython__", 0);

  /* "(tree fragment)":2
 * def __reduce_cython__(self):
 *     raise TypeError("no default __reduce__ due to non-trivial __cinit__")             # <<<<<<<<<<<<<<
 * def __setstate_cython__(self, __pyx_state):
 *     raise TypeError("no default __reduce__ due to non-trivial __cinit__")
 */
  __pyx_t_1 = __Pyx_PyObject_Call(__pyx_builtin_TypeError, __pyx_tuple__42, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(11, 2, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_Raise(__pyx_t_1, 0, 0, 0);
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  __PYX_ERR(11, 2, __pyx_L1_error)

  /* "(tree fragment)":1
 * def __reduce_cython__(self):             # <<<<<<<<<<<<<<
 *     raise TypeError("no default __reduce__ due to non-trivial __cinit__")
 * def __setstate_cython__(self, __pyx_state):
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_AddTraceback("grpc._cython.cygrpc.SSLSessionCacheLRU.__reduce_cython__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "(tree fragment)":3
 * def __reduce_cython__(self):
 *     raise TypeError("no default __reduce__ due to non-trivial __cinit__")
 * def __setstate_cython__(self, __pyx_state):             # <<<<<<<<<<<<<<
 *     raise TypeError("no default __reduce__ due to non-trivial __cinit__")
 */

/* Python wrapper */
static PyObject *__pyx_pw_4grpc_7_cython_6cygrpc_18SSLSessionCacheLRU_9__setstate_cython__(PyObject *__pyx_v_self, PyObject *__pyx_v___pyx_state); /*proto*/
static PyObject *__pyx_pw_4grpc_7_cython_6cygrpc_18SSLSessionCacheLRU_9__setstate_cython__(PyObject *__pyx_v_self, PyObject *__pyx_v___pyx_state) {
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__setstate_cython__ (wrapper)", 0);
  __pyx_r = __pyx_pf_4grpc_7_cython_6cygrpc_18SSLSessionCacheLRU_8__setstate_cython__(((struct __pyx_obj_4grpc_7_cython_6cygrpc_SSLSessionCacheLRU *)__pyx_v_self), ((PyObject *)__pyx_v___pyx_state));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_4grpc_7_cython_6cygrpc_18SSLSessionCacheLRU_8__setstate_cython__(CYTHON_UNUSED struct __pyx_obj_4grpc_7_cython_6cygrpc_SSLSessionCacheLRU *__pyx_v_self, CYTHON_UNUSED PyObject *__pyx_v___pyx_state) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("__setstate_cython__", 0);

  /* "(tree fragment)":4
 *     raise TypeError("no default __reduce__ due to non-trivial __cinit__")
 * def __setstate_cython__(self, __pyx_state):
 *     raise TypeError("no default __reduce__ due to non-trivial __cinit__")             # <<<<<<<<<<<<<<
 */
  __pyx_t_1 = __Pyx_PyObject_Call(__pyx_builtin_TypeError, __pyx_tuple__43, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(11, 4, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_Raise(__pyx_t_1, 0, 0, 0);
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  __PYX_ERR(11, 4, __pyx_L1_error)

  /* "(tree fragment)":3
 * def __reduce_cython__(self):
 *     raise TypeError("no default __reduce__ due to non-trivial __cinit__")
 * def __setstate_cython__(self, __pyx_state):             # <<<<<<<<<<<<<<
 *     raise TypeError("no default __reduce__ due to non-trivial __cinit__")
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_AddTraceback("grpc._cython.cygrpc.SSLSessionCacheLRU.__setstate_cython__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "src/python/grpcio/grpc/_cython/_cygrpc/credentials.pyx.pxi":141
 * cdef class SSLChannelCredentials(ChannelCredentials):
 * 
 *   def __cinit__(self, pem_root_certificates, private_key, certificate_chain):             # <<<<<<<<<<<<<<
 *     if pem_root_certificates is not None and not isinstance(pem_root_certificates, bytes):
 *       raise TypeError('expected certificate to be bytes, got %s' % (type(pem_root_certificates)))
 */

/* Python wrapper */
static int __pyx_pw_4grpc_7_cython_6cygrpc_21SSLChannelCredentials_1__cinit__(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
static int __pyx_pw_4grpc_7_cython_6cygrpc_21SSLChannelCredentials_1__cinit__(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
  PyObject *__pyx_v_pem_root_certificates = 0;
  PyObject *__pyx_v_private_key = 0;
  PyObject *__pyx_v_certificate_chain = 0;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  int __pyx_r;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__cinit__ (wrapper)", 0);
  {
    static PyObject **__pyx_pyargnames[] = {&__pyx_n_s_pem_root_certificates,&__pyx_n_s_private_key,&__pyx_n_s_certificate_chain,0};
    PyObject* values[3] = {0,0,0};
    if (unlikely(__pyx_kwds)) {
      Py_ssize_t kw_args;
      const Py_ssize_t pos_args = PyTuple_GET_SIZE(__pyx_args);
      switch (pos_args) {
        case  3: values[2] = PyTuple_GET_ITEM(__pyx_args, 2);
        CYTHON_FALLTHROUGH;
        case  2: values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
        CYTHON_FALLTHROUGH;
        case  1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
        CYTHON_FALLTHROUGH;
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      kw_args = PyDict_Size(__pyx_kwds);
      switch (pos_args) {
        case  0:
        if (likely((values[0] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_pem_root_certificates)) != 0)) kw_args--;
        else goto __pyx_L5_argtuple_error;
        CYTHON_FALLTHROUGH;
        case  1:
        if (likely((values[1] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_private_key)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("__cinit__", 1, 3, 3, 1); __PYX_ERR(5, 141, __pyx_L3_error)
        }
        CYTHON_FALLTHROUGH;
        case  2:
        if (likely((values[2] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_certificate_chain)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("__cinit__", 1, 3, 3, 2); __PYX_ERR(5, 141, __pyx_L3_error)
        }
      }
      if (unlikely(kw_args > 0)) {
        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "__cinit__") < 0)) __PYX_ERR(5, 141, __pyx_L3_error)
      }
    } else if (PyTuple_GET_SIZE(__pyx_args) != 3) {
      goto __pyx_L5_argtuple_error;
    } else {
      values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
      values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
      values[2] = PyTuple_GET_ITEM(__pyx_args, 2);
    }
    __pyx_v_pem_root_certificates = values[0];
    __pyx_v_private_key = values[1];
    __pyx_v_certificate_chain = values[2];
  }
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("__cinit__", 1, 3, 3, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(5, 141, __pyx_L3_error)
  __pyx_L3_error:;
  __Pyx_AddTraceback("grpc._cython.cygrpc.SSLChannelCredentials.__cinit__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return -1;
  __pyx_L4_argument_unpacking_done:;
  __pyx_r = __pyx_pf_4grpc_7_cython_6cygrpc_21SSLChannelCredentials___cinit__(((struct __pyx_obj_4grpc_7_cython_6cygrpc_SSLChannelCredentials *)__pyx_v_self), __pyx_v_pem_root_certificates, __pyx_v_private_key, __pyx_v_certificate_chain);

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static int __pyx_pf_4grpc_7_cython_6cygrpc_21SSLChannelCredentials___cinit__(struct __pyx_obj_4grpc_7_cython_6cygrpc_SSLChannelCredentials *__pyx_v_self, PyObject *__pyx_v_pem_root_certificates, PyObject *__pyx_v_private_key, PyObject *__pyx_v_certificate_chain) {
  int __pyx_r;
  __Pyx_RefNannyDeclarations
  int __pyx_t_1;
  int __pyx_t_2;
  int __pyx_t_3;
  PyObject *__pyx_t_4 = NULL;
  PyObject *__pyx_t_5 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("__cinit__", 0);

  /* "src/python/grpcio/grpc/_cython/_cygrpc/credentials.pyx.pxi":142
 * 
 *   def __cinit__(self, pem_root_certificates, private_key, certificate_chain):
 *     if pem_root_certificates is not None and not isinstance(pem_root_certificates, bytes):             # <<<<<<<<<<<<<<
 *       raise TypeError('expected certificate to be bytes, got %s' % (type(pem_root_certificates)))
 *     self._pem_root_certificates = pem_root_certificates
 */
  __pyx_t_2 = (__pyx_v_pem_root_certificates != Py_None);
  __pyx_t_3 = (__pyx_t_2 != 0);
  if (__pyx_t_3) {
  } else {
    __pyx_t_1 = __pyx_t_3;
    goto __pyx_L4_bool_binop_done;
  }
  __pyx_t_3 = PyBytes_Check(__pyx_v_pem_root_certificates); 
  __pyx_t_2 = ((!(__pyx_t_3 != 0)) != 0);
  __pyx_t_1 = __pyx_t_2;
  __pyx_L4_bool_binop_done:;
  if (unlikely(__pyx_t_1)) {

    /* "src/python/grpcio/grpc/_cython/_cygrpc/credentials.pyx.pxi":143
 *   def __cinit__(self, pem_root_certificates, private_key, certificate_chain):
 *     if pem_root_certificates is not None and not isinstance(pem_root_certificates, bytes):
 *       raise TypeError('expected certificate to be bytes, got %s' % (type(pem_root_certificates)))             # <<<<<<<<<<<<<<
 *     self._pem_root_certificates = pem_root_certificates
 *     self._private_key = private_key
 */
    __pyx_t_4 = __Pyx_PyString_FormatSafe(__pyx_kp_s_expected_certificate_to_be_bytes, ((PyObject *)Py_TYPE(__pyx_v_pem_root_certificates))); if (unlikely(!__pyx_t_4)) __PYX_ERR(5, 143, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_4);
    __pyx_t_5 = __Pyx_PyObject_CallOneArg(__pyx_builtin_TypeError, __pyx_t_4); if (unlikely(!__pyx_t_5)) __PYX_ERR(5, 143, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_5);
    __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
    __Pyx_Raise(__pyx_t_5, 0, 0, 0);
    __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
    __PYX_ERR(5, 143, __pyx_L1_error)

    /* "src/python/grpcio/grpc/_cython/_cygrpc/credentials.pyx.pxi":142
 * 
 *   def __cinit__(self, pem_root_certificates, private_key, certificate_chain):
 *     if pem_root_certificates is not None and not isinstance(pem_root_certificates, bytes):             # <<<<<<<<<<<<<<
 *       raise TypeError('expected certificate to be bytes, got %s' % (type(pem_root_certificates)))
 *     self._pem_root_certificates = pem_root_certificates
 */
  }

  /* "src/python/grpcio/grpc/_cython/_cygrpc/credentials.pyx.pxi":144
 *     if pem_root_certificates is not None and not isinstance(pem_root_certificates, bytes):
 *       raise TypeError('expected certificate to be bytes, got %s' % (type(pem_root_certificates)))
 *     self._pem_root_certificates = pem_root_certificates             # <<<<<<<<<<<<<<
 *     self._private_key = private_key
 *     self._certificate_chain = certificate_chain
 */
  __Pyx_INCREF(__pyx_v_pem_root_certificates);
  __Pyx_GIVEREF(__pyx_v_pem_root_certificates);
  __Pyx_GOTREF(__pyx_v_self->_pem_root_certificates);
  __Pyx_DECREF(__pyx_v_self->_pem_root_certificates);
  __pyx_v_self->_pem_root_certificates = __pyx_v_pem_root_certificates;

  /* "src/python/grpcio/grpc/_cython/_cygrpc/credentials.pyx.pxi":145
 *       raise TypeError('expected certificate to be bytes, got %s' % (type(pem_root_certificates)))
 *     self._pem_root_certificates = pem_root_certificates
 *     self._private_key = private_key             # <<<<<<<<<<<<<<
 *     self._certificate_chain = certificate_chain
 * 
 */
  __Pyx_INCREF(__pyx_v_private_key);
  __Pyx_GIVEREF(__pyx_v_private_key);
  __Pyx_GOTREF(__pyx_v_self->_private_key);
  __Pyx_DECREF(__pyx_v_self->_private_key);
  __pyx_v_self->_private_key = __pyx_v_private_key;

  /* "src/python/grpcio/grpc/_cython/_cygrpc/credentials.pyx.pxi":146
 *     self._pem_root_certificates = pem_root_certificates
 *     self._private_key = private_key
 *     self._certificate_chain = certificate_chain             # <<<<<<<<<<<<<<
 * 
 *   cdef grpc_channel_credentials *c(self) except *:
 */
  __Pyx_INCREF(__pyx_v_certificate_chain);
  __Pyx_GIVEREF(__pyx_v_certificate_chain);
  __Pyx_GOTREF(__pyx_v_self->_certificate_chain);
  __Pyx_DECREF(__pyx_v_self->_certificate_chain);
  __pyx_v_self->_certificate_chain = __pyx_v_certificate_chain;

  /* "src/python/grpcio/grpc/_cython/_cygrpc/credentials.pyx.pxi":141
 * cdef class SSLChannelCredentials(ChannelCredentials):
 * 
 *   def __cinit__(self, pem_root_certificates, private_key, certificate_chain):             # <<<<<<<<<<<<<<
 *     if pem_root_certificates is not None and not isinstance(pem_root_certificates, bytes):
 *       raise TypeError('expected certificate to be bytes, got %s' % (type(pem_root_certificates)))
 */

  /* function exit code */
  __pyx_r = 0;
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_4);
  __Pyx_XDECREF(__pyx_t_5);
  __Pyx_AddTraceback("grpc._cython.cygrpc.SSLChannelCredentials.__cinit__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = -1;
  __pyx_L0:;
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "src/python/grpcio/grpc/_cython/_cygrpc/credentials.pyx.pxi":148
 *     self._certificate_chain = certificate_chain
 * 
 *   cdef grpc_channel_credentials *c(self) except *:             # <<<<<<<<<<<<<<
 *     cdef const char *c_pem_root_certificates
 *     cdef grpc_ssl_pem_key_cert_pair c_pem_key_certificate_pair
 */

static grpc_channel_credentials *__pyx_f_4grpc_7_cython_6cygrpc_21SSLChannelCredentials_c(struct __pyx_obj_4grpc_7_cython_6cygrpc_SSLChannelCredentials *__pyx_v_self) {
  char const *__pyx_v_c_pem_root_certificates;
  grpc_ssl_pem_key_cert_pair __pyx_v_c_pem_key_certificate_pair;
  grpc_channel_credentials *__pyx_r;
  __Pyx_RefNannyDeclarations
  int __pyx_t_1;
  int __pyx_t_2;
  char const *__pyx_t_3;
  int __pyx_t_4;
  char const *__pyx_t_5;
  char const *__pyx_t_6;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("c", 0);

  /* "src/python/grpcio/grpc/_cython/_cygrpc/credentials.pyx.pxi":151
 *     cdef const char *c_pem_root_certificates
 *     cdef grpc_ssl_pem_key_cert_pair c_pem_key_certificate_pair
 *     if self._pem_root_certificates is None:             # <<<<<<<<<<<<<<
 *       c_pem_root_certificates = NULL
 *     else:
 */
  __pyx_t_1 = (__pyx_v_self->_pem_root_certificates == Py_None);
  __pyx_t_2 = (__pyx_t_1 != 0);
  if (__pyx_t_2) {

    /* "src/python/grpcio/grpc/_cython/_cygrpc/credentials.pyx.pxi":152
 *     cdef grpc_ssl_pem_key_cert_pair c_pem_key_certificate_pair
 *     if self._pem_root_certificates is None:
 *       c_pem_root_certificates = NULL             # <<<<<<<<<<<<<<
 *     else:
 *       c_pem_root_certificates = self._pem_root_certificates
 */
    __pyx_v_c_pem_root_certificates = NULL;

    /* "src/python/grpcio/grpc/_cython/_cygrpc/credentials.pyx.pxi":151
 *     cdef const char *c_pem_root_certificates
 *     cdef grpc_ssl_pem_key_cert_pair c_pem_key_certificate_pair
 *     if self._pem_root_certificates is None:             # <<<<<<<<<<<<<<
 *       c_pem_root_certificates = NULL
 *     else:
 */
    goto __pyx_L3;
  }

  /* "src/python/grpcio/grpc/_cython/_cygrpc/credentials.pyx.pxi":154
 *       c_pem_root_certificates = NULL
 *     else:
 *       c_pem_root_certificates = self._pem_root_certificates             # <<<<<<<<<<<<<<
 *     if self._private_key is None and self._certificate_chain is None:
 *       return grpc_ssl_credentials_create(
 */
  /*else*/ {
    __pyx_t_3 = __Pyx_PyObject_AsString(__pyx_v_self->_pem_root_certificates); if (unlikely((!__pyx_t_3) && PyErr_Occurred())) __PYX_ERR(5, 154, __pyx_L1_error)
    __pyx_v_c_pem_root_certificates = __pyx_t_3;
  }
  __pyx_L3:;

  /* "src/python/grpcio/grpc/_cython/_cygrpc/credentials.pyx.pxi":155
 *     else:
 *       c_pem_root_certificates = self._pem_root_certificates
 *     if self._private_key is None and self._certificate_chain is None:             # <<<<<<<<<<<<<<
 *       return grpc_ssl_credentials_create(
 *           c_pem_root_certificates, NULL, NULL, NULL)
 */
  __pyx_t_1 = (__pyx_v_self->_private_key == Py_None);
  __pyx_t_4 = (__pyx_t_1 != 0);
  if (__pyx_t_4) {
  } else {
    __pyx_t_2 = __pyx_t_4;
    goto __pyx_L5_bool_binop_done;
  }
  __pyx_t_4 = (__pyx_v_self->_certificate_chain == Py_None);
  __pyx_t_1 = (__pyx_t_4 != 0);
  __pyx_t_2 = __pyx_t_1;
  __pyx_L5_bool_binop_done:;
  if (__pyx_t_2) {

    /* "src/python/grpcio/grpc/_cython/_cygrpc/credentials.pyx.pxi":156
 *       c_pem_root_certificates = self._pem_root_certificates
 *     if self._private_key is None and self._certificate_chain is None:
 *       return grpc_ssl_credentials_create(             # <<<<<<<<<<<<<<
 *           c_pem_root_certificates, NULL, NULL, NULL)
 *     else:
 */
    __pyx_r = grpc_ssl_credentials_create(__pyx_v_c_pem_root_certificates, NULL, NULL, NULL);
    goto __pyx_L0;

    /* "src/python/grpcio/grpc/_cython/_cygrpc/credentials.pyx.pxi":155
 *     else:
 *       c_pem_root_certificates = self._pem_root_certificates
 *     if self._private_key is None and self._certificate_chain is None:             # <<<<<<<<<<<<<<
 *       return grpc_ssl_credentials_create(
 *           c_pem_root_certificates, NULL, NULL, NULL)
 */
  }

  /* "src/python/grpcio/grpc/_cython/_cygrpc/credentials.pyx.pxi":159
 *           c_pem_root_certificates, NULL, NULL, NULL)
 *     else:
 *       if self._private_key:             # <<<<<<<<<<<<<<
 *         c_pem_key_certificate_pair.private_key = self._private_key
 *       else:
 */
  /*else*/ {
    __pyx_t_2 = __Pyx_PyObject_IsTrue(__pyx_v_self->_private_key); if (unlikely(__pyx_t_2 < 0)) __PYX_ERR(5, 159, __pyx_L1_error)
    if (__pyx_t_2) {

      /* "src/python/grpcio/grpc/_cython/_cygrpc/credentials.pyx.pxi":160
 *     else:
 *       if self._private_key:
 *         c_pem_key_certificate_pair.private_key = self._private_key             # <<<<<<<<<<<<<<
 *       else:
 *         c_pem_key_certificate_pair.private_key = NULL
 */
      __pyx_t_5 = __Pyx_PyObject_AsString(__pyx_v_self->_private_key); if (unlikely((!__pyx_t_5) && PyErr_Occurred())) __PYX_ERR(5, 160, __pyx_L1_error)
      __pyx_v_c_pem_key_certificate_pair.private_key = __pyx_t_5;

      /* "src/python/grpcio/grpc/_cython/_cygrpc/credentials.pyx.pxi":159
 *           c_pem_root_certificates, NULL, NULL, NULL)
 *     else:
 *       if self._private_key:             # <<<<<<<<<<<<<<
 *         c_pem_key_certificate_pair.private_key = self._private_key
 *       else:
 */
      goto __pyx_L7;
    }

    /* "src/python/grpcio/grpc/_cython/_cygrpc/credentials.pyx.pxi":162
 *         c_pem_key_certificate_pair.private_key = self._private_key
 *       else:
 *         c_pem_key_certificate_pair.private_key = NULL             # <<<<<<<<<<<<<<
 *       if self._certificate_chain:
 *         c_pem_key_certificate_pair.certificate_chain = self._certificate_chain
 */
    /*else*/ {
      __pyx_v_c_pem_key_certificate_pair.private_key = NULL;
    }
    __pyx_L7:;

    /* "src/python/grpcio/grpc/_cython/_cygrpc/credentials.pyx.pxi":163
 *       else:
 *         c_pem_key_certificate_pair.private_key = NULL
 *       if self._certificate_chain:             # <<<<<<<<<<<<<<
 *         c_pem_key_certificate_pair.certificate_chain = self._certificate_chain
 *       else:
 */
    __pyx_t_2 = __Pyx_PyObject_IsTrue(__pyx_v_self->_certificate_chain); if (unlikely(__pyx_t_2 < 0)) __PYX_ERR(5, 163, __pyx_L1_error)
    if (__pyx_t_2) {

      /* "src/python/grpcio/grpc/_cython/_cygrpc/credentials.pyx.pxi":164
 *         c_pem_key_certificate_pair.private_key = NULL
 *       if self._certificate_chain:
 *         c_pem_key_certificate_pair.certificate_chain = self._certificate_chain             # <<<<<<<<<<<<<<
 *       else:
 *         c_pem_key_certificate_pair.certificate_chain = NULL
 */
      __pyx_t_6 = __Pyx_PyObject_AsString(__pyx_v_self->_certificate_chain); if (unlikely((!__pyx_t_6) && PyErr_Occurred())) __PYX_ERR(5, 164, __pyx_L1_error)
      __pyx_v_c_pem_key_certificate_pair.cert_chain = __pyx_t_6;

      /* "src/python/grpcio/grpc/_cython/_cygrpc/credentials.pyx.pxi":163
 *       else:
 *         c_pem_key_certificate_pair.private_key = NULL
 *       if self._certificate_chain:             # <<<<<<<<<<<<<<
 *         c_pem_key_certificate_pair.certificate_chain = self._certificate_chain
 *       else:
 */
      goto __pyx_L8;
    }

    /* "src/python/grpcio/grpc/_cython/_cygrpc/credentials.pyx.pxi":166
 *         c_pem_key_certificate_pair.certificate_chain = self._certificate_chain
 *       else:
 *         c_pem_key_certificate_pair.certificate_chain = NULL             # <<<<<<<<<<<<<<
 *       return grpc_ssl_credentials_create(
 *           c_pem_root_certificates, &c_pem_key_certificate_pair, NULL, NULL)
 */
    /*else*/ {
      __pyx_v_c_pem_key_certificate_pair.cert_chain = NULL;
    }
    __pyx_L8:;

    /* "src/python/grpcio/grpc/_cython/_cygrpc/credentials.pyx.pxi":167
 *       else:
 *         c_pem_key_certificate_pair.certificate_chain = NULL
 *       return grpc_ssl_credentials_create(             # <<<<<<<<<<<<<<
 *           c_pem_root_certificates, &c_pem_key_certificate_pair, NULL, NULL)
 * 
 */
    __pyx_r = grpc_ssl_credentials_create(__pyx_v_c_pem_root_certificates, (&__pyx_v_c_pem_key_certificate_pair), NULL, NULL);
    goto __pyx_L0;
  }

  /* "src/python/grpcio/grpc/_cython/_cygrpc/credentials.pyx.pxi":148
 *     self._certificate_chain = certificate_chain
 * 
 *   cdef grpc_channel_credentials *c(self) except *:             # <<<<<<<<<<<<<<
 *     cdef const char *c_pem_root_certificates
 *     cdef grpc_ssl_pem_key_cert_pair c_pem_key_certificate_pair
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_AddTraceback("grpc._cython.cygrpc.SSLChannelCredentials.c", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = 0;
  __pyx_L0:;
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "src/python/grpcio/grpc/_cython/_cygrpc/credentials.pxd.pxi":64
 * cdef class SSLChannelCredentials(ChannelCredentials):
 * 
 *   cdef readonly object _pem_root_certificates             # <<<<<<<<<<<<<<
 *   cdef readonly object _private_key
 *   cdef readonly object _certificate_chain
 */

/* Python wrapper */
static PyObject *__pyx_pw_4grpc_7_cython_6cygrpc_21SSLChannelCredentials_22_pem_root_certificates_1__get__(PyObject *__pyx_v_self); /*proto*/
static PyObject *__pyx_pw_4grpc_7_cython_6cygrpc_21SSLChannelCredentials_22_pem_root_certificates_1__get__(PyObject *__pyx_v_self) {
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__get__ (wrapper)", 0);
  __pyx_r = __pyx_pf_4grpc_7_cython_6cygrpc_21SSLChannelCredentials_22_pem_root_certificates___get__(((struct __pyx_obj_4grpc_7_cython_6cygrpc_SSLChannelCredentials *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_4grpc_7_cython_6cygrpc_21SSLChannelCredentials_22_pem_root_certificates___get__(struct __pyx_obj_4grpc_7_cython_6cygrpc_SSLChannelCredentials *__pyx_v_self) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__get__", 0);
  __Pyx_XDECREF(__pyx_r);
  __Pyx_INCREF(__pyx_v_self->_pem_root_certificates);
  __pyx_r = __pyx_v_self->_pem_root_certificates;
  goto __pyx_L0;

  /* function exit code */
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "src/python/grpcio/grpc/_cython/_cygrpc/credentials.pxd.pxi":65
 * 
 *   cdef readonly object _pem_root_certificates
 *   cdef readonly object _private_key             # <<<<<<<<<<<<<<
 *   cdef readonly object _certificate_chain
 * 
 */

/* Python wrapper */
static PyObject *__pyx_pw_4grpc_7_cython_6cygrpc_21SSLChannelCredentials_12_private_key_1__get__(PyObject *__pyx_v_self); /*proto*/
static PyObject *__pyx_pw_4grpc_7_cython_6cygrpc_21SSLChannelCredentials_12_private_key_1__get__(PyObject *__pyx_v_self) {
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__get__ (wrapper)", 0);
  __pyx_r = __pyx_pf_4grpc_7_cython_6cygrpc_21SSLChannelCredentials_12_private_key___get__(((struct __pyx_obj_4grpc_7_cython_6cygrpc_SSLChannelCredentials *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_4grpc_7_cython_6cygrpc_21SSLChannelCredentials_12_private_key___get__(struct __pyx_obj_4grpc_7_cython_6cygrpc_SSLChannelCredentials *__pyx_v_self) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__get__", 0);
  __Pyx_XDECREF(__pyx_r);
  __Pyx_INCREF(__pyx_v_self->_private_key);
  __pyx_r = __pyx_v_self->_private_key;
  goto __pyx_L0;

  /* function exit code */
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "src/python/grpcio/grpc/_cython/_cygrpc/credentials.pxd.pxi":66
 *   cdef readonly object _pem_root_certificates
 *   cdef readonly object _private_key
 *   cdef readonly object _certificate_chain             # <<<<<<<<<<<<<<
 * 
 *   cdef grpc_channel_credentials *c(self) except *
 */

/* Python wrapper */
static PyObject *__pyx_pw_4grpc_7_cython_6cygrpc_21SSLChannelCredentials_18_certificate_chain_1__get__(PyObject *__pyx_v_self); /*proto*/
static PyObject *__pyx_pw_4grpc_7_cython_6cygrpc_21SSLChannelCredentials_18_certificate_chain_1__get__(PyObject *__pyx_v_self) {
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__get__ (wrapper)", 0);
  __pyx_r = __pyx_pf_4grpc_7_cython_6cygrpc_21SSLChannelCredentials_18_certificate_chain___get__(((struct __pyx_obj_4grpc_7_cython_6cygrpc_SSLChannelCredentials *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_4grpc_7_cython_6cygrpc_21SSLChannelCredentials_18_certificate_chain___get__(struct __pyx_obj_4grpc_7_cython_6cygrpc_SSLChannelCredentials *__pyx_v_self) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__get__", 0);
  __Pyx_XDECREF(__pyx_r);
  __Pyx_INCREF(__pyx_v_self->_certificate_chain);
  __pyx_r = __pyx_v_self->_certificate_chain;
  goto __pyx_L0;

  /* function exit code */
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "(tree fragment)":1
 * def __reduce_cython__(self):             # <<<<<<<<<<<<<<
 *     raise TypeError("no default __reduce__ due to non-trivial __cinit__")
 * def __setstate_cython__(self, __pyx_state):
 */

/* Python wrapper */
static PyObject *__pyx_pw_4grpc_7_cython_6cygrpc_21SSLChannelCredentials_3__reduce_cython__(PyObject *__pyx_v_self, CYTHON_UNUSED PyObject *unused); /*proto*/
static PyObject *__pyx_pw_4grpc_7_cython_6cygrpc_21SSLChannelCredentials_3__reduce_cython__(PyObject *__pyx_v_self, CYTHON_UNUSED PyObject *unused) {
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__reduce_cython__ (wrapper)", 0);
  __pyx_r = __pyx_pf_4grpc_7_cython_6cygrpc_21SSLChannelCredentials_2__reduce_cython__(((struct __pyx_obj_4grpc_7_cython_6cygrpc_SSLChannelCredentials *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_4grpc_7_cython_6cygrpc_21SSLChannelCredentials_2__reduce_cython__(CYTHON_UNUSED struct __pyx_obj_4grpc_7_cython_6cygrpc_SSLChannelCredentials *__pyx_v_self) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("__reduce_cython__", 0);

  /* "(tree fragment)":2
 * def __reduce_cython__(self):
 *     raise TypeError("no default __reduce__ due to non-trivial __cinit__")             # <<<<<<<<<<<<<<
 * def __setstate_cython__(self, __pyx_state):
 *     raise TypeError("no default __reduce__ due to non-trivial __cinit__")
 */
  __pyx_t_1 = __Pyx_PyObject_Call(__pyx_builtin_TypeError, __pyx_tuple__44, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(11, 2, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_Raise(__pyx_t_1, 0, 0, 0);
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  __PYX_ERR(11, 2, __pyx_L1_error)

  /* "(tree fragment)":1
 * def __reduce_cython__(self):             # <<<<<<<<<<<<<<
 *     raise TypeError("no default __reduce__ due to non-trivial __cinit__")
 * def __setstate_cython__(self, __pyx_state):
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_AddTraceback("grpc._cython.cygrpc.SSLChannelCredentials.__reduce_cython__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "(tree fragment)":3
 * def __reduce_cython__(self):
 *     raise TypeError("no default __reduce__ due to non-trivial __cinit__")
 * def __setstate_cython__(self, __pyx_state):             # <<<<<<<<<<<<<<
 *     raise TypeError("no default __reduce__ due to non-trivial __cinit__")
 */

/* Python wrapper */
static PyObject *__pyx_pw_4grpc_7_cython_6cygrpc_21SSLChannelCredentials_5__setstate_cython__(PyObject *__pyx_v_self, PyObject *__pyx_v___pyx_state); /*proto*/
static PyObject *__pyx_pw_4grpc_7_cython_6cygrpc_21SSLChannelCredentials_5__setstate_cython__(PyObject *__pyx_v_self, PyObject *__pyx_v___pyx_state) {
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__setstate_cython__ (wrapper)", 0);
  __pyx_r = __pyx_pf_4grpc_7_cython_6cygrpc_21SSLChannelCredentials_4__setstate_cython__(((struct __pyx_obj_4grpc_7_cython_6cygrpc_SSLChannelCredentials *)__pyx_v_self), ((PyObject *)__pyx_v___pyx_state));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_4grpc_7_cython_6cygrpc_21SSLChannelCredentials_4__setstate_cython__(CYTHON_UNUSED struct __pyx_obj_4grpc_7_cython_6cygrpc_SSLChannelCredentials *__pyx_v_self, CYTHON_UNUSED PyObject *__pyx_v___pyx_state) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("__setstate_cython__", 0);

  /* "(tree fragment)":4
 *     raise TypeError("no default __reduce__ due to non-trivial __cinit__")
 * def __setstate_cython__(self, __pyx_state):
 *     raise TypeError("no default __reduce__ due to non-trivial __cinit__")             # <<<<<<<<<<<<<<
 */
  __pyx_t_1 = __Pyx_PyObject_Call(__pyx_builtin_TypeError, __pyx_tuple__45, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(11, 4, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_Raise(__pyx_t_1, 0, 0, 0);
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  __PYX_ERR(11, 4, __pyx_L1_error)

  /* "(tree fragment)":3
 * def __reduce_cython__(self):
 *     raise TypeError("no default __reduce__ due to non-trivial __cinit__")
 * def __setstate_cython__(self, __pyx_state):             # <<<<<<<<<<<<<<
 *     raise TypeError("no default __reduce__ due to non-trivial __cinit__")
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_AddTraceback("grpc._cython.cygrpc.SSLChannelCredentials.__setstate_cython__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "src/python/grpcio/grpc/_cython/_cygrpc/credentials.pyx.pxi":173
 * cdef class CompositeChannelCredentials(ChannelCredentials):
 * 
 *   def __cinit__(self, call_credentialses, channel_credentials):             # <<<<<<<<<<<<<<
 *     self._call_credentialses = call_credentialses
 *     self._channel_credentials = channel_credentials
 */

/* Python wrapper */
static int __pyx_pw_4grpc_7_cython_6cygrpc_27CompositeChannelCredentials_1__cinit__(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
static int __pyx_pw_4grpc_7_cython_6cygrpc_27CompositeChannelCredentials_1__cinit__(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
  PyObject *__pyx_v_call_credentialses = 0;
  PyObject *__pyx_v_channel_credentials = 0;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  int __pyx_r;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__cinit__ (wrapper)", 0);
  {
    static PyObject **__pyx_pyargnames[] = {&__pyx_n_s_call_credentialses,&__pyx_n_s_channel_credentials,0};
    PyObject* values[2] = {0,0};
    if (unlikely(__pyx_kwds)) {
      Py_ssize_t kw_args;
      const Py_ssize_t pos_args = PyTuple_GET_SIZE(__pyx_args);
      switch (pos_args) {
        case  2: values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
        CYTHON_FALLTHROUGH;
        case  1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
        CYTHON_FALLTHROUGH;
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      kw_args = PyDict_Size(__pyx_kwds);
      switch (pos_args) {
        case  0:
        if (likely((values[0] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_call_credentialses)) != 0)) kw_args--;
        else goto __pyx_L5_argtuple_error;
        CYTHON_FALLTHROUGH;
        case  1:
        if (likely((values[1] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_channel_credentials)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("__cinit__", 1, 2, 2, 1); __PYX_ERR(5, 173, __pyx_L3_error)
        }
      }
      if (unlikely(kw_args > 0)) {
        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "__cinit__") < 0)) __PYX_ERR(5, 173, __pyx_L3_error)
      }
    } else if (PyTuple_GET_SIZE(__pyx_args) != 2) {
      goto __pyx_L5_argtuple_error;
    } else {
      values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
      values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
    }
    __pyx_v_call_credentialses = values[0];
    __pyx_v_channel_credentials = values[1];
  }
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("__cinit__", 1, 2, 2, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(5, 173, __pyx_L3_error)
  __pyx_L3_error:;
  __Pyx_AddTraceback("grpc._cython.cygrpc.CompositeChannelCredentials.__cinit__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return -1;
  __pyx_L4_argument_unpacking_done:;
  __pyx_r = __pyx_pf_4grpc_7_cython_6cygrpc_27CompositeChannelCredentials___cinit__(((struct __pyx_obj_4grpc_7_cython_6cygrpc_CompositeChannelCredentials *)__pyx_v_self), __pyx_v_call_credentialses, __pyx_v_channel_credentials);

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static int __pyx_pf_4grpc_7_cython_6cygrpc_27CompositeChannelCredentials___cinit__(struct __pyx_obj_4grpc_7_cython_6cygrpc_CompositeChannelCredentials *__pyx_v_self, PyObject *__pyx_v_call_credentialses, PyObject *__pyx_v_channel_credentials) {
  int __pyx_r;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("__cinit__", 0);

  /* "src/python/grpcio/grpc/_cython/_cygrpc/credentials.pyx.pxi":174
 * 
 *   def __cinit__(self, call_credentialses, channel_credentials):
 *     self._call_credentialses = call_credentialses             # <<<<<<<<<<<<<<
 *     self._channel_credentials = channel_credentials
 * 
 */
  if (!(likely(PyTuple_CheckExact(__pyx_v_call_credentialses))||((__pyx_v_call_credentialses) == Py_None)||(PyErr_Format(PyExc_TypeError, "Expected %.16s, got %.200s", "tuple", Py_TYPE(__pyx_v_call_credentialses)->tp_name), 0))) __PYX_ERR(5, 174, __pyx_L1_error)
  __pyx_t_1 = __pyx_v_call_credentialses;
  __Pyx_INCREF(__pyx_t_1);
  __Pyx_GIVEREF(__pyx_t_1);
  __Pyx_GOTREF(__pyx_v_self->_call_credentialses);
  __Pyx_DECREF(__pyx_v_self->_call_credentialses);
  __pyx_v_self->_call_credentialses = ((PyObject*)__pyx_t_1);
  __pyx_t_1 = 0;

  /* "src/python/grpcio/grpc/_cython/_cygrpc/credentials.pyx.pxi":175
 *   def __cinit__(self, call_credentialses, channel_credentials):
 *     self._call_credentialses = call_credentialses
 *     self._channel_credentials = channel_credentials             # <<<<<<<<<<<<<<
 * 
 *   cdef grpc_channel_credentials *c(self) except *:
 */
  if (!(likely(((__pyx_v_channel_credentials) == Py_None) || likely(__Pyx_TypeTest(__pyx_v_channel_credentials, __pyx_ptype_4grpc_7_cython_6cygrpc_ChannelCredentials))))) __PYX_ERR(5, 175, __pyx_L1_error)
  __pyx_t_1 = __pyx_v_channel_credentials;
  __Pyx_INCREF(__pyx_t_1);
  __Pyx_GIVEREF(__pyx_t_1);
  __Pyx_GOTREF(__pyx_v_self->_channel_credentials);
  __Pyx_DECREF(((PyObject *)__pyx_v_self->_channel_credentials));
  __pyx_v_self->_channel_credentials = ((struct __pyx_obj_4grpc_7_cython_6cygrpc_ChannelCredentials *)__pyx_t_1);
  __pyx_t_1 = 0;

  /* "src/python/grpcio/grpc/_cython/_cygrpc/credentials.pyx.pxi":173
 * cdef class CompositeChannelCredentials(ChannelCredentials):
 * 
 *   def __cinit__(self, call_credentialses, channel_credentials):             # <<<<<<<<<<<<<<
 *     self._call_credentialses = call_credentialses
 *     self._channel_credentials = channel_credentials
 */

  /* function exit code */
  __pyx_r = 0;
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_AddTraceback("grpc._cython.cygrpc.CompositeChannelCredentials.__cinit__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = -1;
  __pyx_L0:;
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "src/python/grpcio/grpc/_cython/_cygrpc/credentials.pyx.pxi":177
 *     self._channel_credentials = channel_credentials
 * 
 *   cdef grpc_channel_credentials *c(self) except *:             # <<<<<<<<<<<<<<
 *     cdef grpc_channel_credentials *c_channel_credentials
 *     c_channel_credentials = self._channel_credentials.c()
 */

static grpc_channel_credentials *__pyx_f_4grpc_7_cython_6cygrpc_27CompositeChannelCredentials_c(struct __pyx_obj_4grpc_7_cython_6cygrpc_CompositeChannelCredentials *__pyx_v_self) {
  grpc_channel_credentials *__pyx_v_c_channel_credentials;
  grpc_call_credentials *__pyx_v_c_call_credentials_composition;
  grpc_channel_credentials *__pyx_v_c_composition;
  grpc_channel_credentials *__pyx_r;
  __Pyx_RefNannyDeclarations
  grpc_channel_credentials *__pyx_t_1;
  PyObject *__pyx_t_2 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("c", 0);

  /* "src/python/grpcio/grpc/_cython/_cygrpc/credentials.pyx.pxi":179
 *   cdef grpc_channel_credentials *c(self) except *:
 *     cdef grpc_channel_credentials *c_channel_credentials
 *     c_channel_credentials = self._channel_credentials.c()             # <<<<<<<<<<<<<<
 *     cdef grpc_call_credentials *c_call_credentials_composition = _composition(
 *         self._call_credentialses)
 */
  __pyx_t_1 = ((struct __pyx_vtabstruct_4grpc_7_cython_6cygrpc_ChannelCredentials *)__pyx_v_self->_channel_credentials->__pyx_vtab)->c(__pyx_v_self->_channel_credentials); if (unlikely(PyErr_Occurred())) __PYX_ERR(5, 179, __pyx_L1_error)
  __pyx_v_c_channel_credentials = __pyx_t_1;

  /* "src/python/grpcio/grpc/_cython/_cygrpc/credentials.pyx.pxi":181
 *     c_channel_credentials = self._channel_credentials.c()
 *     cdef grpc_call_credentials *c_call_credentials_composition = _composition(
 *         self._call_credentialses)             # <<<<<<<<<<<<<<
 *     cdef grpc_channel_credentials *composition
 *     c_composition = grpc_composite_channel_credentials_create(
 */
  __pyx_t_2 = __pyx_v_self->_call_credentialses;
  __Pyx_INCREF(__pyx_t_2);

  /* "src/python/grpcio/grpc/_cython/_cygrpc/credentials.pyx.pxi":180
 *     cdef grpc_channel_credentials *c_channel_credentials
 *     c_channel_credentials = self._channel_credentials.c()
 *     cdef grpc_call_credentials *c_call_credentials_composition = _composition(             # <<<<<<<<<<<<<<
 *         self._call_credentialses)
 *     cdef grpc_channel_credentials *composition
 */
  __pyx_v_c_call_credentials_composition = __pyx_f_4grpc_7_cython_6cygrpc__composition(__pyx_t_2);
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;

  /* "src/python/grpcio/grpc/_cython/_cygrpc/credentials.pyx.pxi":183
 *         self._call_credentialses)
 *     cdef grpc_channel_credentials *composition
 *     c_composition = grpc_composite_channel_credentials_create(             # <<<<<<<<<<<<<<
 *         c_channel_credentials, c_call_credentials_composition, NULL)
 *     grpc_channel_credentials_release(c_channel_credentials)
 */
  __pyx_v_c_composition = grpc_composite_channel_credentials_create(__pyx_v_c_channel_credentials, __pyx_v_c_call_credentials_composition, NULL);

  /* "src/python/grpcio/grpc/_cython/_cygrpc/credentials.pyx.pxi":185
 *     c_composition = grpc_composite_channel_credentials_create(
 *         c_channel_credentials, c_call_credentials_composition, NULL)
 *     grpc_channel_credentials_release(c_channel_credentials)             # <<<<<<<<<<<<<<
 *     grpc_call_credentials_release(c_call_credentials_composition)
 *     return c_composition
 */
  grpc_channel_credentials_release(__pyx_v_c_channel_credentials);

  /* "src/python/grpcio/grpc/_cython/_cygrpc/credentials.pyx.pxi":186
 *         c_channel_credentials, c_call_credentials_composition, NULL)
 *     grpc_channel_credentials_release(c_channel_credentials)
 *     grpc_call_credentials_release(c_call_credentials_composition)             # <<<<<<<<<<<<<<
 *     return c_composition
 * 
 */
  grpc_call_credentials_release(__pyx_v_c_call_credentials_composition);

  /* "src/python/grpcio/grpc/_cython/_cygrpc/credentials.pyx.pxi":187
 *     grpc_channel_credentials_release(c_channel_credentials)
 *     grpc_call_credentials_release(c_call_credentials_composition)
 *     return c_composition             # <<<<<<<<<<<<<<
 * 
 * 
 */
  __pyx_r = __pyx_v_c_composition;
  goto __pyx_L0;

  /* "src/python/grpcio/grpc/_cython/_cygrpc/credentials.pyx.pxi":177
 *     self._channel_credentials = channel_credentials
 * 
 *   cdef grpc_channel_credentials *c(self) except *:             # <<<<<<<<<<<<<<
 *     cdef grpc_channel_credentials *c_channel_credentials
 *     c_channel_credentials = self._channel_credentials.c()
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_AddTraceback("grpc._cython.cygrpc.CompositeChannelCredentials.c", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = 0;
  __pyx_L0:;
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "src/python/grpcio/grpc/_cython/_cygrpc/credentials.pxd.pxi":73
 * cdef class CompositeChannelCredentials(ChannelCredentials):
 * 
 *   cdef readonly tuple _call_credentialses             # <<<<<<<<<<<<<<
 *   cdef readonly ChannelCredentials _channel_credentials
 * 
 */

/* Python wrapper */
static PyObject *__pyx_pw_4grpc_7_cython_6cygrpc_27CompositeChannelCredentials_19_call_credentialses_1__get__(PyObject *__pyx_v_self); /*proto*/
static PyObject *__pyx_pw_4grpc_7_cython_6cygrpc_27CompositeChannelCredentials_19_call_credentialses_1__get__(PyObject *__pyx_v_self) {
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__get__ (wrapper)", 0);
  __pyx_r = __pyx_pf_4grpc_7_cython_6cygrpc_27CompositeChannelCredentials_19_call_credentialses___get__(((struct __pyx_obj_4grpc_7_cython_6cygrpc_CompositeChannelCredentials *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_4grpc_7_cython_6cygrpc_27CompositeChannelCredentials_19_call_credentialses___get__(struct __pyx_obj_4grpc_7_cython_6cygrpc_CompositeChannelCredentials *__pyx_v_self) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__get__", 0);
  __Pyx_XDECREF(__pyx_r);
  __Pyx_INCREF(__pyx_v_self->_call_credentialses);
  __pyx_r = __pyx_v_self->_call_credentialses;
  goto __pyx_L0;

  /* function exit code */
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "src/python/grpcio/grpc/_cython/_cygrpc/credentials.pxd.pxi":74
 * 
 *   cdef readonly tuple _call_credentialses
 *   cdef readonly ChannelCredentials _channel_credentials             # <<<<<<<<<<<<<<
 * 
 *   cdef grpc_channel_credentials *c(self) except *
 */

/* Python wrapper */
static PyObject *__pyx_pw_4grpc_7_cython_6cygrpc_27CompositeChannelCredentials_20_channel_credentials_1__get__(PyObject *__pyx_v_self); /*proto*/
static PyObject *__pyx_pw_4grpc_7_cython_6cygrpc_27CompositeChannelCredentials_20_channel_credentials_1__get__(PyObject *__pyx_v_self) {
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__get__ (wrapper)", 0);
  __pyx_r = __pyx_pf_4grpc_7_cython_6cygrpc_27CompositeChannelCredentials_20_channel_credentials___get__(((struct __pyx_obj_4grpc_7_cython_6cygrpc_CompositeChannelCredentials *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_4grpc_7_cython_6cygrpc_27CompositeChannelCredentials_20_channel_credentials___get__(struct __pyx_obj_4grpc_7_cython_6cygrpc_CompositeChannelCredentials *__pyx_v_self) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__get__", 0);
  __Pyx_XDECREF(__pyx_r);
  __Pyx_INCREF(((PyObject *)__pyx_v_self->_channel_credentials));
  __pyx_r = ((PyObject *)__pyx_v_self->_channel_credentials);
  goto __pyx_L0;

  /* function exit code */
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "(tree fragment)":1
 * def __reduce_cython__(self):             # <<<<<<<<<<<<<<
 *     raise TypeError("no default __reduce__ due to non-trivial __cinit__")
 * def __setstate_cython__(self, __pyx_state):
 */

/* Python wrapper */
static PyObject *__pyx_pw_4grpc_7_cython_6cygrpc_27CompositeChannelCredentials_3__reduce_cython__(PyObject *__pyx_v_self, CYTHON_UNUSED PyObject *unused); /*proto*/
static PyObject *__pyx_pw_4grpc_7_cython_6cygrpc_27CompositeChannelCredentials_3__reduce_cython__(PyObject *__pyx_v_self, CYTHON_UNUSED PyObject *unused) {
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__reduce_cython__ (wrapper)", 0);
  __pyx_r = __pyx_pf_4grpc_7_cython_6cygrpc_27CompositeChannelCredentials_2__reduce_cython__(((struct __pyx_obj_4grpc_7_cython_6cygrpc_CompositeChannelCredentials *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_4grpc_7_cython_6cygrpc_27CompositeChannelCredentials_2__reduce_cython__(CYTHON_UNUSED struct __pyx_obj_4grpc_7_cython_6cygrpc_CompositeChannelCredentials *__pyx_v_self) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("__reduce_cython__", 0);

  /* "(tree fragment)":2
 * def __reduce_cython__(self):
 *     raise TypeError("no default __reduce__ due to non-trivial __cinit__")             # <<<<<<<<<<<<<<
 * def __setstate_cython__(self, __pyx_state):
 *     raise TypeError("no default __reduce__ due to non-trivial __cinit__")
 */
  __pyx_t_1 = __Pyx_PyObject_Call(__pyx_builtin_TypeError, __pyx_tuple__46, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(11, 2, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_Raise(__pyx_t_1, 0, 0, 0);
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  __PYX_ERR(11, 2, __pyx_L1_error)

  /* "(tree fragment)":1
 * def __reduce_cython__(self):             # <<<<<<<<<<<<<<
 *     raise TypeError("no default __reduce__ due to non-trivial __cinit__")
 * def __setstate_cython__(self, __pyx_state):
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_AddTraceback("grpc._cython.cygrpc.CompositeChannelCredentials.__reduce_cython__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "(tree fragment)":3
 * def __reduce_cython__(self):
 *     raise TypeError("no default __reduce__ due to non-trivial __cinit__")
 * def __setstate_cython__(self, __pyx_state):             # <<<<<<<<<<<<<<
 *     raise TypeError("no default __reduce__ due to non-trivial __cinit__")
 */

/* Python wrapper */
static PyObject *__pyx_pw_4grpc_7_cython_6cygrpc_27CompositeChannelCredentials_5__setstate_cython__(PyObject *__pyx_v_self, PyObject *__pyx_v___pyx_state); /*proto*/
static PyObject *__pyx_pw_4grpc_7_cython_6cygrpc_27CompositeChannelCredentials_5__setstate_cython__(PyObject *__pyx_v_self, PyObject *__pyx_v___pyx_state) {
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__setstate_cython__ (wrapper)", 0);
  __pyx_r = __pyx_pf_4grpc_7_cython_6cygrpc_27CompositeChannelCredentials_4__setstate_cython__(((struct __pyx_obj_4grpc_7_cython_6cygrpc_CompositeChannelCredentials *)__pyx_v_self), ((PyObject *)__pyx_v___pyx_state));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_4grpc_7_cython_6cygrpc_27CompositeChannelCredentials_4__setstate_cython__(CYTHON_UNUSED struct __pyx_obj_4grpc_7_cython_6cygrpc_CompositeChannelCredentials *__pyx_v_self, CYTHON_UNUSED PyObject *__pyx_v___pyx_state) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("__setstate_cython__", 0);

  /* "(tree fragment)":4
 *     raise TypeError("no default __reduce__ due to non-trivial __cinit__")
 * def __setstate_cython__(self, __pyx_state):
 *     raise TypeError("no default __reduce__ due to non-trivial __cinit__")             # <<<<<<<<<<<<<<
 */
  __pyx_t_1 = __Pyx_PyObject_Call(__pyx_builtin_TypeError, __pyx_tuple__47, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(11, 4, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_Raise(__pyx_t_1, 0, 0, 0);
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  __PYX_ERR(11, 4, __pyx_L1_error)

  /* "(tree fragment)":3
 * def __reduce_cython__(self):
 *     raise TypeError("no default __reduce__ due to non-trivial __cinit__")
 * def __setstate_cython__(self, __pyx_state):             # <<<<<<<<<<<<<<
 *     raise TypeError("no default __reduce__ due to non-trivial __cinit__")
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_AddTraceback("grpc._cython.cygrpc.CompositeChannelCredentials.__setstate_cython__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "src/python/grpcio/grpc/_cython/_cygrpc/credentials.pyx.pxi":192
 * cdef class XDSChannelCredentials(ChannelCredentials):
 * 
 *     def __cinit__(self, fallback_credentials):             # <<<<<<<<<<<<<<
 *         self._fallback_credentials = fallback_credentials
 * 
 */

/* Python wrapper */
static int __pyx_pw_4grpc_7_cython_6cygrpc_21XDSChannelCredentials_1__cinit__(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
static int __pyx_pw_4grpc_7_cython_6cygrpc_21XDSChannelCredentials_1__cinit__(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
  PyObject *__pyx_v_fallback_credentials = 0;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  int __pyx_r;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__cinit__ (wrapper)", 0);
  {
    static PyObject **__pyx_pyargnames[] = {&__pyx_n_s_fallback_credentials,0};
    PyObject* values[1] = {0};
    if (unlikely(__pyx_kwds)) {
      Py_ssize_t kw_args;
      const Py_ssize_t pos_args = PyTuple_GET_SIZE(__pyx_args);
      switch (pos_args) {
        case  1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
        CYTHON_FALLTHROUGH;
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      kw_args = PyDict_Size(__pyx_kwds);
      switch (pos_args) {
        case  0:
        if (likely((values[0] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_fallback_credentials)) != 0)) kw_args--;
        else goto __pyx_L5_argtuple_error;
      }
      if (unlikely(kw_args > 0)) {
        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "__cinit__") < 0)) __PYX_ERR(5, 192, __pyx_L3_error)
      }
    } else if (PyTuple_GET_SIZE(__pyx_args) != 1) {
      goto __pyx_L5_argtuple_error;
    } else {
      values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
    }
    __pyx_v_fallback_credentials = values[0];
  }
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("__cinit__", 1, 1, 1, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(5, 192, __pyx_L3_error)
  __pyx_L3_error:;
  __Pyx_AddTraceback("grpc._cython.cygrpc.XDSChannelCredentials.__cinit__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return -1;
  __pyx_L4_argument_unpacking_done:;
  __pyx_r = __pyx_pf_4grpc_7_cython_6cygrpc_21XDSChannelCredentials___cinit__(((struct __pyx_obj_4grpc_7_cython_6cygrpc_XDSChannelCredentials *)__pyx_v_self), __pyx_v_fallback_credentials);

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static int __pyx_pf_4grpc_7_cython_6cygrpc_21XDSChannelCredentials___cinit__(struct __pyx_obj_4grpc_7_cython_6cygrpc_XDSChannelCredentials *__pyx_v_self, PyObject *__pyx_v_fallback_credentials) {
  int __pyx_r;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("__cinit__", 0);

  /* "src/python/grpcio/grpc/_cython/_cygrpc/credentials.pyx.pxi":193
 * 
 *     def __cinit__(self, fallback_credentials):
 *         self._fallback_credentials = fallback_credentials             # <<<<<<<<<<<<<<
 * 
 *     cdef grpc_channel_credentials *c(self) except *:
 */
  if (!(likely(((__pyx_v_fallback_credentials) == Py_None) || likely(__Pyx_TypeTest(__pyx_v_fallback_credentials, __pyx_ptype_4grpc_7_cython_6cygrpc_ChannelCredentials))))) __PYX_ERR(5, 193, __pyx_L1_error)
  __pyx_t_1 = __pyx_v_fallback_credentials;
  __Pyx_INCREF(__pyx_t_1);
  __Pyx_GIVEREF(__pyx_t_1);
  __Pyx_GOTREF(__pyx_v_self->_fallback_credentials);
  __Pyx_DECREF(((PyObject *)__pyx_v_self->_fallback_credentials));
  __pyx_v_self->_fallback_credentials = ((struct __pyx_obj_4grpc_7_cython_6cygrpc_ChannelCredentials *)__pyx_t_1);
  __pyx_t_1 = 0;

  /* "src/python/grpcio/grpc/_cython/_cygrpc/credentials.pyx.pxi":192
 * cdef class XDSChannelCredentials(ChannelCredentials):
 * 
 *     def __cinit__(self, fallback_credentials):             # <<<<<<<<<<<<<<
 *         self._fallback_credentials = fallback_credentials
 * 
 */

  /* function exit code */
  __pyx_r = 0;
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_AddTraceback("grpc._cython.cygrpc.XDSChannelCredentials.__cinit__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = -1;
  __pyx_L0:;
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "src/python/grpcio/grpc/_cython/_cygrpc/credentials.pyx.pxi":195
 *         self._fallback_credentials = fallback_credentials
 * 
 *     cdef grpc_channel_credentials *c(self) except *:             # <<<<<<<<<<<<<<
 *       cdef grpc_channel_credentials *c_fallback_creds = self._fallback_credentials.c()
 *       cdef grpc_channel_credentials *xds_creds = grpc_xds_credentials_create(c_fallback_creds)
 */

static grpc_channel_credentials *__pyx_f_4grpc_7_cython_6cygrpc_21XDSChannelCredentials_c(struct __pyx_obj_4grpc_7_cython_6cygrpc_XDSChannelCredentials *__pyx_v_self) {
  grpc_channel_credentials *__pyx_v_c_fallback_creds;
  grpc_channel_credentials *__pyx_v_xds_creds;
  grpc_channel_credentials *__pyx_r;
  __Pyx_RefNannyDeclarations
  grpc_channel_credentials *__pyx_t_1;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("c", 0);

  /* "src/python/grpcio/grpc/_cython/_cygrpc/credentials.pyx.pxi":196
 * 
 *     cdef grpc_channel_credentials *c(self) except *:
 *       cdef grpc_channel_credentials *c_fallback_creds = self._fallback_credentials.c()             # <<<<<<<<<<<<<<
 *       cdef grpc_channel_credentials *xds_creds = grpc_xds_credentials_create(c_fallback_creds)
 *       grpc_channel_credentials_release(c_fallback_creds)
 */
  __pyx_t_1 = ((struct __pyx_vtabstruct_4grpc_7_cython_6cygrpc_ChannelCredentials *)__pyx_v_self->_fallback_credentials->__pyx_vtab)->c(__pyx_v_self->_fallback_credentials); if (unlikely(PyErr_Occurred())) __PYX_ERR(5, 196, __pyx_L1_error)
  __pyx_v_c_fallback_creds = __pyx_t_1;

  /* "src/python/grpcio/grpc/_cython/_cygrpc/credentials.pyx.pxi":197
 *     cdef grpc_channel_credentials *c(self) except *:
 *       cdef grpc_channel_credentials *c_fallback_creds = self._fallback_credentials.c()
 *       cdef grpc_channel_credentials *xds_creds = grpc_xds_credentials_create(c_fallback_creds)             # <<<<<<<<<<<<<<
 *       grpc_channel_credentials_release(c_fallback_creds)
 *       return xds_creds
 */
  __pyx_v_xds_creds = grpc_xds_credentials_create(__pyx_v_c_fallback_creds);

  /* "src/python/grpcio/grpc/_cython/_cygrpc/credentials.pyx.pxi":198
 *       cdef grpc_channel_credentials *c_fallback_creds = self._fallback_credentials.c()
 *       cdef grpc_channel_credentials *xds_creds = grpc_xds_credentials_create(c_fallback_creds)
 *       grpc_channel_credentials_release(c_fallback_creds)             # <<<<<<<<<<<<<<
 *       return xds_creds
 * 
 */
  grpc_channel_credentials_release(__pyx_v_c_fallback_creds);

  /* "src/python/grpcio/grpc/_cython/_cygrpc/credentials.pyx.pxi":199
 *       cdef grpc_channel_credentials *xds_creds = grpc_xds_credentials_create(c_fallback_creds)
 *       grpc_channel_credentials_release(c_fallback_creds)
 *       return xds_creds             # <<<<<<<<<<<<<<
 * 
 * 
 */
  __pyx_r = __pyx_v_xds_creds;
  goto __pyx_L0;

  /* "src/python/grpcio/grpc/_cython/_cygrpc/credentials.pyx.pxi":195
 *         self._fallback_credentials = fallback_credentials
 * 
 *     cdef grpc_channel_credentials *c(self) except *:             # <<<<<<<<<<<<<<
 *       cdef grpc_channel_credentials *c_fallback_creds = self._fallback_credentials.c()
 *       cdef grpc_channel_credentials *xds_creds = grpc_xds_credentials_create(c_fallback_creds)
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_AddTraceback("grpc._cython.cygrpc.XDSChannelCredentials.c", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = 0;
  __pyx_L0:;
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "src/python/grpcio/grpc/_cython/_cygrpc/credentials.pxd.pxi":81
 * cdef class XDSChannelCredentials(ChannelCredentials):
 * 
 *   cdef readonly ChannelCredentials _fallback_credentials             # <<<<<<<<<<<<<<
 * 
 *   cdef grpc_channel_credentials *c(self) except *
 */

/* Python wrapper */
static PyObject *__pyx_pw_4grpc_7_cython_6cygrpc_21XDSChannelCredentials_21_fallback_credentials_1__get__(PyObject *__pyx_v_self); /*proto*/
static PyObject *__pyx_pw_4grpc_7_cython_6cygrpc_21XDSChannelCredentials_21_fallback_credentials_1__get__(PyObject *__pyx_v_self) {
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__get__ (wrapper)", 0);
  __pyx_r = __pyx_pf_4grpc_7_cython_6cygrpc_21XDSChannelCredentials_21_fallback_credentials___get__(((struct __pyx_obj_4grpc_7_cython_6cygrpc_XDSChannelCredentials *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_4grpc_7_cython_6cygrpc_21XDSChannelCredentials_21_fallback_credentials___get__(struct __pyx_obj_4grpc_7_cython_6cygrpc_XDSChannelCredentials *__pyx_v_self) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__get__", 0);
  __Pyx_XDECREF(__pyx_r);
  __Pyx_INCREF(((PyObject *)__pyx_v_self->_fallback_credentials));
  __pyx_r = ((PyObject *)__pyx_v_self->_fallback_credentials);
  goto __pyx_L0;

  /* function exit code */
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "(tree fragment)":1
 * def __reduce_cython__(self):             # <<<<<<<<<<<<<<
 *     raise TypeError("no default __reduce__ due to non-trivial __cinit__")
 * def __setstate_cython__(self, __pyx_state):
 */

/* Python wrapper */
static PyObject *__pyx_pw_4grpc_7_cython_6cygrpc_21XDSChannelCredentials_3__reduce_cython__(PyObject *__pyx_v_self, CYTHON_UNUSED PyObject *unused); /*proto*/
static PyObject *__pyx_pw_4grpc_7_cython_6cygrpc_21XDSChannelCredentials_3__reduce_cython__(PyObject *__pyx_v_self, CYTHON_UNUSED PyObject *unused) {
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__reduce_cython__ (wrapper)", 0);
  __pyx_r = __pyx_pf_4grpc_7_cython_6cygrpc_21XDSChannelCredentials_2__reduce_cython__(((struct __pyx_obj_4grpc_7_cython_6cygrpc_XDSChannelCredentials *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_4grpc_7_cython_6cygrpc_21XDSChannelCredentials_2__reduce_cython__(CYTHON_UNUSED struct __pyx_obj_4grpc_7_cython_6cygrpc_XDSChannelCredentials *__pyx_v_self) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("__reduce_cython__", 0);

  /* "(tree fragment)":2
 * def __reduce_cython__(self):
 *     raise TypeError("no default __reduce__ due to non-trivial __cinit__")             # <<<<<<<<<<<<<<
 * def __setstate_cython__(self, __pyx_state):
 *     raise TypeError("no default __reduce__ due to non-trivial __cinit__")
 */
  __pyx_t_1 = __Pyx_PyObject_Call(__pyx_builtin_TypeError, __pyx_tuple__48, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(11, 2, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_Raise(__pyx_t_1, 0, 0, 0);
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  __PYX_ERR(11, 2, __pyx_L1_error)

  /* "(tree fragment)":1
 * def __reduce_cython__(self):             # <<<<<<<<<<<<<<
 *     raise TypeError("no default __reduce__ due to non-trivial __cinit__")
 * def __setstate_cython__(self, __pyx_state):
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_AddTraceback("grpc._cython.cygrpc.XDSChannelCredentials.__reduce_cython__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "(tree fragment)":3
 * def __reduce_cython__(self):
 *     raise TypeError("no default __reduce__ due to non-trivial __cinit__")
 * def __setstate_cython__(self, __pyx_state):             # <<<<<<<<<<<<<<
 *     raise TypeError("no default __reduce__ due to non-trivial __cinit__")
 */

/* Python wrapper */
static PyObject *__pyx_pw_4grpc_7_cython_6cygrpc_21XDSChannelCredentials_5__setstate_cython__(PyObject *__pyx_v_self, PyObject *__pyx_v___pyx_state); /*proto*/
static PyObject *__pyx_pw_4grpc_7_cython_6cygrpc_21XDSChannelCredentials_5__setstate_cython__(PyObject *__pyx_v_self, PyObject *__pyx_v___pyx_state) {
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__setstate_cython__ (wrapper)", 0);
  __pyx_r = __pyx_pf_4grpc_7_cython_6cygrpc_21XDSChannelCredentials_4__setstate_cython__(((struct __pyx_obj_4grpc_7_cython_6cygrpc_XDSChannelCredentials *)__pyx_v_self), ((PyObject *)__pyx_v___pyx_state));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_4grpc_7_cython_6cygrpc_21XDSChannelCredentials_4__setstate_cython__(CYTHON_UNUSED struct __pyx_obj_4grpc_7_cython_6cygrpc_XDSChannelCredentials *__pyx_v_self, CYTHON_UNUSED PyObject *__pyx_v___pyx_state) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("__setstate_cython__", 0);

  /* "(tree fragment)":4
 *     raise TypeError("no default __reduce__ due to non-trivial __cinit__")
 * def __setstate_cython__(self, __pyx_state):
 *     raise TypeError("no default __reduce__ due to non-trivial __cinit__")             # <<<<<<<<<<<<<<
 */
  __pyx_t_1 = __Pyx_PyObject_Call(__pyx_builtin_TypeError, __pyx_tuple__49, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(11, 4, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_Raise(__pyx_t_1, 0, 0, 0);
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  __PYX_ERR(11, 4, __pyx_L1_error)

  /* "(tree fragment)":3
 * def __reduce_cython__(self):
 *     raise TypeError("no default __reduce__ due to non-trivial __cinit__")
 * def __setstate_cython__(self, __pyx_state):             # <<<<<<<<<<<<<<
 *     raise TypeError("no default __reduce__ due to non-trivial __cinit__")
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_AddTraceback("grpc._cython.cygrpc.XDSChannelCredentials.__setstate_cython__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "src/python/grpcio/grpc/_cython/_cygrpc/credentials.pyx.pxi":204
 * cdef class ServerCertificateConfig:
 * 
 *   def __cinit__(self):             # <<<<<<<<<<<<<<
 *     fork_handlers_and_grpc_init()
 *     self.c_cert_config = NULL
 */

/* Python wrapper */
static int __pyx_pw_4grpc_7_cython_6cygrpc_23ServerCertificateConfig_1__cinit__(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
static int __pyx_pw_4grpc_7_cython_6cygrpc_23ServerCertificateConfig_1__cinit__(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
  int __pyx_r;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__cinit__ (wrapper)", 0);
  if (unlikely(PyTuple_GET_SIZE(__pyx_args) > 0)) {
    __Pyx_RaiseArgtupleInvalid("__cinit__", 1, 0, 0, PyTuple_GET_SIZE(__pyx_args)); return -1;}
  if (unlikely(__pyx_kwds) && unlikely(PyDict_Size(__pyx_kwds) > 0) && unlikely(!__Pyx_CheckKeywordStrings(__pyx_kwds, "__cinit__", 0))) return -1;
  __pyx_r = __pyx_pf_4grpc_7_cython_6cygrpc_23ServerCertificateConfig___cinit__(((struct __pyx_obj_4grpc_7_cython_6cygrpc_ServerCertificateConfig *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static int __pyx_pf_4grpc_7_cython_6cygrpc_23ServerCertificateConfig___cinit__(struct __pyx_obj_4grpc_7_cython_6cygrpc_ServerCertificateConfig *__pyx_v_self) {
  int __pyx_r;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  PyObject *__pyx_t_2 = NULL;
  PyObject *__pyx_t_3 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("__cinit__", 0);

  /* "src/python/grpcio/grpc/_cython/_cygrpc/credentials.pyx.pxi":205
 * 
 *   def __cinit__(self):
 *     fork_handlers_and_grpc_init()             # <<<<<<<<<<<<<<
 *     self.c_cert_config = NULL
 *     self.c_pem_root_certs = NULL
 */
  __Pyx_GetModuleGlobalName(__pyx_t_2, __pyx_n_s_fork_handlers_and_grpc_init); if (unlikely(!__pyx_t_2)) __PYX_ERR(5, 205, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __pyx_t_3 = NULL;
  if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_2))) {
    __pyx_t_3 = PyMethod_GET_SELF(__pyx_t_2);
    if (likely(__pyx_t_3)) {
      PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_2);
      __Pyx_INCREF(__pyx_t_3);
      __Pyx_INCREF(function);
      __Pyx_DECREF_SET(__pyx_t_2, function);
    }
  }
  __pyx_t_1 = (__pyx_t_3) ? __Pyx_PyObject_CallOneArg(__pyx_t_2, __pyx_t_3) : __Pyx_PyObject_CallNoArg(__pyx_t_2);
  __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0;
  if (unlikely(!__pyx_t_1)) __PYX_ERR(5, 205, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;

  /* "src/python/grpcio/grpc/_cython/_cygrpc/credentials.pyx.pxi":206
 *   def __cinit__(self):
 *     fork_handlers_and_grpc_init()
 *     self.c_cert_config = NULL             # <<<<<<<<<<<<<<
 *     self.c_pem_root_certs = NULL
 *     self.c_ssl_pem_key_cert_pairs = NULL
 */
  __pyx_v_self->c_cert_config = NULL;

  /* "src/python/grpcio/grpc/_cython/_cygrpc/credentials.pyx.pxi":207
 *     fork_handlers_and_grpc_init()
 *     self.c_cert_config = NULL
 *     self.c_pem_root_certs = NULL             # <<<<<<<<<<<<<<
 *     self.c_ssl_pem_key_cert_pairs = NULL
 *     self.references = []
 */
  __pyx_v_self->c_pem_root_certs = NULL;

  /* "src/python/grpcio/grpc/_cython/_cygrpc/credentials.pyx.pxi":208
 *     self.c_cert_config = NULL
 *     self.c_pem_root_certs = NULL
 *     self.c_ssl_pem_key_cert_pairs = NULL             # <<<<<<<<<<<<<<
 *     self.references = []
 * 
 */
  __pyx_v_self->c_ssl_pem_key_cert_pairs = NULL;

  /* "src/python/grpcio/grpc/_cython/_cygrpc/credentials.pyx.pxi":209
 *     self.c_pem_root_certs = NULL
 *     self.c_ssl_pem_key_cert_pairs = NULL
 *     self.references = []             # <<<<<<<<<<<<<<
 * 
 *   def __dealloc__(self):
 */
  __pyx_t_1 = PyList_New(0); if (unlikely(!__pyx_t_1)) __PYX_ERR(5, 209, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_GIVEREF(__pyx_t_1);
  __Pyx_GOTREF(__pyx_v_self->references);
  __Pyx_DECREF(__pyx_v_self->references);
  __pyx_v_self->references = ((PyObject*)__pyx_t_1);
  __pyx_t_1 = 0;

  /* "src/python/grpcio/grpc/_cython/_cygrpc/credentials.pyx.pxi":204
 * cdef class ServerCertificateConfig:
 * 
 *   def __cinit__(self):             # <<<<<<<<<<<<<<
 *     fork_handlers_and_grpc_init()
 *     self.c_cert_config = NULL
 */

  /* function exit code */
  __pyx_r = 0;
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_XDECREF(__pyx_t_3);
  __Pyx_AddTraceback("grpc._cython.cygrpc.ServerCertificateConfig.__cinit__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = -1;
  __pyx_L0:;
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "src/python/grpcio/grpc/_cython/_cygrpc/credentials.pyx.pxi":211
 *     self.references = []
 * 
 *   def __dealloc__(self):             # <<<<<<<<<<<<<<
 *     grpc_ssl_server_certificate_config_destroy(self.c_cert_config)
 *     gpr_free(self.c_ssl_pem_key_cert_pairs)
 */

/* Python wrapper */
static void __pyx_pw_4grpc_7_cython_6cygrpc_23ServerCertificateConfig_3__dealloc__(PyObject *__pyx_v_self); /*proto*/
static void __pyx_pw_4grpc_7_cython_6cygrpc_23ServerCertificateConfig_3__dealloc__(PyObject *__pyx_v_self) {
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__dealloc__ (wrapper)", 0);
  __pyx_pf_4grpc_7_cython_6cygrpc_23ServerCertificateConfig_2__dealloc__(((struct __pyx_obj_4grpc_7_cython_6cygrpc_ServerCertificateConfig *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
}

static void __pyx_pf_4grpc_7_cython_6cygrpc_23ServerCertificateConfig_2__dealloc__(struct __pyx_obj_4grpc_7_cython_6cygrpc_ServerCertificateConfig *__pyx_v_self) {
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__dealloc__", 0);

  /* "src/python/grpcio/grpc/_cython/_cygrpc/credentials.pyx.pxi":212
 * 
 *   def __dealloc__(self):
 *     grpc_ssl_server_certificate_config_destroy(self.c_cert_config)             # <<<<<<<<<<<<<<
 *     gpr_free(self.c_ssl_pem_key_cert_pairs)
 *     grpc_shutdown()
 */
  grpc_ssl_server_certificate_config_destroy(__pyx_v_self->c_cert_config);

  /* "src/python/grpcio/grpc/_cython/_cygrpc/credentials.pyx.pxi":213
 *   def __dealloc__(self):
 *     grpc_ssl_server_certificate_config_destroy(self.c_cert_config)
 *     gpr_free(self.c_ssl_pem_key_cert_pairs)             # <<<<<<<<<<<<<<
 *     grpc_shutdown()
 * 
 */
  gpr_free(__pyx_v_self->c_ssl_pem_key_cert_pairs);

  /* "src/python/grpcio/grpc/_cython/_cygrpc/credentials.pyx.pxi":214
 *     grpc_ssl_server_certificate_config_destroy(self.c_cert_config)
 *     gpr_free(self.c_ssl_pem_key_cert_pairs)
 *     grpc_shutdown()             # <<<<<<<<<<<<<<
 * 
 * 
 */
  grpc_shutdown();

  /* "src/python/grpcio/grpc/_cython/_cygrpc/credentials.pyx.pxi":211
 *     self.references = []
 * 
 *   def __dealloc__(self):             # <<<<<<<<<<<<<<
 *     grpc_ssl_server_certificate_config_destroy(self.c_cert_config)
 *     gpr_free(self.c_ssl_pem_key_cert_pairs)
 */

  /* function exit code */
  __Pyx_RefNannyFinishContext();
}

/* "(tree fragment)":1
 * def __reduce_cython__(self):             # <<<<<<<<<<<<<<
 *     raise TypeError("no default __reduce__ due to non-trivial __cinit__")
 * def __setstate_cython__(self, __pyx_state):
 */

/* Python wrapper */
static PyObject *__pyx_pw_4grpc_7_cython_6cygrpc_23ServerCertificateConfig_5__reduce_cython__(PyObject *__pyx_v_self, CYTHON_UNUSED PyObject *unused); /*proto*/
static PyObject *__pyx_pw_4grpc_7_cython_6cygrpc_23ServerCertificateConfig_5__reduce_cython__(PyObject *__pyx_v_self, CYTHON_UNUSED PyObject *unused) {
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__reduce_cython__ (wrapper)", 0);
  __pyx_r = __pyx_pf_4grpc_7_cython_6cygrpc_23ServerCertificateConfig_4__reduce_cython__(((struct __pyx_obj_4grpc_7_cython_6cygrpc_ServerCertificateConfig *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_4grpc_7_cython_6cygrpc_23ServerCertificateConfig_4__reduce_cython__(CYTHON_UNUSED struct __pyx_obj_4grpc_7_cython_6cygrpc_ServerCertificateConfig *__pyx_v_self) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("__reduce_cython__", 0);

  /* "(tree fragment)":2
 * def __reduce_cython__(self):
 *     raise TypeError("no default __reduce__ due to non-trivial __cinit__")             # <<<<<<<<<<<<<<
 * def __setstate_cython__(self, __pyx_state):
 *     raise TypeError("no default __reduce__ due to non-trivial __cinit__")
 */
  __pyx_t_1 = __Pyx_PyObject_Call(__pyx_builtin_TypeError, __pyx_tuple__50, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(11, 2, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_Raise(__pyx_t_1, 0, 0, 0);
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  __PYX_ERR(11, 2, __pyx_L1_error)

  /* "(tree fragment)":1
 * def __reduce_cython__(self):             # <<<<<<<<<<<<<<
 *     raise TypeError("no default __reduce__ due to non-trivial __cinit__")
 * def __setstate_cython__(self, __pyx_state):
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_AddTraceback("grpc._cython.cygrpc.ServerCertificateConfig.__reduce_cython__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "(tree fragment)":3
 * def __reduce_cython__(self):
 *     raise TypeError("no default __reduce__ due to non-trivial __cinit__")
 * def __setstate_cython__(self, __pyx_state):             # <<<<<<<<<<<<<<
 *     raise TypeError("no default __reduce__ due to non-trivial __cinit__")
 */

/* Python wrapper */
static PyObject *__pyx_pw_4grpc_7_cython_6cygrpc_23ServerCertificateConfig_7__setstate_cython__(PyObject *__pyx_v_self, PyObject *__pyx_v___pyx_state); /*proto*/
static PyObject *__pyx_pw_4grpc_7_cython_6cygrpc_23ServerCertificateConfig_7__setstate_cython__(PyObject *__pyx_v_self, PyObject *__pyx_v___pyx_state) {
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__setstate_cython__ (wrapper)", 0);
  __pyx_r = __pyx_pf_4grpc_7_cython_6cygrpc_23ServerCertificateConfig_6__setstate_cython__(((struct __pyx_obj_4grpc_7_cython_6cygrpc_ServerCertificateConfig *)__pyx_v_self), ((PyObject *)__pyx_v___pyx_state));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_4grpc_7_cython_6cygrpc_23ServerCertificateConfig_6__setstate_cython__(CYTHON_UNUSED struct __pyx_obj_4grpc_7_cython_6cygrpc_ServerCertificateConfig *__pyx_v_self, CYTHON_UNUSED PyObject *__pyx_v___pyx_state) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("__setstate_cython__", 0);

  /* "(tree fragment)":4
 *     raise TypeError("no default __reduce__ due to non-trivial __cinit__")
 * def __setstate_cython__(self, __pyx_state):
 *     raise TypeError("no default __reduce__ due to non-trivial __cinit__")             # <<<<<<<<<<<<<<
 */
  __pyx_t_1 = __Pyx_PyObject_Call(__pyx_builtin_TypeError, __pyx_tuple__51, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(11, 4, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_Raise(__pyx_t_1, 0, 0, 0);
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  __PYX_ERR(11, 4, __pyx_L1_error)

  /* "(tree fragment)":3
 * def __reduce_cython__(self):
 *     raise TypeError("no default __reduce__ due to non-trivial __cinit__")
 * def __setstate_cython__(self, __pyx_state):             # <<<<<<<<<<<<<<
 *     raise TypeError("no default __reduce__ due to non-trivial __cinit__")
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_AddTraceback("grpc._cython.cygrpc.ServerCertificateConfig.__setstate_cython__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "src/python/grpcio/grpc/_cython/_cygrpc/credentials.pyx.pxi":219
 * cdef class ServerCredentials:
 * 
 *   def __cinit__(self):             # <<<<<<<<<<<<<<
 *     fork_handlers_and_grpc_init()
 *     self.c_credentials = NULL
 */

/* Python wrapper */
static int __pyx_pw_4grpc_7_cython_6cygrpc_17ServerCredentials_1__cinit__(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
static int __pyx_pw_4grpc_7_cython_6cygrpc_17ServerCredentials_1__cinit__(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
  int __pyx_r;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__cinit__ (wrapper)", 0);
  if (unlikely(PyTuple_GET_SIZE(__pyx_args) > 0)) {
    __Pyx_RaiseArgtupleInvalid("__cinit__", 1, 0, 0, PyTuple_GET_SIZE(__pyx_args)); return -1;}
  if (unlikely(__pyx_kwds) && unlikely(PyDict_Size(__pyx_kwds) > 0) && unlikely(!__Pyx_CheckKeywordStrings(__pyx_kwds, "__cinit__", 0))) return -1;
  __pyx_r = __pyx_pf_4grpc_7_cython_6cygrpc_17ServerCredentials___cinit__(((struct __pyx_obj_4grpc_7_cython_6cygrpc_ServerCredentials *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static int __pyx_pf_4grpc_7_cython_6cygrpc_17ServerCredentials___cinit__(struct __pyx_obj_4grpc_7_cython_6cygrpc_ServerCredentials *__pyx_v_self) {
  int __pyx_r;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  PyObject *__pyx_t_2 = NULL;
  PyObject *__pyx_t_3 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("__cinit__", 0);

  /* "src/python/grpcio/grpc/_cython/_cygrpc/credentials.pyx.pxi":220
 * 
 *   def __cinit__(self):
 *     fork_handlers_and_grpc_init()             # <<<<<<<<<<<<<<
 *     self.c_credentials = NULL
 *     self.references = []
 */
  __Pyx_GetModuleGlobalName(__pyx_t_2, __pyx_n_s_fork_handlers_and_grpc_init); if (unlikely(!__pyx_t_2)) __PYX_ERR(5, 220, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __pyx_t_3 = NULL;
  if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_2))) {
    __pyx_t_3 = PyMethod_GET_SELF(__pyx_t_2);
    if (likely(__pyx_t_3)) {
      PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_2);
      __Pyx_INCREF(__pyx_t_3);
      __Pyx_INCREF(function);
      __Pyx_DECREF_SET(__pyx_t_2, function);
    }
  }
  __pyx_t_1 = (__pyx_t_3) ? __Pyx_PyObject_CallOneArg(__pyx_t_2, __pyx_t_3) : __Pyx_PyObject_CallNoArg(__pyx_t_2);
  __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0;
  if (unlikely(!__pyx_t_1)) __PYX_ERR(5, 220, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;

  /* "src/python/grpcio/grpc/_cython/_cygrpc/credentials.pyx.pxi":221
 *   def __cinit__(self):
 *     fork_handlers_and_grpc_init()
 *     self.c_credentials = NULL             # <<<<<<<<<<<<<<
 *     self.references = []
 *     self.initial_cert_config = None
 */
  __pyx_v_self->c_credentials = NULL;

  /* "src/python/grpcio/grpc/_cython/_cygrpc/credentials.pyx.pxi":222
 *     fork_handlers_and_grpc_init()
 *     self.c_credentials = NULL
 *     self.references = []             # <<<<<<<<<<<<<<
 *     self.initial_cert_config = None
 *     self.cert_config_fetcher = None
 */
  __pyx_t_1 = PyList_New(0); if (unlikely(!__pyx_t_1)) __PYX_ERR(5, 222, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_GIVEREF(__pyx_t_1);
  __Pyx_GOTREF(__pyx_v_self->references);
  __Pyx_DECREF(__pyx_v_self->references);
  __pyx_v_self->references = ((PyObject*)__pyx_t_1);
  __pyx_t_1 = 0;

  /* "src/python/grpcio/grpc/_cython/_cygrpc/credentials.pyx.pxi":223
 *     self.c_credentials = NULL
 *     self.references = []
 *     self.initial_cert_config = None             # <<<<<<<<<<<<<<
 *     self.cert_config_fetcher = None
 *     self.initial_cert_config_fetched = False
 */
  __Pyx_INCREF(Py_None);
  __Pyx_GIVEREF(Py_None);
  __Pyx_GOTREF(__pyx_v_self->initial_cert_config);
  __Pyx_DECREF(__pyx_v_self->initial_cert_config);
  __pyx_v_self->initial_cert_config = Py_None;

  /* "src/python/grpcio/grpc/_cython/_cygrpc/credentials.pyx.pxi":224
 *     self.references = []
 *     self.initial_cert_config = None
 *     self.cert_config_fetcher = None             # <<<<<<<<<<<<<<
 *     self.initial_cert_config_fetched = False
 * 
 */
  __Pyx_INCREF(Py_None);
  __Pyx_GIVEREF(Py_None);
  __Pyx_GOTREF(__pyx_v_self->cert_config_fetcher);
  __Pyx_DECREF(__pyx_v_self->cert_config_fetcher);
  __pyx_v_self->cert_config_fetcher = Py_None;

  /* "src/python/grpcio/grpc/_cython/_cygrpc/credentials.pyx.pxi":225
 *     self.initial_cert_config = None
 *     self.cert_config_fetcher = None
 *     self.initial_cert_config_fetched = False             # <<<<<<<<<<<<<<
 * 
 *   def __dealloc__(self):
 */
  __pyx_v_self->initial_cert_config_fetched = 0;

  /* "src/python/grpcio/grpc/_cython/_cygrpc/credentials.pyx.pxi":219
 * cdef class ServerCredentials:
 * 
 *   def __cinit__(self):             # <<<<<<<<<<<<<<
 *     fork_handlers_and_grpc_init()
 *     self.c_credentials = NULL
 */

  /* function exit code */
  __pyx_r = 0;
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_XDECREF(__pyx_t_3);
  __Pyx_AddTraceback("grpc._cython.cygrpc.ServerCredentials.__cinit__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = -1;
  __pyx_L0:;
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "src/python/grpcio/grpc/_cython/_cygrpc/credentials.pyx.pxi":227
 *     self.initial_cert_config_fetched = False
 * 
 *   def __dealloc__(self):             # <<<<<<<<<<<<<<
 *     if self.c_credentials != NULL:
 *       grpc_server_credentials_release(self.c_credentials)
 */

/* Python wrapper */
static void __pyx_pw_4grpc_7_cython_6cygrpc_17ServerCredentials_3__dealloc__(PyObject *__pyx_v_self); /*proto*/
static void __pyx_pw_4grpc_7_cython_6cygrpc_17ServerCredentials_3__dealloc__(PyObject *__pyx_v_self) {
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__dealloc__ (wrapper)", 0);
  __pyx_pf_4grpc_7_cython_6cygrpc_17ServerCredentials_2__dealloc__(((struct __pyx_obj_4grpc_7_cython_6cygrpc_ServerCredentials *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
}

static void __pyx_pf_4grpc_7_cython_6cygrpc_17ServerCredentials_2__dealloc__(struct __pyx_obj_4grpc_7_cython_6cygrpc_ServerCredentials *__pyx_v_self) {
  __Pyx_RefNannyDeclarations
  int __pyx_t_1;
  __Pyx_RefNannySetupContext("__dealloc__", 0);

  /* "src/python/grpcio/grpc/_cython/_cygrpc/credentials.pyx.pxi":228
 * 
 *   def __dealloc__(self):
 *     if self.c_credentials != NULL:             # <<<<<<<<<<<<<<
 *       grpc_server_credentials_release(self.c_credentials)
 *     grpc_shutdown()
 */
  __pyx_t_1 = ((__pyx_v_self->c_credentials != NULL) != 0);
  if (__pyx_t_1) {

    /* "src/python/grpcio/grpc/_cython/_cygrpc/credentials.pyx.pxi":229
 *   def __dealloc__(self):
 *     if self.c_credentials != NULL:
 *       grpc_server_credentials_release(self.c_credentials)             # <<<<<<<<<<<<<<
 *     grpc_shutdown()
 * 
 */
    grpc_server_credentials_release(__pyx_v_self->c_credentials);

    /* "src/python/grpcio/grpc/_cython/_cygrpc/credentials.pyx.pxi":228
 * 
 *   def __dealloc__(self):
 *     if self.c_credentials != NULL:             # <<<<<<<<<<<<<<
 *       grpc_server_credentials_release(self.c_credentials)
 *     grpc_shutdown()
 */
  }

  /* "src/python/grpcio/grpc/_cython/_cygrpc/credentials.pyx.pxi":230
 *     if self.c_credentials != NULL:
 *       grpc_server_credentials_release(self.c_credentials)
 *     grpc_shutdown()             # <<<<<<<<<<<<<<
 * 
 * cdef const char* _get_c_pem_root_certs(pem_root_certs):
 */
  grpc_shutdown();

  /* "src/python/grpcio/grpc/_cython/_cygrpc/credentials.pyx.pxi":227
 *     self.initial_cert_config_fetched = False
 * 
 *   def __dealloc__(self):             # <<<<<<<<<<<<<<
 *     if self.c_credentials != NULL:
 *       grpc_server_credentials_release(self.c_credentials)
 */

  /* function exit code */
  __Pyx_RefNannyFinishContext();
}

/* "(tree fragment)":1
 * def __reduce_cython__(self):             # <<<<<<<<<<<<<<
 *     raise TypeError("no default __reduce__ due to non-trivial __cinit__")
 * def __setstate_cython__(self, __pyx_state):
 */

/* Python wrapper */
static PyObject *__pyx_pw_4grpc_7_cython_6cygrpc_17ServerCredentials_5__reduce_cython__(PyObject *__pyx_v_self, CYTHON_UNUSED PyObject *unused); /*proto*/
static PyObject *__pyx_pw_4grpc_7_cython_6cygrpc_17ServerCredentials_5__reduce_cython__(PyObject *__pyx_v_self, CYTHON_UNUSED PyObject *unused) {
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__reduce_cython__ (wrapper)", 0);
  __pyx_r = __pyx_pf_4grpc_7_cython_6cygrpc_17ServerCredentials_4__reduce_cython__(((struct __pyx_obj_4grpc_7_cython_6cygrpc_ServerCredentials *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_4grpc_7_cython_6cygrpc_17ServerCredentials_4__reduce_cython__(CYTHON_UNUSED struct __pyx_obj_4grpc_7_cython_6cygrpc_ServerCredentials *__pyx_v_self) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("__reduce_cython__", 0);

  /* "(tree fragment)":2
 * def __reduce_cython__(self):
 *     raise TypeError("no default __reduce__ due to non-trivial __cinit__")             # <<<<<<<<<<<<<<
 * def __setstate_cython__(self, __pyx_state):
 *     raise TypeError("no default __reduce__ due to non-trivial __cinit__")
 */
  __pyx_t_1 = __Pyx_PyObject_Call(__pyx_builtin_TypeError, __pyx_tuple__52, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(11, 2, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_Raise(__pyx_t_1, 0, 0, 0);
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  __PYX_ERR(11, 2, __pyx_L1_error)

  /* "(tree fragment)":1
 * def __reduce_cython__(self):             # <<<<<<<<<<<<<<
 *     raise TypeError("no default __reduce__ due to non-trivial __cinit__")
 * def __setstate_cython__(self, __pyx_state):
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_AddTraceback("grpc._cython.cygrpc.ServerCredentials.__reduce_cython__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "(tree fragment)":3
 * def __reduce_cython__(self):
 *     raise TypeError("no default __reduce__ due to non-trivial __cinit__")
 * def __setstate_cython__(self, __pyx_state):             # <<<<<<<<<<<<<<
 *     raise TypeError("no default __reduce__ due to non-trivial __cinit__")
 */

/* Python wrapper */
static PyObject *__pyx_pw_4grpc_7_cython_6cygrpc_17ServerCredentials_7__setstate_cython__(PyObject *__pyx_v_self, PyObject *__pyx_v___pyx_state); /*proto*/
static PyObject *__pyx_pw_4grpc_7_cython_6cygrpc_17ServerCredentials_7__setstate_cython__(PyObject *__pyx_v_self, PyObject *__pyx_v___pyx_state) {
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__setstate_cython__ (wrapper)", 0);
  __pyx_r = __pyx_pf_4grpc_7_cython_6cygrpc_17ServerCredentials_6__setstate_cython__(((struct __pyx_obj_4grpc_7_cython_6cygrpc_ServerCredentials *)__pyx_v_self), ((PyObject *)__pyx_v___pyx_state));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_4grpc_7_cython_6cygrpc_17ServerCredentials_6__setstate_cython__(CYTHON_UNUSED struct __pyx_obj_4grpc_7_cython_6cygrpc_ServerCredentials *__pyx_v_self, CYTHON_UNUSED PyObject *__pyx_v___pyx_state) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("__setstate_cython__", 0);

  /* "(tree fragment)":4
 *     raise TypeError("no default __reduce__ due to non-trivial __cinit__")
 * def __setstate_cython__(self, __pyx_state):
 *     raise TypeError("no default __reduce__ due to non-trivial __cinit__")             # <<<<<<<<<<<<<<
 */
  __pyx_t_1 = __Pyx_PyObject_Call(__pyx_builtin_TypeError, __pyx_tuple__53, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(11, 4, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_Raise(__pyx_t_1, 0, 0, 0);
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  __PYX_ERR(11, 4, __pyx_L1_error)

  /* "(tree fragment)":3
 * def __reduce_cython__(self):
 *     raise TypeError("no default __reduce__ due to non-trivial __cinit__")
 * def __setstate_cython__(self, __pyx_state):             # <<<<<<<<<<<<<<
 *     raise TypeError("no default __reduce__ due to non-trivial __cinit__")
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_AddTraceback("grpc._cython.cygrpc.ServerCredentials.__setstate_cython__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "src/python/grpcio/grpc/_cython/_cygrpc/credentials.pyx.pxi":232
 *     grpc_shutdown()
 * 
 * cdef const char* _get_c_pem_root_certs(pem_root_certs):             # <<<<<<<<<<<<<<
 *   if pem_root_certs is None:
 *     return NULL
 */

static char const *__pyx_f_4grpc_7_cython_6cygrpc__get_c_pem_root_certs(PyObject *__pyx_v_pem_root_certs) {
  char const *__pyx_r;
  __Pyx_RefNannyDeclarations
  int __pyx_t_1;
  int __pyx_t_2;
  char const *__pyx_t_3;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("_get_c_pem_root_certs", 0);

  /* "src/python/grpcio/grpc/_cython/_cygrpc/credentials.pyx.pxi":233
 * 
 * cdef const char* _get_c_pem_root_certs(pem_root_certs):
 *   if pem_root_certs is None:             # <<<<<<<<<<<<<<
 *     return NULL
 *   else:
 */
  __pyx_t_1 = (__pyx_v_pem_root_certs == Py_None);
  __pyx_t_2 = (__pyx_t_1 != 0);
  if (__pyx_t_2) {

    /* "src/python/grpcio/grpc/_cython/_cygrpc/credentials.pyx.pxi":234
 * cdef const char* _get_c_pem_root_certs(pem_root_certs):
 *   if pem_root_certs is None:
 *     return NULL             # <<<<<<<<<<<<<<
 *   else:
 *     return pem_root_certs
 */
    __pyx_r = NULL;
    goto __pyx_L0;

    /* "src/python/grpcio/grpc/_cython/_cygrpc/credentials.pyx.pxi":233
 * 
 * cdef const char* _get_c_pem_root_certs(pem_root_certs):
 *   if pem_root_certs is None:             # <<<<<<<<<<<<<<
 *     return NULL
 *   else:
 */
  }

  /* "src/python/grpcio/grpc/_cython/_cygrpc/credentials.pyx.pxi":236
 *     return NULL
 *   else:
 *     return pem_root_certs             # <<<<<<<<<<<<<<
 * 
 * cdef grpc_ssl_pem_key_cert_pair* _create_c_ssl_pem_key_cert_pairs(pem_key_cert_pairs):
 */
  /*else*/ {
    __pyx_t_3 = __Pyx_PyObject_AsString(__pyx_v_pem_root_certs); if (unlikely((!__pyx_t_3) && PyErr_Occurred())) __PYX_ERR(5, 236, __pyx_L1_error)
    __pyx_r = __pyx_t_3;
    goto __pyx_L0;
  }

  /* "src/python/grpcio/grpc/_cython/_cygrpc/credentials.pyx.pxi":232
 *     grpc_shutdown()
 * 
 * cdef const char* _get_c_pem_root_certs(pem_root_certs):             # <<<<<<<<<<<<<<
 *   if pem_root_certs is None:
 *     return NULL
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_WriteUnraisable("grpc._cython.cygrpc._get_c_pem_root_certs", __pyx_clineno, __pyx_lineno, __pyx_filename, 1, 0);
  __pyx_r = 0;
  __pyx_L0:;
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "src/python/grpcio/grpc/_cython/_cygrpc/credentials.pyx.pxi":238
 *     return pem_root_certs
 * 
 * cdef grpc_ssl_pem_key_cert_pair* _create_c_ssl_pem_key_cert_pairs(pem_key_cert_pairs):             # <<<<<<<<<<<<<<
 *   # return a malloc'ed grpc_ssl_pem_key_cert_pair from a _list_ of SslPemKeyCertPair
 *   for pair in pem_key_cert_pairs:
 */

static grpc_ssl_pem_key_cert_pair *__pyx_f_4grpc_7_cython_6cygrpc__create_c_ssl_pem_key_cert_pairs(PyObject *__pyx_v_pem_key_cert_pairs) {
  PyObject *__pyx_v_pair = NULL;
  size_t __pyx_v_c_ssl_pem_key_cert_pairs_count;
  grpc_ssl_pem_key_cert_pair *__pyx_v_c_ssl_pem_key_cert_pairs;
  size_t __pyx_v_i;
  grpc_ssl_pem_key_cert_pair *__pyx_r;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  Py_ssize_t __pyx_t_2;
  PyObject *(*__pyx_t_3)(PyObject *);
  PyObject *__pyx_t_4 = NULL;
  int __pyx_t_5;
  int __pyx_t_6;
  size_t __pyx_t_7;
  size_t __pyx_t_8;
  size_t __pyx_t_9;
  grpc_ssl_pem_key_cert_pair __pyx_t_10;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("_create_c_ssl_pem_key_cert_pairs", 0);

  /* "src/python/grpcio/grpc/_cython/_cygrpc/credentials.pyx.pxi":240
 * cdef grpc_ssl_pem_key_cert_pair* _create_c_ssl_pem_key_cert_pairs(pem_key_cert_pairs):
 *   # return a malloc'ed grpc_ssl_pem_key_cert_pair from a _list_ of SslPemKeyCertPair
 *   for pair in pem_key_cert_pairs:             # <<<<<<<<<<<<<<
 *     if not isinstance(pair, SslPemKeyCertPair):
 *       raise TypeError("expected pem_key_cert_pairs to be sequence of "
 */
  if (likely(PyList_CheckExact(__pyx_v_pem_key_cert_pairs)) || PyTuple_CheckExact(__pyx_v_pem_key_cert_pairs)) {
    __pyx_t_1 = __pyx_v_pem_key_cert_pairs; __Pyx_INCREF(__pyx_t_1); __pyx_t_2 = 0;
    __pyx_t_3 = NULL;
  } else {
    __pyx_t_2 = -1; __pyx_t_1 = PyObject_GetIter(__pyx_v_pem_key_cert_pairs); if (unlikely(!__pyx_t_1)) __PYX_ERR(5, 240, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_1);
    __pyx_t_3 = Py_TYPE(__pyx_t_1)->tp_iternext; if (unlikely(!__pyx_t_3)) __PYX_ERR(5, 240, __pyx_L1_error)
  }
  for (;;) {
    if (likely(!__pyx_t_3)) {
      if (likely(PyList_CheckExact(__pyx_t_1))) {
        if (__pyx_t_2 >= PyList_GET_SIZE(__pyx_t_1)) break;
        #if CYTHON_ASSUME_SAFE_MACROS && !CYTHON_AVOID_BORROWED_REFS
        __pyx_t_4 = PyList_GET_ITEM(__pyx_t_1, __pyx_t_2); __Pyx_INCREF(__pyx_t_4); __pyx_t_2++; if (unlikely(0 < 0)) __PYX_ERR(5, 240, __pyx_L1_error)
        #else
        __pyx_t_4 = PySequence_ITEM(__pyx_t_1, __pyx_t_2); __pyx_t_2++; if (unlikely(!__pyx_t_4)) __PYX_ERR(5, 240, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_4);
        #endif
      } else {
        if (__pyx_t_2 >= PyTuple_GET_SIZE(__pyx_t_1)) break;
        #if CYTHON_ASSUME_SAFE_MACROS && !CYTHON_AVOID_BORROWED_REFS
        __pyx_t_4 = PyTuple_GET_ITEM(__pyx_t_1, __pyx_t_2); __Pyx_INCREF(__pyx_t_4); __pyx_t_2++; if (unlikely(0 < 0)) __PYX_ERR(5, 240, __pyx_L1_error)
        #else
        __pyx_t_4 = PySequence_ITEM(__pyx_t_1, __pyx_t_2); __pyx_t_2++; if (unlikely(!__pyx_t_4)) __PYX_ERR(5, 240, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_4);
        #endif
      }
    } else {
      __pyx_t_4 = __pyx_t_3(__pyx_t_1);
      if (unlikely(!__pyx_t_4)) {
        PyObject* exc_type = PyErr_Occurred();
        if (exc_type) {
          if (likely(__Pyx_PyErr_GivenExceptionMatches(exc_type, PyExc_StopIteration))) PyErr_Clear();
          else __PYX_ERR(5, 240, __pyx_L1_error)
        }
        break;
      }
      __Pyx_GOTREF(__pyx_t_4);
    }
    __Pyx_XDECREF_SET(__pyx_v_pair, __pyx_t_4);
    __pyx_t_4 = 0;

    /* "src/python/grpcio/grpc/_cython/_cygrpc/credentials.pyx.pxi":241
 *   # return a malloc'ed grpc_ssl_pem_key_cert_pair from a _list_ of SslPemKeyCertPair
 *   for pair in pem_key_cert_pairs:
 *     if not isinstance(pair, SslPemKeyCertPair):             # <<<<<<<<<<<<<<
 *       raise TypeError("expected pem_key_cert_pairs to be sequence of "
 *                       "SslPemKeyCertPair")
 */
    __pyx_t_5 = __Pyx_TypeCheck(__pyx_v_pair, __pyx_ptype_4grpc_7_cython_6cygrpc_SslPemKeyCertPair); 
    __pyx_t_6 = ((!(__pyx_t_5 != 0)) != 0);
    if (unlikely(__pyx_t_6)) {

      /* "src/python/grpcio/grpc/_cython/_cygrpc/credentials.pyx.pxi":242
 *   for pair in pem_key_cert_pairs:
 *     if not isinstance(pair, SslPemKeyCertPair):
 *       raise TypeError("expected pem_key_cert_pairs to be sequence of "             # <<<<<<<<<<<<<<
 *                       "SslPemKeyCertPair")
 *   cdef size_t c_ssl_pem_key_cert_pairs_count = len(pem_key_cert_pairs)
 */
      __pyx_t_4 = __Pyx_PyObject_Call(__pyx_builtin_TypeError, __pyx_tuple__54, NULL); if (unlikely(!__pyx_t_4)) __PYX_ERR(5, 242, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_4);
      __Pyx_Raise(__pyx_t_4, 0, 0, 0);
      __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
      __PYX_ERR(5, 242, __pyx_L1_error)

      /* "src/python/grpcio/grpc/_cython/_cygrpc/credentials.pyx.pxi":241
 *   # return a malloc'ed grpc_ssl_pem_key_cert_pair from a _list_ of SslPemKeyCertPair
 *   for pair in pem_key_cert_pairs:
 *     if not isinstance(pair, SslPemKeyCertPair):             # <<<<<<<<<<<<<<
 *       raise TypeError("expected pem_key_cert_pairs to be sequence of "
 *                       "SslPemKeyCertPair")
 */
    }

    /* "src/python/grpcio/grpc/_cython/_cygrpc/credentials.pyx.pxi":240
 * cdef grpc_ssl_pem_key_cert_pair* _create_c_ssl_pem_key_cert_pairs(pem_key_cert_pairs):
 *   # return a malloc'ed grpc_ssl_pem_key_cert_pair from a _list_ of SslPemKeyCertPair
 *   for pair in pem_key_cert_pairs:             # <<<<<<<<<<<<<<
 *     if not isinstance(pair, SslPemKeyCertPair):
 *       raise TypeError("expected pem_key_cert_pairs to be sequence of "
 */
  }
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;

  /* "src/python/grpcio/grpc/_cython/_cygrpc/credentials.pyx.pxi":244
 *       raise TypeError("expected pem_key_cert_pairs to be sequence of "
 *                       "SslPemKeyCertPair")
 *   cdef size_t c_ssl_pem_key_cert_pairs_count = len(pem_key_cert_pairs)             # <<<<<<<<<<<<<<
 *   cdef grpc_ssl_pem_key_cert_pair* c_ssl_pem_key_cert_pairs = NULL
 *   with nogil:
 */
  __pyx_t_2 = PyObject_Length(__pyx_v_pem_key_cert_pairs); if (unlikely(__pyx_t_2 == ((Py_ssize_t)-1))) __PYX_ERR(5, 244, __pyx_L1_error)
  __pyx_v_c_ssl_pem_key_cert_pairs_count = __pyx_t_2;

  /* "src/python/grpcio/grpc/_cython/_cygrpc/credentials.pyx.pxi":245
 *                       "SslPemKeyCertPair")
 *   cdef size_t c_ssl_pem_key_cert_pairs_count = len(pem_key_cert_pairs)
 *   cdef grpc_ssl_pem_key_cert_pair* c_ssl_pem_key_cert_pairs = NULL             # <<<<<<<<<<<<<<
 *   with nogil:
 *     c_ssl_pem_key_cert_pairs = (
 */
  __pyx_v_c_ssl_pem_key_cert_pairs = NULL;

  /* "src/python/grpcio/grpc/_cython/_cygrpc/credentials.pyx.pxi":246
 *   cdef size_t c_ssl_pem_key_cert_pairs_count = len(pem_key_cert_pairs)
 *   cdef grpc_ssl_pem_key_cert_pair* c_ssl_pem_key_cert_pairs = NULL
 *   with nogil:             # <<<<<<<<<<<<<<
 *     c_ssl_pem_key_cert_pairs = (
 *       <grpc_ssl_pem_key_cert_pair *>gpr_malloc(
 */
  {
      #ifdef WITH_THREAD
      PyThreadState *_save;
      Py_UNBLOCK_THREADS
      __Pyx_FastGIL_Remember();
      #endif
      /*try:*/ {

        /* "src/python/grpcio/grpc/_cython/_cygrpc/credentials.pyx.pxi":248
 *   with nogil:
 *     c_ssl_pem_key_cert_pairs = (
 *       <grpc_ssl_pem_key_cert_pair *>gpr_malloc(             # <<<<<<<<<<<<<<
 *         sizeof(grpc_ssl_pem_key_cert_pair) * c_ssl_pem_key_cert_pairs_count))
 *   for i in range(c_ssl_pem_key_cert_pairs_count):
 */
        __pyx_v_c_ssl_pem_key_cert_pairs = ((grpc_ssl_pem_key_cert_pair *)gpr_malloc(((sizeof(grpc_ssl_pem_key_cert_pair)) * __pyx_v_c_ssl_pem_key_cert_pairs_count)));
      }

      /* "src/python/grpcio/grpc/_cython/_cygrpc/credentials.pyx.pxi":246
 *   cdef size_t c_ssl_pem_key_cert_pairs_count = len(pem_key_cert_pairs)
 *   cdef grpc_ssl_pem_key_cert_pair* c_ssl_pem_key_cert_pairs = NULL
 *   with nogil:             # <<<<<<<<<<<<<<
 *     c_ssl_pem_key_cert_pairs = (
 *       <grpc_ssl_pem_key_cert_pair *>gpr_malloc(
 */
      /*finally:*/ {
        /*normal exit:*/{
          #ifdef WITH_THREAD
          __Pyx_FastGIL_Forget();
          Py_BLOCK_THREADS
          #endif
          goto __pyx_L8;
        }
        __pyx_L8:;
      }
  }

  /* "src/python/grpcio/grpc/_cython/_cygrpc/credentials.pyx.pxi":250
 *       <grpc_ssl_pem_key_cert_pair *>gpr_malloc(
 *         sizeof(grpc_ssl_pem_key_cert_pair) * c_ssl_pem_key_cert_pairs_count))
 *   for i in range(c_ssl_pem_key_cert_pairs_count):             # <<<<<<<<<<<<<<
 *     c_ssl_pem_key_cert_pairs[i] = (
 *       (<SslPemKeyCertPair>pem_key_cert_pairs[i]).c_pair)
 */
  __pyx_t_7 = __pyx_v_c_ssl_pem_key_cert_pairs_count;
  __pyx_t_8 = __pyx_t_7;
  for (__pyx_t_9 = 0; __pyx_t_9 < __pyx_t_8; __pyx_t_9+=1) {
    __pyx_v_i = __pyx_t_9;

    /* "src/python/grpcio/grpc/_cython/_cygrpc/credentials.pyx.pxi":252
 *   for i in range(c_ssl_pem_key_cert_pairs_count):
 *     c_ssl_pem_key_cert_pairs[i] = (
 *       (<SslPemKeyCertPair>pem_key_cert_pairs[i]).c_pair)             # <<<<<<<<<<<<<<
 *   return c_ssl_pem_key_cert_pairs
 * 
 */
    __pyx_t_1 = __Pyx_GetItemInt(__pyx_v_pem_key_cert_pairs, __pyx_v_i, size_t, 0, __Pyx_PyInt_FromSize_t, 0, 0, 1); if (unlikely(!__pyx_t_1)) __PYX_ERR(5, 252, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_1);
    __pyx_t_10 = ((struct __pyx_obj_4grpc_7_cython_6cygrpc_SslPemKeyCertPair *)__pyx_t_1)->c_pair;
    __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;

    /* "src/python/grpcio/grpc/_cython/_cygrpc/credentials.pyx.pxi":251
 *         sizeof(grpc_ssl_pem_key_cert_pair) * c_ssl_pem_key_cert_pairs_count))
 *   for i in range(c_ssl_pem_key_cert_pairs_count):
 *     c_ssl_pem_key_cert_pairs[i] = (             # <<<<<<<<<<<<<<
 *       (<SslPemKeyCertPair>pem_key_cert_pairs[i]).c_pair)
 *   return c_ssl_pem_key_cert_pairs
 */
    (__pyx_v_c_ssl_pem_key_cert_pairs[__pyx_v_i]) = __pyx_t_10;
  }

  /* "src/python/grpcio/grpc/_cython/_cygrpc/credentials.pyx.pxi":253
 *     c_ssl_pem_key_cert_pairs[i] = (
 *       (<SslPemKeyCertPair>pem_key_cert_pairs[i]).c_pair)
 *   return c_ssl_pem_key_cert_pairs             # <<<<<<<<<<<<<<
 * 
 * def server_credentials_ssl(pem_root_certs, pem_key_cert_pairs,
 */
  __pyx_r = __pyx_v_c_ssl_pem_key_cert_pairs;
  goto __pyx_L0;

  /* "src/python/grpcio/grpc/_cython/_cygrpc/credentials.pyx.pxi":238
 *     return pem_root_certs
 * 
 * cdef grpc_ssl_pem_key_cert_pair* _create_c_ssl_pem_key_cert_pairs(pem_key_cert_pairs):             # <<<<<<<<<<<<<<
 *   # return a malloc'ed grpc_ssl_pem_key_cert_pair from a _list_ of SslPemKeyCertPair
 *   for pair in pem_key_cert_pairs:
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_XDECREF(__pyx_t_4);
  __Pyx_WriteUnraisable("grpc._cython.cygrpc._create_c_ssl_pem_key_cert_pairs", __pyx_clineno, __pyx_lineno, __pyx_filename, 1, 0);
  __pyx_r = 0;
  __pyx_L0:;
  __Pyx_XDECREF(__pyx_v_pair);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "src/python/grpcio/grpc/_cython/_cygrpc/credentials.pyx.pxi":255
 *   return c_ssl_pem_key_cert_pairs
 * 
 * def server_credentials_ssl(pem_root_certs, pem_key_cert_pairs,             # <<<<<<<<<<<<<<
 *                            bint force_client_auth):
 *   pem_root_certs = str_to_bytes(pem_root_certs)
 */

/* Python wrapper */
static PyObject *__pyx_pw_4grpc_7_cython_6cygrpc_23server_credentials_ssl(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
static PyMethodDef __pyx_mdef_4grpc_7_cython_6cygrpc_23server_credentials_ssl = {"server_credentials_ssl", (PyCFunction)(void*)(PyCFunctionWithKeywords)__pyx_pw_4grpc_7_cython_6cygrpc_23server_credentials_ssl, METH_VARARGS|METH_KEYWORDS, 0};
static PyObject *__pyx_pw_4grpc_7_cython_6cygrpc_23server_credentials_ssl(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
  PyObject *__pyx_v_pem_root_certs = 0;
  PyObject *__pyx_v_pem_key_cert_pairs = 0;
  int __pyx_v_force_client_auth;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("server_credentials_ssl (wrapper)", 0);
  {
    static PyObject **__pyx_pyargnames[] = {&__pyx_n_s_pem_root_certs,&__pyx_n_s_pem_key_cert_pairs,&__pyx_n_s_force_client_auth,0};
    PyObject* values[3] = {0,0,0};
    if (unlikely(__pyx_kwds)) {
      Py_ssize_t kw_args;
      const Py_ssize_t pos_args = PyTuple_GET_SIZE(__pyx_args);
      switch (pos_args) {
        case  3: values[2] = PyTuple_GET_ITEM(__pyx_args, 2);
        CYTHON_FALLTHROUGH;
        case  2: values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
        CYTHON_FALLTHROUGH;
        case  1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
        CYTHON_FALLTHROUGH;
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      kw_args = PyDict_Size(__pyx_kwds);
      switch (pos_args) {
        case  0:
        if (likely((values[0] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_pem_root_certs)) != 0)) kw_args--;
        else goto __pyx_L5_argtuple_error;
        CYTHON_FALLTHROUGH;
        case  1:
        if (likely((values[1] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_pem_key_cert_pairs)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("server_credentials_ssl", 1, 3, 3, 1); __PYX_ERR(5, 255, __pyx_L3_error)
        }
        CYTHON_FALLTHROUGH;
        case  2:
        if (likely((values[2] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_force_client_auth)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("server_credentials_ssl", 1, 3, 3, 2); __PYX_ERR(5, 255, __pyx_L3_error)
        }
      }
      if (unlikely(kw_args > 0)) {
        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "server_credentials_ssl") < 0)) __PYX_ERR(5, 255, __pyx_L3_error)
      }
    } else if (PyTuple_GET_SIZE(__pyx_args) != 3) {
      goto __pyx_L5_argtuple_error;
    } else {
      values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
      values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
      values[2] = PyTuple_GET_ITEM(__pyx_args, 2);
    }
    __pyx_v_pem_root_certs = values[0];
    __pyx_v_pem_key_cert_pairs = values[1];
    __pyx_v_force_client_auth = __Pyx_PyObject_IsTrue(values[2]); if (unlikely((__pyx_v_force_client_auth == (int)-1) && PyErr_Occurred())) __PYX_ERR(5, 256, __pyx_L3_error)
  }
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("server_credentials_ssl", 1, 3, 3, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(5, 255, __pyx_L3_error)
  __pyx_L3_error:;
  __Pyx_AddTraceback("grpc._cython.cygrpc.server_credentials_ssl", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  __pyx_r = __pyx_pf_4grpc_7_cython_6cygrpc_22server_credentials_ssl(__pyx_self, __pyx_v_pem_root_certs, __pyx_v_pem_key_cert_pairs, __pyx_v_force_client_auth);

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_4grpc_7_cython_6cygrpc_22server_credentials_ssl(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__pyx_v_pem_root_certs, PyObject *__pyx_v_pem_key_cert_pairs, int __pyx_v_force_client_auth) {
  struct __pyx_obj_4grpc_7_cython_6cygrpc_ServerCredentials *__pyx_v_credentials = 0;
  char const *__pyx_v_c_pem_root_certs;
  grpc_ssl_server_certificate_config *__pyx_v_c_cert_config;
  grpc_ssl_server_credentials_options *__pyx_v_c_options;
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  int __pyx_t_2;
  Py_ssize_t __pyx_t_3;
  grpc_ssl_client_certificate_request_type __pyx_t_4;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("server_credentials_ssl", 0);
  __Pyx_INCREF(__pyx_v_pem_root_certs);
  __Pyx_INCREF(__pyx_v_pem_key_cert_pairs);

  /* "src/python/grpcio/grpc/_cython/_cygrpc/credentials.pyx.pxi":257
 * def server_credentials_ssl(pem_root_certs, pem_key_cert_pairs,
 *                            bint force_client_auth):
 *   pem_root_certs = str_to_bytes(pem_root_certs)             # <<<<<<<<<<<<<<
 *   pem_key_cert_pairs = list(pem_key_cert_pairs)
 *   cdef ServerCredentials credentials = ServerCredentials()
 */
  __pyx_t_1 = __pyx_f_4grpc_7_cython_6cygrpc_str_to_bytes(__pyx_v_pem_root_certs); if (unlikely(!__pyx_t_1)) __PYX_ERR(5, 257, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_DECREF_SET(__pyx_v_pem_root_certs, __pyx_t_1);
  __pyx_t_1 = 0;

  /* "src/python/grpcio/grpc/_cython/_cygrpc/credentials.pyx.pxi":258
 *                            bint force_client_auth):
 *   pem_root_certs = str_to_bytes(pem_root_certs)
 *   pem_key_cert_pairs = list(pem_key_cert_pairs)             # <<<<<<<<<<<<<<
 *   cdef ServerCredentials credentials = ServerCredentials()
 *   credentials.references.append(pem_root_certs)
 */
  __pyx_t_1 = PySequence_List(__pyx_v_pem_key_cert_pairs); if (unlikely(!__pyx_t_1)) __PYX_ERR(5, 258, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_DECREF_SET(__pyx_v_pem_key_cert_pairs, __pyx_t_1);
  __pyx_t_1 = 0;

  /* "src/python/grpcio/grpc/_cython/_cygrpc/credentials.pyx.pxi":259
 *   pem_root_certs = str_to_bytes(pem_root_certs)
 *   pem_key_cert_pairs = list(pem_key_cert_pairs)
 *   cdef ServerCredentials credentials = ServerCredentials()             # <<<<<<<<<<<<<<
 *   credentials.references.append(pem_root_certs)
 *   credentials.references.append(pem_key_cert_pairs)
 */
  __pyx_t_1 = __Pyx_PyObject_CallNoArg(((PyObject *)__pyx_ptype_4grpc_7_cython_6cygrpc_ServerCredentials)); if (unlikely(!__pyx_t_1)) __PYX_ERR(5, 259, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_v_credentials = ((struct __pyx_obj_4grpc_7_cython_6cygrpc_ServerCredentials *)__pyx_t_1);
  __pyx_t_1 = 0;

  /* "src/python/grpcio/grpc/_cython/_cygrpc/credentials.pyx.pxi":260
 *   pem_key_cert_pairs = list(pem_key_cert_pairs)
 *   cdef ServerCredentials credentials = ServerCredentials()
 *   credentials.references.append(pem_root_certs)             # <<<<<<<<<<<<<<
 *   credentials.references.append(pem_key_cert_pairs)
 *   cdef const char * c_pem_root_certs = _get_c_pem_root_certs(pem_root_certs)
 */
  if (unlikely(__pyx_v_credentials->references == Py_None)) {
    PyErr_Format(PyExc_AttributeError, "'NoneType' object has no attribute '%.30s'", "append");
    __PYX_ERR(5, 260, __pyx_L1_error)
  }
  __pyx_t_2 = __Pyx_PyList_Append(__pyx_v_credentials->references, __pyx_v_pem_root_certs); if (unlikely(__pyx_t_2 == ((int)-1))) __PYX_ERR(5, 260, __pyx_L1_error)

  /* "src/python/grpcio/grpc/_cython/_cygrpc/credentials.pyx.pxi":261
 *   cdef ServerCredentials credentials = ServerCredentials()
 *   credentials.references.append(pem_root_certs)
 *   credentials.references.append(pem_key_cert_pairs)             # <<<<<<<<<<<<<<
 *   cdef const char * c_pem_root_certs = _get_c_pem_root_certs(pem_root_certs)
 *   credentials.c_ssl_pem_key_cert_pairs_count = len(pem_key_cert_pairs)
 */
  if (unlikely(__pyx_v_credentials->references == Py_None)) {
    PyErr_Format(PyExc_AttributeError, "'NoneType' object has no attribute '%.30s'", "append");
    __PYX_ERR(5, 261, __pyx_L1_error)
  }
  __pyx_t_2 = __Pyx_PyList_Append(__pyx_v_credentials->references, __pyx_v_pem_key_cert_pairs); if (unlikely(__pyx_t_2 == ((int)-1))) __PYX_ERR(5, 261, __pyx_L1_error)

  /* "src/python/grpcio/grpc/_cython/_cygrpc/credentials.pyx.pxi":262
 *   credentials.references.append(pem_root_certs)
 *   credentials.references.append(pem_key_cert_pairs)
 *   cdef const char * c_pem_root_certs = _get_c_pem_root_certs(pem_root_certs)             # <<<<<<<<<<<<<<
 *   credentials.c_ssl_pem_key_cert_pairs_count = len(pem_key_cert_pairs)
 *   credentials.c_ssl_pem_key_cert_pairs = _create_c_ssl_pem_key_cert_pairs(pem_key_cert_pairs)
 */
  __pyx_v_c_pem_root_certs = __pyx_f_4grpc_7_cython_6cygrpc__get_c_pem_root_certs(__pyx_v_pem_root_certs);

  /* "src/python/grpcio/grpc/_cython/_cygrpc/credentials.pyx.pxi":263
 *   credentials.references.append(pem_key_cert_pairs)
 *   cdef const char * c_pem_root_certs = _get_c_pem_root_certs(pem_root_certs)
 *   credentials.c_ssl_pem_key_cert_pairs_count = len(pem_key_cert_pairs)             # <<<<<<<<<<<<<<
 *   credentials.c_ssl_pem_key_cert_pairs = _create_c_ssl_pem_key_cert_pairs(pem_key_cert_pairs)
 *   cdef grpc_ssl_server_certificate_config *c_cert_config = NULL
 */
  __pyx_t_3 = PyObject_Length(__pyx_v_pem_key_cert_pairs); if (unlikely(__pyx_t_3 == ((Py_ssize_t)-1))) __PYX_ERR(5, 263, __pyx_L1_error)
  __pyx_v_credentials->c_ssl_pem_key_cert_pairs_count = __pyx_t_3;

  /* "src/python/grpcio/grpc/_cython/_cygrpc/credentials.pyx.pxi":264
 *   cdef const char * c_pem_root_certs = _get_c_pem_root_certs(pem_root_certs)
 *   credentials.c_ssl_pem_key_cert_pairs_count = len(pem_key_cert_pairs)
 *   credentials.c_ssl_pem_key_cert_pairs = _create_c_ssl_pem_key_cert_pairs(pem_key_cert_pairs)             # <<<<<<<<<<<<<<
 *   cdef grpc_ssl_server_certificate_config *c_cert_config = NULL
 *   c_cert_config = grpc_ssl_server_certificate_config_create(
 */
  __pyx_v_credentials->c_ssl_pem_key_cert_pairs = __pyx_f_4grpc_7_cython_6cygrpc__create_c_ssl_pem_key_cert_pairs(__pyx_v_pem_key_cert_pairs);

  /* "src/python/grpcio/grpc/_cython/_cygrpc/credentials.pyx.pxi":265
 *   credentials.c_ssl_pem_key_cert_pairs_count = len(pem_key_cert_pairs)
 *   credentials.c_ssl_pem_key_cert_pairs = _create_c_ssl_pem_key_cert_pairs(pem_key_cert_pairs)
 *   cdef grpc_ssl_server_certificate_config *c_cert_config = NULL             # <<<<<<<<<<<<<<
 *   c_cert_config = grpc_ssl_server_certificate_config_create(
 *     c_pem_root_certs, credentials.c_ssl_pem_key_cert_pairs,
 */
  __pyx_v_c_cert_config = NULL;

  /* "src/python/grpcio/grpc/_cython/_cygrpc/credentials.pyx.pxi":266
 *   credentials.c_ssl_pem_key_cert_pairs = _create_c_ssl_pem_key_cert_pairs(pem_key_cert_pairs)
 *   cdef grpc_ssl_server_certificate_config *c_cert_config = NULL
 *   c_cert_config = grpc_ssl_server_certificate_config_create(             # <<<<<<<<<<<<<<
 *     c_pem_root_certs, credentials.c_ssl_pem_key_cert_pairs,
 *     credentials.c_ssl_pem_key_cert_pairs_count)
 */
  __pyx_v_c_cert_config = grpc_ssl_server_certificate_config_create(__pyx_v_c_pem_root_certs, __pyx_v_credentials->c_ssl_pem_key_cert_pairs, __pyx_v_credentials->c_ssl_pem_key_cert_pairs_count);

  /* "src/python/grpcio/grpc/_cython/_cygrpc/credentials.pyx.pxi":269
 *     c_pem_root_certs, credentials.c_ssl_pem_key_cert_pairs,
 *     credentials.c_ssl_pem_key_cert_pairs_count)
 *   cdef grpc_ssl_server_credentials_options* c_options = NULL             # <<<<<<<<<<<<<<
 *   # C-core assumes ownership of c_cert_config
 *   c_options = grpc_ssl_server_credentials_create_options_using_config(
 */
  __pyx_v_c_options = NULL;

  /* "src/python/grpcio/grpc/_cython/_cygrpc/credentials.pyx.pxi":273
 *   c_options = grpc_ssl_server_credentials_create_options_using_config(
 *     GRPC_SSL_REQUEST_AND_REQUIRE_CLIENT_CERTIFICATE_AND_VERIFY
 *     if force_client_auth else             # <<<<<<<<<<<<<<
 *     GRPC_SSL_DONT_REQUEST_CLIENT_CERTIFICATE,
 *     c_cert_config)
 */
  if ((__pyx_v_force_client_auth != 0)) {

    /* "src/python/grpcio/grpc/_cython/_cygrpc/credentials.pyx.pxi":272
 *   # C-core assumes ownership of c_cert_config
 *   c_options = grpc_ssl_server_credentials_create_options_using_config(
 *     GRPC_SSL_REQUEST_AND_REQUIRE_CLIENT_CERTIFICATE_AND_VERIFY             # <<<<<<<<<<<<<<
 *     if force_client_auth else
 *     GRPC_SSL_DONT_REQUEST_CLIENT_CERTIFICATE,
 */
    __pyx_t_4 = GRPC_SSL_REQUEST_AND_REQUIRE_CLIENT_CERTIFICATE_AND_VERIFY;
  } else {

    /* "src/python/grpcio/grpc/_cython/_cygrpc/credentials.pyx.pxi":274
 *     GRPC_SSL_REQUEST_AND_REQUIRE_CLIENT_CERTIFICATE_AND_VERIFY
 *     if force_client_auth else
 *     GRPC_SSL_DONT_REQUEST_CLIENT_CERTIFICATE,             # <<<<<<<<<<<<<<
 *     c_cert_config)
 *   # C-core assumes ownership of c_options
 */
    __pyx_t_4 = GRPC_SSL_DONT_REQUEST_CLIENT_CERTIFICATE;
  }

  /* "src/python/grpcio/grpc/_cython/_cygrpc/credentials.pyx.pxi":271
 *   cdef grpc_ssl_server_credentials_options* c_options = NULL
 *   # C-core assumes ownership of c_cert_config
 *   c_options = grpc_ssl_server_credentials_create_options_using_config(             # <<<<<<<<<<<<<<
 *     GRPC_SSL_REQUEST_AND_REQUIRE_CLIENT_CERTIFICATE_AND_VERIFY
 *     if force_client_auth else
 */
  __pyx_v_c_options = grpc_ssl_server_credentials_create_options_using_config(__pyx_t_4, __pyx_v_c_cert_config);

  /* "src/python/grpcio/grpc/_cython/_cygrpc/credentials.pyx.pxi":277
 *     c_cert_config)
 *   # C-core assumes ownership of c_options
 *   credentials.c_credentials = grpc_ssl_server_credentials_create_with_options(c_options)             # <<<<<<<<<<<<<<
 *   return credentials
 * 
 */
  __pyx_v_credentials->c_credentials = grpc_ssl_server_credentials_create_with_options(__pyx_v_c_options);

  /* "src/python/grpcio/grpc/_cython/_cygrpc/credentials.pyx.pxi":278
 *   # C-core assumes ownership of c_options
 *   credentials.c_credentials = grpc_ssl_server_credentials_create_with_options(c_options)
 *   return credentials             # <<<<<<<<<<<<<<
 * 
 * def server_certificate_config_ssl(pem_root_certs, pem_key_cert_pairs):
 */
  __Pyx_XDECREF(__pyx_r);
  __Pyx_INCREF(((PyObject *)__pyx_v_credentials));
  __pyx_r = ((PyObject *)__pyx_v_credentials);
  goto __pyx_L0;

  /* "src/python/grpcio/grpc/_cython/_cygrpc/credentials.pyx.pxi":255
 *   return c_ssl_pem_key_cert_pairs
 * 
 * def server_credentials_ssl(pem_root_certs, pem_key_cert_pairs,             # <<<<<<<<<<<<<<
 *                            bint force_client_auth):
 *   pem_root_certs = str_to_bytes(pem_root_certs)
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_AddTraceback("grpc._cython.cygrpc.server_credentials_ssl", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XDECREF((PyObject *)__pyx_v_credentials);
  __Pyx_XDECREF(__pyx_v_pem_root_certs);
  __Pyx_XDECREF(__pyx_v_pem_key_cert_pairs);
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "src/python/grpcio/grpc/_cython/_cygrpc/credentials.pyx.pxi":280
 *   return credentials
 * 
 * def server_certificate_config_ssl(pem_root_certs, pem_key_cert_pairs):             # <<<<<<<<<<<<<<
 *   pem_root_certs = str_to_bytes(pem_root_certs)
 *   pem_key_cert_pairs = list(pem_key_cert_pairs)
 */

/* Python wrapper */
static PyObject *__pyx_pw_4grpc_7_cython_6cygrpc_25server_certificate_config_ssl(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
static PyMethodDef __pyx_mdef_4grpc_7_cython_6cygrpc_25server_certificate_config_ssl = {"server_certificate_config_ssl", (PyCFunction)(void*)(PyCFunctionWithKeywords)__pyx_pw_4grpc_7_cython_6cygrpc_25server_certificate_config_ssl, METH_VARARGS|METH_KEYWORDS, 0};
static PyObject *__pyx_pw_4grpc_7_cython_6cygrpc_25server_certificate_config_ssl(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
  PyObject *__pyx_v_pem_root_certs = 0;
  PyObject *__pyx_v_pem_key_cert_pairs = 0;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("server_certificate_config_ssl (wrapper)", 0);
  {
    static PyObject **__pyx_pyargnames[] = {&__pyx_n_s_pem_root_certs,&__pyx_n_s_pem_key_cert_pairs,0};
    PyObject* values[2] = {0,0};
    if (unlikely(__pyx_kwds)) {
      Py_ssize_t kw_args;
      const Py_ssize_t pos_args = PyTuple_GET_SIZE(__pyx_args);
      switch (pos_args) {
        case  2: values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
        CYTHON_FALLTHROUGH;
        case  1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
        CYTHON_FALLTHROUGH;
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      kw_args = PyDict_Size(__pyx_kwds);
      switch (pos_args) {
        case  0:
        if (likely((values[0] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_pem_root_certs)) != 0)) kw_args--;
        else goto __pyx_L5_argtuple_error;
        CYTHON_FALLTHROUGH;
        case  1:
        if (likely((values[1] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_pem_key_cert_pairs)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("server_certificate_config_ssl", 1, 2, 2, 1); __PYX_ERR(5, 280, __pyx_L3_error)
        }
      }
      if (unlikely(kw_args > 0)) {
        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "server_certificate_config_ssl") < 0)) __PYX_ERR(5, 280, __pyx_L3_error)
      }
    } else if (PyTuple_GET_SIZE(__pyx_args) != 2) {
      goto __pyx_L5_argtuple_error;
    } else {
      values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
      values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
    }
    __pyx_v_pem_root_certs = values[0];
    __pyx_v_pem_key_cert_pairs = values[1];
  }
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("server_certificate_config_ssl", 1, 2, 2, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(5, 280, __pyx_L3_error)
  __pyx_L3_error:;
  __Pyx_AddTraceback("grpc._cython.cygrpc.server_certificate_config_ssl", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  __pyx_r = __pyx_pf_4grpc_7_cython_6cygrpc_24server_certificate_config_ssl(__pyx_self, __pyx_v_pem_root_certs, __pyx_v_pem_key_cert_pairs);

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_4grpc_7_cython_6cygrpc_24server_certificate_config_ssl(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__pyx_v_pem_root_certs, PyObject *__pyx_v_pem_key_cert_pairs) {
  struct __pyx_obj_4grpc_7_cython_6cygrpc_ServerCertificateConfig *__pyx_v_cert_config = 0;
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  int __pyx_t_2;
  Py_ssize_t __pyx_t_3;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("server_certificate_config_ssl", 0);
  __Pyx_INCREF(__pyx_v_pem_root_certs);
  __Pyx_INCREF(__pyx_v_pem_key_cert_pairs);

  /* "src/python/grpcio/grpc/_cython/_cygrpc/credentials.pyx.pxi":281
 * 
 * def server_certificate_config_ssl(pem_root_certs, pem_key_cert_pairs):
 *   pem_root_certs = str_to_bytes(pem_root_certs)             # <<<<<<<<<<<<<<
 *   pem_key_cert_pairs = list(pem_key_cert_pairs)
 *   cdef ServerCertificateConfig cert_config = ServerCertificateConfig()
 */
  __pyx_t_1 = __pyx_f_4grpc_7_cython_6cygrpc_str_to_bytes(__pyx_v_pem_root_certs); if (unlikely(!__pyx_t_1)) __PYX_ERR(5, 281, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_DECREF_SET(__pyx_v_pem_root_certs, __pyx_t_1);
  __pyx_t_1 = 0;

  /* "src/python/grpcio/grpc/_cython/_cygrpc/credentials.pyx.pxi":282
 * def server_certificate_config_ssl(pem_root_certs, pem_key_cert_pairs):
 *   pem_root_certs = str_to_bytes(pem_root_certs)
 *   pem_key_cert_pairs = list(pem_key_cert_pairs)             # <<<<<<<<<<<<<<
 *   cdef ServerCertificateConfig cert_config = ServerCertificateConfig()
 *   cert_config.references.append(pem_root_certs)
 */
  __pyx_t_1 = PySequence_List(__pyx_v_pem_key_cert_pairs); if (unlikely(!__pyx_t_1)) __PYX_ERR(5, 282, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_DECREF_SET(__pyx_v_pem_key_cert_pairs, __pyx_t_1);
  __pyx_t_1 = 0;

  /* "src/python/grpcio/grpc/_cython/_cygrpc/credentials.pyx.pxi":283
 *   pem_root_certs = str_to_bytes(pem_root_certs)
 *   pem_key_cert_pairs = list(pem_key_cert_pairs)
 *   cdef ServerCertificateConfig cert_config = ServerCertificateConfig()             # <<<<<<<<<<<<<<
 *   cert_config.references.append(pem_root_certs)
 *   cert_config.references.append(pem_key_cert_pairs)
 */
  __pyx_t_1 = __Pyx_PyObject_CallNoArg(((PyObject *)__pyx_ptype_4grpc_7_cython_6cygrpc_ServerCertificateConfig)); if (unlikely(!__pyx_t_1)) __PYX_ERR(5, 283, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_v_cert_config = ((struct __pyx_obj_4grpc_7_cython_6cygrpc_ServerCertificateConfig *)__pyx_t_1);
  __pyx_t_1 = 0;

  /* "src/python/grpcio/grpc/_cython/_cygrpc/credentials.pyx.pxi":284
 *   pem_key_cert_pairs = list(pem_key_cert_pairs)
 *   cdef ServerCertificateConfig cert_config = ServerCertificateConfig()
 *   cert_config.references.append(pem_root_certs)             # <<<<<<<<<<<<<<
 *   cert_config.references.append(pem_key_cert_pairs)
 *   cert_config.c_pem_root_certs = _get_c_pem_root_certs(pem_root_certs)
 */
  if (unlikely(__pyx_v_cert_config->references == Py_None)) {
    PyErr_Format(PyExc_AttributeError, "'NoneType' object has no attribute '%.30s'", "append");
    __PYX_ERR(5, 284, __pyx_L1_error)
  }
  __pyx_t_2 = __Pyx_PyList_Append(__pyx_v_cert_config->references, __pyx_v_pem_root_certs); if (unlikely(__pyx_t_2 == ((int)-1))) __PYX_ERR(5, 284, __pyx_L1_error)

  /* "src/python/grpcio/grpc/_cython/_cygrpc/credentials.pyx.pxi":285
 *   cdef ServerCertificateConfig cert_config = ServerCertificateConfig()
 *   cert_config.references.append(pem_root_certs)
 *   cert_config.references.append(pem_key_cert_pairs)             # <<<<<<<<<<<<<<
 *   cert_config.c_pem_root_certs = _get_c_pem_root_certs(pem_root_certs)
 *   cert_config.c_ssl_pem_key_cert_pairs_count = len(pem_key_cert_pairs)
 */
  if (unlikely(__pyx_v_cert_config->references == Py_None)) {
    PyErr_Format(PyExc_AttributeError, "'NoneType' object has no attribute '%.30s'", "append");
    __PYX_ERR(5, 285, __pyx_L1_error)
  }
  __pyx_t_2 = __Pyx_PyList_Append(__pyx_v_cert_config->references, __pyx_v_pem_key_cert_pairs); if (unlikely(__pyx_t_2 == ((int)-1))) __PYX_ERR(5, 285, __pyx_L1_error)

  /* "src/python/grpcio/grpc/_cython/_cygrpc/credentials.pyx.pxi":286
 *   cert_config.references.append(pem_root_certs)
 *   cert_config.references.append(pem_key_cert_pairs)
 *   cert_config.c_pem_root_certs = _get_c_pem_root_certs(pem_root_certs)             # <<<<<<<<<<<<<<
 *   cert_config.c_ssl_pem_key_cert_pairs_count = len(pem_key_cert_pairs)
 *   cert_config.c_ssl_pem_key_cert_pairs = _create_c_ssl_pem_key_cert_pairs(pem_key_cert_pairs)
 */
  __pyx_v_cert_config->c_pem_root_certs = __pyx_f_4grpc_7_cython_6cygrpc__get_c_pem_root_certs(__pyx_v_pem_root_certs);

  /* "src/python/grpcio/grpc/_cython/_cygrpc/credentials.pyx.pxi":287
 *   cert_config.references.append(pem_key_cert_pairs)
 *   cert_config.c_pem_root_certs = _get_c_pem_root_certs(pem_root_certs)
 *   cert_config.c_ssl_pem_key_cert_pairs_count = len(pem_key_cert_pairs)             # <<<<<<<<<<<<<<
 *   cert_config.c_ssl_pem_key_cert_pairs = _create_c_ssl_pem_key_cert_pairs(pem_key_cert_pairs)
 *   cert_config.c_cert_config = grpc_ssl_server_certificate_config_create(
 */
  __pyx_t_3 = PyObject_Length(__pyx_v_pem_key_cert_pairs); if (unlikely(__pyx_t_3 == ((Py_ssize_t)-1))) __PYX_ERR(5, 287, __pyx_L1_error)
  __pyx_v_cert_config->c_ssl_pem_key_cert_pairs_count = __pyx_t_3;

  /* "src/python/grpcio/grpc/_cython/_cygrpc/credentials.pyx.pxi":288
 *   cert_config.c_pem_root_certs = _get_c_pem_root_certs(pem_root_certs)
 *   cert_config.c_ssl_pem_key_cert_pairs_count = len(pem_key_cert_pairs)
 *   cert_config.c_ssl_pem_key_cert_pairs = _create_c_ssl_pem_key_cert_pairs(pem_key_cert_pairs)             # <<<<<<<<<<<<<<
 *   cert_config.c_cert_config = grpc_ssl_server_certificate_config_create(
 *     cert_config.c_pem_root_certs, cert_config.c_ssl_pem_key_cert_pairs,
 */
  __pyx_v_cert_config->c_ssl_pem_key_cert_pairs = __pyx_f_4grpc_7_cython_6cygrpc__create_c_ssl_pem_key_cert_pairs(__pyx_v_pem_key_cert_pairs);

  /* "src/python/grpcio/grpc/_cython/_cygrpc/credentials.pyx.pxi":289
 *   cert_config.c_ssl_pem_key_cert_pairs_count = len(pem_key_cert_pairs)
 *   cert_config.c_ssl_pem_key_cert_pairs = _create_c_ssl_pem_key_cert_pairs(pem_key_cert_pairs)
 *   cert_config.c_cert_config = grpc_ssl_server_certificate_config_create(             # <<<<<<<<<<<<<<
 *     cert_config.c_pem_root_certs, cert_config.c_ssl_pem_key_cert_pairs,
 *     cert_config.c_ssl_pem_key_cert_pairs_count)
 */
  __pyx_v_cert_config->c_cert_config = grpc_ssl_server_certificate_config_create(__pyx_v_cert_config->c_pem_root_certs, __pyx_v_cert_config->c_ssl_pem_key_cert_pairs, __pyx_v_cert_config->c_ssl_pem_key_cert_pairs_count);

  /* "src/python/grpcio/grpc/_cython/_cygrpc/credentials.pyx.pxi":292
 *     cert_config.c_pem_root_certs, cert_config.c_ssl_pem_key_cert_pairs,
 *     cert_config.c_ssl_pem_key_cert_pairs_count)
 *   return cert_config             # <<<<<<<<<<<<<<
 * 
 * def server_credentials_ssl_dynamic_cert_config(initial_cert_config,
 */
  __Pyx_XDECREF(__pyx_r);
  __Pyx_INCREF(((PyObject *)__pyx_v_cert_config));
  __pyx_r = ((PyObject *)__pyx_v_cert_config);
  goto __pyx_L0;

  /* "src/python/grpcio/grpc/_cython/_cygrpc/credentials.pyx.pxi":280
 *   return credentials
 * 
 * def server_certificate_config_ssl(pem_root_certs, pem_key_cert_pairs):             # <<<<<<<<<<<<<<
 *   pem_root_certs = str_to_bytes(pem_root_certs)
 *   pem_key_cert_pairs = list(pem_key_cert_pairs)
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_AddTraceback("grpc._cython.cygrpc.server_certificate_config_ssl", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XDECREF((PyObject *)__pyx_v_cert_config);
  __Pyx_XDECREF(__pyx_v_pem_root_certs);
  __Pyx_XDECREF(__pyx_v_pem_key_cert_pairs);
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "src/python/grpcio/grpc/_cython/_cygrpc/credentials.pyx.pxi":294
 *   return cert_config
 * 
 * def server_credentials_ssl_dynamic_cert_config(initial_cert_config,             # <<<<<<<<<<<<<<
 *                                                cert_config_fetcher,
 *                                                bint force_client_auth):
 */

/* Python wrapper */
static PyObject *__pyx_pw_4grpc_7_cython_6cygrpc_27server_credentials_ssl_dynamic_cert_config(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
static PyMethodDef __pyx_mdef_4grpc_7_cython_6cygrpc_27server_credentials_ssl_dynamic_cert_config = {"server_credentials_ssl_dynamic_cert_config", (PyCFunction)(void*)(PyCFunctionWithKeywords)__pyx_pw_4grpc_7_cython_6cygrpc_27server_credentials_ssl_dynamic_cert_config, METH_VARARGS|METH_KEYWORDS, 0};
static PyObject *__pyx_pw_4grpc_7_cython_6cygrpc_27server_credentials_ssl_dynamic_cert_config(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
  PyObject *__pyx_v_initial_cert_config = 0;
  PyObject *__pyx_v_cert_config_fetcher = 0;
  int __pyx_v_force_client_auth;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("server_credentials_ssl_dynamic_cert_config (wrapper)", 0);
  {
    static PyObject **__pyx_pyargnames[] = {&__pyx_n_s_initial_cert_config,&__pyx_n_s_cert_config_fetcher,&__pyx_n_s_force_client_auth,0};
    PyObject* values[3] = {0,0,0};
    if (unlikely(__pyx_kwds)) {
      Py_ssize_t kw_args;
      const Py_ssize_t pos_args = PyTuple_GET_SIZE(__pyx_args);
      switch (pos_args) {
        case  3: values[2] = PyTuple_GET_ITEM(__pyx_args, 2);
        CYTHON_FALLTHROUGH;
        case  2: values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
        CYTHON_FALLTHROUGH;
        case  1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
        CYTHON_FALLTHROUGH;
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      kw_args = PyDict_Size(__pyx_kwds);
      switch (pos_args) {
        case  0:
        if (likely((values[0] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_initial_cert_config)) != 0)) kw_args--;
        else goto __pyx_L5_argtuple_error;
        CYTHON_FALLTHROUGH;
        case  1:
        if (likely((values[1] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_cert_config_fetcher)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("server_credentials_ssl_dynamic_cert_config", 1, 3, 3, 1); __PYX_ERR(5, 294, __pyx_L3_error)
        }
        CYTHON_FALLTHROUGH;
        case  2:
        if (likely((values[2] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_force_client_auth)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("server_credentials_ssl_dynamic_cert_config", 1, 3, 3, 2); __PYX_ERR(5, 294, __pyx_L3_error)
        }
      }
      if (unlikely(kw_args > 0)) {
        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "server_credentials_ssl_dynamic_cert_config") < 0)) __PYX_ERR(5, 294, __pyx_L3_error)
      }
    } else if (PyTuple_GET_SIZE(__pyx_args) != 3) {
      goto __pyx_L5_argtuple_error;
    } else {
      values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
      values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
      values[2] = PyTuple_GET_ITEM(__pyx_args, 2);
    }
    __pyx_v_initial_cert_config = values[0];
    __pyx_v_cert_config_fetcher = values[1];
    __pyx_v_force_client_auth = __Pyx_PyObject_IsTrue(values[2]); if (unlikely((__pyx_v_force_client_auth == (int)-1) && PyErr_Occurred())) __PYX_ERR(5, 296, __pyx_L3_error)
  }
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("server_credentials_ssl_dynamic_cert_config", 1, 3, 3, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(5, 294, __pyx_L3_error)
  __pyx_L3_error:;
  __Pyx_AddTraceback("grpc._cython.cygrpc.server_credentials_ssl_dynamic_cert_config", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  __pyx_r = __pyx_pf_4grpc_7_cython_6cygrpc_26server_credentials_ssl_dynamic_cert_config(__pyx_self, __pyx_v_initial_cert_config, __pyx_v_cert_config_fetcher, __pyx_v_force_client_auth);

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_4grpc_7_cython_6cygrpc_26server_credentials_ssl_dynamic_cert_config(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__pyx_v_initial_cert_config, PyObject *__pyx_v_cert_config_fetcher, int __pyx_v_force_client_auth) {
  struct __pyx_obj_4grpc_7_cython_6cygrpc_ServerCredentials *__pyx_v_credentials = 0;
  grpc_ssl_server_credentials_options *__pyx_v_c_options;
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  PyObject *__pyx_t_2 = NULL;
  int __pyx_t_3;
  int __pyx_t_4;
  grpc_ssl_client_certificate_request_type __pyx_t_5;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("server_credentials_ssl_dynamic_cert_config", 0);

  /* "src/python/grpcio/grpc/_cython/_cygrpc/credentials.pyx.pxi":297
 *                                                cert_config_fetcher,
 *                                                bint force_client_auth):
 *   if not isinstance(initial_cert_config, grpc.ServerCertificateConfiguration):             # <<<<<<<<<<<<<<
 *     raise TypeError(
 *         'initial_cert_config must be a grpc.ServerCertificateConfiguration')
 */
  __Pyx_GetModuleGlobalName(__pyx_t_1, __pyx_n_s_grpc); if (unlikely(!__pyx_t_1)) __PYX_ERR(5, 297, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_t_1, __pyx_n_s_ServerCertificateConfiguration); if (unlikely(!__pyx_t_2)) __PYX_ERR(5, 297, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  __pyx_t_3 = PyObject_IsInstance(__pyx_v_initial_cert_config, __pyx_t_2); if (unlikely(__pyx_t_3 == ((int)-1))) __PYX_ERR(5, 297, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  __pyx_t_4 = ((!(__pyx_t_3 != 0)) != 0);
  if (unlikely(__pyx_t_4)) {

    /* "src/python/grpcio/grpc/_cython/_cygrpc/credentials.pyx.pxi":298
 *                                                bint force_client_auth):
 *   if not isinstance(initial_cert_config, grpc.ServerCertificateConfiguration):
 *     raise TypeError(             # <<<<<<<<<<<<<<
 *         'initial_cert_config must be a grpc.ServerCertificateConfiguration')
 *   if not callable(cert_config_fetcher):
 */
    __pyx_t_2 = __Pyx_PyObject_Call(__pyx_builtin_TypeError, __pyx_tuple__55, NULL); if (unlikely(!__pyx_t_2)) __PYX_ERR(5, 298, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_2);
    __Pyx_Raise(__pyx_t_2, 0, 0, 0);
    __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
    __PYX_ERR(5, 298, __pyx_L1_error)

    /* "src/python/grpcio/grpc/_cython/_cygrpc/credentials.pyx.pxi":297
 *                                                cert_config_fetcher,
 *                                                bint force_client_auth):
 *   if not isinstance(initial_cert_config, grpc.ServerCertificateConfiguration):             # <<<<<<<<<<<<<<
 *     raise TypeError(
 *         'initial_cert_config must be a grpc.ServerCertificateConfiguration')
 */
  }

  /* "src/python/grpcio/grpc/_cython/_cygrpc/credentials.pyx.pxi":300
 *     raise TypeError(
 *         'initial_cert_config must be a grpc.ServerCertificateConfiguration')
 *   if not callable(cert_config_fetcher):             # <<<<<<<<<<<<<<
 *     raise TypeError('cert_config_fetcher must be callable')
 *   cdef ServerCredentials credentials = ServerCredentials()
 */
  __pyx_t_4 = __Pyx_PyCallable_Check(__pyx_v_cert_config_fetcher); if (unlikely(__pyx_t_4 == ((int)-1))) __PYX_ERR(5, 300, __pyx_L1_error)
  __pyx_t_3 = ((!(__pyx_t_4 != 0)) != 0);
  if (unlikely(__pyx_t_3)) {

    /* "src/python/grpcio/grpc/_cython/_cygrpc/credentials.pyx.pxi":301
 *         'initial_cert_config must be a grpc.ServerCertificateConfiguration')
 *   if not callable(cert_config_fetcher):
 *     raise TypeError('cert_config_fetcher must be callable')             # <<<<<<<<<<<<<<
 *   cdef ServerCredentials credentials = ServerCredentials()
 *   credentials.initial_cert_config = initial_cert_config
 */
    __pyx_t_2 = __Pyx_PyObject_Call(__pyx_builtin_TypeError, __pyx_tuple__56, NULL); if (unlikely(!__pyx_t_2)) __PYX_ERR(5, 301, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_2);
    __Pyx_Raise(__pyx_t_2, 0, 0, 0);
    __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
    __PYX_ERR(5, 301, __pyx_L1_error)

    /* "src/python/grpcio/grpc/_cython/_cygrpc/credentials.pyx.pxi":300
 *     raise TypeError(
 *         'initial_cert_config must be a grpc.ServerCertificateConfiguration')
 *   if not callable(cert_config_fetcher):             # <<<<<<<<<<<<<<
 *     raise TypeError('cert_config_fetcher must be callable')
 *   cdef ServerCredentials credentials = ServerCredentials()
 */
  }

  /* "src/python/grpcio/grpc/_cython/_cygrpc/credentials.pyx.pxi":302
 *   if not callable(cert_config_fetcher):
 *     raise TypeError('cert_config_fetcher must be callable')
 *   cdef ServerCredentials credentials = ServerCredentials()             # <<<<<<<<<<<<<<
 *   credentials.initial_cert_config = initial_cert_config
 *   credentials.cert_config_fetcher = cert_config_fetcher
 */
  __pyx_t_2 = __Pyx_PyObject_CallNoArg(((PyObject *)__pyx_ptype_4grpc_7_cython_6cygrpc_ServerCredentials)); if (unlikely(!__pyx_t_2)) __PYX_ERR(5, 302, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __pyx_v_credentials = ((struct __pyx_obj_4grpc_7_cython_6cygrpc_ServerCredentials *)__pyx_t_2);
  __pyx_t_2 = 0;

  /* "src/python/grpcio/grpc/_cython/_cygrpc/credentials.pyx.pxi":303
 *     raise TypeError('cert_config_fetcher must be callable')
 *   cdef ServerCredentials credentials = ServerCredentials()
 *   credentials.initial_cert_config = initial_cert_config             # <<<<<<<<<<<<<<
 *   credentials.cert_config_fetcher = cert_config_fetcher
 *   cdef grpc_ssl_server_credentials_options* c_options = NULL
 */
  __Pyx_INCREF(__pyx_v_initial_cert_config);
  __Pyx_GIVEREF(__pyx_v_initial_cert_config);
  __Pyx_GOTREF(__pyx_v_credentials->initial_cert_config);
  __Pyx_DECREF(__pyx_v_credentials->initial_cert_config);
  __pyx_v_credentials->initial_cert_config = __pyx_v_initial_cert_config;

  /* "src/python/grpcio/grpc/_cython/_cygrpc/credentials.pyx.pxi":304
 *   cdef ServerCredentials credentials = ServerCredentials()
 *   credentials.initial_cert_config = initial_cert_config
 *   credentials.cert_config_fetcher = cert_config_fetcher             # <<<<<<<<<<<<<<
 *   cdef grpc_ssl_server_credentials_options* c_options = NULL
 *   c_options = grpc_ssl_server_credentials_create_options_using_config_fetcher(
 */
  __Pyx_INCREF(__pyx_v_cert_config_fetcher);
  __Pyx_GIVEREF(__pyx_v_cert_config_fetcher);
  __Pyx_GOTREF(__pyx_v_credentials->cert_config_fetcher);
  __Pyx_DECREF(__pyx_v_credentials->cert_config_fetcher);
  __pyx_v_credentials->cert_config_fetcher = __pyx_v_cert_config_fetcher;

  /* "src/python/grpcio/grpc/_cython/_cygrpc/credentials.pyx.pxi":305
 *   credentials.initial_cert_config = initial_cert_config
 *   credentials.cert_config_fetcher = cert_config_fetcher
 *   cdef grpc_ssl_server_credentials_options* c_options = NULL             # <<<<<<<<<<<<<<
 *   c_options = grpc_ssl_server_credentials_create_options_using_config_fetcher(
 *     GRPC_SSL_REQUEST_AND_REQUIRE_CLIENT_CERTIFICATE_AND_VERIFY
 */
  __pyx_v_c_options = NULL;

  /* "src/python/grpcio/grpc/_cython/_cygrpc/credentials.pyx.pxi":308
 *   c_options = grpc_ssl_server_credentials_create_options_using_config_fetcher(
 *     GRPC_SSL_REQUEST_AND_REQUIRE_CLIENT_CERTIFICATE_AND_VERIFY
 *     if force_client_auth else             # <<<<<<<<<<<<<<
 *     GRPC_SSL_DONT_REQUEST_CLIENT_CERTIFICATE,
 *     _server_cert_config_fetcher_wrapper,
 */
  if ((__pyx_v_force_client_auth != 0)) {

    /* "src/python/grpcio/grpc/_cython/_cygrpc/credentials.pyx.pxi":307
 *   cdef grpc_ssl_server_credentials_options* c_options = NULL
 *   c_options = grpc_ssl_server_credentials_create_options_using_config_fetcher(
 *     GRPC_SSL_REQUEST_AND_REQUIRE_CLIENT_CERTIFICATE_AND_VERIFY             # <<<<<<<<<<<<<<
 *     if force_client_auth else
 *     GRPC_SSL_DONT_REQUEST_CLIENT_CERTIFICATE,
 */
    __pyx_t_5 = GRPC_SSL_REQUEST_AND_REQUIRE_CLIENT_CERTIFICATE_AND_VERIFY;
  } else {

    /* "src/python/grpcio/grpc/_cython/_cygrpc/credentials.pyx.pxi":309
 *     GRPC_SSL_REQUEST_AND_REQUIRE_CLIENT_CERTIFICATE_AND_VERIFY
 *     if force_client_auth else
 *     GRPC_SSL_DONT_REQUEST_CLIENT_CERTIFICATE,             # <<<<<<<<<<<<<<
 *     _server_cert_config_fetcher_wrapper,
 *     <void*>credentials)
 */
    __pyx_t_5 = GRPC_SSL_DONT_REQUEST_CLIENT_CERTIFICATE;
  }

  /* "src/python/grpcio/grpc/_cython/_cygrpc/credentials.pyx.pxi":306
 *   credentials.cert_config_fetcher = cert_config_fetcher
 *   cdef grpc_ssl_server_credentials_options* c_options = NULL
 *   c_options = grpc_ssl_server_credentials_create_options_using_config_fetcher(             # <<<<<<<<<<<<<<
 *     GRPC_SSL_REQUEST_AND_REQUIRE_CLIENT_CERTIFICATE_AND_VERIFY
 *     if force_client_auth else
 */
  __pyx_v_c_options = grpc_ssl_server_credentials_create_options_using_config_fetcher(__pyx_t_5, __pyx_f_4grpc_7_cython_6cygrpc__server_cert_config_fetcher_wrapper, ((void *)__pyx_v_credentials));

  /* "src/python/grpcio/grpc/_cython/_cygrpc/credentials.pyx.pxi":313
 *     <void*>credentials)
 *   # C-core assumes ownership of c_options
 *   credentials.c_credentials = grpc_ssl_server_credentials_create_with_options(c_options)             # <<<<<<<<<<<<<<
 *   return credentials
 * 
 */
  __pyx_v_credentials->c_credentials = grpc_ssl_server_credentials_create_with_options(__pyx_v_c_options);

  /* "src/python/grpcio/grpc/_cython/_cygrpc/credentials.pyx.pxi":314
 *   # C-core assumes ownership of c_options
 *   credentials.c_credentials = grpc_ssl_server_credentials_create_with_options(c_options)
 *   return credentials             # <<<<<<<<<<<<<<
 * 
 * cdef grpc_ssl_certificate_config_reload_status _server_cert_config_fetcher_wrapper(
 */
  __Pyx_XDECREF(__pyx_r);
  __Pyx_INCREF(((PyObject *)__pyx_v_credentials));
  __pyx_r = ((PyObject *)__pyx_v_credentials);
  goto __pyx_L0;

  /* "src/python/grpcio/grpc/_cython/_cygrpc/credentials.pyx.pxi":294
 *   return cert_config
 * 
 * def server_credentials_ssl_dynamic_cert_config(initial_cert_config,             # <<<<<<<<<<<<<<
 *                                                cert_config_fetcher,
 *                                                bint force_client_auth):
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_AddTraceback("grpc._cython.cygrpc.server_credentials_ssl_dynamic_cert_config", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XDECREF((PyObject *)__pyx_v_credentials);
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "src/python/grpcio/grpc/_cython/_cygrpc/credentials.pyx.pxi":316
 *   return credentials
 * 
 * cdef grpc_ssl_certificate_config_reload_status _server_cert_config_fetcher_wrapper(             # <<<<<<<<<<<<<<
 *         void* user_data, grpc_ssl_server_certificate_config **config) with gil:
 *   # This is a credentials.ServerCertificateConfig
 */

static grpc_ssl_certificate_config_reload_status __pyx_f_4grpc_7_cython_6cygrpc__server_cert_config_fetcher_wrapper(void *__pyx_v_user_data, grpc_ssl_server_certificate_config **__pyx_v_config) {
  struct __pyx_obj_4grpc_7_cython_6cygrpc_ServerCertificateConfig *__pyx_v_cert_config = 0;
  struct __pyx_obj_4grpc_7_cython_6cygrpc_ServerCredentials *__pyx_v_credentials = NULL;
  PyObject *__pyx_v_user_cb = NULL;
  PyObject *__pyx_v_cert_config_wrapper = NULL;
  grpc_ssl_certificate_config_reload_status __pyx_r;
  __Pyx_RefNannyDeclarations
  int __pyx_t_1;
  PyObject *__pyx_t_2 = NULL;
  PyObject *__pyx_t_3 = NULL;
  PyObject *__pyx_t_4 = NULL;
  PyObject *__pyx_t_5 = NULL;
  PyObject *__pyx_t_6 = NULL;
  PyObject *__pyx_t_7 = NULL;
  int __pyx_t_8;
  PyObject *__pyx_t_9 = NULL;
  PyObject *__pyx_t_10 = NULL;
  PyObject *__pyx_t_11 = NULL;
  int __pyx_t_12;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  #ifdef WITH_THREAD
  PyGILState_STATE __pyx_gilstate_save = __Pyx_PyGILState_Ensure();
  #endif
  __Pyx_RefNannySetupContext("_server_cert_config_fetcher_wrapper", 0);

  /* "src/python/grpcio/grpc/_cython/_cygrpc/credentials.pyx.pxi":319
 *         void* user_data, grpc_ssl_server_certificate_config **config) with gil:
 *   # This is a credentials.ServerCertificateConfig
 *   cdef ServerCertificateConfig cert_config = None             # <<<<<<<<<<<<<<
 *   if not user_data:
 *     raise ValueError('internal error: user_data must be specified')
 */
  __Pyx_INCREF(Py_None);
  __pyx_v_cert_config = ((struct __pyx_obj_4grpc_7_cython_6cygrpc_ServerCertificateConfig *)Py_None);

  /* "src/python/grpcio/grpc/_cython/_cygrpc/credentials.pyx.pxi":320
 *   # This is a credentials.ServerCertificateConfig
 *   cdef ServerCertificateConfig cert_config = None
 *   if not user_data:             # <<<<<<<<<<<<<<
 *     raise ValueError('internal error: user_data must be specified')
 *   credentials = <ServerCredentials>user_data
 */
  __pyx_t_1 = ((!(__pyx_v_user_data != 0)) != 0);
  if (unlikely(__pyx_t_1)) {

    /* "src/python/grpcio/grpc/_cython/_cygrpc/credentials.pyx.pxi":321
 *   cdef ServerCertificateConfig cert_config = None
 *   if not user_data:
 *     raise ValueError('internal error: user_data must be specified')             # <<<<<<<<<<<<<<
 *   credentials = <ServerCredentials>user_data
 *   if not credentials.initial_cert_config_fetched:
 */
    __pyx_t_2 = __Pyx_PyObject_Call(__pyx_builtin_ValueError, __pyx_tuple__57, NULL); if (unlikely(!__pyx_t_2)) __PYX_ERR(5, 321, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_2);
    __Pyx_Raise(__pyx_t_2, 0, 0, 0);
    __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
    __PYX_ERR(5, 321, __pyx_L1_error)

    /* "src/python/grpcio/grpc/_cython/_cygrpc/credentials.pyx.pxi":320
 *   # This is a credentials.ServerCertificateConfig
 *   cdef ServerCertificateConfig cert_config = None
 *   if not user_data:             # <<<<<<<<<<<<<<
 *     raise ValueError('internal error: user_data must be specified')
 *   credentials = <ServerCredentials>user_data
 */
  }

  /* "src/python/grpcio/grpc/_cython/_cygrpc/credentials.pyx.pxi":322
 *   if not user_data:
 *     raise ValueError('internal error: user_data must be specified')
 *   credentials = <ServerCredentials>user_data             # <<<<<<<<<<<<<<
 *   if not credentials.initial_cert_config_fetched:
 *     # C-core is asking for the initial cert config
 */
  __pyx_t_2 = ((PyObject *)__pyx_v_user_data);
  __Pyx_INCREF(__pyx_t_2);
  __pyx_v_credentials = ((struct __pyx_obj_4grpc_7_cython_6cygrpc_ServerCredentials *)__pyx_t_2);
  __pyx_t_2 = 0;

  /* "src/python/grpcio/grpc/_cython/_cygrpc/credentials.pyx.pxi":323
 *     raise ValueError('internal error: user_data must be specified')
 *   credentials = <ServerCredentials>user_data
 *   if not credentials.initial_cert_config_fetched:             # <<<<<<<<<<<<<<
 *     # C-core is asking for the initial cert config
 *     credentials.initial_cert_config_fetched = True
 */
  __pyx_t_1 = ((!(__pyx_v_credentials->initial_cert_config_fetched != 0)) != 0);
  if (__pyx_t_1) {

    /* "src/python/grpcio/grpc/_cython/_cygrpc/credentials.pyx.pxi":325
 *   if not credentials.initial_cert_config_fetched:
 *     # C-core is asking for the initial cert config
 *     credentials.initial_cert_config_fetched = True             # <<<<<<<<<<<<<<
 *     cert_config = credentials.initial_cert_config._certificate_configuration
 *   else:
 */
    __pyx_v_credentials->initial_cert_config_fetched = 1;

    /* "src/python/grpcio/grpc/_cython/_cygrpc/credentials.pyx.pxi":326
 *     # C-core is asking for the initial cert config
 *     credentials.initial_cert_config_fetched = True
 *     cert_config = credentials.initial_cert_config._certificate_configuration             # <<<<<<<<<<<<<<
 *   else:
 *     user_cb = credentials.cert_config_fetcher
 */
    __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_v_credentials->initial_cert_config, __pyx_n_s_certificate_configuration); if (unlikely(!__pyx_t_2)) __PYX_ERR(5, 326, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_2);
    if (!(likely(((__pyx_t_2) == Py_None) || likely(__Pyx_TypeTest(__pyx_t_2, __pyx_ptype_4grpc_7_cython_6cygrpc_ServerCertificateConfig))))) __PYX_ERR(5, 326, __pyx_L1_error)
    __Pyx_DECREF_SET(__pyx_v_cert_config, ((struct __pyx_obj_4grpc_7_cython_6cygrpc_ServerCertificateConfig *)__pyx_t_2));
    __pyx_t_2 = 0;

    /* "src/python/grpcio/grpc/_cython/_cygrpc/credentials.pyx.pxi":323
 *     raise ValueError('internal error: user_data must be specified')
 *   credentials = <ServerCredentials>user_data
 *   if not credentials.initial_cert_config_fetched:             # <<<<<<<<<<<<<<
 *     # C-core is asking for the initial cert config
 *     credentials.initial_cert_config_fetched = True
 */
    goto __pyx_L4;
  }

  /* "src/python/grpcio/grpc/_cython/_cygrpc/credentials.pyx.pxi":328
 *     cert_config = credentials.initial_cert_config._certificate_configuration
 *   else:
 *     user_cb = credentials.cert_config_fetcher             # <<<<<<<<<<<<<<
 *     try:
 *       cert_config_wrapper = user_cb()
 */
  /*else*/ {
    __pyx_t_2 = __pyx_v_credentials->cert_config_fetcher;
    __Pyx_INCREF(__pyx_t_2);
    __pyx_v_user_cb = __pyx_t_2;
    __pyx_t_2 = 0;

    /* "src/python/grpcio/grpc/_cython/_cygrpc/credentials.pyx.pxi":329
 *   else:
 *     user_cb = credentials.cert_config_fetcher
 *     try:             # <<<<<<<<<<<<<<
 *       cert_config_wrapper = user_cb()
 *     except Exception:
 */
    {
      __Pyx_PyThreadState_declare
      __Pyx_PyThreadState_assign
      __Pyx_ExceptionSave(&__pyx_t_3, &__pyx_t_4, &__pyx_t_5);
      __Pyx_XGOTREF(__pyx_t_3);
      __Pyx_XGOTREF(__pyx_t_4);
      __Pyx_XGOTREF(__pyx_t_5);
      /*try:*/ {

        /* "src/python/grpcio/grpc/_cython/_cygrpc/credentials.pyx.pxi":330
 *     user_cb = credentials.cert_config_fetcher
 *     try:
 *       cert_config_wrapper = user_cb()             # <<<<<<<<<<<<<<
 *     except Exception:
 *       _LOGGER.exception('Error fetching certificate config')
 */
        __Pyx_INCREF(__pyx_v_user_cb);
        __pyx_t_6 = __pyx_v_user_cb; __pyx_t_7 = NULL;
        if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_6))) {
          __pyx_t_7 = PyMethod_GET_SELF(__pyx_t_6);
          if (likely(__pyx_t_7)) {
            PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_6);
            __Pyx_INCREF(__pyx_t_7);
            __Pyx_INCREF(function);
            __Pyx_DECREF_SET(__pyx_t_6, function);
          }
        }
        __pyx_t_2 = (__pyx_t_7) ? __Pyx_PyObject_CallOneArg(__pyx_t_6, __pyx_t_7) : __Pyx_PyObject_CallNoArg(__pyx_t_6);
        __Pyx_XDECREF(__pyx_t_7); __pyx_t_7 = 0;
        if (unlikely(!__pyx_t_2)) __PYX_ERR(5, 330, __pyx_L5_error)
        __Pyx_GOTREF(__pyx_t_2);
        __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
        __pyx_v_cert_config_wrapper = __pyx_t_2;
        __pyx_t_2 = 0;

        /* "src/python/grpcio/grpc/_cython/_cygrpc/credentials.pyx.pxi":329
 *   else:
 *     user_cb = credentials.cert_config_fetcher
 *     try:             # <<<<<<<<<<<<<<
 *       cert_config_wrapper = user_cb()
 *     except Exception:
 */
      }
      __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0;
      __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0;
      __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0;
      goto __pyx_L10_try_end;
      __pyx_L5_error:;
      __Pyx_XDECREF(__pyx_t_2); __pyx_t_2 = 0;
      __Pyx_XDECREF(__pyx_t_6); __pyx_t_6 = 0;
      __Pyx_XDECREF(__pyx_t_7); __pyx_t_7 = 0;

      /* "src/python/grpcio/grpc/_cython/_cygrpc/credentials.pyx.pxi":331
 *     try:
 *       cert_config_wrapper = user_cb()
 *     except Exception:             # <<<<<<<<<<<<<<
 *       _LOGGER.exception('Error fetching certificate config')
 *       return GRPC_SSL_CERTIFICATE_CONFIG_RELOAD_FAIL
 */
      __pyx_t_8 = __Pyx_PyErr_ExceptionMatches(((PyObject *)(&((PyTypeObject*)PyExc_Exception)[0])));
      if (__pyx_t_8) {
        __Pyx_AddTraceback("grpc._cython.cygrpc._server_cert_config_fetcher_wrapper", __pyx_clineno, __pyx_lineno, __pyx_filename);
        if (__Pyx_GetException(&__pyx_t_2, &__pyx_t_6, &__pyx_t_7) < 0) __PYX_ERR(5, 331, __pyx_L7_except_error)
        __Pyx_GOTREF(__pyx_t_2);
        __Pyx_GOTREF(__pyx_t_6);
        __Pyx_GOTREF(__pyx_t_7);

        /* "src/python/grpcio/grpc/_cython/_cygrpc/credentials.pyx.pxi":332
 *       cert_config_wrapper = user_cb()
 *     except Exception:
 *       _LOGGER.exception('Error fetching certificate config')             # <<<<<<<<<<<<<<
 *       return GRPC_SSL_CERTIFICATE_CONFIG_RELOAD_FAIL
 *     if cert_config_wrapper is None:
 */
        __Pyx_GetModuleGlobalName(__pyx_t_10, __pyx_n_s_LOGGER); if (unlikely(!__pyx_t_10)) __PYX_ERR(5, 332, __pyx_L7_except_error)
        __Pyx_GOTREF(__pyx_t_10);
        __pyx_t_11 = __Pyx_PyObject_GetAttrStr(__pyx_t_10, __pyx_n_s_exception); if (unlikely(!__pyx_t_11)) __PYX_ERR(5, 332, __pyx_L7_except_error)
        __Pyx_GOTREF(__pyx_t_11);
        __Pyx_DECREF(__pyx_t_10); __pyx_t_10 = 0;
        __pyx_t_10 = NULL;
        if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_11))) {
          __pyx_t_10 = PyMethod_GET_SELF(__pyx_t_11);
          if (likely(__pyx_t_10)) {
            PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_11);
            __Pyx_INCREF(__pyx_t_10);
            __Pyx_INCREF(function);
            __Pyx_DECREF_SET(__pyx_t_11, function);
          }
        }
        __pyx_t_9 = (__pyx_t_10) ? __Pyx_PyObject_Call2Args(__pyx_t_11, __pyx_t_10, __pyx_kp_s_Error_fetching_certificate_confi) : __Pyx_PyObject_CallOneArg(__pyx_t_11, __pyx_kp_s_Error_fetching_certificate_confi);
        __Pyx_XDECREF(__pyx_t_10); __pyx_t_10 = 0;
        if (unlikely(!__pyx_t_9)) __PYX_ERR(5, 332, __pyx_L7_except_error)
        __Pyx_GOTREF(__pyx_t_9);
        __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0;
        __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0;

        /* "src/python/grpcio/grpc/_cython/_cygrpc/credentials.pyx.pxi":333
 *     except Exception:
 *       _LOGGER.exception('Error fetching certificate config')
 *       return GRPC_SSL_CERTIFICATE_CONFIG_RELOAD_FAIL             # <<<<<<<<<<<<<<
 *     if cert_config_wrapper is None:
 *       return GRPC_SSL_CERTIFICATE_CONFIG_RELOAD_UNCHANGED
 */
        __pyx_r = GRPC_SSL_CERTIFICATE_CONFIG_RELOAD_FAIL;
        __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
        __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
        __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
        goto __pyx_L8_except_return;
      }
      goto __pyx_L7_except_error;
      __pyx_L7_except_error:;

      /* "src/python/grpcio/grpc/_cython/_cygrpc/credentials.pyx.pxi":329
 *   else:
 *     user_cb = credentials.cert_config_fetcher
 *     try:             # <<<<<<<<<<<<<<
 *       cert_config_wrapper = user_cb()
 *     except Exception:
 */
      __Pyx_XGIVEREF(__pyx_t_3);
      __Pyx_XGIVEREF(__pyx_t_4);
      __Pyx_XGIVEREF(__pyx_t_5);
      __Pyx_ExceptionReset(__pyx_t_3, __pyx_t_4, __pyx_t_5);
      goto __pyx_L1_error;
      __pyx_L8_except_return:;
      __Pyx_XGIVEREF(__pyx_t_3);
      __Pyx_XGIVEREF(__pyx_t_4);
      __Pyx_XGIVEREF(__pyx_t_5);
      __Pyx_ExceptionReset(__pyx_t_3, __pyx_t_4, __pyx_t_5);
      goto __pyx_L0;
      __pyx_L10_try_end:;
    }

    /* "src/python/grpcio/grpc/_cython/_cygrpc/credentials.pyx.pxi":334
 *       _LOGGER.exception('Error fetching certificate config')
 *       return GRPC_SSL_CERTIFICATE_CONFIG_RELOAD_FAIL
 *     if cert_config_wrapper is None:             # <<<<<<<<<<<<<<
 *       return GRPC_SSL_CERTIFICATE_CONFIG_RELOAD_UNCHANGED
 *     elif not isinstance(
 */
    __pyx_t_1 = (__pyx_v_cert_config_wrapper == Py_None);
    __pyx_t_12 = (__pyx_t_1 != 0);
    if (__pyx_t_12) {

      /* "src/python/grpcio/grpc/_cython/_cygrpc/credentials.pyx.pxi":335
 *       return GRPC_SSL_CERTIFICATE_CONFIG_RELOAD_FAIL
 *     if cert_config_wrapper is None:
 *       return GRPC_SSL_CERTIFICATE_CONFIG_RELOAD_UNCHANGED             # <<<<<<<<<<<<<<
 *     elif not isinstance(
 *         cert_config_wrapper, grpc.ServerCertificateConfiguration):
 */
      __pyx_r = GRPC_SSL_CERTIFICATE_CONFIG_RELOAD_UNCHANGED;
      goto __pyx_L0;

      /* "src/python/grpcio/grpc/_cython/_cygrpc/credentials.pyx.pxi":334
 *       _LOGGER.exception('Error fetching certificate config')
 *       return GRPC_SSL_CERTIFICATE_CONFIG_RELOAD_FAIL
 *     if cert_config_wrapper is None:             # <<<<<<<<<<<<<<
 *       return GRPC_SSL_CERTIFICATE_CONFIG_RELOAD_UNCHANGED
 *     elif not isinstance(
 */
    }

    /* "src/python/grpcio/grpc/_cython/_cygrpc/credentials.pyx.pxi":337
 *       return GRPC_SSL_CERTIFICATE_CONFIG_RELOAD_UNCHANGED
 *     elif not isinstance(
 *         cert_config_wrapper, grpc.ServerCertificateConfiguration):             # <<<<<<<<<<<<<<
 *       _LOGGER.error(
 *           'Error fetching certificate configuration: certificate '
 */
    __Pyx_GetModuleGlobalName(__pyx_t_7, __pyx_n_s_grpc); if (unlikely(!__pyx_t_7)) __PYX_ERR(5, 337, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_7);
    __pyx_t_6 = __Pyx_PyObject_GetAttrStr(__pyx_t_7, __pyx_n_s_ServerCertificateConfiguration); if (unlikely(!__pyx_t_6)) __PYX_ERR(5, 337, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_6);
    __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;

    /* "src/python/grpcio/grpc/_cython/_cygrpc/credentials.pyx.pxi":336
 *     if cert_config_wrapper is None:
 *       return GRPC_SSL_CERTIFICATE_CONFIG_RELOAD_UNCHANGED
 *     elif not isinstance(             # <<<<<<<<<<<<<<
 *         cert_config_wrapper, grpc.ServerCertificateConfiguration):
 *       _LOGGER.error(
 */
    __pyx_t_12 = PyObject_IsInstance(__pyx_v_cert_config_wrapper, __pyx_t_6); if (unlikely(__pyx_t_12 == ((int)-1))) __PYX_ERR(5, 336, __pyx_L1_error)
    __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
    __pyx_t_1 = ((!(__pyx_t_12 != 0)) != 0);
    if (__pyx_t_1) {

      /* "src/python/grpcio/grpc/_cython/_cygrpc/credentials.pyx.pxi":338
 *     elif not isinstance(
 *         cert_config_wrapper, grpc.ServerCertificateConfiguration):
 *       _LOGGER.error(             # <<<<<<<<<<<<<<
 *           'Error fetching certificate configuration: certificate '
 *           'configuration must be of type grpc.ServerCertificateConfiguration, '
 */
      __Pyx_GetModuleGlobalName(__pyx_t_7, __pyx_n_s_LOGGER); if (unlikely(!__pyx_t_7)) __PYX_ERR(5, 338, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_7);
      __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_t_7, __pyx_n_s_error); if (unlikely(!__pyx_t_2)) __PYX_ERR(5, 338, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_2);
      __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;

      /* "src/python/grpcio/grpc/_cython/_cygrpc/credentials.pyx.pxi":341
 *           'Error fetching certificate configuration: certificate '
 *           'configuration must be of type grpc.ServerCertificateConfiguration, '
 *           'not %s' % type(cert_config_wrapper).__name__)             # <<<<<<<<<<<<<<
 *       return GRPC_SSL_CERTIFICATE_CONFIG_RELOAD_FAIL
 *     else:
 */
      __pyx_t_7 = __Pyx_PyObject_GetAttrStr(((PyObject *)Py_TYPE(__pyx_v_cert_config_wrapper)), __pyx_n_s_name_2); if (unlikely(!__pyx_t_7)) __PYX_ERR(5, 341, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_7);
      __pyx_t_9 = __Pyx_PyString_FormatSafe(__pyx_kp_s_Error_fetching_certificate_confi_2, __pyx_t_7); if (unlikely(!__pyx_t_9)) __PYX_ERR(5, 341, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_9);
      __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
      __pyx_t_7 = NULL;
      if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_2))) {
        __pyx_t_7 = PyMethod_GET_SELF(__pyx_t_2);
        if (likely(__pyx_t_7)) {
          PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_2);
          __Pyx_INCREF(__pyx_t_7);
          __Pyx_INCREF(function);
          __Pyx_DECREF_SET(__pyx_t_2, function);
        }
      }
      __pyx_t_6 = (__pyx_t_7) ? __Pyx_PyObject_Call2Args(__pyx_t_2, __pyx_t_7, __pyx_t_9) : __Pyx_PyObject_CallOneArg(__pyx_t_2, __pyx_t_9);
      __Pyx_XDECREF(__pyx_t_7); __pyx_t_7 = 0;
      __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0;
      if (unlikely(!__pyx_t_6)) __PYX_ERR(5, 338, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_6);
      __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
      __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;

      /* "src/python/grpcio/grpc/_cython/_cygrpc/credentials.pyx.pxi":342
 *           'configuration must be of type grpc.ServerCertificateConfiguration, '
 *           'not %s' % type(cert_config_wrapper).__name__)
 *       return GRPC_SSL_CERTIFICATE_CONFIG_RELOAD_FAIL             # <<<<<<<<<<<<<<
 *     else:
 *       cert_config = cert_config_wrapper._certificate_configuration
 */
      __pyx_r = GRPC_SSL_CERTIFICATE_CONFIG_RELOAD_FAIL;
      goto __pyx_L0;

      /* "src/python/grpcio/grpc/_cython/_cygrpc/credentials.pyx.pxi":336
 *     if cert_config_wrapper is None:
 *       return GRPC_SSL_CERTIFICATE_CONFIG_RELOAD_UNCHANGED
 *     elif not isinstance(             # <<<<<<<<<<<<<<
 *         cert_config_wrapper, grpc.ServerCertificateConfiguration):
 *       _LOGGER.error(
 */
    }

    /* "src/python/grpcio/grpc/_cython/_cygrpc/credentials.pyx.pxi":344
 *       return GRPC_SSL_CERTIFICATE_CONFIG_RELOAD_FAIL
 *     else:
 *       cert_config = cert_config_wrapper._certificate_configuration             # <<<<<<<<<<<<<<
 *   config[0] = <grpc_ssl_server_certificate_config*>cert_config.c_cert_config
 *   # our caller will assume ownership of memory, so we have to recreate
 */
    /*else*/ {
      __pyx_t_6 = __Pyx_PyObject_GetAttrStr(__pyx_v_cert_config_wrapper, __pyx_n_s_certificate_configuration); if (unlikely(!__pyx_t_6)) __PYX_ERR(5, 344, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_6);
      if (!(likely(((__pyx_t_6) == Py_None) || likely(__Pyx_TypeTest(__pyx_t_6, __pyx_ptype_4grpc_7_cython_6cygrpc_ServerCertificateConfig))))) __PYX_ERR(5, 344, __pyx_L1_error)
      __Pyx_DECREF_SET(__pyx_v_cert_config, ((struct __pyx_obj_4grpc_7_cython_6cygrpc_ServerCertificateConfig *)__pyx_t_6));
      __pyx_t_6 = 0;
    }
  }
  __pyx_L4:;

  /* "src/python/grpcio/grpc/_cython/_cygrpc/credentials.pyx.pxi":345
 *     else:
 *       cert_config = cert_config_wrapper._certificate_configuration
 *   config[0] = <grpc_ssl_server_certificate_config*>cert_config.c_cert_config             # <<<<<<<<<<<<<<
 *   # our caller will assume ownership of memory, so we have to recreate
 *   # a copy of c_cert_config here
 */
  (__pyx_v_config[0]) = ((grpc_ssl_server_certificate_config *)__pyx_v_cert_config->c_cert_config);

  /* "src/python/grpcio/grpc/_cython/_cygrpc/credentials.pyx.pxi":348
 *   # our caller will assume ownership of memory, so we have to recreate
 *   # a copy of c_cert_config here
 *   cert_config.c_cert_config = grpc_ssl_server_certificate_config_create(             # <<<<<<<<<<<<<<
 *       cert_config.c_pem_root_certs, cert_config.c_ssl_pem_key_cert_pairs,
 *       cert_config.c_ssl_pem_key_cert_pairs_count)
 */
  __pyx_v_cert_config->c_cert_config = grpc_ssl_server_certificate_config_create(__pyx_v_cert_config->c_pem_root_certs, __pyx_v_cert_config->c_ssl_pem_key_cert_pairs, __pyx_v_cert_config->c_ssl_pem_key_cert_pairs_count);

  /* "src/python/grpcio/grpc/_cython/_cygrpc/credentials.pyx.pxi":351
 *       cert_config.c_pem_root_certs, cert_config.c_ssl_pem_key_cert_pairs,
 *       cert_config.c_ssl_pem_key_cert_pairs_count)
 *   return GRPC_SSL_CERTIFICATE_CONFIG_RELOAD_NEW             # <<<<<<<<<<<<<<
 * 
 * 
 */
  __pyx_r = GRPC_SSL_CERTIFICATE_CONFIG_RELOAD_NEW;
  goto __pyx_L0;

  /* "src/python/grpcio/grpc/_cython/_cygrpc/credentials.pyx.pxi":316
 *   return credentials
 * 
 * cdef grpc_ssl_certificate_config_reload_status _server_cert_config_fetcher_wrapper(             # <<<<<<<<<<<<<<
 *         void* user_data, grpc_ssl_server_certificate_config **config) with gil:
 *   # This is a credentials.ServerCertificateConfig
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_XDECREF(__pyx_t_6);
  __Pyx_XDECREF(__pyx_t_7);
  __Pyx_XDECREF(__pyx_t_9);
  __Pyx_XDECREF(__pyx_t_10);
  __Pyx_XDECREF(__pyx_t_11);
  __Pyx_WriteUnraisable("grpc._cython.cygrpc._server_cert_config_fetcher_wrapper", __pyx_clineno, __pyx_lineno, __pyx_filename, 1, 0);
  __pyx_r = (grpc_ssl_certificate_config_reload_status) 0;
  __pyx_L0:;
  __Pyx_XDECREF((PyObject *)__pyx_v_cert_config);
  __Pyx_XDECREF((PyObject *)__pyx_v_credentials);
  __Pyx_XDECREF(__pyx_v_user_cb);
  __Pyx_XDECREF(__pyx_v_cert_config_wrapper);
  __Pyx_RefNannyFinishContext();
  #ifdef WITH_THREAD
  __Pyx_PyGILState_Release(__pyx_gilstate_save);
  #endif
  return __pyx_r;
}

/* "src/python/grpcio/grpc/_cython/_cygrpc/credentials.pyx.pxi":360
 * cdef class LocalChannelCredentials(ChannelCredentials):
 * 
 *   def __cinit__(self, grpc_local_connect_type local_connect_type):             # <<<<<<<<<<<<<<
 *     self._local_connect_type = local_connect_type
 * 
 */

/* Python wrapper */
static int __pyx_pw_4grpc_7_cython_6cygrpc_23LocalChannelCredentials_1__cinit__(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
static int __pyx_pw_4grpc_7_cython_6cygrpc_23LocalChannelCredentials_1__cinit__(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
  grpc_local_connect_type __pyx_v_local_connect_type;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  int __pyx_r;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__cinit__ (wrapper)", 0);
  {
    static PyObject **__pyx_pyargnames[] = {&__pyx_n_s_local_connect_type,0};
    PyObject* values[1] = {0};
    if (unlikely(__pyx_kwds)) {
      Py_ssize_t kw_args;
      const Py_ssize_t pos_args = PyTuple_GET_SIZE(__pyx_args);
      switch (pos_args) {
        case  1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
        CYTHON_FALLTHROUGH;
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      kw_args = PyDict_Size(__pyx_kwds);
      switch (pos_args) {
        case  0:
        if (likely((values[0] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_local_connect_type)) != 0)) kw_args--;
        else goto __pyx_L5_argtuple_error;
      }
      if (unlikely(kw_args > 0)) {
        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "__cinit__") < 0)) __PYX_ERR(5, 360, __pyx_L3_error)
      }
    } else if (PyTuple_GET_SIZE(__pyx_args) != 1) {
      goto __pyx_L5_argtuple_error;
    } else {
      values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
    }
    __pyx_v_local_connect_type = ((grpc_local_connect_type)__Pyx_PyInt_As_grpc_local_connect_type(values[0])); if (unlikely(PyErr_Occurred())) __PYX_ERR(5, 360, __pyx_L3_error)
  }
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("__cinit__", 1, 1, 1, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(5, 360, __pyx_L3_error)
  __pyx_L3_error:;
  __Pyx_AddTraceback("grpc._cython.cygrpc.LocalChannelCredentials.__cinit__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return -1;
  __pyx_L4_argument_unpacking_done:;
  __pyx_r = __pyx_pf_4grpc_7_cython_6cygrpc_23LocalChannelCredentials___cinit__(((struct __pyx_obj_4grpc_7_cython_6cygrpc_LocalChannelCredentials *)__pyx_v_self), __pyx_v_local_connect_type);

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static int __pyx_pf_4grpc_7_cython_6cygrpc_23LocalChannelCredentials___cinit__(struct __pyx_obj_4grpc_7_cython_6cygrpc_LocalChannelCredentials *__pyx_v_self, grpc_local_connect_type __pyx_v_local_connect_type) {
  int __pyx_r;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__cinit__", 0);

  /* "src/python/grpcio/grpc/_cython/_cygrpc/credentials.pyx.pxi":361
 * 
 *   def __cinit__(self, grpc_local_connect_type local_connect_type):
 *     self._local_connect_type = local_connect_type             # <<<<<<<<<<<<<<
 * 
 *   cdef grpc_channel_credentials *c(self) except *:
 */
  __pyx_v_self->_local_connect_type = __pyx_v_local_connect_type;

  /* "src/python/grpcio/grpc/_cython/_cygrpc/credentials.pyx.pxi":360
 * cdef class LocalChannelCredentials(ChannelCredentials):
 * 
 *   def __cinit__(self, grpc_local_connect_type local_connect_type):             # <<<<<<<<<<<<<<
 *     self._local_connect_type = local_connect_type
 * 
 */

  /* function exit code */
  __pyx_r = 0;
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "src/python/grpcio/grpc/_cython/_cygrpc/credentials.pyx.pxi":363
 *     self._local_connect_type = local_connect_type
 * 
 *   cdef grpc_channel_credentials *c(self) except *:             # <<<<<<<<<<<<<<
 *     cdef grpc_local_connect_type local_connect_type
 *     local_connect_type = self._local_connect_type
 */

static grpc_channel_credentials *__pyx_f_4grpc_7_cython_6cygrpc_23LocalChannelCredentials_c(struct __pyx_obj_4grpc_7_cython_6cygrpc_LocalChannelCredentials *__pyx_v_self) {
  grpc_local_connect_type __pyx_v_local_connect_type;
  grpc_channel_credentials *__pyx_r;
  __Pyx_RefNannyDeclarations
  grpc_local_connect_type __pyx_t_1;
  __Pyx_RefNannySetupContext("c", 0);

  /* "src/python/grpcio/grpc/_cython/_cygrpc/credentials.pyx.pxi":365
 *   cdef grpc_channel_credentials *c(self) except *:
 *     cdef grpc_local_connect_type local_connect_type
 *     local_connect_type = self._local_connect_type             # <<<<<<<<<<<<<<
 *     return grpc_local_credentials_create(local_connect_type)
 * 
 */
  __pyx_t_1 = __pyx_v_self->_local_connect_type;
  __pyx_v_local_connect_type = __pyx_t_1;

  /* "src/python/grpcio/grpc/_cython/_cygrpc/credentials.pyx.pxi":366
 *     cdef grpc_local_connect_type local_connect_type
 *     local_connect_type = self._local_connect_type
 *     return grpc_local_credentials_create(local_connect_type)             # <<<<<<<<<<<<<<
 * 
 * def channel_credentials_local(grpc_local_connect_type local_connect_type):
 */
  __pyx_r = grpc_local_credentials_create(__pyx_v_local_connect_type);
  goto __pyx_L0;

  /* "src/python/grpcio/grpc/_cython/_cygrpc/credentials.pyx.pxi":363
 *     self._local_connect_type = local_connect_type
 * 
 *   cdef grpc_channel_credentials *c(self) except *:             # <<<<<<<<<<<<<<
 *     cdef grpc_local_connect_type local_connect_type
 *     local_connect_type = self._local_connect_type
 */

  /* function exit code */
  __pyx_L0:;
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "(tree fragment)":1
 * def __reduce_cython__(self):             # <<<<<<<<<<<<<<
 *     raise TypeError("no default __reduce__ due to non-trivial __cinit__")
 * def __setstate_cython__(self, __pyx_state):
 */

/* Python wrapper */
static PyObject *__pyx_pw_4grpc_7_cython_6cygrpc_23LocalChannelCredentials_3__reduce_cython__(PyObject *__pyx_v_self, CYTHON_UNUSED PyObject *unused); /*proto*/
static PyObject *__pyx_pw_4grpc_7_cython_6cygrpc_23LocalChannelCredentials_3__reduce_cython__(PyObject *__pyx_v_self, CYTHON_UNUSED PyObject *unused) {
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__reduce_cython__ (wrapper)", 0);
  __pyx_r = __pyx_pf_4grpc_7_cython_6cygrpc_23LocalChannelCredentials_2__reduce_cython__(((struct __pyx_obj_4grpc_7_cython_6cygrpc_LocalChannelCredentials *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_4grpc_7_cython_6cygrpc_23LocalChannelCredentials_2__reduce_cython__(CYTHON_UNUSED struct __pyx_obj_4grpc_7_cython_6cygrpc_LocalChannelCredentials *__pyx_v_self) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("__reduce_cython__", 0);

  /* "(tree fragment)":2
 * def __reduce_cython__(self):
 *     raise TypeError("no default __reduce__ due to non-trivial __cinit__")             # <<<<<<<<<<<<<<
 * def __setstate_cython__(self, __pyx_state):
 *     raise TypeError("no default __reduce__ due to non-trivial __cinit__")
 */
  __pyx_t_1 = __Pyx_PyObject_Call(__pyx_builtin_TypeError, __pyx_tuple__58, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(11, 2, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_Raise(__pyx_t_1, 0, 0, 0);
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  __PYX_ERR(11, 2, __pyx_L1_error)

  /* "(tree fragment)":1
 * def __reduce_cython__(self):             # <<<<<<<<<<<<<<
 *     raise TypeError("no default __reduce__ due to non-trivial __cinit__")
 * def __setstate_cython__(self, __pyx_state):
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_AddTraceback("grpc._cython.cygrpc.LocalChannelCredentials.__reduce_cython__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "(tree fragment)":3
 * def __reduce_cython__(self):
 *     raise TypeError("no default __reduce__ due to non-trivial __cinit__")
 * def __setstate_cython__(self, __pyx_state):             # <<<<<<<<<<<<<<
 *     raise TypeError("no default __reduce__ due to non-trivial __cinit__")
 */

/* Python wrapper */
static PyObject *__pyx_pw_4grpc_7_cython_6cygrpc_23LocalChannelCredentials_5__setstate_cython__(PyObject *__pyx_v_self, PyObject *__pyx_v___pyx_state); /*proto*/
static PyObject *__pyx_pw_4grpc_7_cython_6cygrpc_23LocalChannelCredentials_5__setstate_cython__(PyObject *__pyx_v_self, PyObject *__pyx_v___pyx_state) {
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__setstate_cython__ (wrapper)", 0);
  __pyx_r = __pyx_pf_4grpc_7_cython_6cygrpc_23LocalChannelCredentials_4__setstate_cython__(((struct __pyx_obj_4grpc_7_cython_6cygrpc_LocalChannelCredentials *)__pyx_v_self), ((PyObject *)__pyx_v___pyx_state));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_4grpc_7_cython_6cygrpc_23LocalChannelCredentials_4__setstate_cython__(CYTHON_UNUSED struct __pyx_obj_4grpc_7_cython_6cygrpc_LocalChannelCredentials *__pyx_v_self, CYTHON_UNUSED PyObject *__pyx_v___pyx_state) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("__setstate_cython__", 0);

  /* "(tree fragment)":4
 *     raise TypeError("no default __reduce__ due to non-trivial __cinit__")
 * def __setstate_cython__(self, __pyx_state):
 *     raise TypeError("no default __reduce__ due to non-trivial __cinit__")             # <<<<<<<<<<<<<<
 */
  __pyx_t_1 = __Pyx_PyObject_Call(__pyx_builtin_TypeError, __pyx_tuple__59, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(11, 4, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_Raise(__pyx_t_1, 0, 0, 0);
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  __PYX_ERR(11, 4, __pyx_L1_error)

  /* "(tree fragment)":3
 * def __reduce_cython__(self):
 *     raise TypeError("no default __reduce__ due to non-trivial __cinit__")
 * def __setstate_cython__(self, __pyx_state):             # <<<<<<<<<<<<<<
 *     raise TypeError("no default __reduce__ due to non-trivial __cinit__")
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_AddTraceback("grpc._cython.cygrpc.LocalChannelCredentials.__setstate_cython__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "src/python/grpcio/grpc/_cython/_cygrpc/credentials.pyx.pxi":368
 *     return grpc_local_credentials_create(local_connect_type)
 * 
 * def channel_credentials_local(grpc_local_connect_type local_connect_type):             # <<<<<<<<<<<<<<
 *   return LocalChannelCredentials(local_connect_type)
 * 
 */

/* Python wrapper */
static PyObject *__pyx_pw_4grpc_7_cython_6cygrpc_29channel_credentials_local(PyObject *__pyx_self, PyObject *__pyx_arg_local_connect_type); /*proto*/
static PyMethodDef __pyx_mdef_4grpc_7_cython_6cygrpc_29channel_credentials_local = {"channel_credentials_local", (PyCFunction)__pyx_pw_4grpc_7_cython_6cygrpc_29channel_credentials_local, METH_O, 0};
static PyObject *__pyx_pw_4grpc_7_cython_6cygrpc_29channel_credentials_local(PyObject *__pyx_self, PyObject *__pyx_arg_local_connect_type) {
  grpc_local_connect_type __pyx_v_local_connect_type;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("channel_credentials_local (wrapper)", 0);
  assert(__pyx_arg_local_connect_type); {
    __pyx_v_local_connect_type = ((grpc_local_connect_type)__Pyx_PyInt_As_grpc_local_connect_type(__pyx_arg_local_connect_type)); if (unlikely(PyErr_Occurred())) __PYX_ERR(5, 368, __pyx_L3_error)
  }
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L3_error:;
  __Pyx_AddTraceback("grpc._cython.cygrpc.channel_credentials_local", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  __pyx_r = __pyx_pf_4grpc_7_cython_6cygrpc_28channel_credentials_local(__pyx_self, ((grpc_local_connect_type)__pyx_v_local_connect_type));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_4grpc_7_cython_6cygrpc_28channel_credentials_local(CYTHON_UNUSED PyObject *__pyx_self, grpc_local_connect_type __pyx_v_local_connect_type) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  PyObject *__pyx_t_2 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("channel_credentials_local", 0);

  /* "src/python/grpcio/grpc/_cython/_cygrpc/credentials.pyx.pxi":369
 * 
 * def channel_credentials_local(grpc_local_connect_type local_connect_type):
 *   return LocalChannelCredentials(local_connect_type)             # <<<<<<<<<<<<<<
 * 
 * cdef class InsecureChannelCredentials(ChannelCredentials):
 */
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_1 = __Pyx_PyInt_From_grpc_local_connect_type(__pyx_v_local_connect_type); if (unlikely(!__pyx_t_1)) __PYX_ERR(5, 369, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_t_2 = __Pyx_PyObject_CallOneArg(((PyObject *)__pyx_ptype_4grpc_7_cython_6cygrpc_LocalChannelCredentials), __pyx_t_1); if (unlikely(!__pyx_t_2)) __PYX_ERR(5, 369, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  __pyx_r = __pyx_t_2;
  __pyx_t_2 = 0;
  goto __pyx_L0;

  /* "src/python/grpcio/grpc/_cython/_cygrpc/credentials.pyx.pxi":368
 *     return grpc_local_credentials_create(local_connect_type)
 * 
 * def channel_credentials_local(grpc_local_connect_type local_connect_type):             # <<<<<<<<<<<<<<
 *   return LocalChannelCredentials(local_connect_type)
 * 
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_AddTraceback("grpc._cython.cygrpc.channel_credentials_local", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "src/python/grpcio/grpc/_cython/_cygrpc/credentials.pyx.pxi":373
 * cdef class InsecureChannelCredentials(ChannelCredentials):
 * 
 *   cdef grpc_channel_credentials *c(self) except *:             # <<<<<<<<<<<<<<
 *     return grpc_insecure_credentials_create()
 * 
 */

static grpc_channel_credentials *__pyx_f_4grpc_7_cython_6cygrpc_26InsecureChannelCredentials_c(CYTHON_UNUSED struct __pyx_obj_4grpc_7_cython_6cygrpc_InsecureChannelCredentials *__pyx_v_self) {
  grpc_channel_credentials *__pyx_r;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("c", 0);

  /* "src/python/grpcio/grpc/_cython/_cygrpc/credentials.pyx.pxi":374
 * 
 *   cdef grpc_channel_credentials *c(self) except *:
 *     return grpc_insecure_credentials_create()             # <<<<<<<<<<<<<<
 * 
 * def channel_credentials_insecure():
 */
  __pyx_r = grpc_insecure_credentials_create();
  goto __pyx_L0;

  /* "src/python/grpcio/grpc/_cython/_cygrpc/credentials.pyx.pxi":373
 * cdef class InsecureChannelCredentials(ChannelCredentials):
 * 
 *   cdef grpc_channel_credentials *c(self) except *:             # <<<<<<<<<<<<<<
 *     return grpc_insecure_credentials_create()
 * 
 */

  /* function exit code */
  __pyx_L0:;
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "(tree fragment)":1
 * def __reduce_cython__(self):             # <<<<<<<<<<<<<<
 *     cdef tuple state
 *     cdef object _dict
 */

/* Python wrapper */
static PyObject *__pyx_pw_4grpc_7_cython_6cygrpc_26InsecureChannelCredentials_1__reduce_cython__(PyObject *__pyx_v_self, CYTHON_UNUSED PyObject *unused); /*proto*/
static PyObject *__pyx_pw_4grpc_7_cython_6cygrpc_26InsecureChannelCredentials_1__reduce_cython__(PyObject *__pyx_v_self, CYTHON_UNUSED PyObject *unused) {
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__reduce_cython__ (wrapper)", 0);
  __pyx_r = __pyx_pf_4grpc_7_cython_6cygrpc_26InsecureChannelCredentials___reduce_cython__(((struct __pyx_obj_4grpc_7_cython_6cygrpc_InsecureChannelCredentials *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_4grpc_7_cython_6cygrpc_26InsecureChannelCredentials___reduce_cython__(struct __pyx_obj_4grpc_7_cython_6cygrpc_InsecureChannelCredentials *__pyx_v_self) {
  PyObject *__pyx_v_state = 0;
  PyObject *__pyx_v__dict = 0;
  int __pyx_v_use_setstate;
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  int __pyx_t_2;
  int __pyx_t_3;
  PyObject *__pyx_t_4 = NULL;
  PyObject *__pyx_t_5 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("__reduce_cython__", 0);

  /* "(tree fragment)":5
 *     cdef object _dict
 *     cdef bint use_setstate
 *     state = ()             # <<<<<<<<<<<<<<
 *     _dict = getattr(self, '__dict__', None)
 *     if _dict is not None:
 */
  __Pyx_INCREF(__pyx_empty_tuple);
  __pyx_v_state = __pyx_empty_tuple;

  /* "(tree fragment)":6
 *     cdef bint use_setstate
 *     state = ()
 *     _dict = getattr(self, '__dict__', None)             # <<<<<<<<<<<<<<
 *     if _dict is not None:
 *         state += (_dict,)
 */
  __pyx_t_1 = __Pyx_GetAttr3(((PyObject *)__pyx_v_self), __pyx_n_s_dict, Py_None); if (unlikely(!__pyx_t_1)) __PYX_ERR(11, 6, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_v__dict = __pyx_t_1;
  __pyx_t_1 = 0;

  /* "(tree fragment)":7
 *     state = ()
 *     _dict = getattr(self, '__dict__', None)
 *     if _dict is not None:             # <<<<<<<<<<<<<<
 *         state += (_dict,)
 *         use_setstate = True
 */
  __pyx_t_2 = (__pyx_v__dict != Py_None);
  __pyx_t_3 = (__pyx_t_2 != 0);
  if (__pyx_t_3) {

    /* "(tree fragment)":8
 *     _dict = getattr(self, '__dict__', None)
 *     if _dict is not None:
 *         state += (_dict,)             # <<<<<<<<<<<<<<
 *         use_setstate = True
 *     else:
 */
    __pyx_t_1 = PyTuple_New(1); if (unlikely(!__pyx_t_1)) __PYX_ERR(11, 8, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_1);
    __Pyx_INCREF(__pyx_v__dict);
    __Pyx_GIVEREF(__pyx_v__dict);
    PyTuple_SET_ITEM(__pyx_t_1, 0, __pyx_v__dict);
    __pyx_t_4 = PyNumber_InPlaceAdd(__pyx_v_state, __pyx_t_1); if (unlikely(!__pyx_t_4)) __PYX_ERR(11, 8, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_4);
    __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
    __Pyx_DECREF_SET(__pyx_v_state, ((PyObject*)__pyx_t_4));
    __pyx_t_4 = 0;

    /* "(tree fragment)":9
 *     if _dict is not None:
 *         state += (_dict,)
 *         use_setstate = True             # <<<<<<<<<<<<<<
 *     else:
 *         use_setstate = False
 */
    __pyx_v_use_setstate = 1;

    /* "(tree fragment)":7
 *     state = ()
 *     _dict = getattr(self, '__dict__', None)
 *     if _dict is not None:             # <<<<<<<<<<<<<<
 *         state += (_dict,)
 *         use_setstate = True
 */
    goto __pyx_L3;
  }

  /* "(tree fragment)":11
 *         use_setstate = True
 *     else:
 *         use_setstate = False             # <<<<<<<<<<<<<<
 *     if use_setstate:
 *         return __pyx_unpickle_InsecureChannelCredentials, (type(self), 0xd41d8cd, None), state
 */
  /*else*/ {
    __pyx_v_use_setstate = 0;
  }
  __pyx_L3:;

  /* "(tree fragment)":12
 *     else:
 *         use_setstate = False
 *     if use_setstate:             # <<<<<<<<<<<<<<
 *         return __pyx_unpickle_InsecureChannelCredentials, (type(self), 0xd41d8cd, None), state
 *     else:
 */
  __pyx_t_3 = (__pyx_v_use_setstate != 0);
  if (__pyx_t_3) {

    /* "(tree fragment)":13
 *         use_setstate = False
 *     if use_setstate:
 *         return __pyx_unpickle_InsecureChannelCredentials, (type(self), 0xd41d8cd, None), state             # <<<<<<<<<<<<<<
 *     else:
 *         return __pyx_unpickle_InsecureChannelCredentials, (type(self), 0xd41d8cd, state)
 */
    __Pyx_XDECREF(__pyx_r);
    __Pyx_GetModuleGlobalName(__pyx_t_4, __pyx_n_s_pyx_unpickle_InsecureChannelCr); if (unlikely(!__pyx_t_4)) __PYX_ERR(11, 13, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_4);
    __pyx_t_1 = PyTuple_New(3); if (unlikely(!__pyx_t_1)) __PYX_ERR(11, 13, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_1);
    __Pyx_INCREF(((PyObject *)Py_TYPE(((PyObject *)__pyx_v_self))));
    __Pyx_GIVEREF(((PyObject *)Py_TYPE(((PyObject *)__pyx_v_self))));
    PyTuple_SET_ITEM(__pyx_t_1, 0, ((PyObject *)Py_TYPE(((PyObject *)__pyx_v_self))));
    __Pyx_INCREF(__pyx_int_222419149);
    __Pyx_GIVEREF(__pyx_int_222419149);
    PyTuple_SET_ITEM(__pyx_t_1, 1, __pyx_int_222419149);
    __Pyx_INCREF(Py_None);
    __Pyx_GIVEREF(Py_None);
    PyTuple_SET_ITEM(__pyx_t_1, 2, Py_None);
    __pyx_t_5 = PyTuple_New(3); if (unlikely(!__pyx_t_5)) __PYX_ERR(11, 13, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_5);
    __Pyx_GIVEREF(__pyx_t_4);
    PyTuple_SET_ITEM(__pyx_t_5, 0, __pyx_t_4);
    __Pyx_GIVEREF(__pyx_t_1);
    PyTuple_SET_ITEM(__pyx_t_5, 1, __pyx_t_1);
    __Pyx_INCREF(__pyx_v_state);
    __Pyx_GIVEREF(__pyx_v_state);
    PyTuple_SET_ITEM(__pyx_t_5, 2, __pyx_v_state);
    __pyx_t_4 = 0;
    __pyx_t_1 = 0;
    __pyx_r = __pyx_t_5;
    __pyx_t_5 = 0;
    goto __pyx_L0;

    /* "(tree fragment)":12
 *     else:
 *         use_setstate = False
 *     if use_setstate:             # <<<<<<<<<<<<<<
 *         return __pyx_unpickle_InsecureChannelCredentials, (type(self), 0xd41d8cd, None), state
 *     else:
 */
  }

  /* "(tree fragment)":15
 *         return __pyx_unpickle_InsecureChannelCredentials, (type(self), 0xd41d8cd, None), state
 *     else:
 *         return __pyx_unpickle_InsecureChannelCredentials, (type(self), 0xd41d8cd, state)             # <<<<<<<<<<<<<<
 * def __setstate_cython__(self, __pyx_state):
 *     __pyx_unpickle_InsecureChannelCredentials__set_state(self, __pyx_state)
 */
  /*else*/ {
    __Pyx_XDECREF(__pyx_r);
    __Pyx_GetModuleGlobalName(__pyx_t_5, __pyx_n_s_pyx_unpickle_InsecureChannelCr); if (unlikely(!__pyx_t_5)) __PYX_ERR(11, 15, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_5);
    __pyx_t_1 = PyTuple_New(3); if (unlikely(!__pyx_t_1)) __PYX_ERR(11, 15, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_1);
    __Pyx_INCREF(((PyObject *)Py_TYPE(((PyObject *)__pyx_v_self))));
    __Pyx_GIVEREF(((PyObject *)Py_TYPE(((PyObject *)__pyx_v_self))));
    PyTuple_SET_ITEM(__pyx_t_1, 0, ((PyObject *)Py_TYPE(((PyObject *)__pyx_v_self))));
    __Pyx_INCREF(__pyx_int_222419149);
    __Pyx_GIVEREF(__pyx_int_222419149);
    PyTuple_SET_ITEM(__pyx_t_1, 1, __pyx_int_222419149);
    __Pyx_INCREF(__pyx_v_state);
    __Pyx_GIVEREF(__pyx_v_state);
    PyTuple_SET_ITEM(__pyx_t_1, 2, __pyx_v_state);
    __pyx_t_4 = PyTuple_New(2); if (unlikely(!__pyx_t_4)) __PYX_ERR(11, 15, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_4);
    __Pyx_GIVEREF(__pyx_t_5);
    PyTuple_SET_ITEM(__pyx_t_4, 0, __pyx_t_5);
    __Pyx_GIVEREF(__pyx_t_1);
    PyTuple_SET_ITEM(__pyx_t_4, 1, __pyx_t_1);
    __pyx_t_5 = 0;
    __pyx_t_1 = 0;
    __pyx_r = __pyx_t_4;
    __pyx_t_4 = 0;
    goto __pyx_L0;
  }

  /* "(tree fragment)":1
 * def __reduce_cython__(self):             # <<<<<<<<<<<<<<
 *     cdef tuple state
 *     cdef object _dict
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_XDECREF(__pyx_t_4);
  __Pyx_XDECREF(__pyx_t_5);
  __Pyx_AddTraceback("grpc._cython.cygrpc.InsecureChannelCredentials.__reduce_cython__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XDECREF(__pyx_v_state);
  __Pyx_XDECREF(__pyx_v__dict);
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "(tree fragment)":16
 *     else:
 *         return __pyx_unpickle_InsecureChannelCredentials, (type(self), 0xd41d8cd, state)
 * def __setstate_cython__(self, __pyx_state):             # <<<<<<<<<<<<<<
 *     __pyx_unpickle_InsecureChannelCredentials__set_state(self, __pyx_state)
 */

/* Python wrapper */
static PyObject *__pyx_pw_4grpc_7_cython_6cygrpc_26InsecureChannelCredentials_3__setstate_cython__(PyObject *__pyx_v_self, PyObject *__pyx_v___pyx_state); /*proto*/
static PyObject *__pyx_pw_4grpc_7_cython_6cygrpc_26InsecureChannelCredentials_3__setstate_cython__(PyObject *__pyx_v_self, PyObject *__pyx_v___pyx_state) {
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__setstate_cython__ (wrapper)", 0);
  __pyx_r = __pyx_pf_4grpc_7_cython_6cygrpc_26InsecureChannelCredentials_2__setstate_cython__(((struct __pyx_obj_4grpc_7_cython_6cygrpc_InsecureChannelCredentials *)__pyx_v_self), ((PyObject *)__pyx_v___pyx_state));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_4grpc_7_cython_6cygrpc_26InsecureChannelCredentials_2__setstate_cython__(struct __pyx_obj_4grpc_7_cython_6cygrpc_InsecureChannelCredentials *__pyx_v_self, PyObject *__pyx_v___pyx_state) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("__setstate_cython__", 0);

  /* "(tree fragment)":17
 *         return __pyx_unpickle_InsecureChannelCredentials, (type(self), 0xd41d8cd, state)
 * def __setstate_cython__(self, __pyx_state):
 *     __pyx_unpickle_InsecureChannelCredentials__set_state(self, __pyx_state)             # <<<<<<<<<<<<<<
 */
  if (!(likely(PyTuple_CheckExact(__pyx_v___pyx_state))||((__pyx_v___pyx_state) == Py_None)||(PyErr_Format(PyExc_TypeError, "Expected %.16s, got %.200s", "tuple", Py_TYPE(__pyx_v___pyx_state)->tp_name), 0))) __PYX_ERR(11, 17, __pyx_L1_error)
  __pyx_t_1 = __pyx_f_4grpc_7_cython_6cygrpc___pyx_unpickle_InsecureChannelCredentials__set_state(__pyx_v_self, ((PyObject*)__pyx_v___pyx_state)); if (unlikely(!__pyx_t_1)) __PYX_ERR(11, 17, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;

  /* "(tree fragment)":16
 *     else:
 *         return __pyx_unpickle_InsecureChannelCredentials, (type(self), 0xd41d8cd, state)
 * def __setstate_cython__(self, __pyx_state):             # <<<<<<<<<<<<<<
 *     __pyx_unpickle_InsecureChannelCredentials__set_state(self, __pyx_state)
 */

  /* function exit code */
  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_AddTraceback("grpc._cython.cygrpc.InsecureChannelCredentials.__setstate_cython__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "src/python/grpcio/grpc/_cython/_cygrpc/credentials.pyx.pxi":376
 *     return grpc_insecure_credentials_create()
 * 
 * def channel_credentials_insecure():             # <<<<<<<<<<<<<<
 *   return InsecureChannelCredentials()
 * 
 */

/* Python wrapper */
static PyObject *__pyx_pw_4grpc_7_cython_6cygrpc_31channel_credentials_insecure(PyObject *__pyx_self, CYTHON_UNUSED PyObject *unused); /*proto*/
static PyMethodDef __pyx_mdef_4grpc_7_cython_6cygrpc_31channel_credentials_insecure = {"channel_credentials_insecure", (PyCFunction)__pyx_pw_4grpc_7_cython_6cygrpc_31channel_credentials_insecure, METH_NOARGS, 0};
static PyObject *__pyx_pw_4grpc_7_cython_6cygrpc_31channel_credentials_insecure(PyObject *__pyx_self, CYTHON_UNUSED PyObject *unused) {
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("channel_credentials_insecure (wrapper)", 0);
  __pyx_r = __pyx_pf_4grpc_7_cython_6cygrpc_30channel_credentials_insecure(__pyx_self);

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_4grpc_7_cython_6cygrpc_30channel_credentials_insecure(CYTHON_UNUSED PyObject *__pyx_self) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("channel_credentials_insecure", 0);

  /* "src/python/grpcio/grpc/_cython/_cygrpc/credentials.pyx.pxi":377
 * 
 * def channel_credentials_insecure():
 *   return InsecureChannelCredentials()             # <<<<<<<<<<<<<<
 * 
 * def server_credentials_local(grpc_local_connect_type local_connect_type):
 */
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_1 = __Pyx_PyObject_CallNoArg(((PyObject *)__pyx_ptype_4grpc_7_cython_6cygrpc_InsecureChannelCredentials)); if (unlikely(!__pyx_t_1)) __PYX_ERR(5, 377, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_r = __pyx_t_1;
  __pyx_t_1 = 0;
  goto __pyx_L0;

  /* "src/python/grpcio/grpc/_cython/_cygrpc/credentials.pyx.pxi":376
 *     return grpc_insecure_credentials_create()
 * 
 * def channel_credentials_insecure():             # <<<<<<<<<<<<<<
 *   return InsecureChannelCredentials()
 * 
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_AddTraceback("grpc._cython.cygrpc.channel_credentials_insecure", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "src/python/grpcio/grpc/_cython/_cygrpc/credentials.pyx.pxi":379
 *   return InsecureChannelCredentials()
 * 
 * def server_credentials_local(grpc_local_connect_type local_connect_type):             # <<<<<<<<<<<<<<
 *   cdef ServerCredentials credentials = ServerCredentials()
 *   credentials.c_credentials = grpc_local_server_credentials_create(local_connect_type)
 */

/* Python wrapper */
static PyObject *__pyx_pw_4grpc_7_cython_6cygrpc_33server_credentials_local(PyObject *__pyx_self, PyObject *__pyx_arg_local_connect_type); /*proto*/
static PyMethodDef __pyx_mdef_4grpc_7_cython_6cygrpc_33server_credentials_local = {"server_credentials_local", (PyCFunction)__pyx_pw_4grpc_7_cython_6cygrpc_33server_credentials_local, METH_O, 0};
static PyObject *__pyx_pw_4grpc_7_cython_6cygrpc_33server_credentials_local(PyObject *__pyx_self, PyObject *__pyx_arg_local_connect_type) {
  grpc_local_connect_type __pyx_v_local_connect_type;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("server_credentials_local (wrapper)", 0);
  assert(__pyx_arg_local_connect_type); {
    __pyx_v_local_connect_type = ((grpc_local_connect_type)__Pyx_PyInt_As_grpc_local_connect_type(__pyx_arg_local_connect_type)); if (unlikely(PyErr_Occurred())) __PYX_ERR(5, 379, __pyx_L3_error)
  }
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L3_error:;
  __Pyx_AddTraceback("grpc._cython.cygrpc.server_credentials_local", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  __pyx_r = __pyx_pf_4grpc_7_cython_6cygrpc_32server_credentials_local(__pyx_self, ((grpc_local_connect_type)__pyx_v_local_connect_type));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_4grpc_7_cython_6cygrpc_32server_credentials_local(CYTHON_UNUSED PyObject *__pyx_self, grpc_local_connect_type __pyx_v_local_connect_type) {
  struct __pyx_obj_4grpc_7_cython_6cygrpc_ServerCredentials *__pyx_v_credentials = 0;
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("server_credentials_local", 0);

  /* "src/python/grpcio/grpc/_cython/_cygrpc/credentials.pyx.pxi":380
 * 
 * def server_credentials_local(grpc_local_connect_type local_connect_type):
 *   cdef ServerCredentials credentials = ServerCredentials()             # <<<<<<<<<<<<<<
 *   credentials.c_credentials = grpc_local_server_credentials_create(local_connect_type)
 *   return credentials
 */
  __pyx_t_1 = __Pyx_PyObject_CallNoArg(((PyObject *)__pyx_ptype_4grpc_7_cython_6cygrpc_ServerCredentials)); if (unlikely(!__pyx_t_1)) __PYX_ERR(5, 380, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_v_credentials = ((struct __pyx_obj_4grpc_7_cython_6cygrpc_ServerCredentials *)__pyx_t_1);
  __pyx_t_1 = 0;

  /* "src/python/grpcio/grpc/_cython/_cygrpc/credentials.pyx.pxi":381
 * def server_credentials_local(grpc_local_connect_type local_connect_type):
 *   cdef ServerCredentials credentials = ServerCredentials()
 *   credentials.c_credentials = grpc_local_server_credentials_create(local_connect_type)             # <<<<<<<<<<<<<<
 *   return credentials
 * 
 */
  __pyx_v_credentials->c_credentials = grpc_local_server_credentials_create(__pyx_v_local_connect_type);

  /* "src/python/grpcio/grpc/_cython/_cygrpc/credentials.pyx.pxi":382
 *   cdef ServerCredentials credentials = ServerCredentials()
 *   credentials.c_credentials = grpc_local_server_credentials_create(local_connect_type)
 *   return credentials             # <<<<<<<<<<<<<<
 * 
 * def xds_server_credentials(ServerCredentials fallback_credentials):
 */
  __Pyx_XDECREF(__pyx_r);
  __Pyx_INCREF(((PyObject *)__pyx_v_credentials));
  __pyx_r = ((PyObject *)__pyx_v_credentials);
  goto __pyx_L0;

  /* "src/python/grpcio/grpc/_cython/_cygrpc/credentials.pyx.pxi":379
 *   return InsecureChannelCredentials()
 * 
 * def server_credentials_local(grpc_local_connect_type local_connect_type):             # <<<<<<<<<<<<<<
 *   cdef ServerCredentials credentials = ServerCredentials()
 *   credentials.c_credentials = grpc_local_server_credentials_create(local_connect_type)
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_AddTraceback("grpc._cython.cygrpc.server_credentials_local", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XDECREF((PyObject *)__pyx_v_credentials);
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "src/python/grpcio/grpc/_cython/_cygrpc/credentials.pyx.pxi":384
 *   return credentials
 * 
 * def xds_server_credentials(ServerCredentials fallback_credentials):             # <<<<<<<<<<<<<<
 *   cdef ServerCredentials credentials = ServerCredentials()
 *   credentials.c_credentials = grpc_xds_server_credentials_create(fallback_credentials.c_credentials)
 */

/* Python wrapper */
static PyObject *__pyx_pw_4grpc_7_cython_6cygrpc_35xds_server_credentials(PyObject *__pyx_self, PyObject *__pyx_v_fallback_credentials); /*proto*/
static PyMethodDef __pyx_mdef_4grpc_7_cython_6cygrpc_35xds_server_credentials = {"xds_server_credentials", (PyCFunction)__pyx_pw_4grpc_7_cython_6cygrpc_35xds_server_credentials, METH_O, 0};
static PyObject *__pyx_pw_4grpc_7_cython_6cygrpc_35xds_server_credentials(PyObject *__pyx_self, PyObject *__pyx_v_fallback_credentials) {
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("xds_server_credentials (wrapper)", 0);
  if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_fallback_credentials), __pyx_ptype_4grpc_7_cython_6cygrpc_ServerCredentials, 1, "fallback_credentials", 0))) __PYX_ERR(5, 384, __pyx_L1_error)
  __pyx_r = __pyx_pf_4grpc_7_cython_6cygrpc_34xds_server_credentials(__pyx_self, ((struct __pyx_obj_4grpc_7_cython_6cygrpc_ServerCredentials *)__pyx_v_fallback_credentials));

  /* function exit code */
  goto __pyx_L0;
  __pyx_L1_error:;
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_4grpc_7_cython_6cygrpc_34xds_server_credentials(CYTHON_UNUSED PyObject *__pyx_self, struct __pyx_obj_4grpc_7_cython_6cygrpc_ServerCredentials *__pyx_v_fallback_credentials) {
  struct __pyx_obj_4grpc_7_cython_6cygrpc_ServerCredentials *__pyx_v_credentials = 0;
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("xds_server_credentials", 0);

  /* "src/python/grpcio/grpc/_cython/_cygrpc/credentials.pyx.pxi":385
 * 
 * def xds_server_credentials(ServerCredentials fallback_credentials):
 *   cdef ServerCredentials credentials = ServerCredentials()             # <<<<<<<<<<<<<<
 *   credentials.c_credentials = grpc_xds_server_credentials_create(fallback_credentials.c_credentials)
 *   # NOTE: We do not need to call grpc_server_credentials_release on the
 */
  __pyx_t_1 = __Pyx_PyObject_CallNoArg(((PyObject *)__pyx_ptype_4grpc_7_cython_6cygrpc_ServerCredentials)); if (unlikely(!__pyx_t_1)) __PYX_ERR(5, 385, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_v_credentials = ((struct __pyx_obj_4grpc_7_cython_6cygrpc_ServerCredentials *)__pyx_t_1);
  __pyx_t_1 = 0;

  /* "src/python/grpcio/grpc/_cython/_cygrpc/credentials.pyx.pxi":386
 * def xds_server_credentials(ServerCredentials fallback_credentials):
 *   cdef ServerCredentials credentials = ServerCredentials()
 *   credentials.c_credentials = grpc_xds_server_credentials_create(fallback_credentials.c_credentials)             # <<<<<<<<<<<<<<
 *   # NOTE: We do not need to call grpc_server_credentials_release on the
 *   # fallback credentials here because this will be done by the __dealloc__
 */
  __pyx_v_credentials->c_credentials = grpc_xds_server_credentials_create(__pyx_v_fallback_credentials->c_credentials);

  /* "src/python/grpcio/grpc/_cython/_cygrpc/credentials.pyx.pxi":390
 *   # fallback credentials here because this will be done by the __dealloc__
 *   # method of its Cython wrapper.
 *   return credentials             # <<<<<<<<<<<<<<
 * 
 * def insecure_server_credentials():
 */
  __Pyx_XDECREF(__pyx_r);
  __Pyx_INCREF(((PyObject *)__pyx_v_credentials));
  __pyx_r = ((PyObject *)__pyx_v_credentials);
  goto __pyx_L0;

  /* "src/python/grpcio/grpc/_cython/_cygrpc/credentials.pyx.pxi":384
 *   return credentials
 * 
 * def xds_server_credentials(ServerCredentials fallback_credentials):             # <<<<<<<<<<<<<<
 *   cdef ServerCredentials credentials = ServerCredentials()
 *   credentials.c_credentials = grpc_xds_server_credentials_create(fallback_credentials.c_credentials)
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_AddTraceback("grpc._cython.cygrpc.xds_server_credentials", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XDECREF((PyObject *)__pyx_v_credentials);
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "src/python/grpcio/grpc/_cython/_cygrpc/credentials.pyx.pxi":392
 *   return credentials
 * 
 * def insecure_server_credentials():             # <<<<<<<<<<<<<<
 *   cdef ServerCredentials credentials = ServerCredentials()
 *   credentials.c_credentials = grpc_insecure_server_credentials_create()
 */

/* Python wrapper */
static PyObject *__pyx_pw_4grpc_7_cython_6cygrpc_37insecure_server_credentials(PyObject *__pyx_self, CYTHON_UNUSED PyObject *unused); /*proto*/
static PyMethodDef __pyx_mdef_4grpc_7_cython_6cygrpc_37insecure_server_credentials = {"insecure_server_credentials", (PyCFunction)__pyx_pw_4grpc_7_cython_6cygrpc_37insecure_server_credentials, METH_NOARGS, 0};
static PyObject *__pyx_pw_4grpc_7_cython_6cygrpc_37insecure_server_credentials(PyObject *__pyx_self, CYTHON_UNUSED PyObject *unused) {
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("insecure_server_credentials (wrapper)", 0);
  __pyx_r = __pyx_pf_4grpc_7_cython_6cygrpc_36insecure_server_credentials(__pyx_self);

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_4grpc_7_cython_6cygrpc_36insecure_server_credentials(CYTHON_UNUSED PyObject *__pyx_self) {
  struct __pyx_obj_4grpc_7_cython_6cygrpc_ServerCredentials *__pyx_v_credentials = 0;
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("insecure_server_credentials", 0);

  /* "src/python/grpcio/grpc/_cython/_cygrpc/credentials.pyx.pxi":393
 * 
 * def insecure_server_credentials():
 *   cdef ServerCredentials credentials = ServerCredentials()             # <<<<<<<<<<<<<<
 *   credentials.c_credentials = grpc_insecure_server_credentials_create()
 *   return credentials
 */
  __pyx_t_1 = __Pyx_PyObject_CallNoArg(((PyObject *)__pyx_ptype_4grpc_7_cython_6cygrpc_ServerCredentials)); if (unlikely(!__pyx_t_1)) __PYX_ERR(5, 393, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_v_credentials = ((struct __pyx_obj_4grpc_7_cython_6cygrpc_ServerCredentials *)__pyx_t_1);
  __pyx_t_1 = 0;

  /* "src/python/grpcio/grpc/_cython/_cygrpc/credentials.pyx.pxi":394
 * def insecure_server_credentials():
 *   cdef ServerCredentials credentials = ServerCredentials()
 *   credentials.c_credentials = grpc_insecure_server_credentials_create()             # <<<<<<<<<<<<<<
 *   return credentials
 * 
 */
  __pyx_v_credentials->c_credentials = grpc_insecure_server_credentials_create();

  /* "src/python/grpcio/grpc/_cython/_cygrpc/credentials.pyx.pxi":395
 *   cdef ServerCredentials credentials = ServerCredentials()
 *   credentials.c_credentials = grpc_insecure_server_credentials_create()
 *   return credentials             # <<<<<<<<<<<<<<
 * 
 * cdef class ALTSChannelCredentials(ChannelCredentials):
 */
  __Pyx_XDECREF(__pyx_r);
  __Pyx_INCREF(((PyObject *)__pyx_v_credentials));
  __pyx_r = ((PyObject *)__pyx_v_credentials);
  goto __pyx_L0;

  /* "src/python/grpcio/grpc/_cython/_cygrpc/credentials.pyx.pxi":392
 *   return credentials
 * 
 * def insecure_server_credentials():             # <<<<<<<<<<<<<<
 *   cdef ServerCredentials credentials = ServerCredentials()
 *   credentials.c_credentials = grpc_insecure_server_credentials_create()
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_AddTraceback("grpc._cython.cygrpc.insecure_server_credentials", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XDECREF((PyObject *)__pyx_v_credentials);
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "src/python/grpcio/grpc/_cython/_cygrpc/credentials.pyx.pxi":399
 * cdef class ALTSChannelCredentials(ChannelCredentials):
 * 
 *   def __cinit__(self, list service_accounts):             # <<<<<<<<<<<<<<
 *     self.c_options = grpc_alts_credentials_client_options_create()
 *     cdef str account
 */

/* Python wrapper */
static int __pyx_pw_4grpc_7_cython_6cygrpc_22ALTSChannelCredentials_1__cinit__(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
static int __pyx_pw_4grpc_7_cython_6cygrpc_22ALTSChannelCredentials_1__cinit__(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
  PyObject *__pyx_v_service_accounts = 0;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  int __pyx_r;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__cinit__ (wrapper)", 0);
  {
    static PyObject **__pyx_pyargnames[] = {&__pyx_n_s_service_accounts,0};
    PyObject* values[1] = {0};
    if (unlikely(__pyx_kwds)) {
      Py_ssize_t kw_args;
      const Py_ssize_t pos_args = PyTuple_GET_SIZE(__pyx_args);
      switch (pos_args) {
        case  1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
        CYTHON_FALLTHROUGH;
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      kw_args = PyDict_Size(__pyx_kwds);
      switch (pos_args) {
        case  0:
        if (likely((values[0] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_service_accounts)) != 0)) kw_args--;
        else goto __pyx_L5_argtuple_error;
      }
      if (unlikely(kw_args > 0)) {
        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "__cinit__") < 0)) __PYX_ERR(5, 399, __pyx_L3_error)
      }
    } else if (PyTuple_GET_SIZE(__pyx_args) != 1) {
      goto __pyx_L5_argtuple_error;
    } else {
      values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
    }
    __pyx_v_service_accounts = ((PyObject*)values[0]);
  }
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("__cinit__", 1, 1, 1, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(5, 399, __pyx_L3_error)
  __pyx_L3_error:;
  __Pyx_AddTraceback("grpc._cython.cygrpc.ALTSChannelCredentials.__cinit__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return -1;
  __pyx_L4_argument_unpacking_done:;
  if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_service_accounts), (&PyList_Type), 1, "service_accounts", 1))) __PYX_ERR(5, 399, __pyx_L1_error)
  __pyx_r = __pyx_pf_4grpc_7_cython_6cygrpc_22ALTSChannelCredentials___cinit__(((struct __pyx_obj_4grpc_7_cython_6cygrpc_ALTSChannelCredentials *)__pyx_v_self), __pyx_v_service_accounts);

  /* function exit code */
  goto __pyx_L0;
  __pyx_L1_error:;
  __pyx_r = -1;
  __pyx_L0:;
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static int __pyx_pf_4grpc_7_cython_6cygrpc_22ALTSChannelCredentials___cinit__(struct __pyx_obj_4grpc_7_cython_6cygrpc_ALTSChannelCredentials *__pyx_v_self, PyObject *__pyx_v_service_accounts) {
  PyObject *__pyx_v_account = 0;
  int __pyx_r;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  Py_ssize_t __pyx_t_2;
  PyObject *__pyx_t_3 = NULL;
  char const *__pyx_t_4;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("__cinit__", 0);

  /* "src/python/grpcio/grpc/_cython/_cygrpc/credentials.pyx.pxi":400
 * 
 *   def __cinit__(self, list service_accounts):
 *     self.c_options = grpc_alts_credentials_client_options_create()             # <<<<<<<<<<<<<<
 *     cdef str account
 *     for account in service_accounts:
 */
  __pyx_v_self->c_options = grpc_alts_credentials_client_options_create();

  /* "src/python/grpcio/grpc/_cython/_cygrpc/credentials.pyx.pxi":402
 *     self.c_options = grpc_alts_credentials_client_options_create()
 *     cdef str account
 *     for account in service_accounts:             # <<<<<<<<<<<<<<
 *       grpc_alts_credentials_client_options_add_target_service_account(self.c_options, account)
 * 
 */
  if (unlikely(__pyx_v_service_accounts == Py_None)) {
    PyErr_SetString(PyExc_TypeError, "'NoneType' object is not iterable");
    __PYX_ERR(5, 402, __pyx_L1_error)
  }
  __pyx_t_1 = __pyx_v_service_accounts; __Pyx_INCREF(__pyx_t_1); __pyx_t_2 = 0;
  for (;;) {
    if (__pyx_t_2 >= PyList_GET_SIZE(__pyx_t_1)) break;
    #if CYTHON_ASSUME_SAFE_MACROS && !CYTHON_AVOID_BORROWED_REFS
    __pyx_t_3 = PyList_GET_ITEM(__pyx_t_1, __pyx_t_2); __Pyx_INCREF(__pyx_t_3); __pyx_t_2++; if (unlikely(0 < 0)) __PYX_ERR(5, 402, __pyx_L1_error)
    #else
    __pyx_t_3 = PySequence_ITEM(__pyx_t_1, __pyx_t_2); __pyx_t_2++; if (unlikely(!__pyx_t_3)) __PYX_ERR(5, 402, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_3);
    #endif
    if (!(likely(PyString_CheckExact(__pyx_t_3))||((__pyx_t_3) == Py_None)||(PyErr_Format(PyExc_TypeError, "Expected %.16s, got %.200s", "str", Py_TYPE(__pyx_t_3)->tp_name), 0))) __PYX_ERR(5, 402, __pyx_L1_error)
    __Pyx_XDECREF_SET(__pyx_v_account, ((PyObject*)__pyx_t_3));
    __pyx_t_3 = 0;

    /* "src/python/grpcio/grpc/_cython/_cygrpc/credentials.pyx.pxi":403
 *     cdef str account
 *     for account in service_accounts:
 *       grpc_alts_credentials_client_options_add_target_service_account(self.c_options, account)             # <<<<<<<<<<<<<<
 * 
 *   def __dealloc__(self):
 */
    __pyx_t_4 = __Pyx_PyObject_AsString(__pyx_v_account); if (unlikely((!__pyx_t_4) && PyErr_Occurred())) __PYX_ERR(5, 403, __pyx_L1_error)
    grpc_alts_credentials_client_options_add_target_service_account(__pyx_v_self->c_options, __pyx_t_4);

    /* "src/python/grpcio/grpc/_cython/_cygrpc/credentials.pyx.pxi":402
 *     self.c_options = grpc_alts_credentials_client_options_create()
 *     cdef str account
 *     for account in service_accounts:             # <<<<<<<<<<<<<<
 *       grpc_alts_credentials_client_options_add_target_service_account(self.c_options, account)
 * 
 */
  }
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;

  /* "src/python/grpcio/grpc/_cython/_cygrpc/credentials.pyx.pxi":399
 * cdef class ALTSChannelCredentials(ChannelCredentials):
 * 
 *   def __cinit__(self, list service_accounts):             # <<<<<<<<<<<<<<
 *     self.c_options = grpc_alts_credentials_client_options_create()
 *     cdef str account
 */

  /* function exit code */
  __pyx_r = 0;
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_XDECREF(__pyx_t_3);
  __Pyx_AddTraceback("grpc._cython.cygrpc.ALTSChannelCredentials.__cinit__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = -1;
  __pyx_L0:;
  __Pyx_XDECREF(__pyx_v_account);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "src/python/grpcio/grpc/_cython/_cygrpc/credentials.pyx.pxi":405
 *       grpc_alts_credentials_client_options_add_target_service_account(self.c_options, account)
 * 
 *   def __dealloc__(self):             # <<<<<<<<<<<<<<
 *     if self.c_options != NULL:
 *       grpc_alts_credentials_options_destroy(self.c_options)
 */

/* Python wrapper */
static void __pyx_pw_4grpc_7_cython_6cygrpc_22ALTSChannelCredentials_3__dealloc__(PyObject *__pyx_v_self); /*proto*/
static void __pyx_pw_4grpc_7_cython_6cygrpc_22ALTSChannelCredentials_3__dealloc__(PyObject *__pyx_v_self) {
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__dealloc__ (wrapper)", 0);
  __pyx_pf_4grpc_7_cython_6cygrpc_22ALTSChannelCredentials_2__dealloc__(((struct __pyx_obj_4grpc_7_cython_6cygrpc_ALTSChannelCredentials *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
}

static void __pyx_pf_4grpc_7_cython_6cygrpc_22ALTSChannelCredentials_2__dealloc__(struct __pyx_obj_4grpc_7_cython_6cygrpc_ALTSChannelCredentials *__pyx_v_self) {
  __Pyx_RefNannyDeclarations
  int __pyx_t_1;
  __Pyx_RefNannySetupContext("__dealloc__", 0);

  /* "src/python/grpcio/grpc/_cython/_cygrpc/credentials.pyx.pxi":406
 * 
 *   def __dealloc__(self):
 *     if self.c_options != NULL:             # <<<<<<<<<<<<<<
 *       grpc_alts_credentials_options_destroy(self.c_options)
 * 
 */
  __pyx_t_1 = ((__pyx_v_self->c_options != NULL) != 0);
  if (__pyx_t_1) {

    /* "src/python/grpcio/grpc/_cython/_cygrpc/credentials.pyx.pxi":407
 *   def __dealloc__(self):
 *     if self.c_options != NULL:
 *       grpc_alts_credentials_options_destroy(self.c_options)             # <<<<<<<<<<<<<<
 * 
 *   cdef grpc_channel_credentials *c(self) except *:
 */
    grpc_alts_credentials_options_destroy(__pyx_v_self->c_options);

    /* "src/python/grpcio/grpc/_cython/_cygrpc/credentials.pyx.pxi":406
 * 
 *   def __dealloc__(self):
 *     if self.c_options != NULL:             # <<<<<<<<<<<<<<
 *       grpc_alts_credentials_options_destroy(self.c_options)
 * 
 */
  }

  /* "src/python/grpcio/grpc/_cython/_cygrpc/credentials.pyx.pxi":405
 *       grpc_alts_credentials_client_options_add_target_service_account(self.c_options, account)
 * 
 *   def __dealloc__(self):             # <<<<<<<<<<<<<<
 *     if self.c_options != NULL:
 *       grpc_alts_credentials_options_destroy(self.c_options)
 */

  /* function exit code */
  __Pyx_RefNannyFinishContext();
}

/* "src/python/grpcio/grpc/_cython/_cygrpc/credentials.pyx.pxi":409
 *       grpc_alts_credentials_options_destroy(self.c_options)
 * 
 *   cdef grpc_channel_credentials *c(self) except *:             # <<<<<<<<<<<<<<
 *     return grpc_alts_credentials_create(self.c_options)
 * 
 */

static grpc_channel_credentials *__pyx_f_4grpc_7_cython_6cygrpc_22ALTSChannelCredentials_c(struct __pyx_obj_4grpc_7_cython_6cygrpc_ALTSChannelCredentials *__pyx_v_self) {
  grpc_channel_credentials *__pyx_r;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("c", 0);

  /* "src/python/grpcio/grpc/_cython/_cygrpc/credentials.pyx.pxi":410
 * 
 *   cdef grpc_channel_credentials *c(self) except *:
 *     return grpc_alts_credentials_create(self.c_options)             # <<<<<<<<<<<<<<
 * 
 * 
 */
  __pyx_r = grpc_alts_credentials_create(__pyx_v_self->c_options);
  goto __pyx_L0;

  /* "src/python/grpcio/grpc/_cython/_cygrpc/credentials.pyx.pxi":409
 *       grpc_alts_credentials_options_destroy(self.c_options)
 * 
 *   cdef grpc_channel_credentials *c(self) except *:             # <<<<<<<<<<<<<<
 *     return grpc_alts_credentials_create(self.c_options)
 * 
 */

  /* function exit code */
  __pyx_L0:;
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "(tree fragment)":1
 * def __reduce_cython__(self):             # <<<<<<<<<<<<<<
 *     raise TypeError("no default __reduce__ due to non-trivial __cinit__")
 * def __setstate_cython__(self, __pyx_state):
 */

/* Python wrapper */
static PyObject *__pyx_pw_4grpc_7_cython_6cygrpc_22ALTSChannelCredentials_5__reduce_cython__(PyObject *__pyx_v_self, CYTHON_UNUSED PyObject *unused); /*proto*/
static PyObject *__pyx_pw_4grpc_7_cython_6cygrpc_22ALTSChannelCredentials_5__reduce_cython__(PyObject *__pyx_v_self, CYTHON_UNUSED PyObject *unused) {
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__reduce_cython__ (wrapper)", 0);
  __pyx_r = __pyx_pf_4grpc_7_cython_6cygrpc_22ALTSChannelCredentials_4__reduce_cython__(((struct __pyx_obj_4grpc_7_cython_6cygrpc_ALTSChannelCredentials *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_4grpc_7_cython_6cygrpc_22ALTSChannelCredentials_4__reduce_cython__(CYTHON_UNUSED struct __pyx_obj_4grpc_7_cython_6cygrpc_ALTSChannelCredentials *__pyx_v_self) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("__reduce_cython__", 0);

  /* "(tree fragment)":2
 * def __reduce_cython__(self):
 *     raise TypeError("no default __reduce__ due to non-trivial __cinit__")             # <<<<<<<<<<<<<<
 * def __setstate_cython__(self, __pyx_state):
 *     raise TypeError("no default __reduce__ due to non-trivial __cinit__")
 */
  __pyx_t_1 = __Pyx_PyObject_Call(__pyx_builtin_TypeError, __pyx_tuple__60, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(11, 2, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_Raise(__pyx_t_1, 0, 0, 0);
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  __PYX_ERR(11, 2, __pyx_L1_error)

  /* "(tree fragment)":1
 * def __reduce_cython__(self):             # <<<<<<<<<<<<<<
 *     raise TypeError("no default __reduce__ due to non-trivial __cinit__")
 * def __setstate_cython__(self, __pyx_state):
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_AddTraceback("grpc._cython.cygrpc.ALTSChannelCredentials.__reduce_cython__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "(tree fragment)":3
 * def __reduce_cython__(self):
 *     raise TypeError("no default __reduce__ due to non-trivial __cinit__")
 * def __setstate_cython__(self, __pyx_state):             # <<<<<<<<<<<<<<
 *     raise TypeError("no default __reduce__ due to non-trivial __cinit__")
 */

/* Python wrapper */
static PyObject *__pyx_pw_4grpc_7_cython_6cygrpc_22ALTSChannelCredentials_7__setstate_cython__(PyObject *__pyx_v_self, PyObject *__pyx_v___pyx_state); /*proto*/
static PyObject *__pyx_pw_4grpc_7_cython_6cygrpc_22ALTSChannelCredentials_7__setstate_cython__(PyObject *__pyx_v_self, PyObject *__pyx_v___pyx_state) {
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__setstate_cython__ (wrapper)", 0);
  __pyx_r = __pyx_pf_4grpc_7_cython_6cygrpc_22ALTSChannelCredentials_6__setstate_cython__(((struct __pyx_obj_4grpc_7_cython_6cygrpc_ALTSChannelCredentials *)__pyx_v_self), ((PyObject *)__pyx_v___pyx_state));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_4grpc_7_cython_6cygrpc_22ALTSChannelCredentials_6__setstate_cython__(CYTHON_UNUSED struct __pyx_obj_4grpc_7_cython_6cygrpc_ALTSChannelCredentials *__pyx_v_self, CYTHON_UNUSED PyObject *__pyx_v___pyx_state) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("__setstate_cython__", 0);

  /* "(tree fragment)":4
 *     raise TypeError("no default __reduce__ due to non-trivial __cinit__")
 * def __setstate_cython__(self, __pyx_state):
 *     raise TypeError("no default __reduce__ due to non-trivial __cinit__")             # <<<<<<<<<<<<<<
 */
  __pyx_t_1 = __Pyx_PyObject_Call(__pyx_builtin_TypeError, __pyx_tuple__61, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(11, 4, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_Raise(__pyx_t_1, 0, 0, 0);
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  __PYX_ERR(11, 4, __pyx_L1_error)

  /* "(tree fragment)":3
 * def __reduce_cython__(self):
 *     raise TypeError("no default __reduce__ due to non-trivial __cinit__")
 * def __setstate_cython__(self, __pyx_state):             # <<<<<<<<<<<<<<
 *     raise TypeError("no default __reduce__ due to non-trivial __cinit__")
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_AddTraceback("grpc._cython.cygrpc.ALTSChannelCredentials.__setstate_cython__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "src/python/grpcio/grpc/_cython/_cygrpc/credentials.pyx.pxi":413
 * 
 * 
 * def channel_credentials_alts(list service_accounts):             # <<<<<<<<<<<<<<
 *   return ALTSChannelCredentials(service_accounts)
 * 
 */

/* Python wrapper */
static PyObject *__pyx_pw_4grpc_7_cython_6cygrpc_39channel_credentials_alts(PyObject *__pyx_self, PyObject *__pyx_v_service_accounts); /*proto*/
static PyMethodDef __pyx_mdef_4grpc_7_cython_6cygrpc_39channel_credentials_alts = {"channel_credentials_alts", (PyCFunction)__pyx_pw_4grpc_7_cython_6cygrpc_39channel_credentials_alts, METH_O, 0};
static PyObject *__pyx_pw_4grpc_7_cython_6cygrpc_39channel_credentials_alts(PyObject *__pyx_self, PyObject *__pyx_v_service_accounts) {
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("channel_credentials_alts (wrapper)", 0);
  if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_service_accounts), (&PyList_Type), 1, "service_accounts", 1))) __PYX_ERR(5, 413, __pyx_L1_error)
  __pyx_r = __pyx_pf_4grpc_7_cython_6cygrpc_38channel_credentials_alts(__pyx_self, ((PyObject*)__pyx_v_service_accounts));

  /* function exit code */
  goto __pyx_L0;
  __pyx_L1_error:;
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_4grpc_7_cython_6cygrpc_38channel_credentials_alts(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__pyx_v_service_accounts) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("channel_credentials_alts", 0);

  /* "src/python/grpcio/grpc/_cython/_cygrpc/credentials.pyx.pxi":414
 * 
 * def channel_credentials_alts(list service_accounts):
 *   return ALTSChannelCredentials(service_accounts)             # <<<<<<<<<<<<<<
 * 
 * 
 */
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_1 = __Pyx_PyObject_CallOneArg(((PyObject *)__pyx_ptype_4grpc_7_cython_6cygrpc_ALTSChannelCredentials), __pyx_v_service_accounts); if (unlikely(!__pyx_t_1)) __PYX_ERR(5, 414, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_r = __pyx_t_1;
  __pyx_t_1 = 0;
  goto __pyx_L0;

  /* "src/python/grpcio/grpc/_cython/_cygrpc/credentials.pyx.pxi":413
 * 
 * 
 * def channel_credentials_alts(list service_accounts):             # <<<<<<<<<<<<<<
 *   return ALTSChannelCredentials(service_accounts)
 * 
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_AddTraceback("grpc._cython.cygrpc.channel_credentials_alts", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "src/python/grpcio/grpc/_cython/_cygrpc/credentials.pyx.pxi":417
 * 
 * 
 * def server_credentials_alts():             # <<<<<<<<<<<<<<
 *   cdef ServerCredentials credentials = ServerCredentials()
 *   cdef grpc_alts_credentials_options* c_options = grpc_alts_credentials_server_options_create()
 */

/* Python wrapper */
static PyObject *__pyx_pw_4grpc_7_cython_6cygrpc_41server_credentials_alts(PyObject *__pyx_self, CYTHON_UNUSED PyObject *unused); /*proto*/
static PyMethodDef __pyx_mdef_4grpc_7_cython_6cygrpc_41server_credentials_alts = {"server_credentials_alts", (PyCFunction)__pyx_pw_4grpc_7_cython_6cygrpc_41server_credentials_alts, METH_NOARGS, 0};
static PyObject *__pyx_pw_4grpc_7_cython_6cygrpc_41server_credentials_alts(PyObject *__pyx_self, CYTHON_UNUSED PyObject *unused) {
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("server_credentials_alts (wrapper)", 0);
  __pyx_r = __pyx_pf_4grpc_7_cython_6cygrpc_40server_credentials_alts(__pyx_self);

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_4grpc_7_cython_6cygrpc_40server_credentials_alts(CYTHON_UNUSED PyObject *__pyx_self) {
  struct __pyx_obj_4grpc_7_cython_6cygrpc_ServerCredentials *__pyx_v_credentials = 0;
  grpc_alts_credentials_options *__pyx_v_c_options;
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("server_credentials_alts", 0);

  /* "src/python/grpcio/grpc/_cython/_cygrpc/credentials.pyx.pxi":418
 * 
 * def server_credentials_alts():
 *   cdef ServerCredentials credentials = ServerCredentials()             # <<<<<<<<<<<<<<
 *   cdef grpc_alts_credentials_options* c_options = grpc_alts_credentials_server_options_create()
 *   credentials.c_credentials = grpc_alts_server_credentials_create(c_options)
 */
  __pyx_t_1 = __Pyx_PyObject_CallNoArg(((PyObject *)__pyx_ptype_4grpc_7_cython_6cygrpc_ServerCredentials)); if (unlikely(!__pyx_t_1)) __PYX_ERR(5, 418, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_v_credentials = ((struct __pyx_obj_4grpc_7_cython_6cygrpc_ServerCredentials *)__pyx_t_1);
  __pyx_t_1 = 0;

  /* "src/python/grpcio/grpc/_cython/_cygrpc/credentials.pyx.pxi":419
 * def server_credentials_alts():
 *   cdef ServerCredentials credentials = ServerCredentials()
 *   cdef grpc_alts_credentials_options* c_options = grpc_alts_credentials_server_options_create()             # <<<<<<<<<<<<<<
 *   credentials.c_credentials = grpc_alts_server_credentials_create(c_options)
 *   # Options can be destroyed as deep copy was performed.
 */
  __pyx_v_c_options = grpc_alts_credentials_server_options_create();

  /* "src/python/grpcio/grpc/_cython/_cygrpc/credentials.pyx.pxi":420
 *   cdef ServerCredentials credentials = ServerCredentials()
 *   cdef grpc_alts_credentials_options* c_options = grpc_alts_credentials_server_options_create()
 *   credentials.c_credentials = grpc_alts_server_credentials_create(c_options)             # <<<<<<<<<<<<<<
 *   # Options can be destroyed as deep copy was performed.
 *   grpc_alts_credentials_options_destroy(c_options)
 */
  __pyx_v_credentials->c_credentials = grpc_alts_server_credentials_create(__pyx_v_c_options);

  /* "src/python/grpcio/grpc/_cython/_cygrpc/credentials.pyx.pxi":422
 *   credentials.c_credentials = grpc_alts_server_credentials_create(c_options)
 *   # Options can be destroyed as deep copy was performed.
 *   grpc_alts_credentials_options_destroy(c_options)             # <<<<<<<<<<<<<<
 *   return credentials
 * 
 */
  grpc_alts_credentials_options_destroy(__pyx_v_c_options);

  /* "src/python/grpcio/grpc/_cython/_cygrpc/credentials.pyx.pxi":423
 *   # Options can be destroyed as deep copy was performed.
 *   grpc_alts_credentials_options_destroy(c_options)
 *   return credentials             # <<<<<<<<<<<<<<
 * 
 * 
 */
  __Pyx_XDECREF(__pyx_r);
  __Pyx_INCREF(((PyObject *)__pyx_v_credentials));
  __pyx_r = ((PyObject *)__pyx_v_credentials);
  goto __pyx_L0;

  /* "src/python/grpcio/grpc/_cython/_cygrpc/credentials.pyx.pxi":417
 * 
 * 
 * def server_credentials_alts():             # <<<<<<<<<<<<<<
 *   cdef ServerCredentials credentials = ServerCredentials()
 *   cdef grpc_alts_credentials_options* c_options = grpc_alts_credentials_server_options_create()
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_AddTraceback("grpc._cython.cygrpc.server_credentials_alts", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XDECREF((PyObject *)__pyx_v_credentials);
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "src/python/grpcio/grpc/_cython/_cygrpc/credentials.pyx.pxi":430
 *   cdef grpc_call_credentials* _call_creds
 * 
 *   def __cinit__(self, CallCredentials call_creds):             # <<<<<<<<<<<<<<
 *     self._c_creds = NULL
 *     self._call_creds = call_creds.c()
 */

/* Python wrapper */
static int __pyx_pw_4grpc_7_cython_6cygrpc_31ComputeEngineChannelCredentials_1__cinit__(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
static int __pyx_pw_4grpc_7_cython_6cygrpc_31ComputeEngineChannelCredentials_1__cinit__(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
  struct __pyx_obj_4grpc_7_cython_6cygrpc_CallCredentials *__pyx_v_call_creds = 0;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  int __pyx_r;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__cinit__ (wrapper)", 0);
  {
    static PyObject **__pyx_pyargnames[] = {&__pyx_n_s_call_creds,0};
    PyObject* values[1] = {0};
    if (unlikely(__pyx_kwds)) {
      Py_ssize_t kw_args;
      const Py_ssize_t pos_args = PyTuple_GET_SIZE(__pyx_args);
      switch (pos_args) {
        case  1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
        CYTHON_FALLTHROUGH;
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      kw_args = PyDict_Size(__pyx_kwds);
      switch (pos_args) {
        case  0:
        if (likely((values[0] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_call_creds)) != 0)) kw_args--;
        else goto __pyx_L5_argtuple_error;
      }
      if (unlikely(kw_args > 0)) {
        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "__cinit__") < 0)) __PYX_ERR(5, 430, __pyx_L3_error)
      }
    } else if (PyTuple_GET_SIZE(__pyx_args) != 1) {
      goto __pyx_L5_argtuple_error;
    } else {
      values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
    }
    __pyx_v_call_creds = ((struct __pyx_obj_4grpc_7_cython_6cygrpc_CallCredentials *)values[0]);
  }
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("__cinit__", 1, 1, 1, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(5, 430, __pyx_L3_error)
  __pyx_L3_error:;
  __Pyx_AddTraceback("grpc._cython.cygrpc.ComputeEngineChannelCredentials.__cinit__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return -1;
  __pyx_L4_argument_unpacking_done:;
  if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_call_creds), __pyx_ptype_4grpc_7_cython_6cygrpc_CallCredentials, 1, "call_creds", 0))) __PYX_ERR(5, 430, __pyx_L1_error)
  __pyx_r = __pyx_pf_4grpc_7_cython_6cygrpc_31ComputeEngineChannelCredentials___cinit__(((struct __pyx_obj_4grpc_7_cython_6cygrpc_ComputeEngineChannelCredentials *)__pyx_v_self), __pyx_v_call_creds);

  /* function exit code */
  goto __pyx_L0;
  __pyx_L1_error:;
  __pyx_r = -1;
  __pyx_L0:;
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static int __pyx_pf_4grpc_7_cython_6cygrpc_31ComputeEngineChannelCredentials___cinit__(struct __pyx_obj_4grpc_7_cython_6cygrpc_ComputeEngineChannelCredentials *__pyx_v_self, struct __pyx_obj_4grpc_7_cython_6cygrpc_CallCredentials *__pyx_v_call_creds) {
  int __pyx_r;
  __Pyx_RefNannyDeclarations
  grpc_call_credentials *__pyx_t_1;
  int __pyx_t_2;
  PyObject *__pyx_t_3 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("__cinit__", 0);

  /* "src/python/grpcio/grpc/_cython/_cygrpc/credentials.pyx.pxi":431
 * 
 *   def __cinit__(self, CallCredentials call_creds):
 *     self._c_creds = NULL             # <<<<<<<<<<<<<<
 *     self._call_creds = call_creds.c()
 *     if self._call_creds == NULL:
 */
  __pyx_v_self->_c_creds = NULL;

  /* "src/python/grpcio/grpc/_cython/_cygrpc/credentials.pyx.pxi":432
 *   def __cinit__(self, CallCredentials call_creds):
 *     self._c_creds = NULL
 *     self._call_creds = call_creds.c()             # <<<<<<<<<<<<<<
 *     if self._call_creds == NULL:
 *       raise ValueError("Call credentials may not be NULL.")
 */
  __pyx_t_1 = ((struct __pyx_vtabstruct_4grpc_7_cython_6cygrpc_CallCredentials *)__pyx_v_call_creds->__pyx_vtab)->c(__pyx_v_call_creds); if (unlikely(PyErr_Occurred())) __PYX_ERR(5, 432, __pyx_L1_error)
  __pyx_v_self->_call_creds = __pyx_t_1;

  /* "src/python/grpcio/grpc/_cython/_cygrpc/credentials.pyx.pxi":433
 *     self._c_creds = NULL
 *     self._call_creds = call_creds.c()
 *     if self._call_creds == NULL:             # <<<<<<<<<<<<<<
 *       raise ValueError("Call credentials may not be NULL.")
 * 
 */
  __pyx_t_2 = ((__pyx_v_self->_call_creds == NULL) != 0);
  if (unlikely(__pyx_t_2)) {

    /* "src/python/grpcio/grpc/_cython/_cygrpc/credentials.pyx.pxi":434
 *     self._call_creds = call_creds.c()
 *     if self._call_creds == NULL:
 *       raise ValueError("Call credentials may not be NULL.")             # <<<<<<<<<<<<<<
 * 
 *   cdef grpc_channel_credentials *c(self) except *:
 */
    __pyx_t_3 = __Pyx_PyObject_Call(__pyx_builtin_ValueError, __pyx_tuple__62, NULL); if (unlikely(!__pyx_t_3)) __PYX_ERR(5, 434, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_3);
    __Pyx_Raise(__pyx_t_3, 0, 0, 0);
    __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
    __PYX_ERR(5, 434, __pyx_L1_error)

    /* "src/python/grpcio/grpc/_cython/_cygrpc/credentials.pyx.pxi":433
 *     self._c_creds = NULL
 *     self._call_creds = call_creds.c()
 *     if self._call_creds == NULL:             # <<<<<<<<<<<<<<
 *       raise ValueError("Call credentials may not be NULL.")
 * 
 */
  }

  /* "src/python/grpcio/grpc/_cython/_cygrpc/credentials.pyx.pxi":430
 *   cdef grpc_call_credentials* _call_creds
 * 
 *   def __cinit__(self, CallCredentials call_creds):             # <<<<<<<<<<<<<<
 *     self._c_creds = NULL
 *     self._call_creds = call_creds.c()
 */

  /* function exit code */
  __pyx_r = 0;
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_3);
  __Pyx_AddTraceback("grpc._cython.cygrpc.ComputeEngineChannelCredentials.__cinit__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = -1;
  __pyx_L0:;
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "src/python/grpcio/grpc/_cython/_cygrpc/credentials.pyx.pxi":436
 *       raise ValueError("Call credentials may not be NULL.")
 * 
 *   cdef grpc_channel_credentials *c(self) except *:             # <<<<<<<<<<<<<<
 *     self._c_creds = grpc_google_default_credentials_create(self._call_creds)
 *     return self._c_creds
 */

static grpc_channel_credentials *__pyx_f_4grpc_7_cython_6cygrpc_31ComputeEngineChannelCredentials_c(struct __pyx_obj_4grpc_7_cython_6cygrpc_ComputeEngineChannelCredentials *__pyx_v_self) {
  grpc_channel_credentials *__pyx_r;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("c", 0);

  /* "src/python/grpcio/grpc/_cython/_cygrpc/credentials.pyx.pxi":437
 * 
 *   cdef grpc_channel_credentials *c(self) except *:
 *     self._c_creds = grpc_google_default_credentials_create(self._call_creds)             # <<<<<<<<<<<<<<
 *     return self._c_creds
 * 
 */
  __pyx_v_self->_c_creds = grpc_google_default_credentials_create(__pyx_v_self->_call_creds);

  /* "src/python/grpcio/grpc/_cython/_cygrpc/credentials.pyx.pxi":438
 *   cdef grpc_channel_credentials *c(self) except *:
 *     self._c_creds = grpc_google_default_credentials_create(self._call_creds)
 *     return self._c_creds             # <<<<<<<<<<<<<<
 * 
 * 
 */
  __pyx_r = __pyx_v_self->_c_creds;
  goto __pyx_L0;

  /* "src/python/grpcio/grpc/_cython/_cygrpc/credentials.pyx.pxi":436
 *       raise ValueError("Call credentials may not be NULL.")
 * 
 *   cdef grpc_channel_credentials *c(self) except *:             # <<<<<<<<<<<<<<
 *     self._c_creds = grpc_google_default_credentials_create(self._call_creds)
 *     return self._c_creds
 */

  /* function exit code */
  __pyx_L0:;
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "(tree fragment)":1
 * def __reduce_cython__(self):             # <<<<<<<<<<<<<<
 *     raise TypeError("no default __reduce__ due to non-trivial __cinit__")
 * def __setstate_cython__(self, __pyx_state):
 */

/* Python wrapper */
static PyObject *__pyx_pw_4grpc_7_cython_6cygrpc_31ComputeEngineChannelCredentials_3__reduce_cython__(PyObject *__pyx_v_self, CYTHON_UNUSED PyObject *unused); /*proto*/
static PyObject *__pyx_pw_4grpc_7_cython_6cygrpc_31ComputeEngineChannelCredentials_3__reduce_cython__(PyObject *__pyx_v_self, CYTHON_UNUSED PyObject *unused) {
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__reduce_cython__ (wrapper)", 0);
  __pyx_r = __pyx_pf_4grpc_7_cython_6cygrpc_31ComputeEngineChannelCredentials_2__reduce_cython__(((struct __pyx_obj_4grpc_7_cython_6cygrpc_ComputeEngineChannelCredentials *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_4grpc_7_cython_6cygrpc_31ComputeEngineChannelCredentials_2__reduce_cython__(CYTHON_UNUSED struct __pyx_obj_4grpc_7_cython_6cygrpc_ComputeEngineChannelCredentials *__pyx_v_self) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("__reduce_cython__", 0);

  /* "(tree fragment)":2
 * def __reduce_cython__(self):
 *     raise TypeError("no default __reduce__ due to non-trivial __cinit__")             # <<<<<<<<<<<<<<
 * def __setstate_cython__(self, __pyx_state):
 *     raise TypeError("no default __reduce__ due to non-trivial __cinit__")
 */
  __pyx_t_1 = __Pyx_PyObject_Call(__pyx_builtin_TypeError, __pyx_tuple__63, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(11, 2, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_Raise(__pyx_t_1, 0, 0, 0);
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  __PYX_ERR(11, 2, __pyx_L1_error)

  /* "(tree fragment)":1
 * def __reduce_cython__(self):             # <<<<<<<<<<<<<<
 *     raise TypeError("no default __reduce__ due to non-trivial __cinit__")
 * def __setstate_cython__(self, __pyx_state):
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_AddTraceback("grpc._cython.cygrpc.ComputeEngineChannelCredentials.__reduce_cython__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "(tree fragment)":3
 * def __reduce_cython__(self):
 *     raise TypeError("no default __reduce__ due to non-trivial __cinit__")
 * def __setstate_cython__(self, __pyx_state):             # <<<<<<<<<<<<<<
 *     raise TypeError("no default __reduce__ due to non-trivial __cinit__")
 */

/* Python wrapper */
static PyObject *__pyx_pw_4grpc_7_cython_6cygrpc_31ComputeEngineChannelCredentials_5__setstate_cython__(PyObject *__pyx_v_self, PyObject *__pyx_v___pyx_state); /*proto*/
static PyObject *__pyx_pw_4grpc_7_cython_6cygrpc_31ComputeEngineChannelCredentials_5__setstate_cython__(PyObject *__pyx_v_self, PyObject *__pyx_v___pyx_state) {
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__setstate_cython__ (wrapper)", 0);
  __pyx_r = __pyx_pf_4grpc_7_cython_6cygrpc_31ComputeEngineChannelCredentials_4__setstate_cython__(((struct __pyx_obj_4grpc_7_cython_6cygrpc_ComputeEngineChannelCredentials *)__pyx_v_self), ((PyObject *)__pyx_v___pyx_state));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_4grpc_7_cython_6cygrpc_31ComputeEngineChannelCredentials_4__setstate_cython__(CYTHON_UNUSED struct __pyx_obj_4grpc_7_cython_6cygrpc_ComputeEngineChannelCredentials *__pyx_v_self, CYTHON_UNUSED PyObject *__pyx_v___pyx_state) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("__setstate_cython__", 0);

  /* "(tree fragment)":4
 *     raise TypeError("no default __reduce__ due to non-trivial __cinit__")
 * def __setstate_cython__(self, __pyx_state):
 *     raise TypeError("no default __reduce__ due to non-trivial __cinit__")             # <<<<<<<<<<<<<<
 */
  __pyx_t_1 = __Pyx_PyObject_Call(__pyx_builtin_TypeError, __pyx_tuple__64, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(11, 4, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_Raise(__pyx_t_1, 0, 0, 0);
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  __PYX_ERR(11, 4, __pyx_L1_error)

  /* "(tree fragment)":3
 * def __reduce_cython__(self):
 *     raise TypeError("no default __reduce__ due to non-trivial __cinit__")
 * def __setstate_cython__(self, __pyx_state):             # <<<<<<<<<<<<<<
 *     raise TypeError("no default __reduce__ due to non-trivial __cinit__")
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_AddTraceback("grpc._cython.cygrpc.ComputeEngineChannelCredentials.__setstate_cython__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "src/python/grpcio/grpc/_cython/_cygrpc/credentials.pyx.pxi":441
 * 
 * 
 * def channel_credentials_compute_engine(call_creds):             # <<<<<<<<<<<<<<
 *   return ComputeEngineChannelCredentials(call_creds)
 */

/* Python wrapper */
static PyObject *__pyx_pw_4grpc_7_cython_6cygrpc_43channel_credentials_compute_engine(PyObject *__pyx_self, PyObject *__pyx_v_call_creds); /*proto*/
static PyMethodDef __pyx_mdef_4grpc_7_cython_6cygrpc_43channel_credentials_compute_engine = {"channel_credentials_compute_engine", (PyCFunction)__pyx_pw_4grpc_7_cython_6cygrpc_43channel_credentials_compute_engine, METH_O, 0};
static PyObject *__pyx_pw_4grpc_7_cython_6cygrpc_43channel_credentials_compute_engine(PyObject *__pyx_self, PyObject *__pyx_v_call_creds) {
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("channel_credentials_compute_engine (wrapper)", 0);
  __pyx_r = __pyx_pf_4grpc_7_cython_6cygrpc_42channel_credentials_compute_engine(__pyx_self, ((PyObject *)__pyx_v_call_creds));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_4grpc_7_cython_6cygrpc_42channel_credentials_compute_engine(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__pyx_v_call_creds) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("channel_credentials_compute_engine", 0);

  /* "src/python/grpcio/grpc/_cython/_cygrpc/credentials.pyx.pxi":442
 * 
 * def channel_credentials_compute_engine(call_creds):
 *   return ComputeEngineChannelCredentials(call_creds)             # <<<<<<<<<<<<<<
 */
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_1 = __Pyx_PyObject_CallOneArg(((PyObject *)__pyx_ptype_4grpc_7_cython_6cygrpc_ComputeEngineChannelCredentials), __pyx_v_call_creds); if (unlikely(!__pyx_t_1)) __PYX_ERR(5, 442, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_r = __pyx_t_1;
  __pyx_t_1 = 0;
  goto __pyx_L0;

  /* "src/python/grpcio/grpc/_cython/_cygrpc/credentials.pyx.pxi":441
 * 
 * 
 * def channel_credentials_compute_engine(call_creds):             # <<<<<<<<<<<<<<
 *   return ComputeEngineChannelCredentials(call_creds)
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_AddTraceback("grpc._cython.cygrpc.channel_credentials_compute_engine", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "src/python/grpcio/grpc/_cython/_cygrpc/completion_queue.pyx.pxi":19
 * 
 * 
 * cdef grpc_event _next(grpc_completion_queue *c_completion_queue, deadline) except *:             # <<<<<<<<<<<<<<
 *   cdef gpr_timespec c_increment
 *   cdef gpr_timespec c_timeout
 */

static grpc_event __pyx_f_4grpc_7_cython_6cygrpc__next(grpc_completion_queue *__pyx_v_c_completion_queue, PyObject *__pyx_v_deadline) {
  gpr_timespec __pyx_v_c_increment;
  gpr_timespec __pyx_v_c_timeout;
  gpr_timespec __pyx_v_c_deadline;
  grpc_event __pyx_v_c_event;
  grpc_event __pyx_r;
  __Pyx_RefNannyDeclarations
  int __pyx_t_1;
  int __pyx_t_2;
  gpr_timespec __pyx_t_3;
  int __pyx_t_4;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("_next", 0);

  /* "src/python/grpcio/grpc/_cython/_cygrpc/completion_queue.pyx.pxi":23
 *   cdef gpr_timespec c_timeout
 *   cdef gpr_timespec c_deadline
 *   c_increment = gpr_time_from_millis(_INTERRUPT_CHECK_PERIOD_MS, GPR_TIMESPAN)             # <<<<<<<<<<<<<<
 *   if deadline is None:
 *     c_deadline = gpr_inf_future(GPR_CLOCK_REALTIME)
 */
  __pyx_v_c_increment = gpr_time_from_millis(__pyx_v_4grpc_7_cython_6cygrpc__INTERRUPT_CHECK_PERIOD_MS, GPR_TIMESPAN);

  /* "src/python/grpcio/grpc/_cython/_cygrpc/completion_queue.pyx.pxi":24
 *   cdef gpr_timespec c_deadline
 *   c_increment = gpr_time_from_millis(_INTERRUPT_CHECK_PERIOD_MS, GPR_TIMESPAN)
 *   if deadline is None:             # <<<<<<<<<<<<<<
 *     c_deadline = gpr_inf_future(GPR_CLOCK_REALTIME)
 *   else:
 */
  __pyx_t_1 = (__pyx_v_deadline == Py_None);
  __pyx_t_2 = (__pyx_t_1 != 0);
  if (__pyx_t_2) {

    /* "src/python/grpcio/grpc/_cython/_cygrpc/completion_queue.pyx.pxi":25
 *   c_increment = gpr_time_from_millis(_INTERRUPT_CHECK_PERIOD_MS, GPR_TIMESPAN)
 *   if deadline is None:
 *     c_deadline = gpr_inf_future(GPR_CLOCK_REALTIME)             # <<<<<<<<<<<<<<
 *   else:
 *     c_deadline = _timespec_from_time(deadline)
 */
    __pyx_v_c_deadline = gpr_inf_future(GPR_CLOCK_REALTIME);

    /* "src/python/grpcio/grpc/_cython/_cygrpc/completion_queue.pyx.pxi":24
 *   cdef gpr_timespec c_deadline
 *   c_increment = gpr_time_from_millis(_INTERRUPT_CHECK_PERIOD_MS, GPR_TIMESPAN)
 *   if deadline is None:             # <<<<<<<<<<<<<<
 *     c_deadline = gpr_inf_future(GPR_CLOCK_REALTIME)
 *   else:
 */
    goto __pyx_L3;
  }

  /* "src/python/grpcio/grpc/_cython/_cygrpc/completion_queue.pyx.pxi":27
 *     c_deadline = gpr_inf_future(GPR_CLOCK_REALTIME)
 *   else:
 *     c_deadline = _timespec_from_time(deadline)             # <<<<<<<<<<<<<<
 * 
 *   while True:
 */
  /*else*/ {
    __pyx_t_3 = __pyx_f_4grpc_7_cython_6cygrpc__timespec_from_time(__pyx_v_deadline); if (unlikely(PyErr_Occurred())) __PYX_ERR(15, 27, __pyx_L1_error)
    __pyx_v_c_deadline = __pyx_t_3;
  }
  __pyx_L3:;

  /* "src/python/grpcio/grpc/_cython/_cygrpc/completion_queue.pyx.pxi":29
 *     c_deadline = _timespec_from_time(deadline)
 * 
 *   while True:             # <<<<<<<<<<<<<<
 *     with nogil:
 *       c_timeout = gpr_time_add(gpr_now(GPR_CLOCK_REALTIME), c_increment)
 */
  while (1) {

    /* "src/python/grpcio/grpc/_cython/_cygrpc/completion_queue.pyx.pxi":30
 * 
 *   while True:
 *     with nogil:             # <<<<<<<<<<<<<<
 *       c_timeout = gpr_time_add(gpr_now(GPR_CLOCK_REALTIME), c_increment)
 *       if gpr_time_cmp(c_timeout, c_deadline) > 0:
 */
    {
        #ifdef WITH_THREAD
        PyThreadState *_save;
        Py_UNBLOCK_THREADS
        __Pyx_FastGIL_Remember();
        #endif
        /*try:*/ {

          /* "src/python/grpcio/grpc/_cython/_cygrpc/completion_queue.pyx.pxi":31
 *   while True:
 *     with nogil:
 *       c_timeout = gpr_time_add(gpr_now(GPR_CLOCK_REALTIME), c_increment)             # <<<<<<<<<<<<<<
 *       if gpr_time_cmp(c_timeout, c_deadline) > 0:
 *         c_timeout = c_deadline
 */
          __pyx_v_c_timeout = gpr_time_add(gpr_now(GPR_CLOCK_REALTIME), __pyx_v_c_increment);

          /* "src/python/grpcio/grpc/_cython/_cygrpc/completion_queue.pyx.pxi":32
 *     with nogil:
 *       c_timeout = gpr_time_add(gpr_now(GPR_CLOCK_REALTIME), c_increment)
 *       if gpr_time_cmp(c_timeout, c_deadline) > 0:             # <<<<<<<<<<<<<<
 *         c_timeout = c_deadline
 * 
 */
          __pyx_t_2 = ((gpr_time_cmp(__pyx_v_c_timeout, __pyx_v_c_deadline) > 0) != 0);
          if (__pyx_t_2) {

            /* "src/python/grpcio/grpc/_cython/_cygrpc/completion_queue.pyx.pxi":33
 *       c_timeout = gpr_time_add(gpr_now(GPR_CLOCK_REALTIME), c_increment)
 *       if gpr_time_cmp(c_timeout, c_deadline) > 0:
 *         c_timeout = c_deadline             # <<<<<<<<<<<<<<
 * 
 *       c_event = grpc_completion_queue_next(c_completion_queue, c_timeout, NULL)
 */
            __pyx_v_c_timeout = __pyx_v_c_deadline;

            /* "src/python/grpcio/grpc/_cython/_cygrpc/completion_queue.pyx.pxi":32
 *     with nogil:
 *       c_timeout = gpr_time_add(gpr_now(GPR_CLOCK_REALTIME), c_increment)
 *       if gpr_time_cmp(c_timeout, c_deadline) > 0:             # <<<<<<<<<<<<<<
 *         c_timeout = c_deadline
 * 
 */
          }

          /* "src/python/grpcio/grpc/_cython/_cygrpc/completion_queue.pyx.pxi":35
 *         c_timeout = c_deadline
 * 
 *       c_event = grpc_completion_queue_next(c_completion_queue, c_timeout, NULL)             # <<<<<<<<<<<<<<
 * 
 *       if (c_event.type != GRPC_QUEUE_TIMEOUT or
 */
          __pyx_v_c_event = grpc_completion_queue_next(__pyx_v_c_completion_queue, __pyx_v_c_timeout, NULL);

          /* "src/python/grpcio/grpc/_cython/_cygrpc/completion_queue.pyx.pxi":37
 *       c_event = grpc_completion_queue_next(c_completion_queue, c_timeout, NULL)
 * 
 *       if (c_event.type != GRPC_QUEUE_TIMEOUT or             # <<<<<<<<<<<<<<
 *           gpr_time_cmp(c_timeout, c_deadline) == 0):
 *         break
 */
          __pyx_t_1 = ((__pyx_v_c_event.type != GRPC_QUEUE_TIMEOUT) != 0);
          if (!__pyx_t_1) {
          } else {
            __pyx_t_2 = __pyx_t_1;
            goto __pyx_L13_bool_binop_done;
          }

          /* "src/python/grpcio/grpc/_cython/_cygrpc/completion_queue.pyx.pxi":38
 * 
 *       if (c_event.type != GRPC_QUEUE_TIMEOUT or
 *           gpr_time_cmp(c_timeout, c_deadline) == 0):             # <<<<<<<<<<<<<<
 *         break
 * 
 */
          __pyx_t_1 = ((gpr_time_cmp(__pyx_v_c_timeout, __pyx_v_c_deadline) == 0) != 0);
          __pyx_t_2 = __pyx_t_1;
          __pyx_L13_bool_binop_done:;

          /* "src/python/grpcio/grpc/_cython/_cygrpc/completion_queue.pyx.pxi":37
 *       c_event = grpc_completion_queue_next(c_completion_queue, c_timeout, NULL)
 * 
 *       if (c_event.type != GRPC_QUEUE_TIMEOUT or             # <<<<<<<<<<<<<<
 *           gpr_time_cmp(c_timeout, c_deadline) == 0):
 *         break
 */
          if (__pyx_t_2) {

            /* "src/python/grpcio/grpc/_cython/_cygrpc/completion_queue.pyx.pxi":39
 *       if (c_event.type != GRPC_QUEUE_TIMEOUT or
 *           gpr_time_cmp(c_timeout, c_deadline) == 0):
 *         break             # <<<<<<<<<<<<<<
 * 
 *     # Handle any signals
 */
            goto __pyx_L7_break;

            /* "src/python/grpcio/grpc/_cython/_cygrpc/completion_queue.pyx.pxi":37
 *       c_event = grpc_completion_queue_next(c_completion_queue, c_timeout, NULL)
 * 
 *       if (c_event.type != GRPC_QUEUE_TIMEOUT or             # <<<<<<<<<<<<<<
 *           gpr_time_cmp(c_timeout, c_deadline) == 0):
 *         break
 */
          }
        }

        /* "src/python/grpcio/grpc/_cython/_cygrpc/completion_queue.pyx.pxi":30
 * 
 *   while True:
 *     with nogil:             # <<<<<<<<<<<<<<
 *       c_timeout = gpr_time_add(gpr_now(GPR_CLOCK_REALTIME), c_increment)
 *       if gpr_time_cmp(c_timeout, c_deadline) > 0:
 */
        /*finally:*/ {
          /*normal exit:*/{
            #ifdef WITH_THREAD
            __Pyx_FastGIL_Forget();
            Py_BLOCK_THREADS
            #endif
            goto __pyx_L10;
          }
          __pyx_L7_break: {
            #ifdef WITH_THREAD
            __Pyx_FastGIL_Forget();
            Py_BLOCK_THREADS
            #endif
            goto __pyx_L5_break;
          }
          __pyx_L10:;
        }
    }

    /* "src/python/grpcio/grpc/_cython/_cygrpc/completion_queue.pyx.pxi":42
 * 
 *     # Handle any signals
 *     cpython.PyErr_CheckSignals()             # <<<<<<<<<<<<<<
 *   return c_event
 * 
 */
    __pyx_t_4 = PyErr_CheckSignals(); if (unlikely(__pyx_t_4 == ((int)-1))) __PYX_ERR(15, 42, __pyx_L1_error)
  }
  __pyx_L5_break:;

  /* "src/python/grpcio/grpc/_cython/_cygrpc/completion_queue.pyx.pxi":43
 *     # Handle any signals
 *     cpython.PyErr_CheckSignals()
 *   return c_event             # <<<<<<<<<<<<<<
 * 
 * 
 */
  __pyx_r = __pyx_v_c_event;
  goto __pyx_L0;

  /* "src/python/grpcio/grpc/_cython/_cygrpc/completion_queue.pyx.pxi":19
 * 
 * 
 * cdef grpc_event _next(grpc_completion_queue *c_completion_queue, deadline) except *:             # <<<<<<<<<<<<<<
 *   cdef gpr_timespec c_increment
 *   cdef gpr_timespec c_timeout
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_AddTraceback("grpc._cython.cygrpc._next", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_pretend_to_initialize(&__pyx_r);
  __pyx_L0:;
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "src/python/grpcio/grpc/_cython/_cygrpc/completion_queue.pyx.pxi":46
 * 
 * 
 * cdef _interpret_event(grpc_event c_event):             # <<<<<<<<<<<<<<
 *   cdef _Tag tag
 *   if c_event.type == GRPC_QUEUE_TIMEOUT:
 */

static PyObject *__pyx_f_4grpc_7_cython_6cygrpc__interpret_event(grpc_event __pyx_v_c_event) {
  struct __pyx_obj_4grpc_7_cython_6cygrpc__Tag *__pyx_v_tag = 0;
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  PyObject *__pyx_t_2 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("_interpret_event", 0);

  /* "src/python/grpcio/grpc/_cython/_cygrpc/completion_queue.pyx.pxi":48
 * cdef _interpret_event(grpc_event c_event):
 *   cdef _Tag tag
 *   if c_event.type == GRPC_QUEUE_TIMEOUT:             # <<<<<<<<<<<<<<
 *     # TODO(ericgribkoff) Do not coopt ConnectivityEvent here.
 *     return None, ConnectivityEvent(GRPC_QUEUE_TIMEOUT, False, None)
 */
  switch (__pyx_v_c_event.type) {
    case GRPC_QUEUE_TIMEOUT:

    /* "src/python/grpcio/grpc/_cython/_cygrpc/completion_queue.pyx.pxi":50
 *   if c_event.type == GRPC_QUEUE_TIMEOUT:
 *     # TODO(ericgribkoff) Do not coopt ConnectivityEvent here.
 *     return None, ConnectivityEvent(GRPC_QUEUE_TIMEOUT, False, None)             # <<<<<<<<<<<<<<
 *   elif c_event.type == GRPC_QUEUE_SHUTDOWN:
 *     # NOTE(nathaniel): For now we coopt ConnectivityEvent here.
 */
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_1 = __Pyx_PyInt_From_grpc_completion_type(GRPC_QUEUE_TIMEOUT); if (unlikely(!__pyx_t_1)) __PYX_ERR(15, 50, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_1);
    __pyx_t_2 = PyTuple_New(3); if (unlikely(!__pyx_t_2)) __PYX_ERR(15, 50, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_2);
    __Pyx_GIVEREF(__pyx_t_1);
    PyTuple_SET_ITEM(__pyx_t_2, 0, __pyx_t_1);
    __Pyx_INCREF(Py_False);
    __Pyx_GIVEREF(Py_False);
    PyTuple_SET_ITEM(__pyx_t_2, 1, Py_False);
    __Pyx_INCREF(Py_None);
    __Pyx_GIVEREF(Py_None);
    PyTuple_SET_ITEM(__pyx_t_2, 2, Py_None);
    __pyx_t_1 = 0;
    __pyx_t_1 = __Pyx_PyObject_Call(((PyObject *)__pyx_ptype_4grpc_7_cython_6cygrpc_ConnectivityEvent), __pyx_t_2, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(15, 50, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_1);
    __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
    __pyx_t_2 = PyTuple_New(2); if (unlikely(!__pyx_t_2)) __PYX_ERR(15, 50, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_2);
    __Pyx_INCREF(Py_None);
    __Pyx_GIVEREF(Py_None);
    PyTuple_SET_ITEM(__pyx_t_2, 0, Py_None);
    __Pyx_GIVEREF(__pyx_t_1);
    PyTuple_SET_ITEM(__pyx_t_2, 1, __pyx_t_1);
    __pyx_t_1 = 0;
    __pyx_r = __pyx_t_2;
    __pyx_t_2 = 0;
    goto __pyx_L0;

    /* "src/python/grpcio/grpc/_cython/_cygrpc/completion_queue.pyx.pxi":48
 * cdef _interpret_event(grpc_event c_event):
 *   cdef _Tag tag
 *   if c_event.type == GRPC_QUEUE_TIMEOUT:             # <<<<<<<<<<<<<<
 *     # TODO(ericgribkoff) Do not coopt ConnectivityEvent here.
 *     return None, ConnectivityEvent(GRPC_QUEUE_TIMEOUT, False, None)
 */
    break;
    case GRPC_QUEUE_SHUTDOWN:

    /* "src/python/grpcio/grpc/_cython/_cygrpc/completion_queue.pyx.pxi":53
 *   elif c_event.type == GRPC_QUEUE_SHUTDOWN:
 *     # NOTE(nathaniel): For now we coopt ConnectivityEvent here.
 *     return None, ConnectivityEvent(GRPC_QUEUE_SHUTDOWN, False, None)             # <<<<<<<<<<<<<<
 *   else:
 *     tag = <_Tag>c_event.tag
 */
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_2 = __Pyx_PyInt_From_grpc_completion_type(GRPC_QUEUE_SHUTDOWN); if (unlikely(!__pyx_t_2)) __PYX_ERR(15, 53, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_2);
    __pyx_t_1 = PyTuple_New(3); if (unlikely(!__pyx_t_1)) __PYX_ERR(15, 53, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_1);
    __Pyx_GIVEREF(__pyx_t_2);
    PyTuple_SET_ITEM(__pyx_t_1, 0, __pyx_t_2);
    __Pyx_INCREF(Py_False);
    __Pyx_GIVEREF(Py_False);
    PyTuple_SET_ITEM(__pyx_t_1, 1, Py_False);
    __Pyx_INCREF(Py_None);
    __Pyx_GIVEREF(Py_None);
    PyTuple_SET_ITEM(__pyx_t_1, 2, Py_None);
    __pyx_t_2 = 0;
    __pyx_t_2 = __Pyx_PyObject_Call(((PyObject *)__pyx_ptype_4grpc_7_cython_6cygrpc_ConnectivityEvent), __pyx_t_1, NULL); if (unlikely(!__pyx_t_2)) __PYX_ERR(15, 53, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_2);
    __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
    __pyx_t_1 = PyTuple_New(2); if (unlikely(!__pyx_t_1)) __PYX_ERR(15, 53, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_1);
    __Pyx_INCREF(Py_None);
    __Pyx_GIVEREF(Py_None);
    PyTuple_SET_ITEM(__pyx_t_1, 0, Py_None);
    __Pyx_GIVEREF(__pyx_t_2);
    PyTuple_SET_ITEM(__pyx_t_1, 1, __pyx_t_2);
    __pyx_t_2 = 0;
    __pyx_r = __pyx_t_1;
    __pyx_t_1 = 0;
    goto __pyx_L0;

    /* "src/python/grpcio/grpc/_cython/_cygrpc/completion_queue.pyx.pxi":51
 *     # TODO(ericgribkoff) Do not coopt ConnectivityEvent here.
 *     return None, ConnectivityEvent(GRPC_QUEUE_TIMEOUT, False, None)
 *   elif c_event.type == GRPC_QUEUE_SHUTDOWN:             # <<<<<<<<<<<<<<
 *     # NOTE(nathaniel): For now we coopt ConnectivityEvent here.
 *     return None, ConnectivityEvent(GRPC_QUEUE_SHUTDOWN, False, None)
 */
    break;
    default:

    /* "src/python/grpcio/grpc/_cython/_cygrpc/completion_queue.pyx.pxi":55
 *     return None, ConnectivityEvent(GRPC_QUEUE_SHUTDOWN, False, None)
 *   else:
 *     tag = <_Tag>c_event.tag             # <<<<<<<<<<<<<<
 *     # We receive event tags only after they've been inc-ref'd elsewhere in
 *     # the code.
 */
    __pyx_t_1 = ((PyObject *)__pyx_v_c_event.tag);
    __Pyx_INCREF(__pyx_t_1);
    __pyx_v_tag = ((struct __pyx_obj_4grpc_7_cython_6cygrpc__Tag *)__pyx_t_1);
    __pyx_t_1 = 0;

    /* "src/python/grpcio/grpc/_cython/_cygrpc/completion_queue.pyx.pxi":58
 *     # We receive event tags only after they've been inc-ref'd elsewhere in
 *     # the code.
 *     cpython.Py_DECREF(tag)             # <<<<<<<<<<<<<<
 *     return tag, tag.event(c_event)
 * 
 */
    Py_DECREF(((PyObject *)__pyx_v_tag));

    /* "src/python/grpcio/grpc/_cython/_cygrpc/completion_queue.pyx.pxi":59
 *     # the code.
 *     cpython.Py_DECREF(tag)
 *     return tag, tag.event(c_event)             # <<<<<<<<<<<<<<
 * 
 * 
 */
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_1 = ((struct __pyx_vtabstruct_4grpc_7_cython_6cygrpc__Tag *)__pyx_v_tag->__pyx_vtab)->event(__pyx_v_tag, __pyx_v_c_event); if (unlikely(!__pyx_t_1)) __PYX_ERR(15, 59, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_1);
    __pyx_t_2 = PyTuple_New(2); if (unlikely(!__pyx_t_2)) __PYX_ERR(15, 59, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_2);
    __Pyx_INCREF(((PyObject *)__pyx_v_tag));
    __Pyx_GIVEREF(((PyObject *)__pyx_v_tag));
    PyTuple_SET_ITEM(__pyx_t_2, 0, ((PyObject *)__pyx_v_tag));
    __Pyx_GIVEREF(__pyx_t_1);
    PyTuple_SET_ITEM(__pyx_t_2, 1, __pyx_t_1);
    __pyx_t_1 = 0;
    __pyx_r = __pyx_t_2;
    __pyx_t_2 = 0;
    goto __pyx_L0;
    break;
  }

  /* "src/python/grpcio/grpc/_cython/_cygrpc/completion_queue.pyx.pxi":46
 * 
 * 
 * cdef _interpret_event(grpc_event c_event):             # <<<<<<<<<<<<<<
 *   cdef _Tag tag
 *   if c_event.type == GRPC_QUEUE_TIMEOUT:
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_AddTraceback("grpc._cython.cygrpc._interpret_event", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = 0;
  __pyx_L0:;
  __Pyx_XDECREF((PyObject *)__pyx_v_tag);
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "src/python/grpcio/grpc/_cython/_cygrpc/completion_queue.pyx.pxi":62
 * 
 * 
 * cdef _latent_event(grpc_completion_queue *c_completion_queue, object deadline):             # <<<<<<<<<<<<<<
 *   cdef grpc_event c_event = _next(c_completion_queue, deadline)
 *   return _interpret_event(c_event)
 */

static PyObject *__pyx_f_4grpc_7_cython_6cygrpc__latent_event(grpc_completion_queue *__pyx_v_c_completion_queue, PyObject *__pyx_v_deadline) {
  grpc_event __pyx_v_c_event;
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  grpc_event __pyx_t_1;
  PyObject *__pyx_t_2 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("_latent_event", 0);

  /* "src/python/grpcio/grpc/_cython/_cygrpc/completion_queue.pyx.pxi":63
 * 
 * cdef _latent_event(grpc_completion_queue *c_completion_queue, object deadline):
 *   cdef grpc_event c_event = _next(c_completion_queue, deadline)             # <<<<<<<<<<<<<<
 *   return _interpret_event(c_event)
 * 
 */
  __pyx_t_1 = __pyx_f_4grpc_7_cython_6cygrpc__next(__pyx_v_c_completion_queue, __pyx_v_deadline); if (unlikely(PyErr_Occurred())) __PYX_ERR(15, 63, __pyx_L1_error)
  __pyx_v_c_event = __pyx_t_1;

  /* "src/python/grpcio/grpc/_cython/_cygrpc/completion_queue.pyx.pxi":64
 * cdef _latent_event(grpc_completion_queue *c_completion_queue, object deadline):
 *   cdef grpc_event c_event = _next(c_completion_queue, deadline)
 *   return _interpret_event(c_event)             # <<<<<<<<<<<<<<
 * 
 * 
 */
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_2 = __pyx_f_4grpc_7_cython_6cygrpc__interpret_event(__pyx_v_c_event); if (unlikely(!__pyx_t_2)) __PYX_ERR(15, 64, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __pyx_r = __pyx_t_2;
  __pyx_t_2 = 0;
  goto __pyx_L0;

  /* "src/python/grpcio/grpc/_cython/_cygrpc/completion_queue.pyx.pxi":62
 * 
 * 
 * cdef _latent_event(grpc_completion_queue *c_completion_queue, object deadline):             # <<<<<<<<<<<<<<
 *   cdef grpc_event c_event = _next(c_completion_queue, deadline)
 *   return _interpret_event(c_event)
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_AddTraceback("grpc._cython.cygrpc._latent_event", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = 0;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "src/python/grpcio/grpc/_cython/_cygrpc/completion_queue.pyx.pxi":69
 * cdef class CompletionQueue:
 * 
 *   def __cinit__(self, shutdown_cq=False):             # <<<<<<<<<<<<<<
 *     cdef grpc_completion_queue_attributes c_attrs
 *     fork_handlers_and_grpc_init()
 */

/* Python wrapper */
static int __pyx_pw_4grpc_7_cython_6cygrpc_15CompletionQueue_1__cinit__(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
static int __pyx_pw_4grpc_7_cython_6cygrpc_15CompletionQueue_1__cinit__(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
  PyObject *__pyx_v_shutdown_cq = 0;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  int __pyx_r;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__cinit__ (wrapper)", 0);
  {
    static PyObject **__pyx_pyargnames[] = {&__pyx_n_s_shutdown_cq,0};
    PyObject* values[1] = {0};
    values[0] = ((PyObject *)Py_False);
    if (unlikely(__pyx_kwds)) {
      Py_ssize_t kw_args;
      const Py_ssize_t pos_args = PyTuple_GET_SIZE(__pyx_args);
      switch (pos_args) {
        case  1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
        CYTHON_FALLTHROUGH;
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      kw_args = PyDict_Size(__pyx_kwds);
      switch (pos_args) {
        case  0:
        if (kw_args > 0) {
          PyObject* value = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_shutdown_cq);
          if (value) { values[0] = value; kw_args--; }
        }
      }
      if (unlikely(kw_args > 0)) {
        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "__cinit__") < 0)) __PYX_ERR(15, 69, __pyx_L3_error)
      }
    } else {
      switch (PyTuple_GET_SIZE(__pyx_args)) {
        case  1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
        CYTHON_FALLTHROUGH;
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
    }
    __pyx_v_shutdown_cq = values[0];
  }
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("__cinit__", 0, 0, 1, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(15, 69, __pyx_L3_error)
  __pyx_L3_error:;
  __Pyx_AddTraceback("grpc._cython.cygrpc.CompletionQueue.__cinit__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return -1;
  __pyx_L4_argument_unpacking_done:;
  __pyx_r = __pyx_pf_4grpc_7_cython_6cygrpc_15CompletionQueue___cinit__(((struct __pyx_obj_4grpc_7_cython_6cygrpc_CompletionQueue *)__pyx_v_self), __pyx_v_shutdown_cq);

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static int __pyx_pf_4grpc_7_cython_6cygrpc_15CompletionQueue___cinit__(struct __pyx_obj_4grpc_7_cython_6cygrpc_CompletionQueue *__pyx_v_self, PyObject *__pyx_v_shutdown_cq) {
  grpc_completion_queue_attributes __pyx_v_c_attrs;
  int __pyx_r;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  PyObject *__pyx_t_2 = NULL;
  PyObject *__pyx_t_3 = NULL;
  int __pyx_t_4;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("__cinit__", 0);

  /* "src/python/grpcio/grpc/_cython/_cygrpc/completion_queue.pyx.pxi":71
 *   def __cinit__(self, shutdown_cq=False):
 *     cdef grpc_completion_queue_attributes c_attrs
 *     fork_handlers_and_grpc_init()             # <<<<<<<<<<<<<<
 *     if shutdown_cq:
 *       c_attrs.version = 1
 */
  __Pyx_GetModuleGlobalName(__pyx_t_2, __pyx_n_s_fork_handlers_and_grpc_init); if (unlikely(!__pyx_t_2)) __PYX_ERR(15, 71, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __pyx_t_3 = NULL;
  if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_2))) {
    __pyx_t_3 = PyMethod_GET_SELF(__pyx_t_2);
    if (likely(__pyx_t_3)) {
      PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_2);
      __Pyx_INCREF(__pyx_t_3);
      __Pyx_INCREF(function);
      __Pyx_DECREF_SET(__pyx_t_2, function);
    }
  }
  __pyx_t_1 = (__pyx_t_3) ? __Pyx_PyObject_CallOneArg(__pyx_t_2, __pyx_t_3) : __Pyx_PyObject_CallNoArg(__pyx_t_2);
  __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0;
  if (unlikely(!__pyx_t_1)) __PYX_ERR(15, 71, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;

  /* "src/python/grpcio/grpc/_cython/_cygrpc/completion_queue.pyx.pxi":72
 *     cdef grpc_completion_queue_attributes c_attrs
 *     fork_handlers_and_grpc_init()
 *     if shutdown_cq:             # <<<<<<<<<<<<<<
 *       c_attrs.version = 1
 *       c_attrs.cq_completion_type = GRPC_CQ_NEXT
 */
  __pyx_t_4 = __Pyx_PyObject_IsTrue(__pyx_v_shutdown_cq); if (unlikely(__pyx_t_4 < 0)) __PYX_ERR(15, 72, __pyx_L1_error)
  if (__pyx_t_4) {

    /* "src/python/grpcio/grpc/_cython/_cygrpc/completion_queue.pyx.pxi":73
 *     fork_handlers_and_grpc_init()
 *     if shutdown_cq:
 *       c_attrs.version = 1             # <<<<<<<<<<<<<<
 *       c_attrs.cq_completion_type = GRPC_CQ_NEXT
 *       c_attrs.cq_polling_type = GRPC_CQ_NON_LISTENING
 */
    __pyx_v_c_attrs.version = 1;

    /* "src/python/grpcio/grpc/_cython/_cygrpc/completion_queue.pyx.pxi":74
 *     if shutdown_cq:
 *       c_attrs.version = 1
 *       c_attrs.cq_completion_type = GRPC_CQ_NEXT             # <<<<<<<<<<<<<<
 *       c_attrs.cq_polling_type = GRPC_CQ_NON_LISTENING
 *       self.c_completion_queue = grpc_completion_queue_create(
 */
    __pyx_v_c_attrs.cq_completion_type = GRPC_CQ_NEXT;

    /* "src/python/grpcio/grpc/_cython/_cygrpc/completion_queue.pyx.pxi":75
 *       c_attrs.version = 1
 *       c_attrs.cq_completion_type = GRPC_CQ_NEXT
 *       c_attrs.cq_polling_type = GRPC_CQ_NON_LISTENING             # <<<<<<<<<<<<<<
 *       self.c_completion_queue = grpc_completion_queue_create(
 *           grpc_completion_queue_factory_lookup(&c_attrs), &c_attrs, NULL);
 */
    __pyx_v_c_attrs.cq_polling_type = GRPC_CQ_NON_LISTENING;

    /* "src/python/grpcio/grpc/_cython/_cygrpc/completion_queue.pyx.pxi":76
 *       c_attrs.cq_completion_type = GRPC_CQ_NEXT
 *       c_attrs.cq_polling_type = GRPC_CQ_NON_LISTENING
 *       self.c_completion_queue = grpc_completion_queue_create(             # <<<<<<<<<<<<<<
 *           grpc_completion_queue_factory_lookup(&c_attrs), &c_attrs, NULL);
 *     else:
 */
    __pyx_v_self->c_completion_queue = grpc_completion_queue_create(grpc_completion_queue_factory_lookup((&__pyx_v_c_attrs)), (&__pyx_v_c_attrs), NULL);

    /* "src/python/grpcio/grpc/_cython/_cygrpc/completion_queue.pyx.pxi":72
 *     cdef grpc_completion_queue_attributes c_attrs
 *     fork_handlers_and_grpc_init()
 *     if shutdown_cq:             # <<<<<<<<<<<<<<
 *       c_attrs.version = 1
 *       c_attrs.cq_completion_type = GRPC_CQ_NEXT
 */
    goto __pyx_L3;
  }

  /* "src/python/grpcio/grpc/_cython/_cygrpc/completion_queue.pyx.pxi":79
 *           grpc_completion_queue_factory_lookup(&c_attrs), &c_attrs, NULL);
 *     else:
 *       self.c_completion_queue = grpc_completion_queue_create_for_next(NULL)             # <<<<<<<<<<<<<<
 *     self.is_shutting_down = False
 *     self.is_shutdown = False
 */
  /*else*/ {
    __pyx_v_self->c_completion_queue = grpc_completion_queue_create_for_next(NULL);
  }
  __pyx_L3:;

  /* "src/python/grpcio/grpc/_cython/_cygrpc/completion_queue.pyx.pxi":80
 *     else:
 *       self.c_completion_queue = grpc_completion_queue_create_for_next(NULL)
 *     self.is_shutting_down = False             # <<<<<<<<<<<<<<
 *     self.is_shutdown = False
 * 
 */
  __pyx_v_self->is_shutting_down = 0;

  /* "src/python/grpcio/grpc/_cython/_cygrpc/completion_queue.pyx.pxi":81
 *       self.c_completion_queue = grpc_completion_queue_create_for_next(NULL)
 *     self.is_shutting_down = False
 *     self.is_shutdown = False             # <<<<<<<<<<<<<<
 * 
 *   cdef _interpret_event(self, grpc_event c_event):
 */
  __pyx_v_self->is_shutdown = 0;

  /* "src/python/grpcio/grpc/_cython/_cygrpc/completion_queue.pyx.pxi":69
 * cdef class CompletionQueue:
 * 
 *   def __cinit__(self, shutdown_cq=False):             # <<<<<<<<<<<<<<
 *     cdef grpc_completion_queue_attributes c_attrs
 *     fork_handlers_and_grpc_init()
 */

  /* function exit code */
  __pyx_r = 0;
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_XDECREF(__pyx_t_3);
  __Pyx_AddTraceback("grpc._cython.cygrpc.CompletionQueue.__cinit__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = -1;
  __pyx_L0:;
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "src/python/grpcio/grpc/_cython/_cygrpc/completion_queue.pyx.pxi":83
 *     self.is_shutdown = False
 * 
 *   cdef _interpret_event(self, grpc_event c_event):             # <<<<<<<<<<<<<<
 *     unused_tag, event = _interpret_event(c_event)
 *     if event.completion_type == GRPC_QUEUE_SHUTDOWN:
 */

static PyObject *__pyx_f_4grpc_7_cython_6cygrpc_15CompletionQueue__interpret_event(struct __pyx_obj_4grpc_7_cython_6cygrpc_CompletionQueue *__pyx_v_self, grpc_event __pyx_v_c_event) {
  CYTHON_UNUSED PyObject *__pyx_v_unused_tag = NULL;
  PyObject *__pyx_v_event = NULL;
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  PyObject *__pyx_t_2 = NULL;
  PyObject *__pyx_t_3 = NULL;
  PyObject *__pyx_t_4 = NULL;
  PyObject *(*__pyx_t_5)(PyObject *);
  int __pyx_t_6;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("_interpret_event", 0);

  /* "src/python/grpcio/grpc/_cython/_cygrpc/completion_queue.pyx.pxi":84
 * 
 *   cdef _interpret_event(self, grpc_event c_event):
 *     unused_tag, event = _interpret_event(c_event)             # <<<<<<<<<<<<<<
 *     if event.completion_type == GRPC_QUEUE_SHUTDOWN:
 *       self.is_shutdown = True
 */
  __pyx_t_1 = __pyx_f_4grpc_7_cython_6cygrpc__interpret_event(__pyx_v_c_event); if (unlikely(!__pyx_t_1)) __PYX_ERR(15, 84, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  if ((likely(PyTuple_CheckExact(__pyx_t_1))) || (PyList_CheckExact(__pyx_t_1))) {
    PyObject* sequence = __pyx_t_1;
    Py_ssize_t size = __Pyx_PySequence_SIZE(sequence);
    if (unlikely(size != 2)) {
      if (size > 2) __Pyx_RaiseTooManyValuesError(2);
      else if (size >= 0) __Pyx_RaiseNeedMoreValuesError(size);
      __PYX_ERR(15, 84, __pyx_L1_error)
    }
    #if CYTHON_ASSUME_SAFE_MACROS && !CYTHON_AVOID_BORROWED_REFS
    if (likely(PyTuple_CheckExact(sequence))) {
      __pyx_t_2 = PyTuple_GET_ITEM(sequence, 0); 
      __pyx_t_3 = PyTuple_GET_ITEM(sequence, 1); 
    } else {
      __pyx_t_2 = PyList_GET_ITEM(sequence, 0); 
      __pyx_t_3 = PyList_GET_ITEM(sequence, 1); 
    }
    __Pyx_INCREF(__pyx_t_2);
    __Pyx_INCREF(__pyx_t_3);
    #else
    __pyx_t_2 = PySequence_ITEM(sequence, 0); if (unlikely(!__pyx_t_2)) __PYX_ERR(15, 84, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_2);
    __pyx_t_3 = PySequence_ITEM(sequence, 1); if (unlikely(!__pyx_t_3)) __PYX_ERR(15, 84, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_3);
    #endif
    __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  } else {
    Py_ssize_t index = -1;
    __pyx_t_4 = PyObject_GetIter(__pyx_t_1); if (unlikely(!__pyx_t_4)) __PYX_ERR(15, 84, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_4);
    __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
    __pyx_t_5 = Py_TYPE(__pyx_t_4)->tp_iternext;
    index = 0; __pyx_t_2 = __pyx_t_5(__pyx_t_4); if (unlikely(!__pyx_t_2)) goto __pyx_L3_unpacking_failed;
    __Pyx_GOTREF(__pyx_t_2);
    index = 1; __pyx_t_3 = __pyx_t_5(__pyx_t_4); if (unlikely(!__pyx_t_3)) goto __pyx_L3_unpacking_failed;
    __Pyx_GOTREF(__pyx_t_3);
    if (__Pyx_IternextUnpackEndCheck(__pyx_t_5(__pyx_t_4), 2) < 0) __PYX_ERR(15, 84, __pyx_L1_error)
    __pyx_t_5 = NULL;
    __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
    goto __pyx_L4_unpacking_done;
    __pyx_L3_unpacking_failed:;
    __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
    __pyx_t_5 = NULL;
    if (__Pyx_IterFinish() == 0) __Pyx_RaiseNeedMoreValuesError(index);
    __PYX_ERR(15, 84, __pyx_L1_error)
    __pyx_L4_unpacking_done:;
  }
  __pyx_v_unused_tag = __pyx_t_2;
  __pyx_t_2 = 0;
  __pyx_v_event = __pyx_t_3;
  __pyx_t_3 = 0;

  /* "src/python/grpcio/grpc/_cython/_cygrpc/completion_queue.pyx.pxi":85
 *   cdef _interpret_event(self, grpc_event c_event):
 *     unused_tag, event = _interpret_event(c_event)
 *     if event.completion_type == GRPC_QUEUE_SHUTDOWN:             # <<<<<<<<<<<<<<
 *       self.is_shutdown = True
 *     return event
 */
  __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_v_event, __pyx_n_s_completion_type); if (unlikely(!__pyx_t_1)) __PYX_ERR(15, 85, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_t_3 = __Pyx_PyInt_From_grpc_completion_type(GRPC_QUEUE_SHUTDOWN); if (unlikely(!__pyx_t_3)) __PYX_ERR(15, 85, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  __pyx_t_2 = PyObject_RichCompare(__pyx_t_1, __pyx_t_3, Py_EQ); __Pyx_XGOTREF(__pyx_t_2); if (unlikely(!__pyx_t_2)) __PYX_ERR(15, 85, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
  __pyx_t_6 = __Pyx_PyObject_IsTrue(__pyx_t_2); if (unlikely(__pyx_t_6 < 0)) __PYX_ERR(15, 85, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  if (__pyx_t_6) {

    /* "src/python/grpcio/grpc/_cython/_cygrpc/completion_queue.pyx.pxi":86
 *     unused_tag, event = _interpret_event(c_event)
 *     if event.completion_type == GRPC_QUEUE_SHUTDOWN:
 *       self.is_shutdown = True             # <<<<<<<<<<<<<<
 *     return event
 * 
 */
    __pyx_v_self->is_shutdown = 1;

    /* "src/python/grpcio/grpc/_cython/_cygrpc/completion_queue.pyx.pxi":85
 *   cdef _interpret_event(self, grpc_event c_event):
 *     unused_tag, event = _interpret_event(c_event)
 *     if event.completion_type == GRPC_QUEUE_SHUTDOWN:             # <<<<<<<<<<<<<<
 *       self.is_shutdown = True
 *     return event
 */
  }

  /* "src/python/grpcio/grpc/_cython/_cygrpc/completion_queue.pyx.pxi":87
 *     if event.completion_type == GRPC_QUEUE_SHUTDOWN:
 *       self.is_shutdown = True
 *     return event             # <<<<<<<<<<<<<<
 * 
 *   # We name this 'poll' to avoid problems with CPython's expectations for
 */
  __Pyx_XDECREF(__pyx_r);
  __Pyx_INCREF(__pyx_v_event);
  __pyx_r = __pyx_v_event;
  goto __pyx_L0;

  /* "src/python/grpcio/grpc/_cython/_cygrpc/completion_queue.pyx.pxi":83
 *     self.is_shutdown = False
 * 
 *   cdef _interpret_event(self, grpc_event c_event):             # <<<<<<<<<<<<<<
 *     unused_tag, event = _interpret_event(c_event)
 *     if event.completion_type == GRPC_QUEUE_SHUTDOWN:
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_XDECREF(__pyx_t_3);
  __Pyx_XDECREF(__pyx_t_4);
  __Pyx_AddTraceback("grpc._cython.cygrpc.CompletionQueue._interpret_event", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = 0;
  __pyx_L0:;
  __Pyx_XDECREF(__pyx_v_unused_tag);
  __Pyx_XDECREF(__pyx_v_event);
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "src/python/grpcio/grpc/_cython/_cygrpc/completion_queue.pyx.pxi":91
 *   # We name this 'poll' to avoid problems with CPython's expectations for
 *   # 'special' methods (like next and __next__).
 *   def poll(self, deadline=None):             # <<<<<<<<<<<<<<
 *     return self._interpret_event(_next(self.c_completion_queue, deadline))
 * 
 */

/* Python wrapper */
static PyObject *__pyx_pw_4grpc_7_cython_6cygrpc_15CompletionQueue_3poll(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
static PyObject *__pyx_pw_4grpc_7_cython_6cygrpc_15CompletionQueue_3poll(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
  PyObject *__pyx_v_deadline = 0;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("poll (wrapper)", 0);
  {
    static PyObject **__pyx_pyargnames[] = {&__pyx_n_s_deadline,0};
    PyObject* values[1] = {0};
    values[0] = ((PyObject *)Py_None);
    if (unlikely(__pyx_kwds)) {
      Py_ssize_t kw_args;
      const Py_ssize_t pos_args = PyTuple_GET_SIZE(__pyx_args);
      switch (pos_args) {
        case  1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
        CYTHON_FALLTHROUGH;
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      kw_args = PyDict_Size(__pyx_kwds);
      switch (pos_args) {
        case  0:
        if (kw_args > 0) {
          PyObject* value = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_deadline);
          if (value) { values[0] = value; kw_args--; }
        }
      }
      if (unlikely(kw_args > 0)) {
        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "poll") < 0)) __PYX_ERR(15, 91, __pyx_L3_error)
      }
    } else {
      switch (PyTuple_GET_SIZE(__pyx_args)) {
        case  1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
        CYTHON_FALLTHROUGH;
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
    }
    __pyx_v_deadline = values[0];
  }
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("poll", 0, 0, 1, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(15, 91, __pyx_L3_error)
  __pyx_L3_error:;
  __Pyx_AddTraceback("grpc._cython.cygrpc.CompletionQueue.poll", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  __pyx_r = __pyx_pf_4grpc_7_cython_6cygrpc_15CompletionQueue_2poll(((struct __pyx_obj_4grpc_7_cython_6cygrpc_CompletionQueue *)__pyx_v_self), __pyx_v_deadline);

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_4grpc_7_cython_6cygrpc_15CompletionQueue_2poll(struct __pyx_obj_4grpc_7_cython_6cygrpc_CompletionQueue *__pyx_v_self, PyObject *__pyx_v_deadline) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  grpc_event __pyx_t_1;
  PyObject *__pyx_t_2 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("poll", 0);

  /* "src/python/grpcio/grpc/_cython/_cygrpc/completion_queue.pyx.pxi":92
 *   # 'special' methods (like next and __next__).
 *   def poll(self, deadline=None):
 *     return self._interpret_event(_next(self.c_completion_queue, deadline))             # <<<<<<<<<<<<<<
 * 
 *   def shutdown(self):
 */
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_1 = __pyx_f_4grpc_7_cython_6cygrpc__next(__pyx_v_self->c_completion_queue, __pyx_v_deadline); if (unlikely(PyErr_Occurred())) __PYX_ERR(15, 92, __pyx_L1_error)
  __pyx_t_2 = ((struct __pyx_vtabstruct_4grpc_7_cython_6cygrpc_CompletionQueue *)__pyx_v_self->__pyx_vtab)->_interpret_event(__pyx_v_self, __pyx_t_1); if (unlikely(!__pyx_t_2)) __PYX_ERR(15, 92, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __pyx_r = __pyx_t_2;
  __pyx_t_2 = 0;
  goto __pyx_L0;

  /* "src/python/grpcio/grpc/_cython/_cygrpc/completion_queue.pyx.pxi":91
 *   # We name this 'poll' to avoid problems with CPython's expectations for
 *   # 'special' methods (like next and __next__).
 *   def poll(self, deadline=None):             # <<<<<<<<<<<<<<
 *     return self._interpret_event(_next(self.c_completion_queue, deadline))
 * 
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_AddTraceback("grpc._cython.cygrpc.CompletionQueue.poll", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "src/python/grpcio/grpc/_cython/_cygrpc/completion_queue.pyx.pxi":94
 *     return self._interpret_event(_next(self.c_completion_queue, deadline))
 * 
 *   def shutdown(self):             # <<<<<<<<<<<<<<
 *     with nogil:
 *       grpc_completion_queue_shutdown(self.c_completion_queue)
 */

/* Python wrapper */
static PyObject *__pyx_pw_4grpc_7_cython_6cygrpc_15CompletionQueue_5shutdown(PyObject *__pyx_v_self, CYTHON_UNUSED PyObject *unused); /*proto*/
static PyObject *__pyx_pw_4grpc_7_cython_6cygrpc_15CompletionQueue_5shutdown(PyObject *__pyx_v_self, CYTHON_UNUSED PyObject *unused) {
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("shutdown (wrapper)", 0);
  __pyx_r = __pyx_pf_4grpc_7_cython_6cygrpc_15CompletionQueue_4shutdown(((struct __pyx_obj_4grpc_7_cython_6cygrpc_CompletionQueue *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_4grpc_7_cython_6cygrpc_15CompletionQueue_4shutdown(struct __pyx_obj_4grpc_7_cython_6cygrpc_CompletionQueue *__pyx_v_self) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("shutdown", 0);

  /* "src/python/grpcio/grpc/_cython/_cygrpc/completion_queue.pyx.pxi":95
 * 
 *   def shutdown(self):
 *     with nogil:             # <<<<<<<<<<<<<<
 *       grpc_completion_queue_shutdown(self.c_completion_queue)
 *     self.is_shutting_down = True
 */
  {
      #ifdef WITH_THREAD
      PyThreadState *_save;
      Py_UNBLOCK_THREADS
      __Pyx_FastGIL_Remember();
      #endif
      /*try:*/ {

        /* "src/python/grpcio/grpc/_cython/_cygrpc/completion_queue.pyx.pxi":96
 *   def shutdown(self):
 *     with nogil:
 *       grpc_completion_queue_shutdown(self.c_completion_queue)             # <<<<<<<<<<<<<<
 *     self.is_shutting_down = True
 * 
 */
        grpc_completion_queue_shutdown(__pyx_v_self->c_completion_queue);
      }

      /* "src/python/grpcio/grpc/_cython/_cygrpc/completion_queue.pyx.pxi":95
 * 
 *   def shutdown(self):
 *     with nogil:             # <<<<<<<<<<<<<<
 *       grpc_completion_queue_shutdown(self.c_completion_queue)
 *     self.is_shutting_down = True
 */
      /*finally:*/ {
        /*normal exit:*/{
          #ifdef WITH_THREAD
          __Pyx_FastGIL_Forget();
          Py_BLOCK_THREADS
          #endif
          goto __pyx_L5;
        }
        __pyx_L5:;
      }
  }

  /* "src/python/grpcio/grpc/_cython/_cygrpc/completion_queue.pyx.pxi":97
 *     with nogil:
 *       grpc_completion_queue_shutdown(self.c_completion_queue)
 *     self.is_shutting_down = True             # <<<<<<<<<<<<<<
 * 
 *   def clear(self):
 */
  __pyx_v_self->is_shutting_down = 1;

  /* "src/python/grpcio/grpc/_cython/_cygrpc/completion_queue.pyx.pxi":94
 *     return self._interpret_event(_next(self.c_completion_queue, deadline))
 * 
 *   def shutdown(self):             # <<<<<<<<<<<<<<
 *     with nogil:
 *       grpc_completion_queue_shutdown(self.c_completion_queue)
 */

  /* function exit code */
  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "src/python/grpcio/grpc/_cython/_cygrpc/completion_queue.pyx.pxi":99
 *     self.is_shutting_down = True
 * 
 *   def clear(self):             # <<<<<<<<<<<<<<
 *     if not self.is_shutting_down:
 *       raise ValueError('queue must be shutting down to be cleared')
 */

/* Python wrapper */
static PyObject *__pyx_pw_4grpc_7_cython_6cygrpc_15CompletionQueue_7clear(PyObject *__pyx_v_self, CYTHON_UNUSED PyObject *unused); /*proto*/
static PyObject *__pyx_pw_4grpc_7_cython_6cygrpc_15CompletionQueue_7clear(PyObject *__pyx_v_self, CYTHON_UNUSED PyObject *unused) {
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("clear (wrapper)", 0);
  __pyx_r = __pyx_pf_4grpc_7_cython_6cygrpc_15CompletionQueue_6clear(((struct __pyx_obj_4grpc_7_cython_6cygrpc_CompletionQueue *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_4grpc_7_cython_6cygrpc_15CompletionQueue_6clear(struct __pyx_obj_4grpc_7_cython_6cygrpc_CompletionQueue *__pyx_v_self) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  int __pyx_t_1;
  PyObject *__pyx_t_2 = NULL;
  PyObject *__pyx_t_3 = NULL;
  PyObject *__pyx_t_4 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("clear", 0);

  /* "src/python/grpcio/grpc/_cython/_cygrpc/completion_queue.pyx.pxi":100
 * 
 *   def clear(self):
 *     if not self.is_shutting_down:             # <<<<<<<<<<<<<<
 *       raise ValueError('queue must be shutting down to be cleared')
 *     while self.poll().type != GRPC_QUEUE_SHUTDOWN:
 */
  __pyx_t_1 = ((!(__pyx_v_self->is_shutting_down != 0)) != 0);
  if (unlikely(__pyx_t_1)) {

    /* "src/python/grpcio/grpc/_cython/_cygrpc/completion_queue.pyx.pxi":101
 *   def clear(self):
 *     if not self.is_shutting_down:
 *       raise ValueError('queue must be shutting down to be cleared')             # <<<<<<<<<<<<<<
 *     while self.poll().type != GRPC_QUEUE_SHUTDOWN:
 *       pass
 */
    __pyx_t_2 = __Pyx_PyObject_Call(__pyx_builtin_ValueError, __pyx_tuple__65, NULL); if (unlikely(!__pyx_t_2)) __PYX_ERR(15, 101, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_2);
    __Pyx_Raise(__pyx_t_2, 0, 0, 0);
    __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
    __PYX_ERR(15, 101, __pyx_L1_error)

    /* "src/python/grpcio/grpc/_cython/_cygrpc/completion_queue.pyx.pxi":100
 * 
 *   def clear(self):
 *     if not self.is_shutting_down:             # <<<<<<<<<<<<<<
 *       raise ValueError('queue must be shutting down to be cleared')
 *     while self.poll().type != GRPC_QUEUE_SHUTDOWN:
 */
  }

  /* "src/python/grpcio/grpc/_cython/_cygrpc/completion_queue.pyx.pxi":102
 *     if not self.is_shutting_down:
 *       raise ValueError('queue must be shutting down to be cleared')
 *     while self.poll().type != GRPC_QUEUE_SHUTDOWN:             # <<<<<<<<<<<<<<
 *       pass
 * 
 */
  while (1) {
    __pyx_t_3 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_poll); if (unlikely(!__pyx_t_3)) __PYX_ERR(15, 102, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_3);
    __pyx_t_4 = NULL;
    if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_3))) {
      __pyx_t_4 = PyMethod_GET_SELF(__pyx_t_3);
      if (likely(__pyx_t_4)) {
        PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_3);
        __Pyx_INCREF(__pyx_t_4);
        __Pyx_INCREF(function);
        __Pyx_DECREF_SET(__pyx_t_3, function);
      }
    }
    __pyx_t_2 = (__pyx_t_4) ? __Pyx_PyObject_CallOneArg(__pyx_t_3, __pyx_t_4) : __Pyx_PyObject_CallNoArg(__pyx_t_3);
    __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0;
    if (unlikely(!__pyx_t_2)) __PYX_ERR(15, 102, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_2);
    __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
    __pyx_t_3 = __Pyx_PyObject_GetAttrStr(__pyx_t_2, __pyx_n_s_type); if (unlikely(!__pyx_t_3)) __PYX_ERR(15, 102, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_3);
    __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
    __pyx_t_2 = __Pyx_PyInt_From_grpc_completion_type(GRPC_QUEUE_SHUTDOWN); if (unlikely(!__pyx_t_2)) __PYX_ERR(15, 102, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_2);
    __pyx_t_4 = PyObject_RichCompare(__pyx_t_3, __pyx_t_2, Py_NE); __Pyx_XGOTREF(__pyx_t_4); if (unlikely(!__pyx_t_4)) __PYX_ERR(15, 102, __pyx_L1_error)
    __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
    __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
    __pyx_t_1 = __Pyx_PyObject_IsTrue(__pyx_t_4); if (unlikely(__pyx_t_1 < 0)) __PYX_ERR(15, 102, __pyx_L1_error)
    __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
    if (!__pyx_t_1) break;
  }

  /* "src/python/grpcio/grpc/_cython/_cygrpc/completion_queue.pyx.pxi":99
 *     self.is_shutting_down = True
 * 
 *   def clear(self):             # <<<<<<<<<<<<<<
 *     if not self.is_shutting_down:
 *       raise ValueError('queue must be shutting down to be cleared')
 */

  /* function exit code */
  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_XDECREF(__pyx_t_3);
  __Pyx_XDECREF(__pyx_t_4);
  __Pyx_AddTraceback("grpc._cython.cygrpc.CompletionQueue.clear", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "src/python/grpcio/grpc/_cython/_cygrpc/completion_queue.pyx.pxi":105
 *       pass
 * 
 *   def __dealloc__(self):             # <<<<<<<<<<<<<<
 *     cdef gpr_timespec c_deadline
 *     c_deadline = gpr_inf_future(GPR_CLOCK_REALTIME)
 */

/* Python wrapper */
static void __pyx_pw_4grpc_7_cython_6cygrpc_15CompletionQueue_9__dealloc__(PyObject *__pyx_v_self); /*proto*/
static void __pyx_pw_4grpc_7_cython_6cygrpc_15CompletionQueue_9__dealloc__(PyObject *__pyx_v_self) {
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__dealloc__ (wrapper)", 0);
  __pyx_pf_4grpc_7_cython_6cygrpc_15CompletionQueue_8__dealloc__(((struct __pyx_obj_4grpc_7_cython_6cygrpc_CompletionQueue *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
}

static void __pyx_pf_4grpc_7_cython_6cygrpc_15CompletionQueue_8__dealloc__(struct __pyx_obj_4grpc_7_cython_6cygrpc_CompletionQueue *__pyx_v_self) {
  gpr_timespec __pyx_v_c_deadline;
  grpc_event __pyx_v_event;
  __Pyx_RefNannyDeclarations
  int __pyx_t_1;
  PyObject *__pyx_t_2 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("__dealloc__", 0);

  /* "src/python/grpcio/grpc/_cython/_cygrpc/completion_queue.pyx.pxi":107
 *   def __dealloc__(self):
 *     cdef gpr_timespec c_deadline
 *     c_deadline = gpr_inf_future(GPR_CLOCK_REALTIME)             # <<<<<<<<<<<<<<
 *     if self.c_completion_queue != NULL:
 *       # Ensure shutdown
 */
  __pyx_v_c_deadline = gpr_inf_future(GPR_CLOCK_REALTIME);

  /* "src/python/grpcio/grpc/_cython/_cygrpc/completion_queue.pyx.pxi":108
 *     cdef gpr_timespec c_deadline
 *     c_deadline = gpr_inf_future(GPR_CLOCK_REALTIME)
 *     if self.c_completion_queue != NULL:             # <<<<<<<<<<<<<<
 *       # Ensure shutdown
 *       if not self.is_shutting_down:
 */
  __pyx_t_1 = ((__pyx_v_self->c_completion_queue != NULL) != 0);
  if (__pyx_t_1) {

    /* "src/python/grpcio/grpc/_cython/_cygrpc/completion_queue.pyx.pxi":110
 *     if self.c_completion_queue != NULL:
 *       # Ensure shutdown
 *       if not self.is_shutting_down:             # <<<<<<<<<<<<<<
 *         grpc_completion_queue_shutdown(self.c_completion_queue)
 *       # Pump the queue (All outstanding calls should have been cancelled)
 */
    __pyx_t_1 = ((!(__pyx_v_self->is_shutting_down != 0)) != 0);
    if (__pyx_t_1) {

      /* "src/python/grpcio/grpc/_cython/_cygrpc/completion_queue.pyx.pxi":111
 *       # Ensure shutdown
 *       if not self.is_shutting_down:
 *         grpc_completion_queue_shutdown(self.c_completion_queue)             # <<<<<<<<<<<<<<
 *       # Pump the queue (All outstanding calls should have been cancelled)
 *       while not self.is_shutdown:
 */
      grpc_completion_queue_shutdown(__pyx_v_self->c_completion_queue);

      /* "src/python/grpcio/grpc/_cython/_cygrpc/completion_queue.pyx.pxi":110
 *     if self.c_completion_queue != NULL:
 *       # Ensure shutdown
 *       if not self.is_shutting_down:             # <<<<<<<<<<<<<<
 *         grpc_completion_queue_shutdown(self.c_completion_queue)
 *       # Pump the queue (All outstanding calls should have been cancelled)
 */
    }

    /* "src/python/grpcio/grpc/_cython/_cygrpc/completion_queue.pyx.pxi":113
 *         grpc_completion_queue_shutdown(self.c_completion_queue)
 *       # Pump the queue (All outstanding calls should have been cancelled)
 *       while not self.is_shutdown:             # <<<<<<<<<<<<<<
 *         event = grpc_completion_queue_next(
 *             self.c_completion_queue, c_deadline, NULL)
 */
    while (1) {
      __pyx_t_1 = ((!(__pyx_v_self->is_shutdown != 0)) != 0);
      if (!__pyx_t_1) break;

      /* "src/python/grpcio/grpc/_cython/_cygrpc/completion_queue.pyx.pxi":114
 *       # Pump the queue (All outstanding calls should have been cancelled)
 *       while not self.is_shutdown:
 *         event = grpc_completion_queue_next(             # <<<<<<<<<<<<<<
 *             self.c_completion_queue, c_deadline, NULL)
 *         self._interpret_event(event)
 */
      __pyx_v_event = grpc_completion_queue_next(__pyx_v_self->c_completion_queue, __pyx_v_c_deadline, NULL);

      /* "src/python/grpcio/grpc/_cython/_cygrpc/completion_queue.pyx.pxi":116
 *         event = grpc_completion_queue_next(
 *             self.c_completion_queue, c_deadline, NULL)
 *         self._interpret_event(event)             # <<<<<<<<<<<<<<
 *       grpc_completion_queue_destroy(self.c_completion_queue)
 *     grpc_shutdown()
 */
      __pyx_t_2 = ((struct __pyx_vtabstruct_4grpc_7_cython_6cygrpc_CompletionQueue *)__pyx_v_self->__pyx_vtab)->_interpret_event(__pyx_v_self, __pyx_v_event); if (unlikely(!__pyx_t_2)) __PYX_ERR(15, 116, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_2);
      __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
    }

    /* "src/python/grpcio/grpc/_cython/_cygrpc/completion_queue.pyx.pxi":117
 *             self.c_completion_queue, c_deadline, NULL)
 *         self._interpret_event(event)
 *       grpc_completion_queue_destroy(self.c_completion_queue)             # <<<<<<<<<<<<<<
 *     grpc_shutdown()
 */
    grpc_completion_queue_destroy(__pyx_v_self->c_completion_queue);

    /* "src/python/grpcio/grpc/_cython/_cygrpc/completion_queue.pyx.pxi":108
 *     cdef gpr_timespec c_deadline
 *     c_deadline = gpr_inf_future(GPR_CLOCK_REALTIME)
 *     if self.c_completion_queue != NULL:             # <<<<<<<<<<<<<<
 *       # Ensure shutdown
 *       if not self.is_shutting_down:
 */
  }

  /* "src/python/grpcio/grpc/_cython/_cygrpc/completion_queue.pyx.pxi":118
 *         self._interpret_event(event)
 *       grpc_completion_queue_destroy(self.c_completion_queue)
 *     grpc_shutdown()             # <<<<<<<<<<<<<<
 */
  grpc_shutdown();

  /* "src/python/grpcio/grpc/_cython/_cygrpc/completion_queue.pyx.pxi":105
 *       pass
 * 
 *   def __dealloc__(self):             # <<<<<<<<<<<<<<
 *     cdef gpr_timespec c_deadline
 *     c_deadline = gpr_inf_future(GPR_CLOCK_REALTIME)
 */

  /* function exit code */
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_WriteUnraisable("grpc._cython.cygrpc.CompletionQueue.__dealloc__", __pyx_clineno, __pyx_lineno, __pyx_filename, 1, 0);
  __pyx_L0:;
  __Pyx_RefNannyFinishContext();
}

/* "(tree fragment)":1
 * def __reduce_cython__(self):             # <<<<<<<<<<<<<<
 *     raise TypeError("no default __reduce__ due to non-trivial __cinit__")
 * def __setstate_cython__(self, __pyx_state):
 */

/* Python wrapper */
static PyObject *__pyx_pw_4grpc_7_cython_6cygrpc_15CompletionQueue_11__reduce_cython__(PyObject *__pyx_v_self, CYTHON_UNUSED PyObject *unused); /*proto*/
static PyObject *__pyx_pw_4grpc_7_cython_6cygrpc_15CompletionQueue_11__reduce_cython__(PyObject *__pyx_v_self, CYTHON_UNUSED PyObject *unused) {
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__reduce_cython__ (wrapper)", 0);
  __pyx_r = __pyx_pf_4grpc_7_cython_6cygrpc_15CompletionQueue_10__reduce_cython__(((struct __pyx_obj_4grpc_7_cython_6cygrpc_CompletionQueue *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_4grpc_7_cython_6cygrpc_15CompletionQueue_10__reduce_cython__(CYTHON_UNUSED struct __pyx_obj_4grpc_7_cython_6cygrpc_CompletionQueue *__pyx_v_self) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("__reduce_cython__", 0);

  /* "(tree fragment)":2
 * def __reduce_cython__(self):
 *     raise TypeError("no default __reduce__ due to non-trivial __cinit__")             # <<<<<<<<<<<<<<
 * def __setstate_cython__(self, __pyx_state):
 *     raise TypeError("no default __reduce__ due to non-trivial __cinit__")
 */
  __pyx_t_1 = __Pyx_PyObject_Call(__pyx_builtin_TypeError, __pyx_tuple__66, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(11, 2, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_Raise(__pyx_t_1, 0, 0, 0);
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  __PYX_ERR(11, 2, __pyx_L1_error)

  /* "(tree fragment)":1
 * def __reduce_cython__(self):             # <<<<<<<<<<<<<<
 *     raise TypeError("no default __reduce__ due to non-trivial __cinit__")
 * def __setstate_cython__(self, __pyx_state):
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_AddTraceback("grpc._cython.cygrpc.CompletionQueue.__reduce_cython__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "(tree fragment)":3
 * def __reduce_cython__(self):
 *     raise TypeError("no default __reduce__ due to non-trivial __cinit__")
 * def __setstate_cython__(self, __pyx_state):             # <<<<<<<<<<<<<<
 *     raise TypeError("no default __reduce__ due to non-trivial __cinit__")
 */

/* Python wrapper */
static PyObject *__pyx_pw_4grpc_7_cython_6cygrpc_15CompletionQueue_13__setstate_cython__(PyObject *__pyx_v_self, PyObject *__pyx_v___pyx_state); /*proto*/
static PyObject *__pyx_pw_4grpc_7_cython_6cygrpc_15CompletionQueue_13__setstate_cython__(PyObject *__pyx_v_self, PyObject *__pyx_v___pyx_state) {
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__setstate_cython__ (wrapper)", 0);
  __pyx_r = __pyx_pf_4grpc_7_cython_6cygrpc_15CompletionQueue_12__setstate_cython__(((struct __pyx_obj_4grpc_7_cython_6cygrpc_CompletionQueue *)__pyx_v_self), ((PyObject *)__pyx_v___pyx_state));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_4grpc_7_cython_6cygrpc_15CompletionQueue_12__setstate_cython__(CYTHON_UNUSED struct __pyx_obj_4grpc_7_cython_6cygrpc_CompletionQueue *__pyx_v_self, CYTHON_UNUSED PyObject *__pyx_v___pyx_state) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("__setstate_cython__", 0);

  /* "(tree fragment)":4
 *     raise TypeError("no default __reduce__ due to non-trivial __cinit__")
 * def __setstate_cython__(self, __pyx_state):
 *     raise TypeError("no default __reduce__ due to non-trivial __cinit__")             # <<<<<<<<<<<<<<
 */
  __pyx_t_1 = __Pyx_PyObject_Call(__pyx_builtin_TypeError, __pyx_tuple__67, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(11, 4, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_Raise(__pyx_t_1, 0, 0, 0);
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  __PYX_ERR(11, 4, __pyx_L1_error)

  /* "(tree fragment)":3
 * def __reduce_cython__(self):
 *     raise TypeError("no default __reduce__ due to non-trivial __cinit__")
 * def __setstate_cython__(self, __pyx_state):             # <<<<<<<<<<<<<<
 *     raise TypeError("no default __reduce__ due to non-trivial __cinit__")
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_AddTraceback("grpc._cython.cygrpc.CompletionQueue.__setstate_cython__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "src/python/grpcio/grpc/_cython/_cygrpc/event.pyx.pxi":18
 * cdef class ConnectivityEvent:
 * 
 *   def __cinit__(             # <<<<<<<<<<<<<<
 *       self, grpc_completion_type completion_type, bint success, object tag):
 *     self.completion_type = completion_type
 */

/* Python wrapper */
static int __pyx_pw_4grpc_7_cython_6cygrpc_17ConnectivityEvent_1__cinit__(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
static int __pyx_pw_4grpc_7_cython_6cygrpc_17ConnectivityEvent_1__cinit__(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
  grpc_completion_type __pyx_v_completion_type;
  int __pyx_v_success;
  PyObject *__pyx_v_tag = 0;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  int __pyx_r;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__cinit__ (wrapper)", 0);
  {
    static PyObject **__pyx_pyargnames[] = {&__pyx_n_s_completion_type,&__pyx_n_s_success,&__pyx_n_s_tag,0};
    PyObject* values[3] = {0,0,0};
    if (unlikely(__pyx_kwds)) {
      Py_ssize_t kw_args;
      const Py_ssize_t pos_args = PyTuple_GET_SIZE(__pyx_args);
      switch (pos_args) {
        case  3: values[2] = PyTuple_GET_ITEM(__pyx_args, 2);
        CYTHON_FALLTHROUGH;
        case  2: values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
        CYTHON_FALLTHROUGH;
        case  1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
        CYTHON_FALLTHROUGH;
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      kw_args = PyDict_Size(__pyx_kwds);
      switch (pos_args) {
        case  0:
        if (likely((values[0] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_completion_type)) != 0)) kw_args--;
        else goto __pyx_L5_argtuple_error;
        CYTHON_FALLTHROUGH;
        case  1:
        if (likely((values[1] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_success)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("__cinit__", 1, 3, 3, 1); __PYX_ERR(16, 18, __pyx_L3_error)
        }
        CYTHON_FALLTHROUGH;
        case  2:
        if (likely((values[2] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_tag)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("__cinit__", 1, 3, 3, 2); __PYX_ERR(16, 18, __pyx_L3_error)
        }
      }
      if (unlikely(kw_args > 0)) {
        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "__cinit__") < 0)) __PYX_ERR(16, 18, __pyx_L3_error)
      }
    } else if (PyTuple_GET_SIZE(__pyx_args) != 3) {
      goto __pyx_L5_argtuple_error;
    } else {
      values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
      values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
      values[2] = PyTuple_GET_ITEM(__pyx_args, 2);
    }
    __pyx_v_completion_type = ((grpc_completion_type)__Pyx_PyInt_As_grpc_completion_type(values[0])); if (unlikely(PyErr_Occurred())) __PYX_ERR(16, 19, __pyx_L3_error)
    __pyx_v_success = __Pyx_PyObject_IsTrue(values[1]); if (unlikely((__pyx_v_success == (int)-1) && PyErr_Occurred())) __PYX_ERR(16, 19, __pyx_L3_error)
    __pyx_v_tag = values[2];
  }
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("__cinit__", 1, 3, 3, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(16, 18, __pyx_L3_error)
  __pyx_L3_error:;
  __Pyx_AddTraceback("grpc._cython.cygrpc.ConnectivityEvent.__cinit__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return -1;
  __pyx_L4_argument_unpacking_done:;
  __pyx_r = __pyx_pf_4grpc_7_cython_6cygrpc_17ConnectivityEvent___cinit__(((struct __pyx_obj_4grpc_7_cython_6cygrpc_ConnectivityEvent *)__pyx_v_self), __pyx_v_completion_type, __pyx_v_success, __pyx_v_tag);

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static int __pyx_pf_4grpc_7_cython_6cygrpc_17ConnectivityEvent___cinit__(struct __pyx_obj_4grpc_7_cython_6cygrpc_ConnectivityEvent *__pyx_v_self, grpc_completion_type __pyx_v_completion_type, int __pyx_v_success, PyObject *__pyx_v_tag) {
  int __pyx_r;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__cinit__", 0);

  /* "src/python/grpcio/grpc/_cython/_cygrpc/event.pyx.pxi":20
 *   def __cinit__(
 *       self, grpc_completion_type completion_type, bint success, object tag):
 *     self.completion_type = completion_type             # <<<<<<<<<<<<<<
 *     self.success = success
 *     self.tag = tag
 */
  __pyx_v_self->completion_type = __pyx_v_completion_type;

  /* "src/python/grpcio/grpc/_cython/_cygrpc/event.pyx.pxi":21
 *       self, grpc_completion_type completion_type, bint success, object tag):
 *     self.completion_type = completion_type
 *     self.success = success             # <<<<<<<<<<<<<<
 *     self.tag = tag
 * 
 */
  __pyx_v_self->success = __pyx_v_success;

  /* "src/python/grpcio/grpc/_cython/_cygrpc/event.pyx.pxi":22
 *     self.completion_type = completion_type
 *     self.success = success
 *     self.tag = tag             # <<<<<<<<<<<<<<
 * 
 * 
 */
  __Pyx_INCREF(__pyx_v_tag);
  __Pyx_GIVEREF(__pyx_v_tag);
  __Pyx_GOTREF(__pyx_v_self->tag);
  __Pyx_DECREF(__pyx_v_self->tag);
  __pyx_v_self->tag = __pyx_v_tag;

  /* "src/python/grpcio/grpc/_cython/_cygrpc/event.pyx.pxi":18
 * cdef class ConnectivityEvent:
 * 
 *   def __cinit__(             # <<<<<<<<<<<<<<
 *       self, grpc_completion_type completion_type, bint success, object tag):
 *     self.completion_type = completion_type
 */

  /* function exit code */
  __pyx_r = 0;
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "src/python/grpcio/grpc/_cython/_cygrpc/event.pxd.pxi":18
 * cdef class ConnectivityEvent:
 * 
 *   cdef readonly grpc_completion_type completion_type             # <<<<<<<<<<<<<<
 *   cdef readonly bint success
 *   cdef readonly object tag
 */

/* Python wrapper */
static PyObject *__pyx_pw_4grpc_7_cython_6cygrpc_17ConnectivityEvent_15completion_type_1__get__(PyObject *__pyx_v_self); /*proto*/
static PyObject *__pyx_pw_4grpc_7_cython_6cygrpc_17ConnectivityEvent_15completion_type_1__get__(PyObject *__pyx_v_self) {
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__get__ (wrapper)", 0);
  __pyx_r = __pyx_pf_4grpc_7_cython_6cygrpc_17ConnectivityEvent_15completion_type___get__(((struct __pyx_obj_4grpc_7_cython_6cygrpc_ConnectivityEvent *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_4grpc_7_cython_6cygrpc_17ConnectivityEvent_15completion_type___get__(struct __pyx_obj_4grpc_7_cython_6cygrpc_ConnectivityEvent *__pyx_v_self) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("__get__", 0);
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_1 = __Pyx_PyInt_From_grpc_completion_type(__pyx_v_self->completion_type); if (unlikely(!__pyx_t_1)) __PYX_ERR(17, 18, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_r = __pyx_t_1;
  __pyx_t_1 = 0;
  goto __pyx_L0;

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_AddTraceback("grpc._cython.cygrpc.ConnectivityEvent.completion_type.__get__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "src/python/grpcio/grpc/_cython/_cygrpc/event.pxd.pxi":19
 * 
 *   cdef readonly grpc_completion_type completion_type
 *   cdef readonly bint success             # <<<<<<<<<<<<<<
 *   cdef readonly object tag
 * 
 */

/* Python wrapper */
static PyObject *__pyx_pw_4grpc_7_cython_6cygrpc_17ConnectivityEvent_7success_1__get__(PyObject *__pyx_v_self); /*proto*/
static PyObject *__pyx_pw_4grpc_7_cython_6cygrpc_17ConnectivityEvent_7success_1__get__(PyObject *__pyx_v_self) {
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__get__ (wrapper)", 0);
  __pyx_r = __pyx_pf_4grpc_7_cython_6cygrpc_17ConnectivityEvent_7success___get__(((struct __pyx_obj_4grpc_7_cython_6cygrpc_ConnectivityEvent *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_4grpc_7_cython_6cygrpc_17ConnectivityEvent_7success___get__(struct __pyx_obj_4grpc_7_cython_6cygrpc_ConnectivityEvent *__pyx_v_self) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("__get__", 0);
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_1 = __Pyx_PyBool_FromLong(__pyx_v_self->success); if (unlikely(!__pyx_t_1)) __PYX_ERR(17, 19, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_r = __pyx_t_1;
  __pyx_t_1 = 0;
  goto __pyx_L0;

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_AddTraceback("grpc._cython.cygrpc.ConnectivityEvent.success.__get__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "src/python/grpcio/grpc/_cython/_cygrpc/event.pxd.pxi":20
 *   cdef readonly grpc_completion_type completion_type
 *   cdef readonly bint success
 *   cdef readonly object tag             # <<<<<<<<<<<<<<
 * 
 * 
 */

/* Python wrapper */
static PyObject *__pyx_pw_4grpc_7_cython_6cygrpc_17ConnectivityEvent_3tag_1__get__(PyObject *__pyx_v_self); /*proto*/
static PyObject *__pyx_pw_4grpc_7_cython_6cygrpc_17ConnectivityEvent_3tag_1__get__(PyObject *__pyx_v_self) {
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__get__ (wrapper)", 0);
  __pyx_r = __pyx_pf_4grpc_7_cython_6cygrpc_17ConnectivityEvent_3tag___get__(((struct __pyx_obj_4grpc_7_cython_6cygrpc_ConnectivityEvent *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_4grpc_7_cython_6cygrpc_17ConnectivityEvent_3tag___get__(struct __pyx_obj_4grpc_7_cython_6cygrpc_ConnectivityEvent *__pyx_v_self) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__get__", 0);
  __Pyx_XDECREF(__pyx_r);
  __Pyx_INCREF(__pyx_v_self->tag);
  __pyx_r = __pyx_v_self->tag;
  goto __pyx_L0;

  /* function exit code */
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "(tree fragment)":1
 * def __reduce_cython__(self):             # <<<<<<<<<<<<<<
 *     raise TypeError("no default __reduce__ due to non-trivial __cinit__")
 * def __setstate_cython__(self, __pyx_state):
 */

/* Python wrapper */
static PyObject *__pyx_pw_4grpc_7_cython_6cygrpc_17ConnectivityEvent_3__reduce_cython__(PyObject *__pyx_v_self, CYTHON_UNUSED PyObject *unused); /*proto*/
static PyObject *__pyx_pw_4grpc_7_cython_6cygrpc_17ConnectivityEvent_3__reduce_cython__(PyObject *__pyx_v_self, CYTHON_UNUSED PyObject *unused) {
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__reduce_cython__ (wrapper)", 0);
  __pyx_r = __pyx_pf_4grpc_7_cython_6cygrpc_17ConnectivityEvent_2__reduce_cython__(((struct __pyx_obj_4grpc_7_cython_6cygrpc_ConnectivityEvent *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_4grpc_7_cython_6cygrpc_17ConnectivityEvent_2__reduce_cython__(CYTHON_UNUSED struct __pyx_obj_4grpc_7_cython_6cygrpc_ConnectivityEvent *__pyx_v_self) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("__reduce_cython__", 0);

  /* "(tree fragment)":2
 * def __reduce_cython__(self):
 *     raise TypeError("no default __reduce__ due to non-trivial __cinit__")             # <<<<<<<<<<<<<<
 * def __setstate_cython__(self, __pyx_state):
 *     raise TypeError("no default __reduce__ due to non-trivial __cinit__")
 */
  __pyx_t_1 = __Pyx_PyObject_Call(__pyx_builtin_TypeError, __pyx_tuple__68, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(11, 2, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_Raise(__pyx_t_1, 0, 0, 0);
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  __PYX_ERR(11, 2, __pyx_L1_error)

  /* "(tree fragment)":1
 * def __reduce_cython__(self):             # <<<<<<<<<<<<<<
 *     raise TypeError("no default __reduce__ due to non-trivial __cinit__")
 * def __setstate_cython__(self, __pyx_state):
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_AddTraceback("grpc._cython.cygrpc.ConnectivityEvent.__reduce_cython__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "(tree fragment)":3
 * def __reduce_cython__(self):
 *     raise TypeError("no default __reduce__ due to non-trivial __cinit__")
 * def __setstate_cython__(self, __pyx_state):             # <<<<<<<<<<<<<<
 *     raise TypeError("no default __reduce__ due to non-trivial __cinit__")
 */

/* Python wrapper */
static PyObject *__pyx_pw_4grpc_7_cython_6cygrpc_17ConnectivityEvent_5__setstate_cython__(PyObject *__pyx_v_self, PyObject *__pyx_v___pyx_state); /*proto*/
static PyObject *__pyx_pw_4grpc_7_cython_6cygrpc_17ConnectivityEvent_5__setstate_cython__(PyObject *__pyx_v_self, PyObject *__pyx_v___pyx_state) {
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__setstate_cython__ (wrapper)", 0);
  __pyx_r = __pyx_pf_4grpc_7_cython_6cygrpc_17ConnectivityEvent_4__setstate_cython__(((struct __pyx_obj_4grpc_7_cython_6cygrpc_ConnectivityEvent *)__pyx_v_self), ((PyObject *)__pyx_v___pyx_state));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_4grpc_7_cython_6cygrpc_17ConnectivityEvent_4__setstate_cython__(CYTHON_UNUSED struct __pyx_obj_4grpc_7_cython_6cygrpc_ConnectivityEvent *__pyx_v_self, CYTHON_UNUSED PyObject *__pyx_v___pyx_state) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("__setstate_cython__", 0);

  /* "(tree fragment)":4
 *     raise TypeError("no default __reduce__ due to non-trivial __cinit__")
 * def __setstate_cython__(self, __pyx_state):
 *     raise TypeError("no default __reduce__ due to non-trivial __cinit__")             # <<<<<<<<<<<<<<
 */
  __pyx_t_1 = __Pyx_PyObject_Call(__pyx_builtin_TypeError, __pyx_tuple__69, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(11, 4, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_Raise(__pyx_t_1, 0, 0, 0);
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  __PYX_ERR(11, 4, __pyx_L1_error)

  /* "(tree fragment)":3
 * def __reduce_cython__(self):
 *     raise TypeError("no default __reduce__ due to non-trivial __cinit__")
 * def __setstate_cython__(self, __pyx_state):             # <<<<<<<<<<<<<<
 *     raise TypeError("no default __reduce__ due to non-trivial __cinit__")
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_AddTraceback("grpc._cython.cygrpc.ConnectivityEvent.__setstate_cython__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "src/python/grpcio/grpc/_cython/_cygrpc/event.pyx.pxi":27
 * cdef class RequestCallEvent:
 * 
 *   def __cinit__(             # <<<<<<<<<<<<<<
 *       self, grpc_completion_type completion_type, bint success, object tag,
 *       Call call, CallDetails call_details, tuple invocation_metadata):
 */

/* Python wrapper */
static int __pyx_pw_4grpc_7_cython_6cygrpc_16RequestCallEvent_1__cinit__(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
static int __pyx_pw_4grpc_7_cython_6cygrpc_16RequestCallEvent_1__cinit__(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
  grpc_completion_type __pyx_v_completion_type;
  int __pyx_v_success;
  PyObject *__pyx_v_tag = 0;
  struct __pyx_obj_4grpc_7_cython_6cygrpc_Call *__pyx_v_call = 0;
  struct __pyx_obj_4grpc_7_cython_6cygrpc_CallDetails *__pyx_v_call_details = 0;
  PyObject *__pyx_v_invocation_metadata = 0;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  int __pyx_r;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__cinit__ (wrapper)", 0);
  {
    static PyObject **__pyx_pyargnames[] = {&__pyx_n_s_completion_type,&__pyx_n_s_success,&__pyx_n_s_tag,&__pyx_n_s_call,&__pyx_n_s_call_details,&__pyx_n_s_invocation_metadata,0};
    PyObject* values[6] = {0,0,0,0,0,0};
    if (unlikely(__pyx_kwds)) {
      Py_ssize_t kw_args;
      const Py_ssize_t pos_args = PyTuple_GET_SIZE(__pyx_args);
      switch (pos_args) {
        case  6: values[5] = PyTuple_GET_ITEM(__pyx_args, 5);
        CYTHON_FALLTHROUGH;
        case  5: values[4] = PyTuple_GET_ITEM(__pyx_args, 4);
        CYTHON_FALLTHROUGH;
        case  4: values[3] = PyTuple_GET_ITEM(__pyx_args, 3);
        CYTHON_FALLTHROUGH;
        case  3: values[2] = PyTuple_GET_ITEM(__pyx_args, 2);
        CYTHON_FALLTHROUGH;
        case  2: values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
        CYTHON_FALLTHROUGH;
        case  1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
        CYTHON_FALLTHROUGH;
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      kw_args = PyDict_Size(__pyx_kwds);
      switch (pos_args) {
        case  0:
        if (likely((values[0] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_completion_type)) != 0)) kw_args--;
        else goto __pyx_L5_argtuple_error;
        CYTHON_FALLTHROUGH;
        case  1:
        if (likely((values[1] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_success)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("__cinit__", 1, 6, 6, 1); __PYX_ERR(16, 27, __pyx_L3_error)
        }
        CYTHON_FALLTHROUGH;
        case  2:
        if (likely((values[2] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_tag)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("__cinit__", 1, 6, 6, 2); __PYX_ERR(16, 27, __pyx_L3_error)
        }
        CYTHON_FALLTHROUGH;
        case  3:
        if (likely((values[3] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_call)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("__cinit__", 1, 6, 6, 3); __PYX_ERR(16, 27, __pyx_L3_error)
        }
        CYTHON_FALLTHROUGH;
        case  4:
        if (likely((values[4] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_call_details)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("__cinit__", 1, 6, 6, 4); __PYX_ERR(16, 27, __pyx_L3_error)
        }
        CYTHON_FALLTHROUGH;
        case  5:
        if (likely((values[5] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_invocation_metadata)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("__cinit__", 1, 6, 6, 5); __PYX_ERR(16, 27, __pyx_L3_error)
        }
      }
      if (unlikely(kw_args > 0)) {
        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "__cinit__") < 0)) __PYX_ERR(16, 27, __pyx_L3_error)
      }
    } else if (PyTuple_GET_SIZE(__pyx_args) != 6) {
      goto __pyx_L5_argtuple_error;
    } else {
      values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
      values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
      values[2] = PyTuple_GET_ITEM(__pyx_args, 2);
      values[3] = PyTuple_GET_ITEM(__pyx_args, 3);
      values[4] = PyTuple_GET_ITEM(__pyx_args, 4);
      values[5] = PyTuple_GET_ITEM(__pyx_args, 5);
    }
    __pyx_v_completion_type = ((grpc_completion_type)__Pyx_PyInt_As_grpc_completion_type(values[0])); if (unlikely(PyErr_Occurred())) __PYX_ERR(16, 28, __pyx_L3_error)
    __pyx_v_success = __Pyx_PyObject_IsTrue(values[1]); if (unlikely((__pyx_v_success == (int)-1) && PyErr_Occurred())) __PYX_ERR(16, 28, __pyx_L3_error)
    __pyx_v_tag = values[2];
    __pyx_v_call = ((struct __pyx_obj_4grpc_7_cython_6cygrpc_Call *)values[3]);
    __pyx_v_call_details = ((struct __pyx_obj_4grpc_7_cython_6cygrpc_CallDetails *)values[4]);
    __pyx_v_invocation_metadata = ((PyObject*)values[5]);
  }
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("__cinit__", 1, 6, 6, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(16, 27, __pyx_L3_error)
  __pyx_L3_error:;
  __Pyx_AddTraceback("grpc._cython.cygrpc.RequestCallEvent.__cinit__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return -1;
  __pyx_L4_argument_unpacking_done:;
  if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_call), __pyx_ptype_4grpc_7_cython_6cygrpc_Call, 1, "call", 0))) __PYX_ERR(16, 29, __pyx_L1_error)
  if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_call_details), __pyx_ptype_4grpc_7_cython_6cygrpc_CallDetails, 1, "call_details", 0))) __PYX_ERR(16, 29, __pyx_L1_error)
  if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_invocation_metadata), (&PyTuple_Type), 1, "invocation_metadata", 1))) __PYX_ERR(16, 29, __pyx_L1_error)
  __pyx_r = __pyx_pf_4grpc_7_cython_6cygrpc_16RequestCallEvent___cinit__(((struct __pyx_obj_4grpc_7_cython_6cygrpc_RequestCallEvent *)__pyx_v_self), __pyx_v_completion_type, __pyx_v_success, __pyx_v_tag, __pyx_v_call, __pyx_v_call_details, __pyx_v_invocation_metadata);

  /* function exit code */
  goto __pyx_L0;
  __pyx_L1_error:;
  __pyx_r = -1;
  __pyx_L0:;
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static int __pyx_pf_4grpc_7_cython_6cygrpc_16RequestCallEvent___cinit__(struct __pyx_obj_4grpc_7_cython_6cygrpc_RequestCallEvent *__pyx_v_self, grpc_completion_type __pyx_v_completion_type, int __pyx_v_success, PyObject *__pyx_v_tag, struct __pyx_obj_4grpc_7_cython_6cygrpc_Call *__pyx_v_call, struct __pyx_obj_4grpc_7_cython_6cygrpc_CallDetails *__pyx_v_call_details, PyObject *__pyx_v_invocation_metadata) {
  int __pyx_r;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__cinit__", 0);

  /* "src/python/grpcio/grpc/_cython/_cygrpc/event.pyx.pxi":30
 *       self, grpc_completion_type completion_type, bint success, object tag,
 *       Call call, CallDetails call_details, tuple invocation_metadata):
 *     self.completion_type = completion_type             # <<<<<<<<<<<<<<
 *     self.success = success
 *     self.tag = tag
 */
  __pyx_v_self->completion_type = __pyx_v_completion_type;

  /* "src/python/grpcio/grpc/_cython/_cygrpc/event.pyx.pxi":31
 *       Call call, CallDetails call_details, tuple invocation_metadata):
 *     self.completion_type = completion_type
 *     self.success = success             # <<<<<<<<<<<<<<
 *     self.tag = tag
 *     self.call = call
 */
  __pyx_v_self->success = __pyx_v_success;

  /* "src/python/grpcio/grpc/_cython/_cygrpc/event.pyx.pxi":32
 *     self.completion_type = completion_type
 *     self.success = success
 *     self.tag = tag             # <<<<<<<<<<<<<<
 *     self.call = call
 *     self.call_details = call_details
 */
  __Pyx_INCREF(__pyx_v_tag);
  __Pyx_GIVEREF(__pyx_v_tag);
  __Pyx_GOTREF(__pyx_v_self->tag);
  __Pyx_DECREF(__pyx_v_self->tag);
  __pyx_v_self->tag = __pyx_v_tag;

  /* "src/python/grpcio/grpc/_cython/_cygrpc/event.pyx.pxi":33
 *     self.success = success
 *     self.tag = tag
 *     self.call = call             # <<<<<<<<<<<<<<
 *     self.call_details = call_details
 *     self.invocation_metadata = invocation_metadata
 */
  __Pyx_INCREF(((PyObject *)__pyx_v_call));
  __Pyx_GIVEREF(((PyObject *)__pyx_v_call));
  __Pyx_GOTREF(__pyx_v_self->call);
  __Pyx_DECREF(((PyObject *)__pyx_v_self->call));
  __pyx_v_self->call = __pyx_v_call;

  /* "src/python/grpcio/grpc/_cython/_cygrpc/event.pyx.pxi":34
 *     self.tag = tag
 *     self.call = call
 *     self.call_details = call_details             # <<<<<<<<<<<<<<
 *     self.invocation_metadata = invocation_metadata
 * 
 */
  __Pyx_INCREF(((PyObject *)__pyx_v_call_details));
  __Pyx_GIVEREF(((PyObject *)__pyx_v_call_details));
  __Pyx_GOTREF(__pyx_v_self->call_details);
  __Pyx_DECREF(((PyObject *)__pyx_v_self->call_details));
  __pyx_v_self->call_details = __pyx_v_call_details;

  /* "src/python/grpcio/grpc/_cython/_cygrpc/event.pyx.pxi":35
 *     self.call = call
 *     self.call_details = call_details
 *     self.invocation_metadata = invocation_metadata             # <<<<<<<<<<<<<<
 * 
 * 
 */
  __Pyx_INCREF(__pyx_v_invocation_metadata);
  __Pyx_GIVEREF(__pyx_v_invocation_metadata);
  __Pyx_GOTREF(__pyx_v_self->invocation_metadata);
  __Pyx_DECREF(__pyx_v_self->invocation_metadata);
  __pyx_v_self->invocation_metadata = __pyx_v_invocation_metadata;

  /* "src/python/grpcio/grpc/_cython/_cygrpc/event.pyx.pxi":27
 * cdef class RequestCallEvent:
 * 
 *   def __cinit__(             # <<<<<<<<<<<<<<
 *       self, grpc_completion_type completion_type, bint success, object tag,
 *       Call call, CallDetails call_details, tuple invocation_metadata):
 */

  /* function exit code */
  __pyx_r = 0;
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "src/python/grpcio/grpc/_cython/_cygrpc/event.pxd.pxi":25
 * cdef class RequestCallEvent:
 * 
 *   cdef readonly grpc_completion_type completion_type             # <<<<<<<<<<<<<<
 *   cdef readonly bint success
 *   cdef readonly object tag
 */

/* Python wrapper */
static PyObject *__pyx_pw_4grpc_7_cython_6cygrpc_16RequestCallEvent_15completion_type_1__get__(PyObject *__pyx_v_self); /*proto*/
static PyObject *__pyx_pw_4grpc_7_cython_6cygrpc_16RequestCallEvent_15completion_type_1__get__(PyObject *__pyx_v_self) {
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__get__ (wrapper)", 0);
  __pyx_r = __pyx_pf_4grpc_7_cython_6cygrpc_16RequestCallEvent_15completion_type___get__(((struct __pyx_obj_4grpc_7_cython_6cygrpc_RequestCallEvent *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_4grpc_7_cython_6cygrpc_16RequestCallEvent_15completion_type___get__(struct __pyx_obj_4grpc_7_cython_6cygrpc_RequestCallEvent *__pyx_v_self) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("__get__", 0);
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_1 = __Pyx_PyInt_From_grpc_completion_type(__pyx_v_self->completion_type); if (unlikely(!__pyx_t_1)) __PYX_ERR(17, 25, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_r = __pyx_t_1;
  __pyx_t_1 = 0;
  goto __pyx_L0;

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_AddTraceback("grpc._cython.cygrpc.RequestCallEvent.completion_type.__get__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "src/python/grpcio/grpc/_cython/_cygrpc/event.pxd.pxi":26
 * 
 *   cdef readonly grpc_completion_type completion_type
 *   cdef readonly bint success             # <<<<<<<<<<<<<<
 *   cdef readonly object tag
 *   cdef readonly Call call
 */

/* Python wrapper */
static PyObject *__pyx_pw_4grpc_7_cython_6cygrpc_16RequestCallEvent_7success_1__get__(PyObject *__pyx_v_self); /*proto*/
static PyObject *__pyx_pw_4grpc_7_cython_6cygrpc_16RequestCallEvent_7success_1__get__(PyObject *__pyx_v_self) {
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__get__ (wrapper)", 0);
  __pyx_r = __pyx_pf_4grpc_7_cython_6cygrpc_16RequestCallEvent_7success___get__(((struct __pyx_obj_4grpc_7_cython_6cygrpc_RequestCallEvent *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_4grpc_7_cython_6cygrpc_16RequestCallEvent_7success___get__(struct __pyx_obj_4grpc_7_cython_6cygrpc_RequestCallEvent *__pyx_v_self) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("__get__", 0);
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_1 = __Pyx_PyBool_FromLong(__pyx_v_self->success); if (unlikely(!__pyx_t_1)) __PYX_ERR(17, 26, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_r = __pyx_t_1;
  __pyx_t_1 = 0;
  goto __pyx_L0;

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_AddTraceback("grpc._cython.cygrpc.RequestCallEvent.success.__get__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "src/python/grpcio/grpc/_cython/_cygrpc/event.pxd.pxi":27
 *   cdef readonly grpc_completion_type completion_type
 *   cdef readonly bint success
 *   cdef readonly object tag             # <<<<<<<<<<<<<<
 *   cdef readonly Call call
 *   cdef readonly CallDetails call_details
 */

/* Python wrapper */
static PyObject *__pyx_pw_4grpc_7_cython_6cygrpc_16RequestCallEvent_3tag_1__get__(PyObject *__pyx_v_self); /*proto*/
static PyObject *__pyx_pw_4grpc_7_cython_6cygrpc_16RequestCallEvent_3tag_1__get__(PyObject *__pyx_v_self) {
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__get__ (wrapper)", 0);
  __pyx_r = __pyx_pf_4grpc_7_cython_6cygrpc_16RequestCallEvent_3tag___get__(((struct __pyx_obj_4grpc_7_cython_6cygrpc_RequestCallEvent *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_4grpc_7_cython_6cygrpc_16RequestCallEvent_3tag___get__(struct __pyx_obj_4grpc_7_cython_6cygrpc_RequestCallEvent *__pyx_v_self) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__get__", 0);
  __Pyx_XDECREF(__pyx_r);
  __Pyx_INCREF(__pyx_v_self->tag);
  __pyx_r = __pyx_v_self->tag;
  goto __pyx_L0;

  /* function exit code */
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "src/python/grpcio/grpc/_cython/_cygrpc/event.pxd.pxi":28
 *   cdef readonly bint success
 *   cdef readonly object tag
 *   cdef readonly Call call             # <<<<<<<<<<<<<<
 *   cdef readonly CallDetails call_details
 *   cdef readonly tuple invocation_metadata
 */

/* Python wrapper */
static PyObject *__pyx_pw_4grpc_7_cython_6cygrpc_16RequestCallEvent_4call_1__get__(PyObject *__pyx_v_self); /*proto*/
static PyObject *__pyx_pw_4grpc_7_cython_6cygrpc_16RequestCallEvent_4call_1__get__(PyObject *__pyx_v_self) {
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__get__ (wrapper)", 0);
  __pyx_r = __pyx_pf_4grpc_7_cython_6cygrpc_16RequestCallEvent_4call___get__(((struct __pyx_obj_4grpc_7_cython_6cygrpc_RequestCallEvent *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_4grpc_7_cython_6cygrpc_16RequestCallEvent_4call___get__(struct __pyx_obj_4grpc_7_cython_6cygrpc_RequestCallEvent *__pyx_v_self) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__get__", 0);
  __Pyx_XDECREF(__pyx_r);
  __Pyx_INCREF(((PyObject *)__pyx_v_self->call));
  __pyx_r = ((PyObject *)__pyx_v_self->call);
  goto __pyx_L0;

  /* function exit code */
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "src/python/grpcio/grpc/_cython/_cygrpc/event.pxd.pxi":29
 *   cdef readonly object tag
 *   cdef readonly Call call
 *   cdef readonly CallDetails call_details             # <<<<<<<<<<<<<<
 *   cdef readonly tuple invocation_metadata
 * 
 */

/* Python wrapper */
static PyObject *__pyx_pw_4grpc_7_cython_6cygrpc_16RequestCallEvent_12call_details_1__get__(PyObject *__pyx_v_self); /*proto*/
static PyObject *__pyx_pw_4grpc_7_cython_6cygrpc_16RequestCallEvent_12call_details_1__get__(PyObject *__pyx_v_self) {
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__get__ (wrapper)", 0);
  __pyx_r = __pyx_pf_4grpc_7_cython_6cygrpc_16RequestCallEvent_12call_details___get__(((struct __pyx_obj_4grpc_7_cython_6cygrpc_RequestCallEvent *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_4grpc_7_cython_6cygrpc_16RequestCallEvent_12call_details___get__(struct __pyx_obj_4grpc_7_cython_6cygrpc_RequestCallEvent *__pyx_v_self) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__get__", 0);
  __Pyx_XDECREF(__pyx_r);
  __Pyx_INCREF(((PyObject *)__pyx_v_self->call_details));
  __pyx_r = ((PyObject *)__pyx_v_self->call_details);
  goto __pyx_L0;

  /* function exit code */
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "src/python/grpcio/grpc/_cython/_cygrpc/event.pxd.pxi":30
 *   cdef readonly Call call
 *   cdef readonly CallDetails call_details
 *   cdef readonly tuple invocation_metadata             # <<<<<<<<<<<<<<
 * 
 * 
 */

/* Python wrapper */
static PyObject *__pyx_pw_4grpc_7_cython_6cygrpc_16RequestCallEvent_19invocation_metadata_1__get__(PyObject *__pyx_v_self); /*proto*/
static PyObject *__pyx_pw_4grpc_7_cython_6cygrpc_16RequestCallEvent_19invocation_metadata_1__get__(PyObject *__pyx_v_self) {
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__get__ (wrapper)", 0);
  __pyx_r = __pyx_pf_4grpc_7_cython_6cygrpc_16RequestCallEvent_19invocation_metadata___get__(((struct __pyx_obj_4grpc_7_cython_6cygrpc_RequestCallEvent *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_4grpc_7_cython_6cygrpc_16RequestCallEvent_19invocation_metadata___get__(struct __pyx_obj_4grpc_7_cython_6cygrpc_RequestCallEvent *__pyx_v_self) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__get__", 0);
  __Pyx_XDECREF(__pyx_r);
  __Pyx_INCREF(__pyx_v_self->invocation_metadata);
  __pyx_r = __pyx_v_self->invocation_metadata;
  goto __pyx_L0;

  /* function exit code */
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "(tree fragment)":1
 * def __reduce_cython__(self):             # <<<<<<<<<<<<<<
 *     raise TypeError("no default __reduce__ due to non-trivial __cinit__")
 * def __setstate_cython__(self, __pyx_state):
 */

/* Python wrapper */
static PyObject *__pyx_pw_4grpc_7_cython_6cygrpc_16RequestCallEvent_3__reduce_cython__(PyObject *__pyx_v_self, CYTHON_UNUSED PyObject *unused); /*proto*/
static PyObject *__pyx_pw_4grpc_7_cython_6cygrpc_16RequestCallEvent_3__reduce_cython__(PyObject *__pyx_v_self, CYTHON_UNUSED PyObject *unused) {
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__reduce_cython__ (wrapper)", 0);
  __pyx_r = __pyx_pf_4grpc_7_cython_6cygrpc_16RequestCallEvent_2__reduce_cython__(((struct __pyx_obj_4grpc_7_cython_6cygrpc_RequestCallEvent *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_4grpc_7_cython_6cygrpc_16RequestCallEvent_2__reduce_cython__(CYTHON_UNUSED struct __pyx_obj_4grpc_7_cython_6cygrpc_RequestCallEvent *__pyx_v_self) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("__reduce_cython__", 0);

  /* "(tree fragment)":2
 * def __reduce_cython__(self):
 *     raise TypeError("no default __reduce__ due to non-trivial __cinit__")             # <<<<<<<<<<<<<<
 * def __setstate_cython__(self, __pyx_state):
 *     raise TypeError("no default __reduce__ due to non-trivial __cinit__")
 */
  __pyx_t_1 = __Pyx_PyObject_Call(__pyx_builtin_TypeError, __pyx_tuple__70, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(11, 2, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_Raise(__pyx_t_1, 0, 0, 0);
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  __PYX_ERR(11, 2, __pyx_L1_error)

  /* "(tree fragment)":1
 * def __reduce_cython__(self):             # <<<<<<<<<<<<<<
 *     raise TypeError("no default __reduce__ due to non-trivial __cinit__")
 * def __setstate_cython__(self, __pyx_state):
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_AddTraceback("grpc._cython.cygrpc.RequestCallEvent.__reduce_cython__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "(tree fragment)":3
 * def __reduce_cython__(self):
 *     raise TypeError("no default __reduce__ due to non-trivial __cinit__")
 * def __setstate_cython__(self, __pyx_state):             # <<<<<<<<<<<<<<
 *     raise TypeError("no default __reduce__ due to non-trivial __cinit__")
 */

/* Python wrapper */
static PyObject *__pyx_pw_4grpc_7_cython_6cygrpc_16RequestCallEvent_5__setstate_cython__(PyObject *__pyx_v_self, PyObject *__pyx_v___pyx_state); /*proto*/
static PyObject *__pyx_pw_4grpc_7_cython_6cygrpc_16RequestCallEvent_5__setstate_cython__(PyObject *__pyx_v_self, PyObject *__pyx_v___pyx_state) {
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__setstate_cython__ (wrapper)", 0);
  __pyx_r = __pyx_pf_4grpc_7_cython_6cygrpc_16RequestCallEvent_4__setstate_cython__(((struct __pyx_obj_4grpc_7_cython_6cygrpc_RequestCallEvent *)__pyx_v_self), ((PyObject *)__pyx_v___pyx_state));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_4grpc_7_cython_6cygrpc_16RequestCallEvent_4__setstate_cython__(CYTHON_UNUSED struct __pyx_obj_4grpc_7_cython_6cygrpc_RequestCallEvent *__pyx_v_self, CYTHON_UNUSED PyObject *__pyx_v___pyx_state) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("__setstate_cython__", 0);

  /* "(tree fragment)":4
 *     raise TypeError("no default __reduce__ due to non-trivial __cinit__")
 * def __setstate_cython__(self, __pyx_state):
 *     raise TypeError("no default __reduce__ due to non-trivial __cinit__")             # <<<<<<<<<<<<<<
 */
  __pyx_t_1 = __Pyx_PyObject_Call(__pyx_builtin_TypeError, __pyx_tuple__71, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(11, 4, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_Raise(__pyx_t_1, 0, 0, 0);
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  __PYX_ERR(11, 4, __pyx_L1_error)

  /* "(tree fragment)":3
 * def __reduce_cython__(self):
 *     raise TypeError("no default __reduce__ due to non-trivial __cinit__")
 * def __setstate_cython__(self, __pyx_state):             # <<<<<<<<<<<<<<
 *     raise TypeError("no default __reduce__ due to non-trivial __cinit__")
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_AddTraceback("grpc._cython.cygrpc.RequestCallEvent.__setstate_cython__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "src/python/grpcio/grpc/_cython/_cygrpc/event.pyx.pxi":40
 * cdef class BatchOperationEvent:
 * 
 *   def __cinit__(             # <<<<<<<<<<<<<<
 *       self, grpc_completion_type completion_type, bint success, object tag,
 *       object batch_operations):
 */

/* Python wrapper */
static int __pyx_pw_4grpc_7_cython_6cygrpc_19BatchOperationEvent_1__cinit__(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
static int __pyx_pw_4grpc_7_cython_6cygrpc_19BatchOperationEvent_1__cinit__(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
  grpc_completion_type __pyx_v_completion_type;
  int __pyx_v_success;
  PyObject *__pyx_v_tag = 0;
  PyObject *__pyx_v_batch_operations = 0;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  int __pyx_r;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__cinit__ (wrapper)", 0);
  {
    static PyObject **__pyx_pyargnames[] = {&__pyx_n_s_completion_type,&__pyx_n_s_success,&__pyx_n_s_tag,&__pyx_n_s_batch_operations,0};
    PyObject* values[4] = {0,0,0,0};
    if (unlikely(__pyx_kwds)) {
      Py_ssize_t kw_args;
      const Py_ssize_t pos_args = PyTuple_GET_SIZE(__pyx_args);
      switch (pos_args) {
        case  4: values[3] = PyTuple_GET_ITEM(__pyx_args, 3);
        CYTHON_FALLTHROUGH;
        case  3: values[2] = PyTuple_GET_ITEM(__pyx_args, 2);
        CYTHON_FALLTHROUGH;
        case  2: values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
        CYTHON_FALLTHROUGH;
        case  1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
        CYTHON_FALLTHROUGH;
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      kw_args = PyDict_Size(__pyx_kwds);
      switch (pos_args) {
        case  0:
        if (likely((values[0] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_completion_type)) != 0)) kw_args--;
        else goto __pyx_L5_argtuple_error;
        CYTHON_FALLTHROUGH;
        case  1:
        if (likely((values[1] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_success)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("__cinit__", 1, 4, 4, 1); __PYX_ERR(16, 40, __pyx_L3_error)
        }
        CYTHON_FALLTHROUGH;
        case  2:
        if (likely((values[2] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_tag)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("__cinit__", 1, 4, 4, 2); __PYX_ERR(16, 40, __pyx_L3_error)
        }
        CYTHON_FALLTHROUGH;
        case  3:
        if (likely((values[3] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_batch_operations)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("__cinit__", 1, 4, 4, 3); __PYX_ERR(16, 40, __pyx_L3_error)
        }
      }
      if (unlikely(kw_args > 0)) {
        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "__cinit__") < 0)) __PYX_ERR(16, 40, __pyx_L3_error)
      }
    } else if (PyTuple_GET_SIZE(__pyx_args) != 4) {
      goto __pyx_L5_argtuple_error;
    } else {
      values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
      values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
      values[2] = PyTuple_GET_ITEM(__pyx_args, 2);
      values[3] = PyTuple_GET_ITEM(__pyx_args, 3);
    }
    __pyx_v_completion_type = ((grpc_completion_type)__Pyx_PyInt_As_grpc_completion_type(values[0])); if (unlikely(PyErr_Occurred())) __PYX_ERR(16, 41, __pyx_L3_error)
    __pyx_v_success = __Pyx_PyObject_IsTrue(values[1]); if (unlikely((__pyx_v_success == (int)-1) && PyErr_Occurred())) __PYX_ERR(16, 41, __pyx_L3_error)
    __pyx_v_tag = values[2];
    __pyx_v_batch_operations = values[3];
  }
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("__cinit__", 1, 4, 4, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(16, 40, __pyx_L3_error)
  __pyx_L3_error:;
  __Pyx_AddTraceback("grpc._cython.cygrpc.BatchOperationEvent.__cinit__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return -1;
  __pyx_L4_argument_unpacking_done:;
  __pyx_r = __pyx_pf_4grpc_7_cython_6cygrpc_19BatchOperationEvent___cinit__(((struct __pyx_obj_4grpc_7_cython_6cygrpc_BatchOperationEvent *)__pyx_v_self), __pyx_v_completion_type, __pyx_v_success, __pyx_v_tag, __pyx_v_batch_operations);

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static int __pyx_pf_4grpc_7_cython_6cygrpc_19BatchOperationEvent___cinit__(struct __pyx_obj_4grpc_7_cython_6cygrpc_BatchOperationEvent *__pyx_v_self, grpc_completion_type __pyx_v_completion_type, int __pyx_v_success, PyObject *__pyx_v_tag, PyObject *__pyx_v_batch_operations) {
  int __pyx_r;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__cinit__", 0);

  /* "src/python/grpcio/grpc/_cython/_cygrpc/event.pyx.pxi":43
 *       self, grpc_completion_type completion_type, bint success, object tag,
 *       object batch_operations):
 *     self.completion_type = completion_type             # <<<<<<<<<<<<<<
 *     self.success = success
 *     self.tag = tag
 */
  __pyx_v_self->completion_type = __pyx_v_completion_type;

  /* "src/python/grpcio/grpc/_cython/_cygrpc/event.pyx.pxi":44
 *       object batch_operations):
 *     self.completion_type = completion_type
 *     self.success = success             # <<<<<<<<<<<<<<
 *     self.tag = tag
 *     self.batch_operations = batch_operations
 */
  __pyx_v_self->success = __pyx_v_success;

  /* "src/python/grpcio/grpc/_cython/_cygrpc/event.pyx.pxi":45
 *     self.completion_type = completion_type
 *     self.success = success
 *     self.tag = tag             # <<<<<<<<<<<<<<
 *     self.batch_operations = batch_operations
 * 
 */
  __Pyx_INCREF(__pyx_v_tag);
  __Pyx_GIVEREF(__pyx_v_tag);
  __Pyx_GOTREF(__pyx_v_self->tag);
  __Pyx_DECREF(__pyx_v_self->tag);
  __pyx_v_self->tag = __pyx_v_tag;

  /* "src/python/grpcio/grpc/_cython/_cygrpc/event.pyx.pxi":46
 *     self.success = success
 *     self.tag = tag
 *     self.batch_operations = batch_operations             # <<<<<<<<<<<<<<
 * 
 * 
 */
  __Pyx_INCREF(__pyx_v_batch_operations);
  __Pyx_GIVEREF(__pyx_v_batch_operations);
  __Pyx_GOTREF(__pyx_v_self->batch_operations);
  __Pyx_DECREF(__pyx_v_self->batch_operations);
  __pyx_v_self->batch_operations = __pyx_v_batch_operations;

  /* "src/python/grpcio/grpc/_cython/_cygrpc/event.pyx.pxi":40
 * cdef class BatchOperationEvent:
 * 
 *   def __cinit__(             # <<<<<<<<<<<<<<
 *       self, grpc_completion_type completion_type, bint success, object tag,
 *       object batch_operations):
 */

  /* function exit code */
  __pyx_r = 0;
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "src/python/grpcio/grpc/_cython/_cygrpc/event.pxd.pxi":35
 * cdef class BatchOperationEvent:
 * 
 *   cdef readonly grpc_completion_type completion_type             # <<<<<<<<<<<<<<
 *   cdef readonly bint success
 *   cdef readonly object tag
 */

/* Python wrapper */
static PyObject *__pyx_pw_4grpc_7_cython_6cygrpc_19BatchOperationEvent_15completion_type_1__get__(PyObject *__pyx_v_self); /*proto*/
static PyObject *__pyx_pw_4grpc_7_cython_6cygrpc_19BatchOperationEvent_15completion_type_1__get__(PyObject *__pyx_v_self) {
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__get__ (wrapper)", 0);
  __pyx_r = __pyx_pf_4grpc_7_cython_6cygrpc_19BatchOperationEvent_15completion_type___get__(((struct __pyx_obj_4grpc_7_cython_6cygrpc_BatchOperationEvent *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_4grpc_7_cython_6cygrpc_19BatchOperationEvent_15completion_type___get__(struct __pyx_obj_4grpc_7_cython_6cygrpc_BatchOperationEvent *__pyx_v_self) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("__get__", 0);
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_1 = __Pyx_PyInt_From_grpc_completion_type(__pyx_v_self->completion_type); if (unlikely(!__pyx_t_1)) __PYX_ERR(17, 35, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_r = __pyx_t_1;
  __pyx_t_1 = 0;
  goto __pyx_L0;

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_AddTraceback("grpc._cython.cygrpc.BatchOperationEvent.completion_type.__get__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "src/python/grpcio/grpc/_cython/_cygrpc/event.pxd.pxi":36
 * 
 *   cdef readonly grpc_completion_type completion_type
 *   cdef readonly bint success             # <<<<<<<<<<<<<<
 *   cdef readonly object tag
 *   cdef readonly object batch_operations
 */

/* Python wrapper */
static PyObject *__pyx_pw_4grpc_7_cython_6cygrpc_19BatchOperationEvent_7success_1__get__(PyObject *__pyx_v_self); /*proto*/
static PyObject *__pyx_pw_4grpc_7_cython_6cygrpc_19BatchOperationEvent_7success_1__get__(PyObject *__pyx_v_self) {
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__get__ (wrapper)", 0);
  __pyx_r = __pyx_pf_4grpc_7_cython_6cygrpc_19BatchOperationEvent_7success___get__(((struct __pyx_obj_4grpc_7_cython_6cygrpc_BatchOperationEvent *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_4grpc_7_cython_6cygrpc_19BatchOperationEvent_7success___get__(struct __pyx_obj_4grpc_7_cython_6cygrpc_BatchOperationEvent *__pyx_v_self) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("__get__", 0);
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_1 = __Pyx_PyBool_FromLong(__pyx_v_self->success); if (unlikely(!__pyx_t_1)) __PYX_ERR(17, 36, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_r = __pyx_t_1;
  __pyx_t_1 = 0;
  goto __pyx_L0;

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_AddTraceback("grpc._cython.cygrpc.BatchOperationEvent.success.__get__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "src/python/grpcio/grpc/_cython/_cygrpc/event.pxd.pxi":37
 *   cdef readonly grpc_completion_type completion_type
 *   cdef readonly bint success
 *   cdef readonly object tag             # <<<<<<<<<<<<<<
 *   cdef readonly object batch_operations
 * 
 */

/* Python wrapper */
static PyObject *__pyx_pw_4grpc_7_cython_6cygrpc_19BatchOperationEvent_3tag_1__get__(PyObject *__pyx_v_self); /*proto*/
static PyObject *__pyx_pw_4grpc_7_cython_6cygrpc_19BatchOperationEvent_3tag_1__get__(PyObject *__pyx_v_self) {
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__get__ (wrapper)", 0);
  __pyx_r = __pyx_pf_4grpc_7_cython_6cygrpc_19BatchOperationEvent_3tag___get__(((struct __pyx_obj_4grpc_7_cython_6cygrpc_BatchOperationEvent *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_4grpc_7_cython_6cygrpc_19BatchOperationEvent_3tag___get__(struct __pyx_obj_4grpc_7_cython_6cygrpc_BatchOperationEvent *__pyx_v_self) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__get__", 0);
  __Pyx_XDECREF(__pyx_r);
  __Pyx_INCREF(__pyx_v_self->tag);
  __pyx_r = __pyx_v_self->tag;
  goto __pyx_L0;

  /* function exit code */
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "src/python/grpcio/grpc/_cython/_cygrpc/event.pxd.pxi":38
 *   cdef readonly bint success
 *   cdef readonly object tag
 *   cdef readonly object batch_operations             # <<<<<<<<<<<<<<
 * 
 * 
 */

/* Python wrapper */
static PyObject *__pyx_pw_4grpc_7_cython_6cygrpc_19BatchOperationEvent_16batch_operations_1__get__(PyObject *__pyx_v_self); /*proto*/
static PyObject *__pyx_pw_4grpc_7_cython_6cygrpc_19BatchOperationEvent_16batch_operations_1__get__(PyObject *__pyx_v_self) {
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__get__ (wrapper)", 0);
  __pyx_r = __pyx_pf_4grpc_7_cython_6cygrpc_19BatchOperationEvent_16batch_operations___get__(((struct __pyx_obj_4grpc_7_cython_6cygrpc_BatchOperationEvent *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_4grpc_7_cython_6cygrpc_19BatchOperationEvent_16batch_operations___get__(struct __pyx_obj_4grpc_7_cython_6cygrpc_BatchOperationEvent *__pyx_v_self) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__get__", 0);
  __Pyx_XDECREF(__pyx_r);
  __Pyx_INCREF(__pyx_v_self->batch_operations);
  __pyx_r = __pyx_v_self->batch_operations;
  goto __pyx_L0;

  /* function exit code */
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "(tree fragment)":1
 * def __reduce_cython__(self):             # <<<<<<<<<<<<<<
 *     raise TypeError("no default __reduce__ due to non-trivial __cinit__")
 * def __setstate_cython__(self, __pyx_state):
 */

/* Python wrapper */
static PyObject *__pyx_pw_4grpc_7_cython_6cygrpc_19BatchOperationEvent_3__reduce_cython__(PyObject *__pyx_v_self, CYTHON_UNUSED PyObject *unused); /*proto*/
static PyObject *__pyx_pw_4grpc_7_cython_6cygrpc_19BatchOperationEvent_3__reduce_cython__(PyObject *__pyx_v_self, CYTHON_UNUSED PyObject *unused) {
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__reduce_cython__ (wrapper)", 0);
  __pyx_r = __pyx_pf_4grpc_7_cython_6cygrpc_19BatchOperationEvent_2__reduce_cython__(((struct __pyx_obj_4grpc_7_cython_6cygrpc_BatchOperationEvent *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_4grpc_7_cython_6cygrpc_19BatchOperationEvent_2__reduce_cython__(CYTHON_UNUSED struct __pyx_obj_4grpc_7_cython_6cygrpc_BatchOperationEvent *__pyx_v_self) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("__reduce_cython__", 0);

  /* "(tree fragment)":2
 * def __reduce_cython__(self):
 *     raise TypeError("no default __reduce__ due to non-trivial __cinit__")             # <<<<<<<<<<<<<<
 * def __setstate_cython__(self, __pyx_state):
 *     raise TypeError("no default __reduce__ due to non-trivial __cinit__")
 */
  __pyx_t_1 = __Pyx_PyObject_Call(__pyx_builtin_TypeError, __pyx_tuple__72, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(11, 2, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_Raise(__pyx_t_1, 0, 0, 0);
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  __PYX_ERR(11, 2, __pyx_L1_error)

  /* "(tree fragment)":1
 * def __reduce_cython__(self):             # <<<<<<<<<<<<<<
 *     raise TypeError("no default __reduce__ due to non-trivial __cinit__")
 * def __setstate_cython__(self, __pyx_state):
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_AddTraceback("grpc._cython.cygrpc.BatchOperationEvent.__reduce_cython__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "(tree fragment)":3
 * def __reduce_cython__(self):
 *     raise TypeError("no default __reduce__ due to non-trivial __cinit__")
 * def __setstate_cython__(self, __pyx_state):             # <<<<<<<<<<<<<<
 *     raise TypeError("no default __reduce__ due to non-trivial __cinit__")
 */

/* Python wrapper */
static PyObject *__pyx_pw_4grpc_7_cython_6cygrpc_19BatchOperationEvent_5__setstate_cython__(PyObject *__pyx_v_self, PyObject *__pyx_v___pyx_state); /*proto*/
static PyObject *__pyx_pw_4grpc_7_cython_6cygrpc_19BatchOperationEvent_5__setstate_cython__(PyObject *__pyx_v_self, PyObject *__pyx_v___pyx_state) {
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__setstate_cython__ (wrapper)", 0);
  __pyx_r = __pyx_pf_4grpc_7_cython_6cygrpc_19BatchOperationEvent_4__setstate_cython__(((struct __pyx_obj_4grpc_7_cython_6cygrpc_BatchOperationEvent *)__pyx_v_self), ((PyObject *)__pyx_v___pyx_state));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_4grpc_7_cython_6cygrpc_19BatchOperationEvent_4__setstate_cython__(CYTHON_UNUSED struct __pyx_obj_4grpc_7_cython_6cygrpc_BatchOperationEvent *__pyx_v_self, CYTHON_UNUSED PyObject *__pyx_v___pyx_state) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("__setstate_cython__", 0);

  /* "(tree fragment)":4
 *     raise TypeError("no default __reduce__ due to non-trivial __cinit__")
 * def __setstate_cython__(self, __pyx_state):
 *     raise TypeError("no default __reduce__ due to non-trivial __cinit__")             # <<<<<<<<<<<<<<
 */
  __pyx_t_1 = __Pyx_PyObject_Call(__pyx_builtin_TypeError, __pyx_tuple__73, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(11, 4, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_Raise(__pyx_t_1, 0, 0, 0);
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  __PYX_ERR(11, 4, __pyx_L1_error)

  /* "(tree fragment)":3
 * def __reduce_cython__(self):
 *     raise TypeError("no default __reduce__ due to non-trivial __cinit__")
 * def __setstate_cython__(self, __pyx_state):             # <<<<<<<<<<<<<<
 *     raise TypeError("no default __reduce__ due to non-trivial __cinit__")
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_AddTraceback("grpc._cython.cygrpc.BatchOperationEvent.__setstate_cython__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "src/python/grpcio/grpc/_cython/_cygrpc/event.pyx.pxi":51
 * cdef class ServerShutdownEvent:
 * 
 *   def __cinit__(             # <<<<<<<<<<<<<<
 *       self, grpc_completion_type completion_type, bint success, object tag):
 *     self.completion_type = completion_type
 */

/* Python wrapper */
static int __pyx_pw_4grpc_7_cython_6cygrpc_19ServerShutdownEvent_1__cinit__(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
static int __pyx_pw_4grpc_7_cython_6cygrpc_19ServerShutdownEvent_1__cinit__(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
  grpc_completion_type __pyx_v_completion_type;
  int __pyx_v_success;
  PyObject *__pyx_v_tag = 0;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  int __pyx_r;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__cinit__ (wrapper)", 0);
  {
    static PyObject **__pyx_pyargnames[] = {&__pyx_n_s_completion_type,&__pyx_n_s_success,&__pyx_n_s_tag,0};
    PyObject* values[3] = {0,0,0};
    if (unlikely(__pyx_kwds)) {
      Py_ssize_t kw_args;
      const Py_ssize_t pos_args = PyTuple_GET_SIZE(__pyx_args);
      switch (pos_args) {
        case  3: values[2] = PyTuple_GET_ITEM(__pyx_args, 2);
        CYTHON_FALLTHROUGH;
        case  2: values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
        CYTHON_FALLTHROUGH;
        case  1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
        CYTHON_FALLTHROUGH;
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      kw_args = PyDict_Size(__pyx_kwds);
      switch (pos_args) {
        case  0:
        if (likely((values[0] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_completion_type)) != 0)) kw_args--;
        else goto __pyx_L5_argtuple_error;
        CYTHON_FALLTHROUGH;
        case  1:
        if (likely((values[1] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_success)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("__cinit__", 1, 3, 3, 1); __PYX_ERR(16, 51, __pyx_L3_error)
        }
        CYTHON_FALLTHROUGH;
        case  2:
        if (likely((values[2] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_tag)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("__cinit__", 1, 3, 3, 2); __PYX_ERR(16, 51, __pyx_L3_error)
        }
      }
      if (unlikely(kw_args > 0)) {
        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "__cinit__") < 0)) __PYX_ERR(16, 51, __pyx_L3_error)
      }
    } else if (PyTuple_GET_SIZE(__pyx_args) != 3) {
      goto __pyx_L5_argtuple_error;
    } else {
      values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
      values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
      values[2] = PyTuple_GET_ITEM(__pyx_args, 2);
    }
    __pyx_v_completion_type = ((grpc_completion_type)__Pyx_PyInt_As_grpc_completion_type(values[0])); if (unlikely(PyErr_Occurred())) __PYX_ERR(16, 52, __pyx_L3_error)
    __pyx_v_success = __Pyx_PyObject_IsTrue(values[1]); if (unlikely((__pyx_v_success == (int)-1) && PyErr_Occurred())) __PYX_ERR(16, 52, __pyx_L3_error)
    __pyx_v_tag = values[2];
  }
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("__cinit__", 1, 3, 3, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(16, 51, __pyx_L3_error)
  __pyx_L3_error:;
  __Pyx_AddTraceback("grpc._cython.cygrpc.ServerShutdownEvent.__cinit__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return -1;
  __pyx_L4_argument_unpacking_done:;
  __pyx_r = __pyx_pf_4grpc_7_cython_6cygrpc_19ServerShutdownEvent___cinit__(((struct __pyx_obj_4grpc_7_cython_6cygrpc_ServerShutdownEvent *)__pyx_v_self), __pyx_v_completion_type, __pyx_v_success, __pyx_v_tag);

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static int __pyx_pf_4grpc_7_cython_6cygrpc_19ServerShutdownEvent___cinit__(struct __pyx_obj_4grpc_7_cython_6cygrpc_ServerShutdownEvent *__pyx_v_self, grpc_completion_type __pyx_v_completion_type, int __pyx_v_success, PyObject *__pyx_v_tag) {
  int __pyx_r;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__cinit__", 0);

  /* "src/python/grpcio/grpc/_cython/_cygrpc/event.pyx.pxi":53
 *   def __cinit__(
 *       self, grpc_completion_type completion_type, bint success, object tag):
 *     self.completion_type = completion_type             # <<<<<<<<<<<<<<
 *     self.success = success
 *     self.tag = tag
 */
  __pyx_v_self->completion_type = __pyx_v_completion_type;

  /* "src/python/grpcio/grpc/_cython/_cygrpc/event.pyx.pxi":54
 *       self, grpc_completion_type completion_type, bint success, object tag):
 *     self.completion_type = completion_type
 *     self.success = success             # <<<<<<<<<<<<<<
 *     self.tag = tag
 */
  __pyx_v_self->success = __pyx_v_success;

  /* "src/python/grpcio/grpc/_cython/_cygrpc/event.pyx.pxi":55
 *     self.completion_type = completion_type
 *     self.success = success
 *     self.tag = tag             # <<<<<<<<<<<<<<
 */
  __Pyx_INCREF(__pyx_v_tag);
  __Pyx_GIVEREF(__pyx_v_tag);
  __Pyx_GOTREF(__pyx_v_self->tag);
  __Pyx_DECREF(__pyx_v_self->tag);
  __pyx_v_self->tag = __pyx_v_tag;

  /* "src/python/grpcio/grpc/_cython/_cygrpc/event.pyx.pxi":51
 * cdef class ServerShutdownEvent:
 * 
 *   def __cinit__(             # <<<<<<<<<<<<<<
 *       self, grpc_completion_type completion_type, bint success, object tag):
 *     self.completion_type = completion_type
 */

  /* function exit code */
  __pyx_r = 0;
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "src/python/grpcio/grpc/_cython/_cygrpc/event.pxd.pxi":43
 * cdef class ServerShutdownEvent:
 * 
 *   cdef readonly grpc_completion_type completion_type             # <<<<<<<<<<<<<<
 *   cdef readonly bint success
 *   cdef readonly object tag
 */

/* Python wrapper */
static PyObject *__pyx_pw_4grpc_7_cython_6cygrpc_19ServerShutdownEvent_15completion_type_1__get__(PyObject *__pyx_v_self); /*proto*/
static PyObject *__pyx_pw_4grpc_7_cython_6cygrpc_19ServerShutdownEvent_15completion_type_1__get__(PyObject *__pyx_v_self) {
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__get__ (wrapper)", 0);
  __pyx_r = __pyx_pf_4grpc_7_cython_6cygrpc_19ServerShutdownEvent_15completion_type___get__(((struct __pyx_obj_4grpc_7_cython_6cygrpc_ServerShutdownEvent *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_4grpc_7_cython_6cygrpc_19ServerShutdownEvent_15completion_type___get__(struct __pyx_obj_4grpc_7_cython_6cygrpc_ServerShutdownEvent *__pyx_v_self) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("__get__", 0);
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_1 = __Pyx_PyInt_From_grpc_completion_type(__pyx_v_self->completion_type); if (unlikely(!__pyx_t_1)) __PYX_ERR(17, 43, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_r = __pyx_t_1;
  __pyx_t_1 = 0;
  goto __pyx_L0;

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_AddTraceback("grpc._cython.cygrpc.ServerShutdownEvent.completion_type.__get__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "src/python/grpcio/grpc/_cython/_cygrpc/event.pxd.pxi":44
 * 
 *   cdef readonly grpc_completion_type completion_type
 *   cdef readonly bint success             # <<<<<<<<<<<<<<
 *   cdef readonly object tag
 */

/* Python wrapper */
static PyObject *__pyx_pw_4grpc_7_cython_6cygrpc_19ServerShutdownEvent_7success_1__get__(PyObject *__pyx_v_self); /*proto*/
static PyObject *__pyx_pw_4grpc_7_cython_6cygrpc_19ServerShutdownEvent_7success_1__get__(PyObject *__pyx_v_self) {
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__get__ (wrapper)", 0);
  __pyx_r = __pyx_pf_4grpc_7_cython_6cygrpc_19ServerShutdownEvent_7success___get__(((struct __pyx_obj_4grpc_7_cython_6cygrpc_ServerShutdownEvent *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_4grpc_7_cython_6cygrpc_19ServerShutdownEvent_7success___get__(struct __pyx_obj_4grpc_7_cython_6cygrpc_ServerShutdownEvent *__pyx_v_self) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("__get__", 0);
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_1 = __Pyx_PyBool_FromLong(__pyx_v_self->success); if (unlikely(!__pyx_t_1)) __PYX_ERR(17, 44, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_r = __pyx_t_1;
  __pyx_t_1 = 0;
  goto __pyx_L0;

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_AddTraceback("grpc._cython.cygrpc.ServerShutdownEvent.success.__get__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "src/python/grpcio/grpc/_cython/_cygrpc/event.pxd.pxi":45
 *   cdef readonly grpc_completion_type completion_type
 *   cdef readonly bint success
 *   cdef readonly object tag             # <<<<<<<<<<<<<<
 */

/* Python wrapper */
static PyObject *__pyx_pw_4grpc_7_cython_6cygrpc_19ServerShutdownEvent_3tag_1__get__(PyObject *__pyx_v_self); /*proto*/
static PyObject *__pyx_pw_4grpc_7_cython_6cygrpc_19ServerShutdownEvent_3tag_1__get__(PyObject *__pyx_v_self) {
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__get__ (wrapper)", 0);
  __pyx_r = __pyx_pf_4grpc_7_cython_6cygrpc_19ServerShutdownEvent_3tag___get__(((struct __pyx_obj_4grpc_7_cython_6cygrpc_ServerShutdownEvent *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_4grpc_7_cython_6cygrpc_19ServerShutdownEvent_3tag___get__(struct __pyx_obj_4grpc_7_cython_6cygrpc_ServerShutdownEvent *__pyx_v_self) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__get__", 0);
  __Pyx_XDECREF(__pyx_r);
  __Pyx_INCREF(__pyx_v_self->tag);
  __pyx_r = __pyx_v_self->tag;
  goto __pyx_L0;

  /* function exit code */
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "(tree fragment)":1
 * def __reduce_cython__(self):             # <<<<<<<<<<<<<<
 *     raise TypeError("no default __reduce__ due to non-trivial __cinit__")
 * def __setstate_cython__(self, __pyx_state):
 */

/* Python wrapper */
static PyObject *__pyx_pw_4grpc_7_cython_6cygrpc_19ServerShutdownEvent_3__reduce_cython__(PyObject *__pyx_v_self, CYTHON_UNUSED PyObject *unused); /*proto*/
static PyObject *__pyx_pw_4grpc_7_cython_6cygrpc_19ServerShutdownEvent_3__reduce_cython__(PyObject *__pyx_v_self, CYTHON_UNUSED PyObject *unused) {
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__reduce_cython__ (wrapper)", 0);
  __pyx_r = __pyx_pf_4grpc_7_cython_6cygrpc_19ServerShutdownEvent_2__reduce_cython__(((struct __pyx_obj_4grpc_7_cython_6cygrpc_ServerShutdownEvent *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_4grpc_7_cython_6cygrpc_19ServerShutdownEvent_2__reduce_cython__(CYTHON_UNUSED struct __pyx_obj_4grpc_7_cython_6cygrpc_ServerShutdownEvent *__pyx_v_self) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("__reduce_cython__", 0);

  /* "(tree fragment)":2
 * def __reduce_cython__(self):
 *     raise TypeError("no default __reduce__ due to non-trivial __cinit__")             # <<<<<<<<<<<<<<
 * def __setstate_cython__(self, __pyx_state):
 *     raise TypeError("no default __reduce__ due to non-trivial __cinit__")
 */
  __pyx_t_1 = __Pyx_PyObject_Call(__pyx_builtin_TypeError, __pyx_tuple__74, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(11, 2, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_Raise(__pyx_t_1, 0, 0, 0);
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  __PYX_ERR(11, 2, __pyx_L1_error)

  /* "(tree fragment)":1
 * def __reduce_cython__(self):             # <<<<<<<<<<<<<<
 *     raise TypeError("no default __reduce__ due to non-trivial __cinit__")
 * def __setstate_cython__(self, __pyx_state):
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_AddTraceback("grpc._cython.cygrpc.ServerShutdownEvent.__reduce_cython__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "(tree fragment)":3
 * def __reduce_cython__(self):
 *     raise TypeError("no default __reduce__ due to non-trivial __cinit__")
 * def __setstate_cython__(self, __pyx_state):             # <<<<<<<<<<<<<<
 *     raise TypeError("no default __reduce__ due to non-trivial __cinit__")
 */

/* Python wrapper */
static PyObject *__pyx_pw_4grpc_7_cython_6cygrpc_19ServerShutdownEvent_5__setstate_cython__(PyObject *__pyx_v_self, PyObject *__pyx_v___pyx_state); /*proto*/
static PyObject *__pyx_pw_4grpc_7_cython_6cygrpc_19ServerShutdownEvent_5__setstate_cython__(PyObject *__pyx_v_self, PyObject *__pyx_v___pyx_state) {
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__setstate_cython__ (wrapper)", 0);
  __pyx_r = __pyx_pf_4grpc_7_cython_6cygrpc_19ServerShutdownEvent_4__setstate_cython__(((struct __pyx_obj_4grpc_7_cython_6cygrpc_ServerShutdownEvent *)__pyx_v_self), ((PyObject *)__pyx_v___pyx_state));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_4grpc_7_cython_6cygrpc_19ServerShutdownEvent_4__setstate_cython__(CYTHON_UNUSED struct __pyx_obj_4grpc_7_cython_6cygrpc_ServerShutdownEvent *__pyx_v_self, CYTHON_UNUSED PyObject *__pyx_v___pyx_state) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("__setstate_cython__", 0);

  /* "(tree fragment)":4
 *     raise TypeError("no default __reduce__ due to non-trivial __cinit__")
 * def __setstate_cython__(self, __pyx_state):
 *     raise TypeError("no default __reduce__ due to non-trivial __cinit__")             # <<<<<<<<<<<<<<
 */
  __pyx_t_1 = __Pyx_PyObject_Call(__pyx_builtin_TypeError, __pyx_tuple__75, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(11, 4, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_Raise(__pyx_t_1, 0, 0, 0);
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  __PYX_ERR(11, 4, __pyx_L1_error)

  /* "(tree fragment)":3
 * def __reduce_cython__(self):
 *     raise TypeError("no default __reduce__ due to non-trivial __cinit__")
 * def __setstate_cython__(self, __pyx_state):             # <<<<<<<<<<<<<<
 *     raise TypeError("no default __reduce__ due to non-trivial __cinit__")
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_AddTraceback("grpc._cython.cygrpc.ServerShutdownEvent.__setstate_cython__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "src/python/grpcio/grpc/_cython/_cygrpc/metadata.pyx.pxi":27
 * 
 * 
 * cdef void _store_c_metadata(             # <<<<<<<<<<<<<<
 *     metadata, grpc_metadata **c_metadata, size_t *c_count) except *:
 *   if metadata is None:
 */

static void __pyx_f_4grpc_7_cython_6cygrpc__store_c_metadata(PyObject *__pyx_v_metadata, grpc_metadata **__pyx_v_c_metadata, size_t *__pyx_v_c_count) {
  PyObject *__pyx_v_metadatum_count = NULL;
  PyObject *__pyx_v_index = NULL;
  PyObject *__pyx_v_key = NULL;
  PyObject *__pyx_v_value = NULL;
  PyObject *__pyx_v_encoded_key = NULL;
  PyObject *__pyx_v_encoded_value = NULL;
  __Pyx_RefNannyDeclarations
  int __pyx_t_1;
  int __pyx_t_2;
  Py_ssize_t __pyx_t_3;
  PyObject *__pyx_t_4 = NULL;
  size_t __pyx_t_5;
  PyObject *__pyx_t_6 = NULL;
  PyObject *(*__pyx_t_7)(PyObject *);
  PyObject *__pyx_t_8 = NULL;
  PyObject *__pyx_t_9 = NULL;
  PyObject *__pyx_t_10 = NULL;
  PyObject *__pyx_t_11 = NULL;
  PyObject *(*__pyx_t_12)(PyObject *);
  Py_ssize_t __pyx_t_13;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("_store_c_metadata", 0);

  /* "src/python/grpcio/grpc/_cython/_cygrpc/metadata.pyx.pxi":29
 * cdef void _store_c_metadata(
 *     metadata, grpc_metadata **c_metadata, size_t *c_count) except *:
 *   if metadata is None:             # <<<<<<<<<<<<<<
 *     c_count[0] = 0
 *     c_metadata[0] = NULL
 */
  __pyx_t_1 = (__pyx_v_metadata == Py_None);
  __pyx_t_2 = (__pyx_t_1 != 0);
  if (__pyx_t_2) {

    /* "src/python/grpcio/grpc/_cython/_cygrpc/metadata.pyx.pxi":30
 *     metadata, grpc_metadata **c_metadata, size_t *c_count) except *:
 *   if metadata is None:
 *     c_count[0] = 0             # <<<<<<<<<<<<<<
 *     c_metadata[0] = NULL
 *   else:
 */
    (__pyx_v_c_count[0]) = 0;

    /* "src/python/grpcio/grpc/_cython/_cygrpc/metadata.pyx.pxi":31
 *   if metadata is None:
 *     c_count[0] = 0
 *     c_metadata[0] = NULL             # <<<<<<<<<<<<<<
 *   else:
 *     metadatum_count = len(metadata)
 */
    (__pyx_v_c_metadata[0]) = NULL;

    /* "src/python/grpcio/grpc/_cython/_cygrpc/metadata.pyx.pxi":29
 * cdef void _store_c_metadata(
 *     metadata, grpc_metadata **c_metadata, size_t *c_count) except *:
 *   if metadata is None:             # <<<<<<<<<<<<<<
 *     c_count[0] = 0
 *     c_metadata[0] = NULL
 */
    goto __pyx_L3;
  }

  /* "src/python/grpcio/grpc/_cython/_cygrpc/metadata.pyx.pxi":33
 *     c_metadata[0] = NULL
 *   else:
 *     metadatum_count = len(metadata)             # <<<<<<<<<<<<<<
 *     if metadatum_count == 0:
 *       c_count[0] = 0
 */
  /*else*/ {
    __pyx_t_3 = PyObject_Length(__pyx_v_metadata); if (unlikely(__pyx_t_3 == ((Py_ssize_t)-1))) __PYX_ERR(18, 33, __pyx_L1_error)
    __pyx_t_4 = PyInt_FromSsize_t(__pyx_t_3); if (unlikely(!__pyx_t_4)) __PYX_ERR(18, 33, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_4);
    __pyx_v_metadatum_count = __pyx_t_4;
    __pyx_t_4 = 0;

    /* "src/python/grpcio/grpc/_cython/_cygrpc/metadata.pyx.pxi":34
 *   else:
 *     metadatum_count = len(metadata)
 *     if metadatum_count == 0:             # <<<<<<<<<<<<<<
 *       c_count[0] = 0
 *       c_metadata[0] = NULL
 */
    __pyx_t_4 = __Pyx_PyInt_EqObjC(__pyx_v_metadatum_count, __pyx_int_0, 0, 0); if (unlikely(!__pyx_t_4)) __PYX_ERR(18, 34, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_4);
    __pyx_t_2 = __Pyx_PyObject_IsTrue(__pyx_t_4); if (unlikely(__pyx_t_2 < 0)) __PYX_ERR(18, 34, __pyx_L1_error)
    __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
    if (__pyx_t_2) {

      /* "src/python/grpcio/grpc/_cython/_cygrpc/metadata.pyx.pxi":35
 *     metadatum_count = len(metadata)
 *     if metadatum_count == 0:
 *       c_count[0] = 0             # <<<<<<<<<<<<<<
 *       c_metadata[0] = NULL
 *     else:
 */
      (__pyx_v_c_count[0]) = 0;

      /* "src/python/grpcio/grpc/_cython/_cygrpc/metadata.pyx.pxi":36
 *     if metadatum_count == 0:
 *       c_count[0] = 0
 *       c_metadata[0] = NULL             # <<<<<<<<<<<<<<
 *     else:
 *       c_count[0] = metadatum_count
 */
      (__pyx_v_c_metadata[0]) = NULL;

      /* "src/python/grpcio/grpc/_cython/_cygrpc/metadata.pyx.pxi":34
 *   else:
 *     metadatum_count = len(metadata)
 *     if metadatum_count == 0:             # <<<<<<<<<<<<<<
 *       c_count[0] = 0
 *       c_metadata[0] = NULL
 */
      goto __pyx_L4;
    }

    /* "src/python/grpcio/grpc/_cython/_cygrpc/metadata.pyx.pxi":38
 *       c_metadata[0] = NULL
 *     else:
 *       c_count[0] = metadatum_count             # <<<<<<<<<<<<<<
 *       c_metadata[0] = <grpc_metadata *>gpr_malloc(
 *           metadatum_count * sizeof(grpc_metadata))
 */
    /*else*/ {
      __pyx_t_5 = __Pyx_PyInt_As_size_t(__pyx_v_metadatum_count); if (unlikely((__pyx_t_5 == (size_t)-1) && PyErr_Occurred())) __PYX_ERR(18, 38, __pyx_L1_error)
      (__pyx_v_c_count[0]) = __pyx_t_5;

      /* "src/python/grpcio/grpc/_cython/_cygrpc/metadata.pyx.pxi":40
 *       c_count[0] = metadatum_count
 *       c_metadata[0] = <grpc_metadata *>gpr_malloc(
 *           metadatum_count * sizeof(grpc_metadata))             # <<<<<<<<<<<<<<
 *       for index, (key, value) in enumerate(metadata):
 *         encoded_key = _encode(key)
 */
      __pyx_t_4 = __Pyx_PyInt_FromSize_t((sizeof(grpc_metadata))); if (unlikely(!__pyx_t_4)) __PYX_ERR(18, 40, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_4);
      __pyx_t_6 = PyNumber_Multiply(__pyx_v_metadatum_count, __pyx_t_4); if (unlikely(!__pyx_t_6)) __PYX_ERR(18, 40, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_6);
      __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
      __pyx_t_5 = __Pyx_PyInt_As_size_t(__pyx_t_6); if (unlikely((__pyx_t_5 == (size_t)-1) && PyErr_Occurred())) __PYX_ERR(18, 40, __pyx_L1_error)
      __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;

      /* "src/python/grpcio/grpc/_cython/_cygrpc/metadata.pyx.pxi":39
 *     else:
 *       c_count[0] = metadatum_count
 *       c_metadata[0] = <grpc_metadata *>gpr_malloc(             # <<<<<<<<<<<<<<
 *           metadatum_count * sizeof(grpc_metadata))
 *       for index, (key, value) in enumerate(metadata):
 */
      (__pyx_v_c_metadata[0]) = ((grpc_metadata *)gpr_malloc(__pyx_t_5));

      /* "src/python/grpcio/grpc/_cython/_cygrpc/metadata.pyx.pxi":41
 *       c_metadata[0] = <grpc_metadata *>gpr_malloc(
 *           metadatum_count * sizeof(grpc_metadata))
 *       for index, (key, value) in enumerate(metadata):             # <<<<<<<<<<<<<<
 *         encoded_key = _encode(key)
 *         encoded_value = value if encoded_key[-4:] == b'-bin' else _encode(value)
 */
      __Pyx_INCREF(__pyx_int_0);
      __pyx_t_6 = __pyx_int_0;
      if (likely(PyList_CheckExact(__pyx_v_metadata)) || PyTuple_CheckExact(__pyx_v_metadata)) {
        __pyx_t_4 = __pyx_v_metadata; __Pyx_INCREF(__pyx_t_4); __pyx_t_3 = 0;
        __pyx_t_7 = NULL;
      } else {
        __pyx_t_3 = -1; __pyx_t_4 = PyObject_GetIter(__pyx_v_metadata); if (unlikely(!__pyx_t_4)) __PYX_ERR(18, 41, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_4);
        __pyx_t_7 = Py_TYPE(__pyx_t_4)->tp_iternext; if (unlikely(!__pyx_t_7)) __PYX_ERR(18, 41, __pyx_L1_error)
      }
      for (;;) {
        if (likely(!__pyx_t_7)) {
          if (likely(PyList_CheckExact(__pyx_t_4))) {
            if (__pyx_t_3 >= PyList_GET_SIZE(__pyx_t_4)) break;
            #if CYTHON_ASSUME_SAFE_MACROS && !CYTHON_AVOID_BORROWED_REFS
            __pyx_t_8 = PyList_GET_ITEM(__pyx_t_4, __pyx_t_3); __Pyx_INCREF(__pyx_t_8); __pyx_t_3++; if (unlikely(0 < 0)) __PYX_ERR(18, 41, __pyx_L1_error)
            #else
            __pyx_t_8 = PySequence_ITEM(__pyx_t_4, __pyx_t_3); __pyx_t_3++; if (unlikely(!__pyx_t_8)) __PYX_ERR(18, 41, __pyx_L1_error)
            __Pyx_GOTREF(__pyx_t_8);
            #endif
          } else {
            if (__pyx_t_3 >= PyTuple_GET_SIZE(__pyx_t_4)) break;
            #if CYTHON_ASSUME_SAFE_MACROS && !CYTHON_AVOID_BORROWED_REFS
            __pyx_t_8 = PyTuple_GET_ITEM(__pyx_t_4, __pyx_t_3); __Pyx_INCREF(__pyx_t_8); __pyx_t_3++; if (unlikely(0 < 0)) __PYX_ERR(18, 41, __pyx_L1_error)
            #else
            __pyx_t_8 = PySequence_ITEM(__pyx_t_4, __pyx_t_3); __pyx_t_3++; if (unlikely(!__pyx_t_8)) __PYX_ERR(18, 41, __pyx_L1_error)
            __Pyx_GOTREF(__pyx_t_8);
            #endif
          }
        } else {
          __pyx_t_8 = __pyx_t_7(__pyx_t_4);
          if (unlikely(!__pyx_t_8)) {
            PyObject* exc_type = PyErr_Occurred();
            if (exc_type) {
              if (likely(__Pyx_PyErr_GivenExceptionMatches(exc_type, PyExc_StopIteration))) PyErr_Clear();
              else __PYX_ERR(18, 41, __pyx_L1_error)
            }
            break;
          }
          __Pyx_GOTREF(__pyx_t_8);
        }
        if ((likely(PyTuple_CheckExact(__pyx_t_8))) || (PyList_CheckExact(__pyx_t_8))) {
          PyObject* sequence = __pyx_t_8;
          Py_ssize_t size = __Pyx_PySequence_SIZE(sequence);
          if (unlikely(size != 2)) {
            if (size > 2) __Pyx_RaiseTooManyValuesError(2);
            else if (size >= 0) __Pyx_RaiseNeedMoreValuesError(size);
            __PYX_ERR(18, 41, __pyx_L1_error)
          }
          #if CYTHON_ASSUME_SAFE_MACROS && !CYTHON_AVOID_BORROWED_REFS
          if (likely(PyTuple_CheckExact(sequence))) {
            __pyx_t_9 = PyTuple_GET_ITEM(sequence, 0); 
            __pyx_t_10 = PyTuple_GET_ITEM(sequence, 1); 
          } else {
            __pyx_t_9 = PyList_GET_ITEM(sequence, 0); 
            __pyx_t_10 = PyList_GET_ITEM(sequence, 1); 
          }
          __Pyx_INCREF(__pyx_t_9);
          __Pyx_INCREF(__pyx_t_10);
          #else
          __pyx_t_9 = PySequence_ITEM(sequence, 0); if (unlikely(!__pyx_t_9)) __PYX_ERR(18, 41, __pyx_L1_error)
          __Pyx_GOTREF(__pyx_t_9);
          __pyx_t_10 = PySequence_ITEM(sequence, 1); if (unlikely(!__pyx_t_10)) __PYX_ERR(18, 41, __pyx_L1_error)
          __Pyx_GOTREF(__pyx_t_10);
          #endif
          __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
        } else {
          Py_ssize_t index = -1;
          __pyx_t_11 = PyObject_GetIter(__pyx_t_8); if (unlikely(!__pyx_t_11)) __PYX_ERR(18, 41, __pyx_L1_error)
          __Pyx_GOTREF(__pyx_t_11);
          __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
          __pyx_t_12 = Py_TYPE(__pyx_t_11)->tp_iternext;
          index = 0; __pyx_t_9 = __pyx_t_12(__pyx_t_11); if (unlikely(!__pyx_t_9)) goto __pyx_L7_unpacking_failed;
          __Pyx_GOTREF(__pyx_t_9);
          index = 1; __pyx_t_10 = __pyx_t_12(__pyx_t_11); if (unlikely(!__pyx_t_10)) goto __pyx_L7_unpacking_failed;
          __Pyx_GOTREF(__pyx_t_10);
          if (__Pyx_IternextUnpackEndCheck(__pyx_t_12(__pyx_t_11), 2) < 0) __PYX_ERR(18, 41, __pyx_L1_error)
          __pyx_t_12 = NULL;
          __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0;
          goto __pyx_L8_unpacking_done;
          __pyx_L7_unpacking_failed:;
          __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0;
          __pyx_t_12 = NULL;
          if (__Pyx_IterFinish() == 0) __Pyx_RaiseNeedMoreValuesError(index);
          __PYX_ERR(18, 41, __pyx_L1_error)
          __pyx_L8_unpacking_done:;
        }
        __Pyx_XDECREF_SET(__pyx_v_key, __pyx_t_9);
        __pyx_t_9 = 0;
        __Pyx_XDECREF_SET(__pyx_v_value, __pyx_t_10);
        __pyx_t_10 = 0;
        __Pyx_INCREF(__pyx_t_6);
        __Pyx_XDECREF_SET(__pyx_v_index, __pyx_t_6);
        __pyx_t_8 = __Pyx_PyInt_AddObjC(__pyx_t_6, __pyx_int_1, 1, 0, 0); if (unlikely(!__pyx_t_8)) __PYX_ERR(18, 41, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_8);
        __Pyx_DECREF(__pyx_t_6);
        __pyx_t_6 = __pyx_t_8;
        __pyx_t_8 = 0;

        /* "src/python/grpcio/grpc/_cython/_cygrpc/metadata.pyx.pxi":42
 *           metadatum_count * sizeof(grpc_metadata))
 *       for index, (key, value) in enumerate(metadata):
 *         encoded_key = _encode(key)             # <<<<<<<<<<<<<<
 *         encoded_value = value if encoded_key[-4:] == b'-bin' else _encode(value)
 *         if not isinstance(encoded_value, bytes):
 */
        __pyx_t_8 = __pyx_f_4grpc_7_cython_6cygrpc__encode(__pyx_v_key); if (unlikely(!__pyx_t_8)) __PYX_ERR(18, 42, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_8);
        __Pyx_XDECREF_SET(__pyx_v_encoded_key, ((PyObject*)__pyx_t_8));
        __pyx_t_8 = 0;

        /* "src/python/grpcio/grpc/_cython/_cygrpc/metadata.pyx.pxi":43
 *       for index, (key, value) in enumerate(metadata):
 *         encoded_key = _encode(key)
 *         encoded_value = value if encoded_key[-4:] == b'-bin' else _encode(value)             # <<<<<<<<<<<<<<
 *         if not isinstance(encoded_value, bytes):
 *           raise TypeError('Binary metadata key="%s" expected bytes, got %s' % (
 */
        if (unlikely(__pyx_v_encoded_key == Py_None)) {
          PyErr_SetString(PyExc_TypeError, "'NoneType' object is not subscriptable");
          __PYX_ERR(18, 43, __pyx_L1_error)
        }
        __pyx_t_10 = PySequence_GetSlice(__pyx_v_encoded_key, -4L, PY_SSIZE_T_MAX); if (unlikely(!__pyx_t_10)) __PYX_ERR(18, 43, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_10);
        __pyx_t_2 = (__Pyx_PyBytes_Equals(__pyx_t_10, __pyx_kp_b_bin, Py_EQ)); if (unlikely(__pyx_t_2 < 0)) __PYX_ERR(18, 43, __pyx_L1_error)
        __Pyx_DECREF(__pyx_t_10); __pyx_t_10 = 0;
        if ((__pyx_t_2 != 0)) {
          __Pyx_INCREF(__pyx_v_value);
          __pyx_t_8 = __pyx_v_value;
        } else {
          __pyx_t_10 = __pyx_f_4grpc_7_cython_6cygrpc__encode(__pyx_v_value); if (unlikely(!__pyx_t_10)) __PYX_ERR(18, 43, __pyx_L1_error)
          __Pyx_GOTREF(__pyx_t_10);
          __pyx_t_8 = __pyx_t_10;
          __pyx_t_10 = 0;
        }
        __Pyx_XDECREF_SET(__pyx_v_encoded_value, __pyx_t_8);
        __pyx_t_8 = 0;

        /* "src/python/grpcio/grpc/_cython/_cygrpc/metadata.pyx.pxi":44
 *         encoded_key = _encode(key)
 *         encoded_value = value if encoded_key[-4:] == b'-bin' else _encode(value)
 *         if not isinstance(encoded_value, bytes):             # <<<<<<<<<<<<<<
 *           raise TypeError('Binary metadata key="%s" expected bytes, got %s' % (
 *             key,
 */
        __pyx_t_2 = PyBytes_Check(__pyx_v_encoded_value); 
        __pyx_t_1 = ((!(__pyx_t_2 != 0)) != 0);
        if (unlikely(__pyx_t_1)) {

          /* "src/python/grpcio/grpc/_cython/_cygrpc/metadata.pyx.pxi":46
 *         if not isinstance(encoded_value, bytes):
 *           raise TypeError('Binary metadata key="%s" expected bytes, got %s' % (
 *             key,             # <<<<<<<<<<<<<<
 *             type(encoded_value)
 *           ))
 */
          __pyx_t_8 = PyTuple_New(2); if (unlikely(!__pyx_t_8)) __PYX_ERR(18, 46, __pyx_L1_error)
          __Pyx_GOTREF(__pyx_t_8);
          __Pyx_INCREF(__pyx_v_key);
          __Pyx_GIVEREF(__pyx_v_key);
          PyTuple_SET_ITEM(__pyx_t_8, 0, __pyx_v_key);
          __Pyx_INCREF(((PyObject *)Py_TYPE(__pyx_v_encoded_value)));
          __Pyx_GIVEREF(((PyObject *)Py_TYPE(__pyx_v_encoded_value)));
          PyTuple_SET_ITEM(__pyx_t_8, 1, ((PyObject *)Py_TYPE(__pyx_v_encoded_value)));

          /* "src/python/grpcio/grpc/_cython/_cygrpc/metadata.pyx.pxi":45
 *         encoded_value = value if encoded_key[-4:] == b'-bin' else _encode(value)
 *         if not isinstance(encoded_value, bytes):
 *           raise TypeError('Binary metadata key="%s" expected bytes, got %s' % (             # <<<<<<<<<<<<<<
 *             key,
 *             type(encoded_value)
 */
          __pyx_t_10 = __Pyx_PyString_Format(__pyx_kp_s_Binary_metadata_key_s_expected_b, __pyx_t_8); if (unlikely(!__pyx_t_10)) __PYX_ERR(18, 45, __pyx_L1_error)
          __Pyx_GOTREF(__pyx_t_10);
          __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
          __pyx_t_8 = __Pyx_PyObject_CallOneArg(__pyx_builtin_TypeError, __pyx_t_10); if (unlikely(!__pyx_t_8)) __PYX_ERR(18, 45, __pyx_L1_error)
          __Pyx_GOTREF(__pyx_t_8);
          __Pyx_DECREF(__pyx_t_10); __pyx_t_10 = 0;
          __Pyx_Raise(__pyx_t_8, 0, 0, 0);
          __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
          __PYX_ERR(18, 45, __pyx_L1_error)

          /* "src/python/grpcio/grpc/_cython/_cygrpc/metadata.pyx.pxi":44
 *         encoded_key = _encode(key)
 *         encoded_value = value if encoded_key[-4:] == b'-bin' else _encode(value)
 *         if not isinstance(encoded_value, bytes):             # <<<<<<<<<<<<<<
 *           raise TypeError('Binary metadata key="%s" expected bytes, got %s' % (
 *             key,
 */
        }

        /* "src/python/grpcio/grpc/_cython/_cygrpc/metadata.pyx.pxi":49
 *             type(encoded_value)
 *           ))
 *         c_metadata[0][index].key = _slice_from_bytes(encoded_key)             # <<<<<<<<<<<<<<
 *         c_metadata[0][index].value = _slice_from_bytes(encoded_value)
 * 
 */
        __pyx_t_13 = __Pyx_PyIndex_AsSsize_t(__pyx_v_index); if (unlikely((__pyx_t_13 == (Py_ssize_t)-1) && PyErr_Occurred())) __PYX_ERR(18, 49, __pyx_L1_error)
        ((__pyx_v_c_metadata[0])[__pyx_t_13]).key = __pyx_f_4grpc_7_cython_6cygrpc__slice_from_bytes(__pyx_v_encoded_key);

        /* "src/python/grpcio/grpc/_cython/_cygrpc/metadata.pyx.pxi":50
 *           ))
 *         c_metadata[0][index].key = _slice_from_bytes(encoded_key)
 *         c_metadata[0][index].value = _slice_from_bytes(encoded_value)             # <<<<<<<<<<<<<<
 * 
 * 
 */
        if (!(likely(PyBytes_CheckExact(__pyx_v_encoded_value))||((__pyx_v_encoded_value) == Py_None)||(PyErr_Format(PyExc_TypeError, "Expected %.16s, got %.200s", "bytes", Py_TYPE(__pyx_v_encoded_value)->tp_name), 0))) __PYX_ERR(18, 50, __pyx_L1_error)
        __pyx_t_13 = __Pyx_PyIndex_AsSsize_t(__pyx_v_index); if (unlikely((__pyx_t_13 == (Py_ssize_t)-1) && PyErr_Occurred())) __PYX_ERR(18, 50, __pyx_L1_error)
        ((__pyx_v_c_metadata[0])[__pyx_t_13]).value = __pyx_f_4grpc_7_cython_6cygrpc__slice_from_bytes(((PyObject*)__pyx_v_encoded_value));

        /* "src/python/grpcio/grpc/_cython/_cygrpc/metadata.pyx.pxi":41
 *       c_metadata[0] = <grpc_metadata *>gpr_malloc(
 *           metadatum_count * sizeof(grpc_metadata))
 *       for index, (key, value) in enumerate(metadata):             # <<<<<<<<<<<<<<
 *         encoded_key = _encode(key)
 *         encoded_value = value if encoded_key[-4:] == b'-bin' else _encode(value)
 */
      }
      __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
      __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
    }
    __pyx_L4:;
  }
  __pyx_L3:;

  /* "src/python/grpcio/grpc/_cython/_cygrpc/metadata.pyx.pxi":27
 * 
 * 
 * cdef void _store_c_metadata(             # <<<<<<<<<<<<<<
 *     metadata, grpc_metadata **c_metadata, size_t *c_count) except *:
 *   if metadata is None:
 */

  /* function exit code */
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_4);
  __Pyx_XDECREF(__pyx_t_6);
  __Pyx_XDECREF(__pyx_t_8);
  __Pyx_XDECREF(__pyx_t_9);
  __Pyx_XDECREF(__pyx_t_10);
  __Pyx_XDECREF(__pyx_t_11);
  __Pyx_AddTraceback("grpc._cython.cygrpc._store_c_metadata", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_L0:;
  __Pyx_XDECREF(__pyx_v_metadatum_count);
  __Pyx_XDECREF(__pyx_v_index);
  __Pyx_XDECREF(__pyx_v_key);
  __Pyx_XDECREF(__pyx_v_value);
  __Pyx_XDECREF(__pyx_v_encoded_key);
  __Pyx_XDECREF(__pyx_v_encoded_value);
  __Pyx_RefNannyFinishContext();
}

/* "src/python/grpcio/grpc/_cython/_cygrpc/metadata.pyx.pxi":53
 * 
 * 
 * cdef void _release_c_metadata(grpc_metadata *c_metadata, int count) except *:             # <<<<<<<<<<<<<<
 *   if 0 < count:
 *     for index in range(count):
 */

static void __pyx_f_4grpc_7_cython_6cygrpc__release_c_metadata(grpc_metadata *__pyx_v_c_metadata, int __pyx_v_count) {
  int __pyx_v_index;
  __Pyx_RefNannyDeclarations
  int __pyx_t_1;
  int __pyx_t_2;
  int __pyx_t_3;
  int __pyx_t_4;
  __Pyx_RefNannySetupContext("_release_c_metadata", 0);

  /* "src/python/grpcio/grpc/_cython/_cygrpc/metadata.pyx.pxi":54
 * 
 * cdef void _release_c_metadata(grpc_metadata *c_metadata, int count) except *:
 *   if 0 < count:             # <<<<<<<<<<<<<<
 *     for index in range(count):
 *       grpc_slice_unref(c_metadata[index].key)
 */
  __pyx_t_1 = ((0 < __pyx_v_count) != 0);
  if (__pyx_t_1) {

    /* "src/python/grpcio/grpc/_cython/_cygrpc/metadata.pyx.pxi":55
 * cdef void _release_c_metadata(grpc_metadata *c_metadata, int count) except *:
 *   if 0 < count:
 *     for index in range(count):             # <<<<<<<<<<<<<<
 *       grpc_slice_unref(c_metadata[index].key)
 *       grpc_slice_unref(c_metadata[index].value)
 */
    __pyx_t_2 = __pyx_v_count;
    __pyx_t_3 = __pyx_t_2;
    for (__pyx_t_4 = 0; __pyx_t_4 < __pyx_t_3; __pyx_t_4+=1) {
      __pyx_v_index = __pyx_t_4;

      /* "src/python/grpcio/grpc/_cython/_cygrpc/metadata.pyx.pxi":56
 *   if 0 < count:
 *     for index in range(count):
 *       grpc_slice_unref(c_metadata[index].key)             # <<<<<<<<<<<<<<
 *       grpc_slice_unref(c_metadata[index].value)
 *     gpr_free(c_metadata)
 */
      grpc_slice_unref((__pyx_v_c_metadata[__pyx_v_index]).key);

      /* "src/python/grpcio/grpc/_cython/_cygrpc/metadata.pyx.pxi":57
 *     for index in range(count):
 *       grpc_slice_unref(c_metadata[index].key)
 *       grpc_slice_unref(c_metadata[index].value)             # <<<<<<<<<<<<<<
 *     gpr_free(c_metadata)
 * 
 */
      grpc_slice_unref((__pyx_v_c_metadata[__pyx_v_index]).value);
    }

    /* "src/python/grpcio/grpc/_cython/_cygrpc/metadata.pyx.pxi":58
 *       grpc_slice_unref(c_metadata[index].key)
 *       grpc_slice_unref(c_metadata[index].value)
 *     gpr_free(c_metadata)             # <<<<<<<<<<<<<<
 * 
 * 
 */
    gpr_free(__pyx_v_c_metadata);

    /* "src/python/grpcio/grpc/_cython/_cygrpc/metadata.pyx.pxi":54
 * 
 * cdef void _release_c_metadata(grpc_metadata *c_metadata, int count) except *:
 *   if 0 < count:             # <<<<<<<<<<<<<<
 *     for index in range(count):
 *       grpc_slice_unref(c_metadata[index].key)
 */
  }

  /* "src/python/grpcio/grpc/_cython/_cygrpc/metadata.pyx.pxi":53
 * 
 * 
 * cdef void _release_c_metadata(grpc_metadata *c_metadata, int count) except *:             # <<<<<<<<<<<<<<
 *   if 0 < count:
 *     for index in range(count):
 */

  /* function exit code */
  __Pyx_RefNannyFinishContext();
}

/* "src/python/grpcio/grpc/_cython/_cygrpc/metadata.pyx.pxi":61
 * 
 * 
 * cdef tuple _metadatum(grpc_slice key_slice, grpc_slice value_slice):             # <<<<<<<<<<<<<<
 *   cdef bytes key = _slice_bytes(key_slice)
 *   cdef bytes value = _slice_bytes(value_slice)
 */

static PyObject *__pyx_f_4grpc_7_cython_6cygrpc__metadatum(grpc_slice __pyx_v_key_slice, grpc_slice __pyx_v_value_slice) {
  PyObject *__pyx_v_key = 0;
  PyObject *__pyx_v_value = 0;
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  PyObject *__pyx_t_2 = NULL;
  PyObject *__pyx_t_3 = NULL;
  PyObject *__pyx_t_4 = NULL;
  PyObject *__pyx_t_5 = NULL;
  int __pyx_t_6;
  int __pyx_t_7;
  PyObject *__pyx_t_8 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("_metadatum", 0);

  /* "src/python/grpcio/grpc/_cython/_cygrpc/metadata.pyx.pxi":62
 * 
 * cdef tuple _metadatum(grpc_slice key_slice, grpc_slice value_slice):
 *   cdef bytes key = _slice_bytes(key_slice)             # <<<<<<<<<<<<<<
 *   cdef bytes value = _slice_bytes(value_slice)
 *   return <tuple>_Metadatum(
 */
  __pyx_t_1 = __pyx_f_4grpc_7_cython_6cygrpc__slice_bytes(__pyx_v_key_slice); if (unlikely(!__pyx_t_1)) __PYX_ERR(18, 62, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_v_key = ((PyObject*)__pyx_t_1);
  __pyx_t_1 = 0;

  /* "src/python/grpcio/grpc/_cython/_cygrpc/metadata.pyx.pxi":63
 * cdef tuple _metadatum(grpc_slice key_slice, grpc_slice value_slice):
 *   cdef bytes key = _slice_bytes(key_slice)
 *   cdef bytes value = _slice_bytes(value_slice)             # <<<<<<<<<<<<<<
 *   return <tuple>_Metadatum(
 *       _decode(key), value if key[-4:] == b'-bin' else _decode(value))
 */
  __pyx_t_1 = __pyx_f_4grpc_7_cython_6cygrpc__slice_bytes(__pyx_v_value_slice); if (unlikely(!__pyx_t_1)) __PYX_ERR(18, 63, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_v_value = ((PyObject*)__pyx_t_1);
  __pyx_t_1 = 0;

  /* "src/python/grpcio/grpc/_cython/_cygrpc/metadata.pyx.pxi":64
 *   cdef bytes key = _slice_bytes(key_slice)
 *   cdef bytes value = _slice_bytes(value_slice)
 *   return <tuple>_Metadatum(             # <<<<<<<<<<<<<<
 *       _decode(key), value if key[-4:] == b'-bin' else _decode(value))
 * 
 */
  __Pyx_XDECREF(__pyx_r);
  __Pyx_GetModuleGlobalName(__pyx_t_2, __pyx_n_s_Metadatum); if (unlikely(!__pyx_t_2)) __PYX_ERR(18, 64, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);

  /* "src/python/grpcio/grpc/_cython/_cygrpc/metadata.pyx.pxi":65
 *   cdef bytes value = _slice_bytes(value_slice)
 *   return <tuple>_Metadatum(
 *       _decode(key), value if key[-4:] == b'-bin' else _decode(value))             # <<<<<<<<<<<<<<
 * 
 * 
 */
  __pyx_t_3 = __pyx_f_4grpc_7_cython_6cygrpc__decode(__pyx_v_key); if (unlikely(!__pyx_t_3)) __PYX_ERR(18, 65, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  if (unlikely(__pyx_v_key == Py_None)) {
    PyErr_SetString(PyExc_TypeError, "'NoneType' object is not subscriptable");
    __PYX_ERR(18, 65, __pyx_L1_error)
  }
  __pyx_t_5 = PySequence_GetSlice(__pyx_v_key, -4L, PY_SSIZE_T_MAX); if (unlikely(!__pyx_t_5)) __PYX_ERR(18, 65, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_5);
  __pyx_t_6 = (__Pyx_PyBytes_Equals(__pyx_t_5, __pyx_kp_b_bin, Py_EQ)); if (unlikely(__pyx_t_6 < 0)) __PYX_ERR(18, 65, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
  if ((__pyx_t_6 != 0)) {
    __Pyx_INCREF(__pyx_v_value);
    __pyx_t_4 = __pyx_v_value;
  } else {
    __pyx_t_5 = __pyx_f_4grpc_7_cython_6cygrpc__decode(__pyx_v_value); if (unlikely(!__pyx_t_5)) __PYX_ERR(18, 65, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_5);
    __pyx_t_4 = __pyx_t_5;
    __pyx_t_5 = 0;
  }
  __pyx_t_5 = NULL;
  __pyx_t_7 = 0;
  if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_2))) {
    __pyx_t_5 = PyMethod_GET_SELF(__pyx_t_2);
    if (likely(__pyx_t_5)) {
      PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_2);
      __Pyx_INCREF(__pyx_t_5);
      __Pyx_INCREF(function);
      __Pyx_DECREF_SET(__pyx_t_2, function);
      __pyx_t_7 = 1;
    }
  }
  #if CYTHON_FAST_PYCALL
  if (PyFunction_Check(__pyx_t_2)) {
    PyObject *__pyx_temp[3] = {__pyx_t_5, __pyx_t_3, __pyx_t_4};
    __pyx_t_1 = __Pyx_PyFunction_FastCall(__pyx_t_2, __pyx_temp+1-__pyx_t_7, 2+__pyx_t_7); if (unlikely(!__pyx_t_1)) __PYX_ERR(18, 64, __pyx_L1_error)
    __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0;
    __Pyx_GOTREF(__pyx_t_1);
    __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
    __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
  } else
  #endif
  #if CYTHON_FAST_PYCCALL
  if (__Pyx_PyFastCFunction_Check(__pyx_t_2)) {
    PyObject *__pyx_temp[3] = {__pyx_t_5, __pyx_t_3, __pyx_t_4};
    __pyx_t_1 = __Pyx_PyCFunction_FastCall(__pyx_t_2, __pyx_temp+1-__pyx_t_7, 2+__pyx_t_7); if (unlikely(!__pyx_t_1)) __PYX_ERR(18, 64, __pyx_L1_error)
    __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0;
    __Pyx_GOTREF(__pyx_t_1);
    __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
    __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
  } else
  #endif
  {
    __pyx_t_8 = PyTuple_New(2+__pyx_t_7); if (unlikely(!__pyx_t_8)) __PYX_ERR(18, 64, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_8);
    if (__pyx_t_5) {
      __Pyx_GIVEREF(__pyx_t_5); PyTuple_SET_ITEM(__pyx_t_8, 0, __pyx_t_5); __pyx_t_5 = NULL;
    }
    __Pyx_GIVEREF(__pyx_t_3);
    PyTuple_SET_ITEM(__pyx_t_8, 0+__pyx_t_7, __pyx_t_3);
    __Pyx_GIVEREF(__pyx_t_4);
    PyTuple_SET_ITEM(__pyx_t_8, 1+__pyx_t_7, __pyx_t_4);
    __pyx_t_3 = 0;
    __pyx_t_4 = 0;
    __pyx_t_1 = __Pyx_PyObject_Call(__pyx_t_2, __pyx_t_8, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(18, 64, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_1);
    __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
  }
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;

  /* "src/python/grpcio/grpc/_cython/_cygrpc/metadata.pyx.pxi":64
 *   cdef bytes key = _slice_bytes(key_slice)
 *   cdef bytes value = _slice_bytes(value_slice)
 *   return <tuple>_Metadatum(             # <<<<<<<<<<<<<<
 *       _decode(key), value if key[-4:] == b'-bin' else _decode(value))
 * 
 */
  __Pyx_INCREF(((PyObject*)__pyx_t_1));
  __pyx_r = ((PyObject*)__pyx_t_1);
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  goto __pyx_L0;

  /* "src/python/grpcio/grpc/_cython/_cygrpc/metadata.pyx.pxi":61
 * 
 * 
 * cdef tuple _metadatum(grpc_slice key_slice, grpc_slice value_slice):             # <<<<<<<<<<<<<<
 *   cdef bytes key = _slice_bytes(key_slice)
 *   cdef bytes value = _slice_bytes(value_slice)
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_XDECREF(__pyx_t_3);
  __Pyx_XDECREF(__pyx_t_4);
  __Pyx_XDECREF(__pyx_t_5);
  __Pyx_XDECREF(__pyx_t_8);
  __Pyx_AddTraceback("grpc._cython.cygrpc._metadatum", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = 0;
  __pyx_L0:;
  __Pyx_XDECREF(__pyx_v_key);
  __Pyx_XDECREF(__pyx_v_value);
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}
static PyObject *__pyx_gb_4grpc_7_cython_6cygrpc_9_metadata_2generator46(__pyx_CoroutineObject *__pyx_generator, CYTHON_UNUSED PyThreadState *__pyx_tstate, PyObject *__pyx_sent_value); /* proto */

/* "src/python/grpcio/grpc/_cython/_cygrpc/metadata.pyx.pxi":70
 * cdef tuple _metadata(grpc_metadata_array *c_metadata_array):
 *   return tuple(
 *       _metadatum(             # <<<<<<<<<<<<<<
 *           c_metadata_array.metadata[index].key,
 *           c_metadata_array.metadata[index].value)
 */

static PyObject *__pyx_pf_4grpc_7_cython_6cygrpc_9_metadata_genexpr(PyObject *__pyx_self) {
  struct __pyx_obj_4grpc_7_cython_6cygrpc___pyx_scope_struct_6_genexpr *__pyx_cur_scope;
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("genexpr", 0);
  __pyx_cur_scope = (struct __pyx_obj_4grpc_7_cython_6cygrpc___pyx_scope_struct_6_genexpr *)__pyx_tp_new_4grpc_7_cython_6cygrpc___pyx_scope_struct_6_genexpr(__pyx_ptype_4grpc_7_cython_6cygrpc___pyx_scope_struct_6_genexpr, __pyx_empty_tuple, NULL);
  if (unlikely(!__pyx_cur_scope)) {
    __pyx_cur_scope = ((struct __pyx_obj_4grpc_7_cython_6cygrpc___pyx_scope_struct_6_genexpr *)Py_None);
    __Pyx_INCREF(Py_None);
    __PYX_ERR(18, 70, __pyx_L1_error)
  } else {
    __Pyx_GOTREF(__pyx_cur_scope);
  }
  __pyx_cur_scope->__pyx_outer_scope = (struct __pyx_obj_4grpc_7_cython_6cygrpc___pyx_scope_struct_5___pyx_f_4grpc_7_cython_6cygrpc__metadata *) __pyx_self;
  __Pyx_INCREF(((PyObject *)__pyx_cur_scope->__pyx_outer_scope));
  __Pyx_GIVEREF(__pyx_cur_scope->__pyx_outer_scope);
  {
    __pyx_CoroutineObject *gen = __Pyx_Generator_New((__pyx_coroutine_body_t) __pyx_gb_4grpc_7_cython_6cygrpc_9_metadata_2generator46, NULL, (PyObject *) __pyx_cur_scope, __pyx_n_s_genexpr, __pyx_n_s_metadata_locals_genexpr, __pyx_n_s_grpc__cython_cygrpc); if (unlikely(!gen)) __PYX_ERR(18, 70, __pyx_L1_error)
    __Pyx_DECREF(__pyx_cur_scope);
    __Pyx_RefNannyFinishContext();
    return (PyObject *) gen;
  }

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_AddTraceback("grpc._cython.cygrpc._metadata.genexpr", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __Pyx_DECREF(((PyObject *)__pyx_cur_scope));
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_gb_4grpc_7_cython_6cygrpc_9_metadata_2generator46(__pyx_CoroutineObject *__pyx_generator, CYTHON_UNUSED PyThreadState *__pyx_tstate, PyObject *__pyx_sent_value) /* generator body */
{
  struct __pyx_obj_4grpc_7_cython_6cygrpc___pyx_scope_struct_6_genexpr *__pyx_cur_scope = ((struct __pyx_obj_4grpc_7_cython_6cygrpc___pyx_scope_struct_6_genexpr *)__pyx_generator->closure);
  PyObject *__pyx_r = NULL;
  size_t __pyx_t_1;
  size_t __pyx_t_2;
  size_t __pyx_t_3;
  PyObject *__pyx_t_4 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("genexpr", 0);
  switch (__pyx_generator->resume_label) {
    case 0: goto __pyx_L3_first_run;
    case 1: goto __pyx_L6_resume_from_yield;
    default: /* CPython raises the right error here */
    __Pyx_RefNannyFinishContext();
    return NULL;
  }
  __pyx_L3_first_run:;
  if (unlikely(!__pyx_sent_value)) __PYX_ERR(18, 70, __pyx_L1_error)

  /* "src/python/grpcio/grpc/_cython/_cygrpc/metadata.pyx.pxi":73
 *           c_metadata_array.metadata[index].key,
 *           c_metadata_array.metadata[index].value)
 *       for index in range(c_metadata_array.count))             # <<<<<<<<<<<<<<
 */
  __pyx_t_1 = __pyx_cur_scope->__pyx_outer_scope->__pyx_v_c_metadata_array->count;
  __pyx_t_2 = __pyx_t_1;
  for (__pyx_t_3 = 0; __pyx_t_3 < __pyx_t_2; __pyx_t_3+=1) {
    __pyx_cur_scope->__pyx_v_index = __pyx_t_3;

    /* "src/python/grpcio/grpc/_cython/_cygrpc/metadata.pyx.pxi":70
 * cdef tuple _metadata(grpc_metadata_array *c_metadata_array):
 *   return tuple(
 *       _metadatum(             # <<<<<<<<<<<<<<
 *           c_metadata_array.metadata[index].key,
 *           c_metadata_array.metadata[index].value)
 */
    __pyx_t_4 = __pyx_f_4grpc_7_cython_6cygrpc__metadatum((__pyx_cur_scope->__pyx_outer_scope->__pyx_v_c_metadata_array->metadata[__pyx_cur_scope->__pyx_v_index]).key, (__pyx_cur_scope->__pyx_outer_scope->__pyx_v_c_metadata_array->metadata[__pyx_cur_scope->__pyx_v_index]).value); if (unlikely(!__pyx_t_4)) __PYX_ERR(18, 70, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_4);
    __pyx_r = __pyx_t_4;
    __pyx_t_4 = 0;
    __pyx_cur_scope->__pyx_t_0 = __pyx_t_1;
    __pyx_cur_scope->__pyx_t_1 = __pyx_t_2;
    __pyx_cur_scope->__pyx_t_2 = __pyx_t_3;
    __Pyx_XGIVEREF(__pyx_r);
    __Pyx_RefNannyFinishContext();
    __Pyx_Coroutine_ResetAndClearException(__pyx_generator);
    /* return from generator, yielding value */
    __pyx_generator->resume_label = 1;
    return __pyx_r;
    __pyx_L6_resume_from_yield:;
    __pyx_t_1 = __pyx_cur_scope->__pyx_t_0;
    __pyx_t_2 = __pyx_cur_scope->__pyx_t_1;
    __pyx_t_3 = __pyx_cur_scope->__pyx_t_2;
    if (unlikely(!__pyx_sent_value)) __PYX_ERR(18, 70, __pyx_L1_error)
  }
  CYTHON_MAYBE_UNUSED_VAR(__pyx_cur_scope);

  /* function exit code */
  PyErr_SetNone(PyExc_StopIteration);
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_4);
  __Pyx_AddTraceback("genexpr", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_L0:;
  __Pyx_XDECREF(__pyx_r); __pyx_r = 0;
  #if !CYTHON_USE_EXC_INFO_STACK
  __Pyx_Coroutine_ResetAndClearException(__pyx_generator);
  #endif
  __pyx_generator->resume_label = -1;
  __Pyx_Coroutine_clear((PyObject*)__pyx_generator);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "src/python/grpcio/grpc/_cython/_cygrpc/metadata.pyx.pxi":68
 * 
 * 
 * cdef tuple _metadata(grpc_metadata_array *c_metadata_array):             # <<<<<<<<<<<<<<
 *   return tuple(
 *       _metadatum(
 */

static PyObject *__pyx_f_4grpc_7_cython_6cygrpc__metadata(grpc_metadata_array *__pyx_v_c_metadata_array) {
  struct __pyx_obj_4grpc_7_cython_6cygrpc___pyx_scope_struct_5___pyx_f_4grpc_7_cython_6cygrpc__metadata *__pyx_cur_scope;
  PyObject *__pyx_gb_4grpc_7_cython_6cygrpc_9_metadata_2generator46 = 0;
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  PyObject *__pyx_t_2 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("_metadata", 0);
  __pyx_cur_scope = (struct __pyx_obj_4grpc_7_cython_6cygrpc___pyx_scope_struct_5___pyx_f_4grpc_7_cython_6cygrpc__metadata *)__pyx_tp_new_4grpc_7_cython_6cygrpc___pyx_scope_struct_5___pyx_f_4grpc_7_cython_6cygrpc__metadata(__pyx_ptype_4grpc_7_cython_6cygrpc___pyx_scope_struct_5___pyx_f_4grpc_7_cython_6cygrpc__metadata, __pyx_empty_tuple, NULL);
  if (unlikely(!__pyx_cur_scope)) {
    __pyx_cur_scope = ((struct __pyx_obj_4grpc_7_cython_6cygrpc___pyx_scope_struct_5___pyx_f_4grpc_7_cython_6cygrpc__metadata *)Py_None);
    __Pyx_INCREF(Py_None);
    __PYX_ERR(18, 68, __pyx_L1_error)
  } else {
    __Pyx_GOTREF(__pyx_cur_scope);
  }
  __pyx_cur_scope->__pyx_v_c_metadata_array = __pyx_v_c_metadata_array;

  /* "src/python/grpcio/grpc/_cython/_cygrpc/metadata.pyx.pxi":69
 * 
 * cdef tuple _metadata(grpc_metadata_array *c_metadata_array):
 *   return tuple(             # <<<<<<<<<<<<<<
 *       _metadatum(
 *           c_metadata_array.metadata[index].key,
 */
  __Pyx_XDECREF(__pyx_r);

  /* "src/python/grpcio/grpc/_cython/_cygrpc/metadata.pyx.pxi":70
 * cdef tuple _metadata(grpc_metadata_array *c_metadata_array):
 *   return tuple(
 *       _metadatum(             # <<<<<<<<<<<<<<
 *           c_metadata_array.metadata[index].key,
 *           c_metadata_array.metadata[index].value)
 */
  __pyx_t_1 = __pyx_pf_4grpc_7_cython_6cygrpc_9_metadata_genexpr(((PyObject*)__pyx_cur_scope)); if (unlikely(!__pyx_t_1)) __PYX_ERR(18, 70, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);

  /* "src/python/grpcio/grpc/_cython/_cygrpc/metadata.pyx.pxi":69
 * 
 * cdef tuple _metadata(grpc_metadata_array *c_metadata_array):
 *   return tuple(             # <<<<<<<<<<<<<<
 *       _metadatum(
 *           c_metadata_array.metadata[index].key,
 */
  __pyx_t_2 = __Pyx_PySequence_Tuple(__pyx_t_1); if (unlikely(!__pyx_t_2)) __PYX_ERR(18, 69, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  __pyx_r = ((PyObject*)__pyx_t_2);
  __pyx_t_2 = 0;
  goto __pyx_L0;

  /* "src/python/grpcio/grpc/_cython/_cygrpc/metadata.pyx.pxi":68
 * 
 * 
 * cdef tuple _metadata(grpc_metadata_array *c_metadata_array):             # <<<<<<<<<<<<<<
 *   return tuple(
 *       _metadatum(
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_AddTraceback("grpc._cython.cygrpc._metadata", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = 0;
  __pyx_L0:;
  __Pyx_XDECREF(__pyx_gb_4grpc_7_cython_6cygrpc_9_metadata_2generator46);
  __Pyx_DECREF(((PyObject *)__pyx_cur_scope));
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "src/python/grpcio/grpc/_cython/_cygrpc/operation.pyx.pxi":18
 * cdef class Operation:
 * 
 *   cdef void c(self) except *:             # <<<<<<<<<<<<<<
 *     raise NotImplementedError()
 * 
 */

static void __pyx_f_4grpc_7_cython_6cygrpc_9Operation_c(CYTHON_UNUSED struct __pyx_obj_4grpc_7_cython_6cygrpc_Operation *__pyx_v_self) {
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("c", 0);

  /* "src/python/grpcio/grpc/_cython/_cygrpc/operation.pyx.pxi":19
 * 
 *   cdef void c(self) except *:
 *     raise NotImplementedError()             # <<<<<<<<<<<<<<
 * 
 *   cdef void un_c(self) except *:
 */
  __pyx_t_1 = __Pyx_PyObject_CallNoArg(__pyx_builtin_NotImplementedError); if (unlikely(!__pyx_t_1)) __PYX_ERR(19, 19, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_Raise(__pyx_t_1, 0, 0, 0);
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  __PYX_ERR(19, 19, __pyx_L1_error)

  /* "src/python/grpcio/grpc/_cython/_cygrpc/operation.pyx.pxi":18
 * cdef class Operation:
 * 
 *   cdef void c(self) except *:             # <<<<<<<<<<<<<<
 *     raise NotImplementedError()
 * 
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_AddTraceback("grpc._cython.cygrpc.Operation.c", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
}

/* "src/python/grpcio/grpc/_cython/_cygrpc/operation.pyx.pxi":21
 *     raise NotImplementedError()
 * 
 *   cdef void un_c(self) except *:             # <<<<<<<<<<<<<<
 *     raise NotImplementedError()
 * 
 */

static void __pyx_f_4grpc_7_cython_6cygrpc_9Operation_un_c(CYTHON_UNUSED struct __pyx_obj_4grpc_7_cython_6cygrpc_Operation *__pyx_v_self) {
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("un_c", 0);

  /* "src/python/grpcio/grpc/_cython/_cygrpc/operation.pyx.pxi":22
 * 
 *   cdef void un_c(self) except *:
 *     raise NotImplementedError()             # <<<<<<<<<<<<<<
 * 
 * 
 */
  __pyx_t_1 = __Pyx_PyObject_CallNoArg(__pyx_builtin_NotImplementedError); if (unlikely(!__pyx_t_1)) __PYX_ERR(19, 22, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_Raise(__pyx_t_1, 0, 0, 0);
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  __PYX_ERR(19, 22, __pyx_L1_error)

  /* "src/python/grpcio/grpc/_cython/_cygrpc/operation.pyx.pxi":21
 *     raise NotImplementedError()
 * 
 *   cdef void un_c(self) except *:             # <<<<<<<<<<<<<<
 *     raise NotImplementedError()
 * 
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_AddTraceback("grpc._cython.cygrpc.Operation.un_c", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
}

/* "(tree fragment)":1
 * def __reduce_cython__(self):             # <<<<<<<<<<<<<<
 *     raise TypeError("self.c_op cannot be converted to a Python object for pickling")
 * def __setstate_cython__(self, __pyx_state):
 */

/* Python wrapper */
static PyObject *__pyx_pw_4grpc_7_cython_6cygrpc_9Operation_1__reduce_cython__(PyObject *__pyx_v_self, CYTHON_UNUSED PyObject *unused); /*proto*/
static PyObject *__pyx_pw_4grpc_7_cython_6cygrpc_9Operation_1__reduce_cython__(PyObject *__pyx_v_self, CYTHON_UNUSED PyObject *unused) {
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__reduce_cython__ (wrapper)", 0);
  __pyx_r = __pyx_pf_4grpc_7_cython_6cygrpc_9Operation___reduce_cython__(((struct __pyx_obj_4grpc_7_cython_6cygrpc_Operation *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_4grpc_7_cython_6cygrpc_9Operation___reduce_cython__(CYTHON_UNUSED struct __pyx_obj_4grpc_7_cython_6cygrpc_Operation *__pyx_v_self) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("__reduce_cython__", 0);

  /* "(tree fragment)":2
 * def __reduce_cython__(self):
 *     raise TypeError("self.c_op cannot be converted to a Python object for pickling")             # <<<<<<<<<<<<<<
 * def __setstate_cython__(self, __pyx_state):
 *     raise TypeError("self.c_op cannot be converted to a Python object for pickling")
 */
  __pyx_t_1 = __Pyx_PyObject_Call(__pyx_builtin_TypeError, __pyx_tuple__76, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(11, 2, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_Raise(__pyx_t_1, 0, 0, 0);
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  __PYX_ERR(11, 2, __pyx_L1_error)

  /* "(tree fragment)":1
 * def __reduce_cython__(self):             # <<<<<<<<<<<<<<
 *     raise TypeError("self.c_op cannot be converted to a Python object for pickling")
 * def __setstate_cython__(self, __pyx_state):
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_AddTraceback("grpc._cython.cygrpc.Operation.__reduce_cython__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "(tree fragment)":3
 * def __reduce_cython__(self):
 *     raise TypeError("self.c_op cannot be converted to a Python object for pickling")
 * def __setstate_cython__(self, __pyx_state):             # <<<<<<<<<<<<<<
 *     raise TypeError("self.c_op cannot be converted to a Python object for pickling")
 */

/* Python wrapper */
static PyObject *__pyx_pw_4grpc_7_cython_6cygrpc_9Operation_3__setstate_cython__(PyObject *__pyx_v_self, PyObject *__pyx_v___pyx_state); /*proto*/
static PyObject *__pyx_pw_4grpc_7_cython_6cygrpc_9Operation_3__setstate_cython__(PyObject *__pyx_v_self, PyObject *__pyx_v___pyx_state) {
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__setstate_cython__ (wrapper)", 0);
  __pyx_r = __pyx_pf_4grpc_7_cython_6cygrpc_9Operation_2__setstate_cython__(((struct __pyx_obj_4grpc_7_cython_6cygrpc_Operation *)__pyx_v_self), ((PyObject *)__pyx_v___pyx_state));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_4grpc_7_cython_6cygrpc_9Operation_2__setstate_cython__(CYTHON_UNUSED struct __pyx_obj_4grpc_7_cython_6cygrpc_Operation *__pyx_v_self, CYTHON_UNUSED PyObject *__pyx_v___pyx_state) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("__setstate_cython__", 0);

  /* "(tree fragment)":4
 *     raise TypeError("self.c_op cannot be converted to a Python object for pickling")
 * def __setstate_cython__(self, __pyx_state):
 *     raise TypeError("self.c_op cannot be converted to a Python object for pickling")             # <<<<<<<<<<<<<<
 */
  __pyx_t_1 = __Pyx_PyObject_Call(__pyx_builtin_TypeError, __pyx_tuple__77, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(11, 4, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_Raise(__pyx_t_1, 0, 0, 0);
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  __PYX_ERR(11, 4, __pyx_L1_error)

  /* "(tree fragment)":3
 * def __reduce_cython__(self):
 *     raise TypeError("self.c_op cannot be converted to a Python object for pickling")
 * def __setstate_cython__(self, __pyx_state):             # <<<<<<<<<<<<<<
 *     raise TypeError("self.c_op cannot be converted to a Python object for pickling")
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_AddTraceback("grpc._cython.cygrpc.Operation.__setstate_cython__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "src/python/grpcio/grpc/_cython/_cygrpc/operation.pyx.pxi":27
 * cdef class SendInitialMetadataOperation(Operation):
 * 
 *   def __cinit__(self, initial_metadata, flags):             # <<<<<<<<<<<<<<
 *     self._initial_metadata = initial_metadata
 *     self._flags = flags
 */

/* Python wrapper */
static int __pyx_pw_4grpc_7_cython_6cygrpc_28SendInitialMetadataOperation_1__cinit__(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
static int __pyx_pw_4grpc_7_cython_6cygrpc_28SendInitialMetadataOperation_1__cinit__(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
  PyObject *__pyx_v_initial_metadata = 0;
  PyObject *__pyx_v_flags = 0;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  int __pyx_r;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__cinit__ (wrapper)", 0);
  {
    static PyObject **__pyx_pyargnames[] = {&__pyx_n_s_initial_metadata,&__pyx_n_s_flags,0};
    PyObject* values[2] = {0,0};
    if (unlikely(__pyx_kwds)) {
      Py_ssize_t kw_args;
      const Py_ssize_t pos_args = PyTuple_GET_SIZE(__pyx_args);
      switch (pos_args) {
        case  2: values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
        CYTHON_FALLTHROUGH;
        case  1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
        CYTHON_FALLTHROUGH;
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      kw_args = PyDict_Size(__pyx_kwds);
      switch (pos_args) {
        case  0:
        if (likely((values[0] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_initial_metadata)) != 0)) kw_args--;
        else goto __pyx_L5_argtuple_error;
        CYTHON_FALLTHROUGH;
        case  1:
        if (likely((values[1] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_flags)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("__cinit__", 1, 2, 2, 1); __PYX_ERR(19, 27, __pyx_L3_error)
        }
      }
      if (unlikely(kw_args > 0)) {
        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "__cinit__") < 0)) __PYX_ERR(19, 27, __pyx_L3_error)
      }
    } else if (PyTuple_GET_SIZE(__pyx_args) != 2) {
      goto __pyx_L5_argtuple_error;
    } else {
      values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
      values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
    }
    __pyx_v_initial_metadata = values[0];
    __pyx_v_flags = values[1];
  }
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("__cinit__", 1, 2, 2, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(19, 27, __pyx_L3_error)
  __pyx_L3_error:;
  __Pyx_AddTraceback("grpc._cython.cygrpc.SendInitialMetadataOperation.__cinit__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return -1;
  __pyx_L4_argument_unpacking_done:;
  __pyx_r = __pyx_pf_4grpc_7_cython_6cygrpc_28SendInitialMetadataOperation___cinit__(((struct __pyx_obj_4grpc_7_cython_6cygrpc_SendInitialMetadataOperation *)__pyx_v_self), __pyx_v_initial_metadata, __pyx_v_flags);

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static int __pyx_pf_4grpc_7_cython_6cygrpc_28SendInitialMetadataOperation___cinit__(struct __pyx_obj_4grpc_7_cython_6cygrpc_SendInitialMetadataOperation *__pyx_v_self, PyObject *__pyx_v_initial_metadata, PyObject *__pyx_v_flags) {
  int __pyx_r;
  __Pyx_RefNannyDeclarations
  int __pyx_t_1;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("__cinit__", 0);

  /* "src/python/grpcio/grpc/_cython/_cygrpc/operation.pyx.pxi":28
 * 
 *   def __cinit__(self, initial_metadata, flags):
 *     self._initial_metadata = initial_metadata             # <<<<<<<<<<<<<<
 *     self._flags = flags
 * 
 */
  __Pyx_INCREF(__pyx_v_initial_metadata);
  __Pyx_GIVEREF(__pyx_v_initial_metadata);
  __Pyx_GOTREF(__pyx_v_self->_initial_metadata);
  __Pyx_DECREF(__pyx_v_self->_initial_metadata);
  __pyx_v_self->_initial_metadata = __pyx_v_initial_metadata;

  /* "src/python/grpcio/grpc/_cython/_cygrpc/operation.pyx.pxi":29
 *   def __cinit__(self, initial_metadata, flags):
 *     self._initial_metadata = initial_metadata
 *     self._flags = flags             # <<<<<<<<<<<<<<
 * 
 *   def type(self):
 */
  __pyx_t_1 = __Pyx_PyInt_As_int(__pyx_v_flags); if (unlikely((__pyx_t_1 == (int)-1) && PyErr_Occurred())) __PYX_ERR(19, 29, __pyx_L1_error)
  __pyx_v_self->_flags = __pyx_t_1;

  /* "src/python/grpcio/grpc/_cython/_cygrpc/operation.pyx.pxi":27
 * cdef class SendInitialMetadataOperation(Operation):
 * 
 *   def __cinit__(self, initial_metadata, flags):             # <<<<<<<<<<<<<<
 *     self._initial_metadata = initial_metadata
 *     self._flags = flags
 */

  /* function exit code */
  __pyx_r = 0;
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_AddTraceback("grpc._cython.cygrpc.SendInitialMetadataOperation.__cinit__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = -1;
  __pyx_L0:;
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "src/python/grpcio/grpc/_cython/_cygrpc/operation.pyx.pxi":31
 *     self._flags = flags
 * 
 *   def type(self):             # <<<<<<<<<<<<<<
 *     return GRPC_OP_SEND_INITIAL_METADATA
 * 
 */

/* Python wrapper */
static PyObject *__pyx_pw_4grpc_7_cython_6cygrpc_28SendInitialMetadataOperation_3type(PyObject *__pyx_v_self, CYTHON_UNUSED PyObject *unused); /*proto*/
static PyObject *__pyx_pw_4grpc_7_cython_6cygrpc_28SendInitialMetadataOperation_3type(PyObject *__pyx_v_self, CYTHON_UNUSED PyObject *unused) {
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("type (wrapper)", 0);
  __pyx_r = __pyx_pf_4grpc_7_cython_6cygrpc_28SendInitialMetadataOperation_2type(((struct __pyx_obj_4grpc_7_cython_6cygrpc_SendInitialMetadataOperation *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_4grpc_7_cython_6cygrpc_28SendInitialMetadataOperation_2type(CYTHON_UNUSED struct __pyx_obj_4grpc_7_cython_6cygrpc_SendInitialMetadataOperation *__pyx_v_self) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("type", 0);

  /* "src/python/grpcio/grpc/_cython/_cygrpc/operation.pyx.pxi":32
 * 
 *   def type(self):
 *     return GRPC_OP_SEND_INITIAL_METADATA             # <<<<<<<<<<<<<<
 * 
 *   cdef void c(self) except *:
 */
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_1 = __Pyx_PyInt_From_grpc_op_type(GRPC_OP_SEND_INITIAL_METADATA); if (unlikely(!__pyx_t_1)) __PYX_ERR(19, 32, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_r = __pyx_t_1;
  __pyx_t_1 = 0;
  goto __pyx_L0;

  /* "src/python/grpcio/grpc/_cython/_cygrpc/operation.pyx.pxi":31
 *     self._flags = flags
 * 
 *   def type(self):             # <<<<<<<<<<<<<<
 *     return GRPC_OP_SEND_INITIAL_METADATA
 * 
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_AddTraceback("grpc._cython.cygrpc.SendInitialMetadataOperation.type", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "src/python/grpcio/grpc/_cython/_cygrpc/operation.pyx.pxi":34
 *     return GRPC_OP_SEND_INITIAL_METADATA
 * 
 *   cdef void c(self) except *:             # <<<<<<<<<<<<<<
 *     self.c_op.type = GRPC_OP_SEND_INITIAL_METADATA
 *     self.c_op.flags = self._flags
 */

static void __pyx_f_4grpc_7_cython_6cygrpc_28SendInitialMetadataOperation_c(struct __pyx_obj_4grpc_7_cython_6cygrpc_SendInitialMetadataOperation *__pyx_v_self) {
  __Pyx_RefNannyDeclarations
  int __pyx_t_1;
  PyObject *__pyx_t_2 = NULL;
  grpc_metadata *__pyx_t_3;
  size_t __pyx_t_4;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("c", 0);

  /* "src/python/grpcio/grpc/_cython/_cygrpc/operation.pyx.pxi":35
 * 
 *   cdef void c(self) except *:
 *     self.c_op.type = GRPC_OP_SEND_INITIAL_METADATA             # <<<<<<<<<<<<<<
 *     self.c_op.flags = self._flags
 *     _store_c_metadata(
 */
  __pyx_v_self->__pyx_base.c_op.op = GRPC_OP_SEND_INITIAL_METADATA;

  /* "src/python/grpcio/grpc/_cython/_cygrpc/operation.pyx.pxi":36
 *   cdef void c(self) except *:
 *     self.c_op.type = GRPC_OP_SEND_INITIAL_METADATA
 *     self.c_op.flags = self._flags             # <<<<<<<<<<<<<<
 *     _store_c_metadata(
 *         self._initial_metadata, &self._c_initial_metadata,
 */
  __pyx_t_1 = __pyx_v_self->_flags;
  __pyx_v_self->__pyx_base.c_op.flags = __pyx_t_1;

  /* "src/python/grpcio/grpc/_cython/_cygrpc/operation.pyx.pxi":38
 *     self.c_op.flags = self._flags
 *     _store_c_metadata(
 *         self._initial_metadata, &self._c_initial_metadata,             # <<<<<<<<<<<<<<
 *         &self._c_initial_metadata_count)
 *     self.c_op.data.send_initial_metadata.metadata = self._c_initial_metadata
 */
  __pyx_t_2 = __pyx_v_self->_initial_metadata;
  __Pyx_INCREF(__pyx_t_2);

  /* "src/python/grpcio/grpc/_cython/_cygrpc/operation.pyx.pxi":37
 *     self.c_op.type = GRPC_OP_SEND_INITIAL_METADATA
 *     self.c_op.flags = self._flags
 *     _store_c_metadata(             # <<<<<<<<<<<<<<
 *         self._initial_metadata, &self._c_initial_metadata,
 *         &self._c_initial_metadata_count)
 */
  __pyx_f_4grpc_7_cython_6cygrpc__store_c_metadata(__pyx_t_2, (&__pyx_v_self->_c_initial_metadata), (&__pyx_v_self->_c_initial_metadata_count)); if (unlikely(PyErr_Occurred())) __PYX_ERR(19, 37, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;

  /* "src/python/grpcio/grpc/_cython/_cygrpc/operation.pyx.pxi":40
 *         self._initial_metadata, &self._c_initial_metadata,
 *         &self._c_initial_metadata_count)
 *     self.c_op.data.send_initial_metadata.metadata = self._c_initial_metadata             # <<<<<<<<<<<<<<
 *     self.c_op.data.send_initial_metadata.count = self._c_initial_metadata_count
 *     self.c_op.data.send_initial_metadata.maybe_compression_level.is_set = 0
 */
  __pyx_t_3 = __pyx_v_self->_c_initial_metadata;
  __pyx_v_self->__pyx_base.c_op.data.send_initial_metadata.metadata = __pyx_t_3;

  /* "src/python/grpcio/grpc/_cython/_cygrpc/operation.pyx.pxi":41
 *         &self._c_initial_metadata_count)
 *     self.c_op.data.send_initial_metadata.metadata = self._c_initial_metadata
 *     self.c_op.data.send_initial_metadata.count = self._c_initial_metadata_count             # <<<<<<<<<<<<<<
 *     self.c_op.data.send_initial_metadata.maybe_compression_level.is_set = 0
 * 
 */
  __pyx_t_4 = __pyx_v_self->_c_initial_metadata_count;
  __pyx_v_self->__pyx_base.c_op.data.send_initial_metadata.count = __pyx_t_4;

  /* "src/python/grpcio/grpc/_cython/_cygrpc/operation.pyx.pxi":42
 *     self.c_op.data.send_initial_metadata.metadata = self._c_initial_metadata
 *     self.c_op.data.send_initial_metadata.count = self._c_initial_metadata_count
 *     self.c_op.data.send_initial_metadata.maybe_compression_level.is_set = 0             # <<<<<<<<<<<<<<
 * 
 *   cdef void un_c(self) except *:
 */
  __pyx_v_self->__pyx_base.c_op.data.send_initial_metadata.maybe_compression_level.is_set = 0;

  /* "src/python/grpcio/grpc/_cython/_cygrpc/operation.pyx.pxi":34
 *     return GRPC_OP_SEND_INITIAL_METADATA
 * 
 *   cdef void c(self) except *:             # <<<<<<<<<<<<<<
 *     self.c_op.type = GRPC_OP_SEND_INITIAL_METADATA
 *     self.c_op.flags = self._flags
 */

  /* function exit code */
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_AddTraceback("grpc._cython.cygrpc.SendInitialMetadataOperation.c", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_L0:;
  __Pyx_RefNannyFinishContext();
}

/* "src/python/grpcio/grpc/_cython/_cygrpc/operation.pyx.pxi":44
 *     self.c_op.data.send_initial_metadata.maybe_compression_level.is_set = 0
 * 
 *   cdef void un_c(self) except *:             # <<<<<<<<<<<<<<
 *     _release_c_metadata(
 *         self._c_initial_metadata, self._c_initial_metadata_count)
 */

static void __pyx_f_4grpc_7_cython_6cygrpc_28SendInitialMetadataOperation_un_c(struct __pyx_obj_4grpc_7_cython_6cygrpc_SendInitialMetadataOperation *__pyx_v_self) {
  __Pyx_RefNannyDeclarations
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("un_c", 0);

  /* "src/python/grpcio/grpc/_cython/_cygrpc/operation.pyx.pxi":45
 * 
 *   cdef void un_c(self) except *:
 *     _release_c_metadata(             # <<<<<<<<<<<<<<
 *         self._c_initial_metadata, self._c_initial_metadata_count)
 * 
 */
  __pyx_f_4grpc_7_cython_6cygrpc__release_c_metadata(__pyx_v_self->_c_initial_metadata, __pyx_v_self->_c_initial_metadata_count); if (unlikely(PyErr_Occurred())) __PYX_ERR(19, 45, __pyx_L1_error)

  /* "src/python/grpcio/grpc/_cython/_cygrpc/operation.pyx.pxi":44
 *     self.c_op.data.send_initial_metadata.maybe_compression_level.is_set = 0
 * 
 *   cdef void un_c(self) except *:             # <<<<<<<<<<<<<<
 *     _release_c_metadata(
 *         self._c_initial_metadata, self._c_initial_metadata_count)
 */

  /* function exit code */
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_AddTraceback("grpc._cython.cygrpc.SendInitialMetadataOperation.un_c", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_L0:;
  __Pyx_RefNannyFinishContext();
}

/* "src/python/grpcio/grpc/_cython/_cygrpc/operation.pxd.pxi":27
 * cdef class SendInitialMetadataOperation(Operation):
 * 
 *   cdef readonly object _initial_metadata;             # <<<<<<<<<<<<<<
 *   cdef readonly int _flags
 *   cdef grpc_metadata *_c_initial_metadata
 */

/* Python wrapper */
static PyObject *__pyx_pw_4grpc_7_cython_6cygrpc_28SendInitialMetadataOperation_17_initial_metadata_1__get__(PyObject *__pyx_v_self); /*proto*/
static PyObject *__pyx_pw_4grpc_7_cython_6cygrpc_28SendInitialMetadataOperation_17_initial_metadata_1__get__(PyObject *__pyx_v_self) {
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__get__ (wrapper)", 0);
  __pyx_r = __pyx_pf_4grpc_7_cython_6cygrpc_28SendInitialMetadataOperation_17_initial_metadata___get__(((struct __pyx_obj_4grpc_7_cython_6cygrpc_SendInitialMetadataOperation *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_4grpc_7_cython_6cygrpc_28SendInitialMetadataOperation_17_initial_metadata___get__(struct __pyx_obj_4grpc_7_cython_6cygrpc_SendInitialMetadataOperation *__pyx_v_self) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__get__", 0);
  __Pyx_XDECREF(__pyx_r);
  __Pyx_INCREF(__pyx_v_self->_initial_metadata);
  __pyx_r = __pyx_v_self->_initial_metadata;
  goto __pyx_L0;

  /* function exit code */
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "src/python/grpcio/grpc/_cython/_cygrpc/operation.pxd.pxi":28
 * 
 *   cdef readonly object _initial_metadata;
 *   cdef readonly int _flags             # <<<<<<<<<<<<<<
 *   cdef grpc_metadata *_c_initial_metadata
 *   cdef size_t _c_initial_metadata_count
 */

/* Python wrapper */
static PyObject *__pyx_pw_4grpc_7_cython_6cygrpc_28SendInitialMetadataOperation_6_flags_1__get__(PyObject *__pyx_v_self); /*proto*/
static PyObject *__pyx_pw_4grpc_7_cython_6cygrpc_28SendInitialMetadataOperation_6_flags_1__get__(PyObject *__pyx_v_self) {
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__get__ (wrapper)", 0);
  __pyx_r = __pyx_pf_4grpc_7_cython_6cygrpc_28SendInitialMetadataOperation_6_flags___get__(((struct __pyx_obj_4grpc_7_cython_6cygrpc_SendInitialMetadataOperation *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_4grpc_7_cython_6cygrpc_28SendInitialMetadataOperation_6_flags___get__(struct __pyx_obj_4grpc_7_cython_6cygrpc_SendInitialMetadataOperation *__pyx_v_self) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("__get__", 0);
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_1 = __Pyx_PyInt_From_int(__pyx_v_self->_flags); if (unlikely(!__pyx_t_1)) __PYX_ERR(20, 28, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_r = __pyx_t_1;
  __pyx_t_1 = 0;
  goto __pyx_L0;

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_AddTraceback("grpc._cython.cygrpc.SendInitialMetadataOperation._flags.__get__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "(tree fragment)":1
 * def __reduce_cython__(self):             # <<<<<<<<<<<<<<
 *     raise TypeError("no default __reduce__ due to non-trivial __cinit__")
 * def __setstate_cython__(self, __pyx_state):
 */

/* Python wrapper */
static PyObject *__pyx_pw_4grpc_7_cython_6cygrpc_28SendInitialMetadataOperation_5__reduce_cython__(PyObject *__pyx_v_self, CYTHON_UNUSED PyObject *unused); /*proto*/
static PyObject *__pyx_pw_4grpc_7_cython_6cygrpc_28SendInitialMetadataOperation_5__reduce_cython__(PyObject *__pyx_v_self, CYTHON_UNUSED PyObject *unused) {
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__reduce_cython__ (wrapper)", 0);
  __pyx_r = __pyx_pf_4grpc_7_cython_6cygrpc_28SendInitialMetadataOperation_4__reduce_cython__(((struct __pyx_obj_4grpc_7_cython_6cygrpc_SendInitialMetadataOperation *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_4grpc_7_cython_6cygrpc_28SendInitialMetadataOperation_4__reduce_cython__(CYTHON_UNUSED struct __pyx_obj_4grpc_7_cython_6cygrpc_SendInitialMetadataOperation *__pyx_v_self) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("__reduce_cython__", 0);

  /* "(tree fragment)":2
 * def __reduce_cython__(self):
 *     raise TypeError("no default __reduce__ due to non-trivial __cinit__")             # <<<<<<<<<<<<<<
 * def __setstate_cython__(self, __pyx_state):
 *     raise TypeError("no default __reduce__ due to non-trivial __cinit__")
 */
  __pyx_t_1 = __Pyx_PyObject_Call(__pyx_builtin_TypeError, __pyx_tuple__78, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(11, 2, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_Raise(__pyx_t_1, 0, 0, 0);
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  __PYX_ERR(11, 2, __pyx_L1_error)

  /* "(tree fragment)":1
 * def __reduce_cython__(self):             # <<<<<<<<<<<<<<
 *     raise TypeError("no default __reduce__ due to non-trivial __cinit__")
 * def __setstate_cython__(self, __pyx_state):
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_AddTraceback("grpc._cython.cygrpc.SendInitialMetadataOperation.__reduce_cython__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "(tree fragment)":3
 * def __reduce_cython__(self):
 *     raise TypeError("no default __reduce__ due to non-trivial __cinit__")
 * def __setstate_cython__(self, __pyx_state):             # <<<<<<<<<<<<<<
 *     raise TypeError("no default __reduce__ due to non-trivial __cinit__")
 */

/* Python wrapper */
static PyObject *__pyx_pw_4grpc_7_cython_6cygrpc_28SendInitialMetadataOperation_7__setstate_cython__(PyObject *__pyx_v_self, PyObject *__pyx_v___pyx_state); /*proto*/
static PyObject *__pyx_pw_4grpc_7_cython_6cygrpc_28SendInitialMetadataOperation_7__setstate_cython__(PyObject *__pyx_v_self, PyObject *__pyx_v___pyx_state) {
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__setstate_cython__ (wrapper)", 0);
  __pyx_r = __pyx_pf_4grpc_7_cython_6cygrpc_28SendInitialMetadataOperation_6__setstate_cython__(((struct __pyx_obj_4grpc_7_cython_6cygrpc_SendInitialMetadataOperation *)__pyx_v_self), ((PyObject *)__pyx_v___pyx_state));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_4grpc_7_cython_6cygrpc_28SendInitialMetadataOperation_6__setstate_cython__(CYTHON_UNUSED struct __pyx_obj_4grpc_7_cython_6cygrpc_SendInitialMetadataOperation *__pyx_v_self, CYTHON_UNUSED PyObject *__pyx_v___pyx_state) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("__setstate_cython__", 0);

  /* "(tree fragment)":4
 *     raise TypeError("no default __reduce__ due to non-trivial __cinit__")
 * def __setstate_cython__(self, __pyx_state):
 *     raise TypeError("no default __reduce__ due to non-trivial __cinit__")             # <<<<<<<<<<<<<<
 */
  __pyx_t_1 = __Pyx_PyObject_Call(__pyx_builtin_TypeError, __pyx_tuple__79, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(11, 4, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_Raise(__pyx_t_1, 0, 0, 0);
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  __PYX_ERR(11, 4, __pyx_L1_error)

  /* "(tree fragment)":3
 * def __reduce_cython__(self):
 *     raise TypeError("no default __reduce__ due to non-trivial __cinit__")
 * def __setstate_cython__(self, __pyx_state):             # <<<<<<<<<<<<<<
 *     raise TypeError("no default __reduce__ due to non-trivial __cinit__")
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_AddTraceback("grpc._cython.cygrpc.SendInitialMetadataOperation.__setstate_cython__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "src/python/grpcio/grpc/_cython/_cygrpc/operation.pyx.pxi":51
 * cdef class SendMessageOperation(Operation):
 * 
 *   def __cinit__(self, bytes message, int flags):             # <<<<<<<<<<<<<<
 *     if message is None:
 *       self._message = b''
 */

/* Python wrapper */
static int __pyx_pw_4grpc_7_cython_6cygrpc_20SendMessageOperation_1__cinit__(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
static int __pyx_pw_4grpc_7_cython_6cygrpc_20SendMessageOperation_1__cinit__(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
  PyObject *__pyx_v_message = 0;
  int __pyx_v_flags;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  int __pyx_r;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__cinit__ (wrapper)", 0);
  {
    static PyObject **__pyx_pyargnames[] = {&__pyx_n_s_message,&__pyx_n_s_flags,0};
    PyObject* values[2] = {0,0};
    if (unlikely(__pyx_kwds)) {
      Py_ssize_t kw_args;
      const Py_ssize_t pos_args = PyTuple_GET_SIZE(__pyx_args);
      switch (pos_args) {
        case  2: values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
        CYTHON_FALLTHROUGH;
        case  1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
        CYTHON_FALLTHROUGH;
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      kw_args = PyDict_Size(__pyx_kwds);
      switch (pos_args) {
        case  0:
        if (likely((values[0] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_message)) != 0)) kw_args--;
        else goto __pyx_L5_argtuple_error;
        CYTHON_FALLTHROUGH;
        case  1:
        if (likely((values[1] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_flags)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("__cinit__", 1, 2, 2, 1); __PYX_ERR(19, 51, __pyx_L3_error)
        }
      }
      if (unlikely(kw_args > 0)) {
        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "__cinit__") < 0)) __PYX_ERR(19, 51, __pyx_L3_error)
      }
    } else if (PyTuple_GET_SIZE(__pyx_args) != 2) {
      goto __pyx_L5_argtuple_error;
    } else {
      values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
      values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
    }
    __pyx_v_message = ((PyObject*)values[0]);
    __pyx_v_flags = __Pyx_PyInt_As_int(values[1]); if (unlikely((__pyx_v_flags == (int)-1) && PyErr_Occurred())) __PYX_ERR(19, 51, __pyx_L3_error)
  }
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("__cinit__", 1, 2, 2, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(19, 51, __pyx_L3_error)
  __pyx_L3_error:;
  __Pyx_AddTraceback("grpc._cython.cygrpc.SendMessageOperation.__cinit__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return -1;
  __pyx_L4_argument_unpacking_done:;
  if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_message), (&PyBytes_Type), 1, "message", 1))) __PYX_ERR(19, 51, __pyx_L1_error)
  __pyx_r = __pyx_pf_4grpc_7_cython_6cygrpc_20SendMessageOperation___cinit__(((struct __pyx_obj_4grpc_7_cython_6cygrpc_SendMessageOperation *)__pyx_v_self), __pyx_v_message, __pyx_v_flags);

  /* function exit code */
  goto __pyx_L0;
  __pyx_L1_error:;
  __pyx_r = -1;
  __pyx_L0:;
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static int __pyx_pf_4grpc_7_cython_6cygrpc_20SendMessageOperation___cinit__(struct __pyx_obj_4grpc_7_cython_6cygrpc_SendMessageOperation *__pyx_v_self, PyObject *__pyx_v_message, int __pyx_v_flags) {
  int __pyx_r;
  __Pyx_RefNannyDeclarations
  int __pyx_t_1;
  int __pyx_t_2;
  __Pyx_RefNannySetupContext("__cinit__", 0);

  /* "src/python/grpcio/grpc/_cython/_cygrpc/operation.pyx.pxi":52
 * 
 *   def __cinit__(self, bytes message, int flags):
 *     if message is None:             # <<<<<<<<<<<<<<
 *       self._message = b''
 *     else:
 */
  __pyx_t_1 = (__pyx_v_message == ((PyObject*)Py_None));
  __pyx_t_2 = (__pyx_t_1 != 0);
  if (__pyx_t_2) {

    /* "src/python/grpcio/grpc/_cython/_cygrpc/operation.pyx.pxi":53
 *   def __cinit__(self, bytes message, int flags):
 *     if message is None:
 *       self._message = b''             # <<<<<<<<<<<<<<
 *     else:
 *       self._message = message
 */
    __Pyx_INCREF(__pyx_kp_b_);
    __Pyx_GIVEREF(__pyx_kp_b_);
    __Pyx_GOTREF(__pyx_v_self->_message);
    __Pyx_DECREF(__pyx_v_self->_message);
    __pyx_v_self->_message = __pyx_kp_b_;

    /* "src/python/grpcio/grpc/_cython/_cygrpc/operation.pyx.pxi":52
 * 
 *   def __cinit__(self, bytes message, int flags):
 *     if message is None:             # <<<<<<<<<<<<<<
 *       self._message = b''
 *     else:
 */
    goto __pyx_L3;
  }

  /* "src/python/grpcio/grpc/_cython/_cygrpc/operation.pyx.pxi":55
 *       self._message = b''
 *     else:
 *       self._message = message             # <<<<<<<<<<<<<<
 *     self._flags = flags
 * 
 */
  /*else*/ {
    __Pyx_INCREF(__pyx_v_message);
    __Pyx_GIVEREF(__pyx_v_message);
    __Pyx_GOTREF(__pyx_v_self->_message);
    __Pyx_DECREF(__pyx_v_self->_message);
    __pyx_v_self->_message = __pyx_v_message;
  }
  __pyx_L3:;

  /* "src/python/grpcio/grpc/_cython/_cygrpc/operation.pyx.pxi":56
 *     else:
 *       self._message = message
 *     self._flags = flags             # <<<<<<<<<<<<<<
 * 
 *   def type(self):
 */
  __pyx_v_self->_flags = __pyx_v_flags;

  /* "src/python/grpcio/grpc/_cython/_cygrpc/operation.pyx.pxi":51
 * cdef class SendMessageOperation(Operation):
 * 
 *   def __cinit__(self, bytes message, int flags):             # <<<<<<<<<<<<<<
 *     if message is None:
 *       self._message = b''
 */

  /* function exit code */
  __pyx_r = 0;
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "src/python/grpcio/grpc/_cython/_cygrpc/operation.pyx.pxi":58
 *     self._flags = flags
 * 
 *   def type(self):             # <<<<<<<<<<<<<<
 *     return GRPC_OP_SEND_MESSAGE
 * 
 */

/* Python wrapper */
static PyObject *__pyx_pw_4grpc_7_cython_6cygrpc_20SendMessageOperation_3type(PyObject *__pyx_v_self, CYTHON_UNUSED PyObject *unused); /*proto*/
static PyObject *__pyx_pw_4grpc_7_cython_6cygrpc_20SendMessageOperation_3type(PyObject *__pyx_v_self, CYTHON_UNUSED PyObject *unused) {
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("type (wrapper)", 0);
  __pyx_r = __pyx_pf_4grpc_7_cython_6cygrpc_20SendMessageOperation_2type(((struct __pyx_obj_4grpc_7_cython_6cygrpc_SendMessageOperation *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_4grpc_7_cython_6cygrpc_20SendMessageOperation_2type(CYTHON_UNUSED struct __pyx_obj_4grpc_7_cython_6cygrpc_SendMessageOperation *__pyx_v_self) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("type", 0);

  /* "src/python/grpcio/grpc/_cython/_cygrpc/operation.pyx.pxi":59
 * 
 *   def type(self):
 *     return GRPC_OP_SEND_MESSAGE             # <<<<<<<<<<<<<<
 * 
 *   cdef void c(self) except *:
 */
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_1 = __Pyx_PyInt_From_grpc_op_type(GRPC_OP_SEND_MESSAGE); if (unlikely(!__pyx_t_1)) __PYX_ERR(19, 59, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_r = __pyx_t_1;
  __pyx_t_1 = 0;
  goto __pyx_L0;

  /* "src/python/grpcio/grpc/_cython/_cygrpc/operation.pyx.pxi":58
 *     self._flags = flags
 * 
 *   def type(self):             # <<<<<<<<<<<<<<
 *     return GRPC_OP_SEND_MESSAGE
 * 
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_AddTraceback("grpc._cython.cygrpc.SendMessageOperation.type", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "src/python/grpcio/grpc/_cython/_cygrpc/operation.pyx.pxi":61
 *     return GRPC_OP_SEND_MESSAGE
 * 
 *   cdef void c(self) except *:             # <<<<<<<<<<<<<<
 *     self.c_op.type = GRPC_OP_SEND_MESSAGE
 *     self.c_op.flags = self._flags
 */

static void __pyx_f_4grpc_7_cython_6cygrpc_20SendMessageOperation_c(struct __pyx_obj_4grpc_7_cython_6cygrpc_SendMessageOperation *__pyx_v_self) {
  grpc_slice __pyx_v_message_slice;
  __Pyx_RefNannyDeclarations
  int __pyx_t_1;
  char const *__pyx_t_2;
  PyObject *__pyx_t_3 = NULL;
  Py_ssize_t __pyx_t_4;
  grpc_byte_buffer *__pyx_t_5;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("c", 0);

  /* "src/python/grpcio/grpc/_cython/_cygrpc/operation.pyx.pxi":62
 * 
 *   cdef void c(self) except *:
 *     self.c_op.type = GRPC_OP_SEND_MESSAGE             # <<<<<<<<<<<<<<
 *     self.c_op.flags = self._flags
 *     cdef grpc_slice message_slice = grpc_slice_from_copied_buffer(
 */
  __pyx_v_self->__pyx_base.c_op.op = GRPC_OP_SEND_MESSAGE;

  /* "src/python/grpcio/grpc/_cython/_cygrpc/operation.pyx.pxi":63
 *   cdef void c(self) except *:
 *     self.c_op.type = GRPC_OP_SEND_MESSAGE
 *     self.c_op.flags = self._flags             # <<<<<<<<<<<<<<
 *     cdef grpc_slice message_slice = grpc_slice_from_copied_buffer(
 *         self._message, len(self._message))
 */
  __pyx_t_1 = __pyx_v_self->_flags;
  __pyx_v_self->__pyx_base.c_op.flags = __pyx_t_1;

  /* "src/python/grpcio/grpc/_cython/_cygrpc/operation.pyx.pxi":65
 *     self.c_op.flags = self._flags
 *     cdef grpc_slice message_slice = grpc_slice_from_copied_buffer(
 *         self._message, len(self._message))             # <<<<<<<<<<<<<<
 *     self._c_message_byte_buffer = grpc_raw_byte_buffer_create(
 *         &message_slice, 1)
 */
  if (unlikely(__pyx_v_self->_message == Py_None)) {
    PyErr_SetString(PyExc_TypeError, "expected bytes, NoneType found");
    __PYX_ERR(19, 65, __pyx_L1_error)
  }
  __pyx_t_2 = __Pyx_PyBytes_AsString(__pyx_v_self->_message); if (unlikely((!__pyx_t_2) && PyErr_Occurred())) __PYX_ERR(19, 65, __pyx_L1_error)
  __pyx_t_3 = __pyx_v_self->_message;
  __Pyx_INCREF(__pyx_t_3);
  if (unlikely(__pyx_t_3 == Py_None)) {
    PyErr_SetString(PyExc_TypeError, "object of type 'NoneType' has no len()");
    __PYX_ERR(19, 65, __pyx_L1_error)
  }
  __pyx_t_4 = PyBytes_GET_SIZE(__pyx_t_3); if (unlikely(__pyx_t_4 == ((Py_ssize_t)-1))) __PYX_ERR(19, 65, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;

  /* "src/python/grpcio/grpc/_cython/_cygrpc/operation.pyx.pxi":64
 *     self.c_op.type = GRPC_OP_SEND_MESSAGE
 *     self.c_op.flags = self._flags
 *     cdef grpc_slice message_slice = grpc_slice_from_copied_buffer(             # <<<<<<<<<<<<<<
 *         self._message, len(self._message))
 *     self._c_message_byte_buffer = grpc_raw_byte_buffer_create(
 */
  __pyx_v_message_slice = grpc_slice_from_copied_buffer(__pyx_t_2, __pyx_t_4);

  /* "src/python/grpcio/grpc/_cython/_cygrpc/operation.pyx.pxi":66
 *     cdef grpc_slice message_slice = grpc_slice_from_copied_buffer(
 *         self._message, len(self._message))
 *     self._c_message_byte_buffer = grpc_raw_byte_buffer_create(             # <<<<<<<<<<<<<<
 *         &message_slice, 1)
 *     grpc_slice_unref(message_slice)
 */
  __pyx_v_self->_c_message_byte_buffer = grpc_raw_byte_buffer_create((&__pyx_v_message_slice), 1);

  /* "src/python/grpcio/grpc/_cython/_cygrpc/operation.pyx.pxi":68
 *     self._c_message_byte_buffer = grpc_raw_byte_buffer_create(
 *         &message_slice, 1)
 *     grpc_slice_unref(message_slice)             # <<<<<<<<<<<<<<
 *     self.c_op.data.send_message.send_message = self._c_message_byte_buffer
 * 
 */
  grpc_slice_unref(__pyx_v_message_slice);

  /* "src/python/grpcio/grpc/_cython/_cygrpc/operation.pyx.pxi":69
 *         &message_slice, 1)
 *     grpc_slice_unref(message_slice)
 *     self.c_op.data.send_message.send_message = self._c_message_byte_buffer             # <<<<<<<<<<<<<<
 * 
 *   cdef void un_c(self) except *:
 */
  __pyx_t_5 = __pyx_v_self->_c_message_byte_buffer;
  __pyx_v_self->__pyx_base.c_op.data.send_message.send_message = __pyx_t_5;

  /* "src/python/grpcio/grpc/_cython/_cygrpc/operation.pyx.pxi":61
 *     return GRPC_OP_SEND_MESSAGE
 * 
 *   cdef void c(self) except *:             # <<<<<<<<<<<<<<
 *     self.c_op.type = GRPC_OP_SEND_MESSAGE
 *     self.c_op.flags = self._flags
 */

  /* function exit code */
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_3);
  __Pyx_AddTraceback("grpc._cython.cygrpc.SendMessageOperation.c", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_L0:;
  __Pyx_RefNannyFinishContext();
}

/* "src/python/grpcio/grpc/_cython/_cygrpc/operation.pyx.pxi":71
 *     self.c_op.data.send_message.send_message = self._c_message_byte_buffer
 * 
 *   cdef void un_c(self) except *:             # <<<<<<<<<<<<<<
 *     grpc_byte_buffer_destroy(self._c_message_byte_buffer)
 * 
 */

static void __pyx_f_4grpc_7_cython_6cygrpc_20SendMessageOperation_un_c(struct __pyx_obj_4grpc_7_cython_6cygrpc_SendMessageOperation *__pyx_v_self) {
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("un_c", 0);

  /* "src/python/grpcio/grpc/_cython/_cygrpc/operation.pyx.pxi":72
 * 
 *   cdef void un_c(self) except *:
 *     grpc_byte_buffer_destroy(self._c_message_byte_buffer)             # <<<<<<<<<<<<<<
 * 
 * 
 */
  grpc_byte_buffer_destroy(__pyx_v_self->_c_message_byte_buffer);

  /* "src/python/grpcio/grpc/_cython/_cygrpc/operation.pyx.pxi":71
 *     self.c_op.data.send_message.send_message = self._c_message_byte_buffer
 * 
 *   cdef void un_c(self) except *:             # <<<<<<<<<<<<<<
 *     grpc_byte_buffer_destroy(self._c_message_byte_buffer)
 * 
 */

  /* function exit code */
  __Pyx_RefNannyFinishContext();
}

/* "src/python/grpcio/grpc/_cython/_cygrpc/operation.pxd.pxi":38
 * cdef class SendMessageOperation(Operation):
 * 
 *   cdef readonly bytes _message             # <<<<<<<<<<<<<<
 *   cdef readonly int _flags
 *   cdef grpc_byte_buffer *_c_message_byte_buffer
 */

/* Python wrapper */
static PyObject *__pyx_pw_4grpc_7_cython_6cygrpc_20SendMessageOperation_8_message_1__get__(PyObject *__pyx_v_self); /*proto*/
static PyObject *__pyx_pw_4grpc_7_cython_6cygrpc_20SendMessageOperation_8_message_1__get__(PyObject *__pyx_v_self) {
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__get__ (wrapper)", 0);
  __pyx_r = __pyx_pf_4grpc_7_cython_6cygrpc_20SendMessageOperation_8_message___get__(((struct __pyx_obj_4grpc_7_cython_6cygrpc_SendMessageOperation *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_4grpc_7_cython_6cygrpc_20SendMessageOperation_8_message___get__(struct __pyx_obj_4grpc_7_cython_6cygrpc_SendMessageOperation *__pyx_v_self) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__get__", 0);
  __Pyx_XDECREF(__pyx_r);
  __Pyx_INCREF(__pyx_v_self->_message);
  __pyx_r = __pyx_v_self->_message;
  goto __pyx_L0;

  /* function exit code */
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "src/python/grpcio/grpc/_cython/_cygrpc/operation.pxd.pxi":39
 * 
 *   cdef readonly bytes _message
 *   cdef readonly int _flags             # <<<<<<<<<<<<<<
 *   cdef grpc_byte_buffer *_c_message_byte_buffer
 * 
 */

/* Python wrapper */
static PyObject *__pyx_pw_4grpc_7_cython_6cygrpc_20SendMessageOperation_6_flags_1__get__(PyObject *__pyx_v_self); /*proto*/
static PyObject *__pyx_pw_4grpc_7_cython_6cygrpc_20SendMessageOperation_6_flags_1__get__(PyObject *__pyx_v_self) {
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__get__ (wrapper)", 0);
  __pyx_r = __pyx_pf_4grpc_7_cython_6cygrpc_20SendMessageOperation_6_flags___get__(((struct __pyx_obj_4grpc_7_cython_6cygrpc_SendMessageOperation *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_4grpc_7_cython_6cygrpc_20SendMessageOperation_6_flags___get__(struct __pyx_obj_4grpc_7_cython_6cygrpc_SendMessageOperation *__pyx_v_self) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("__get__", 0);
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_1 = __Pyx_PyInt_From_int(__pyx_v_self->_flags); if (unlikely(!__pyx_t_1)) __PYX_ERR(20, 39, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_r = __pyx_t_1;
  __pyx_t_1 = 0;
  goto __pyx_L0;

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_AddTraceback("grpc._cython.cygrpc.SendMessageOperation._flags.__get__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "(tree fragment)":1
 * def __reduce_cython__(self):             # <<<<<<<<<<<<<<
 *     raise TypeError("no default __reduce__ due to non-trivial __cinit__")
 * def __setstate_cython__(self, __pyx_state):
 */

/* Python wrapper */
static PyObject *__pyx_pw_4grpc_7_cython_6cygrpc_20SendMessageOperation_5__reduce_cython__(PyObject *__pyx_v_self, CYTHON_UNUSED PyObject *unused); /*proto*/
static PyObject *__pyx_pw_4grpc_7_cython_6cygrpc_20SendMessageOperation_5__reduce_cython__(PyObject *__pyx_v_self, CYTHON_UNUSED PyObject *unused) {
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__reduce_cython__ (wrapper)", 0);
  __pyx_r = __pyx_pf_4grpc_7_cython_6cygrpc_20SendMessageOperation_4__reduce_cython__(((struct __pyx_obj_4grpc_7_cython_6cygrpc_SendMessageOperation *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_4grpc_7_cython_6cygrpc_20SendMessageOperation_4__reduce_cython__(CYTHON_UNUSED struct __pyx_obj_4grpc_7_cython_6cygrpc_SendMessageOperation *__pyx_v_self) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("__reduce_cython__", 0);

  /* "(tree fragment)":2
 * def __reduce_cython__(self):
 *     raise TypeError("no default __reduce__ due to non-trivial __cinit__")             # <<<<<<<<<<<<<<
 * def __setstate_cython__(self, __pyx_state):
 *     raise TypeError("no default __reduce__ due to non-trivial __cinit__")
 */
  __pyx_t_1 = __Pyx_PyObject_Call(__pyx_builtin_TypeError, __pyx_tuple__80, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(11, 2, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_Raise(__pyx_t_1, 0, 0, 0);
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  __PYX_ERR(11, 2, __pyx_L1_error)

  /* "(tree fragment)":1
 * def __reduce_cython__(self):             # <<<<<<<<<<<<<<
 *     raise TypeError("no default __reduce__ due to non-trivial __cinit__")
 * def __setstate_cython__(self, __pyx_state):
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_AddTraceback("grpc._cython.cygrpc.SendMessageOperation.__reduce_cython__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "(tree fragment)":3
 * def __reduce_cython__(self):
 *     raise TypeError("no default __reduce__ due to non-trivial __cinit__")
 * def __setstate_cython__(self, __pyx_state):             # <<<<<<<<<<<<<<
 *     raise TypeError("no default __reduce__ due to non-trivial __cinit__")
 */

/* Python wrapper */
static PyObject *__pyx_pw_4grpc_7_cython_6cygrpc_20SendMessageOperation_7__setstate_cython__(PyObject *__pyx_v_self, PyObject *__pyx_v___pyx_state); /*proto*/
static PyObject *__pyx_pw_4grpc_7_cython_6cygrpc_20SendMessageOperation_7__setstate_cython__(PyObject *__pyx_v_self, PyObject *__pyx_v___pyx_state) {
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__setstate_cython__ (wrapper)", 0);
  __pyx_r = __pyx_pf_4grpc_7_cython_6cygrpc_20SendMessageOperation_6__setstate_cython__(((struct __pyx_obj_4grpc_7_cython_6cygrpc_SendMessageOperation *)__pyx_v_self), ((PyObject *)__pyx_v___pyx_state));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_4grpc_7_cython_6cygrpc_20SendMessageOperation_6__setstate_cython__(CYTHON_UNUSED struct __pyx_obj_4grpc_7_cython_6cygrpc_SendMessageOperation *__pyx_v_self, CYTHON_UNUSED PyObject *__pyx_v___pyx_state) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("__setstate_cython__", 0);

  /* "(tree fragment)":4
 *     raise TypeError("no default __reduce__ due to non-trivial __cinit__")
 * def __setstate_cython__(self, __pyx_state):
 *     raise TypeError("no default __reduce__ due to non-trivial __cinit__")             # <<<<<<<<<<<<<<
 */
  __pyx_t_1 = __Pyx_PyObject_Call(__pyx_builtin_TypeError, __pyx_tuple__81, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(11, 4, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_Raise(__pyx_t_1, 0, 0, 0);
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  __PYX_ERR(11, 4, __pyx_L1_error)

  /* "(tree fragment)":3
 * def __reduce_cython__(self):
 *     raise TypeError("no default __reduce__ due to non-trivial __cinit__")
 * def __setstate_cython__(self, __pyx_state):             # <<<<<<<<<<<<<<
 *     raise TypeError("no default __reduce__ due to non-trivial __cinit__")
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_AddTraceback("grpc._cython.cygrpc.SendMessageOperation.__setstate_cython__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "src/python/grpcio/grpc/_cython/_cygrpc/operation.pyx.pxi":77
 * cdef class SendCloseFromClientOperation(Operation):
 * 
 *   def __cinit__(self, int flags):             # <<<<<<<<<<<<<<
 *     self._flags = flags
 * 
 */

/* Python wrapper */
static int __pyx_pw_4grpc_7_cython_6cygrpc_28SendCloseFromClientOperation_1__cinit__(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
static int __pyx_pw_4grpc_7_cython_6cygrpc_28SendCloseFromClientOperation_1__cinit__(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
  int __pyx_v_flags;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  int __pyx_r;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__cinit__ (wrapper)", 0);
  {
    static PyObject **__pyx_pyargnames[] = {&__pyx_n_s_flags,0};
    PyObject* values[1] = {0};
    if (unlikely(__pyx_kwds)) {
      Py_ssize_t kw_args;
      const Py_ssize_t pos_args = PyTuple_GET_SIZE(__pyx_args);
      switch (pos_args) {
        case  1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
        CYTHON_FALLTHROUGH;
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      kw_args = PyDict_Size(__pyx_kwds);
      switch (pos_args) {
        case  0:
        if (likely((values[0] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_flags)) != 0)) kw_args--;
        else goto __pyx_L5_argtuple_error;
      }
      if (unlikely(kw_args > 0)) {
        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "__cinit__") < 0)) __PYX_ERR(19, 77, __pyx_L3_error)
      }
    } else if (PyTuple_GET_SIZE(__pyx_args) != 1) {
      goto __pyx_L5_argtuple_error;
    } else {
      values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
    }
    __pyx_v_flags = __Pyx_PyInt_As_int(values[0]); if (unlikely((__pyx_v_flags == (int)-1) && PyErr_Occurred())) __PYX_ERR(19, 77, __pyx_L3_error)
  }
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("__cinit__", 1, 1, 1, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(19, 77, __pyx_L3_error)
  __pyx_L3_error:;
  __Pyx_AddTraceback("grpc._cython.cygrpc.SendCloseFromClientOperation.__cinit__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return -1;
  __pyx_L4_argument_unpacking_done:;
  __pyx_r = __pyx_pf_4grpc_7_cython_6cygrpc_28SendCloseFromClientOperation___cinit__(((struct __pyx_obj_4grpc_7_cython_6cygrpc_SendCloseFromClientOperation *)__pyx_v_self), __pyx_v_flags);

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static int __pyx_pf_4grpc_7_cython_6cygrpc_28SendCloseFromClientOperation___cinit__(struct __pyx_obj_4grpc_7_cython_6cygrpc_SendCloseFromClientOperation *__pyx_v_self, int __pyx_v_flags) {
  int __pyx_r;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__cinit__", 0);

  /* "src/python/grpcio/grpc/_cython/_cygrpc/operation.pyx.pxi":78
 * 
 *   def __cinit__(self, int flags):
 *     self._flags = flags             # <<<<<<<<<<<<<<
 * 
 *   def type(self):
 */
  __pyx_v_self->_flags = __pyx_v_flags;

  /* "src/python/grpcio/grpc/_cython/_cygrpc/operation.pyx.pxi":77
 * cdef class SendCloseFromClientOperation(Operation):
 * 
 *   def __cinit__(self, int flags):             # <<<<<<<<<<<<<<
 *     self._flags = flags
 * 
 */

  /* function exit code */
  __pyx_r = 0;
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "src/python/grpcio/grpc/_cython/_cygrpc/operation.pyx.pxi":80
 *     self._flags = flags
 * 
 *   def type(self):             # <<<<<<<<<<<<<<
 *     return GRPC_OP_SEND_CLOSE_FROM_CLIENT
 * 
 */

/* Python wrapper */
static PyObject *__pyx_pw_4grpc_7_cython_6cygrpc_28SendCloseFromClientOperation_3type(PyObject *__pyx_v_self, CYTHON_UNUSED PyObject *unused); /*proto*/
static PyObject *__pyx_pw_4grpc_7_cython_6cygrpc_28SendCloseFromClientOperation_3type(PyObject *__pyx_v_self, CYTHON_UNUSED PyObject *unused) {
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("type (wrapper)", 0);
  __pyx_r = __pyx_pf_4grpc_7_cython_6cygrpc_28SendCloseFromClientOperation_2type(((struct __pyx_obj_4grpc_7_cython_6cygrpc_SendCloseFromClientOperation *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_4grpc_7_cython_6cygrpc_28SendCloseFromClientOperation_2type(CYTHON_UNUSED struct __pyx_obj_4grpc_7_cython_6cygrpc_SendCloseFromClientOperation *__pyx_v_self) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("type", 0);

  /* "src/python/grpcio/grpc/_cython/_cygrpc/operation.pyx.pxi":81
 * 
 *   def type(self):
 *     return GRPC_OP_SEND_CLOSE_FROM_CLIENT             # <<<<<<<<<<<<<<
 * 
 *   cdef void c(self) except *:
 */
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_1 = __Pyx_PyInt_From_grpc_op_type(GRPC_OP_SEND_CLOSE_FROM_CLIENT); if (unlikely(!__pyx_t_1)) __PYX_ERR(19, 81, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_r = __pyx_t_1;
  __pyx_t_1 = 0;
  goto __pyx_L0;

  /* "src/python/grpcio/grpc/_cython/_cygrpc/operation.pyx.pxi":80
 *     self._flags = flags
 * 
 *   def type(self):             # <<<<<<<<<<<<<<
 *     return GRPC_OP_SEND_CLOSE_FROM_CLIENT
 * 
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_AddTraceback("grpc._cython.cygrpc.SendCloseFromClientOperation.type", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "src/python/grpcio/grpc/_cython/_cygrpc/operation.pyx.pxi":83
 *     return GRPC_OP_SEND_CLOSE_FROM_CLIENT
 * 
 *   cdef void c(self) except *:             # <<<<<<<<<<<<<<
 *     self.c_op.type = GRPC_OP_SEND_CLOSE_FROM_CLIENT
 *     self.c_op.flags = self._flags
 */

static void __pyx_f_4grpc_7_cython_6cygrpc_28SendCloseFromClientOperation_c(struct __pyx_obj_4grpc_7_cython_6cygrpc_SendCloseFromClientOperation *__pyx_v_self) {
  __Pyx_RefNannyDeclarations
  int __pyx_t_1;
  __Pyx_RefNannySetupContext("c", 0);

  /* "src/python/grpcio/grpc/_cython/_cygrpc/operation.pyx.pxi":84
 * 
 *   cdef void c(self) except *:
 *     self.c_op.type = GRPC_OP_SEND_CLOSE_FROM_CLIENT             # <<<<<<<<<<<<<<
 *     self.c_op.flags = self._flags
 * 
 */
  __pyx_v_self->__pyx_base.c_op.op = GRPC_OP_SEND_CLOSE_FROM_CLIENT;

  /* "src/python/grpcio/grpc/_cython/_cygrpc/operation.pyx.pxi":85
 *   cdef void c(self) except *:
 *     self.c_op.type = GRPC_OP_SEND_CLOSE_FROM_CLIENT
 *     self.c_op.flags = self._flags             # <<<<<<<<<<<<<<
 * 
 *   cdef void un_c(self) except *:
 */
  __pyx_t_1 = __pyx_v_self->_flags;
  __pyx_v_self->__pyx_base.c_op.flags = __pyx_t_1;

  /* "src/python/grpcio/grpc/_cython/_cygrpc/operation.pyx.pxi":83
 *     return GRPC_OP_SEND_CLOSE_FROM_CLIENT
 * 
 *   cdef void c(self) except *:             # <<<<<<<<<<<<<<
 *     self.c_op.type = GRPC_OP_SEND_CLOSE_FROM_CLIENT
 *     self.c_op.flags = self._flags
 */

  /* function exit code */
  __Pyx_RefNannyFinishContext();
}

/* "src/python/grpcio/grpc/_cython/_cygrpc/operation.pyx.pxi":87
 *     self.c_op.flags = self._flags
 * 
 *   cdef void un_c(self) except *:             # <<<<<<<<<<<<<<
 *     pass
 * 
 */

static void __pyx_f_4grpc_7_cython_6cygrpc_28SendCloseFromClientOperation_un_c(CYTHON_UNUSED struct __pyx_obj_4grpc_7_cython_6cygrpc_SendCloseFromClientOperation *__pyx_v_self) {
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("un_c", 0);

  /* function exit code */
  __Pyx_RefNannyFinishContext();
}

/* "src/python/grpcio/grpc/_cython/_cygrpc/operation.pxd.pxi":48
 * cdef class SendCloseFromClientOperation(Operation):
 * 
 *   cdef readonly int _flags             # <<<<<<<<<<<<<<
 * 
 *   cdef void c(self) except *
 */

/* Python wrapper */
static PyObject *__pyx_pw_4grpc_7_cython_6cygrpc_28SendCloseFromClientOperation_6_flags_1__get__(PyObject *__pyx_v_self); /*proto*/
static PyObject *__pyx_pw_4grpc_7_cython_6cygrpc_28SendCloseFromClientOperation_6_flags_1__get__(PyObject *__pyx_v_self) {
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__get__ (wrapper)", 0);
  __pyx_r = __pyx_pf_4grpc_7_cython_6cygrpc_28SendCloseFromClientOperation_6_flags___get__(((struct __pyx_obj_4grpc_7_cython_6cygrpc_SendCloseFromClientOperation *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_4grpc_7_cython_6cygrpc_28SendCloseFromClientOperation_6_flags___get__(struct __pyx_obj_4grpc_7_cython_6cygrpc_SendCloseFromClientOperation *__pyx_v_self) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("__get__", 0);
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_1 = __Pyx_PyInt_From_int(__pyx_v_self->_flags); if (unlikely(!__pyx_t_1)) __PYX_ERR(20, 48, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_r = __pyx_t_1;
  __pyx_t_1 = 0;
  goto __pyx_L0;

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_AddTraceback("grpc._cython.cygrpc.SendCloseFromClientOperation._flags.__get__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "(tree fragment)":1
 * def __reduce_cython__(self):             # <<<<<<<<<<<<<<
 *     raise TypeError("no default __reduce__ due to non-trivial __cinit__")
 * def __setstate_cython__(self, __pyx_state):
 */

/* Python wrapper */
static PyObject *__pyx_pw_4grpc_7_cython_6cygrpc_28SendCloseFromClientOperation_5__reduce_cython__(PyObject *__pyx_v_self, CYTHON_UNUSED PyObject *unused); /*proto*/
static PyObject *__pyx_pw_4grpc_7_cython_6cygrpc_28SendCloseFromClientOperation_5__reduce_cython__(PyObject *__pyx_v_self, CYTHON_UNUSED PyObject *unused) {
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__reduce_cython__ (wrapper)", 0);
  __pyx_r = __pyx_pf_4grpc_7_cython_6cygrpc_28SendCloseFromClientOperation_4__reduce_cython__(((struct __pyx_obj_4grpc_7_cython_6cygrpc_SendCloseFromClientOperation *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_4grpc_7_cython_6cygrpc_28SendCloseFromClientOperation_4__reduce_cython__(CYTHON_UNUSED struct __pyx_obj_4grpc_7_cython_6cygrpc_SendCloseFromClientOperation *__pyx_v_self) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("__reduce_cython__", 0);

  /* "(tree fragment)":2
 * def __reduce_cython__(self):
 *     raise TypeError("no default __reduce__ due to non-trivial __cinit__")             # <<<<<<<<<<<<<<
 * def __setstate_cython__(self, __pyx_state):
 *     raise TypeError("no default __reduce__ due to non-trivial __cinit__")
 */
  __pyx_t_1 = __Pyx_PyObject_Call(__pyx_builtin_TypeError, __pyx_tuple__82, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(11, 2, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_Raise(__pyx_t_1, 0, 0, 0);
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  __PYX_ERR(11, 2, __pyx_L1_error)

  /* "(tree fragment)":1
 * def __reduce_cython__(self):             # <<<<<<<<<<<<<<
 *     raise TypeError("no default __reduce__ due to non-trivial __cinit__")
 * def __setstate_cython__(self, __pyx_state):
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_AddTraceback("grpc._cython.cygrpc.SendCloseFromClientOperation.__reduce_cython__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "(tree fragment)":3
 * def __reduce_cython__(self):
 *     raise TypeError("no default __reduce__ due to non-trivial __cinit__")
 * def __setstate_cython__(self, __pyx_state):             # <<<<<<<<<<<<<<
 *     raise TypeError("no default __reduce__ due to non-trivial __cinit__")
 */

/* Python wrapper */
static PyObject *__pyx_pw_4grpc_7_cython_6cygrpc_28SendCloseFromClientOperation_7__setstate_cython__(PyObject *__pyx_v_self, PyObject *__pyx_v___pyx_state); /*proto*/
static PyObject *__pyx_pw_4grpc_7_cython_6cygrpc_28SendCloseFromClientOperation_7__setstate_cython__(PyObject *__pyx_v_self, PyObject *__pyx_v___pyx_state) {
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__setstate_cython__ (wrapper)", 0);
  __pyx_r = __pyx_pf_4grpc_7_cython_6cygrpc_28SendCloseFromClientOperation_6__setstate_cython__(((struct __pyx_obj_4grpc_7_cython_6cygrpc_SendCloseFromClientOperation *)__pyx_v_self), ((PyObject *)__pyx_v___pyx_state));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_4grpc_7_cython_6cygrpc_28SendCloseFromClientOperation_6__setstate_cython__(CYTHON_UNUSED struct __pyx_obj_4grpc_7_cython_6cygrpc_SendCloseFromClientOperation *__pyx_v_self, CYTHON_UNUSED PyObject *__pyx_v___pyx_state) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("__setstate_cython__", 0);

  /* "(tree fragment)":4
 *     raise TypeError("no default __reduce__ due to non-trivial __cinit__")
 * def __setstate_cython__(self, __pyx_state):
 *     raise TypeError("no default __reduce__ due to non-trivial __cinit__")             # <<<<<<<<<<<<<<
 */
  __pyx_t_1 = __Pyx_PyObject_Call(__pyx_builtin_TypeError, __pyx_tuple__83, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(11, 4, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_Raise(__pyx_t_1, 0, 0, 0);
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  __PYX_ERR(11, 4, __pyx_L1_error)

  /* "(tree fragment)":3
 * def __reduce_cython__(self):
 *     raise TypeError("no default __reduce__ due to non-trivial __cinit__")
 * def __setstate_cython__(self, __pyx_state):             # <<<<<<<<<<<<<<
 *     raise TypeError("no default __reduce__ due to non-trivial __cinit__")
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_AddTraceback("grpc._cython.cygrpc.SendCloseFromClientOperation.__setstate_cython__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "src/python/grpcio/grpc/_cython/_cygrpc/operation.pyx.pxi":93
 * cdef class SendStatusFromServerOperation(Operation):
 * 
 *   def __cinit__(self, trailing_metadata, code, object details, int flags):             # <<<<<<<<<<<<<<
 *     self._trailing_metadata = trailing_metadata
 *     self._code = code
 */

/* Python wrapper */
static int __pyx_pw_4grpc_7_cython_6cygrpc_29SendStatusFromServerOperation_1__cinit__(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
static int __pyx_pw_4grpc_7_cython_6cygrpc_29SendStatusFromServerOperation_1__cinit__(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
  PyObject *__pyx_v_trailing_metadata = 0;
  PyObject *__pyx_v_code = 0;
  PyObject *__pyx_v_details = 0;
  int __pyx_v_flags;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  int __pyx_r;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__cinit__ (wrapper)", 0);
  {
    static PyObject **__pyx_pyargnames[] = {&__pyx_n_s_trailing_metadata,&__pyx_n_s_code,&__pyx_n_s_details,&__pyx_n_s_flags,0};
    PyObject* values[4] = {0,0,0,0};
    if (unlikely(__pyx_kwds)) {
      Py_ssize_t kw_args;
      const Py_ssize_t pos_args = PyTuple_GET_SIZE(__pyx_args);
      switch (pos_args) {
        case  4: values[3] = PyTuple_GET_ITEM(__pyx_args, 3);
        CYTHON_FALLTHROUGH;
        case  3: values[2] = PyTuple_GET_ITEM(__pyx_args, 2);
        CYTHON_FALLTHROUGH;
        case  2: values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
        CYTHON_FALLTHROUGH;
        case  1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
        CYTHON_FALLTHROUGH;
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      kw_args = PyDict_Size(__pyx_kwds);
      switch (pos_args) {
        case  0:
        if (likely((values[0] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_trailing_metadata)) != 0)) kw_args--;
        else goto __pyx_L5_argtuple_error;
        CYTHON_FALLTHROUGH;
        case  1:
        if (likely((values[1] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_code)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("__cinit__", 1, 4, 4, 1); __PYX_ERR(19, 93, __pyx_L3_error)
        }
        CYTHON_FALLTHROUGH;
        case  2:
        if (likely((values[2] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_details)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("__cinit__", 1, 4, 4, 2); __PYX_ERR(19, 93, __pyx_L3_error)
        }
        CYTHON_FALLTHROUGH;
        case  3:
        if (likely((values[3] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_flags)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("__cinit__", 1, 4, 4, 3); __PYX_ERR(19, 93, __pyx_L3_error)
        }
      }
      if (unlikely(kw_args > 0)) {
        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "__cinit__") < 0)) __PYX_ERR(19, 93, __pyx_L3_error)
      }
    } else if (PyTuple_GET_SIZE(__pyx_args) != 4) {
      goto __pyx_L5_argtuple_error;
    } else {
      values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
      values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
      values[2] = PyTuple_GET_ITEM(__pyx_args, 2);
      values[3] = PyTuple_GET_ITEM(__pyx_args, 3);
    }
    __pyx_v_trailing_metadata = values[0];
    __pyx_v_code = values[1];
    __pyx_v_details = values[2];
    __pyx_v_flags = __Pyx_PyInt_As_int(values[3]); if (unlikely((__pyx_v_flags == (int)-1) && PyErr_Occurred())) __PYX_ERR(19, 93, __pyx_L3_error)
  }
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("__cinit__", 1, 4, 4, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(19, 93, __pyx_L3_error)
  __pyx_L3_error:;
  __Pyx_AddTraceback("grpc._cython.cygrpc.SendStatusFromServerOperation.__cinit__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return -1;
  __pyx_L4_argument_unpacking_done:;
  __pyx_r = __pyx_pf_4grpc_7_cython_6cygrpc_29SendStatusFromServerOperation___cinit__(((struct __pyx_obj_4grpc_7_cython_6cygrpc_SendStatusFromServerOperation *)__pyx_v_self), __pyx_v_trailing_metadata, __pyx_v_code, __pyx_v_details, __pyx_v_flags);

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static int __pyx_pf_4grpc_7_cython_6cygrpc_29SendStatusFromServerOperation___cinit__(struct __pyx_obj_4grpc_7_cython_6cygrpc_SendStatusFromServerOperation *__pyx_v_self, PyObject *__pyx_v_trailing_metadata, PyObject *__pyx_v_code, PyObject *__pyx_v_details, int __pyx_v_flags) {
  int __pyx_r;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__cinit__", 0);

  /* "src/python/grpcio/grpc/_cython/_cygrpc/operation.pyx.pxi":94
 * 
 *   def __cinit__(self, trailing_metadata, code, object details, int flags):
 *     self._trailing_metadata = trailing_metadata             # <<<<<<<<<<<<<<
 *     self._code = code
 *     self._details = details
 */
  __Pyx_INCREF(__pyx_v_trailing_metadata);
  __Pyx_GIVEREF(__pyx_v_trailing_metadata);
  __Pyx_GOTREF(__pyx_v_self->_trailing_metadata);
  __Pyx_DECREF(__pyx_v_self->_trailing_metadata);
  __pyx_v_self->_trailing_metadata = __pyx_v_trailing_metadata;

  /* "src/python/grpcio/grpc/_cython/_cygrpc/operation.pyx.pxi":95
 *   def __cinit__(self, trailing_metadata, code, object details, int flags):
 *     self._trailing_metadata = trailing_metadata
 *     self._code = code             # <<<<<<<<<<<<<<
 *     self._details = details
 *     self._flags = flags
 */
  __Pyx_INCREF(__pyx_v_code);
  __Pyx_GIVEREF(__pyx_v_code);
  __Pyx_GOTREF(__pyx_v_self->_code);
  __Pyx_DECREF(__pyx_v_self->_code);
  __pyx_v_self->_code = __pyx_v_code;

  /* "src/python/grpcio/grpc/_cython/_cygrpc/operation.pyx.pxi":96
 *     self._trailing_metadata = trailing_metadata
 *     self._code = code
 *     self._details = details             # <<<<<<<<<<<<<<
 *     self._flags = flags
 * 
 */
  __Pyx_INCREF(__pyx_v_details);
  __Pyx_GIVEREF(__pyx_v_details);
  __Pyx_GOTREF(__pyx_v_self->_details);
  __Pyx_DECREF(__pyx_v_self->_details);
  __pyx_v_self->_details = __pyx_v_details;

  /* "src/python/grpcio/grpc/_cython/_cygrpc/operation.pyx.pxi":97
 *     self._code = code
 *     self._details = details
 *     self._flags = flags             # <<<<<<<<<<<<<<
 * 
 *   def type(self):
 */
  __pyx_v_self->_flags = __pyx_v_flags;

  /* "src/python/grpcio/grpc/_cython/_cygrpc/operation.pyx.pxi":93
 * cdef class SendStatusFromServerOperation(Operation):
 * 
 *   def __cinit__(self, trailing_metadata, code, object details, int flags):             # <<<<<<<<<<<<<<
 *     self._trailing_metadata = trailing_metadata
 *     self._code = code
 */

  /* function exit code */
  __pyx_r = 0;
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "src/python/grpcio/grpc/_cython/_cygrpc/operation.pyx.pxi":99
 *     self._flags = flags
 * 
 *   def type(self):             # <<<<<<<<<<<<<<
 *     return GRPC_OP_SEND_STATUS_FROM_SERVER
 * 
 */

/* Python wrapper */
static PyObject *__pyx_pw_4grpc_7_cython_6cygrpc_29SendStatusFromServerOperation_3type(PyObject *__pyx_v_self, CYTHON_UNUSED PyObject *unused); /*proto*/
static PyObject *__pyx_pw_4grpc_7_cython_6cygrpc_29SendStatusFromServerOperation_3type(PyObject *__pyx_v_self, CYTHON_UNUSED PyObject *unused) {
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("type (wrapper)", 0);
  __pyx_r = __pyx_pf_4grpc_7_cython_6cygrpc_29SendStatusFromServerOperation_2type(((struct __pyx_obj_4grpc_7_cython_6cygrpc_SendStatusFromServerOperation *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_4grpc_7_cython_6cygrpc_29SendStatusFromServerOperation_2type(CYTHON_UNUSED struct __pyx_obj_4grpc_7_cython_6cygrpc_SendStatusFromServerOperation *__pyx_v_self) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("type", 0);

  /* "src/python/grpcio/grpc/_cython/_cygrpc/operation.pyx.pxi":100
 * 
 *   def type(self):
 *     return GRPC_OP_SEND_STATUS_FROM_SERVER             # <<<<<<<<<<<<<<
 * 
 *   cdef void c(self) except *:
 */
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_1 = __Pyx_PyInt_From_grpc_op_type(GRPC_OP_SEND_STATUS_FROM_SERVER); if (unlikely(!__pyx_t_1)) __PYX_ERR(19, 100, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_r = __pyx_t_1;
  __pyx_t_1 = 0;
  goto __pyx_L0;

  /* "src/python/grpcio/grpc/_cython/_cygrpc/operation.pyx.pxi":99
 *     self._flags = flags
 * 
 *   def type(self):             # <<<<<<<<<<<<<<
 *     return GRPC_OP_SEND_STATUS_FROM_SERVER
 * 
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_AddTraceback("grpc._cython.cygrpc.SendStatusFromServerOperation.type", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "src/python/grpcio/grpc/_cython/_cygrpc/operation.pyx.pxi":102
 *     return GRPC_OP_SEND_STATUS_FROM_SERVER
 * 
 *   cdef void c(self) except *:             # <<<<<<<<<<<<<<
 *     self.c_op.type = GRPC_OP_SEND_STATUS_FROM_SERVER
 *     self.c_op.flags = self._flags
 */

static void __pyx_f_4grpc_7_cython_6cygrpc_29SendStatusFromServerOperation_c(struct __pyx_obj_4grpc_7_cython_6cygrpc_SendStatusFromServerOperation *__pyx_v_self) {
  __Pyx_RefNannyDeclarations
  int __pyx_t_1;
  PyObject *__pyx_t_2 = NULL;
  grpc_metadata *__pyx_t_3;
  size_t __pyx_t_4;
  grpc_status_code __pyx_t_5;
  PyObject *__pyx_t_6 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("c", 0);

  /* "src/python/grpcio/grpc/_cython/_cygrpc/operation.pyx.pxi":103
 * 
 *   cdef void c(self) except *:
 *     self.c_op.type = GRPC_OP_SEND_STATUS_FROM_SERVER             # <<<<<<<<<<<<<<
 *     self.c_op.flags = self._flags
 *     _store_c_metadata(
 */
  __pyx_v_self->__pyx_base.c_op.op = GRPC_OP_SEND_STATUS_FROM_SERVER;

  /* "src/python/grpcio/grpc/_cython/_cygrpc/operation.pyx.pxi":104
 *   cdef void c(self) except *:
 *     self.c_op.type = GRPC_OP_SEND_STATUS_FROM_SERVER
 *     self.c_op.flags = self._flags             # <<<<<<<<<<<<<<
 *     _store_c_metadata(
 *         self._trailing_metadata, &self._c_trailing_metadata,
 */
  __pyx_t_1 = __pyx_v_self->_flags;
  __pyx_v_self->__pyx_base.c_op.flags = __pyx_t_1;

  /* "src/python/grpcio/grpc/_cython/_cygrpc/operation.pyx.pxi":106
 *     self.c_op.flags = self._flags
 *     _store_c_metadata(
 *         self._trailing_metadata, &self._c_trailing_metadata,             # <<<<<<<<<<<<<<
 *         &self._c_trailing_metadata_count)
 *     self.c_op.data.send_status_from_server.trailing_metadata = (
 */
  __pyx_t_2 = __pyx_v_self->_trailing_metadata;
  __Pyx_INCREF(__pyx_t_2);

  /* "src/python/grpcio/grpc/_cython/_cygrpc/operation.pyx.pxi":105
 *     self.c_op.type = GRPC_OP_SEND_STATUS_FROM_SERVER
 *     self.c_op.flags = self._flags
 *     _store_c_metadata(             # <<<<<<<<<<<<<<
 *         self._trailing_metadata, &self._c_trailing_metadata,
 *         &self._c_trailing_metadata_count)
 */
  __pyx_f_4grpc_7_cython_6cygrpc__store_c_metadata(__pyx_t_2, (&__pyx_v_self->_c_trailing_metadata), (&__pyx_v_self->_c_trailing_metadata_count)); if (unlikely(PyErr_Occurred())) __PYX_ERR(19, 105, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;

  /* "src/python/grpcio/grpc/_cython/_cygrpc/operation.pyx.pxi":109
 *         &self._c_trailing_metadata_count)
 *     self.c_op.data.send_status_from_server.trailing_metadata = (
 *         self._c_trailing_metadata)             # <<<<<<<<<<<<<<
 *     self.c_op.data.send_status_from_server.trailing_metadata_count = (
 *         self._c_trailing_metadata_count)
 */
  __pyx_t_3 = __pyx_v_self->_c_trailing_metadata;

  /* "src/python/grpcio/grpc/_cython/_cygrpc/operation.pyx.pxi":108
 *         self._trailing_metadata, &self._c_trailing_metadata,
 *         &self._c_trailing_metadata_count)
 *     self.c_op.data.send_status_from_server.trailing_metadata = (             # <<<<<<<<<<<<<<
 *         self._c_trailing_metadata)
 *     self.c_op.data.send_status_from_server.trailing_metadata_count = (
 */
  __pyx_v_self->__pyx_base.c_op.data.send_status_from_server.trailing_metadata = __pyx_t_3;

  /* "src/python/grpcio/grpc/_cython/_cygrpc/operation.pyx.pxi":111
 *         self._c_trailing_metadata)
 *     self.c_op.data.send_status_from_server.trailing_metadata_count = (
 *         self._c_trailing_metadata_count)             # <<<<<<<<<<<<<<
 *     self.c_op.data.send_status_from_server.status = self._code
 *     self._c_details = _slice_from_bytes(_encode(self._details))
 */
  __pyx_t_4 = __pyx_v_self->_c_trailing_metadata_count;

  /* "src/python/grpcio/grpc/_cython/_cygrpc/operation.pyx.pxi":110
 *     self.c_op.data.send_status_from_server.trailing_metadata = (
 *         self._c_trailing_metadata)
 *     self.c_op.data.send_status_from_server.trailing_metadata_count = (             # <<<<<<<<<<<<<<
 *         self._c_trailing_metadata_count)
 *     self.c_op.data.send_status_from_server.status = self._code
 */
  __pyx_v_self->__pyx_base.c_op.data.send_status_from_server.trailing_metadata_count = __pyx_t_4;

  /* "src/python/grpcio/grpc/_cython/_cygrpc/operation.pyx.pxi":112
 *     self.c_op.data.send_status_from_server.trailing_metadata_count = (
 *         self._c_trailing_metadata_count)
 *     self.c_op.data.send_status_from_server.status = self._code             # <<<<<<<<<<<<<<
 *     self._c_details = _slice_from_bytes(_encode(self._details))
 *     self.c_op.data.send_status_from_server.status_details = &self._c_details
 */
  __pyx_t_5 = ((grpc_status_code)__Pyx_PyInt_As_grpc_status_code(__pyx_v_self->_code)); if (unlikely(PyErr_Occurred())) __PYX_ERR(19, 112, __pyx_L1_error)
  __pyx_v_self->__pyx_base.c_op.data.send_status_from_server.status = __pyx_t_5;

  /* "src/python/grpcio/grpc/_cython/_cygrpc/operation.pyx.pxi":113
 *         self._c_trailing_metadata_count)
 *     self.c_op.data.send_status_from_server.status = self._code
 *     self._c_details = _slice_from_bytes(_encode(self._details))             # <<<<<<<<<<<<<<
 *     self.c_op.data.send_status_from_server.status_details = &self._c_details
 * 
 */
  __pyx_t_2 = __pyx_v_self->_details;
  __Pyx_INCREF(__pyx_t_2);
  __pyx_t_6 = __pyx_f_4grpc_7_cython_6cygrpc__encode(__pyx_t_2); if (unlikely(!__pyx_t_6)) __PYX_ERR(19, 113, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_6);
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  __pyx_v_self->_c_details = __pyx_f_4grpc_7_cython_6cygrpc__slice_from_bytes(((PyObject*)__pyx_t_6));
  __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;

  /* "src/python/grpcio/grpc/_cython/_cygrpc/operation.pyx.pxi":114
 *     self.c_op.data.send_status_from_server.status = self._code
 *     self._c_details = _slice_from_bytes(_encode(self._details))
 *     self.c_op.data.send_status_from_server.status_details = &self._c_details             # <<<<<<<<<<<<<<
 * 
 *   cdef void un_c(self) except *:
 */
  __pyx_v_self->__pyx_base.c_op.data.send_status_from_server.status_details = (&__pyx_v_self->_c_details);

  /* "src/python/grpcio/grpc/_cython/_cygrpc/operation.pyx.pxi":102
 *     return GRPC_OP_SEND_STATUS_FROM_SERVER
 * 
 *   cdef void c(self) except *:             # <<<<<<<<<<<<<<
 *     self.c_op.type = GRPC_OP_SEND_STATUS_FROM_SERVER
 *     self.c_op.flags = self._flags
 */

  /* function exit code */
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_XDECREF(__pyx_t_6);
  __Pyx_AddTraceback("grpc._cython.cygrpc.SendStatusFromServerOperation.c", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_L0:;
  __Pyx_RefNannyFinishContext();
}

/* "src/python/grpcio/grpc/_cython/_cygrpc/operation.pyx.pxi":116
 *     self.c_op.data.send_status_from_server.status_details = &self._c_details
 * 
 *   cdef void un_c(self) except *:             # <<<<<<<<<<<<<<
 *     grpc_slice_unref(self._c_details)
 *     _release_c_metadata(
 */

static void __pyx_f_4grpc_7_cython_6cygrpc_29SendStatusFromServerOperation_un_c(struct __pyx_obj_4grpc_7_cython_6cygrpc_SendStatusFromServerOperation *__pyx_v_self) {
  __Pyx_RefNannyDeclarations
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("un_c", 0);

  /* "src/python/grpcio/grpc/_cython/_cygrpc/operation.pyx.pxi":117
 * 
 *   cdef void un_c(self) except *:
 *     grpc_slice_unref(self._c_details)             # <<<<<<<<<<<<<<
 *     _release_c_metadata(
 *         self._c_trailing_metadata, self._c_trailing_metadata_count)
 */
  grpc_slice_unref(__pyx_v_self->_c_details);

  /* "src/python/grpcio/grpc/_cython/_cygrpc/operation.pyx.pxi":118
 *   cdef void un_c(self) except *:
 *     grpc_slice_unref(self._c_details)
 *     _release_c_metadata(             # <<<<<<<<<<<<<<
 *         self._c_trailing_metadata, self._c_trailing_metadata_count)
 * 
 */
  __pyx_f_4grpc_7_cython_6cygrpc__release_c_metadata(__pyx_v_self->_c_trailing_metadata, __pyx_v_self->_c_trailing_metadata_count); if (unlikely(PyErr_Occurred())) __PYX_ERR(19, 118, __pyx_L1_error)

  /* "src/python/grpcio/grpc/_cython/_cygrpc/operation.pyx.pxi":116
 *     self.c_op.data.send_status_from_server.status_details = &self._c_details
 * 
 *   cdef void un_c(self) except *:             # <<<<<<<<<<<<<<
 *     grpc_slice_unref(self._c_details)
 *     _release_c_metadata(
 */

  /* function exit code */
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_AddTraceback("grpc._cython.cygrpc.SendStatusFromServerOperation.un_c", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_L0:;
  __Pyx_RefNannyFinishContext();
}

/* "src/python/grpcio/grpc/_cython/_cygrpc/operation.pxd.pxi":56
 * cdef class SendStatusFromServerOperation(Operation):
 * 
 *   cdef readonly object _trailing_metadata             # <<<<<<<<<<<<<<
 *   cdef readonly object _code
 *   cdef readonly object _details
 */

/* Python wrapper */
static PyObject *__pyx_pw_4grpc_7_cython_6cygrpc_29SendStatusFromServerOperation_18_trailing_metadata_1__get__(PyObject *__pyx_v_self); /*proto*/
static PyObject *__pyx_pw_4grpc_7_cython_6cygrpc_29SendStatusFromServerOperation_18_trailing_metadata_1__get__(PyObject *__pyx_v_self) {
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__get__ (wrapper)", 0);
  __pyx_r = __pyx_pf_4grpc_7_cython_6cygrpc_29SendStatusFromServerOperation_18_trailing_metadata___get__(((struct __pyx_obj_4grpc_7_cython_6cygrpc_SendStatusFromServerOperation *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_4grpc_7_cython_6cygrpc_29SendStatusFromServerOperation_18_trailing_metadata___get__(struct __pyx_obj_4grpc_7_cython_6cygrpc_SendStatusFromServerOperation *__pyx_v_self) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__get__", 0);
  __Pyx_XDECREF(__pyx_r);
  __Pyx_INCREF(__pyx_v_self->_trailing_metadata);
  __pyx_r = __pyx_v_self->_trailing_metadata;
  goto __pyx_L0;

  /* function exit code */
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "src/python/grpcio/grpc/_cython/_cygrpc/operation.pxd.pxi":57
 * 
 *   cdef readonly object _trailing_metadata
 *   cdef readonly object _code             # <<<<<<<<<<<<<<
 *   cdef readonly object _details
 *   cdef readonly int _flags
 */

/* Python wrapper */
static PyObject *__pyx_pw_4grpc_7_cython_6cygrpc_29SendStatusFromServerOperation_5_code_1__get__(PyObject *__pyx_v_self); /*proto*/
static PyObject *__pyx_pw_4grpc_7_cython_6cygrpc_29SendStatusFromServerOperation_5_code_1__get__(PyObject *__pyx_v_self) {
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__get__ (wrapper)", 0);
  __pyx_r = __pyx_pf_4grpc_7_cython_6cygrpc_29SendStatusFromServerOperation_5_code___get__(((struct __pyx_obj_4grpc_7_cython_6cygrpc_SendStatusFromServerOperation *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_4grpc_7_cython_6cygrpc_29SendStatusFromServerOperation_5_code___get__(struct __pyx_obj_4grpc_7_cython_6cygrpc_SendStatusFromServerOperation *__pyx_v_self) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__get__", 0);
  __Pyx_XDECREF(__pyx_r);
  __Pyx_INCREF(__pyx_v_self->_code);
  __pyx_r = __pyx_v_self->_code;
  goto __pyx_L0;

  /* function exit code */
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "src/python/grpcio/grpc/_cython/_cygrpc/operation.pxd.pxi":58
 *   cdef readonly object _trailing_metadata
 *   cdef readonly object _code
 *   cdef readonly object _details             # <<<<<<<<<<<<<<
 *   cdef readonly int _flags
 *   cdef grpc_metadata *_c_trailing_metadata
 */

/* Python wrapper */
static PyObject *__pyx_pw_4grpc_7_cython_6cygrpc_29SendStatusFromServerOperation_8_details_1__get__(PyObject *__pyx_v_self); /*proto*/
static PyObject *__pyx_pw_4grpc_7_cython_6cygrpc_29SendStatusFromServerOperation_8_details_1__get__(PyObject *__pyx_v_self) {
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__get__ (wrapper)", 0);
  __pyx_r = __pyx_pf_4grpc_7_cython_6cygrpc_29SendStatusFromServerOperation_8_details___get__(((struct __pyx_obj_4grpc_7_cython_6cygrpc_SendStatusFromServerOperation *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_4grpc_7_cython_6cygrpc_29SendStatusFromServerOperation_8_details___get__(struct __pyx_obj_4grpc_7_cython_6cygrpc_SendStatusFromServerOperation *__pyx_v_self) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__get__", 0);
  __Pyx_XDECREF(__pyx_r);
  __Pyx_INCREF(__pyx_v_self->_details);
  __pyx_r = __pyx_v_self->_details;
  goto __pyx_L0;

  /* function exit code */
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "src/python/grpcio/grpc/_cython/_cygrpc/operation.pxd.pxi":59
 *   cdef readonly object _code
 *   cdef readonly object _details
 *   cdef readonly int _flags             # <<<<<<<<<<<<<<
 *   cdef grpc_metadata *_c_trailing_metadata
 *   cdef size_t _c_trailing_metadata_count
 */

/* Python wrapper */
static PyObject *__pyx_pw_4grpc_7_cython_6cygrpc_29SendStatusFromServerOperation_6_flags_1__get__(PyObject *__pyx_v_self); /*proto*/
static PyObject *__pyx_pw_4grpc_7_cython_6cygrpc_29SendStatusFromServerOperation_6_flags_1__get__(PyObject *__pyx_v_self) {
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__get__ (wrapper)", 0);
  __pyx_r = __pyx_pf_4grpc_7_cython_6cygrpc_29SendStatusFromServerOperation_6_flags___get__(((struct __pyx_obj_4grpc_7_cython_6cygrpc_SendStatusFromServerOperation *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_4grpc_7_cython_6cygrpc_29SendStatusFromServerOperation_6_flags___get__(struct __pyx_obj_4grpc_7_cython_6cygrpc_SendStatusFromServerOperation *__pyx_v_self) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("__get__", 0);
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_1 = __Pyx_PyInt_From_int(__pyx_v_self->_flags); if (unlikely(!__pyx_t_1)) __PYX_ERR(20, 59, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_r = __pyx_t_1;
  __pyx_t_1 = 0;
  goto __pyx_L0;

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_AddTraceback("grpc._cython.cygrpc.SendStatusFromServerOperation._flags.__get__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "(tree fragment)":1
 * def __reduce_cython__(self):             # <<<<<<<<<<<<<<
 *     raise TypeError("no default __reduce__ due to non-trivial __cinit__")
 * def __setstate_cython__(self, __pyx_state):
 */

/* Python wrapper */
static PyObject *__pyx_pw_4grpc_7_cython_6cygrpc_29SendStatusFromServerOperation_5__reduce_cython__(PyObject *__pyx_v_self, CYTHON_UNUSED PyObject *unused); /*proto*/
static PyObject *__pyx_pw_4grpc_7_cython_6cygrpc_29SendStatusFromServerOperation_5__reduce_cython__(PyObject *__pyx_v_self, CYTHON_UNUSED PyObject *unused) {
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__reduce_cython__ (wrapper)", 0);
  __pyx_r = __pyx_pf_4grpc_7_cython_6cygrpc_29SendStatusFromServerOperation_4__reduce_cython__(((struct __pyx_obj_4grpc_7_cython_6cygrpc_SendStatusFromServerOperation *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_4grpc_7_cython_6cygrpc_29SendStatusFromServerOperation_4__reduce_cython__(CYTHON_UNUSED struct __pyx_obj_4grpc_7_cython_6cygrpc_SendStatusFromServerOperation *__pyx_v_self) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("__reduce_cython__", 0);

  /* "(tree fragment)":2
 * def __reduce_cython__(self):
 *     raise TypeError("no default __reduce__ due to non-trivial __cinit__")             # <<<<<<<<<<<<<<
 * def __setstate_cython__(self, __pyx_state):
 *     raise TypeError("no default __reduce__ due to non-trivial __cinit__")
 */
  __pyx_t_1 = __Pyx_PyObject_Call(__pyx_builtin_TypeError, __pyx_tuple__84, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(11, 2, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_Raise(__pyx_t_1, 0, 0, 0);
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  __PYX_ERR(11, 2, __pyx_L1_error)

  /* "(tree fragment)":1
 * def __reduce_cython__(self):             # <<<<<<<<<<<<<<
 *     raise TypeError("no default __reduce__ due to non-trivial __cinit__")
 * def __setstate_cython__(self, __pyx_state):
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_AddTraceback("grpc._cython.cygrpc.SendStatusFromServerOperation.__reduce_cython__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "(tree fragment)":3
 * def __reduce_cython__(self):
 *     raise TypeError("no default __reduce__ due to non-trivial __cinit__")
 * def __setstate_cython__(self, __pyx_state):             # <<<<<<<<<<<<<<
 *     raise TypeError("no default __reduce__ due to non-trivial __cinit__")
 */

/* Python wrapper */
static PyObject *__pyx_pw_4grpc_7_cython_6cygrpc_29SendStatusFromServerOperation_7__setstate_cython__(PyObject *__pyx_v_self, PyObject *__pyx_v___pyx_state); /*proto*/
static PyObject *__pyx_pw_4grpc_7_cython_6cygrpc_29SendStatusFromServerOperation_7__setstate_cython__(PyObject *__pyx_v_self, PyObject *__pyx_v___pyx_state) {
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__setstate_cython__ (wrapper)", 0);
  __pyx_r = __pyx_pf_4grpc_7_cython_6cygrpc_29SendStatusFromServerOperation_6__setstate_cython__(((struct __pyx_obj_4grpc_7_cython_6cygrpc_SendStatusFromServerOperation *)__pyx_v_self), ((PyObject *)__pyx_v___pyx_state));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_4grpc_7_cython_6cygrpc_29SendStatusFromServerOperation_6__setstate_cython__(CYTHON_UNUSED struct __pyx_obj_4grpc_7_cython_6cygrpc_SendStatusFromServerOperation *__pyx_v_self, CYTHON_UNUSED PyObject *__pyx_v___pyx_state) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("__setstate_cython__", 0);

  /* "(tree fragment)":4
 *     raise TypeError("no default __reduce__ due to non-trivial __cinit__")
 * def __setstate_cython__(self, __pyx_state):
 *     raise TypeError("no default __reduce__ due to non-trivial __cinit__")             # <<<<<<<<<<<<<<
 */
  __pyx_t_1 = __Pyx_PyObject_Call(__pyx_builtin_TypeError, __pyx_tuple__85, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(11, 4, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_Raise(__pyx_t_1, 0, 0, 0);
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  __PYX_ERR(11, 4, __pyx_L1_error)

  /* "(tree fragment)":3
 * def __reduce_cython__(self):
 *     raise TypeError("no default __reduce__ due to non-trivial __cinit__")
 * def __setstate_cython__(self, __pyx_state):             # <<<<<<<<<<<<<<
 *     raise TypeError("no default __reduce__ due to non-trivial __cinit__")
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_AddTraceback("grpc._cython.cygrpc.SendStatusFromServerOperation.__setstate_cython__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "src/python/grpcio/grpc/_cython/_cygrpc/operation.pyx.pxi":124
 * cdef class ReceiveInitialMetadataOperation(Operation):
 * 
 *   def __cinit__(self, flags):             # <<<<<<<<<<<<<<
 *     self._flags = flags
 * 
 */

/* Python wrapper */
static int __pyx_pw_4grpc_7_cython_6cygrpc_31ReceiveInitialMetadataOperation_1__cinit__(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
static int __pyx_pw_4grpc_7_cython_6cygrpc_31ReceiveInitialMetadataOperation_1__cinit__(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
  PyObject *__pyx_v_flags = 0;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  int __pyx_r;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__cinit__ (wrapper)", 0);
  {
    static PyObject **__pyx_pyargnames[] = {&__pyx_n_s_flags,0};
    PyObject* values[1] = {0};
    if (unlikely(__pyx_kwds)) {
      Py_ssize_t kw_args;
      const Py_ssize_t pos_args = PyTuple_GET_SIZE(__pyx_args);
      switch (pos_args) {
        case  1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
        CYTHON_FALLTHROUGH;
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      kw_args = PyDict_Size(__pyx_kwds);
      switch (pos_args) {
        case  0:
        if (likely((values[0] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_flags)) != 0)) kw_args--;
        else goto __pyx_L5_argtuple_error;
      }
      if (unlikely(kw_args > 0)) {
        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "__cinit__") < 0)) __PYX_ERR(19, 124, __pyx_L3_error)
      }
    } else if (PyTuple_GET_SIZE(__pyx_args) != 1) {
      goto __pyx_L5_argtuple_error;
    } else {
      values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
    }
    __pyx_v_flags = values[0];
  }
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("__cinit__", 1, 1, 1, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(19, 124, __pyx_L3_error)
  __pyx_L3_error:;
  __Pyx_AddTraceback("grpc._cython.cygrpc.ReceiveInitialMetadataOperation.__cinit__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return -1;
  __pyx_L4_argument_unpacking_done:;
  __pyx_r = __pyx_pf_4grpc_7_cython_6cygrpc_31ReceiveInitialMetadataOperation___cinit__(((struct __pyx_obj_4grpc_7_cython_6cygrpc_ReceiveInitialMetadataOperation *)__pyx_v_self), __pyx_v_flags);

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static int __pyx_pf_4grpc_7_cython_6cygrpc_31ReceiveInitialMetadataOperation___cinit__(struct __pyx_obj_4grpc_7_cython_6cygrpc_ReceiveInitialMetadataOperation *__pyx_v_self, PyObject *__pyx_v_flags) {
  int __pyx_r;
  __Pyx_RefNannyDeclarations
  int __pyx_t_1;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("__cinit__", 0);

  /* "src/python/grpcio/grpc/_cython/_cygrpc/operation.pyx.pxi":125
 * 
 *   def __cinit__(self, flags):
 *     self._flags = flags             # <<<<<<<<<<<<<<
 * 
 *   def type(self):
 */
  __pyx_t_1 = __Pyx_PyInt_As_int(__pyx_v_flags); if (unlikely((__pyx_t_1 == (int)-1) && PyErr_Occurred())) __PYX_ERR(19, 125, __pyx_L1_error)
  __pyx_v_self->_flags = __pyx_t_1;

  /* "src/python/grpcio/grpc/_cython/_cygrpc/operation.pyx.pxi":124
 * cdef class ReceiveInitialMetadataOperation(Operation):
 * 
 *   def __cinit__(self, flags):             # <<<<<<<<<<<<<<
 *     self._flags = flags
 * 
 */

  /* function exit code */
  __pyx_r = 0;
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_AddTraceback("grpc._cython.cygrpc.ReceiveInitialMetadataOperation.__cinit__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = -1;
  __pyx_L0:;
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "src/python/grpcio/grpc/_cython/_cygrpc/operation.pyx.pxi":127
 *     self._flags = flags
 * 
 *   def type(self):             # <<<<<<<<<<<<<<
 *     return GRPC_OP_RECV_INITIAL_METADATA
 * 
 */

/* Python wrapper */
static PyObject *__pyx_pw_4grpc_7_cython_6cygrpc_31ReceiveInitialMetadataOperation_3type(PyObject *__pyx_v_self, CYTHON_UNUSED PyObject *unused); /*proto*/
static PyObject *__pyx_pw_4grpc_7_cython_6cygrpc_31ReceiveInitialMetadataOperation_3type(PyObject *__pyx_v_self, CYTHON_UNUSED PyObject *unused) {
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("type (wrapper)", 0);
  __pyx_r = __pyx_pf_4grpc_7_cython_6cygrpc_31ReceiveInitialMetadataOperation_2type(((struct __pyx_obj_4grpc_7_cython_6cygrpc_ReceiveInitialMetadataOperation *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_4grpc_7_cython_6cygrpc_31ReceiveInitialMetadataOperation_2type(CYTHON_UNUSED struct __pyx_obj_4grpc_7_cython_6cygrpc_ReceiveInitialMetadataOperation *__pyx_v_self) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("type", 0);

  /* "src/python/grpcio/grpc/_cython/_cygrpc/operation.pyx.pxi":128
 * 
 *   def type(self):
 *     return GRPC_OP_RECV_INITIAL_METADATA             # <<<<<<<<<<<<<<
 * 
 *   cdef void c(self) except *:
 */
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_1 = __Pyx_PyInt_From_grpc_op_type(GRPC_OP_RECV_INITIAL_METADATA); if (unlikely(!__pyx_t_1)) __PYX_ERR(19, 128, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_r = __pyx_t_1;
  __pyx_t_1 = 0;
  goto __pyx_L0;

  /* "src/python/grpcio/grpc/_cython/_cygrpc/operation.pyx.pxi":127
 *     self._flags = flags
 * 
 *   def type(self):             # <<<<<<<<<<<<<<
 *     return GRPC_OP_RECV_INITIAL_METADATA
 * 
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_AddTraceback("grpc._cython.cygrpc.ReceiveInitialMetadataOperation.type", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "src/python/grpcio/grpc/_cython/_cygrpc/operation.pyx.pxi":130
 *     return GRPC_OP_RECV_INITIAL_METADATA
 * 
 *   cdef void c(self) except *:             # <<<<<<<<<<<<<<
 *     self.c_op.type = GRPC_OP_RECV_INITIAL_METADATA
 *     self.c_op.flags = self._flags
 */

static void __pyx_f_4grpc_7_cython_6cygrpc_31ReceiveInitialMetadataOperation_c(struct __pyx_obj_4grpc_7_cython_6cygrpc_ReceiveInitialMetadataOperation *__pyx_v_self) {
  __Pyx_RefNannyDeclarations
  int __pyx_t_1;
  __Pyx_RefNannySetupContext("c", 0);

  /* "src/python/grpcio/grpc/_cython/_cygrpc/operation.pyx.pxi":131
 * 
 *   cdef void c(self) except *:
 *     self.c_op.type = GRPC_OP_RECV_INITIAL_METADATA             # <<<<<<<<<<<<<<
 *     self.c_op.flags = self._flags
 *     grpc_metadata_array_init(&self._c_initial_metadata)
 */
  __pyx_v_self->__pyx_base.c_op.op = GRPC_OP_RECV_INITIAL_METADATA;

  /* "src/python/grpcio/grpc/_cython/_cygrpc/operation.pyx.pxi":132
 *   cdef void c(self) except *:
 *     self.c_op.type = GRPC_OP_RECV_INITIAL_METADATA
 *     self.c_op.flags = self._flags             # <<<<<<<<<<<<<<
 *     grpc_metadata_array_init(&self._c_initial_metadata)
 *     self.c_op.data.receive_initial_metadata.receive_initial_metadata = (
 */
  __pyx_t_1 = __pyx_v_self->_flags;
  __pyx_v_self->__pyx_base.c_op.flags = __pyx_t_1;

  /* "src/python/grpcio/grpc/_cython/_cygrpc/operation.pyx.pxi":133
 *     self.c_op.type = GRPC_OP_RECV_INITIAL_METADATA
 *     self.c_op.flags = self._flags
 *     grpc_metadata_array_init(&self._c_initial_metadata)             # <<<<<<<<<<<<<<
 *     self.c_op.data.receive_initial_metadata.receive_initial_metadata = (
 *         &self._c_initial_metadata)
 */
  grpc_metadata_array_init((&__pyx_v_self->_c_initial_metadata));

  /* "src/python/grpcio/grpc/_cython/_cygrpc/operation.pyx.pxi":134
 *     self.c_op.flags = self._flags
 *     grpc_metadata_array_init(&self._c_initial_metadata)
 *     self.c_op.data.receive_initial_metadata.receive_initial_metadata = (             # <<<<<<<<<<<<<<
 *         &self._c_initial_metadata)
 * 
 */
  __pyx_v_self->__pyx_base.c_op.data.recv_initial_metadata.recv_initial_metadata = (&__pyx_v_self->_c_initial_metadata);

  /* "src/python/grpcio/grpc/_cython/_cygrpc/operation.pyx.pxi":130
 *     return GRPC_OP_RECV_INITIAL_METADATA
 * 
 *   cdef void c(self) except *:             # <<<<<<<<<<<<<<
 *     self.c_op.type = GRPC_OP_RECV_INITIAL_METADATA
 *     self.c_op.flags = self._flags
 */

  /* function exit code */
  __Pyx_RefNannyFinishContext();
}

/* "src/python/grpcio/grpc/_cython/_cygrpc/operation.pyx.pxi":137
 *         &self._c_initial_metadata)
 * 
 *   cdef void un_c(self) except *:             # <<<<<<<<<<<<<<
 *     self._initial_metadata = _metadata(&self._c_initial_metadata)
 *     grpc_metadata_array_destroy(&self._c_initial_metadata)
 */

static void __pyx_f_4grpc_7_cython_6cygrpc_31ReceiveInitialMetadataOperation_un_c(struct __pyx_obj_4grpc_7_cython_6cygrpc_ReceiveInitialMetadataOperation *__pyx_v_self) {
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("un_c", 0);

  /* "src/python/grpcio/grpc/_cython/_cygrpc/operation.pyx.pxi":138
 * 
 *   cdef void un_c(self) except *:
 *     self._initial_metadata = _metadata(&self._c_initial_metadata)             # <<<<<<<<<<<<<<
 *     grpc_metadata_array_destroy(&self._c_initial_metadata)
 * 
 */
  __pyx_t_1 = __pyx_f_4grpc_7_cython_6cygrpc__metadata((&__pyx_v_self->_c_initial_metadata)); if (unlikely(!__pyx_t_1)) __PYX_ERR(19, 138, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_GIVEREF(__pyx_t_1);
  __Pyx_GOTREF(__pyx_v_self->_initial_metadata);
  __Pyx_DECREF(__pyx_v_self->_initial_metadata);
  __pyx_v_self->_initial_metadata = ((PyObject*)__pyx_t_1);
  __pyx_t_1 = 0;

  /* "src/python/grpcio/grpc/_cython/_cygrpc/operation.pyx.pxi":139
 *   cdef void un_c(self) except *:
 *     self._initial_metadata = _metadata(&self._c_initial_metadata)
 *     grpc_metadata_array_destroy(&self._c_initial_metadata)             # <<<<<<<<<<<<<<
 * 
 *   def initial_metadata(self):
 */
  grpc_metadata_array_destroy((&__pyx_v_self->_c_initial_metadata));

  /* "src/python/grpcio/grpc/_cython/_cygrpc/operation.pyx.pxi":137
 *         &self._c_initial_metadata)
 * 
 *   cdef void un_c(self) except *:             # <<<<<<<<<<<<<<
 *     self._initial_metadata = _metadata(&self._c_initial_metadata)
 *     grpc_metadata_array_destroy(&self._c_initial_metadata)
 */

  /* function exit code */
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_AddTraceback("grpc._cython.cygrpc.ReceiveInitialMetadataOperation.un_c", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_L0:;
  __Pyx_RefNannyFinishContext();
}

/* "src/python/grpcio/grpc/_cython/_cygrpc/operation.pyx.pxi":141
 *     grpc_metadata_array_destroy(&self._c_initial_metadata)
 * 
 *   def initial_metadata(self):             # <<<<<<<<<<<<<<
 *     return self._initial_metadata
 * 
 */

/* Python wrapper */
static PyObject *__pyx_pw_4grpc_7_cython_6cygrpc_31ReceiveInitialMetadataOperation_5initial_metadata(PyObject *__pyx_v_self, CYTHON_UNUSED PyObject *unused); /*proto*/
static PyObject *__pyx_pw_4grpc_7_cython_6cygrpc_31ReceiveInitialMetadataOperation_5initial_metadata(PyObject *__pyx_v_self, CYTHON_UNUSED PyObject *unused) {
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("initial_metadata (wrapper)", 0);
  __pyx_r = __pyx_pf_4grpc_7_cython_6cygrpc_31ReceiveInitialMetadataOperation_4initial_metadata(((struct __pyx_obj_4grpc_7_cython_6cygrpc_ReceiveInitialMetadataOperation *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_4grpc_7_cython_6cygrpc_31ReceiveInitialMetadataOperation_4initial_metadata(struct __pyx_obj_4grpc_7_cython_6cygrpc_ReceiveInitialMetadataOperation *__pyx_v_self) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("initial_metadata", 0);

  /* "src/python/grpcio/grpc/_cython/_cygrpc/operation.pyx.pxi":142
 * 
 *   def initial_metadata(self):
 *     return self._initial_metadata             # <<<<<<<<<<<<<<
 * 
 * 
 */
  __Pyx_XDECREF(__pyx_r);
  __Pyx_INCREF(__pyx_v_self->_initial_metadata);
  __pyx_r = __pyx_v_self->_initial_metadata;
  goto __pyx_L0;

  /* "src/python/grpcio/grpc/_cython/_cygrpc/operation.pyx.pxi":141
 *     grpc_metadata_array_destroy(&self._c_initial_metadata)
 * 
 *   def initial_metadata(self):             # <<<<<<<<<<<<<<
 *     return self._initial_metadata
 * 
 */

  /* function exit code */
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "src/python/grpcio/grpc/_cython/_cygrpc/operation.pxd.pxi":70
 * cdef class ReceiveInitialMetadataOperation(Operation):
 * 
 *   cdef readonly int _flags             # <<<<<<<<<<<<<<
 *   cdef tuple _initial_metadata
 *   cdef grpc_metadata_array _c_initial_metadata
 */

/* Python wrapper */
static PyObject *__pyx_pw_4grpc_7_cython_6cygrpc_31ReceiveInitialMetadataOperation_6_flags_1__get__(PyObject *__pyx_v_self); /*proto*/
static PyObject *__pyx_pw_4grpc_7_cython_6cygrpc_31ReceiveInitialMetadataOperation_6_flags_1__get__(PyObject *__pyx_v_self) {
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__get__ (wrapper)", 0);
  __pyx_r = __pyx_pf_4grpc_7_cython_6cygrpc_31ReceiveInitialMetadataOperation_6_flags___get__(((struct __pyx_obj_4grpc_7_cython_6cygrpc_ReceiveInitialMetadataOperation *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_4grpc_7_cython_6cygrpc_31ReceiveInitialMetadataOperation_6_flags___get__(struct __pyx_obj_4grpc_7_cython_6cygrpc_ReceiveInitialMetadataOperation *__pyx_v_self) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("__get__", 0);
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_1 = __Pyx_PyInt_From_int(__pyx_v_self->_flags); if (unlikely(!__pyx_t_1)) __PYX_ERR(20, 70, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_r = __pyx_t_1;
  __pyx_t_1 = 0;
  goto __pyx_L0;

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_AddTraceback("grpc._cython.cygrpc.ReceiveInitialMetadataOperation._flags.__get__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "(tree fragment)":1
 * def __reduce_cython__(self):             # <<<<<<<<<<<<<<
 *     raise TypeError("no default __reduce__ due to non-trivial __cinit__")
 * def __setstate_cython__(self, __pyx_state):
 */

/* Python wrapper */
static PyObject *__pyx_pw_4grpc_7_cython_6cygrpc_31ReceiveInitialMetadataOperation_7__reduce_cython__(PyObject *__pyx_v_self, CYTHON_UNUSED PyObject *unused); /*proto*/
static PyObject *__pyx_pw_4grpc_7_cython_6cygrpc_31ReceiveInitialMetadataOperation_7__reduce_cython__(PyObject *__pyx_v_self, CYTHON_UNUSED PyObject *unused) {
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__reduce_cython__ (wrapper)", 0);
  __pyx_r = __pyx_pf_4grpc_7_cython_6cygrpc_31ReceiveInitialMetadataOperation_6__reduce_cython__(((struct __pyx_obj_4grpc_7_cython_6cygrpc_ReceiveInitialMetadataOperation *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_4grpc_7_cython_6cygrpc_31ReceiveInitialMetadataOperation_6__reduce_cython__(CYTHON_UNUSED struct __pyx_obj_4grpc_7_cython_6cygrpc_ReceiveInitialMetadataOperation *__pyx_v_self) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("__reduce_cython__", 0);

  /* "(tree fragment)":2
 * def __reduce_cython__(self):
 *     raise TypeError("no default __reduce__ due to non-trivial __cinit__")             # <<<<<<<<<<<<<<
 * def __setstate_cython__(self, __pyx_state):
 *     raise TypeError("no default __reduce__ due to non-trivial __cinit__")
 */
  __pyx_t_1 = __Pyx_PyObject_Call(__pyx_builtin_TypeError, __pyx_tuple__86, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(11, 2, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_Raise(__pyx_t_1, 0, 0, 0);
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  __PYX_ERR(11, 2, __pyx_L1_error)

  /* "(tree fragment)":1
 * def __reduce_cython__(self):             # <<<<<<<<<<<<<<
 *     raise TypeError("no default __reduce__ due to non-trivial __cinit__")
 * def __setstate_cython__(self, __pyx_state):
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_AddTraceback("grpc._cython.cygrpc.ReceiveInitialMetadataOperation.__reduce_cython__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "(tree fragment)":3
 * def __reduce_cython__(self):
 *     raise TypeError("no default __reduce__ due to non-trivial __cinit__")
 * def __setstate_cython__(self, __pyx_state):             # <<<<<<<<<<<<<<
 *     raise TypeError("no default __reduce__ due to non-trivial __cinit__")
 */

/* Python wrapper */
static PyObject *__pyx_pw_4grpc_7_cython_6cygrpc_31ReceiveInitialMetadataOperation_9__setstate_cython__(PyObject *__pyx_v_self, PyObject *__pyx_v___pyx_state); /*proto*/
static PyObject *__pyx_pw_4grpc_7_cython_6cygrpc_31ReceiveInitialMetadataOperation_9__setstate_cython__(PyObject *__pyx_v_self, PyObject *__pyx_v___pyx_state) {
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__setstate_cython__ (wrapper)", 0);
  __pyx_r = __pyx_pf_4grpc_7_cython_6cygrpc_31ReceiveInitialMetadataOperation_8__setstate_cython__(((struct __pyx_obj_4grpc_7_cython_6cygrpc_ReceiveInitialMetadataOperation *)__pyx_v_self), ((PyObject *)__pyx_v___pyx_state));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_4grpc_7_cython_6cygrpc_31ReceiveInitialMetadataOperation_8__setstate_cython__(CYTHON_UNUSED struct __pyx_obj_4grpc_7_cython_6cygrpc_ReceiveInitialMetadataOperation *__pyx_v_self, CYTHON_UNUSED PyObject *__pyx_v___pyx_state) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("__setstate_cython__", 0);

  /* "(tree fragment)":4
 *     raise TypeError("no default __reduce__ due to non-trivial __cinit__")
 * def __setstate_cython__(self, __pyx_state):
 *     raise TypeError("no default __reduce__ due to non-trivial __cinit__")             # <<<<<<<<<<<<<<
 */
  __pyx_t_1 = __Pyx_PyObject_Call(__pyx_builtin_TypeError, __pyx_tuple__87, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(11, 4, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_Raise(__pyx_t_1, 0, 0, 0);
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  __PYX_ERR(11, 4, __pyx_L1_error)

  /* "(tree fragment)":3
 * def __reduce_cython__(self):
 *     raise TypeError("no default __reduce__ due to non-trivial __cinit__")
 * def __setstate_cython__(self, __pyx_state):             # <<<<<<<<<<<<<<
 *     raise TypeError("no default __reduce__ due to non-trivial __cinit__")
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_AddTraceback("grpc._cython.cygrpc.ReceiveInitialMetadataOperation.__setstate_cython__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "src/python/grpcio/grpc/_cython/_cygrpc/operation.pyx.pxi":147
 * cdef class ReceiveMessageOperation(Operation):
 * 
 *   def __cinit__(self, flags):             # <<<<<<<<<<<<<<
 *     self._flags = flags
 * 
 */

/* Python wrapper */
static int __pyx_pw_4grpc_7_cython_6cygrpc_23ReceiveMessageOperation_1__cinit__(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
static int __pyx_pw_4grpc_7_cython_6cygrpc_23ReceiveMessageOperation_1__cinit__(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
  PyObject *__pyx_v_flags = 0;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  int __pyx_r;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__cinit__ (wrapper)", 0);
  {
    static PyObject **__pyx_pyargnames[] = {&__pyx_n_s_flags,0};
    PyObject* values[1] = {0};
    if (unlikely(__pyx_kwds)) {
      Py_ssize_t kw_args;
      const Py_ssize_t pos_args = PyTuple_GET_SIZE(__pyx_args);
      switch (pos_args) {
        case  1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
        CYTHON_FALLTHROUGH;
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      kw_args = PyDict_Size(__pyx_kwds);
      switch (pos_args) {
        case  0:
        if (likely((values[0] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_flags)) != 0)) kw_args--;
        else goto __pyx_L5_argtuple_error;
      }
      if (unlikely(kw_args > 0)) {
        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "__cinit__") < 0)) __PYX_ERR(19, 147, __pyx_L3_error)
      }
    } else if (PyTuple_GET_SIZE(__pyx_args) != 1) {
      goto __pyx_L5_argtuple_error;
    } else {
      values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
    }
    __pyx_v_flags = values[0];
  }
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("__cinit__", 1, 1, 1, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(19, 147, __pyx_L3_error)
  __pyx_L3_error:;
  __Pyx_AddTraceback("grpc._cython.cygrpc.ReceiveMessageOperation.__cinit__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return -1;
  __pyx_L4_argument_unpacking_done:;
  __pyx_r = __pyx_pf_4grpc_7_cython_6cygrpc_23ReceiveMessageOperation___cinit__(((struct __pyx_obj_4grpc_7_cython_6cygrpc_ReceiveMessageOperation *)__pyx_v_self), __pyx_v_flags);

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static int __pyx_pf_4grpc_7_cython_6cygrpc_23ReceiveMessageOperation___cinit__(struct __pyx_obj_4grpc_7_cython_6cygrpc_ReceiveMessageOperation *__pyx_v_self, PyObject *__pyx_v_flags) {
  int __pyx_r;
  __Pyx_RefNannyDeclarations
  int __pyx_t_1;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("__cinit__", 0);

  /* "src/python/grpcio/grpc/_cython/_cygrpc/operation.pyx.pxi":148
 * 
 *   def __cinit__(self, flags):
 *     self._flags = flags             # <<<<<<<<<<<<<<
 * 
 *   def type(self):
 */
  __pyx_t_1 = __Pyx_PyInt_As_int(__pyx_v_flags); if (unlikely((__pyx_t_1 == (int)-1) && PyErr_Occurred())) __PYX_ERR(19, 148, __pyx_L1_error)
  __pyx_v_self->_flags = __pyx_t_1;

  /* "src/python/grpcio/grpc/_cython/_cygrpc/operation.pyx.pxi":147
 * cdef class ReceiveMessageOperation(Operation):
 * 
 *   def __cinit__(self, flags):             # <<<<<<<<<<<<<<
 *     self._flags = flags
 * 
 */

  /* function exit code */
  __pyx_r = 0;
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_AddTraceback("grpc._cython.cygrpc.ReceiveMessageOperation.__cinit__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = -1;
  __pyx_L0:;
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "src/python/grpcio/grpc/_cython/_cygrpc/operation.pyx.pxi":150
 *     self._flags = flags
 * 
 *   def type(self):             # <<<<<<<<<<<<<<
 *     return GRPC_OP_RECV_MESSAGE
 * 
 */

/* Python wrapper */
static PyObject *__pyx_pw_4grpc_7_cython_6cygrpc_23ReceiveMessageOperation_3type(PyObject *__pyx_v_self, CYTHON_UNUSED PyObject *unused); /*proto*/
static PyObject *__pyx_pw_4grpc_7_cython_6cygrpc_23ReceiveMessageOperation_3type(PyObject *__pyx_v_self, CYTHON_UNUSED PyObject *unused) {
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("type (wrapper)", 0);
  __pyx_r = __pyx_pf_4grpc_7_cython_6cygrpc_23ReceiveMessageOperation_2type(((struct __pyx_obj_4grpc_7_cython_6cygrpc_ReceiveMessageOperation *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_4grpc_7_cython_6cygrpc_23ReceiveMessageOperation_2type(CYTHON_UNUSED struct __pyx_obj_4grpc_7_cython_6cygrpc_ReceiveMessageOperation *__pyx_v_self) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("type", 0);

  /* "src/python/grpcio/grpc/_cython/_cygrpc/operation.pyx.pxi":151
 * 
 *   def type(self):
 *     return GRPC_OP_RECV_MESSAGE             # <<<<<<<<<<<<<<
 * 
 *   cdef void c(self) except *:
 */
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_1 = __Pyx_PyInt_From_grpc_op_type(GRPC_OP_RECV_MESSAGE); if (unlikely(!__pyx_t_1)) __PYX_ERR(19, 151, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_r = __pyx_t_1;
  __pyx_t_1 = 0;
  goto __pyx_L0;

  /* "src/python/grpcio/grpc/_cython/_cygrpc/operation.pyx.pxi":150
 *     self._flags = flags
 * 
 *   def type(self):             # <<<<<<<<<<<<<<
 *     return GRPC_OP_RECV_MESSAGE
 * 
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_AddTraceback("grpc._cython.cygrpc.ReceiveMessageOperation.type", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "src/python/grpcio/grpc/_cython/_cygrpc/operation.pyx.pxi":153
 *     return GRPC_OP_RECV_MESSAGE
 * 
 *   cdef void c(self) except *:             # <<<<<<<<<<<<<<
 *     self.c_op.type = GRPC_OP_RECV_MESSAGE
 *     self.c_op.flags = self._flags
 */

static void __pyx_f_4grpc_7_cython_6cygrpc_23ReceiveMessageOperation_c(struct __pyx_obj_4grpc_7_cython_6cygrpc_ReceiveMessageOperation *__pyx_v_self) {
  __Pyx_RefNannyDeclarations
  int __pyx_t_1;
  __Pyx_RefNannySetupContext("c", 0);

  /* "src/python/grpcio/grpc/_cython/_cygrpc/operation.pyx.pxi":154
 * 
 *   cdef void c(self) except *:
 *     self.c_op.type = GRPC_OP_RECV_MESSAGE             # <<<<<<<<<<<<<<
 *     self.c_op.flags = self._flags
 *     self.c_op.data.receive_message.receive_message = (
 */
  __pyx_v_self->__pyx_base.c_op.op = GRPC_OP_RECV_MESSAGE;

  /* "src/python/grpcio/grpc/_cython/_cygrpc/operation.pyx.pxi":155
 *   cdef void c(self) except *:
 *     self.c_op.type = GRPC_OP_RECV_MESSAGE
 *     self.c_op.flags = self._flags             # <<<<<<<<<<<<<<
 *     self.c_op.data.receive_message.receive_message = (
 *         &self._c_message_byte_buffer)
 */
  __pyx_t_1 = __pyx_v_self->_flags;
  __pyx_v_self->__pyx_base.c_op.flags = __pyx_t_1;

  /* "src/python/grpcio/grpc/_cython/_cygrpc/operation.pyx.pxi":156
 *     self.c_op.type = GRPC_OP_RECV_MESSAGE
 *     self.c_op.flags = self._flags
 *     self.c_op.data.receive_message.receive_message = (             # <<<<<<<<<<<<<<
 *         &self._c_message_byte_buffer)
 * 
 */
  __pyx_v_self->__pyx_base.c_op.data.recv_message.recv_message = (&__pyx_v_self->_c_message_byte_buffer);

  /* "src/python/grpcio/grpc/_cython/_cygrpc/operation.pyx.pxi":153
 *     return GRPC_OP_RECV_MESSAGE
 * 
 *   cdef void c(self) except *:             # <<<<<<<<<<<<<<
 *     self.c_op.type = GRPC_OP_RECV_MESSAGE
 *     self.c_op.flags = self._flags
 */

  /* function exit code */
  __Pyx_RefNannyFinishContext();
}

/* "src/python/grpcio/grpc/_cython/_cygrpc/operation.pyx.pxi":159
 *         &self._c_message_byte_buffer)
 * 
 *   cdef void un_c(self) except *:             # <<<<<<<<<<<<<<
 *     cdef grpc_byte_buffer_reader message_reader
 *     cdef bint message_reader_status
 */

static void __pyx_f_4grpc_7_cython_6cygrpc_23ReceiveMessageOperation_un_c(struct __pyx_obj_4grpc_7_cython_6cygrpc_ReceiveMessageOperation *__pyx_v_self) {
  struct grpc_byte_buffer_reader __pyx_v_message_reader;
  int __pyx_v_message_reader_status;
  grpc_slice __pyx_v_message_slice;
  size_t __pyx_v_message_slice_length;
  void *__pyx_v_message_slice_pointer;
  PyObject *__pyx_v_message = NULL;
  __Pyx_RefNannyDeclarations
  int __pyx_t_1;
  PyObject *__pyx_t_2 = NULL;
  PyObject *__pyx_t_3 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("un_c", 0);

  /* "src/python/grpcio/grpc/_cython/_cygrpc/operation.pyx.pxi":165
 *     cdef size_t message_slice_length
 *     cdef void *message_slice_pointer
 *     if self._c_message_byte_buffer != NULL:             # <<<<<<<<<<<<<<
 *       message_reader_status = grpc_byte_buffer_reader_init(
 *           &message_reader, self._c_message_byte_buffer)
 */
  __pyx_t_1 = ((__pyx_v_self->_c_message_byte_buffer != NULL) != 0);
  if (__pyx_t_1) {

    /* "src/python/grpcio/grpc/_cython/_cygrpc/operation.pyx.pxi":166
 *     cdef void *message_slice_pointer
 *     if self._c_message_byte_buffer != NULL:
 *       message_reader_status = grpc_byte_buffer_reader_init(             # <<<<<<<<<<<<<<
 *           &message_reader, self._c_message_byte_buffer)
 *       if message_reader_status:
 */
    __pyx_v_message_reader_status = grpc_byte_buffer_reader_init((&__pyx_v_message_reader), __pyx_v_self->_c_message_byte_buffer);

    /* "src/python/grpcio/grpc/_cython/_cygrpc/operation.pyx.pxi":168
 *       message_reader_status = grpc_byte_buffer_reader_init(
 *           &message_reader, self._c_message_byte_buffer)
 *       if message_reader_status:             # <<<<<<<<<<<<<<
 *         message = bytearray()
 *         while grpc_byte_buffer_reader_next(&message_reader, &message_slice):
 */
    __pyx_t_1 = (__pyx_v_message_reader_status != 0);
    if (__pyx_t_1) {

      /* "src/python/grpcio/grpc/_cython/_cygrpc/operation.pyx.pxi":169
 *           &message_reader, self._c_message_byte_buffer)
 *       if message_reader_status:
 *         message = bytearray()             # <<<<<<<<<<<<<<
 *         while grpc_byte_buffer_reader_next(&message_reader, &message_slice):
 *           message_slice_pointer = grpc_slice_start_ptr(message_slice)
 */
      __pyx_t_2 = __Pyx_PyObject_CallNoArg(((PyObject *)(&PyByteArray_Type))); if (unlikely(!__pyx_t_2)) __PYX_ERR(19, 169, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_2);
      __pyx_v_message = ((PyObject*)__pyx_t_2);
      __pyx_t_2 = 0;

      /* "src/python/grpcio/grpc/_cython/_cygrpc/operation.pyx.pxi":170
 *       if message_reader_status:
 *         message = bytearray()
 *         while grpc_byte_buffer_reader_next(&message_reader, &message_slice):             # <<<<<<<<<<<<<<
 *           message_slice_pointer = grpc_slice_start_ptr(message_slice)
 *           message_slice_length = grpc_slice_length(message_slice)
 */
      while (1) {
        __pyx_t_1 = (grpc_byte_buffer_reader_next((&__pyx_v_message_reader), (&__pyx_v_message_slice)) != 0);
        if (!__pyx_t_1) break;

        /* "src/python/grpcio/grpc/_cython/_cygrpc/operation.pyx.pxi":171
 *         message = bytearray()
 *         while grpc_byte_buffer_reader_next(&message_reader, &message_slice):
 *           message_slice_pointer = grpc_slice_start_ptr(message_slice)             # <<<<<<<<<<<<<<
 *           message_slice_length = grpc_slice_length(message_slice)
 *           message += (<char *>message_slice_pointer)[:message_slice_length]
 */
        __pyx_v_message_slice_pointer = GRPC_SLICE_START_PTR(__pyx_v_message_slice);

        /* "src/python/grpcio/grpc/_cython/_cygrpc/operation.pyx.pxi":172
 *         while grpc_byte_buffer_reader_next(&message_reader, &message_slice):
 *           message_slice_pointer = grpc_slice_start_ptr(message_slice)
 *           message_slice_length = grpc_slice_length(message_slice)             # <<<<<<<<<<<<<<
 *           message += (<char *>message_slice_pointer)[:message_slice_length]
 *           grpc_slice_unref(message_slice)
 */
        __pyx_v_message_slice_length = GRPC_SLICE_LENGTH(__pyx_v_message_slice);

        /* "src/python/grpcio/grpc/_cython/_cygrpc/operation.pyx.pxi":173
 *           message_slice_pointer = grpc_slice_start_ptr(message_slice)
 *           message_slice_length = grpc_slice_length(message_slice)
 *           message += (<char *>message_slice_pointer)[:message_slice_length]             # <<<<<<<<<<<<<<
 *           grpc_slice_unref(message_slice)
 *         grpc_byte_buffer_reader_destroy(&message_reader)
 */
        __pyx_t_2 = __Pyx_PyBytes_FromStringAndSize(((char *)__pyx_v_message_slice_pointer) + 0, __pyx_v_message_slice_length - 0); if (unlikely(!__pyx_t_2)) __PYX_ERR(19, 173, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_2);
        __pyx_t_3 = PyNumber_InPlaceAdd(__pyx_v_message, __pyx_t_2); if (unlikely(!__pyx_t_3)) __PYX_ERR(19, 173, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_3);
        __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
        __Pyx_DECREF_SET(__pyx_v_message, ((PyObject*)__pyx_t_3));
        __pyx_t_3 = 0;

        /* "src/python/grpcio/grpc/_cython/_cygrpc/operation.pyx.pxi":174
 *           message_slice_length = grpc_slice_length(message_slice)
 *           message += (<char *>message_slice_pointer)[:message_slice_length]
 *           grpc_slice_unref(message_slice)             # <<<<<<<<<<<<<<
 *         grpc_byte_buffer_reader_destroy(&message_reader)
 *         self._message = bytes(message)
 */
        grpc_slice_unref(__pyx_v_message_slice);
      }

      /* "src/python/grpcio/grpc/_cython/_cygrpc/operation.pyx.pxi":175
 *           message += (<char *>message_slice_pointer)[:message_slice_length]
 *           grpc_slice_unref(message_slice)
 *         grpc_byte_buffer_reader_destroy(&message_reader)             # <<<<<<<<<<<<<<
 *         self._message = bytes(message)
 *       else:
 */
      grpc_byte_buffer_reader_destroy((&__pyx_v_message_reader));

      /* "src/python/grpcio/grpc/_cython/_cygrpc/operation.pyx.pxi":176
 *           grpc_slice_unref(message_slice)
 *         grpc_byte_buffer_reader_destroy(&message_reader)
 *         self._message = bytes(message)             # <<<<<<<<<<<<<<
 *       else:
 *         self._message = None
 */
      __pyx_t_3 = __Pyx_PyObject_CallOneArg(((PyObject *)(&PyBytes_Type)), __pyx_v_message); if (unlikely(!__pyx_t_3)) __PYX_ERR(19, 176, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_3);
      __Pyx_GIVEREF(__pyx_t_3);
      __Pyx_GOTREF(__pyx_v_self->_message);
      __Pyx_DECREF(__pyx_v_self->_message);
      __pyx_v_self->_message = ((PyObject*)__pyx_t_3);
      __pyx_t_3 = 0;

      /* "src/python/grpcio/grpc/_cython/_cygrpc/operation.pyx.pxi":168
 *       message_reader_status = grpc_byte_buffer_reader_init(
 *           &message_reader, self._c_message_byte_buffer)
 *       if message_reader_status:             # <<<<<<<<<<<<<<
 *         message = bytearray()
 *         while grpc_byte_buffer_reader_next(&message_reader, &message_slice):
 */
      goto __pyx_L4;
    }

    /* "src/python/grpcio/grpc/_cython/_cygrpc/operation.pyx.pxi":178
 *         self._message = bytes(message)
 *       else:
 *         self._message = None             # <<<<<<<<<<<<<<
 *       grpc_byte_buffer_destroy(self._c_message_byte_buffer)
 *     else:
 */
    /*else*/ {
      __Pyx_INCREF(Py_None);
      __Pyx_GIVEREF(Py_None);
      __Pyx_GOTREF(__pyx_v_self->_message);
      __Pyx_DECREF(__pyx_v_self->_message);
      __pyx_v_self->_message = ((PyObject*)Py_None);
    }
    __pyx_L4:;

    /* "src/python/grpcio/grpc/_cython/_cygrpc/operation.pyx.pxi":179
 *       else:
 *         self._message = None
 *       grpc_byte_buffer_destroy(self._c_message_byte_buffer)             # <<<<<<<<<<<<<<
 *     else:
 *       self._message = None
 */
    grpc_byte_buffer_destroy(__pyx_v_self->_c_message_byte_buffer);

    /* "src/python/grpcio/grpc/_cython/_cygrpc/operation.pyx.pxi":165
 *     cdef size_t message_slice_length
 *     cdef void *message_slice_pointer
 *     if self._c_message_byte_buffer != NULL:             # <<<<<<<<<<<<<<
 *       message_reader_status = grpc_byte_buffer_reader_init(
 *           &message_reader, self._c_message_byte_buffer)
 */
    goto __pyx_L3;
  }

  /* "src/python/grpcio/grpc/_cython/_cygrpc/operation.pyx.pxi":181
 *       grpc_byte_buffer_destroy(self._c_message_byte_buffer)
 *     else:
 *       self._message = None             # <<<<<<<<<<<<<<
 * 
 *   def message(self):
 */
  /*else*/ {
    __Pyx_INCREF(Py_None);
    __Pyx_GIVEREF(Py_None);
    __Pyx_GOTREF(__pyx_v_self->_message);
    __Pyx_DECREF(__pyx_v_self->_message);
    __pyx_v_self->_message = ((PyObject*)Py_None);
  }
  __pyx_L3:;

  /* "src/python/grpcio/grpc/_cython/_cygrpc/operation.pyx.pxi":159
 *         &self._c_message_byte_buffer)
 * 
 *   cdef void un_c(self) except *:             # <<<<<<<<<<<<<<
 *     cdef grpc_byte_buffer_reader message_reader
 *     cdef bint message_reader_status
 */

  /* function exit code */
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_XDECREF(__pyx_t_3);
  __Pyx_AddTraceback("grpc._cython.cygrpc.ReceiveMessageOperation.un_c", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_L0:;
  __Pyx_XDECREF(__pyx_v_message);
  __Pyx_RefNannyFinishContext();
}

/* "src/python/grpcio/grpc/_cython/_cygrpc/operation.pyx.pxi":183
 *       self._message = None
 * 
 *   def message(self):             # <<<<<<<<<<<<<<
 *     return self._message
 * 
 */

/* Python wrapper */
static PyObject *__pyx_pw_4grpc_7_cython_6cygrpc_23ReceiveMessageOperation_5message(PyObject *__pyx_v_self, CYTHON_UNUSED PyObject *unused); /*proto*/
static PyObject *__pyx_pw_4grpc_7_cython_6cygrpc_23ReceiveMessageOperation_5message(PyObject *__pyx_v_self, CYTHON_UNUSED PyObject *unused) {
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("message (wrapper)", 0);
  __pyx_r = __pyx_pf_4grpc_7_cython_6cygrpc_23ReceiveMessageOperation_4message(((struct __pyx_obj_4grpc_7_cython_6cygrpc_ReceiveMessageOperation *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_4grpc_7_cython_6cygrpc_23ReceiveMessageOperation_4message(struct __pyx_obj_4grpc_7_cython_6cygrpc_ReceiveMessageOperation *__pyx_v_self) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("message", 0);

  /* "src/python/grpcio/grpc/_cython/_cygrpc/operation.pyx.pxi":184
 * 
 *   def message(self):
 *     return self._message             # <<<<<<<<<<<<<<
 * 
 * 
 */
  __Pyx_XDECREF(__pyx_r);
  __Pyx_INCREF(__pyx_v_self->_message);
  __pyx_r = __pyx_v_self->_message;
  goto __pyx_L0;

  /* "src/python/grpcio/grpc/_cython/_cygrpc/operation.pyx.pxi":183
 *       self._message = None
 * 
 *   def message(self):             # <<<<<<<<<<<<<<
 *     return self._message
 * 
 */

  /* function exit code */
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "src/python/grpcio/grpc/_cython/_cygrpc/operation.pxd.pxi":80
 * cdef class ReceiveMessageOperation(Operation):
 * 
 *   cdef readonly int _flags             # <<<<<<<<<<<<<<
 *   cdef grpc_byte_buffer *_c_message_byte_buffer
 *   cdef bytes _message
 */

/* Python wrapper */
static PyObject *__pyx_pw_4grpc_7_cython_6cygrpc_23ReceiveMessageOperation_6_flags_1__get__(PyObject *__pyx_v_self); /*proto*/
static PyObject *__pyx_pw_4grpc_7_cython_6cygrpc_23ReceiveMessageOperation_6_flags_1__get__(PyObject *__pyx_v_self) {
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__get__ (wrapper)", 0);
  __pyx_r = __pyx_pf_4grpc_7_cython_6cygrpc_23ReceiveMessageOperation_6_flags___get__(((struct __pyx_obj_4grpc_7_cython_6cygrpc_ReceiveMessageOperation *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_4grpc_7_cython_6cygrpc_23ReceiveMessageOperation_6_flags___get__(struct __pyx_obj_4grpc_7_cython_6cygrpc_ReceiveMessageOperation *__pyx_v_self) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("__get__", 0);
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_1 = __Pyx_PyInt_From_int(__pyx_v_self->_flags); if (unlikely(!__pyx_t_1)) __PYX_ERR(20, 80, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_r = __pyx_t_1;
  __pyx_t_1 = 0;
  goto __pyx_L0;

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_AddTraceback("grpc._cython.cygrpc.ReceiveMessageOperation._flags.__get__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "(tree fragment)":1
 * def __reduce_cython__(self):             # <<<<<<<<<<<<<<
 *     raise TypeError("no default __reduce__ due to non-trivial __cinit__")
 * def __setstate_cython__(self, __pyx_state):
 */

/* Python wrapper */
static PyObject *__pyx_pw_4grpc_7_cython_6cygrpc_23ReceiveMessageOperation_7__reduce_cython__(PyObject *__pyx_v_self, CYTHON_UNUSED PyObject *unused); /*proto*/
static PyObject *__pyx_pw_4grpc_7_cython_6cygrpc_23ReceiveMessageOperation_7__reduce_cython__(PyObject *__pyx_v_self, CYTHON_UNUSED PyObject *unused) {
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__reduce_cython__ (wrapper)", 0);
  __pyx_r = __pyx_pf_4grpc_7_cython_6cygrpc_23ReceiveMessageOperation_6__reduce_cython__(((struct __pyx_obj_4grpc_7_cython_6cygrpc_ReceiveMessageOperation *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_4grpc_7_cython_6cygrpc_23ReceiveMessageOperation_6__reduce_cython__(CYTHON_UNUSED struct __pyx_obj_4grpc_7_cython_6cygrpc_ReceiveMessageOperation *__pyx_v_self) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("__reduce_cython__", 0);

  /* "(tree fragment)":2
 * def __reduce_cython__(self):
 *     raise TypeError("no default __reduce__ due to non-trivial __cinit__")             # <<<<<<<<<<<<<<
 * def __setstate_cython__(self, __pyx_state):
 *     raise TypeError("no default __reduce__ due to non-trivial __cinit__")
 */
  __pyx_t_1 = __Pyx_PyObject_Call(__pyx_builtin_TypeError, __pyx_tuple__88, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(11, 2, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_Raise(__pyx_t_1, 0, 0, 0);
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  __PYX_ERR(11, 2, __pyx_L1_error)

  /* "(tree fragment)":1
 * def __reduce_cython__(self):             # <<<<<<<<<<<<<<
 *     raise TypeError("no default __reduce__ due to non-trivial __cinit__")
 * def __setstate_cython__(self, __pyx_state):
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_AddTraceback("grpc._cython.cygrpc.ReceiveMessageOperation.__reduce_cython__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "(tree fragment)":3
 * def __reduce_cython__(self):
 *     raise TypeError("no default __reduce__ due to non-trivial __cinit__")
 * def __setstate_cython__(self, __pyx_state):             # <<<<<<<<<<<<<<
 *     raise TypeError("no default __reduce__ due to non-trivial __cinit__")
 */

/* Python wrapper */
static PyObject *__pyx_pw_4grpc_7_cython_6cygrpc_23ReceiveMessageOperation_9__setstate_cython__(PyObject *__pyx_v_self, PyObject *__pyx_v___pyx_state); /*proto*/
static PyObject *__pyx_pw_4grpc_7_cython_6cygrpc_23ReceiveMessageOperation_9__setstate_cython__(PyObject *__pyx_v_self, PyObject *__pyx_v___pyx_state) {
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__setstate_cython__ (wrapper)", 0);
  __pyx_r = __pyx_pf_4grpc_7_cython_6cygrpc_23ReceiveMessageOperation_8__setstate_cython__(((struct __pyx_obj_4grpc_7_cython_6cygrpc_ReceiveMessageOperation *)__pyx_v_self), ((PyObject *)__pyx_v___pyx_state));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_4grpc_7_cython_6cygrpc_23ReceiveMessageOperation_8__setstate_cython__(CYTHON_UNUSED struct __pyx_obj_4grpc_7_cython_6cygrpc_ReceiveMessageOperation *__pyx_v_self, CYTHON_UNUSED PyObject *__pyx_v___pyx_state) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("__setstate_cython__", 0);

  /* "(tree fragment)":4
 *     raise TypeError("no default __reduce__ due to non-trivial __cinit__")
 * def __setstate_cython__(self, __pyx_state):
 *     raise TypeError("no default __reduce__ due to non-trivial __cinit__")             # <<<<<<<<<<<<<<
 */
  __pyx_t_1 = __Pyx_PyObject_Call(__pyx_builtin_TypeError, __pyx_tuple__89, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(11, 4, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_Raise(__pyx_t_1, 0, 0, 0);
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  __PYX_ERR(11, 4, __pyx_L1_error)

  /* "(tree fragment)":3
 * def __reduce_cython__(self):
 *     raise TypeError("no default __reduce__ due to non-trivial __cinit__")
 * def __setstate_cython__(self, __pyx_state):             # <<<<<<<<<<<<<<
 *     raise TypeError("no default __reduce__ due to non-trivial __cinit__")
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_AddTraceback("grpc._cython.cygrpc.ReceiveMessageOperation.__setstate_cython__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "src/python/grpcio/grpc/_cython/_cygrpc/operation.pyx.pxi":189
 * cdef class ReceiveStatusOnClientOperation(Operation):
 * 
 *   def __cinit__(self, flags):             # <<<<<<<<<<<<<<
 *     self._flags = flags
 * 
 */

/* Python wrapper */
static int __pyx_pw_4grpc_7_cython_6cygrpc_30ReceiveStatusOnClientOperation_1__cinit__(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
static int __pyx_pw_4grpc_7_cython_6cygrpc_30ReceiveStatusOnClientOperation_1__cinit__(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
  PyObject *__pyx_v_flags = 0;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  int __pyx_r;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__cinit__ (wrapper)", 0);
  {
    static PyObject **__pyx_pyargnames[] = {&__pyx_n_s_flags,0};
    PyObject* values[1] = {0};
    if (unlikely(__pyx_kwds)) {
      Py_ssize_t kw_args;
      const Py_ssize_t pos_args = PyTuple_GET_SIZE(__pyx_args);
      switch (pos_args) {
        case  1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
        CYTHON_FALLTHROUGH;
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      kw_args = PyDict_Size(__pyx_kwds);
      switch (pos_args) {
        case  0:
        if (likely((values[0] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_flags)) != 0)) kw_args--;
        else goto __pyx_L5_argtuple_error;
      }
      if (unlikely(kw_args > 0)) {
        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "__cinit__") < 0)) __PYX_ERR(19, 189, __pyx_L3_error)
      }
    } else if (PyTuple_GET_SIZE(__pyx_args) != 1) {
      goto __pyx_L5_argtuple_error;
    } else {
      values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
    }
    __pyx_v_flags = values[0];
  }
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("__cinit__", 1, 1, 1, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(19, 189, __pyx_L3_error)
  __pyx_L3_error:;
  __Pyx_AddTraceback("grpc._cython.cygrpc.ReceiveStatusOnClientOperation.__cinit__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return -1;
  __pyx_L4_argument_unpacking_done:;
  __pyx_r = __pyx_pf_4grpc_7_cython_6cygrpc_30ReceiveStatusOnClientOperation___cinit__(((struct __pyx_obj_4grpc_7_cython_6cygrpc_ReceiveStatusOnClientOperation *)__pyx_v_self), __pyx_v_flags);

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static int __pyx_pf_4grpc_7_cython_6cygrpc_30ReceiveStatusOnClientOperation___cinit__(struct __pyx_obj_4grpc_7_cython_6cygrpc_ReceiveStatusOnClientOperation *__pyx_v_self, PyObject *__pyx_v_flags) {
  int __pyx_r;
  __Pyx_RefNannyDeclarations
  int __pyx_t_1;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("__cinit__", 0);

  /* "src/python/grpcio/grpc/_cython/_cygrpc/operation.pyx.pxi":190
 * 
 *   def __cinit__(self, flags):
 *     self._flags = flags             # <<<<<<<<<<<<<<
 * 
 *   def type(self):
 */
  __pyx_t_1 = __Pyx_PyInt_As_int(__pyx_v_flags); if (unlikely((__pyx_t_1 == (int)-1) && PyErr_Occurred())) __PYX_ERR(19, 190, __pyx_L1_error)
  __pyx_v_self->_flags = __pyx_t_1;

  /* "src/python/grpcio/grpc/_cython/_cygrpc/operation.pyx.pxi":189
 * cdef class ReceiveStatusOnClientOperation(Operation):
 * 
 *   def __cinit__(self, flags):             # <<<<<<<<<<<<<<
 *     self._flags = flags
 * 
 */

  /* function exit code */
  __pyx_r = 0;
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_AddTraceback("grpc._cython.cygrpc.ReceiveStatusOnClientOperation.__cinit__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = -1;
  __pyx_L0:;
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "src/python/grpcio/grpc/_cython/_cygrpc/operation.pyx.pxi":192
 *     self._flags = flags
 * 
 *   def type(self):             # <<<<<<<<<<<<<<
 *     return GRPC_OP_RECV_STATUS_ON_CLIENT
 * 
 */

/* Python wrapper */
static PyObject *__pyx_pw_4grpc_7_cython_6cygrpc_30ReceiveStatusOnClientOperation_3type(PyObject *__pyx_v_self, CYTHON_UNUSED PyObject *unused); /*proto*/
static PyObject *__pyx_pw_4grpc_7_cython_6cygrpc_30ReceiveStatusOnClientOperation_3type(PyObject *__pyx_v_self, CYTHON_UNUSED PyObject *unused) {
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("type (wrapper)", 0);
  __pyx_r = __pyx_pf_4grpc_7_cython_6cygrpc_30ReceiveStatusOnClientOperation_2type(((struct __pyx_obj_4grpc_7_cython_6cygrpc_ReceiveStatusOnClientOperation *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_4grpc_7_cython_6cygrpc_30ReceiveStatusOnClientOperation_2type(CYTHON_UNUSED struct __pyx_obj_4grpc_7_cython_6cygrpc_ReceiveStatusOnClientOperation *__pyx_v_self) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("type", 0);

  /* "src/python/grpcio/grpc/_cython/_cygrpc/operation.pyx.pxi":193
 * 
 *   def type(self):
 *     return GRPC_OP_RECV_STATUS_ON_CLIENT             # <<<<<<<<<<<<<<
 * 
 *   cdef void c(self) except *:
 */
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_1 = __Pyx_PyInt_From_grpc_op_type(GRPC_OP_RECV_STATUS_ON_CLIENT); if (unlikely(!__pyx_t_1)) __PYX_ERR(19, 193, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_r = __pyx_t_1;
  __pyx_t_1 = 0;
  goto __pyx_L0;

  /* "src/python/grpcio/grpc/_cython/_cygrpc/operation.pyx.pxi":192
 *     self._flags = flags
 * 
 *   def type(self):             # <<<<<<<<<<<<<<
 *     return GRPC_OP_RECV_STATUS_ON_CLIENT
 * 
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_AddTraceback("grpc._cython.cygrpc.ReceiveStatusOnClientOperation.type", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "src/python/grpcio/grpc/_cython/_cygrpc/operation.pyx.pxi":195
 *     return GRPC_OP_RECV_STATUS_ON_CLIENT
 * 
 *   cdef void c(self) except *:             # <<<<<<<<<<<<<<
 *     self.c_op.type = GRPC_OP_RECV_STATUS_ON_CLIENT
 *     self.c_op.flags = self._flags
 */

static void __pyx_f_4grpc_7_cython_6cygrpc_30ReceiveStatusOnClientOperation_c(struct __pyx_obj_4grpc_7_cython_6cygrpc_ReceiveStatusOnClientOperation *__pyx_v_self) {
  __Pyx_RefNannyDeclarations
  int __pyx_t_1;
  __Pyx_RefNannySetupContext("c", 0);

  /* "src/python/grpcio/grpc/_cython/_cygrpc/operation.pyx.pxi":196
 * 
 *   cdef void c(self) except *:
 *     self.c_op.type = GRPC_OP_RECV_STATUS_ON_CLIENT             # <<<<<<<<<<<<<<
 *     self.c_op.flags = self._flags
 *     grpc_metadata_array_init(&self._c_trailing_metadata)
 */
  __pyx_v_self->__pyx_base.c_op.op = GRPC_OP_RECV_STATUS_ON_CLIENT;

  /* "src/python/grpcio/grpc/_cython/_cygrpc/operation.pyx.pxi":197
 *   cdef void c(self) except *:
 *     self.c_op.type = GRPC_OP_RECV_STATUS_ON_CLIENT
 *     self.c_op.flags = self._flags             # <<<<<<<<<<<<<<
 *     grpc_metadata_array_init(&self._c_trailing_metadata)
 *     self.c_op.data.receive_status_on_client.trailing_metadata = (
 */
  __pyx_t_1 = __pyx_v_self->_flags;
  __pyx_v_self->__pyx_base.c_op.flags = __pyx_t_1;

  /* "src/python/grpcio/grpc/_cython/_cygrpc/operation.pyx.pxi":198
 *     self.c_op.type = GRPC_OP_RECV_STATUS_ON_CLIENT
 *     self.c_op.flags = self._flags
 *     grpc_metadata_array_init(&self._c_trailing_metadata)             # <<<<<<<<<<<<<<
 *     self.c_op.data.receive_status_on_client.trailing_metadata = (
 *         &self._c_trailing_metadata)
 */
  grpc_metadata_array_init((&__pyx_v_self->_c_trailing_metadata));

  /* "src/python/grpcio/grpc/_cython/_cygrpc/operation.pyx.pxi":199
 *     self.c_op.flags = self._flags
 *     grpc_metadata_array_init(&self._c_trailing_metadata)
 *     self.c_op.data.receive_status_on_client.trailing_metadata = (             # <<<<<<<<<<<<<<
 *         &self._c_trailing_metadata)
 *     self.c_op.data.receive_status_on_client.status = (
 */
  __pyx_v_self->__pyx_base.c_op.data.recv_status_on_client.trailing_metadata = (&__pyx_v_self->_c_trailing_metadata);

  /* "src/python/grpcio/grpc/_cython/_cygrpc/operation.pyx.pxi":201
 *     self.c_op.data.receive_status_on_client.trailing_metadata = (
 *         &self._c_trailing_metadata)
 *     self.c_op.data.receive_status_on_client.status = (             # <<<<<<<<<<<<<<
 *         &self._c_code)
 *     self.c_op.data.receive_status_on_client.status_details = (
 */
  __pyx_v_self->__pyx_base.c_op.data.recv_status_on_client.status = (&__pyx_v_self->_c_code);

  /* "src/python/grpcio/grpc/_cython/_cygrpc/operation.pyx.pxi":203
 *     self.c_op.data.receive_status_on_client.status = (
 *         &self._c_code)
 *     self.c_op.data.receive_status_on_client.status_details = (             # <<<<<<<<<<<<<<
 *         &self._c_details)
 *     self.c_op.data.receive_status_on_client.error_string = (
 */
  __pyx_v_self->__pyx_base.c_op.data.recv_status_on_client.status_details = (&__pyx_v_self->_c_details);

  /* "src/python/grpcio/grpc/_cython/_cygrpc/operation.pyx.pxi":205
 *     self.c_op.data.receive_status_on_client.status_details = (
 *         &self._c_details)
 *     self.c_op.data.receive_status_on_client.error_string = (             # <<<<<<<<<<<<<<
 *         &self._c_error_string)
 * 
 */
  __pyx_v_self->__pyx_base.c_op.data.recv_status_on_client.error_string = (&__pyx_v_self->_c_error_string);

  /* "src/python/grpcio/grpc/_cython/_cygrpc/operation.pyx.pxi":195
 *     return GRPC_OP_RECV_STATUS_ON_CLIENT
 * 
 *   cdef void c(self) except *:             # <<<<<<<<<<<<<<
 *     self.c_op.type = GRPC_OP_RECV_STATUS_ON_CLIENT
 *     self.c_op.flags = self._flags
 */

  /* function exit code */
  __Pyx_RefNannyFinishContext();
}

/* "src/python/grpcio/grpc/_cython/_cygrpc/operation.pyx.pxi":208
 *         &self._c_error_string)
 * 
 *   cdef void un_c(self) except *:             # <<<<<<<<<<<<<<
 *     self._trailing_metadata = _metadata(&self._c_trailing_metadata)
 *     grpc_metadata_array_destroy(&self._c_trailing_metadata)
 */

static void __pyx_f_4grpc_7_cython_6cygrpc_30ReceiveStatusOnClientOperation_un_c(struct __pyx_obj_4grpc_7_cython_6cygrpc_ReceiveStatusOnClientOperation *__pyx_v_self) {
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  PyObject *__pyx_t_2 = NULL;
  int __pyx_t_3;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("un_c", 0);

  /* "src/python/grpcio/grpc/_cython/_cygrpc/operation.pyx.pxi":209
 * 
 *   cdef void un_c(self) except *:
 *     self._trailing_metadata = _metadata(&self._c_trailing_metadata)             # <<<<<<<<<<<<<<
 *     grpc_metadata_array_destroy(&self._c_trailing_metadata)
 *     self._code = self._c_code
 */
  __pyx_t_1 = __pyx_f_4grpc_7_cython_6cygrpc__metadata((&__pyx_v_self->_c_trailing_metadata)); if (unlikely(!__pyx_t_1)) __PYX_ERR(19, 209, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_GIVEREF(__pyx_t_1);
  __Pyx_GOTREF(__pyx_v_self->_trailing_metadata);
  __Pyx_DECREF(__pyx_v_self->_trailing_metadata);
  __pyx_v_self->_trailing_metadata = ((PyObject*)__pyx_t_1);
  __pyx_t_1 = 0;

  /* "src/python/grpcio/grpc/_cython/_cygrpc/operation.pyx.pxi":210
 *   cdef void un_c(self) except *:
 *     self._trailing_metadata = _metadata(&self._c_trailing_metadata)
 *     grpc_metadata_array_destroy(&self._c_trailing_metadata)             # <<<<<<<<<<<<<<
 *     self._code = self._c_code
 *     self._details = _decode(_slice_bytes(self._c_details))
 */
  grpc_metadata_array_destroy((&__pyx_v_self->_c_trailing_metadata));

  /* "src/python/grpcio/grpc/_cython/_cygrpc/operation.pyx.pxi":211
 *     self._trailing_metadata = _metadata(&self._c_trailing_metadata)
 *     grpc_metadata_array_destroy(&self._c_trailing_metadata)
 *     self._code = self._c_code             # <<<<<<<<<<<<<<
 *     self._details = _decode(_slice_bytes(self._c_details))
 *     grpc_slice_unref(self._c_details)
 */
  __pyx_t_1 = __Pyx_PyInt_From_grpc_status_code(__pyx_v_self->_c_code); if (unlikely(!__pyx_t_1)) __PYX_ERR(19, 211, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_GIVEREF(__pyx_t_1);
  __Pyx_GOTREF(__pyx_v_self->_code);
  __Pyx_DECREF(__pyx_v_self->_code);
  __pyx_v_self->_code = __pyx_t_1;
  __pyx_t_1 = 0;

  /* "src/python/grpcio/grpc/_cython/_cygrpc/operation.pyx.pxi":212
 *     grpc_metadata_array_destroy(&self._c_trailing_metadata)
 *     self._code = self._c_code
 *     self._details = _decode(_slice_bytes(self._c_details))             # <<<<<<<<<<<<<<
 *     grpc_slice_unref(self._c_details)
 *     if self._c_error_string != NULL:
 */
  __pyx_t_1 = __pyx_f_4grpc_7_cython_6cygrpc__slice_bytes(__pyx_v_self->_c_details); if (unlikely(!__pyx_t_1)) __PYX_ERR(19, 212, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_t_2 = __pyx_f_4grpc_7_cython_6cygrpc__decode(((PyObject*)__pyx_t_1)); if (unlikely(!__pyx_t_2)) __PYX_ERR(19, 212, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  __Pyx_GIVEREF(__pyx_t_2);
  __Pyx_GOTREF(__pyx_v_self->_details);
  __Pyx_DECREF(__pyx_v_self->_details);
  __pyx_v_self->_details = ((PyObject*)__pyx_t_2);
  __pyx_t_2 = 0;

  /* "src/python/grpcio/grpc/_cython/_cygrpc/operation.pyx.pxi":213
 *     self._code = self._c_code
 *     self._details = _decode(_slice_bytes(self._c_details))
 *     grpc_slice_unref(self._c_details)             # <<<<<<<<<<<<<<
 *     if self._c_error_string != NULL:
 *       self._error_string = _decode(self._c_error_string)
 */
  grpc_slice_unref(__pyx_v_self->_c_details);

  /* "src/python/grpcio/grpc/_cython/_cygrpc/operation.pyx.pxi":214
 *     self._details = _decode(_slice_bytes(self._c_details))
 *     grpc_slice_unref(self._c_details)
 *     if self._c_error_string != NULL:             # <<<<<<<<<<<<<<
 *       self._error_string = _decode(self._c_error_string)
 *       gpr_free(<void*>self._c_error_string)
 */
  __pyx_t_3 = ((__pyx_v_self->_c_error_string != NULL) != 0);
  if (__pyx_t_3) {

    /* "src/python/grpcio/grpc/_cython/_cygrpc/operation.pyx.pxi":215
 *     grpc_slice_unref(self._c_details)
 *     if self._c_error_string != NULL:
 *       self._error_string = _decode(self._c_error_string)             # <<<<<<<<<<<<<<
 *       gpr_free(<void*>self._c_error_string)
 *     else:
 */
    __pyx_t_2 = __Pyx_PyBytes_FromString(__pyx_v_self->_c_error_string); if (unlikely(!__pyx_t_2)) __PYX_ERR(19, 215, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_2);
    __pyx_t_1 = __pyx_f_4grpc_7_cython_6cygrpc__decode(((PyObject*)__pyx_t_2)); if (unlikely(!__pyx_t_1)) __PYX_ERR(19, 215, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_1);
    __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
    __Pyx_GIVEREF(__pyx_t_1);
    __Pyx_GOTREF(__pyx_v_self->_error_string);
    __Pyx_DECREF(__pyx_v_self->_error_string);
    __pyx_v_self->_error_string = ((PyObject*)__pyx_t_1);
    __pyx_t_1 = 0;

    /* "src/python/grpcio/grpc/_cython/_cygrpc/operation.pyx.pxi":216
 *     if self._c_error_string != NULL:
 *       self._error_string = _decode(self._c_error_string)
 *       gpr_free(<void*>self._c_error_string)             # <<<<<<<<<<<<<<
 *     else:
 *       self._error_string = ""
 */
    gpr_free(((void *)__pyx_v_self->_c_error_string));

    /* "src/python/grpcio/grpc/_cython/_cygrpc/operation.pyx.pxi":214
 *     self._details = _decode(_slice_bytes(self._c_details))
 *     grpc_slice_unref(self._c_details)
 *     if self._c_error_string != NULL:             # <<<<<<<<<<<<<<
 *       self._error_string = _decode(self._c_error_string)
 *       gpr_free(<void*>self._c_error_string)
 */
    goto __pyx_L3;
  }

  /* "src/python/grpcio/grpc/_cython/_cygrpc/operation.pyx.pxi":218
 *       gpr_free(<void*>self._c_error_string)
 *     else:
 *       self._error_string = ""             # <<<<<<<<<<<<<<
 * 
 *   def trailing_metadata(self):
 */
  /*else*/ {
    __Pyx_INCREF(__pyx_kp_s_);
    __Pyx_GIVEREF(__pyx_kp_s_);
    __Pyx_GOTREF(__pyx_v_self->_error_string);
    __Pyx_DECREF(__pyx_v_self->_error_string);
    __pyx_v_self->_error_string = __pyx_kp_s_;
  }
  __pyx_L3:;

  /* "src/python/grpcio/grpc/_cython/_cygrpc/operation.pyx.pxi":208
 *         &self._c_error_string)
 * 
 *   cdef void un_c(self) except *:             # <<<<<<<<<<<<<<
 *     self._trailing_metadata = _metadata(&self._c_trailing_metadata)
 *     grpc_metadata_array_destroy(&self._c_trailing_metadata)
 */

  /* function exit code */
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_AddTraceback("grpc._cython.cygrpc.ReceiveStatusOnClientOperation.un_c", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_L0:;
  __Pyx_RefNannyFinishContext();
}

/* "src/python/grpcio/grpc/_cython/_cygrpc/operation.pyx.pxi":220
 *       self._error_string = ""
 * 
 *   def trailing_metadata(self):             # <<<<<<<<<<<<<<
 *     return self._trailing_metadata
 * 
 */

/* Python wrapper */
static PyObject *__pyx_pw_4grpc_7_cython_6cygrpc_30ReceiveStatusOnClientOperation_5trailing_metadata(PyObject *__pyx_v_self, CYTHON_UNUSED PyObject *unused); /*proto*/
static PyObject *__pyx_pw_4grpc_7_cython_6cygrpc_30ReceiveStatusOnClientOperation_5trailing_metadata(PyObject *__pyx_v_self, CYTHON_UNUSED PyObject *unused) {
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("trailing_metadata (wrapper)", 0);
  __pyx_r = __pyx_pf_4grpc_7_cython_6cygrpc_30ReceiveStatusOnClientOperation_4trailing_metadata(((struct __pyx_obj_4grpc_7_cython_6cygrpc_ReceiveStatusOnClientOperation *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_4grpc_7_cython_6cygrpc_30ReceiveStatusOnClientOperation_4trailing_metadata(struct __pyx_obj_4grpc_7_cython_6cygrpc_ReceiveStatusOnClientOperation *__pyx_v_self) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("trailing_metadata", 0);

  /* "src/python/grpcio/grpc/_cython/_cygrpc/operation.pyx.pxi":221
 * 
 *   def trailing_metadata(self):
 *     return self._trailing_metadata             # <<<<<<<<<<<<<<
 * 
 *   def code(self):
 */
  __Pyx_XDECREF(__pyx_r);
  __Pyx_INCREF(__pyx_v_self->_trailing_metadata);
  __pyx_r = __pyx_v_self->_trailing_metadata;
  goto __pyx_L0;

  /* "src/python/grpcio/grpc/_cython/_cygrpc/operation.pyx.pxi":220
 *       self._error_string = ""
 * 
 *   def trailing_metadata(self):             # <<<<<<<<<<<<<<
 *     return self._trailing_metadata
 * 
 */

  /* function exit code */
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "src/python/grpcio/grpc/_cython/_cygrpc/operation.pyx.pxi":223
 *     return self._trailing_metadata
 * 
 *   def code(self):             # <<<<<<<<<<<<<<
 *     return self._code
 * 
 */

/* Python wrapper */
static PyObject *__pyx_pw_4grpc_7_cython_6cygrpc_30ReceiveStatusOnClientOperation_7code(PyObject *__pyx_v_self, CYTHON_UNUSED PyObject *unused); /*proto*/
static PyObject *__pyx_pw_4grpc_7_cython_6cygrpc_30ReceiveStatusOnClientOperation_7code(PyObject *__pyx_v_self, CYTHON_UNUSED PyObject *unused) {
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("code (wrapper)", 0);
  __pyx_r = __pyx_pf_4grpc_7_cython_6cygrpc_30ReceiveStatusOnClientOperation_6code(((struct __pyx_obj_4grpc_7_cython_6cygrpc_ReceiveStatusOnClientOperation *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_4grpc_7_cython_6cygrpc_30ReceiveStatusOnClientOperation_6code(struct __pyx_obj_4grpc_7_cython_6cygrpc_ReceiveStatusOnClientOperation *__pyx_v_self) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("code", 0);

  /* "src/python/grpcio/grpc/_cython/_cygrpc/operation.pyx.pxi":224
 * 
 *   def code(self):
 *     return self._code             # <<<<<<<<<<<<<<
 * 
 *   def details(self):
 */
  __Pyx_XDECREF(__pyx_r);
  __Pyx_INCREF(__pyx_v_self->_code);
  __pyx_r = __pyx_v_self->_code;
  goto __pyx_L0;

  /* "src/python/grpcio/grpc/_cython/_cygrpc/operation.pyx.pxi":223
 *     return self._trailing_metadata
 * 
 *   def code(self):             # <<<<<<<<<<<<<<
 *     return self._code
 * 
 */

  /* function exit code */
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "src/python/grpcio/grpc/_cython/_cygrpc/operation.pyx.pxi":226
 *     return self._code
 * 
 *   def details(self):             # <<<<<<<<<<<<<<
 *     return self._details
 * 
 */

/* Python wrapper */
static PyObject *__pyx_pw_4grpc_7_cython_6cygrpc_30ReceiveStatusOnClientOperation_9details(PyObject *__pyx_v_self, CYTHON_UNUSED PyObject *unused); /*proto*/
static PyObject *__pyx_pw_4grpc_7_cython_6cygrpc_30ReceiveStatusOnClientOperation_9details(PyObject *__pyx_v_self, CYTHON_UNUSED PyObject *unused) {
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("details (wrapper)", 0);
  __pyx_r = __pyx_pf_4grpc_7_cython_6cygrpc_30ReceiveStatusOnClientOperation_8details(((struct __pyx_obj_4grpc_7_cython_6cygrpc_ReceiveStatusOnClientOperation *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_4grpc_7_cython_6cygrpc_30ReceiveStatusOnClientOperation_8details(struct __pyx_obj_4grpc_7_cython_6cygrpc_ReceiveStatusOnClientOperation *__pyx_v_self) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("details", 0);

  /* "src/python/grpcio/grpc/_cython/_cygrpc/operation.pyx.pxi":227
 * 
 *   def details(self):
 *     return self._details             # <<<<<<<<<<<<<<
 * 
 *   def error_string(self):
 */
  __Pyx_XDECREF(__pyx_r);
  __Pyx_INCREF(__pyx_v_self->_details);
  __pyx_r = __pyx_v_self->_details;
  goto __pyx_L0;

  /* "src/python/grpcio/grpc/_cython/_cygrpc/operation.pyx.pxi":226
 *     return self._code
 * 
 *   def details(self):             # <<<<<<<<<<<<<<
 *     return self._details
 * 
 */

  /* function exit code */
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "src/python/grpcio/grpc/_cython/_cygrpc/operation.pyx.pxi":229
 *     return self._details
 * 
 *   def error_string(self):             # <<<<<<<<<<<<<<
 *     return self._error_string
 * 
 */

/* Python wrapper */
static PyObject *__pyx_pw_4grpc_7_cython_6cygrpc_30ReceiveStatusOnClientOperation_11error_string(PyObject *__pyx_v_self, CYTHON_UNUSED PyObject *unused); /*proto*/
static PyObject *__pyx_pw_4grpc_7_cython_6cygrpc_30ReceiveStatusOnClientOperation_11error_string(PyObject *__pyx_v_self, CYTHON_UNUSED PyObject *unused) {
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("error_string (wrapper)", 0);
  __pyx_r = __pyx_pf_4grpc_7_cython_6cygrpc_30ReceiveStatusOnClientOperation_10error_string(((struct __pyx_obj_4grpc_7_cython_6cygrpc_ReceiveStatusOnClientOperation *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_4grpc_7_cython_6cygrpc_30ReceiveStatusOnClientOperation_10error_string(struct __pyx_obj_4grpc_7_cython_6cygrpc_ReceiveStatusOnClientOperation *__pyx_v_self) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("error_string", 0);

  /* "src/python/grpcio/grpc/_cython/_cygrpc/operation.pyx.pxi":230
 * 
 *   def error_string(self):
 *     return self._error_string             # <<<<<<<<<<<<<<
 * 
 * 
 */
  __Pyx_XDECREF(__pyx_r);
  __Pyx_INCREF(__pyx_v_self->_error_string);
  __pyx_r = __pyx_v_self->_error_string;
  goto __pyx_L0;

  /* "src/python/grpcio/grpc/_cython/_cygrpc/operation.pyx.pxi":229
 *     return self._details
 * 
 *   def error_string(self):             # <<<<<<<<<<<<<<
 *     return self._error_string
 * 
 */

  /* function exit code */
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "src/python/grpcio/grpc/_cython/_cygrpc/operation.pxd.pxi":90
 * cdef class ReceiveStatusOnClientOperation(Operation):
 * 
 *   cdef readonly int _flags             # <<<<<<<<<<<<<<
 *   cdef grpc_metadata_array _c_trailing_metadata
 *   cdef grpc_status_code _c_code
 */

/* Python wrapper */
static PyObject *__pyx_pw_4grpc_7_cython_6cygrpc_30ReceiveStatusOnClientOperation_6_flags_1__get__(PyObject *__pyx_v_self); /*proto*/
static PyObject *__pyx_pw_4grpc_7_cython_6cygrpc_30ReceiveStatusOnClientOperation_6_flags_1__get__(PyObject *__pyx_v_self) {
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__get__ (wrapper)", 0);
  __pyx_r = __pyx_pf_4grpc_7_cython_6cygrpc_30ReceiveStatusOnClientOperation_6_flags___get__(((struct __pyx_obj_4grpc_7_cython_6cygrpc_ReceiveStatusOnClientOperation *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_4grpc_7_cython_6cygrpc_30ReceiveStatusOnClientOperation_6_flags___get__(struct __pyx_obj_4grpc_7_cython_6cygrpc_ReceiveStatusOnClientOperation *__pyx_v_self) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("__get__", 0);
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_1 = __Pyx_PyInt_From_int(__pyx_v_self->_flags); if (unlikely(!__pyx_t_1)) __PYX_ERR(20, 90, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_r = __pyx_t_1;
  __pyx_t_1 = 0;
  goto __pyx_L0;

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_AddTraceback("grpc._cython.cygrpc.ReceiveStatusOnClientOperation._flags.__get__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "(tree fragment)":1
 * def __reduce_cython__(self):             # <<<<<<<<<<<<<<
 *     raise TypeError("no default __reduce__ due to non-trivial __cinit__")
 * def __setstate_cython__(self, __pyx_state):
 */

/* Python wrapper */
static PyObject *__pyx_pw_4grpc_7_cython_6cygrpc_30ReceiveStatusOnClientOperation_13__reduce_cython__(PyObject *__pyx_v_self, CYTHON_UNUSED PyObject *unused); /*proto*/
static PyObject *__pyx_pw_4grpc_7_cython_6cygrpc_30ReceiveStatusOnClientOperation_13__reduce_cython__(PyObject *__pyx_v_self, CYTHON_UNUSED PyObject *unused) {
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__reduce_cython__ (wrapper)", 0);
  __pyx_r = __pyx_pf_4grpc_7_cython_6cygrpc_30ReceiveStatusOnClientOperation_12__reduce_cython__(((struct __pyx_obj_4grpc_7_cython_6cygrpc_ReceiveStatusOnClientOperation *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_4grpc_7_cython_6cygrpc_30ReceiveStatusOnClientOperation_12__reduce_cython__(CYTHON_UNUSED struct __pyx_obj_4grpc_7_cython_6cygrpc_ReceiveStatusOnClientOperation *__pyx_v_self) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("__reduce_cython__", 0);

  /* "(tree fragment)":2
 * def __reduce_cython__(self):
 *     raise TypeError("no default __reduce__ due to non-trivial __cinit__")             # <<<<<<<<<<<<<<
 * def __setstate_cython__(self, __pyx_state):
 *     raise TypeError("no default __reduce__ due to non-trivial __cinit__")
 */
  __pyx_t_1 = __Pyx_PyObject_Call(__pyx_builtin_TypeError, __pyx_tuple__90, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(11, 2, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_Raise(__pyx_t_1, 0, 0, 0);
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  __PYX_ERR(11, 2, __pyx_L1_error)

  /* "(tree fragment)":1
 * def __reduce_cython__(self):             # <<<<<<<<<<<<<<
 *     raise TypeError("no default __reduce__ due to non-trivial __cinit__")
 * def __setstate_cython__(self, __pyx_state):
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_AddTraceback("grpc._cython.cygrpc.ReceiveStatusOnClientOperation.__reduce_cython__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "(tree fragment)":3
 * def __reduce_cython__(self):
 *     raise TypeError("no default __reduce__ due to non-trivial __cinit__")
 * def __setstate_cython__(self, __pyx_state):             # <<<<<<<<<<<<<<
 *     raise TypeError("no default __reduce__ due to non-trivial __cinit__")
 */

/* Python wrapper */
static PyObject *__pyx_pw_4grpc_7_cython_6cygrpc_30ReceiveStatusOnClientOperation_15__setstate_cython__(PyObject *__pyx_v_self, PyObject *__pyx_v___pyx_state); /*proto*/
static PyObject *__pyx_pw_4grpc_7_cython_6cygrpc_30ReceiveStatusOnClientOperation_15__setstate_cython__(PyObject *__pyx_v_self, PyObject *__pyx_v___pyx_state) {
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__setstate_cython__ (wrapper)", 0);
  __pyx_r = __pyx_pf_4grpc_7_cython_6cygrpc_30ReceiveStatusOnClientOperation_14__setstate_cython__(((struct __pyx_obj_4grpc_7_cython_6cygrpc_ReceiveStatusOnClientOperation *)__pyx_v_self), ((PyObject *)__pyx_v___pyx_state));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_4grpc_7_cython_6cygrpc_30ReceiveStatusOnClientOperation_14__setstate_cython__(CYTHON_UNUSED struct __pyx_obj_4grpc_7_cython_6cygrpc_ReceiveStatusOnClientOperation *__pyx_v_self, CYTHON_UNUSED PyObject *__pyx_v___pyx_state) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("__setstate_cython__", 0);

  /* "(tree fragment)":4
 *     raise TypeError("no default __reduce__ due to non-trivial __cinit__")
 * def __setstate_cython__(self, __pyx_state):
 *     raise TypeError("no default __reduce__ due to non-trivial __cinit__")             # <<<<<<<<<<<<<<
 */
  __pyx_t_1 = __Pyx_PyObject_Call(__pyx_builtin_TypeError, __pyx_tuple__91, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(11, 4, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_Raise(__pyx_t_1, 0, 0, 0);
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  __PYX_ERR(11, 4, __pyx_L1_error)

  /* "(tree fragment)":3
 * def __reduce_cython__(self):
 *     raise TypeError("no default __reduce__ due to non-trivial __cinit__")
 * def __setstate_cython__(self, __pyx_state):             # <<<<<<<<<<<<<<
 *     raise TypeError("no default __reduce__ due to non-trivial __cinit__")
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_AddTraceback("grpc._cython.cygrpc.ReceiveStatusOnClientOperation.__setstate_cython__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "src/python/grpcio/grpc/_cython/_cygrpc/operation.pyx.pxi":235
 * cdef class ReceiveCloseOnServerOperation(Operation):
 * 
 *   def __cinit__(self, flags):             # <<<<<<<<<<<<<<
 *     self._flags = flags
 * 
 */

/* Python wrapper */
static int __pyx_pw_4grpc_7_cython_6cygrpc_29ReceiveCloseOnServerOperation_1__cinit__(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
static int __pyx_pw_4grpc_7_cython_6cygrpc_29ReceiveCloseOnServerOperation_1__cinit__(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
  PyObject *__pyx_v_flags = 0;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  int __pyx_r;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__cinit__ (wrapper)", 0);
  {
    static PyObject **__pyx_pyargnames[] = {&__pyx_n_s_flags,0};
    PyObject* values[1] = {0};
    if (unlikely(__pyx_kwds)) {
      Py_ssize_t kw_args;
      const Py_ssize_t pos_args = PyTuple_GET_SIZE(__pyx_args);
      switch (pos_args) {
        case  1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
        CYTHON_FALLTHROUGH;
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      kw_args = PyDict_Size(__pyx_kwds);
      switch (pos_args) {
        case  0:
        if (likely((values[0] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_flags)) != 0)) kw_args--;
        else goto __pyx_L5_argtuple_error;
      }
      if (unlikely(kw_args > 0)) {
        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "__cinit__") < 0)) __PYX_ERR(19, 235, __pyx_L3_error)
      }
    } else if (PyTuple_GET_SIZE(__pyx_args) != 1) {
      goto __pyx_L5_argtuple_error;
    } else {
      values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
    }
    __pyx_v_flags = values[0];
  }
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("__cinit__", 1, 1, 1, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(19, 235, __pyx_L3_error)
  __pyx_L3_error:;
  __Pyx_AddTraceback("grpc._cython.cygrpc.ReceiveCloseOnServerOperation.__cinit__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return -1;
  __pyx_L4_argument_unpacking_done:;
  __pyx_r = __pyx_pf_4grpc_7_cython_6cygrpc_29ReceiveCloseOnServerOperation___cinit__(((struct __pyx_obj_4grpc_7_cython_6cygrpc_ReceiveCloseOnServerOperation *)__pyx_v_self), __pyx_v_flags);

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static int __pyx_pf_4grpc_7_cython_6cygrpc_29ReceiveCloseOnServerOperation___cinit__(struct __pyx_obj_4grpc_7_cython_6cygrpc_ReceiveCloseOnServerOperation *__pyx_v_self, PyObject *__pyx_v_flags) {
  int __pyx_r;
  __Pyx_RefNannyDeclarations
  int __pyx_t_1;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("__cinit__", 0);

  /* "src/python/grpcio/grpc/_cython/_cygrpc/operation.pyx.pxi":236
 * 
 *   def __cinit__(self, flags):
 *     self._flags = flags             # <<<<<<<<<<<<<<
 * 
 *   def type(self):
 */
  __pyx_t_1 = __Pyx_PyInt_As_int(__pyx_v_flags); if (unlikely((__pyx_t_1 == (int)-1) && PyErr_Occurred())) __PYX_ERR(19, 236, __pyx_L1_error)
  __pyx_v_self->_flags = __pyx_t_1;

  /* "src/python/grpcio/grpc/_cython/_cygrpc/operation.pyx.pxi":235
 * cdef class ReceiveCloseOnServerOperation(Operation):
 * 
 *   def __cinit__(self, flags):             # <<<<<<<<<<<<<<
 *     self._flags = flags
 * 
 */

  /* function exit code */
  __pyx_r = 0;
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_AddTraceback("grpc._cython.cygrpc.ReceiveCloseOnServerOperation.__cinit__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = -1;
  __pyx_L0:;
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "src/python/grpcio/grpc/_cython/_cygrpc/operation.pyx.pxi":238
 *     self._flags = flags
 * 
 *   def type(self):             # <<<<<<<<<<<<<<
 *     return GRPC_OP_RECV_CLOSE_ON_SERVER
 * 
 */

/* Python wrapper */
static PyObject *__pyx_pw_4grpc_7_cython_6cygrpc_29ReceiveCloseOnServerOperation_3type(PyObject *__pyx_v_self, CYTHON_UNUSED PyObject *unused); /*proto*/
static PyObject *__pyx_pw_4grpc_7_cython_6cygrpc_29ReceiveCloseOnServerOperation_3type(PyObject *__pyx_v_self, CYTHON_UNUSED PyObject *unused) {
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("type (wrapper)", 0);
  __pyx_r = __pyx_pf_4grpc_7_cython_6cygrpc_29ReceiveCloseOnServerOperation_2type(((struct __pyx_obj_4grpc_7_cython_6cygrpc_ReceiveCloseOnServerOperation *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_4grpc_7_cython_6cygrpc_29ReceiveCloseOnServerOperation_2type(CYTHON_UNUSED struct __pyx_obj_4grpc_7_cython_6cygrpc_ReceiveCloseOnServerOperation *__pyx_v_self) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("type", 0);

  /* "src/python/grpcio/grpc/_cython/_cygrpc/operation.pyx.pxi":239
 * 
 *   def type(self):
 *     return GRPC_OP_RECV_CLOSE_ON_SERVER             # <<<<<<<<<<<<<<
 * 
 *   cdef void c(self) except *:
 */
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_1 = __Pyx_PyInt_From_grpc_op_type(GRPC_OP_RECV_CLOSE_ON_SERVER); if (unlikely(!__pyx_t_1)) __PYX_ERR(19, 239, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_r = __pyx_t_1;
  __pyx_t_1 = 0;
  goto __pyx_L0;

  /* "src/python/grpcio/grpc/_cython/_cygrpc/operation.pyx.pxi":238
 *     self._flags = flags
 * 
 *   def type(self):             # <<<<<<<<<<<<<<
 *     return GRPC_OP_RECV_CLOSE_ON_SERVER
 * 
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_AddTraceback("grpc._cython.cygrpc.ReceiveCloseOnServerOperation.type", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "src/python/grpcio/grpc/_cython/_cygrpc/operation.pyx.pxi":241
 *     return GRPC_OP_RECV_CLOSE_ON_SERVER
 * 
 *   cdef void c(self) except *:             # <<<<<<<<<<<<<<
 *     self.c_op.type = GRPC_OP_RECV_CLOSE_ON_SERVER
 *     self.c_op.flags = self._flags
 */

static void __pyx_f_4grpc_7_cython_6cygrpc_29ReceiveCloseOnServerOperation_c(struct __pyx_obj_4grpc_7_cython_6cygrpc_ReceiveCloseOnServerOperation *__pyx_v_self) {
  __Pyx_RefNannyDeclarations
  int __pyx_t_1;
  __Pyx_RefNannySetupContext("c", 0);

  /* "src/python/grpcio/grpc/_cython/_cygrpc/operation.pyx.pxi":242
 * 
 *   cdef void c(self) except *:
 *     self.c_op.type = GRPC_OP_RECV_CLOSE_ON_SERVER             # <<<<<<<<<<<<<<
 *     self.c_op.flags = self._flags
 *     self.c_op.data.receive_close_on_server.cancelled = &self._c_cancelled
 */
  __pyx_v_self->__pyx_base.c_op.op = GRPC_OP_RECV_CLOSE_ON_SERVER;

  /* "src/python/grpcio/grpc/_cython/_cygrpc/operation.pyx.pxi":243
 *   cdef void c(self) except *:
 *     self.c_op.type = GRPC_OP_RECV_CLOSE_ON_SERVER
 *     self.c_op.flags = self._flags             # <<<<<<<<<<<<<<
 *     self.c_op.data.receive_close_on_server.cancelled = &self._c_cancelled
 * 
 */
  __pyx_t_1 = __pyx_v_self->_flags;
  __pyx_v_self->__pyx_base.c_op.flags = __pyx_t_1;

  /* "src/python/grpcio/grpc/_cython/_cygrpc/operation.pyx.pxi":244
 *     self.c_op.type = GRPC_OP_RECV_CLOSE_ON_SERVER
 *     self.c_op.flags = self._flags
 *     self.c_op.data.receive_close_on_server.cancelled = &self._c_cancelled             # <<<<<<<<<<<<<<
 * 
 *   cdef void un_c(self) except *:
 */
  __pyx_v_self->__pyx_base.c_op.data.recv_close_on_server.cancelled = (&__pyx_v_self->_c_cancelled);

  /* "src/python/grpcio/grpc/_cython/_cygrpc/operation.pyx.pxi":241
 *     return GRPC_OP_RECV_CLOSE_ON_SERVER
 * 
 *   cdef void c(self) except *:             # <<<<<<<<<<<<<<
 *     self.c_op.type = GRPC_OP_RECV_CLOSE_ON_SERVER
 *     self.c_op.flags = self._flags
 */

  /* function exit code */
  __Pyx_RefNannyFinishContext();
}

/* "src/python/grpcio/grpc/_cython/_cygrpc/operation.pyx.pxi":246
 *     self.c_op.data.receive_close_on_server.cancelled = &self._c_cancelled
 * 
 *   cdef void un_c(self) except *:             # <<<<<<<<<<<<<<
 *     self._cancelled = bool(self._c_cancelled)
 * 
 */

static void __pyx_f_4grpc_7_cython_6cygrpc_29ReceiveCloseOnServerOperation_un_c(struct __pyx_obj_4grpc_7_cython_6cygrpc_ReceiveCloseOnServerOperation *__pyx_v_self) {
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  int __pyx_t_2;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("un_c", 0);

  /* "src/python/grpcio/grpc/_cython/_cygrpc/operation.pyx.pxi":247
 * 
 *   cdef void un_c(self) except *:
 *     self._cancelled = bool(self._c_cancelled)             # <<<<<<<<<<<<<<
 * 
 *   def cancelled(self):
 */
  __pyx_t_1 = __Pyx_PyInt_From_int(__pyx_v_self->_c_cancelled); if (unlikely(!__pyx_t_1)) __PYX_ERR(19, 247, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_t_2 = __Pyx_PyObject_IsTrue(__pyx_t_1); if (unlikely(__pyx_t_2 < 0)) __PYX_ERR(19, 247, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  __pyx_t_1 = __Pyx_PyBool_FromLong((!(!__pyx_t_2))); if (unlikely(!__pyx_t_1)) __PYX_ERR(19, 247, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_GIVEREF(__pyx_t_1);
  __Pyx_GOTREF(__pyx_v_self->_cancelled);
  __Pyx_DECREF(__pyx_v_self->_cancelled);
  __pyx_v_self->_cancelled = __pyx_t_1;
  __pyx_t_1 = 0;

  /* "src/python/grpcio/grpc/_cython/_cygrpc/operation.pyx.pxi":246
 *     self.c_op.data.receive_close_on_server.cancelled = &self._c_cancelled
 * 
 *   cdef void un_c(self) except *:             # <<<<<<<<<<<<<<
 *     self._cancelled = bool(self._c_cancelled)
 * 
 */

  /* function exit code */
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_AddTraceback("grpc._cython.cygrpc.ReceiveCloseOnServerOperation.un_c", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_L0:;
  __Pyx_RefNannyFinishContext();
}

/* "src/python/grpcio/grpc/_cython/_cygrpc/operation.pyx.pxi":249
 *     self._cancelled = bool(self._c_cancelled)
 * 
 *   def cancelled(self):             # <<<<<<<<<<<<<<
 *     return self._cancelled
 */

/* Python wrapper */
static PyObject *__pyx_pw_4grpc_7_cython_6cygrpc_29ReceiveCloseOnServerOperation_5cancelled(PyObject *__pyx_v_self, CYTHON_UNUSED PyObject *unused); /*proto*/
static PyObject *__pyx_pw_4grpc_7_cython_6cygrpc_29ReceiveCloseOnServerOperation_5cancelled(PyObject *__pyx_v_self, CYTHON_UNUSED PyObject *unused) {
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("cancelled (wrapper)", 0);
  __pyx_r = __pyx_pf_4grpc_7_cython_6cygrpc_29ReceiveCloseOnServerOperation_4cancelled(((struct __pyx_obj_4grpc_7_cython_6cygrpc_ReceiveCloseOnServerOperation *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_4grpc_7_cython_6cygrpc_29ReceiveCloseOnServerOperation_4cancelled(struct __pyx_obj_4grpc_7_cython_6cygrpc_ReceiveCloseOnServerOperation *__pyx_v_self) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("cancelled", 0);

  /* "src/python/grpcio/grpc/_cython/_cygrpc/operation.pyx.pxi":250
 * 
 *   def cancelled(self):
 *     return self._cancelled             # <<<<<<<<<<<<<<
 */
  __Pyx_XDECREF(__pyx_r);
  __Pyx_INCREF(__pyx_v_self->_cancelled);
  __pyx_r = __pyx_v_self->_cancelled;
  goto __pyx_L0;

  /* "src/python/grpcio/grpc/_cython/_cygrpc/operation.pyx.pxi":249
 *     self._cancelled = bool(self._c_cancelled)
 * 
 *   def cancelled(self):             # <<<<<<<<<<<<<<
 *     return self._cancelled
 */

  /* function exit code */
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "src/python/grpcio/grpc/_cython/_cygrpc/operation.pxd.pxi":106
 * cdef class ReceiveCloseOnServerOperation(Operation):
 * 
 *   cdef readonly int _flags             # <<<<<<<<<<<<<<
 *   cdef object _cancelled
 *   cdef int _c_cancelled
 */

/* Python wrapper */
static PyObject *__pyx_pw_4grpc_7_cython_6cygrpc_29ReceiveCloseOnServerOperation_6_flags_1__get__(PyObject *__pyx_v_self); /*proto*/
static PyObject *__pyx_pw_4grpc_7_cython_6cygrpc_29ReceiveCloseOnServerOperation_6_flags_1__get__(PyObject *__pyx_v_self) {
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__get__ (wrapper)", 0);
  __pyx_r = __pyx_pf_4grpc_7_cython_6cygrpc_29ReceiveCloseOnServerOperation_6_flags___get__(((struct __pyx_obj_4grpc_7_cython_6cygrpc_ReceiveCloseOnServerOperation *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_4grpc_7_cython_6cygrpc_29ReceiveCloseOnServerOperation_6_flags___get__(struct __pyx_obj_4grpc_7_cython_6cygrpc_ReceiveCloseOnServerOperation *__pyx_v_self) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("__get__", 0);
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_1 = __Pyx_PyInt_From_int(__pyx_v_self->_flags); if (unlikely(!__pyx_t_1)) __PYX_ERR(20, 106, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_r = __pyx_t_1;
  __pyx_t_1 = 0;
  goto __pyx_L0;

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_AddTraceback("grpc._cython.cygrpc.ReceiveCloseOnServerOperation._flags.__get__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "(tree fragment)":1
 * def __reduce_cython__(self):             # <<<<<<<<<<<<<<
 *     raise TypeError("no default __reduce__ due to non-trivial __cinit__")
 * def __setstate_cython__(self, __pyx_state):
 */

/* Python wrapper */
static PyObject *__pyx_pw_4grpc_7_cython_6cygrpc_29ReceiveCloseOnServerOperation_7__reduce_cython__(PyObject *__pyx_v_self, CYTHON_UNUSED PyObject *unused); /*proto*/
static PyObject *__pyx_pw_4grpc_7_cython_6cygrpc_29ReceiveCloseOnServerOperation_7__reduce_cython__(PyObject *__pyx_v_self, CYTHON_UNUSED PyObject *unused) {
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__reduce_cython__ (wrapper)", 0);
  __pyx_r = __pyx_pf_4grpc_7_cython_6cygrpc_29ReceiveCloseOnServerOperation_6__reduce_cython__(((struct __pyx_obj_4grpc_7_cython_6cygrpc_ReceiveCloseOnServerOperation *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_4grpc_7_cython_6cygrpc_29ReceiveCloseOnServerOperation_6__reduce_cython__(CYTHON_UNUSED struct __pyx_obj_4grpc_7_cython_6cygrpc_ReceiveCloseOnServerOperation *__pyx_v_self) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("__reduce_cython__", 0);

  /* "(tree fragment)":2
 * def __reduce_cython__(self):
 *     raise TypeError("no default __reduce__ due to non-trivial __cinit__")             # <<<<<<<<<<<<<<
 * def __setstate_cython__(self, __pyx_state):
 *     raise TypeError("no default __reduce__ due to non-trivial __cinit__")
 */
  __pyx_t_1 = __Pyx_PyObject_Call(__pyx_builtin_TypeError, __pyx_tuple__92, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(11, 2, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_Raise(__pyx_t_1, 0, 0, 0);
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  __PYX_ERR(11, 2, __pyx_L1_error)

  /* "(tree fragment)":1
 * def __reduce_cython__(self):             # <<<<<<<<<<<<<<
 *     raise TypeError("no default __reduce__ due to non-trivial __cinit__")
 * def __setstate_cython__(self, __pyx_state):
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_AddTraceback("grpc._cython.cygrpc.ReceiveCloseOnServerOperation.__reduce_cython__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "(tree fragment)":3
 * def __reduce_cython__(self):
 *     raise TypeError("no default __reduce__ due to non-trivial __cinit__")
 * def __setstate_cython__(self, __pyx_state):             # <<<<<<<<<<<<<<
 *     raise TypeError("no default __reduce__ due to non-trivial __cinit__")
 */

/* Python wrapper */
static PyObject *__pyx_pw_4grpc_7_cython_6cygrpc_29ReceiveCloseOnServerOperation_9__setstate_cython__(PyObject *__pyx_v_self, PyObject *__pyx_v___pyx_state); /*proto*/
static PyObject *__pyx_pw_4grpc_7_cython_6cygrpc_29ReceiveCloseOnServerOperation_9__setstate_cython__(PyObject *__pyx_v_self, PyObject *__pyx_v___pyx_state) {
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__setstate_cython__ (wrapper)", 0);
  __pyx_r = __pyx_pf_4grpc_7_cython_6cygrpc_29ReceiveCloseOnServerOperation_8__setstate_cython__(((struct __pyx_obj_4grpc_7_cython_6cygrpc_ReceiveCloseOnServerOperation *)__pyx_v_self), ((PyObject *)__pyx_v___pyx_state));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_4grpc_7_cython_6cygrpc_29ReceiveCloseOnServerOperation_8__setstate_cython__(CYTHON_UNUSED struct __pyx_obj_4grpc_7_cython_6cygrpc_ReceiveCloseOnServerOperation *__pyx_v_self, CYTHON_UNUSED PyObject *__pyx_v___pyx_state) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("__setstate_cython__", 0);

  /* "(tree fragment)":4
 *     raise TypeError("no default __reduce__ due to non-trivial __cinit__")
 * def __setstate_cython__(self, __pyx_state):
 *     raise TypeError("no default __reduce__ due to non-trivial __cinit__")             # <<<<<<<<<<<<<<
 */
  __pyx_t_1 = __Pyx_PyObject_Call(__pyx_builtin_TypeError, __pyx_tuple__93, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(11, 4, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_Raise(__pyx_t_1, 0, 0, 0);
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  __PYX_ERR(11, 4, __pyx_L1_error)

  /* "(tree fragment)":3
 * def __reduce_cython__(self):
 *     raise TypeError("no default __reduce__ due to non-trivial __cinit__")
 * def __setstate_cython__(self, __pyx_state):             # <<<<<<<<<<<<<<
 *     raise TypeError("no default __reduce__ due to non-trivial __cinit__")
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_AddTraceback("grpc._cython.cygrpc.ReceiveCloseOnServerOperation.__setstate_cython__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "src/python/grpcio/grpc/_cython/_cygrpc/records.pyx.pxi":16
 * 
 * 
 * cdef bytes _slice_bytes(grpc_slice slice):             # <<<<<<<<<<<<<<
 *   cdef void *start = grpc_slice_start_ptr(slice)
 *   cdef size_t length = grpc_slice_length(slice)
 */

static PyObject *__pyx_f_4grpc_7_cython_6cygrpc__slice_bytes(grpc_slice __pyx_v_slice) {
  void *__pyx_v_start;
  size_t __pyx_v_length;
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("_slice_bytes", 0);

  /* "src/python/grpcio/grpc/_cython/_cygrpc/records.pyx.pxi":17
 * 
 * cdef bytes _slice_bytes(grpc_slice slice):
 *   cdef void *start = grpc_slice_start_ptr(slice)             # <<<<<<<<<<<<<<
 *   cdef size_t length = grpc_slice_length(slice)
 *   return (<const char *>start)[:length]
 */
  __pyx_v_start = GRPC_SLICE_START_PTR(__pyx_v_slice);

  /* "src/python/grpcio/grpc/_cython/_cygrpc/records.pyx.pxi":18
 * cdef bytes _slice_bytes(grpc_slice slice):
 *   cdef void *start = grpc_slice_start_ptr(slice)
 *   cdef size_t length = grpc_slice_length(slice)             # <<<<<<<<<<<<<<
 *   return (<const char *>start)[:length]
 * 
 */
  __pyx_v_length = GRPC_SLICE_LENGTH(__pyx_v_slice);

  /* "src/python/grpcio/grpc/_cython/_cygrpc/records.pyx.pxi":19
 *   cdef void *start = grpc_slice_start_ptr(slice)
 *   cdef size_t length = grpc_slice_length(slice)
 *   return (<const char *>start)[:length]             # <<<<<<<<<<<<<<
 * 
 * cdef grpc_slice _copy_slice(grpc_slice slice) nogil:
 */
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_1 = __Pyx_PyBytes_FromStringAndSize(((char const *)__pyx_v_start) + 0, __pyx_v_length - 0); if (unlikely(!__pyx_t_1)) __PYX_ERR(21, 19, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_r = ((PyObject*)__pyx_t_1);
  __pyx_t_1 = 0;
  goto __pyx_L0;

  /* "src/python/grpcio/grpc/_cython/_cygrpc/records.pyx.pxi":16
 * 
 * 
 * cdef bytes _slice_bytes(grpc_slice slice):             # <<<<<<<<<<<<<<
 *   cdef void *start = grpc_slice_start_ptr(slice)
 *   cdef size_t length = grpc_slice_length(slice)
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_AddTraceback("grpc._cython.cygrpc._slice_bytes", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = 0;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "src/python/grpcio/grpc/_cython/_cygrpc/records.pyx.pxi":21
 *   return (<const char *>start)[:length]
 * 
 * cdef grpc_slice _copy_slice(grpc_slice slice) nogil:             # <<<<<<<<<<<<<<
 *   cdef void *start = grpc_slice_start_ptr(slice)
 *   cdef size_t length = grpc_slice_length(slice)
 */

static grpc_slice __pyx_f_4grpc_7_cython_6cygrpc__copy_slice(grpc_slice __pyx_v_slice) {
  void *__pyx_v_start;
  size_t __pyx_v_length;
  grpc_slice __pyx_r;

  /* "src/python/grpcio/grpc/_cython/_cygrpc/records.pyx.pxi":22
 * 
 * cdef grpc_slice _copy_slice(grpc_slice slice) nogil:
 *   cdef void *start = grpc_slice_start_ptr(slice)             # <<<<<<<<<<<<<<
 *   cdef size_t length = grpc_slice_length(slice)
 *   return grpc_slice_from_copied_buffer(<const char *>start, length)
 */
  __pyx_v_start = GRPC_SLICE_START_PTR(__pyx_v_slice);

  /* "src/python/grpcio/grpc/_cython/_cygrpc/records.pyx.pxi":23
 * cdef grpc_slice _copy_slice(grpc_slice slice) nogil:
 *   cdef void *start = grpc_slice_start_ptr(slice)
 *   cdef size_t length = grpc_slice_length(slice)             # <<<<<<<<<<<<<<
 *   return grpc_slice_from_copied_buffer(<const char *>start, length)
 * 
 */
  __pyx_v_length = GRPC_SLICE_LENGTH(__pyx_v_slice);

  /* "src/python/grpcio/grpc/_cython/_cygrpc/records.pyx.pxi":24
 *   cdef void *start = grpc_slice_start_ptr(slice)
 *   cdef size_t length = grpc_slice_length(slice)
 *   return grpc_slice_from_copied_buffer(<const char *>start, length)             # <<<<<<<<<<<<<<
 * 
 * cdef grpc_slice _slice_from_bytes(bytes value) nogil:
 */
  __pyx_r = grpc_slice_from_copied_buffer(((char const *)__pyx_v_start), __pyx_v_length);
  goto __pyx_L0;

  /* "src/python/grpcio/grpc/_cython/_cygrpc/records.pyx.pxi":21
 *   return (<const char *>start)[:length]
 * 
 * cdef grpc_slice _copy_slice(grpc_slice slice) nogil:             # <<<<<<<<<<<<<<
 *   cdef void *start = grpc_slice_start_ptr(slice)
 *   cdef size_t length = grpc_slice_length(slice)
 */

  /* function exit code */
  __pyx_L0:;
  return __pyx_r;
}

/* "src/python/grpcio/grpc/_cython/_cygrpc/records.pyx.pxi":26
 *   return grpc_slice_from_copied_buffer(<const char *>start, length)
 * 
 * cdef grpc_slice _slice_from_bytes(bytes value) nogil:             # <<<<<<<<<<<<<<
 *   cdef const char *value_ptr
 *   cdef size_t length
 */

static grpc_slice __pyx_f_4grpc_7_cython_6cygrpc__slice_from_bytes(PyObject *__pyx_v_value) {
  char const *__pyx_v_value_ptr;
  size_t __pyx_v_length;
  grpc_slice __pyx_r;
  __Pyx_RefNannyDeclarations
  char const *__pyx_t_1;
  Py_ssize_t __pyx_t_2;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  #ifdef WITH_THREAD
  PyGILState_STATE __pyx_gilstate_save = __Pyx_PyGILState_Ensure();
  #endif
  __Pyx_RefNannySetupContext("_slice_from_bytes", 0);
  #ifdef WITH_THREAD
  __Pyx_PyGILState_Release(__pyx_gilstate_save);
  #endif

  /* "src/python/grpcio/grpc/_cython/_cygrpc/records.pyx.pxi":27
 * 
 * cdef grpc_slice _slice_from_bytes(bytes value) nogil:
 *   cdef const char *value_ptr             # <<<<<<<<<<<<<<
 *   cdef size_t length
 *   with gil:
 */
  /*try:*/ {

    /* "src/python/grpcio/grpc/_cython/_cygrpc/records.pyx.pxi":29
 *   cdef const char *value_ptr
 *   cdef size_t length
 *   with gil:             # <<<<<<<<<<<<<<
 *     value_ptr = <const char *>value
 *     length = len(value)
 */
    {
        #ifdef WITH_THREAD
        PyGILState_STATE __pyx_gilstate_save = __Pyx_PyGILState_Ensure();
        #endif
        /*try:*/ {

          /* "src/python/grpcio/grpc/_cython/_cygrpc/records.pyx.pxi":30
 *   cdef size_t length
 *   with gil:
 *     value_ptr = <const char *>value             # <<<<<<<<<<<<<<
 *     length = len(value)
 *   return grpc_slice_from_copied_buffer(value_ptr, length)
 */
          if (unlikely(__pyx_v_value == Py_None)) {
            PyErr_SetString(PyExc_TypeError, "expected bytes, NoneType found");
            __PYX_ERR(21, 30, __pyx_L7_error)
          }
          __pyx_t_1 = __Pyx_PyBytes_AsString(__pyx_v_value); if (unlikely((!__pyx_t_1) && PyErr_Occurred())) __PYX_ERR(21, 30, __pyx_L7_error)
          __pyx_v_value_ptr = ((char const *)__pyx_t_1);

          /* "src/python/grpcio/grpc/_cython/_cygrpc/records.pyx.pxi":31
 *   with gil:
 *     value_ptr = <const char *>value
 *     length = len(value)             # <<<<<<<<<<<<<<
 *   return grpc_slice_from_copied_buffer(value_ptr, length)
 * 
 */
          if (unlikely(__pyx_v_value == Py_None)) {
            PyErr_SetString(PyExc_TypeError, "object of type 'NoneType' has no len()");
            __PYX_ERR(21, 31, __pyx_L7_error)
          }
          __pyx_t_2 = PyBytes_GET_SIZE(__pyx_v_value); if (unlikely(__pyx_t_2 == ((Py_ssize_t)-1))) __PYX_ERR(21, 31, __pyx_L7_error)
          __pyx_v_length = __pyx_t_2;
        }

        /* "src/python/grpcio/grpc/_cython/_cygrpc/records.pyx.pxi":29
 *   cdef const char *value_ptr
 *   cdef size_t length
 *   with gil:             # <<<<<<<<<<<<<<
 *     value_ptr = <const char *>value
 *     length = len(value)
 */
        /*finally:*/ {
          /*normal exit:*/{
            #ifdef WITH_THREAD
            __Pyx_PyGILState_Release(__pyx_gilstate_save);
            #endif
            goto __pyx_L8;
          }
          __pyx_L7_error: {
            #ifdef WITH_THREAD
            __Pyx_PyGILState_Release(__pyx_gilstate_save);
            #endif
            goto __pyx_L4_error;
          }
          __pyx_L8:;
        }
    }

    /* "src/python/grpcio/grpc/_cython/_cygrpc/records.pyx.pxi":32
 *     value_ptr = <const char *>value
 *     length = len(value)
 *   return grpc_slice_from_copied_buffer(value_ptr, length)             # <<<<<<<<<<<<<<
 * 
 * 
 */
    __pyx_r = grpc_slice_from_copied_buffer(__pyx_v_value_ptr, __pyx_v_length);
    goto __pyx_L3_return;
  }

  /* "src/python/grpcio/grpc/_cython/_cygrpc/records.pyx.pxi":27
 * 
 * cdef grpc_slice _slice_from_bytes(bytes value) nogil:
 *   cdef const char *value_ptr             # <<<<<<<<<<<<<<
 *   cdef size_t length
 *   with gil:
 */
  /*finally:*/ {
    __pyx_L3_return: {
      #ifdef WITH_THREAD
      __pyx_gilstate_save = __Pyx_PyGILState_Ensure();
      #endif
      goto __pyx_L0;
    }
    __pyx_L4_error: {
      #ifdef WITH_THREAD
      __pyx_gilstate_save = __Pyx_PyGILState_Ensure();
      #endif
      goto __pyx_L1_error;
    }
  }

  /* "src/python/grpcio/grpc/_cython/_cygrpc/records.pyx.pxi":26
 *   return grpc_slice_from_copied_buffer(<const char *>start, length)
 * 
 * cdef grpc_slice _slice_from_bytes(bytes value) nogil:             # <<<<<<<<<<<<<<
 *   cdef const char *value_ptr
 *   cdef size_t length
 */

  /* function exit code */
  __Pyx_pretend_to_initialize(&__pyx_r);
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_WriteUnraisable("grpc._cython.cygrpc._slice_from_bytes", __pyx_clineno, __pyx_lineno, __pyx_filename, 1, 1);
  __Pyx_pretend_to_initialize(&__pyx_r);
  __pyx_L0:;
  #ifdef WITH_THREAD
  __Pyx_PyGILState_Release(__pyx_gilstate_save);
  #endif
  return __pyx_r;
}

/* "src/python/grpcio/grpc/_cython/_cygrpc/records.pyx.pxi":132
 * cdef class CallDetails:
 * 
 *   def __cinit__(self):             # <<<<<<<<<<<<<<
 *     fork_handlers_and_grpc_init()
 *     with nogil:
 */

/* Python wrapper */
static int __pyx_pw_4grpc_7_cython_6cygrpc_11CallDetails_1__cinit__(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
static int __pyx_pw_4grpc_7_cython_6cygrpc_11CallDetails_1__cinit__(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
  int __pyx_r;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__cinit__ (wrapper)", 0);
  if (unlikely(PyTuple_GET_SIZE(__pyx_args) > 0)) {
    __Pyx_RaiseArgtupleInvalid("__cinit__", 1, 0, 0, PyTuple_GET_SIZE(__pyx_args)); return -1;}
  if (unlikely(__pyx_kwds) && unlikely(PyDict_Size(__pyx_kwds) > 0) && unlikely(!__Pyx_CheckKeywordStrings(__pyx_kwds, "__cinit__", 0))) return -1;
  __pyx_r = __pyx_pf_4grpc_7_cython_6cygrpc_11CallDetails___cinit__(((struct __pyx_obj_4grpc_7_cython_6cygrpc_CallDetails *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static int __pyx_pf_4grpc_7_cython_6cygrpc_11CallDetails___cinit__(struct __pyx_obj_4grpc_7_cython_6cygrpc_CallDetails *__pyx_v_self) {
  int __pyx_r;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  PyObject *__pyx_t_2 = NULL;
  PyObject *__pyx_t_3 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("__cinit__", 0);

  /* "src/python/grpcio/grpc/_cython/_cygrpc/records.pyx.pxi":133
 * 
 *   def __cinit__(self):
 *     fork_handlers_and_grpc_init()             # <<<<<<<<<<<<<<
 *     with nogil:
 *       grpc_call_details_init(&self.c_details)
 */
  __Pyx_GetModuleGlobalName(__pyx_t_2, __pyx_n_s_fork_handlers_and_grpc_init); if (unlikely(!__pyx_t_2)) __PYX_ERR(21, 133, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __pyx_t_3 = NULL;
  if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_2))) {
    __pyx_t_3 = PyMethod_GET_SELF(__pyx_t_2);
    if (likely(__pyx_t_3)) {
      PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_2);
      __Pyx_INCREF(__pyx_t_3);
      __Pyx_INCREF(function);
      __Pyx_DECREF_SET(__pyx_t_2, function);
    }
  }
  __pyx_t_1 = (__pyx_t_3) ? __Pyx_PyObject_CallOneArg(__pyx_t_2, __pyx_t_3) : __Pyx_PyObject_CallNoArg(__pyx_t_2);
  __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0;
  if (unlikely(!__pyx_t_1)) __PYX_ERR(21, 133, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;

  /* "src/python/grpcio/grpc/_cython/_cygrpc/records.pyx.pxi":134
 *   def __cinit__(self):
 *     fork_handlers_and_grpc_init()
 *     with nogil:             # <<<<<<<<<<<<<<
 *       grpc_call_details_init(&self.c_details)
 * 
 */
  {
      #ifdef WITH_THREAD
      PyThreadState *_save;
      Py_UNBLOCK_THREADS
      __Pyx_FastGIL_Remember();
      #endif
      /*try:*/ {

        /* "src/python/grpcio/grpc/_cython/_cygrpc/records.pyx.pxi":135
 *     fork_handlers_and_grpc_init()
 *     with nogil:
 *       grpc_call_details_init(&self.c_details)             # <<<<<<<<<<<<<<
 * 
 *   def __dealloc__(self):
 */
        grpc_call_details_init((&__pyx_v_self->c_details));
      }

      /* "src/python/grpcio/grpc/_cython/_cygrpc/records.pyx.pxi":134
 *   def __cinit__(self):
 *     fork_handlers_and_grpc_init()
 *     with nogil:             # <<<<<<<<<<<<<<
 *       grpc_call_details_init(&self.c_details)
 * 
 */
      /*finally:*/ {
        /*normal exit:*/{
          #ifdef WITH_THREAD
          __Pyx_FastGIL_Forget();
          Py_BLOCK_THREADS
          #endif
          goto __pyx_L5;
        }
        __pyx_L5:;
      }
  }

  /* "src/python/grpcio/grpc/_cython/_cygrpc/records.pyx.pxi":132
 * cdef class CallDetails:
 * 
 *   def __cinit__(self):             # <<<<<<<<<<<<<<
 *     fork_handlers_and_grpc_init()
 *     with nogil:
 */

  /* function exit code */
  __pyx_r = 0;
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_XDECREF(__pyx_t_3);
  __Pyx_AddTraceback("grpc._cython.cygrpc.CallDetails.__cinit__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = -1;
  __pyx_L0:;
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "src/python/grpcio/grpc/_cython/_cygrpc/records.pyx.pxi":137
 *       grpc_call_details_init(&self.c_details)
 * 
 *   def __dealloc__(self):             # <<<<<<<<<<<<<<
 *     with nogil:
 *       grpc_call_details_destroy(&self.c_details)
 */

/* Python wrapper */
static void __pyx_pw_4grpc_7_cython_6cygrpc_11CallDetails_3__dealloc__(PyObject *__pyx_v_self); /*proto*/
static void __pyx_pw_4grpc_7_cython_6cygrpc_11CallDetails_3__dealloc__(PyObject *__pyx_v_self) {
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__dealloc__ (wrapper)", 0);
  __pyx_pf_4grpc_7_cython_6cygrpc_11CallDetails_2__dealloc__(((struct __pyx_obj_4grpc_7_cython_6cygrpc_CallDetails *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
}

static void __pyx_pf_4grpc_7_cython_6cygrpc_11CallDetails_2__dealloc__(struct __pyx_obj_4grpc_7_cython_6cygrpc_CallDetails *__pyx_v_self) {
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__dealloc__", 0);

  /* "src/python/grpcio/grpc/_cython/_cygrpc/records.pyx.pxi":138
 * 
 *   def __dealloc__(self):
 *     with nogil:             # <<<<<<<<<<<<<<
 *       grpc_call_details_destroy(&self.c_details)
 *     grpc_shutdown()
 */
  {
      #ifdef WITH_THREAD
      PyThreadState *_save;
      Py_UNBLOCK_THREADS
      __Pyx_FastGIL_Remember();
      #endif
      /*try:*/ {

        /* "src/python/grpcio/grpc/_cython/_cygrpc/records.pyx.pxi":139
 *   def __dealloc__(self):
 *     with nogil:
 *       grpc_call_details_destroy(&self.c_details)             # <<<<<<<<<<<<<<
 *     grpc_shutdown()
 * 
 */
        grpc_call_details_destroy((&__pyx_v_self->c_details));
      }

      /* "src/python/grpcio/grpc/_cython/_cygrpc/records.pyx.pxi":138
 * 
 *   def __dealloc__(self):
 *     with nogil:             # <<<<<<<<<<<<<<
 *       grpc_call_details_destroy(&self.c_details)
 *     grpc_shutdown()
 */
      /*finally:*/ {
        /*normal exit:*/{
          #ifdef WITH_THREAD
          __Pyx_FastGIL_Forget();
          Py_BLOCK_THREADS
          #endif
          goto __pyx_L5;
        }
        __pyx_L5:;
      }
  }

  /* "src/python/grpcio/grpc/_cython/_cygrpc/records.pyx.pxi":140
 *     with nogil:
 *       grpc_call_details_destroy(&self.c_details)
 *     grpc_shutdown()             # <<<<<<<<<<<<<<
 * 
 *   @property
 */
  grpc_shutdown();

  /* "src/python/grpcio/grpc/_cython/_cygrpc/records.pyx.pxi":137
 *       grpc_call_details_init(&self.c_details)
 * 
 *   def __dealloc__(self):             # <<<<<<<<<<<<<<
 *     with nogil:
 *       grpc_call_details_destroy(&self.c_details)
 */

  /* function exit code */
  __Pyx_RefNannyFinishContext();
}

/* "src/python/grpcio/grpc/_cython/_cygrpc/records.pyx.pxi":143
 * 
 *   @property
 *   def method(self):             # <<<<<<<<<<<<<<
 *     return _slice_bytes(self.c_details.method)
 * 
 */

/* Python wrapper */
static PyObject *__pyx_pw_4grpc_7_cython_6cygrpc_11CallDetails_6method_1__get__(PyObject *__pyx_v_self); /*proto*/
static PyObject *__pyx_pw_4grpc_7_cython_6cygrpc_11CallDetails_6method_1__get__(PyObject *__pyx_v_self) {
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__get__ (wrapper)", 0);
  __pyx_r = __pyx_pf_4grpc_7_cython_6cygrpc_11CallDetails_6method___get__(((struct __pyx_obj_4grpc_7_cython_6cygrpc_CallDetails *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_4grpc_7_cython_6cygrpc_11CallDetails_6method___get__(struct __pyx_obj_4grpc_7_cython_6cygrpc_CallDetails *__pyx_v_self) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("__get__", 0);

  /* "src/python/grpcio/grpc/_cython/_cygrpc/records.pyx.pxi":144
 *   @property
 *   def method(self):
 *     return _slice_bytes(self.c_details.method)             # <<<<<<<<<<<<<<
 * 
 *   @property
 */
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_1 = __pyx_f_4grpc_7_cython_6cygrpc__slice_bytes(__pyx_v_self->c_details.method); if (unlikely(!__pyx_t_1)) __PYX_ERR(21, 144, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_r = __pyx_t_1;
  __pyx_t_1 = 0;
  goto __pyx_L0;

  /* "src/python/grpcio/grpc/_cython/_cygrpc/records.pyx.pxi":143
 * 
 *   @property
 *   def method(self):             # <<<<<<<<<<<<<<
 *     return _slice_bytes(self.c_details.method)
 * 
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_AddTraceback("grpc._cython.cygrpc.CallDetails.method.__get__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "src/python/grpcio/grpc/_cython/_cygrpc/records.pyx.pxi":147
 * 
 *   @property
 *   def host(self):             # <<<<<<<<<<<<<<
 *     return _slice_bytes(self.c_details.host)
 * 
 */

/* Python wrapper */
static PyObject *__pyx_pw_4grpc_7_cython_6cygrpc_11CallDetails_4host_1__get__(PyObject *__pyx_v_self); /*proto*/
static PyObject *__pyx_pw_4grpc_7_cython_6cygrpc_11CallDetails_4host_1__get__(PyObject *__pyx_v_self) {
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__get__ (wrapper)", 0);
  __pyx_r = __pyx_pf_4grpc_7_cython_6cygrpc_11CallDetails_4host___get__(((struct __pyx_obj_4grpc_7_cython_6cygrpc_CallDetails *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_4grpc_7_cython_6cygrpc_11CallDetails_4host___get__(struct __pyx_obj_4grpc_7_cython_6cygrpc_CallDetails *__pyx_v_self) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("__get__", 0);

  /* "src/python/grpcio/grpc/_cython/_cygrpc/records.pyx.pxi":148
 *   @property
 *   def host(self):
 *     return _slice_bytes(self.c_details.host)             # <<<<<<<<<<<<<<
 * 
 *   @property
 */
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_1 = __pyx_f_4grpc_7_cython_6cygrpc__slice_bytes(__pyx_v_self->c_details.host); if (unlikely(!__pyx_t_1)) __PYX_ERR(21, 148, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_r = __pyx_t_1;
  __pyx_t_1 = 0;
  goto __pyx_L0;

  /* "src/python/grpcio/grpc/_cython/_cygrpc/records.pyx.pxi":147
 * 
 *   @property
 *   def host(self):             # <<<<<<<<<<<<<<
 *     return _slice_bytes(self.c_details.host)
 * 
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_AddTraceback("grpc._cython.cygrpc.CallDetails.host.__get__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "src/python/grpcio/grpc/_cython/_cygrpc/records.pyx.pxi":151
 * 
 *   @property
 *   def deadline(self):             # <<<<<<<<<<<<<<
 *     return _time_from_timespec(self.c_details.deadline)
 * 
 */

/* Python wrapper */
static PyObject *__pyx_pw_4grpc_7_cython_6cygrpc_11CallDetails_8deadline_1__get__(PyObject *__pyx_v_self); /*proto*/
static PyObject *__pyx_pw_4grpc_7_cython_6cygrpc_11CallDetails_8deadline_1__get__(PyObject *__pyx_v_self) {
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__get__ (wrapper)", 0);
  __pyx_r = __pyx_pf_4grpc_7_cython_6cygrpc_11CallDetails_8deadline___get__(((struct __pyx_obj_4grpc_7_cython_6cygrpc_CallDetails *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_4grpc_7_cython_6cygrpc_11CallDetails_8deadline___get__(struct __pyx_obj_4grpc_7_cython_6cygrpc_CallDetails *__pyx_v_self) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  double __pyx_t_1;
  PyObject *__pyx_t_2 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("__get__", 0);

  /* "src/python/grpcio/grpc/_cython/_cygrpc/records.pyx.pxi":152
 *   @property
 *   def deadline(self):
 *     return _time_from_timespec(self.c_details.deadline)             # <<<<<<<<<<<<<<
 * 
 * 
 */
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_1 = __pyx_f_4grpc_7_cython_6cygrpc__time_from_timespec(__pyx_v_self->c_details.deadline); if (unlikely(__pyx_t_1 == ((double)-1) && PyErr_Occurred())) __PYX_ERR(21, 152, __pyx_L1_error)
  __pyx_t_2 = PyFloat_FromDouble(__pyx_t_1); if (unlikely(!__pyx_t_2)) __PYX_ERR(21, 152, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __pyx_r = __pyx_t_2;
  __pyx_t_2 = 0;
  goto __pyx_L0;

  /* "src/python/grpcio/grpc/_cython/_cygrpc/records.pyx.pxi":151
 * 
 *   @property
 *   def deadline(self):             # <<<<<<<<<<<<<<
 *     return _time_from_timespec(self.c_details.deadline)
 * 
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_AddTraceback("grpc._cython.cygrpc.CallDetails.deadline.__get__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "(tree fragment)":1
 * def __reduce_cython__(self):             # <<<<<<<<<<<<<<
 *     raise TypeError("no default __reduce__ due to non-trivial __cinit__")
 * def __setstate_cython__(self, __pyx_state):
 */

/* Python wrapper */
static PyObject *__pyx_pw_4grpc_7_cython_6cygrpc_11CallDetails_5__reduce_cython__(PyObject *__pyx_v_self, CYTHON_UNUSED PyObject *unused); /*proto*/
static PyObject *__pyx_pw_4grpc_7_cython_6cygrpc_11CallDetails_5__reduce_cython__(PyObject *__pyx_v_self, CYTHON_UNUSED PyObject *unused) {
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__reduce_cython__ (wrapper)", 0);
  __pyx_r = __pyx_pf_4grpc_7_cython_6cygrpc_11CallDetails_4__reduce_cython__(((struct __pyx_obj_4grpc_7_cython_6cygrpc_CallDetails *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_4grpc_7_cython_6cygrpc_11CallDetails_4__reduce_cython__(CYTHON_UNUSED struct __pyx_obj_4grpc_7_cython_6cygrpc_CallDetails *__pyx_v_self) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("__reduce_cython__", 0);

  /* "(tree fragment)":2
 * def __reduce_cython__(self):
 *     raise TypeError("no default __reduce__ due to non-trivial __cinit__")             # <<<<<<<<<<<<<<
 * def __setstate_cython__(self, __pyx_state):
 *     raise TypeError("no default __reduce__ due to non-trivial __cinit__")
 */
  __pyx_t_1 = __Pyx_PyObject_Call(__pyx_builtin_TypeError, __pyx_tuple__94, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(11, 2, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_Raise(__pyx_t_1, 0, 0, 0);
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  __PYX_ERR(11, 2, __pyx_L1_error)

  /* "(tree fragment)":1
 * def __reduce_cython__(self):             # <<<<<<<<<<<<<<
 *     raise TypeError("no default __reduce__ due to non-trivial __cinit__")
 * def __setstate_cython__(self, __pyx_state):
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_AddTraceback("grpc._cython.cygrpc.CallDetails.__reduce_cython__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "(tree fragment)":3
 * def __reduce_cython__(self):
 *     raise TypeError("no default __reduce__ due to non-trivial __cinit__")
 * def __setstate_cython__(self, __pyx_state):             # <<<<<<<<<<<<<<
 *     raise TypeError("no default __reduce__ due to non-trivial __cinit__")
 */

/* Python wrapper */
static PyObject *__pyx_pw_4grpc_7_cython_6cygrpc_11CallDetails_7__setstate_cython__(PyObject *__pyx_v_self, PyObject *__pyx_v___pyx_state); /*proto*/
static PyObject *__pyx_pw_4grpc_7_cython_6cygrpc_11CallDetails_7__setstate_cython__(PyObject *__pyx_v_self, PyObject *__pyx_v___pyx_state) {
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__setstate_cython__ (wrapper)", 0);
  __pyx_r = __pyx_pf_4grpc_7_cython_6cygrpc_11CallDetails_6__setstate_cython__(((struct __pyx_obj_4grpc_7_cython_6cygrpc_CallDetails *)__pyx_v_self), ((PyObject *)__pyx_v___pyx_state));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_4grpc_7_cython_6cygrpc_11CallDetails_6__setstate_cython__(CYTHON_UNUSED struct __pyx_obj_4grpc_7_cython_6cygrpc_CallDetails *__pyx_v_self, CYTHON_UNUSED PyObject *__pyx_v___pyx_state) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("__setstate_cython__", 0);

  /* "(tree fragment)":4
 *     raise TypeError("no default __reduce__ due to non-trivial __cinit__")
 * def __setstate_cython__(self, __pyx_state):
 *     raise TypeError("no default __reduce__ due to non-trivial __cinit__")             # <<<<<<<<<<<<<<
 */
  __pyx_t_1 = __Pyx_PyObject_Call(__pyx_builtin_TypeError, __pyx_tuple__95, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(11, 4, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_Raise(__pyx_t_1, 0, 0, 0);
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  __PYX_ERR(11, 4, __pyx_L1_error)

  /* "(tree fragment)":3
 * def __reduce_cython__(self):
 *     raise TypeError("no default __reduce__ due to non-trivial __cinit__")
 * def __setstate_cython__(self, __pyx_state):             # <<<<<<<<<<<<<<
 *     raise TypeError("no default __reduce__ due to non-trivial __cinit__")
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_AddTraceback("grpc._cython.cygrpc.CallDetails.__setstate_cython__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "src/python/grpcio/grpc/_cython/_cygrpc/records.pyx.pxi":157
 * cdef class SslPemKeyCertPair:
 * 
 *   def __cinit__(self, bytes private_key, bytes certificate_chain):             # <<<<<<<<<<<<<<
 *     self.private_key = private_key
 *     self.certificate_chain = certificate_chain
 */

/* Python wrapper */
static int __pyx_pw_4grpc_7_cython_6cygrpc_17SslPemKeyCertPair_1__cinit__(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
static int __pyx_pw_4grpc_7_cython_6cygrpc_17SslPemKeyCertPair_1__cinit__(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
  PyObject *__pyx_v_private_key = 0;
  PyObject *__pyx_v_certificate_chain = 0;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  int __pyx_r;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__cinit__ (wrapper)", 0);
  {
    static PyObject **__pyx_pyargnames[] = {&__pyx_n_s_private_key,&__pyx_n_s_certificate_chain,0};
    PyObject* values[2] = {0,0};
    if (unlikely(__pyx_kwds)) {
      Py_ssize_t kw_args;
      const Py_ssize_t pos_args = PyTuple_GET_SIZE(__pyx_args);
      switch (pos_args) {
        case  2: values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
        CYTHON_FALLTHROUGH;
        case  1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
        CYTHON_FALLTHROUGH;
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      kw_args = PyDict_Size(__pyx_kwds);
      switch (pos_args) {
        case  0:
        if (likely((values[0] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_private_key)) != 0)) kw_args--;
        else goto __pyx_L5_argtuple_error;
        CYTHON_FALLTHROUGH;
        case  1:
        if (likely((values[1] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_certificate_chain)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("__cinit__", 1, 2, 2, 1); __PYX_ERR(21, 157, __pyx_L3_error)
        }
      }
      if (unlikely(kw_args > 0)) {
        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "__cinit__") < 0)) __PYX_ERR(21, 157, __pyx_L3_error)
      }
    } else if (PyTuple_GET_SIZE(__pyx_args) != 2) {
      goto __pyx_L5_argtuple_error;
    } else {
      values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
      values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
    }
    __pyx_v_private_key = ((PyObject*)values[0]);
    __pyx_v_certificate_chain = ((PyObject*)values[1]);
  }
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("__cinit__", 1, 2, 2, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(21, 157, __pyx_L3_error)
  __pyx_L3_error:;
  __Pyx_AddTraceback("grpc._cython.cygrpc.SslPemKeyCertPair.__cinit__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return -1;
  __pyx_L4_argument_unpacking_done:;
  if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_private_key), (&PyBytes_Type), 1, "private_key", 1))) __PYX_ERR(21, 157, __pyx_L1_error)
  if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_certificate_chain), (&PyBytes_Type), 1, "certificate_chain", 1))) __PYX_ERR(21, 157, __pyx_L1_error)
  __pyx_r = __pyx_pf_4grpc_7_cython_6cygrpc_17SslPemKeyCertPair___cinit__(((struct __pyx_obj_4grpc_7_cython_6cygrpc_SslPemKeyCertPair *)__pyx_v_self), __pyx_v_private_key, __pyx_v_certificate_chain);

  /* function exit code */
  goto __pyx_L0;
  __pyx_L1_error:;
  __pyx_r = -1;
  __pyx_L0:;
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static int __pyx_pf_4grpc_7_cython_6cygrpc_17SslPemKeyCertPair___cinit__(struct __pyx_obj_4grpc_7_cython_6cygrpc_SslPemKeyCertPair *__pyx_v_self, PyObject *__pyx_v_private_key, PyObject *__pyx_v_certificate_chain) {
  int __pyx_r;
  __Pyx_RefNannyDeclarations
  char const *__pyx_t_1;
  char const *__pyx_t_2;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("__cinit__", 0);

  /* "src/python/grpcio/grpc/_cython/_cygrpc/records.pyx.pxi":158
 * 
 *   def __cinit__(self, bytes private_key, bytes certificate_chain):
 *     self.private_key = private_key             # <<<<<<<<<<<<<<
 *     self.certificate_chain = certificate_chain
 *     self.c_pair.private_key = self.private_key
 */
  __Pyx_INCREF(__pyx_v_private_key);
  __Pyx_GIVEREF(__pyx_v_private_key);
  __Pyx_GOTREF(__pyx_v_self->private_key);
  __Pyx_DECREF(__pyx_v_self->private_key);
  __pyx_v_self->private_key = __pyx_v_private_key;

  /* "src/python/grpcio/grpc/_cython/_cygrpc/records.pyx.pxi":159
 *   def __cinit__(self, bytes private_key, bytes certificate_chain):
 *     self.private_key = private_key
 *     self.certificate_chain = certificate_chain             # <<<<<<<<<<<<<<
 *     self.c_pair.private_key = self.private_key
 *     self.c_pair.certificate_chain = self.certificate_chain
 */
  __Pyx_INCREF(__pyx_v_certificate_chain);
  __Pyx_GIVEREF(__pyx_v_certificate_chain);
  __Pyx_GOTREF(__pyx_v_self->certificate_chain);
  __Pyx_DECREF(__pyx_v_self->certificate_chain);
  __pyx_v_self->certificate_chain = __pyx_v_certificate_chain;

  /* "src/python/grpcio/grpc/_cython/_cygrpc/records.pyx.pxi":160
 *     self.private_key = private_key
 *     self.certificate_chain = certificate_chain
 *     self.c_pair.private_key = self.private_key             # <<<<<<<<<<<<<<
 *     self.c_pair.certificate_chain = self.certificate_chain
 * 
 */
  __pyx_t_1 = __Pyx_PyObject_AsString(__pyx_v_self->private_key); if (unlikely((!__pyx_t_1) && PyErr_Occurred())) __PYX_ERR(21, 160, __pyx_L1_error)
  __pyx_v_self->c_pair.private_key = __pyx_t_1;

  /* "src/python/grpcio/grpc/_cython/_cygrpc/records.pyx.pxi":161
 *     self.certificate_chain = certificate_chain
 *     self.c_pair.private_key = self.private_key
 *     self.c_pair.certificate_chain = self.certificate_chain             # <<<<<<<<<<<<<<
 * 
 * 
 */
  __pyx_t_2 = __Pyx_PyObject_AsString(__pyx_v_self->certificate_chain); if (unlikely((!__pyx_t_2) && PyErr_Occurred())) __PYX_ERR(21, 161, __pyx_L1_error)
  __pyx_v_self->c_pair.cert_chain = __pyx_t_2;

  /* "src/python/grpcio/grpc/_cython/_cygrpc/records.pyx.pxi":157
 * cdef class SslPemKeyCertPair:
 * 
 *   def __cinit__(self, bytes private_key, bytes certificate_chain):             # <<<<<<<<<<<<<<
 *     self.private_key = private_key
 *     self.certificate_chain = certificate_chain
 */

  /* function exit code */
  __pyx_r = 0;
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_AddTraceback("grpc._cython.cygrpc.SslPemKeyCertPair.__cinit__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = -1;
  __pyx_L0:;
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "src/python/grpcio/grpc/_cython/_cygrpc/records.pxd.pxi":29
 * 
 *   cdef grpc_ssl_pem_key_cert_pair c_pair
 *   cdef readonly object private_key, certificate_chain             # <<<<<<<<<<<<<<
 * 
 * 
 */

/* Python wrapper */
static PyObject *__pyx_pw_4grpc_7_cython_6cygrpc_17SslPemKeyCertPair_11private_key_1__get__(PyObject *__pyx_v_self); /*proto*/
static PyObject *__pyx_pw_4grpc_7_cython_6cygrpc_17SslPemKeyCertPair_11private_key_1__get__(PyObject *__pyx_v_self) {
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__get__ (wrapper)", 0);
  __pyx_r = __pyx_pf_4grpc_7_cython_6cygrpc_17SslPemKeyCertPair_11private_key___get__(((struct __pyx_obj_4grpc_7_cython_6cygrpc_SslPemKeyCertPair *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_4grpc_7_cython_6cygrpc_17SslPemKeyCertPair_11private_key___get__(struct __pyx_obj_4grpc_7_cython_6cygrpc_SslPemKeyCertPair *__pyx_v_self) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__get__", 0);
  __Pyx_XDECREF(__pyx_r);
  __Pyx_INCREF(__pyx_v_self->private_key);
  __pyx_r = __pyx_v_self->private_key;
  goto __pyx_L0;

  /* function exit code */
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* Python wrapper */
static PyObject *__pyx_pw_4grpc_7_cython_6cygrpc_17SslPemKeyCertPair_17certificate_chain_1__get__(PyObject *__pyx_v_self); /*proto*/
static PyObject *__pyx_pw_4grpc_7_cython_6cygrpc_17SslPemKeyCertPair_17certificate_chain_1__get__(PyObject *__pyx_v_self) {
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__get__ (wrapper)", 0);
  __pyx_r = __pyx_pf_4grpc_7_cython_6cygrpc_17SslPemKeyCertPair_17certificate_chain___get__(((struct __pyx_obj_4grpc_7_cython_6cygrpc_SslPemKeyCertPair *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_4grpc_7_cython_6cygrpc_17SslPemKeyCertPair_17certificate_chain___get__(struct __pyx_obj_4grpc_7_cython_6cygrpc_SslPemKeyCertPair *__pyx_v_self) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__get__", 0);
  __Pyx_XDECREF(__pyx_r);
  __Pyx_INCREF(__pyx_v_self->certificate_chain);
  __pyx_r = __pyx_v_self->certificate_chain;
  goto __pyx_L0;

  /* function exit code */
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "(tree fragment)":1
 * def __reduce_cython__(self):             # <<<<<<<<<<<<<<
 *     raise TypeError("no default __reduce__ due to non-trivial __cinit__")
 * def __setstate_cython__(self, __pyx_state):
 */

/* Python wrapper */
static PyObject *__pyx_pw_4grpc_7_cython_6cygrpc_17SslPemKeyCertPair_3__reduce_cython__(PyObject *__pyx_v_self, CYTHON_UNUSED PyObject *unused); /*proto*/
static PyObject *__pyx_pw_4grpc_7_cython_6cygrpc_17SslPemKeyCertPair_3__reduce_cython__(PyObject *__pyx_v_self, CYTHON_UNUSED PyObject *unused) {
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__reduce_cython__ (wrapper)", 0);
  __pyx_r = __pyx_pf_4grpc_7_cython_6cygrpc_17SslPemKeyCertPair_2__reduce_cython__(((struct __pyx_obj_4grpc_7_cython_6cygrpc_SslPemKeyCertPair *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_4grpc_7_cython_6cygrpc_17SslPemKeyCertPair_2__reduce_cython__(CYTHON_UNUSED struct __pyx_obj_4grpc_7_cython_6cygrpc_SslPemKeyCertPair *__pyx_v_self) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("__reduce_cython__", 0);

  /* "(tree fragment)":2
 * def __reduce_cython__(self):
 *     raise TypeError("no default __reduce__ due to non-trivial __cinit__")             # <<<<<<<<<<<<<<
 * def __setstate_cython__(self, __pyx_state):
 *     raise TypeError("no default __reduce__ due to non-trivial __cinit__")
 */
  __pyx_t_1 = __Pyx_PyObject_Call(__pyx_builtin_TypeError, __pyx_tuple__96, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(11, 2, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_Raise(__pyx_t_1, 0, 0, 0);
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  __PYX_ERR(11, 2, __pyx_L1_error)

  /* "(tree fragment)":1
 * def __reduce_cython__(self):             # <<<<<<<<<<<<<<
 *     raise TypeError("no default __reduce__ due to non-trivial __cinit__")
 * def __setstate_cython__(self, __pyx_state):
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_AddTraceback("grpc._cython.cygrpc.SslPemKeyCertPair.__reduce_cython__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "(tree fragment)":3
 * def __reduce_cython__(self):
 *     raise TypeError("no default __reduce__ due to non-trivial __cinit__")
 * def __setstate_cython__(self, __pyx_state):             # <<<<<<<<<<<<<<
 *     raise TypeError("no default __reduce__ due to non-trivial __cinit__")
 */

/* Python wrapper */
static PyObject *__pyx_pw_4grpc_7_cython_6cygrpc_17SslPemKeyCertPair_5__setstate_cython__(PyObject *__pyx_v_self, PyObject *__pyx_v___pyx_state); /*proto*/
static PyObject *__pyx_pw_4grpc_7_cython_6cygrpc_17SslPemKeyCertPair_5__setstate_cython__(PyObject *__pyx_v_self, PyObject *__pyx_v___pyx_state) {
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__setstate_cython__ (wrapper)", 0);
  __pyx_r = __pyx_pf_4grpc_7_cython_6cygrpc_17SslPemKeyCertPair_4__setstate_cython__(((struct __pyx_obj_4grpc_7_cython_6cygrpc_SslPemKeyCertPair *)__pyx_v_self), ((PyObject *)__pyx_v___pyx_state));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_4grpc_7_cython_6cygrpc_17SslPemKeyCertPair_4__setstate_cython__(CYTHON_UNUSED struct __pyx_obj_4grpc_7_cython_6cygrpc_SslPemKeyCertPair *__pyx_v_self, CYTHON_UNUSED PyObject *__pyx_v___pyx_state) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("__setstate_cython__", 0);

  /* "(tree fragment)":4
 *     raise TypeError("no default __reduce__ due to non-trivial __cinit__")
 * def __setstate_cython__(self, __pyx_state):
 *     raise TypeError("no default __reduce__ due to non-trivial __cinit__")             # <<<<<<<<<<<<<<
 */
  __pyx_t_1 = __Pyx_PyObject_Call(__pyx_builtin_TypeError, __pyx_tuple__97, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(11, 4, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_Raise(__pyx_t_1, 0, 0, 0);
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  __PYX_ERR(11, 4, __pyx_L1_error)

  /* "(tree fragment)":3
 * def __reduce_cython__(self):
 *     raise TypeError("no default __reduce__ due to non-trivial __cinit__")
 * def __setstate_cython__(self, __pyx_state):             # <<<<<<<<<<<<<<
 *     raise TypeError("no default __reduce__ due to non-trivial __cinit__")
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_AddTraceback("grpc._cython.cygrpc.SslPemKeyCertPair.__setstate_cython__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "src/python/grpcio/grpc/_cython/_cygrpc/records.pyx.pxi":166
 * cdef class CompressionOptions:
 * 
 *   def __cinit__(self):             # <<<<<<<<<<<<<<
 *     with nogil:
 *       grpc_compression_options_init(&self.c_options)
 */

/* Python wrapper */
static int __pyx_pw_4grpc_7_cython_6cygrpc_18CompressionOptions_1__cinit__(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
static int __pyx_pw_4grpc_7_cython_6cygrpc_18CompressionOptions_1__cinit__(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
  int __pyx_r;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__cinit__ (wrapper)", 0);
  if (unlikely(PyTuple_GET_SIZE(__pyx_args) > 0)) {
    __Pyx_RaiseArgtupleInvalid("__cinit__", 1, 0, 0, PyTuple_GET_SIZE(__pyx_args)); return -1;}
  if (unlikely(__pyx_kwds) && unlikely(PyDict_Size(__pyx_kwds) > 0) && unlikely(!__Pyx_CheckKeywordStrings(__pyx_kwds, "__cinit__", 0))) return -1;
  __pyx_r = __pyx_pf_4grpc_7_cython_6cygrpc_18CompressionOptions___cinit__(((struct __pyx_obj_4grpc_7_cython_6cygrpc_CompressionOptions *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static int __pyx_pf_4grpc_7_cython_6cygrpc_18CompressionOptions___cinit__(struct __pyx_obj_4grpc_7_cython_6cygrpc_CompressionOptions *__pyx_v_self) {
  int __pyx_r;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__cinit__", 0);

  /* "src/python/grpcio/grpc/_cython/_cygrpc/records.pyx.pxi":167
 * 
 *   def __cinit__(self):
 *     with nogil:             # <<<<<<<<<<<<<<
 *       grpc_compression_options_init(&self.c_options)
 * 
 */
  {
      #ifdef WITH_THREAD
      PyThreadState *_save;
      Py_UNBLOCK_THREADS
      __Pyx_FastGIL_Remember();
      #endif
      /*try:*/ {

        /* "src/python/grpcio/grpc/_cython/_cygrpc/records.pyx.pxi":168
 *   def __cinit__(self):
 *     with nogil:
 *       grpc_compression_options_init(&self.c_options)             # <<<<<<<<<<<<<<
 * 
 *   def enable_algorithm(self, grpc_compression_algorithm algorithm):
 */
        grpc_compression_options_init((&__pyx_v_self->c_options));
      }

      /* "src/python/grpcio/grpc/_cython/_cygrpc/records.pyx.pxi":167
 * 
 *   def __cinit__(self):
 *     with nogil:             # <<<<<<<<<<<<<<
 *       grpc_compression_options_init(&self.c_options)
 * 
 */
      /*finally:*/ {
        /*normal exit:*/{
          #ifdef WITH_THREAD
          __Pyx_FastGIL_Forget();
          Py_BLOCK_THREADS
          #endif
          goto __pyx_L5;
        }
        __pyx_L5:;
      }
  }

  /* "src/python/grpcio/grpc/_cython/_cygrpc/records.pyx.pxi":166
 * cdef class CompressionOptions:
 * 
 *   def __cinit__(self):             # <<<<<<<<<<<<<<
 *     with nogil:
 *       grpc_compression_options_init(&self.c_options)
 */

  /* function exit code */
  __pyx_r = 0;
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "src/python/grpcio/grpc/_cython/_cygrpc/records.pyx.pxi":170
 *       grpc_compression_options_init(&self.c_options)
 * 
 *   def enable_algorithm(self, grpc_compression_algorithm algorithm):             # <<<<<<<<<<<<<<
 *     with nogil:
 *       grpc_compression_options_enable_algorithm(&self.c_options, algorithm)
 */

/* Python wrapper */
static PyObject *__pyx_pw_4grpc_7_cython_6cygrpc_18CompressionOptions_3enable_algorithm(PyObject *__pyx_v_self, PyObject *__pyx_arg_algorithm); /*proto*/
static PyObject *__pyx_pw_4grpc_7_cython_6cygrpc_18CompressionOptions_3enable_algorithm(PyObject *__pyx_v_self, PyObject *__pyx_arg_algorithm) {
  grpc_compression_algorithm __pyx_v_algorithm;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("enable_algorithm (wrapper)", 0);
  assert(__pyx_arg_algorithm); {
    __pyx_v_algorithm = ((grpc_compression_algorithm)__Pyx_PyInt_As_grpc_compression_algorithm(__pyx_arg_algorithm)); if (unlikely(PyErr_Occurred())) __PYX_ERR(21, 170, __pyx_L3_error)
  }
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L3_error:;
  __Pyx_AddTraceback("grpc._cython.cygrpc.CompressionOptions.enable_algorithm", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  __pyx_r = __pyx_pf_4grpc_7_cython_6cygrpc_18CompressionOptions_2enable_algorithm(((struct __pyx_obj_4grpc_7_cython_6cygrpc_CompressionOptions *)__pyx_v_self), ((grpc_compression_algorithm)__pyx_v_algorithm));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_4grpc_7_cython_6cygrpc_18CompressionOptions_2enable_algorithm(struct __pyx_obj_4grpc_7_cython_6cygrpc_CompressionOptions *__pyx_v_self, grpc_compression_algorithm __pyx_v_algorithm) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("enable_algorithm", 0);

  /* "src/python/grpcio/grpc/_cython/_cygrpc/records.pyx.pxi":171
 * 
 *   def enable_algorithm(self, grpc_compression_algorithm algorithm):
 *     with nogil:             # <<<<<<<<<<<<<<
 *       grpc_compression_options_enable_algorithm(&self.c_options, algorithm)
 * 
 */
  {
      #ifdef WITH_THREAD
      PyThreadState *_save;
      Py_UNBLOCK_THREADS
      __Pyx_FastGIL_Remember();
      #endif
      /*try:*/ {

        /* "src/python/grpcio/grpc/_cython/_cygrpc/records.pyx.pxi":172
 *   def enable_algorithm(self, grpc_compression_algorithm algorithm):
 *     with nogil:
 *       grpc_compression_options_enable_algorithm(&self.c_options, algorithm)             # <<<<<<<<<<<<<<
 * 
 *   def disable_algorithm(self, grpc_compression_algorithm algorithm):
 */
        grpc_compression_options_enable_algorithm((&__pyx_v_self->c_options), __pyx_v_algorithm);
      }

      /* "src/python/grpcio/grpc/_cython/_cygrpc/records.pyx.pxi":171
 * 
 *   def enable_algorithm(self, grpc_compression_algorithm algorithm):
 *     with nogil:             # <<<<<<<<<<<<<<
 *       grpc_compression_options_enable_algorithm(&self.c_options, algorithm)
 * 
 */
      /*finally:*/ {
        /*normal exit:*/{
          #ifdef WITH_THREAD
          __Pyx_FastGIL_Forget();
          Py_BLOCK_THREADS
          #endif
          goto __pyx_L5;
        }
        __pyx_L5:;
      }
  }

  /* "src/python/grpcio/grpc/_cython/_cygrpc/records.pyx.pxi":170
 *       grpc_compression_options_init(&self.c_options)
 * 
 *   def enable_algorithm(self, grpc_compression_algorithm algorithm):             # <<<<<<<<<<<<<<
 *     with nogil:
 *       grpc_compression_options_enable_algorithm(&self.c_options, algorithm)
 */

  /* function exit code */
  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "src/python/grpcio/grpc/_cython/_cygrpc/records.pyx.pxi":174
 *       grpc_compression_options_enable_algorithm(&self.c_options, algorithm)
 * 
 *   def disable_algorithm(self, grpc_compression_algorithm algorithm):             # <<<<<<<<<<<<<<
 *     with nogil:
 *       grpc_compression_options_disable_algorithm(&self.c_options, algorithm)
 */

/* Python wrapper */
static PyObject *__pyx_pw_4grpc_7_cython_6cygrpc_18CompressionOptions_5disable_algorithm(PyObject *__pyx_v_self, PyObject *__pyx_arg_algorithm); /*proto*/
static PyObject *__pyx_pw_4grpc_7_cython_6cygrpc_18CompressionOptions_5disable_algorithm(PyObject *__pyx_v_self, PyObject *__pyx_arg_algorithm) {
  grpc_compression_algorithm __pyx_v_algorithm;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("disable_algorithm (wrapper)", 0);
  assert(__pyx_arg_algorithm); {
    __pyx_v_algorithm = ((grpc_compression_algorithm)__Pyx_PyInt_As_grpc_compression_algorithm(__pyx_arg_algorithm)); if (unlikely(PyErr_Occurred())) __PYX_ERR(21, 174, __pyx_L3_error)
  }
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L3_error:;
  __Pyx_AddTraceback("grpc._cython.cygrpc.CompressionOptions.disable_algorithm", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  __pyx_r = __pyx_pf_4grpc_7_cython_6cygrpc_18CompressionOptions_4disable_algorithm(((struct __pyx_obj_4grpc_7_cython_6cygrpc_CompressionOptions *)__pyx_v_self), ((grpc_compression_algorithm)__pyx_v_algorithm));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_4grpc_7_cython_6cygrpc_18CompressionOptions_4disable_algorithm(struct __pyx_obj_4grpc_7_cython_6cygrpc_CompressionOptions *__pyx_v_self, grpc_compression_algorithm __pyx_v_algorithm) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("disable_algorithm", 0);

  /* "src/python/grpcio/grpc/_cython/_cygrpc/records.pyx.pxi":175
 * 
 *   def disable_algorithm(self, grpc_compression_algorithm algorithm):
 *     with nogil:             # <<<<<<<<<<<<<<
 *       grpc_compression_options_disable_algorithm(&self.c_options, algorithm)
 * 
 */
  {
      #ifdef WITH_THREAD
      PyThreadState *_save;
      Py_UNBLOCK_THREADS
      __Pyx_FastGIL_Remember();
      #endif
      /*try:*/ {

        /* "src/python/grpcio/grpc/_cython/_cygrpc/records.pyx.pxi":176
 *   def disable_algorithm(self, grpc_compression_algorithm algorithm):
 *     with nogil:
 *       grpc_compression_options_disable_algorithm(&self.c_options, algorithm)             # <<<<<<<<<<<<<<
 * 
 *   def is_algorithm_enabled(self, grpc_compression_algorithm algorithm):
 */
        grpc_compression_options_disable_algorithm((&__pyx_v_self->c_options), __pyx_v_algorithm);
      }

      /* "src/python/grpcio/grpc/_cython/_cygrpc/records.pyx.pxi":175
 * 
 *   def disable_algorithm(self, grpc_compression_algorithm algorithm):
 *     with nogil:             # <<<<<<<<<<<<<<
 *       grpc_compression_options_disable_algorithm(&self.c_options, algorithm)
 * 
 */
      /*finally:*/ {
        /*normal exit:*/{
          #ifdef WITH_THREAD
          __Pyx_FastGIL_Forget();
          Py_BLOCK_THREADS
          #endif
          goto __pyx_L5;
        }
        __pyx_L5:;
      }
  }

  /* "src/python/grpcio/grpc/_cython/_cygrpc/records.pyx.pxi":174
 *       grpc_compression_options_enable_algorithm(&self.c_options, algorithm)
 * 
 *   def disable_algorithm(self, grpc_compression_algorithm algorithm):             # <<<<<<<<<<<<<<
 *     with nogil:
 *       grpc_compression_options_disable_algorithm(&self.c_options, algorithm)
 */

  /* function exit code */
  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "src/python/grpcio/grpc/_cython/_cygrpc/records.pyx.pxi":178
 *       grpc_compression_options_disable_algorithm(&self.c_options, algorithm)
 * 
 *   def is_algorithm_enabled(self, grpc_compression_algorithm algorithm):             # <<<<<<<<<<<<<<
 *     cdef int result
 *     with nogil:
 */

/* Python wrapper */
static PyObject *__pyx_pw_4grpc_7_cython_6cygrpc_18CompressionOptions_7is_algorithm_enabled(PyObject *__pyx_v_self, PyObject *__pyx_arg_algorithm); /*proto*/
static PyObject *__pyx_pw_4grpc_7_cython_6cygrpc_18CompressionOptions_7is_algorithm_enabled(PyObject *__pyx_v_self, PyObject *__pyx_arg_algorithm) {
  grpc_compression_algorithm __pyx_v_algorithm;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("is_algorithm_enabled (wrapper)", 0);
  assert(__pyx_arg_algorithm); {
    __pyx_v_algorithm = ((grpc_compression_algorithm)__Pyx_PyInt_As_grpc_compression_algorithm(__pyx_arg_algorithm)); if (unlikely(PyErr_Occurred())) __PYX_ERR(21, 178, __pyx_L3_error)
  }
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L3_error:;
  __Pyx_AddTraceback("grpc._cython.cygrpc.CompressionOptions.is_algorithm_enabled", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  __pyx_r = __pyx_pf_4grpc_7_cython_6cygrpc_18CompressionOptions_6is_algorithm_enabled(((struct __pyx_obj_4grpc_7_cython_6cygrpc_CompressionOptions *)__pyx_v_self), ((grpc_compression_algorithm)__pyx_v_algorithm));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_4grpc_7_cython_6cygrpc_18CompressionOptions_6is_algorithm_enabled(struct __pyx_obj_4grpc_7_cython_6cygrpc_CompressionOptions *__pyx_v_self, grpc_compression_algorithm __pyx_v_algorithm) {
  int __pyx_v_result;
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("is_algorithm_enabled", 0);

  /* "src/python/grpcio/grpc/_cython/_cygrpc/records.pyx.pxi":180
 *   def is_algorithm_enabled(self, grpc_compression_algorithm algorithm):
 *     cdef int result
 *     with nogil:             # <<<<<<<<<<<<<<
 *       result = grpc_compression_options_is_algorithm_enabled(
 *           &self.c_options, algorithm)
 */
  {
      #ifdef WITH_THREAD
      PyThreadState *_save;
      Py_UNBLOCK_THREADS
      __Pyx_FastGIL_Remember();
      #endif
      /*try:*/ {

        /* "src/python/grpcio/grpc/_cython/_cygrpc/records.pyx.pxi":181
 *     cdef int result
 *     with nogil:
 *       result = grpc_compression_options_is_algorithm_enabled(             # <<<<<<<<<<<<<<
 *           &self.c_options, algorithm)
 *     return result
 */
        __pyx_v_result = grpc_compression_options_is_algorithm_enabled((&__pyx_v_self->c_options), __pyx_v_algorithm);
      }

      /* "src/python/grpcio/grpc/_cython/_cygrpc/records.pyx.pxi":180
 *   def is_algorithm_enabled(self, grpc_compression_algorithm algorithm):
 *     cdef int result
 *     with nogil:             # <<<<<<<<<<<<<<
 *       result = grpc_compression_options_is_algorithm_enabled(
 *           &self.c_options, algorithm)
 */
      /*finally:*/ {
        /*normal exit:*/{
          #ifdef WITH_THREAD
          __Pyx_FastGIL_Forget();
          Py_BLOCK_THREADS
          #endif
          goto __pyx_L5;
        }
        __pyx_L5:;
      }
  }

  /* "src/python/grpcio/grpc/_cython/_cygrpc/records.pyx.pxi":183
 *       result = grpc_compression_options_is_algorithm_enabled(
 *           &self.c_options, algorithm)
 *     return result             # <<<<<<<<<<<<<<
 * 
 *   def to_channel_arg(self):
 */
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_1 = __Pyx_PyInt_From_int(__pyx_v_result); if (unlikely(!__pyx_t_1)) __PYX_ERR(21, 183, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_r = __pyx_t_1;
  __pyx_t_1 = 0;
  goto __pyx_L0;

  /* "src/python/grpcio/grpc/_cython/_cygrpc/records.pyx.pxi":178
 *       grpc_compression_options_disable_algorithm(&self.c_options, algorithm)
 * 
 *   def is_algorithm_enabled(self, grpc_compression_algorithm algorithm):             # <<<<<<<<<<<<<<
 *     cdef int result
 *     with nogil:
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_AddTraceback("grpc._cython.cygrpc.CompressionOptions.is_algorithm_enabled", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "src/python/grpcio/grpc/_cython/_cygrpc/records.pyx.pxi":185
 *     return result
 * 
 *   def to_channel_arg(self):             # <<<<<<<<<<<<<<
 *     return (
 *         GRPC_COMPRESSION_CHANNEL_ENABLED_ALGORITHMS_BITSET,
 */

/* Python wrapper */
static PyObject *__pyx_pw_4grpc_7_cython_6cygrpc_18CompressionOptions_9to_channel_arg(PyObject *__pyx_v_self, CYTHON_UNUSED PyObject *unused); /*proto*/
static PyObject *__pyx_pw_4grpc_7_cython_6cygrpc_18CompressionOptions_9to_channel_arg(PyObject *__pyx_v_self, CYTHON_UNUSED PyObject *unused) {
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("to_channel_arg (wrapper)", 0);
  __pyx_r = __pyx_pf_4grpc_7_cython_6cygrpc_18CompressionOptions_8to_channel_arg(((struct __pyx_obj_4grpc_7_cython_6cygrpc_CompressionOptions *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_4grpc_7_cython_6cygrpc_18CompressionOptions_8to_channel_arg(struct __pyx_obj_4grpc_7_cython_6cygrpc_CompressionOptions *__pyx_v_self) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  PyObject *__pyx_t_2 = NULL;
  PyObject *__pyx_t_3 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("to_channel_arg", 0);

  /* "src/python/grpcio/grpc/_cython/_cygrpc/records.pyx.pxi":186
 * 
 *   def to_channel_arg(self):
 *     return (             # <<<<<<<<<<<<<<
 *         GRPC_COMPRESSION_CHANNEL_ENABLED_ALGORITHMS_BITSET,
 *         self.c_options.enabled_algorithms_bitset,
 */
  __Pyx_XDECREF(__pyx_r);

  /* "src/python/grpcio/grpc/_cython/_cygrpc/records.pyx.pxi":187
 *   def to_channel_arg(self):
 *     return (
 *         GRPC_COMPRESSION_CHANNEL_ENABLED_ALGORITHMS_BITSET,             # <<<<<<<<<<<<<<
 *         self.c_options.enabled_algorithms_bitset,
 *     )
 */
  __pyx_t_1 = __Pyx_PyBytes_FromString(GRPC_COMPRESSION_CHANNEL_ENABLED_ALGORITHMS_BITSET); if (unlikely(!__pyx_t_1)) __PYX_ERR(21, 187, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);

  /* "src/python/grpcio/grpc/_cython/_cygrpc/records.pyx.pxi":188
 *     return (
 *         GRPC_COMPRESSION_CHANNEL_ENABLED_ALGORITHMS_BITSET,
 *         self.c_options.enabled_algorithms_bitset,             # <<<<<<<<<<<<<<
 *     )
 * 
 */
  __pyx_t_2 = __Pyx_PyInt_From_unsigned_int(__pyx_v_self->c_options.enabled_algorithms_bitset); if (unlikely(!__pyx_t_2)) __PYX_ERR(21, 188, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);

  /* "src/python/grpcio/grpc/_cython/_cygrpc/records.pyx.pxi":187
 *   def to_channel_arg(self):
 *     return (
 *         GRPC_COMPRESSION_CHANNEL_ENABLED_ALGORITHMS_BITSET,             # <<<<<<<<<<<<<<
 *         self.c_options.enabled_algorithms_bitset,
 *     )
 */
  __pyx_t_3 = PyTuple_New(2); if (unlikely(!__pyx_t_3)) __PYX_ERR(21, 187, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  __Pyx_GIVEREF(__pyx_t_1);
  PyTuple_SET_ITEM(__pyx_t_3, 0, __pyx_t_1);
  __Pyx_GIVEREF(__pyx_t_2);
  PyTuple_SET_ITEM(__pyx_t_3, 1, __pyx_t_2);
  __pyx_t_1 = 0;
  __pyx_t_2 = 0;
  __pyx_r = __pyx_t_3;
  __pyx_t_3 = 0;
  goto __pyx_L0;

  /* "src/python/grpcio/grpc/_cython/_cygrpc/records.pyx.pxi":185
 *     return result
 * 
 *   def to_channel_arg(self):             # <<<<<<<<<<<<<<
 *     return (
 *         GRPC_COMPRESSION_CHANNEL_ENABLED_ALGORITHMS_BITSET,
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_XDECREF(__pyx_t_3);
  __Pyx_AddTraceback("grpc._cython.cygrpc.CompressionOptions.to_channel_arg", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "(tree fragment)":1
 * def __reduce_cython__(self):             # <<<<<<<<<<<<<<
 *     raise TypeError("no default __reduce__ due to non-trivial __cinit__")
 * def __setstate_cython__(self, __pyx_state):
 */

/* Python wrapper */
static PyObject *__pyx_pw_4grpc_7_cython_6cygrpc_18CompressionOptions_11__reduce_cython__(PyObject *__pyx_v_self, CYTHON_UNUSED PyObject *unused); /*proto*/
static PyObject *__pyx_pw_4grpc_7_cython_6cygrpc_18CompressionOptions_11__reduce_cython__(PyObject *__pyx_v_self, CYTHON_UNUSED PyObject *unused) {
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__reduce_cython__ (wrapper)", 0);
  __pyx_r = __pyx_pf_4grpc_7_cython_6cygrpc_18CompressionOptions_10__reduce_cython__(((struct __pyx_obj_4grpc_7_cython_6cygrpc_CompressionOptions *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_4grpc_7_cython_6cygrpc_18CompressionOptions_10__reduce_cython__(CYTHON_UNUSED struct __pyx_obj_4grpc_7_cython_6cygrpc_CompressionOptions *__pyx_v_self) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("__reduce_cython__", 0);

  /* "(tree fragment)":2
 * def __reduce_cython__(self):
 *     raise TypeError("no default __reduce__ due to non-trivial __cinit__")             # <<<<<<<<<<<<<<
 * def __setstate_cython__(self, __pyx_state):
 *     raise TypeError("no default __reduce__ due to non-trivial __cinit__")
 */
  __pyx_t_1 = __Pyx_PyObject_Call(__pyx_builtin_TypeError, __pyx_tuple__98, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(11, 2, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_Raise(__pyx_t_1, 0, 0, 0);
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  __PYX_ERR(11, 2, __pyx_L1_error)

  /* "(tree fragment)":1
 * def __reduce_cython__(self):             # <<<<<<<<<<<<<<
 *     raise TypeError("no default __reduce__ due to non-trivial __cinit__")
 * def __setstate_cython__(self, __pyx_state):
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_AddTraceback("grpc._cython.cygrpc.CompressionOptions.__reduce_cython__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "(tree fragment)":3
 * def __reduce_cython__(self):
 *     raise TypeError("no default __reduce__ due to non-trivial __cinit__")
 * def __setstate_cython__(self, __pyx_state):             # <<<<<<<<<<<<<<
 *     raise TypeError("no default __reduce__ due to non-trivial __cinit__")
 */

/* Python wrapper */
static PyObject *__pyx_pw_4grpc_7_cython_6cygrpc_18CompressionOptions_13__setstate_cython__(PyObject *__pyx_v_self, PyObject *__pyx_v___pyx_state); /*proto*/
static PyObject *__pyx_pw_4grpc_7_cython_6cygrpc_18CompressionOptions_13__setstate_cython__(PyObject *__pyx_v_self, PyObject *__pyx_v___pyx_state) {
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__setstate_cython__ (wrapper)", 0);
  __pyx_r = __pyx_pf_4grpc_7_cython_6cygrpc_18CompressionOptions_12__setstate_cython__(((struct __pyx_obj_4grpc_7_cython_6cygrpc_CompressionOptions *)__pyx_v_self), ((PyObject *)__pyx_v___pyx_state));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_4grpc_7_cython_6cygrpc_18CompressionOptions_12__setstate_cython__(CYTHON_UNUSED struct __pyx_obj_4grpc_7_cython_6cygrpc_CompressionOptions *__pyx_v_self, CYTHON_UNUSED PyObject *__pyx_v___pyx_state) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("__setstate_cython__", 0);

  /* "(tree fragment)":4
 *     raise TypeError("no default __reduce__ due to non-trivial __cinit__")
 * def __setstate_cython__(self, __pyx_state):
 *     raise TypeError("no default __reduce__ due to non-trivial __cinit__")             # <<<<<<<<<<<<<<
 */
  __pyx_t_1 = __Pyx_PyObject_Call(__pyx_builtin_TypeError, __pyx_tuple__99, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(11, 4, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_Raise(__pyx_t_1, 0, 0, 0);
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  __PYX_ERR(11, 4, __pyx_L1_error)

  /* "(tree fragment)":3
 * def __reduce_cython__(self):
 *     raise TypeError("no default __reduce__ due to non-trivial __cinit__")
 * def __setstate_cython__(self, __pyx_state):             # <<<<<<<<<<<<<<
 *     raise TypeError("no default __reduce__ due to non-trivial __cinit__")
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_AddTraceback("grpc._cython.cygrpc.CompressionOptions.__setstate_cython__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "src/python/grpcio/grpc/_cython/_cygrpc/records.pyx.pxi":192
 * 
 * 
 * def compression_algorithm_name(grpc_compression_algorithm algorithm):             # <<<<<<<<<<<<<<
 *   cdef const char* name
 *   with nogil:
 */

/* Python wrapper */
static PyObject *__pyx_pw_4grpc_7_cython_6cygrpc_45compression_algorithm_name(PyObject *__pyx_self, PyObject *__pyx_arg_algorithm); /*proto*/
static PyMethodDef __pyx_mdef_4grpc_7_cython_6cygrpc_45compression_algorithm_name = {"compression_algorithm_name", (PyCFunction)__pyx_pw_4grpc_7_cython_6cygrpc_45compression_algorithm_name, METH_O, 0};
static PyObject *__pyx_pw_4grpc_7_cython_6cygrpc_45compression_algorithm_name(PyObject *__pyx_self, PyObject *__pyx_arg_algorithm) {
  grpc_compression_algorithm __pyx_v_algorithm;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("compression_algorithm_name (wrapper)", 0);
  assert(__pyx_arg_algorithm); {
    __pyx_v_algorithm = ((grpc_compression_algorithm)__Pyx_PyInt_As_grpc_compression_algorithm(__pyx_arg_algorithm)); if (unlikely(PyErr_Occurred())) __PYX_ERR(21, 192, __pyx_L3_error)
  }
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L3_error:;
  __Pyx_AddTraceback("grpc._cython.cygrpc.compression_algorithm_name", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  __pyx_r = __pyx_pf_4grpc_7_cython_6cygrpc_44compression_algorithm_name(__pyx_self, ((grpc_compression_algorithm)__pyx_v_algorithm));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_4grpc_7_cython_6cygrpc_44compression_algorithm_name(CYTHON_UNUSED PyObject *__pyx_self, grpc_compression_algorithm __pyx_v_algorithm) {
  char const *__pyx_v_name;
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("compression_algorithm_name", 0);

  /* "src/python/grpcio/grpc/_cython/_cygrpc/records.pyx.pxi":194
 * def compression_algorithm_name(grpc_compression_algorithm algorithm):
 *   cdef const char* name
 *   with nogil:             # <<<<<<<<<<<<<<
 *     grpc_compression_algorithm_name(algorithm, &name)
 *   # Let Cython do the right thing with string casting
 */
  {
      #ifdef WITH_THREAD
      PyThreadState *_save;
      Py_UNBLOCK_THREADS
      __Pyx_FastGIL_Remember();
      #endif
      /*try:*/ {

        /* "src/python/grpcio/grpc/_cython/_cygrpc/records.pyx.pxi":195
 *   cdef const char* name
 *   with nogil:
 *     grpc_compression_algorithm_name(algorithm, &name)             # <<<<<<<<<<<<<<
 *   # Let Cython do the right thing with string casting
 *   return name
 */
        (void)(grpc_compression_algorithm_name(__pyx_v_algorithm, (&__pyx_v_name)));
      }

      /* "src/python/grpcio/grpc/_cython/_cygrpc/records.pyx.pxi":194
 * def compression_algorithm_name(grpc_compression_algorithm algorithm):
 *   cdef const char* name
 *   with nogil:             # <<<<<<<<<<<<<<
 *     grpc_compression_algorithm_name(algorithm, &name)
 *   # Let Cython do the right thing with string casting
 */
      /*finally:*/ {
        /*normal exit:*/{
          #ifdef WITH_THREAD
          __Pyx_FastGIL_Forget();
          Py_BLOCK_THREADS
          #endif
          goto __pyx_L5;
        }
        __pyx_L5:;
      }
  }

  /* "src/python/grpcio/grpc/_cython/_cygrpc/records.pyx.pxi":197
 *     grpc_compression_algorithm_name(algorithm, &name)
 *   # Let Cython do the right thing with string casting
 *   return name             # <<<<<<<<<<<<<<
 */
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_1 = __Pyx_PyBytes_FromString(__pyx_v_name); if (unlikely(!__pyx_t_1)) __PYX_ERR(21, 197, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_r = __pyx_t_1;
  __pyx_t_1 = 0;
  goto __pyx_L0;

  /* "src/python/grpcio/grpc/_cython/_cygrpc/records.pyx.pxi":192
 * 
 * 
 * def compression_algorithm_name(grpc_compression_algorithm algorithm):             # <<<<<<<<<<<<<<
 *   cdef const char* name
 *   with nogil:
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_AddTraceback("grpc._cython.cygrpc.compression_algorithm_name", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "src/python/grpcio/grpc/_cython/_cygrpc/security.pyx.pxi":20
 * 
 * 
 * cdef grpc_ssl_roots_override_result ssl_roots_override_callback(             # <<<<<<<<<<<<<<
 *     char **pem_root_certs) nogil:
 *   with gil:
 */

static grpc_ssl_roots_override_result __pyx_f_4grpc_7_cython_6cygrpc_ssl_roots_override_callback(char **__pyx_v_pem_root_certs) {
  PyObject *__pyx_v_pkg = NULL;
  PyObject *__pyx_v_temporary_pem_root_certs = NULL;
  grpc_ssl_roots_override_result __pyx_r;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  PyObject *__pyx_t_2 = NULL;
  PyObject *__pyx_t_3 = NULL;
  int __pyx_t_4;
  Py_ssize_t __pyx_t_5;
  int __pyx_t_6;
  PyObject *__pyx_t_7 = NULL;
  char *__pyx_t_8;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  #ifdef WITH_THREAD
  PyGILState_STATE __pyx_gilstate_save;
  #endif
  __Pyx_RefNannySetupContext("ssl_roots_override_callback", 1);

  /* "src/python/grpcio/grpc/_cython/_cygrpc/security.pyx.pxi":22
 * cdef grpc_ssl_roots_override_result ssl_roots_override_callback(
 *     char **pem_root_certs) nogil:
 *   with gil:             # <<<<<<<<<<<<<<
 *     pkg = __name__
 *     if pkg.endswith('.cygrpc'):
 */
  /*try:*/ {
    {
        #ifdef WITH_THREAD
        PyGILState_STATE __pyx_gilstate_save = __Pyx_PyGILState_Ensure();
        #endif
        /*try:*/ {

          /* "src/python/grpcio/grpc/_cython/_cygrpc/security.pyx.pxi":23
 *     char **pem_root_certs) nogil:
 *   with gil:
 *     pkg = __name__             # <<<<<<<<<<<<<<
 *     if pkg.endswith('.cygrpc'):
 *       pkg = pkg[:-len('.cygrpc')]
 */
          __Pyx_GetModuleGlobalName(__pyx_t_1, __pyx_n_s_name_2); if (unlikely(!__pyx_t_1)) __PYX_ERR(22, 23, __pyx_L7_error)
          __Pyx_GOTREF(__pyx_t_1);
          __pyx_v_pkg = __pyx_t_1;
          __pyx_t_1 = 0;

          /* "src/python/grpcio/grpc/_cython/_cygrpc/security.pyx.pxi":24
 *   with gil:
 *     pkg = __name__
 *     if pkg.endswith('.cygrpc'):             # <<<<<<<<<<<<<<
 *       pkg = pkg[:-len('.cygrpc')]
 *     temporary_pem_root_certs = pkgutil.get_data(pkg, '_credentials/roots.pem')
 */
          __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_v_pkg, __pyx_n_s_endswith); if (unlikely(!__pyx_t_2)) __PYX_ERR(22, 24, __pyx_L7_error)
          __Pyx_GOTREF(__pyx_t_2);
          __pyx_t_3 = NULL;
          if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_2))) {
            __pyx_t_3 = PyMethod_GET_SELF(__pyx_t_2);
            if (likely(__pyx_t_3)) {
              PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_2);
              __Pyx_INCREF(__pyx_t_3);
              __Pyx_INCREF(function);
              __Pyx_DECREF_SET(__pyx_t_2, function);
            }
          }
          __pyx_t_1 = (__pyx_t_3) ? __Pyx_PyObject_Call2Args(__pyx_t_2, __pyx_t_3, __pyx_kp_s_cygrpc) : __Pyx_PyObject_CallOneArg(__pyx_t_2, __pyx_kp_s_cygrpc);
          __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0;
          if (unlikely(!__pyx_t_1)) __PYX_ERR(22, 24, __pyx_L7_error)
          __Pyx_GOTREF(__pyx_t_1);
          __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
          __pyx_t_4 = __Pyx_PyObject_IsTrue(__pyx_t_1); if (unlikely(__pyx_t_4 < 0)) __PYX_ERR(22, 24, __pyx_L7_error)
          __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
          if (__pyx_t_4) {

            /* "src/python/grpcio/grpc/_cython/_cygrpc/security.pyx.pxi":25
 *     pkg = __name__
 *     if pkg.endswith('.cygrpc'):
 *       pkg = pkg[:-len('.cygrpc')]             # <<<<<<<<<<<<<<
 *     temporary_pem_root_certs = pkgutil.get_data(pkg, '_credentials/roots.pem')
 *     pem_root_certs[0] = <char *>gpr_malloc(len(temporary_pem_root_certs) + 1)
 */
            __pyx_t_5 = PyObject_Length(__pyx_kp_s_cygrpc); if (unlikely(__pyx_t_5 == ((Py_ssize_t)-1))) __PYX_ERR(22, 25, __pyx_L7_error)
            __pyx_t_1 = __Pyx_PyObject_GetSlice(__pyx_v_pkg, 0, (-__pyx_t_5), NULL, NULL, NULL, 0, 1, 1); if (unlikely(!__pyx_t_1)) __PYX_ERR(22, 25, __pyx_L7_error)
            __Pyx_GOTREF(__pyx_t_1);
            __Pyx_DECREF_SET(__pyx_v_pkg, __pyx_t_1);
            __pyx_t_1 = 0;

            /* "src/python/grpcio/grpc/_cython/_cygrpc/security.pyx.pxi":24
 *   with gil:
 *     pkg = __name__
 *     if pkg.endswith('.cygrpc'):             # <<<<<<<<<<<<<<
 *       pkg = pkg[:-len('.cygrpc')]
 *     temporary_pem_root_certs = pkgutil.get_data(pkg, '_credentials/roots.pem')
 */
          }

          /* "src/python/grpcio/grpc/_cython/_cygrpc/security.pyx.pxi":26
 *     if pkg.endswith('.cygrpc'):
 *       pkg = pkg[:-len('.cygrpc')]
 *     temporary_pem_root_certs = pkgutil.get_data(pkg, '_credentials/roots.pem')             # <<<<<<<<<<<<<<
 *     pem_root_certs[0] = <char *>gpr_malloc(len(temporary_pem_root_certs) + 1)
 *     memcpy(
 */
          __Pyx_GetModuleGlobalName(__pyx_t_2, __pyx_n_s_pkgutil); if (unlikely(!__pyx_t_2)) __PYX_ERR(22, 26, __pyx_L7_error)
          __Pyx_GOTREF(__pyx_t_2);
          __pyx_t_3 = __Pyx_PyObject_GetAttrStr(__pyx_t_2, __pyx_n_s_get_data); if (unlikely(!__pyx_t_3)) __PYX_ERR(22, 26, __pyx_L7_error)
          __Pyx_GOTREF(__pyx_t_3);
          __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
          __pyx_t_2 = NULL;
          __pyx_t_6 = 0;
          if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_3))) {
            __pyx_t_2 = PyMethod_GET_SELF(__pyx_t_3);
            if (likely(__pyx_t_2)) {
              PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_3);
              __Pyx_INCREF(__pyx_t_2);
              __Pyx_INCREF(function);
              __Pyx_DECREF_SET(__pyx_t_3, function);
              __pyx_t_6 = 1;
            }
          }
          #if CYTHON_FAST_PYCALL
          if (PyFunction_Check(__pyx_t_3)) {
            PyObject *__pyx_temp[3] = {__pyx_t_2, __pyx_v_pkg, __pyx_kp_s_credentials_roots_pem};
            __pyx_t_1 = __Pyx_PyFunction_FastCall(__pyx_t_3, __pyx_temp+1-__pyx_t_6, 2+__pyx_t_6); if (unlikely(!__pyx_t_1)) __PYX_ERR(22, 26, __pyx_L7_error)
            __Pyx_XDECREF(__pyx_t_2); __pyx_t_2 = 0;
            __Pyx_GOTREF(__pyx_t_1);
          } else
          #endif
          #if CYTHON_FAST_PYCCALL
          if (__Pyx_PyFastCFunction_Check(__pyx_t_3)) {
            PyObject *__pyx_temp[3] = {__pyx_t_2, __pyx_v_pkg, __pyx_kp_s_credentials_roots_pem};
            __pyx_t_1 = __Pyx_PyCFunction_FastCall(__pyx_t_3, __pyx_temp+1-__pyx_t_6, 2+__pyx_t_6); if (unlikely(!__pyx_t_1)) __PYX_ERR(22, 26, __pyx_L7_error)
            __Pyx_XDECREF(__pyx_t_2); __pyx_t_2 = 0;
            __Pyx_GOTREF(__pyx_t_1);
          } else
          #endif
          {
            __pyx_t_7 = PyTuple_New(2+__pyx_t_6); if (unlikely(!__pyx_t_7)) __PYX_ERR(22, 26, __pyx_L7_error)
            __Pyx_GOTREF(__pyx_t_7);
            if (__pyx_t_2) {
              __Pyx_GIVEREF(__pyx_t_2); PyTuple_SET_ITEM(__pyx_t_7, 0, __pyx_t_2); __pyx_t_2 = NULL;
            }
            __Pyx_INCREF(__pyx_v_pkg);
            __Pyx_GIVEREF(__pyx_v_pkg);
            PyTuple_SET_ITEM(__pyx_t_7, 0+__pyx_t_6, __pyx_v_pkg);
            __Pyx_INCREF(__pyx_kp_s_credentials_roots_pem);
            __Pyx_GIVEREF(__pyx_kp_s_credentials_roots_pem);
            PyTuple_SET_ITEM(__pyx_t_7, 1+__pyx_t_6, __pyx_kp_s_credentials_roots_pem);
            __pyx_t_1 = __Pyx_PyObject_Call(__pyx_t_3, __pyx_t_7, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(22, 26, __pyx_L7_error)
            __Pyx_GOTREF(__pyx_t_1);
            __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
          }
          __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
          __pyx_v_temporary_pem_root_certs = __pyx_t_1;
          __pyx_t_1 = 0;

          /* "src/python/grpcio/grpc/_cython/_cygrpc/security.pyx.pxi":27
 *       pkg = pkg[:-len('.cygrpc')]
 *     temporary_pem_root_certs = pkgutil.get_data(pkg, '_credentials/roots.pem')
 *     pem_root_certs[0] = <char *>gpr_malloc(len(temporary_pem_root_certs) + 1)             # <<<<<<<<<<<<<<
 *     memcpy(
 *         pem_root_certs[0], <char *>temporary_pem_root_certs,
 */
          __pyx_t_5 = PyObject_Length(__pyx_v_temporary_pem_root_certs); if (unlikely(__pyx_t_5 == ((Py_ssize_t)-1))) __PYX_ERR(22, 27, __pyx_L7_error)
          (__pyx_v_pem_root_certs[0]) = ((char *)gpr_malloc((__pyx_t_5 + 1)));

          /* "src/python/grpcio/grpc/_cython/_cygrpc/security.pyx.pxi":29
 *     pem_root_certs[0] = <char *>gpr_malloc(len(temporary_pem_root_certs) + 1)
 *     memcpy(
 *         pem_root_certs[0], <char *>temporary_pem_root_certs,             # <<<<<<<<<<<<<<
 *         len(temporary_pem_root_certs))
 *     pem_root_certs[0][len(temporary_pem_root_certs)] = '\0'
 */
          __pyx_t_8 = __Pyx_PyObject_AsWritableString(__pyx_v_temporary_pem_root_certs); if (unlikely((!__pyx_t_8) && PyErr_Occurred())) __PYX_ERR(22, 29, __pyx_L7_error)

          /* "src/python/grpcio/grpc/_cython/_cygrpc/security.pyx.pxi":30
 *     memcpy(
 *         pem_root_certs[0], <char *>temporary_pem_root_certs,
 *         len(temporary_pem_root_certs))             # <<<<<<<<<<<<<<
 *     pem_root_certs[0][len(temporary_pem_root_certs)] = '\0'
 * 
 */
          __pyx_t_5 = PyObject_Length(__pyx_v_temporary_pem_root_certs); if (unlikely(__pyx_t_5 == ((Py_ssize_t)-1))) __PYX_ERR(22, 30, __pyx_L7_error)

          /* "src/python/grpcio/grpc/_cython/_cygrpc/security.pyx.pxi":28
 *     temporary_pem_root_certs = pkgutil.get_data(pkg, '_credentials/roots.pem')
 *     pem_root_certs[0] = <char *>gpr_malloc(len(temporary_pem_root_certs) + 1)
 *     memcpy(             # <<<<<<<<<<<<<<
 *         pem_root_certs[0], <char *>temporary_pem_root_certs,
 *         len(temporary_pem_root_certs))
 */
          (void)(memcpy((__pyx_v_pem_root_certs[0]), ((char *)__pyx_t_8), __pyx_t_5));

          /* "src/python/grpcio/grpc/_cython/_cygrpc/security.pyx.pxi":31
 *         pem_root_certs[0], <char *>temporary_pem_root_certs,
 *         len(temporary_pem_root_certs))
 *     pem_root_certs[0][len(temporary_pem_root_certs)] = '\0'             # <<<<<<<<<<<<<<
 * 
 *   return GRPC_SSL_ROOTS_OVERRIDE_OK
 */
          __pyx_t_5 = PyObject_Length(__pyx_v_temporary_pem_root_certs); if (unlikely(__pyx_t_5 == ((Py_ssize_t)-1))) __PYX_ERR(22, 31, __pyx_L7_error)
          ((__pyx_v_pem_root_certs[0])[__pyx_t_5]) = '\x00';
        }

        /* "src/python/grpcio/grpc/_cython/_cygrpc/security.pyx.pxi":22
 * cdef grpc_ssl_roots_override_result ssl_roots_override_callback(
 *     char **pem_root_certs) nogil:
 *   with gil:             # <<<<<<<<<<<<<<
 *     pkg = __name__
 *     if pkg.endswith('.cygrpc'):
 */
        /*finally:*/ {
          /*normal exit:*/{
            #ifdef WITH_THREAD
            __Pyx_PyGILState_Release(__pyx_gilstate_save);
            #endif
            goto __pyx_L8;
          }
          __pyx_L7_error: {
            #ifdef WITH_THREAD
            __Pyx_PyGILState_Release(__pyx_gilstate_save);
            #endif
            goto __pyx_L4_error;
          }
          __pyx_L8:;
        }
    }

    /* "src/python/grpcio/grpc/_cython/_cygrpc/security.pyx.pxi":33
 *     pem_root_certs[0][len(temporary_pem_root_certs)] = '\0'
 * 
 *   return GRPC_SSL_ROOTS_OVERRIDE_OK             # <<<<<<<<<<<<<<
 * 
 * 
 */
    __pyx_r = GRPC_SSL_ROOTS_OVERRIDE_OK;
    goto __pyx_L3_return;
  }

  /* "src/python/grpcio/grpc/_cython/_cygrpc/security.pyx.pxi":22
 * cdef grpc_ssl_roots_override_result ssl_roots_override_callback(
 *     char **pem_root_certs) nogil:
 *   with gil:             # <<<<<<<<<<<<<<
 *     pkg = __name__
 *     if pkg.endswith('.cygrpc'):
 */
  /*finally:*/ {
    __pyx_L3_return: {
      #ifdef WITH_THREAD
      __pyx_gilstate_save = __Pyx_PyGILState_Ensure();
      #endif
      goto __pyx_L0;
    }
    __pyx_L4_error: {
      #ifdef WITH_THREAD
      __pyx_gilstate_save = __Pyx_PyGILState_Ensure();
      #endif
      goto __pyx_L1_error;
    }
  }

  /* "src/python/grpcio/grpc/_cython/_cygrpc/security.pyx.pxi":20
 * 
 * 
 * cdef grpc_ssl_roots_override_result ssl_roots_override_callback(             # <<<<<<<<<<<<<<
 *     char **pem_root_certs) nogil:
 *   with gil:
 */

  /* function exit code */
  __pyx_r = (grpc_ssl_roots_override_result) 0;
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_XDECREF(__pyx_t_3);
  __Pyx_XDECREF(__pyx_t_7);
  __Pyx_WriteUnraisable("grpc._cython.cygrpc.ssl_roots_override_callback", __pyx_clineno, __pyx_lineno, __pyx_filename, 1, 1);
  __pyx_r = (grpc_ssl_roots_override_result) 0;
  __pyx_L0:;
  __Pyx_XDECREF(__pyx_v_pkg);
  __Pyx_XDECREF(__pyx_v_temporary_pem_root_certs);
  #ifdef WITH_THREAD
  __Pyx_PyGILState_Release(__pyx_gilstate_save);
  #endif
  return __pyx_r;
}

/* "src/python/grpcio/grpc/_cython/_cygrpc/security.pyx.pxi":36
 * 
 * 
 * def peer_identities(Call call):             # <<<<<<<<<<<<<<
 *   cdef grpc_auth_context* auth_context
 *   cdef grpc_auth_property_iterator properties
 */

/* Python wrapper */
static PyObject *__pyx_pw_4grpc_7_cython_6cygrpc_47peer_identities(PyObject *__pyx_self, PyObject *__pyx_v_call); /*proto*/
static PyMethodDef __pyx_mdef_4grpc_7_cython_6cygrpc_47peer_identities = {"peer_identities", (PyCFunction)__pyx_pw_4grpc_7_cython_6cygrpc_47peer_identities, METH_O, 0};
static PyObject *__pyx_pw_4grpc_7_cython_6cygrpc_47peer_identities(PyObject *__pyx_self, PyObject *__pyx_v_call) {
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("peer_identities (wrapper)", 0);
  if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_call), __pyx_ptype_4grpc_7_cython_6cygrpc_Call, 1, "call", 0))) __PYX_ERR(22, 36, __pyx_L1_error)
  __pyx_r = __pyx_pf_4grpc_7_cython_6cygrpc_46peer_identities(__pyx_self, ((struct __pyx_obj_4grpc_7_cython_6cygrpc_Call *)__pyx_v_call));

  /* function exit code */
  goto __pyx_L0;
  __pyx_L1_error:;
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_4grpc_7_cython_6cygrpc_46peer_identities(CYTHON_UNUSED PyObject *__pyx_self, struct __pyx_obj_4grpc_7_cython_6cygrpc_Call *__pyx_v_call) {
  grpc_auth_context *__pyx_v_auth_context;
  grpc_auth_property_iterator __pyx_v_properties;
  grpc_auth_property const *__pyx_v_property;
  PyObject *__pyx_v_identities = NULL;
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  int __pyx_t_1;
  PyObject *__pyx_t_2 = NULL;
  int __pyx_t_3;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("peer_identities", 0);

  /* "src/python/grpcio/grpc/_cython/_cygrpc/security.pyx.pxi":41
 *   cdef const grpc_auth_property* property
 * 
 *   auth_context = grpc_call_auth_context(call.c_call)             # <<<<<<<<<<<<<<
 *   if auth_context == NULL:
 *     return None
 */
  __pyx_v_auth_context = grpc_call_auth_context(__pyx_v_call->c_call);

  /* "src/python/grpcio/grpc/_cython/_cygrpc/security.pyx.pxi":42
 * 
 *   auth_context = grpc_call_auth_context(call.c_call)
 *   if auth_context == NULL:             # <<<<<<<<<<<<<<
 *     return None
 *   properties = grpc_auth_context_peer_identity(auth_context)
 */
  __pyx_t_1 = ((__pyx_v_auth_context == NULL) != 0);
  if (__pyx_t_1) {

    /* "src/python/grpcio/grpc/_cython/_cygrpc/security.pyx.pxi":43
 *   auth_context = grpc_call_auth_context(call.c_call)
 *   if auth_context == NULL:
 *     return None             # <<<<<<<<<<<<<<
 *   properties = grpc_auth_context_peer_identity(auth_context)
 *   identities = []
 */
    __Pyx_XDECREF(__pyx_r);
    __pyx_r = Py_None; __Pyx_INCREF(Py_None);
    goto __pyx_L0;

    /* "src/python/grpcio/grpc/_cython/_cygrpc/security.pyx.pxi":42
 * 
 *   auth_context = grpc_call_auth_context(call.c_call)
 *   if auth_context == NULL:             # <<<<<<<<<<<<<<
 *     return None
 *   properties = grpc_auth_context_peer_identity(auth_context)
 */
  }

  /* "src/python/grpcio/grpc/_cython/_cygrpc/security.pyx.pxi":44
 *   if auth_context == NULL:
 *     return None
 *   properties = grpc_auth_context_peer_identity(auth_context)             # <<<<<<<<<<<<<<
 *   identities = []
 *   while True:
 */
  __pyx_v_properties = grpc_auth_context_peer_identity(__pyx_v_auth_context);

  /* "src/python/grpcio/grpc/_cython/_cygrpc/security.pyx.pxi":45
 *     return None
 *   properties = grpc_auth_context_peer_identity(auth_context)
 *   identities = []             # <<<<<<<<<<<<<<
 *   while True:
 *     property = grpc_auth_property_iterator_next(&properties)
 */
  __pyx_t_2 = PyList_New(0); if (unlikely(!__pyx_t_2)) __PYX_ERR(22, 45, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __pyx_v_identities = ((PyObject*)__pyx_t_2);
  __pyx_t_2 = 0;

  /* "src/python/grpcio/grpc/_cython/_cygrpc/security.pyx.pxi":46
 *   properties = grpc_auth_context_peer_identity(auth_context)
 *   identities = []
 *   while True:             # <<<<<<<<<<<<<<
 *     property = grpc_auth_property_iterator_next(&properties)
 *     if property == NULL:
 */
  while (1) {

    /* "src/python/grpcio/grpc/_cython/_cygrpc/security.pyx.pxi":47
 *   identities = []
 *   while True:
 *     property = grpc_auth_property_iterator_next(&properties)             # <<<<<<<<<<<<<<
 *     if property == NULL:
 *       break
 */
    __pyx_v_property = grpc_auth_property_iterator_next((&__pyx_v_properties));

    /* "src/python/grpcio/grpc/_cython/_cygrpc/security.pyx.pxi":48
 *   while True:
 *     property = grpc_auth_property_iterator_next(&properties)
 *     if property == NULL:             # <<<<<<<<<<<<<<
 *       break
 *     if property.value != NULL:
 */
    __pyx_t_1 = ((__pyx_v_property == NULL) != 0);
    if (__pyx_t_1) {

      /* "src/python/grpcio/grpc/_cython/_cygrpc/security.pyx.pxi":49
 *     property = grpc_auth_property_iterator_next(&properties)
 *     if property == NULL:
 *       break             # <<<<<<<<<<<<<<
 *     if property.value != NULL:
 *       identities.append(<bytes>(property.value))
 */
      goto __pyx_L5_break;

      /* "src/python/grpcio/grpc/_cython/_cygrpc/security.pyx.pxi":48
 *   while True:
 *     property = grpc_auth_property_iterator_next(&properties)
 *     if property == NULL:             # <<<<<<<<<<<<<<
 *       break
 *     if property.value != NULL:
 */
    }

    /* "src/python/grpcio/grpc/_cython/_cygrpc/security.pyx.pxi":50
 *     if property == NULL:
 *       break
 *     if property.value != NULL:             # <<<<<<<<<<<<<<
 *       identities.append(<bytes>(property.value))
 *   grpc_auth_context_release(auth_context)
 */
    __pyx_t_1 = ((__pyx_v_property->value != NULL) != 0);
    if (__pyx_t_1) {

      /* "src/python/grpcio/grpc/_cython/_cygrpc/security.pyx.pxi":51
 *       break
 *     if property.value != NULL:
 *       identities.append(<bytes>(property.value))             # <<<<<<<<<<<<<<
 *   grpc_auth_context_release(auth_context)
 *   return identities if identities else None
 */
      __pyx_t_2 = __Pyx_PyBytes_FromString(__pyx_v_property->value); if (unlikely(!__pyx_t_2)) __PYX_ERR(22, 51, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_2);
      __pyx_t_3 = __Pyx_PyList_Append(__pyx_v_identities, __pyx_t_2); if (unlikely(__pyx_t_3 == ((int)-1))) __PYX_ERR(22, 51, __pyx_L1_error)
      __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;

      /* "src/python/grpcio/grpc/_cython/_cygrpc/security.pyx.pxi":50
 *     if property == NULL:
 *       break
 *     if property.value != NULL:             # <<<<<<<<<<<<<<
 *       identities.append(<bytes>(property.value))
 *   grpc_auth_context_release(auth_context)
 */
    }
  }
  __pyx_L5_break:;

  /* "src/python/grpcio/grpc/_cython/_cygrpc/security.pyx.pxi":52
 *     if property.value != NULL:
 *       identities.append(<bytes>(property.value))
 *   grpc_auth_context_release(auth_context)             # <<<<<<<<<<<<<<
 *   return identities if identities else None
 * 
 */
  grpc_auth_context_release(__pyx_v_auth_context);

  /* "src/python/grpcio/grpc/_cython/_cygrpc/security.pyx.pxi":53
 *       identities.append(<bytes>(property.value))
 *   grpc_auth_context_release(auth_context)
 *   return identities if identities else None             # <<<<<<<<<<<<<<
 * 
 * def peer_identity_key(Call call):
 */
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_1 = (PyList_GET_SIZE(__pyx_v_identities) != 0);
  if (__pyx_t_1) {
    __Pyx_INCREF(__pyx_v_identities);
    __pyx_t_2 = __pyx_v_identities;
  } else {
    __Pyx_INCREF(Py_None);
    __pyx_t_2 = Py_None;
  }
  __pyx_r = __pyx_t_2;
  __pyx_t_2 = 0;
  goto __pyx_L0;

  /* "src/python/grpcio/grpc/_cython/_cygrpc/security.pyx.pxi":36
 * 
 * 
 * def peer_identities(Call call):             # <<<<<<<<<<<<<<
 *   cdef grpc_auth_context* auth_context
 *   cdef grpc_auth_property_iterator properties
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_AddTraceback("grpc._cython.cygrpc.peer_identities", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XDECREF(__pyx_v_identities);
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "src/python/grpcio/grpc/_cython/_cygrpc/security.pyx.pxi":55
 *   return identities if identities else None
 * 
 * def peer_identity_key(Call call):             # <<<<<<<<<<<<<<
 *   cdef grpc_auth_context* auth_context
 *   cdef const char* c_key
 */

/* Python wrapper */
static PyObject *__pyx_pw_4grpc_7_cython_6cygrpc_49peer_identity_key(PyObject *__pyx_self, PyObject *__pyx_v_call); /*proto*/
static PyMethodDef __pyx_mdef_4grpc_7_cython_6cygrpc_49peer_identity_key = {"peer_identity_key", (PyCFunction)__pyx_pw_4grpc_7_cython_6cygrpc_49peer_identity_key, METH_O, 0};
static PyObject *__pyx_pw_4grpc_7_cython_6cygrpc_49peer_identity_key(PyObject *__pyx_self, PyObject *__pyx_v_call) {
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("peer_identity_key (wrapper)", 0);
  if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_call), __pyx_ptype_4grpc_7_cython_6cygrpc_Call, 1, "call", 0))) __PYX_ERR(22, 55, __pyx_L1_error)
  __pyx_r = __pyx_pf_4grpc_7_cython_6cygrpc_48peer_identity_key(__pyx_self, ((struct __pyx_obj_4grpc_7_cython_6cygrpc_Call *)__pyx_v_call));

  /* function exit code */
  goto __pyx_L0;
  __pyx_L1_error:;
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_4grpc_7_cython_6cygrpc_48peer_identity_key(CYTHON_UNUSED PyObject *__pyx_self, struct __pyx_obj_4grpc_7_cython_6cygrpc_Call *__pyx_v_call) {
  grpc_auth_context *__pyx_v_auth_context;
  char const *__pyx_v_c_key;
  PyObject *__pyx_v_key = NULL;
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  int __pyx_t_1;
  PyObject *__pyx_t_2 = NULL;
  PyObject *__pyx_t_3 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("peer_identity_key", 0);

  /* "src/python/grpcio/grpc/_cython/_cygrpc/security.pyx.pxi":58
 *   cdef grpc_auth_context* auth_context
 *   cdef const char* c_key
 *   auth_context = grpc_call_auth_context(call.c_call)             # <<<<<<<<<<<<<<
 *   if auth_context == NULL:
 *     return None
 */
  __pyx_v_auth_context = grpc_call_auth_context(__pyx_v_call->c_call);

  /* "src/python/grpcio/grpc/_cython/_cygrpc/security.pyx.pxi":59
 *   cdef const char* c_key
 *   auth_context = grpc_call_auth_context(call.c_call)
 *   if auth_context == NULL:             # <<<<<<<<<<<<<<
 *     return None
 *   c_key = grpc_auth_context_peer_identity_property_name(auth_context)
 */
  __pyx_t_1 = ((__pyx_v_auth_context == NULL) != 0);
  if (__pyx_t_1) {

    /* "src/python/grpcio/grpc/_cython/_cygrpc/security.pyx.pxi":60
 *   auth_context = grpc_call_auth_context(call.c_call)
 *   if auth_context == NULL:
 *     return None             # <<<<<<<<<<<<<<
 *   c_key = grpc_auth_context_peer_identity_property_name(auth_context)
 *   if c_key == NULL:
 */
    __Pyx_XDECREF(__pyx_r);
    __pyx_r = Py_None; __Pyx_INCREF(Py_None);
    goto __pyx_L0;

    /* "src/python/grpcio/grpc/_cython/_cygrpc/security.pyx.pxi":59
 *   cdef const char* c_key
 *   auth_context = grpc_call_auth_context(call.c_call)
 *   if auth_context == NULL:             # <<<<<<<<<<<<<<
 *     return None
 *   c_key = grpc_auth_context_peer_identity_property_name(auth_context)
 */
  }

  /* "src/python/grpcio/grpc/_cython/_cygrpc/security.pyx.pxi":61
 *   if auth_context == NULL:
 *     return None
 *   c_key = grpc_auth_context_peer_identity_property_name(auth_context)             # <<<<<<<<<<<<<<
 *   if c_key == NULL:
 *     key = None
 */
  __pyx_v_c_key = grpc_auth_context_peer_identity_property_name(__pyx_v_auth_context);

  /* "src/python/grpcio/grpc/_cython/_cygrpc/security.pyx.pxi":62
 *     return None
 *   c_key = grpc_auth_context_peer_identity_property_name(auth_context)
 *   if c_key == NULL:             # <<<<<<<<<<<<<<
 *     key = None
 *   else:
 */
  __pyx_t_1 = ((__pyx_v_c_key == NULL) != 0);
  if (__pyx_t_1) {

    /* "src/python/grpcio/grpc/_cython/_cygrpc/security.pyx.pxi":63
 *   c_key = grpc_auth_context_peer_identity_property_name(auth_context)
 *   if c_key == NULL:
 *     key = None             # <<<<<<<<<<<<<<
 *   else:
 *     key = <bytes> grpc_auth_context_peer_identity_property_name(auth_context)
 */
    __Pyx_INCREF(Py_None);
    __pyx_v_key = ((PyObject*)Py_None);

    /* "src/python/grpcio/grpc/_cython/_cygrpc/security.pyx.pxi":62
 *     return None
 *   c_key = grpc_auth_context_peer_identity_property_name(auth_context)
 *   if c_key == NULL:             # <<<<<<<<<<<<<<
 *     key = None
 *   else:
 */
    goto __pyx_L4;
  }

  /* "src/python/grpcio/grpc/_cython/_cygrpc/security.pyx.pxi":65
 *     key = None
 *   else:
 *     key = <bytes> grpc_auth_context_peer_identity_property_name(auth_context)             # <<<<<<<<<<<<<<
 *   grpc_auth_context_release(auth_context)
 *   return key
 */
  /*else*/ {
    __pyx_t_2 = __Pyx_PyBytes_FromString(grpc_auth_context_peer_identity_property_name(__pyx_v_auth_context)); if (unlikely(!__pyx_t_2)) __PYX_ERR(22, 65, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_2);
    __pyx_t_3 = __pyx_t_2;
    __Pyx_INCREF(__pyx_t_3);
    __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
    __pyx_v_key = ((PyObject*)__pyx_t_3);
    __pyx_t_3 = 0;
  }
  __pyx_L4:;

  /* "src/python/grpcio/grpc/_cython/_cygrpc/security.pyx.pxi":66
 *   else:
 *     key = <bytes> grpc_auth_context_peer_identity_property_name(auth_context)
 *   grpc_auth_context_release(auth_context)             # <<<<<<<<<<<<<<
 *   return key
 * 
 */
  grpc_auth_context_release(__pyx_v_auth_context);

  /* "src/python/grpcio/grpc/_cython/_cygrpc/security.pyx.pxi":67
 *     key = <bytes> grpc_auth_context_peer_identity_property_name(auth_context)
 *   grpc_auth_context_release(auth_context)
 *   return key             # <<<<<<<<<<<<<<
 * 
 * def auth_context(Call call):
 */
  __Pyx_XDECREF(__pyx_r);
  __Pyx_INCREF(__pyx_v_key);
  __pyx_r = __pyx_v_key;
  goto __pyx_L0;

  /* "src/python/grpcio/grpc/_cython/_cygrpc/security.pyx.pxi":55
 *   return identities if identities else None
 * 
 * def peer_identity_key(Call call):             # <<<<<<<<<<<<<<
 *   cdef grpc_auth_context* auth_context
 *   cdef const char* c_key
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_XDECREF(__pyx_t_3);
  __Pyx_AddTraceback("grpc._cython.cygrpc.peer_identity_key", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XDECREF(__pyx_v_key);
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "src/python/grpcio/grpc/_cython/_cygrpc/security.pyx.pxi":69
 *   return key
 * 
 * def auth_context(Call call):             # <<<<<<<<<<<<<<
 *   cdef grpc_auth_context* auth_context
 *   cdef grpc_auth_property_iterator properties
 */

/* Python wrapper */
static PyObject *__pyx_pw_4grpc_7_cython_6cygrpc_51auth_context(PyObject *__pyx_self, PyObject *__pyx_v_call); /*proto*/
static PyMethodDef __pyx_mdef_4grpc_7_cython_6cygrpc_51auth_context = {"auth_context", (PyCFunction)__pyx_pw_4grpc_7_cython_6cygrpc_51auth_context, METH_O, 0};
static PyObject *__pyx_pw_4grpc_7_cython_6cygrpc_51auth_context(PyObject *__pyx_self, PyObject *__pyx_v_call) {
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("auth_context (wrapper)", 0);
  if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_call), __pyx_ptype_4grpc_7_cython_6cygrpc_Call, 1, "call", 0))) __PYX_ERR(22, 69, __pyx_L1_error)
  __pyx_r = __pyx_pf_4grpc_7_cython_6cygrpc_50auth_context(__pyx_self, ((struct __pyx_obj_4grpc_7_cython_6cygrpc_Call *)__pyx_v_call));

  /* function exit code */
  goto __pyx_L0;
  __pyx_L1_error:;
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_4grpc_7_cython_6cygrpc_50auth_context(CYTHON_UNUSED PyObject *__pyx_self, struct __pyx_obj_4grpc_7_cython_6cygrpc_Call *__pyx_v_call) {
  grpc_auth_context *__pyx_v_auth_context;
  grpc_auth_property_iterator __pyx_v_properties;
  grpc_auth_property const *__pyx_v_property;
  PyObject *__pyx_v_py_auth_context = NULL;
  PyObject *__pyx_v_key = NULL;
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  int __pyx_t_1;
  PyObject *__pyx_t_2 = NULL;
  int __pyx_t_3;
  PyObject *__pyx_t_4 = NULL;
  int __pyx_t_5;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("auth_context", 0);

  /* "src/python/grpcio/grpc/_cython/_cygrpc/security.pyx.pxi":74
 *   cdef const grpc_auth_property* property
 * 
 *   auth_context = grpc_call_auth_context(call.c_call)             # <<<<<<<<<<<<<<
 *   if auth_context == NULL:
 *     return {}
 */
  __pyx_v_auth_context = grpc_call_auth_context(__pyx_v_call->c_call);

  /* "src/python/grpcio/grpc/_cython/_cygrpc/security.pyx.pxi":75
 * 
 *   auth_context = grpc_call_auth_context(call.c_call)
 *   if auth_context == NULL:             # <<<<<<<<<<<<<<
 *     return {}
 *   properties = grpc_auth_context_property_iterator(auth_context)
 */
  __pyx_t_1 = ((__pyx_v_auth_context == NULL) != 0);
  if (__pyx_t_1) {

    /* "src/python/grpcio/grpc/_cython/_cygrpc/security.pyx.pxi":76
 *   auth_context = grpc_call_auth_context(call.c_call)
 *   if auth_context == NULL:
 *     return {}             # <<<<<<<<<<<<<<
 *   properties = grpc_auth_context_property_iterator(auth_context)
 *   py_auth_context = {}
 */
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_2 = __Pyx_PyDict_NewPresized(0); if (unlikely(!__pyx_t_2)) __PYX_ERR(22, 76, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_2);
    __pyx_r = __pyx_t_2;
    __pyx_t_2 = 0;
    goto __pyx_L0;

    /* "src/python/grpcio/grpc/_cython/_cygrpc/security.pyx.pxi":75
 * 
 *   auth_context = grpc_call_auth_context(call.c_call)
 *   if auth_context == NULL:             # <<<<<<<<<<<<<<
 *     return {}
 *   properties = grpc_auth_context_property_iterator(auth_context)
 */
  }

  /* "src/python/grpcio/grpc/_cython/_cygrpc/security.pyx.pxi":77
 *   if auth_context == NULL:
 *     return {}
 *   properties = grpc_auth_context_property_iterator(auth_context)             # <<<<<<<<<<<<<<
 *   py_auth_context = {}
 *   while True:
 */
  __pyx_v_properties = grpc_auth_context_property_iterator(__pyx_v_auth_context);

  /* "src/python/grpcio/grpc/_cython/_cygrpc/security.pyx.pxi":78
 *     return {}
 *   properties = grpc_auth_context_property_iterator(auth_context)
 *   py_auth_context = {}             # <<<<<<<<<<<<<<
 *   while True:
 *     property = grpc_auth_property_iterator_next(&properties)
 */
  __pyx_t_2 = __Pyx_PyDict_NewPresized(0); if (unlikely(!__pyx_t_2)) __PYX_ERR(22, 78, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __pyx_v_py_auth_context = ((PyObject*)__pyx_t_2);
  __pyx_t_2 = 0;

  /* "src/python/grpcio/grpc/_cython/_cygrpc/security.pyx.pxi":79
 *   properties = grpc_auth_context_property_iterator(auth_context)
 *   py_auth_context = {}
 *   while True:             # <<<<<<<<<<<<<<
 *     property = grpc_auth_property_iterator_next(&properties)
 *     if property == NULL:
 */
  while (1) {

    /* "src/python/grpcio/grpc/_cython/_cygrpc/security.pyx.pxi":80
 *   py_auth_context = {}
 *   while True:
 *     property = grpc_auth_property_iterator_next(&properties)             # <<<<<<<<<<<<<<
 *     if property == NULL:
 *       break
 */
    __pyx_v_property = grpc_auth_property_iterator_next((&__pyx_v_properties));

    /* "src/python/grpcio/grpc/_cython/_cygrpc/security.pyx.pxi":81
 *   while True:
 *     property = grpc_auth_property_iterator_next(&properties)
 *     if property == NULL:             # <<<<<<<<<<<<<<
 *       break
 *     if property.name != NULL and property.value != NULL:
 */
    __pyx_t_1 = ((__pyx_v_property == NULL) != 0);
    if (__pyx_t_1) {

      /* "src/python/grpcio/grpc/_cython/_cygrpc/security.pyx.pxi":82
 *     property = grpc_auth_property_iterator_next(&properties)
 *     if property == NULL:
 *       break             # <<<<<<<<<<<<<<
 *     if property.name != NULL and property.value != NULL:
 *       key = <bytes> property.name
 */
      goto __pyx_L5_break;

      /* "src/python/grpcio/grpc/_cython/_cygrpc/security.pyx.pxi":81
 *   while True:
 *     property = grpc_auth_property_iterator_next(&properties)
 *     if property == NULL:             # <<<<<<<<<<<<<<
 *       break
 *     if property.name != NULL and property.value != NULL:
 */
    }

    /* "src/python/grpcio/grpc/_cython/_cygrpc/security.pyx.pxi":83
 *     if property == NULL:
 *       break
 *     if property.name != NULL and property.value != NULL:             # <<<<<<<<<<<<<<
 *       key = <bytes> property.name
 *       if key in py_auth_context:
 */
    __pyx_t_3 = ((__pyx_v_property->name != NULL) != 0);
    if (__pyx_t_3) {
    } else {
      __pyx_t_1 = __pyx_t_3;
      goto __pyx_L8_bool_binop_done;
    }
    __pyx_t_3 = ((__pyx_v_property->value != NULL) != 0);
    __pyx_t_1 = __pyx_t_3;
    __pyx_L8_bool_binop_done:;
    if (__pyx_t_1) {

      /* "src/python/grpcio/grpc/_cython/_cygrpc/security.pyx.pxi":84
 *       break
 *     if property.name != NULL and property.value != NULL:
 *       key = <bytes> property.name             # <<<<<<<<<<<<<<
 *       if key in py_auth_context:
 *         py_auth_context[key].append(<bytes>(property.value))
 */
      __pyx_t_2 = __Pyx_PyBytes_FromString(__pyx_v_property->name); if (unlikely(!__pyx_t_2)) __PYX_ERR(22, 84, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_2);
      __pyx_t_4 = __pyx_t_2;
      __Pyx_INCREF(__pyx_t_4);
      __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
      __Pyx_XDECREF_SET(__pyx_v_key, ((PyObject*)__pyx_t_4));
      __pyx_t_4 = 0;

      /* "src/python/grpcio/grpc/_cython/_cygrpc/security.pyx.pxi":85
 *     if property.name != NULL and property.value != NULL:
 *       key = <bytes> property.name
 *       if key in py_auth_context:             # <<<<<<<<<<<<<<
 *         py_auth_context[key].append(<bytes>(property.value))
 *       else:
 */
      __pyx_t_1 = (__Pyx_PyDict_ContainsTF(__pyx_v_key, __pyx_v_py_auth_context, Py_EQ)); if (unlikely(__pyx_t_1 < 0)) __PYX_ERR(22, 85, __pyx_L1_error)
      __pyx_t_3 = (__pyx_t_1 != 0);
      if (__pyx_t_3) {

        /* "src/python/grpcio/grpc/_cython/_cygrpc/security.pyx.pxi":86
 *       key = <bytes> property.name
 *       if key in py_auth_context:
 *         py_auth_context[key].append(<bytes>(property.value))             # <<<<<<<<<<<<<<
 *       else:
 *         py_auth_context[key] = [<bytes> property.value]
 */
        __pyx_t_4 = __Pyx_PyDict_GetItem(__pyx_v_py_auth_context, __pyx_v_key); if (unlikely(!__pyx_t_4)) __PYX_ERR(22, 86, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_4);
        __pyx_t_2 = __Pyx_PyBytes_FromString(__pyx_v_property->value); if (unlikely(!__pyx_t_2)) __PYX_ERR(22, 86, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_2);
        __pyx_t_5 = __Pyx_PyObject_Append(__pyx_t_4, __pyx_t_2); if (unlikely(__pyx_t_5 == ((int)-1))) __PYX_ERR(22, 86, __pyx_L1_error)
        __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
        __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;

        /* "src/python/grpcio/grpc/_cython/_cygrpc/security.pyx.pxi":85
 *     if property.name != NULL and property.value != NULL:
 *       key = <bytes> property.name
 *       if key in py_auth_context:             # <<<<<<<<<<<<<<
 *         py_auth_context[key].append(<bytes>(property.value))
 *       else:
 */
        goto __pyx_L10;
      }

      /* "src/python/grpcio/grpc/_cython/_cygrpc/security.pyx.pxi":88
 *         py_auth_context[key].append(<bytes>(property.value))
 *       else:
 *         py_auth_context[key] = [<bytes> property.value]             # <<<<<<<<<<<<<<
 *   grpc_auth_context_release(auth_context)
 *   return py_auth_context
 */
      /*else*/ {
        __pyx_t_2 = __Pyx_PyBytes_FromString(__pyx_v_property->value); if (unlikely(!__pyx_t_2)) __PYX_ERR(22, 88, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_2);
        __pyx_t_4 = PyList_New(1); if (unlikely(!__pyx_t_4)) __PYX_ERR(22, 88, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_4);
        __Pyx_INCREF(((PyObject*)__pyx_t_2));
        __Pyx_GIVEREF(__pyx_t_2);
        PyList_SET_ITEM(__pyx_t_4, 0, __pyx_t_2);
        __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
        if (unlikely(PyDict_SetItem(__pyx_v_py_auth_context, __pyx_v_key, __pyx_t_4) < 0)) __PYX_ERR(22, 88, __pyx_L1_error)
        __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
      }
      __pyx_L10:;

      /* "src/python/grpcio/grpc/_cython/_cygrpc/security.pyx.pxi":83
 *     if property == NULL:
 *       break
 *     if property.name != NULL and property.value != NULL:             # <<<<<<<<<<<<<<
 *       key = <bytes> property.name
 *       if key in py_auth_context:
 */
    }
  }
  __pyx_L5_break:;

  /* "src/python/grpcio/grpc/_cython/_cygrpc/security.pyx.pxi":89
 *       else:
 *         py_auth_context[key] = [<bytes> property.value]
 *   grpc_auth_context_release(auth_context)             # <<<<<<<<<<<<<<
 *   return py_auth_context
 * 
 */
  grpc_auth_context_release(__pyx_v_auth_context);

  /* "src/python/grpcio/grpc/_cython/_cygrpc/security.pyx.pxi":90
 *         py_auth_context[key] = [<bytes> property.value]
 *   grpc_auth_context_release(auth_context)
 *   return py_auth_context             # <<<<<<<<<<<<<<
 * 
 */
  __Pyx_XDECREF(__pyx_r);
  __Pyx_INCREF(__pyx_v_py_auth_context);
  __pyx_r = __pyx_v_py_auth_context;
  goto __pyx_L0;

  /* "src/python/grpcio/grpc/_cython/_cygrpc/security.pyx.pxi":69
 *   return key
 * 
 * def auth_context(Call call):             # <<<<<<<<<<<<<<
 *   cdef grpc_auth_context* auth_context
 *   cdef grpc_auth_property_iterator properties
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_XDECREF(__pyx_t_4);
  __Pyx_AddTraceback("grpc._cython.cygrpc.auth_context", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XDECREF(__pyx_v_py_auth_context);
  __Pyx_XDECREF(__pyx_v_key);
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "src/python/grpcio/grpc/_cython/_cygrpc/server.pyx.pxi":18
 * cdef class Server:
 * 
 *   def __cinit__(self, object arguments, bint xds):             # <<<<<<<<<<<<<<
 *     fork_handlers_and_grpc_init()
 *     self.references = []
 */

/* Python wrapper */
static int __pyx_pw_4grpc_7_cython_6cygrpc_6Server_1__cinit__(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
static int __pyx_pw_4grpc_7_cython_6cygrpc_6Server_1__cinit__(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
  PyObject *__pyx_v_arguments = 0;
  int __pyx_v_xds;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  int __pyx_r;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__cinit__ (wrapper)", 0);
  {
    static PyObject **__pyx_pyargnames[] = {&__pyx_n_s_arguments,&__pyx_n_s_xds,0};
    PyObject* values[2] = {0,0};
    if (unlikely(__pyx_kwds)) {
      Py_ssize_t kw_args;
      const Py_ssize_t pos_args = PyTuple_GET_SIZE(__pyx_args);
      switch (pos_args) {
        case  2: values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
        CYTHON_FALLTHROUGH;
        case  1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
        CYTHON_FALLTHROUGH;
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      kw_args = PyDict_Size(__pyx_kwds);
      switch (pos_args) {
        case  0:
        if (likely((values[0] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_arguments)) != 0)) kw_args--;
        else goto __pyx_L5_argtuple_error;
        CYTHON_FALLTHROUGH;
        case  1:
        if (likely((values[1] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_xds)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("__cinit__", 1, 2, 2, 1); __PYX_ERR(23, 18, __pyx_L3_error)
        }
      }
      if (unlikely(kw_args > 0)) {
        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "__cinit__") < 0)) __PYX_ERR(23, 18, __pyx_L3_error)
      }
    } else if (PyTuple_GET_SIZE(__pyx_args) != 2) {
      goto __pyx_L5_argtuple_error;
    } else {
      values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
      values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
    }
    __pyx_v_arguments = values[0];
    __pyx_v_xds = __Pyx_PyObject_IsTrue(values[1]); if (unlikely((__pyx_v_xds == (int)-1) && PyErr_Occurred())) __PYX_ERR(23, 18, __pyx_L3_error)
  }
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("__cinit__", 1, 2, 2, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(23, 18, __pyx_L3_error)
  __pyx_L3_error:;
  __Pyx_AddTraceback("grpc._cython.cygrpc.Server.__cinit__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return -1;
  __pyx_L4_argument_unpacking_done:;
  __pyx_r = __pyx_pf_4grpc_7_cython_6cygrpc_6Server___cinit__(((struct __pyx_obj_4grpc_7_cython_6cygrpc_Server *)__pyx_v_self), __pyx_v_arguments, __pyx_v_xds);

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static int __pyx_pf_4grpc_7_cython_6cygrpc_6Server___cinit__(struct __pyx_obj_4grpc_7_cython_6cygrpc_Server *__pyx_v_self, PyObject *__pyx_v_arguments, int __pyx_v_xds) {
  struct __pyx_obj_4grpc_7_cython_6cygrpc__ChannelArgs *__pyx_v_channel_args = 0;
  grpc_server_xds_status_notifier __pyx_v_notifier;
  int __pyx_r;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  PyObject *__pyx_t_2 = NULL;
  PyObject *__pyx_t_3 = NULL;
  grpc_channel_args *__pyx_t_4;
  int __pyx_t_5;
  int __pyx_t_6;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("__cinit__", 0);

  /* "src/python/grpcio/grpc/_cython/_cygrpc/server.pyx.pxi":19
 * 
 *   def __cinit__(self, object arguments, bint xds):
 *     fork_handlers_and_grpc_init()             # <<<<<<<<<<<<<<
 *     self.references = []
 *     self.registered_completion_queues = []
 */
  __Pyx_GetModuleGlobalName(__pyx_t_2, __pyx_n_s_fork_handlers_and_grpc_init); if (unlikely(!__pyx_t_2)) __PYX_ERR(23, 19, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __pyx_t_3 = NULL;
  if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_2))) {
    __pyx_t_3 = PyMethod_GET_SELF(__pyx_t_2);
    if (likely(__pyx_t_3)) {
      PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_2);
      __Pyx_INCREF(__pyx_t_3);
      __Pyx_INCREF(function);
      __Pyx_DECREF_SET(__pyx_t_2, function);
    }
  }
  __pyx_t_1 = (__pyx_t_3) ? __Pyx_PyObject_CallOneArg(__pyx_t_2, __pyx_t_3) : __Pyx_PyObject_CallNoArg(__pyx_t_2);
  __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0;
  if (unlikely(!__pyx_t_1)) __PYX_ERR(23, 19, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;

  /* "src/python/grpcio/grpc/_cython/_cygrpc/server.pyx.pxi":20
 *   def __cinit__(self, object arguments, bint xds):
 *     fork_handlers_and_grpc_init()
 *     self.references = []             # <<<<<<<<<<<<<<
 *     self.registered_completion_queues = []
 *     self.is_started = False
 */
  __pyx_t_1 = PyList_New(0); if (unlikely(!__pyx_t_1)) __PYX_ERR(23, 20, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_GIVEREF(__pyx_t_1);
  __Pyx_GOTREF(__pyx_v_self->references);
  __Pyx_DECREF(__pyx_v_self->references);
  __pyx_v_self->references = ((PyObject*)__pyx_t_1);
  __pyx_t_1 = 0;

  /* "src/python/grpcio/grpc/_cython/_cygrpc/server.pyx.pxi":21
 *     fork_handlers_and_grpc_init()
 *     self.references = []
 *     self.registered_completion_queues = []             # <<<<<<<<<<<<<<
 *     self.is_started = False
 *     self.is_shutting_down = False
 */
  __pyx_t_1 = PyList_New(0); if (unlikely(!__pyx_t_1)) __PYX_ERR(23, 21, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_GIVEREF(__pyx_t_1);
  __Pyx_GOTREF(__pyx_v_self->registered_completion_queues);
  __Pyx_DECREF(__pyx_v_self->registered_completion_queues);
  __pyx_v_self->registered_completion_queues = ((PyObject*)__pyx_t_1);
  __pyx_t_1 = 0;

  /* "src/python/grpcio/grpc/_cython/_cygrpc/server.pyx.pxi":22
 *     self.references = []
 *     self.registered_completion_queues = []
 *     self.is_started = False             # <<<<<<<<<<<<<<
 *     self.is_shutting_down = False
 *     self.is_shutdown = False
 */
  __pyx_v_self->is_started = 0;

  /* "src/python/grpcio/grpc/_cython/_cygrpc/server.pyx.pxi":23
 *     self.registered_completion_queues = []
 *     self.is_started = False
 *     self.is_shutting_down = False             # <<<<<<<<<<<<<<
 *     self.is_shutdown = False
 *     self.c_server = NULL
 */
  __pyx_v_self->is_shutting_down = 0;

  /* "src/python/grpcio/grpc/_cython/_cygrpc/server.pyx.pxi":24
 *     self.is_started = False
 *     self.is_shutting_down = False
 *     self.is_shutdown = False             # <<<<<<<<<<<<<<
 *     self.c_server = NULL
 *     cdef _ChannelArgs channel_args = _ChannelArgs(arguments)
 */
  __pyx_v_self->is_shutdown = 0;

  /* "src/python/grpcio/grpc/_cython/_cygrpc/server.pyx.pxi":25
 *     self.is_shutting_down = False
 *     self.is_shutdown = False
 *     self.c_server = NULL             # <<<<<<<<<<<<<<
 *     cdef _ChannelArgs channel_args = _ChannelArgs(arguments)
 *     self.c_server = grpc_server_create(channel_args.c_args(), NULL)
 */
  __pyx_v_self->c_server = NULL;

  /* "src/python/grpcio/grpc/_cython/_cygrpc/server.pyx.pxi":26
 *     self.is_shutdown = False
 *     self.c_server = NULL
 *     cdef _ChannelArgs channel_args = _ChannelArgs(arguments)             # <<<<<<<<<<<<<<
 *     self.c_server = grpc_server_create(channel_args.c_args(), NULL)
 *     cdef grpc_server_xds_status_notifier notifier
 */
  __pyx_t_1 = __Pyx_PyObject_CallOneArg(((PyObject *)__pyx_ptype_4grpc_7_cython_6cygrpc__ChannelArgs), __pyx_v_arguments); if (unlikely(!__pyx_t_1)) __PYX_ERR(23, 26, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_v_channel_args = ((struct __pyx_obj_4grpc_7_cython_6cygrpc__ChannelArgs *)__pyx_t_1);
  __pyx_t_1 = 0;

  /* "src/python/grpcio/grpc/_cython/_cygrpc/server.pyx.pxi":27
 *     self.c_server = NULL
 *     cdef _ChannelArgs channel_args = _ChannelArgs(arguments)
 *     self.c_server = grpc_server_create(channel_args.c_args(), NULL)             # <<<<<<<<<<<<<<
 *     cdef grpc_server_xds_status_notifier notifier
 *     notifier.on_serving_status_update = NULL
 */
  __pyx_t_4 = ((struct __pyx_vtabstruct_4grpc_7_cython_6cygrpc__ChannelArgs *)__pyx_v_channel_args->__pyx_vtab)->c_args(__pyx_v_channel_args); if (unlikely(PyErr_Occurred())) __PYX_ERR(23, 27, __pyx_L1_error)
  __pyx_v_self->c_server = grpc_server_create(__pyx_t_4, NULL);

  /* "src/python/grpcio/grpc/_cython/_cygrpc/server.pyx.pxi":29
 *     self.c_server = grpc_server_create(channel_args.c_args(), NULL)
 *     cdef grpc_server_xds_status_notifier notifier
 *     notifier.on_serving_status_update = NULL             # <<<<<<<<<<<<<<
 *     notifier.user_data = NULL
 *     if xds:
 */
  __pyx_v_notifier.on_serving_status_update = NULL;

  /* "src/python/grpcio/grpc/_cython/_cygrpc/server.pyx.pxi":30
 *     cdef grpc_server_xds_status_notifier notifier
 *     notifier.on_serving_status_update = NULL
 *     notifier.user_data = NULL             # <<<<<<<<<<<<<<
 *     if xds:
 *       grpc_server_set_config_fetcher(self.c_server,
 */
  __pyx_v_notifier.user_data = NULL;

  /* "src/python/grpcio/grpc/_cython/_cygrpc/server.pyx.pxi":31
 *     notifier.on_serving_status_update = NULL
 *     notifier.user_data = NULL
 *     if xds:             # <<<<<<<<<<<<<<
 *       grpc_server_set_config_fetcher(self.c_server,
 *         grpc_server_config_fetcher_xds_create(notifier, channel_args.c_args()))
 */
  __pyx_t_5 = (__pyx_v_xds != 0);
  if (__pyx_t_5) {

    /* "src/python/grpcio/grpc/_cython/_cygrpc/server.pyx.pxi":33
 *     if xds:
 *       grpc_server_set_config_fetcher(self.c_server,
 *         grpc_server_config_fetcher_xds_create(notifier, channel_args.c_args()))             # <<<<<<<<<<<<<<
 *     self.references.append(arguments)
 * 
 */
    __pyx_t_4 = ((struct __pyx_vtabstruct_4grpc_7_cython_6cygrpc__ChannelArgs *)__pyx_v_channel_args->__pyx_vtab)->c_args(__pyx_v_channel_args); if (unlikely(PyErr_Occurred())) __PYX_ERR(23, 33, __pyx_L1_error)

    /* "src/python/grpcio/grpc/_cython/_cygrpc/server.pyx.pxi":32
 *     notifier.user_data = NULL
 *     if xds:
 *       grpc_server_set_config_fetcher(self.c_server,             # <<<<<<<<<<<<<<
 *         grpc_server_config_fetcher_xds_create(notifier, channel_args.c_args()))
 *     self.references.append(arguments)
 */
    grpc_server_set_config_fetcher(__pyx_v_self->c_server, grpc_server_config_fetcher_xds_create(__pyx_v_notifier, __pyx_t_4));

    /* "src/python/grpcio/grpc/_cython/_cygrpc/server.pyx.pxi":31
 *     notifier.on_serving_status_update = NULL
 *     notifier.user_data = NULL
 *     if xds:             # <<<<<<<<<<<<<<
 *       grpc_server_set_config_fetcher(self.c_server,
 *         grpc_server_config_fetcher_xds_create(notifier, channel_args.c_args()))
 */
  }

  /* "src/python/grpcio/grpc/_cython/_cygrpc/server.pyx.pxi":34
 *       grpc_server_set_config_fetcher(self.c_server,
 *         grpc_server_config_fetcher_xds_create(notifier, channel_args.c_args()))
 *     self.references.append(arguments)             # <<<<<<<<<<<<<<
 * 
 *   def request_call(
 */
  if (unlikely(__pyx_v_self->references == Py_None)) {
    PyErr_Format(PyExc_AttributeError, "'NoneType' object has no attribute '%.30s'", "append");
    __PYX_ERR(23, 34, __pyx_L1_error)
  }
  __pyx_t_6 = __Pyx_PyList_Append(__pyx_v_self->references, __pyx_v_arguments); if (unlikely(__pyx_t_6 == ((int)-1))) __PYX_ERR(23, 34, __pyx_L1_error)

  /* "src/python/grpcio/grpc/_cython/_cygrpc/server.pyx.pxi":18
 * cdef class Server:
 * 
 *   def __cinit__(self, object arguments, bint xds):             # <<<<<<<<<<<<<<
 *     fork_handlers_and_grpc_init()
 *     self.references = []
 */

  /* function exit code */
  __pyx_r = 0;
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_XDECREF(__pyx_t_3);
  __Pyx_AddTraceback("grpc._cython.cygrpc.Server.__cinit__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = -1;
  __pyx_L0:;
  __Pyx_XDECREF((PyObject *)__pyx_v_channel_args);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "src/python/grpcio/grpc/_cython/_cygrpc/server.pyx.pxi":36
 *     self.references.append(arguments)
 * 
 *   def request_call(             # <<<<<<<<<<<<<<
 *       self, CompletionQueue call_queue not None,
 *       CompletionQueue server_queue not None, tag):
 */

/* Python wrapper */
static PyObject *__pyx_pw_4grpc_7_cython_6cygrpc_6Server_3request_call(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
static PyObject *__pyx_pw_4grpc_7_cython_6cygrpc_6Server_3request_call(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
  struct __pyx_obj_4grpc_7_cython_6cygrpc_CompletionQueue *__pyx_v_call_queue = 0;
  struct __pyx_obj_4grpc_7_cython_6cygrpc_CompletionQueue *__pyx_v_server_queue = 0;
  PyObject *__pyx_v_tag = 0;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("request_call (wrapper)", 0);
  {
    static PyObject **__pyx_pyargnames[] = {&__pyx_n_s_call_queue,&__pyx_n_s_server_queue,&__pyx_n_s_tag,0};
    PyObject* values[3] = {0,0,0};
    if (unlikely(__pyx_kwds)) {
      Py_ssize_t kw_args;
      const Py_ssize_t pos_args = PyTuple_GET_SIZE(__pyx_args);
      switch (pos_args) {
        case  3: values[2] = PyTuple_GET_ITEM(__pyx_args, 2);
        CYTHON_FALLTHROUGH;
        case  2: values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
        CYTHON_FALLTHROUGH;
        case  1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
        CYTHON_FALLTHROUGH;
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      kw_args = PyDict_Size(__pyx_kwds);
      switch (pos_args) {
        case  0:
        if (likely((values[0] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_call_queue)) != 0)) kw_args--;
        else goto __pyx_L5_argtuple_error;
        CYTHON_FALLTHROUGH;
        case  1:
        if (likely((values[1] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_server_queue)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("request_call", 1, 3, 3, 1); __PYX_ERR(23, 36, __pyx_L3_error)
        }
        CYTHON_FALLTHROUGH;
        case  2:
        if (likely((values[2] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_tag)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("request_call", 1, 3, 3, 2); __PYX_ERR(23, 36, __pyx_L3_error)
        }
      }
      if (unlikely(kw_args > 0)) {
        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "request_call") < 0)) __PYX_ERR(23, 36, __pyx_L3_error)
      }
    } else if (PyTuple_GET_SIZE(__pyx_args) != 3) {
      goto __pyx_L5_argtuple_error;
    } else {
      values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
      values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
      values[2] = PyTuple_GET_ITEM(__pyx_args, 2);
    }
    __pyx_v_call_queue = ((struct __pyx_obj_4grpc_7_cython_6cygrpc_CompletionQueue *)values[0]);
    __pyx_v_server_queue = ((struct __pyx_obj_4grpc_7_cython_6cygrpc_CompletionQueue *)values[1]);
    __pyx_v_tag = values[2];
  }
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("request_call", 1, 3, 3, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(23, 36, __pyx_L3_error)
  __pyx_L3_error:;
  __Pyx_AddTraceback("grpc._cython.cygrpc.Server.request_call", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_call_queue), __pyx_ptype_4grpc_7_cython_6cygrpc_CompletionQueue, 0, "call_queue", 0))) __PYX_ERR(23, 37, __pyx_L1_error)
  if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_server_queue), __pyx_ptype_4grpc_7_cython_6cygrpc_CompletionQueue, 0, "server_queue", 0))) __PYX_ERR(23, 38, __pyx_L1_error)
  __pyx_r = __pyx_pf_4grpc_7_cython_6cygrpc_6Server_2request_call(((struct __pyx_obj_4grpc_7_cython_6cygrpc_Server *)__pyx_v_self), __pyx_v_call_queue, __pyx_v_server_queue, __pyx_v_tag);

  /* function exit code */
  goto __pyx_L0;
  __pyx_L1_error:;
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_4grpc_7_cython_6cygrpc_6Server_2request_call(struct __pyx_obj_4grpc_7_cython_6cygrpc_Server *__pyx_v_self, struct __pyx_obj_4grpc_7_cython_6cygrpc_CompletionQueue *__pyx_v_call_queue, struct __pyx_obj_4grpc_7_cython_6cygrpc_CompletionQueue *__pyx_v_server_queue, PyObject *__pyx_v_tag) {
  struct __pyx_obj_4grpc_7_cython_6cygrpc__RequestCallTag *__pyx_v_request_call_tag = 0;
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  int __pyx_t_1;
  int __pyx_t_2;
  PyObject *__pyx_t_3 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("request_call", 0);

  /* "src/python/grpcio/grpc/_cython/_cygrpc/server.pyx.pxi":39
 *       self, CompletionQueue call_queue not None,
 *       CompletionQueue server_queue not None, tag):
 *     if not self.is_started or self.is_shutting_down:             # <<<<<<<<<<<<<<
 *       raise ValueError("server must be started and not shutting down")
 *     if server_queue not in self.registered_completion_queues:
 */
  __pyx_t_2 = ((!(__pyx_v_self->is_started != 0)) != 0);
  if (!__pyx_t_2) {
  } else {
    __pyx_t_1 = __pyx_t_2;
    goto __pyx_L4_bool_binop_done;
  }
  __pyx_t_2 = (__pyx_v_self->is_shutting_down != 0);
  __pyx_t_1 = __pyx_t_2;
  __pyx_L4_bool_binop_done:;
  if (unlikely(__pyx_t_1)) {

    /* "src/python/grpcio/grpc/_cython/_cygrpc/server.pyx.pxi":40
 *       CompletionQueue server_queue not None, tag):
 *     if not self.is_started or self.is_shutting_down:
 *       raise ValueError("server must be started and not shutting down")             # <<<<<<<<<<<<<<
 *     if server_queue not in self.registered_completion_queues:
 *       raise ValueError("server_queue must be a registered completion queue")
 */
    __pyx_t_3 = __Pyx_PyObject_Call(__pyx_builtin_ValueError, __pyx_tuple__100, NULL); if (unlikely(!__pyx_t_3)) __PYX_ERR(23, 40, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_3);
    __Pyx_Raise(__pyx_t_3, 0, 0, 0);
    __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
    __PYX_ERR(23, 40, __pyx_L1_error)

    /* "src/python/grpcio/grpc/_cython/_cygrpc/server.pyx.pxi":39
 *       self, CompletionQueue call_queue not None,
 *       CompletionQueue server_queue not None, tag):
 *     if not self.is_started or self.is_shutting_down:             # <<<<<<<<<<<<<<
 *       raise ValueError("server must be started and not shutting down")
 *     if server_queue not in self.registered_completion_queues:
 */
  }

  /* "src/python/grpcio/grpc/_cython/_cygrpc/server.pyx.pxi":41
 *     if not self.is_started or self.is_shutting_down:
 *       raise ValueError("server must be started and not shutting down")
 *     if server_queue not in self.registered_completion_queues:             # <<<<<<<<<<<<<<
 *       raise ValueError("server_queue must be a registered completion queue")
 *     cdef _RequestCallTag request_call_tag = _RequestCallTag(tag)
 */
  __pyx_t_1 = (__Pyx_PySequence_ContainsTF(((PyObject *)__pyx_v_server_queue), __pyx_v_self->registered_completion_queues, Py_NE)); if (unlikely(__pyx_t_1 < 0)) __PYX_ERR(23, 41, __pyx_L1_error)
  __pyx_t_2 = (__pyx_t_1 != 0);
  if (unlikely(__pyx_t_2)) {

    /* "src/python/grpcio/grpc/_cython/_cygrpc/server.pyx.pxi":42
 *       raise ValueError("server must be started and not shutting down")
 *     if server_queue not in self.registered_completion_queues:
 *       raise ValueError("server_queue must be a registered completion queue")             # <<<<<<<<<<<<<<
 *     cdef _RequestCallTag request_call_tag = _RequestCallTag(tag)
 *     request_call_tag.prepare()
 */
    __pyx_t_3 = __Pyx_PyObject_Call(__pyx_builtin_ValueError, __pyx_tuple__101, NULL); if (unlikely(!__pyx_t_3)) __PYX_ERR(23, 42, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_3);
    __Pyx_Raise(__pyx_t_3, 0, 0, 0);
    __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
    __PYX_ERR(23, 42, __pyx_L1_error)

    /* "src/python/grpcio/grpc/_cython/_cygrpc/server.pyx.pxi":41
 *     if not self.is_started or self.is_shutting_down:
 *       raise ValueError("server must be started and not shutting down")
 *     if server_queue not in self.registered_completion_queues:             # <<<<<<<<<<<<<<
 *       raise ValueError("server_queue must be a registered completion queue")
 *     cdef _RequestCallTag request_call_tag = _RequestCallTag(tag)
 */
  }

  /* "src/python/grpcio/grpc/_cython/_cygrpc/server.pyx.pxi":43
 *     if server_queue not in self.registered_completion_queues:
 *       raise ValueError("server_queue must be a registered completion queue")
 *     cdef _RequestCallTag request_call_tag = _RequestCallTag(tag)             # <<<<<<<<<<<<<<
 *     request_call_tag.prepare()
 *     cpython.Py_INCREF(request_call_tag)
 */
  __pyx_t_3 = __Pyx_PyObject_CallOneArg(((PyObject *)__pyx_ptype_4grpc_7_cython_6cygrpc__RequestCallTag), __pyx_v_tag); if (unlikely(!__pyx_t_3)) __PYX_ERR(23, 43, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  __pyx_v_request_call_tag = ((struct __pyx_obj_4grpc_7_cython_6cygrpc__RequestCallTag *)__pyx_t_3);
  __pyx_t_3 = 0;

  /* "src/python/grpcio/grpc/_cython/_cygrpc/server.pyx.pxi":44
 *       raise ValueError("server_queue must be a registered completion queue")
 *     cdef _RequestCallTag request_call_tag = _RequestCallTag(tag)
 *     request_call_tag.prepare()             # <<<<<<<<<<<<<<
 *     cpython.Py_INCREF(request_call_tag)
 *     return grpc_server_request_call(
 */
  ((struct __pyx_vtabstruct_4grpc_7_cython_6cygrpc__RequestCallTag *)__pyx_v_request_call_tag->__pyx_base.__pyx_vtab)->prepare(__pyx_v_request_call_tag); if (unlikely(PyErr_Occurred())) __PYX_ERR(23, 44, __pyx_L1_error)

  /* "src/python/grpcio/grpc/_cython/_cygrpc/server.pyx.pxi":45
 *     cdef _RequestCallTag request_call_tag = _RequestCallTag(tag)
 *     request_call_tag.prepare()
 *     cpython.Py_INCREF(request_call_tag)             # <<<<<<<<<<<<<<
 *     return grpc_server_request_call(
 *         self.c_server, &request_call_tag.call.c_call,
 */
  Py_INCREF(((PyObject *)__pyx_v_request_call_tag));

  /* "src/python/grpcio/grpc/_cython/_cygrpc/server.pyx.pxi":46
 *     request_call_tag.prepare()
 *     cpython.Py_INCREF(request_call_tag)
 *     return grpc_server_request_call(             # <<<<<<<<<<<<<<
 *         self.c_server, &request_call_tag.call.c_call,
 *         &request_call_tag.call_details.c_details,
 */
  __Pyx_XDECREF(__pyx_r);

  /* "src/python/grpcio/grpc/_cython/_cygrpc/server.pyx.pxi":51
 *         &request_call_tag.c_invocation_metadata,
 *         call_queue.c_completion_queue, server_queue.c_completion_queue,
 *         <cpython.PyObject *>request_call_tag)             # <<<<<<<<<<<<<<
 * 
 *   def register_completion_queue(
 */
  __pyx_t_3 = __Pyx_PyInt_From_grpc_call_error(grpc_server_request_call(__pyx_v_self->c_server, (&__pyx_v_request_call_tag->call->c_call), (&__pyx_v_request_call_tag->call_details->c_details), (&__pyx_v_request_call_tag->c_invocation_metadata), __pyx_v_call_queue->c_completion_queue, __pyx_v_server_queue->c_completion_queue, ((PyObject *)__pyx_v_request_call_tag))); if (unlikely(!__pyx_t_3)) __PYX_ERR(23, 46, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  __pyx_r = __pyx_t_3;
  __pyx_t_3 = 0;
  goto __pyx_L0;

  /* "src/python/grpcio/grpc/_cython/_cygrpc/server.pyx.pxi":36
 *     self.references.append(arguments)
 * 
 *   def request_call(             # <<<<<<<<<<<<<<
 *       self, CompletionQueue call_queue not None,
 *       CompletionQueue server_queue not None, tag):
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_3);
  __Pyx_AddTraceback("grpc._cython.cygrpc.Server.request_call", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XDECREF((PyObject *)__pyx_v_request_call_tag);
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "src/python/grpcio/grpc/_cython/_cygrpc/server.pyx.pxi":53
 *         <cpython.PyObject *>request_call_tag)
 * 
 *   def register_completion_queue(             # <<<<<<<<<<<<<<
 *       self, CompletionQueue queue not None):
 *     if self.is_started:
 */

/* Python wrapper */
static PyObject *__pyx_pw_4grpc_7_cython_6cygrpc_6Server_5register_completion_queue(PyObject *__pyx_v_self, PyObject *__pyx_v_queue); /*proto*/
static PyObject *__pyx_pw_4grpc_7_cython_6cygrpc_6Server_5register_completion_queue(PyObject *__pyx_v_self, PyObject *__pyx_v_queue) {
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("register_completion_queue (wrapper)", 0);
  if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_queue), __pyx_ptype_4grpc_7_cython_6cygrpc_CompletionQueue, 0, "queue", 0))) __PYX_ERR(23, 54, __pyx_L1_error)
  __pyx_r = __pyx_pf_4grpc_7_cython_6cygrpc_6Server_4register_completion_queue(((struct __pyx_obj_4grpc_7_cython_6cygrpc_Server *)__pyx_v_self), ((struct __pyx_obj_4grpc_7_cython_6cygrpc_CompletionQueue *)__pyx_v_queue));

  /* function exit code */
  goto __pyx_L0;
  __pyx_L1_error:;
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_4grpc_7_cython_6cygrpc_6Server_4register_completion_queue(struct __pyx_obj_4grpc_7_cython_6cygrpc_Server *__pyx_v_self, struct __pyx_obj_4grpc_7_cython_6cygrpc_CompletionQueue *__pyx_v_queue) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  int __pyx_t_1;
  PyObject *__pyx_t_2 = NULL;
  int __pyx_t_3;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("register_completion_queue", 0);

  /* "src/python/grpcio/grpc/_cython/_cygrpc/server.pyx.pxi":55
 *   def register_completion_queue(
 *       self, CompletionQueue queue not None):
 *     if self.is_started:             # <<<<<<<<<<<<<<
 *       raise ValueError("cannot register completion queues after start")
 *     with nogil:
 */
  __pyx_t_1 = (__pyx_v_self->is_started != 0);
  if (unlikely(__pyx_t_1)) {

    /* "src/python/grpcio/grpc/_cython/_cygrpc/server.pyx.pxi":56
 *       self, CompletionQueue queue not None):
 *     if self.is_started:
 *       raise ValueError("cannot register completion queues after start")             # <<<<<<<<<<<<<<
 *     with nogil:
 *       grpc_server_register_completion_queue(
 */
    __pyx_t_2 = __Pyx_PyObject_Call(__pyx_builtin_ValueError, __pyx_tuple__102, NULL); if (unlikely(!__pyx_t_2)) __PYX_ERR(23, 56, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_2);
    __Pyx_Raise(__pyx_t_2, 0, 0, 0);
    __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
    __PYX_ERR(23, 56, __pyx_L1_error)

    /* "src/python/grpcio/grpc/_cython/_cygrpc/server.pyx.pxi":55
 *   def register_completion_queue(
 *       self, CompletionQueue queue not None):
 *     if self.is_started:             # <<<<<<<<<<<<<<
 *       raise ValueError("cannot register completion queues after start")
 *     with nogil:
 */
  }

  /* "src/python/grpcio/grpc/_cython/_cygrpc/server.pyx.pxi":57
 *     if self.is_started:
 *       raise ValueError("cannot register completion queues after start")
 *     with nogil:             # <<<<<<<<<<<<<<
 *       grpc_server_register_completion_queue(
 *           self.c_server, queue.c_completion_queue, NULL)
 */
  {
      #ifdef WITH_THREAD
      PyThreadState *_save;
      Py_UNBLOCK_THREADS
      __Pyx_FastGIL_Remember();
      #endif
      /*try:*/ {

        /* "src/python/grpcio/grpc/_cython/_cygrpc/server.pyx.pxi":58
 *       raise ValueError("cannot register completion queues after start")
 *     with nogil:
 *       grpc_server_register_completion_queue(             # <<<<<<<<<<<<<<
 *           self.c_server, queue.c_completion_queue, NULL)
 *     self.registered_completion_queues.append(queue)
 */
        grpc_server_register_completion_queue(__pyx_v_self->c_server, __pyx_v_queue->c_completion_queue, NULL);
      }

      /* "src/python/grpcio/grpc/_cython/_cygrpc/server.pyx.pxi":57
 *     if self.is_started:
 *       raise ValueError("cannot register completion queues after start")
 *     with nogil:             # <<<<<<<<<<<<<<
 *       grpc_server_register_completion_queue(
 *           self.c_server, queue.c_completion_queue, NULL)
 */
      /*finally:*/ {
        /*normal exit:*/{
          #ifdef WITH_THREAD
          __Pyx_FastGIL_Forget();
          Py_BLOCK_THREADS
          #endif
          goto __pyx_L6;
        }
        __pyx_L6:;
      }
  }

  /* "src/python/grpcio/grpc/_cython/_cygrpc/server.pyx.pxi":60
 *       grpc_server_register_completion_queue(
 *           self.c_server, queue.c_completion_queue, NULL)
 *     self.registered_completion_queues.append(queue)             # <<<<<<<<<<<<<<
 * 
 *   def start(self, backup_queue=True):
 */
  if (unlikely(__pyx_v_self->registered_completion_queues == Py_None)) {
    PyErr_Format(PyExc_AttributeError, "'NoneType' object has no attribute '%.30s'", "append");
    __PYX_ERR(23, 60, __pyx_L1_error)
  }
  __pyx_t_3 = __Pyx_PyList_Append(__pyx_v_self->registered_completion_queues, ((PyObject *)__pyx_v_queue)); if (unlikely(__pyx_t_3 == ((int)-1))) __PYX_ERR(23, 60, __pyx_L1_error)

  /* "src/python/grpcio/grpc/_cython/_cygrpc/server.pyx.pxi":53
 *         <cpython.PyObject *>request_call_tag)
 * 
 *   def register_completion_queue(             # <<<<<<<<<<<<<<
 *       self, CompletionQueue queue not None):
 *     if self.is_started:
 */

  /* function exit code */
  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_AddTraceback("grpc._cython.cygrpc.Server.register_completion_queue", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "src/python/grpcio/grpc/_cython/_cygrpc/server.pyx.pxi":62
 *     self.registered_completion_queues.append(queue)
 * 
 *   def start(self, backup_queue=True):             # <<<<<<<<<<<<<<
 *     """Start the Cython gRPC Server.
 * 
 */

/* Python wrapper */
static PyObject *__pyx_pw_4grpc_7_cython_6cygrpc_6Server_7start(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
static char __pyx_doc_4grpc_7_cython_6cygrpc_6Server_6start[] = "Start the Cython gRPC Server.\n    \n    Args:\n      backup_queue: a bool indicates whether to spawn a backup completion\n        queue. In the case that no CQ is bound to the server, and the shutdown\n        of server becomes un-observable.\n    ";
static PyObject *__pyx_pw_4grpc_7_cython_6cygrpc_6Server_7start(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
  PyObject *__pyx_v_backup_queue = 0;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("start (wrapper)", 0);
  {
    static PyObject **__pyx_pyargnames[] = {&__pyx_n_s_backup_queue,0};
    PyObject* values[1] = {0};
    values[0] = ((PyObject *)Py_True);
    if (unlikely(__pyx_kwds)) {
      Py_ssize_t kw_args;
      const Py_ssize_t pos_args = PyTuple_GET_SIZE(__pyx_args);
      switch (pos_args) {
        case  1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
        CYTHON_FALLTHROUGH;
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      kw_args = PyDict_Size(__pyx_kwds);
      switch (pos_args) {
        case  0:
        if (kw_args > 0) {
          PyObject* value = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_backup_queue);
          if (value) { values[0] = value; kw_args--; }
        }
      }
      if (unlikely(kw_args > 0)) {
        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "start") < 0)) __PYX_ERR(23, 62, __pyx_L3_error)
      }
    } else {
      switch (PyTuple_GET_SIZE(__pyx_args)) {
        case  1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
        CYTHON_FALLTHROUGH;
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
    }
    __pyx_v_backup_queue = values[0];
  }
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("start", 0, 0, 1, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(23, 62, __pyx_L3_error)
  __pyx_L3_error:;
  __Pyx_AddTraceback("grpc._cython.cygrpc.Server.start", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  __pyx_r = __pyx_pf_4grpc_7_cython_6cygrpc_6Server_6start(((struct __pyx_obj_4grpc_7_cython_6cygrpc_Server *)__pyx_v_self), __pyx_v_backup_queue);

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_4grpc_7_cython_6cygrpc_6Server_6start(struct __pyx_obj_4grpc_7_cython_6cygrpc_Server *__pyx_v_self, PyObject *__pyx_v_backup_queue) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  int __pyx_t_1;
  PyObject *__pyx_t_2 = NULL;
  PyObject *__pyx_t_3 = NULL;
  PyObject *__pyx_t_4 = NULL;
  PyObject *__pyx_t_5 = NULL;
  PyObject *__pyx_t_6 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("start", 0);

  /* "src/python/grpcio/grpc/_cython/_cygrpc/server.pyx.pxi":70
 *         of server becomes un-observable.
 *     """
 *     if self.is_started:             # <<<<<<<<<<<<<<
 *       raise ValueError("the server has already started")
 *     if backup_queue:
 */
  __pyx_t_1 = (__pyx_v_self->is_started != 0);
  if (unlikely(__pyx_t_1)) {

    /* "src/python/grpcio/grpc/_cython/_cygrpc/server.pyx.pxi":71
 *     """
 *     if self.is_started:
 *       raise ValueError("the server has already started")             # <<<<<<<<<<<<<<
 *     if backup_queue:
 *       self.backup_shutdown_queue = CompletionQueue(shutdown_cq=True)
 */
    __pyx_t_2 = __Pyx_PyObject_Call(__pyx_builtin_ValueError, __pyx_tuple__103, NULL); if (unlikely(!__pyx_t_2)) __PYX_ERR(23, 71, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_2);
    __Pyx_Raise(__pyx_t_2, 0, 0, 0);
    __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
    __PYX_ERR(23, 71, __pyx_L1_error)

    /* "src/python/grpcio/grpc/_cython/_cygrpc/server.pyx.pxi":70
 *         of server becomes un-observable.
 *     """
 *     if self.is_started:             # <<<<<<<<<<<<<<
 *       raise ValueError("the server has already started")
 *     if backup_queue:
 */
  }

  /* "src/python/grpcio/grpc/_cython/_cygrpc/server.pyx.pxi":72
 *     if self.is_started:
 *       raise ValueError("the server has already started")
 *     if backup_queue:             # <<<<<<<<<<<<<<
 *       self.backup_shutdown_queue = CompletionQueue(shutdown_cq=True)
 *       self.register_completion_queue(self.backup_shutdown_queue)
 */
  __pyx_t_1 = __Pyx_PyObject_IsTrue(__pyx_v_backup_queue); if (unlikely(__pyx_t_1 < 0)) __PYX_ERR(23, 72, __pyx_L1_error)
  if (__pyx_t_1) {

    /* "src/python/grpcio/grpc/_cython/_cygrpc/server.pyx.pxi":73
 *       raise ValueError("the server has already started")
 *     if backup_queue:
 *       self.backup_shutdown_queue = CompletionQueue(shutdown_cq=True)             # <<<<<<<<<<<<<<
 *       self.register_completion_queue(self.backup_shutdown_queue)
 *     self.is_started = True
 */
    __pyx_t_2 = __Pyx_PyDict_NewPresized(1); if (unlikely(!__pyx_t_2)) __PYX_ERR(23, 73, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_2);
    if (PyDict_SetItem(__pyx_t_2, __pyx_n_s_shutdown_cq, Py_True) < 0) __PYX_ERR(23, 73, __pyx_L1_error)
    __pyx_t_3 = __Pyx_PyObject_Call(((PyObject *)__pyx_ptype_4grpc_7_cython_6cygrpc_CompletionQueue), __pyx_empty_tuple, __pyx_t_2); if (unlikely(!__pyx_t_3)) __PYX_ERR(23, 73, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_3);
    __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
    __Pyx_GIVEREF(__pyx_t_3);
    __Pyx_GOTREF(__pyx_v_self->backup_shutdown_queue);
    __Pyx_DECREF(((PyObject *)__pyx_v_self->backup_shutdown_queue));
    __pyx_v_self->backup_shutdown_queue = ((struct __pyx_obj_4grpc_7_cython_6cygrpc_CompletionQueue *)__pyx_t_3);
    __pyx_t_3 = 0;

    /* "src/python/grpcio/grpc/_cython/_cygrpc/server.pyx.pxi":74
 *     if backup_queue:
 *       self.backup_shutdown_queue = CompletionQueue(shutdown_cq=True)
 *       self.register_completion_queue(self.backup_shutdown_queue)             # <<<<<<<<<<<<<<
 *     self.is_started = True
 *     with nogil:
 */
    __pyx_t_2 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_register_completion_queue); if (unlikely(!__pyx_t_2)) __PYX_ERR(23, 74, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_2);
    __pyx_t_4 = NULL;
    if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_2))) {
      __pyx_t_4 = PyMethod_GET_SELF(__pyx_t_2);
      if (likely(__pyx_t_4)) {
        PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_2);
        __Pyx_INCREF(__pyx_t_4);
        __Pyx_INCREF(function);
        __Pyx_DECREF_SET(__pyx_t_2, function);
      }
    }
    __pyx_t_3 = (__pyx_t_4) ? __Pyx_PyObject_Call2Args(__pyx_t_2, __pyx_t_4, ((PyObject *)__pyx_v_self->backup_shutdown_queue)) : __Pyx_PyObject_CallOneArg(__pyx_t_2, ((PyObject *)__pyx_v_self->backup_shutdown_queue));
    __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0;
    if (unlikely(!__pyx_t_3)) __PYX_ERR(23, 74, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_3);
    __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
    __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;

    /* "src/python/grpcio/grpc/_cython/_cygrpc/server.pyx.pxi":72
 *     if self.is_started:
 *       raise ValueError("the server has already started")
 *     if backup_queue:             # <<<<<<<<<<<<<<
 *       self.backup_shutdown_queue = CompletionQueue(shutdown_cq=True)
 *       self.register_completion_queue(self.backup_shutdown_queue)
 */
  }

  /* "src/python/grpcio/grpc/_cython/_cygrpc/server.pyx.pxi":75
 *       self.backup_shutdown_queue = CompletionQueue(shutdown_cq=True)
 *       self.register_completion_queue(self.backup_shutdown_queue)
 *     self.is_started = True             # <<<<<<<<<<<<<<
 *     with nogil:
 *       grpc_server_start(self.c_server)
 */
  __pyx_v_self->is_started = 1;

  /* "src/python/grpcio/grpc/_cython/_cygrpc/server.pyx.pxi":76
 *       self.register_completion_queue(self.backup_shutdown_queue)
 *     self.is_started = True
 *     with nogil:             # <<<<<<<<<<<<<<
 *       grpc_server_start(self.c_server)
 *     if backup_queue:
 */
  {
      #ifdef WITH_THREAD
      PyThreadState *_save;
      Py_UNBLOCK_THREADS
      __Pyx_FastGIL_Remember();
      #endif
      /*try:*/ {

        /* "src/python/grpcio/grpc/_cython/_cygrpc/server.pyx.pxi":77
 *     self.is_started = True
 *     with nogil:
 *       grpc_server_start(self.c_server)             # <<<<<<<<<<<<<<
 *     if backup_queue:
 *       # Ensure the core has gotten a chance to do the start-up work
 */
        grpc_server_start(__pyx_v_self->c_server);
      }

      /* "src/python/grpcio/grpc/_cython/_cygrpc/server.pyx.pxi":76
 *       self.register_completion_queue(self.backup_shutdown_queue)
 *     self.is_started = True
 *     with nogil:             # <<<<<<<<<<<<<<
 *       grpc_server_start(self.c_server)
 *     if backup_queue:
 */
      /*finally:*/ {
        /*normal exit:*/{
          #ifdef WITH_THREAD
          __Pyx_FastGIL_Forget();
          Py_BLOCK_THREADS
          #endif
          goto __pyx_L7;
        }
        __pyx_L7:;
      }
  }

  /* "src/python/grpcio/grpc/_cython/_cygrpc/server.pyx.pxi":78
 *     with nogil:
 *       grpc_server_start(self.c_server)
 *     if backup_queue:             # <<<<<<<<<<<<<<
 *       # Ensure the core has gotten a chance to do the start-up work
 *       self.backup_shutdown_queue.poll(deadline=time.time())
 */
  __pyx_t_1 = __Pyx_PyObject_IsTrue(__pyx_v_backup_queue); if (unlikely(__pyx_t_1 < 0)) __PYX_ERR(23, 78, __pyx_L1_error)
  if (__pyx_t_1) {

    /* "src/python/grpcio/grpc/_cython/_cygrpc/server.pyx.pxi":80
 *     if backup_queue:
 *       # Ensure the core has gotten a chance to do the start-up work
 *       self.backup_shutdown_queue.poll(deadline=time.time())             # <<<<<<<<<<<<<<
 * 
 *   def add_http2_port(self, bytes address,
 */
    __pyx_t_3 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self->backup_shutdown_queue), __pyx_n_s_poll); if (unlikely(!__pyx_t_3)) __PYX_ERR(23, 80, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_3);
    __pyx_t_2 = __Pyx_PyDict_NewPresized(1); if (unlikely(!__pyx_t_2)) __PYX_ERR(23, 80, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_2);
    __Pyx_GetModuleGlobalName(__pyx_t_5, __pyx_n_s_time); if (unlikely(!__pyx_t_5)) __PYX_ERR(23, 80, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_5);
    __pyx_t_6 = __Pyx_PyObject_GetAttrStr(__pyx_t_5, __pyx_n_s_time); if (unlikely(!__pyx_t_6)) __PYX_ERR(23, 80, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_6);
    __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
    __pyx_t_5 = NULL;
    if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_6))) {
      __pyx_t_5 = PyMethod_GET_SELF(__pyx_t_6);
      if (likely(__pyx_t_5)) {
        PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_6);
        __Pyx_INCREF(__pyx_t_5);
        __Pyx_INCREF(function);
        __Pyx_DECREF_SET(__pyx_t_6, function);
      }
    }
    __pyx_t_4 = (__pyx_t_5) ? __Pyx_PyObject_CallOneArg(__pyx_t_6, __pyx_t_5) : __Pyx_PyObject_CallNoArg(__pyx_t_6);
    __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0;
    if (unlikely(!__pyx_t_4)) __PYX_ERR(23, 80, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_4);
    __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
    if (PyDict_SetItem(__pyx_t_2, __pyx_n_s_deadline, __pyx_t_4) < 0) __PYX_ERR(23, 80, __pyx_L1_error)
    __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
    __pyx_t_4 = __Pyx_PyObject_Call(__pyx_t_3, __pyx_empty_tuple, __pyx_t_2); if (unlikely(!__pyx_t_4)) __PYX_ERR(23, 80, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_4);
    __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
    __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
    __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;

    /* "src/python/grpcio/grpc/_cython/_cygrpc/server.pyx.pxi":78
 *     with nogil:
 *       grpc_server_start(self.c_server)
 *     if backup_queue:             # <<<<<<<<<<<<<<
 *       # Ensure the core has gotten a chance to do the start-up work
 *       self.backup_shutdown_queue.poll(deadline=time.time())
 */
  }

  /* "src/python/grpcio/grpc/_cython/_cygrpc/server.pyx.pxi":62
 *     self.registered_completion_queues.append(queue)
 * 
 *   def start(self, backup_queue=True):             # <<<<<<<<<<<<<<
 *     """Start the Cython gRPC Server.
 * 
 */

  /* function exit code */
  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_XDECREF(__pyx_t_3);
  __Pyx_XDECREF(__pyx_t_4);
  __Pyx_XDECREF(__pyx_t_5);
  __Pyx_XDECREF(__pyx_t_6);
  __Pyx_AddTraceback("grpc._cython.cygrpc.Server.start", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "src/python/grpcio/grpc/_cython/_cygrpc/server.pyx.pxi":82
 *       self.backup_shutdown_queue.poll(deadline=time.time())
 * 
 *   def add_http2_port(self, bytes address,             # <<<<<<<<<<<<<<
 *                      ServerCredentials server_credentials=None):
 *     address = str_to_bytes(address)
 */

/* Python wrapper */
static PyObject *__pyx_pw_4grpc_7_cython_6cygrpc_6Server_9add_http2_port(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
static PyObject *__pyx_pw_4grpc_7_cython_6cygrpc_6Server_9add_http2_port(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
  PyObject *__pyx_v_address = 0;
  struct __pyx_obj_4grpc_7_cython_6cygrpc_ServerCredentials *__pyx_v_server_credentials = 0;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("add_http2_port (wrapper)", 0);
  {
    static PyObject **__pyx_pyargnames[] = {&__pyx_n_s_address,&__pyx_n_s_server_credentials,0};
    PyObject* values[2] = {0,0};

    /* "src/python/grpcio/grpc/_cython/_cygrpc/server.pyx.pxi":83
 * 
 *   def add_http2_port(self, bytes address,
 *                      ServerCredentials server_credentials=None):             # <<<<<<<<<<<<<<
 *     address = str_to_bytes(address)
 *     self.references.append(address)
 */
    values[1] = (PyObject *)((struct __pyx_obj_4grpc_7_cython_6cygrpc_ServerCredentials *)Py_None);
    if (unlikely(__pyx_kwds)) {
      Py_ssize_t kw_args;
      const Py_ssize_t pos_args = PyTuple_GET_SIZE(__pyx_args);
      switch (pos_args) {
        case  2: values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
        CYTHON_FALLTHROUGH;
        case  1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
        CYTHON_FALLTHROUGH;
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      kw_args = PyDict_Size(__pyx_kwds);
      switch (pos_args) {
        case  0:
        if (likely((values[0] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_address)) != 0)) kw_args--;
        else goto __pyx_L5_argtuple_error;
        CYTHON_FALLTHROUGH;
        case  1:
        if (kw_args > 0) {
          PyObject* value = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_server_credentials);
          if (value) { values[1] = value; kw_args--; }
        }
      }
      if (unlikely(kw_args > 0)) {
        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "add_http2_port") < 0)) __PYX_ERR(23, 82, __pyx_L3_error)
      }
    } else {
      switch (PyTuple_GET_SIZE(__pyx_args)) {
        case  2: values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
        CYTHON_FALLTHROUGH;
        case  1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
        break;
        default: goto __pyx_L5_argtuple_error;
      }
    }
    __pyx_v_address = ((PyObject*)values[0]);
    __pyx_v_server_credentials = ((struct __pyx_obj_4grpc_7_cython_6cygrpc_ServerCredentials *)values[1]);
  }
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("add_http2_port", 0, 1, 2, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(23, 82, __pyx_L3_error)
  __pyx_L3_error:;
  __Pyx_AddTraceback("grpc._cython.cygrpc.Server.add_http2_port", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_address), (&PyBytes_Type), 1, "address", 1))) __PYX_ERR(23, 82, __pyx_L1_error)
  if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_server_credentials), __pyx_ptype_4grpc_7_cython_6cygrpc_ServerCredentials, 1, "server_credentials", 0))) __PYX_ERR(23, 83, __pyx_L1_error)
  __pyx_r = __pyx_pf_4grpc_7_cython_6cygrpc_6Server_8add_http2_port(((struct __pyx_obj_4grpc_7_cython_6cygrpc_Server *)__pyx_v_self), __pyx_v_address, __pyx_v_server_credentials);

  /* "src/python/grpcio/grpc/_cython/_cygrpc/server.pyx.pxi":82
 *       self.backup_shutdown_queue.poll(deadline=time.time())
 * 
 *   def add_http2_port(self, bytes address,             # <<<<<<<<<<<<<<
 *                      ServerCredentials server_credentials=None):
 *     address = str_to_bytes(address)
 */

  /* function exit code */
  goto __pyx_L0;
  __pyx_L1_error:;
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_4grpc_7_cython_6cygrpc_6Server_8add_http2_port(struct __pyx_obj_4grpc_7_cython_6cygrpc_Server *__pyx_v_self, PyObject *__pyx_v_address, struct __pyx_obj_4grpc_7_cython_6cygrpc_ServerCredentials *__pyx_v_server_credentials) {
  int __pyx_v_result;
  char *__pyx_v_address_c_string;
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  int __pyx_t_2;
  char *__pyx_t_3;
  int __pyx_t_4;
  int __pyx_t_5;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("add_http2_port", 0);
  __Pyx_INCREF(__pyx_v_address);

  /* "src/python/grpcio/grpc/_cython/_cygrpc/server.pyx.pxi":84
 *   def add_http2_port(self, bytes address,
 *                      ServerCredentials server_credentials=None):
 *     address = str_to_bytes(address)             # <<<<<<<<<<<<<<
 *     self.references.append(address)
 *     cdef int result
 */
  __pyx_t_1 = __pyx_f_4grpc_7_cython_6cygrpc_str_to_bytes(__pyx_v_address); if (unlikely(!__pyx_t_1)) __PYX_ERR(23, 84, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_DECREF_SET(__pyx_v_address, ((PyObject*)__pyx_t_1));
  __pyx_t_1 = 0;

  /* "src/python/grpcio/grpc/_cython/_cygrpc/server.pyx.pxi":85
 *                      ServerCredentials server_credentials=None):
 *     address = str_to_bytes(address)
 *     self.references.append(address)             # <<<<<<<<<<<<<<
 *     cdef int result
 *     cdef char *address_c_string = address
 */
  if (unlikely(__pyx_v_self->references == Py_None)) {
    PyErr_Format(PyExc_AttributeError, "'NoneType' object has no attribute '%.30s'", "append");
    __PYX_ERR(23, 85, __pyx_L1_error)
  }
  __pyx_t_2 = __Pyx_PyList_Append(__pyx_v_self->references, __pyx_v_address); if (unlikely(__pyx_t_2 == ((int)-1))) __PYX_ERR(23, 85, __pyx_L1_error)

  /* "src/python/grpcio/grpc/_cython/_cygrpc/server.pyx.pxi":87
 *     self.references.append(address)
 *     cdef int result
 *     cdef char *address_c_string = address             # <<<<<<<<<<<<<<
 *     if server_credentials is not None:
 *       self.references.append(server_credentials)
 */
  if (unlikely(__pyx_v_address == Py_None)) {
    PyErr_SetString(PyExc_TypeError, "expected bytes, NoneType found");
    __PYX_ERR(23, 87, __pyx_L1_error)
  }
  __pyx_t_3 = __Pyx_PyBytes_AsWritableString(__pyx_v_address); if (unlikely((!__pyx_t_3) && PyErr_Occurred())) __PYX_ERR(23, 87, __pyx_L1_error)
  __pyx_v_address_c_string = __pyx_t_3;

  /* "src/python/grpcio/grpc/_cython/_cygrpc/server.pyx.pxi":88
 *     cdef int result
 *     cdef char *address_c_string = address
 *     if server_credentials is not None:             # <<<<<<<<<<<<<<
 *       self.references.append(server_credentials)
 *       with nogil:
 */
  __pyx_t_4 = (((PyObject *)__pyx_v_server_credentials) != Py_None);
  __pyx_t_5 = (__pyx_t_4 != 0);
  if (__pyx_t_5) {

    /* "src/python/grpcio/grpc/_cython/_cygrpc/server.pyx.pxi":89
 *     cdef char *address_c_string = address
 *     if server_credentials is not None:
 *       self.references.append(server_credentials)             # <<<<<<<<<<<<<<
 *       with nogil:
 *         result = grpc_server_add_secure_http2_port(
 */
    if (unlikely(__pyx_v_self->references == Py_None)) {
      PyErr_Format(PyExc_AttributeError, "'NoneType' object has no attribute '%.30s'", "append");
      __PYX_ERR(23, 89, __pyx_L1_error)
    }
    __pyx_t_2 = __Pyx_PyList_Append(__pyx_v_self->references, ((PyObject *)__pyx_v_server_credentials)); if (unlikely(__pyx_t_2 == ((int)-1))) __PYX_ERR(23, 89, __pyx_L1_error)

    /* "src/python/grpcio/grpc/_cython/_cygrpc/server.pyx.pxi":90
 *     if server_credentials is not None:
 *       self.references.append(server_credentials)
 *       with nogil:             # <<<<<<<<<<<<<<
 *         result = grpc_server_add_secure_http2_port(
 *             self.c_server, address_c_string, server_credentials.c_credentials)
 */
    {
        #ifdef WITH_THREAD
        PyThreadState *_save;
        Py_UNBLOCK_THREADS
        __Pyx_FastGIL_Remember();
        #endif
        /*try:*/ {

          /* "src/python/grpcio/grpc/_cython/_cygrpc/server.pyx.pxi":91
 *       self.references.append(server_credentials)
 *       with nogil:
 *         result = grpc_server_add_secure_http2_port(             # <<<<<<<<<<<<<<
 *             self.c_server, address_c_string, server_credentials.c_credentials)
 *     else:
 */
          __pyx_v_result = grpc_server_add_secure_http2_port(__pyx_v_self->c_server, __pyx_v_address_c_string, __pyx_v_server_credentials->c_credentials);
        }

        /* "src/python/grpcio/grpc/_cython/_cygrpc/server.pyx.pxi":90
 *     if server_credentials is not None:
 *       self.references.append(server_credentials)
 *       with nogil:             # <<<<<<<<<<<<<<
 *         result = grpc_server_add_secure_http2_port(
 *             self.c_server, address_c_string, server_credentials.c_credentials)
 */
        /*finally:*/ {
          /*normal exit:*/{
            #ifdef WITH_THREAD
            __Pyx_FastGIL_Forget();
            Py_BLOCK_THREADS
            #endif
            goto __pyx_L6;
          }
          __pyx_L6:;
        }
    }

    /* "src/python/grpcio/grpc/_cython/_cygrpc/server.pyx.pxi":88
 *     cdef int result
 *     cdef char *address_c_string = address
 *     if server_credentials is not None:             # <<<<<<<<<<<<<<
 *       self.references.append(server_credentials)
 *       with nogil:
 */
    goto __pyx_L3;
  }

  /* "src/python/grpcio/grpc/_cython/_cygrpc/server.pyx.pxi":94
 *             self.c_server, address_c_string, server_credentials.c_credentials)
 *     else:
 *       with nogil:             # <<<<<<<<<<<<<<
 *         result = grpc_server_add_insecure_http2_port(self.c_server,
 *                                                      address_c_string)
 */
  /*else*/ {
    {
        #ifdef WITH_THREAD
        PyThreadState *_save;
        Py_UNBLOCK_THREADS
        __Pyx_FastGIL_Remember();
        #endif
        /*try:*/ {

          /* "src/python/grpcio/grpc/_cython/_cygrpc/server.pyx.pxi":95
 *     else:
 *       with nogil:
 *         result = grpc_server_add_insecure_http2_port(self.c_server,             # <<<<<<<<<<<<<<
 *                                                      address_c_string)
 *     return result
 */
          __pyx_v_result = grpc_server_add_insecure_http2_port(__pyx_v_self->c_server, __pyx_v_address_c_string);
        }

        /* "src/python/grpcio/grpc/_cython/_cygrpc/server.pyx.pxi":94
 *             self.c_server, address_c_string, server_credentials.c_credentials)
 *     else:
 *       with nogil:             # <<<<<<<<<<<<<<
 *         result = grpc_server_add_insecure_http2_port(self.c_server,
 *                                                      address_c_string)
 */
        /*finally:*/ {
          /*normal exit:*/{
            #ifdef WITH_THREAD
            __Pyx_FastGIL_Forget();
            Py_BLOCK_THREADS
            #endif
            goto __pyx_L9;
          }
          __pyx_L9:;
        }
    }
  }
  __pyx_L3:;

  /* "src/python/grpcio/grpc/_cython/_cygrpc/server.pyx.pxi":97
 *         result = grpc_server_add_insecure_http2_port(self.c_server,
 *                                                      address_c_string)
 *     return result             # <<<<<<<<<<<<<<
 * 
 *   cdef _c_shutdown(self, CompletionQueue queue, tag):
 */
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_1 = __Pyx_PyInt_From_int(__pyx_v_result); if (unlikely(!__pyx_t_1)) __PYX_ERR(23, 97, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_r = __pyx_t_1;
  __pyx_t_1 = 0;
  goto __pyx_L0;

  /* "src/python/grpcio/grpc/_cython/_cygrpc/server.pyx.pxi":82
 *       self.backup_shutdown_queue.poll(deadline=time.time())
 * 
 *   def add_http2_port(self, bytes address,             # <<<<<<<<<<<<<<
 *                      ServerCredentials server_credentials=None):
 *     address = str_to_bytes(address)
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_AddTraceback("grpc._cython.cygrpc.Server.add_http2_port", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XDECREF(__pyx_v_address);
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "src/python/grpcio/grpc/_cython/_cygrpc/server.pyx.pxi":99
 *     return result
 * 
 *   cdef _c_shutdown(self, CompletionQueue queue, tag):             # <<<<<<<<<<<<<<
 *     self.is_shutting_down = True
 *     cdef _ServerShutdownTag server_shutdown_tag = _ServerShutdownTag(tag, self)
 */

static PyObject *__pyx_f_4grpc_7_cython_6cygrpc_6Server__c_shutdown(struct __pyx_obj_4grpc_7_cython_6cygrpc_Server *__pyx_v_self, struct __pyx_obj_4grpc_7_cython_6cygrpc_CompletionQueue *__pyx_v_queue, PyObject *__pyx_v_tag) {
  struct __pyx_obj_4grpc_7_cython_6cygrpc__ServerShutdownTag *__pyx_v_server_shutdown_tag = 0;
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  PyObject *__pyx_t_2 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("_c_shutdown", 0);

  /* "src/python/grpcio/grpc/_cython/_cygrpc/server.pyx.pxi":100
 * 
 *   cdef _c_shutdown(self, CompletionQueue queue, tag):
 *     self.is_shutting_down = True             # <<<<<<<<<<<<<<
 *     cdef _ServerShutdownTag server_shutdown_tag = _ServerShutdownTag(tag, self)
 *     cpython.Py_INCREF(server_shutdown_tag)
 */
  __pyx_v_self->is_shutting_down = 1;

  /* "src/python/grpcio/grpc/_cython/_cygrpc/server.pyx.pxi":101
 *   cdef _c_shutdown(self, CompletionQueue queue, tag):
 *     self.is_shutting_down = True
 *     cdef _ServerShutdownTag server_shutdown_tag = _ServerShutdownTag(tag, self)             # <<<<<<<<<<<<<<
 *     cpython.Py_INCREF(server_shutdown_tag)
 *     with nogil:
 */
  __pyx_t_1 = PyTuple_New(2); if (unlikely(!__pyx_t_1)) __PYX_ERR(23, 101, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_INCREF(__pyx_v_tag);
  __Pyx_GIVEREF(__pyx_v_tag);
  PyTuple_SET_ITEM(__pyx_t_1, 0, __pyx_v_tag);
  __Pyx_INCREF(((PyObject *)__pyx_v_self));
  __Pyx_GIVEREF(((PyObject *)__pyx_v_self));
  PyTuple_SET_ITEM(__pyx_t_1, 1, ((PyObject *)__pyx_v_self));
  __pyx_t_2 = __Pyx_PyObject_Call(((PyObject *)__pyx_ptype_4grpc_7_cython_6cygrpc__ServerShutdownTag), __pyx_t_1, NULL); if (unlikely(!__pyx_t_2)) __PYX_ERR(23, 101, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  __pyx_v_server_shutdown_tag = ((struct __pyx_obj_4grpc_7_cython_6cygrpc__ServerShutdownTag *)__pyx_t_2);
  __pyx_t_2 = 0;

  /* "src/python/grpcio/grpc/_cython/_cygrpc/server.pyx.pxi":102
 *     self.is_shutting_down = True
 *     cdef _ServerShutdownTag server_shutdown_tag = _ServerShutdownTag(tag, self)
 *     cpython.Py_INCREF(server_shutdown_tag)             # <<<<<<<<<<<<<<
 *     with nogil:
 *       grpc_server_shutdown_and_notify(
 */
  Py_INCREF(((PyObject *)__pyx_v_server_shutdown_tag));

  /* "src/python/grpcio/grpc/_cython/_cygrpc/server.pyx.pxi":103
 *     cdef _ServerShutdownTag server_shutdown_tag = _ServerShutdownTag(tag, self)
 *     cpython.Py_INCREF(server_shutdown_tag)
 *     with nogil:             # <<<<<<<<<<<<<<
 *       grpc_server_shutdown_and_notify(
 *           self.c_server, queue.c_completion_queue,
 */
  {
      #ifdef WITH_THREAD
      PyThreadState *_save;
      Py_UNBLOCK_THREADS
      __Pyx_FastGIL_Remember();
      #endif
      /*try:*/ {

        /* "src/python/grpcio/grpc/_cython/_cygrpc/server.pyx.pxi":104
 *     cpython.Py_INCREF(server_shutdown_tag)
 *     with nogil:
 *       grpc_server_shutdown_and_notify(             # <<<<<<<<<<<<<<
 *           self.c_server, queue.c_completion_queue,
 *           <cpython.PyObject *>server_shutdown_tag)
 */
        grpc_server_shutdown_and_notify(__pyx_v_self->c_server, __pyx_v_queue->c_completion_queue, ((PyObject *)__pyx_v_server_shutdown_tag));
      }

      /* "src/python/grpcio/grpc/_cython/_cygrpc/server.pyx.pxi":103
 *     cdef _ServerShutdownTag server_shutdown_tag = _ServerShutdownTag(tag, self)
 *     cpython.Py_INCREF(server_shutdown_tag)
 *     with nogil:             # <<<<<<<<<<<<<<
 *       grpc_server_shutdown_and_notify(
 *           self.c_server, queue.c_completion_queue,
 */
      /*finally:*/ {
        /*normal exit:*/{
          #ifdef WITH_THREAD
          __Pyx_FastGIL_Forget();
          Py_BLOCK_THREADS
          #endif
          goto __pyx_L5;
        }
        __pyx_L5:;
      }
  }

  /* "src/python/grpcio/grpc/_cython/_cygrpc/server.pyx.pxi":99
 *     return result
 * 
 *   cdef _c_shutdown(self, CompletionQueue queue, tag):             # <<<<<<<<<<<<<<
 *     self.is_shutting_down = True
 *     cdef _ServerShutdownTag server_shutdown_tag = _ServerShutdownTag(tag, self)
 */

  /* function exit code */
  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_AddTraceback("grpc._cython.cygrpc.Server._c_shutdown", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = 0;
  __pyx_L0:;
  __Pyx_XDECREF((PyObject *)__pyx_v_server_shutdown_tag);
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "src/python/grpcio/grpc/_cython/_cygrpc/server.pyx.pxi":108
 *           <cpython.PyObject *>server_shutdown_tag)
 * 
 *   def shutdown(self, CompletionQueue queue not None, tag):             # <<<<<<<<<<<<<<
 *     if queue.is_shutting_down:
 *       raise ValueError("queue must be live")
 */

/* Python wrapper */
static PyObject *__pyx_pw_4grpc_7_cython_6cygrpc_6Server_11shutdown(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
static PyObject *__pyx_pw_4grpc_7_cython_6cygrpc_6Server_11shutdown(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
  struct __pyx_obj_4grpc_7_cython_6cygrpc_CompletionQueue *__pyx_v_queue = 0;
  PyObject *__pyx_v_tag = 0;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("shutdown (wrapper)", 0);
  {
    static PyObject **__pyx_pyargnames[] = {&__pyx_n_s_queue,&__pyx_n_s_tag,0};
    PyObject* values[2] = {0,0};
    if (unlikely(__pyx_kwds)) {
      Py_ssize_t kw_args;
      const Py_ssize_t pos_args = PyTuple_GET_SIZE(__pyx_args);
      switch (pos_args) {
        case  2: values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
        CYTHON_FALLTHROUGH;
        case  1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
        CYTHON_FALLTHROUGH;
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      kw_args = PyDict_Size(__pyx_kwds);
      switch (pos_args) {
        case  0:
        if (likely((values[0] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_queue)) != 0)) kw_args--;
        else goto __pyx_L5_argtuple_error;
        CYTHON_FALLTHROUGH;
        case  1:
        if (likely((values[1] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_tag)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("shutdown", 1, 2, 2, 1); __PYX_ERR(23, 108, __pyx_L3_error)
        }
      }
      if (unlikely(kw_args > 0)) {
        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "shutdown") < 0)) __PYX_ERR(23, 108, __pyx_L3_error)
      }
    } else if (PyTuple_GET_SIZE(__pyx_args) != 2) {
      goto __pyx_L5_argtuple_error;
    } else {
      values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
      values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
    }
    __pyx_v_queue = ((struct __pyx_obj_4grpc_7_cython_6cygrpc_CompletionQueue *)values[0]);
    __pyx_v_tag = values[1];
  }
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("shutdown", 1, 2, 2, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(23, 108, __pyx_L3_error)
  __pyx_L3_error:;
  __Pyx_AddTraceback("grpc._cython.cygrpc.Server.shutdown", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_queue), __pyx_ptype_4grpc_7_cython_6cygrpc_CompletionQueue, 0, "queue", 0))) __PYX_ERR(23, 108, __pyx_L1_error)
  __pyx_r = __pyx_pf_4grpc_7_cython_6cygrpc_6Server_10shutdown(((struct __pyx_obj_4grpc_7_cython_6cygrpc_Server *)__pyx_v_self), __pyx_v_queue, __pyx_v_tag);

  /* function exit code */
  goto __pyx_L0;
  __pyx_L1_error:;
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_4grpc_7_cython_6cygrpc_6Server_10shutdown(struct __pyx_obj_4grpc_7_cython_6cygrpc_Server *__pyx_v_self, struct __pyx_obj_4grpc_7_cython_6cygrpc_CompletionQueue *__pyx_v_queue, PyObject *__pyx_v_tag) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  int __pyx_t_1;
  PyObject *__pyx_t_2 = NULL;
  int __pyx_t_3;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("shutdown", 0);

  /* "src/python/grpcio/grpc/_cython/_cygrpc/server.pyx.pxi":109
 * 
 *   def shutdown(self, CompletionQueue queue not None, tag):
 *     if queue.is_shutting_down:             # <<<<<<<<<<<<<<
 *       raise ValueError("queue must be live")
 *     elif not self.is_started:
 */
  __pyx_t_1 = (__pyx_v_queue->is_shutting_down != 0);
  if (unlikely(__pyx_t_1)) {

    /* "src/python/grpcio/grpc/_cython/_cygrpc/server.pyx.pxi":110
 *   def shutdown(self, CompletionQueue queue not None, tag):
 *     if queue.is_shutting_down:
 *       raise ValueError("queue must be live")             # <<<<<<<<<<<<<<
 *     elif not self.is_started:
 *       raise ValueError("the server hasn't started yet")
 */
    __pyx_t_2 = __Pyx_PyObject_Call(__pyx_builtin_ValueError, __pyx_tuple__104, NULL); if (unlikely(!__pyx_t_2)) __PYX_ERR(23, 110, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_2);
    __Pyx_Raise(__pyx_t_2, 0, 0, 0);
    __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
    __PYX_ERR(23, 110, __pyx_L1_error)

    /* "src/python/grpcio/grpc/_cython/_cygrpc/server.pyx.pxi":109
 * 
 *   def shutdown(self, CompletionQueue queue not None, tag):
 *     if queue.is_shutting_down:             # <<<<<<<<<<<<<<
 *       raise ValueError("queue must be live")
 *     elif not self.is_started:
 */
  }

  /* "src/python/grpcio/grpc/_cython/_cygrpc/server.pyx.pxi":111
 *     if queue.is_shutting_down:
 *       raise ValueError("queue must be live")
 *     elif not self.is_started:             # <<<<<<<<<<<<<<
 *       raise ValueError("the server hasn't started yet")
 *     elif self.is_shutting_down:
 */
  __pyx_t_1 = ((!(__pyx_v_self->is_started != 0)) != 0);
  if (unlikely(__pyx_t_1)) {

    /* "src/python/grpcio/grpc/_cython/_cygrpc/server.pyx.pxi":112
 *       raise ValueError("queue must be live")
 *     elif not self.is_started:
 *       raise ValueError("the server hasn't started yet")             # <<<<<<<<<<<<<<
 *     elif self.is_shutting_down:
 *       return
 */
    __pyx_t_2 = __Pyx_PyObject_Call(__pyx_builtin_ValueError, __pyx_tuple__105, NULL); if (unlikely(!__pyx_t_2)) __PYX_ERR(23, 112, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_2);
    __Pyx_Raise(__pyx_t_2, 0, 0, 0);
    __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
    __PYX_ERR(23, 112, __pyx_L1_error)

    /* "src/python/grpcio/grpc/_cython/_cygrpc/server.pyx.pxi":111
 *     if queue.is_shutting_down:
 *       raise ValueError("queue must be live")
 *     elif not self.is_started:             # <<<<<<<<<<<<<<
 *       raise ValueError("the server hasn't started yet")
 *     elif self.is_shutting_down:
 */
  }

  /* "src/python/grpcio/grpc/_cython/_cygrpc/server.pyx.pxi":113
 *     elif not self.is_started:
 *       raise ValueError("the server hasn't started yet")
 *     elif self.is_shutting_down:             # <<<<<<<<<<<<<<
 *       return
 *     elif queue not in self.registered_completion_queues:
 */
  __pyx_t_1 = (__pyx_v_self->is_shutting_down != 0);
  if (__pyx_t_1) {

    /* "src/python/grpcio/grpc/_cython/_cygrpc/server.pyx.pxi":114
 *       raise ValueError("the server hasn't started yet")
 *     elif self.is_shutting_down:
 *       return             # <<<<<<<<<<<<<<
 *     elif queue not in self.registered_completion_queues:
 *       raise ValueError("expected registered completion queue")
 */
    __Pyx_XDECREF(__pyx_r);
    __pyx_r = Py_None; __Pyx_INCREF(Py_None);
    goto __pyx_L0;

    /* "src/python/grpcio/grpc/_cython/_cygrpc/server.pyx.pxi":113
 *     elif not self.is_started:
 *       raise ValueError("the server hasn't started yet")
 *     elif self.is_shutting_down:             # <<<<<<<<<<<<<<
 *       return
 *     elif queue not in self.registered_completion_queues:
 */
  }

  /* "src/python/grpcio/grpc/_cython/_cygrpc/server.pyx.pxi":115
 *     elif self.is_shutting_down:
 *       return
 *     elif queue not in self.registered_completion_queues:             # <<<<<<<<<<<<<<
 *       raise ValueError("expected registered completion queue")
 *     else:
 */
  __pyx_t_1 = (__Pyx_PySequence_ContainsTF(((PyObject *)__pyx_v_queue), __pyx_v_self->registered_completion_queues, Py_NE)); if (unlikely(__pyx_t_1 < 0)) __PYX_ERR(23, 115, __pyx_L1_error)
  __pyx_t_3 = (__pyx_t_1 != 0);
  if (unlikely(__pyx_t_3)) {

    /* "src/python/grpcio/grpc/_cython/_cygrpc/server.pyx.pxi":116
 *       return
 *     elif queue not in self.registered_completion_queues:
 *       raise ValueError("expected registered completion queue")             # <<<<<<<<<<<<<<
 *     else:
 *       self._c_shutdown(queue, tag)
 */
    __pyx_t_2 = __Pyx_PyObject_Call(__pyx_builtin_ValueError, __pyx_tuple__106, NULL); if (unlikely(!__pyx_t_2)) __PYX_ERR(23, 116, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_2);
    __Pyx_Raise(__pyx_t_2, 0, 0, 0);
    __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
    __PYX_ERR(23, 116, __pyx_L1_error)

    /* "src/python/grpcio/grpc/_cython/_cygrpc/server.pyx.pxi":115
 *     elif self.is_shutting_down:
 *       return
 *     elif queue not in self.registered_completion_queues:             # <<<<<<<<<<<<<<
 *       raise ValueError("expected registered completion queue")
 *     else:
 */
  }

  /* "src/python/grpcio/grpc/_cython/_cygrpc/server.pyx.pxi":118
 *       raise ValueError("expected registered completion queue")
 *     else:
 *       self._c_shutdown(queue, tag)             # <<<<<<<<<<<<<<
 * 
 *   cdef notify_shutdown_complete(self):
 */
  /*else*/ {
    __pyx_t_2 = ((struct __pyx_vtabstruct_4grpc_7_cython_6cygrpc_Server *)__pyx_v_self->__pyx_vtab)->_c_shutdown(__pyx_v_self, __pyx_v_queue, __pyx_v_tag); if (unlikely(!__pyx_t_2)) __PYX_ERR(23, 118, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_2);
    __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  }

  /* "src/python/grpcio/grpc/_cython/_cygrpc/server.pyx.pxi":108
 *           <cpython.PyObject *>server_shutdown_tag)
 * 
 *   def shutdown(self, CompletionQueue queue not None, tag):             # <<<<<<<<<<<<<<
 *     if queue.is_shutting_down:
 *       raise ValueError("queue must be live")
 */

  /* function exit code */
  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_AddTraceback("grpc._cython.cygrpc.Server.shutdown", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "src/python/grpcio/grpc/_cython/_cygrpc/server.pyx.pxi":120
 *       self._c_shutdown(queue, tag)
 * 
 *   cdef notify_shutdown_complete(self):             # <<<<<<<<<<<<<<
 *     # called only after our server shutdown tag has emerged from a completion
 *     # queue.
 */

static PyObject *__pyx_f_4grpc_7_cython_6cygrpc_6Server_notify_shutdown_complete(struct __pyx_obj_4grpc_7_cython_6cygrpc_Server *__pyx_v_self) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("notify_shutdown_complete", 0);

  /* "src/python/grpcio/grpc/_cython/_cygrpc/server.pyx.pxi":123
 *     # called only after our server shutdown tag has emerged from a completion
 *     # queue.
 *     self.is_shutdown = True             # <<<<<<<<<<<<<<
 * 
 *   def cancel_all_calls(self):
 */
  __pyx_v_self->is_shutdown = 1;

  /* "src/python/grpcio/grpc/_cython/_cygrpc/server.pyx.pxi":120
 *       self._c_shutdown(queue, tag)
 * 
 *   cdef notify_shutdown_complete(self):             # <<<<<<<<<<<<<<
 *     # called only after our server shutdown tag has emerged from a completion
 *     # queue.
 */

  /* function exit code */
  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "src/python/grpcio/grpc/_cython/_cygrpc/server.pyx.pxi":125
 *     self.is_shutdown = True
 * 
 *   def cancel_all_calls(self):             # <<<<<<<<<<<<<<
 *     if not self.is_shutting_down:
 *       raise UsageError("the server must be shutting down to cancel all calls")
 */

/* Python wrapper */
static PyObject *__pyx_pw_4grpc_7_cython_6cygrpc_6Server_13cancel_all_calls(PyObject *__pyx_v_self, CYTHON_UNUSED PyObject *unused); /*proto*/
static PyObject *__pyx_pw_4grpc_7_cython_6cygrpc_6Server_13cancel_all_calls(PyObject *__pyx_v_self, CYTHON_UNUSED PyObject *unused) {
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("cancel_all_calls (wrapper)", 0);
  __pyx_r = __pyx_pf_4grpc_7_cython_6cygrpc_6Server_12cancel_all_calls(((struct __pyx_obj_4grpc_7_cython_6cygrpc_Server *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_4grpc_7_cython_6cygrpc_6Server_12cancel_all_calls(struct __pyx_obj_4grpc_7_cython_6cygrpc_Server *__pyx_v_self) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  int __pyx_t_1;
  PyObject *__pyx_t_2 = NULL;
  PyObject *__pyx_t_3 = NULL;
  PyObject *__pyx_t_4 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("cancel_all_calls", 0);

  /* "src/python/grpcio/grpc/_cython/_cygrpc/server.pyx.pxi":126
 * 
 *   def cancel_all_calls(self):
 *     if not self.is_shutting_down:             # <<<<<<<<<<<<<<
 *       raise UsageError("the server must be shutting down to cancel all calls")
 *     elif self.is_shutdown:
 */
  __pyx_t_1 = ((!(__pyx_v_self->is_shutting_down != 0)) != 0);
  if (unlikely(__pyx_t_1)) {

    /* "src/python/grpcio/grpc/_cython/_cygrpc/server.pyx.pxi":127
 *   def cancel_all_calls(self):
 *     if not self.is_shutting_down:
 *       raise UsageError("the server must be shutting down to cancel all calls")             # <<<<<<<<<<<<<<
 *     elif self.is_shutdown:
 *       return
 */
    __Pyx_GetModuleGlobalName(__pyx_t_3, __pyx_n_s_UsageError); if (unlikely(!__pyx_t_3)) __PYX_ERR(23, 127, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_3);
    __pyx_t_4 = NULL;
    if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_3))) {
      __pyx_t_4 = PyMethod_GET_SELF(__pyx_t_3);
      if (likely(__pyx_t_4)) {
        PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_3);
        __Pyx_INCREF(__pyx_t_4);
        __Pyx_INCREF(function);
        __Pyx_DECREF_SET(__pyx_t_3, function);
      }
    }
    __pyx_t_2 = (__pyx_t_4) ? __Pyx_PyObject_Call2Args(__pyx_t_3, __pyx_t_4, __pyx_kp_s_the_server_must_be_shutting_down) : __Pyx_PyObject_CallOneArg(__pyx_t_3, __pyx_kp_s_the_server_must_be_shutting_down);
    __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0;
    if (unlikely(!__pyx_t_2)) __PYX_ERR(23, 127, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_2);
    __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
    __Pyx_Raise(__pyx_t_2, 0, 0, 0);
    __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
    __PYX_ERR(23, 127, __pyx_L1_error)

    /* "src/python/grpcio/grpc/_cython/_cygrpc/server.pyx.pxi":126
 * 
 *   def cancel_all_calls(self):
 *     if not self.is_shutting_down:             # <<<<<<<<<<<<<<
 *       raise UsageError("the server must be shutting down to cancel all calls")
 *     elif self.is_shutdown:
 */
  }

  /* "src/python/grpcio/grpc/_cython/_cygrpc/server.pyx.pxi":128
 *     if not self.is_shutting_down:
 *       raise UsageError("the server must be shutting down to cancel all calls")
 *     elif self.is_shutdown:             # <<<<<<<<<<<<<<
 *       return
 *     else:
 */
  __pyx_t_1 = (__pyx_v_self->is_shutdown != 0);
  if (__pyx_t_1) {

    /* "src/python/grpcio/grpc/_cython/_cygrpc/server.pyx.pxi":129
 *       raise UsageError("the server must be shutting down to cancel all calls")
 *     elif self.is_shutdown:
 *       return             # <<<<<<<<<<<<<<
 *     else:
 *       with nogil:
 */
    __Pyx_XDECREF(__pyx_r);
    __pyx_r = Py_None; __Pyx_INCREF(Py_None);
    goto __pyx_L0;

    /* "src/python/grpcio/grpc/_cython/_cygrpc/server.pyx.pxi":128
 *     if not self.is_shutting_down:
 *       raise UsageError("the server must be shutting down to cancel all calls")
 *     elif self.is_shutdown:             # <<<<<<<<<<<<<<
 *       return
 *     else:
 */
  }

  /* "src/python/grpcio/grpc/_cython/_cygrpc/server.pyx.pxi":131
 *       return
 *     else:
 *       with nogil:             # <<<<<<<<<<<<<<
 *         grpc_server_cancel_all_calls(self.c_server)
 * 
 */
  /*else*/ {
    {
        #ifdef WITH_THREAD
        PyThreadState *_save;
        Py_UNBLOCK_THREADS
        __Pyx_FastGIL_Remember();
        #endif
        /*try:*/ {

          /* "src/python/grpcio/grpc/_cython/_cygrpc/server.pyx.pxi":132
 *     else:
 *       with nogil:
 *         grpc_server_cancel_all_calls(self.c_server)             # <<<<<<<<<<<<<<
 * 
 *   # TODO(https://github.com/grpc/grpc/issues/17515) Determine what, if any,
 */
          grpc_server_cancel_all_calls(__pyx_v_self->c_server);
        }

        /* "src/python/grpcio/grpc/_cython/_cygrpc/server.pyx.pxi":131
 *       return
 *     else:
 *       with nogil:             # <<<<<<<<<<<<<<
 *         grpc_server_cancel_all_calls(self.c_server)
 * 
 */
        /*finally:*/ {
          /*normal exit:*/{
            #ifdef WITH_THREAD
            __Pyx_FastGIL_Forget();
            Py_BLOCK_THREADS
            #endif
            goto __pyx_L6;
          }
          __pyx_L6:;
        }
    }
  }

  /* "src/python/grpcio/grpc/_cython/_cygrpc/server.pyx.pxi":125
 *     self.is_shutdown = True
 * 
 *   def cancel_all_calls(self):             # <<<<<<<<<<<<<<
 *     if not self.is_shutting_down:
 *       raise UsageError("the server must be shutting down to cancel all calls")
 */

  /* function exit code */
  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_XDECREF(__pyx_t_3);
  __Pyx_XDECREF(__pyx_t_4);
  __Pyx_AddTraceback("grpc._cython.cygrpc.Server.cancel_all_calls", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "src/python/grpcio/grpc/_cython/_cygrpc/server.pyx.pxi":137
 *   # portion of this is safe to call from __dealloc__, and potentially remove
 *   # backup_shutdown_queue.
 *   def destroy(self):             # <<<<<<<<<<<<<<
 *     if self.c_server != NULL:
 *       if not self.is_started:
 */

/* Python wrapper */
static PyObject *__pyx_pw_4grpc_7_cython_6cygrpc_6Server_15destroy(PyObject *__pyx_v_self, CYTHON_UNUSED PyObject *unused); /*proto*/
static PyObject *__pyx_pw_4grpc_7_cython_6cygrpc_6Server_15destroy(PyObject *__pyx_v_self, CYTHON_UNUSED PyObject *unused) {
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("destroy (wrapper)", 0);
  __pyx_r = __pyx_pf_4grpc_7_cython_6cygrpc_6Server_14destroy(((struct __pyx_obj_4grpc_7_cython_6cygrpc_Server *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_4grpc_7_cython_6cygrpc_6Server_14destroy(struct __pyx_obj_4grpc_7_cython_6cygrpc_Server *__pyx_v_self) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  int __pyx_t_1;
  int __pyx_t_2;
  PyObject *__pyx_t_3 = NULL;
  PyObject *__pyx_t_4 = NULL;
  PyObject *__pyx_t_5 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("destroy", 0);

  /* "src/python/grpcio/grpc/_cython/_cygrpc/server.pyx.pxi":138
 *   # backup_shutdown_queue.
 *   def destroy(self):
 *     if self.c_server != NULL:             # <<<<<<<<<<<<<<
 *       if not self.is_started:
 *         pass
 */
  __pyx_t_1 = ((__pyx_v_self->c_server != NULL) != 0);
  if (__pyx_t_1) {

    /* "src/python/grpcio/grpc/_cython/_cygrpc/server.pyx.pxi":139
 *   def destroy(self):
 *     if self.c_server != NULL:
 *       if not self.is_started:             # <<<<<<<<<<<<<<
 *         pass
 *       elif self.is_shutdown:
 */
    __pyx_t_1 = ((!(__pyx_v_self->is_started != 0)) != 0);
    if (__pyx_t_1) {
      goto __pyx_L4;
    }

    /* "src/python/grpcio/grpc/_cython/_cygrpc/server.pyx.pxi":141
 *       if not self.is_started:
 *         pass
 *       elif self.is_shutdown:             # <<<<<<<<<<<<<<
 *         pass
 *       elif not self.is_shutting_down:
 */
    __pyx_t_1 = (__pyx_v_self->is_shutdown != 0);
    if (__pyx_t_1) {
      goto __pyx_L4;
    }

    /* "src/python/grpcio/grpc/_cython/_cygrpc/server.pyx.pxi":143
 *       elif self.is_shutdown:
 *         pass
 *       elif not self.is_shutting_down:             # <<<<<<<<<<<<<<
 *         if self.backup_shutdown_queue is None:
 *           raise InternalError('Server shutdown failed: no completion queue.')
 */
    __pyx_t_1 = ((!(__pyx_v_self->is_shutting_down != 0)) != 0);
    if (__pyx_t_1) {

      /* "src/python/grpcio/grpc/_cython/_cygrpc/server.pyx.pxi":144
 *         pass
 *       elif not self.is_shutting_down:
 *         if self.backup_shutdown_queue is None:             # <<<<<<<<<<<<<<
 *           raise InternalError('Server shutdown failed: no completion queue.')
 *         else:
 */
      __pyx_t_1 = (((PyObject *)__pyx_v_self->backup_shutdown_queue) == Py_None);
      __pyx_t_2 = (__pyx_t_1 != 0);
      if (unlikely(__pyx_t_2)) {

        /* "src/python/grpcio/grpc/_cython/_cygrpc/server.pyx.pxi":145
 *       elif not self.is_shutting_down:
 *         if self.backup_shutdown_queue is None:
 *           raise InternalError('Server shutdown failed: no completion queue.')             # <<<<<<<<<<<<<<
 *         else:
 *           # the user didn't call shutdown - use our backup queue
 */
        __Pyx_GetModuleGlobalName(__pyx_t_4, __pyx_n_s_InternalError); if (unlikely(!__pyx_t_4)) __PYX_ERR(23, 145, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_4);
        __pyx_t_5 = NULL;
        if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_4))) {
          __pyx_t_5 = PyMethod_GET_SELF(__pyx_t_4);
          if (likely(__pyx_t_5)) {
            PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_4);
            __Pyx_INCREF(__pyx_t_5);
            __Pyx_INCREF(function);
            __Pyx_DECREF_SET(__pyx_t_4, function);
          }
        }
        __pyx_t_3 = (__pyx_t_5) ? __Pyx_PyObject_Call2Args(__pyx_t_4, __pyx_t_5, __pyx_kp_s_Server_shutdown_failed_no_comple) : __Pyx_PyObject_CallOneArg(__pyx_t_4, __pyx_kp_s_Server_shutdown_failed_no_comple);
        __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0;
        if (unlikely(!__pyx_t_3)) __PYX_ERR(23, 145, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_3);
        __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
        __Pyx_Raise(__pyx_t_3, 0, 0, 0);
        __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
        __PYX_ERR(23, 145, __pyx_L1_error)

        /* "src/python/grpcio/grpc/_cython/_cygrpc/server.pyx.pxi":144
 *         pass
 *       elif not self.is_shutting_down:
 *         if self.backup_shutdown_queue is None:             # <<<<<<<<<<<<<<
 *           raise InternalError('Server shutdown failed: no completion queue.')
 *         else:
 */
      }

      /* "src/python/grpcio/grpc/_cython/_cygrpc/server.pyx.pxi":148
 *         else:
 *           # the user didn't call shutdown - use our backup queue
 *           self._c_shutdown(self.backup_shutdown_queue, None)             # <<<<<<<<<<<<<<
 *           # and now we wait
 *           while not self.is_shutdown:
 */
      /*else*/ {
        __pyx_t_3 = ((PyObject *)__pyx_v_self->backup_shutdown_queue);
        __Pyx_INCREF(__pyx_t_3);
        __pyx_t_4 = ((struct __pyx_vtabstruct_4grpc_7_cython_6cygrpc_Server *)__pyx_v_self->__pyx_vtab)->_c_shutdown(__pyx_v_self, ((struct __pyx_obj_4grpc_7_cython_6cygrpc_CompletionQueue *)__pyx_t_3), Py_None); if (unlikely(!__pyx_t_4)) __PYX_ERR(23, 148, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_4);
        __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
        __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;

        /* "src/python/grpcio/grpc/_cython/_cygrpc/server.pyx.pxi":150
 *           self._c_shutdown(self.backup_shutdown_queue, None)
 *           # and now we wait
 *           while not self.is_shutdown:             # <<<<<<<<<<<<<<
 *             self.backup_shutdown_queue.poll()
 *       else:
 */
        while (1) {
          __pyx_t_2 = ((!(__pyx_v_self->is_shutdown != 0)) != 0);
          if (!__pyx_t_2) break;

          /* "src/python/grpcio/grpc/_cython/_cygrpc/server.pyx.pxi":151
 *           # and now we wait
 *           while not self.is_shutdown:
 *             self.backup_shutdown_queue.poll()             # <<<<<<<<<<<<<<
 *       else:
 *         # We're in the process of shutting down, but have not shutdown; can't do
 */
          __pyx_t_3 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self->backup_shutdown_queue), __pyx_n_s_poll); if (unlikely(!__pyx_t_3)) __PYX_ERR(23, 151, __pyx_L1_error)
          __Pyx_GOTREF(__pyx_t_3);
          __pyx_t_5 = NULL;
          if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_3))) {
            __pyx_t_5 = PyMethod_GET_SELF(__pyx_t_3);
            if (likely(__pyx_t_5)) {
              PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_3);
              __Pyx_INCREF(__pyx_t_5);
              __Pyx_INCREF(function);
              __Pyx_DECREF_SET(__pyx_t_3, function);
            }
          }
          __pyx_t_4 = (__pyx_t_5) ? __Pyx_PyObject_CallOneArg(__pyx_t_3, __pyx_t_5) : __Pyx_PyObject_CallNoArg(__pyx_t_3);
          __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0;
          if (unlikely(!__pyx_t_4)) __PYX_ERR(23, 151, __pyx_L1_error)
          __Pyx_GOTREF(__pyx_t_4);
          __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
          __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
        }
      }

      /* "src/python/grpcio/grpc/_cython/_cygrpc/server.pyx.pxi":143
 *       elif self.is_shutdown:
 *         pass
 *       elif not self.is_shutting_down:             # <<<<<<<<<<<<<<
 *         if self.backup_shutdown_queue is None:
 *           raise InternalError('Server shutdown failed: no completion queue.')
 */
      goto __pyx_L4;
    }

    /* "src/python/grpcio/grpc/_cython/_cygrpc/server.pyx.pxi":155
 *         # We're in the process of shutting down, but have not shutdown; can't do
 *         # much but repeatedly release the GIL and wait
 *         while not self.is_shutdown:             # <<<<<<<<<<<<<<
 *           time.sleep(0)
 *       with nogil:
 */
    /*else*/ {
      while (1) {
        __pyx_t_2 = ((!(__pyx_v_self->is_shutdown != 0)) != 0);
        if (!__pyx_t_2) break;

        /* "src/python/grpcio/grpc/_cython/_cygrpc/server.pyx.pxi":156
 *         # much but repeatedly release the GIL and wait
 *         while not self.is_shutdown:
 *           time.sleep(0)             # <<<<<<<<<<<<<<
 *       with nogil:
 *         grpc_server_destroy(self.c_server)
 */
        __Pyx_GetModuleGlobalName(__pyx_t_3, __pyx_n_s_time); if (unlikely(!__pyx_t_3)) __PYX_ERR(23, 156, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_3);
        __pyx_t_5 = __Pyx_PyObject_GetAttrStr(__pyx_t_3, __pyx_n_s_sleep); if (unlikely(!__pyx_t_5)) __PYX_ERR(23, 156, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_5);
        __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
        __pyx_t_3 = NULL;
        if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_5))) {
          __pyx_t_3 = PyMethod_GET_SELF(__pyx_t_5);
          if (likely(__pyx_t_3)) {
            PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_5);
            __Pyx_INCREF(__pyx_t_3);
            __Pyx_INCREF(function);
            __Pyx_DECREF_SET(__pyx_t_5, function);
          }
        }
        __pyx_t_4 = (__pyx_t_3) ? __Pyx_PyObject_Call2Args(__pyx_t_5, __pyx_t_3, __pyx_int_0) : __Pyx_PyObject_CallOneArg(__pyx_t_5, __pyx_int_0);
        __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0;
        if (unlikely(!__pyx_t_4)) __PYX_ERR(23, 156, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_4);
        __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
        __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
      }
    }
    __pyx_L4:;

    /* "src/python/grpcio/grpc/_cython/_cygrpc/server.pyx.pxi":157
 *         while not self.is_shutdown:
 *           time.sleep(0)
 *       with nogil:             # <<<<<<<<<<<<<<
 *         grpc_server_destroy(self.c_server)
 *         self.c_server = NULL
 */
    {
        #ifdef WITH_THREAD
        PyThreadState *_save;
        Py_UNBLOCK_THREADS
        __Pyx_FastGIL_Remember();
        #endif
        /*try:*/ {

          /* "src/python/grpcio/grpc/_cython/_cygrpc/server.pyx.pxi":158
 *           time.sleep(0)
 *       with nogil:
 *         grpc_server_destroy(self.c_server)             # <<<<<<<<<<<<<<
 *         self.c_server = NULL
 * 
 */
          grpc_server_destroy(__pyx_v_self->c_server);

          /* "src/python/grpcio/grpc/_cython/_cygrpc/server.pyx.pxi":159
 *       with nogil:
 *         grpc_server_destroy(self.c_server)
 *         self.c_server = NULL             # <<<<<<<<<<<<<<
 * 
 *   def __dealloc__(self):
 */
          __pyx_v_self->c_server = NULL;
        }

        /* "src/python/grpcio/grpc/_cython/_cygrpc/server.pyx.pxi":157
 *         while not self.is_shutdown:
 *           time.sleep(0)
 *       with nogil:             # <<<<<<<<<<<<<<
 *         grpc_server_destroy(self.c_server)
 *         self.c_server = NULL
 */
        /*finally:*/ {
          /*normal exit:*/{
            #ifdef WITH_THREAD
            __Pyx_FastGIL_Forget();
            Py_BLOCK_THREADS
            #endif
            goto __pyx_L12;
          }
          __pyx_L12:;
        }
    }

    /* "src/python/grpcio/grpc/_cython/_cygrpc/server.pyx.pxi":138
 *   # backup_shutdown_queue.
 *   def destroy(self):
 *     if self.c_server != NULL:             # <<<<<<<<<<<<<<
 *       if not self.is_started:
 *         pass
 */
  }

  /* "src/python/grpcio/grpc/_cython/_cygrpc/server.pyx.pxi":137
 *   # portion of this is safe to call from __dealloc__, and potentially remove
 *   # backup_shutdown_queue.
 *   def destroy(self):             # <<<<<<<<<<<<<<
 *     if self.c_server != NULL:
 *       if not self.is_started:
 */

  /* function exit code */
  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_3);
  __Pyx_XDECREF(__pyx_t_4);
  __Pyx_XDECREF(__pyx_t_5);
  __Pyx_AddTraceback("grpc._cython.cygrpc.Server.destroy", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "src/python/grpcio/grpc/_cython/_cygrpc/server.pyx.pxi":161
 *         self.c_server = NULL
 * 
 *   def __dealloc__(self):             # <<<<<<<<<<<<<<
 *     if self.c_server == NULL:
 *       grpc_shutdown()
 */

/* Python wrapper */
static void __pyx_pw_4grpc_7_cython_6cygrpc_6Server_17__dealloc__(PyObject *__pyx_v_self); /*proto*/
static void __pyx_pw_4grpc_7_cython_6cygrpc_6Server_17__dealloc__(PyObject *__pyx_v_self) {
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__dealloc__ (wrapper)", 0);
  __pyx_pf_4grpc_7_cython_6cygrpc_6Server_16__dealloc__(((struct __pyx_obj_4grpc_7_cython_6cygrpc_Server *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
}

static void __pyx_pf_4grpc_7_cython_6cygrpc_6Server_16__dealloc__(struct __pyx_obj_4grpc_7_cython_6cygrpc_Server *__pyx_v_self) {
  __Pyx_RefNannyDeclarations
  int __pyx_t_1;
  __Pyx_RefNannySetupContext("__dealloc__", 0);

  /* "src/python/grpcio/grpc/_cython/_cygrpc/server.pyx.pxi":162
 * 
 *   def __dealloc__(self):
 *     if self.c_server == NULL:             # <<<<<<<<<<<<<<
 *       grpc_shutdown()
 */
  __pyx_t_1 = ((__pyx_v_self->c_server == NULL) != 0);
  if (__pyx_t_1) {

    /* "src/python/grpcio/grpc/_cython/_cygrpc/server.pyx.pxi":163
 *   def __dealloc__(self):
 *     if self.c_server == NULL:
 *       grpc_shutdown()             # <<<<<<<<<<<<<<
 */
    grpc_shutdown();

    /* "src/python/grpcio/grpc/_cython/_cygrpc/server.pyx.pxi":162
 * 
 *   def __dealloc__(self):
 *     if self.c_server == NULL:             # <<<<<<<<<<<<<<
 *       grpc_shutdown()
 */
  }

  /* "src/python/grpcio/grpc/_cython/_cygrpc/server.pyx.pxi":161
 *         self.c_server = NULL
 * 
 *   def __dealloc__(self):             # <<<<<<<<<<<<<<
 *     if self.c_server == NULL:
 *       grpc_shutdown()
 */

  /* function exit code */
  __Pyx_RefNannyFinishContext();
}

/* "(tree fragment)":1
 * def __reduce_cython__(self):             # <<<<<<<<<<<<<<
 *     raise TypeError("no default __reduce__ due to non-trivial __cinit__")
 * def __setstate_cython__(self, __pyx_state):
 */

/* Python wrapper */
static PyObject *__pyx_pw_4grpc_7_cython_6cygrpc_6Server_19__reduce_cython__(PyObject *__pyx_v_self, CYTHON_UNUSED PyObject *unused); /*proto*/
static PyObject *__pyx_pw_4grpc_7_cython_6cygrpc_6Server_19__reduce_cython__(PyObject *__pyx_v_self, CYTHON_UNUSED PyObject *unused) {
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__reduce_cython__ (wrapper)", 0);
  __pyx_r = __pyx_pf_4grpc_7_cython_6cygrpc_6Server_18__reduce_cython__(((struct __pyx_obj_4grpc_7_cython_6cygrpc_Server *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_4grpc_7_cython_6cygrpc_6Server_18__reduce_cython__(CYTHON_UNUSED struct __pyx_obj_4grpc_7_cython_6cygrpc_Server *__pyx_v_self) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("__reduce_cython__", 0);

  /* "(tree fragment)":2
 * def __reduce_cython__(self):
 *     raise TypeError("no default __reduce__ due to non-trivial __cinit__")             # <<<<<<<<<<<<<<
 * def __setstate_cython__(self, __pyx_state):
 *     raise TypeError("no default __reduce__ due to non-trivial __cinit__")
 */
  __pyx_t_1 = __Pyx_PyObject_Call(__pyx_builtin_TypeError, __pyx_tuple__107, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(11, 2, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_Raise(__pyx_t_1, 0, 0, 0);
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  __PYX_ERR(11, 2, __pyx_L1_error)

  /* "(tree fragment)":1
 * def __reduce_cython__(self):             # <<<<<<<<<<<<<<
 *     raise TypeError("no default __reduce__ due to non-trivial __cinit__")
 * def __setstate_cython__(self, __pyx_state):
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_AddTraceback("grpc._cython.cygrpc.Server.__reduce_cython__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "(tree fragment)":3
 * def __reduce_cython__(self):
 *     raise TypeError("no default __reduce__ due to non-trivial __cinit__")
 * def __setstate_cython__(self, __pyx_state):             # <<<<<<<<<<<<<<
 *     raise TypeError("no default __reduce__ due to non-trivial __cinit__")
 */

/* Python wrapper */
static PyObject *__pyx_pw_4grpc_7_cython_6cygrpc_6Server_21__setstate_cython__(PyObject *__pyx_v_self, PyObject *__pyx_v___pyx_state); /*proto*/
static PyObject *__pyx_pw_4grpc_7_cython_6cygrpc_6Server_21__setstate_cython__(PyObject *__pyx_v_self, PyObject *__pyx_v___pyx_state) {
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__setstate_cython__ (wrapper)", 0);
  __pyx_r = __pyx_pf_4grpc_7_cython_6cygrpc_6Server_20__setstate_cython__(((struct __pyx_obj_4grpc_7_cython_6cygrpc_Server *)__pyx_v_self), ((PyObject *)__pyx_v___pyx_state));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_4grpc_7_cython_6cygrpc_6Server_20__setstate_cython__(CYTHON_UNUSED struct __pyx_obj_4grpc_7_cython_6cygrpc_Server *__pyx_v_self, CYTHON_UNUSED PyObject *__pyx_v___pyx_state) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("__setstate_cython__", 0);

  /* "(tree fragment)":4
 *     raise TypeError("no default __reduce__ due to non-trivial __cinit__")
 * def __setstate_cython__(self, __pyx_state):
 *     raise TypeError("no default __reduce__ due to non-trivial __cinit__")             # <<<<<<<<<<<<<<
 */
  __pyx_t_1 = __Pyx_PyObject_Call(__pyx_builtin_TypeError, __pyx_tuple__108, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(11, 4, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_Raise(__pyx_t_1, 0, 0, 0);
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  __PYX_ERR(11, 4, __pyx_L1_error)

  /* "(tree fragment)":3
 * def __reduce_cython__(self):
 *     raise TypeError("no default __reduce__ due to non-trivial __cinit__")
 * def __setstate_cython__(self, __pyx_state):             # <<<<<<<<<<<<<<
 *     raise TypeError("no default __reduce__ due to non-trivial __cinit__")
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_AddTraceback("grpc._cython.cygrpc.Server.__setstate_cython__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "src/python/grpcio/grpc/_cython/_cygrpc/tag.pyx.pxi":18
 * cdef class _Tag:
 * 
 *   cdef object event(self, grpc_event c_event):             # <<<<<<<<<<<<<<
 *     raise NotImplementedError()
 * 
 */

static PyObject *__pyx_f_4grpc_7_cython_6cygrpc_4_Tag_event(CYTHON_UNUSED struct __pyx_obj_4grpc_7_cython_6cygrpc__Tag *__pyx_v_self, CYTHON_UNUSED grpc_event __pyx_v_c_event) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("event", 0);

  /* "src/python/grpcio/grpc/_cython/_cygrpc/tag.pyx.pxi":19
 * 
 *   cdef object event(self, grpc_event c_event):
 *     raise NotImplementedError()             # <<<<<<<<<<<<<<
 * 
 * 
 */
  __pyx_t_1 = __Pyx_PyObject_CallNoArg(__pyx_builtin_NotImplementedError); if (unlikely(!__pyx_t_1)) __PYX_ERR(24, 19, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_Raise(__pyx_t_1, 0, 0, 0);
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  __PYX_ERR(24, 19, __pyx_L1_error)

  /* "src/python/grpcio/grpc/_cython/_cygrpc/tag.pyx.pxi":18
 * cdef class _Tag:
 * 
 *   cdef object event(self, grpc_event c_event):             # <<<<<<<<<<<<<<
 *     raise NotImplementedError()
 * 
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_AddTraceback("grpc._cython.cygrpc._Tag.event", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = 0;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "(tree fragment)":1
 * def __reduce_cython__(self):             # <<<<<<<<<<<<<<
 *     cdef tuple state
 *     cdef object _dict
 */

/* Python wrapper */
static PyObject *__pyx_pw_4grpc_7_cython_6cygrpc_4_Tag_1__reduce_cython__(PyObject *__pyx_v_self, CYTHON_UNUSED PyObject *unused); /*proto*/
static PyObject *__pyx_pw_4grpc_7_cython_6cygrpc_4_Tag_1__reduce_cython__(PyObject *__pyx_v_self, CYTHON_UNUSED PyObject *unused) {
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__reduce_cython__ (wrapper)", 0);
  __pyx_r = __pyx_pf_4grpc_7_cython_6cygrpc_4_Tag___reduce_cython__(((struct __pyx_obj_4grpc_7_cython_6cygrpc__Tag *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_4grpc_7_cython_6cygrpc_4_Tag___reduce_cython__(struct __pyx_obj_4grpc_7_cython_6cygrpc__Tag *__pyx_v_self) {
  PyObject *__pyx_v_state = 0;
  PyObject *__pyx_v__dict = 0;
  int __pyx_v_use_setstate;
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  int __pyx_t_2;
  int __pyx_t_3;
  PyObject *__pyx_t_4 = NULL;
  PyObject *__pyx_t_5 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("__reduce_cython__", 0);

  /* "(tree fragment)":5
 *     cdef object _dict
 *     cdef bint use_setstate
 *     state = ()             # <<<<<<<<<<<<<<
 *     _dict = getattr(self, '__dict__', None)
 *     if _dict is not None:
 */
  __Pyx_INCREF(__pyx_empty_tuple);
  __pyx_v_state = __pyx_empty_tuple;

  /* "(tree fragment)":6
 *     cdef bint use_setstate
 *     state = ()
 *     _dict = getattr(self, '__dict__', None)             # <<<<<<<<<<<<<<
 *     if _dict is not None:
 *         state += (_dict,)
 */
  __pyx_t_1 = __Pyx_GetAttr3(((PyObject *)__pyx_v_self), __pyx_n_s_dict, Py_None); if (unlikely(!__pyx_t_1)) __PYX_ERR(11, 6, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_v__dict = __pyx_t_1;
  __pyx_t_1 = 0;

  /* "(tree fragment)":7
 *     state = ()
 *     _dict = getattr(self, '__dict__', None)
 *     if _dict is not None:             # <<<<<<<<<<<<<<
 *         state += (_dict,)
 *         use_setstate = True
 */
  __pyx_t_2 = (__pyx_v__dict != Py_None);
  __pyx_t_3 = (__pyx_t_2 != 0);
  if (__pyx_t_3) {

    /* "(tree fragment)":8
 *     _dict = getattr(self, '__dict__', None)
 *     if _dict is not None:
 *         state += (_dict,)             # <<<<<<<<<<<<<<
 *         use_setstate = True
 *     else:
 */
    __pyx_t_1 = PyTuple_New(1); if (unlikely(!__pyx_t_1)) __PYX_ERR(11, 8, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_1);
    __Pyx_INCREF(__pyx_v__dict);
    __Pyx_GIVEREF(__pyx_v__dict);
    PyTuple_SET_ITEM(__pyx_t_1, 0, __pyx_v__dict);
    __pyx_t_4 = PyNumber_InPlaceAdd(__pyx_v_state, __pyx_t_1); if (unlikely(!__pyx_t_4)) __PYX_ERR(11, 8, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_4);
    __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
    __Pyx_DECREF_SET(__pyx_v_state, ((PyObject*)__pyx_t_4));
    __pyx_t_4 = 0;

    /* "(tree fragment)":9
 *     if _dict is not None:
 *         state += (_dict,)
 *         use_setstate = True             # <<<<<<<<<<<<<<
 *     else:
 *         use_setstate = False
 */
    __pyx_v_use_setstate = 1;

    /* "(tree fragment)":7
 *     state = ()
 *     _dict = getattr(self, '__dict__', None)
 *     if _dict is not None:             # <<<<<<<<<<<<<<
 *         state += (_dict,)
 *         use_setstate = True
 */
    goto __pyx_L3;
  }

  /* "(tree fragment)":11
 *         use_setstate = True
 *     else:
 *         use_setstate = False             # <<<<<<<<<<<<<<
 *     if use_setstate:
 *         return __pyx_unpickle__Tag, (type(self), 0xd41d8cd, None), state
 */
  /*else*/ {
    __pyx_v_use_setstate = 0;
  }
  __pyx_L3:;

  /* "(tree fragment)":12
 *     else:
 *         use_setstate = False
 *     if use_setstate:             # <<<<<<<<<<<<<<
 *         return __pyx_unpickle__Tag, (type(self), 0xd41d8cd, None), state
 *     else:
 */
  __pyx_t_3 = (__pyx_v_use_setstate != 0);
  if (__pyx_t_3) {

    /* "(tree fragment)":13
 *         use_setstate = False
 *     if use_setstate:
 *         return __pyx_unpickle__Tag, (type(self), 0xd41d8cd, None), state             # <<<<<<<<<<<<<<
 *     else:
 *         return __pyx_unpickle__Tag, (type(self), 0xd41d8cd, state)
 */
    __Pyx_XDECREF(__pyx_r);
    __Pyx_GetModuleGlobalName(__pyx_t_4, __pyx_n_s_pyx_unpickle__Tag); if (unlikely(!__pyx_t_4)) __PYX_ERR(11, 13, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_4);
    __pyx_t_1 = PyTuple_New(3); if (unlikely(!__pyx_t_1)) __PYX_ERR(11, 13, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_1);
    __Pyx_INCREF(((PyObject *)Py_TYPE(((PyObject *)__pyx_v_self))));
    __Pyx_GIVEREF(((PyObject *)Py_TYPE(((PyObject *)__pyx_v_self))));
    PyTuple_SET_ITEM(__pyx_t_1, 0, ((PyObject *)Py_TYPE(((PyObject *)__pyx_v_self))));
    __Pyx_INCREF(__pyx_int_222419149);
    __Pyx_GIVEREF(__pyx_int_222419149);
    PyTuple_SET_ITEM(__pyx_t_1, 1, __pyx_int_222419149);
    __Pyx_INCREF(Py_None);
    __Pyx_GIVEREF(Py_None);
    PyTuple_SET_ITEM(__pyx_t_1, 2, Py_None);
    __pyx_t_5 = PyTuple_New(3); if (unlikely(!__pyx_t_5)) __PYX_ERR(11, 13, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_5);
    __Pyx_GIVEREF(__pyx_t_4);
    PyTuple_SET_ITEM(__pyx_t_5, 0, __pyx_t_4);
    __Pyx_GIVEREF(__pyx_t_1);
    PyTuple_SET_ITEM(__pyx_t_5, 1, __pyx_t_1);
    __Pyx_INCREF(__pyx_v_state);
    __Pyx_GIVEREF(__pyx_v_state);
    PyTuple_SET_ITEM(__pyx_t_5, 2, __pyx_v_state);
    __pyx_t_4 = 0;
    __pyx_t_1 = 0;
    __pyx_r = __pyx_t_5;
    __pyx_t_5 = 0;
    goto __pyx_L0;

    /* "(tree fragment)":12
 *     else:
 *         use_setstate = False
 *     if use_setstate:             # <<<<<<<<<<<<<<
 *         return __pyx_unpickle__Tag, (type(self), 0xd41d8cd, None), state
 *     else:
 */
  }

  /* "(tree fragment)":15
 *         return __pyx_unpickle__Tag, (type(self), 0xd41d8cd, None), state
 *     else:
 *         return __pyx_unpickle__Tag, (type(self), 0xd41d8cd, state)             # <<<<<<<<<<<<<<
 * def __setstate_cython__(self, __pyx_state):
 *     __pyx_unpickle__Tag__set_state(self, __pyx_state)
 */
  /*else*/ {
    __Pyx_XDECREF(__pyx_r);
    __Pyx_GetModuleGlobalName(__pyx_t_5, __pyx_n_s_pyx_unpickle__Tag); if (unlikely(!__pyx_t_5)) __PYX_ERR(11, 15, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_5);
    __pyx_t_1 = PyTuple_New(3); if (unlikely(!__pyx_t_1)) __PYX_ERR(11, 15, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_1);
    __Pyx_INCREF(((PyObject *)Py_TYPE(((PyObject *)__pyx_v_self))));
    __Pyx_GIVEREF(((PyObject *)Py_TYPE(((PyObject *)__pyx_v_self))));
    PyTuple_SET_ITEM(__pyx_t_1, 0, ((PyObject *)Py_TYPE(((PyObject *)__pyx_v_self))));
    __Pyx_INCREF(__pyx_int_222419149);
    __Pyx_GIVEREF(__pyx_int_222419149);
    PyTuple_SET_ITEM(__pyx_t_1, 1, __pyx_int_222419149);
    __Pyx_INCREF(__pyx_v_state);
    __Pyx_GIVEREF(__pyx_v_state);
    PyTuple_SET_ITEM(__pyx_t_1, 2, __pyx_v_state);
    __pyx_t_4 = PyTuple_New(2); if (unlikely(!__pyx_t_4)) __PYX_ERR(11, 15, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_4);
    __Pyx_GIVEREF(__pyx_t_5);
    PyTuple_SET_ITEM(__pyx_t_4, 0, __pyx_t_5);
    __Pyx_GIVEREF(__pyx_t_1);
    PyTuple_SET_ITEM(__pyx_t_4, 1, __pyx_t_1);
    __pyx_t_5 = 0;
    __pyx_t_1 = 0;
    __pyx_r = __pyx_t_4;
    __pyx_t_4 = 0;
    goto __pyx_L0;
  }

  /* "(tree fragment)":1
 * def __reduce_cython__(self):             # <<<<<<<<<<<<<<
 *     cdef tuple state
 *     cdef object _dict
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_XDECREF(__pyx_t_4);
  __Pyx_XDECREF(__pyx_t_5);
  __Pyx_AddTraceback("grpc._cython.cygrpc._Tag.__reduce_cython__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XDECREF(__pyx_v_state);
  __Pyx_XDECREF(__pyx_v__dict);
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "(tree fragment)":16
 *     else:
 *         return __pyx_unpickle__Tag, (type(self), 0xd41d8cd, state)
 * def __setstate_cython__(self, __pyx_state):             # <<<<<<<<<<<<<<
 *     __pyx_unpickle__Tag__set_state(self, __pyx_state)
 */

/* Python wrapper */
static PyObject *__pyx_pw_4grpc_7_cython_6cygrpc_4_Tag_3__setstate_cython__(PyObject *__pyx_v_self, PyObject *__pyx_v___pyx_state); /*proto*/
static PyObject *__pyx_pw_4grpc_7_cython_6cygrpc_4_Tag_3__setstate_cython__(PyObject *__pyx_v_self, PyObject *__pyx_v___pyx_state) {
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__setstate_cython__ (wrapper)", 0);
  __pyx_r = __pyx_pf_4grpc_7_cython_6cygrpc_4_Tag_2__setstate_cython__(((struct __pyx_obj_4grpc_7_cython_6cygrpc__Tag *)__pyx_v_self), ((PyObject *)__pyx_v___pyx_state));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_4grpc_7_cython_6cygrpc_4_Tag_2__setstate_cython__(struct __pyx_obj_4grpc_7_cython_6cygrpc__Tag *__pyx_v_self, PyObject *__pyx_v___pyx_state) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("__setstate_cython__", 0);

  /* "(tree fragment)":17
 *         return __pyx_unpickle__Tag, (type(self), 0xd41d8cd, state)
 * def __setstate_cython__(self, __pyx_state):
 *     __pyx_unpickle__Tag__set_state(self, __pyx_state)             # <<<<<<<<<<<<<<
 */
  if (!(likely(PyTuple_CheckExact(__pyx_v___pyx_state))||((__pyx_v___pyx_state) == Py_None)||(PyErr_Format(PyExc_TypeError, "Expected %.16s, got %.200s", "tuple", Py_TYPE(__pyx_v___pyx_state)->tp_name), 0))) __PYX_ERR(11, 17, __pyx_L1_error)
  __pyx_t_1 = __pyx_f_4grpc_7_cython_6cygrpc___pyx_unpickle__Tag__set_state(__pyx_v_self, ((PyObject*)__pyx_v___pyx_state)); if (unlikely(!__pyx_t_1)) __PYX_ERR(11, 17, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;

  /* "(tree fragment)":16
 *     else:
 *         return __pyx_unpickle__Tag, (type(self), 0xd41d8cd, state)
 * def __setstate_cython__(self, __pyx_state):             # <<<<<<<<<<<<<<
 *     __pyx_unpickle__Tag__set_state(self, __pyx_state)
 */

  /* function exit code */
  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_AddTraceback("grpc._cython.cygrpc._Tag.__setstate_cython__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "src/python/grpcio/grpc/_cython/_cygrpc/tag.pyx.pxi":24
 * cdef class _ConnectivityTag(_Tag):
 * 
 *   def __cinit__(self, user_tag):             # <<<<<<<<<<<<<<
 *     self._user_tag = user_tag
 * 
 */

/* Python wrapper */
static int __pyx_pw_4grpc_7_cython_6cygrpc_16_ConnectivityTag_1__cinit__(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
static int __pyx_pw_4grpc_7_cython_6cygrpc_16_ConnectivityTag_1__cinit__(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
  PyObject *__pyx_v_user_tag = 0;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  int __pyx_r;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__cinit__ (wrapper)", 0);
  {
    static PyObject **__pyx_pyargnames[] = {&__pyx_n_s_user_tag,0};
    PyObject* values[1] = {0};
    if (unlikely(__pyx_kwds)) {
      Py_ssize_t kw_args;
      const Py_ssize_t pos_args = PyTuple_GET_SIZE(__pyx_args);
      switch (pos_args) {
        case  1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
        CYTHON_FALLTHROUGH;
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      kw_args = PyDict_Size(__pyx_kwds);
      switch (pos_args) {
        case  0:
        if (likely((values[0] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_user_tag)) != 0)) kw_args--;
        else goto __pyx_L5_argtuple_error;
      }
      if (unlikely(kw_args > 0)) {
        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "__cinit__") < 0)) __PYX_ERR(24, 24, __pyx_L3_error)
      }
    } else if (PyTuple_GET_SIZE(__pyx_args) != 1) {
      goto __pyx_L5_argtuple_error;
    } else {
      values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
    }
    __pyx_v_user_tag = values[0];
  }
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("__cinit__", 1, 1, 1, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(24, 24, __pyx_L3_error)
  __pyx_L3_error:;
  __Pyx_AddTraceback("grpc._cython.cygrpc._ConnectivityTag.__cinit__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return -1;
  __pyx_L4_argument_unpacking_done:;
  __pyx_r = __pyx_pf_4grpc_7_cython_6cygrpc_16_ConnectivityTag___cinit__(((struct __pyx_obj_4grpc_7_cython_6cygrpc__ConnectivityTag *)__pyx_v_self), __pyx_v_user_tag);

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static int __pyx_pf_4grpc_7_cython_6cygrpc_16_ConnectivityTag___cinit__(struct __pyx_obj_4grpc_7_cython_6cygrpc__ConnectivityTag *__pyx_v_self, PyObject *__pyx_v_user_tag) {
  int __pyx_r;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__cinit__", 0);

  /* "src/python/grpcio/grpc/_cython/_cygrpc/tag.pyx.pxi":25
 * 
 *   def __cinit__(self, user_tag):
 *     self._user_tag = user_tag             # <<<<<<<<<<<<<<
 * 
 *   cdef ConnectivityEvent event(self, grpc_event c_event):
 */
  __Pyx_INCREF(__pyx_v_user_tag);
  __Pyx_GIVEREF(__pyx_v_user_tag);
  __Pyx_GOTREF(__pyx_v_self->_user_tag);
  __Pyx_DECREF(__pyx_v_self->_user_tag);
  __pyx_v_self->_user_tag = __pyx_v_user_tag;

  /* "src/python/grpcio/grpc/_cython/_cygrpc/tag.pyx.pxi":24
 * cdef class _ConnectivityTag(_Tag):
 * 
 *   def __cinit__(self, user_tag):             # <<<<<<<<<<<<<<
 *     self._user_tag = user_tag
 * 
 */

  /* function exit code */
  __pyx_r = 0;
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "src/python/grpcio/grpc/_cython/_cygrpc/tag.pyx.pxi":27
 *     self._user_tag = user_tag
 * 
 *   cdef ConnectivityEvent event(self, grpc_event c_event):             # <<<<<<<<<<<<<<
 *     return ConnectivityEvent(c_event.type, c_event.success, self._user_tag)
 * 
 */

struct __pyx_obj_4grpc_7_cython_6cygrpc_ConnectivityEvent *__pyx_f_4grpc_7_cython_6cygrpc_16_ConnectivityTag_event(struct __pyx_obj_4grpc_7_cython_6cygrpc__ConnectivityTag *__pyx_v_self, grpc_event __pyx_v_c_event) {
  struct __pyx_obj_4grpc_7_cython_6cygrpc_ConnectivityEvent *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  PyObject *__pyx_t_2 = NULL;
  PyObject *__pyx_t_3 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("event", 0);

  /* "src/python/grpcio/grpc/_cython/_cygrpc/tag.pyx.pxi":28
 * 
 *   cdef ConnectivityEvent event(self, grpc_event c_event):
 *     return ConnectivityEvent(c_event.type, c_event.success, self._user_tag)             # <<<<<<<<<<<<<<
 * 
 * 
 */
  __Pyx_XDECREF(((PyObject *)__pyx_r));
  __pyx_t_1 = __Pyx_PyInt_From_grpc_completion_type(__pyx_v_c_event.type); if (unlikely(!__pyx_t_1)) __PYX_ERR(24, 28, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_t_2 = __Pyx_PyInt_From_int(__pyx_v_c_event.success); if (unlikely(!__pyx_t_2)) __PYX_ERR(24, 28, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __pyx_t_3 = PyTuple_New(3); if (unlikely(!__pyx_t_3)) __PYX_ERR(24, 28, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  __Pyx_GIVEREF(__pyx_t_1);
  PyTuple_SET_ITEM(__pyx_t_3, 0, __pyx_t_1);
  __Pyx_GIVEREF(__pyx_t_2);
  PyTuple_SET_ITEM(__pyx_t_3, 1, __pyx_t_2);
  __Pyx_INCREF(__pyx_v_self->_user_tag);
  __Pyx_GIVEREF(__pyx_v_self->_user_tag);
  PyTuple_SET_ITEM(__pyx_t_3, 2, __pyx_v_self->_user_tag);
  __pyx_t_1 = 0;
  __pyx_t_2 = 0;
  __pyx_t_2 = __Pyx_PyObject_Call(((PyObject *)__pyx_ptype_4grpc_7_cython_6cygrpc_ConnectivityEvent), __pyx_t_3, NULL); if (unlikely(!__pyx_t_2)) __PYX_ERR(24, 28, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
  __pyx_r = ((struct __pyx_obj_4grpc_7_cython_6cygrpc_ConnectivityEvent *)__pyx_t_2);
  __pyx_t_2 = 0;
  goto __pyx_L0;

  /* "src/python/grpcio/grpc/_cython/_cygrpc/tag.pyx.pxi":27
 *     self._user_tag = user_tag
 * 
 *   cdef ConnectivityEvent event(self, grpc_event c_event):             # <<<<<<<<<<<<<<
 *     return ConnectivityEvent(c_event.type, c_event.success, self._user_tag)
 * 
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_XDECREF(__pyx_t_3);
  __Pyx_AddTraceback("grpc._cython.cygrpc._ConnectivityTag.event", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = 0;
  __pyx_L0:;
  __Pyx_XGIVEREF((PyObject *)__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

struct __pyx_obj_4grpc_7_cython_6cygrpc_ConnectivityEvent *__pyx_f_4grpc_7_cython_6cygrpc_16_ConnectivityTag_event__pyx_wrap_1(struct __pyx_obj_4grpc_7_cython_6cygrpc__ConnectivityTag *__pyx_v_self, grpc_event __pyx_v_c_event) {
  return __pyx_f_4grpc_7_cython_6cygrpc_16_ConnectivityTag_event(__pyx_v_self, __pyx_v_c_event);
}

/* "src/python/grpcio/grpc/_cython/_cygrpc/tag.pxd.pxi":23
 * cdef class _ConnectivityTag(_Tag):
 * 
 *   cdef readonly object _user_tag             # <<<<<<<<<<<<<<
 * 
 *   cdef ConnectivityEvent event(self, grpc_event c_event)
 */

/* Python wrapper */
static PyObject *__pyx_pw_4grpc_7_cython_6cygrpc_16_ConnectivityTag_9_user_tag_1__get__(PyObject *__pyx_v_self); /*proto*/
static PyObject *__pyx_pw_4grpc_7_cython_6cygrpc_16_ConnectivityTag_9_user_tag_1__get__(PyObject *__pyx_v_self) {
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__get__ (wrapper)", 0);
  __pyx_r = __pyx_pf_4grpc_7_cython_6cygrpc_16_ConnectivityTag_9_user_tag___get__(((struct __pyx_obj_4grpc_7_cython_6cygrpc__ConnectivityTag *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_4grpc_7_cython_6cygrpc_16_ConnectivityTag_9_user_tag___get__(struct __pyx_obj_4grpc_7_cython_6cygrpc__ConnectivityTag *__pyx_v_self) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__get__", 0);
  __Pyx_XDECREF(__pyx_r);
  __Pyx_INCREF(__pyx_v_self->_user_tag);
  __pyx_r = __pyx_v_self->_user_tag;
  goto __pyx_L0;

  /* function exit code */
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "(tree fragment)":1
 * def __reduce_cython__(self):             # <<<<<<<<<<<<<<
 *     raise TypeError("no default __reduce__ due to non-trivial __cinit__")
 * def __setstate_cython__(self, __pyx_state):
 */

/* Python wrapper */
static PyObject *__pyx_pw_4grpc_7_cython_6cygrpc_16_ConnectivityTag_3__reduce_cython__(PyObject *__pyx_v_self, CYTHON_UNUSED PyObject *unused); /*proto*/
static PyObject *__pyx_pw_4grpc_7_cython_6cygrpc_16_ConnectivityTag_3__reduce_cython__(PyObject *__pyx_v_self, CYTHON_UNUSED PyObject *unused) {
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__reduce_cython__ (wrapper)", 0);
  __pyx_r = __pyx_pf_4grpc_7_cython_6cygrpc_16_ConnectivityTag_2__reduce_cython__(((struct __pyx_obj_4grpc_7_cython_6cygrpc__ConnectivityTag *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_4grpc_7_cython_6cygrpc_16_ConnectivityTag_2__reduce_cython__(CYTHON_UNUSED struct __pyx_obj_4grpc_7_cython_6cygrpc__ConnectivityTag *__pyx_v_self) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("__reduce_cython__", 0);

  /* "(tree fragment)":2
 * def __reduce_cython__(self):
 *     raise TypeError("no default __reduce__ due to non-trivial __cinit__")             # <<<<<<<<<<<<<<
 * def __setstate_cython__(self, __pyx_state):
 *     raise TypeError("no default __reduce__ due to non-trivial __cinit__")
 */
  __pyx_t_1 = __Pyx_PyObject_Call(__pyx_builtin_TypeError, __pyx_tuple__109, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(11, 2, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_Raise(__pyx_t_1, 0, 0, 0);
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  __PYX_ERR(11, 2, __pyx_L1_error)

  /* "(tree fragment)":1
 * def __reduce_cython__(self):             # <<<<<<<<<<<<<<
 *     raise TypeError("no default __reduce__ due to non-trivial __cinit__")
 * def __setstate_cython__(self, __pyx_state):
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_AddTraceback("grpc._cython.cygrpc._ConnectivityTag.__reduce_cython__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "(tree fragment)":3
 * def __reduce_cython__(self):
 *     raise TypeError("no default __reduce__ due to non-trivial __cinit__")
 * def __setstate_cython__(self, __pyx_state):             # <<<<<<<<<<<<<<
 *     raise TypeError("no default __reduce__ due to non-trivial __cinit__")
 */

/* Python wrapper */
static PyObject *__pyx_pw_4grpc_7_cython_6cygrpc_16_ConnectivityTag_5__setstate_cython__(PyObject *__pyx_v_self, PyObject *__pyx_v___pyx_state); /*proto*/
static PyObject *__pyx_pw_4grpc_7_cython_6cygrpc_16_ConnectivityTag_5__setstate_cython__(PyObject *__pyx_v_self, PyObject *__pyx_v___pyx_state) {
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__setstate_cython__ (wrapper)", 0);
  __pyx_r = __pyx_pf_4grpc_7_cython_6cygrpc_16_ConnectivityTag_4__setstate_cython__(((struct __pyx_obj_4grpc_7_cython_6cygrpc__ConnectivityTag *)__pyx_v_self), ((PyObject *)__pyx_v___pyx_state));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_4grpc_7_cython_6cygrpc_16_ConnectivityTag_4__setstate_cython__(CYTHON_UNUSED struct __pyx_obj_4grpc_7_cython_6cygrpc__ConnectivityTag *__pyx_v_self, CYTHON_UNUSED PyObject *__pyx_v___pyx_state) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("__setstate_cython__", 0);

  /* "(tree fragment)":4
 *     raise TypeError("no default __reduce__ due to non-trivial __cinit__")
 * def __setstate_cython__(self, __pyx_state):
 *     raise TypeError("no default __reduce__ due to non-trivial __cinit__")             # <<<<<<<<<<<<<<
 */
  __pyx_t_1 = __Pyx_PyObject_Call(__pyx_builtin_TypeError, __pyx_tuple__110, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(11, 4, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_Raise(__pyx_t_1, 0, 0, 0);
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  __PYX_ERR(11, 4, __pyx_L1_error)

  /* "(tree fragment)":3
 * def __reduce_cython__(self):
 *     raise TypeError("no default __reduce__ due to non-trivial __cinit__")
 * def __setstate_cython__(self, __pyx_state):             # <<<<<<<<<<<<<<
 *     raise TypeError("no default __reduce__ due to non-trivial __cinit__")
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_AddTraceback("grpc._cython.cygrpc._ConnectivityTag.__setstate_cython__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "src/python/grpcio/grpc/_cython/_cygrpc/tag.pyx.pxi":33
 * cdef class _RequestCallTag(_Tag):
 * 
 *   def __cinit__(self, user_tag):             # <<<<<<<<<<<<<<
 *     self._user_tag = user_tag
 *     self.call = None
 */

/* Python wrapper */
static int __pyx_pw_4grpc_7_cython_6cygrpc_15_RequestCallTag_1__cinit__(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
static int __pyx_pw_4grpc_7_cython_6cygrpc_15_RequestCallTag_1__cinit__(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
  PyObject *__pyx_v_user_tag = 0;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  int __pyx_r;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__cinit__ (wrapper)", 0);
  {
    static PyObject **__pyx_pyargnames[] = {&__pyx_n_s_user_tag,0};
    PyObject* values[1] = {0};
    if (unlikely(__pyx_kwds)) {
      Py_ssize_t kw_args;
      const Py_ssize_t pos_args = PyTuple_GET_SIZE(__pyx_args);
      switch (pos_args) {
        case  1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
        CYTHON_FALLTHROUGH;
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      kw_args = PyDict_Size(__pyx_kwds);
      switch (pos_args) {
        case  0:
        if (likely((values[0] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_user_tag)) != 0)) kw_args--;
        else goto __pyx_L5_argtuple_error;
      }
      if (unlikely(kw_args > 0)) {
        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "__cinit__") < 0)) __PYX_ERR(24, 33, __pyx_L3_error)
      }
    } else if (PyTuple_GET_SIZE(__pyx_args) != 1) {
      goto __pyx_L5_argtuple_error;
    } else {
      values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
    }
    __pyx_v_user_tag = values[0];
  }
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("__cinit__", 1, 1, 1, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(24, 33, __pyx_L3_error)
  __pyx_L3_error:;
  __Pyx_AddTraceback("grpc._cython.cygrpc._RequestCallTag.__cinit__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return -1;
  __pyx_L4_argument_unpacking_done:;
  __pyx_r = __pyx_pf_4grpc_7_cython_6cygrpc_15_RequestCallTag___cinit__(((struct __pyx_obj_4grpc_7_cython_6cygrpc__RequestCallTag *)__pyx_v_self), __pyx_v_user_tag);

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static int __pyx_pf_4grpc_7_cython_6cygrpc_15_RequestCallTag___cinit__(struct __pyx_obj_4grpc_7_cython_6cygrpc__RequestCallTag *__pyx_v_self, PyObject *__pyx_v_user_tag) {
  int __pyx_r;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__cinit__", 0);

  /* "src/python/grpcio/grpc/_cython/_cygrpc/tag.pyx.pxi":34
 * 
 *   def __cinit__(self, user_tag):
 *     self._user_tag = user_tag             # <<<<<<<<<<<<<<
 *     self.call = None
 *     self.call_details = None
 */
  __Pyx_INCREF(__pyx_v_user_tag);
  __Pyx_GIVEREF(__pyx_v_user_tag);
  __Pyx_GOTREF(__pyx_v_self->_user_tag);
  __Pyx_DECREF(__pyx_v_self->_user_tag);
  __pyx_v_self->_user_tag = __pyx_v_user_tag;

  /* "src/python/grpcio/grpc/_cython/_cygrpc/tag.pyx.pxi":35
 *   def __cinit__(self, user_tag):
 *     self._user_tag = user_tag
 *     self.call = None             # <<<<<<<<<<<<<<
 *     self.call_details = None
 * 
 */
  __Pyx_INCREF(Py_None);
  __Pyx_GIVEREF(Py_None);
  __Pyx_GOTREF(__pyx_v_self->call);
  __Pyx_DECREF(((PyObject *)__pyx_v_self->call));
  __pyx_v_self->call = ((struct __pyx_obj_4grpc_7_cython_6cygrpc_Call *)Py_None);

  /* "src/python/grpcio/grpc/_cython/_cygrpc/tag.pyx.pxi":36
 *     self._user_tag = user_tag
 *     self.call = None
 *     self.call_details = None             # <<<<<<<<<<<<<<
 * 
 *   cdef void prepare(self) except *:
 */
  __Pyx_INCREF(Py_None);
  __Pyx_GIVEREF(Py_None);
  __Pyx_GOTREF(__pyx_v_self->call_details);
  __Pyx_DECREF(((PyObject *)__pyx_v_self->call_details));
  __pyx_v_self->call_details = ((struct __pyx_obj_4grpc_7_cython_6cygrpc_CallDetails *)Py_None);

  /* "src/python/grpcio/grpc/_cython/_cygrpc/tag.pyx.pxi":33
 * cdef class _RequestCallTag(_Tag):
 * 
 *   def __cinit__(self, user_tag):             # <<<<<<<<<<<<<<
 *     self._user_tag = user_tag
 *     self.call = None
 */

  /* function exit code */
  __pyx_r = 0;
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "src/python/grpcio/grpc/_cython/_cygrpc/tag.pyx.pxi":38
 *     self.call_details = None
 * 
 *   cdef void prepare(self) except *:             # <<<<<<<<<<<<<<
 *     self.call = Call()
 *     self.call_details = CallDetails()
 */

static void __pyx_f_4grpc_7_cython_6cygrpc_15_RequestCallTag_prepare(struct __pyx_obj_4grpc_7_cython_6cygrpc__RequestCallTag *__pyx_v_self) {
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("prepare", 0);

  /* "src/python/grpcio/grpc/_cython/_cygrpc/tag.pyx.pxi":39
 * 
 *   cdef void prepare(self) except *:
 *     self.call = Call()             # <<<<<<<<<<<<<<
 *     self.call_details = CallDetails()
 *     grpc_metadata_array_init(&self.c_invocation_metadata)
 */
  __pyx_t_1 = __Pyx_PyObject_CallNoArg(((PyObject *)__pyx_ptype_4grpc_7_cython_6cygrpc_Call)); if (unlikely(!__pyx_t_1)) __PYX_ERR(24, 39, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_GIVEREF(__pyx_t_1);
  __Pyx_GOTREF(__pyx_v_self->call);
  __Pyx_DECREF(((PyObject *)__pyx_v_self->call));
  __pyx_v_self->call = ((struct __pyx_obj_4grpc_7_cython_6cygrpc_Call *)__pyx_t_1);
  __pyx_t_1 = 0;

  /* "src/python/grpcio/grpc/_cython/_cygrpc/tag.pyx.pxi":40
 *   cdef void prepare(self) except *:
 *     self.call = Call()
 *     self.call_details = CallDetails()             # <<<<<<<<<<<<<<
 *     grpc_metadata_array_init(&self.c_invocation_metadata)
 * 
 */
  __pyx_t_1 = __Pyx_PyObject_CallNoArg(((PyObject *)__pyx_ptype_4grpc_7_cython_6cygrpc_CallDetails)); if (unlikely(!__pyx_t_1)) __PYX_ERR(24, 40, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_GIVEREF(__pyx_t_1);
  __Pyx_GOTREF(__pyx_v_self->call_details);
  __Pyx_DECREF(((PyObject *)__pyx_v_self->call_details));
  __pyx_v_self->call_details = ((struct __pyx_obj_4grpc_7_cython_6cygrpc_CallDetails *)__pyx_t_1);
  __pyx_t_1 = 0;

  /* "src/python/grpcio/grpc/_cython/_cygrpc/tag.pyx.pxi":41
 *     self.call = Call()
 *     self.call_details = CallDetails()
 *     grpc_metadata_array_init(&self.c_invocation_metadata)             # <<<<<<<<<<<<<<
 * 
 *   cdef RequestCallEvent event(self, grpc_event c_event):
 */
  grpc_metadata_array_init((&__pyx_v_self->c_invocation_metadata));

  /* "src/python/grpcio/grpc/_cython/_cygrpc/tag.pyx.pxi":38
 *     self.call_details = None
 * 
 *   cdef void prepare(self) except *:             # <<<<<<<<<<<<<<
 *     self.call = Call()
 *     self.call_details = CallDetails()
 */

  /* function exit code */
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_AddTraceback("grpc._cython.cygrpc._RequestCallTag.prepare", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_L0:;
  __Pyx_RefNannyFinishContext();
}

/* "src/python/grpcio/grpc/_cython/_cygrpc/tag.pyx.pxi":43
 *     grpc_metadata_array_init(&self.c_invocation_metadata)
 * 
 *   cdef RequestCallEvent event(self, grpc_event c_event):             # <<<<<<<<<<<<<<
 *     cdef tuple invocation_metadata = _metadata(&self.c_invocation_metadata)
 *     grpc_metadata_array_destroy(&self.c_invocation_metadata)
 */

struct __pyx_obj_4grpc_7_cython_6cygrpc_RequestCallEvent *__pyx_f_4grpc_7_cython_6cygrpc_15_RequestCallTag_event(struct __pyx_obj_4grpc_7_cython_6cygrpc__RequestCallTag *__pyx_v_self, grpc_event __pyx_v_c_event) {
  PyObject *__pyx_v_invocation_metadata = 0;
  struct __pyx_obj_4grpc_7_cython_6cygrpc_RequestCallEvent *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  PyObject *__pyx_t_2 = NULL;
  PyObject *__pyx_t_3 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("event", 0);

  /* "src/python/grpcio/grpc/_cython/_cygrpc/tag.pyx.pxi":44
 * 
 *   cdef RequestCallEvent event(self, grpc_event c_event):
 *     cdef tuple invocation_metadata = _metadata(&self.c_invocation_metadata)             # <<<<<<<<<<<<<<
 *     grpc_metadata_array_destroy(&self.c_invocation_metadata)
 *     return RequestCallEvent(
 */
  __pyx_t_1 = __pyx_f_4grpc_7_cython_6cygrpc__metadata((&__pyx_v_self->c_invocation_metadata)); if (unlikely(!__pyx_t_1)) __PYX_ERR(24, 44, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_v_invocation_metadata = ((PyObject*)__pyx_t_1);
  __pyx_t_1 = 0;

  /* "src/python/grpcio/grpc/_cython/_cygrpc/tag.pyx.pxi":45
 *   cdef RequestCallEvent event(self, grpc_event c_event):
 *     cdef tuple invocation_metadata = _metadata(&self.c_invocation_metadata)
 *     grpc_metadata_array_destroy(&self.c_invocation_metadata)             # <<<<<<<<<<<<<<
 *     return RequestCallEvent(
 *         c_event.type, c_event.success, self._user_tag, self.call,
 */
  grpc_metadata_array_destroy((&__pyx_v_self->c_invocation_metadata));

  /* "src/python/grpcio/grpc/_cython/_cygrpc/tag.pyx.pxi":46
 *     cdef tuple invocation_metadata = _metadata(&self.c_invocation_metadata)
 *     grpc_metadata_array_destroy(&self.c_invocation_metadata)
 *     return RequestCallEvent(             # <<<<<<<<<<<<<<
 *         c_event.type, c_event.success, self._user_tag, self.call,
 *         self.call_details, invocation_metadata)
 */
  __Pyx_XDECREF(((PyObject *)__pyx_r));

  /* "src/python/grpcio/grpc/_cython/_cygrpc/tag.pyx.pxi":47
 *     grpc_metadata_array_destroy(&self.c_invocation_metadata)
 *     return RequestCallEvent(
 *         c_event.type, c_event.success, self._user_tag, self.call,             # <<<<<<<<<<<<<<
 *         self.call_details, invocation_metadata)
 * 
 */
  __pyx_t_1 = __Pyx_PyInt_From_grpc_completion_type(__pyx_v_c_event.type); if (unlikely(!__pyx_t_1)) __PYX_ERR(24, 47, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_t_2 = __Pyx_PyInt_From_int(__pyx_v_c_event.success); if (unlikely(!__pyx_t_2)) __PYX_ERR(24, 47, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);

  /* "src/python/grpcio/grpc/_cython/_cygrpc/tag.pyx.pxi":46
 *     cdef tuple invocation_metadata = _metadata(&self.c_invocation_metadata)
 *     grpc_metadata_array_destroy(&self.c_invocation_metadata)
 *     return RequestCallEvent(             # <<<<<<<<<<<<<<
 *         c_event.type, c_event.success, self._user_tag, self.call,
 *         self.call_details, invocation_metadata)
 */
  __pyx_t_3 = PyTuple_New(6); if (unlikely(!__pyx_t_3)) __PYX_ERR(24, 46, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  __Pyx_GIVEREF(__pyx_t_1);
  PyTuple_SET_ITEM(__pyx_t_3, 0, __pyx_t_1);
  __Pyx_GIVEREF(__pyx_t_2);
  PyTuple_SET_ITEM(__pyx_t_3, 1, __pyx_t_2);
  __Pyx_INCREF(__pyx_v_self->_user_tag);
  __Pyx_GIVEREF(__pyx_v_self->_user_tag);
  PyTuple_SET_ITEM(__pyx_t_3, 2, __pyx_v_self->_user_tag);
  __Pyx_INCREF(((PyObject *)__pyx_v_self->call));
  __Pyx_GIVEREF(((PyObject *)__pyx_v_self->call));
  PyTuple_SET_ITEM(__pyx_t_3, 3, ((PyObject *)__pyx_v_self->call));
  __Pyx_INCREF(((PyObject *)__pyx_v_self->call_details));
  __Pyx_GIVEREF(((PyObject *)__pyx_v_self->call_details));
  PyTuple_SET_ITEM(__pyx_t_3, 4, ((PyObject *)__pyx_v_self->call_details));
  __Pyx_INCREF(__pyx_v_invocation_metadata);
  __Pyx_GIVEREF(__pyx_v_invocation_metadata);
  PyTuple_SET_ITEM(__pyx_t_3, 5, __pyx_v_invocation_metadata);
  __pyx_t_1 = 0;
  __pyx_t_2 = 0;
  __pyx_t_2 = __Pyx_PyObject_Call(((PyObject *)__pyx_ptype_4grpc_7_cython_6cygrpc_RequestCallEvent), __pyx_t_3, NULL); if (unlikely(!__pyx_t_2)) __PYX_ERR(24, 46, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
  __pyx_r = ((struct __pyx_obj_4grpc_7_cython_6cygrpc_RequestCallEvent *)__pyx_t_2);
  __pyx_t_2 = 0;
  goto __pyx_L0;

  /* "src/python/grpcio/grpc/_cython/_cygrpc/tag.pyx.pxi":43
 *     grpc_metadata_array_init(&self.c_invocation_metadata)
 * 
 *   cdef RequestCallEvent event(self, grpc_event c_event):             # <<<<<<<<<<<<<<
 *     cdef tuple invocation_metadata = _metadata(&self.c_invocation_metadata)
 *     grpc_metadata_array_destroy(&self.c_invocation_metadata)
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_XDECREF(__pyx_t_3);
  __Pyx_AddTraceback("grpc._cython.cygrpc._RequestCallTag.event", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = 0;
  __pyx_L0:;
  __Pyx_XDECREF(__pyx_v_invocation_metadata);
  __Pyx_XGIVEREF((PyObject *)__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

struct __pyx_obj_4grpc_7_cython_6cygrpc_RequestCallEvent *__pyx_f_4grpc_7_cython_6cygrpc_15_RequestCallTag_event__pyx_wrap_1(struct __pyx_obj_4grpc_7_cython_6cygrpc__RequestCallTag *__pyx_v_self, grpc_event __pyx_v_c_event) {
  return __pyx_f_4grpc_7_cython_6cygrpc_15_RequestCallTag_event(__pyx_v_self, __pyx_v_c_event);
}

/* "src/python/grpcio/grpc/_cython/_cygrpc/tag.pxd.pxi":30
 * cdef class _RequestCallTag(_Tag):
 * 
 *   cdef readonly object _user_tag             # <<<<<<<<<<<<<<
 *   cdef Call call
 *   cdef CallDetails call_details
 */

/* Python wrapper */
static PyObject *__pyx_pw_4grpc_7_cython_6cygrpc_15_RequestCallTag_9_user_tag_1__get__(PyObject *__pyx_v_self); /*proto*/
static PyObject *__pyx_pw_4grpc_7_cython_6cygrpc_15_RequestCallTag_9_user_tag_1__get__(PyObject *__pyx_v_self) {
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__get__ (wrapper)", 0);
  __pyx_r = __pyx_pf_4grpc_7_cython_6cygrpc_15_RequestCallTag_9_user_tag___get__(((struct __pyx_obj_4grpc_7_cython_6cygrpc__RequestCallTag *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_4grpc_7_cython_6cygrpc_15_RequestCallTag_9_user_tag___get__(struct __pyx_obj_4grpc_7_cython_6cygrpc__RequestCallTag *__pyx_v_self) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__get__", 0);
  __Pyx_XDECREF(__pyx_r);
  __Pyx_INCREF(__pyx_v_self->_user_tag);
  __pyx_r = __pyx_v_self->_user_tag;
  goto __pyx_L0;

  /* function exit code */
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "(tree fragment)":1
 * def __reduce_cython__(self):             # <<<<<<<<<<<<<<
 *     raise TypeError("no default __reduce__ due to non-trivial __cinit__")
 * def __setstate_cython__(self, __pyx_state):
 */

/* Python wrapper */
static PyObject *__pyx_pw_4grpc_7_cython_6cygrpc_15_RequestCallTag_3__reduce_cython__(PyObject *__pyx_v_self, CYTHON_UNUSED PyObject *unused); /*proto*/
static PyObject *__pyx_pw_4grpc_7_cython_6cygrpc_15_RequestCallTag_3__reduce_cython__(PyObject *__pyx_v_self, CYTHON_UNUSED PyObject *unused) {
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__reduce_cython__ (wrapper)", 0);
  __pyx_r = __pyx_pf_4grpc_7_cython_6cygrpc_15_RequestCallTag_2__reduce_cython__(((struct __pyx_obj_4grpc_7_cython_6cygrpc__RequestCallTag *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_4grpc_7_cython_6cygrpc_15_RequestCallTag_2__reduce_cython__(CYTHON_UNUSED struct __pyx_obj_4grpc_7_cython_6cygrpc__RequestCallTag *__pyx_v_self) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("__reduce_cython__", 0);

  /* "(tree fragment)":2
 * def __reduce_cython__(self):
 *     raise TypeError("no default __reduce__ due to non-trivial __cinit__")             # <<<<<<<<<<<<<<
 * def __setstate_cython__(self, __pyx_state):
 *     raise TypeError("no default __reduce__ due to non-trivial __cinit__")
 */
  __pyx_t_1 = __Pyx_PyObject_Call(__pyx_builtin_TypeError, __pyx_tuple__111, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(11, 2, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_Raise(__pyx_t_1, 0, 0, 0);
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  __PYX_ERR(11, 2, __pyx_L1_error)

  /* "(tree fragment)":1
 * def __reduce_cython__(self):             # <<<<<<<<<<<<<<
 *     raise TypeError("no default __reduce__ due to non-trivial __cinit__")
 * def __setstate_cython__(self, __pyx_state):
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_AddTraceback("grpc._cython.cygrpc._RequestCallTag.__reduce_cython__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "(tree fragment)":3
 * def __reduce_cython__(self):
 *     raise TypeError("no default __reduce__ due to non-trivial __cinit__")
 * def __setstate_cython__(self, __pyx_state):             # <<<<<<<<<<<<<<
 *     raise TypeError("no default __reduce__ due to non-trivial __cinit__")
 */

/* Python wrapper */
static PyObject *__pyx_pw_4grpc_7_cython_6cygrpc_15_RequestCallTag_5__setstate_cython__(PyObject *__pyx_v_self, PyObject *__pyx_v___pyx_state); /*proto*/
static PyObject *__pyx_pw_4grpc_7_cython_6cygrpc_15_RequestCallTag_5__setstate_cython__(PyObject *__pyx_v_self, PyObject *__pyx_v___pyx_state) {
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__setstate_cython__ (wrapper)", 0);
  __pyx_r = __pyx_pf_4grpc_7_cython_6cygrpc_15_RequestCallTag_4__setstate_cython__(((struct __pyx_obj_4grpc_7_cython_6cygrpc__RequestCallTag *)__pyx_v_self), ((PyObject *)__pyx_v___pyx_state));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_4grpc_7_cython_6cygrpc_15_RequestCallTag_4__setstate_cython__(CYTHON_UNUSED struct __pyx_obj_4grpc_7_cython_6cygrpc__RequestCallTag *__pyx_v_self, CYTHON_UNUSED PyObject *__pyx_v___pyx_state) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("__setstate_cython__", 0);

  /* "(tree fragment)":4
 *     raise TypeError("no default __reduce__ due to non-trivial __cinit__")
 * def __setstate_cython__(self, __pyx_state):
 *     raise TypeError("no default __reduce__ due to non-trivial __cinit__")             # <<<<<<<<<<<<<<
 */
  __pyx_t_1 = __Pyx_PyObject_Call(__pyx_builtin_TypeError, __pyx_tuple__112, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(11, 4, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_Raise(__pyx_t_1, 0, 0, 0);
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  __PYX_ERR(11, 4, __pyx_L1_error)

  /* "(tree fragment)":3
 * def __reduce_cython__(self):
 *     raise TypeError("no default __reduce__ due to non-trivial __cinit__")
 * def __setstate_cython__(self, __pyx_state):             # <<<<<<<<<<<<<<
 *     raise TypeError("no default __reduce__ due to non-trivial __cinit__")
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_AddTraceback("grpc._cython.cygrpc._RequestCallTag.__setstate_cython__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "src/python/grpcio/grpc/_cython/_cygrpc/tag.pyx.pxi":53
 * cdef class _BatchOperationTag:
 * 
 *   def __cinit__(self, user_tag, operations, call):             # <<<<<<<<<<<<<<
 *     self._user_tag = user_tag
 *     self._operations = operations
 */

/* Python wrapper */
static int __pyx_pw_4grpc_7_cython_6cygrpc_18_BatchOperationTag_1__cinit__(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
static int __pyx_pw_4grpc_7_cython_6cygrpc_18_BatchOperationTag_1__cinit__(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
  PyObject *__pyx_v_user_tag = 0;
  PyObject *__pyx_v_operations = 0;
  PyObject *__pyx_v_call = 0;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  int __pyx_r;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__cinit__ (wrapper)", 0);
  {
    static PyObject **__pyx_pyargnames[] = {&__pyx_n_s_user_tag,&__pyx_n_s_operations,&__pyx_n_s_call,0};
    PyObject* values[3] = {0,0,0};
    if (unlikely(__pyx_kwds)) {
      Py_ssize_t kw_args;
      const Py_ssize_t pos_args = PyTuple_GET_SIZE(__pyx_args);
      switch (pos_args) {
        case  3: values[2] = PyTuple_GET_ITEM(__pyx_args, 2);
        CYTHON_FALLTHROUGH;
        case  2: values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
        CYTHON_FALLTHROUGH;
        case  1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
        CYTHON_FALLTHROUGH;
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      kw_args = PyDict_Size(__pyx_kwds);
      switch (pos_args) {
        case  0:
        if (likely((values[0] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_user_tag)) != 0)) kw_args--;
        else goto __pyx_L5_argtuple_error;
        CYTHON_FALLTHROUGH;
        case  1:
        if (likely((values[1] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_operations)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("__cinit__", 1, 3, 3, 1); __PYX_ERR(24, 53, __pyx_L3_error)
        }
        CYTHON_FALLTHROUGH;
        case  2:
        if (likely((values[2] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_call)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("__cinit__", 1, 3, 3, 2); __PYX_ERR(24, 53, __pyx_L3_error)
        }
      }
      if (unlikely(kw_args > 0)) {
        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "__cinit__") < 0)) __PYX_ERR(24, 53, __pyx_L3_error)
      }
    } else if (PyTuple_GET_SIZE(__pyx_args) != 3) {
      goto __pyx_L5_argtuple_error;
    } else {
      values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
      values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
      values[2] = PyTuple_GET_ITEM(__pyx_args, 2);
    }
    __pyx_v_user_tag = values[0];
    __pyx_v_operations = values[1];
    __pyx_v_call = values[2];
  }
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("__cinit__", 1, 3, 3, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(24, 53, __pyx_L3_error)
  __pyx_L3_error:;
  __Pyx_AddTraceback("grpc._cython.cygrpc._BatchOperationTag.__cinit__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return -1;
  __pyx_L4_argument_unpacking_done:;
  __pyx_r = __pyx_pf_4grpc_7_cython_6cygrpc_18_BatchOperationTag___cinit__(((struct __pyx_obj_4grpc_7_cython_6cygrpc__BatchOperationTag *)__pyx_v_self), __pyx_v_user_tag, __pyx_v_operations, __pyx_v_call);

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static int __pyx_pf_4grpc_7_cython_6cygrpc_18_BatchOperationTag___cinit__(struct __pyx_obj_4grpc_7_cython_6cygrpc__BatchOperationTag *__pyx_v_self, PyObject *__pyx_v_user_tag, PyObject *__pyx_v_operations, PyObject *__pyx_v_call) {
  int __pyx_r;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__cinit__", 0);

  /* "src/python/grpcio/grpc/_cython/_cygrpc/tag.pyx.pxi":54
 * 
 *   def __cinit__(self, user_tag, operations, call):
 *     self._user_tag = user_tag             # <<<<<<<<<<<<<<
 *     self._operations = operations
 *     self._retained_call = call
 */
  __Pyx_INCREF(__pyx_v_user_tag);
  __Pyx_GIVEREF(__pyx_v_user_tag);
  __Pyx_GOTREF(__pyx_v_self->_user_tag);
  __Pyx_DECREF(__pyx_v_self->_user_tag);
  __pyx_v_self->_user_tag = __pyx_v_user_tag;

  /* "src/python/grpcio/grpc/_cython/_cygrpc/tag.pyx.pxi":55
 *   def __cinit__(self, user_tag, operations, call):
 *     self._user_tag = user_tag
 *     self._operations = operations             # <<<<<<<<<<<<<<
 *     self._retained_call = call
 * 
 */
  __Pyx_INCREF(__pyx_v_operations);
  __Pyx_GIVEREF(__pyx_v_operations);
  __Pyx_GOTREF(__pyx_v_self->_operations);
  __Pyx_DECREF(__pyx_v_self->_operations);
  __pyx_v_self->_operations = __pyx_v_operations;

  /* "src/python/grpcio/grpc/_cython/_cygrpc/tag.pyx.pxi":56
 *     self._user_tag = user_tag
 *     self._operations = operations
 *     self._retained_call = call             # <<<<<<<<<<<<<<
 * 
 *   cdef void prepare(self) except *:
 */
  __Pyx_INCREF(__pyx_v_call);
  __Pyx_GIVEREF(__pyx_v_call);
  __Pyx_GOTREF(__pyx_v_self->_retained_call);
  __Pyx_DECREF(__pyx_v_self->_retained_call);
  __pyx_v_self->_retained_call = __pyx_v_call;

  /* "src/python/grpcio/grpc/_cython/_cygrpc/tag.pyx.pxi":53
 * cdef class _BatchOperationTag:
 * 
 *   def __cinit__(self, user_tag, operations, call):             # <<<<<<<<<<<<<<
 *     self._user_tag = user_tag
 *     self._operations = operations
 */

  /* function exit code */
  __pyx_r = 0;
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "src/python/grpcio/grpc/_cython/_cygrpc/tag.pyx.pxi":58
 *     self._retained_call = call
 * 
 *   cdef void prepare(self) except *:             # <<<<<<<<<<<<<<
 *     cdef Operation operation
 *     self.c_nops = 0 if self._operations is None else len(self._operations)
 */

static void __pyx_f_4grpc_7_cython_6cygrpc_18_BatchOperationTag_prepare(struct __pyx_obj_4grpc_7_cython_6cygrpc__BatchOperationTag *__pyx_v_self) {
  struct __pyx_obj_4grpc_7_cython_6cygrpc_Operation *__pyx_v_operation = 0;
  PyObject *__pyx_v_index = NULL;
  __Pyx_RefNannyDeclarations
  size_t __pyx_t_1;
  int __pyx_t_2;
  PyObject *__pyx_t_3 = NULL;
  Py_ssize_t __pyx_t_4;
  PyObject *__pyx_t_5 = NULL;
  PyObject *(*__pyx_t_6)(PyObject *);
  PyObject *__pyx_t_7 = NULL;
  grpc_op __pyx_t_8;
  Py_ssize_t __pyx_t_9;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("prepare", 0);

  /* "src/python/grpcio/grpc/_cython/_cygrpc/tag.pyx.pxi":60
 *   cdef void prepare(self) except *:
 *     cdef Operation operation
 *     self.c_nops = 0 if self._operations is None else len(self._operations)             # <<<<<<<<<<<<<<
 *     if 0 < self.c_nops:
 *       self.c_ops = <grpc_op *>gpr_malloc(sizeof(grpc_op) * self.c_nops)
 */
  __pyx_t_2 = (__pyx_v_self->_operations == Py_None);
  if ((__pyx_t_2 != 0)) {
    __pyx_t_1 = 0;
  } else {
    __pyx_t_3 = __pyx_v_self->_operations;
    __Pyx_INCREF(__pyx_t_3);
    __pyx_t_4 = PyObject_Length(__pyx_t_3); if (unlikely(__pyx_t_4 == ((Py_ssize_t)-1))) __PYX_ERR(24, 60, __pyx_L1_error)
    __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
    __pyx_t_1 = __pyx_t_4;
  }
  __pyx_v_self->c_nops = __pyx_t_1;

  /* "src/python/grpcio/grpc/_cython/_cygrpc/tag.pyx.pxi":61
 *     cdef Operation operation
 *     self.c_nops = 0 if self._operations is None else len(self._operations)
 *     if 0 < self.c_nops:             # <<<<<<<<<<<<<<
 *       self.c_ops = <grpc_op *>gpr_malloc(sizeof(grpc_op) * self.c_nops)
 *       for index, operation in enumerate(self._operations):
 */
  __pyx_t_2 = ((0 < __pyx_v_self->c_nops) != 0);
  if (__pyx_t_2) {

    /* "src/python/grpcio/grpc/_cython/_cygrpc/tag.pyx.pxi":62
 *     self.c_nops = 0 if self._operations is None else len(self._operations)
 *     if 0 < self.c_nops:
 *       self.c_ops = <grpc_op *>gpr_malloc(sizeof(grpc_op) * self.c_nops)             # <<<<<<<<<<<<<<
 *       for index, operation in enumerate(self._operations):
 *         operation.c()
 */
    __pyx_v_self->c_ops = ((grpc_op *)gpr_malloc(((sizeof(grpc_op)) * __pyx_v_self->c_nops)));

    /* "src/python/grpcio/grpc/_cython/_cygrpc/tag.pyx.pxi":63
 *     if 0 < self.c_nops:
 *       self.c_ops = <grpc_op *>gpr_malloc(sizeof(grpc_op) * self.c_nops)
 *       for index, operation in enumerate(self._operations):             # <<<<<<<<<<<<<<
 *         operation.c()
 *         self.c_ops[index] = operation.c_op
 */
    __Pyx_INCREF(__pyx_int_0);
    __pyx_t_3 = __pyx_int_0;
    if (likely(PyList_CheckExact(__pyx_v_self->_operations)) || PyTuple_CheckExact(__pyx_v_self->_operations)) {
      __pyx_t_5 = __pyx_v_self->_operations; __Pyx_INCREF(__pyx_t_5); __pyx_t_4 = 0;
      __pyx_t_6 = NULL;
    } else {
      __pyx_t_4 = -1; __pyx_t_5 = PyObject_GetIter(__pyx_v_self->_operations); if (unlikely(!__pyx_t_5)) __PYX_ERR(24, 63, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_5);
      __pyx_t_6 = Py_TYPE(__pyx_t_5)->tp_iternext; if (unlikely(!__pyx_t_6)) __PYX_ERR(24, 63, __pyx_L1_error)
    }
    for (;;) {
      if (likely(!__pyx_t_6)) {
        if (likely(PyList_CheckExact(__pyx_t_5))) {
          if (__pyx_t_4 >= PyList_GET_SIZE(__pyx_t_5)) break;
          #if CYTHON_ASSUME_SAFE_MACROS && !CYTHON_AVOID_BORROWED_REFS
          __pyx_t_7 = PyList_GET_ITEM(__pyx_t_5, __pyx_t_4); __Pyx_INCREF(__pyx_t_7); __pyx_t_4++; if (unlikely(0 < 0)) __PYX_ERR(24, 63, __pyx_L1_error)
          #else
          __pyx_t_7 = PySequence_ITEM(__pyx_t_5, __pyx_t_4); __pyx_t_4++; if (unlikely(!__pyx_t_7)) __PYX_ERR(24, 63, __pyx_L1_error)
          __Pyx_GOTREF(__pyx_t_7);
          #endif
        } else {
          if (__pyx_t_4 >= PyTuple_GET_SIZE(__pyx_t_5)) break;
          #if CYTHON_ASSUME_SAFE_MACROS && !CYTHON_AVOID_BORROWED_REFS
          __pyx_t_7 = PyTuple_GET_ITEM(__pyx_t_5, __pyx_t_4); __Pyx_INCREF(__pyx_t_7); __pyx_t_4++; if (unlikely(0 < 0)) __PYX_ERR(24, 63, __pyx_L1_error)
          #else
          __pyx_t_7 = PySequence_ITEM(__pyx_t_5, __pyx_t_4); __pyx_t_4++; if (unlikely(!__pyx_t_7)) __PYX_ERR(24, 63, __pyx_L1_error)
          __Pyx_GOTREF(__pyx_t_7);
          #endif
        }
      } else {
        __pyx_t_7 = __pyx_t_6(__pyx_t_5);
        if (unlikely(!__pyx_t_7)) {
          PyObject* exc_type = PyErr_Occurred();
          if (exc_type) {
            if (likely(__Pyx_PyErr_GivenExceptionMatches(exc_type, PyExc_StopIteration))) PyErr_Clear();
            else __PYX_ERR(24, 63, __pyx_L1_error)
          }
          break;
        }
        __Pyx_GOTREF(__pyx_t_7);
      }
      if (!(likely(((__pyx_t_7) == Py_None) || likely(__Pyx_TypeTest(__pyx_t_7, __pyx_ptype_4grpc_7_cython_6cygrpc_Operation))))) __PYX_ERR(24, 63, __pyx_L1_error)
      __Pyx_XDECREF_SET(__pyx_v_operation, ((struct __pyx_obj_4grpc_7_cython_6cygrpc_Operation *)__pyx_t_7));
      __pyx_t_7 = 0;
      __Pyx_INCREF(__pyx_t_3);
      __Pyx_XDECREF_SET(__pyx_v_index, __pyx_t_3);
      __pyx_t_7 = __Pyx_PyInt_AddObjC(__pyx_t_3, __pyx_int_1, 1, 0, 0); if (unlikely(!__pyx_t_7)) __PYX_ERR(24, 63, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_7);
      __Pyx_DECREF(__pyx_t_3);
      __pyx_t_3 = __pyx_t_7;
      __pyx_t_7 = 0;

      /* "src/python/grpcio/grpc/_cython/_cygrpc/tag.pyx.pxi":64
 *       self.c_ops = <grpc_op *>gpr_malloc(sizeof(grpc_op) * self.c_nops)
 *       for index, operation in enumerate(self._operations):
 *         operation.c()             # <<<<<<<<<<<<<<
 *         self.c_ops[index] = operation.c_op
 * 
 */
      ((struct __pyx_vtabstruct_4grpc_7_cython_6cygrpc_Operation *)__pyx_v_operation->__pyx_vtab)->c(__pyx_v_operation); if (unlikely(PyErr_Occurred())) __PYX_ERR(24, 64, __pyx_L1_error)

      /* "src/python/grpcio/grpc/_cython/_cygrpc/tag.pyx.pxi":65
 *       for index, operation in enumerate(self._operations):
 *         operation.c()
 *         self.c_ops[index] = operation.c_op             # <<<<<<<<<<<<<<
 * 
 *   cdef BatchOperationEvent event(self, grpc_event c_event):
 */
      __pyx_t_8 = __pyx_v_operation->c_op;
      __pyx_t_9 = __Pyx_PyIndex_AsSsize_t(__pyx_v_index); if (unlikely((__pyx_t_9 == (Py_ssize_t)-1) && PyErr_Occurred())) __PYX_ERR(24, 65, __pyx_L1_error)
      (__pyx_v_self->c_ops[__pyx_t_9]) = __pyx_t_8;

      /* "src/python/grpcio/grpc/_cython/_cygrpc/tag.pyx.pxi":63
 *     if 0 < self.c_nops:
 *       self.c_ops = <grpc_op *>gpr_malloc(sizeof(grpc_op) * self.c_nops)
 *       for index, operation in enumerate(self._operations):             # <<<<<<<<<<<<<<
 *         operation.c()
 *         self.c_ops[index] = operation.c_op
 */
    }
    __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
    __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;

    /* "src/python/grpcio/grpc/_cython/_cygrpc/tag.pyx.pxi":61
 *     cdef Operation operation
 *     self.c_nops = 0 if self._operations is None else len(self._operations)
 *     if 0 < self.c_nops:             # <<<<<<<<<<<<<<
 *       self.c_ops = <grpc_op *>gpr_malloc(sizeof(grpc_op) * self.c_nops)
 *       for index, operation in enumerate(self._operations):
 */
  }

  /* "src/python/grpcio/grpc/_cython/_cygrpc/tag.pyx.pxi":58
 *     self._retained_call = call
 * 
 *   cdef void prepare(self) except *:             # <<<<<<<<<<<<<<
 *     cdef Operation operation
 *     self.c_nops = 0 if self._operations is None else len(self._operations)
 */

  /* function exit code */
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_3);
  __Pyx_XDECREF(__pyx_t_5);
  __Pyx_XDECREF(__pyx_t_7);
  __Pyx_AddTraceback("grpc._cython.cygrpc._BatchOperationTag.prepare", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_L0:;
  __Pyx_XDECREF((PyObject *)__pyx_v_operation);
  __Pyx_XDECREF(__pyx_v_index);
  __Pyx_RefNannyFinishContext();
}

/* "src/python/grpcio/grpc/_cython/_cygrpc/tag.pyx.pxi":67
 *         self.c_ops[index] = operation.c_op
 * 
 *   cdef BatchOperationEvent event(self, grpc_event c_event):             # <<<<<<<<<<<<<<
 *     cdef Operation operation
 *     if 0 < self.c_nops:
 */

struct __pyx_obj_4grpc_7_cython_6cygrpc_BatchOperationEvent *__pyx_f_4grpc_7_cython_6cygrpc_18_BatchOperationTag_event(struct __pyx_obj_4grpc_7_cython_6cygrpc__BatchOperationTag *__pyx_v_self, grpc_event __pyx_v_c_event) {
  struct __pyx_obj_4grpc_7_cython_6cygrpc_Operation *__pyx_v_operation = 0;
  struct __pyx_obj_4grpc_7_cython_6cygrpc_BatchOperationEvent *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  int __pyx_t_1;
  PyObject *__pyx_t_2 = NULL;
  Py_ssize_t __pyx_t_3;
  PyObject *(*__pyx_t_4)(PyObject *);
  PyObject *__pyx_t_5 = NULL;
  PyObject *__pyx_t_6 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("event", 0);

  /* "src/python/grpcio/grpc/_cython/_cygrpc/tag.pyx.pxi":69
 *   cdef BatchOperationEvent event(self, grpc_event c_event):
 *     cdef Operation operation
 *     if 0 < self.c_nops:             # <<<<<<<<<<<<<<
 *       for operation in self._operations:
 *         operation.un_c()
 */
  __pyx_t_1 = ((0 < __pyx_v_self->c_nops) != 0);
  if (__pyx_t_1) {

    /* "src/python/grpcio/grpc/_cython/_cygrpc/tag.pyx.pxi":70
 *     cdef Operation operation
 *     if 0 < self.c_nops:
 *       for operation in self._operations:             # <<<<<<<<<<<<<<
 *         operation.un_c()
 *       gpr_free(self.c_ops)
 */
    if (likely(PyList_CheckExact(__pyx_v_self->_operations)) || PyTuple_CheckExact(__pyx_v_self->_operations)) {
      __pyx_t_2 = __pyx_v_self->_operations; __Pyx_INCREF(__pyx_t_2); __pyx_t_3 = 0;
      __pyx_t_4 = NULL;
    } else {
      __pyx_t_3 = -1; __pyx_t_2 = PyObject_GetIter(__pyx_v_self->_operations); if (unlikely(!__pyx_t_2)) __PYX_ERR(24, 70, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_2);
      __pyx_t_4 = Py_TYPE(__pyx_t_2)->tp_iternext; if (unlikely(!__pyx_t_4)) __PYX_ERR(24, 70, __pyx_L1_error)
    }
    for (;;) {
      if (likely(!__pyx_t_4)) {
        if (likely(PyList_CheckExact(__pyx_t_2))) {
          if (__pyx_t_3 >= PyList_GET_SIZE(__pyx_t_2)) break;
          #if CYTHON_ASSUME_SAFE_MACROS && !CYTHON_AVOID_BORROWED_REFS
          __pyx_t_5 = PyList_GET_ITEM(__pyx_t_2, __pyx_t_3); __Pyx_INCREF(__pyx_t_5); __pyx_t_3++; if (unlikely(0 < 0)) __PYX_ERR(24, 70, __pyx_L1_error)
          #else
          __pyx_t_5 = PySequence_ITEM(__pyx_t_2, __pyx_t_3); __pyx_t_3++; if (unlikely(!__pyx_t_5)) __PYX_ERR(24, 70, __pyx_L1_error)
          __Pyx_GOTREF(__pyx_t_5);
          #endif
        } else {
          if (__pyx_t_3 >= PyTuple_GET_SIZE(__pyx_t_2)) break;
          #if CYTHON_ASSUME_SAFE_MACROS && !CYTHON_AVOID_BORROWED_REFS
          __pyx_t_5 = PyTuple_GET_ITEM(__pyx_t_2, __pyx_t_3); __Pyx_INCREF(__pyx_t_5); __pyx_t_3++; if (unlikely(0 < 0)) __PYX_ERR(24, 70, __pyx_L1_error)
          #else
          __pyx_t_5 = PySequence_ITEM(__pyx_t_2, __pyx_t_3); __pyx_t_3++; if (unlikely(!__pyx_t_5)) __PYX_ERR(24, 70, __pyx_L1_error)
          __Pyx_GOTREF(__pyx_t_5);
          #endif
        }
      } else {
        __pyx_t_5 = __pyx_t_4(__pyx_t_2);
        if (unlikely(!__pyx_t_5)) {
          PyObject* exc_type = PyErr_Occurred();
          if (exc_type) {
            if (likely(__Pyx_PyErr_GivenExceptionMatches(exc_type, PyExc_StopIteration))) PyErr_Clear();
            else __PYX_ERR(24, 70, __pyx_L1_error)
          }
          break;
        }
        __Pyx_GOTREF(__pyx_t_5);
      }
      if (!(likely(((__pyx_t_5) == Py_None) || likely(__Pyx_TypeTest(__pyx_t_5, __pyx_ptype_4grpc_7_cython_6cygrpc_Operation))))) __PYX_ERR(24, 70, __pyx_L1_error)
      __Pyx_XDECREF_SET(__pyx_v_operation, ((struct __pyx_obj_4grpc_7_cython_6cygrpc_Operation *)__pyx_t_5));
      __pyx_t_5 = 0;

      /* "src/python/grpcio/grpc/_cython/_cygrpc/tag.pyx.pxi":71
 *     if 0 < self.c_nops:
 *       for operation in self._operations:
 *         operation.un_c()             # <<<<<<<<<<<<<<
 *       gpr_free(self.c_ops)
 *       return BatchOperationEvent(
 */
      ((struct __pyx_vtabstruct_4grpc_7_cython_6cygrpc_Operation *)__pyx_v_operation->__pyx_vtab)->un_c(__pyx_v_operation); if (unlikely(PyErr_Occurred())) __PYX_ERR(24, 71, __pyx_L1_error)

      /* "src/python/grpcio/grpc/_cython/_cygrpc/tag.pyx.pxi":70
 *     cdef Operation operation
 *     if 0 < self.c_nops:
 *       for operation in self._operations:             # <<<<<<<<<<<<<<
 *         operation.un_c()
 *       gpr_free(self.c_ops)
 */
    }
    __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;

    /* "src/python/grpcio/grpc/_cython/_cygrpc/tag.pyx.pxi":72
 *       for operation in self._operations:
 *         operation.un_c()
 *       gpr_free(self.c_ops)             # <<<<<<<<<<<<<<
 *       return BatchOperationEvent(
 *           c_event.type, c_event.success, self._user_tag, self._operations)
 */
    gpr_free(__pyx_v_self->c_ops);

    /* "src/python/grpcio/grpc/_cython/_cygrpc/tag.pyx.pxi":73
 *         operation.un_c()
 *       gpr_free(self.c_ops)
 *       return BatchOperationEvent(             # <<<<<<<<<<<<<<
 *           c_event.type, c_event.success, self._user_tag, self._operations)
 *     else:
 */
    __Pyx_XDECREF(((PyObject *)__pyx_r));

    /* "src/python/grpcio/grpc/_cython/_cygrpc/tag.pyx.pxi":74
 *       gpr_free(self.c_ops)
 *       return BatchOperationEvent(
 *           c_event.type, c_event.success, self._user_tag, self._operations)             # <<<<<<<<<<<<<<
 *     else:
 *       return BatchOperationEvent(
 */
    __pyx_t_2 = __Pyx_PyInt_From_grpc_completion_type(__pyx_v_c_event.type); if (unlikely(!__pyx_t_2)) __PYX_ERR(24, 74, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_2);
    __pyx_t_5 = __Pyx_PyInt_From_int(__pyx_v_c_event.success); if (unlikely(!__pyx_t_5)) __PYX_ERR(24, 74, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_5);

    /* "src/python/grpcio/grpc/_cython/_cygrpc/tag.pyx.pxi":73
 *         operation.un_c()
 *       gpr_free(self.c_ops)
 *       return BatchOperationEvent(             # <<<<<<<<<<<<<<
 *           c_event.type, c_event.success, self._user_tag, self._operations)
 *     else:
 */
    __pyx_t_6 = PyTuple_New(4); if (unlikely(!__pyx_t_6)) __PYX_ERR(24, 73, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_6);
    __Pyx_GIVEREF(__pyx_t_2);
    PyTuple_SET_ITEM(__pyx_t_6, 0, __pyx_t_2);
    __Pyx_GIVEREF(__pyx_t_5);
    PyTuple_SET_ITEM(__pyx_t_6, 1, __pyx_t_5);
    __Pyx_INCREF(__pyx_v_self->_user_tag);
    __Pyx_GIVEREF(__pyx_v_self->_user_tag);
    PyTuple_SET_ITEM(__pyx_t_6, 2, __pyx_v_self->_user_tag);
    __Pyx_INCREF(__pyx_v_self->_operations);
    __Pyx_GIVEREF(__pyx_v_self->_operations);
    PyTuple_SET_ITEM(__pyx_t_6, 3, __pyx_v_self->_operations);
    __pyx_t_2 = 0;
    __pyx_t_5 = 0;
    __pyx_t_5 = __Pyx_PyObject_Call(((PyObject *)__pyx_ptype_4grpc_7_cython_6cygrpc_BatchOperationEvent), __pyx_t_6, NULL); if (unlikely(!__pyx_t_5)) __PYX_ERR(24, 73, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_5);
    __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
    __pyx_r = ((struct __pyx_obj_4grpc_7_cython_6cygrpc_BatchOperationEvent *)__pyx_t_5);
    __pyx_t_5 = 0;
    goto __pyx_L0;

    /* "src/python/grpcio/grpc/_cython/_cygrpc/tag.pyx.pxi":69
 *   cdef BatchOperationEvent event(self, grpc_event c_event):
 *     cdef Operation operation
 *     if 0 < self.c_nops:             # <<<<<<<<<<<<<<
 *       for operation in self._operations:
 *         operation.un_c()
 */
  }

  /* "src/python/grpcio/grpc/_cython/_cygrpc/tag.pyx.pxi":76
 *           c_event.type, c_event.success, self._user_tag, self._operations)
 *     else:
 *       return BatchOperationEvent(             # <<<<<<<<<<<<<<
 *           c_event.type, c_event.success, self._user_tag, ())
 * 
 */
  /*else*/ {
    __Pyx_XDECREF(((PyObject *)__pyx_r));

    /* "src/python/grpcio/grpc/_cython/_cygrpc/tag.pyx.pxi":77
 *     else:
 *       return BatchOperationEvent(
 *           c_event.type, c_event.success, self._user_tag, ())             # <<<<<<<<<<<<<<
 * 
 * 
 */
    __pyx_t_5 = __Pyx_PyInt_From_grpc_completion_type(__pyx_v_c_event.type); if (unlikely(!__pyx_t_5)) __PYX_ERR(24, 77, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_5);
    __pyx_t_6 = __Pyx_PyInt_From_int(__pyx_v_c_event.success); if (unlikely(!__pyx_t_6)) __PYX_ERR(24, 77, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_6);

    /* "src/python/grpcio/grpc/_cython/_cygrpc/tag.pyx.pxi":76
 *           c_event.type, c_event.success, self._user_tag, self._operations)
 *     else:
 *       return BatchOperationEvent(             # <<<<<<<<<<<<<<
 *           c_event.type, c_event.success, self._user_tag, ())
 * 
 */
    __pyx_t_2 = PyTuple_New(4); if (unlikely(!__pyx_t_2)) __PYX_ERR(24, 76, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_2);
    __Pyx_GIVEREF(__pyx_t_5);
    PyTuple_SET_ITEM(__pyx_t_2, 0, __pyx_t_5);
    __Pyx_GIVEREF(__pyx_t_6);
    PyTuple_SET_ITEM(__pyx_t_2, 1, __pyx_t_6);
    __Pyx_INCREF(__pyx_v_self->_user_tag);
    __Pyx_GIVEREF(__pyx_v_self->_user_tag);
    PyTuple_SET_ITEM(__pyx_t_2, 2, __pyx_v_self->_user_tag);
    __Pyx_INCREF(__pyx_empty_tuple);
    __Pyx_GIVEREF(__pyx_empty_tuple);
    PyTuple_SET_ITEM(__pyx_t_2, 3, __pyx_empty_tuple);
    __pyx_t_5 = 0;
    __pyx_t_6 = 0;
    __pyx_t_6 = __Pyx_PyObject_Call(((PyObject *)__pyx_ptype_4grpc_7_cython_6cygrpc_BatchOperationEvent), __pyx_t_2, NULL); if (unlikely(!__pyx_t_6)) __PYX_ERR(24, 76, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_6);
    __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
    __pyx_r = ((struct __pyx_obj_4grpc_7_cython_6cygrpc_BatchOperationEvent *)__pyx_t_6);
    __pyx_t_6 = 0;
    goto __pyx_L0;
  }

  /* "src/python/grpcio/grpc/_cython/_cygrpc/tag.pyx.pxi":67
 *         self.c_ops[index] = operation.c_op
 * 
 *   cdef BatchOperationEvent event(self, grpc_event c_event):             # <<<<<<<<<<<<<<
 *     cdef Operation operation
 *     if 0 < self.c_nops:
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_XDECREF(__pyx_t_5);
  __Pyx_XDECREF(__pyx_t_6);
  __Pyx_AddTraceback("grpc._cython.cygrpc._BatchOperationTag.event", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = 0;
  __pyx_L0:;
  __Pyx_XDECREF((PyObject *)__pyx_v_operation);
  __Pyx_XGIVEREF((PyObject *)__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

struct __pyx_obj_4grpc_7_cython_6cygrpc_BatchOperationEvent *__pyx_f_4grpc_7_cython_6cygrpc_18_BatchOperationTag_event__pyx_wrap_1(struct __pyx_obj_4grpc_7_cython_6cygrpc__BatchOperationTag *__pyx_v_self, grpc_event __pyx_v_c_event) {
  return __pyx_f_4grpc_7_cython_6cygrpc_18_BatchOperationTag_event(__pyx_v_self, __pyx_v_c_event);
}

/* "src/python/grpcio/grpc/_cython/_cygrpc/tag.pxd.pxi":42
 * 
 *   cdef object _user_tag
 *   cdef readonly object _operations             # <<<<<<<<<<<<<<
 *   cdef readonly object _retained_call
 *   cdef grpc_op *c_ops
 */

/* Python wrapper */
static PyObject *__pyx_pw_4grpc_7_cython_6cygrpc_18_BatchOperationTag_11_operations_1__get__(PyObject *__pyx_v_self); /*proto*/
static PyObject *__pyx_pw_4grpc_7_cython_6cygrpc_18_BatchOperationTag_11_operations_1__get__(PyObject *__pyx_v_self) {
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__get__ (wrapper)", 0);
  __pyx_r = __pyx_pf_4grpc_7_cython_6cygrpc_18_BatchOperationTag_11_operations___get__(((struct __pyx_obj_4grpc_7_cython_6cygrpc__BatchOperationTag *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_4grpc_7_cython_6cygrpc_18_BatchOperationTag_11_operations___get__(struct __pyx_obj_4grpc_7_cython_6cygrpc__BatchOperationTag *__pyx_v_self) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__get__", 0);
  __Pyx_XDECREF(__pyx_r);
  __Pyx_INCREF(__pyx_v_self->_operations);
  __pyx_r = __pyx_v_self->_operations;
  goto __pyx_L0;

  /* function exit code */
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "src/python/grpcio/grpc/_cython/_cygrpc/tag.pxd.pxi":43
 *   cdef object _user_tag
 *   cdef readonly object _operations
 *   cdef readonly object _retained_call             # <<<<<<<<<<<<<<
 *   cdef grpc_op *c_ops
 *   cdef size_t c_nops
 */

/* Python wrapper */
static PyObject *__pyx_pw_4grpc_7_cython_6cygrpc_18_BatchOperationTag_14_retained_call_1__get__(PyObject *__pyx_v_self); /*proto*/
static PyObject *__pyx_pw_4grpc_7_cython_6cygrpc_18_BatchOperationTag_14_retained_call_1__get__(PyObject *__pyx_v_self) {
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__get__ (wrapper)", 0);
  __pyx_r = __pyx_pf_4grpc_7_cython_6cygrpc_18_BatchOperationTag_14_retained_call___get__(((struct __pyx_obj_4grpc_7_cython_6cygrpc__BatchOperationTag *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_4grpc_7_cython_6cygrpc_18_BatchOperationTag_14_retained_call___get__(struct __pyx_obj_4grpc_7_cython_6cygrpc__BatchOperationTag *__pyx_v_self) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__get__", 0);
  __Pyx_XDECREF(__pyx_r);
  __Pyx_INCREF(__pyx_v_self->_retained_call);
  __pyx_r = __pyx_v_self->_retained_call;
  goto __pyx_L0;

  /* function exit code */
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "(tree fragment)":1
 * def __reduce_cython__(self):             # <<<<<<<<<<<<<<
 *     raise TypeError("no default __reduce__ due to non-trivial __cinit__")
 * def __setstate_cython__(self, __pyx_state):
 */

/* Python wrapper */
static PyObject *__pyx_pw_4grpc_7_cython_6cygrpc_18_BatchOperationTag_3__reduce_cython__(PyObject *__pyx_v_self, CYTHON_UNUSED PyObject *unused); /*proto*/
static PyObject *__pyx_pw_4grpc_7_cython_6cygrpc_18_BatchOperationTag_3__reduce_cython__(PyObject *__pyx_v_self, CYTHON_UNUSED PyObject *unused) {
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__reduce_cython__ (wrapper)", 0);
  __pyx_r = __pyx_pf_4grpc_7_cython_6cygrpc_18_BatchOperationTag_2__reduce_cython__(((struct __pyx_obj_4grpc_7_cython_6cygrpc__BatchOperationTag *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_4grpc_7_cython_6cygrpc_18_BatchOperationTag_2__reduce_cython__(CYTHON_UNUSED struct __pyx_obj_4grpc_7_cython_6cygrpc__BatchOperationTag *__pyx_v_self) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("__reduce_cython__", 0);

  /* "(tree fragment)":2
 * def __reduce_cython__(self):
 *     raise TypeError("no default __reduce__ due to non-trivial __cinit__")             # <<<<<<<<<<<<<<
 * def __setstate_cython__(self, __pyx_state):
 *     raise TypeError("no default __reduce__ due to non-trivial __cinit__")
 */
  __pyx_t_1 = __Pyx_PyObject_Call(__pyx_builtin_TypeError, __pyx_tuple__113, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(11, 2, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_Raise(__pyx_t_1, 0, 0, 0);
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  __PYX_ERR(11, 2, __pyx_L1_error)

  /* "(tree fragment)":1
 * def __reduce_cython__(self):             # <<<<<<<<<<<<<<
 *     raise TypeError("no default __reduce__ due to non-trivial __cinit__")
 * def __setstate_cython__(self, __pyx_state):
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_AddTraceback("grpc._cython.cygrpc._BatchOperationTag.__reduce_cython__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "(tree fragment)":3
 * def __reduce_cython__(self):
 *     raise TypeError("no default __reduce__ due to non-trivial __cinit__")
 * def __setstate_cython__(self, __pyx_state):             # <<<<<<<<<<<<<<
 *     raise TypeError("no default __reduce__ due to non-trivial __cinit__")
 */

/* Python wrapper */
static PyObject *__pyx_pw_4grpc_7_cython_6cygrpc_18_BatchOperationTag_5__setstate_cython__(PyObject *__pyx_v_self, PyObject *__pyx_v___pyx_state); /*proto*/
static PyObject *__pyx_pw_4grpc_7_cython_6cygrpc_18_BatchOperationTag_5__setstate_cython__(PyObject *__pyx_v_self, PyObject *__pyx_v___pyx_state) {
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__setstate_cython__ (wrapper)", 0);
  __pyx_r = __pyx_pf_4grpc_7_cython_6cygrpc_18_BatchOperationTag_4__setstate_cython__(((struct __pyx_obj_4grpc_7_cython_6cygrpc__BatchOperationTag *)__pyx_v_self), ((PyObject *)__pyx_v___pyx_state));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_4grpc_7_cython_6cygrpc_18_BatchOperationTag_4__setstate_cython__(CYTHON_UNUSED struct __pyx_obj_4grpc_7_cython_6cygrpc__BatchOperationTag *__pyx_v_self, CYTHON_UNUSED PyObject *__pyx_v___pyx_state) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("__setstate_cython__", 0);

  /* "(tree fragment)":4
 *     raise TypeError("no default __reduce__ due to non-trivial __cinit__")
 * def __setstate_cython__(self, __pyx_state):
 *     raise TypeError("no default __reduce__ due to non-trivial __cinit__")             # <<<<<<<<<<<<<<
 */
  __pyx_t_1 = __Pyx_PyObject_Call(__pyx_builtin_TypeError, __pyx_tuple__114, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(11, 4, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_Raise(__pyx_t_1, 0, 0, 0);
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  __PYX_ERR(11, 4, __pyx_L1_error)

  /* "(tree fragment)":3
 * def __reduce_cython__(self):
 *     raise TypeError("no default __reduce__ due to non-trivial __cinit__")
 * def __setstate_cython__(self, __pyx_state):             # <<<<<<<<<<<<<<
 *     raise TypeError("no default __reduce__ due to non-trivial __cinit__")
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_AddTraceback("grpc._cython.cygrpc._BatchOperationTag.__setstate_cython__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "src/python/grpcio/grpc/_cython/_cygrpc/tag.pyx.pxi":82
 * cdef class _ServerShutdownTag(_Tag):
 * 
 *   def __cinit__(self, user_tag, shutting_down_server):             # <<<<<<<<<<<<<<
 *     self._user_tag = user_tag
 *     self._shutting_down_server = shutting_down_server
 */

/* Python wrapper */
static int __pyx_pw_4grpc_7_cython_6cygrpc_18_ServerShutdownTag_1__cinit__(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
static int __pyx_pw_4grpc_7_cython_6cygrpc_18_ServerShutdownTag_1__cinit__(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
  PyObject *__pyx_v_user_tag = 0;
  PyObject *__pyx_v_shutting_down_server = 0;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  int __pyx_r;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__cinit__ (wrapper)", 0);
  {
    static PyObject **__pyx_pyargnames[] = {&__pyx_n_s_user_tag,&__pyx_n_s_shutting_down_server,0};
    PyObject* values[2] = {0,0};
    if (unlikely(__pyx_kwds)) {
      Py_ssize_t kw_args;
      const Py_ssize_t pos_args = PyTuple_GET_SIZE(__pyx_args);
      switch (pos_args) {
        case  2: values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
        CYTHON_FALLTHROUGH;
        case  1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
        CYTHON_FALLTHROUGH;
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      kw_args = PyDict_Size(__pyx_kwds);
      switch (pos_args) {
        case  0:
        if (likely((values[0] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_user_tag)) != 0)) kw_args--;
        else goto __pyx_L5_argtuple_error;
        CYTHON_FALLTHROUGH;
        case  1:
        if (likely((values[1] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_shutting_down_server)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("__cinit__", 1, 2, 2, 1); __PYX_ERR(24, 82, __pyx_L3_error)
        }
      }
      if (unlikely(kw_args > 0)) {
        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "__cinit__") < 0)) __PYX_ERR(24, 82, __pyx_L3_error)
      }
    } else if (PyTuple_GET_SIZE(__pyx_args) != 2) {
      goto __pyx_L5_argtuple_error;
    } else {
      values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
      values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
    }
    __pyx_v_user_tag = values[0];
    __pyx_v_shutting_down_server = values[1];
  }
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("__cinit__", 1, 2, 2, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(24, 82, __pyx_L3_error)
  __pyx_L3_error:;
  __Pyx_AddTraceback("grpc._cython.cygrpc._ServerShutdownTag.__cinit__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return -1;
  __pyx_L4_argument_unpacking_done:;
  __pyx_r = __pyx_pf_4grpc_7_cython_6cygrpc_18_ServerShutdownTag___cinit__(((struct __pyx_obj_4grpc_7_cython_6cygrpc__ServerShutdownTag *)__pyx_v_self), __pyx_v_user_tag, __pyx_v_shutting_down_server);

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static int __pyx_pf_4grpc_7_cython_6cygrpc_18_ServerShutdownTag___cinit__(struct __pyx_obj_4grpc_7_cython_6cygrpc__ServerShutdownTag *__pyx_v_self, PyObject *__pyx_v_user_tag, PyObject *__pyx_v_shutting_down_server) {
  int __pyx_r;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("__cinit__", 0);

  /* "src/python/grpcio/grpc/_cython/_cygrpc/tag.pyx.pxi":83
 * 
 *   def __cinit__(self, user_tag, shutting_down_server):
 *     self._user_tag = user_tag             # <<<<<<<<<<<<<<
 *     self._shutting_down_server = shutting_down_server
 * 
 */
  __Pyx_INCREF(__pyx_v_user_tag);
  __Pyx_GIVEREF(__pyx_v_user_tag);
  __Pyx_GOTREF(__pyx_v_self->_user_tag);
  __Pyx_DECREF(__pyx_v_self->_user_tag);
  __pyx_v_self->_user_tag = __pyx_v_user_tag;

  /* "src/python/grpcio/grpc/_cython/_cygrpc/tag.pyx.pxi":84
 *   def __cinit__(self, user_tag, shutting_down_server):
 *     self._user_tag = user_tag
 *     self._shutting_down_server = shutting_down_server             # <<<<<<<<<<<<<<
 * 
 *   cdef ServerShutdownEvent event(self, grpc_event c_event):
 */
  if (!(likely(((__pyx_v_shutting_down_server) == Py_None) || likely(__Pyx_TypeTest(__pyx_v_shutting_down_server, __pyx_ptype_4grpc_7_cython_6cygrpc_Server))))) __PYX_ERR(24, 84, __pyx_L1_error)
  __pyx_t_1 = __pyx_v_shutting_down_server;
  __Pyx_INCREF(__pyx_t_1);
  __Pyx_GIVEREF(__pyx_t_1);
  __Pyx_GOTREF(__pyx_v_self->_shutting_down_server);
  __Pyx_DECREF(((PyObject *)__pyx_v_self->_shutting_down_server));
  __pyx_v_self->_shutting_down_server = ((struct __pyx_obj_4grpc_7_cython_6cygrpc_Server *)__pyx_t_1);
  __pyx_t_1 = 0;

  /* "src/python/grpcio/grpc/_cython/_cygrpc/tag.pyx.pxi":82
 * cdef class _ServerShutdownTag(_Tag):
 * 
 *   def __cinit__(self, user_tag, shutting_down_server):             # <<<<<<<<<<<<<<
 *     self._user_tag = user_tag
 *     self._shutting_down_server = shutting_down_server
 */

  /* function exit code */
  __pyx_r = 0;
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_AddTraceback("grpc._cython.cygrpc._ServerShutdownTag.__cinit__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = -1;
  __pyx_L0:;
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "src/python/grpcio/grpc/_cython/_cygrpc/tag.pyx.pxi":86
 *     self._shutting_down_server = shutting_down_server
 * 
 *   cdef ServerShutdownEvent event(self, grpc_event c_event):             # <<<<<<<<<<<<<<
 *     self._shutting_down_server.notify_shutdown_complete()
 *     return ServerShutdownEvent(c_event.type, c_event.success, self._user_tag)
 */

struct __pyx_obj_4grpc_7_cython_6cygrpc_ServerShutdownEvent *__pyx_f_4grpc_7_cython_6cygrpc_18_ServerShutdownTag_event(struct __pyx_obj_4grpc_7_cython_6cygrpc__ServerShutdownTag *__pyx_v_self, grpc_event __pyx_v_c_event) {
  struct __pyx_obj_4grpc_7_cython_6cygrpc_ServerShutdownEvent *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  PyObject *__pyx_t_2 = NULL;
  PyObject *__pyx_t_3 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("event", 0);

  /* "src/python/grpcio/grpc/_cython/_cygrpc/tag.pyx.pxi":87
 * 
 *   cdef ServerShutdownEvent event(self, grpc_event c_event):
 *     self._shutting_down_server.notify_shutdown_complete()             # <<<<<<<<<<<<<<
 *     return ServerShutdownEvent(c_event.type, c_event.success, self._user_tag)
 */
  __pyx_t_1 = ((struct __pyx_vtabstruct_4grpc_7_cython_6cygrpc_Server *)__pyx_v_self->_shutting_down_server->__pyx_vtab)->notify_shutdown_complete(__pyx_v_self->_shutting_down_server); if (unlikely(!__pyx_t_1)) __PYX_ERR(24, 87, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;

  /* "src/python/grpcio/grpc/_cython/_cygrpc/tag.pyx.pxi":88
 *   cdef ServerShutdownEvent event(self, grpc_event c_event):
 *     self._shutting_down_server.notify_shutdown_complete()
 *     return ServerShutdownEvent(c_event.type, c_event.success, self._user_tag)             # <<<<<<<<<<<<<<
 */
  __Pyx_XDECREF(((PyObject *)__pyx_r));
  __pyx_t_1 = __Pyx_PyInt_From_grpc_completion_type(__pyx_v_c_event.type); if (unlikely(!__pyx_t_1)) __PYX_ERR(24, 88, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_t_2 = __Pyx_PyInt_From_int(__pyx_v_c_event.success); if (unlikely(!__pyx_t_2)) __PYX_ERR(24, 88, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __pyx_t_3 = PyTuple_New(3); if (unlikely(!__pyx_t_3)) __PYX_ERR(24, 88, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  __Pyx_GIVEREF(__pyx_t_1);
  PyTuple_SET_ITEM(__pyx_t_3, 0, __pyx_t_1);
  __Pyx_GIVEREF(__pyx_t_2);
  PyTuple_SET_ITEM(__pyx_t_3, 1, __pyx_t_2);
  __Pyx_INCREF(__pyx_v_self->_user_tag);
  __Pyx_GIVEREF(__pyx_v_self->_user_tag);
  PyTuple_SET_ITEM(__pyx_t_3, 2, __pyx_v_self->_user_tag);
  __pyx_t_1 = 0;
  __pyx_t_2 = 0;
  __pyx_t_2 = __Pyx_PyObject_Call(((PyObject *)__pyx_ptype_4grpc_7_cython_6cygrpc_ServerShutdownEvent), __pyx_t_3, NULL); if (unlikely(!__pyx_t_2)) __PYX_ERR(24, 88, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
  __pyx_r = ((struct __pyx_obj_4grpc_7_cython_6cygrpc_ServerShutdownEvent *)__pyx_t_2);
  __pyx_t_2 = 0;
  goto __pyx_L0;

  /* "src/python/grpcio/grpc/_cython/_cygrpc/tag.pyx.pxi":86
 *     self._shutting_down_server = shutting_down_server
 * 
 *   cdef ServerShutdownEvent event(self, grpc_event c_event):             # <<<<<<<<<<<<<<
 *     self._shutting_down_server.notify_shutdown_complete()
 *     return ServerShutdownEvent(c_event.type, c_event.success, self._user_tag)
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_XDECREF(__pyx_t_3);
  __Pyx_AddTraceback("grpc._cython.cygrpc._ServerShutdownTag.event", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = 0;
  __pyx_L0:;
  __Pyx_XGIVEREF((PyObject *)__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

struct __pyx_obj_4grpc_7_cython_6cygrpc_ServerShutdownEvent *__pyx_f_4grpc_7_cython_6cygrpc_18_ServerShutdownTag_event__pyx_wrap_1(struct __pyx_obj_4grpc_7_cython_6cygrpc__ServerShutdownTag *__pyx_v_self, grpc_event __pyx_v_c_event) {
  return __pyx_f_4grpc_7_cython_6cygrpc_18_ServerShutdownTag_event(__pyx_v_self, __pyx_v_c_event);
}

/* "src/python/grpcio/grpc/_cython/_cygrpc/tag.pxd.pxi":53
 * cdef class _ServerShutdownTag(_Tag):
 * 
 *   cdef readonly object _user_tag             # <<<<<<<<<<<<<<
 *   # This allows CompletionQueue to notify the Python Server object that the
 *   # underlying GRPC core server has shutdown
 */

/* Python wrapper */
static PyObject *__pyx_pw_4grpc_7_cython_6cygrpc_18_ServerShutdownTag_9_user_tag_1__get__(PyObject *__pyx_v_self); /*proto*/
static PyObject *__pyx_pw_4grpc_7_cython_6cygrpc_18_ServerShutdownTag_9_user_tag_1__get__(PyObject *__pyx_v_self) {
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__get__ (wrapper)", 0);
  __pyx_r = __pyx_pf_4grpc_7_cython_6cygrpc_18_ServerShutdownTag_9_user_tag___get__(((struct __pyx_obj_4grpc_7_cython_6cygrpc__ServerShutdownTag *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_4grpc_7_cython_6cygrpc_18_ServerShutdownTag_9_user_tag___get__(struct __pyx_obj_4grpc_7_cython_6cygrpc__ServerShutdownTag *__pyx_v_self) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__get__", 0);
  __Pyx_XDECREF(__pyx_r);
  __Pyx_INCREF(__pyx_v_self->_user_tag);
  __pyx_r = __pyx_v_self->_user_tag;
  goto __pyx_L0;

  /* function exit code */
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "src/python/grpcio/grpc/_cython/_cygrpc/tag.pxd.pxi":56
 *   # This allows CompletionQueue to notify the Python Server object that the
 *   # underlying GRPC core server has shutdown
 *   cdef readonly Server _shutting_down_server             # <<<<<<<<<<<<<<
 * 
 *   cdef ServerShutdownEvent event(self, grpc_event c_event)
 */

/* Python wrapper */
static PyObject *__pyx_pw_4grpc_7_cython_6cygrpc_18_ServerShutdownTag_21_shutting_down_server_1__get__(PyObject *__pyx_v_self); /*proto*/
static PyObject *__pyx_pw_4grpc_7_cython_6cygrpc_18_ServerShutdownTag_21_shutting_down_server_1__get__(PyObject *__pyx_v_self) {
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__get__ (wrapper)", 0);
  __pyx_r = __pyx_pf_4grpc_7_cython_6cygrpc_18_ServerShutdownTag_21_shutting_down_server___get__(((struct __pyx_obj_4grpc_7_cython_6cygrpc__ServerShutdownTag *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_4grpc_7_cython_6cygrpc_18_ServerShutdownTag_21_shutting_down_server___get__(struct __pyx_obj_4grpc_7_cython_6cygrpc__ServerShutdownTag *__pyx_v_self) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__get__", 0);
  __Pyx_XDECREF(__pyx_r);
  __Pyx_INCREF(((PyObject *)__pyx_v_self->_shutting_down_server));
  __pyx_r = ((PyObject *)__pyx_v_self->_shutting_down_server);
  goto __pyx_L0;

  /* function exit code */
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "(tree fragment)":1
 * def __reduce_cython__(self):             # <<<<<<<<<<<<<<
 *     raise TypeError("no default __reduce__ due to non-trivial __cinit__")
 * def __setstate_cython__(self, __pyx_state):
 */

/* Python wrapper */
static PyObject *__pyx_pw_4grpc_7_cython_6cygrpc_18_ServerShutdownTag_3__reduce_cython__(PyObject *__pyx_v_self, CYTHON_UNUSED PyObject *unused); /*proto*/
static PyObject *__pyx_pw_4grpc_7_cython_6cygrpc_18_ServerShutdownTag_3__reduce_cython__(PyObject *__pyx_v_self, CYTHON_UNUSED PyObject *unused) {
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__reduce_cython__ (wrapper)", 0);
  __pyx_r = __pyx_pf_4grpc_7_cython_6cygrpc_18_ServerShutdownTag_2__reduce_cython__(((struct __pyx_obj_4grpc_7_cython_6cygrpc__ServerShutdownTag *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_4grpc_7_cython_6cygrpc_18_ServerShutdownTag_2__reduce_cython__(CYTHON_UNUSED struct __pyx_obj_4grpc_7_cython_6cygrpc__ServerShutdownTag *__pyx_v_self) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("__reduce_cython__", 0);

  /* "(tree fragment)":2
 * def __reduce_cython__(self):
 *     raise TypeError("no default __reduce__ due to non-trivial __cinit__")             # <<<<<<<<<<<<<<
 * def __setstate_cython__(self, __pyx_state):
 *     raise TypeError("no default __reduce__ due to non-trivial __cinit__")
 */
  __pyx_t_1 = __Pyx_PyObject_Call(__pyx_builtin_TypeError, __pyx_tuple__115, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(11, 2, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_Raise(__pyx_t_1, 0, 0, 0);
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  __PYX_ERR(11, 2, __pyx_L1_error)

  /* "(tree fragment)":1
 * def __reduce_cython__(self):             # <<<<<<<<<<<<<<
 *     raise TypeError("no default __reduce__ due to non-trivial __cinit__")
 * def __setstate_cython__(self, __pyx_state):
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_AddTraceback("grpc._cython.cygrpc._ServerShutdownTag.__reduce_cython__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "(tree fragment)":3
 * def __reduce_cython__(self):
 *     raise TypeError("no default __reduce__ due to non-trivial __cinit__")
 * def __setstate_cython__(self, __pyx_state):             # <<<<<<<<<<<<<<
 *     raise TypeError("no default __reduce__ due to non-trivial __cinit__")
 */

/* Python wrapper */
static PyObject *__pyx_pw_4grpc_7_cython_6cygrpc_18_ServerShutdownTag_5__setstate_cython__(PyObject *__pyx_v_self, PyObject *__pyx_v___pyx_state); /*proto*/
static PyObject *__pyx_pw_4grpc_7_cython_6cygrpc_18_ServerShutdownTag_5__setstate_cython__(PyObject *__pyx_v_self, PyObject *__pyx_v___pyx_state) {
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__setstate_cython__ (wrapper)", 0);
  __pyx_r = __pyx_pf_4grpc_7_cython_6cygrpc_18_ServerShutdownTag_4__setstate_cython__(((struct __pyx_obj_4grpc_7_cython_6cygrpc__ServerShutdownTag *)__pyx_v_self), ((PyObject *)__pyx_v___pyx_state));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_4grpc_7_cython_6cygrpc_18_ServerShutdownTag_4__setstate_cython__(CYTHON_UNUSED struct __pyx_obj_4grpc_7_cython_6cygrpc__ServerShutdownTag *__pyx_v_self, CYTHON_UNUSED PyObject *__pyx_v___pyx_state) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("__setstate_cython__", 0);

  /* "(tree fragment)":4
 *     raise TypeError("no default __reduce__ due to non-trivial __cinit__")
 * def __setstate_cython__(self, __pyx_state):
 *     raise TypeError("no default __reduce__ due to non-trivial __cinit__")             # <<<<<<<<<<<<<<
 */
  __pyx_t_1 = __Pyx_PyObject_Call(__pyx_builtin_TypeError, __pyx_tuple__116, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(11, 4, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_Raise(__pyx_t_1, 0, 0, 0);
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  __PYX_ERR(11, 4, __pyx_L1_error)

  /* "(tree fragment)":3
 * def __reduce_cython__(self):
 *     raise TypeError("no default __reduce__ due to non-trivial __cinit__")
 * def __setstate_cython__(self, __pyx_state):             # <<<<<<<<<<<<<<
 *     raise TypeError("no default __reduce__ due to non-trivial __cinit__")
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_AddTraceback("grpc._cython.cygrpc._ServerShutdownTag.__setstate_cython__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "src/python/grpcio/grpc/_cython/_cygrpc/time.pyx.pxi":16
 * 
 * 
 * cdef gpr_timespec _timespec_from_time(object time) except *:             # <<<<<<<<<<<<<<
 *   if time is None:
 *     return gpr_inf_future(GPR_CLOCK_REALTIME)
 */

static gpr_timespec __pyx_f_4grpc_7_cython_6cygrpc__timespec_from_time(PyObject *__pyx_v_time) {
  gpr_timespec __pyx_r;
  __Pyx_RefNannyDeclarations
  int __pyx_t_1;
  int __pyx_t_2;
  double __pyx_t_3;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("_timespec_from_time", 0);

  /* "src/python/grpcio/grpc/_cython/_cygrpc/time.pyx.pxi":17
 * 
 * cdef gpr_timespec _timespec_from_time(object time) except *:
 *   if time is None:             # <<<<<<<<<<<<<<
 *     return gpr_inf_future(GPR_CLOCK_REALTIME)
 *   else:
 */
  __pyx_t_1 = (__pyx_v_time == Py_None);
  __pyx_t_2 = (__pyx_t_1 != 0);
  if (__pyx_t_2) {

    /* "src/python/grpcio/grpc/_cython/_cygrpc/time.pyx.pxi":18
 * cdef gpr_timespec _timespec_from_time(object time) except *:
 *   if time is None:
 *     return gpr_inf_future(GPR_CLOCK_REALTIME)             # <<<<<<<<<<<<<<
 *   else:
 *     return gpr_time_from_nanos(
 */
    __pyx_r = gpr_inf_future(GPR_CLOCK_REALTIME);
    goto __pyx_L0;

    /* "src/python/grpcio/grpc/_cython/_cygrpc/time.pyx.pxi":17
 * 
 * cdef gpr_timespec _timespec_from_time(object time) except *:
 *   if time is None:             # <<<<<<<<<<<<<<
 *     return gpr_inf_future(GPR_CLOCK_REALTIME)
 *   else:
 */
  }

  /* "src/python/grpcio/grpc/_cython/_cygrpc/time.pyx.pxi":20
 *     return gpr_inf_future(GPR_CLOCK_REALTIME)
 *   else:
 *     return gpr_time_from_nanos(             # <<<<<<<<<<<<<<
 *       <int64_t>(<double>time * GPR_NS_PER_SEC),
 *       GPR_CLOCK_REALTIME,
 */
  /*else*/ {

    /* "src/python/grpcio/grpc/_cython/_cygrpc/time.pyx.pxi":21
 *   else:
 *     return gpr_time_from_nanos(
 *       <int64_t>(<double>time * GPR_NS_PER_SEC),             # <<<<<<<<<<<<<<
 *       GPR_CLOCK_REALTIME,
 *     )
 */
    __pyx_t_3 = __pyx_PyFloat_AsDouble(__pyx_v_time); if (unlikely((__pyx_t_3 == (double)-1) && PyErr_Occurred())) __PYX_ERR(25, 21, __pyx_L1_error)

    /* "src/python/grpcio/grpc/_cython/_cygrpc/time.pyx.pxi":20
 *     return gpr_inf_future(GPR_CLOCK_REALTIME)
 *   else:
 *     return gpr_time_from_nanos(             # <<<<<<<<<<<<<<
 *       <int64_t>(<double>time * GPR_NS_PER_SEC),
 *       GPR_CLOCK_REALTIME,
 */
    __pyx_r = gpr_time_from_nanos(((__pyx_t_4grpc_7_cython_6cygrpc_int64_t)(((double)__pyx_t_3) * GPR_NS_PER_SEC)), GPR_CLOCK_REALTIME);
    goto __pyx_L0;
  }

  /* "src/python/grpcio/grpc/_cython/_cygrpc/time.pyx.pxi":16
 * 
 * 
 * cdef gpr_timespec _timespec_from_time(object time) except *:             # <<<<<<<<<<<<<<
 *   if time is None:
 *     return gpr_inf_future(GPR_CLOCK_REALTIME)
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_AddTraceback("grpc._cython.cygrpc._timespec_from_time", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_pretend_to_initialize(&__pyx_r);
  __pyx_L0:;
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "src/python/grpcio/grpc/_cython/_cygrpc/time.pyx.pxi":26
 * 
 * 
 * cdef double _time_from_timespec(gpr_timespec timespec) except *:             # <<<<<<<<<<<<<<
 *   cdef gpr_timespec real_timespec = gpr_convert_clock_type(
 *       timespec, GPR_CLOCK_REALTIME)
 */

static double __pyx_f_4grpc_7_cython_6cygrpc__time_from_timespec(gpr_timespec __pyx_v_timespec) {
  gpr_timespec __pyx_v_real_timespec;
  double __pyx_r;
  __Pyx_RefNannyDeclarations
  double __pyx_t_1;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("_time_from_timespec", 0);

  /* "src/python/grpcio/grpc/_cython/_cygrpc/time.pyx.pxi":27
 * 
 * cdef double _time_from_timespec(gpr_timespec timespec) except *:
 *   cdef gpr_timespec real_timespec = gpr_convert_clock_type(             # <<<<<<<<<<<<<<
 *       timespec, GPR_CLOCK_REALTIME)
 *   return gpr_timespec_to_micros(real_timespec) / GPR_US_PER_SEC
 */
  __pyx_v_real_timespec = gpr_convert_clock_type(__pyx_v_timespec, GPR_CLOCK_REALTIME);

  /* "src/python/grpcio/grpc/_cython/_cygrpc/time.pyx.pxi":29
 *   cdef gpr_timespec real_timespec = gpr_convert_clock_type(
 *       timespec, GPR_CLOCK_REALTIME)
 *   return gpr_timespec_to_micros(real_timespec) / GPR_US_PER_SEC             # <<<<<<<<<<<<<<
 */
  __pyx_t_1 = gpr_timespec_to_micros(__pyx_v_real_timespec);
  if (unlikely(GPR_US_PER_SEC == 0)) {
    PyErr_SetString(PyExc_ZeroDivisionError, "float division");
    __PYX_ERR(25, 29, __pyx_L1_error)
  }
  __pyx_r = (__pyx_t_1 / GPR_US_PER_SEC);
  goto __pyx_L0;

  /* "src/python/grpcio/grpc/_cython/_cygrpc/time.pyx.pxi":26
 * 
 * 
 * cdef double _time_from_timespec(gpr_timespec timespec) except *:             # <<<<<<<<<<<<<<
 *   cdef gpr_timespec real_timespec = gpr_convert_clock_type(
 *       timespec, GPR_CLOCK_REALTIME)
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_AddTraceback("grpc._cython.cygrpc._time_from_timespec", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = -1;
  __pyx_L0:;
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "src/python/grpcio/grpc/_cython/_cygrpc/vtable.pyx.pxi":16
 * 
 * # TODO(https://github.com/grpc/grpc/issues/15662): Reform this.
 * cdef void* _copy_pointer(void* pointer):             # <<<<<<<<<<<<<<
 *   return pointer
 * 
 */

static void *__pyx_f_4grpc_7_cython_6cygrpc__copy_pointer(void *__pyx_v_pointer) {
  void *__pyx_r;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("_copy_pointer", 0);

  /* "src/python/grpcio/grpc/_cython/_cygrpc/vtable.pyx.pxi":17
 * # TODO(https://github.com/grpc/grpc/issues/15662): Reform this.
 * cdef void* _copy_pointer(void* pointer):
 *   return pointer             # <<<<<<<<<<<<<<
 * 
 * 
 */
  __pyx_r = __pyx_v_pointer;
  goto __pyx_L0;

  /* "src/python/grpcio/grpc/_cython/_cygrpc/vtable.pyx.pxi":16
 * 
 * # TODO(https://github.com/grpc/grpc/issues/15662): Reform this.
 * cdef void* _copy_pointer(void* pointer):             # <<<<<<<<<<<<<<
 *   return pointer
 * 
 */

  /* function exit code */
  __pyx_L0:;
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "src/python/grpcio/grpc/_cython/_cygrpc/vtable.pyx.pxi":21
 * 
 * # TODO(https://github.com/grpc/grpc/issues/15662): Reform this.
 * cdef void _destroy_pointer(void* pointer):             # <<<<<<<<<<<<<<
 *   pass
 * 
 */

static void __pyx_f_4grpc_7_cython_6cygrpc__destroy_pointer(CYTHON_UNUSED void *__pyx_v_pointer) {
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("_destroy_pointer", 0);

  /* function exit code */
  __Pyx_RefNannyFinishContext();
}

/* "src/python/grpcio/grpc/_cython/_cygrpc/vtable.pyx.pxi":25
 * 
 * 
 * cdef int _compare_pointer(void* first_pointer, void* second_pointer):             # <<<<<<<<<<<<<<
 *   if first_pointer < second_pointer:
 *     return -1
 */

static int __pyx_f_4grpc_7_cython_6cygrpc__compare_pointer(void *__pyx_v_first_pointer, void *__pyx_v_second_pointer) {
  int __pyx_r;
  __Pyx_RefNannyDeclarations
  int __pyx_t_1;
  __Pyx_RefNannySetupContext("_compare_pointer", 0);

  /* "src/python/grpcio/grpc/_cython/_cygrpc/vtable.pyx.pxi":26
 * 
 * cdef int _compare_pointer(void* first_pointer, void* second_pointer):
 *   if first_pointer < second_pointer:             # <<<<<<<<<<<<<<
 *     return -1
 *   elif first_pointer > second_pointer:
 */
  __pyx_t_1 = ((__pyx_v_first_pointer < __pyx_v_second_pointer) != 0);
  if (__pyx_t_1) {

    /* "src/python/grpcio/grpc/_cython/_cygrpc/vtable.pyx.pxi":27
 * cdef int _compare_pointer(void* first_pointer, void* second_pointer):
 *   if first_pointer < second_pointer:
 *     return -1             # <<<<<<<<<<<<<<
 *   elif first_pointer > second_pointer:
 *     return 1
 */
    __pyx_r = -1;
    goto __pyx_L0;

    /* "src/python/grpcio/grpc/_cython/_cygrpc/vtable.pyx.pxi":26
 * 
 * cdef int _compare_pointer(void* first_pointer, void* second_pointer):
 *   if first_pointer < second_pointer:             # <<<<<<<<<<<<<<
 *     return -1
 *   elif first_pointer > second_pointer:
 */
  }

  /* "src/python/grpcio/grpc/_cython/_cygrpc/vtable.pyx.pxi":28
 *   if first_pointer < second_pointer:
 *     return -1
 *   elif first_pointer > second_pointer:             # <<<<<<<<<<<<<<
 *     return 1
 *   else:
 */
  __pyx_t_1 = ((__pyx_v_first_pointer > __pyx_v_second_pointer) != 0);
  if (__pyx_t_1) {

    /* "src/python/grpcio/grpc/_cython/_cygrpc/vtable.pyx.pxi":29
 *     return -1
 *   elif first_pointer > second_pointer:
 *     return 1             # <<<<<<<<<<<<<<
 *   else:
 *     return 0
 */
    __pyx_r = 1;
    goto __pyx_L0;

    /* "src/python/grpcio/grpc/_cython/_cygrpc/vtable.pyx.pxi":28
 *   if first_pointer < second_pointer:
 *     return -1
 *   elif first_pointer > second_pointer:             # <<<<<<<<<<<<<<
 *     return 1
 *   else:
 */
  }

  /* "src/python/grpcio/grpc/_cython/_cygrpc/vtable.pyx.pxi":31
 *     return 1
 *   else:
 *     return 0             # <<<<<<<<<<<<<<
 * 
 * cdef grpc_arg_pointer_vtable default_vtable
 */
  /*else*/ {
    __pyx_r = 0;
    goto __pyx_L0;
  }

  /* "src/python/grpcio/grpc/_cython/_cygrpc/vtable.pyx.pxi":25
 * 
 * 
 * cdef int _compare_pointer(void* first_pointer, void* second_pointer):             # <<<<<<<<<<<<<<
 *   if first_pointer < second_pointer:
 *     return -1
 */

  /* function exit code */
  __pyx_L0:;
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "src/python/grpcio/grpc/_cython/_cygrpc/_hooks.pyx.pxi":16
 * 
 * 
 * cdef object _custom_op_on_c_call(int op, grpc_call *call):             # <<<<<<<<<<<<<<
 *   raise NotImplementedError("No custom hooks are implemented")
 * 
 */

static PyObject *__pyx_f_4grpc_7_cython_6cygrpc__custom_op_on_c_call(CYTHON_UNUSED int __pyx_v_op, CYTHON_UNUSED grpc_call *__pyx_v_call) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("_custom_op_on_c_call", 0);

  /* "src/python/grpcio/grpc/_cython/_cygrpc/_hooks.pyx.pxi":17
 * 
 * cdef object _custom_op_on_c_call(int op, grpc_call *call):
 *   raise NotImplementedError("No custom hooks are implemented")             # <<<<<<<<<<<<<<
 * 
 * def install_context_from_request_call_event(RequestCallEvent event):
 */
  __pyx_t_1 = __Pyx_PyObject_Call(__pyx_builtin_NotImplementedError, __pyx_tuple__117, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(26, 17, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_Raise(__pyx_t_1, 0, 0, 0);
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  __PYX_ERR(26, 17, __pyx_L1_error)

  /* "src/python/grpcio/grpc/_cython/_cygrpc/_hooks.pyx.pxi":16
 * 
 * 
 * cdef object _custom_op_on_c_call(int op, grpc_call *call):             # <<<<<<<<<<<<<<
 *   raise NotImplementedError("No custom hooks are implemented")
 * 
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_AddTraceback("grpc._cython.cygrpc._custom_op_on_c_call", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = 0;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "src/python/grpcio/grpc/_cython/_cygrpc/_hooks.pyx.pxi":19
 *   raise NotImplementedError("No custom hooks are implemented")
 * 
 * def install_context_from_request_call_event(RequestCallEvent event):             # <<<<<<<<<<<<<<
 *   pass
 * 
 */

/* Python wrapper */
static PyObject *__pyx_pw_4grpc_7_cython_6cygrpc_53install_context_from_request_call_event(PyObject *__pyx_self, PyObject *__pyx_v_event); /*proto*/
static PyMethodDef __pyx_mdef_4grpc_7_cython_6cygrpc_53install_context_from_request_call_event = {"install_context_from_request_call_event", (PyCFunction)__pyx_pw_4grpc_7_cython_6cygrpc_53install_context_from_request_call_event, METH_O, 0};
static PyObject *__pyx_pw_4grpc_7_cython_6cygrpc_53install_context_from_request_call_event(PyObject *__pyx_self, PyObject *__pyx_v_event) {
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("install_context_from_request_call_event (wrapper)", 0);
  if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_event), __pyx_ptype_4grpc_7_cython_6cygrpc_RequestCallEvent, 1, "event", 0))) __PYX_ERR(26, 19, __pyx_L1_error)
  __pyx_r = __pyx_pf_4grpc_7_cython_6cygrpc_52install_context_from_request_call_event(__pyx_self, ((struct __pyx_obj_4grpc_7_cython_6cygrpc_RequestCallEvent *)__pyx_v_event));

  /* function exit code */
  goto __pyx_L0;
  __pyx_L1_error:;
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_4grpc_7_cython_6cygrpc_52install_context_from_request_call_event(CYTHON_UNUSED PyObject *__pyx_self, CYTHON_UNUSED struct __pyx_obj_4grpc_7_cython_6cygrpc_RequestCallEvent *__pyx_v_event) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("install_context_from_request_call_event", 0);

  /* function exit code */
  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "src/python/grpcio/grpc/_cython/_cygrpc/_hooks.pyx.pxi":22
 *   pass
 * 
 * def uninstall_context():             # <<<<<<<<<<<<<<
 *   pass
 * 
 */

/* Python wrapper */
static PyObject *__pyx_pw_4grpc_7_cython_6cygrpc_55uninstall_context(PyObject *__pyx_self, CYTHON_UNUSED PyObject *unused); /*proto*/
static PyMethodDef __pyx_mdef_4grpc_7_cython_6cygrpc_55uninstall_context = {"uninstall_context", (PyCFunction)__pyx_pw_4grpc_7_cython_6cygrpc_55uninstall_context, METH_NOARGS, 0};
static PyObject *__pyx_pw_4grpc_7_cython_6cygrpc_55uninstall_context(PyObject *__pyx_self, CYTHON_UNUSED PyObject *unused) {
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("uninstall_context (wrapper)", 0);
  __pyx_r = __pyx_pf_4grpc_7_cython_6cygrpc_54uninstall_context(__pyx_self);

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_4grpc_7_cython_6cygrpc_54uninstall_context(CYTHON_UNUSED PyObject *__pyx_self) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("uninstall_context", 0);

  /* function exit code */
  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "src/python/grpcio/grpc/_cython/_cygrpc/_hooks.pyx.pxi":25
 *   pass
 * 
 * def build_census_context():             # <<<<<<<<<<<<<<
 *   pass
 * 
 */

/* Python wrapper */
static PyObject *__pyx_pw_4grpc_7_cython_6cygrpc_57build_census_context(PyObject *__pyx_self, CYTHON_UNUSED PyObject *unused); /*proto*/
static PyMethodDef __pyx_mdef_4grpc_7_cython_6cygrpc_57build_census_context = {"build_census_context", (PyCFunction)__pyx_pw_4grpc_7_cython_6cygrpc_57build_census_context, METH_NOARGS, 0};
static PyObject *__pyx_pw_4grpc_7_cython_6cygrpc_57build_census_context(PyObject *__pyx_self, CYTHON_UNUSED PyObject *unused) {
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("build_census_context (wrapper)", 0);
  __pyx_r = __pyx_pf_4grpc_7_cython_6cygrpc_56build_census_context(__pyx_self);

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_4grpc_7_cython_6cygrpc_56build_census_context(CYTHON_UNUSED PyObject *__pyx_self) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("build_census_context", 0);

  /* function exit code */
  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "(tree fragment)":1
 * def __reduce_cython__(self):             # <<<<<<<<<<<<<<
 *     cdef tuple state
 *     cdef object _dict
 */

/* Python wrapper */
static PyObject *__pyx_pw_4grpc_7_cython_6cygrpc_13CensusContext_1__reduce_cython__(PyObject *__pyx_v_self, CYTHON_UNUSED PyObject *unused); /*proto*/
static PyObject *__pyx_pw_4grpc_7_cython_6cygrpc_13CensusContext_1__reduce_cython__(PyObject *__pyx_v_self, CYTHON_UNUSED PyObject *unused) {
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__reduce_cython__ (wrapper)", 0);
  __pyx_r = __pyx_pf_4grpc_7_cython_6cygrpc_13CensusContext___reduce_cython__(((struct __pyx_obj_4grpc_7_cython_6cygrpc_CensusContext *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_4grpc_7_cython_6cygrpc_13CensusContext___reduce_cython__(struct __pyx_obj_4grpc_7_cython_6cygrpc_CensusContext *__pyx_v_self) {
  PyObject *__pyx_v_state = 0;
  PyObject *__pyx_v__dict = 0;
  int __pyx_v_use_setstate;
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  int __pyx_t_2;
  int __pyx_t_3;
  PyObject *__pyx_t_4 = NULL;
  PyObject *__pyx_t_5 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("__reduce_cython__", 0);

  /* "(tree fragment)":5
 *     cdef object _dict
 *     cdef bint use_setstate
 *     state = ()             # <<<<<<<<<<<<<<
 *     _dict = getattr(self, '__dict__', None)
 *     if _dict is not None:
 */
  __Pyx_INCREF(__pyx_empty_tuple);
  __pyx_v_state = __pyx_empty_tuple;

  /* "(tree fragment)":6
 *     cdef bint use_setstate
 *     state = ()
 *     _dict = getattr(self, '__dict__', None)             # <<<<<<<<<<<<<<
 *     if _dict is not None:
 *         state += (_dict,)
 */
  __pyx_t_1 = __Pyx_GetAttr3(((PyObject *)__pyx_v_self), __pyx_n_s_dict, Py_None); if (unlikely(!__pyx_t_1)) __PYX_ERR(11, 6, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_v__dict = __pyx_t_1;
  __pyx_t_1 = 0;

  /* "(tree fragment)":7
 *     state = ()
 *     _dict = getattr(self, '__dict__', None)
 *     if _dict is not None:             # <<<<<<<<<<<<<<
 *         state += (_dict,)
 *         use_setstate = True
 */
  __pyx_t_2 = (__pyx_v__dict != Py_None);
  __pyx_t_3 = (__pyx_t_2 != 0);
  if (__pyx_t_3) {

    /* "(tree fragment)":8
 *     _dict = getattr(self, '__dict__', None)
 *     if _dict is not None:
 *         state += (_dict,)             # <<<<<<<<<<<<<<
 *         use_setstate = True
 *     else:
 */
    __pyx_t_1 = PyTuple_New(1); if (unlikely(!__pyx_t_1)) __PYX_ERR(11, 8, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_1);
    __Pyx_INCREF(__pyx_v__dict);
    __Pyx_GIVEREF(__pyx_v__dict);
    PyTuple_SET_ITEM(__pyx_t_1, 0, __pyx_v__dict);
    __pyx_t_4 = PyNumber_InPlaceAdd(__pyx_v_state, __pyx_t_1); if (unlikely(!__pyx_t_4)) __PYX_ERR(11, 8, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_4);
    __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
    __Pyx_DECREF_SET(__pyx_v_state, ((PyObject*)__pyx_t_4));
    __pyx_t_4 = 0;

    /* "(tree fragment)":9
 *     if _dict is not None:
 *         state += (_dict,)
 *         use_setstate = True             # <<<<<<<<<<<<<<
 *     else:
 *         use_setstate = False
 */
    __pyx_v_use_setstate = 1;

    /* "(tree fragment)":7
 *     state = ()
 *     _dict = getattr(self, '__dict__', None)
 *     if _dict is not None:             # <<<<<<<<<<<<<<
 *         state += (_dict,)
 *         use_setstate = True
 */
    goto __pyx_L3;
  }

  /* "(tree fragment)":11
 *         use_setstate = True
 *     else:
 *         use_setstate = False             # <<<<<<<<<<<<<<
 *     if use_setstate:
 *         return __pyx_unpickle_CensusContext, (type(self), 0xd41d8cd, None), state
 */
  /*else*/ {
    __pyx_v_use_setstate = 0;
  }
  __pyx_L3:;

  /* "(tree fragment)":12
 *     else:
 *         use_setstate = False
 *     if use_setstate:             # <<<<<<<<<<<<<<
 *         return __pyx_unpickle_CensusContext, (type(self), 0xd41d8cd, None), state
 *     else:
 */
  __pyx_t_3 = (__pyx_v_use_setstate != 0);
  if (__pyx_t_3) {

    /* "(tree fragment)":13
 *         use_setstate = False
 *     if use_setstate:
 *         return __pyx_unpickle_CensusContext, (type(self), 0xd41d8cd, None), state             # <<<<<<<<<<<<<<
 *     else:
 *         return __pyx_unpickle_CensusContext, (type(self), 0xd41d8cd, state)
 */
    __Pyx_XDECREF(__pyx_r);
    __Pyx_GetModuleGlobalName(__pyx_t_4, __pyx_n_s_pyx_unpickle_CensusContext); if (unlikely(!__pyx_t_4)) __PYX_ERR(11, 13, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_4);
    __pyx_t_1 = PyTuple_New(3); if (unlikely(!__pyx_t_1)) __PYX_ERR(11, 13, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_1);
    __Pyx_INCREF(((PyObject *)Py_TYPE(((PyObject *)__pyx_v_self))));
    __Pyx_GIVEREF(((PyObject *)Py_TYPE(((PyObject *)__pyx_v_self))));
    PyTuple_SET_ITEM(__pyx_t_1, 0, ((PyObject *)Py_TYPE(((PyObject *)__pyx_v_self))));
    __Pyx_INCREF(__pyx_int_222419149);
    __Pyx_GIVEREF(__pyx_int_222419149);
    PyTuple_SET_ITEM(__pyx_t_1, 1, __pyx_int_222419149);
    __Pyx_INCREF(Py_None);
    __Pyx_GIVEREF(Py_None);
    PyTuple_SET_ITEM(__pyx_t_1, 2, Py_None);
    __pyx_t_5 = PyTuple_New(3); if (unlikely(!__pyx_t_5)) __PYX_ERR(11, 13, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_5);
    __Pyx_GIVEREF(__pyx_t_4);
    PyTuple_SET_ITEM(__pyx_t_5, 0, __pyx_t_4);
    __Pyx_GIVEREF(__pyx_t_1);
    PyTuple_SET_ITEM(__pyx_t_5, 1, __pyx_t_1);
    __Pyx_INCREF(__pyx_v_state);
    __Pyx_GIVEREF(__pyx_v_state);
    PyTuple_SET_ITEM(__pyx_t_5, 2, __pyx_v_state);
    __pyx_t_4 = 0;
    __pyx_t_1 = 0;
    __pyx_r = __pyx_t_5;
    __pyx_t_5 = 0;
    goto __pyx_L0;

    /* "(tree fragment)":12
 *     else:
 *         use_setstate = False
 *     if use_setstate:             # <<<<<<<<<<<<<<
 *         return __pyx_unpickle_CensusContext, (type(self), 0xd41d8cd, None), state
 *     else:
 */
  }

  /* "(tree fragment)":15
 *         return __pyx_unpickle_CensusContext, (type(self), 0xd41d8cd, None), state
 *     else:
 *         return __pyx_unpickle_CensusContext, (type(self), 0xd41d8cd, state)             # <<<<<<<<<<<<<<
 * def __setstate_cython__(self, __pyx_state):
 *     __pyx_unpickle_CensusContext__set_state(self, __pyx_state)
 */
  /*else*/ {
    __Pyx_XDECREF(__pyx_r);
    __Pyx_GetModuleGlobalName(__pyx_t_5, __pyx_n_s_pyx_unpickle_CensusContext); if (unlikely(!__pyx_t_5)) __PYX_ERR(11, 15, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_5);
    __pyx_t_1 = PyTuple_New(3); if (unlikely(!__pyx_t_1)) __PYX_ERR(11, 15, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_1);
    __Pyx_INCREF(((PyObject *)Py_TYPE(((PyObject *)__pyx_v_self))));
    __Pyx_GIVEREF(((PyObject *)Py_TYPE(((PyObject *)__pyx_v_self))));
    PyTuple_SET_ITEM(__pyx_t_1, 0, ((PyObject *)Py_TYPE(((PyObject *)__pyx_v_self))));
    __Pyx_INCREF(__pyx_int_222419149);
    __Pyx_GIVEREF(__pyx_int_222419149);
    PyTuple_SET_ITEM(__pyx_t_1, 1, __pyx_int_222419149);
    __Pyx_INCREF(__pyx_v_state);
    __Pyx_GIVEREF(__pyx_v_state);
    PyTuple_SET_ITEM(__pyx_t_1, 2, __pyx_v_state);
    __pyx_t_4 = PyTuple_New(2); if (unlikely(!__pyx_t_4)) __PYX_ERR(11, 15, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_4);
    __Pyx_GIVEREF(__pyx_t_5);
    PyTuple_SET_ITEM(__pyx_t_4, 0, __pyx_t_5);
    __Pyx_GIVEREF(__pyx_t_1);
    PyTuple_SET_ITEM(__pyx_t_4, 1, __pyx_t_1);
    __pyx_t_5 = 0;
    __pyx_t_1 = 0;
    __pyx_r = __pyx_t_4;
    __pyx_t_4 = 0;
    goto __pyx_L0;
  }

  /* "(tree fragment)":1
 * def __reduce_cython__(self):             # <<<<<<<<<<<<<<
 *     cdef tuple state
 *     cdef object _dict
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_XDECREF(__pyx_t_4);
  __Pyx_XDECREF(__pyx_t_5);
  __Pyx_AddTraceback("grpc._cython.cygrpc.CensusContext.__reduce_cython__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XDECREF(__pyx_v_state);
  __Pyx_XDECREF(__pyx_v__dict);
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "(tree fragment)":16
 *     else:
 *         return __pyx_unpickle_CensusContext, (type(self), 0xd41d8cd, state)
 * def __setstate_cython__(self, __pyx_state):             # <<<<<<<<<<<<<<
 *     __pyx_unpickle_CensusContext__set_state(self, __pyx_state)
 */

/* Python wrapper */
static PyObject *__pyx_pw_4grpc_7_cython_6cygrpc_13CensusContext_3__setstate_cython__(PyObject *__pyx_v_self, PyObject *__pyx_v___pyx_state); /*proto*/
static PyObject *__pyx_pw_4grpc_7_cython_6cygrpc_13CensusContext_3__setstate_cython__(PyObject *__pyx_v_self, PyObject *__pyx_v___pyx_state) {
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__setstate_cython__ (wrapper)", 0);
  __pyx_r = __pyx_pf_4grpc_7_cython_6cygrpc_13CensusContext_2__setstate_cython__(((struct __pyx_obj_4grpc_7_cython_6cygrpc_CensusContext *)__pyx_v_self), ((PyObject *)__pyx_v___pyx_state));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_4grpc_7_cython_6cygrpc_13CensusContext_2__setstate_cython__(struct __pyx_obj_4grpc_7_cython_6cygrpc_CensusContext *__pyx_v_self, PyObject *__pyx_v___pyx_state) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("__setstate_cython__", 0);

  /* "(tree fragment)":17
 *         return __pyx_unpickle_CensusContext, (type(self), 0xd41d8cd, state)
 * def __setstate_cython__(self, __pyx_state):
 *     __pyx_unpickle_CensusContext__set_state(self, __pyx_state)             # <<<<<<<<<<<<<<
 */
  if (!(likely(PyTuple_CheckExact(__pyx_v___pyx_state))||((__pyx_v___pyx_state) == Py_None)||(PyErr_Format(PyExc_TypeError, "Expected %.16s, got %.200s", "tuple", Py_TYPE(__pyx_v___pyx_state)->tp_name), 0))) __PYX_ERR(11, 17, __pyx_L1_error)
  __pyx_t_1 = __pyx_f_4grpc_7_cython_6cygrpc___pyx_unpickle_CensusContext__set_state(__pyx_v_self, ((PyObject*)__pyx_v___pyx_state)); if (unlikely(!__pyx_t_1)) __PYX_ERR(11, 17, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;

  /* "(tree fragment)":16
 *     else:
 *         return __pyx_unpickle_CensusContext, (type(self), 0xd41d8cd, state)
 * def __setstate_cython__(self, __pyx_state):             # <<<<<<<<<<<<<<
 *     __pyx_unpickle_CensusContext__set_state(self, __pyx_state)
 */

  /* function exit code */
  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_AddTraceback("grpc._cython.cygrpc.CensusContext.__setstate_cython__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "src/python/grpcio/grpc/_cython/_cygrpc/_hooks.pyx.pxi":31
 *   pass
 * 
 * def set_census_context_on_call(_CallState call_state, CensusContext census_ctx):             # <<<<<<<<<<<<<<
 *   pass
 * 
 */

/* Python wrapper */
static PyObject *__pyx_pw_4grpc_7_cython_6cygrpc_59set_census_context_on_call(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
static PyMethodDef __pyx_mdef_4grpc_7_cython_6cygrpc_59set_census_context_on_call = {"set_census_context_on_call", (PyCFunction)(void*)(PyCFunctionWithKeywords)__pyx_pw_4grpc_7_cython_6cygrpc_59set_census_context_on_call, METH_VARARGS|METH_KEYWORDS, 0};
static PyObject *__pyx_pw_4grpc_7_cython_6cygrpc_59set_census_context_on_call(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
  CYTHON_UNUSED struct __pyx_obj_4grpc_7_cython_6cygrpc__CallState *__pyx_v_call_state = 0;
  CYTHON_UNUSED struct __pyx_obj_4grpc_7_cython_6cygrpc_CensusContext *__pyx_v_census_ctx = 0;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("set_census_context_on_call (wrapper)", 0);
  {
    static PyObject **__pyx_pyargnames[] = {&__pyx_n_s_call_state,&__pyx_n_s_census_ctx,0};
    PyObject* values[2] = {0,0};
    if (unlikely(__pyx_kwds)) {
      Py_ssize_t kw_args;
      const Py_ssize_t pos_args = PyTuple_GET_SIZE(__pyx_args);
      switch (pos_args) {
        case  2: values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
        CYTHON_FALLTHROUGH;
        case  1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
        CYTHON_FALLTHROUGH;
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      kw_args = PyDict_Size(__pyx_kwds);
      switch (pos_args) {
        case  0:
        if (likely((values[0] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_call_state)) != 0)) kw_args--;
        else goto __pyx_L5_argtuple_error;
        CYTHON_FALLTHROUGH;
        case  1:
        if (likely((values[1] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_census_ctx)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("set_census_context_on_call", 1, 2, 2, 1); __PYX_ERR(26, 31, __pyx_L3_error)
        }
      }
      if (unlikely(kw_args > 0)) {
        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "set_census_context_on_call") < 0)) __PYX_ERR(26, 31, __pyx_L3_error)
      }
    } else if (PyTuple_GET_SIZE(__pyx_args) != 2) {
      goto __pyx_L5_argtuple_error;
    } else {
      values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
      values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
    }
    __pyx_v_call_state = ((struct __pyx_obj_4grpc_7_cython_6cygrpc__CallState *)values[0]);
    __pyx_v_census_ctx = ((struct __pyx_obj_4grpc_7_cython_6cygrpc_CensusContext *)values[1]);
  }
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("set_census_context_on_call", 1, 2, 2, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(26, 31, __pyx_L3_error)
  __pyx_L3_error:;
  __Pyx_AddTraceback("grpc._cython.cygrpc.set_census_context_on_call", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_call_state), __pyx_ptype_4grpc_7_cython_6cygrpc__CallState, 1, "call_state", 0))) __PYX_ERR(26, 31, __pyx_L1_error)
  if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_census_ctx), __pyx_ptype_4grpc_7_cython_6cygrpc_CensusContext, 1, "census_ctx", 0))) __PYX_ERR(26, 31, __pyx_L1_error)
  __pyx_r = __pyx_pf_4grpc_7_cython_6cygrpc_58set_census_context_on_call(__pyx_self, __pyx_v_call_state, __pyx_v_census_ctx);

  /* function exit code */
  goto __pyx_L0;
  __pyx_L1_error:;
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_4grpc_7_cython_6cygrpc_58set_census_context_on_call(CYTHON_UNUSED PyObject *__pyx_self, CYTHON_UNUSED struct __pyx_obj_4grpc_7_cython_6cygrpc__CallState *__pyx_v_call_state, CYTHON_UNUSED struct __pyx_obj_4grpc_7_cython_6cygrpc_CensusContext *__pyx_v_census_ctx) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("set_census_context_on_call", 0);

  /* function exit code */
  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "src/python/grpcio/grpc/_cython/_cygrpc/_hooks.pyx.pxi":34
 *   pass
 * 
 * def get_deadline_from_context():             # <<<<<<<<<<<<<<
 *   return None
 */

/* Python wrapper */
static PyObject *__pyx_pw_4grpc_7_cython_6cygrpc_61get_deadline_from_context(PyObject *__pyx_self, CYTHON_UNUSED PyObject *unused); /*proto*/
static PyMethodDef __pyx_mdef_4grpc_7_cython_6cygrpc_61get_deadline_from_context = {"get_deadline_from_context", (PyCFunction)__pyx_pw_4grpc_7_cython_6cygrpc_61get_deadline_from_context, METH_NOARGS, 0};
static PyObject *__pyx_pw_4grpc_7_cython_6cygrpc_61get_deadline_from_context(PyObject *__pyx_self, CYTHON_UNUSED PyObject *unused) {
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("get_deadline_from_context (wrapper)", 0);
  __pyx_r = __pyx_pf_4grpc_7_cython_6cygrpc_60get_deadline_from_context(__pyx_self);

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_4grpc_7_cython_6cygrpc_60get_deadline_from_context(CYTHON_UNUSED PyObject *__pyx_self) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("get_deadline_from_context", 0);

  /* "src/python/grpcio/grpc/_cython/_cygrpc/_hooks.pyx.pxi":35
 * 
 * def get_deadline_from_context():
 *   return None             # <<<<<<<<<<<<<<
 */
  __Pyx_XDECREF(__pyx_r);
  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
  goto __pyx_L0;

  /* "src/python/grpcio/grpc/_cython/_cygrpc/_hooks.pyx.pxi":34
 *   pass
 * 
 * def get_deadline_from_context():             # <<<<<<<<<<<<<<
 *   return None
 */

  /* function exit code */
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "src/python/grpcio/grpc/_cython/_cygrpc/iomgr.pyx.pxi":20
 * from libcpp.string cimport string as cppstring
 * 
 * cdef grpc_error_handle grpc_error_none():             # <<<<<<<<<<<<<<
 *   return <grpc_error_handle>0
 * 
 */

static grpc_error_handle __pyx_f_4grpc_7_cython_6cygrpc_grpc_error_none(void) {
  grpc_error_handle __pyx_r;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("grpc_error_none", 0);

  /* "src/python/grpcio/grpc/_cython/_cygrpc/iomgr.pyx.pxi":21
 * 
 * cdef grpc_error_handle grpc_error_none():
 *   return <grpc_error_handle>0             # <<<<<<<<<<<<<<
 * 
 * cdef grpc_error_handle socket_error(str syscall, str err):
 */
  __pyx_r = ((grpc_error_handle)0);
  goto __pyx_L0;

  /* "src/python/grpcio/grpc/_cython/_cygrpc/iomgr.pyx.pxi":20
 * from libcpp.string cimport string as cppstring
 * 
 * cdef grpc_error_handle grpc_error_none():             # <<<<<<<<<<<<<<
 *   return <grpc_error_handle>0
 * 
 */

  /* function exit code */
  __pyx_L0:;
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "src/python/grpcio/grpc/_cython/_cygrpc/iomgr.pyx.pxi":23
 *   return <grpc_error_handle>0
 * 
 * cdef grpc_error_handle socket_error(str syscall, str err):             # <<<<<<<<<<<<<<
 *   error_str = "{} failed: {}".format(syscall, err)
 *   error_bytes = str_to_bytes(error_str)
 */

static grpc_error_handle __pyx_f_4grpc_7_cython_6cygrpc_socket_error(PyObject *__pyx_v_syscall, PyObject *__pyx_v_err) {
  PyObject *__pyx_v_error_str = NULL;
  PyObject *__pyx_v_error_bytes = NULL;
  grpc_error_handle __pyx_r;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  PyObject *__pyx_t_2 = NULL;
  PyObject *__pyx_t_3 = NULL;
  int __pyx_t_4;
  PyObject *__pyx_t_5 = NULL;
  char *__pyx_t_6;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("socket_error", 0);

  /* "src/python/grpcio/grpc/_cython/_cygrpc/iomgr.pyx.pxi":24
 * 
 * cdef grpc_error_handle socket_error(str syscall, str err):
 *   error_str = "{} failed: {}".format(syscall, err)             # <<<<<<<<<<<<<<
 *   error_bytes = str_to_bytes(error_str)
 *   return grpc_socket_error(error_bytes)
 */
  __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_kp_s_failed, __pyx_n_s_format); if (unlikely(!__pyx_t_2)) __PYX_ERR(27, 24, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __pyx_t_3 = NULL;
  __pyx_t_4 = 0;
  if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_2))) {
    __pyx_t_3 = PyMethod_GET_SELF(__pyx_t_2);
    if (likely(__pyx_t_3)) {
      PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_2);
      __Pyx_INCREF(__pyx_t_3);
      __Pyx_INCREF(function);
      __Pyx_DECREF_SET(__pyx_t_2, function);
      __pyx_t_4 = 1;
    }
  }
  #if CYTHON_FAST_PYCALL
  if (PyFunction_Check(__pyx_t_2)) {
    PyObject *__pyx_temp[3] = {__pyx_t_3, __pyx_v_syscall, __pyx_v_err};
    __pyx_t_1 = __Pyx_PyFunction_FastCall(__pyx_t_2, __pyx_temp+1-__pyx_t_4, 2+__pyx_t_4); if (unlikely(!__pyx_t_1)) __PYX_ERR(27, 24, __pyx_L1_error)
    __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0;
    __Pyx_GOTREF(__pyx_t_1);
  } else
  #endif
  #if CYTHON_FAST_PYCCALL
  if (__Pyx_PyFastCFunction_Check(__pyx_t_2)) {
    PyObject *__pyx_temp[3] = {__pyx_t_3, __pyx_v_syscall, __pyx_v_err};
    __pyx_t_1 = __Pyx_PyCFunction_FastCall(__pyx_t_2, __pyx_temp+1-__pyx_t_4, 2+__pyx_t_4); if (unlikely(!__pyx_t_1)) __PYX_ERR(27, 24, __pyx_L1_error)
    __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0;
    __Pyx_GOTREF(__pyx_t_1);
  } else
  #endif
  {
    __pyx_t_5 = PyTuple_New(2+__pyx_t_4); if (unlikely(!__pyx_t_5)) __PYX_ERR(27, 24, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_5);
    if (__pyx_t_3) {
      __Pyx_GIVEREF(__pyx_t_3); PyTuple_SET_ITEM(__pyx_t_5, 0, __pyx_t_3); __pyx_t_3 = NULL;
    }
    __Pyx_INCREF(__pyx_v_syscall);
    __Pyx_GIVEREF(__pyx_v_syscall);
    PyTuple_SET_ITEM(__pyx_t_5, 0+__pyx_t_4, __pyx_v_syscall);
    __Pyx_INCREF(__pyx_v_err);
    __Pyx_GIVEREF(__pyx_v_err);
    PyTuple_SET_ITEM(__pyx_t_5, 1+__pyx_t_4, __pyx_v_err);
    __pyx_t_1 = __Pyx_PyObject_Call(__pyx_t_2, __pyx_t_5, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(27, 24, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_1);
    __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
  }
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  __pyx_v_error_str = __pyx_t_1;
  __pyx_t_1 = 0;

  /* "src/python/grpcio/grpc/_cython/_cygrpc/iomgr.pyx.pxi":25
 * cdef grpc_error_handle socket_error(str syscall, str err):
 *   error_str = "{} failed: {}".format(syscall, err)
 *   error_bytes = str_to_bytes(error_str)             # <<<<<<<<<<<<<<
 *   return grpc_socket_error(error_bytes)
 * 
 */
  __pyx_t_1 = __pyx_f_4grpc_7_cython_6cygrpc_str_to_bytes(__pyx_v_error_str); if (unlikely(!__pyx_t_1)) __PYX_ERR(27, 25, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_v_error_bytes = ((PyObject*)__pyx_t_1);
  __pyx_t_1 = 0;

  /* "src/python/grpcio/grpc/_cython/_cygrpc/iomgr.pyx.pxi":26
 *   error_str = "{} failed: {}".format(syscall, err)
 *   error_bytes = str_to_bytes(error_str)
 *   return grpc_socket_error(error_bytes)             # <<<<<<<<<<<<<<
 * 
 * cdef resolved_addr_to_tuple(grpc_resolved_address* address):
 */
  if (unlikely(__pyx_v_error_bytes == Py_None)) {
    PyErr_SetString(PyExc_TypeError, "expected bytes, NoneType found");
    __PYX_ERR(27, 26, __pyx_L1_error)
  }
  __pyx_t_6 = __Pyx_PyBytes_AsWritableString(__pyx_v_error_bytes); if (unlikely((!__pyx_t_6) && PyErr_Occurred())) __PYX_ERR(27, 26, __pyx_L1_error)
  __pyx_r = grpc_socket_error(__pyx_t_6);
  goto __pyx_L0;

  /* "src/python/grpcio/grpc/_cython/_cygrpc/iomgr.pyx.pxi":23
 *   return <grpc_error_handle>0
 * 
 * cdef grpc_error_handle socket_error(str syscall, str err):             # <<<<<<<<<<<<<<
 *   error_str = "{} failed: {}".format(syscall, err)
 *   error_bytes = str_to_bytes(error_str)
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_XDECREF(__pyx_t_3);
  __Pyx_XDECREF(__pyx_t_5);
  __Pyx_WriteUnraisable("grpc._cython.cygrpc.socket_error", __pyx_clineno, __pyx_lineno, __pyx_filename, 1, 0);
  __pyx_r = 0;
  __pyx_L0:;
  __Pyx_XDECREF(__pyx_v_error_str);
  __Pyx_XDECREF(__pyx_v_error_bytes);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "src/python/grpcio/grpc/_cython/_cygrpc/iomgr.pyx.pxi":28
 *   return grpc_socket_error(error_bytes)
 * 
 * cdef resolved_addr_to_tuple(grpc_resolved_address* address):             # <<<<<<<<<<<<<<
 *   cdef cppstring res_str
 *   port = grpc_sockaddr_get_port(address)
 */

static PyObject *__pyx_f_4grpc_7_cython_6cygrpc_resolved_addr_to_tuple(grpc_resolved_address *__pyx_v_address) {
  std::string __pyx_v_res_str;
  PyObject *__pyx_v_port = NULL;
  PyObject *__pyx_v_byte_str = NULL;
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  PyObject *__pyx_t_2 = NULL;
  PyObject *__pyx_t_3 = NULL;
  PyObject *__pyx_t_4 = NULL;
  int __pyx_t_5;
  Py_ssize_t __pyx_t_6;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("resolved_addr_to_tuple", 0);

  /* "src/python/grpcio/grpc/_cython/_cygrpc/iomgr.pyx.pxi":30
 * cdef resolved_addr_to_tuple(grpc_resolved_address* address):
 *   cdef cppstring res_str
 *   port = grpc_sockaddr_get_port(address)             # <<<<<<<<<<<<<<
 *   res_str = grpc_sockaddr_to_string(address, False)
 *   byte_str = _decode(res_str)
 */
  __pyx_t_1 = __Pyx_PyInt_From_int(grpc_sockaddr_get_port(__pyx_v_address)); if (unlikely(!__pyx_t_1)) __PYX_ERR(27, 30, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_v_port = __pyx_t_1;
  __pyx_t_1 = 0;

  /* "src/python/grpcio/grpc/_cython/_cygrpc/iomgr.pyx.pxi":31
 *   cdef cppstring res_str
 *   port = grpc_sockaddr_get_port(address)
 *   res_str = grpc_sockaddr_to_string(address, False)             # <<<<<<<<<<<<<<
 *   byte_str = _decode(res_str)
 *   if byte_str.endswith(':' + str(port)):
 */
  __pyx_v_res_str = grpc_sockaddr_to_string(__pyx_v_address, 0);

  /* "src/python/grpcio/grpc/_cython/_cygrpc/iomgr.pyx.pxi":32
 *   port = grpc_sockaddr_get_port(address)
 *   res_str = grpc_sockaddr_to_string(address, False)
 *   byte_str = _decode(res_str)             # <<<<<<<<<<<<<<
 *   if byte_str.endswith(':' + str(port)):
 *     byte_str = byte_str[:(0 - len(str(port)) - 1)]
 */
  __pyx_t_1 = __pyx_convert_PyBytes_string_to_py_std__in_string(__pyx_v_res_str); if (unlikely(!__pyx_t_1)) __PYX_ERR(27, 32, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_t_2 = __pyx_f_4grpc_7_cython_6cygrpc__decode(((PyObject*)__pyx_t_1)); if (unlikely(!__pyx_t_2)) __PYX_ERR(27, 32, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  __pyx_v_byte_str = __pyx_t_2;
  __pyx_t_2 = 0;

  /* "src/python/grpcio/grpc/_cython/_cygrpc/iomgr.pyx.pxi":33
 *   res_str = grpc_sockaddr_to_string(address, False)
 *   byte_str = _decode(res_str)
 *   if byte_str.endswith(':' + str(port)):             # <<<<<<<<<<<<<<
 *     byte_str = byte_str[:(0 - len(str(port)) - 1)]
 *   byte_str = byte_str.lstrip('[')
 */
  __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_v_byte_str, __pyx_n_s_endswith); if (unlikely(!__pyx_t_1)) __PYX_ERR(27, 33, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_t_3 = __Pyx_PyObject_CallOneArg(((PyObject *)(&PyString_Type)), __pyx_v_port); if (unlikely(!__pyx_t_3)) __PYX_ERR(27, 33, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  __pyx_t_4 = PyNumber_Add(__pyx_kp_s__118, __pyx_t_3); if (unlikely(!__pyx_t_4)) __PYX_ERR(27, 33, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_4);
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
  __pyx_t_3 = NULL;
  if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_1))) {
    __pyx_t_3 = PyMethod_GET_SELF(__pyx_t_1);
    if (likely(__pyx_t_3)) {
      PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_1);
      __Pyx_INCREF(__pyx_t_3);
      __Pyx_INCREF(function);
      __Pyx_DECREF_SET(__pyx_t_1, function);
    }
  }
  __pyx_t_2 = (__pyx_t_3) ? __Pyx_PyObject_Call2Args(__pyx_t_1, __pyx_t_3, __pyx_t_4) : __Pyx_PyObject_CallOneArg(__pyx_t_1, __pyx_t_4);
  __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0;
  __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
  if (unlikely(!__pyx_t_2)) __PYX_ERR(27, 33, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  __pyx_t_5 = __Pyx_PyObject_IsTrue(__pyx_t_2); if (unlikely(__pyx_t_5 < 0)) __PYX_ERR(27, 33, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  if (__pyx_t_5) {

    /* "src/python/grpcio/grpc/_cython/_cygrpc/iomgr.pyx.pxi":34
 *   byte_str = _decode(res_str)
 *   if byte_str.endswith(':' + str(port)):
 *     byte_str = byte_str[:(0 - len(str(port)) - 1)]             # <<<<<<<<<<<<<<
 *   byte_str = byte_str.lstrip('[')
 *   byte_str = byte_str.rstrip(']')
 */
    __pyx_t_2 = __Pyx_PyObject_CallOneArg(((PyObject *)(&PyString_Type)), __pyx_v_port); if (unlikely(!__pyx_t_2)) __PYX_ERR(27, 34, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_2);
    __pyx_t_6 = PyObject_Length(__pyx_t_2); if (unlikely(__pyx_t_6 == ((Py_ssize_t)-1))) __PYX_ERR(27, 34, __pyx_L1_error)
    __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
    __pyx_t_2 = __Pyx_PyObject_GetSlice(__pyx_v_byte_str, 0, ((0 - __pyx_t_6) - 1), NULL, NULL, NULL, 0, 1, 1); if (unlikely(!__pyx_t_2)) __PYX_ERR(27, 34, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_2);
    __Pyx_DECREF_SET(__pyx_v_byte_str, __pyx_t_2);
    __pyx_t_2 = 0;

    /* "src/python/grpcio/grpc/_cython/_cygrpc/iomgr.pyx.pxi":33
 *   res_str = grpc_sockaddr_to_string(address, False)
 *   byte_str = _decode(res_str)
 *   if byte_str.endswith(':' + str(port)):             # <<<<<<<<<<<<<<
 *     byte_str = byte_str[:(0 - len(str(port)) - 1)]
 *   byte_str = byte_str.lstrip('[')
 */
  }

  /* "src/python/grpcio/grpc/_cython/_cygrpc/iomgr.pyx.pxi":35
 *   if byte_str.endswith(':' + str(port)):
 *     byte_str = byte_str[:(0 - len(str(port)) - 1)]
 *   byte_str = byte_str.lstrip('[')             # <<<<<<<<<<<<<<
 *   byte_str = byte_str.rstrip(']')
 *   byte_str = '{}'.format(byte_str)
 */
  __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_v_byte_str, __pyx_n_s_lstrip); if (unlikely(!__pyx_t_1)) __PYX_ERR(27, 35, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_t_4 = NULL;
  if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_1))) {
    __pyx_t_4 = PyMethod_GET_SELF(__pyx_t_1);
    if (likely(__pyx_t_4)) {
      PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_1);
      __Pyx_INCREF(__pyx_t_4);
      __Pyx_INCREF(function);
      __Pyx_DECREF_SET(__pyx_t_1, function);
    }
  }
  __pyx_t_2 = (__pyx_t_4) ? __Pyx_PyObject_Call2Args(__pyx_t_1, __pyx_t_4, __pyx_kp_s__119) : __Pyx_PyObject_CallOneArg(__pyx_t_1, __pyx_kp_s__119);
  __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0;
  if (unlikely(!__pyx_t_2)) __PYX_ERR(27, 35, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  __Pyx_DECREF_SET(__pyx_v_byte_str, __pyx_t_2);
  __pyx_t_2 = 0;

  /* "src/python/grpcio/grpc/_cython/_cygrpc/iomgr.pyx.pxi":36
 *     byte_str = byte_str[:(0 - len(str(port)) - 1)]
 *   byte_str = byte_str.lstrip('[')
 *   byte_str = byte_str.rstrip(']')             # <<<<<<<<<<<<<<
 *   byte_str = '{}'.format(byte_str)
 *   return byte_str, port
 */
  __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_v_byte_str, __pyx_n_s_rstrip); if (unlikely(!__pyx_t_1)) __PYX_ERR(27, 36, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_t_4 = NULL;
  if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_1))) {
    __pyx_t_4 = PyMethod_GET_SELF(__pyx_t_1);
    if (likely(__pyx_t_4)) {
      PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_1);
      __Pyx_INCREF(__pyx_t_4);
      __Pyx_INCREF(function);
      __Pyx_DECREF_SET(__pyx_t_1, function);
    }
  }
  __pyx_t_2 = (__pyx_t_4) ? __Pyx_PyObject_Call2Args(__pyx_t_1, __pyx_t_4, __pyx_kp_s__120) : __Pyx_PyObject_CallOneArg(__pyx_t_1, __pyx_kp_s__120);
  __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0;
  if (unlikely(!__pyx_t_2)) __PYX_ERR(27, 36, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  __Pyx_DECREF_SET(__pyx_v_byte_str, __pyx_t_2);
  __pyx_t_2 = 0;

  /* "src/python/grpcio/grpc/_cython/_cygrpc/iomgr.pyx.pxi":37
 *   byte_str = byte_str.lstrip('[')
 *   byte_str = byte_str.rstrip(']')
 *   byte_str = '{}'.format(byte_str)             # <<<<<<<<<<<<<<
 *   return byte_str, port
 * 
 */
  __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_kp_s__121, __pyx_n_s_format); if (unlikely(!__pyx_t_1)) __PYX_ERR(27, 37, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_t_4 = NULL;
  if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_1))) {
    __pyx_t_4 = PyMethod_GET_SELF(__pyx_t_1);
    if (likely(__pyx_t_4)) {
      PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_1);
      __Pyx_INCREF(__pyx_t_4);
      __Pyx_INCREF(function);
      __Pyx_DECREF_SET(__pyx_t_1, function);
    }
  }
  __pyx_t_2 = (__pyx_t_4) ? __Pyx_PyObject_Call2Args(__pyx_t_1, __pyx_t_4, __pyx_v_byte_str) : __Pyx_PyObject_CallOneArg(__pyx_t_1, __pyx_v_byte_str);
  __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0;
  if (unlikely(!__pyx_t_2)) __PYX_ERR(27, 37, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  __Pyx_DECREF_SET(__pyx_v_byte_str, __pyx_t_2);
  __pyx_t_2 = 0;

  /* "src/python/grpcio/grpc/_cython/_cygrpc/iomgr.pyx.pxi":38
 *   byte_str = byte_str.rstrip(']')
 *   byte_str = '{}'.format(byte_str)
 *   return byte_str, port             # <<<<<<<<<<<<<<
 * 
 * cdef sockaddr_to_tuple(const grpc_sockaddr* address, size_t length):
 */
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_2 = PyTuple_New(2); if (unlikely(!__pyx_t_2)) __PYX_ERR(27, 38, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __Pyx_INCREF(__pyx_v_byte_str);
  __Pyx_GIVEREF(__pyx_v_byte_str);
  PyTuple_SET_ITEM(__pyx_t_2, 0, __pyx_v_byte_str);
  __Pyx_INCREF(__pyx_v_port);
  __Pyx_GIVEREF(__pyx_v_port);
  PyTuple_SET_ITEM(__pyx_t_2, 1, __pyx_v_port);
  __pyx_r = __pyx_t_2;
  __pyx_t_2 = 0;
  goto __pyx_L0;

  /* "src/python/grpcio/grpc/_cython/_cygrpc/iomgr.pyx.pxi":28
 *   return grpc_socket_error(error_bytes)
 * 
 * cdef resolved_addr_to_tuple(grpc_resolved_address* address):             # <<<<<<<<<<<<<<
 *   cdef cppstring res_str
 *   port = grpc_sockaddr_get_port(address)
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_XDECREF(__pyx_t_3);
  __Pyx_XDECREF(__pyx_t_4);
  __Pyx_AddTraceback("grpc._cython.cygrpc.resolved_addr_to_tuple", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = 0;
  __pyx_L0:;
  __Pyx_XDECREF(__pyx_v_port);
  __Pyx_XDECREF(__pyx_v_byte_str);
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "src/python/grpcio/grpc/_cython/_cygrpc/iomgr.pyx.pxi":40
 *   return byte_str, port
 * 
 * cdef sockaddr_to_tuple(const grpc_sockaddr* address, size_t length):             # <<<<<<<<<<<<<<
 *   cdef grpc_resolved_address c_addr
 *   string.memcpy(<void*>c_addr.addr, <void*> address, length)
 */

static PyObject *__pyx_f_4grpc_7_cython_6cygrpc_sockaddr_to_tuple(grpc_sockaddr const *__pyx_v_address, size_t __pyx_v_length) {
  grpc_resolved_address __pyx_v_c_addr;
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("sockaddr_to_tuple", 0);

  /* "src/python/grpcio/grpc/_cython/_cygrpc/iomgr.pyx.pxi":42
 * cdef sockaddr_to_tuple(const grpc_sockaddr* address, size_t length):
 *   cdef grpc_resolved_address c_addr
 *   string.memcpy(<void*>c_addr.addr, <void*> address, length)             # <<<<<<<<<<<<<<
 *   c_addr.len = length
 *   return resolved_addr_to_tuple(&c_addr)
 */
  (void)(memcpy(((void *)__pyx_v_c_addr.addr), ((void *)__pyx_v_address), __pyx_v_length));

  /* "src/python/grpcio/grpc/_cython/_cygrpc/iomgr.pyx.pxi":43
 *   cdef grpc_resolved_address c_addr
 *   string.memcpy(<void*>c_addr.addr, <void*> address, length)
 *   c_addr.len = length             # <<<<<<<<<<<<<<
 *   return resolved_addr_to_tuple(&c_addr)
 * 
 */
  __pyx_v_c_addr.len = __pyx_v_length;

  /* "src/python/grpcio/grpc/_cython/_cygrpc/iomgr.pyx.pxi":44
 *   string.memcpy(<void*>c_addr.addr, <void*> address, length)
 *   c_addr.len = length
 *   return resolved_addr_to_tuple(&c_addr)             # <<<<<<<<<<<<<<
 * 
 * cdef sockaddr_is_ipv4(const grpc_sockaddr* address, size_t length):
 */
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_1 = __pyx_f_4grpc_7_cython_6cygrpc_resolved_addr_to_tuple((&__pyx_v_c_addr)); if (unlikely(!__pyx_t_1)) __PYX_ERR(27, 44, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_r = __pyx_t_1;
  __pyx_t_1 = 0;
  goto __pyx_L0;

  /* "src/python/grpcio/grpc/_cython/_cygrpc/iomgr.pyx.pxi":40
 *   return byte_str, port
 * 
 * cdef sockaddr_to_tuple(const grpc_sockaddr* address, size_t length):             # <<<<<<<<<<<<<<
 *   cdef grpc_resolved_address c_addr
 *   string.memcpy(<void*>c_addr.addr, <void*> address, length)
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_AddTraceback("grpc._cython.cygrpc.sockaddr_to_tuple", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = 0;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "src/python/grpcio/grpc/_cython/_cygrpc/iomgr.pyx.pxi":46
 *   return resolved_addr_to_tuple(&c_addr)
 * 
 * cdef sockaddr_is_ipv4(const grpc_sockaddr* address, size_t length):             # <<<<<<<<<<<<<<
 *   cdef grpc_resolved_address c_addr
 *   string.memcpy(<void*>c_addr.addr, <void*> address, length)
 */

static PyObject *__pyx_f_4grpc_7_cython_6cygrpc_sockaddr_is_ipv4(grpc_sockaddr const *__pyx_v_address, size_t __pyx_v_length) {
  grpc_resolved_address __pyx_v_c_addr;
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  PyObject *__pyx_t_2 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("sockaddr_is_ipv4", 0);

  /* "src/python/grpcio/grpc/_cython/_cygrpc/iomgr.pyx.pxi":48
 * cdef sockaddr_is_ipv4(const grpc_sockaddr* address, size_t length):
 *   cdef grpc_resolved_address c_addr
 *   string.memcpy(<void*>c_addr.addr, <void*> address, length)             # <<<<<<<<<<<<<<
 *   c_addr.len = length
 *   return grpc_sockaddr_get_uri_scheme(&c_addr) == b'ipv4'
 */
  (void)(memcpy(((void *)__pyx_v_c_addr.addr), ((void *)__pyx_v_address), __pyx_v_length));

  /* "src/python/grpcio/grpc/_cython/_cygrpc/iomgr.pyx.pxi":49
 *   cdef grpc_resolved_address c_addr
 *   string.memcpy(<void*>c_addr.addr, <void*> address, length)
 *   c_addr.len = length             # <<<<<<<<<<<<<<
 *   return grpc_sockaddr_get_uri_scheme(&c_addr) == b'ipv4'
 * 
 */
  __pyx_v_c_addr.len = __pyx_v_length;

  /* "src/python/grpcio/grpc/_cython/_cygrpc/iomgr.pyx.pxi":50
 *   string.memcpy(<void*>c_addr.addr, <void*> address, length)
 *   c_addr.len = length
 *   return grpc_sockaddr_get_uri_scheme(&c_addr) == b'ipv4'             # <<<<<<<<<<<<<<
 * 
 * cdef grpc_resolved_addresses* tuples_to_resolvaddr(tups):
 */
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_1 = __Pyx_PyBytes_FromString(grpc_sockaddr_get_uri_scheme((&__pyx_v_c_addr))); if (unlikely(!__pyx_t_1)) __PYX_ERR(27, 50, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_t_2 = PyObject_RichCompare(__pyx_t_1, __pyx_n_b_ipv4, Py_EQ); __Pyx_XGOTREF(__pyx_t_2); if (unlikely(!__pyx_t_2)) __PYX_ERR(27, 50, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  __pyx_r = __pyx_t_2;
  __pyx_t_2 = 0;
  goto __pyx_L0;

  /* "src/python/grpcio/grpc/_cython/_cygrpc/iomgr.pyx.pxi":46
 *   return resolved_addr_to_tuple(&c_addr)
 * 
 * cdef sockaddr_is_ipv4(const grpc_sockaddr* address, size_t length):             # <<<<<<<<<<<<<<
 *   cdef grpc_resolved_address c_addr
 *   string.memcpy(<void*>c_addr.addr, <void*> address, length)
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_AddTraceback("grpc._cython.cygrpc.sockaddr_is_ipv4", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = 0;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}
static PyObject *__pyx_gb_4grpc_7_cython_6cygrpc_20tuples_to_resolvaddr_2generator47(__pyx_CoroutineObject *__pyx_generator, CYTHON_UNUSED PyThreadState *__pyx_tstate, PyObject *__pyx_sent_value); /* proto */

/* "src/python/grpcio/grpc/_cython/_cygrpc/iomgr.pyx.pxi":54
 * cdef grpc_resolved_addresses* tuples_to_resolvaddr(tups):
 *   cdef grpc_resolved_addresses* addresses
 *   tups_set = set((tup[4][0], tup[4][1]) for tup in tups)             # <<<<<<<<<<<<<<
 *   addresses = <grpc_resolved_addresses*> malloc(sizeof(grpc_resolved_addresses))
 *   addresses.naddrs = len(tups_set)
 */

static PyObject *__pyx_pf_4grpc_7_cython_6cygrpc_20tuples_to_resolvaddr_genexpr(PyObject *__pyx_self) {
  struct __pyx_obj_4grpc_7_cython_6cygrpc___pyx_scope_struct_8_genexpr *__pyx_cur_scope;
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("genexpr", 0);
  __pyx_cur_scope = (struct __pyx_obj_4grpc_7_cython_6cygrpc___pyx_scope_struct_8_genexpr *)__pyx_tp_new_4grpc_7_cython_6cygrpc___pyx_scope_struct_8_genexpr(__pyx_ptype_4grpc_7_cython_6cygrpc___pyx_scope_struct_8_genexpr, __pyx_empty_tuple, NULL);
  if (unlikely(!__pyx_cur_scope)) {
    __pyx_cur_scope = ((struct __pyx_obj_4grpc_7_cython_6cygrpc___pyx_scope_struct_8_genexpr *)Py_None);
    __Pyx_INCREF(Py_None);
    __PYX_ERR(27, 54, __pyx_L1_error)
  } else {
    __Pyx_GOTREF(__pyx_cur_scope);
  }
  __pyx_cur_scope->__pyx_outer_scope = (struct __pyx_obj_4grpc_7_cython_6cygrpc___pyx_scope_struct_7___pyx_f_4grpc_7_cython_6cygrpc_tuples_to_resolvaddr *) __pyx_self;
  __Pyx_INCREF(((PyObject *)__pyx_cur_scope->__pyx_outer_scope));
  __Pyx_GIVEREF(__pyx_cur_scope->__pyx_outer_scope);
  {
    __pyx_CoroutineObject *gen = __Pyx_Generator_New((__pyx_coroutine_body_t) __pyx_gb_4grpc_7_cython_6cygrpc_20tuples_to_resolvaddr_2generator47, NULL, (PyObject *) __pyx_cur_scope, __pyx_n_s_genexpr, __pyx_n_s_tuples_to_resolvaddr_locals_gene, __pyx_n_s_grpc__cython_cygrpc); if (unlikely(!gen)) __PYX_ERR(27, 54, __pyx_L1_error)
    __Pyx_DECREF(__pyx_cur_scope);
    __Pyx_RefNannyFinishContext();
    return (PyObject *) gen;
  }

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_AddTraceback("grpc._cython.cygrpc.tuples_to_resolvaddr.genexpr", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __Pyx_DECREF(((PyObject *)__pyx_cur_scope));
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_gb_4grpc_7_cython_6cygrpc_20tuples_to_resolvaddr_2generator47(__pyx_CoroutineObject *__pyx_generator, CYTHON_UNUSED PyThreadState *__pyx_tstate, PyObject *__pyx_sent_value) /* generator body */
{
  struct __pyx_obj_4grpc_7_cython_6cygrpc___pyx_scope_struct_8_genexpr *__pyx_cur_scope = ((struct __pyx_obj_4grpc_7_cython_6cygrpc___pyx_scope_struct_8_genexpr *)__pyx_generator->closure);
  PyObject *__pyx_r = NULL;
  PyObject *__pyx_t_1 = NULL;
  Py_ssize_t __pyx_t_2;
  PyObject *(*__pyx_t_3)(PyObject *);
  PyObject *__pyx_t_4 = NULL;
  PyObject *__pyx_t_5 = NULL;
  PyObject *__pyx_t_6 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("genexpr", 0);
  switch (__pyx_generator->resume_label) {
    case 0: goto __pyx_L3_first_run;
    default: /* CPython raises the right error here */
    __Pyx_RefNannyFinishContext();
    return NULL;
  }
  __pyx_L3_first_run:;
  if (unlikely(!__pyx_sent_value)) __PYX_ERR(27, 54, __pyx_L1_error)
  __pyx_r = PySet_New(NULL); if (unlikely(!__pyx_r)) __PYX_ERR(27, 54, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_r);
  if (unlikely(!__pyx_cur_scope->__pyx_outer_scope->__pyx_v_tups)) { __Pyx_RaiseClosureNameError("tups"); __PYX_ERR(27, 54, __pyx_L1_error) }
  if (likely(PyList_CheckExact(__pyx_cur_scope->__pyx_outer_scope->__pyx_v_tups)) || PyTuple_CheckExact(__pyx_cur_scope->__pyx_outer_scope->__pyx_v_tups)) {
    __pyx_t_1 = __pyx_cur_scope->__pyx_outer_scope->__pyx_v_tups; __Pyx_INCREF(__pyx_t_1); __pyx_t_2 = 0;
    __pyx_t_3 = NULL;
  } else {
    __pyx_t_2 = -1; __pyx_t_1 = PyObject_GetIter(__pyx_cur_scope->__pyx_outer_scope->__pyx_v_tups); if (unlikely(!__pyx_t_1)) __PYX_ERR(27, 54, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_1);
    __pyx_t_3 = Py_TYPE(__pyx_t_1)->tp_iternext; if (unlikely(!__pyx_t_3)) __PYX_ERR(27, 54, __pyx_L1_error)
  }
  for (;;) {
    if (likely(!__pyx_t_3)) {
      if (likely(PyList_CheckExact(__pyx_t_1))) {
        if (__pyx_t_2 >= PyList_GET_SIZE(__pyx_t_1)) break;
        #if CYTHON_ASSUME_SAFE_MACROS && !CYTHON_AVOID_BORROWED_REFS
        __pyx_t_4 = PyList_GET_ITEM(__pyx_t_1, __pyx_t_2); __Pyx_INCREF(__pyx_t_4); __pyx_t_2++; if (unlikely(0 < 0)) __PYX_ERR(27, 54, __pyx_L1_error)
        #else
        __pyx_t_4 = PySequence_ITEM(__pyx_t_1, __pyx_t_2); __pyx_t_2++; if (unlikely(!__pyx_t_4)) __PYX_ERR(27, 54, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_4);
        #endif
      } else {
        if (__pyx_t_2 >= PyTuple_GET_SIZE(__pyx_t_1)) break;
        #if CYTHON_ASSUME_SAFE_MACROS && !CYTHON_AVOID_BORROWED_REFS
        __pyx_t_4 = PyTuple_GET_ITEM(__pyx_t_1, __pyx_t_2); __Pyx_INCREF(__pyx_t_4); __pyx_t_2++; if (unlikely(0 < 0)) __PYX_ERR(27, 54, __pyx_L1_error)
        #else
        __pyx_t_4 = PySequence_ITEM(__pyx_t_1, __pyx_t_2); __pyx_t_2++; if (unlikely(!__pyx_t_4)) __PYX_ERR(27, 54, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_4);
        #endif
      }
    } else {
      __pyx_t_4 = __pyx_t_3(__pyx_t_1);
      if (unlikely(!__pyx_t_4)) {
        PyObject* exc_type = PyErr_Occurred();
        if (exc_type) {
          if (likely(__Pyx_PyErr_GivenExceptionMatches(exc_type, PyExc_StopIteration))) PyErr_Clear();
          else __PYX_ERR(27, 54, __pyx_L1_error)
        }
        break;
      }
      __Pyx_GOTREF(__pyx_t_4);
    }
    __Pyx_XGOTREF(__pyx_cur_scope->__pyx_v_tup);
    __Pyx_XDECREF_SET(__pyx_cur_scope->__pyx_v_tup, __pyx_t_4);
    __Pyx_GIVEREF(__pyx_t_4);
    __pyx_t_4 = 0;
    __pyx_t_4 = __Pyx_GetItemInt(__pyx_cur_scope->__pyx_v_tup, 4, long, 1, __Pyx_PyInt_From_long, 0, 0, 1); if (unlikely(!__pyx_t_4)) __PYX_ERR(27, 54, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_4);
    __pyx_t_5 = __Pyx_GetItemInt(__pyx_t_4, 0, long, 1, __Pyx_PyInt_From_long, 0, 0, 1); if (unlikely(!__pyx_t_5)) __PYX_ERR(27, 54, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_5);
    __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
    __pyx_t_4 = __Pyx_GetItemInt(__pyx_cur_scope->__pyx_v_tup, 4, long, 1, __Pyx_PyInt_From_long, 0, 0, 1); if (unlikely(!__pyx_t_4)) __PYX_ERR(27, 54, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_4);
    __pyx_t_6 = __Pyx_GetItemInt(__pyx_t_4, 1, long, 1, __Pyx_PyInt_From_long, 0, 0, 1); if (unlikely(!__pyx_t_6)) __PYX_ERR(27, 54, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_6);
    __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
    __pyx_t_4 = PyTuple_New(2); if (unlikely(!__pyx_t_4)) __PYX_ERR(27, 54, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_4);
    __Pyx_GIVEREF(__pyx_t_5);
    PyTuple_SET_ITEM(__pyx_t_4, 0, __pyx_t_5);
    __Pyx_GIVEREF(__pyx_t_6);
    PyTuple_SET_ITEM(__pyx_t_4, 1, __pyx_t_6);
    __pyx_t_5 = 0;
    __pyx_t_6 = 0;
    if (unlikely(PySet_Add(__pyx_r, (PyObject*)__pyx_t_4))) __PYX_ERR(27, 54, __pyx_L1_error)
    __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
  }
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  CYTHON_MAYBE_UNUSED_VAR(__pyx_cur_scope);

  /* function exit code */
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_r); __pyx_r = 0;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_XDECREF(__pyx_t_4);
  __Pyx_XDECREF(__pyx_t_5);
  __Pyx_XDECREF(__pyx_t_6);
  __Pyx_AddTraceback("genexpr", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  #if !CYTHON_USE_EXC_INFO_STACK
  __Pyx_Coroutine_ResetAndClearException(__pyx_generator);
  #endif
  __pyx_generator->resume_label = -1;
  __Pyx_Coroutine_clear((PyObject*)__pyx_generator);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "src/python/grpcio/grpc/_cython/_cygrpc/iomgr.pyx.pxi":52
 *   return grpc_sockaddr_get_uri_scheme(&c_addr) == b'ipv4'
 * 
 * cdef grpc_resolved_addresses* tuples_to_resolvaddr(tups):             # <<<<<<<<<<<<<<
 *   cdef grpc_resolved_addresses* addresses
 *   tups_set = set((tup[4][0], tup[4][1]) for tup in tups)
 */

static grpc_resolved_addresses *__pyx_f_4grpc_7_cython_6cygrpc_tuples_to_resolvaddr(PyObject *__pyx_v_tups) {
  struct __pyx_obj_4grpc_7_cython_6cygrpc___pyx_scope_struct_7___pyx_f_4grpc_7_cython_6cygrpc_tuples_to_resolvaddr *__pyx_cur_scope;
  grpc_resolved_addresses *__pyx_v_addresses;
  PyObject *__pyx_v_tups_set = NULL;
  PyObject *__pyx_v_i = NULL;
  PyObject *__pyx_v_tup = NULL;
  PyObject *__pyx_v_hostname = NULL;
  PyObject *__pyx_gb_4grpc_7_cython_6cygrpc_20tuples_to_resolvaddr_2generator47 = 0;
  grpc_resolved_addresses *__pyx_r;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  PyObject *__pyx_t_2 = NULL;
  Py_ssize_t __pyx_t_3;
  Py_ssize_t __pyx_t_4;
  int __pyx_t_5;
  PyObject *__pyx_t_6 = NULL;
  int __pyx_t_7;
  Py_ssize_t __pyx_t_8;
  char *__pyx_t_9;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("tuples_to_resolvaddr", 0);
  __pyx_cur_scope = (struct __pyx_obj_4grpc_7_cython_6cygrpc___pyx_scope_struct_7___pyx_f_4grpc_7_cython_6cygrpc_tuples_to_resolvaddr *)__pyx_tp_new_4grpc_7_cython_6cygrpc___pyx_scope_struct_7___pyx_f_4grpc_7_cython_6cygrpc_tuples_to_resolvaddr(__pyx_ptype_4grpc_7_cython_6cygrpc___pyx_scope_struct_7___pyx_f_4grpc_7_cython_6cygrpc_tuples_to_resolvaddr, __pyx_empty_tuple, NULL);
  if (unlikely(!__pyx_cur_scope)) {
    __pyx_cur_scope = ((struct __pyx_obj_4grpc_7_cython_6cygrpc___pyx_scope_struct_7___pyx_f_4grpc_7_cython_6cygrpc_tuples_to_resolvaddr *)Py_None);
    __Pyx_INCREF(Py_None);
    __PYX_ERR(27, 52, __pyx_L1_error)
  } else {
    __Pyx_GOTREF(__pyx_cur_scope);
  }
  __pyx_cur_scope->__pyx_v_tups = __pyx_v_tups;
  __Pyx_INCREF(__pyx_cur_scope->__pyx_v_tups);
  __Pyx_GIVEREF(__pyx_cur_scope->__pyx_v_tups);

  /* "src/python/grpcio/grpc/_cython/_cygrpc/iomgr.pyx.pxi":54
 * cdef grpc_resolved_addresses* tuples_to_resolvaddr(tups):
 *   cdef grpc_resolved_addresses* addresses
 *   tups_set = set((tup[4][0], tup[4][1]) for tup in tups)             # <<<<<<<<<<<<<<
 *   addresses = <grpc_resolved_addresses*> malloc(sizeof(grpc_resolved_addresses))
 *   addresses.naddrs = len(tups_set)
 */
  __pyx_t_1 = __pyx_pf_4grpc_7_cython_6cygrpc_20tuples_to_resolvaddr_genexpr(((PyObject*)__pyx_cur_scope)); if (unlikely(!__pyx_t_1)) __PYX_ERR(27, 54, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_t_2 = __Pyx_Generator_Next(__pyx_t_1); if (unlikely(!__pyx_t_2)) __PYX_ERR(27, 54, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  __pyx_v_tups_set = ((PyObject*)__pyx_t_2);
  __pyx_t_2 = 0;

  /* "src/python/grpcio/grpc/_cython/_cygrpc/iomgr.pyx.pxi":55
 *   cdef grpc_resolved_addresses* addresses
 *   tups_set = set((tup[4][0], tup[4][1]) for tup in tups)
 *   addresses = <grpc_resolved_addresses*> malloc(sizeof(grpc_resolved_addresses))             # <<<<<<<<<<<<<<
 *   addresses.naddrs = len(tups_set)
 *   addresses.addrs = <grpc_resolved_address*> malloc(sizeof(grpc_resolved_address) * len(tups_set))
 */
  __pyx_v_addresses = ((grpc_resolved_addresses *)malloc((sizeof(grpc_resolved_addresses))));

  /* "src/python/grpcio/grpc/_cython/_cygrpc/iomgr.pyx.pxi":56
 *   tups_set = set((tup[4][0], tup[4][1]) for tup in tups)
 *   addresses = <grpc_resolved_addresses*> malloc(sizeof(grpc_resolved_addresses))
 *   addresses.naddrs = len(tups_set)             # <<<<<<<<<<<<<<
 *   addresses.addrs = <grpc_resolved_address*> malloc(sizeof(grpc_resolved_address) * len(tups_set))
 *   i = 0
 */
  if (unlikely(__pyx_v_tups_set == Py_None)) {
    PyErr_SetString(PyExc_TypeError, "object of type 'NoneType' has no len()");
    __PYX_ERR(27, 56, __pyx_L1_error)
  }
  __pyx_t_3 = PySet_GET_SIZE(__pyx_v_tups_set); if (unlikely(__pyx_t_3 == ((Py_ssize_t)-1))) __PYX_ERR(27, 56, __pyx_L1_error)
  __pyx_v_addresses->naddrs = __pyx_t_3;

  /* "src/python/grpcio/grpc/_cython/_cygrpc/iomgr.pyx.pxi":57
 *   addresses = <grpc_resolved_addresses*> malloc(sizeof(grpc_resolved_addresses))
 *   addresses.naddrs = len(tups_set)
 *   addresses.addrs = <grpc_resolved_address*> malloc(sizeof(grpc_resolved_address) * len(tups_set))             # <<<<<<<<<<<<<<
 *   i = 0
 *   for tup in set(tups_set):
 */
  if (unlikely(__pyx_v_tups_set == Py_None)) {
    PyErr_SetString(PyExc_TypeError, "object of type 'NoneType' has no len()");
    __PYX_ERR(27, 57, __pyx_L1_error)
  }
  __pyx_t_3 = PySet_GET_SIZE(__pyx_v_tups_set); if (unlikely(__pyx_t_3 == ((Py_ssize_t)-1))) __PYX_ERR(27, 57, __pyx_L1_error)
  __pyx_v_addresses->addrs = ((grpc_resolved_address *)malloc(((sizeof(grpc_resolved_address)) * __pyx_t_3)));

  /* "src/python/grpcio/grpc/_cython/_cygrpc/iomgr.pyx.pxi":58
 *   addresses.naddrs = len(tups_set)
 *   addresses.addrs = <grpc_resolved_address*> malloc(sizeof(grpc_resolved_address) * len(tups_set))
 *   i = 0             # <<<<<<<<<<<<<<
 *   for tup in set(tups_set):
 *     hostname = str_to_bytes(tup[0])
 */
  __Pyx_INCREF(__pyx_int_0);
  __pyx_v_i = __pyx_int_0;

  /* "src/python/grpcio/grpc/_cython/_cygrpc/iomgr.pyx.pxi":59
 *   addresses.addrs = <grpc_resolved_address*> malloc(sizeof(grpc_resolved_address) * len(tups_set))
 *   i = 0
 *   for tup in set(tups_set):             # <<<<<<<<<<<<<<
 *     hostname = str_to_bytes(tup[0])
 *     grpc_string_to_sockaddr(&addresses.addrs[i], hostname, tup[1])
 */
  __pyx_t_3 = 0;
  __pyx_t_1 = PySet_New(__pyx_v_tups_set); if (unlikely(!__pyx_t_1)) __PYX_ERR(27, 59, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_t_6 = __Pyx_set_iterator(__pyx_t_1, 1, (&__pyx_t_4), (&__pyx_t_5)); if (unlikely(!__pyx_t_6)) __PYX_ERR(27, 59, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_6);
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  __Pyx_XDECREF(__pyx_t_2);
  __pyx_t_2 = __pyx_t_6;
  __pyx_t_6 = 0;
  while (1) {
    __pyx_t_7 = __Pyx_set_iter_next(__pyx_t_2, __pyx_t_4, &__pyx_t_3, &__pyx_t_6, __pyx_t_5);
    if (unlikely(__pyx_t_7 == 0)) break;
    if (unlikely(__pyx_t_7 == -1)) __PYX_ERR(27, 59, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_6);
    __Pyx_XDECREF_SET(__pyx_v_tup, __pyx_t_6);
    __pyx_t_6 = 0;

    /* "src/python/grpcio/grpc/_cython/_cygrpc/iomgr.pyx.pxi":60
 *   i = 0
 *   for tup in set(tups_set):
 *     hostname = str_to_bytes(tup[0])             # <<<<<<<<<<<<<<
 *     grpc_string_to_sockaddr(&addresses.addrs[i], hostname, tup[1])
 *     i += 1
 */
    __pyx_t_6 = __Pyx_GetItemInt(__pyx_v_tup, 0, long, 1, __Pyx_PyInt_From_long, 0, 0, 1); if (unlikely(!__pyx_t_6)) __PYX_ERR(27, 60, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_6);
    __pyx_t_1 = __pyx_f_4grpc_7_cython_6cygrpc_str_to_bytes(__pyx_t_6); if (unlikely(!__pyx_t_1)) __PYX_ERR(27, 60, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_1);
    __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
    __Pyx_XDECREF_SET(__pyx_v_hostname, ((PyObject*)__pyx_t_1));
    __pyx_t_1 = 0;

    /* "src/python/grpcio/grpc/_cython/_cygrpc/iomgr.pyx.pxi":61
 *   for tup in set(tups_set):
 *     hostname = str_to_bytes(tup[0])
 *     grpc_string_to_sockaddr(&addresses.addrs[i], hostname, tup[1])             # <<<<<<<<<<<<<<
 *     i += 1
 *   return addresses
 */
    __pyx_t_8 = __Pyx_PyIndex_AsSsize_t(__pyx_v_i); if (unlikely((__pyx_t_8 == (Py_ssize_t)-1) && PyErr_Occurred())) __PYX_ERR(27, 61, __pyx_L1_error)
    if (unlikely(__pyx_v_hostname == Py_None)) {
      PyErr_SetString(PyExc_TypeError, "expected bytes, NoneType found");
      __PYX_ERR(27, 61, __pyx_L1_error)
    }
    __pyx_t_9 = __Pyx_PyBytes_AsWritableString(__pyx_v_hostname); if (unlikely((!__pyx_t_9) && PyErr_Occurred())) __PYX_ERR(27, 61, __pyx_L1_error)
    __pyx_t_1 = __Pyx_GetItemInt(__pyx_v_tup, 1, long, 1, __Pyx_PyInt_From_long, 0, 0, 1); if (unlikely(!__pyx_t_1)) __PYX_ERR(27, 61, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_1);
    __pyx_t_7 = __Pyx_PyInt_As_int(__pyx_t_1); if (unlikely((__pyx_t_7 == (int)-1) && PyErr_Occurred())) __PYX_ERR(27, 61, __pyx_L1_error)
    __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
    (void)(grpc_string_to_sockaddr((&(__pyx_v_addresses->addrs[__pyx_t_8])), __pyx_t_9, __pyx_t_7));

    /* "src/python/grpcio/grpc/_cython/_cygrpc/iomgr.pyx.pxi":62
 *     hostname = str_to_bytes(tup[0])
 *     grpc_string_to_sockaddr(&addresses.addrs[i], hostname, tup[1])
 *     i += 1             # <<<<<<<<<<<<<<
 *   return addresses
 */
    __pyx_t_1 = __Pyx_PyInt_AddObjC(__pyx_v_i, __pyx_int_1, 1, 1, 0); if (unlikely(!__pyx_t_1)) __PYX_ERR(27, 62, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_1);
    __Pyx_DECREF_SET(__pyx_v_i, __pyx_t_1);
    __pyx_t_1 = 0;
  }
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;

  /* "src/python/grpcio/grpc/_cython/_cygrpc/iomgr.pyx.pxi":63
 *     grpc_string_to_sockaddr(&addresses.addrs[i], hostname, tup[1])
 *     i += 1
 *   return addresses             # <<<<<<<<<<<<<<
 */
  __pyx_r = __pyx_v_addresses;
  goto __pyx_L0;

  /* "src/python/grpcio/grpc/_cython/_cygrpc/iomgr.pyx.pxi":52
 *   return grpc_sockaddr_get_uri_scheme(&c_addr) == b'ipv4'
 * 
 * cdef grpc_resolved_addresses* tuples_to_resolvaddr(tups):             # <<<<<<<<<<<<<<
 *   cdef grpc_resolved_addresses* addresses
 *   tups_set = set((tup[4][0], tup[4][1]) for tup in tups)
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_XDECREF(__pyx_t_6);
  __Pyx_WriteUnraisable("grpc._cython.cygrpc.tuples_to_resolvaddr", __pyx_clineno, __pyx_lineno, __pyx_filename, 1, 0);
  __pyx_r = 0;
  __pyx_L0:;
  __Pyx_XDECREF(__pyx_v_tups_set);
  __Pyx_XDECREF(__pyx_v_i);
  __Pyx_XDECREF(__pyx_v_tup);
  __Pyx_XDECREF(__pyx_v_hostname);
  __Pyx_XDECREF(__pyx_gb_4grpc_7_cython_6cygrpc_20tuples_to_resolvaddr_2generator47);
  __Pyx_DECREF(((PyObject *)__pyx_cur_scope));
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "src/python/grpcio/grpc/_cython/_cygrpc/grpc_gevent.pyx.pxi":26
 * g_pool = None
 * 
 * def _spawn_greenlet(*args):             # <<<<<<<<<<<<<<
 *   greenlet = g_pool.spawn(*args)
 * 
 */

/* Python wrapper */
static PyObject *__pyx_pw_4grpc_7_cython_6cygrpc_63_spawn_greenlet(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
static PyMethodDef __pyx_mdef_4grpc_7_cython_6cygrpc_63_spawn_greenlet = {"_spawn_greenlet", (PyCFunction)(void*)(PyCFunctionWithKeywords)__pyx_pw_4grpc_7_cython_6cygrpc_63_spawn_greenlet, METH_VARARGS|METH_KEYWORDS, 0};
static PyObject *__pyx_pw_4grpc_7_cython_6cygrpc_63_spawn_greenlet(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
  PyObject *__pyx_v_args = 0;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("_spawn_greenlet (wrapper)", 0);
  if (unlikely(__pyx_kwds) && unlikely(PyDict_Size(__pyx_kwds) > 0) && unlikely(!__Pyx_CheckKeywordStrings(__pyx_kwds, "_spawn_greenlet", 0))) return NULL;
  __Pyx_INCREF(__pyx_args);
  __pyx_v_args = __pyx_args;
  __pyx_r = __pyx_pf_4grpc_7_cython_6cygrpc_62_spawn_greenlet(__pyx_self, __pyx_v_args);

  /* function exit code */
  __Pyx_XDECREF(__pyx_v_args);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_4grpc_7_cython_6cygrpc_62_spawn_greenlet(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__pyx_v_args) {
  CYTHON_UNUSED PyObject *__pyx_v_greenlet = NULL;
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  PyObject *__pyx_t_2 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("_spawn_greenlet", 0);

  /* "src/python/grpcio/grpc/_cython/_cygrpc/grpc_gevent.pyx.pxi":27
 * 
 * def _spawn_greenlet(*args):
 *   greenlet = g_pool.spawn(*args)             # <<<<<<<<<<<<<<
 * 
 * ###############################
 */
  __Pyx_GetModuleGlobalName(__pyx_t_1, __pyx_n_s_g_pool); if (unlikely(!__pyx_t_1)) __PYX_ERR(6, 27, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_t_1, __pyx_n_s_spawn); if (unlikely(!__pyx_t_2)) __PYX_ERR(6, 27, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  __pyx_t_1 = __Pyx_PyObject_Call(__pyx_t_2, __pyx_v_args, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(6, 27, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  __pyx_v_greenlet = __pyx_t_1;
  __pyx_t_1 = 0;

  /* "src/python/grpcio/grpc/_cython/_cygrpc/grpc_gevent.pyx.pxi":26
 * g_pool = None
 * 
 * def _spawn_greenlet(*args):             # <<<<<<<<<<<<<<
 *   greenlet = g_pool.spawn(*args)
 * 
 */

  /* function exit code */
  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_AddTraceback("grpc._cython.cygrpc._spawn_greenlet", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XDECREF(__pyx_v_greenlet);
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "src/python/grpcio/grpc/_cython/_cygrpc/grpc_gevent.pyx.pxi":34
 * 
 * cdef class SocketWrapper:
 *   def __cinit__(self):             # <<<<<<<<<<<<<<
 *     fork_handlers_and_grpc_init()
 *     self.sockopts = []
 */

/* Python wrapper */
static int __pyx_pw_4grpc_7_cython_6cygrpc_13SocketWrapper_1__cinit__(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
static int __pyx_pw_4grpc_7_cython_6cygrpc_13SocketWrapper_1__cinit__(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
  int __pyx_r;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__cinit__ (wrapper)", 0);
  if (unlikely(PyTuple_GET_SIZE(__pyx_args) > 0)) {
    __Pyx_RaiseArgtupleInvalid("__cinit__", 1, 0, 0, PyTuple_GET_SIZE(__pyx_args)); return -1;}
  if (unlikely(__pyx_kwds) && unlikely(PyDict_Size(__pyx_kwds) > 0) && unlikely(!__Pyx_CheckKeywordStrings(__pyx_kwds, "__cinit__", 0))) return -1;
  __pyx_r = __pyx_pf_4grpc_7_cython_6cygrpc_13SocketWrapper___cinit__(((struct __pyx_obj_4grpc_7_cython_6cygrpc_SocketWrapper *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static int __pyx_pf_4grpc_7_cython_6cygrpc_13SocketWrapper___cinit__(struct __pyx_obj_4grpc_7_cython_6cygrpc_SocketWrapper *__pyx_v_self) {
  int __pyx_r;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  PyObject *__pyx_t_2 = NULL;
  PyObject *__pyx_t_3 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("__cinit__", 0);

  /* "src/python/grpcio/grpc/_cython/_cygrpc/grpc_gevent.pyx.pxi":35
 * cdef class SocketWrapper:
 *   def __cinit__(self):
 *     fork_handlers_and_grpc_init()             # <<<<<<<<<<<<<<
 *     self.sockopts = []
 *     self.socket = None
 */
  __Pyx_GetModuleGlobalName(__pyx_t_2, __pyx_n_s_fork_handlers_and_grpc_init); if (unlikely(!__pyx_t_2)) __PYX_ERR(6, 35, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __pyx_t_3 = NULL;
  if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_2))) {
    __pyx_t_3 = PyMethod_GET_SELF(__pyx_t_2);
    if (likely(__pyx_t_3)) {
      PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_2);
      __Pyx_INCREF(__pyx_t_3);
      __Pyx_INCREF(function);
      __Pyx_DECREF_SET(__pyx_t_2, function);
    }
  }
  __pyx_t_1 = (__pyx_t_3) ? __Pyx_PyObject_CallOneArg(__pyx_t_2, __pyx_t_3) : __Pyx_PyObject_CallNoArg(__pyx_t_2);
  __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0;
  if (unlikely(!__pyx_t_1)) __PYX_ERR(6, 35, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;

  /* "src/python/grpcio/grpc/_cython/_cygrpc/grpc_gevent.pyx.pxi":36
 *   def __cinit__(self):
 *     fork_handlers_and_grpc_init()
 *     self.sockopts = []             # <<<<<<<<<<<<<<
 *     self.socket = None
 *     self.c_socket = NULL
 */
  __pyx_t_1 = PyList_New(0); if (unlikely(!__pyx_t_1)) __PYX_ERR(6, 36, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_GIVEREF(__pyx_t_1);
  __Pyx_GOTREF(__pyx_v_self->sockopts);
  __Pyx_DECREF(__pyx_v_self->sockopts);
  __pyx_v_self->sockopts = __pyx_t_1;
  __pyx_t_1 = 0;

  /* "src/python/grpcio/grpc/_cython/_cygrpc/grpc_gevent.pyx.pxi":37
 *     fork_handlers_and_grpc_init()
 *     self.sockopts = []
 *     self.socket = None             # <<<<<<<<<<<<<<
 *     self.c_socket = NULL
 *     self.c_buffer = NULL
 */
  __Pyx_INCREF(Py_None);
  __Pyx_GIVEREF(Py_None);
  __Pyx_GOTREF(__pyx_v_self->socket);
  __Pyx_DECREF(__pyx_v_self->socket);
  __pyx_v_self->socket = Py_None;

  /* "src/python/grpcio/grpc/_cython/_cygrpc/grpc_gevent.pyx.pxi":38
 *     self.sockopts = []
 *     self.socket = None
 *     self.c_socket = NULL             # <<<<<<<<<<<<<<
 *     self.c_buffer = NULL
 *     self.len = 0
 */
  __pyx_v_self->c_socket = NULL;

  /* "src/python/grpcio/grpc/_cython/_cygrpc/grpc_gevent.pyx.pxi":39
 *     self.socket = None
 *     self.c_socket = NULL
 *     self.c_buffer = NULL             # <<<<<<<<<<<<<<
 *     self.len = 0
 * 
 */
  __pyx_v_self->c_buffer = NULL;

  /* "src/python/grpcio/grpc/_cython/_cygrpc/grpc_gevent.pyx.pxi":40
 *     self.c_socket = NULL
 *     self.c_buffer = NULL
 *     self.len = 0             # <<<<<<<<<<<<<<
 * 
 *   def __dealloc__(self):
 */
  __pyx_v_self->len = 0;

  /* "src/python/grpcio/grpc/_cython/_cygrpc/grpc_gevent.pyx.pxi":34
 * 
 * cdef class SocketWrapper:
 *   def __cinit__(self):             # <<<<<<<<<<<<<<
 *     fork_handlers_and_grpc_init()
 *     self.sockopts = []
 */

  /* function exit code */
  __pyx_r = 0;
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_XDECREF(__pyx_t_3);
  __Pyx_AddTraceback("grpc._cython.cygrpc.SocketWrapper.__cinit__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = -1;
  __pyx_L0:;
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "src/python/grpcio/grpc/_cython/_cygrpc/grpc_gevent.pyx.pxi":42
 *     self.len = 0
 * 
 *   def __dealloc__(self):             # <<<<<<<<<<<<<<
 *     grpc_shutdown()
 * 
 */

/* Python wrapper */
static void __pyx_pw_4grpc_7_cython_6cygrpc_13SocketWrapper_3__dealloc__(PyObject *__pyx_v_self); /*proto*/
static void __pyx_pw_4grpc_7_cython_6cygrpc_13SocketWrapper_3__dealloc__(PyObject *__pyx_v_self) {
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__dealloc__ (wrapper)", 0);
  __pyx_pf_4grpc_7_cython_6cygrpc_13SocketWrapper_2__dealloc__(((struct __pyx_obj_4grpc_7_cython_6cygrpc_SocketWrapper *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
}

static void __pyx_pf_4grpc_7_cython_6cygrpc_13SocketWrapper_2__dealloc__(CYTHON_UNUSED struct __pyx_obj_4grpc_7_cython_6cygrpc_SocketWrapper *__pyx_v_self) {
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__dealloc__", 0);

  /* "src/python/grpcio/grpc/_cython/_cygrpc/grpc_gevent.pyx.pxi":43
 * 
 *   def __dealloc__(self):
 *     grpc_shutdown()             # <<<<<<<<<<<<<<
 * 
 * cdef grpc_error_handle socket_init(grpc_custom_socket* socket, int domain) with gil:
 */
  grpc_shutdown();

  /* "src/python/grpcio/grpc/_cython/_cygrpc/grpc_gevent.pyx.pxi":42
 *     self.len = 0
 * 
 *   def __dealloc__(self):             # <<<<<<<<<<<<<<
 *     grpc_shutdown()
 * 
 */

  /* function exit code */
  __Pyx_RefNannyFinishContext();
}

/* "(tree fragment)":1
 * def __reduce_cython__(self):             # <<<<<<<<<<<<<<
 *     raise TypeError("no default __reduce__ due to non-trivial __cinit__")
 * def __setstate_cython__(self, __pyx_state):
 */

/* Python wrapper */
static PyObject *__pyx_pw_4grpc_7_cython_6cygrpc_13SocketWrapper_5__reduce_cython__(PyObject *__pyx_v_self, CYTHON_UNUSED PyObject *unused); /*proto*/
static PyObject *__pyx_pw_4grpc_7_cython_6cygrpc_13SocketWrapper_5__reduce_cython__(PyObject *__pyx_v_self, CYTHON_UNUSED PyObject *unused) {
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__reduce_cython__ (wrapper)", 0);
  __pyx_r = __pyx_pf_4grpc_7_cython_6cygrpc_13SocketWrapper_4__reduce_cython__(((struct __pyx_obj_4grpc_7_cython_6cygrpc_SocketWrapper *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_4grpc_7_cython_6cygrpc_13SocketWrapper_4__reduce_cython__(CYTHON_UNUSED struct __pyx_obj_4grpc_7_cython_6cygrpc_SocketWrapper *__pyx_v_self) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("__reduce_cython__", 0);

  /* "(tree fragment)":2
 * def __reduce_cython__(self):
 *     raise TypeError("no default __reduce__ due to non-trivial __cinit__")             # <<<<<<<<<<<<<<
 * def __setstate_cython__(self, __pyx_state):
 *     raise TypeError("no default __reduce__ due to non-trivial __cinit__")
 */
  __pyx_t_1 = __Pyx_PyObject_Call(__pyx_builtin_TypeError, __pyx_tuple__122, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(11, 2, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_Raise(__pyx_t_1, 0, 0, 0);
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  __PYX_ERR(11, 2, __pyx_L1_error)

  /* "(tree fragment)":1
 * def __reduce_cython__(self):             # <<<<<<<<<<<<<<
 *     raise TypeError("no default __reduce__ due to non-trivial __cinit__")
 * def __setstate_cython__(self, __pyx_state):
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_AddTraceback("grpc._cython.cygrpc.SocketWrapper.__reduce_cython__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "(tree fragment)":3
 * def __reduce_cython__(self):
 *     raise TypeError("no default __reduce__ due to non-trivial __cinit__")
 * def __setstate_cython__(self, __pyx_state):             # <<<<<<<<<<<<<<
 *     raise TypeError("no default __reduce__ due to non-trivial __cinit__")
 */

/* Python wrapper */
static PyObject *__pyx_pw_4grpc_7_cython_6cygrpc_13SocketWrapper_7__setstate_cython__(PyObject *__pyx_v_self, PyObject *__pyx_v___pyx_state); /*proto*/
static PyObject *__pyx_pw_4grpc_7_cython_6cygrpc_13SocketWrapper_7__setstate_cython__(PyObject *__pyx_v_self, PyObject *__pyx_v___pyx_state) {
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__setstate_cython__ (wrapper)", 0);
  __pyx_r = __pyx_pf_4grpc_7_cython_6cygrpc_13SocketWrapper_6__setstate_cython__(((struct __pyx_obj_4grpc_7_cython_6cygrpc_SocketWrapper *)__pyx_v_self), ((PyObject *)__pyx_v___pyx_state));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_4grpc_7_cython_6cygrpc_13SocketWrapper_6__setstate_cython__(CYTHON_UNUSED struct __pyx_obj_4grpc_7_cython_6cygrpc_SocketWrapper *__pyx_v_self, CYTHON_UNUSED PyObject *__pyx_v___pyx_state) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("__setstate_cython__", 0);

  /* "(tree fragment)":4
 *     raise TypeError("no default __reduce__ due to non-trivial __cinit__")
 * def __setstate_cython__(self, __pyx_state):
 *     raise TypeError("no default __reduce__ due to non-trivial __cinit__")             # <<<<<<<<<<<<<<
 */
  __pyx_t_1 = __Pyx_PyObject_Call(__pyx_builtin_TypeError, __pyx_tuple__123, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(11, 4, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_Raise(__pyx_t_1, 0, 0, 0);
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  __PYX_ERR(11, 4, __pyx_L1_error)

  /* "(tree fragment)":3
 * def __reduce_cython__(self):
 *     raise TypeError("no default __reduce__ due to non-trivial __cinit__")
 * def __setstate_cython__(self, __pyx_state):             # <<<<<<<<<<<<<<
 *     raise TypeError("no default __reduce__ due to non-trivial __cinit__")
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_AddTraceback("grpc._cython.cygrpc.SocketWrapper.__setstate_cython__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "src/python/grpcio/grpc/_cython/_cygrpc/grpc_gevent.pyx.pxi":45
 *     grpc_shutdown()
 * 
 * cdef grpc_error_handle socket_init(grpc_custom_socket* socket, int domain) with gil:             # <<<<<<<<<<<<<<
 *   sw = SocketWrapper()
 *   sw.c_socket = socket
 */

static grpc_error_handle __pyx_f_4grpc_7_cython_6cygrpc_socket_init(struct grpc_custom_socket *__pyx_v_socket, CYTHON_UNUSED int __pyx_v_domain) {
  struct __pyx_obj_4grpc_7_cython_6cygrpc_SocketWrapper *__pyx_v_sw = NULL;
  grpc_error_handle __pyx_r;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  #ifdef WITH_THREAD
  PyGILState_STATE __pyx_gilstate_save = __Pyx_PyGILState_Ensure();
  #endif
  __Pyx_RefNannySetupContext("socket_init", 0);

  /* "src/python/grpcio/grpc/_cython/_cygrpc/grpc_gevent.pyx.pxi":46
 * 
 * cdef grpc_error_handle socket_init(grpc_custom_socket* socket, int domain) with gil:
 *   sw = SocketWrapper()             # <<<<<<<<<<<<<<
 *   sw.c_socket = socket
 *   sw.sockopts = []
 */
  __pyx_t_1 = __Pyx_PyObject_CallNoArg(((PyObject *)__pyx_ptype_4grpc_7_cython_6cygrpc_SocketWrapper)); if (unlikely(!__pyx_t_1)) __PYX_ERR(6, 46, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_v_sw = ((struct __pyx_obj_4grpc_7_cython_6cygrpc_SocketWrapper *)__pyx_t_1);
  __pyx_t_1 = 0;

  /* "src/python/grpcio/grpc/_cython/_cygrpc/grpc_gevent.pyx.pxi":47
 * cdef grpc_error_handle socket_init(grpc_custom_socket* socket, int domain) with gil:
 *   sw = SocketWrapper()
 *   sw.c_socket = socket             # <<<<<<<<<<<<<<
 *   sw.sockopts = []
 *   cpython.Py_INCREF(sw)
 */
  __pyx_v_sw->c_socket = __pyx_v_socket;

  /* "src/python/grpcio/grpc/_cython/_cygrpc/grpc_gevent.pyx.pxi":48
 *   sw = SocketWrapper()
 *   sw.c_socket = socket
 *   sw.sockopts = []             # <<<<<<<<<<<<<<
 *   cpython.Py_INCREF(sw)
 *   # Python doesn't support AF_UNSPEC sockets, so we defer creation until
 */
  __pyx_t_1 = PyList_New(0); if (unlikely(!__pyx_t_1)) __PYX_ERR(6, 48, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_GIVEREF(__pyx_t_1);
  __Pyx_GOTREF(__pyx_v_sw->sockopts);
  __Pyx_DECREF(__pyx_v_sw->sockopts);
  __pyx_v_sw->sockopts = __pyx_t_1;
  __pyx_t_1 = 0;

  /* "src/python/grpcio/grpc/_cython/_cygrpc/grpc_gevent.pyx.pxi":49
 *   sw.c_socket = socket
 *   sw.sockopts = []
 *   cpython.Py_INCREF(sw)             # <<<<<<<<<<<<<<
 *   # Python doesn't support AF_UNSPEC sockets, so we defer creation until
 *   # bind/connect when we know what type of socket we need
 */
  Py_INCREF(((PyObject *)__pyx_v_sw));

  /* "src/python/grpcio/grpc/_cython/_cygrpc/grpc_gevent.pyx.pxi":52
 *   # Python doesn't support AF_UNSPEC sockets, so we defer creation until
 *   # bind/connect when we know what type of socket we need
 *   sw.socket = None             # <<<<<<<<<<<<<<
 *   sw.closed = False
 *   sw.accepting_socket = NULL
 */
  __Pyx_INCREF(Py_None);
  __Pyx_GIVEREF(Py_None);
  __Pyx_GOTREF(__pyx_v_sw->socket);
  __Pyx_DECREF(__pyx_v_sw->socket);
  __pyx_v_sw->socket = Py_None;

  /* "src/python/grpcio/grpc/_cython/_cygrpc/grpc_gevent.pyx.pxi":53
 *   # bind/connect when we know what type of socket we need
 *   sw.socket = None
 *   sw.closed = False             # <<<<<<<<<<<<<<
 *   sw.accepting_socket = NULL
 *   socket.impl = <void*>sw
 */
  __Pyx_INCREF(Py_False);
  __Pyx_GIVEREF(Py_False);
  __Pyx_GOTREF(__pyx_v_sw->closed);
  __Pyx_DECREF(__pyx_v_sw->closed);
  __pyx_v_sw->closed = Py_False;

  /* "src/python/grpcio/grpc/_cython/_cygrpc/grpc_gevent.pyx.pxi":54
 *   sw.socket = None
 *   sw.closed = False
 *   sw.accepting_socket = NULL             # <<<<<<<<<<<<<<
 *   socket.impl = <void*>sw
 *   return grpc_error_none()
 */
  __pyx_v_sw->accepting_socket = NULL;

  /* "src/python/grpcio/grpc/_cython/_cygrpc/grpc_gevent.pyx.pxi":55
 *   sw.closed = False
 *   sw.accepting_socket = NULL
 *   socket.impl = <void*>sw             # <<<<<<<<<<<<<<
 *   return grpc_error_none()
 * 
 */
  __pyx_v_socket->impl = ((void *)__pyx_v_sw);

  /* "src/python/grpcio/grpc/_cython/_cygrpc/grpc_gevent.pyx.pxi":56
 *   sw.accepting_socket = NULL
 *   socket.impl = <void*>sw
 *   return grpc_error_none()             # <<<<<<<<<<<<<<
 * 
 * cdef socket_connect_async_cython(SocketWrapper socket_wrapper, addr_tuple):
 */
  __pyx_r = __pyx_f_4grpc_7_cython_6cygrpc_grpc_error_none();
  goto __pyx_L0;

  /* "src/python/grpcio/grpc/_cython/_cygrpc/grpc_gevent.pyx.pxi":45
 *     grpc_shutdown()
 * 
 * cdef grpc_error_handle socket_init(grpc_custom_socket* socket, int domain) with gil:             # <<<<<<<<<<<<<<
 *   sw = SocketWrapper()
 *   sw.c_socket = socket
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_WriteUnraisable("grpc._cython.cygrpc.socket_init", __pyx_clineno, __pyx_lineno, __pyx_filename, 1, 0);
  __pyx_r = 0;
  __pyx_L0:;
  __Pyx_XDECREF((PyObject *)__pyx_v_sw);
  __Pyx_RefNannyFinishContext();
  #ifdef WITH_THREAD
  __Pyx_PyGILState_Release(__pyx_gilstate_save);
  #endif
  return __pyx_r;
}

/* "src/python/grpcio/grpc/_cython/_cygrpc/grpc_gevent.pyx.pxi":58
 *   return grpc_error_none()
 * 
 * cdef socket_connect_async_cython(SocketWrapper socket_wrapper, addr_tuple):             # <<<<<<<<<<<<<<
 *   try:
 *     socket_wrapper.socket.connect(addr_tuple)
 */

static PyObject *__pyx_f_4grpc_7_cython_6cygrpc_socket_connect_async_cython(struct __pyx_obj_4grpc_7_cython_6cygrpc_SocketWrapper *__pyx_v_socket_wrapper, PyObject *__pyx_v_addr_tuple) {
  PyObject *__pyx_v_io_error = NULL;
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  PyObject *__pyx_t_2 = NULL;
  PyObject *__pyx_t_3 = NULL;
  PyObject *__pyx_t_4 = NULL;
  PyObject *__pyx_t_5 = NULL;
  PyObject *__pyx_t_6 = NULL;
  int __pyx_t_7;
  PyObject *__pyx_t_8 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("socket_connect_async_cython", 0);

  /* "src/python/grpcio/grpc/_cython/_cygrpc/grpc_gevent.pyx.pxi":59
 * 
 * cdef socket_connect_async_cython(SocketWrapper socket_wrapper, addr_tuple):
 *   try:             # <<<<<<<<<<<<<<
 *     socket_wrapper.socket.connect(addr_tuple)
 *     socket_wrapper.connect_cb(<grpc_custom_socket*>socket_wrapper.c_socket,
 */
  {
    __Pyx_PyThreadState_declare
    __Pyx_PyThreadState_assign
    __Pyx_ExceptionSave(&__pyx_t_1, &__pyx_t_2, &__pyx_t_3);
    __Pyx_XGOTREF(__pyx_t_1);
    __Pyx_XGOTREF(__pyx_t_2);
    __Pyx_XGOTREF(__pyx_t_3);
    /*try:*/ {

      /* "src/python/grpcio/grpc/_cython/_cygrpc/grpc_gevent.pyx.pxi":60
 * cdef socket_connect_async_cython(SocketWrapper socket_wrapper, addr_tuple):
 *   try:
 *     socket_wrapper.socket.connect(addr_tuple)             # <<<<<<<<<<<<<<
 *     socket_wrapper.connect_cb(<grpc_custom_socket*>socket_wrapper.c_socket,
 *                               grpc_error_none())
 */
      __pyx_t_5 = __Pyx_PyObject_GetAttrStr(__pyx_v_socket_wrapper->socket, __pyx_n_s_connect); if (unlikely(!__pyx_t_5)) __PYX_ERR(6, 60, __pyx_L3_error)
      __Pyx_GOTREF(__pyx_t_5);
      __pyx_t_6 = NULL;
      if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_5))) {
        __pyx_t_6 = PyMethod_GET_SELF(__pyx_t_5);
        if (likely(__pyx_t_6)) {
          PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_5);
          __Pyx_INCREF(__pyx_t_6);
          __Pyx_INCREF(function);
          __Pyx_DECREF_SET(__pyx_t_5, function);
        }
      }
      __pyx_t_4 = (__pyx_t_6) ? __Pyx_PyObject_Call2Args(__pyx_t_5, __pyx_t_6, __pyx_v_addr_tuple) : __Pyx_PyObject_CallOneArg(__pyx_t_5, __pyx_v_addr_tuple);
      __Pyx_XDECREF(__pyx_t_6); __pyx_t_6 = 0;
      if (unlikely(!__pyx_t_4)) __PYX_ERR(6, 60, __pyx_L3_error)
      __Pyx_GOTREF(__pyx_t_4);
      __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
      __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;

      /* "src/python/grpcio/grpc/_cython/_cygrpc/grpc_gevent.pyx.pxi":61
 *   try:
 *     socket_wrapper.socket.connect(addr_tuple)
 *     socket_wrapper.connect_cb(<grpc_custom_socket*>socket_wrapper.c_socket,             # <<<<<<<<<<<<<<
 *                               grpc_error_none())
 *   except IOError as io_error:
 */
      __pyx_v_socket_wrapper->connect_cb(((struct grpc_custom_socket *)__pyx_v_socket_wrapper->c_socket), __pyx_f_4grpc_7_cython_6cygrpc_grpc_error_none());

      /* "src/python/grpcio/grpc/_cython/_cygrpc/grpc_gevent.pyx.pxi":59
 * 
 * cdef socket_connect_async_cython(SocketWrapper socket_wrapper, addr_tuple):
 *   try:             # <<<<<<<<<<<<<<
 *     socket_wrapper.socket.connect(addr_tuple)
 *     socket_wrapper.connect_cb(<grpc_custom_socket*>socket_wrapper.c_socket,
 */
    }
    __Pyx_XDECREF(__pyx_t_1); __pyx_t_1 = 0;
    __Pyx_XDECREF(__pyx_t_2); __pyx_t_2 = 0;
    __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0;
    goto __pyx_L8_try_end;
    __pyx_L3_error:;
    __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0;
    __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0;
    __Pyx_XDECREF(__pyx_t_6); __pyx_t_6 = 0;

    /* "src/python/grpcio/grpc/_cython/_cygrpc/grpc_gevent.pyx.pxi":63
 *     socket_wrapper.connect_cb(<grpc_custom_socket*>socket_wrapper.c_socket,
 *                               grpc_error_none())
 *   except IOError as io_error:             # <<<<<<<<<<<<<<
 *     socket_wrapper.connect_cb(<grpc_custom_socket*>socket_wrapper.c_socket,
 *                               socket_error("connect", str(io_error)))
 */
    __pyx_t_7 = __Pyx_PyErr_ExceptionMatches(__pyx_builtin_IOError);
    if (__pyx_t_7) {
      __Pyx_AddTraceback("grpc._cython.cygrpc.socket_connect_async_cython", __pyx_clineno, __pyx_lineno, __pyx_filename);
      if (__Pyx_GetException(&__pyx_t_4, &__pyx_t_5, &__pyx_t_6) < 0) __PYX_ERR(6, 63, __pyx_L5_except_error)
      __Pyx_GOTREF(__pyx_t_4);
      __Pyx_GOTREF(__pyx_t_5);
      __Pyx_GOTREF(__pyx_t_6);
      __Pyx_INCREF(__pyx_t_5);
      __pyx_v_io_error = __pyx_t_5;

      /* "src/python/grpcio/grpc/_cython/_cygrpc/grpc_gevent.pyx.pxi":65
 *   except IOError as io_error:
 *     socket_wrapper.connect_cb(<grpc_custom_socket*>socket_wrapper.c_socket,
 *                               socket_error("connect", str(io_error)))             # <<<<<<<<<<<<<<
 *   g_event.set()
 * 
 */
      __pyx_t_8 = __Pyx_PyObject_CallOneArg(((PyObject *)(&PyString_Type)), __pyx_v_io_error); if (unlikely(!__pyx_t_8)) __PYX_ERR(6, 65, __pyx_L5_except_error)
      __Pyx_GOTREF(__pyx_t_8);
      if (!(likely(PyString_CheckExact(__pyx_t_8))||((__pyx_t_8) == Py_None)||(PyErr_Format(PyExc_TypeError, "Expected %.16s, got %.200s", "str", Py_TYPE(__pyx_t_8)->tp_name), 0))) __PYX_ERR(6, 65, __pyx_L5_except_error)

      /* "src/python/grpcio/grpc/_cython/_cygrpc/grpc_gevent.pyx.pxi":64
 *                               grpc_error_none())
 *   except IOError as io_error:
 *     socket_wrapper.connect_cb(<grpc_custom_socket*>socket_wrapper.c_socket,             # <<<<<<<<<<<<<<
 *                               socket_error("connect", str(io_error)))
 *   g_event.set()
 */
      __pyx_v_socket_wrapper->connect_cb(((struct grpc_custom_socket *)__pyx_v_socket_wrapper->c_socket), __pyx_f_4grpc_7_cython_6cygrpc_socket_error(__pyx_n_s_connect, ((PyObject*)__pyx_t_8)));
      __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
      __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0;
      __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0;
      __Pyx_XDECREF(__pyx_t_6); __pyx_t_6 = 0;
      goto __pyx_L4_exception_handled;
    }
    goto __pyx_L5_except_error;
    __pyx_L5_except_error:;

    /* "src/python/grpcio/grpc/_cython/_cygrpc/grpc_gevent.pyx.pxi":59
 * 
 * cdef socket_connect_async_cython(SocketWrapper socket_wrapper, addr_tuple):
 *   try:             # <<<<<<<<<<<<<<
 *     socket_wrapper.socket.connect(addr_tuple)
 *     socket_wrapper.connect_cb(<grpc_custom_socket*>socket_wrapper.c_socket,
 */
    __Pyx_XGIVEREF(__pyx_t_1);
    __Pyx_XGIVEREF(__pyx_t_2);
    __Pyx_XGIVEREF(__pyx_t_3);
    __Pyx_ExceptionReset(__pyx_t_1, __pyx_t_2, __pyx_t_3);
    goto __pyx_L1_error;
    __pyx_L4_exception_handled:;
    __Pyx_XGIVEREF(__pyx_t_1);
    __Pyx_XGIVEREF(__pyx_t_2);
    __Pyx_XGIVEREF(__pyx_t_3);
    __Pyx_ExceptionReset(__pyx_t_1, __pyx_t_2, __pyx_t_3);
    __pyx_L8_try_end:;
  }

  /* "src/python/grpcio/grpc/_cython/_cygrpc/grpc_gevent.pyx.pxi":66
 *     socket_wrapper.connect_cb(<grpc_custom_socket*>socket_wrapper.c_socket,
 *                               socket_error("connect", str(io_error)))
 *   g_event.set()             # <<<<<<<<<<<<<<
 * 
 * def socket_connect_async(socket_wrapper, addr_tuple):
 */
  __Pyx_GetModuleGlobalName(__pyx_t_5, __pyx_n_s_g_event); if (unlikely(!__pyx_t_5)) __PYX_ERR(6, 66, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_5);
  __pyx_t_4 = __Pyx_PyObject_GetAttrStr(__pyx_t_5, __pyx_n_s_set); if (unlikely(!__pyx_t_4)) __PYX_ERR(6, 66, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_4);
  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
  __pyx_t_5 = NULL;
  if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_4))) {
    __pyx_t_5 = PyMethod_GET_SELF(__pyx_t_4);
    if (likely(__pyx_t_5)) {
      PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_4);
      __Pyx_INCREF(__pyx_t_5);
      __Pyx_INCREF(function);
      __Pyx_DECREF_SET(__pyx_t_4, function);
    }
  }
  __pyx_t_6 = (__pyx_t_5) ? __Pyx_PyObject_CallOneArg(__pyx_t_4, __pyx_t_5) : __Pyx_PyObject_CallNoArg(__pyx_t_4);
  __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0;
  if (unlikely(!__pyx_t_6)) __PYX_ERR(6, 66, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_6);
  __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
  __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;

  /* "src/python/grpcio/grpc/_cython/_cygrpc/grpc_gevent.pyx.pxi":58
 *   return grpc_error_none()
 * 
 * cdef socket_connect_async_cython(SocketWrapper socket_wrapper, addr_tuple):             # <<<<<<<<<<<<<<
 *   try:
 *     socket_wrapper.socket.connect(addr_tuple)
 */

  /* function exit code */
  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_4);
  __Pyx_XDECREF(__pyx_t_5);
  __Pyx_XDECREF(__pyx_t_6);
  __Pyx_XDECREF(__pyx_t_8);
  __Pyx_AddTraceback("grpc._cython.cygrpc.socket_connect_async_cython", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = 0;
  __pyx_L0:;
  __Pyx_XDECREF(__pyx_v_io_error);
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "src/python/grpcio/grpc/_cython/_cygrpc/grpc_gevent.pyx.pxi":68
 *   g_event.set()
 * 
 * def socket_connect_async(socket_wrapper, addr_tuple):             # <<<<<<<<<<<<<<
 *   socket_connect_async_cython(socket_wrapper, addr_tuple)
 * 
 */

/* Python wrapper */
static PyObject *__pyx_pw_4grpc_7_cython_6cygrpc_65socket_connect_async(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
static PyMethodDef __pyx_mdef_4grpc_7_cython_6cygrpc_65socket_connect_async = {"socket_connect_async", (PyCFunction)(void*)(PyCFunctionWithKeywords)__pyx_pw_4grpc_7_cython_6cygrpc_65socket_connect_async, METH_VARARGS|METH_KEYWORDS, 0};
static PyObject *__pyx_pw_4grpc_7_cython_6cygrpc_65socket_connect_async(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
  PyObject *__pyx_v_socket_wrapper = 0;
  PyObject *__pyx_v_addr_tuple = 0;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("socket_connect_async (wrapper)", 0);
  {
    static PyObject **__pyx_pyargnames[] = {&__pyx_n_s_socket_wrapper,&__pyx_n_s_addr_tuple,0};
    PyObject* values[2] = {0,0};
    if (unlikely(__pyx_kwds)) {
      Py_ssize_t kw_args;
      const Py_ssize_t pos_args = PyTuple_GET_SIZE(__pyx_args);
      switch (pos_args) {
        case  2: values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
        CYTHON_FALLTHROUGH;
        case  1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
        CYTHON_FALLTHROUGH;
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      kw_args = PyDict_Size(__pyx_kwds);
      switch (pos_args) {
        case  0:
        if (likely((values[0] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_socket_wrapper)) != 0)) kw_args--;
        else goto __pyx_L5_argtuple_error;
        CYTHON_FALLTHROUGH;
        case  1:
        if (likely((values[1] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_addr_tuple)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("socket_connect_async", 1, 2, 2, 1); __PYX_ERR(6, 68, __pyx_L3_error)
        }
      }
      if (unlikely(kw_args > 0)) {
        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "socket_connect_async") < 0)) __PYX_ERR(6, 68, __pyx_L3_error)
      }
    } else if (PyTuple_GET_SIZE(__pyx_args) != 2) {
      goto __pyx_L5_argtuple_error;
    } else {
      values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
      values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
    }
    __pyx_v_socket_wrapper = values[0];
    __pyx_v_addr_tuple = values[1];
  }
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("socket_connect_async", 1, 2, 2, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(6, 68, __pyx_L3_error)
  __pyx_L3_error:;
  __Pyx_AddTraceback("grpc._cython.cygrpc.socket_connect_async", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  __pyx_r = __pyx_pf_4grpc_7_cython_6cygrpc_64socket_connect_async(__pyx_self, __pyx_v_socket_wrapper, __pyx_v_addr_tuple);

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_4grpc_7_cython_6cygrpc_64socket_connect_async(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__pyx_v_socket_wrapper, PyObject *__pyx_v_addr_tuple) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("socket_connect_async", 0);

  /* "src/python/grpcio/grpc/_cython/_cygrpc/grpc_gevent.pyx.pxi":69
 * 
 * def socket_connect_async(socket_wrapper, addr_tuple):
 *   socket_connect_async_cython(socket_wrapper, addr_tuple)             # <<<<<<<<<<<<<<
 * 
 * cdef void socket_connect(grpc_custom_socket* socket, const grpc_sockaddr* addr,
 */
  if (!(likely(((__pyx_v_socket_wrapper) == Py_None) || likely(__Pyx_TypeTest(__pyx_v_socket_wrapper, __pyx_ptype_4grpc_7_cython_6cygrpc_SocketWrapper))))) __PYX_ERR(6, 69, __pyx_L1_error)
  __pyx_t_1 = __pyx_f_4grpc_7_cython_6cygrpc_socket_connect_async_cython(((struct __pyx_obj_4grpc_7_cython_6cygrpc_SocketWrapper *)__pyx_v_socket_wrapper), __pyx_v_addr_tuple); if (unlikely(!__pyx_t_1)) __PYX_ERR(6, 69, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;

  /* "src/python/grpcio/grpc/_cython/_cygrpc/grpc_gevent.pyx.pxi":68
 *   g_event.set()
 * 
 * def socket_connect_async(socket_wrapper, addr_tuple):             # <<<<<<<<<<<<<<
 *   socket_connect_async_cython(socket_wrapper, addr_tuple)
 * 
 */

  /* function exit code */
  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_AddTraceback("grpc._cython.cygrpc.socket_connect_async", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "src/python/grpcio/grpc/_cython/_cygrpc/grpc_gevent.pyx.pxi":71
 *   socket_connect_async_cython(socket_wrapper, addr_tuple)
 * 
 * cdef void socket_connect(grpc_custom_socket* socket, const grpc_sockaddr* addr,             # <<<<<<<<<<<<<<
 *                          size_t addr_len,
 *                          grpc_custom_connect_callback cb) with gil:
 */

static void __pyx_f_4grpc_7_cython_6cygrpc_socket_connect(struct grpc_custom_socket *__pyx_v_socket, grpc_sockaddr const *__pyx_v_addr, size_t __pyx_v_addr_len, grpc_custom_connect_callback __pyx_v_cb) {
  PyObject *__pyx_v_py_socket = NULL;
  struct __pyx_obj_4grpc_7_cython_6cygrpc_SocketWrapper *__pyx_v_socket_wrapper = NULL;
  PyObject *__pyx_v_addr_tuple = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  int __pyx_t_2;
  PyObject *__pyx_t_3 = NULL;
  PyObject *__pyx_t_4 = NULL;
  PyObject *__pyx_t_5 = NULL;
  int __pyx_t_6;
  PyObject *__pyx_t_7 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  #ifdef WITH_THREAD
  PyGILState_STATE __pyx_gilstate_save = __Pyx_PyGILState_Ensure();
  #endif
  __Pyx_RefNannySetupContext("socket_connect", 0);

  /* "src/python/grpcio/grpc/_cython/_cygrpc/grpc_gevent.pyx.pxi":74
 *                          size_t addr_len,
 *                          grpc_custom_connect_callback cb) with gil:
 *   py_socket = None             # <<<<<<<<<<<<<<
 *   socket_wrapper = <SocketWrapper>socket.impl
 *   socket_wrapper.connect_cb = cb
 */
  __Pyx_INCREF(Py_None);
  __pyx_v_py_socket = Py_None;

  /* "src/python/grpcio/grpc/_cython/_cygrpc/grpc_gevent.pyx.pxi":75
 *                          grpc_custom_connect_callback cb) with gil:
 *   py_socket = None
 *   socket_wrapper = <SocketWrapper>socket.impl             # <<<<<<<<<<<<<<
 *   socket_wrapper.connect_cb = cb
 *   addr_tuple = sockaddr_to_tuple(addr, addr_len)
 */
  __pyx_t_1 = ((PyObject *)__pyx_v_socket->impl);
  __Pyx_INCREF(__pyx_t_1);
  __pyx_v_socket_wrapper = ((struct __pyx_obj_4grpc_7_cython_6cygrpc_SocketWrapper *)__pyx_t_1);
  __pyx_t_1 = 0;

  /* "src/python/grpcio/grpc/_cython/_cygrpc/grpc_gevent.pyx.pxi":76
 *   py_socket = None
 *   socket_wrapper = <SocketWrapper>socket.impl
 *   socket_wrapper.connect_cb = cb             # <<<<<<<<<<<<<<
 *   addr_tuple = sockaddr_to_tuple(addr, addr_len)
 *   if sockaddr_is_ipv4(addr, addr_len):
 */
  __pyx_v_socket_wrapper->connect_cb = __pyx_v_cb;

  /* "src/python/grpcio/grpc/_cython/_cygrpc/grpc_gevent.pyx.pxi":77
 *   socket_wrapper = <SocketWrapper>socket.impl
 *   socket_wrapper.connect_cb = cb
 *   addr_tuple = sockaddr_to_tuple(addr, addr_len)             # <<<<<<<<<<<<<<
 *   if sockaddr_is_ipv4(addr, addr_len):
 *       py_socket = gevent_socket.socket(gevent_socket.AF_INET)
 */
  __pyx_t_1 = __pyx_f_4grpc_7_cython_6cygrpc_sockaddr_to_tuple(__pyx_v_addr, __pyx_v_addr_len); if (unlikely(!__pyx_t_1)) __PYX_ERR(6, 77, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_v_addr_tuple = __pyx_t_1;
  __pyx_t_1 = 0;

  /* "src/python/grpcio/grpc/_cython/_cygrpc/grpc_gevent.pyx.pxi":78
 *   socket_wrapper.connect_cb = cb
 *   addr_tuple = sockaddr_to_tuple(addr, addr_len)
 *   if sockaddr_is_ipv4(addr, addr_len):             # <<<<<<<<<<<<<<
 *       py_socket = gevent_socket.socket(gevent_socket.AF_INET)
 *   else:
 */
  __pyx_t_1 = __pyx_f_4grpc_7_cython_6cygrpc_sockaddr_is_ipv4(__pyx_v_addr, __pyx_v_addr_len); if (unlikely(!__pyx_t_1)) __PYX_ERR(6, 78, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_t_2 = __Pyx_PyObject_IsTrue(__pyx_t_1); if (unlikely(__pyx_t_2 < 0)) __PYX_ERR(6, 78, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  if (__pyx_t_2) {

    /* "src/python/grpcio/grpc/_cython/_cygrpc/grpc_gevent.pyx.pxi":79
 *   addr_tuple = sockaddr_to_tuple(addr, addr_len)
 *   if sockaddr_is_ipv4(addr, addr_len):
 *       py_socket = gevent_socket.socket(gevent_socket.AF_INET)             # <<<<<<<<<<<<<<
 *   else:
 *       py_socket = gevent_socket.socket(gevent_socket.AF_INET6)
 */
    __Pyx_GetModuleGlobalName(__pyx_t_3, __pyx_n_s_gevent_socket); if (unlikely(!__pyx_t_3)) __PYX_ERR(6, 79, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_3);
    __pyx_t_4 = __Pyx_PyObject_GetAttrStr(__pyx_t_3, __pyx_n_s_socket); if (unlikely(!__pyx_t_4)) __PYX_ERR(6, 79, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_4);
    __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
    __Pyx_GetModuleGlobalName(__pyx_t_3, __pyx_n_s_gevent_socket); if (unlikely(!__pyx_t_3)) __PYX_ERR(6, 79, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_3);
    __pyx_t_5 = __Pyx_PyObject_GetAttrStr(__pyx_t_3, __pyx_n_s_AF_INET); if (unlikely(!__pyx_t_5)) __PYX_ERR(6, 79, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_5);
    __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
    __pyx_t_3 = NULL;
    if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_4))) {
      __pyx_t_3 = PyMethod_GET_SELF(__pyx_t_4);
      if (likely(__pyx_t_3)) {
        PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_4);
        __Pyx_INCREF(__pyx_t_3);
        __Pyx_INCREF(function);
        __Pyx_DECREF_SET(__pyx_t_4, function);
      }
    }
    __pyx_t_1 = (__pyx_t_3) ? __Pyx_PyObject_Call2Args(__pyx_t_4, __pyx_t_3, __pyx_t_5) : __Pyx_PyObject_CallOneArg(__pyx_t_4, __pyx_t_5);
    __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0;
    __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
    if (unlikely(!__pyx_t_1)) __PYX_ERR(6, 79, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_1);
    __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
    __Pyx_DECREF_SET(__pyx_v_py_socket, __pyx_t_1);
    __pyx_t_1 = 0;

    /* "src/python/grpcio/grpc/_cython/_cygrpc/grpc_gevent.pyx.pxi":78
 *   socket_wrapper.connect_cb = cb
 *   addr_tuple = sockaddr_to_tuple(addr, addr_len)
 *   if sockaddr_is_ipv4(addr, addr_len):             # <<<<<<<<<<<<<<
 *       py_socket = gevent_socket.socket(gevent_socket.AF_INET)
 *   else:
 */
    goto __pyx_L3;
  }

  /* "src/python/grpcio/grpc/_cython/_cygrpc/grpc_gevent.pyx.pxi":81
 *       py_socket = gevent_socket.socket(gevent_socket.AF_INET)
 *   else:
 *       py_socket = gevent_socket.socket(gevent_socket.AF_INET6)             # <<<<<<<<<<<<<<
 *   applysockopts(py_socket)
 *   socket_wrapper.socket = py_socket
 */
  /*else*/ {
    __Pyx_GetModuleGlobalName(__pyx_t_4, __pyx_n_s_gevent_socket); if (unlikely(!__pyx_t_4)) __PYX_ERR(6, 81, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_4);
    __pyx_t_5 = __Pyx_PyObject_GetAttrStr(__pyx_t_4, __pyx_n_s_socket); if (unlikely(!__pyx_t_5)) __PYX_ERR(6, 81, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_5);
    __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
    __Pyx_GetModuleGlobalName(__pyx_t_4, __pyx_n_s_gevent_socket); if (unlikely(!__pyx_t_4)) __PYX_ERR(6, 81, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_4);
    __pyx_t_3 = __Pyx_PyObject_GetAttrStr(__pyx_t_4, __pyx_n_s_AF_INET6); if (unlikely(!__pyx_t_3)) __PYX_ERR(6, 81, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_3);
    __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
    __pyx_t_4 = NULL;
    if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_5))) {
      __pyx_t_4 = PyMethod_GET_SELF(__pyx_t_5);
      if (likely(__pyx_t_4)) {
        PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_5);
        __Pyx_INCREF(__pyx_t_4);
        __Pyx_INCREF(function);
        __Pyx_DECREF_SET(__pyx_t_5, function);
      }
    }
    __pyx_t_1 = (__pyx_t_4) ? __Pyx_PyObject_Call2Args(__pyx_t_5, __pyx_t_4, __pyx_t_3) : __Pyx_PyObject_CallOneArg(__pyx_t_5, __pyx_t_3);
    __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0;
    __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
    if (unlikely(!__pyx_t_1)) __PYX_ERR(6, 81, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_1);
    __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
    __Pyx_DECREF_SET(__pyx_v_py_socket, __pyx_t_1);
    __pyx_t_1 = 0;
  }
  __pyx_L3:;

  /* "src/python/grpcio/grpc/_cython/_cygrpc/grpc_gevent.pyx.pxi":82
 *   else:
 *       py_socket = gevent_socket.socket(gevent_socket.AF_INET6)
 *   applysockopts(py_socket)             # <<<<<<<<<<<<<<
 *   socket_wrapper.socket = py_socket
 *   _spawn_greenlet(socket_connect_async, socket_wrapper, addr_tuple)
 */
  __Pyx_GetModuleGlobalName(__pyx_t_5, __pyx_n_s_applysockopts); if (unlikely(!__pyx_t_5)) __PYX_ERR(6, 82, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_5);
  __pyx_t_3 = NULL;
  if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_5))) {
    __pyx_t_3 = PyMethod_GET_SELF(__pyx_t_5);
    if (likely(__pyx_t_3)) {
      PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_5);
      __Pyx_INCREF(__pyx_t_3);
      __Pyx_INCREF(function);
      __Pyx_DECREF_SET(__pyx_t_5, function);
    }
  }
  __pyx_t_1 = (__pyx_t_3) ? __Pyx_PyObject_Call2Args(__pyx_t_5, __pyx_t_3, __pyx_v_py_socket) : __Pyx_PyObject_CallOneArg(__pyx_t_5, __pyx_v_py_socket);
  __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0;
  if (unlikely(!__pyx_t_1)) __PYX_ERR(6, 82, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;

  /* "src/python/grpcio/grpc/_cython/_cygrpc/grpc_gevent.pyx.pxi":83
 *       py_socket = gevent_socket.socket(gevent_socket.AF_INET6)
 *   applysockopts(py_socket)
 *   socket_wrapper.socket = py_socket             # <<<<<<<<<<<<<<
 *   _spawn_greenlet(socket_connect_async, socket_wrapper, addr_tuple)
 * 
 */
  __Pyx_INCREF(__pyx_v_py_socket);
  __Pyx_GIVEREF(__pyx_v_py_socket);
  __Pyx_GOTREF(__pyx_v_socket_wrapper->socket);
  __Pyx_DECREF(__pyx_v_socket_wrapper->socket);
  __pyx_v_socket_wrapper->socket = __pyx_v_py_socket;

  /* "src/python/grpcio/grpc/_cython/_cygrpc/grpc_gevent.pyx.pxi":84
 *   applysockopts(py_socket)
 *   socket_wrapper.socket = py_socket
 *   _spawn_greenlet(socket_connect_async, socket_wrapper, addr_tuple)             # <<<<<<<<<<<<<<
 * 
 * cdef void socket_destroy(grpc_custom_socket* socket) with gil:
 */
  __Pyx_GetModuleGlobalName(__pyx_t_5, __pyx_n_s_spawn_greenlet); if (unlikely(!__pyx_t_5)) __PYX_ERR(6, 84, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_5);
  __Pyx_GetModuleGlobalName(__pyx_t_3, __pyx_n_s_socket_connect_async); if (unlikely(!__pyx_t_3)) __PYX_ERR(6, 84, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  __pyx_t_4 = NULL;
  __pyx_t_6 = 0;
  if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_5))) {
    __pyx_t_4 = PyMethod_GET_SELF(__pyx_t_5);
    if (likely(__pyx_t_4)) {
      PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_5);
      __Pyx_INCREF(__pyx_t_4);
      __Pyx_INCREF(function);
      __Pyx_DECREF_SET(__pyx_t_5, function);
      __pyx_t_6 = 1;
    }
  }
  #if CYTHON_FAST_PYCALL
  if (PyFunction_Check(__pyx_t_5)) {
    PyObject *__pyx_temp[4] = {__pyx_t_4, __pyx_t_3, ((PyObject *)__pyx_v_socket_wrapper), __pyx_v_addr_tuple};
    __pyx_t_1 = __Pyx_PyFunction_FastCall(__pyx_t_5, __pyx_temp+1-__pyx_t_6, 3+__pyx_t_6); if (unlikely(!__pyx_t_1)) __PYX_ERR(6, 84, __pyx_L1_error)
    __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0;
    __Pyx_GOTREF(__pyx_t_1);
    __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
  } else
  #endif
  #if CYTHON_FAST_PYCCALL
  if (__Pyx_PyFastCFunction_Check(__pyx_t_5)) {
    PyObject *__pyx_temp[4] = {__pyx_t_4, __pyx_t_3, ((PyObject *)__pyx_v_socket_wrapper), __pyx_v_addr_tuple};
    __pyx_t_1 = __Pyx_PyCFunction_FastCall(__pyx_t_5, __pyx_temp+1-__pyx_t_6, 3+__pyx_t_6); if (unlikely(!__pyx_t_1)) __PYX_ERR(6, 84, __pyx_L1_error)
    __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0;
    __Pyx_GOTREF(__pyx_t_1);
    __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
  } else
  #endif
  {
    __pyx_t_7 = PyTuple_New(3+__pyx_t_6); if (unlikely(!__pyx_t_7)) __PYX_ERR(6, 84, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_7);
    if (__pyx_t_4) {
      __Pyx_GIVEREF(__pyx_t_4); PyTuple_SET_ITEM(__pyx_t_7, 0, __pyx_t_4); __pyx_t_4 = NULL;
    }
    __Pyx_GIVEREF(__pyx_t_3);
    PyTuple_SET_ITEM(__pyx_t_7, 0+__pyx_t_6, __pyx_t_3);
    __Pyx_INCREF(((PyObject *)__pyx_v_socket_wrapper));
    __Pyx_GIVEREF(((PyObject *)__pyx_v_socket_wrapper));
    PyTuple_SET_ITEM(__pyx_t_7, 1+__pyx_t_6, ((PyObject *)__pyx_v_socket_wrapper));
    __Pyx_INCREF(__pyx_v_addr_tuple);
    __Pyx_GIVEREF(__pyx_v_addr_tuple);
    PyTuple_SET_ITEM(__pyx_t_7, 2+__pyx_t_6, __pyx_v_addr_tuple);
    __pyx_t_3 = 0;
    __pyx_t_1 = __Pyx_PyObject_Call(__pyx_t_5, __pyx_t_7, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(6, 84, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_1);
    __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
  }
  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;

  /* "src/python/grpcio/grpc/_cython/_cygrpc/grpc_gevent.pyx.pxi":71
 *   socket_connect_async_cython(socket_wrapper, addr_tuple)
 * 
 * cdef void socket_connect(grpc_custom_socket* socket, const grpc_sockaddr* addr,             # <<<<<<<<<<<<<<
 *                          size_t addr_len,
 *                          grpc_custom_connect_callback cb) with gil:
 */

  /* function exit code */
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_XDECREF(__pyx_t_3);
  __Pyx_XDECREF(__pyx_t_4);
  __Pyx_XDECREF(__pyx_t_5);
  __Pyx_XDECREF(__pyx_t_7);
  __Pyx_WriteUnraisable("grpc._cython.cygrpc.socket_connect", __pyx_clineno, __pyx_lineno, __pyx_filename, 1, 0);
  __pyx_L0:;
  __Pyx_XDECREF(__pyx_v_py_socket);
  __Pyx_XDECREF((PyObject *)__pyx_v_socket_wrapper);
  __Pyx_XDECREF(__pyx_v_addr_tuple);
  __Pyx_RefNannyFinishContext();
  #ifdef WITH_THREAD
  __Pyx_PyGILState_Release(__pyx_gilstate_save);
  #endif
}

/* "src/python/grpcio/grpc/_cython/_cygrpc/grpc_gevent.pyx.pxi":86
 *   _spawn_greenlet(socket_connect_async, socket_wrapper, addr_tuple)
 * 
 * cdef void socket_destroy(grpc_custom_socket* socket) with gil:             # <<<<<<<<<<<<<<
 *   cpython.Py_DECREF(<SocketWrapper>socket.impl)
 * 
 */

static void __pyx_f_4grpc_7_cython_6cygrpc_socket_destroy(struct grpc_custom_socket *__pyx_v_socket) {
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  #ifdef WITH_THREAD
  PyGILState_STATE __pyx_gilstate_save = __Pyx_PyGILState_Ensure();
  #endif
  __Pyx_RefNannySetupContext("socket_destroy", 0);

  /* "src/python/grpcio/grpc/_cython/_cygrpc/grpc_gevent.pyx.pxi":87
 * 
 * cdef void socket_destroy(grpc_custom_socket* socket) with gil:
 *   cpython.Py_DECREF(<SocketWrapper>socket.impl)             # <<<<<<<<<<<<<<
 * 
 * cdef void socket_shutdown(grpc_custom_socket* socket) with gil:
 */
  __pyx_t_1 = ((PyObject *)__pyx_v_socket->impl);
  __Pyx_INCREF(__pyx_t_1);
  Py_DECREF(__pyx_t_1);
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;

  /* "src/python/grpcio/grpc/_cython/_cygrpc/grpc_gevent.pyx.pxi":86
 *   _spawn_greenlet(socket_connect_async, socket_wrapper, addr_tuple)
 * 
 * cdef void socket_destroy(grpc_custom_socket* socket) with gil:             # <<<<<<<<<<<<<<
 *   cpython.Py_DECREF(<SocketWrapper>socket.impl)
 * 
 */

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  #ifdef WITH_THREAD
  __Pyx_PyGILState_Release(__pyx_gilstate_save);
  #endif
}

/* "src/python/grpcio/grpc/_cython/_cygrpc/grpc_gevent.pyx.pxi":89
 *   cpython.Py_DECREF(<SocketWrapper>socket.impl)
 * 
 * cdef void socket_shutdown(grpc_custom_socket* socket) with gil:             # <<<<<<<<<<<<<<
 *   try:
 *     (<SocketWrapper>socket.impl).socket.shutdown(gevent_socket.SHUT_RDWR)
 */

static void __pyx_f_4grpc_7_cython_6cygrpc_socket_shutdown(struct grpc_custom_socket *__pyx_v_socket) {
  PyObject *__pyx_v_io_error = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  PyObject *__pyx_t_2 = NULL;
  PyObject *__pyx_t_3 = NULL;
  PyObject *__pyx_t_4 = NULL;
  PyObject *__pyx_t_5 = NULL;
  PyObject *__pyx_t_6 = NULL;
  PyObject *__pyx_t_7 = NULL;
  int __pyx_t_8;
  PyObject *__pyx_t_9 = NULL;
  PyObject *__pyx_t_10 = NULL;
  int __pyx_t_11;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  #ifdef WITH_THREAD
  PyGILState_STATE __pyx_gilstate_save = __Pyx_PyGILState_Ensure();
  #endif
  __Pyx_RefNannySetupContext("socket_shutdown", 0);

  /* "src/python/grpcio/grpc/_cython/_cygrpc/grpc_gevent.pyx.pxi":90
 * 
 * cdef void socket_shutdown(grpc_custom_socket* socket) with gil:
 *   try:             # <<<<<<<<<<<<<<
 *     (<SocketWrapper>socket.impl).socket.shutdown(gevent_socket.SHUT_RDWR)
 *   except IOError as io_error:
 */
  {
    __Pyx_PyThreadState_declare
    __Pyx_PyThreadState_assign
    __Pyx_ExceptionSave(&__pyx_t_1, &__pyx_t_2, &__pyx_t_3);
    __Pyx_XGOTREF(__pyx_t_1);
    __Pyx_XGOTREF(__pyx_t_2);
    __Pyx_XGOTREF(__pyx_t_3);
    /*try:*/ {

      /* "src/python/grpcio/grpc/_cython/_cygrpc/grpc_gevent.pyx.pxi":91
 * cdef void socket_shutdown(grpc_custom_socket* socket) with gil:
 *   try:
 *     (<SocketWrapper>socket.impl).socket.shutdown(gevent_socket.SHUT_RDWR)             # <<<<<<<<<<<<<<
 *   except IOError as io_error:
 *     if io_error.errno != errno.ENOTCONN:
 */
      __pyx_t_5 = __Pyx_PyObject_GetAttrStr(((struct __pyx_obj_4grpc_7_cython_6cygrpc_SocketWrapper *)__pyx_v_socket->impl)->socket, __pyx_n_s_shutdown); if (unlikely(!__pyx_t_5)) __PYX_ERR(6, 91, __pyx_L3_error)
      __Pyx_GOTREF(__pyx_t_5);
      __Pyx_GetModuleGlobalName(__pyx_t_6, __pyx_n_s_gevent_socket); if (unlikely(!__pyx_t_6)) __PYX_ERR(6, 91, __pyx_L3_error)
      __Pyx_GOTREF(__pyx_t_6);
      __pyx_t_7 = __Pyx_PyObject_GetAttrStr(__pyx_t_6, __pyx_n_s_SHUT_RDWR); if (unlikely(!__pyx_t_7)) __PYX_ERR(6, 91, __pyx_L3_error)
      __Pyx_GOTREF(__pyx_t_7);
      __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
      __pyx_t_6 = NULL;
      if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_5))) {
        __pyx_t_6 = PyMethod_GET_SELF(__pyx_t_5);
        if (likely(__pyx_t_6)) {
          PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_5);
          __Pyx_INCREF(__pyx_t_6);
          __Pyx_INCREF(function);
          __Pyx_DECREF_SET(__pyx_t_5, function);
        }
      }
      __pyx_t_4 = (__pyx_t_6) ? __Pyx_PyObject_Call2Args(__pyx_t_5, __pyx_t_6, __pyx_t_7) : __Pyx_PyObject_CallOneArg(__pyx_t_5, __pyx_t_7);
      __Pyx_XDECREF(__pyx_t_6); __pyx_t_6 = 0;
      __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
      if (unlikely(!__pyx_t_4)) __PYX_ERR(6, 91, __pyx_L3_error)
      __Pyx_GOTREF(__pyx_t_4);
      __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
      __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;

      /* "src/python/grpcio/grpc/_cython/_cygrpc/grpc_gevent.pyx.pxi":90
 * 
 * cdef void socket_shutdown(grpc_custom_socket* socket) with gil:
 *   try:             # <<<<<<<<<<<<<<
 *     (<SocketWrapper>socket.impl).socket.shutdown(gevent_socket.SHUT_RDWR)
 *   except IOError as io_error:
 */
    }
    __Pyx_XDECREF(__pyx_t_1); __pyx_t_1 = 0;
    __Pyx_XDECREF(__pyx_t_2); __pyx_t_2 = 0;
    __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0;
    goto __pyx_L8_try_end;
    __pyx_L3_error:;
    __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0;
    __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0;
    __Pyx_XDECREF(__pyx_t_6); __pyx_t_6 = 0;
    __Pyx_XDECREF(__pyx_t_7); __pyx_t_7 = 0;

    /* "src/python/grpcio/grpc/_cython/_cygrpc/grpc_gevent.pyx.pxi":92
 *   try:
 *     (<SocketWrapper>socket.impl).socket.shutdown(gevent_socket.SHUT_RDWR)
 *   except IOError as io_error:             # <<<<<<<<<<<<<<
 *     if io_error.errno != errno.ENOTCONN:
 *       raise io_error
 */
    __pyx_t_8 = __Pyx_PyErr_ExceptionMatches(__pyx_builtin_IOError);
    if (__pyx_t_8) {
      __Pyx_AddTraceback("grpc._cython.cygrpc.socket_shutdown", __pyx_clineno, __pyx_lineno, __pyx_filename);
      if (__Pyx_GetException(&__pyx_t_4, &__pyx_t_5, &__pyx_t_7) < 0) __PYX_ERR(6, 92, __pyx_L5_except_error)
      __Pyx_GOTREF(__pyx_t_4);
      __Pyx_GOTREF(__pyx_t_5);
      __Pyx_GOTREF(__pyx_t_7);
      __Pyx_INCREF(__pyx_t_5);
      __pyx_v_io_error = __pyx_t_5;

      /* "src/python/grpcio/grpc/_cython/_cygrpc/grpc_gevent.pyx.pxi":93
 *     (<SocketWrapper>socket.impl).socket.shutdown(gevent_socket.SHUT_RDWR)
 *   except IOError as io_error:
 *     if io_error.errno != errno.ENOTCONN:             # <<<<<<<<<<<<<<
 *       raise io_error
 * 
 */
      __pyx_t_6 = __Pyx_PyObject_GetAttrStr(__pyx_v_io_error, __pyx_n_s_errno); if (unlikely(!__pyx_t_6)) __PYX_ERR(6, 93, __pyx_L5_except_error)
      __Pyx_GOTREF(__pyx_t_6);
      __Pyx_GetModuleGlobalName(__pyx_t_9, __pyx_n_s_errno); if (unlikely(!__pyx_t_9)) __PYX_ERR(6, 93, __pyx_L5_except_error)
      __Pyx_GOTREF(__pyx_t_9);
      __pyx_t_10 = __Pyx_PyObject_GetAttrStr(__pyx_t_9, __pyx_n_s_ENOTCONN); if (unlikely(!__pyx_t_10)) __PYX_ERR(6, 93, __pyx_L5_except_error)
      __Pyx_GOTREF(__pyx_t_10);
      __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0;
      __pyx_t_9 = PyObject_RichCompare(__pyx_t_6, __pyx_t_10, Py_NE); __Pyx_XGOTREF(__pyx_t_9); if (unlikely(!__pyx_t_9)) __PYX_ERR(6, 93, __pyx_L5_except_error)
      __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
      __Pyx_DECREF(__pyx_t_10); __pyx_t_10 = 0;
      __pyx_t_11 = __Pyx_PyObject_IsTrue(__pyx_t_9); if (unlikely(__pyx_t_11 < 0)) __PYX_ERR(6, 93, __pyx_L5_except_error)
      __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0;
      if (unlikely(__pyx_t_11)) {

        /* "src/python/grpcio/grpc/_cython/_cygrpc/grpc_gevent.pyx.pxi":94
 *   except IOError as io_error:
 *     if io_error.errno != errno.ENOTCONN:
 *       raise io_error             # <<<<<<<<<<<<<<
 * 
 * cdef void socket_close(grpc_custom_socket* socket,
 */
        __Pyx_Raise(__pyx_v_io_error, 0, 0, 0);
        __PYX_ERR(6, 94, __pyx_L5_except_error)

        /* "src/python/grpcio/grpc/_cython/_cygrpc/grpc_gevent.pyx.pxi":93
 *     (<SocketWrapper>socket.impl).socket.shutdown(gevent_socket.SHUT_RDWR)
 *   except IOError as io_error:
 *     if io_error.errno != errno.ENOTCONN:             # <<<<<<<<<<<<<<
 *       raise io_error
 * 
 */
      }
      __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0;
      __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0;
      __Pyx_XDECREF(__pyx_t_7); __pyx_t_7 = 0;
      goto __pyx_L4_exception_handled;
    }
    goto __pyx_L5_except_error;
    __pyx_L5_except_error:;

    /* "src/python/grpcio/grpc/_cython/_cygrpc/grpc_gevent.pyx.pxi":90
 * 
 * cdef void socket_shutdown(grpc_custom_socket* socket) with gil:
 *   try:             # <<<<<<<<<<<<<<
 *     (<SocketWrapper>socket.impl).socket.shutdown(gevent_socket.SHUT_RDWR)
 *   except IOError as io_error:
 */
    __Pyx_XGIVEREF(__pyx_t_1);
    __Pyx_XGIVEREF(__pyx_t_2);
    __Pyx_XGIVEREF(__pyx_t_3);
    __Pyx_ExceptionReset(__pyx_t_1, __pyx_t_2, __pyx_t_3);
    goto __pyx_L1_error;
    __pyx_L4_exception_handled:;
    __Pyx_XGIVEREF(__pyx_t_1);
    __Pyx_XGIVEREF(__pyx_t_2);
    __Pyx_XGIVEREF(__pyx_t_3);
    __Pyx_ExceptionReset(__pyx_t_1, __pyx_t_2, __pyx_t_3);
    __pyx_L8_try_end:;
  }

  /* "src/python/grpcio/grpc/_cython/_cygrpc/grpc_gevent.pyx.pxi":89
 *   cpython.Py_DECREF(<SocketWrapper>socket.impl)
 * 
 * cdef void socket_shutdown(grpc_custom_socket* socket) with gil:             # <<<<<<<<<<<<<<
 *   try:
 *     (<SocketWrapper>socket.impl).socket.shutdown(gevent_socket.SHUT_RDWR)
 */

  /* function exit code */
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_4);
  __Pyx_XDECREF(__pyx_t_5);
  __Pyx_XDECREF(__pyx_t_6);
  __Pyx_XDECREF(__pyx_t_7);
  __Pyx_XDECREF(__pyx_t_9);
  __Pyx_XDECREF(__pyx_t_10);
  __Pyx_WriteUnraisable("grpc._cython.cygrpc.socket_shutdown", __pyx_clineno, __pyx_lineno, __pyx_filename, 1, 0);
  __pyx_L0:;
  __Pyx_XDECREF(__pyx_v_io_error);
  __Pyx_RefNannyFinishContext();
  #ifdef WITH_THREAD
  __Pyx_PyGILState_Release(__pyx_gilstate_save);
  #endif
}

/* "src/python/grpcio/grpc/_cython/_cygrpc/grpc_gevent.pyx.pxi":96
 *       raise io_error
 * 
 * cdef void socket_close(grpc_custom_socket* socket,             # <<<<<<<<<<<<<<
 *                        grpc_custom_close_callback cb) with gil:
 *   socket_wrapper = (<SocketWrapper>socket.impl)
 */

static void __pyx_f_4grpc_7_cython_6cygrpc_socket_close(struct grpc_custom_socket *__pyx_v_socket, grpc_custom_close_callback __pyx_v_cb) {
  struct __pyx_obj_4grpc_7_cython_6cygrpc_SocketWrapper *__pyx_v_socket_wrapper = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  int __pyx_t_2;
  int __pyx_t_3;
  PyObject *__pyx_t_4 = NULL;
  PyObject *__pyx_t_5 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  #ifdef WITH_THREAD
  PyGILState_STATE __pyx_gilstate_save = __Pyx_PyGILState_Ensure();
  #endif
  __Pyx_RefNannySetupContext("socket_close", 0);

  /* "src/python/grpcio/grpc/_cython/_cygrpc/grpc_gevent.pyx.pxi":98
 * cdef void socket_close(grpc_custom_socket* socket,
 *                        grpc_custom_close_callback cb) with gil:
 *   socket_wrapper = (<SocketWrapper>socket.impl)             # <<<<<<<<<<<<<<
 *   if socket_wrapper.socket is not None:
 *     socket_wrapper.socket.close()
 */
  __pyx_t_1 = ((PyObject *)__pyx_v_socket->impl);
  __Pyx_INCREF(__pyx_t_1);
  __pyx_v_socket_wrapper = ((struct __pyx_obj_4grpc_7_cython_6cygrpc_SocketWrapper *)__pyx_t_1);
  __pyx_t_1 = 0;

  /* "src/python/grpcio/grpc/_cython/_cygrpc/grpc_gevent.pyx.pxi":99
 *                        grpc_custom_close_callback cb) with gil:
 *   socket_wrapper = (<SocketWrapper>socket.impl)
 *   if socket_wrapper.socket is not None:             # <<<<<<<<<<<<<<
 *     socket_wrapper.socket.close()
 *     socket_wrapper.closed = True
 */
  __pyx_t_2 = (__pyx_v_socket_wrapper->socket != Py_None);
  __pyx_t_3 = (__pyx_t_2 != 0);
  if (__pyx_t_3) {

    /* "src/python/grpcio/grpc/_cython/_cygrpc/grpc_gevent.pyx.pxi":100
 *   socket_wrapper = (<SocketWrapper>socket.impl)
 *   if socket_wrapper.socket is not None:
 *     socket_wrapper.socket.close()             # <<<<<<<<<<<<<<
 *     socket_wrapper.closed = True
 *     socket_wrapper.close_cb = cb
 */
    __pyx_t_4 = __Pyx_PyObject_GetAttrStr(__pyx_v_socket_wrapper->socket, __pyx_n_s_close); if (unlikely(!__pyx_t_4)) __PYX_ERR(6, 100, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_4);
    __pyx_t_5 = NULL;
    if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_4))) {
      __pyx_t_5 = PyMethod_GET_SELF(__pyx_t_4);
      if (likely(__pyx_t_5)) {
        PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_4);
        __Pyx_INCREF(__pyx_t_5);
        __Pyx_INCREF(function);
        __Pyx_DECREF_SET(__pyx_t_4, function);
      }
    }
    __pyx_t_1 = (__pyx_t_5) ? __Pyx_PyObject_CallOneArg(__pyx_t_4, __pyx_t_5) : __Pyx_PyObject_CallNoArg(__pyx_t_4);
    __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0;
    if (unlikely(!__pyx_t_1)) __PYX_ERR(6, 100, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_1);
    __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
    __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;

    /* "src/python/grpcio/grpc/_cython/_cygrpc/grpc_gevent.pyx.pxi":101
 *   if socket_wrapper.socket is not None:
 *     socket_wrapper.socket.close()
 *     socket_wrapper.closed = True             # <<<<<<<<<<<<<<
 *     socket_wrapper.close_cb = cb
 *     # Delay the close callback until the accept() call has picked it up
 */
    __Pyx_INCREF(Py_True);
    __Pyx_GIVEREF(Py_True);
    __Pyx_GOTREF(__pyx_v_socket_wrapper->closed);
    __Pyx_DECREF(__pyx_v_socket_wrapper->closed);
    __pyx_v_socket_wrapper->closed = Py_True;

    /* "src/python/grpcio/grpc/_cython/_cygrpc/grpc_gevent.pyx.pxi":102
 *     socket_wrapper.socket.close()
 *     socket_wrapper.closed = True
 *     socket_wrapper.close_cb = cb             # <<<<<<<<<<<<<<
 *     # Delay the close callback until the accept() call has picked it up
 *     if socket_wrapper.accepting_socket != NULL:
 */
    __pyx_v_socket_wrapper->close_cb = __pyx_v_cb;

    /* "src/python/grpcio/grpc/_cython/_cygrpc/grpc_gevent.pyx.pxi":104
 *     socket_wrapper.close_cb = cb
 *     # Delay the close callback until the accept() call has picked it up
 *     if socket_wrapper.accepting_socket != NULL:             # <<<<<<<<<<<<<<
 *       return
 *   socket_wrapper.close_cb(socket)
 */
    __pyx_t_3 = ((__pyx_v_socket_wrapper->accepting_socket != NULL) != 0);
    if (__pyx_t_3) {

      /* "src/python/grpcio/grpc/_cython/_cygrpc/grpc_gevent.pyx.pxi":105
 *     # Delay the close callback until the accept() call has picked it up
 *     if socket_wrapper.accepting_socket != NULL:
 *       return             # <<<<<<<<<<<<<<
 *   socket_wrapper.close_cb(socket)
 * 
 */
      goto __pyx_L0;

      /* "src/python/grpcio/grpc/_cython/_cygrpc/grpc_gevent.pyx.pxi":104
 *     socket_wrapper.close_cb = cb
 *     # Delay the close callback until the accept() call has picked it up
 *     if socket_wrapper.accepting_socket != NULL:             # <<<<<<<<<<<<<<
 *       return
 *   socket_wrapper.close_cb(socket)
 */
    }

    /* "src/python/grpcio/grpc/_cython/_cygrpc/grpc_gevent.pyx.pxi":99
 *                        grpc_custom_close_callback cb) with gil:
 *   socket_wrapper = (<SocketWrapper>socket.impl)
 *   if socket_wrapper.socket is not None:             # <<<<<<<<<<<<<<
 *     socket_wrapper.socket.close()
 *     socket_wrapper.closed = True
 */
  }

  /* "src/python/grpcio/grpc/_cython/_cygrpc/grpc_gevent.pyx.pxi":106
 *     if socket_wrapper.accepting_socket != NULL:
 *       return
 *   socket_wrapper.close_cb(socket)             # <<<<<<<<<<<<<<
 * 
 * def socket_sendmsg(socket, write_bytes):
 */
  __pyx_v_socket_wrapper->close_cb(__pyx_v_socket);

  /* "src/python/grpcio/grpc/_cython/_cygrpc/grpc_gevent.pyx.pxi":96
 *       raise io_error
 * 
 * cdef void socket_close(grpc_custom_socket* socket,             # <<<<<<<<<<<<<<
 *                        grpc_custom_close_callback cb) with gil:
 *   socket_wrapper = (<SocketWrapper>socket.impl)
 */

  /* function exit code */
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_XDECREF(__pyx_t_4);
  __Pyx_XDECREF(__pyx_t_5);
  __Pyx_WriteUnraisable("grpc._cython.cygrpc.socket_close", __pyx_clineno, __pyx_lineno, __pyx_filename, 1, 0);
  __pyx_L0:;
  __Pyx_XDECREF((PyObject *)__pyx_v_socket_wrapper);
  __Pyx_RefNannyFinishContext();
  #ifdef WITH_THREAD
  __Pyx_PyGILState_Release(__pyx_gilstate_save);
  #endif
}

/* "src/python/grpcio/grpc/_cython/_cygrpc/grpc_gevent.pyx.pxi":108
 *   socket_wrapper.close_cb(socket)
 * 
 * def socket_sendmsg(socket, write_bytes):             # <<<<<<<<<<<<<<
 *   try:
 *     return socket.sendmsg(write_bytes)
 */

/* Python wrapper */
static PyObject *__pyx_pw_4grpc_7_cython_6cygrpc_67socket_sendmsg(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
static PyMethodDef __pyx_mdef_4grpc_7_cython_6cygrpc_67socket_sendmsg = {"socket_sendmsg", (PyCFunction)(void*)(PyCFunctionWithKeywords)__pyx_pw_4grpc_7_cython_6cygrpc_67socket_sendmsg, METH_VARARGS|METH_KEYWORDS, 0};
static PyObject *__pyx_pw_4grpc_7_cython_6cygrpc_67socket_sendmsg(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
  PyObject *__pyx_v_socket = 0;
  PyObject *__pyx_v_write_bytes = 0;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("socket_sendmsg (wrapper)", 0);
  {
    static PyObject **__pyx_pyargnames[] = {&__pyx_n_s_socket,&__pyx_n_s_write_bytes,0};
    PyObject* values[2] = {0,0};
    if (unlikely(__pyx_kwds)) {
      Py_ssize_t kw_args;
      const Py_ssize_t pos_args = PyTuple_GET_SIZE(__pyx_args);
      switch (pos_args) {
        case  2: values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
        CYTHON_FALLTHROUGH;
        case  1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
        CYTHON_FALLTHROUGH;
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      kw_args = PyDict_Size(__pyx_kwds);
      switch (pos_args) {
        case  0:
        if (likely((values[0] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_socket)) != 0)) kw_args--;
        else goto __pyx_L5_argtuple_error;
        CYTHON_FALLTHROUGH;
        case  1:
        if (likely((values[1] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_write_bytes)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("socket_sendmsg", 1, 2, 2, 1); __PYX_ERR(6, 108, __pyx_L3_error)
        }
      }
      if (unlikely(kw_args > 0)) {
        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "socket_sendmsg") < 0)) __PYX_ERR(6, 108, __pyx_L3_error)
      }
    } else if (PyTuple_GET_SIZE(__pyx_args) != 2) {
      goto __pyx_L5_argtuple_error;
    } else {
      values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
      values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
    }
    __pyx_v_socket = values[0];
    __pyx_v_write_bytes = values[1];
  }
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("socket_sendmsg", 1, 2, 2, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(6, 108, __pyx_L3_error)
  __pyx_L3_error:;
  __Pyx_AddTraceback("grpc._cython.cygrpc.socket_sendmsg", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  __pyx_r = __pyx_pf_4grpc_7_cython_6cygrpc_66socket_sendmsg(__pyx_self, __pyx_v_socket, __pyx_v_write_bytes);

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_4grpc_7_cython_6cygrpc_66socket_sendmsg(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__pyx_v_socket, PyObject *__pyx_v_write_bytes) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  PyObject *__pyx_t_2 = NULL;
  PyObject *__pyx_t_3 = NULL;
  PyObject *__pyx_t_4 = NULL;
  PyObject *__pyx_t_5 = NULL;
  PyObject *__pyx_t_6 = NULL;
  int __pyx_t_7;
  PyObject *__pyx_t_8 = NULL;
  PyObject *__pyx_t_9 = NULL;
  PyObject *__pyx_t_10 = NULL;
  PyObject *__pyx_t_11 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("socket_sendmsg", 0);

  /* "src/python/grpcio/grpc/_cython/_cygrpc/grpc_gevent.pyx.pxi":109
 * 
 * def socket_sendmsg(socket, write_bytes):
 *   try:             # <<<<<<<<<<<<<<
 *     return socket.sendmsg(write_bytes)
 *   except AttributeError:
 */
  {
    __Pyx_PyThreadState_declare
    __Pyx_PyThreadState_assign
    __Pyx_ExceptionSave(&__pyx_t_1, &__pyx_t_2, &__pyx_t_3);
    __Pyx_XGOTREF(__pyx_t_1);
    __Pyx_XGOTREF(__pyx_t_2);
    __Pyx_XGOTREF(__pyx_t_3);
    /*try:*/ {

      /* "src/python/grpcio/grpc/_cython/_cygrpc/grpc_gevent.pyx.pxi":110
 * def socket_sendmsg(socket, write_bytes):
 *   try:
 *     return socket.sendmsg(write_bytes)             # <<<<<<<<<<<<<<
 *   except AttributeError:
 *     # sendmsg not available on all Pythons/Platforms
 */
      __Pyx_XDECREF(__pyx_r);
      __pyx_t_5 = __Pyx_PyObject_GetAttrStr(__pyx_v_socket, __pyx_n_s_sendmsg); if (unlikely(!__pyx_t_5)) __PYX_ERR(6, 110, __pyx_L3_error)
      __Pyx_GOTREF(__pyx_t_5);
      __pyx_t_6 = NULL;
      if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_5))) {
        __pyx_t_6 = PyMethod_GET_SELF(__pyx_t_5);
        if (likely(__pyx_t_6)) {
          PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_5);
          __Pyx_INCREF(__pyx_t_6);
          __Pyx_INCREF(function);
          __Pyx_DECREF_SET(__pyx_t_5, function);
        }
      }
      __pyx_t_4 = (__pyx_t_6) ? __Pyx_PyObject_Call2Args(__pyx_t_5, __pyx_t_6, __pyx_v_write_bytes) : __Pyx_PyObject_CallOneArg(__pyx_t_5, __pyx_v_write_bytes);
      __Pyx_XDECREF(__pyx_t_6); __pyx_t_6 = 0;
      if (unlikely(!__pyx_t_4)) __PYX_ERR(6, 110, __pyx_L3_error)
      __Pyx_GOTREF(__pyx_t_4);
      __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
      __pyx_r = __pyx_t_4;
      __pyx_t_4 = 0;
      goto __pyx_L7_try_return;

      /* "src/python/grpcio/grpc/_cython/_cygrpc/grpc_gevent.pyx.pxi":109
 * 
 * def socket_sendmsg(socket, write_bytes):
 *   try:             # <<<<<<<<<<<<<<
 *     return socket.sendmsg(write_bytes)
 *   except AttributeError:
 */
    }
    __pyx_L3_error:;
    __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0;
    __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0;
    __Pyx_XDECREF(__pyx_t_6); __pyx_t_6 = 0;

    /* "src/python/grpcio/grpc/_cython/_cygrpc/grpc_gevent.pyx.pxi":111
 *   try:
 *     return socket.sendmsg(write_bytes)
 *   except AttributeError:             # <<<<<<<<<<<<<<
 *     # sendmsg not available on all Pythons/Platforms
 *     return socket.send(b''.join(write_bytes))
 */
    __pyx_t_7 = __Pyx_PyErr_ExceptionMatches(__pyx_builtin_AttributeError);
    if (__pyx_t_7) {
      __Pyx_AddTraceback("grpc._cython.cygrpc.socket_sendmsg", __pyx_clineno, __pyx_lineno, __pyx_filename);
      if (__Pyx_GetException(&__pyx_t_4, &__pyx_t_5, &__pyx_t_6) < 0) __PYX_ERR(6, 111, __pyx_L5_except_error)
      __Pyx_GOTREF(__pyx_t_4);
      __Pyx_GOTREF(__pyx_t_5);
      __Pyx_GOTREF(__pyx_t_6);

      /* "src/python/grpcio/grpc/_cython/_cygrpc/grpc_gevent.pyx.pxi":113
 *   except AttributeError:
 *     # sendmsg not available on all Pythons/Platforms
 *     return socket.send(b''.join(write_bytes))             # <<<<<<<<<<<<<<
 * 
 * cdef socket_write_async_cython(SocketWrapper socket_wrapper, write_bytes):
 */
      __Pyx_XDECREF(__pyx_r);
      __pyx_t_9 = __Pyx_PyObject_GetAttrStr(__pyx_v_socket, __pyx_n_s_send); if (unlikely(!__pyx_t_9)) __PYX_ERR(6, 113, __pyx_L5_except_error)
      __Pyx_GOTREF(__pyx_t_9);
      __pyx_t_10 = __Pyx_PyBytes_Join(__pyx_kp_b_, __pyx_v_write_bytes); if (unlikely(!__pyx_t_10)) __PYX_ERR(6, 113, __pyx_L5_except_error)
      __Pyx_GOTREF(__pyx_t_10);
      __pyx_t_11 = NULL;
      if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_9))) {
        __pyx_t_11 = PyMethod_GET_SELF(__pyx_t_9);
        if (likely(__pyx_t_11)) {
          PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_9);
          __Pyx_INCREF(__pyx_t_11);
          __Pyx_INCREF(function);
          __Pyx_DECREF_SET(__pyx_t_9, function);
        }
      }
      __pyx_t_8 = (__pyx_t_11) ? __Pyx_PyObject_Call2Args(__pyx_t_9, __pyx_t_11, __pyx_t_10) : __Pyx_PyObject_CallOneArg(__pyx_t_9, __pyx_t_10);
      __Pyx_XDECREF(__pyx_t_11); __pyx_t_11 = 0;
      __Pyx_DECREF(__pyx_t_10); __pyx_t_10 = 0;
      if (unlikely(!__pyx_t_8)) __PYX_ERR(6, 113, __pyx_L5_except_error)
      __Pyx_GOTREF(__pyx_t_8);
      __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0;
      __pyx_r = __pyx_t_8;
      __pyx_t_8 = 0;
      __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
      __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
      __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
      goto __pyx_L6_except_return;
    }
    goto __pyx_L5_except_error;
    __pyx_L5_except_error:;

    /* "src/python/grpcio/grpc/_cython/_cygrpc/grpc_gevent.pyx.pxi":109
 * 
 * def socket_sendmsg(socket, write_bytes):
 *   try:             # <<<<<<<<<<<<<<
 *     return socket.sendmsg(write_bytes)
 *   except AttributeError:
 */
    __Pyx_XGIVEREF(__pyx_t_1);
    __Pyx_XGIVEREF(__pyx_t_2);
    __Pyx_XGIVEREF(__pyx_t_3);
    __Pyx_ExceptionReset(__pyx_t_1, __pyx_t_2, __pyx_t_3);
    goto __pyx_L1_error;
    __pyx_L7_try_return:;
    __Pyx_XGIVEREF(__pyx_t_1);
    __Pyx_XGIVEREF(__pyx_t_2);
    __Pyx_XGIVEREF(__pyx_t_3);
    __Pyx_ExceptionReset(__pyx_t_1, __pyx_t_2, __pyx_t_3);
    goto __pyx_L0;
    __pyx_L6_except_return:;
    __Pyx_XGIVEREF(__pyx_t_1);
    __Pyx_XGIVEREF(__pyx_t_2);
    __Pyx_XGIVEREF(__pyx_t_3);
    __Pyx_ExceptionReset(__pyx_t_1, __pyx_t_2, __pyx_t_3);
    goto __pyx_L0;
  }

  /* "src/python/grpcio/grpc/_cython/_cygrpc/grpc_gevent.pyx.pxi":108
 *   socket_wrapper.close_cb(socket)
 * 
 * def socket_sendmsg(socket, write_bytes):             # <<<<<<<<<<<<<<
 *   try:
 *     return socket.sendmsg(write_bytes)
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_4);
  __Pyx_XDECREF(__pyx_t_5);
  __Pyx_XDECREF(__pyx_t_6);
  __Pyx_XDECREF(__pyx_t_8);
  __Pyx_XDECREF(__pyx_t_9);
  __Pyx_XDECREF(__pyx_t_10);
  __Pyx_XDECREF(__pyx_t_11);
  __Pyx_AddTraceback("grpc._cython.cygrpc.socket_sendmsg", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "src/python/grpcio/grpc/_cython/_cygrpc/grpc_gevent.pyx.pxi":115
 *     return socket.send(b''.join(write_bytes))
 * 
 * cdef socket_write_async_cython(SocketWrapper socket_wrapper, write_bytes):             # <<<<<<<<<<<<<<
 *   try:
 *     while write_bytes:
 */

static PyObject *__pyx_f_4grpc_7_cython_6cygrpc_socket_write_async_cython(struct __pyx_obj_4grpc_7_cython_6cygrpc_SocketWrapper *__pyx_v_socket_wrapper, PyObject *__pyx_v_write_bytes) {
  PyObject *__pyx_v_sent_byte_count = NULL;
  PyObject *__pyx_v_io_error = NULL;
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  PyObject *__pyx_t_2 = NULL;
  PyObject *__pyx_t_3 = NULL;
  int __pyx_t_4;
  PyObject *__pyx_t_5 = NULL;
  PyObject *__pyx_t_6 = NULL;
  PyObject *__pyx_t_7 = NULL;
  int __pyx_t_8;
  PyObject *__pyx_t_9 = NULL;
  Py_ssize_t __pyx_t_10;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("socket_write_async_cython", 0);
  __Pyx_INCREF(__pyx_v_write_bytes);

  /* "src/python/grpcio/grpc/_cython/_cygrpc/grpc_gevent.pyx.pxi":116
 * 
 * cdef socket_write_async_cython(SocketWrapper socket_wrapper, write_bytes):
 *   try:             # <<<<<<<<<<<<<<
 *     while write_bytes:
 *       sent_byte_count = socket_sendmsg(socket_wrapper.socket, write_bytes)
 */
  {
    __Pyx_PyThreadState_declare
    __Pyx_PyThreadState_assign
    __Pyx_ExceptionSave(&__pyx_t_1, &__pyx_t_2, &__pyx_t_3);
    __Pyx_XGOTREF(__pyx_t_1);
    __Pyx_XGOTREF(__pyx_t_2);
    __Pyx_XGOTREF(__pyx_t_3);
    /*try:*/ {

      /* "src/python/grpcio/grpc/_cython/_cygrpc/grpc_gevent.pyx.pxi":117
 * cdef socket_write_async_cython(SocketWrapper socket_wrapper, write_bytes):
 *   try:
 *     while write_bytes:             # <<<<<<<<<<<<<<
 *       sent_byte_count = socket_sendmsg(socket_wrapper.socket, write_bytes)
 *       while sent_byte_count > 0:
 */
      while (1) {
        __pyx_t_4 = __Pyx_PyObject_IsTrue(__pyx_v_write_bytes); if (unlikely(__pyx_t_4 < 0)) __PYX_ERR(6, 117, __pyx_L3_error)
        if (!__pyx_t_4) break;

        /* "src/python/grpcio/grpc/_cython/_cygrpc/grpc_gevent.pyx.pxi":118
 *   try:
 *     while write_bytes:
 *       sent_byte_count = socket_sendmsg(socket_wrapper.socket, write_bytes)             # <<<<<<<<<<<<<<
 *       while sent_byte_count > 0:
 *         if sent_byte_count < len(write_bytes[0]):
 */
        __Pyx_GetModuleGlobalName(__pyx_t_6, __pyx_n_s_socket_sendmsg); if (unlikely(!__pyx_t_6)) __PYX_ERR(6, 118, __pyx_L3_error)
        __Pyx_GOTREF(__pyx_t_6);
        __pyx_t_7 = NULL;
        __pyx_t_8 = 0;
        if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_6))) {
          __pyx_t_7 = PyMethod_GET_SELF(__pyx_t_6);
          if (likely(__pyx_t_7)) {
            PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_6);
            __Pyx_INCREF(__pyx_t_7);
            __Pyx_INCREF(function);
            __Pyx_DECREF_SET(__pyx_t_6, function);
            __pyx_t_8 = 1;
          }
        }
        #if CYTHON_FAST_PYCALL
        if (PyFunction_Check(__pyx_t_6)) {
          PyObject *__pyx_temp[3] = {__pyx_t_7, __pyx_v_socket_wrapper->socket, __pyx_v_write_bytes};
          __pyx_t_5 = __Pyx_PyFunction_FastCall(__pyx_t_6, __pyx_temp+1-__pyx_t_8, 2+__pyx_t_8); if (unlikely(!__pyx_t_5)) __PYX_ERR(6, 118, __pyx_L3_error)
          __Pyx_XDECREF(__pyx_t_7); __pyx_t_7 = 0;
          __Pyx_GOTREF(__pyx_t_5);
        } else
        #endif
        #if CYTHON_FAST_PYCCALL
        if (__Pyx_PyFastCFunction_Check(__pyx_t_6)) {
          PyObject *__pyx_temp[3] = {__pyx_t_7, __pyx_v_socket_wrapper->socket, __pyx_v_write_bytes};
          __pyx_t_5 = __Pyx_PyCFunction_FastCall(__pyx_t_6, __pyx_temp+1-__pyx_t_8, 2+__pyx_t_8); if (unlikely(!__pyx_t_5)) __PYX_ERR(6, 118, __pyx_L3_error)
          __Pyx_XDECREF(__pyx_t_7); __pyx_t_7 = 0;
          __Pyx_GOTREF(__pyx_t_5);
        } else
        #endif
        {
          __pyx_t_9 = PyTuple_New(2+__pyx_t_8); if (unlikely(!__pyx_t_9)) __PYX_ERR(6, 118, __pyx_L3_error)
          __Pyx_GOTREF(__pyx_t_9);
          if (__pyx_t_7) {
            __Pyx_GIVEREF(__pyx_t_7); PyTuple_SET_ITEM(__pyx_t_9, 0, __pyx_t_7); __pyx_t_7 = NULL;
          }
          __Pyx_INCREF(__pyx_v_socket_wrapper->socket);
          __Pyx_GIVEREF(__pyx_v_socket_wrapper->socket);
          PyTuple_SET_ITEM(__pyx_t_9, 0+__pyx_t_8, __pyx_v_socket_wrapper->socket);
          __Pyx_INCREF(__pyx_v_write_bytes);
          __Pyx_GIVEREF(__pyx_v_write_bytes);
          PyTuple_SET_ITEM(__pyx_t_9, 1+__pyx_t_8, __pyx_v_write_bytes);
          __pyx_t_5 = __Pyx_PyObject_Call(__pyx_t_6, __pyx_t_9, NULL); if (unlikely(!__pyx_t_5)) __PYX_ERR(6, 118, __pyx_L3_error)
          __Pyx_GOTREF(__pyx_t_5);
          __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0;
        }
        __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
        __Pyx_XDECREF_SET(__pyx_v_sent_byte_count, __pyx_t_5);
        __pyx_t_5 = 0;

        /* "src/python/grpcio/grpc/_cython/_cygrpc/grpc_gevent.pyx.pxi":119
 *     while write_bytes:
 *       sent_byte_count = socket_sendmsg(socket_wrapper.socket, write_bytes)
 *       while sent_byte_count > 0:             # <<<<<<<<<<<<<<
 *         if sent_byte_count < len(write_bytes[0]):
 *           write_bytes[0] = write_bytes[0][sent_byte_count:]
 */
        while (1) {
          __pyx_t_5 = PyObject_RichCompare(__pyx_v_sent_byte_count, __pyx_int_0, Py_GT); __Pyx_XGOTREF(__pyx_t_5); if (unlikely(!__pyx_t_5)) __PYX_ERR(6, 119, __pyx_L3_error)
          __pyx_t_4 = __Pyx_PyObject_IsTrue(__pyx_t_5); if (unlikely(__pyx_t_4 < 0)) __PYX_ERR(6, 119, __pyx_L3_error)
          __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
          if (!__pyx_t_4) break;

          /* "src/python/grpcio/grpc/_cython/_cygrpc/grpc_gevent.pyx.pxi":120
 *       sent_byte_count = socket_sendmsg(socket_wrapper.socket, write_bytes)
 *       while sent_byte_count > 0:
 *         if sent_byte_count < len(write_bytes[0]):             # <<<<<<<<<<<<<<
 *           write_bytes[0] = write_bytes[0][sent_byte_count:]
 *           sent_byte_count = 0
 */
          __pyx_t_5 = __Pyx_GetItemInt(__pyx_v_write_bytes, 0, long, 1, __Pyx_PyInt_From_long, 0, 0, 1); if (unlikely(!__pyx_t_5)) __PYX_ERR(6, 120, __pyx_L3_error)
          __Pyx_GOTREF(__pyx_t_5);
          __pyx_t_10 = PyObject_Length(__pyx_t_5); if (unlikely(__pyx_t_10 == ((Py_ssize_t)-1))) __PYX_ERR(6, 120, __pyx_L3_error)
          __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
          __pyx_t_5 = PyInt_FromSsize_t(__pyx_t_10); if (unlikely(!__pyx_t_5)) __PYX_ERR(6, 120, __pyx_L3_error)
          __Pyx_GOTREF(__pyx_t_5);
          __pyx_t_6 = PyObject_RichCompare(__pyx_v_sent_byte_count, __pyx_t_5, Py_LT); __Pyx_XGOTREF(__pyx_t_6); if (unlikely(!__pyx_t_6)) __PYX_ERR(6, 120, __pyx_L3_error)
          __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
          __pyx_t_4 = __Pyx_PyObject_IsTrue(__pyx_t_6); if (unlikely(__pyx_t_4 < 0)) __PYX_ERR(6, 120, __pyx_L3_error)
          __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
          if (__pyx_t_4) {

            /* "src/python/grpcio/grpc/_cython/_cygrpc/grpc_gevent.pyx.pxi":121
 *       while sent_byte_count > 0:
 *         if sent_byte_count < len(write_bytes[0]):
 *           write_bytes[0] = write_bytes[0][sent_byte_count:]             # <<<<<<<<<<<<<<
 *           sent_byte_count = 0
 *         else:
 */
            __pyx_t_6 = __Pyx_GetItemInt(__pyx_v_write_bytes, 0, long, 1, __Pyx_PyInt_From_long, 0, 0, 1); if (unlikely(!__pyx_t_6)) __PYX_ERR(6, 121, __pyx_L3_error)
            __Pyx_GOTREF(__pyx_t_6);
            __pyx_t_5 = __Pyx_PyObject_GetSlice(__pyx_t_6, 0, 0, &__pyx_v_sent_byte_count, NULL, NULL, 0, 0, 1); if (unlikely(!__pyx_t_5)) __PYX_ERR(6, 121, __pyx_L3_error)
            __Pyx_GOTREF(__pyx_t_5);
            __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
            if (unlikely(__Pyx_SetItemInt(__pyx_v_write_bytes, 0, __pyx_t_5, long, 1, __Pyx_PyInt_From_long, 0, 0, 1) < 0)) __PYX_ERR(6, 121, __pyx_L3_error)
            __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;

            /* "src/python/grpcio/grpc/_cython/_cygrpc/grpc_gevent.pyx.pxi":122
 *         if sent_byte_count < len(write_bytes[0]):
 *           write_bytes[0] = write_bytes[0][sent_byte_count:]
 *           sent_byte_count = 0             # <<<<<<<<<<<<<<
 *         else:
 *           sent_byte_count -= len(write_bytes[0])
 */
            __Pyx_INCREF(__pyx_int_0);
            __Pyx_DECREF_SET(__pyx_v_sent_byte_count, __pyx_int_0);

            /* "src/python/grpcio/grpc/_cython/_cygrpc/grpc_gevent.pyx.pxi":120
 *       sent_byte_count = socket_sendmsg(socket_wrapper.socket, write_bytes)
 *       while sent_byte_count > 0:
 *         if sent_byte_count < len(write_bytes[0]):             # <<<<<<<<<<<<<<
 *           write_bytes[0] = write_bytes[0][sent_byte_count:]
 *           sent_byte_count = 0
 */
            goto __pyx_L13;
          }

          /* "src/python/grpcio/grpc/_cython/_cygrpc/grpc_gevent.pyx.pxi":124
 *           sent_byte_count = 0
 *         else:
 *           sent_byte_count -= len(write_bytes[0])             # <<<<<<<<<<<<<<
 *           write_bytes = write_bytes[1:]
 *     socket_wrapper.write_cb(<grpc_custom_socket*>socket_wrapper.c_socket,
 */
          /*else*/ {
            __pyx_t_5 = __Pyx_GetItemInt(__pyx_v_write_bytes, 0, long, 1, __Pyx_PyInt_From_long, 0, 0, 1); if (unlikely(!__pyx_t_5)) __PYX_ERR(6, 124, __pyx_L3_error)
            __Pyx_GOTREF(__pyx_t_5);
            __pyx_t_10 = PyObject_Length(__pyx_t_5); if (unlikely(__pyx_t_10 == ((Py_ssize_t)-1))) __PYX_ERR(6, 124, __pyx_L3_error)
            __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
            __pyx_t_5 = PyInt_FromSsize_t(__pyx_t_10); if (unlikely(!__pyx_t_5)) __PYX_ERR(6, 124, __pyx_L3_error)
            __Pyx_GOTREF(__pyx_t_5);
            __pyx_t_6 = PyNumber_InPlaceSubtract(__pyx_v_sent_byte_count, __pyx_t_5); if (unlikely(!__pyx_t_6)) __PYX_ERR(6, 124, __pyx_L3_error)
            __Pyx_GOTREF(__pyx_t_6);
            __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
            __Pyx_DECREF_SET(__pyx_v_sent_byte_count, __pyx_t_6);
            __pyx_t_6 = 0;

            /* "src/python/grpcio/grpc/_cython/_cygrpc/grpc_gevent.pyx.pxi":125
 *         else:
 *           sent_byte_count -= len(write_bytes[0])
 *           write_bytes = write_bytes[1:]             # <<<<<<<<<<<<<<
 *     socket_wrapper.write_cb(<grpc_custom_socket*>socket_wrapper.c_socket,
 *                             grpc_error_none())
 */
            __pyx_t_6 = __Pyx_PyObject_GetSlice(__pyx_v_write_bytes, 1, 0, NULL, NULL, &__pyx_slice__124, 1, 0, 1); if (unlikely(!__pyx_t_6)) __PYX_ERR(6, 125, __pyx_L3_error)
            __Pyx_GOTREF(__pyx_t_6);
            __Pyx_DECREF_SET(__pyx_v_write_bytes, __pyx_t_6);
            __pyx_t_6 = 0;
          }
          __pyx_L13:;
        }
      }

      /* "src/python/grpcio/grpc/_cython/_cygrpc/grpc_gevent.pyx.pxi":126
 *           sent_byte_count -= len(write_bytes[0])
 *           write_bytes = write_bytes[1:]
 *     socket_wrapper.write_cb(<grpc_custom_socket*>socket_wrapper.c_socket,             # <<<<<<<<<<<<<<
 *                             grpc_error_none())
 *   except IOError as io_error:
 */
      __pyx_v_socket_wrapper->write_cb(((struct grpc_custom_socket *)__pyx_v_socket_wrapper->c_socket), __pyx_f_4grpc_7_cython_6cygrpc_grpc_error_none());

      /* "src/python/grpcio/grpc/_cython/_cygrpc/grpc_gevent.pyx.pxi":116
 * 
 * cdef socket_write_async_cython(SocketWrapper socket_wrapper, write_bytes):
 *   try:             # <<<<<<<<<<<<<<
 *     while write_bytes:
 *       sent_byte_count = socket_sendmsg(socket_wrapper.socket, write_bytes)
 */
    }
    __Pyx_XDECREF(__pyx_t_1); __pyx_t_1 = 0;
    __Pyx_XDECREF(__pyx_t_2); __pyx_t_2 = 0;
    __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0;
    goto __pyx_L8_try_end;
    __pyx_L3_error:;
    __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0;
    __Pyx_XDECREF(__pyx_t_6); __pyx_t_6 = 0;
    __Pyx_XDECREF(__pyx_t_7); __pyx_t_7 = 0;
    __Pyx_XDECREF(__pyx_t_9); __pyx_t_9 = 0;

    /* "src/python/grpcio/grpc/_cython/_cygrpc/grpc_gevent.pyx.pxi":128
 *     socket_wrapper.write_cb(<grpc_custom_socket*>socket_wrapper.c_socket,
 *                             grpc_error_none())
 *   except IOError as io_error:             # <<<<<<<<<<<<<<
 *     socket_wrapper.write_cb(<grpc_custom_socket*>socket_wrapper.c_socket,
 *                             socket_error("send", str(io_error)))
 */
    __pyx_t_8 = __Pyx_PyErr_ExceptionMatches(__pyx_builtin_IOError);
    if (__pyx_t_8) {
      __Pyx_AddTraceback("grpc._cython.cygrpc.socket_write_async_cython", __pyx_clineno, __pyx_lineno, __pyx_filename);
      if (__Pyx_GetException(&__pyx_t_6, &__pyx_t_5, &__pyx_t_9) < 0) __PYX_ERR(6, 128, __pyx_L5_except_error)
      __Pyx_GOTREF(__pyx_t_6);
      __Pyx_GOTREF(__pyx_t_5);
      __Pyx_GOTREF(__pyx_t_9);
      __Pyx_INCREF(__pyx_t_5);
      __pyx_v_io_error = __pyx_t_5;

      /* "src/python/grpcio/grpc/_cython/_cygrpc/grpc_gevent.pyx.pxi":130
 *   except IOError as io_error:
 *     socket_wrapper.write_cb(<grpc_custom_socket*>socket_wrapper.c_socket,
 *                             socket_error("send", str(io_error)))             # <<<<<<<<<<<<<<
 *   g_event.set()
 * 
 */
      __pyx_t_7 = __Pyx_PyObject_CallOneArg(((PyObject *)(&PyString_Type)), __pyx_v_io_error); if (unlikely(!__pyx_t_7)) __PYX_ERR(6, 130, __pyx_L5_except_error)
      __Pyx_GOTREF(__pyx_t_7);
      if (!(likely(PyString_CheckExact(__pyx_t_7))||((__pyx_t_7) == Py_None)||(PyErr_Format(PyExc_TypeError, "Expected %.16s, got %.200s", "str", Py_TYPE(__pyx_t_7)->tp_name), 0))) __PYX_ERR(6, 130, __pyx_L5_except_error)

      /* "src/python/grpcio/grpc/_cython/_cygrpc/grpc_gevent.pyx.pxi":129
 *                             grpc_error_none())
 *   except IOError as io_error:
 *     socket_wrapper.write_cb(<grpc_custom_socket*>socket_wrapper.c_socket,             # <<<<<<<<<<<<<<
 *                             socket_error("send", str(io_error)))
 *   g_event.set()
 */
      __pyx_v_socket_wrapper->write_cb(((struct grpc_custom_socket *)__pyx_v_socket_wrapper->c_socket), __pyx_f_4grpc_7_cython_6cygrpc_socket_error(__pyx_n_s_send, ((PyObject*)__pyx_t_7)));
      __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
      __Pyx_XDECREF(__pyx_t_6); __pyx_t_6 = 0;
      __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0;
      __Pyx_XDECREF(__pyx_t_9); __pyx_t_9 = 0;
      goto __pyx_L4_exception_handled;
    }
    goto __pyx_L5_except_error;
    __pyx_L5_except_error:;

    /* "src/python/grpcio/grpc/_cython/_cygrpc/grpc_gevent.pyx.pxi":116
 * 
 * cdef socket_write_async_cython(SocketWrapper socket_wrapper, write_bytes):
 *   try:             # <<<<<<<<<<<<<<
 *     while write_bytes:
 *       sent_byte_count = socket_sendmsg(socket_wrapper.socket, write_bytes)
 */
    __Pyx_XGIVEREF(__pyx_t_1);
    __Pyx_XGIVEREF(__pyx_t_2);
    __Pyx_XGIVEREF(__pyx_t_3);
    __Pyx_ExceptionReset(__pyx_t_1, __pyx_t_2, __pyx_t_3);
    goto __pyx_L1_error;
    __pyx_L4_exception_handled:;
    __Pyx_XGIVEREF(__pyx_t_1);
    __Pyx_XGIVEREF(__pyx_t_2);
    __Pyx_XGIVEREF(__pyx_t_3);
    __Pyx_ExceptionReset(__pyx_t_1, __pyx_t_2, __pyx_t_3);
    __pyx_L8_try_end:;
  }

  /* "src/python/grpcio/grpc/_cython/_cygrpc/grpc_gevent.pyx.pxi":131
 *     socket_wrapper.write_cb(<grpc_custom_socket*>socket_wrapper.c_socket,
 *                             socket_error("send", str(io_error)))
 *   g_event.set()             # <<<<<<<<<<<<<<
 * 
 * def socket_write_async(socket_wrapper, write_bytes):
 */
  __Pyx_GetModuleGlobalName(__pyx_t_5, __pyx_n_s_g_event); if (unlikely(!__pyx_t_5)) __PYX_ERR(6, 131, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_5);
  __pyx_t_6 = __Pyx_PyObject_GetAttrStr(__pyx_t_5, __pyx_n_s_set); if (unlikely(!__pyx_t_6)) __PYX_ERR(6, 131, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_6);
  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
  __pyx_t_5 = NULL;
  if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_6))) {
    __pyx_t_5 = PyMethod_GET_SELF(__pyx_t_6);
    if (likely(__pyx_t_5)) {
      PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_6);
      __Pyx_INCREF(__pyx_t_5);
      __Pyx_INCREF(function);
      __Pyx_DECREF_SET(__pyx_t_6, function);
    }
  }
  __pyx_t_9 = (__pyx_t_5) ? __Pyx_PyObject_CallOneArg(__pyx_t_6, __pyx_t_5) : __Pyx_PyObject_CallNoArg(__pyx_t_6);
  __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0;
  if (unlikely(!__pyx_t_9)) __PYX_ERR(6, 131, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_9);
  __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
  __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0;

  /* "src/python/grpcio/grpc/_cython/_cygrpc/grpc_gevent.pyx.pxi":115
 *     return socket.send(b''.join(write_bytes))
 * 
 * cdef socket_write_async_cython(SocketWrapper socket_wrapper, write_bytes):             # <<<<<<<<<<<<<<
 *   try:
 *     while write_bytes:
 */

  /* function exit code */
  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_5);
  __Pyx_XDECREF(__pyx_t_6);
  __Pyx_XDECREF(__pyx_t_7);
  __Pyx_XDECREF(__pyx_t_9);
  __Pyx_AddTraceback("grpc._cython.cygrpc.socket_write_async_cython", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = 0;
  __pyx_L0:;
  __Pyx_XDECREF(__pyx_v_sent_byte_count);
  __Pyx_XDECREF(__pyx_v_io_error);
  __Pyx_XDECREF(__pyx_v_write_bytes);
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "src/python/grpcio/grpc/_cython/_cygrpc/grpc_gevent.pyx.pxi":133
 *   g_event.set()
 * 
 * def socket_write_async(socket_wrapper, write_bytes):             # <<<<<<<<<<<<<<
 *   socket_write_async_cython(socket_wrapper, write_bytes)
 * 
 */

/* Python wrapper */
static PyObject *__pyx_pw_4grpc_7_cython_6cygrpc_69socket_write_async(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
static PyMethodDef __pyx_mdef_4grpc_7_cython_6cygrpc_69socket_write_async = {"socket_write_async", (PyCFunction)(void*)(PyCFunctionWithKeywords)__pyx_pw_4grpc_7_cython_6cygrpc_69socket_write_async, METH_VARARGS|METH_KEYWORDS, 0};
static PyObject *__pyx_pw_4grpc_7_cython_6cygrpc_69socket_write_async(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
  PyObject *__pyx_v_socket_wrapper = 0;
  PyObject *__pyx_v_write_bytes = 0;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("socket_write_async (wrapper)", 0);
  {
    static PyObject **__pyx_pyargnames[] = {&__pyx_n_s_socket_wrapper,&__pyx_n_s_write_bytes,0};
    PyObject* values[2] = {0,0};
    if (unlikely(__pyx_kwds)) {
      Py_ssize_t kw_args;
      const Py_ssize_t pos_args = PyTuple_GET_SIZE(__pyx_args);
      switch (pos_args) {
        case  2: values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
        CYTHON_FALLTHROUGH;
        case  1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
        CYTHON_FALLTHROUGH;
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      kw_args = PyDict_Size(__pyx_kwds);
      switch (pos_args) {
        case  0:
        if (likely((values[0] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_socket_wrapper)) != 0)) kw_args--;
        else goto __pyx_L5_argtuple_error;
        CYTHON_FALLTHROUGH;
        case  1:
        if (likely((values[1] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_write_bytes)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("socket_write_async", 1, 2, 2, 1); __PYX_ERR(6, 133, __pyx_L3_error)
        }
      }
      if (unlikely(kw_args > 0)) {
        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "socket_write_async") < 0)) __PYX_ERR(6, 133, __pyx_L3_error)
      }
    } else if (PyTuple_GET_SIZE(__pyx_args) != 2) {
      goto __pyx_L5_argtuple_error;
    } else {
      values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
      values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
    }
    __pyx_v_socket_wrapper = values[0];
    __pyx_v_write_bytes = values[1];
  }
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("socket_write_async", 1, 2, 2, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(6, 133, __pyx_L3_error)
  __pyx_L3_error:;
  __Pyx_AddTraceback("grpc._cython.cygrpc.socket_write_async", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  __pyx_r = __pyx_pf_4grpc_7_cython_6cygrpc_68socket_write_async(__pyx_self, __pyx_v_socket_wrapper, __pyx_v_write_bytes);

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_4grpc_7_cython_6cygrpc_68socket_write_async(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__pyx_v_socket_wrapper, PyObject *__pyx_v_write_bytes) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("socket_write_async", 0);

  /* "src/python/grpcio/grpc/_cython/_cygrpc/grpc_gevent.pyx.pxi":134
 * 
 * def socket_write_async(socket_wrapper, write_bytes):
 *   socket_write_async_cython(socket_wrapper, write_bytes)             # <<<<<<<<<<<<<<
 * 
 * cdef void socket_write(grpc_custom_socket* socket, grpc_slice_buffer* buffer,
 */
  if (!(likely(((__pyx_v_socket_wrapper) == Py_None) || likely(__Pyx_TypeTest(__pyx_v_socket_wrapper, __pyx_ptype_4grpc_7_cython_6cygrpc_SocketWrapper))))) __PYX_ERR(6, 134, __pyx_L1_error)
  __pyx_t_1 = __pyx_f_4grpc_7_cython_6cygrpc_socket_write_async_cython(((struct __pyx_obj_4grpc_7_cython_6cygrpc_SocketWrapper *)__pyx_v_socket_wrapper), __pyx_v_write_bytes); if (unlikely(!__pyx_t_1)) __PYX_ERR(6, 134, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;

  /* "src/python/grpcio/grpc/_cython/_cygrpc/grpc_gevent.pyx.pxi":133
 *   g_event.set()
 * 
 * def socket_write_async(socket_wrapper, write_bytes):             # <<<<<<<<<<<<<<
 *   socket_write_async_cython(socket_wrapper, write_bytes)
 * 
 */

  /* function exit code */
  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_AddTraceback("grpc._cython.cygrpc.socket_write_async", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "src/python/grpcio/grpc/_cython/_cygrpc/grpc_gevent.pyx.pxi":136
 *   socket_write_async_cython(socket_wrapper, write_bytes)
 * 
 * cdef void socket_write(grpc_custom_socket* socket, grpc_slice_buffer* buffer,             # <<<<<<<<<<<<<<
 *                        grpc_custom_write_callback cb) with gil:
 *   cdef char* start
 */

static void __pyx_f_4grpc_7_cython_6cygrpc_socket_write(struct grpc_custom_socket *__pyx_v_socket, struct grpc_slice_buffer *__pyx_v_buffer, grpc_custom_write_callback __pyx_v_cb) {
  char *__pyx_v_start;
  struct __pyx_obj_4grpc_7_cython_6cygrpc_SocketWrapper *__pyx_v_sw = NULL;
  PyObject *__pyx_v_write_bytes = NULL;
  int __pyx_v_i;
  int __pyx_v_length;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  int __pyx_t_2;
  int __pyx_t_3;
  int __pyx_t_4;
  int __pyx_t_5;
  PyObject *__pyx_t_6 = NULL;
  PyObject *__pyx_t_7 = NULL;
  PyObject *__pyx_t_8 = NULL;
  PyObject *__pyx_t_9 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  #ifdef WITH_THREAD
  PyGILState_STATE __pyx_gilstate_save = __Pyx_PyGILState_Ensure();
  #endif
  __Pyx_RefNannySetupContext("socket_write", 0);

  /* "src/python/grpcio/grpc/_cython/_cygrpc/grpc_gevent.pyx.pxi":139
 *                        grpc_custom_write_callback cb) with gil:
 *   cdef char* start
 *   sw = <SocketWrapper>socket.impl             # <<<<<<<<<<<<<<
 *   sw.write_cb = cb
 *   write_bytes = []
 */
  __pyx_t_1 = ((PyObject *)__pyx_v_socket->impl);
  __Pyx_INCREF(__pyx_t_1);
  __pyx_v_sw = ((struct __pyx_obj_4grpc_7_cython_6cygrpc_SocketWrapper *)__pyx_t_1);
  __pyx_t_1 = 0;

  /* "src/python/grpcio/grpc/_cython/_cygrpc/grpc_gevent.pyx.pxi":140
 *   cdef char* start
 *   sw = <SocketWrapper>socket.impl
 *   sw.write_cb = cb             # <<<<<<<<<<<<<<
 *   write_bytes = []
 *   for i in range(buffer.count):
 */
  __pyx_v_sw->write_cb = __pyx_v_cb;

  /* "src/python/grpcio/grpc/_cython/_cygrpc/grpc_gevent.pyx.pxi":141
 *   sw = <SocketWrapper>socket.impl
 *   sw.write_cb = cb
 *   write_bytes = []             # <<<<<<<<<<<<<<
 *   for i in range(buffer.count):
 *     start = grpc_slice_buffer_start(buffer, i)
 */
  __pyx_t_1 = PyList_New(0); if (unlikely(!__pyx_t_1)) __PYX_ERR(6, 141, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_v_write_bytes = ((PyObject*)__pyx_t_1);
  __pyx_t_1 = 0;

  /* "src/python/grpcio/grpc/_cython/_cygrpc/grpc_gevent.pyx.pxi":142
 *   sw.write_cb = cb
 *   write_bytes = []
 *   for i in range(buffer.count):             # <<<<<<<<<<<<<<
 *     start = grpc_slice_buffer_start(buffer, i)
 *     length = grpc_slice_buffer_length(buffer, i)
 */
  __pyx_t_2 = __pyx_v_buffer->count;
  __pyx_t_3 = __pyx_t_2;
  for (__pyx_t_4 = 0; __pyx_t_4 < __pyx_t_3; __pyx_t_4+=1) {
    __pyx_v_i = __pyx_t_4;

    /* "src/python/grpcio/grpc/_cython/_cygrpc/grpc_gevent.pyx.pxi":143
 *   write_bytes = []
 *   for i in range(buffer.count):
 *     start = grpc_slice_buffer_start(buffer, i)             # <<<<<<<<<<<<<<
 *     length = grpc_slice_buffer_length(buffer, i)
 *     write_bytes.append(<bytes>start[:length])
 */
    __pyx_v_start = grpc_slice_buffer_start(__pyx_v_buffer, __pyx_v_i);

    /* "src/python/grpcio/grpc/_cython/_cygrpc/grpc_gevent.pyx.pxi":144
 *   for i in range(buffer.count):
 *     start = grpc_slice_buffer_start(buffer, i)
 *     length = grpc_slice_buffer_length(buffer, i)             # <<<<<<<<<<<<<<
 *     write_bytes.append(<bytes>start[:length])
 *   _spawn_greenlet(socket_write_async, <SocketWrapper>socket.impl, write_bytes)
 */
    __pyx_v_length = grpc_slice_buffer_length(__pyx_v_buffer, __pyx_v_i);

    /* "src/python/grpcio/grpc/_cython/_cygrpc/grpc_gevent.pyx.pxi":145
 *     start = grpc_slice_buffer_start(buffer, i)
 *     length = grpc_slice_buffer_length(buffer, i)
 *     write_bytes.append(<bytes>start[:length])             # <<<<<<<<<<<<<<
 *   _spawn_greenlet(socket_write_async, <SocketWrapper>socket.impl, write_bytes)
 * 
 */
    __pyx_t_1 = __Pyx_PyBytes_FromStringAndSize(__pyx_v_start + 0, __pyx_v_length - 0); if (unlikely(!__pyx_t_1)) __PYX_ERR(6, 145, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_1);
    __pyx_t_5 = __Pyx_PyList_Append(__pyx_v_write_bytes, __pyx_t_1); if (unlikely(__pyx_t_5 == ((int)-1))) __PYX_ERR(6, 145, __pyx_L1_error)
    __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  }

  /* "src/python/grpcio/grpc/_cython/_cygrpc/grpc_gevent.pyx.pxi":146
 *     length = grpc_slice_buffer_length(buffer, i)
 *     write_bytes.append(<bytes>start[:length])
 *   _spawn_greenlet(socket_write_async, <SocketWrapper>socket.impl, write_bytes)             # <<<<<<<<<<<<<<
 * 
 * cdef socket_read_async_cython(SocketWrapper socket_wrapper):
 */
  __Pyx_GetModuleGlobalName(__pyx_t_6, __pyx_n_s_spawn_greenlet); if (unlikely(!__pyx_t_6)) __PYX_ERR(6, 146, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_6);
  __Pyx_GetModuleGlobalName(__pyx_t_7, __pyx_n_s_socket_write_async); if (unlikely(!__pyx_t_7)) __PYX_ERR(6, 146, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_7);
  __pyx_t_8 = NULL;
  __pyx_t_2 = 0;
  if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_6))) {
    __pyx_t_8 = PyMethod_GET_SELF(__pyx_t_6);
    if (likely(__pyx_t_8)) {
      PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_6);
      __Pyx_INCREF(__pyx_t_8);
      __Pyx_INCREF(function);
      __Pyx_DECREF_SET(__pyx_t_6, function);
      __pyx_t_2 = 1;
    }
  }
  #if CYTHON_FAST_PYCALL
  if (PyFunction_Check(__pyx_t_6)) {
    PyObject *__pyx_temp[4] = {__pyx_t_8, __pyx_t_7, ((PyObject *)__pyx_v_socket->impl), __pyx_v_write_bytes};
    __pyx_t_1 = __Pyx_PyFunction_FastCall(__pyx_t_6, __pyx_temp+1-__pyx_t_2, 3+__pyx_t_2); if (unlikely(!__pyx_t_1)) __PYX_ERR(6, 146, __pyx_L1_error)
    __Pyx_XDECREF(__pyx_t_8); __pyx_t_8 = 0;
    __Pyx_GOTREF(__pyx_t_1);
    __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
  } else
  #endif
  #if CYTHON_FAST_PYCCALL
  if (__Pyx_PyFastCFunction_Check(__pyx_t_6)) {
    PyObject *__pyx_temp[4] = {__pyx_t_8, __pyx_t_7, ((PyObject *)__pyx_v_socket->impl), __pyx_v_write_bytes};
    __pyx_t_1 = __Pyx_PyCFunction_FastCall(__pyx_t_6, __pyx_temp+1-__pyx_t_2, 3+__pyx_t_2); if (unlikely(!__pyx_t_1)) __PYX_ERR(6, 146, __pyx_L1_error)
    __Pyx_XDECREF(__pyx_t_8); __pyx_t_8 = 0;
    __Pyx_GOTREF(__pyx_t_1);
    __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
  } else
  #endif
  {
    __pyx_t_9 = PyTuple_New(3+__pyx_t_2); if (unlikely(!__pyx_t_9)) __PYX_ERR(6, 146, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_9);
    if (__pyx_t_8) {
      __Pyx_GIVEREF(__pyx_t_8); PyTuple_SET_ITEM(__pyx_t_9, 0, __pyx_t_8); __pyx_t_8 = NULL;
    }
    __Pyx_GIVEREF(__pyx_t_7);
    PyTuple_SET_ITEM(__pyx_t_9, 0+__pyx_t_2, __pyx_t_7);
    __Pyx_INCREF(((PyObject *)((struct __pyx_obj_4grpc_7_cython_6cygrpc_SocketWrapper *)__pyx_v_socket->impl)));
    __Pyx_GIVEREF(((PyObject *)__pyx_v_socket->impl));
    PyTuple_SET_ITEM(__pyx_t_9, 1+__pyx_t_2, ((PyObject *)__pyx_v_socket->impl));
    __Pyx_INCREF(__pyx_v_write_bytes);
    __Pyx_GIVEREF(__pyx_v_write_bytes);
    PyTuple_SET_ITEM(__pyx_t_9, 2+__pyx_t_2, __pyx_v_write_bytes);
    __pyx_t_7 = 0;
    __pyx_t_1 = __Pyx_PyObject_Call(__pyx_t_6, __pyx_t_9, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(6, 146, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_1);
    __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0;
  }
  __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;

  /* "src/python/grpcio/grpc/_cython/_cygrpc/grpc_gevent.pyx.pxi":136
 *   socket_write_async_cython(socket_wrapper, write_bytes)
 * 
 * cdef void socket_write(grpc_custom_socket* socket, grpc_slice_buffer* buffer,             # <<<<<<<<<<<<<<
 *                        grpc_custom_write_callback cb) with gil:
 *   cdef char* start
 */

  /* function exit code */
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_XDECREF(__pyx_t_6);
  __Pyx_XDECREF(__pyx_t_7);
  __Pyx_XDECREF(__pyx_t_8);
  __Pyx_XDECREF(__pyx_t_9);
  __Pyx_WriteUnraisable("grpc._cython.cygrpc.socket_write", __pyx_clineno, __pyx_lineno, __pyx_filename, 1, 0);
  __pyx_L0:;
  __Pyx_XDECREF((PyObject *)__pyx_v_sw);
  __Pyx_XDECREF(__pyx_v_write_bytes);
  __Pyx_RefNannyFinishContext();
  #ifdef WITH_THREAD
  __Pyx_PyGILState_Release(__pyx_gilstate_save);
  #endif
}

/* "src/python/grpcio/grpc/_cython/_cygrpc/grpc_gevent.pyx.pxi":148
 *   _spawn_greenlet(socket_write_async, <SocketWrapper>socket.impl, write_bytes)
 * 
 * cdef socket_read_async_cython(SocketWrapper socket_wrapper):             # <<<<<<<<<<<<<<
 *   cdef char* buff_char_arr
 *   try:
 */

static PyObject *__pyx_f_4grpc_7_cython_6cygrpc_socket_read_async_cython(struct __pyx_obj_4grpc_7_cython_6cygrpc_SocketWrapper *__pyx_v_socket_wrapper) {
  char *__pyx_v_buff_char_arr;
  PyObject *__pyx_v_buff_str = NULL;
  PyObject *__pyx_v_io_error = NULL;
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  PyObject *__pyx_t_2 = NULL;
  PyObject *__pyx_t_3 = NULL;
  PyObject *__pyx_t_4 = NULL;
  PyObject *__pyx_t_5 = NULL;
  PyObject *__pyx_t_6 = NULL;
  PyObject *__pyx_t_7 = NULL;
  char *__pyx_t_8;
  Py_ssize_t __pyx_t_9;
  int __pyx_t_10;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("socket_read_async_cython", 0);

  /* "src/python/grpcio/grpc/_cython/_cygrpc/grpc_gevent.pyx.pxi":150
 * cdef socket_read_async_cython(SocketWrapper socket_wrapper):
 *   cdef char* buff_char_arr
 *   try:             # <<<<<<<<<<<<<<
 *     buff_str = socket_wrapper.socket.recv(socket_wrapper.len)
 *     buff_char_arr = buff_str
 */
  {
    __Pyx_PyThreadState_declare
    __Pyx_PyThreadState_assign
    __Pyx_ExceptionSave(&__pyx_t_1, &__pyx_t_2, &__pyx_t_3);
    __Pyx_XGOTREF(__pyx_t_1);
    __Pyx_XGOTREF(__pyx_t_2);
    __Pyx_XGOTREF(__pyx_t_3);
    /*try:*/ {

      /* "src/python/grpcio/grpc/_cython/_cygrpc/grpc_gevent.pyx.pxi":151
 *   cdef char* buff_char_arr
 *   try:
 *     buff_str = socket_wrapper.socket.recv(socket_wrapper.len)             # <<<<<<<<<<<<<<
 *     buff_char_arr = buff_str
 *     string.memcpy(<void*>socket_wrapper.c_buffer, buff_char_arr, len(buff_str))
 */
      __pyx_t_5 = __Pyx_PyObject_GetAttrStr(__pyx_v_socket_wrapper->socket, __pyx_n_s_recv); if (unlikely(!__pyx_t_5)) __PYX_ERR(6, 151, __pyx_L3_error)
      __Pyx_GOTREF(__pyx_t_5);
      __pyx_t_6 = __Pyx_PyInt_FromSize_t(__pyx_v_socket_wrapper->len); if (unlikely(!__pyx_t_6)) __PYX_ERR(6, 151, __pyx_L3_error)
      __Pyx_GOTREF(__pyx_t_6);
      __pyx_t_7 = NULL;
      if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_5))) {
        __pyx_t_7 = PyMethod_GET_SELF(__pyx_t_5);
        if (likely(__pyx_t_7)) {
          PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_5);
          __Pyx_INCREF(__pyx_t_7);
          __Pyx_INCREF(function);
          __Pyx_DECREF_SET(__pyx_t_5, function);
        }
      }
      __pyx_t_4 = (__pyx_t_7) ? __Pyx_PyObject_Call2Args(__pyx_t_5, __pyx_t_7, __pyx_t_6) : __Pyx_PyObject_CallOneArg(__pyx_t_5, __pyx_t_6);
      __Pyx_XDECREF(__pyx_t_7); __pyx_t_7 = 0;
      __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
      if (unlikely(!__pyx_t_4)) __PYX_ERR(6, 151, __pyx_L3_error)
      __Pyx_GOTREF(__pyx_t_4);
      __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
      __pyx_v_buff_str = __pyx_t_4;
      __pyx_t_4 = 0;

      /* "src/python/grpcio/grpc/_cython/_cygrpc/grpc_gevent.pyx.pxi":152
 *   try:
 *     buff_str = socket_wrapper.socket.recv(socket_wrapper.len)
 *     buff_char_arr = buff_str             # <<<<<<<<<<<<<<
 *     string.memcpy(<void*>socket_wrapper.c_buffer, buff_char_arr, len(buff_str))
 *     socket_wrapper.read_cb(<grpc_custom_socket*>socket_wrapper.c_socket,
 */
      __pyx_t_8 = __Pyx_PyObject_AsWritableString(__pyx_v_buff_str); if (unlikely((!__pyx_t_8) && PyErr_Occurred())) __PYX_ERR(6, 152, __pyx_L3_error)
      __pyx_v_buff_char_arr = __pyx_t_8;

      /* "src/python/grpcio/grpc/_cython/_cygrpc/grpc_gevent.pyx.pxi":153
 *     buff_str = socket_wrapper.socket.recv(socket_wrapper.len)
 *     buff_char_arr = buff_str
 *     string.memcpy(<void*>socket_wrapper.c_buffer, buff_char_arr, len(buff_str))             # <<<<<<<<<<<<<<
 *     socket_wrapper.read_cb(<grpc_custom_socket*>socket_wrapper.c_socket,
 *                            len(buff_str), grpc_error_none())
 */
      __pyx_t_9 = PyObject_Length(__pyx_v_buff_str); if (unlikely(__pyx_t_9 == ((Py_ssize_t)-1))) __PYX_ERR(6, 153, __pyx_L3_error)
      (void)(memcpy(((void *)__pyx_v_socket_wrapper->c_buffer), __pyx_v_buff_char_arr, __pyx_t_9));

      /* "src/python/grpcio/grpc/_cython/_cygrpc/grpc_gevent.pyx.pxi":155
 *     string.memcpy(<void*>socket_wrapper.c_buffer, buff_char_arr, len(buff_str))
 *     socket_wrapper.read_cb(<grpc_custom_socket*>socket_wrapper.c_socket,
 *                            len(buff_str), grpc_error_none())             # <<<<<<<<<<<<<<
 *   except IOError as io_error:
 *     socket_wrapper.read_cb(<grpc_custom_socket*>socket_wrapper.c_socket,
 */
      __pyx_t_9 = PyObject_Length(__pyx_v_buff_str); if (unlikely(__pyx_t_9 == ((Py_ssize_t)-1))) __PYX_ERR(6, 155, __pyx_L3_error)

      /* "src/python/grpcio/grpc/_cython/_cygrpc/grpc_gevent.pyx.pxi":154
 *     buff_char_arr = buff_str
 *     string.memcpy(<void*>socket_wrapper.c_buffer, buff_char_arr, len(buff_str))
 *     socket_wrapper.read_cb(<grpc_custom_socket*>socket_wrapper.c_socket,             # <<<<<<<<<<<<<<
 *                            len(buff_str), grpc_error_none())
 *   except IOError as io_error:
 */
      __pyx_v_socket_wrapper->read_cb(((struct grpc_custom_socket *)__pyx_v_socket_wrapper->c_socket), __pyx_t_9, __pyx_f_4grpc_7_cython_6cygrpc_grpc_error_none());

      /* "src/python/grpcio/grpc/_cython/_cygrpc/grpc_gevent.pyx.pxi":150
 * cdef socket_read_async_cython(SocketWrapper socket_wrapper):
 *   cdef char* buff_char_arr
 *   try:             # <<<<<<<<<<<<<<
 *     buff_str = socket_wrapper.socket.recv(socket_wrapper.len)
 *     buff_char_arr = buff_str
 */
    }
    __Pyx_XDECREF(__pyx_t_1); __pyx_t_1 = 0;
    __Pyx_XDECREF(__pyx_t_2); __pyx_t_2 = 0;
    __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0;
    goto __pyx_L8_try_end;
    __pyx_L3_error:;
    __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0;
    __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0;
    __Pyx_XDECREF(__pyx_t_6); __pyx_t_6 = 0;
    __Pyx_XDECREF(__pyx_t_7); __pyx_t_7 = 0;

    /* "src/python/grpcio/grpc/_cython/_cygrpc/grpc_gevent.pyx.pxi":156
 *     socket_wrapper.read_cb(<grpc_custom_socket*>socket_wrapper.c_socket,
 *                            len(buff_str), grpc_error_none())
 *   except IOError as io_error:             # <<<<<<<<<<<<<<
 *     socket_wrapper.read_cb(<grpc_custom_socket*>socket_wrapper.c_socket,
 *                            -1, socket_error("recv", str(io_error)))
 */
    __pyx_t_10 = __Pyx_PyErr_ExceptionMatches(__pyx_builtin_IOError);
    if (__pyx_t_10) {
      __Pyx_AddTraceback("grpc._cython.cygrpc.socket_read_async_cython", __pyx_clineno, __pyx_lineno, __pyx_filename);
      if (__Pyx_GetException(&__pyx_t_4, &__pyx_t_5, &__pyx_t_6) < 0) __PYX_ERR(6, 156, __pyx_L5_except_error)
      __Pyx_GOTREF(__pyx_t_4);
      __Pyx_GOTREF(__pyx_t_5);
      __Pyx_GOTREF(__pyx_t_6);
      __Pyx_INCREF(__pyx_t_5);
      __pyx_v_io_error = __pyx_t_5;

      /* "src/python/grpcio/grpc/_cython/_cygrpc/grpc_gevent.pyx.pxi":158
 *   except IOError as io_error:
 *     socket_wrapper.read_cb(<grpc_custom_socket*>socket_wrapper.c_socket,
 *                            -1, socket_error("recv", str(io_error)))             # <<<<<<<<<<<<<<
 *   g_event.set()
 * 
 */
      __pyx_t_7 = __Pyx_PyObject_CallOneArg(((PyObject *)(&PyString_Type)), __pyx_v_io_error); if (unlikely(!__pyx_t_7)) __PYX_ERR(6, 158, __pyx_L5_except_error)
      __Pyx_GOTREF(__pyx_t_7);
      if (!(likely(PyString_CheckExact(__pyx_t_7))||((__pyx_t_7) == Py_None)||(PyErr_Format(PyExc_TypeError, "Expected %.16s, got %.200s", "str", Py_TYPE(__pyx_t_7)->tp_name), 0))) __PYX_ERR(6, 158, __pyx_L5_except_error)

      /* "src/python/grpcio/grpc/_cython/_cygrpc/grpc_gevent.pyx.pxi":157
 *                            len(buff_str), grpc_error_none())
 *   except IOError as io_error:
 *     socket_wrapper.read_cb(<grpc_custom_socket*>socket_wrapper.c_socket,             # <<<<<<<<<<<<<<
 *                            -1, socket_error("recv", str(io_error)))
 *   g_event.set()
 */
      __pyx_v_socket_wrapper->read_cb(((struct grpc_custom_socket *)__pyx_v_socket_wrapper->c_socket), -1L, __pyx_f_4grpc_7_cython_6cygrpc_socket_error(__pyx_n_s_recv, ((PyObject*)__pyx_t_7)));
      __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
      __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0;
      __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0;
      __Pyx_XDECREF(__pyx_t_6); __pyx_t_6 = 0;
      goto __pyx_L4_exception_handled;
    }
    goto __pyx_L5_except_error;
    __pyx_L5_except_error:;

    /* "src/python/grpcio/grpc/_cython/_cygrpc/grpc_gevent.pyx.pxi":150
 * cdef socket_read_async_cython(SocketWrapper socket_wrapper):
 *   cdef char* buff_char_arr
 *   try:             # <<<<<<<<<<<<<<
 *     buff_str = socket_wrapper.socket.recv(socket_wrapper.len)
 *     buff_char_arr = buff_str
 */
    __Pyx_XGIVEREF(__pyx_t_1);
    __Pyx_XGIVEREF(__pyx_t_2);
    __Pyx_XGIVEREF(__pyx_t_3);
    __Pyx_ExceptionReset(__pyx_t_1, __pyx_t_2, __pyx_t_3);
    goto __pyx_L1_error;
    __pyx_L4_exception_handled:;
    __Pyx_XGIVEREF(__pyx_t_1);
    __Pyx_XGIVEREF(__pyx_t_2);
    __Pyx_XGIVEREF(__pyx_t_3);
    __Pyx_ExceptionReset(__pyx_t_1, __pyx_t_2, __pyx_t_3);
    __pyx_L8_try_end:;
  }

  /* "src/python/grpcio/grpc/_cython/_cygrpc/grpc_gevent.pyx.pxi":159
 *     socket_wrapper.read_cb(<grpc_custom_socket*>socket_wrapper.c_socket,
 *                            -1, socket_error("recv", str(io_error)))
 *   g_event.set()             # <<<<<<<<<<<<<<
 * 
 * def socket_read_async(socket_wrapper):
 */
  __Pyx_GetModuleGlobalName(__pyx_t_5, __pyx_n_s_g_event); if (unlikely(!__pyx_t_5)) __PYX_ERR(6, 159, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_5);
  __pyx_t_4 = __Pyx_PyObject_GetAttrStr(__pyx_t_5, __pyx_n_s_set); if (unlikely(!__pyx_t_4)) __PYX_ERR(6, 159, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_4);
  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
  __pyx_t_5 = NULL;
  if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_4))) {
    __pyx_t_5 = PyMethod_GET_SELF(__pyx_t_4);
    if (likely(__pyx_t_5)) {
      PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_4);
      __Pyx_INCREF(__pyx_t_5);
      __Pyx_INCREF(function);
      __Pyx_DECREF_SET(__pyx_t_4, function);
    }
  }
  __pyx_t_6 = (__pyx_t_5) ? __Pyx_PyObject_CallOneArg(__pyx_t_4, __pyx_t_5) : __Pyx_PyObject_CallNoArg(__pyx_t_4);
  __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0;
  if (unlikely(!__pyx_t_6)) __PYX_ERR(6, 159, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_6);
  __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
  __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;

  /* "src/python/grpcio/grpc/_cython/_cygrpc/grpc_gevent.pyx.pxi":148
 *   _spawn_greenlet(socket_write_async, <SocketWrapper>socket.impl, write_bytes)
 * 
 * cdef socket_read_async_cython(SocketWrapper socket_wrapper):             # <<<<<<<<<<<<<<
 *   cdef char* buff_char_arr
 *   try:
 */

  /* function exit code */
  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_4);
  __Pyx_XDECREF(__pyx_t_5);
  __Pyx_XDECREF(__pyx_t_6);
  __Pyx_XDECREF(__pyx_t_7);
  __Pyx_AddTraceback("grpc._cython.cygrpc.socket_read_async_cython", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = 0;
  __pyx_L0:;
  __Pyx_XDECREF(__pyx_v_buff_str);
  __Pyx_XDECREF(__pyx_v_io_error);
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "src/python/grpcio/grpc/_cython/_cygrpc/grpc_gevent.pyx.pxi":161
 *   g_event.set()
 * 
 * def socket_read_async(socket_wrapper):             # <<<<<<<<<<<<<<
 *   socket_read_async_cython(socket_wrapper)
 * 
 */

/* Python wrapper */
static PyObject *__pyx_pw_4grpc_7_cython_6cygrpc_71socket_read_async(PyObject *__pyx_self, PyObject *__pyx_v_socket_wrapper); /*proto*/
static PyMethodDef __pyx_mdef_4grpc_7_cython_6cygrpc_71socket_read_async = {"socket_read_async", (PyCFunction)__pyx_pw_4grpc_7_cython_6cygrpc_71socket_read_async, METH_O, 0};
static PyObject *__pyx_pw_4grpc_7_cython_6cygrpc_71socket_read_async(PyObject *__pyx_self, PyObject *__pyx_v_socket_wrapper) {
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("socket_read_async (wrapper)", 0);
  __pyx_r = __pyx_pf_4grpc_7_cython_6cygrpc_70socket_read_async(__pyx_self, ((PyObject *)__pyx_v_socket_wrapper));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_4grpc_7_cython_6cygrpc_70socket_read_async(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__pyx_v_socket_wrapper) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("socket_read_async", 0);

  /* "src/python/grpcio/grpc/_cython/_cygrpc/grpc_gevent.pyx.pxi":162
 * 
 * def socket_read_async(socket_wrapper):
 *   socket_read_async_cython(socket_wrapper)             # <<<<<<<<<<<<<<
 * 
 * cdef void socket_read(grpc_custom_socket* socket, char* buffer,
 */
  if (!(likely(((__pyx_v_socket_wrapper) == Py_None) || likely(__Pyx_TypeTest(__pyx_v_socket_wrapper, __pyx_ptype_4grpc_7_cython_6cygrpc_SocketWrapper))))) __PYX_ERR(6, 162, __pyx_L1_error)
  __pyx_t_1 = __pyx_f_4grpc_7_cython_6cygrpc_socket_read_async_cython(((struct __pyx_obj_4grpc_7_cython_6cygrpc_SocketWrapper *)__pyx_v_socket_wrapper)); if (unlikely(!__pyx_t_1)) __PYX_ERR(6, 162, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;

  /* "src/python/grpcio/grpc/_cython/_cygrpc/grpc_gevent.pyx.pxi":161
 *   g_event.set()
 * 
 * def socket_read_async(socket_wrapper):             # <<<<<<<<<<<<<<
 *   socket_read_async_cython(socket_wrapper)
 * 
 */

  /* function exit code */
  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_AddTraceback("grpc._cython.cygrpc.socket_read_async", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "src/python/grpcio/grpc/_cython/_cygrpc/grpc_gevent.pyx.pxi":164
 *   socket_read_async_cython(socket_wrapper)
 * 
 * cdef void socket_read(grpc_custom_socket* socket, char* buffer,             # <<<<<<<<<<<<<<
 *                       size_t length, grpc_custom_read_callback cb) with gil:
 *   sw = <SocketWrapper>socket.impl
 */

static void __pyx_f_4grpc_7_cython_6cygrpc_socket_read(struct grpc_custom_socket *__pyx_v_socket, char *__pyx_v_buffer, size_t __pyx_v_length, grpc_custom_read_callback __pyx_v_cb) {
  struct __pyx_obj_4grpc_7_cython_6cygrpc_SocketWrapper *__pyx_v_sw = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  PyObject *__pyx_t_2 = NULL;
  PyObject *__pyx_t_3 = NULL;
  PyObject *__pyx_t_4 = NULL;
  int __pyx_t_5;
  PyObject *__pyx_t_6 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  #ifdef WITH_THREAD
  PyGILState_STATE __pyx_gilstate_save = __Pyx_PyGILState_Ensure();
  #endif
  __Pyx_RefNannySetupContext("socket_read", 0);

  /* "src/python/grpcio/grpc/_cython/_cygrpc/grpc_gevent.pyx.pxi":166
 * cdef void socket_read(grpc_custom_socket* socket, char* buffer,
 *                       size_t length, grpc_custom_read_callback cb) with gil:
 *   sw = <SocketWrapper>socket.impl             # <<<<<<<<<<<<<<
 *   sw.read_cb = cb
 *   sw.c_buffer = buffer
 */
  __pyx_t_1 = ((PyObject *)__pyx_v_socket->impl);
  __Pyx_INCREF(__pyx_t_1);
  __pyx_v_sw = ((struct __pyx_obj_4grpc_7_cython_6cygrpc_SocketWrapper *)__pyx_t_1);
  __pyx_t_1 = 0;

  /* "src/python/grpcio/grpc/_cython/_cygrpc/grpc_gevent.pyx.pxi":167
 *                       size_t length, grpc_custom_read_callback cb) with gil:
 *   sw = <SocketWrapper>socket.impl
 *   sw.read_cb = cb             # <<<<<<<<<<<<<<
 *   sw.c_buffer = buffer
 *   sw.len = length
 */
  __pyx_v_sw->read_cb = __pyx_v_cb;

  /* "src/python/grpcio/grpc/_cython/_cygrpc/grpc_gevent.pyx.pxi":168
 *   sw = <SocketWrapper>socket.impl
 *   sw.read_cb = cb
 *   sw.c_buffer = buffer             # <<<<<<<<<<<<<<
 *   sw.len = length
 *   _spawn_greenlet(socket_read_async, sw)
 */
  __pyx_v_sw->c_buffer = __pyx_v_buffer;

  /* "src/python/grpcio/grpc/_cython/_cygrpc/grpc_gevent.pyx.pxi":169
 *   sw.read_cb = cb
 *   sw.c_buffer = buffer
 *   sw.len = length             # <<<<<<<<<<<<<<
 *   _spawn_greenlet(socket_read_async, sw)
 * 
 */
  __pyx_v_sw->len = __pyx_v_length;

  /* "src/python/grpcio/grpc/_cython/_cygrpc/grpc_gevent.pyx.pxi":170
 *   sw.c_buffer = buffer
 *   sw.len = length
 *   _spawn_greenlet(socket_read_async, sw)             # <<<<<<<<<<<<<<
 * 
 * cdef grpc_error_handle socket_getpeername(grpc_custom_socket* socket,
 */
  __Pyx_GetModuleGlobalName(__pyx_t_2, __pyx_n_s_spawn_greenlet); if (unlikely(!__pyx_t_2)) __PYX_ERR(6, 170, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __Pyx_GetModuleGlobalName(__pyx_t_3, __pyx_n_s_socket_read_async); if (unlikely(!__pyx_t_3)) __PYX_ERR(6, 170, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  __pyx_t_4 = NULL;
  __pyx_t_5 = 0;
  if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_2))) {
    __pyx_t_4 = PyMethod_GET_SELF(__pyx_t_2);
    if (likely(__pyx_t_4)) {
      PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_2);
      __Pyx_INCREF(__pyx_t_4);
      __Pyx_INCREF(function);
      __Pyx_DECREF_SET(__pyx_t_2, function);
      __pyx_t_5 = 1;
    }
  }
  #if CYTHON_FAST_PYCALL
  if (PyFunction_Check(__pyx_t_2)) {
    PyObject *__pyx_temp[3] = {__pyx_t_4, __pyx_t_3, ((PyObject *)__pyx_v_sw)};
    __pyx_t_1 = __Pyx_PyFunction_FastCall(__pyx_t_2, __pyx_temp+1-__pyx_t_5, 2+__pyx_t_5); if (unlikely(!__pyx_t_1)) __PYX_ERR(6, 170, __pyx_L1_error)
    __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0;
    __Pyx_GOTREF(__pyx_t_1);
    __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
  } else
  #endif
  #if CYTHON_FAST_PYCCALL
  if (__Pyx_PyFastCFunction_Check(__pyx_t_2)) {
    PyObject *__pyx_temp[3] = {__pyx_t_4, __pyx_t_3, ((PyObject *)__pyx_v_sw)};
    __pyx_t_1 = __Pyx_PyCFunction_FastCall(__pyx_t_2, __pyx_temp+1-__pyx_t_5, 2+__pyx_t_5); if (unlikely(!__pyx_t_1)) __PYX_ERR(6, 170, __pyx_L1_error)
    __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0;
    __Pyx_GOTREF(__pyx_t_1);
    __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
  } else
  #endif
  {
    __pyx_t_6 = PyTuple_New(2+__pyx_t_5); if (unlikely(!__pyx_t_6)) __PYX_ERR(6, 170, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_6);
    if (__pyx_t_4) {
      __Pyx_GIVEREF(__pyx_t_4); PyTuple_SET_ITEM(__pyx_t_6, 0, __pyx_t_4); __pyx_t_4 = NULL;
    }
    __Pyx_GIVEREF(__pyx_t_3);
    PyTuple_SET_ITEM(__pyx_t_6, 0+__pyx_t_5, __pyx_t_3);
    __Pyx_INCREF(((PyObject *)__pyx_v_sw));
    __Pyx_GIVEREF(((PyObject *)__pyx_v_sw));
    PyTuple_SET_ITEM(__pyx_t_6, 1+__pyx_t_5, ((PyObject *)__pyx_v_sw));
    __pyx_t_3 = 0;
    __pyx_t_1 = __Pyx_PyObject_Call(__pyx_t_2, __pyx_t_6, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(6, 170, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_1);
    __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
  }
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;

  /* "src/python/grpcio/grpc/_cython/_cygrpc/grpc_gevent.pyx.pxi":164
 *   socket_read_async_cython(socket_wrapper)
 * 
 * cdef void socket_read(grpc_custom_socket* socket, char* buffer,             # <<<<<<<<<<<<<<
 *                       size_t length, grpc_custom_read_callback cb) with gil:
 *   sw = <SocketWrapper>socket.impl
 */

  /* function exit code */
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_XDECREF(__pyx_t_3);
  __Pyx_XDECREF(__pyx_t_4);
  __Pyx_XDECREF(__pyx_t_6);
  __Pyx_WriteUnraisable("grpc._cython.cygrpc.socket_read", __pyx_clineno, __pyx_lineno, __pyx_filename, 1, 0);
  __pyx_L0:;
  __Pyx_XDECREF((PyObject *)__pyx_v_sw);
  __Pyx_RefNannyFinishContext();
  #ifdef WITH_THREAD
  __Pyx_PyGILState_Release(__pyx_gilstate_save);
  #endif
}

/* "src/python/grpcio/grpc/_cython/_cygrpc/grpc_gevent.pyx.pxi":172
 *   _spawn_greenlet(socket_read_async, sw)
 * 
 * cdef grpc_error_handle socket_getpeername(grpc_custom_socket* socket,             # <<<<<<<<<<<<<<
 *                                     const grpc_sockaddr* addr,
 *                                     int* length) with gil:
 */

static grpc_error_handle __pyx_f_4grpc_7_cython_6cygrpc_socket_getpeername(struct grpc_custom_socket *__pyx_v_socket, grpc_sockaddr const *__pyx_v_addr, int *__pyx_v_length) {
  PyObject *__pyx_v_peer = NULL;
  grpc_resolved_address __pyx_v_c_addr;
  PyObject *__pyx_v_hostname = NULL;
  grpc_error_handle __pyx_r;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  PyObject *__pyx_t_2 = NULL;
  PyObject *__pyx_t_3 = NULL;
  char *__pyx_t_4;
  int __pyx_t_5;
  size_t __pyx_t_6;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  #ifdef WITH_THREAD
  PyGILState_STATE __pyx_gilstate_save = __Pyx_PyGILState_Ensure();
  #endif
  __Pyx_RefNannySetupContext("socket_getpeername", 0);

  /* "src/python/grpcio/grpc/_cython/_cygrpc/grpc_gevent.pyx.pxi":176
 *                                     int* length) with gil:
 *   cdef char* src_buf
 *   peer = (<SocketWrapper>socket.impl).socket.getpeername()             # <<<<<<<<<<<<<<
 * 
 *   cdef grpc_resolved_address c_addr
 */
  __pyx_t_2 = __Pyx_PyObject_GetAttrStr(((struct __pyx_obj_4grpc_7_cython_6cygrpc_SocketWrapper *)__pyx_v_socket->impl)->socket, __pyx_n_s_getpeername); if (unlikely(!__pyx_t_2)) __PYX_ERR(6, 176, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __pyx_t_3 = NULL;
  if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_2))) {
    __pyx_t_3 = PyMethod_GET_SELF(__pyx_t_2);
    if (likely(__pyx_t_3)) {
      PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_2);
      __Pyx_INCREF(__pyx_t_3);
      __Pyx_INCREF(function);
      __Pyx_DECREF_SET(__pyx_t_2, function);
    }
  }
  __pyx_t_1 = (__pyx_t_3) ? __Pyx_PyObject_CallOneArg(__pyx_t_2, __pyx_t_3) : __Pyx_PyObject_CallNoArg(__pyx_t_2);
  __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0;
  if (unlikely(!__pyx_t_1)) __PYX_ERR(6, 176, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  __pyx_v_peer = __pyx_t_1;
  __pyx_t_1 = 0;

  /* "src/python/grpcio/grpc/_cython/_cygrpc/grpc_gevent.pyx.pxi":179
 * 
 *   cdef grpc_resolved_address c_addr
 *   hostname = str_to_bytes(peer[0])             # <<<<<<<<<<<<<<
 *   grpc_string_to_sockaddr(&c_addr, hostname, peer[1])
 *   string.memcpy(<void*>addr, <void*>c_addr.addr, c_addr.len)
 */
  __pyx_t_1 = __Pyx_GetItemInt(__pyx_v_peer, 0, long, 1, __Pyx_PyInt_From_long, 0, 0, 1); if (unlikely(!__pyx_t_1)) __PYX_ERR(6, 179, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_t_2 = __pyx_f_4grpc_7_cython_6cygrpc_str_to_bytes(__pyx_t_1); if (unlikely(!__pyx_t_2)) __PYX_ERR(6, 179, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  __pyx_v_hostname = ((PyObject*)__pyx_t_2);
  __pyx_t_2 = 0;

  /* "src/python/grpcio/grpc/_cython/_cygrpc/grpc_gevent.pyx.pxi":180
 *   cdef grpc_resolved_address c_addr
 *   hostname = str_to_bytes(peer[0])
 *   grpc_string_to_sockaddr(&c_addr, hostname, peer[1])             # <<<<<<<<<<<<<<
 *   string.memcpy(<void*>addr, <void*>c_addr.addr, c_addr.len)
 *   length[0] = c_addr.len
 */
  if (unlikely(__pyx_v_hostname == Py_None)) {
    PyErr_SetString(PyExc_TypeError, "expected bytes, NoneType found");
    __PYX_ERR(6, 180, __pyx_L1_error)
  }
  __pyx_t_4 = __Pyx_PyBytes_AsWritableString(__pyx_v_hostname); if (unlikely((!__pyx_t_4) && PyErr_Occurred())) __PYX_ERR(6, 180, __pyx_L1_error)
  __pyx_t_2 = __Pyx_GetItemInt(__pyx_v_peer, 1, long, 1, __Pyx_PyInt_From_long, 0, 0, 1); if (unlikely(!__pyx_t_2)) __PYX_ERR(6, 180, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __pyx_t_5 = __Pyx_PyInt_As_int(__pyx_t_2); if (unlikely((__pyx_t_5 == (int)-1) && PyErr_Occurred())) __PYX_ERR(6, 180, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  (void)(grpc_string_to_sockaddr((&__pyx_v_c_addr), __pyx_t_4, __pyx_t_5));

  /* "src/python/grpcio/grpc/_cython/_cygrpc/grpc_gevent.pyx.pxi":181
 *   hostname = str_to_bytes(peer[0])
 *   grpc_string_to_sockaddr(&c_addr, hostname, peer[1])
 *   string.memcpy(<void*>addr, <void*>c_addr.addr, c_addr.len)             # <<<<<<<<<<<<<<
 *   length[0] = c_addr.len
 *   return grpc_error_none()
 */
  (void)(memcpy(((void *)__pyx_v_addr), ((void *)__pyx_v_c_addr.addr), __pyx_v_c_addr.len));

  /* "src/python/grpcio/grpc/_cython/_cygrpc/grpc_gevent.pyx.pxi":182
 *   grpc_string_to_sockaddr(&c_addr, hostname, peer[1])
 *   string.memcpy(<void*>addr, <void*>c_addr.addr, c_addr.len)
 *   length[0] = c_addr.len             # <<<<<<<<<<<<<<
 *   return grpc_error_none()
 * 
 */
  __pyx_t_6 = __pyx_v_c_addr.len;
  (__pyx_v_length[0]) = __pyx_t_6;

  /* "src/python/grpcio/grpc/_cython/_cygrpc/grpc_gevent.pyx.pxi":183
 *   string.memcpy(<void*>addr, <void*>c_addr.addr, c_addr.len)
 *   length[0] = c_addr.len
 *   return grpc_error_none()             # <<<<<<<<<<<<<<
 * 
 * cdef grpc_error_handle socket_getsockname(grpc_custom_socket* socket,
 */
  __pyx_r = __pyx_f_4grpc_7_cython_6cygrpc_grpc_error_none();
  goto __pyx_L0;

  /* "src/python/grpcio/grpc/_cython/_cygrpc/grpc_gevent.pyx.pxi":172
 *   _spawn_greenlet(socket_read_async, sw)
 * 
 * cdef grpc_error_handle socket_getpeername(grpc_custom_socket* socket,             # <<<<<<<<<<<<<<
 *                                     const grpc_sockaddr* addr,
 *                                     int* length) with gil:
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_XDECREF(__pyx_t_3);
  __Pyx_WriteUnraisable("grpc._cython.cygrpc.socket_getpeername", __pyx_clineno, __pyx_lineno, __pyx_filename, 1, 0);
  __pyx_r = 0;
  __pyx_L0:;
  __Pyx_XDECREF(__pyx_v_peer);
  __Pyx_XDECREF(__pyx_v_hostname);
  __Pyx_RefNannyFinishContext();
  #ifdef WITH_THREAD
  __Pyx_PyGILState_Release(__pyx_gilstate_save);
  #endif
  return __pyx_r;
}

/* "src/python/grpcio/grpc/_cython/_cygrpc/grpc_gevent.pyx.pxi":185
 *   return grpc_error_none()
 * 
 * cdef grpc_error_handle socket_getsockname(grpc_custom_socket* socket,             # <<<<<<<<<<<<<<
 *                                     const grpc_sockaddr* addr,
 *                                     int* length) with gil:
 */

static grpc_error_handle __pyx_f_4grpc_7_cython_6cygrpc_socket_getsockname(struct grpc_custom_socket *__pyx_v_socket, grpc_sockaddr const *__pyx_v_addr, int *__pyx_v_length) {
  grpc_resolved_address __pyx_v_c_addr;
  PyObject *__pyx_v_peer = NULL;
  PyObject *__pyx_v_hostname = NULL;
  grpc_error_handle __pyx_r;
  __Pyx_RefNannyDeclarations
  int __pyx_t_1;
  int __pyx_t_2;
  PyObject *__pyx_t_3 = NULL;
  PyObject *__pyx_t_4 = NULL;
  PyObject *__pyx_t_5 = NULL;
  char *__pyx_t_6;
  int __pyx_t_7;
  size_t __pyx_t_8;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  #ifdef WITH_THREAD
  PyGILState_STATE __pyx_gilstate_save = __Pyx_PyGILState_Ensure();
  #endif
  __Pyx_RefNannySetupContext("socket_getsockname", 0);

  /* "src/python/grpcio/grpc/_cython/_cygrpc/grpc_gevent.pyx.pxi":190
 *   cdef char* src_buf
 *   cdef grpc_resolved_address c_addr
 *   if (<SocketWrapper>socket.impl).socket is None:             # <<<<<<<<<<<<<<
 *     peer = ('0.0.0.0', 0)
 *   else:
 */
  __pyx_t_1 = (((struct __pyx_obj_4grpc_7_cython_6cygrpc_SocketWrapper *)__pyx_v_socket->impl)->socket == Py_None);
  __pyx_t_2 = (__pyx_t_1 != 0);
  if (__pyx_t_2) {

    /* "src/python/grpcio/grpc/_cython/_cygrpc/grpc_gevent.pyx.pxi":191
 *   cdef grpc_resolved_address c_addr
 *   if (<SocketWrapper>socket.impl).socket is None:
 *     peer = ('0.0.0.0', 0)             # <<<<<<<<<<<<<<
 *   else:
 *     peer = (<SocketWrapper>socket.impl).socket.getsockname()
 */
    __Pyx_INCREF(__pyx_tuple__125);
    __pyx_v_peer = __pyx_tuple__125;

    /* "src/python/grpcio/grpc/_cython/_cygrpc/grpc_gevent.pyx.pxi":190
 *   cdef char* src_buf
 *   cdef grpc_resolved_address c_addr
 *   if (<SocketWrapper>socket.impl).socket is None:             # <<<<<<<<<<<<<<
 *     peer = ('0.0.0.0', 0)
 *   else:
 */
    goto __pyx_L3;
  }

  /* "src/python/grpcio/grpc/_cython/_cygrpc/grpc_gevent.pyx.pxi":193
 *     peer = ('0.0.0.0', 0)
 *   else:
 *     peer = (<SocketWrapper>socket.impl).socket.getsockname()             # <<<<<<<<<<<<<<
 *   hostname = str_to_bytes(peer[0])
 *   grpc_string_to_sockaddr(&c_addr, hostname, peer[1])
 */
  /*else*/ {
    __pyx_t_4 = __Pyx_PyObject_GetAttrStr(((struct __pyx_obj_4grpc_7_cython_6cygrpc_SocketWrapper *)__pyx_v_socket->impl)->socket, __pyx_n_s_getsockname); if (unlikely(!__pyx_t_4)) __PYX_ERR(6, 193, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_4);
    __pyx_t_5 = NULL;
    if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_4))) {
      __pyx_t_5 = PyMethod_GET_SELF(__pyx_t_4);
      if (likely(__pyx_t_5)) {
        PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_4);
        __Pyx_INCREF(__pyx_t_5);
        __Pyx_INCREF(function);
        __Pyx_DECREF_SET(__pyx_t_4, function);
      }
    }
    __pyx_t_3 = (__pyx_t_5) ? __Pyx_PyObject_CallOneArg(__pyx_t_4, __pyx_t_5) : __Pyx_PyObject_CallNoArg(__pyx_t_4);
    __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0;
    if (unlikely(!__pyx_t_3)) __PYX_ERR(6, 193, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_3);
    __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
    __pyx_v_peer = __pyx_t_3;
    __pyx_t_3 = 0;
  }
  __pyx_L3:;

  /* "src/python/grpcio/grpc/_cython/_cygrpc/grpc_gevent.pyx.pxi":194
 *   else:
 *     peer = (<SocketWrapper>socket.impl).socket.getsockname()
 *   hostname = str_to_bytes(peer[0])             # <<<<<<<<<<<<<<
 *   grpc_string_to_sockaddr(&c_addr, hostname, peer[1])
 *   string.memcpy(<void*>addr, <void*>c_addr.addr, c_addr.len)
 */
  __pyx_t_3 = __Pyx_GetItemInt(__pyx_v_peer, 0, long, 1, __Pyx_PyInt_From_long, 0, 0, 1); if (unlikely(!__pyx_t_3)) __PYX_ERR(6, 194, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  __pyx_t_4 = __pyx_f_4grpc_7_cython_6cygrpc_str_to_bytes(__pyx_t_3); if (unlikely(!__pyx_t_4)) __PYX_ERR(6, 194, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_4);
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
  __pyx_v_hostname = ((PyObject*)__pyx_t_4);
  __pyx_t_4 = 0;

  /* "src/python/grpcio/grpc/_cython/_cygrpc/grpc_gevent.pyx.pxi":195
 *     peer = (<SocketWrapper>socket.impl).socket.getsockname()
 *   hostname = str_to_bytes(peer[0])
 *   grpc_string_to_sockaddr(&c_addr, hostname, peer[1])             # <<<<<<<<<<<<<<
 *   string.memcpy(<void*>addr, <void*>c_addr.addr, c_addr.len)
 *   length[0] = c_addr.len
 */
  if (unlikely(__pyx_v_hostname == Py_None)) {
    PyErr_SetString(PyExc_TypeError, "expected bytes, NoneType found");
    __PYX_ERR(6, 195, __pyx_L1_error)
  }
  __pyx_t_6 = __Pyx_PyBytes_AsWritableString(__pyx_v_hostname); if (unlikely((!__pyx_t_6) && PyErr_Occurred())) __PYX_ERR(6, 195, __pyx_L1_error)
  __pyx_t_4 = __Pyx_GetItemInt(__pyx_v_peer, 1, long, 1, __Pyx_PyInt_From_long, 0, 0, 1); if (unlikely(!__pyx_t_4)) __PYX_ERR(6, 195, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_4);
  __pyx_t_7 = __Pyx_PyInt_As_int(__pyx_t_4); if (unlikely((__pyx_t_7 == (int)-1) && PyErr_Occurred())) __PYX_ERR(6, 195, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
  (void)(grpc_string_to_sockaddr((&__pyx_v_c_addr), __pyx_t_6, __pyx_t_7));

  /* "src/python/grpcio/grpc/_cython/_cygrpc/grpc_gevent.pyx.pxi":196
 *   hostname = str_to_bytes(peer[0])
 *   grpc_string_to_sockaddr(&c_addr, hostname, peer[1])
 *   string.memcpy(<void*>addr, <void*>c_addr.addr, c_addr.len)             # <<<<<<<<<<<<<<
 *   length[0] = c_addr.len
 *   return grpc_error_none()
 */
  (void)(memcpy(((void *)__pyx_v_addr), ((void *)__pyx_v_c_addr.addr), __pyx_v_c_addr.len));

  /* "src/python/grpcio/grpc/_cython/_cygrpc/grpc_gevent.pyx.pxi":197
 *   grpc_string_to_sockaddr(&c_addr, hostname, peer[1])
 *   string.memcpy(<void*>addr, <void*>c_addr.addr, c_addr.len)
 *   length[0] = c_addr.len             # <<<<<<<<<<<<<<
 *   return grpc_error_none()
 * 
 */
  __pyx_t_8 = __pyx_v_c_addr.len;
  (__pyx_v_length[0]) = __pyx_t_8;

  /* "src/python/grpcio/grpc/_cython/_cygrpc/grpc_gevent.pyx.pxi":198
 *   string.memcpy(<void*>addr, <void*>c_addr.addr, c_addr.len)
 *   length[0] = c_addr.len
 *   return grpc_error_none()             # <<<<<<<<<<<<<<
 * 
 * def applysockopts(s):
 */
  __pyx_r = __pyx_f_4grpc_7_cython_6cygrpc_grpc_error_none();
  goto __pyx_L0;

  /* "src/python/grpcio/grpc/_cython/_cygrpc/grpc_gevent.pyx.pxi":185
 *   return grpc_error_none()
 * 
 * cdef grpc_error_handle socket_getsockname(grpc_custom_socket* socket,             # <<<<<<<<<<<<<<
 *                                     const grpc_sockaddr* addr,
 *                                     int* length) with gil:
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_3);
  __Pyx_XDECREF(__pyx_t_4);
  __Pyx_XDECREF(__pyx_t_5);
  __Pyx_WriteUnraisable("grpc._cython.cygrpc.socket_getsockname", __pyx_clineno, __pyx_lineno, __pyx_filename, 1, 0);
  __pyx_r = 0;
  __pyx_L0:;
  __Pyx_XDECREF(__pyx_v_peer);
  __Pyx_XDECREF(__pyx_v_hostname);
  __Pyx_RefNannyFinishContext();
  #ifdef WITH_THREAD
  __Pyx_PyGILState_Release(__pyx_gilstate_save);
  #endif
  return __pyx_r;
}

/* "src/python/grpcio/grpc/_cython/_cygrpc/grpc_gevent.pyx.pxi":200
 *   return grpc_error_none()
 * 
 * def applysockopts(s):             # <<<<<<<<<<<<<<
 *   s.setsockopt(gevent_socket.SOL_SOCKET, gevent_socket.SO_REUSEADDR, 1)
 *   s.setsockopt(gevent_socket.IPPROTO_TCP, gevent_socket.TCP_NODELAY, True)
 */

/* Python wrapper */
static PyObject *__pyx_pw_4grpc_7_cython_6cygrpc_73applysockopts(PyObject *__pyx_self, PyObject *__pyx_v_s); /*proto*/
static PyMethodDef __pyx_mdef_4grpc_7_cython_6cygrpc_73applysockopts = {"applysockopts", (PyCFunction)__pyx_pw_4grpc_7_cython_6cygrpc_73applysockopts, METH_O, 0};
static PyObject *__pyx_pw_4grpc_7_cython_6cygrpc_73applysockopts(PyObject *__pyx_self, PyObject *__pyx_v_s) {
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("applysockopts (wrapper)", 0);
  __pyx_r = __pyx_pf_4grpc_7_cython_6cygrpc_72applysockopts(__pyx_self, ((PyObject *)__pyx_v_s));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_4grpc_7_cython_6cygrpc_72applysockopts(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__pyx_v_s) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  PyObject *__pyx_t_2 = NULL;
  PyObject *__pyx_t_3 = NULL;
  PyObject *__pyx_t_4 = NULL;
  PyObject *__pyx_t_5 = NULL;
  int __pyx_t_6;
  PyObject *__pyx_t_7 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("applysockopts", 0);

  /* "src/python/grpcio/grpc/_cython/_cygrpc/grpc_gevent.pyx.pxi":201
 * 
 * def applysockopts(s):
 *   s.setsockopt(gevent_socket.SOL_SOCKET, gevent_socket.SO_REUSEADDR, 1)             # <<<<<<<<<<<<<<
 *   s.setsockopt(gevent_socket.IPPROTO_TCP, gevent_socket.TCP_NODELAY, True)
 * 
 */
  __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_v_s, __pyx_n_s_setsockopt); if (unlikely(!__pyx_t_2)) __PYX_ERR(6, 201, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __Pyx_GetModuleGlobalName(__pyx_t_3, __pyx_n_s_gevent_socket); if (unlikely(!__pyx_t_3)) __PYX_ERR(6, 201, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  __pyx_t_4 = __Pyx_PyObject_GetAttrStr(__pyx_t_3, __pyx_n_s_SOL_SOCKET); if (unlikely(!__pyx_t_4)) __PYX_ERR(6, 201, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_4);
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
  __Pyx_GetModuleGlobalName(__pyx_t_3, __pyx_n_s_gevent_socket); if (unlikely(!__pyx_t_3)) __PYX_ERR(6, 201, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  __pyx_t_5 = __Pyx_PyObject_GetAttrStr(__pyx_t_3, __pyx_n_s_SO_REUSEADDR); if (unlikely(!__pyx_t_5)) __PYX_ERR(6, 201, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_5);
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
  __pyx_t_3 = NULL;
  __pyx_t_6 = 0;
  if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_2))) {
    __pyx_t_3 = PyMethod_GET_SELF(__pyx_t_2);
    if (likely(__pyx_t_3)) {
      PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_2);
      __Pyx_INCREF(__pyx_t_3);
      __Pyx_INCREF(function);
      __Pyx_DECREF_SET(__pyx_t_2, function);
      __pyx_t_6 = 1;
    }
  }
  #if CYTHON_FAST_PYCALL
  if (PyFunction_Check(__pyx_t_2)) {
    PyObject *__pyx_temp[4] = {__pyx_t_3, __pyx_t_4, __pyx_t_5, __pyx_int_1};
    __pyx_t_1 = __Pyx_PyFunction_FastCall(__pyx_t_2, __pyx_temp+1-__pyx_t_6, 3+__pyx_t_6); if (unlikely(!__pyx_t_1)) __PYX_ERR(6, 201, __pyx_L1_error)
    __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0;
    __Pyx_GOTREF(__pyx_t_1);
    __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
    __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
  } else
  #endif
  #if CYTHON_FAST_PYCCALL
  if (__Pyx_PyFastCFunction_Check(__pyx_t_2)) {
    PyObject *__pyx_temp[4] = {__pyx_t_3, __pyx_t_4, __pyx_t_5, __pyx_int_1};
    __pyx_t_1 = __Pyx_PyCFunction_FastCall(__pyx_t_2, __pyx_temp+1-__pyx_t_6, 3+__pyx_t_6); if (unlikely(!__pyx_t_1)) __PYX_ERR(6, 201, __pyx_L1_error)
    __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0;
    __Pyx_GOTREF(__pyx_t_1);
    __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
    __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
  } else
  #endif
  {
    __pyx_t_7 = PyTuple_New(3+__pyx_t_6); if (unlikely(!__pyx_t_7)) __PYX_ERR(6, 201, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_7);
    if (__pyx_t_3) {
      __Pyx_GIVEREF(__pyx_t_3); PyTuple_SET_ITEM(__pyx_t_7, 0, __pyx_t_3); __pyx_t_3 = NULL;
    }
    __Pyx_GIVEREF(__pyx_t_4);
    PyTuple_SET_ITEM(__pyx_t_7, 0+__pyx_t_6, __pyx_t_4);
    __Pyx_GIVEREF(__pyx_t_5);
    PyTuple_SET_ITEM(__pyx_t_7, 1+__pyx_t_6, __pyx_t_5);
    __Pyx_INCREF(__pyx_int_1);
    __Pyx_GIVEREF(__pyx_int_1);
    PyTuple_SET_ITEM(__pyx_t_7, 2+__pyx_t_6, __pyx_int_1);
    __pyx_t_4 = 0;
    __pyx_t_5 = 0;
    __pyx_t_1 = __Pyx_PyObject_Call(__pyx_t_2, __pyx_t_7, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(6, 201, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_1);
    __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
  }
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;

  /* "src/python/grpcio/grpc/_cython/_cygrpc/grpc_gevent.pyx.pxi":202
 * def applysockopts(s):
 *   s.setsockopt(gevent_socket.SOL_SOCKET, gevent_socket.SO_REUSEADDR, 1)
 *   s.setsockopt(gevent_socket.IPPROTO_TCP, gevent_socket.TCP_NODELAY, True)             # <<<<<<<<<<<<<<
 * 
 * cdef grpc_error_handle socket_bind(grpc_custom_socket* socket,
 */
  __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_v_s, __pyx_n_s_setsockopt); if (unlikely(!__pyx_t_2)) __PYX_ERR(6, 202, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __Pyx_GetModuleGlobalName(__pyx_t_7, __pyx_n_s_gevent_socket); if (unlikely(!__pyx_t_7)) __PYX_ERR(6, 202, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_7);
  __pyx_t_5 = __Pyx_PyObject_GetAttrStr(__pyx_t_7, __pyx_n_s_IPPROTO_TCP); if (unlikely(!__pyx_t_5)) __PYX_ERR(6, 202, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_5);
  __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
  __Pyx_GetModuleGlobalName(__pyx_t_7, __pyx_n_s_gevent_socket); if (unlikely(!__pyx_t_7)) __PYX_ERR(6, 202, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_7);
  __pyx_t_4 = __Pyx_PyObject_GetAttrStr(__pyx_t_7, __pyx_n_s_TCP_NODELAY); if (unlikely(!__pyx_t_4)) __PYX_ERR(6, 202, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_4);
  __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
  __pyx_t_7 = NULL;
  __pyx_t_6 = 0;
  if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_2))) {
    __pyx_t_7 = PyMethod_GET_SELF(__pyx_t_2);
    if (likely(__pyx_t_7)) {
      PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_2);
      __Pyx_INCREF(__pyx_t_7);
      __Pyx_INCREF(function);
      __Pyx_DECREF_SET(__pyx_t_2, function);
      __pyx_t_6 = 1;
    }
  }
  #if CYTHON_FAST_PYCALL
  if (PyFunction_Check(__pyx_t_2)) {
    PyObject *__pyx_temp[4] = {__pyx_t_7, __pyx_t_5, __pyx_t_4, Py_True};
    __pyx_t_1 = __Pyx_PyFunction_FastCall(__pyx_t_2, __pyx_temp+1-__pyx_t_6, 3+__pyx_t_6); if (unlikely(!__pyx_t_1)) __PYX_ERR(6, 202, __pyx_L1_error)
    __Pyx_XDECREF(__pyx_t_7); __pyx_t_7 = 0;
    __Pyx_GOTREF(__pyx_t_1);
    __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
    __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
  } else
  #endif
  #if CYTHON_FAST_PYCCALL
  if (__Pyx_PyFastCFunction_Check(__pyx_t_2)) {
    PyObject *__pyx_temp[4] = {__pyx_t_7, __pyx_t_5, __pyx_t_4, Py_True};
    __pyx_t_1 = __Pyx_PyCFunction_FastCall(__pyx_t_2, __pyx_temp+1-__pyx_t_6, 3+__pyx_t_6); if (unlikely(!__pyx_t_1)) __PYX_ERR(6, 202, __pyx_L1_error)
    __Pyx_XDECREF(__pyx_t_7); __pyx_t_7 = 0;
    __Pyx_GOTREF(__pyx_t_1);
    __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
    __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
  } else
  #endif
  {
    __pyx_t_3 = PyTuple_New(3+__pyx_t_6); if (unlikely(!__pyx_t_3)) __PYX_ERR(6, 202, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_3);
    if (__pyx_t_7) {
      __Pyx_GIVEREF(__pyx_t_7); PyTuple_SET_ITEM(__pyx_t_3, 0, __pyx_t_7); __pyx_t_7 = NULL;
    }
    __Pyx_GIVEREF(__pyx_t_5);
    PyTuple_SET_ITEM(__pyx_t_3, 0+__pyx_t_6, __pyx_t_5);
    __Pyx_GIVEREF(__pyx_t_4);
    PyTuple_SET_ITEM(__pyx_t_3, 1+__pyx_t_6, __pyx_t_4);
    __Pyx_INCREF(Py_True);
    __Pyx_GIVEREF(Py_True);
    PyTuple_SET_ITEM(__pyx_t_3, 2+__pyx_t_6, Py_True);
    __pyx_t_5 = 0;
    __pyx_t_4 = 0;
    __pyx_t_1 = __Pyx_PyObject_Call(__pyx_t_2, __pyx_t_3, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(6, 202, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_1);
    __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
  }
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;

  /* "src/python/grpcio/grpc/_cython/_cygrpc/grpc_gevent.pyx.pxi":200
 *   return grpc_error_none()
 * 
 * def applysockopts(s):             # <<<<<<<<<<<<<<
 *   s.setsockopt(gevent_socket.SOL_SOCKET, gevent_socket.SO_REUSEADDR, 1)
 *   s.setsockopt(gevent_socket.IPPROTO_TCP, gevent_socket.TCP_NODELAY, True)
 */

  /* function exit code */
  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_XDECREF(__pyx_t_3);
  __Pyx_XDECREF(__pyx_t_4);
  __Pyx_XDECREF(__pyx_t_5);
  __Pyx_XDECREF(__pyx_t_7);
  __Pyx_AddTraceback("grpc._cython.cygrpc.applysockopts", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "src/python/grpcio/grpc/_cython/_cygrpc/grpc_gevent.pyx.pxi":204
 *   s.setsockopt(gevent_socket.IPPROTO_TCP, gevent_socket.TCP_NODELAY, True)
 * 
 * cdef grpc_error_handle socket_bind(grpc_custom_socket* socket,             # <<<<<<<<<<<<<<
 *                              const grpc_sockaddr* addr,
 *                              size_t len, int flags) with gil:
 */

static grpc_error_handle __pyx_f_4grpc_7_cython_6cygrpc_socket_bind(struct grpc_custom_socket *__pyx_v_socket, grpc_sockaddr const *__pyx_v_addr, size_t __pyx_v_len, CYTHON_UNUSED int __pyx_v_flags) {
  PyObject *__pyx_v_addr_tuple = NULL;
  PyObject *__pyx_v_py_socket = NULL;
  CYTHON_UNUSED PyObject *__pyx_v_e = NULL;
  PyObject *__pyx_v_io_error = NULL;
  grpc_error_handle __pyx_r;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  PyObject *__pyx_t_2 = NULL;
  PyObject *__pyx_t_3 = NULL;
  PyObject *__pyx_t_4 = NULL;
  PyObject *__pyx_t_5 = NULL;
  PyObject *__pyx_t_6 = NULL;
  PyObject *__pyx_t_7 = NULL;
  PyObject *__pyx_t_8 = NULL;
  PyObject *__pyx_t_9 = NULL;
  PyObject *__pyx_t_10 = NULL;
  PyObject *__pyx_t_11 = NULL;
  int __pyx_t_12;
  PyObject *__pyx_t_13 = NULL;
  PyObject *__pyx_t_14 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  #ifdef WITH_THREAD
  PyGILState_STATE __pyx_gilstate_save = __Pyx_PyGILState_Ensure();
  #endif
  __Pyx_RefNannySetupContext("socket_bind", 0);

  /* "src/python/grpcio/grpc/_cython/_cygrpc/grpc_gevent.pyx.pxi":207
 *                              const grpc_sockaddr* addr,
 *                              size_t len, int flags) with gil:
 *   addr_tuple = sockaddr_to_tuple(addr, len)             # <<<<<<<<<<<<<<
 *   try:
 *     try:
 */
  __pyx_t_1 = __pyx_f_4grpc_7_cython_6cygrpc_sockaddr_to_tuple(__pyx_v_addr, __pyx_v_len); if (unlikely(!__pyx_t_1)) __PYX_ERR(6, 207, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_v_addr_tuple = __pyx_t_1;
  __pyx_t_1 = 0;

  /* "src/python/grpcio/grpc/_cython/_cygrpc/grpc_gevent.pyx.pxi":208
 *                              size_t len, int flags) with gil:
 *   addr_tuple = sockaddr_to_tuple(addr, len)
 *   try:             # <<<<<<<<<<<<<<
 *     try:
 *       py_socket = gevent_socket.socket(gevent_socket.AF_INET)
 */
  {
    __Pyx_PyThreadState_declare
    __Pyx_PyThreadState_assign
    __Pyx_ExceptionSave(&__pyx_t_2, &__pyx_t_3, &__pyx_t_4);
    __Pyx_XGOTREF(__pyx_t_2);
    __Pyx_XGOTREF(__pyx_t_3);
    __Pyx_XGOTREF(__pyx_t_4);
    /*try:*/ {

      /* "src/python/grpcio/grpc/_cython/_cygrpc/grpc_gevent.pyx.pxi":209
 *   addr_tuple = sockaddr_to_tuple(addr, len)
 *   try:
 *     try:             # <<<<<<<<<<<<<<
 *       py_socket = gevent_socket.socket(gevent_socket.AF_INET)
 *       applysockopts(py_socket)
 */
      {
        __Pyx_PyThreadState_declare
        __Pyx_PyThreadState_assign
        __Pyx_ExceptionSave(&__pyx_t_5, &__pyx_t_6, &__pyx_t_7);
        __Pyx_XGOTREF(__pyx_t_5);
        __Pyx_XGOTREF(__pyx_t_6);
        __Pyx_XGOTREF(__pyx_t_7);
        /*try:*/ {

          /* "src/python/grpcio/grpc/_cython/_cygrpc/grpc_gevent.pyx.pxi":210
 *   try:
 *     try:
 *       py_socket = gevent_socket.socket(gevent_socket.AF_INET)             # <<<<<<<<<<<<<<
 *       applysockopts(py_socket)
 *       py_socket.bind(addr_tuple)
 */
          __Pyx_GetModuleGlobalName(__pyx_t_8, __pyx_n_s_gevent_socket); if (unlikely(!__pyx_t_8)) __PYX_ERR(6, 210, __pyx_L9_error)
          __Pyx_GOTREF(__pyx_t_8);
          __pyx_t_9 = __Pyx_PyObject_GetAttrStr(__pyx_t_8, __pyx_n_s_socket); if (unlikely(!__pyx_t_9)) __PYX_ERR(6, 210, __pyx_L9_error)
          __Pyx_GOTREF(__pyx_t_9);
          __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
          __Pyx_GetModuleGlobalName(__pyx_t_8, __pyx_n_s_gevent_socket); if (unlikely(!__pyx_t_8)) __PYX_ERR(6, 210, __pyx_L9_error)
          __Pyx_GOTREF(__pyx_t_8);
          __pyx_t_10 = __Pyx_PyObject_GetAttrStr(__pyx_t_8, __pyx_n_s_AF_INET); if (unlikely(!__pyx_t_10)) __PYX_ERR(6, 210, __pyx_L9_error)
          __Pyx_GOTREF(__pyx_t_10);
          __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
          __pyx_t_8 = NULL;
          if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_9))) {
            __pyx_t_8 = PyMethod_GET_SELF(__pyx_t_9);
            if (likely(__pyx_t_8)) {
              PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_9);
              __Pyx_INCREF(__pyx_t_8);
              __Pyx_INCREF(function);
              __Pyx_DECREF_SET(__pyx_t_9, function);
            }
          }
          __pyx_t_1 = (__pyx_t_8) ? __Pyx_PyObject_Call2Args(__pyx_t_9, __pyx_t_8, __pyx_t_10) : __Pyx_PyObject_CallOneArg(__pyx_t_9, __pyx_t_10);
          __Pyx_XDECREF(__pyx_t_8); __pyx_t_8 = 0;
          __Pyx_DECREF(__pyx_t_10); __pyx_t_10 = 0;
          if (unlikely(!__pyx_t_1)) __PYX_ERR(6, 210, __pyx_L9_error)
          __Pyx_GOTREF(__pyx_t_1);
          __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0;
          __pyx_v_py_socket = __pyx_t_1;
          __pyx_t_1 = 0;

          /* "src/python/grpcio/grpc/_cython/_cygrpc/grpc_gevent.pyx.pxi":211
 *     try:
 *       py_socket = gevent_socket.socket(gevent_socket.AF_INET)
 *       applysockopts(py_socket)             # <<<<<<<<<<<<<<
 *       py_socket.bind(addr_tuple)
 *     except gevent_socket.gaierror as e:
 */
          __Pyx_GetModuleGlobalName(__pyx_t_9, __pyx_n_s_applysockopts); if (unlikely(!__pyx_t_9)) __PYX_ERR(6, 211, __pyx_L9_error)
          __Pyx_GOTREF(__pyx_t_9);
          __pyx_t_10 = NULL;
          if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_9))) {
            __pyx_t_10 = PyMethod_GET_SELF(__pyx_t_9);
            if (likely(__pyx_t_10)) {
              PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_9);
              __Pyx_INCREF(__pyx_t_10);
              __Pyx_INCREF(function);
              __Pyx_DECREF_SET(__pyx_t_9, function);
            }
          }
          __pyx_t_1 = (__pyx_t_10) ? __Pyx_PyObject_Call2Args(__pyx_t_9, __pyx_t_10, __pyx_v_py_socket) : __Pyx_PyObject_CallOneArg(__pyx_t_9, __pyx_v_py_socket);
          __Pyx_XDECREF(__pyx_t_10); __pyx_t_10 = 0;
          if (unlikely(!__pyx_t_1)) __PYX_ERR(6, 211, __pyx_L9_error)
          __Pyx_GOTREF(__pyx_t_1);
          __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0;
          __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;

          /* "src/python/grpcio/grpc/_cython/_cygrpc/grpc_gevent.pyx.pxi":212
 *       py_socket = gevent_socket.socket(gevent_socket.AF_INET)
 *       applysockopts(py_socket)
 *       py_socket.bind(addr_tuple)             # <<<<<<<<<<<<<<
 *     except gevent_socket.gaierror as e:
 *       py_socket = gevent_socket.socket(gevent_socket.AF_INET6)
 */
          __pyx_t_9 = __Pyx_PyObject_GetAttrStr(__pyx_v_py_socket, __pyx_n_s_bind); if (unlikely(!__pyx_t_9)) __PYX_ERR(6, 212, __pyx_L9_error)
          __Pyx_GOTREF(__pyx_t_9);
          __pyx_t_10 = NULL;
          if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_9))) {
            __pyx_t_10 = PyMethod_GET_SELF(__pyx_t_9);
            if (likely(__pyx_t_10)) {
              PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_9);
              __Pyx_INCREF(__pyx_t_10);
              __Pyx_INCREF(function);
              __Pyx_DECREF_SET(__pyx_t_9, function);
            }
          }
          __pyx_t_1 = (__pyx_t_10) ? __Pyx_PyObject_Call2Args(__pyx_t_9, __pyx_t_10, __pyx_v_addr_tuple) : __Pyx_PyObject_CallOneArg(__pyx_t_9, __pyx_v_addr_tuple);
          __Pyx_XDECREF(__pyx_t_10); __pyx_t_10 = 0;
          if (unlikely(!__pyx_t_1)) __PYX_ERR(6, 212, __pyx_L9_error)
          __Pyx_GOTREF(__pyx_t_1);
          __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0;
          __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;

          /* "src/python/grpcio/grpc/_cython/_cygrpc/grpc_gevent.pyx.pxi":209
 *   addr_tuple = sockaddr_to_tuple(addr, len)
 *   try:
 *     try:             # <<<<<<<<<<<<<<
 *       py_socket = gevent_socket.socket(gevent_socket.AF_INET)
 *       applysockopts(py_socket)
 */
        }
        __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0;
        __Pyx_XDECREF(__pyx_t_6); __pyx_t_6 = 0;
        __Pyx_XDECREF(__pyx_t_7); __pyx_t_7 = 0;
        goto __pyx_L14_try_end;
        __pyx_L9_error:;
        __Pyx_XDECREF(__pyx_t_1); __pyx_t_1 = 0;
        __Pyx_XDECREF(__pyx_t_10); __pyx_t_10 = 0;
        __Pyx_XDECREF(__pyx_t_8); __pyx_t_8 = 0;
        __Pyx_XDECREF(__pyx_t_9); __pyx_t_9 = 0;

        /* "src/python/grpcio/grpc/_cython/_cygrpc/grpc_gevent.pyx.pxi":213
 *       applysockopts(py_socket)
 *       py_socket.bind(addr_tuple)
 *     except gevent_socket.gaierror as e:             # <<<<<<<<<<<<<<
 *       py_socket = gevent_socket.socket(gevent_socket.AF_INET6)
 *       applysockopts(py_socket)
 */
        __Pyx_ErrFetch(&__pyx_t_1, &__pyx_t_9, &__pyx_t_10);
        __Pyx_GetModuleGlobalName(__pyx_t_8, __pyx_n_s_gevent_socket); if (unlikely(!__pyx_t_8)) __PYX_ERR(6, 213, __pyx_L11_except_error)
        __Pyx_GOTREF(__pyx_t_8);
        __pyx_t_11 = __Pyx_PyObject_GetAttrStr(__pyx_t_8, __pyx_n_s_gaierror); if (unlikely(!__pyx_t_11)) __PYX_ERR(6, 213, __pyx_L11_except_error)
        __Pyx_GOTREF(__pyx_t_11);
        __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
        __pyx_t_12 = __Pyx_PyErr_GivenExceptionMatches(__pyx_t_1, __pyx_t_11);
        __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0;
        __Pyx_ErrRestore(__pyx_t_1, __pyx_t_9, __pyx_t_10);
        __pyx_t_1 = 0; __pyx_t_9 = 0; __pyx_t_10 = 0;
        if (__pyx_t_12) {
          __Pyx_AddTraceback("grpc._cython.cygrpc.socket_bind", __pyx_clineno, __pyx_lineno, __pyx_filename);
          if (__Pyx_GetException(&__pyx_t_10, &__pyx_t_9, &__pyx_t_1) < 0) __PYX_ERR(6, 213, __pyx_L11_except_error)
          __Pyx_GOTREF(__pyx_t_10);
          __Pyx_GOTREF(__pyx_t_9);
          __Pyx_GOTREF(__pyx_t_1);
          __Pyx_INCREF(__pyx_t_9);
          __pyx_v_e = __pyx_t_9;

          /* "src/python/grpcio/grpc/_cython/_cygrpc/grpc_gevent.pyx.pxi":214
 *       py_socket.bind(addr_tuple)
 *     except gevent_socket.gaierror as e:
 *       py_socket = gevent_socket.socket(gevent_socket.AF_INET6)             # <<<<<<<<<<<<<<
 *       applysockopts(py_socket)
 *       py_socket.bind(addr_tuple)
 */
          __Pyx_GetModuleGlobalName(__pyx_t_8, __pyx_n_s_gevent_socket); if (unlikely(!__pyx_t_8)) __PYX_ERR(6, 214, __pyx_L11_except_error)
          __Pyx_GOTREF(__pyx_t_8);
          __pyx_t_13 = __Pyx_PyObject_GetAttrStr(__pyx_t_8, __pyx_n_s_socket); if (unlikely(!__pyx_t_13)) __PYX_ERR(6, 214, __pyx_L11_except_error)
          __Pyx_GOTREF(__pyx_t_13);
          __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
          __Pyx_GetModuleGlobalName(__pyx_t_8, __pyx_n_s_gevent_socket); if (unlikely(!__pyx_t_8)) __PYX_ERR(6, 214, __pyx_L11_except_error)
          __Pyx_GOTREF(__pyx_t_8);
          __pyx_t_14 = __Pyx_PyObject_GetAttrStr(__pyx_t_8, __pyx_n_s_AF_INET6); if (unlikely(!__pyx_t_14)) __PYX_ERR(6, 214, __pyx_L11_except_error)
          __Pyx_GOTREF(__pyx_t_14);
          __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
          __pyx_t_8 = NULL;
          if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_13))) {
            __pyx_t_8 = PyMethod_GET_SELF(__pyx_t_13);
            if (likely(__pyx_t_8)) {
              PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_13);
              __Pyx_INCREF(__pyx_t_8);
              __Pyx_INCREF(function);
              __Pyx_DECREF_SET(__pyx_t_13, function);
            }
          }
          __pyx_t_11 = (__pyx_t_8) ? __Pyx_PyObject_Call2Args(__pyx_t_13, __pyx_t_8, __pyx_t_14) : __Pyx_PyObject_CallOneArg(__pyx_t_13, __pyx_t_14);
          __Pyx_XDECREF(__pyx_t_8); __pyx_t_8 = 0;
          __Pyx_DECREF(__pyx_t_14); __pyx_t_14 = 0;
          if (unlikely(!__pyx_t_11)) __PYX_ERR(6, 214, __pyx_L11_except_error)
          __Pyx_GOTREF(__pyx_t_11);
          __Pyx_DECREF(__pyx_t_13); __pyx_t_13 = 0;
          __Pyx_XDECREF_SET(__pyx_v_py_socket, __pyx_t_11);
          __pyx_t_11 = 0;

          /* "src/python/grpcio/grpc/_cython/_cygrpc/grpc_gevent.pyx.pxi":215
 *     except gevent_socket.gaierror as e:
 *       py_socket = gevent_socket.socket(gevent_socket.AF_INET6)
 *       applysockopts(py_socket)             # <<<<<<<<<<<<<<
 *       py_socket.bind(addr_tuple)
 *     (<SocketWrapper>socket.impl).socket = py_socket
 */
          __Pyx_GetModuleGlobalName(__pyx_t_13, __pyx_n_s_applysockopts); if (unlikely(!__pyx_t_13)) __PYX_ERR(6, 215, __pyx_L11_except_error)
          __Pyx_GOTREF(__pyx_t_13);
          __pyx_t_14 = NULL;
          if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_13))) {
            __pyx_t_14 = PyMethod_GET_SELF(__pyx_t_13);
            if (likely(__pyx_t_14)) {
              PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_13);
              __Pyx_INCREF(__pyx_t_14);
              __Pyx_INCREF(function);
              __Pyx_DECREF_SET(__pyx_t_13, function);
            }
          }
          __pyx_t_11 = (__pyx_t_14) ? __Pyx_PyObject_Call2Args(__pyx_t_13, __pyx_t_14, __pyx_v_py_socket) : __Pyx_PyObject_CallOneArg(__pyx_t_13, __pyx_v_py_socket);
          __Pyx_XDECREF(__pyx_t_14); __pyx_t_14 = 0;
          if (unlikely(!__pyx_t_11)) __PYX_ERR(6, 215, __pyx_L11_except_error)
          __Pyx_GOTREF(__pyx_t_11);
          __Pyx_DECREF(__pyx_t_13); __pyx_t_13 = 0;
          __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0;

          /* "src/python/grpcio/grpc/_cython/_cygrpc/grpc_gevent.pyx.pxi":216
 *       py_socket = gevent_socket.socket(gevent_socket.AF_INET6)
 *       applysockopts(py_socket)
 *       py_socket.bind(addr_tuple)             # <<<<<<<<<<<<<<
 *     (<SocketWrapper>socket.impl).socket = py_socket
 *   except IOError as io_error:
 */
          __pyx_t_13 = __Pyx_PyObject_GetAttrStr(__pyx_v_py_socket, __pyx_n_s_bind); if (unlikely(!__pyx_t_13)) __PYX_ERR(6, 216, __pyx_L11_except_error)
          __Pyx_GOTREF(__pyx_t_13);
          __pyx_t_14 = NULL;
          if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_13))) {
            __pyx_t_14 = PyMethod_GET_SELF(__pyx_t_13);
            if (likely(__pyx_t_14)) {
              PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_13);
              __Pyx_INCREF(__pyx_t_14);
              __Pyx_INCREF(function);
              __Pyx_DECREF_SET(__pyx_t_13, function);
            }
          }
          __pyx_t_11 = (__pyx_t_14) ? __Pyx_PyObject_Call2Args(__pyx_t_13, __pyx_t_14, __pyx_v_addr_tuple) : __Pyx_PyObject_CallOneArg(__pyx_t_13, __pyx_v_addr_tuple);
          __Pyx_XDECREF(__pyx_t_14); __pyx_t_14 = 0;
          if (unlikely(!__pyx_t_11)) __PYX_ERR(6, 216, __pyx_L11_except_error)
          __Pyx_GOTREF(__pyx_t_11);
          __Pyx_DECREF(__pyx_t_13); __pyx_t_13 = 0;
          __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0;
          __Pyx_XDECREF(__pyx_t_10); __pyx_t_10 = 0;
          __Pyx_XDECREF(__pyx_t_9); __pyx_t_9 = 0;
          __Pyx_XDECREF(__pyx_t_1); __pyx_t_1 = 0;
          goto __pyx_L10_exception_handled;
        }
        goto __pyx_L11_except_error;
        __pyx_L11_except_error:;

        /* "src/python/grpcio/grpc/_cython/_cygrpc/grpc_gevent.pyx.pxi":209
 *   addr_tuple = sockaddr_to_tuple(addr, len)
 *   try:
 *     try:             # <<<<<<<<<<<<<<
 *       py_socket = gevent_socket.socket(gevent_socket.AF_INET)
 *       applysockopts(py_socket)
 */
        __Pyx_XGIVEREF(__pyx_t_5);
        __Pyx_XGIVEREF(__pyx_t_6);
        __Pyx_XGIVEREF(__pyx_t_7);
        __Pyx_ExceptionReset(__pyx_t_5, __pyx_t_6, __pyx_t_7);
        goto __pyx_L3_error;
        __pyx_L10_exception_handled:;
        __Pyx_XGIVEREF(__pyx_t_5);
        __Pyx_XGIVEREF(__pyx_t_6);
        __Pyx_XGIVEREF(__pyx_t_7);
        __Pyx_ExceptionReset(__pyx_t_5, __pyx_t_6, __pyx_t_7);
        __pyx_L14_try_end:;
      }

      /* "src/python/grpcio/grpc/_cython/_cygrpc/grpc_gevent.pyx.pxi":217
 *       applysockopts(py_socket)
 *       py_socket.bind(addr_tuple)
 *     (<SocketWrapper>socket.impl).socket = py_socket             # <<<<<<<<<<<<<<
 *   except IOError as io_error:
 *     return socket_error("bind", str(io_error))
 */
      __Pyx_INCREF(__pyx_v_py_socket);
      __Pyx_GIVEREF(__pyx_v_py_socket);
      __Pyx_GOTREF(((struct __pyx_obj_4grpc_7_cython_6cygrpc_SocketWrapper *)__pyx_v_socket->impl)->socket);
      __Pyx_DECREF(((struct __pyx_obj_4grpc_7_cython_6cygrpc_SocketWrapper *)__pyx_v_socket->impl)->socket);
      ((struct __pyx_obj_4grpc_7_cython_6cygrpc_SocketWrapper *)__pyx_v_socket->impl)->socket = __pyx_v_py_socket;

      /* "src/python/grpcio/grpc/_cython/_cygrpc/grpc_gevent.pyx.pxi":208
 *                              size_t len, int flags) with gil:
 *   addr_tuple = sockaddr_to_tuple(addr, len)
 *   try:             # <<<<<<<<<<<<<<
 *     try:
 *       py_socket = gevent_socket.socket(gevent_socket.AF_INET)
 */
    }

    /* "src/python/grpcio/grpc/_cython/_cygrpc/grpc_gevent.pyx.pxi":221
 *     return socket_error("bind", str(io_error))
 *   else:
 *     return grpc_error_none()             # <<<<<<<<<<<<<<
 * 
 * cdef grpc_error_handle socket_listen(grpc_custom_socket* socket) with gil:
 */
    /*else:*/ {
      __pyx_r = __pyx_f_4grpc_7_cython_6cygrpc_grpc_error_none();
      goto __pyx_L6_except_return;
    }
    __pyx_L3_error:;
    __Pyx_XDECREF(__pyx_t_1); __pyx_t_1 = 0;
    __Pyx_XDECREF(__pyx_t_10); __pyx_t_10 = 0;
    __Pyx_XDECREF(__pyx_t_11); __pyx_t_11 = 0;
    __Pyx_XDECREF(__pyx_t_13); __pyx_t_13 = 0;
    __Pyx_XDECREF(__pyx_t_14); __pyx_t_14 = 0;
    __Pyx_XDECREF(__pyx_t_8); __pyx_t_8 = 0;
    __Pyx_XDECREF(__pyx_t_9); __pyx_t_9 = 0;

    /* "src/python/grpcio/grpc/_cython/_cygrpc/grpc_gevent.pyx.pxi":218
 *       py_socket.bind(addr_tuple)
 *     (<SocketWrapper>socket.impl).socket = py_socket
 *   except IOError as io_error:             # <<<<<<<<<<<<<<
 *     return socket_error("bind", str(io_error))
 *   else:
 */
    __pyx_t_12 = __Pyx_PyErr_ExceptionMatches(__pyx_builtin_IOError);
    if (__pyx_t_12) {
      __Pyx_AddTraceback("grpc._cython.cygrpc.socket_bind", __pyx_clineno, __pyx_lineno, __pyx_filename);
      if (__Pyx_GetException(&__pyx_t_1, &__pyx_t_9, &__pyx_t_10) < 0) __PYX_ERR(6, 218, __pyx_L5_except_error)
      __Pyx_GOTREF(__pyx_t_1);
      __Pyx_GOTREF(__pyx_t_9);
      __Pyx_GOTREF(__pyx_t_10);
      __Pyx_INCREF(__pyx_t_9);
      __pyx_v_io_error = __pyx_t_9;

      /* "src/python/grpcio/grpc/_cython/_cygrpc/grpc_gevent.pyx.pxi":219
 *     (<SocketWrapper>socket.impl).socket = py_socket
 *   except IOError as io_error:
 *     return socket_error("bind", str(io_error))             # <<<<<<<<<<<<<<
 *   else:
 *     return grpc_error_none()
 */
      __pyx_t_11 = __Pyx_PyObject_CallOneArg(((PyObject *)(&PyString_Type)), __pyx_v_io_error); if (unlikely(!__pyx_t_11)) __PYX_ERR(6, 219, __pyx_L5_except_error)
      __Pyx_GOTREF(__pyx_t_11);
      if (!(likely(PyString_CheckExact(__pyx_t_11))||((__pyx_t_11) == Py_None)||(PyErr_Format(PyExc_TypeError, "Expected %.16s, got %.200s", "str", Py_TYPE(__pyx_t_11)->tp_name), 0))) __PYX_ERR(6, 219, __pyx_L5_except_error)
      __pyx_r = __pyx_f_4grpc_7_cython_6cygrpc_socket_error(__pyx_n_s_bind, ((PyObject*)__pyx_t_11));
      __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0;
      __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
      __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0;
      __Pyx_DECREF(__pyx_t_10); __pyx_t_10 = 0;
      goto __pyx_L6_except_return;
    }
    goto __pyx_L5_except_error;
    __pyx_L5_except_error:;

    /* "src/python/grpcio/grpc/_cython/_cygrpc/grpc_gevent.pyx.pxi":208
 *                              size_t len, int flags) with gil:
 *   addr_tuple = sockaddr_to_tuple(addr, len)
 *   try:             # <<<<<<<<<<<<<<
 *     try:
 *       py_socket = gevent_socket.socket(gevent_socket.AF_INET)
 */
    __Pyx_XGIVEREF(__pyx_t_2);
    __Pyx_XGIVEREF(__pyx_t_3);
    __Pyx_XGIVEREF(__pyx_t_4);
    __Pyx_ExceptionReset(__pyx_t_2, __pyx_t_3, __pyx_t_4);
    goto __pyx_L1_error;
    __pyx_L6_except_return:;
    __Pyx_XGIVEREF(__pyx_t_2);
    __Pyx_XGIVEREF(__pyx_t_3);
    __Pyx_XGIVEREF(__pyx_t_4);
    __Pyx_ExceptionReset(__pyx_t_2, __pyx_t_3, __pyx_t_4);
    goto __pyx_L0;
  }

  /* "src/python/grpcio/grpc/_cython/_cygrpc/grpc_gevent.pyx.pxi":204
 *   s.setsockopt(gevent_socket.IPPROTO_TCP, gevent_socket.TCP_NODELAY, True)
 * 
 * cdef grpc_error_handle socket_bind(grpc_custom_socket* socket,             # <<<<<<<<<<<<<<
 *                              const grpc_sockaddr* addr,
 *                              size_t len, int flags) with gil:
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_XDECREF(__pyx_t_8);
  __Pyx_XDECREF(__pyx_t_9);
  __Pyx_XDECREF(__pyx_t_10);
  __Pyx_XDECREF(__pyx_t_11);
  __Pyx_XDECREF(__pyx_t_13);
  __Pyx_XDECREF(__pyx_t_14);
  __Pyx_WriteUnraisable("grpc._cython.cygrpc.socket_bind", __pyx_clineno, __pyx_lineno, __pyx_filename, 1, 0);
  __pyx_r = 0;
  __pyx_L0:;
  __Pyx_XDECREF(__pyx_v_addr_tuple);
  __Pyx_XDECREF(__pyx_v_py_socket);
  __Pyx_XDECREF(__pyx_v_e);
  __Pyx_XDECREF(__pyx_v_io_error);
  __Pyx_RefNannyFinishContext();
  #ifdef WITH_THREAD
  __Pyx_PyGILState_Release(__pyx_gilstate_save);
  #endif
  return __pyx_r;
}

/* "src/python/grpcio/grpc/_cython/_cygrpc/grpc_gevent.pyx.pxi":223
 *     return grpc_error_none()
 * 
 * cdef grpc_error_handle socket_listen(grpc_custom_socket* socket) with gil:             # <<<<<<<<<<<<<<
 *   (<SocketWrapper>socket.impl).socket.listen(50)
 *   return grpc_error_none()
 */

static grpc_error_handle __pyx_f_4grpc_7_cython_6cygrpc_socket_listen(struct grpc_custom_socket *__pyx_v_socket) {
  grpc_error_handle __pyx_r;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  PyObject *__pyx_t_2 = NULL;
  PyObject *__pyx_t_3 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  #ifdef WITH_THREAD
  PyGILState_STATE __pyx_gilstate_save = __Pyx_PyGILState_Ensure();
  #endif
  __Pyx_RefNannySetupContext("socket_listen", 0);

  /* "src/python/grpcio/grpc/_cython/_cygrpc/grpc_gevent.pyx.pxi":224
 * 
 * cdef grpc_error_handle socket_listen(grpc_custom_socket* socket) with gil:
 *   (<SocketWrapper>socket.impl).socket.listen(50)             # <<<<<<<<<<<<<<
 *   return grpc_error_none()
 * 
 */
  __pyx_t_2 = __Pyx_PyObject_GetAttrStr(((struct __pyx_obj_4grpc_7_cython_6cygrpc_SocketWrapper *)__pyx_v_socket->impl)->socket, __pyx_n_s_listen); if (unlikely(!__pyx_t_2)) __PYX_ERR(6, 224, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __pyx_t_3 = NULL;
  if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_2))) {
    __pyx_t_3 = PyMethod_GET_SELF(__pyx_t_2);
    if (likely(__pyx_t_3)) {
      PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_2);
      __Pyx_INCREF(__pyx_t_3);
      __Pyx_INCREF(function);
      __Pyx_DECREF_SET(__pyx_t_2, function);
    }
  }
  __pyx_t_1 = (__pyx_t_3) ? __Pyx_PyObject_Call2Args(__pyx_t_2, __pyx_t_3, __pyx_int_50) : __Pyx_PyObject_CallOneArg(__pyx_t_2, __pyx_int_50);
  __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0;
  if (unlikely(!__pyx_t_1)) __PYX_ERR(6, 224, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;

  /* "src/python/grpcio/grpc/_cython/_cygrpc/grpc_gevent.pyx.pxi":225
 * cdef grpc_error_handle socket_listen(grpc_custom_socket* socket) with gil:
 *   (<SocketWrapper>socket.impl).socket.listen(50)
 *   return grpc_error_none()             # <<<<<<<<<<<<<<
 * 
 * cdef void accept_callback_cython(SocketWrapper s) except *:
 */
  __pyx_r = __pyx_f_4grpc_7_cython_6cygrpc_grpc_error_none();
  goto __pyx_L0;

  /* "src/python/grpcio/grpc/_cython/_cygrpc/grpc_gevent.pyx.pxi":223
 *     return grpc_error_none()
 * 
 * cdef grpc_error_handle socket_listen(grpc_custom_socket* socket) with gil:             # <<<<<<<<<<<<<<
 *   (<SocketWrapper>socket.impl).socket.listen(50)
 *   return grpc_error_none()
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_XDECREF(__pyx_t_3);
  __Pyx_WriteUnraisable("grpc._cython.cygrpc.socket_listen", __pyx_clineno, __pyx_lineno, __pyx_filename, 1, 0);
  __pyx_r = 0;
  __pyx_L0:;
  __Pyx_RefNannyFinishContext();
  #ifdef WITH_THREAD
  __Pyx_PyGILState_Release(__pyx_gilstate_save);
  #endif
  return __pyx_r;
}

/* "src/python/grpcio/grpc/_cython/_cygrpc/grpc_gevent.pyx.pxi":227
 *   return grpc_error_none()
 * 
 * cdef void accept_callback_cython(SocketWrapper s) except *:             # <<<<<<<<<<<<<<
 *    try:
 *      conn, address = s.socket.accept()
 */

static void __pyx_f_4grpc_7_cython_6cygrpc_accept_callback_cython(struct __pyx_obj_4grpc_7_cython_6cygrpc_SocketWrapper *__pyx_v_s) {
  PyObject *__pyx_v_conn = NULL;
  CYTHON_UNUSED PyObject *__pyx_v_address = NULL;
  struct __pyx_obj_4grpc_7_cython_6cygrpc_SocketWrapper *__pyx_v_sw = NULL;
  PyObject *__pyx_v_io_error = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  PyObject *__pyx_t_2 = NULL;
  PyObject *__pyx_t_3 = NULL;
  PyObject *__pyx_t_4 = NULL;
  PyObject *__pyx_t_5 = NULL;
  PyObject *__pyx_t_6 = NULL;
  PyObject *__pyx_t_7 = NULL;
  PyObject *(*__pyx_t_8)(PyObject *);
  struct grpc_custom_socket *__pyx_t_9;
  int __pyx_t_10;
  int __pyx_t_11;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("accept_callback_cython", 0);

  /* "src/python/grpcio/grpc/_cython/_cygrpc/grpc_gevent.pyx.pxi":228
 * 
 * cdef void accept_callback_cython(SocketWrapper s) except *:
 *    try:             # <<<<<<<<<<<<<<
 *      conn, address = s.socket.accept()
 *      sw = SocketWrapper()
 */
  {
    __Pyx_PyThreadState_declare
    __Pyx_PyThreadState_assign
    __Pyx_ExceptionSave(&__pyx_t_1, &__pyx_t_2, &__pyx_t_3);
    __Pyx_XGOTREF(__pyx_t_1);
    __Pyx_XGOTREF(__pyx_t_2);
    __Pyx_XGOTREF(__pyx_t_3);
    /*try:*/ {

      /* "src/python/grpcio/grpc/_cython/_cygrpc/grpc_gevent.pyx.pxi":229
 * cdef void accept_callback_cython(SocketWrapper s) except *:
 *    try:
 *      conn, address = s.socket.accept()             # <<<<<<<<<<<<<<
 *      sw = SocketWrapper()
 *      sw.closed = False
 */
      __pyx_t_5 = __Pyx_PyObject_GetAttrStr(__pyx_v_s->socket, __pyx_n_s_accept); if (unlikely(!__pyx_t_5)) __PYX_ERR(6, 229, __pyx_L3_error)
      __Pyx_GOTREF(__pyx_t_5);
      __pyx_t_6 = NULL;
      if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_5))) {
        __pyx_t_6 = PyMethod_GET_SELF(__pyx_t_5);
        if (likely(__pyx_t_6)) {
          PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_5);
          __Pyx_INCREF(__pyx_t_6);
          __Pyx_INCREF(function);
          __Pyx_DECREF_SET(__pyx_t_5, function);
        }
      }
      __pyx_t_4 = (__pyx_t_6) ? __Pyx_PyObject_CallOneArg(__pyx_t_5, __pyx_t_6) : __Pyx_PyObject_CallNoArg(__pyx_t_5);
      __Pyx_XDECREF(__pyx_t_6); __pyx_t_6 = 0;
      if (unlikely(!__pyx_t_4)) __PYX_ERR(6, 229, __pyx_L3_error)
      __Pyx_GOTREF(__pyx_t_4);
      __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
      if ((likely(PyTuple_CheckExact(__pyx_t_4))) || (PyList_CheckExact(__pyx_t_4))) {
        PyObject* sequence = __pyx_t_4;
        Py_ssize_t size = __Pyx_PySequence_SIZE(sequence);
        if (unlikely(size != 2)) {
          if (size > 2) __Pyx_RaiseTooManyValuesError(2);
          else if (size >= 0) __Pyx_RaiseNeedMoreValuesError(size);
          __PYX_ERR(6, 229, __pyx_L3_error)
        }
        #if CYTHON_ASSUME_SAFE_MACROS && !CYTHON_AVOID_BORROWED_REFS
        if (likely(PyTuple_CheckExact(sequence))) {
          __pyx_t_5 = PyTuple_GET_ITEM(sequence, 0); 
          __pyx_t_6 = PyTuple_GET_ITEM(sequence, 1); 
        } else {
          __pyx_t_5 = PyList_GET_ITEM(sequence, 0); 
          __pyx_t_6 = PyList_GET_ITEM(sequence, 1); 
        }
        __Pyx_INCREF(__pyx_t_5);
        __Pyx_INCREF(__pyx_t_6);
        #else
        __pyx_t_5 = PySequence_ITEM(sequence, 0); if (unlikely(!__pyx_t_5)) __PYX_ERR(6, 229, __pyx_L3_error)
        __Pyx_GOTREF(__pyx_t_5);
        __pyx_t_6 = PySequence_ITEM(sequence, 1); if (unlikely(!__pyx_t_6)) __PYX_ERR(6, 229, __pyx_L3_error)
        __Pyx_GOTREF(__pyx_t_6);
        #endif
        __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
      } else {
        Py_ssize_t index = -1;
        __pyx_t_7 = PyObject_GetIter(__pyx_t_4); if (unlikely(!__pyx_t_7)) __PYX_ERR(6, 229, __pyx_L3_error)
        __Pyx_GOTREF(__pyx_t_7);
        __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
        __pyx_t_8 = Py_TYPE(__pyx_t_7)->tp_iternext;
        index = 0; __pyx_t_5 = __pyx_t_8(__pyx_t_7); if (unlikely(!__pyx_t_5)) goto __pyx_L9_unpacking_failed;
        __Pyx_GOTREF(__pyx_t_5);
        index = 1; __pyx_t_6 = __pyx_t_8(__pyx_t_7); if (unlikely(!__pyx_t_6)) goto __pyx_L9_unpacking_failed;
        __Pyx_GOTREF(__pyx_t_6);
        if (__Pyx_IternextUnpackEndCheck(__pyx_t_8(__pyx_t_7), 2) < 0) __PYX_ERR(6, 229, __pyx_L3_error)
        __pyx_t_8 = NULL;
        __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
        goto __pyx_L10_unpacking_done;
        __pyx_L9_unpacking_failed:;
        __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
        __pyx_t_8 = NULL;
        if (__Pyx_IterFinish() == 0) __Pyx_RaiseNeedMoreValuesError(index);
        __PYX_ERR(6, 229, __pyx_L3_error)
        __pyx_L10_unpacking_done:;
      }
      __pyx_v_conn = __pyx_t_5;
      __pyx_t_5 = 0;
      __pyx_v_address = __pyx_t_6;
      __pyx_t_6 = 0;

      /* "src/python/grpcio/grpc/_cython/_cygrpc/grpc_gevent.pyx.pxi":230
 *    try:
 *      conn, address = s.socket.accept()
 *      sw = SocketWrapper()             # <<<<<<<<<<<<<<
 *      sw.closed = False
 *      sw.c_socket = s.accepting_socket
 */
      __pyx_t_4 = __Pyx_PyObject_CallNoArg(((PyObject *)__pyx_ptype_4grpc_7_cython_6cygrpc_SocketWrapper)); if (unlikely(!__pyx_t_4)) __PYX_ERR(6, 230, __pyx_L3_error)
      __Pyx_GOTREF(__pyx_t_4);
      __pyx_v_sw = ((struct __pyx_obj_4grpc_7_cython_6cygrpc_SocketWrapper *)__pyx_t_4);
      __pyx_t_4 = 0;

      /* "src/python/grpcio/grpc/_cython/_cygrpc/grpc_gevent.pyx.pxi":231
 *      conn, address = s.socket.accept()
 *      sw = SocketWrapper()
 *      sw.closed = False             # <<<<<<<<<<<<<<
 *      sw.c_socket = s.accepting_socket
 *      sw.sockopts = []
 */
      __Pyx_INCREF(Py_False);
      __Pyx_GIVEREF(Py_False);
      __Pyx_GOTREF(__pyx_v_sw->closed);
      __Pyx_DECREF(__pyx_v_sw->closed);
      __pyx_v_sw->closed = Py_False;

      /* "src/python/grpcio/grpc/_cython/_cygrpc/grpc_gevent.pyx.pxi":232
 *      sw = SocketWrapper()
 *      sw.closed = False
 *      sw.c_socket = s.accepting_socket             # <<<<<<<<<<<<<<
 *      sw.sockopts = []
 *      sw.socket = conn
 */
      __pyx_t_9 = __pyx_v_s->accepting_socket;
      __pyx_v_sw->c_socket = __pyx_t_9;

      /* "src/python/grpcio/grpc/_cython/_cygrpc/grpc_gevent.pyx.pxi":233
 *      sw.closed = False
 *      sw.c_socket = s.accepting_socket
 *      sw.sockopts = []             # <<<<<<<<<<<<<<
 *      sw.socket = conn
 *      sw.c_socket.impl = <void*>sw
 */
      __pyx_t_4 = PyList_New(0); if (unlikely(!__pyx_t_4)) __PYX_ERR(6, 233, __pyx_L3_error)
      __Pyx_GOTREF(__pyx_t_4);
      __Pyx_GIVEREF(__pyx_t_4);
      __Pyx_GOTREF(__pyx_v_sw->sockopts);
      __Pyx_DECREF(__pyx_v_sw->sockopts);
      __pyx_v_sw->sockopts = __pyx_t_4;
      __pyx_t_4 = 0;

      /* "src/python/grpcio/grpc/_cython/_cygrpc/grpc_gevent.pyx.pxi":234
 *      sw.c_socket = s.accepting_socket
 *      sw.sockopts = []
 *      sw.socket = conn             # <<<<<<<<<<<<<<
 *      sw.c_socket.impl = <void*>sw
 *      sw.accepting_socket = NULL
 */
      __Pyx_INCREF(__pyx_v_conn);
      __Pyx_GIVEREF(__pyx_v_conn);
      __Pyx_GOTREF(__pyx_v_sw->socket);
      __Pyx_DECREF(__pyx_v_sw->socket);
      __pyx_v_sw->socket = __pyx_v_conn;

      /* "src/python/grpcio/grpc/_cython/_cygrpc/grpc_gevent.pyx.pxi":235
 *      sw.sockopts = []
 *      sw.socket = conn
 *      sw.c_socket.impl = <void*>sw             # <<<<<<<<<<<<<<
 *      sw.accepting_socket = NULL
 *      cpython.Py_INCREF(sw)
 */
      __pyx_v_sw->c_socket->impl = ((void *)__pyx_v_sw);

      /* "src/python/grpcio/grpc/_cython/_cygrpc/grpc_gevent.pyx.pxi":236
 *      sw.socket = conn
 *      sw.c_socket.impl = <void*>sw
 *      sw.accepting_socket = NULL             # <<<<<<<<<<<<<<
 *      cpython.Py_INCREF(sw)
 *      s.accepting_socket = NULL
 */
      __pyx_v_sw->accepting_socket = NULL;

      /* "src/python/grpcio/grpc/_cython/_cygrpc/grpc_gevent.pyx.pxi":237
 *      sw.c_socket.impl = <void*>sw
 *      sw.accepting_socket = NULL
 *      cpython.Py_INCREF(sw)             # <<<<<<<<<<<<<<
 *      s.accepting_socket = NULL
 *      s.accept_cb(<grpc_custom_socket*>s.c_socket, sw.c_socket, grpc_error_none())
 */
      Py_INCREF(((PyObject *)__pyx_v_sw));

      /* "src/python/grpcio/grpc/_cython/_cygrpc/grpc_gevent.pyx.pxi":238
 *      sw.accepting_socket = NULL
 *      cpython.Py_INCREF(sw)
 *      s.accepting_socket = NULL             # <<<<<<<<<<<<<<
 *      s.accept_cb(<grpc_custom_socket*>s.c_socket, sw.c_socket, grpc_error_none())
 *    except IOError as io_error:
 */
      __pyx_v_s->accepting_socket = NULL;

      /* "src/python/grpcio/grpc/_cython/_cygrpc/grpc_gevent.pyx.pxi":239
 *      cpython.Py_INCREF(sw)
 *      s.accepting_socket = NULL
 *      s.accept_cb(<grpc_custom_socket*>s.c_socket, sw.c_socket, grpc_error_none())             # <<<<<<<<<<<<<<
 *    except IOError as io_error:
 *       #TODO actual error
 */
      __pyx_v_s->accept_cb(((struct grpc_custom_socket *)__pyx_v_s->c_socket), __pyx_v_sw->c_socket, __pyx_f_4grpc_7_cython_6cygrpc_grpc_error_none());

      /* "src/python/grpcio/grpc/_cython/_cygrpc/grpc_gevent.pyx.pxi":228
 * 
 * cdef void accept_callback_cython(SocketWrapper s) except *:
 *    try:             # <<<<<<<<<<<<<<
 *      conn, address = s.socket.accept()
 *      sw = SocketWrapper()
 */
    }
    __Pyx_XDECREF(__pyx_t_1); __pyx_t_1 = 0;
    __Pyx_XDECREF(__pyx_t_2); __pyx_t_2 = 0;
    __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0;
    goto __pyx_L8_try_end;
    __pyx_L3_error:;
    __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0;
    __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0;
    __Pyx_XDECREF(__pyx_t_6); __pyx_t_6 = 0;
    __Pyx_XDECREF(__pyx_t_7); __pyx_t_7 = 0;

    /* "src/python/grpcio/grpc/_cython/_cygrpc/grpc_gevent.pyx.pxi":240
 *      s.accepting_socket = NULL
 *      s.accept_cb(<grpc_custom_socket*>s.c_socket, sw.c_socket, grpc_error_none())
 *    except IOError as io_error:             # <<<<<<<<<<<<<<
 *       #TODO actual error
 *       s.accepting_socket = NULL
 */
    __pyx_t_10 = __Pyx_PyErr_ExceptionMatches(__pyx_builtin_IOError);
    if (__pyx_t_10) {
      __Pyx_AddTraceback("grpc._cython.cygrpc.accept_callback_cython", __pyx_clineno, __pyx_lineno, __pyx_filename);
      if (__Pyx_GetException(&__pyx_t_4, &__pyx_t_6, &__pyx_t_5) < 0) __PYX_ERR(6, 240, __pyx_L5_except_error)
      __Pyx_GOTREF(__pyx_t_4);
      __Pyx_GOTREF(__pyx_t_6);
      __Pyx_GOTREF(__pyx_t_5);
      __Pyx_INCREF(__pyx_t_6);
      __pyx_v_io_error = __pyx_t_6;

      /* "src/python/grpcio/grpc/_cython/_cygrpc/grpc_gevent.pyx.pxi":242
 *    except IOError as io_error:
 *       #TODO actual error
 *       s.accepting_socket = NULL             # <<<<<<<<<<<<<<
 *       s.accept_cb(<grpc_custom_socket*>s.c_socket, s.accepting_socket,
 *                   socket_error("accept", str(io_error)))
 */
      __pyx_v_s->accepting_socket = NULL;

      /* "src/python/grpcio/grpc/_cython/_cygrpc/grpc_gevent.pyx.pxi":244
 *       s.accepting_socket = NULL
 *       s.accept_cb(<grpc_custom_socket*>s.c_socket, s.accepting_socket,
 *                   socket_error("accept", str(io_error)))             # <<<<<<<<<<<<<<
 *       if s.closed:
 *         s.close_cb(<grpc_custom_socket*>s.c_socket)
 */
      __pyx_t_7 = __Pyx_PyObject_CallOneArg(((PyObject *)(&PyString_Type)), __pyx_v_io_error); if (unlikely(!__pyx_t_7)) __PYX_ERR(6, 244, __pyx_L5_except_error)
      __Pyx_GOTREF(__pyx_t_7);
      if (!(likely(PyString_CheckExact(__pyx_t_7))||((__pyx_t_7) == Py_None)||(PyErr_Format(PyExc_TypeError, "Expected %.16s, got %.200s", "str", Py_TYPE(__pyx_t_7)->tp_name), 0))) __PYX_ERR(6, 244, __pyx_L5_except_error)

      /* "src/python/grpcio/grpc/_cython/_cygrpc/grpc_gevent.pyx.pxi":243
 *       #TODO actual error
 *       s.accepting_socket = NULL
 *       s.accept_cb(<grpc_custom_socket*>s.c_socket, s.accepting_socket,             # <<<<<<<<<<<<<<
 *                   socket_error("accept", str(io_error)))
 *       if s.closed:
 */
      __pyx_v_s->accept_cb(((struct grpc_custom_socket *)__pyx_v_s->c_socket), __pyx_v_s->accepting_socket, __pyx_f_4grpc_7_cython_6cygrpc_socket_error(__pyx_n_s_accept, ((PyObject*)__pyx_t_7)));
      __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;

      /* "src/python/grpcio/grpc/_cython/_cygrpc/grpc_gevent.pyx.pxi":245
 *       s.accept_cb(<grpc_custom_socket*>s.c_socket, s.accepting_socket,
 *                   socket_error("accept", str(io_error)))
 *       if s.closed:             # <<<<<<<<<<<<<<
 *         s.close_cb(<grpc_custom_socket*>s.c_socket)
 *    g_event.set()
 */
      __pyx_t_11 = __Pyx_PyObject_IsTrue(__pyx_v_s->closed); if (unlikely(__pyx_t_11 < 0)) __PYX_ERR(6, 245, __pyx_L5_except_error)
      if (__pyx_t_11) {

        /* "src/python/grpcio/grpc/_cython/_cygrpc/grpc_gevent.pyx.pxi":246
 *                   socket_error("accept", str(io_error)))
 *       if s.closed:
 *         s.close_cb(<grpc_custom_socket*>s.c_socket)             # <<<<<<<<<<<<<<
 *    g_event.set()
 * 
 */
        __pyx_v_s->close_cb(((struct grpc_custom_socket *)__pyx_v_s->c_socket));

        /* "src/python/grpcio/grpc/_cython/_cygrpc/grpc_gevent.pyx.pxi":245
 *       s.accept_cb(<grpc_custom_socket*>s.c_socket, s.accepting_socket,
 *                   socket_error("accept", str(io_error)))
 *       if s.closed:             # <<<<<<<<<<<<<<
 *         s.close_cb(<grpc_custom_socket*>s.c_socket)
 *    g_event.set()
 */
      }
      __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0;
      __Pyx_XDECREF(__pyx_t_6); __pyx_t_6 = 0;
      __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0;
      goto __pyx_L4_exception_handled;
    }
    goto __pyx_L5_except_error;
    __pyx_L5_except_error:;

    /* "src/python/grpcio/grpc/_cython/_cygrpc/grpc_gevent.pyx.pxi":228
 * 
 * cdef void accept_callback_cython(SocketWrapper s) except *:
 *    try:             # <<<<<<<<<<<<<<
 *      conn, address = s.socket.accept()
 *      sw = SocketWrapper()
 */
    __Pyx_XGIVEREF(__pyx_t_1);
    __Pyx_XGIVEREF(__pyx_t_2);
    __Pyx_XGIVEREF(__pyx_t_3);
    __Pyx_ExceptionReset(__pyx_t_1, __pyx_t_2, __pyx_t_3);
    goto __pyx_L1_error;
    __pyx_L4_exception_handled:;
    __Pyx_XGIVEREF(__pyx_t_1);
    __Pyx_XGIVEREF(__pyx_t_2);
    __Pyx_XGIVEREF(__pyx_t_3);
    __Pyx_ExceptionReset(__pyx_t_1, __pyx_t_2, __pyx_t_3);
    __pyx_L8_try_end:;
  }

  /* "src/python/grpcio/grpc/_cython/_cygrpc/grpc_gevent.pyx.pxi":247
 *       if s.closed:
 *         s.close_cb(<grpc_custom_socket*>s.c_socket)
 *    g_event.set()             # <<<<<<<<<<<<<<
 * 
 * def socket_accept_async(s):
 */
  __Pyx_GetModuleGlobalName(__pyx_t_6, __pyx_n_s_g_event); if (unlikely(!__pyx_t_6)) __PYX_ERR(6, 247, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_6);
  __pyx_t_4 = __Pyx_PyObject_GetAttrStr(__pyx_t_6, __pyx_n_s_set); if (unlikely(!__pyx_t_4)) __PYX_ERR(6, 247, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_4);
  __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
  __pyx_t_6 = NULL;
  if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_4))) {
    __pyx_t_6 = PyMethod_GET_SELF(__pyx_t_4);
    if (likely(__pyx_t_6)) {
      PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_4);
      __Pyx_INCREF(__pyx_t_6);
      __Pyx_INCREF(function);
      __Pyx_DECREF_SET(__pyx_t_4, function);
    }
  }
  __pyx_t_5 = (__pyx_t_6) ? __Pyx_PyObject_CallOneArg(__pyx_t_4, __pyx_t_6) : __Pyx_PyObject_CallNoArg(__pyx_t_4);
  __Pyx_XDECREF(__pyx_t_6); __pyx_t_6 = 0;
  if (unlikely(!__pyx_t_5)) __PYX_ERR(6, 247, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_5);
  __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;

  /* "src/python/grpcio/grpc/_cython/_cygrpc/grpc_gevent.pyx.pxi":227
 *   return grpc_error_none()
 * 
 * cdef void accept_callback_cython(SocketWrapper s) except *:             # <<<<<<<<<<<<<<
 *    try:
 *      conn, address = s.socket.accept()
 */

  /* function exit code */
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_4);
  __Pyx_XDECREF(__pyx_t_5);
  __Pyx_XDECREF(__pyx_t_6);
  __Pyx_XDECREF(__pyx_t_7);
  __Pyx_AddTraceback("grpc._cython.cygrpc.accept_callback_cython", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_L0:;
  __Pyx_XDECREF(__pyx_v_conn);
  __Pyx_XDECREF(__pyx_v_address);
  __Pyx_XDECREF((PyObject *)__pyx_v_sw);
  __Pyx_XDECREF(__pyx_v_io_error);
  __Pyx_RefNannyFinishContext();
}

/* "src/python/grpcio/grpc/_cython/_cygrpc/grpc_gevent.pyx.pxi":249
 *    g_event.set()
 * 
 * def socket_accept_async(s):             # <<<<<<<<<<<<<<
 *   accept_callback_cython(s)
 * 
 */

/* Python wrapper */
static PyObject *__pyx_pw_4grpc_7_cython_6cygrpc_75socket_accept_async(PyObject *__pyx_self, PyObject *__pyx_v_s); /*proto*/
static PyMethodDef __pyx_mdef_4grpc_7_cython_6cygrpc_75socket_accept_async = {"socket_accept_async", (PyCFunction)__pyx_pw_4grpc_7_cython_6cygrpc_75socket_accept_async, METH_O, 0};
static PyObject *__pyx_pw_4grpc_7_cython_6cygrpc_75socket_accept_async(PyObject *__pyx_self, PyObject *__pyx_v_s) {
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("socket_accept_async (wrapper)", 0);
  __pyx_r = __pyx_pf_4grpc_7_cython_6cygrpc_74socket_accept_async(__pyx_self, ((PyObject *)__pyx_v_s));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_4grpc_7_cython_6cygrpc_74socket_accept_async(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__pyx_v_s) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("socket_accept_async", 0);

  /* "src/python/grpcio/grpc/_cython/_cygrpc/grpc_gevent.pyx.pxi":250
 * 
 * def socket_accept_async(s):
 *   accept_callback_cython(s)             # <<<<<<<<<<<<<<
 * 
 * cdef void socket_accept(grpc_custom_socket* socket, grpc_custom_socket* client,
 */
  if (!(likely(((__pyx_v_s) == Py_None) || likely(__Pyx_TypeTest(__pyx_v_s, __pyx_ptype_4grpc_7_cython_6cygrpc_SocketWrapper))))) __PYX_ERR(6, 250, __pyx_L1_error)
  __pyx_f_4grpc_7_cython_6cygrpc_accept_callback_cython(((struct __pyx_obj_4grpc_7_cython_6cygrpc_SocketWrapper *)__pyx_v_s)); if (unlikely(PyErr_Occurred())) __PYX_ERR(6, 250, __pyx_L1_error)

  /* "src/python/grpcio/grpc/_cython/_cygrpc/grpc_gevent.pyx.pxi":249
 *    g_event.set()
 * 
 * def socket_accept_async(s):             # <<<<<<<<<<<<<<
 *   accept_callback_cython(s)
 * 
 */

  /* function exit code */
  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_AddTraceback("grpc._cython.cygrpc.socket_accept_async", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "src/python/grpcio/grpc/_cython/_cygrpc/grpc_gevent.pyx.pxi":252
 *   accept_callback_cython(s)
 * 
 * cdef void socket_accept(grpc_custom_socket* socket, grpc_custom_socket* client,             # <<<<<<<<<<<<<<
 *                         grpc_custom_accept_callback cb) with gil:
 *   sw = <SocketWrapper>socket.impl
 */

static void __pyx_f_4grpc_7_cython_6cygrpc_socket_accept(struct grpc_custom_socket *__pyx_v_socket, struct grpc_custom_socket *__pyx_v_client, grpc_custom_accept_callback __pyx_v_cb) {
  struct __pyx_obj_4grpc_7_cython_6cygrpc_SocketWrapper *__pyx_v_sw = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  PyObject *__pyx_t_2 = NULL;
  PyObject *__pyx_t_3 = NULL;
  PyObject *__pyx_t_4 = NULL;
  int __pyx_t_5;
  PyObject *__pyx_t_6 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  #ifdef WITH_THREAD
  PyGILState_STATE __pyx_gilstate_save = __Pyx_PyGILState_Ensure();
  #endif
  __Pyx_RefNannySetupContext("socket_accept", 0);

  /* "src/python/grpcio/grpc/_cython/_cygrpc/grpc_gevent.pyx.pxi":254
 * cdef void socket_accept(grpc_custom_socket* socket, grpc_custom_socket* client,
 *                         grpc_custom_accept_callback cb) with gil:
 *   sw = <SocketWrapper>socket.impl             # <<<<<<<<<<<<<<
 *   sw.accepting_socket = client
 *   sw.accept_cb = cb
 */
  __pyx_t_1 = ((PyObject *)__pyx_v_socket->impl);
  __Pyx_INCREF(__pyx_t_1);
  __pyx_v_sw = ((struct __pyx_obj_4grpc_7_cython_6cygrpc_SocketWrapper *)__pyx_t_1);
  __pyx_t_1 = 0;

  /* "src/python/grpcio/grpc/_cython/_cygrpc/grpc_gevent.pyx.pxi":255
 *                         grpc_custom_accept_callback cb) with gil:
 *   sw = <SocketWrapper>socket.impl
 *   sw.accepting_socket = client             # <<<<<<<<<<<<<<
 *   sw.accept_cb = cb
 *   _spawn_greenlet(socket_accept_async, sw)
 */
  __pyx_v_sw->accepting_socket = __pyx_v_client;

  /* "src/python/grpcio/grpc/_cython/_cygrpc/grpc_gevent.pyx.pxi":256
 *   sw = <SocketWrapper>socket.impl
 *   sw.accepting_socket = client
 *   sw.accept_cb = cb             # <<<<<<<<<<<<<<
 *   _spawn_greenlet(socket_accept_async, sw)
 * 
 */
  __pyx_v_sw->accept_cb = __pyx_v_cb;

  /* "src/python/grpcio/grpc/_cython/_cygrpc/grpc_gevent.pyx.pxi":257
 *   sw.accepting_socket = client
 *   sw.accept_cb = cb
 *   _spawn_greenlet(socket_accept_async, sw)             # <<<<<<<<<<<<<<
 * 
 * #####################################
 */
  __Pyx_GetModuleGlobalName(__pyx_t_2, __pyx_n_s_spawn_greenlet); if (unlikely(!__pyx_t_2)) __PYX_ERR(6, 257, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __Pyx_GetModuleGlobalName(__pyx_t_3, __pyx_n_s_socket_accept_async); if (unlikely(!__pyx_t_3)) __PYX_ERR(6, 257, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  __pyx_t_4 = NULL;
  __pyx_t_5 = 0;
  if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_2))) {
    __pyx_t_4 = PyMethod_GET_SELF(__pyx_t_2);
    if (likely(__pyx_t_4)) {
      PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_2);
      __Pyx_INCREF(__pyx_t_4);
      __Pyx_INCREF(function);
      __Pyx_DECREF_SET(__pyx_t_2, function);
      __pyx_t_5 = 1;
    }
  }
  #if CYTHON_FAST_PYCALL
  if (PyFunction_Check(__pyx_t_2)) {
    PyObject *__pyx_temp[3] = {__pyx_t_4, __pyx_t_3, ((PyObject *)__pyx_v_sw)};
    __pyx_t_1 = __Pyx_PyFunction_FastCall(__pyx_t_2, __pyx_temp+1-__pyx_t_5, 2+__pyx_t_5); if (unlikely(!__pyx_t_1)) __PYX_ERR(6, 257, __pyx_L1_error)
    __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0;
    __Pyx_GOTREF(__pyx_t_1);
    __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
  } else
  #endif
  #if CYTHON_FAST_PYCCALL
  if (__Pyx_PyFastCFunction_Check(__pyx_t_2)) {
    PyObject *__pyx_temp[3] = {__pyx_t_4, __pyx_t_3, ((PyObject *)__pyx_v_sw)};
    __pyx_t_1 = __Pyx_PyCFunction_FastCall(__pyx_t_2, __pyx_temp+1-__pyx_t_5, 2+__pyx_t_5); if (unlikely(!__pyx_t_1)) __PYX_ERR(6, 257, __pyx_L1_error)
    __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0;
    __Pyx_GOTREF(__pyx_t_1);
    __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
  } else
  #endif
  {
    __pyx_t_6 = PyTuple_New(2+__pyx_t_5); if (unlikely(!__pyx_t_6)) __PYX_ERR(6, 257, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_6);
    if (__pyx_t_4) {
      __Pyx_GIVEREF(__pyx_t_4); PyTuple_SET_ITEM(__pyx_t_6, 0, __pyx_t_4); __pyx_t_4 = NULL;
    }
    __Pyx_GIVEREF(__pyx_t_3);
    PyTuple_SET_ITEM(__pyx_t_6, 0+__pyx_t_5, __pyx_t_3);
    __Pyx_INCREF(((PyObject *)__pyx_v_sw));
    __Pyx_GIVEREF(((PyObject *)__pyx_v_sw));
    PyTuple_SET_ITEM(__pyx_t_6, 1+__pyx_t_5, ((PyObject *)__pyx_v_sw));
    __pyx_t_3 = 0;
    __pyx_t_1 = __Pyx_PyObject_Call(__pyx_t_2, __pyx_t_6, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(6, 257, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_1);
    __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
  }
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;

  /* "src/python/grpcio/grpc/_cython/_cygrpc/grpc_gevent.pyx.pxi":252
 *   accept_callback_cython(s)
 * 
 * cdef void socket_accept(grpc_custom_socket* socket, grpc_custom_socket* client,             # <<<<<<<<<<<<<<
 *                         grpc_custom_accept_callback cb) with gil:
 *   sw = <SocketWrapper>socket.impl
 */

  /* function exit code */
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_XDECREF(__pyx_t_3);
  __Pyx_XDECREF(__pyx_t_4);
  __Pyx_XDECREF(__pyx_t_6);
  __Pyx_WriteUnraisable("grpc._cython.cygrpc.socket_accept", __pyx_clineno, __pyx_lineno, __pyx_filename, 1, 0);
  __pyx_L0:;
  __Pyx_XDECREF((PyObject *)__pyx_v_sw);
  __Pyx_RefNannyFinishContext();
  #ifdef WITH_THREAD
  __Pyx_PyGILState_Release(__pyx_gilstate_save);
  #endif
}

/* "src/python/grpcio/grpc/_cython/_cygrpc/grpc_gevent.pyx.pxi":264
 * 
 * cdef class ResolveWrapper:
 *   def __cinit__(self):             # <<<<<<<<<<<<<<
 *     fork_handlers_and_grpc_init()
 *     self.c_resolver = NULL
 */

/* Python wrapper */
static int __pyx_pw_4grpc_7_cython_6cygrpc_14ResolveWrapper_1__cinit__(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
static int __pyx_pw_4grpc_7_cython_6cygrpc_14ResolveWrapper_1__cinit__(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
  int __pyx_r;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__cinit__ (wrapper)", 0);
  if (unlikely(PyTuple_GET_SIZE(__pyx_args) > 0)) {
    __Pyx_RaiseArgtupleInvalid("__cinit__", 1, 0, 0, PyTuple_GET_SIZE(__pyx_args)); return -1;}
  if (unlikely(__pyx_kwds) && unlikely(PyDict_Size(__pyx_kwds) > 0) && unlikely(!__Pyx_CheckKeywordStrings(__pyx_kwds, "__cinit__", 0))) return -1;
  __pyx_r = __pyx_pf_4grpc_7_cython_6cygrpc_14ResolveWrapper___cinit__(((struct __pyx_obj_4grpc_7_cython_6cygrpc_ResolveWrapper *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static int __pyx_pf_4grpc_7_cython_6cygrpc_14ResolveWrapper___cinit__(struct __pyx_obj_4grpc_7_cython_6cygrpc_ResolveWrapper *__pyx_v_self) {
  int __pyx_r;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  PyObject *__pyx_t_2 = NULL;
  PyObject *__pyx_t_3 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("__cinit__", 0);

  /* "src/python/grpcio/grpc/_cython/_cygrpc/grpc_gevent.pyx.pxi":265
 * cdef class ResolveWrapper:
 *   def __cinit__(self):
 *     fork_handlers_and_grpc_init()             # <<<<<<<<<<<<<<
 *     self.c_resolver = NULL
 *     self.c_host = NULL
 */
  __Pyx_GetModuleGlobalName(__pyx_t_2, __pyx_n_s_fork_handlers_and_grpc_init); if (unlikely(!__pyx_t_2)) __PYX_ERR(6, 265, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __pyx_t_3 = NULL;
  if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_2))) {
    __pyx_t_3 = PyMethod_GET_SELF(__pyx_t_2);
    if (likely(__pyx_t_3)) {
      PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_2);
      __Pyx_INCREF(__pyx_t_3);
      __Pyx_INCREF(function);
      __Pyx_DECREF_SET(__pyx_t_2, function);
    }
  }
  __pyx_t_1 = (__pyx_t_3) ? __Pyx_PyObject_CallOneArg(__pyx_t_2, __pyx_t_3) : __Pyx_PyObject_CallNoArg(__pyx_t_2);
  __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0;
  if (unlikely(!__pyx_t_1)) __PYX_ERR(6, 265, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;

  /* "src/python/grpcio/grpc/_cython/_cygrpc/grpc_gevent.pyx.pxi":266
 *   def __cinit__(self):
 *     fork_handlers_and_grpc_init()
 *     self.c_resolver = NULL             # <<<<<<<<<<<<<<
 *     self.c_host = NULL
 *     self.c_port = NULL
 */
  __pyx_v_self->c_resolver = NULL;

  /* "src/python/grpcio/grpc/_cython/_cygrpc/grpc_gevent.pyx.pxi":267
 *     fork_handlers_and_grpc_init()
 *     self.c_resolver = NULL
 *     self.c_host = NULL             # <<<<<<<<<<<<<<
 *     self.c_port = NULL
 * 
 */
  __pyx_v_self->c_host = NULL;

  /* "src/python/grpcio/grpc/_cython/_cygrpc/grpc_gevent.pyx.pxi":268
 *     self.c_resolver = NULL
 *     self.c_host = NULL
 *     self.c_port = NULL             # <<<<<<<<<<<<<<
 * 
 *   def __dealloc__(self):
 */
  __pyx_v_self->c_port = NULL;

  /* "src/python/grpcio/grpc/_cython/_cygrpc/grpc_gevent.pyx.pxi":264
 * 
 * cdef class ResolveWrapper:
 *   def __cinit__(self):             # <<<<<<<<<<<<<<
 *     fork_handlers_and_grpc_init()
 *     self.c_resolver = NULL
 */

  /* function exit code */
  __pyx_r = 0;
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_XDECREF(__pyx_t_3);
  __Pyx_AddTraceback("grpc._cython.cygrpc.ResolveWrapper.__cinit__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = -1;
  __pyx_L0:;
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "src/python/grpcio/grpc/_cython/_cygrpc/grpc_gevent.pyx.pxi":270
 *     self.c_port = NULL
 * 
 *   def __dealloc__(self):             # <<<<<<<<<<<<<<
 *     grpc_shutdown()
 * 
 */

/* Python wrapper */
static void __pyx_pw_4grpc_7_cython_6cygrpc_14ResolveWrapper_3__dealloc__(PyObject *__pyx_v_self); /*proto*/
static void __pyx_pw_4grpc_7_cython_6cygrpc_14ResolveWrapper_3__dealloc__(PyObject *__pyx_v_self) {
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__dealloc__ (wrapper)", 0);
  __pyx_pf_4grpc_7_cython_6cygrpc_14ResolveWrapper_2__dealloc__(((struct __pyx_obj_4grpc_7_cython_6cygrpc_ResolveWrapper *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
}

static void __pyx_pf_4grpc_7_cython_6cygrpc_14ResolveWrapper_2__dealloc__(CYTHON_UNUSED struct __pyx_obj_4grpc_7_cython_6cygrpc_ResolveWrapper *__pyx_v_self) {
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__dealloc__", 0);

  /* "src/python/grpcio/grpc/_cython/_cygrpc/grpc_gevent.pyx.pxi":271
 * 
 *   def __dealloc__(self):
 *     grpc_shutdown()             # <<<<<<<<<<<<<<
 * 
 * cdef socket_resolve_async_cython(ResolveWrapper resolve_wrapper):
 */
  grpc_shutdown();

  /* "src/python/grpcio/grpc/_cython/_cygrpc/grpc_gevent.pyx.pxi":270
 *     self.c_port = NULL
 * 
 *   def __dealloc__(self):             # <<<<<<<<<<<<<<
 *     grpc_shutdown()
 * 
 */

  /* function exit code */
  __Pyx_RefNannyFinishContext();
}

/* "(tree fragment)":1
 * def __reduce_cython__(self):             # <<<<<<<<<<<<<<
 *     raise TypeError("no default __reduce__ due to non-trivial __cinit__")
 * def __setstate_cython__(self, __pyx_state):
 */

/* Python wrapper */
static PyObject *__pyx_pw_4grpc_7_cython_6cygrpc_14ResolveWrapper_5__reduce_cython__(PyObject *__pyx_v_self, CYTHON_UNUSED PyObject *unused); /*proto*/
static PyObject *__pyx_pw_4grpc_7_cython_6cygrpc_14ResolveWrapper_5__reduce_cython__(PyObject *__pyx_v_self, CYTHON_UNUSED PyObject *unused) {
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__reduce_cython__ (wrapper)", 0);
  __pyx_r = __pyx_pf_4grpc_7_cython_6cygrpc_14ResolveWrapper_4__reduce_cython__(((struct __pyx_obj_4grpc_7_cython_6cygrpc_ResolveWrapper *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_4grpc_7_cython_6cygrpc_14ResolveWrapper_4__reduce_cython__(CYTHON_UNUSED struct __pyx_obj_4grpc_7_cython_6cygrpc_ResolveWrapper *__pyx_v_self) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("__reduce_cython__", 0);

  /* "(tree fragment)":2
 * def __reduce_cython__(self):
 *     raise TypeError("no default __reduce__ due to non-trivial __cinit__")             # <<<<<<<<<<<<<<
 * def __setstate_cython__(self, __pyx_state):
 *     raise TypeError("no default __reduce__ due to non-trivial __cinit__")
 */
  __pyx_t_1 = __Pyx_PyObject_Call(__pyx_builtin_TypeError, __pyx_tuple__126, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(11, 2, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_Raise(__pyx_t_1, 0, 0, 0);
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  __PYX_ERR(11, 2, __pyx_L1_error)

  /* "(tree fragment)":1
 * def __reduce_cython__(self):             # <<<<<<<<<<<<<<
 *     raise TypeError("no default __reduce__ due to non-trivial __cinit__")
 * def __setstate_cython__(self, __pyx_state):
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_AddTraceback("grpc._cython.cygrpc.ResolveWrapper.__reduce_cython__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "(tree fragment)":3
 * def __reduce_cython__(self):
 *     raise TypeError("no default __reduce__ due to non-trivial __cinit__")
 * def __setstate_cython__(self, __pyx_state):             # <<<<<<<<<<<<<<
 *     raise TypeError("no default __reduce__ due to non-trivial __cinit__")
 */

/* Python wrapper */
static PyObject *__pyx_pw_4grpc_7_cython_6cygrpc_14ResolveWrapper_7__setstate_cython__(PyObject *__pyx_v_self, PyObject *__pyx_v___pyx_state); /*proto*/
static PyObject *__pyx_pw_4grpc_7_cython_6cygrpc_14ResolveWrapper_7__setstate_cython__(PyObject *__pyx_v_self, PyObject *__pyx_v___pyx_state) {
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__setstate_cython__ (wrapper)", 0);
  __pyx_r = __pyx_pf_4grpc_7_cython_6cygrpc_14ResolveWrapper_6__setstate_cython__(((struct __pyx_obj_4grpc_7_cython_6cygrpc_ResolveWrapper *)__pyx_v_self), ((PyObject *)__pyx_v___pyx_state));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_4grpc_7_cython_6cygrpc_14ResolveWrapper_6__setstate_cython__(CYTHON_UNUSED struct __pyx_obj_4grpc_7_cython_6cygrpc_ResolveWrapper *__pyx_v_self, CYTHON_UNUSED PyObject *__pyx_v___pyx_state) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("__setstate_cython__", 0);

  /* "(tree fragment)":4
 *     raise TypeError("no default __reduce__ due to non-trivial __cinit__")
 * def __setstate_cython__(self, __pyx_state):
 *     raise TypeError("no default __reduce__ due to non-trivial __cinit__")             # <<<<<<<<<<<<<<
 */
  __pyx_t_1 = __Pyx_PyObject_Call(__pyx_builtin_TypeError, __pyx_tuple__127, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(11, 4, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_Raise(__pyx_t_1, 0, 0, 0);
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  __PYX_ERR(11, 4, __pyx_L1_error)

  /* "(tree fragment)":3
 * def __reduce_cython__(self):
 *     raise TypeError("no default __reduce__ due to non-trivial __cinit__")
 * def __setstate_cython__(self, __pyx_state):             # <<<<<<<<<<<<<<
 *     raise TypeError("no default __reduce__ due to non-trivial __cinit__")
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_AddTraceback("grpc._cython.cygrpc.ResolveWrapper.__setstate_cython__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "src/python/grpcio/grpc/_cython/_cygrpc/grpc_gevent.pyx.pxi":273
 *     grpc_shutdown()
 * 
 * cdef socket_resolve_async_cython(ResolveWrapper resolve_wrapper):             # <<<<<<<<<<<<<<
 *   try:
 *     res = gevent_socket.getaddrinfo(resolve_wrapper.c_host, resolve_wrapper.c_port)
 */

static PyObject *__pyx_f_4grpc_7_cython_6cygrpc_socket_resolve_async_cython(struct __pyx_obj_4grpc_7_cython_6cygrpc_ResolveWrapper *__pyx_v_resolve_wrapper) {
  PyObject *__pyx_v_res = NULL;
  PyObject *__pyx_v_io_error = NULL;
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  PyObject *__pyx_t_2 = NULL;
  PyObject *__pyx_t_3 = NULL;
  PyObject *__pyx_t_4 = NULL;
  PyObject *__pyx_t_5 = NULL;
  PyObject *__pyx_t_6 = NULL;
  PyObject *__pyx_t_7 = NULL;
  PyObject *__pyx_t_8 = NULL;
  int __pyx_t_9;
  PyObject *__pyx_t_10 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("socket_resolve_async_cython", 0);

  /* "src/python/grpcio/grpc/_cython/_cygrpc/grpc_gevent.pyx.pxi":274
 * 
 * cdef socket_resolve_async_cython(ResolveWrapper resolve_wrapper):
 *   try:             # <<<<<<<<<<<<<<
 *     res = gevent_socket.getaddrinfo(resolve_wrapper.c_host, resolve_wrapper.c_port)
 *     grpc_custom_resolve_callback(<grpc_custom_resolver*>resolve_wrapper.c_resolver,
 */
  {
    __Pyx_PyThreadState_declare
    __Pyx_PyThreadState_assign
    __Pyx_ExceptionSave(&__pyx_t_1, &__pyx_t_2, &__pyx_t_3);
    __Pyx_XGOTREF(__pyx_t_1);
    __Pyx_XGOTREF(__pyx_t_2);
    __Pyx_XGOTREF(__pyx_t_3);
    /*try:*/ {

      /* "src/python/grpcio/grpc/_cython/_cygrpc/grpc_gevent.pyx.pxi":275
 * cdef socket_resolve_async_cython(ResolveWrapper resolve_wrapper):
 *   try:
 *     res = gevent_socket.getaddrinfo(resolve_wrapper.c_host, resolve_wrapper.c_port)             # <<<<<<<<<<<<<<
 *     grpc_custom_resolve_callback(<grpc_custom_resolver*>resolve_wrapper.c_resolver,
 *                                  tuples_to_resolvaddr(res), grpc_error_none())
 */
      __Pyx_GetModuleGlobalName(__pyx_t_5, __pyx_n_s_gevent_socket); if (unlikely(!__pyx_t_5)) __PYX_ERR(6, 275, __pyx_L3_error)
      __Pyx_GOTREF(__pyx_t_5);
      __pyx_t_6 = __Pyx_PyObject_GetAttrStr(__pyx_t_5, __pyx_n_s_getaddrinfo); if (unlikely(!__pyx_t_6)) __PYX_ERR(6, 275, __pyx_L3_error)
      __Pyx_GOTREF(__pyx_t_6);
      __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
      __pyx_t_5 = __Pyx_PyBytes_FromString(__pyx_v_resolve_wrapper->c_host); if (unlikely(!__pyx_t_5)) __PYX_ERR(6, 275, __pyx_L3_error)
      __Pyx_GOTREF(__pyx_t_5);
      __pyx_t_7 = __Pyx_PyBytes_FromString(__pyx_v_resolve_wrapper->c_port); if (unlikely(!__pyx_t_7)) __PYX_ERR(6, 275, __pyx_L3_error)
      __Pyx_GOTREF(__pyx_t_7);
      __pyx_t_8 = NULL;
      __pyx_t_9 = 0;
      if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_6))) {
        __pyx_t_8 = PyMethod_GET_SELF(__pyx_t_6);
        if (likely(__pyx_t_8)) {
          PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_6);
          __Pyx_INCREF(__pyx_t_8);
          __Pyx_INCREF(function);
          __Pyx_DECREF_SET(__pyx_t_6, function);
          __pyx_t_9 = 1;
        }
      }
      #if CYTHON_FAST_PYCALL
      if (PyFunction_Check(__pyx_t_6)) {
        PyObject *__pyx_temp[3] = {__pyx_t_8, __pyx_t_5, __pyx_t_7};
        __pyx_t_4 = __Pyx_PyFunction_FastCall(__pyx_t_6, __pyx_temp+1-__pyx_t_9, 2+__pyx_t_9); if (unlikely(!__pyx_t_4)) __PYX_ERR(6, 275, __pyx_L3_error)
        __Pyx_XDECREF(__pyx_t_8); __pyx_t_8 = 0;
        __Pyx_GOTREF(__pyx_t_4);
        __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
        __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
      } else
      #endif
      #if CYTHON_FAST_PYCCALL
      if (__Pyx_PyFastCFunction_Check(__pyx_t_6)) {
        PyObject *__pyx_temp[3] = {__pyx_t_8, __pyx_t_5, __pyx_t_7};
        __pyx_t_4 = __Pyx_PyCFunction_FastCall(__pyx_t_6, __pyx_temp+1-__pyx_t_9, 2+__pyx_t_9); if (unlikely(!__pyx_t_4)) __PYX_ERR(6, 275, __pyx_L3_error)
        __Pyx_XDECREF(__pyx_t_8); __pyx_t_8 = 0;
        __Pyx_GOTREF(__pyx_t_4);
        __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
        __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
      } else
      #endif
      {
        __pyx_t_10 = PyTuple_New(2+__pyx_t_9); if (unlikely(!__pyx_t_10)) __PYX_ERR(6, 275, __pyx_L3_error)
        __Pyx_GOTREF(__pyx_t_10);
        if (__pyx_t_8) {
          __Pyx_GIVEREF(__pyx_t_8); PyTuple_SET_ITEM(__pyx_t_10, 0, __pyx_t_8); __pyx_t_8 = NULL;
        }
        __Pyx_GIVEREF(__pyx_t_5);
        PyTuple_SET_ITEM(__pyx_t_10, 0+__pyx_t_9, __pyx_t_5);
        __Pyx_GIVEREF(__pyx_t_7);
        PyTuple_SET_ITEM(__pyx_t_10, 1+__pyx_t_9, __pyx_t_7);
        __pyx_t_5 = 0;
        __pyx_t_7 = 0;
        __pyx_t_4 = __Pyx_PyObject_Call(__pyx_t_6, __pyx_t_10, NULL); if (unlikely(!__pyx_t_4)) __PYX_ERR(6, 275, __pyx_L3_error)
        __Pyx_GOTREF(__pyx_t_4);
        __Pyx_DECREF(__pyx_t_10); __pyx_t_10 = 0;
      }
      __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
      __pyx_v_res = __pyx_t_4;
      __pyx_t_4 = 0;

      /* "src/python/grpcio/grpc/_cython/_cygrpc/grpc_gevent.pyx.pxi":276
 *   try:
 *     res = gevent_socket.getaddrinfo(resolve_wrapper.c_host, resolve_wrapper.c_port)
 *     grpc_custom_resolve_callback(<grpc_custom_resolver*>resolve_wrapper.c_resolver,             # <<<<<<<<<<<<<<
 *                                  tuples_to_resolvaddr(res), grpc_error_none())
 *   except IOError as io_error:
 */
      grpc_custom_resolve_callback(((struct grpc_custom_resolver *)__pyx_v_resolve_wrapper->c_resolver), __pyx_f_4grpc_7_cython_6cygrpc_tuples_to_resolvaddr(__pyx_v_res), __pyx_f_4grpc_7_cython_6cygrpc_grpc_error_none());

      /* "src/python/grpcio/grpc/_cython/_cygrpc/grpc_gevent.pyx.pxi":274
 * 
 * cdef socket_resolve_async_cython(ResolveWrapper resolve_wrapper):
 *   try:             # <<<<<<<<<<<<<<
 *     res = gevent_socket.getaddrinfo(resolve_wrapper.c_host, resolve_wrapper.c_port)
 *     grpc_custom_resolve_callback(<grpc_custom_resolver*>resolve_wrapper.c_resolver,
 */
    }
    __Pyx_XDECREF(__pyx_t_1); __pyx_t_1 = 0;
    __Pyx_XDECREF(__pyx_t_2); __pyx_t_2 = 0;
    __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0;
    goto __pyx_L8_try_end;
    __pyx_L3_error:;
    __Pyx_XDECREF(__pyx_t_10); __pyx_t_10 = 0;
    __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0;
    __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0;
    __Pyx_XDECREF(__pyx_t_6); __pyx_t_6 = 0;
    __Pyx_XDECREF(__pyx_t_7); __pyx_t_7 = 0;
    __Pyx_XDECREF(__pyx_t_8); __pyx_t_8 = 0;

    /* "src/python/grpcio/grpc/_cython/_cygrpc/grpc_gevent.pyx.pxi":278
 *     grpc_custom_resolve_callback(<grpc_custom_resolver*>resolve_wrapper.c_resolver,
 *                                  tuples_to_resolvaddr(res), grpc_error_none())
 *   except IOError as io_error:             # <<<<<<<<<<<<<<
 *     grpc_custom_resolve_callback(<grpc_custom_resolver*>resolve_wrapper.c_resolver,
 *                                  <grpc_resolved_addresses*>0,
 */
    __pyx_t_9 = __Pyx_PyErr_ExceptionMatches(__pyx_builtin_IOError);
    if (__pyx_t_9) {
      __Pyx_AddTraceback("grpc._cython.cygrpc.socket_resolve_async_cython", __pyx_clineno, __pyx_lineno, __pyx_filename);
      if (__Pyx_GetException(&__pyx_t_4, &__pyx_t_6, &__pyx_t_10) < 0) __PYX_ERR(6, 278, __pyx_L5_except_error)
      __Pyx_GOTREF(__pyx_t_4);
      __Pyx_GOTREF(__pyx_t_6);
      __Pyx_GOTREF(__pyx_t_10);
      __Pyx_INCREF(__pyx_t_6);
      __pyx_v_io_error = __pyx_t_6;

      /* "src/python/grpcio/grpc/_cython/_cygrpc/grpc_gevent.pyx.pxi":281
 *     grpc_custom_resolve_callback(<grpc_custom_resolver*>resolve_wrapper.c_resolver,
 *                                  <grpc_resolved_addresses*>0,
 *                                  socket_error("getaddrinfo", str(io_error)))             # <<<<<<<<<<<<<<
 *   g_event.set()
 * 
 */
      __pyx_t_7 = __Pyx_PyObject_CallOneArg(((PyObject *)(&PyString_Type)), __pyx_v_io_error); if (unlikely(!__pyx_t_7)) __PYX_ERR(6, 281, __pyx_L5_except_error)
      __Pyx_GOTREF(__pyx_t_7);
      if (!(likely(PyString_CheckExact(__pyx_t_7))||((__pyx_t_7) == Py_None)||(PyErr_Format(PyExc_TypeError, "Expected %.16s, got %.200s", "str", Py_TYPE(__pyx_t_7)->tp_name), 0))) __PYX_ERR(6, 281, __pyx_L5_except_error)

      /* "src/python/grpcio/grpc/_cython/_cygrpc/grpc_gevent.pyx.pxi":279
 *                                  tuples_to_resolvaddr(res), grpc_error_none())
 *   except IOError as io_error:
 *     grpc_custom_resolve_callback(<grpc_custom_resolver*>resolve_wrapper.c_resolver,             # <<<<<<<<<<<<<<
 *                                  <grpc_resolved_addresses*>0,
 *                                  socket_error("getaddrinfo", str(io_error)))
 */
      grpc_custom_resolve_callback(((struct grpc_custom_resolver *)__pyx_v_resolve_wrapper->c_resolver), ((grpc_resolved_addresses *)0), __pyx_f_4grpc_7_cython_6cygrpc_socket_error(__pyx_n_s_getaddrinfo, ((PyObject*)__pyx_t_7)));
      __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
      __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0;
      __Pyx_XDECREF(__pyx_t_6); __pyx_t_6 = 0;
      __Pyx_XDECREF(__pyx_t_10); __pyx_t_10 = 0;
      goto __pyx_L4_exception_handled;
    }
    goto __pyx_L5_except_error;
    __pyx_L5_except_error:;

    /* "src/python/grpcio/grpc/_cython/_cygrpc/grpc_gevent.pyx.pxi":274
 * 
 * cdef socket_resolve_async_cython(ResolveWrapper resolve_wrapper):
 *   try:             # <<<<<<<<<<<<<<
 *     res = gevent_socket.getaddrinfo(resolve_wrapper.c_host, resolve_wrapper.c_port)
 *     grpc_custom_resolve_callback(<grpc_custom_resolver*>resolve_wrapper.c_resolver,
 */
    __Pyx_XGIVEREF(__pyx_t_1);
    __Pyx_XGIVEREF(__pyx_t_2);
    __Pyx_XGIVEREF(__pyx_t_3);
    __Pyx_ExceptionReset(__pyx_t_1, __pyx_t_2, __pyx_t_3);
    goto __pyx_L1_error;
    __pyx_L4_exception_handled:;
    __Pyx_XGIVEREF(__pyx_t_1);
    __Pyx_XGIVEREF(__pyx_t_2);
    __Pyx_XGIVEREF(__pyx_t_3);
    __Pyx_ExceptionReset(__pyx_t_1, __pyx_t_2, __pyx_t_3);
    __pyx_L8_try_end:;
  }

  /* "src/python/grpcio/grpc/_cython/_cygrpc/grpc_gevent.pyx.pxi":282
 *                                  <grpc_resolved_addresses*>0,
 *                                  socket_error("getaddrinfo", str(io_error)))
 *   g_event.set()             # <<<<<<<<<<<<<<
 * 
 * def socket_resolve_async_python(resolve_wrapper):
 */
  __Pyx_GetModuleGlobalName(__pyx_t_6, __pyx_n_s_g_event); if (unlikely(!__pyx_t_6)) __PYX_ERR(6, 282, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_6);
  __pyx_t_4 = __Pyx_PyObject_GetAttrStr(__pyx_t_6, __pyx_n_s_set); if (unlikely(!__pyx_t_4)) __PYX_ERR(6, 282, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_4);
  __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
  __pyx_t_6 = NULL;
  if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_4))) {
    __pyx_t_6 = PyMethod_GET_SELF(__pyx_t_4);
    if (likely(__pyx_t_6)) {
      PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_4);
      __Pyx_INCREF(__pyx_t_6);
      __Pyx_INCREF(function);
      __Pyx_DECREF_SET(__pyx_t_4, function);
    }
  }
  __pyx_t_10 = (__pyx_t_6) ? __Pyx_PyObject_CallOneArg(__pyx_t_4, __pyx_t_6) : __Pyx_PyObject_CallNoArg(__pyx_t_4);
  __Pyx_XDECREF(__pyx_t_6); __pyx_t_6 = 0;
  if (unlikely(!__pyx_t_10)) __PYX_ERR(6, 282, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_10);
  __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
  __Pyx_DECREF(__pyx_t_10); __pyx_t_10 = 0;

  /* "src/python/grpcio/grpc/_cython/_cygrpc/grpc_gevent.pyx.pxi":273
 *     grpc_shutdown()
 * 
 * cdef socket_resolve_async_cython(ResolveWrapper resolve_wrapper):             # <<<<<<<<<<<<<<
 *   try:
 *     res = gevent_socket.getaddrinfo(resolve_wrapper.c_host, resolve_wrapper.c_port)
 */

  /* function exit code */
  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_4);
  __Pyx_XDECREF(__pyx_t_5);
  __Pyx_XDECREF(__pyx_t_6);
  __Pyx_XDECREF(__pyx_t_7);
  __Pyx_XDECREF(__pyx_t_8);
  __Pyx_XDECREF(__pyx_t_10);
  __Pyx_AddTraceback("grpc._cython.cygrpc.socket_resolve_async_cython", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = 0;
  __pyx_L0:;
  __Pyx_XDECREF(__pyx_v_res);
  __Pyx_XDECREF(__pyx_v_io_error);
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "src/python/grpcio/grpc/_cython/_cygrpc/grpc_gevent.pyx.pxi":284
 *   g_event.set()
 * 
 * def socket_resolve_async_python(resolve_wrapper):             # <<<<<<<<<<<<<<
 *   socket_resolve_async_cython(resolve_wrapper)
 * 
 */

/* Python wrapper */
static PyObject *__pyx_pw_4grpc_7_cython_6cygrpc_77socket_resolve_async_python(PyObject *__pyx_self, PyObject *__pyx_v_resolve_wrapper); /*proto*/
static PyMethodDef __pyx_mdef_4grpc_7_cython_6cygrpc_77socket_resolve_async_python = {"socket_resolve_async_python", (PyCFunction)__pyx_pw_4grpc_7_cython_6cygrpc_77socket_resolve_async_python, METH_O, 0};
static PyObject *__pyx_pw_4grpc_7_cython_6cygrpc_77socket_resolve_async_python(PyObject *__pyx_self, PyObject *__pyx_v_resolve_wrapper) {
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("socket_resolve_async_python (wrapper)", 0);
  __pyx_r = __pyx_pf_4grpc_7_cython_6cygrpc_76socket_resolve_async_python(__pyx_self, ((PyObject *)__pyx_v_resolve_wrapper));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_4grpc_7_cython_6cygrpc_76socket_resolve_async_python(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__pyx_v_resolve_wrapper) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("socket_resolve_async_python", 0);

  /* "src/python/grpcio/grpc/_cython/_cygrpc/grpc_gevent.pyx.pxi":285
 * 
 * def socket_resolve_async_python(resolve_wrapper):
 *   socket_resolve_async_cython(resolve_wrapper)             # <<<<<<<<<<<<<<
 * 
 * cdef void socket_resolve_async(grpc_custom_resolver* r, const char* host, const char* port) with gil:
 */
  if (!(likely(((__pyx_v_resolve_wrapper) == Py_None) || likely(__Pyx_TypeTest(__pyx_v_resolve_wrapper, __pyx_ptype_4grpc_7_cython_6cygrpc_ResolveWrapper))))) __PYX_ERR(6, 285, __pyx_L1_error)
  __pyx_t_1 = __pyx_f_4grpc_7_cython_6cygrpc_socket_resolve_async_cython(((struct __pyx_obj_4grpc_7_cython_6cygrpc_ResolveWrapper *)__pyx_v_resolve_wrapper)); if (unlikely(!__pyx_t_1)) __PYX_ERR(6, 285, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;

  /* "src/python/grpcio/grpc/_cython/_cygrpc/grpc_gevent.pyx.pxi":284
 *   g_event.set()
 * 
 * def socket_resolve_async_python(resolve_wrapper):             # <<<<<<<<<<<<<<
 *   socket_resolve_async_cython(resolve_wrapper)
 * 
 */

  /* function exit code */
  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_AddTraceback("grpc._cython.cygrpc.socket_resolve_async_python", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "src/python/grpcio/grpc/_cython/_cygrpc/grpc_gevent.pyx.pxi":287
 *   socket_resolve_async_cython(resolve_wrapper)
 * 
 * cdef void socket_resolve_async(grpc_custom_resolver* r, const char* host, const char* port) with gil:             # <<<<<<<<<<<<<<
 *   rw = ResolveWrapper()
 *   rw.c_resolver = r
 */

static void __pyx_f_4grpc_7_cython_6cygrpc_socket_resolve_async(struct grpc_custom_resolver *__pyx_v_r, char const *__pyx_v_host, char const *__pyx_v_port) {
  struct __pyx_obj_4grpc_7_cython_6cygrpc_ResolveWrapper *__pyx_v_rw = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  PyObject *__pyx_t_2 = NULL;
  PyObject *__pyx_t_3 = NULL;
  PyObject *__pyx_t_4 = NULL;
  int __pyx_t_5;
  PyObject *__pyx_t_6 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  #ifdef WITH_THREAD
  PyGILState_STATE __pyx_gilstate_save = __Pyx_PyGILState_Ensure();
  #endif
  __Pyx_RefNannySetupContext("socket_resolve_async", 0);

  /* "src/python/grpcio/grpc/_cython/_cygrpc/grpc_gevent.pyx.pxi":288
 * 
 * cdef void socket_resolve_async(grpc_custom_resolver* r, const char* host, const char* port) with gil:
 *   rw = ResolveWrapper()             # <<<<<<<<<<<<<<
 *   rw.c_resolver = r
 *   rw.c_host = host
 */
  __pyx_t_1 = __Pyx_PyObject_CallNoArg(((PyObject *)__pyx_ptype_4grpc_7_cython_6cygrpc_ResolveWrapper)); if (unlikely(!__pyx_t_1)) __PYX_ERR(6, 288, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_v_rw = ((struct __pyx_obj_4grpc_7_cython_6cygrpc_ResolveWrapper *)__pyx_t_1);
  __pyx_t_1 = 0;

  /* "src/python/grpcio/grpc/_cython/_cygrpc/grpc_gevent.pyx.pxi":289
 * cdef void socket_resolve_async(grpc_custom_resolver* r, const char* host, const char* port) with gil:
 *   rw = ResolveWrapper()
 *   rw.c_resolver = r             # <<<<<<<<<<<<<<
 *   rw.c_host = host
 *   rw.c_port = port
 */
  __pyx_v_rw->c_resolver = __pyx_v_r;

  /* "src/python/grpcio/grpc/_cython/_cygrpc/grpc_gevent.pyx.pxi":290
 *   rw = ResolveWrapper()
 *   rw.c_resolver = r
 *   rw.c_host = host             # <<<<<<<<<<<<<<
 *   rw.c_port = port
 *   _spawn_greenlet(socket_resolve_async_python, rw)
 */
  __pyx_v_rw->c_host = __pyx_v_host;

  /* "src/python/grpcio/grpc/_cython/_cygrpc/grpc_gevent.pyx.pxi":291
 *   rw.c_resolver = r
 *   rw.c_host = host
 *   rw.c_port = port             # <<<<<<<<<<<<<<
 *   _spawn_greenlet(socket_resolve_async_python, rw)
 * 
 */
  __pyx_v_rw->c_port = __pyx_v_port;

  /* "src/python/grpcio/grpc/_cython/_cygrpc/grpc_gevent.pyx.pxi":292
 *   rw.c_host = host
 *   rw.c_port = port
 *   _spawn_greenlet(socket_resolve_async_python, rw)             # <<<<<<<<<<<<<<
 * 
 * cdef grpc_error_handle socket_resolve(const char* host, const char* port,
 */
  __Pyx_GetModuleGlobalName(__pyx_t_2, __pyx_n_s_spawn_greenlet); if (unlikely(!__pyx_t_2)) __PYX_ERR(6, 292, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __Pyx_GetModuleGlobalName(__pyx_t_3, __pyx_n_s_socket_resolve_async_python); if (unlikely(!__pyx_t_3)) __PYX_ERR(6, 292, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  __pyx_t_4 = NULL;
  __pyx_t_5 = 0;
  if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_2))) {
    __pyx_t_4 = PyMethod_GET_SELF(__pyx_t_2);
    if (likely(__pyx_t_4)) {
      PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_2);
      __Pyx_INCREF(__pyx_t_4);
      __Pyx_INCREF(function);
      __Pyx_DECREF_SET(__pyx_t_2, function);
      __pyx_t_5 = 1;
    }
  }
  #if CYTHON_FAST_PYCALL
  if (PyFunction_Check(__pyx_t_2)) {
    PyObject *__pyx_temp[3] = {__pyx_t_4, __pyx_t_3, ((PyObject *)__pyx_v_rw)};
    __pyx_t_1 = __Pyx_PyFunction_FastCall(__pyx_t_2, __pyx_temp+1-__pyx_t_5, 2+__pyx_t_5); if (unlikely(!__pyx_t_1)) __PYX_ERR(6, 292, __pyx_L1_error)
    __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0;
    __Pyx_GOTREF(__pyx_t_1);
    __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
  } else
  #endif
  #if CYTHON_FAST_PYCCALL
  if (__Pyx_PyFastCFunction_Check(__pyx_t_2)) {
    PyObject *__pyx_temp[3] = {__pyx_t_4, __pyx_t_3, ((PyObject *)__pyx_v_rw)};
    __pyx_t_1 = __Pyx_PyCFunction_FastCall(__pyx_t_2, __pyx_temp+1-__pyx_t_5, 2+__pyx_t_5); if (unlikely(!__pyx_t_1)) __PYX_ERR(6, 292, __pyx_L1_error)
    __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0;
    __Pyx_GOTREF(__pyx_t_1);
    __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
  } else
  #endif
  {
    __pyx_t_6 = PyTuple_New(2+__pyx_t_5); if (unlikely(!__pyx_t_6)) __PYX_ERR(6, 292, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_6);
    if (__pyx_t_4) {
      __Pyx_GIVEREF(__pyx_t_4); PyTuple_SET_ITEM(__pyx_t_6, 0, __pyx_t_4); __pyx_t_4 = NULL;
    }
    __Pyx_GIVEREF(__pyx_t_3);
    PyTuple_SET_ITEM(__pyx_t_6, 0+__pyx_t_5, __pyx_t_3);
    __Pyx_INCREF(((PyObject *)__pyx_v_rw));
    __Pyx_GIVEREF(((PyObject *)__pyx_v_rw));
    PyTuple_SET_ITEM(__pyx_t_6, 1+__pyx_t_5, ((PyObject *)__pyx_v_rw));
    __pyx_t_3 = 0;
    __pyx_t_1 = __Pyx_PyObject_Call(__pyx_t_2, __pyx_t_6, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(6, 292, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_1);
    __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
  }
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;

  /* "src/python/grpcio/grpc/_cython/_cygrpc/grpc_gevent.pyx.pxi":287
 *   socket_resolve_async_cython(resolve_wrapper)
 * 
 * cdef void socket_resolve_async(grpc_custom_resolver* r, const char* host, const char* port) with gil:             # <<<<<<<<<<<<<<
 *   rw = ResolveWrapper()
 *   rw.c_resolver = r
 */

  /* function exit code */
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_XDECREF(__pyx_t_3);
  __Pyx_XDECREF(__pyx_t_4);
  __Pyx_XDECREF(__pyx_t_6);
  __Pyx_WriteUnraisable("grpc._cython.cygrpc.socket_resolve_async", __pyx_clineno, __pyx_lineno, __pyx_filename, 1, 0);
  __pyx_L0:;
  __Pyx_XDECREF((PyObject *)__pyx_v_rw);
  __Pyx_RefNannyFinishContext();
  #ifdef WITH_THREAD
  __Pyx_PyGILState_Release(__pyx_gilstate_save);
  #endif
}

/* "src/python/grpcio/grpc/_cython/_cygrpc/grpc_gevent.pyx.pxi":294
 *   _spawn_greenlet(socket_resolve_async_python, rw)
 * 
 * cdef grpc_error_handle socket_resolve(const char* host, const char* port,             # <<<<<<<<<<<<<<
 *                                 grpc_resolved_addresses** res) with gil:
 *     try:
 */

static grpc_error_handle __pyx_f_4grpc_7_cython_6cygrpc_socket_resolve(char const *__pyx_v_host, char const *__pyx_v_port, grpc_resolved_addresses **__pyx_v_res) {
  PyObject *__pyx_v_result = NULL;
  PyObject *__pyx_v_io_error = NULL;
  grpc_error_handle __pyx_r;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  PyObject *__pyx_t_2 = NULL;
  PyObject *__pyx_t_3 = NULL;
  PyObject *__pyx_t_4 = NULL;
  PyObject *__pyx_t_5 = NULL;
  PyObject *__pyx_t_6 = NULL;
  PyObject *__pyx_t_7 = NULL;
  PyObject *__pyx_t_8 = NULL;
  int __pyx_t_9;
  PyObject *__pyx_t_10 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  #ifdef WITH_THREAD
  PyGILState_STATE __pyx_gilstate_save = __Pyx_PyGILState_Ensure();
  #endif
  __Pyx_RefNannySetupContext("socket_resolve", 0);

  /* "src/python/grpcio/grpc/_cython/_cygrpc/grpc_gevent.pyx.pxi":296
 * cdef grpc_error_handle socket_resolve(const char* host, const char* port,
 *                                 grpc_resolved_addresses** res) with gil:
 *     try:             # <<<<<<<<<<<<<<
 *       result = gevent_socket.getaddrinfo(host, port)
 *       res[0] = tuples_to_resolvaddr(result)
 */
  {
    __Pyx_PyThreadState_declare
    __Pyx_PyThreadState_assign
    __Pyx_ExceptionSave(&__pyx_t_1, &__pyx_t_2, &__pyx_t_3);
    __Pyx_XGOTREF(__pyx_t_1);
    __Pyx_XGOTREF(__pyx_t_2);
    __Pyx_XGOTREF(__pyx_t_3);
    /*try:*/ {

      /* "src/python/grpcio/grpc/_cython/_cygrpc/grpc_gevent.pyx.pxi":297
 *                                 grpc_resolved_addresses** res) with gil:
 *     try:
 *       result = gevent_socket.getaddrinfo(host, port)             # <<<<<<<<<<<<<<
 *       res[0] = tuples_to_resolvaddr(result)
 *       return grpc_error_none()
 */
      __Pyx_GetModuleGlobalName(__pyx_t_5, __pyx_n_s_gevent_socket); if (unlikely(!__pyx_t_5)) __PYX_ERR(6, 297, __pyx_L3_error)
      __Pyx_GOTREF(__pyx_t_5);
      __pyx_t_6 = __Pyx_PyObject_GetAttrStr(__pyx_t_5, __pyx_n_s_getaddrinfo); if (unlikely(!__pyx_t_6)) __PYX_ERR(6, 297, __pyx_L3_error)
      __Pyx_GOTREF(__pyx_t_6);
      __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
      __pyx_t_5 = __Pyx_PyBytes_FromString(__pyx_v_host); if (unlikely(!__pyx_t_5)) __PYX_ERR(6, 297, __pyx_L3_error)
      __Pyx_GOTREF(__pyx_t_5);
      __pyx_t_7 = __Pyx_PyBytes_FromString(__pyx_v_port); if (unlikely(!__pyx_t_7)) __PYX_ERR(6, 297, __pyx_L3_error)
      __Pyx_GOTREF(__pyx_t_7);
      __pyx_t_8 = NULL;
      __pyx_t_9 = 0;
      if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_6))) {
        __pyx_t_8 = PyMethod_GET_SELF(__pyx_t_6);
        if (likely(__pyx_t_8)) {
          PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_6);
          __Pyx_INCREF(__pyx_t_8);
          __Pyx_INCREF(function);
          __Pyx_DECREF_SET(__pyx_t_6, function);
          __pyx_t_9 = 1;
        }
      }
      #if CYTHON_FAST_PYCALL
      if (PyFunction_Check(__pyx_t_6)) {
        PyObject *__pyx_temp[3] = {__pyx_t_8, __pyx_t_5, __pyx_t_7};
        __pyx_t_4 = __Pyx_PyFunction_FastCall(__pyx_t_6, __pyx_temp+1-__pyx_t_9, 2+__pyx_t_9); if (unlikely(!__pyx_t_4)) __PYX_ERR(6, 297, __pyx_L3_error)
        __Pyx_XDECREF(__pyx_t_8); __pyx_t_8 = 0;
        __Pyx_GOTREF(__pyx_t_4);
        __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
        __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
      } else
      #endif
      #if CYTHON_FAST_PYCCALL
      if (__Pyx_PyFastCFunction_Check(__pyx_t_6)) {
        PyObject *__pyx_temp[3] = {__pyx_t_8, __pyx_t_5, __pyx_t_7};
        __pyx_t_4 = __Pyx_PyCFunction_FastCall(__pyx_t_6, __pyx_temp+1-__pyx_t_9, 2+__pyx_t_9); if (unlikely(!__pyx_t_4)) __PYX_ERR(6, 297, __pyx_L3_error)
        __Pyx_XDECREF(__pyx_t_8); __pyx_t_8 = 0;
        __Pyx_GOTREF(__pyx_t_4);
        __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
        __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
      } else
      #endif
      {
        __pyx_t_10 = PyTuple_New(2+__pyx_t_9); if (unlikely(!__pyx_t_10)) __PYX_ERR(6, 297, __pyx_L3_error)
        __Pyx_GOTREF(__pyx_t_10);
        if (__pyx_t_8) {
          __Pyx_GIVEREF(__pyx_t_8); PyTuple_SET_ITEM(__pyx_t_10, 0, __pyx_t_8); __pyx_t_8 = NULL;
        }
        __Pyx_GIVEREF(__pyx_t_5);
        PyTuple_SET_ITEM(__pyx_t_10, 0+__pyx_t_9, __pyx_t_5);
        __Pyx_GIVEREF(__pyx_t_7);
        PyTuple_SET_ITEM(__pyx_t_10, 1+__pyx_t_9, __pyx_t_7);
        __pyx_t_5 = 0;
        __pyx_t_7 = 0;
        __pyx_t_4 = __Pyx_PyObject_Call(__pyx_t_6, __pyx_t_10, NULL); if (unlikely(!__pyx_t_4)) __PYX_ERR(6, 297, __pyx_L3_error)
        __Pyx_GOTREF(__pyx_t_4);
        __Pyx_DECREF(__pyx_t_10); __pyx_t_10 = 0;
      }
      __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
      __pyx_v_result = __pyx_t_4;
      __pyx_t_4 = 0;

      /* "src/python/grpcio/grpc/_cython/_cygrpc/grpc_gevent.pyx.pxi":298
 *     try:
 *       result = gevent_socket.getaddrinfo(host, port)
 *       res[0] = tuples_to_resolvaddr(result)             # <<<<<<<<<<<<<<
 *       return grpc_error_none()
 *     except IOError as io_error:
 */
      (__pyx_v_res[0]) = __pyx_f_4grpc_7_cython_6cygrpc_tuples_to_resolvaddr(__pyx_v_result);

      /* "src/python/grpcio/grpc/_cython/_cygrpc/grpc_gevent.pyx.pxi":299
 *       result = gevent_socket.getaddrinfo(host, port)
 *       res[0] = tuples_to_resolvaddr(result)
 *       return grpc_error_none()             # <<<<<<<<<<<<<<
 *     except IOError as io_error:
 *       return socket_error("getaddrinfo", str(io_error))
 */
      __pyx_r = __pyx_f_4grpc_7_cython_6cygrpc_grpc_error_none();
      goto __pyx_L7_try_return;

      /* "src/python/grpcio/grpc/_cython/_cygrpc/grpc_gevent.pyx.pxi":296
 * cdef grpc_error_handle socket_resolve(const char* host, const char* port,
 *                                 grpc_resolved_addresses** res) with gil:
 *     try:             # <<<<<<<<<<<<<<
 *       result = gevent_socket.getaddrinfo(host, port)
 *       res[0] = tuples_to_resolvaddr(result)
 */
    }
    __pyx_L3_error:;
    __Pyx_XDECREF(__pyx_t_10); __pyx_t_10 = 0;
    __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0;
    __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0;
    __Pyx_XDECREF(__pyx_t_6); __pyx_t_6 = 0;
    __Pyx_XDECREF(__pyx_t_7); __pyx_t_7 = 0;
    __Pyx_XDECREF(__pyx_t_8); __pyx_t_8 = 0;

    /* "src/python/grpcio/grpc/_cython/_cygrpc/grpc_gevent.pyx.pxi":300
 *       res[0] = tuples_to_resolvaddr(result)
 *       return grpc_error_none()
 *     except IOError as io_error:             # <<<<<<<<<<<<<<
 *       return socket_error("getaddrinfo", str(io_error))
 * 
 */
    __pyx_t_9 = __Pyx_PyErr_ExceptionMatches(__pyx_builtin_IOError);
    if (__pyx_t_9) {
      __Pyx_AddTraceback("grpc._cython.cygrpc.socket_resolve", __pyx_clineno, __pyx_lineno, __pyx_filename);
      if (__Pyx_GetException(&__pyx_t_4, &__pyx_t_6, &__pyx_t_10) < 0) __PYX_ERR(6, 300, __pyx_L5_except_error)
      __Pyx_GOTREF(__pyx_t_4);
      __Pyx_GOTREF(__pyx_t_6);
      __Pyx_GOTREF(__pyx_t_10);
      __Pyx_INCREF(__pyx_t_6);
      __pyx_v_io_error = __pyx_t_6;

      /* "src/python/grpcio/grpc/_cython/_cygrpc/grpc_gevent.pyx.pxi":301
 *       return grpc_error_none()
 *     except IOError as io_error:
 *       return socket_error("getaddrinfo", str(io_error))             # <<<<<<<<<<<<<<
 * 
 * ###############################
 */
      __pyx_t_7 = __Pyx_PyObject_CallOneArg(((PyObject *)(&PyString_Type)), __pyx_v_io_error); if (unlikely(!__pyx_t_7)) __PYX_ERR(6, 301, __pyx_L5_except_error)
      __Pyx_GOTREF(__pyx_t_7);
      if (!(likely(PyString_CheckExact(__pyx_t_7))||((__pyx_t_7) == Py_None)||(PyErr_Format(PyExc_TypeError, "Expected %.16s, got %.200s", "str", Py_TYPE(__pyx_t_7)->tp_name), 0))) __PYX_ERR(6, 301, __pyx_L5_except_error)
      __pyx_r = __pyx_f_4grpc_7_cython_6cygrpc_socket_error(__pyx_n_s_getaddrinfo, ((PyObject*)__pyx_t_7));
      __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
      __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
      __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
      __Pyx_DECREF(__pyx_t_10); __pyx_t_10 = 0;
      goto __pyx_L6_except_return;
    }
    goto __pyx_L5_except_error;
    __pyx_L5_except_error:;

    /* "src/python/grpcio/grpc/_cython/_cygrpc/grpc_gevent.pyx.pxi":296
 * cdef grpc_error_handle socket_resolve(const char* host, const char* port,
 *                                 grpc_resolved_addresses** res) with gil:
 *     try:             # <<<<<<<<<<<<<<
 *       result = gevent_socket.getaddrinfo(host, port)
 *       res[0] = tuples_to_resolvaddr(result)
 */
    __Pyx_XGIVEREF(__pyx_t_1);
    __Pyx_XGIVEREF(__pyx_t_2);
    __Pyx_XGIVEREF(__pyx_t_3);
    __Pyx_ExceptionReset(__pyx_t_1, __pyx_t_2, __pyx_t_3);
    goto __pyx_L1_error;
    __pyx_L7_try_return:;
    __Pyx_XGIVEREF(__pyx_t_1);
    __Pyx_XGIVEREF(__pyx_t_2);
    __Pyx_XGIVEREF(__pyx_t_3);
    __Pyx_ExceptionReset(__pyx_t_1, __pyx_t_2, __pyx_t_3);
    goto __pyx_L0;
    __pyx_L6_except_return:;
    __Pyx_XGIVEREF(__pyx_t_1);
    __Pyx_XGIVEREF(__pyx_t_2);
    __Pyx_XGIVEREF(__pyx_t_3);
    __Pyx_ExceptionReset(__pyx_t_1, __pyx_t_2, __pyx_t_3);
    goto __pyx_L0;
  }

  /* "src/python/grpcio/grpc/_cython/_cygrpc/grpc_gevent.pyx.pxi":294
 *   _spawn_greenlet(socket_resolve_async_python, rw)
 * 
 * cdef grpc_error_handle socket_resolve(const char* host, const char* port,             # <<<<<<<<<<<<<<
 *                                 grpc_resolved_addresses** res) with gil:
 *     try:
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_4);
  __Pyx_XDECREF(__pyx_t_5);
  __Pyx_XDECREF(__pyx_t_6);
  __Pyx_XDECREF(__pyx_t_7);
  __Pyx_XDECREF(__pyx_t_8);
  __Pyx_XDECREF(__pyx_t_10);
  __Pyx_WriteUnraisable("grpc._cython.cygrpc.socket_resolve", __pyx_clineno, __pyx_lineno, __pyx_filename, 1, 0);
  __pyx_r = 0;
  __pyx_L0:;
  __Pyx_XDECREF(__pyx_v_result);
  __Pyx_XDECREF(__pyx_v_io_error);
  __Pyx_RefNannyFinishContext();
  #ifdef WITH_THREAD
  __Pyx_PyGILState_Release(__pyx_gilstate_save);
  #endif
  return __pyx_r;
}

/* "src/python/grpcio/grpc/_cython/_cygrpc/grpc_gevent.pyx.pxi":308
 * 
 * cdef class TimerWrapper:
 *   def __cinit__(self, deadline):             # <<<<<<<<<<<<<<
 *     fork_handlers_and_grpc_init()
 *     self.timer = gevent_hub.get_hub().loop.timer(deadline)
 */

/* Python wrapper */
static int __pyx_pw_4grpc_7_cython_6cygrpc_12TimerWrapper_1__cinit__(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
static int __pyx_pw_4grpc_7_cython_6cygrpc_12TimerWrapper_1__cinit__(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
  PyObject *__pyx_v_deadline = 0;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  int __pyx_r;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__cinit__ (wrapper)", 0);
  {
    static PyObject **__pyx_pyargnames[] = {&__pyx_n_s_deadline,0};
    PyObject* values[1] = {0};
    if (unlikely(__pyx_kwds)) {
      Py_ssize_t kw_args;
      const Py_ssize_t pos_args = PyTuple_GET_SIZE(__pyx_args);
      switch (pos_args) {
        case  1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
        CYTHON_FALLTHROUGH;
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      kw_args = PyDict_Size(__pyx_kwds);
      switch (pos_args) {
        case  0:
        if (likely((values[0] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_deadline)) != 0)) kw_args--;
        else goto __pyx_L5_argtuple_error;
      }
      if (unlikely(kw_args > 0)) {
        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "__cinit__") < 0)) __PYX_ERR(6, 308, __pyx_L3_error)
      }
    } else if (PyTuple_GET_SIZE(__pyx_args) != 1) {
      goto __pyx_L5_argtuple_error;
    } else {
      values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
    }
    __pyx_v_deadline = values[0];
  }
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("__cinit__", 1, 1, 1, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(6, 308, __pyx_L3_error)
  __pyx_L3_error:;
  __Pyx_AddTraceback("grpc._cython.cygrpc.TimerWrapper.__cinit__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return -1;
  __pyx_L4_argument_unpacking_done:;
  __pyx_r = __pyx_pf_4grpc_7_cython_6cygrpc_12TimerWrapper___cinit__(((struct __pyx_obj_4grpc_7_cython_6cygrpc_TimerWrapper *)__pyx_v_self), __pyx_v_deadline);

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static int __pyx_pf_4grpc_7_cython_6cygrpc_12TimerWrapper___cinit__(struct __pyx_obj_4grpc_7_cython_6cygrpc_TimerWrapper *__pyx_v_self, PyObject *__pyx_v_deadline) {
  int __pyx_r;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  PyObject *__pyx_t_2 = NULL;
  PyObject *__pyx_t_3 = NULL;
  PyObject *__pyx_t_4 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("__cinit__", 0);

  /* "src/python/grpcio/grpc/_cython/_cygrpc/grpc_gevent.pyx.pxi":309
 * cdef class TimerWrapper:
 *   def __cinit__(self, deadline):
 *     fork_handlers_and_grpc_init()             # <<<<<<<<<<<<<<
 *     self.timer = gevent_hub.get_hub().loop.timer(deadline)
 *     self.event = None
 */
  __Pyx_GetModuleGlobalName(__pyx_t_2, __pyx_n_s_fork_handlers_and_grpc_init); if (unlikely(!__pyx_t_2)) __PYX_ERR(6, 309, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __pyx_t_3 = NULL;
  if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_2))) {
    __pyx_t_3 = PyMethod_GET_SELF(__pyx_t_2);
    if (likely(__pyx_t_3)) {
      PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_2);
      __Pyx_INCREF(__pyx_t_3);
      __Pyx_INCREF(function);
      __Pyx_DECREF_SET(__pyx_t_2, function);
    }
  }
  __pyx_t_1 = (__pyx_t_3) ? __Pyx_PyObject_CallOneArg(__pyx_t_2, __pyx_t_3) : __Pyx_PyObject_CallNoArg(__pyx_t_2);
  __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0;
  if (unlikely(!__pyx_t_1)) __PYX_ERR(6, 309, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;

  /* "src/python/grpcio/grpc/_cython/_cygrpc/grpc_gevent.pyx.pxi":310
 *   def __cinit__(self, deadline):
 *     fork_handlers_and_grpc_init()
 *     self.timer = gevent_hub.get_hub().loop.timer(deadline)             # <<<<<<<<<<<<<<
 *     self.event = None
 * 
 */
  __Pyx_GetModuleGlobalName(__pyx_t_3, __pyx_n_s_gevent_hub); if (unlikely(!__pyx_t_3)) __PYX_ERR(6, 310, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  __pyx_t_4 = __Pyx_PyObject_GetAttrStr(__pyx_t_3, __pyx_n_s_get_hub); if (unlikely(!__pyx_t_4)) __PYX_ERR(6, 310, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_4);
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
  __pyx_t_3 = NULL;
  if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_4))) {
    __pyx_t_3 = PyMethod_GET_SELF(__pyx_t_4);
    if (likely(__pyx_t_3)) {
      PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_4);
      __Pyx_INCREF(__pyx_t_3);
      __Pyx_INCREF(function);
      __Pyx_DECREF_SET(__pyx_t_4, function);
    }
  }
  __pyx_t_2 = (__pyx_t_3) ? __Pyx_PyObject_CallOneArg(__pyx_t_4, __pyx_t_3) : __Pyx_PyObject_CallNoArg(__pyx_t_4);
  __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0;
  if (unlikely(!__pyx_t_2)) __PYX_ERR(6, 310, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
  __pyx_t_4 = __Pyx_PyObject_GetAttrStr(__pyx_t_2, __pyx_n_s_loop); if (unlikely(!__pyx_t_4)) __PYX_ERR(6, 310, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_4);
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_t_4, __pyx_n_s_timer); if (unlikely(!__pyx_t_2)) __PYX_ERR(6, 310, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
  __pyx_t_4 = NULL;
  if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_2))) {
    __pyx_t_4 = PyMethod_GET_SELF(__pyx_t_2);
    if (likely(__pyx_t_4)) {
      PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_2);
      __Pyx_INCREF(__pyx_t_4);
      __Pyx_INCREF(function);
      __Pyx_DECREF_SET(__pyx_t_2, function);
    }
  }
  __pyx_t_1 = (__pyx_t_4) ? __Pyx_PyObject_Call2Args(__pyx_t_2, __pyx_t_4, __pyx_v_deadline) : __Pyx_PyObject_CallOneArg(__pyx_t_2, __pyx_v_deadline);
  __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0;
  if (unlikely(!__pyx_t_1)) __PYX_ERR(6, 310, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  __Pyx_GIVEREF(__pyx_t_1);
  __Pyx_GOTREF(__pyx_v_self->timer);
  __Pyx_DECREF(__pyx_v_self->timer);
  __pyx_v_self->timer = __pyx_t_1;
  __pyx_t_1 = 0;

  /* "src/python/grpcio/grpc/_cython/_cygrpc/grpc_gevent.pyx.pxi":311
 *     fork_handlers_and_grpc_init()
 *     self.timer = gevent_hub.get_hub().loop.timer(deadline)
 *     self.event = None             # <<<<<<<<<<<<<<
 * 
 *   def start(self):
 */
  __Pyx_INCREF(Py_None);
  __Pyx_GIVEREF(Py_None);
  __Pyx_GOTREF(__pyx_v_self->event);
  __Pyx_DECREF(__pyx_v_self->event);
  __pyx_v_self->event = Py_None;

  /* "src/python/grpcio/grpc/_cython/_cygrpc/grpc_gevent.pyx.pxi":308
 * 
 * cdef class TimerWrapper:
 *   def __cinit__(self, deadline):             # <<<<<<<<<<<<<<
 *     fork_handlers_and_grpc_init()
 *     self.timer = gevent_hub.get_hub().loop.timer(deadline)
 */

  /* function exit code */
  __pyx_r = 0;
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_XDECREF(__pyx_t_3);
  __Pyx_XDECREF(__pyx_t_4);
  __Pyx_AddTraceback("grpc._cython.cygrpc.TimerWrapper.__cinit__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = -1;
  __pyx_L0:;
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "src/python/grpcio/grpc/_cython/_cygrpc/grpc_gevent.pyx.pxi":313
 *     self.event = None
 * 
 *   def start(self):             # <<<<<<<<<<<<<<
 *     self.event = gevent_event.Event()
 *     self.timer.start(self.on_finish)
 */

/* Python wrapper */
static PyObject *__pyx_pw_4grpc_7_cython_6cygrpc_12TimerWrapper_3start(PyObject *__pyx_v_self, CYTHON_UNUSED PyObject *unused); /*proto*/
static PyObject *__pyx_pw_4grpc_7_cython_6cygrpc_12TimerWrapper_3start(PyObject *__pyx_v_self, CYTHON_UNUSED PyObject *unused) {
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("start (wrapper)", 0);
  __pyx_r = __pyx_pf_4grpc_7_cython_6cygrpc_12TimerWrapper_2start(((struct __pyx_obj_4grpc_7_cython_6cygrpc_TimerWrapper *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_4grpc_7_cython_6cygrpc_12TimerWrapper_2start(struct __pyx_obj_4grpc_7_cython_6cygrpc_TimerWrapper *__pyx_v_self) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  PyObject *__pyx_t_2 = NULL;
  PyObject *__pyx_t_3 = NULL;
  PyObject *__pyx_t_4 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("start", 0);

  /* "src/python/grpcio/grpc/_cython/_cygrpc/grpc_gevent.pyx.pxi":314
 * 
 *   def start(self):
 *     self.event = gevent_event.Event()             # <<<<<<<<<<<<<<
 *     self.timer.start(self.on_finish)
 * 
 */
  __Pyx_GetModuleGlobalName(__pyx_t_2, __pyx_n_s_gevent_event); if (unlikely(!__pyx_t_2)) __PYX_ERR(6, 314, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __pyx_t_3 = __Pyx_PyObject_GetAttrStr(__pyx_t_2, __pyx_n_s_Event); if (unlikely(!__pyx_t_3)) __PYX_ERR(6, 314, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  __pyx_t_2 = NULL;
  if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_3))) {
    __pyx_t_2 = PyMethod_GET_SELF(__pyx_t_3);
    if (likely(__pyx_t_2)) {
      PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_3);
      __Pyx_INCREF(__pyx_t_2);
      __Pyx_INCREF(function);
      __Pyx_DECREF_SET(__pyx_t_3, function);
    }
  }
  __pyx_t_1 = (__pyx_t_2) ? __Pyx_PyObject_CallOneArg(__pyx_t_3, __pyx_t_2) : __Pyx_PyObject_CallNoArg(__pyx_t_3);
  __Pyx_XDECREF(__pyx_t_2); __pyx_t_2 = 0;
  if (unlikely(!__pyx_t_1)) __PYX_ERR(6, 314, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
  __Pyx_GIVEREF(__pyx_t_1);
  __Pyx_GOTREF(__pyx_v_self->event);
  __Pyx_DECREF(__pyx_v_self->event);
  __pyx_v_self->event = __pyx_t_1;
  __pyx_t_1 = 0;

  /* "src/python/grpcio/grpc/_cython/_cygrpc/grpc_gevent.pyx.pxi":315
 *   def start(self):
 *     self.event = gevent_event.Event()
 *     self.timer.start(self.on_finish)             # <<<<<<<<<<<<<<
 * 
 *   def on_finish(self):
 */
  __pyx_t_3 = __Pyx_PyObject_GetAttrStr(__pyx_v_self->timer, __pyx_n_s_start); if (unlikely(!__pyx_t_3)) __PYX_ERR(6, 315, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  __pyx_t_2 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_on_finish); if (unlikely(!__pyx_t_2)) __PYX_ERR(6, 315, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __pyx_t_4 = NULL;
  if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_3))) {
    __pyx_t_4 = PyMethod_GET_SELF(__pyx_t_3);
    if (likely(__pyx_t_4)) {
      PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_3);
      __Pyx_INCREF(__pyx_t_4);
      __Pyx_INCREF(function);
      __Pyx_DECREF_SET(__pyx_t_3, function);
    }
  }
  __pyx_t_1 = (__pyx_t_4) ? __Pyx_PyObject_Call2Args(__pyx_t_3, __pyx_t_4, __pyx_t_2) : __Pyx_PyObject_CallOneArg(__pyx_t_3, __pyx_t_2);
  __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0;
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  if (unlikely(!__pyx_t_1)) __PYX_ERR(6, 315, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;

  /* "src/python/grpcio/grpc/_cython/_cygrpc/grpc_gevent.pyx.pxi":313
 *     self.event = None
 * 
 *   def start(self):             # <<<<<<<<<<<<<<
 *     self.event = gevent_event.Event()
 *     self.timer.start(self.on_finish)
 */

  /* function exit code */
  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_XDECREF(__pyx_t_3);
  __Pyx_XDECREF(__pyx_t_4);
  __Pyx_AddTraceback("grpc._cython.cygrpc.TimerWrapper.start", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "src/python/grpcio/grpc/_cython/_cygrpc/grpc_gevent.pyx.pxi":317
 *     self.timer.start(self.on_finish)
 * 
 *   def on_finish(self):             # <<<<<<<<<<<<<<
 *     grpc_custom_timer_callback(self.c_timer, grpc_error_none())
 *     self.timer.stop()
 */

/* Python wrapper */
static PyObject *__pyx_pw_4grpc_7_cython_6cygrpc_12TimerWrapper_5on_finish(PyObject *__pyx_v_self, CYTHON_UNUSED PyObject *unused); /*proto*/
static PyObject *__pyx_pw_4grpc_7_cython_6cygrpc_12TimerWrapper_5on_finish(PyObject *__pyx_v_self, CYTHON_UNUSED PyObject *unused) {
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("on_finish (wrapper)", 0);
  __pyx_r = __pyx_pf_4grpc_7_cython_6cygrpc_12TimerWrapper_4on_finish(((struct __pyx_obj_4grpc_7_cython_6cygrpc_TimerWrapper *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_4grpc_7_cython_6cygrpc_12TimerWrapper_4on_finish(struct __pyx_obj_4grpc_7_cython_6cygrpc_TimerWrapper *__pyx_v_self) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  PyObject *__pyx_t_2 = NULL;
  PyObject *__pyx_t_3 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("on_finish", 0);

  /* "src/python/grpcio/grpc/_cython/_cygrpc/grpc_gevent.pyx.pxi":318
 * 
 *   def on_finish(self):
 *     grpc_custom_timer_callback(self.c_timer, grpc_error_none())             # <<<<<<<<<<<<<<
 *     self.timer.stop()
 *     g_event.set()
 */
  grpc_custom_timer_callback(__pyx_v_self->c_timer, __pyx_f_4grpc_7_cython_6cygrpc_grpc_error_none());

  /* "src/python/grpcio/grpc/_cython/_cygrpc/grpc_gevent.pyx.pxi":319
 *   def on_finish(self):
 *     grpc_custom_timer_callback(self.c_timer, grpc_error_none())
 *     self.timer.stop()             # <<<<<<<<<<<<<<
 *     g_event.set()
 * 
 */
  __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_v_self->timer, __pyx_n_s_stop); if (unlikely(!__pyx_t_2)) __PYX_ERR(6, 319, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __pyx_t_3 = NULL;
  if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_2))) {
    __pyx_t_3 = PyMethod_GET_SELF(__pyx_t_2);
    if (likely(__pyx_t_3)) {
      PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_2);
      __Pyx_INCREF(__pyx_t_3);
      __Pyx_INCREF(function);
      __Pyx_DECREF_SET(__pyx_t_2, function);
    }
  }
  __pyx_t_1 = (__pyx_t_3) ? __Pyx_PyObject_CallOneArg(__pyx_t_2, __pyx_t_3) : __Pyx_PyObject_CallNoArg(__pyx_t_2);
  __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0;
  if (unlikely(!__pyx_t_1)) __PYX_ERR(6, 319, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;

  /* "src/python/grpcio/grpc/_cython/_cygrpc/grpc_gevent.pyx.pxi":320
 *     grpc_custom_timer_callback(self.c_timer, grpc_error_none())
 *     self.timer.stop()
 *     g_event.set()             # <<<<<<<<<<<<<<
 * 
 *   def stop(self):
 */
  __Pyx_GetModuleGlobalName(__pyx_t_2, __pyx_n_s_g_event); if (unlikely(!__pyx_t_2)) __PYX_ERR(6, 320, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __pyx_t_3 = __Pyx_PyObject_GetAttrStr(__pyx_t_2, __pyx_n_s_set); if (unlikely(!__pyx_t_3)) __PYX_ERR(6, 320, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  __pyx_t_2 = NULL;
  if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_3))) {
    __pyx_t_2 = PyMethod_GET_SELF(__pyx_t_3);
    if (likely(__pyx_t_2)) {
      PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_3);
      __Pyx_INCREF(__pyx_t_2);
      __Pyx_INCREF(function);
      __Pyx_DECREF_SET(__pyx_t_3, function);
    }
  }
  __pyx_t_1 = (__pyx_t_2) ? __Pyx_PyObject_CallOneArg(__pyx_t_3, __pyx_t_2) : __Pyx_PyObject_CallNoArg(__pyx_t_3);
  __Pyx_XDECREF(__pyx_t_2); __pyx_t_2 = 0;
  if (unlikely(!__pyx_t_1)) __PYX_ERR(6, 320, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;

  /* "src/python/grpcio/grpc/_cython/_cygrpc/grpc_gevent.pyx.pxi":317
 *     self.timer.start(self.on_finish)
 * 
 *   def on_finish(self):             # <<<<<<<<<<<<<<
 *     grpc_custom_timer_callback(self.c_timer, grpc_error_none())
 *     self.timer.stop()
 */

  /* function exit code */
  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_XDECREF(__pyx_t_3);
  __Pyx_AddTraceback("grpc._cython.cygrpc.TimerWrapper.on_finish", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "src/python/grpcio/grpc/_cython/_cygrpc/grpc_gevent.pyx.pxi":322
 *     g_event.set()
 * 
 *   def stop(self):             # <<<<<<<<<<<<<<
 *     self.event.set()
 *     self.timer.stop()
 */

/* Python wrapper */
static PyObject *__pyx_pw_4grpc_7_cython_6cygrpc_12TimerWrapper_7stop(PyObject *__pyx_v_self, CYTHON_UNUSED PyObject *unused); /*proto*/
static PyObject *__pyx_pw_4grpc_7_cython_6cygrpc_12TimerWrapper_7stop(PyObject *__pyx_v_self, CYTHON_UNUSED PyObject *unused) {
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("stop (wrapper)", 0);
  __pyx_r = __pyx_pf_4grpc_7_cython_6cygrpc_12TimerWrapper_6stop(((struct __pyx_obj_4grpc_7_cython_6cygrpc_TimerWrapper *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_4grpc_7_cython_6cygrpc_12TimerWrapper_6stop(struct __pyx_obj_4grpc_7_cython_6cygrpc_TimerWrapper *__pyx_v_self) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  PyObject *__pyx_t_2 = NULL;
  PyObject *__pyx_t_3 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("stop", 0);

  /* "src/python/grpcio/grpc/_cython/_cygrpc/grpc_gevent.pyx.pxi":323
 * 
 *   def stop(self):
 *     self.event.set()             # <<<<<<<<<<<<<<
 *     self.timer.stop()
 * 
 */
  __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_v_self->event, __pyx_n_s_set); if (unlikely(!__pyx_t_2)) __PYX_ERR(6, 323, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __pyx_t_3 = NULL;
  if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_2))) {
    __pyx_t_3 = PyMethod_GET_SELF(__pyx_t_2);
    if (likely(__pyx_t_3)) {
      PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_2);
      __Pyx_INCREF(__pyx_t_3);
      __Pyx_INCREF(function);
      __Pyx_DECREF_SET(__pyx_t_2, function);
    }
  }
  __pyx_t_1 = (__pyx_t_3) ? __Pyx_PyObject_CallOneArg(__pyx_t_2, __pyx_t_3) : __Pyx_PyObject_CallNoArg(__pyx_t_2);
  __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0;
  if (unlikely(!__pyx_t_1)) __PYX_ERR(6, 323, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;

  /* "src/python/grpcio/grpc/_cython/_cygrpc/grpc_gevent.pyx.pxi":324
 *   def stop(self):
 *     self.event.set()
 *     self.timer.stop()             # <<<<<<<<<<<<<<
 * 
 *   def __dealloc__(self):
 */
  __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_v_self->timer, __pyx_n_s_stop); if (unlikely(!__pyx_t_2)) __PYX_ERR(6, 324, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __pyx_t_3 = NULL;
  if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_2))) {
    __pyx_t_3 = PyMethod_GET_SELF(__pyx_t_2);
    if (likely(__pyx_t_3)) {
      PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_2);
      __Pyx_INCREF(__pyx_t_3);
      __Pyx_INCREF(function);
      __Pyx_DECREF_SET(__pyx_t_2, function);
    }
  }
  __pyx_t_1 = (__pyx_t_3) ? __Pyx_PyObject_CallOneArg(__pyx_t_2, __pyx_t_3) : __Pyx_PyObject_CallNoArg(__pyx_t_2);
  __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0;
  if (unlikely(!__pyx_t_1)) __PYX_ERR(6, 324, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;

  /* "src/python/grpcio/grpc/_cython/_cygrpc/grpc_gevent.pyx.pxi":322
 *     g_event.set()
 * 
 *   def stop(self):             # <<<<<<<<<<<<<<
 *     self.event.set()
 *     self.timer.stop()
 */

  /* function exit code */
  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_XDECREF(__pyx_t_3);
  __Pyx_AddTraceback("grpc._cython.cygrpc.TimerWrapper.stop", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "src/python/grpcio/grpc/_cython/_cygrpc/grpc_gevent.pyx.pxi":326
 *     self.timer.stop()
 * 
 *   def __dealloc__(self):             # <<<<<<<<<<<<<<
 *     grpc_shutdown()
 * 
 */

/* Python wrapper */
static void __pyx_pw_4grpc_7_cython_6cygrpc_12TimerWrapper_9__dealloc__(PyObject *__pyx_v_self); /*proto*/
static void __pyx_pw_4grpc_7_cython_6cygrpc_12TimerWrapper_9__dealloc__(PyObject *__pyx_v_self) {
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__dealloc__ (wrapper)", 0);
  __pyx_pf_4grpc_7_cython_6cygrpc_12TimerWrapper_8__dealloc__(((struct __pyx_obj_4grpc_7_cython_6cygrpc_TimerWrapper *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
}

static void __pyx_pf_4grpc_7_cython_6cygrpc_12TimerWrapper_8__dealloc__(CYTHON_UNUSED struct __pyx_obj_4grpc_7_cython_6cygrpc_TimerWrapper *__pyx_v_self) {
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__dealloc__", 0);

  /* "src/python/grpcio/grpc/_cython/_cygrpc/grpc_gevent.pyx.pxi":327
 * 
 *   def __dealloc__(self):
 *     grpc_shutdown()             # <<<<<<<<<<<<<<
 * 
 * cdef void timer_start(grpc_custom_timer* t) with gil:
 */
  grpc_shutdown();

  /* "src/python/grpcio/grpc/_cython/_cygrpc/grpc_gevent.pyx.pxi":326
 *     self.timer.stop()
 * 
 *   def __dealloc__(self):             # <<<<<<<<<<<<<<
 *     grpc_shutdown()
 * 
 */

  /* function exit code */
  __Pyx_RefNannyFinishContext();
}

/* "(tree fragment)":1
 * def __reduce_cython__(self):             # <<<<<<<<<<<<<<
 *     raise TypeError("no default __reduce__ due to non-trivial __cinit__")
 * def __setstate_cython__(self, __pyx_state):
 */

/* Python wrapper */
static PyObject *__pyx_pw_4grpc_7_cython_6cygrpc_12TimerWrapper_11__reduce_cython__(PyObject *__pyx_v_self, CYTHON_UNUSED PyObject *unused); /*proto*/
static PyObject *__pyx_pw_4grpc_7_cython_6cygrpc_12TimerWrapper_11__reduce_cython__(PyObject *__pyx_v_self, CYTHON_UNUSED PyObject *unused) {
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__reduce_cython__ (wrapper)", 0);
  __pyx_r = __pyx_pf_4grpc_7_cython_6cygrpc_12TimerWrapper_10__reduce_cython__(((struct __pyx_obj_4grpc_7_cython_6cygrpc_TimerWrapper *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_4grpc_7_cython_6cygrpc_12TimerWrapper_10__reduce_cython__(CYTHON_UNUSED struct __pyx_obj_4grpc_7_cython_6cygrpc_TimerWrapper *__pyx_v_self) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("__reduce_cython__", 0);

  /* "(tree fragment)":2
 * def __reduce_cython__(self):
 *     raise TypeError("no default __reduce__ due to non-trivial __cinit__")             # <<<<<<<<<<<<<<
 * def __setstate_cython__(self, __pyx_state):
 *     raise TypeError("no default __reduce__ due to non-trivial __cinit__")
 */
  __pyx_t_1 = __Pyx_PyObject_Call(__pyx_builtin_TypeError, __pyx_tuple__128, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(11, 2, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_Raise(__pyx_t_1, 0, 0, 0);
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  __PYX_ERR(11, 2, __pyx_L1_error)

  /* "(tree fragment)":1
 * def __reduce_cython__(self):             # <<<<<<<<<<<<<<
 *     raise TypeError("no default __reduce__ due to non-trivial __cinit__")
 * def __setstate_cython__(self, __pyx_state):
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_AddTraceback("grpc._cython.cygrpc.TimerWrapper.__reduce_cython__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "(tree fragment)":3
 * def __reduce_cython__(self):
 *     raise TypeError("no default __reduce__ due to non-trivial __cinit__")
 * def __setstate_cython__(self, __pyx_state):             # <<<<<<<<<<<<<<
 *     raise TypeError("no default __reduce__ due to non-trivial __cinit__")
 */

/* Python wrapper */
static PyObject *__pyx_pw_4grpc_7_cython_6cygrpc_12TimerWrapper_13__setstate_cython__(PyObject *__pyx_v_self, PyObject *__pyx_v___pyx_state); /*proto*/
static PyObject *__pyx_pw_4grpc_7_cython_6cygrpc_12TimerWrapper_13__setstate_cython__(PyObject *__pyx_v_self, PyObject *__pyx_v___pyx_state) {
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__setstate_cython__ (wrapper)", 0);
  __pyx_r = __pyx_pf_4grpc_7_cython_6cygrpc_12TimerWrapper_12__setstate_cython__(((struct __pyx_obj_4grpc_7_cython_6cygrpc_TimerWrapper *)__pyx_v_self), ((PyObject *)__pyx_v___pyx_state));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_4grpc_7_cython_6cygrpc_12TimerWrapper_12__setstate_cython__(CYTHON_UNUSED struct __pyx_obj_4grpc_7_cython_6cygrpc_TimerWrapper *__pyx_v_self, CYTHON_UNUSED PyObject *__pyx_v___pyx_state) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("__setstate_cython__", 0);

  /* "(tree fragment)":4
 *     raise TypeError("no default __reduce__ due to non-trivial __cinit__")
 * def __setstate_cython__(self, __pyx_state):
 *     raise TypeError("no default __reduce__ due to non-trivial __cinit__")             # <<<<<<<<<<<<<<
 */
  __pyx_t_1 = __Pyx_PyObject_Call(__pyx_builtin_TypeError, __pyx_tuple__129, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(11, 4, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_Raise(__pyx_t_1, 0, 0, 0);
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  __PYX_ERR(11, 4, __pyx_L1_error)

  /* "(tree fragment)":3
 * def __reduce_cython__(self):
 *     raise TypeError("no default __reduce__ due to non-trivial __cinit__")
 * def __setstate_cython__(self, __pyx_state):             # <<<<<<<<<<<<<<
 *     raise TypeError("no default __reduce__ due to non-trivial __cinit__")
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_AddTraceback("grpc._cython.cygrpc.TimerWrapper.__setstate_cython__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "src/python/grpcio/grpc/_cython/_cygrpc/grpc_gevent.pyx.pxi":329
 *     grpc_shutdown()
 * 
 * cdef void timer_start(grpc_custom_timer* t) with gil:             # <<<<<<<<<<<<<<
 *   timer = TimerWrapper(t.timeout_ms / 1000.0)
 *   timer.c_timer = t
 */

static void __pyx_f_4grpc_7_cython_6cygrpc_timer_start(struct grpc_custom_timer *__pyx_v_t) {
  struct __pyx_obj_4grpc_7_cython_6cygrpc_TimerWrapper *__pyx_v_timer = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  PyObject *__pyx_t_2 = NULL;
  PyObject *__pyx_t_3 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  #ifdef WITH_THREAD
  PyGILState_STATE __pyx_gilstate_save = __Pyx_PyGILState_Ensure();
  #endif
  __Pyx_RefNannySetupContext("timer_start", 0);

  /* "src/python/grpcio/grpc/_cython/_cygrpc/grpc_gevent.pyx.pxi":330
 * 
 * cdef void timer_start(grpc_custom_timer* t) with gil:
 *   timer = TimerWrapper(t.timeout_ms / 1000.0)             # <<<<<<<<<<<<<<
 *   timer.c_timer = t
 *   t.timer = <void*>timer
 */
  __pyx_t_1 = PyFloat_FromDouble((__pyx_v_t->timeout_ms / 1000.0)); if (unlikely(!__pyx_t_1)) __PYX_ERR(6, 330, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_t_2 = __Pyx_PyObject_CallOneArg(((PyObject *)__pyx_ptype_4grpc_7_cython_6cygrpc_TimerWrapper), __pyx_t_1); if (unlikely(!__pyx_t_2)) __PYX_ERR(6, 330, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  __pyx_v_timer = ((struct __pyx_obj_4grpc_7_cython_6cygrpc_TimerWrapper *)__pyx_t_2);
  __pyx_t_2 = 0;

  /* "src/python/grpcio/grpc/_cython/_cygrpc/grpc_gevent.pyx.pxi":331
 * cdef void timer_start(grpc_custom_timer* t) with gil:
 *   timer = TimerWrapper(t.timeout_ms / 1000.0)
 *   timer.c_timer = t             # <<<<<<<<<<<<<<
 *   t.timer = <void*>timer
 *   timer.start()
 */
  __pyx_v_timer->c_timer = __pyx_v_t;

  /* "src/python/grpcio/grpc/_cython/_cygrpc/grpc_gevent.pyx.pxi":332
 *   timer = TimerWrapper(t.timeout_ms / 1000.0)
 *   timer.c_timer = t
 *   t.timer = <void*>timer             # <<<<<<<<<<<<<<
 *   timer.start()
 * 
 */
  __pyx_v_t->timer = ((void *)__pyx_v_timer);

  /* "src/python/grpcio/grpc/_cython/_cygrpc/grpc_gevent.pyx.pxi":333
 *   timer.c_timer = t
 *   t.timer = <void*>timer
 *   timer.start()             # <<<<<<<<<<<<<<
 * 
 * cdef void timer_stop(grpc_custom_timer* t) with gil:
 */
  __pyx_t_1 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_timer), __pyx_n_s_start); if (unlikely(!__pyx_t_1)) __PYX_ERR(6, 333, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_t_3 = NULL;
  if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_1))) {
    __pyx_t_3 = PyMethod_GET_SELF(__pyx_t_1);
    if (likely(__pyx_t_3)) {
      PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_1);
      __Pyx_INCREF(__pyx_t_3);
      __Pyx_INCREF(function);
      __Pyx_DECREF_SET(__pyx_t_1, function);
    }
  }
  __pyx_t_2 = (__pyx_t_3) ? __Pyx_PyObject_CallOneArg(__pyx_t_1, __pyx_t_3) : __Pyx_PyObject_CallNoArg(__pyx_t_1);
  __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0;
  if (unlikely(!__pyx_t_2)) __PYX_ERR(6, 333, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;

  /* "src/python/grpcio/grpc/_cython/_cygrpc/grpc_gevent.pyx.pxi":329
 *     grpc_shutdown()
 * 
 * cdef void timer_start(grpc_custom_timer* t) with gil:             # <<<<<<<<<<<<<<
 *   timer = TimerWrapper(t.timeout_ms / 1000.0)
 *   timer.c_timer = t
 */

  /* function exit code */
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_XDECREF(__pyx_t_3);
  __Pyx_WriteUnraisable("grpc._cython.cygrpc.timer_start", __pyx_clineno, __pyx_lineno, __pyx_filename, 1, 0);
  __pyx_L0:;
  __Pyx_XDECREF((PyObject *)__pyx_v_timer);
  __Pyx_RefNannyFinishContext();
  #ifdef WITH_THREAD
  __Pyx_PyGILState_Release(__pyx_gilstate_save);
  #endif
}

/* "src/python/grpcio/grpc/_cython/_cygrpc/grpc_gevent.pyx.pxi":335
 *   timer.start()
 * 
 * cdef void timer_stop(grpc_custom_timer* t) with gil:             # <<<<<<<<<<<<<<
 *   time_wrapper = <object>t.timer
 *   time_wrapper.stop()
 */

static void __pyx_f_4grpc_7_cython_6cygrpc_timer_stop(struct grpc_custom_timer *__pyx_v_t) {
  PyObject *__pyx_v_time_wrapper = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  PyObject *__pyx_t_2 = NULL;
  PyObject *__pyx_t_3 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  #ifdef WITH_THREAD
  PyGILState_STATE __pyx_gilstate_save = __Pyx_PyGILState_Ensure();
  #endif
  __Pyx_RefNannySetupContext("timer_stop", 0);

  /* "src/python/grpcio/grpc/_cython/_cygrpc/grpc_gevent.pyx.pxi":336
 * 
 * cdef void timer_stop(grpc_custom_timer* t) with gil:
 *   time_wrapper = <object>t.timer             # <<<<<<<<<<<<<<
 *   time_wrapper.stop()
 * 
 */
  __pyx_t_1 = ((PyObject *)__pyx_v_t->timer);
  __Pyx_INCREF(__pyx_t_1);
  __pyx_v_time_wrapper = __pyx_t_1;
  __pyx_t_1 = 0;

  /* "src/python/grpcio/grpc/_cython/_cygrpc/grpc_gevent.pyx.pxi":337
 * cdef void timer_stop(grpc_custom_timer* t) with gil:
 *   time_wrapper = <object>t.timer
 *   time_wrapper.stop()             # <<<<<<<<<<<<<<
 * 
 * ###############################
 */
  __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_v_time_wrapper, __pyx_n_s_stop); if (unlikely(!__pyx_t_2)) __PYX_ERR(6, 337, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __pyx_t_3 = NULL;
  if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_2))) {
    __pyx_t_3 = PyMethod_GET_SELF(__pyx_t_2);
    if (likely(__pyx_t_3)) {
      PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_2);
      __Pyx_INCREF(__pyx_t_3);
      __Pyx_INCREF(function);
      __Pyx_DECREF_SET(__pyx_t_2, function);
    }
  }
  __pyx_t_1 = (__pyx_t_3) ? __Pyx_PyObject_CallOneArg(__pyx_t_2, __pyx_t_3) : __Pyx_PyObject_CallNoArg(__pyx_t_2);
  __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0;
  if (unlikely(!__pyx_t_1)) __PYX_ERR(6, 337, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;

  /* "src/python/grpcio/grpc/_cython/_cygrpc/grpc_gevent.pyx.pxi":335
 *   timer.start()
 * 
 * cdef void timer_stop(grpc_custom_timer* t) with gil:             # <<<<<<<<<<<<<<
 *   time_wrapper = <object>t.timer
 *   time_wrapper.stop()
 */

  /* function exit code */
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_XDECREF(__pyx_t_3);
  __Pyx_WriteUnraisable("grpc._cython.cygrpc.timer_stop", __pyx_clineno, __pyx_lineno, __pyx_filename, 1, 0);
  __pyx_L0:;
  __Pyx_XDECREF(__pyx_v_time_wrapper);
  __Pyx_RefNannyFinishContext();
  #ifdef WITH_THREAD
  __Pyx_PyGILState_Release(__pyx_gilstate_save);
  #endif
}

/* "src/python/grpcio/grpc/_cython/_cygrpc/grpc_gevent.pyx.pxi":343
 * ###############################
 * 
 * cdef void init_loop() with gil:             # <<<<<<<<<<<<<<
 *   pass
 * 
 */

static void __pyx_f_4grpc_7_cython_6cygrpc_init_loop(void) {
  __Pyx_RefNannyDeclarations
  #ifdef WITH_THREAD
  PyGILState_STATE __pyx_gilstate_save = __Pyx_PyGILState_Ensure();
  #endif
  __Pyx_RefNannySetupContext("init_loop", 0);

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  #ifdef WITH_THREAD
  __Pyx_PyGILState_Release(__pyx_gilstate_save);
  #endif
}

/* "src/python/grpcio/grpc/_cython/_cygrpc/grpc_gevent.pyx.pxi":346
 *   pass
 * 
 * cdef void destroy_loop() with gil:             # <<<<<<<<<<<<<<
 *   g_pool.join()
 * 
 */

static void __pyx_f_4grpc_7_cython_6cygrpc_destroy_loop(void) {
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  PyObject *__pyx_t_2 = NULL;
  PyObject *__pyx_t_3 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  #ifdef WITH_THREAD
  PyGILState_STATE __pyx_gilstate_save = __Pyx_PyGILState_Ensure();
  #endif
  __Pyx_RefNannySetupContext("destroy_loop", 0);

  /* "src/python/grpcio/grpc/_cython/_cygrpc/grpc_gevent.pyx.pxi":347
 * 
 * cdef void destroy_loop() with gil:
 *   g_pool.join()             # <<<<<<<<<<<<<<
 * 
 * cdef void kick_loop() with gil:
 */
  __Pyx_GetModuleGlobalName(__pyx_t_2, __pyx_n_s_g_pool); if (unlikely(!__pyx_t_2)) __PYX_ERR(6, 347, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __pyx_t_3 = __Pyx_PyObject_GetAttrStr(__pyx_t_2, __pyx_n_s_join); if (unlikely(!__pyx_t_3)) __PYX_ERR(6, 347, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  __pyx_t_2 = NULL;
  if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_3))) {
    __pyx_t_2 = PyMethod_GET_SELF(__pyx_t_3);
    if (likely(__pyx_t_2)) {
      PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_3);
      __Pyx_INCREF(__pyx_t_2);
      __Pyx_INCREF(function);
      __Pyx_DECREF_SET(__pyx_t_3, function);
    }
  }
  __pyx_t_1 = (__pyx_t_2) ? __Pyx_PyObject_CallOneArg(__pyx_t_3, __pyx_t_2) : __Pyx_PyObject_CallNoArg(__pyx_t_3);
  __Pyx_XDECREF(__pyx_t_2); __pyx_t_2 = 0;
  if (unlikely(!__pyx_t_1)) __PYX_ERR(6, 347, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;

  /* "src/python/grpcio/grpc/_cython/_cygrpc/grpc_gevent.pyx.pxi":346
 *   pass
 * 
 * cdef void destroy_loop() with gil:             # <<<<<<<<<<<<<<
 *   g_pool.join()
 * 
 */

  /* function exit code */
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_XDECREF(__pyx_t_3);
  __Pyx_WriteUnraisable("grpc._cython.cygrpc.destroy_loop", __pyx_clineno, __pyx_lineno, __pyx_filename, 1, 0);
  __pyx_L0:;
  __Pyx_RefNannyFinishContext();
  #ifdef WITH_THREAD
  __Pyx_PyGILState_Release(__pyx_gilstate_save);
  #endif
}

/* "src/python/grpcio/grpc/_cython/_cygrpc/grpc_gevent.pyx.pxi":349
 *   g_pool.join()
 * 
 * cdef void kick_loop() with gil:             # <<<<<<<<<<<<<<
 *   g_event.set()
 * 
 */

static void __pyx_f_4grpc_7_cython_6cygrpc_kick_loop(void) {
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  PyObject *__pyx_t_2 = NULL;
  PyObject *__pyx_t_3 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  #ifdef WITH_THREAD
  PyGILState_STATE __pyx_gilstate_save = __Pyx_PyGILState_Ensure();
  #endif
  __Pyx_RefNannySetupContext("kick_loop", 0);

  /* "src/python/grpcio/grpc/_cython/_cygrpc/grpc_gevent.pyx.pxi":350
 * 
 * cdef void kick_loop() with gil:
 *   g_event.set()             # <<<<<<<<<<<<<<
 * 
 * def _run_loop(timeout_ms):
 */
  __Pyx_GetModuleGlobalName(__pyx_t_2, __pyx_n_s_g_event); if (unlikely(!__pyx_t_2)) __PYX_ERR(6, 350, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __pyx_t_3 = __Pyx_PyObject_GetAttrStr(__pyx_t_2, __pyx_n_s_set); if (unlikely(!__pyx_t_3)) __PYX_ERR(6, 350, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  __pyx_t_2 = NULL;
  if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_3))) {
    __pyx_t_2 = PyMethod_GET_SELF(__pyx_t_3);
    if (likely(__pyx_t_2)) {
      PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_3);
      __Pyx_INCREF(__pyx_t_2);
      __Pyx_INCREF(function);
      __Pyx_DECREF_SET(__pyx_t_3, function);
    }
  }
  __pyx_t_1 = (__pyx_t_2) ? __Pyx_PyObject_CallOneArg(__pyx_t_3, __pyx_t_2) : __Pyx_PyObject_CallNoArg(__pyx_t_3);
  __Pyx_XDECREF(__pyx_t_2); __pyx_t_2 = 0;
  if (unlikely(!__pyx_t_1)) __PYX_ERR(6, 350, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;

  /* "src/python/grpcio/grpc/_cython/_cygrpc/grpc_gevent.pyx.pxi":349
 *   g_pool.join()
 * 
 * cdef void kick_loop() with gil:             # <<<<<<<<<<<<<<
 *   g_event.set()
 * 
 */

  /* function exit code */
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_XDECREF(__pyx_t_3);
  __Pyx_WriteUnraisable("grpc._cython.cygrpc.kick_loop", __pyx_clineno, __pyx_lineno, __pyx_filename, 1, 0);
  __pyx_L0:;
  __Pyx_RefNannyFinishContext();
  #ifdef WITH_THREAD
  __Pyx_PyGILState_Release(__pyx_gilstate_save);
  #endif
}

/* "src/python/grpcio/grpc/_cython/_cygrpc/grpc_gevent.pyx.pxi":352
 *   g_event.set()
 * 
 * def _run_loop(timeout_ms):             # <<<<<<<<<<<<<<
 *   timeout = timeout_ms / 1000.0
 *   if timeout_ms > 0:
 */

/* Python wrapper */
static PyObject *__pyx_pw_4grpc_7_cython_6cygrpc_79_run_loop(PyObject *__pyx_self, PyObject *__pyx_v_timeout_ms); /*proto*/
static PyMethodDef __pyx_mdef_4grpc_7_cython_6cygrpc_79_run_loop = {"_run_loop", (PyCFunction)__pyx_pw_4grpc_7_cython_6cygrpc_79_run_loop, METH_O, 0};
static PyObject *__pyx_pw_4grpc_7_cython_6cygrpc_79_run_loop(PyObject *__pyx_self, PyObject *__pyx_v_timeout_ms) {
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("_run_loop (wrapper)", 0);
  __pyx_r = __pyx_pf_4grpc_7_cython_6cygrpc_78_run_loop(__pyx_self, ((PyObject *)__pyx_v_timeout_ms));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_4grpc_7_cython_6cygrpc_78_run_loop(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__pyx_v_timeout_ms) {
  PyObject *__pyx_v_timeout = NULL;
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  int __pyx_t_2;
  PyObject *__pyx_t_3 = NULL;
  PyObject *__pyx_t_4 = NULL;
  int __pyx_t_5;
  int __pyx_t_6;
  char const *__pyx_t_7;
  PyObject *__pyx_t_8 = NULL;
  PyObject *__pyx_t_9 = NULL;
  PyObject *__pyx_t_10 = NULL;
  PyObject *__pyx_t_11 = NULL;
  PyObject *__pyx_t_12 = NULL;
  PyObject *__pyx_t_13 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("_run_loop", 0);

  /* "src/python/grpcio/grpc/_cython/_cygrpc/grpc_gevent.pyx.pxi":353
 * 
 * def _run_loop(timeout_ms):
 *   timeout = timeout_ms / 1000.0             # <<<<<<<<<<<<<<
 *   if timeout_ms > 0:
 *     try:
 */
  __pyx_t_1 = __Pyx_PyFloat_DivideObjC(__pyx_v_timeout_ms, __pyx_float_1000_0, 1000.0, 0, 0); if (unlikely(!__pyx_t_1)) __PYX_ERR(6, 353, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_v_timeout = __pyx_t_1;
  __pyx_t_1 = 0;

  /* "src/python/grpcio/grpc/_cython/_cygrpc/grpc_gevent.pyx.pxi":354
 * def _run_loop(timeout_ms):
 *   timeout = timeout_ms / 1000.0
 *   if timeout_ms > 0:             # <<<<<<<<<<<<<<
 *     try:
 *       g_event.wait(timeout)
 */
  __pyx_t_1 = PyObject_RichCompare(__pyx_v_timeout_ms, __pyx_int_0, Py_GT); __Pyx_XGOTREF(__pyx_t_1); if (unlikely(!__pyx_t_1)) __PYX_ERR(6, 354, __pyx_L1_error)
  __pyx_t_2 = __Pyx_PyObject_IsTrue(__pyx_t_1); if (unlikely(__pyx_t_2 < 0)) __PYX_ERR(6, 354, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  if (__pyx_t_2) {

    /* "src/python/grpcio/grpc/_cython/_cygrpc/grpc_gevent.pyx.pxi":355
 *   timeout = timeout_ms / 1000.0
 *   if timeout_ms > 0:
 *     try:             # <<<<<<<<<<<<<<
 *       g_event.wait(timeout)
 *     finally:
 */
    /*try:*/ {

      /* "src/python/grpcio/grpc/_cython/_cygrpc/grpc_gevent.pyx.pxi":356
 *   if timeout_ms > 0:
 *     try:
 *       g_event.wait(timeout)             # <<<<<<<<<<<<<<
 *     finally:
 *       g_event.clear()
 */
      __Pyx_GetModuleGlobalName(__pyx_t_3, __pyx_n_s_g_event); if (unlikely(!__pyx_t_3)) __PYX_ERR(6, 356, __pyx_L5_error)
      __Pyx_GOTREF(__pyx_t_3);
      __pyx_t_4 = __Pyx_PyObject_GetAttrStr(__pyx_t_3, __pyx_n_s_wait); if (unlikely(!__pyx_t_4)) __PYX_ERR(6, 356, __pyx_L5_error)
      __Pyx_GOTREF(__pyx_t_4);
      __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
      __pyx_t_3 = NULL;
      if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_4))) {
        __pyx_t_3 = PyMethod_GET_SELF(__pyx_t_4);
        if (likely(__pyx_t_3)) {
          PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_4);
          __Pyx_INCREF(__pyx_t_3);
          __Pyx_INCREF(function);
          __Pyx_DECREF_SET(__pyx_t_4, function);
        }
      }
      __pyx_t_1 = (__pyx_t_3) ? __Pyx_PyObject_Call2Args(__pyx_t_4, __pyx_t_3, __pyx_v_timeout) : __Pyx_PyObject_CallOneArg(__pyx_t_4, __pyx_v_timeout);
      __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0;
      if (unlikely(!__pyx_t_1)) __PYX_ERR(6, 356, __pyx_L5_error)
      __Pyx_GOTREF(__pyx_t_1);
      __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
      __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
    }

    /* "src/python/grpcio/grpc/_cython/_cygrpc/grpc_gevent.pyx.pxi":358
 *       g_event.wait(timeout)
 *     finally:
 *       g_event.clear()             # <<<<<<<<<<<<<<
 * 
 * cdef grpc_error* run_loop(size_t timeout_ms) with gil:
 */
    /*finally:*/ {
      /*normal exit:*/{
        __Pyx_GetModuleGlobalName(__pyx_t_4, __pyx_n_s_g_event); if (unlikely(!__pyx_t_4)) __PYX_ERR(6, 358, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_4);
        __pyx_t_3 = __Pyx_PyObject_GetAttrStr(__pyx_t_4, __pyx_n_s_clear); if (unlikely(!__pyx_t_3)) __PYX_ERR(6, 358, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_3);
        __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
        __pyx_t_4 = NULL;
        if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_3))) {
          __pyx_t_4 = PyMethod_GET_SELF(__pyx_t_3);
          if (likely(__pyx_t_4)) {
            PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_3);
            __Pyx_INCREF(__pyx_t_4);
            __Pyx_INCREF(function);
            __Pyx_DECREF_SET(__pyx_t_3, function);
          }
        }
        __pyx_t_1 = (__pyx_t_4) ? __Pyx_PyObject_CallOneArg(__pyx_t_3, __pyx_t_4) : __Pyx_PyObject_CallNoArg(__pyx_t_3);
        __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0;
        if (unlikely(!__pyx_t_1)) __PYX_ERR(6, 358, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_1);
        __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
        __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
        goto __pyx_L6;
      }
      __pyx_L5_error:;
      /*exception exit:*/{
        __Pyx_PyThreadState_declare
        __Pyx_PyThreadState_assign
        __pyx_t_8 = 0; __pyx_t_9 = 0; __pyx_t_10 = 0; __pyx_t_11 = 0; __pyx_t_12 = 0; __pyx_t_13 = 0;
        __Pyx_XDECREF(__pyx_t_1); __pyx_t_1 = 0;
        __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0;
        __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0;
        if (PY_MAJOR_VERSION >= 3) __Pyx_ExceptionSwap(&__pyx_t_11, &__pyx_t_12, &__pyx_t_13);
        if ((PY_MAJOR_VERSION < 3) || unlikely(__Pyx_GetException(&__pyx_t_8, &__pyx_t_9, &__pyx_t_10) < 0)) __Pyx_ErrFetch(&__pyx_t_8, &__pyx_t_9, &__pyx_t_10);
        __Pyx_XGOTREF(__pyx_t_8);
        __Pyx_XGOTREF(__pyx_t_9);
        __Pyx_XGOTREF(__pyx_t_10);
        __Pyx_XGOTREF(__pyx_t_11);
        __Pyx_XGOTREF(__pyx_t_12);
        __Pyx_XGOTREF(__pyx_t_13);
        __pyx_t_5 = __pyx_lineno; __pyx_t_6 = __pyx_clineno; __pyx_t_7 = __pyx_filename;
        {
          __Pyx_GetModuleGlobalName(__pyx_t_3, __pyx_n_s_g_event); if (unlikely(!__pyx_t_3)) __PYX_ERR(6, 358, __pyx_L8_error)
          __Pyx_GOTREF(__pyx_t_3);
          __pyx_t_4 = __Pyx_PyObject_GetAttrStr(__pyx_t_3, __pyx_n_s_clear); if (unlikely(!__pyx_t_4)) __PYX_ERR(6, 358, __pyx_L8_error)
          __Pyx_GOTREF(__pyx_t_4);
          __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
          __pyx_t_3 = NULL;
          if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_4))) {
            __pyx_t_3 = PyMethod_GET_SELF(__pyx_t_4);
            if (likely(__pyx_t_3)) {
              PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_4);
              __Pyx_INCREF(__pyx_t_3);
              __Pyx_INCREF(function);
              __Pyx_DECREF_SET(__pyx_t_4, function);
            }
          }
          __pyx_t_1 = (__pyx_t_3) ? __Pyx_PyObject_CallOneArg(__pyx_t_4, __pyx_t_3) : __Pyx_PyObject_CallNoArg(__pyx_t_4);
          __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0;
          if (unlikely(!__pyx_t_1)) __PYX_ERR(6, 358, __pyx_L8_error)
          __Pyx_GOTREF(__pyx_t_1);
          __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
          __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
        }
        if (PY_MAJOR_VERSION >= 3) {
          __Pyx_XGIVEREF(__pyx_t_11);
          __Pyx_XGIVEREF(__pyx_t_12);
          __Pyx_XGIVEREF(__pyx_t_13);
          __Pyx_ExceptionReset(__pyx_t_11, __pyx_t_12, __pyx_t_13);
        }
        __Pyx_XGIVEREF(__pyx_t_8);
        __Pyx_XGIVEREF(__pyx_t_9);
        __Pyx_XGIVEREF(__pyx_t_10);
        __Pyx_ErrRestore(__pyx_t_8, __pyx_t_9, __pyx_t_10);
        __pyx_t_8 = 0; __pyx_t_9 = 0; __pyx_t_10 = 0; __pyx_t_11 = 0; __pyx_t_12 = 0; __pyx_t_13 = 0;
        __pyx_lineno = __pyx_t_5; __pyx_clineno = __pyx_t_6; __pyx_filename = __pyx_t_7;
        goto __pyx_L1_error;
        __pyx_L8_error:;
        if (PY_MAJOR_VERSION >= 3) {
          __Pyx_XGIVEREF(__pyx_t_11);
          __Pyx_XGIVEREF(__pyx_t_12);
          __Pyx_XGIVEREF(__pyx_t_13);
          __Pyx_ExceptionReset(__pyx_t_11, __pyx_t_12, __pyx_t_13);
        }
        __Pyx_XDECREF(__pyx_t_8); __pyx_t_8 = 0;
        __Pyx_XDECREF(__pyx_t_9); __pyx_t_9 = 0;
        __Pyx_XDECREF(__pyx_t_10); __pyx_t_10 = 0;
        __pyx_t_11 = 0; __pyx_t_12 = 0; __pyx_t_13 = 0;
        goto __pyx_L1_error;
      }
      __pyx_L6:;
    }

    /* "src/python/grpcio/grpc/_cython/_cygrpc/grpc_gevent.pyx.pxi":354
 * def _run_loop(timeout_ms):
 *   timeout = timeout_ms / 1000.0
 *   if timeout_ms > 0:             # <<<<<<<<<<<<<<
 *     try:
 *       g_event.wait(timeout)
 */
  }

  /* "src/python/grpcio/grpc/_cython/_cygrpc/grpc_gevent.pyx.pxi":352
 *   g_event.set()
 * 
 * def _run_loop(timeout_ms):             # <<<<<<<<<<<<<<
 *   timeout = timeout_ms / 1000.0
 *   if timeout_ms > 0:
 */

  /* function exit code */
  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_XDECREF(__pyx_t_3);
  __Pyx_XDECREF(__pyx_t_4);
  __Pyx_AddTraceback("grpc._cython.cygrpc._run_loop", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XDECREF(__pyx_v_timeout);
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "src/python/grpcio/grpc/_cython/_cygrpc/grpc_gevent.pyx.pxi":360
 *       g_event.clear()
 * 
 * cdef grpc_error* run_loop(size_t timeout_ms) with gil:             # <<<<<<<<<<<<<<
 *   try:
 *     _run_loop(timeout_ms)
 */

static struct grpc_error *__pyx_f_4grpc_7_cython_6cygrpc_run_loop(size_t __pyx_v_timeout_ms) {
  PyObject *__pyx_v_exc_info = NULL;
  struct grpc_error *__pyx_r;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  PyObject *__pyx_t_2 = NULL;
  PyObject *__pyx_t_3 = NULL;
  PyObject *__pyx_t_4 = NULL;
  PyObject *__pyx_t_5 = NULL;
  PyObject *__pyx_t_6 = NULL;
  PyObject *__pyx_t_7 = NULL;
  int __pyx_t_8;
  PyObject *__pyx_t_9 = NULL;
  PyObject *__pyx_t_10 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  #ifdef WITH_THREAD
  PyGILState_STATE __pyx_gilstate_save = __Pyx_PyGILState_Ensure();
  #endif
  __Pyx_RefNannySetupContext("run_loop", 0);

  /* "src/python/grpcio/grpc/_cython/_cygrpc/grpc_gevent.pyx.pxi":361
 * 
 * cdef grpc_error* run_loop(size_t timeout_ms) with gil:
 *   try:             # <<<<<<<<<<<<<<
 *     _run_loop(timeout_ms)
 *     return grpc_error_none()
 */
  {
    __Pyx_PyThreadState_declare
    __Pyx_PyThreadState_assign
    __Pyx_ExceptionSave(&__pyx_t_1, &__pyx_t_2, &__pyx_t_3);
    __Pyx_XGOTREF(__pyx_t_1);
    __Pyx_XGOTREF(__pyx_t_2);
    __Pyx_XGOTREF(__pyx_t_3);
    /*try:*/ {

      /* "src/python/grpcio/grpc/_cython/_cygrpc/grpc_gevent.pyx.pxi":362
 * cdef grpc_error* run_loop(size_t timeout_ms) with gil:
 *   try:
 *     _run_loop(timeout_ms)             # <<<<<<<<<<<<<<
 *     return grpc_error_none()
 *   except BaseException:
 */
      __Pyx_GetModuleGlobalName(__pyx_t_5, __pyx_n_s_run_loop); if (unlikely(!__pyx_t_5)) __PYX_ERR(6, 362, __pyx_L3_error)
      __Pyx_GOTREF(__pyx_t_5);
      __pyx_t_6 = __Pyx_PyInt_FromSize_t(__pyx_v_timeout_ms); if (unlikely(!__pyx_t_6)) __PYX_ERR(6, 362, __pyx_L3_error)
      __Pyx_GOTREF(__pyx_t_6);
      __pyx_t_7 = NULL;
      if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_5))) {
        __pyx_t_7 = PyMethod_GET_SELF(__pyx_t_5);
        if (likely(__pyx_t_7)) {
          PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_5);
          __Pyx_INCREF(__pyx_t_7);
          __Pyx_INCREF(function);
          __Pyx_DECREF_SET(__pyx_t_5, function);
        }
      }
      __pyx_t_4 = (__pyx_t_7) ? __Pyx_PyObject_Call2Args(__pyx_t_5, __pyx_t_7, __pyx_t_6) : __Pyx_PyObject_CallOneArg(__pyx_t_5, __pyx_t_6);
      __Pyx_XDECREF(__pyx_t_7); __pyx_t_7 = 0;
      __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
      if (unlikely(!__pyx_t_4)) __PYX_ERR(6, 362, __pyx_L3_error)
      __Pyx_GOTREF(__pyx_t_4);
      __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
      __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;

      /* "src/python/grpcio/grpc/_cython/_cygrpc/grpc_gevent.pyx.pxi":363
 *   try:
 *     _run_loop(timeout_ms)
 *     return grpc_error_none()             # <<<<<<<<<<<<<<
 *   except BaseException:
 *     exc_info = sys.exc_info()
 */
      __pyx_r = __pyx_f_4grpc_7_cython_6cygrpc_grpc_error_none();
      goto __pyx_L7_try_return;

      /* "src/python/grpcio/grpc/_cython/_cygrpc/grpc_gevent.pyx.pxi":361
 * 
 * cdef grpc_error* run_loop(size_t timeout_ms) with gil:
 *   try:             # <<<<<<<<<<<<<<
 *     _run_loop(timeout_ms)
 *     return grpc_error_none()
 */
    }
    __pyx_L3_error:;
    __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0;
    __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0;
    __Pyx_XDECREF(__pyx_t_6); __pyx_t_6 = 0;
    __Pyx_XDECREF(__pyx_t_7); __pyx_t_7 = 0;

    /* "src/python/grpcio/grpc/_cython/_cygrpc/grpc_gevent.pyx.pxi":364
 *     _run_loop(timeout_ms)
 *     return grpc_error_none()
 *   except BaseException:             # <<<<<<<<<<<<<<
 *     exc_info = sys.exc_info()
 *     # Avoid running any Python code after setting the exception
 */
    __pyx_t_8 = __Pyx_PyErr_ExceptionMatches(__pyx_builtin_BaseException);
    if (__pyx_t_8) {
      __Pyx_AddTraceback("grpc._cython.cygrpc.run_loop", __pyx_clineno, __pyx_lineno, __pyx_filename);
      if (__Pyx_GetException(&__pyx_t_4, &__pyx_t_5, &__pyx_t_6) < 0) __PYX_ERR(6, 364, __pyx_L5_except_error)
      __Pyx_GOTREF(__pyx_t_4);
      __Pyx_GOTREF(__pyx_t_5);
      __Pyx_GOTREF(__pyx_t_6);

      /* "src/python/grpcio/grpc/_cython/_cygrpc/grpc_gevent.pyx.pxi":365
 *     return grpc_error_none()
 *   except BaseException:
 *     exc_info = sys.exc_info()             # <<<<<<<<<<<<<<
 *     # Avoid running any Python code after setting the exception
 *     cpython.PyErr_SetObject(exc_info[0], exc_info[1])
 */
      __Pyx_GetModuleGlobalName(__pyx_t_9, __pyx_n_s_sys); if (unlikely(!__pyx_t_9)) __PYX_ERR(6, 365, __pyx_L5_except_error)
      __Pyx_GOTREF(__pyx_t_9);
      __pyx_t_10 = __Pyx_PyObject_GetAttrStr(__pyx_t_9, __pyx_n_s_exc_info); if (unlikely(!__pyx_t_10)) __PYX_ERR(6, 365, __pyx_L5_except_error)
      __Pyx_GOTREF(__pyx_t_10);
      __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0;
      __pyx_t_9 = NULL;
      if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_10))) {
        __pyx_t_9 = PyMethod_GET_SELF(__pyx_t_10);
        if (likely(__pyx_t_9)) {
          PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_10);
          __Pyx_INCREF(__pyx_t_9);
          __Pyx_INCREF(function);
          __Pyx_DECREF_SET(__pyx_t_10, function);
        }
      }
      __pyx_t_7 = (__pyx_t_9) ? __Pyx_PyObject_CallOneArg(__pyx_t_10, __pyx_t_9) : __Pyx_PyObject_CallNoArg(__pyx_t_10);
      __Pyx_XDECREF(__pyx_t_9); __pyx_t_9 = 0;
      if (unlikely(!__pyx_t_7)) __PYX_ERR(6, 365, __pyx_L5_except_error)
      __Pyx_GOTREF(__pyx_t_7);
      __Pyx_DECREF(__pyx_t_10); __pyx_t_10 = 0;
      __pyx_v_exc_info = __pyx_t_7;
      __pyx_t_7 = 0;

      /* "src/python/grpcio/grpc/_cython/_cygrpc/grpc_gevent.pyx.pxi":367
 *     exc_info = sys.exc_info()
 *     # Avoid running any Python code after setting the exception
 *     cpython.PyErr_SetObject(exc_info[0], exc_info[1])             # <<<<<<<<<<<<<<
 *     return GRPC_ERROR_CANCELLED
 * 
 */
      __pyx_t_7 = __Pyx_GetItemInt(__pyx_v_exc_info, 0, long, 1, __Pyx_PyInt_From_long, 0, 0, 1); if (unlikely(!__pyx_t_7)) __PYX_ERR(6, 367, __pyx_L5_except_error)
      __Pyx_GOTREF(__pyx_t_7);
      __pyx_t_10 = __Pyx_GetItemInt(__pyx_v_exc_info, 1, long, 1, __Pyx_PyInt_From_long, 0, 0, 1); if (unlikely(!__pyx_t_10)) __PYX_ERR(6, 367, __pyx_L5_except_error)
      __Pyx_GOTREF(__pyx_t_10);
      PyErr_SetObject(__pyx_t_7, __pyx_t_10);
      __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
      __Pyx_DECREF(__pyx_t_10); __pyx_t_10 = 0;

      /* "src/python/grpcio/grpc/_cython/_cygrpc/grpc_gevent.pyx.pxi":368
 *     # Avoid running any Python code after setting the exception
 *     cpython.PyErr_SetObject(exc_info[0], exc_info[1])
 *     return GRPC_ERROR_CANCELLED             # <<<<<<<<<<<<<<
 * 
 * ###############################
 */
      __pyx_r = GRPC_ERROR_CANCELLED;
      __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
      __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
      __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
      goto __pyx_L6_except_return;
    }
    goto __pyx_L5_except_error;
    __pyx_L5_except_error:;

    /* "src/python/grpcio/grpc/_cython/_cygrpc/grpc_gevent.pyx.pxi":361
 * 
 * cdef grpc_error* run_loop(size_t timeout_ms) with gil:
 *   try:             # <<<<<<<<<<<<<<
 *     _run_loop(timeout_ms)
 *     return grpc_error_none()
 */
    __Pyx_XGIVEREF(__pyx_t_1);
    __Pyx_XGIVEREF(__pyx_t_2);
    __Pyx_XGIVEREF(__pyx_t_3);
    __Pyx_ExceptionReset(__pyx_t_1, __pyx_t_2, __pyx_t_3);
    goto __pyx_L1_error;
    __pyx_L7_try_return:;
    __Pyx_XGIVEREF(__pyx_t_1);
    __Pyx_XGIVEREF(__pyx_t_2);
    __Pyx_XGIVEREF(__pyx_t_3);
    __Pyx_ExceptionReset(__pyx_t_1, __pyx_t_2, __pyx_t_3);
    goto __pyx_L0;
    __pyx_L6_except_return:;
    __Pyx_XGIVEREF(__pyx_t_1);
    __Pyx_XGIVEREF(__pyx_t_2);
    __Pyx_XGIVEREF(__pyx_t_3);
    __Pyx_ExceptionReset(__pyx_t_1, __pyx_t_2, __pyx_t_3);
    goto __pyx_L0;
  }

  /* "src/python/grpcio/grpc/_cython/_cygrpc/grpc_gevent.pyx.pxi":360
 *       g_event.clear()
 * 
 * cdef grpc_error* run_loop(size_t timeout_ms) with gil:             # <<<<<<<<<<<<<<
 *   try:
 *     _run_loop(timeout_ms)
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_4);
  __Pyx_XDECREF(__pyx_t_5);
  __Pyx_XDECREF(__pyx_t_6);
  __Pyx_XDECREF(__pyx_t_7);
  __Pyx_XDECREF(__pyx_t_9);
  __Pyx_XDECREF(__pyx_t_10);
  __Pyx_WriteUnraisable("grpc._cython.cygrpc.run_loop", __pyx_clineno, __pyx_lineno, __pyx_filename, 1, 0);
  __pyx_r = 0;
  __pyx_L0:;
  __Pyx_XDECREF(__pyx_v_exc_info);
  __Pyx_RefNannyFinishContext();
  #ifdef WITH_THREAD
  __Pyx_PyGILState_Release(__pyx_gilstate_save);
  #endif
  return __pyx_r;
}

/* "src/python/grpcio/grpc/_cython/_cygrpc/grpc_gevent.pyx.pxi":379
 * cdef grpc_custom_poller_vtable gevent_pollset_vtable
 * 
 * def init_grpc_gevent():             # <<<<<<<<<<<<<<
 *   # Lazily import gevent
 *   global gevent_socket
 */

/* Python wrapper */
static PyObject *__pyx_pw_4grpc_7_cython_6cygrpc_81init_grpc_gevent(PyObject *__pyx_self, CYTHON_UNUSED PyObject *unused); /*proto*/
static PyMethodDef __pyx_mdef_4grpc_7_cython_6cygrpc_81init_grpc_gevent = {"init_grpc_gevent", (PyCFunction)__pyx_pw_4grpc_7_cython_6cygrpc_81init_grpc_gevent, METH_NOARGS, 0};
static PyObject *__pyx_pw_4grpc_7_cython_6cygrpc_81init_grpc_gevent(PyObject *__pyx_self, CYTHON_UNUSED PyObject *unused) {
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("init_grpc_gevent (wrapper)", 0);
  __pyx_r = __pyx_pf_4grpc_7_cython_6cygrpc_80init_grpc_gevent(__pyx_self);

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "src/python/grpcio/grpc/_cython/_cygrpc/grpc_gevent.pyx.pxi":400
 *   g_pool = gevent.pool.Group()
 * 
 *   def cb_func(cb, args):             # <<<<<<<<<<<<<<
 *     _spawn_greenlet(cb, *args)
 *   set_async_callback_func(cb_func)
 */

/* Python wrapper */
static PyObject *__pyx_pw_4grpc_7_cython_6cygrpc_16init_grpc_gevent_1cb_func(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
static PyMethodDef __pyx_mdef_4grpc_7_cython_6cygrpc_16init_grpc_gevent_1cb_func = {"cb_func", (PyCFunction)(void*)(PyCFunctionWithKeywords)__pyx_pw_4grpc_7_cython_6cygrpc_16init_grpc_gevent_1cb_func, METH_VARARGS|METH_KEYWORDS, 0};
static PyObject *__pyx_pw_4grpc_7_cython_6cygrpc_16init_grpc_gevent_1cb_func(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
  PyObject *__pyx_v_cb = 0;
  PyObject *__pyx_v_args = 0;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("cb_func (wrapper)", 0);
  {
    static PyObject **__pyx_pyargnames[] = {&__pyx_n_s_cb,&__pyx_n_s_args,0};
    PyObject* values[2] = {0,0};
    if (unlikely(__pyx_kwds)) {
      Py_ssize_t kw_args;
      const Py_ssize_t pos_args = PyTuple_GET_SIZE(__pyx_args);
      switch (pos_args) {
        case  2: values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
        CYTHON_FALLTHROUGH;
        case  1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
        CYTHON_FALLTHROUGH;
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      kw_args = PyDict_Size(__pyx_kwds);
      switch (pos_args) {
        case  0:
        if (likely((values[0] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_cb)) != 0)) kw_args--;
        else goto __pyx_L5_argtuple_error;
        CYTHON_FALLTHROUGH;
        case  1:
        if (likely((values[1] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_args)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("cb_func", 1, 2, 2, 1); __PYX_ERR(6, 400, __pyx_L3_error)
        }
      }
      if (unlikely(kw_args > 0)) {
        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "cb_func") < 0)) __PYX_ERR(6, 400, __pyx_L3_error)
      }
    } else if (PyTuple_GET_SIZE(__pyx_args) != 2) {
      goto __pyx_L5_argtuple_error;
    } else {
      values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
      values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
    }
    __pyx_v_cb = values[0];
    __pyx_v_args = values[1];
  }
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("cb_func", 1, 2, 2, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(6, 400, __pyx_L3_error)
  __pyx_L3_error:;
  __Pyx_AddTraceback("grpc._cython.cygrpc.init_grpc_gevent.cb_func", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  __pyx_r = __pyx_pf_4grpc_7_cython_6cygrpc_16init_grpc_gevent_cb_func(__pyx_self, __pyx_v_cb, __pyx_v_args);

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_4grpc_7_cython_6cygrpc_16init_grpc_gevent_cb_func(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__pyx_v_cb, PyObject *__pyx_v_args) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  PyObject *__pyx_t_2 = NULL;
  PyObject *__pyx_t_3 = NULL;
  PyObject *__pyx_t_4 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("cb_func", 0);

  /* "src/python/grpcio/grpc/_cython/_cygrpc/grpc_gevent.pyx.pxi":401
 * 
 *   def cb_func(cb, args):
 *     _spawn_greenlet(cb, *args)             # <<<<<<<<<<<<<<
 *   set_async_callback_func(cb_func)
 * 
 */
  __Pyx_GetModuleGlobalName(__pyx_t_1, __pyx_n_s_spawn_greenlet); if (unlikely(!__pyx_t_1)) __PYX_ERR(6, 401, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_t_2 = PyTuple_New(1); if (unlikely(!__pyx_t_2)) __PYX_ERR(6, 401, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __Pyx_INCREF(__pyx_v_cb);
  __Pyx_GIVEREF(__pyx_v_cb);
  PyTuple_SET_ITEM(__pyx_t_2, 0, __pyx_v_cb);
  __pyx_t_3 = __Pyx_PySequence_Tuple(__pyx_v_args); if (unlikely(!__pyx_t_3)) __PYX_ERR(6, 401, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  __pyx_t_4 = PyNumber_Add(__pyx_t_2, __pyx_t_3); if (unlikely(!__pyx_t_4)) __PYX_ERR(6, 401, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_4);
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
  __pyx_t_3 = __Pyx_PyObject_Call(__pyx_t_1, __pyx_t_4, NULL); if (unlikely(!__pyx_t_3)) __PYX_ERR(6, 401, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;

  /* "src/python/grpcio/grpc/_cython/_cygrpc/grpc_gevent.pyx.pxi":400
 *   g_pool = gevent.pool.Group()
 * 
 *   def cb_func(cb, args):             # <<<<<<<<<<<<<<
 *     _spawn_greenlet(cb, *args)
 *   set_async_callback_func(cb_func)
 */

  /* function exit code */
  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_XDECREF(__pyx_t_3);
  __Pyx_XDECREF(__pyx_t_4);
  __Pyx_AddTraceback("grpc._cython.cygrpc.init_grpc_gevent.cb_func", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "src/python/grpcio/grpc/_cython/_cygrpc/grpc_gevent.pyx.pxi":379
 * cdef grpc_custom_poller_vtable gevent_pollset_vtable
 * 
 * def init_grpc_gevent():             # <<<<<<<<<<<<<<
 *   # Lazily import gevent
 *   global gevent_socket
 */

static PyObject *__pyx_pf_4grpc_7_cython_6cygrpc_80init_grpc_gevent(CYTHON_UNUSED PyObject *__pyx_self) {
  PyObject *__pyx_v_gevent = NULL;
  PyObject *__pyx_v_cb_func = 0;
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  PyObject *__pyx_t_2 = NULL;
  PyObject *__pyx_t_3 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("init_grpc_gevent", 0);

  /* "src/python/grpcio/grpc/_cython/_cygrpc/grpc_gevent.pyx.pxi":387
 *   global g_event
 *   global g_pool
 *   import gevent             # <<<<<<<<<<<<<<
 *   gevent_g = gevent
 *   import gevent.socket
 */
  __pyx_t_1 = __Pyx_Import(__pyx_n_s_gevent, 0, -1); if (unlikely(!__pyx_t_1)) __PYX_ERR(6, 387, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_v_gevent = __pyx_t_1;
  __pyx_t_1 = 0;

  /* "src/python/grpcio/grpc/_cython/_cygrpc/grpc_gevent.pyx.pxi":388
 *   global g_pool
 *   import gevent
 *   gevent_g = gevent             # <<<<<<<<<<<<<<
 *   import gevent.socket
 *   gevent_socket = gevent.socket
 */
  if (PyDict_SetItem(__pyx_d, __pyx_n_s_gevent_g, __pyx_v_gevent) < 0) __PYX_ERR(6, 388, __pyx_L1_error)

  /* "src/python/grpcio/grpc/_cython/_cygrpc/grpc_gevent.pyx.pxi":389
 *   import gevent
 *   gevent_g = gevent
 *   import gevent.socket             # <<<<<<<<<<<<<<
 *   gevent_socket = gevent.socket
 *   import gevent.hub
 */
  __pyx_t_1 = __Pyx_Import(__pyx_n_s_gevent_socket_2, 0, -1); if (unlikely(!__pyx_t_1)) __PYX_ERR(6, 389, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_DECREF_SET(__pyx_v_gevent, __pyx_t_1);
  __pyx_t_1 = 0;

  /* "src/python/grpcio/grpc/_cython/_cygrpc/grpc_gevent.pyx.pxi":390
 *   gevent_g = gevent
 *   import gevent.socket
 *   gevent_socket = gevent.socket             # <<<<<<<<<<<<<<
 *   import gevent.hub
 *   gevent_hub = gevent.hub
 */
  __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_v_gevent, __pyx_n_s_socket); if (unlikely(!__pyx_t_1)) __PYX_ERR(6, 390, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  if (PyDict_SetItem(__pyx_d, __pyx_n_s_gevent_socket, __pyx_t_1) < 0) __PYX_ERR(6, 390, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;

  /* "src/python/grpcio/grpc/_cython/_cygrpc/grpc_gevent.pyx.pxi":391
 *   import gevent.socket
 *   gevent_socket = gevent.socket
 *   import gevent.hub             # <<<<<<<<<<<<<<
 *   gevent_hub = gevent.hub
 *   import gevent.event
 */
  __pyx_t_1 = __Pyx_Import(__pyx_n_s_gevent_hub_2, 0, -1); if (unlikely(!__pyx_t_1)) __PYX_ERR(6, 391, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_DECREF_SET(__pyx_v_gevent, __pyx_t_1);
  __pyx_t_1 = 0;

  /* "src/python/grpcio/grpc/_cython/_cygrpc/grpc_gevent.pyx.pxi":392
 *   gevent_socket = gevent.socket
 *   import gevent.hub
 *   gevent_hub = gevent.hub             # <<<<<<<<<<<<<<
 *   import gevent.event
 *   gevent_event = gevent.event
 */
  __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_v_gevent, __pyx_n_s_hub); if (unlikely(!__pyx_t_1)) __PYX_ERR(6, 392, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  if (PyDict_SetItem(__pyx_d, __pyx_n_s_gevent_hub, __pyx_t_1) < 0) __PYX_ERR(6, 392, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;

  /* "src/python/grpcio/grpc/_cython/_cygrpc/grpc_gevent.pyx.pxi":393
 *   import gevent.hub
 *   gevent_hub = gevent.hub
 *   import gevent.event             # <<<<<<<<<<<<<<
 *   gevent_event = gevent.event
 *   import gevent.pool
 */
  __pyx_t_1 = __Pyx_Import(__pyx_n_s_gevent_event_2, 0, -1); if (unlikely(!__pyx_t_1)) __PYX_ERR(6, 393, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_DECREF_SET(__pyx_v_gevent, __pyx_t_1);
  __pyx_t_1 = 0;

  /* "src/python/grpcio/grpc/_cython/_cygrpc/grpc_gevent.pyx.pxi":394
 *   gevent_hub = gevent.hub
 *   import gevent.event
 *   gevent_event = gevent.event             # <<<<<<<<<<<<<<
 *   import gevent.pool
 * 
 */
  __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_v_gevent, __pyx_n_s_event); if (unlikely(!__pyx_t_1)) __PYX_ERR(6, 394, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  if (PyDict_SetItem(__pyx_d, __pyx_n_s_gevent_event, __pyx_t_1) < 0) __PYX_ERR(6, 394, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;

  /* "src/python/grpcio/grpc/_cython/_cygrpc/grpc_gevent.pyx.pxi":395
 *   import gevent.event
 *   gevent_event = gevent.event
 *   import gevent.pool             # <<<<<<<<<<<<<<
 * 
 *   g_event = gevent.event.Event()
 */
  __pyx_t_1 = __Pyx_Import(__pyx_n_s_gevent_pool, 0, -1); if (unlikely(!__pyx_t_1)) __PYX_ERR(6, 395, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_DECREF_SET(__pyx_v_gevent, __pyx_t_1);
  __pyx_t_1 = 0;

  /* "src/python/grpcio/grpc/_cython/_cygrpc/grpc_gevent.pyx.pxi":397
 *   import gevent.pool
 * 
 *   g_event = gevent.event.Event()             # <<<<<<<<<<<<<<
 *   g_pool = gevent.pool.Group()
 * 
 */
  __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_v_gevent, __pyx_n_s_event); if (unlikely(!__pyx_t_2)) __PYX_ERR(6, 397, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __pyx_t_3 = __Pyx_PyObject_GetAttrStr(__pyx_t_2, __pyx_n_s_Event); if (unlikely(!__pyx_t_3)) __PYX_ERR(6, 397, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  __pyx_t_2 = NULL;
  if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_3))) {
    __pyx_t_2 = PyMethod_GET_SELF(__pyx_t_3);
    if (likely(__pyx_t_2)) {
      PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_3);
      __Pyx_INCREF(__pyx_t_2);
      __Pyx_INCREF(function);
      __Pyx_DECREF_SET(__pyx_t_3, function);
    }
  }
  __pyx_t_1 = (__pyx_t_2) ? __Pyx_PyObject_CallOneArg(__pyx_t_3, __pyx_t_2) : __Pyx_PyObject_CallNoArg(__pyx_t_3);
  __Pyx_XDECREF(__pyx_t_2); __pyx_t_2 = 0;
  if (unlikely(!__pyx_t_1)) __PYX_ERR(6, 397, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
  if (PyDict_SetItem(__pyx_d, __pyx_n_s_g_event, __pyx_t_1) < 0) __PYX_ERR(6, 397, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;

  /* "src/python/grpcio/grpc/_cython/_cygrpc/grpc_gevent.pyx.pxi":398
 * 
 *   g_event = gevent.event.Event()
 *   g_pool = gevent.pool.Group()             # <<<<<<<<<<<<<<
 * 
 *   def cb_func(cb, args):
 */
  __pyx_t_3 = __Pyx_PyObject_GetAttrStr(__pyx_v_gevent, __pyx_n_s_pool); if (unlikely(!__pyx_t_3)) __PYX_ERR(6, 398, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_t_3, __pyx_n_s_Group); if (unlikely(!__pyx_t_2)) __PYX_ERR(6, 398, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
  __pyx_t_3 = NULL;
  if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_2))) {
    __pyx_t_3 = PyMethod_GET_SELF(__pyx_t_2);
    if (likely(__pyx_t_3)) {
      PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_2);
      __Pyx_INCREF(__pyx_t_3);
      __Pyx_INCREF(function);
      __Pyx_DECREF_SET(__pyx_t_2, function);
    }
  }
  __pyx_t_1 = (__pyx_t_3) ? __Pyx_PyObject_CallOneArg(__pyx_t_2, __pyx_t_3) : __Pyx_PyObject_CallNoArg(__pyx_t_2);
  __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0;
  if (unlikely(!__pyx_t_1)) __PYX_ERR(6, 398, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  if (PyDict_SetItem(__pyx_d, __pyx_n_s_g_pool, __pyx_t_1) < 0) __PYX_ERR(6, 398, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;

  /* "src/python/grpcio/grpc/_cython/_cygrpc/grpc_gevent.pyx.pxi":400
 *   g_pool = gevent.pool.Group()
 * 
 *   def cb_func(cb, args):             # <<<<<<<<<<<<<<
 *     _spawn_greenlet(cb, *args)
 *   set_async_callback_func(cb_func)
 */
  __pyx_t_1 = __Pyx_CyFunction_New(&__pyx_mdef_4grpc_7_cython_6cygrpc_16init_grpc_gevent_1cb_func, 0, __pyx_n_s_init_grpc_gevent_locals_cb_func, NULL, __pyx_n_s_grpc__cython_cygrpc, __pyx_d, ((PyObject *)__pyx_codeobj__131)); if (unlikely(!__pyx_t_1)) __PYX_ERR(6, 400, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_v_cb_func = __pyx_t_1;
  __pyx_t_1 = 0;

  /* "src/python/grpcio/grpc/_cython/_cygrpc/grpc_gevent.pyx.pxi":402
 *   def cb_func(cb, args):
 *     _spawn_greenlet(cb, *args)
 *   set_async_callback_func(cb_func)             # <<<<<<<<<<<<<<
 * 
 *   gevent_resolver_vtable.resolve = socket_resolve
 */
  __Pyx_GetModuleGlobalName(__pyx_t_2, __pyx_n_s_set_async_callback_func); if (unlikely(!__pyx_t_2)) __PYX_ERR(6, 402, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __pyx_t_3 = NULL;
  if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_2))) {
    __pyx_t_3 = PyMethod_GET_SELF(__pyx_t_2);
    if (likely(__pyx_t_3)) {
      PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_2);
      __Pyx_INCREF(__pyx_t_3);
      __Pyx_INCREF(function);
      __Pyx_DECREF_SET(__pyx_t_2, function);
    }
  }
  __pyx_t_1 = (__pyx_t_3) ? __Pyx_PyObject_Call2Args(__pyx_t_2, __pyx_t_3, __pyx_v_cb_func) : __Pyx_PyObject_CallOneArg(__pyx_t_2, __pyx_v_cb_func);
  __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0;
  if (unlikely(!__pyx_t_1)) __PYX_ERR(6, 402, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;

  /* "src/python/grpcio/grpc/_cython/_cygrpc/grpc_gevent.pyx.pxi":404
 *   set_async_callback_func(cb_func)
 * 
 *   gevent_resolver_vtable.resolve = socket_resolve             # <<<<<<<<<<<<<<
 *   gevent_resolver_vtable.resolve_async = socket_resolve_async
 * 
 */
  __pyx_v_4grpc_7_cython_6cygrpc_gevent_resolver_vtable.resolve = __pyx_f_4grpc_7_cython_6cygrpc_socket_resolve;

  /* "src/python/grpcio/grpc/_cython/_cygrpc/grpc_gevent.pyx.pxi":405
 * 
 *   gevent_resolver_vtable.resolve = socket_resolve
 *   gevent_resolver_vtable.resolve_async = socket_resolve_async             # <<<<<<<<<<<<<<
 * 
 *   gevent_socket_vtable.init = socket_init
 */
  __pyx_v_4grpc_7_cython_6cygrpc_gevent_resolver_vtable.resolve_async = __pyx_f_4grpc_7_cython_6cygrpc_socket_resolve_async;

  /* "src/python/grpcio/grpc/_cython/_cygrpc/grpc_gevent.pyx.pxi":407
 *   gevent_resolver_vtable.resolve_async = socket_resolve_async
 * 
 *   gevent_socket_vtable.init = socket_init             # <<<<<<<<<<<<<<
 *   gevent_socket_vtable.connect = socket_connect
 *   gevent_socket_vtable.destroy = socket_destroy
 */
  __pyx_v_4grpc_7_cython_6cygrpc_gevent_socket_vtable.init = __pyx_f_4grpc_7_cython_6cygrpc_socket_init;

  /* "src/python/grpcio/grpc/_cython/_cygrpc/grpc_gevent.pyx.pxi":408
 * 
 *   gevent_socket_vtable.init = socket_init
 *   gevent_socket_vtable.connect = socket_connect             # <<<<<<<<<<<<<<
 *   gevent_socket_vtable.destroy = socket_destroy
 *   gevent_socket_vtable.shutdown = socket_shutdown
 */
  __pyx_v_4grpc_7_cython_6cygrpc_gevent_socket_vtable.connect = __pyx_f_4grpc_7_cython_6cygrpc_socket_connect;

  /* "src/python/grpcio/grpc/_cython/_cygrpc/grpc_gevent.pyx.pxi":409
 *   gevent_socket_vtable.init = socket_init
 *   gevent_socket_vtable.connect = socket_connect
 *   gevent_socket_vtable.destroy = socket_destroy             # <<<<<<<<<<<<<<
 *   gevent_socket_vtable.shutdown = socket_shutdown
 *   gevent_socket_vtable.close = socket_close
 */
  __pyx_v_4grpc_7_cython_6cygrpc_gevent_socket_vtable.destroy = __pyx_f_4grpc_7_cython_6cygrpc_socket_destroy;

  /* "src/python/grpcio/grpc/_cython/_cygrpc/grpc_gevent.pyx.pxi":410
 *   gevent_socket_vtable.connect = socket_connect
 *   gevent_socket_vtable.destroy = socket_destroy
 *   gevent_socket_vtable.shutdown = socket_shutdown             # <<<<<<<<<<<<<<
 *   gevent_socket_vtable.close = socket_close
 *   gevent_socket_vtable.write = socket_write
 */
  __pyx_v_4grpc_7_cython_6cygrpc_gevent_socket_vtable.shutdown = __pyx_f_4grpc_7_cython_6cygrpc_socket_shutdown;

  /* "src/python/grpcio/grpc/_cython/_cygrpc/grpc_gevent.pyx.pxi":411
 *   gevent_socket_vtable.destroy = socket_destroy
 *   gevent_socket_vtable.shutdown = socket_shutdown
 *   gevent_socket_vtable.close = socket_close             # <<<<<<<<<<<<<<
 *   gevent_socket_vtable.write = socket_write
 *   gevent_socket_vtable.read = socket_read
 */
  __pyx_v_4grpc_7_cython_6cygrpc_gevent_socket_vtable.close = __pyx_f_4grpc_7_cython_6cygrpc_socket_close;

  /* "src/python/grpcio/grpc/_cython/_cygrpc/grpc_gevent.pyx.pxi":412
 *   gevent_socket_vtable.shutdown = socket_shutdown
 *   gevent_socket_vtable.close = socket_close
 *   gevent_socket_vtable.write = socket_write             # <<<<<<<<<<<<<<
 *   gevent_socket_vtable.read = socket_read
 *   gevent_socket_vtable.getpeername = socket_getpeername
 */
  __pyx_v_4grpc_7_cython_6cygrpc_gevent_socket_vtable.write = __pyx_f_4grpc_7_cython_6cygrpc_socket_write;

  /* "src/python/grpcio/grpc/_cython/_cygrpc/grpc_gevent.pyx.pxi":413
 *   gevent_socket_vtable.close = socket_close
 *   gevent_socket_vtable.write = socket_write
 *   gevent_socket_vtable.read = socket_read             # <<<<<<<<<<<<<<
 *   gevent_socket_vtable.getpeername = socket_getpeername
 *   gevent_socket_vtable.getsockname = socket_getsockname
 */
  __pyx_v_4grpc_7_cython_6cygrpc_gevent_socket_vtable.read = __pyx_f_4grpc_7_cython_6cygrpc_socket_read;

  /* "src/python/grpcio/grpc/_cython/_cygrpc/grpc_gevent.pyx.pxi":414
 *   gevent_socket_vtable.write = socket_write
 *   gevent_socket_vtable.read = socket_read
 *   gevent_socket_vtable.getpeername = socket_getpeername             # <<<<<<<<<<<<<<
 *   gevent_socket_vtable.getsockname = socket_getsockname
 *   gevent_socket_vtable.bind = socket_bind
 */
  __pyx_v_4grpc_7_cython_6cygrpc_gevent_socket_vtable.getpeername = __pyx_f_4grpc_7_cython_6cygrpc_socket_getpeername;

  /* "src/python/grpcio/grpc/_cython/_cygrpc/grpc_gevent.pyx.pxi":415
 *   gevent_socket_vtable.read = socket_read
 *   gevent_socket_vtable.getpeername = socket_getpeername
 *   gevent_socket_vtable.getsockname = socket_getsockname             # <<<<<<<<<<<<<<
 *   gevent_socket_vtable.bind = socket_bind
 *   gevent_socket_vtable.listen = socket_listen
 */
  __pyx_v_4grpc_7_cython_6cygrpc_gevent_socket_vtable.getsockname = __pyx_f_4grpc_7_cython_6cygrpc_socket_getsockname;

  /* "src/python/grpcio/grpc/_cython/_cygrpc/grpc_gevent.pyx.pxi":416
 *   gevent_socket_vtable.getpeername = socket_getpeername
 *   gevent_socket_vtable.getsockname = socket_getsockname
 *   gevent_socket_vtable.bind = socket_bind             # <<<<<<<<<<<<<<
 *   gevent_socket_vtable.listen = socket_listen
 *   gevent_socket_vtable.accept = socket_accept
 */
  __pyx_v_4grpc_7_cython_6cygrpc_gevent_socket_vtable.bind = __pyx_f_4grpc_7_cython_6cygrpc_socket_bind;

  /* "src/python/grpcio/grpc/_cython/_cygrpc/grpc_gevent.pyx.pxi":417
 *   gevent_socket_vtable.getsockname = socket_getsockname
 *   gevent_socket_vtable.bind = socket_bind
 *   gevent_socket_vtable.listen = socket_listen             # <<<<<<<<<<<<<<
 *   gevent_socket_vtable.accept = socket_accept
 * 
 */
  __pyx_v_4grpc_7_cython_6cygrpc_gevent_socket_vtable.listen = __pyx_f_4grpc_7_cython_6cygrpc_socket_listen;

  /* "src/python/grpcio/grpc/_cython/_cygrpc/grpc_gevent.pyx.pxi":418
 *   gevent_socket_vtable.bind = socket_bind
 *   gevent_socket_vtable.listen = socket_listen
 *   gevent_socket_vtable.accept = socket_accept             # <<<<<<<<<<<<<<
 * 
 *   gevent_timer_vtable.start = timer_start
 */
  __pyx_v_4grpc_7_cython_6cygrpc_gevent_socket_vtable.accept = __pyx_f_4grpc_7_cython_6cygrpc_socket_accept;

  /* "src/python/grpcio/grpc/_cython/_cygrpc/grpc_gevent.pyx.pxi":420
 *   gevent_socket_vtable.accept = socket_accept
 * 
 *   gevent_timer_vtable.start = timer_start             # <<<<<<<<<<<<<<
 *   gevent_timer_vtable.stop = timer_stop
 * 
 */
  __pyx_v_4grpc_7_cython_6cygrpc_gevent_timer_vtable.start = __pyx_f_4grpc_7_cython_6cygrpc_timer_start;

  /* "src/python/grpcio/grpc/_cython/_cygrpc/grpc_gevent.pyx.pxi":421
 * 
 *   gevent_timer_vtable.start = timer_start
 *   gevent_timer_vtable.stop = timer_stop             # <<<<<<<<<<<<<<
 * 
 *   gevent_pollset_vtable.init = init_loop
 */
  __pyx_v_4grpc_7_cython_6cygrpc_gevent_timer_vtable.stop = __pyx_f_4grpc_7_cython_6cygrpc_timer_stop;

  /* "src/python/grpcio/grpc/_cython/_cygrpc/grpc_gevent.pyx.pxi":423
 *   gevent_timer_vtable.stop = timer_stop
 * 
 *   gevent_pollset_vtable.init = init_loop             # <<<<<<<<<<<<<<
 *   gevent_pollset_vtable.poll = run_loop
 *   gevent_pollset_vtable.kick = kick_loop
 */
  __pyx_v_4grpc_7_cython_6cygrpc_gevent_pollset_vtable.init = __pyx_f_4grpc_7_cython_6cygrpc_init_loop;

  /* "src/python/grpcio/grpc/_cython/_cygrpc/grpc_gevent.pyx.pxi":424
 * 
 *   gevent_pollset_vtable.init = init_loop
 *   gevent_pollset_vtable.poll = run_loop             # <<<<<<<<<<<<<<
 *   gevent_pollset_vtable.kick = kick_loop
 *   gevent_pollset_vtable.shutdown = destroy_loop
 */
  __pyx_v_4grpc_7_cython_6cygrpc_gevent_pollset_vtable.poll = __pyx_f_4grpc_7_cython_6cygrpc_run_loop;

  /* "src/python/grpcio/grpc/_cython/_cygrpc/grpc_gevent.pyx.pxi":425
 *   gevent_pollset_vtable.init = init_loop
 *   gevent_pollset_vtable.poll = run_loop
 *   gevent_pollset_vtable.kick = kick_loop             # <<<<<<<<<<<<<<
 *   gevent_pollset_vtable.shutdown = destroy_loop
 * 
 */
  __pyx_v_4grpc_7_cython_6cygrpc_gevent_pollset_vtable.kick = __pyx_f_4grpc_7_cython_6cygrpc_kick_loop;

  /* "src/python/grpcio/grpc/_cython/_cygrpc/grpc_gevent.pyx.pxi":426
 *   gevent_pollset_vtable.poll = run_loop
 *   gevent_pollset_vtable.kick = kick_loop
 *   gevent_pollset_vtable.shutdown = destroy_loop             # <<<<<<<<<<<<<<
 * 
 *   grpc_custom_iomgr_init(&gevent_socket_vtable,
 */
  __pyx_v_4grpc_7_cython_6cygrpc_gevent_pollset_vtable.shutdown = __pyx_f_4grpc_7_cython_6cygrpc_destroy_loop;

  /* "src/python/grpcio/grpc/_cython/_cygrpc/grpc_gevent.pyx.pxi":428
 *   gevent_pollset_vtable.shutdown = destroy_loop
 * 
 *   grpc_custom_iomgr_init(&gevent_socket_vtable,             # <<<<<<<<<<<<<<
 *                          &gevent_resolver_vtable,
 *                          &gevent_timer_vtable,
 */
  grpc_custom_iomgr_init((&__pyx_v_4grpc_7_cython_6cygrpc_gevent_socket_vtable), (&__pyx_v_4grpc_7_cython_6cygrpc_gevent_resolver_vtable), (&__pyx_v_4grpc_7_cython_6cygrpc_gevent_timer_vtable), (&__pyx_v_4grpc_7_cython_6cygrpc_gevent_pollset_vtable));

  /* "src/python/grpcio/grpc/_cython/_cygrpc/grpc_gevent.pyx.pxi":379
 * cdef grpc_custom_poller_vtable gevent_pollset_vtable
 * 
 * def init_grpc_gevent():             # <<<<<<<<<<<<<<
 *   # Lazily import gevent
 *   global gevent_socket
 */

  /* function exit code */
  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_XDECREF(__pyx_t_3);
  __Pyx_AddTraceback("grpc._cython.cygrpc.init_grpc_gevent", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XDECREF(__pyx_v_gevent);
  __Pyx_XDECREF(__pyx_v_cb_func);
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "src/python/grpcio/grpc/_cython/_cygrpc/thread.pyx.pxi":15
 * # limitations under the License.
 * 
 * def _contextvars_supported():             # <<<<<<<<<<<<<<
 *     """Determines if the contextvars module is supported.
 * 
 */

/* Python wrapper */
static PyObject *__pyx_pw_4grpc_7_cython_6cygrpc_83_contextvars_supported(PyObject *__pyx_self, CYTHON_UNUSED PyObject *unused); /*proto*/
static char __pyx_doc_4grpc_7_cython_6cygrpc_82_contextvars_supported[] = "Determines if the contextvars module is supported.\n\n    We use a 'try it and see if it works approach' here rather than predicting\n    based on interpreter version in order to support older interpreters that\n    may have a backported module based on, e.g. `threading.local`.\n\n    Returns:\n      A bool indicating whether `contextvars` are supported in the current\n      environment.\n    ";
static PyMethodDef __pyx_mdef_4grpc_7_cython_6cygrpc_83_contextvars_supported = {"_contextvars_supported", (PyCFunction)__pyx_pw_4grpc_7_cython_6cygrpc_83_contextvars_supported, METH_NOARGS, __pyx_doc_4grpc_7_cython_6cygrpc_82_contextvars_supported};
static PyObject *__pyx_pw_4grpc_7_cython_6cygrpc_83_contextvars_supported(PyObject *__pyx_self, CYTHON_UNUSED PyObject *unused) {
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("_contextvars_supported (wrapper)", 0);
  __pyx_r = __pyx_pf_4grpc_7_cython_6cygrpc_82_contextvars_supported(__pyx_self);

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_4grpc_7_cython_6cygrpc_82_contextvars_supported(CYTHON_UNUSED PyObject *__pyx_self) {
  CYTHON_UNUSED PyObject *__pyx_v_contextvars = NULL;
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  PyObject *__pyx_t_2 = NULL;
  PyObject *__pyx_t_3 = NULL;
  PyObject *__pyx_t_4 = NULL;
  int __pyx_t_5;
  PyObject *__pyx_t_6 = NULL;
  PyObject *__pyx_t_7 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("_contextvars_supported", 0);

  /* "src/python/grpcio/grpc/_cython/_cygrpc/thread.pyx.pxi":26
 *       environment.
 *     """
 *     try:             # <<<<<<<<<<<<<<
 *         import contextvars
 *         return True
 */
  {
    __Pyx_PyThreadState_declare
    __Pyx_PyThreadState_assign
    __Pyx_ExceptionSave(&__pyx_t_1, &__pyx_t_2, &__pyx_t_3);
    __Pyx_XGOTREF(__pyx_t_1);
    __Pyx_XGOTREF(__pyx_t_2);
    __Pyx_XGOTREF(__pyx_t_3);
    /*try:*/ {

      /* "src/python/grpcio/grpc/_cython/_cygrpc/thread.pyx.pxi":27
 *     """
 *     try:
 *         import contextvars             # <<<<<<<<<<<<<<
 *         return True
 *     except ImportError:
 */
      __pyx_t_4 = __Pyx_Import(__pyx_n_s_contextvars, 0, -1); if (unlikely(!__pyx_t_4)) __PYX_ERR(28, 27, __pyx_L3_error)
      __Pyx_GOTREF(__pyx_t_4);
      __pyx_v_contextvars = __pyx_t_4;
      __pyx_t_4 = 0;

      /* "src/python/grpcio/grpc/_cython/_cygrpc/thread.pyx.pxi":28
 *     try:
 *         import contextvars
 *         return True             # <<<<<<<<<<<<<<
 *     except ImportError:
 *         return False
 */
      __Pyx_XDECREF(__pyx_r);
      __Pyx_INCREF(Py_True);
      __pyx_r = Py_True;
      goto __pyx_L7_try_return;

      /* "src/python/grpcio/grpc/_cython/_cygrpc/thread.pyx.pxi":26
 *       environment.
 *     """
 *     try:             # <<<<<<<<<<<<<<
 *         import contextvars
 *         return True
 */
    }
    __pyx_L3_error:;
    __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0;

    /* "src/python/grpcio/grpc/_cython/_cygrpc/thread.pyx.pxi":29
 *         import contextvars
 *         return True
 *     except ImportError:             # <<<<<<<<<<<<<<
 *         return False
 * 
 */
    __pyx_t_5 = __Pyx_PyErr_ExceptionMatches(__pyx_builtin_ImportError);
    if (__pyx_t_5) {
      __Pyx_AddTraceback("grpc._cython.cygrpc._contextvars_supported", __pyx_clineno, __pyx_lineno, __pyx_filename);
      if (__Pyx_GetException(&__pyx_t_4, &__pyx_t_6, &__pyx_t_7) < 0) __PYX_ERR(28, 29, __pyx_L5_except_error)
      __Pyx_GOTREF(__pyx_t_4);
      __Pyx_GOTREF(__pyx_t_6);
      __Pyx_GOTREF(__pyx_t_7);

      /* "src/python/grpcio/grpc/_cython/_cygrpc/thread.pyx.pxi":30
 *         return True
 *     except ImportError:
 *         return False             # <<<<<<<<<<<<<<
 * 
 * 
 */
      __Pyx_XDECREF(__pyx_r);
      __Pyx_INCREF(Py_False);
      __pyx_r = Py_False;
      __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
      __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
      __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
      goto __pyx_L6_except_return;
    }
    goto __pyx_L5_except_error;
    __pyx_L5_except_error:;

    /* "src/python/grpcio/grpc/_cython/_cygrpc/thread.pyx.pxi":26
 *       environment.
 *     """
 *     try:             # <<<<<<<<<<<<<<
 *         import contextvars
 *         return True
 */
    __Pyx_XGIVEREF(__pyx_t_1);
    __Pyx_XGIVEREF(__pyx_t_2);
    __Pyx_XGIVEREF(__pyx_t_3);
    __Pyx_ExceptionReset(__pyx_t_1, __pyx_t_2, __pyx_t_3);
    goto __pyx_L1_error;
    __pyx_L7_try_return:;
    __Pyx_XGIVEREF(__pyx_t_1);
    __Pyx_XGIVEREF(__pyx_t_2);
    __Pyx_XGIVEREF(__pyx_t_3);
    __Pyx_ExceptionReset(__pyx_t_1, __pyx_t_2, __pyx_t_3);
    goto __pyx_L0;
    __pyx_L6_except_return:;
    __Pyx_XGIVEREF(__pyx_t_1);
    __Pyx_XGIVEREF(__pyx_t_2);
    __Pyx_XGIVEREF(__pyx_t_3);
    __Pyx_ExceptionReset(__pyx_t_1, __pyx_t_2, __pyx_t_3);
    goto __pyx_L0;
  }

  /* "src/python/grpcio/grpc/_cython/_cygrpc/thread.pyx.pxi":15
 * # limitations under the License.
 * 
 * def _contextvars_supported():             # <<<<<<<<<<<<<<
 *     """Determines if the contextvars module is supported.
 * 
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_4);
  __Pyx_XDECREF(__pyx_t_6);
  __Pyx_XDECREF(__pyx_t_7);
  __Pyx_AddTraceback("grpc._cython.cygrpc._contextvars_supported", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XDECREF(__pyx_v_contextvars);
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "src/python/grpcio/grpc/_cython/_cygrpc/thread.pyx.pxi":33
 * 
 * 
 * def _run_with_context(target):             # <<<<<<<<<<<<<<
 *     """Runs a callable with contextvars propagated.
 * 
 */

/* Python wrapper */
static PyObject *__pyx_pw_4grpc_7_cython_6cygrpc_85_run_with_context(PyObject *__pyx_self, PyObject *__pyx_v_target); /*proto*/
static char __pyx_doc_4grpc_7_cython_6cygrpc_84_run_with_context[] = "Runs a callable with contextvars propagated.\n\n    If contextvars are supported, the calling thread's context will be copied\n    and propagated. If they are not supported, this function is equivalent\n    to the identity function.\n\n    Args:\n      target: A callable object to wrap.\n    Returns:\n      A callable object with the same signature as `target` but with\n        contextvars propagated.\n    ";
static PyMethodDef __pyx_mdef_4grpc_7_cython_6cygrpc_85_run_with_context = {"_run_with_context", (PyCFunction)__pyx_pw_4grpc_7_cython_6cygrpc_85_run_with_context, METH_O, __pyx_doc_4grpc_7_cython_6cygrpc_84_run_with_context};
static PyObject *__pyx_pw_4grpc_7_cython_6cygrpc_85_run_with_context(PyObject *__pyx_self, PyObject *__pyx_v_target) {
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("_run_with_context (wrapper)", 0);
  __pyx_r = __pyx_pf_4grpc_7_cython_6cygrpc_84_run_with_context(__pyx_self, ((PyObject *)__pyx_v_target));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_4grpc_7_cython_6cygrpc_84_run_with_context(CYTHON_UNUSED PyObject *__pyx_self, CYTHON_UNUSED PyObject *__pyx_v_target) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("_run_with_context", 0);

  /* function exit code */
  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "src/python/grpcio/grpc/_cython/_cygrpc/thread.pyx.pxi":50
 * if _contextvars_supported():
 *     import contextvars
 *     def _run_with_context(target):             # <<<<<<<<<<<<<<
 *         ctx = contextvars.copy_context()
 *         def _run(*args):
 */

/* Python wrapper */
static PyObject *__pyx_pw_4grpc_7_cython_6cygrpc_87_run_with_context(PyObject *__pyx_self, PyObject *__pyx_v_target); /*proto*/
static PyMethodDef __pyx_mdef_4grpc_7_cython_6cygrpc_87_run_with_context = {"_run_with_context", (PyCFunction)__pyx_pw_4grpc_7_cython_6cygrpc_87_run_with_context, METH_O, 0};
static PyObject *__pyx_pw_4grpc_7_cython_6cygrpc_87_run_with_context(PyObject *__pyx_self, PyObject *__pyx_v_target) {
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("_run_with_context (wrapper)", 0);
  __pyx_r = __pyx_pf_4grpc_7_cython_6cygrpc_86_run_with_context(__pyx_self, ((PyObject *)__pyx_v_target));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "src/python/grpcio/grpc/_cython/_cygrpc/thread.pyx.pxi":52
 *     def _run_with_context(target):
 *         ctx = contextvars.copy_context()
 *         def _run(*args):             # <<<<<<<<<<<<<<
 *             ctx.run(target, *args)
 *         return _run
 */

/* Python wrapper */
static PyObject *__pyx_pw_4grpc_7_cython_6cygrpc_17_run_with_context_1_run(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
static PyMethodDef __pyx_mdef_4grpc_7_cython_6cygrpc_17_run_with_context_1_run = {"_run", (PyCFunction)(void*)(PyCFunctionWithKeywords)__pyx_pw_4grpc_7_cython_6cygrpc_17_run_with_context_1_run, METH_VARARGS|METH_KEYWORDS, 0};
static PyObject *__pyx_pw_4grpc_7_cython_6cygrpc_17_run_with_context_1_run(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
  PyObject *__pyx_v_args = 0;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("_run (wrapper)", 0);
  if (unlikely(__pyx_kwds) && unlikely(PyDict_Size(__pyx_kwds) > 0) && unlikely(!__Pyx_CheckKeywordStrings(__pyx_kwds, "_run", 0))) return NULL;
  __Pyx_INCREF(__pyx_args);
  __pyx_v_args = __pyx_args;
  __pyx_r = __pyx_pf_4grpc_7_cython_6cygrpc_17_run_with_context__run(__pyx_self, __pyx_v_args);

  /* function exit code */
  __Pyx_XDECREF(__pyx_v_args);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_4grpc_7_cython_6cygrpc_17_run_with_context__run(PyObject *__pyx_self, PyObject *__pyx_v_args) {
  struct __pyx_obj_4grpc_7_cython_6cygrpc___pyx_scope_struct_9__run_with_context *__pyx_cur_scope;
  struct __pyx_obj_4grpc_7_cython_6cygrpc___pyx_scope_struct_9__run_with_context *__pyx_outer_scope;
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  PyObject *__pyx_t_2 = NULL;
  PyObject *__pyx_t_3 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("_run", 0);
  __pyx_outer_scope = (struct __pyx_obj_4grpc_7_cython_6cygrpc___pyx_scope_struct_9__run_with_context *) __Pyx_CyFunction_GetClosure(__pyx_self);
  __pyx_cur_scope = __pyx_outer_scope;

  /* "src/python/grpcio/grpc/_cython/_cygrpc/thread.pyx.pxi":53
 *         ctx = contextvars.copy_context()
 *         def _run(*args):
 *             ctx.run(target, *args)             # <<<<<<<<<<<<<<
 *         return _run
 * else:
 */
  if (unlikely(!__pyx_cur_scope->__pyx_v_ctx)) { __Pyx_RaiseClosureNameError("ctx"); __PYX_ERR(28, 53, __pyx_L1_error) }
  __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_cur_scope->__pyx_v_ctx, __pyx_n_s_run); if (unlikely(!__pyx_t_1)) __PYX_ERR(28, 53, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  if (unlikely(!__pyx_cur_scope->__pyx_v_target)) { __Pyx_RaiseClosureNameError("target"); __PYX_ERR(28, 53, __pyx_L1_error) }
  __pyx_t_2 = PyTuple_New(1); if (unlikely(!__pyx_t_2)) __PYX_ERR(28, 53, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __Pyx_INCREF(__pyx_cur_scope->__pyx_v_target);
  __Pyx_GIVEREF(__pyx_cur_scope->__pyx_v_target);
  PyTuple_SET_ITEM(__pyx_t_2, 0, __pyx_cur_scope->__pyx_v_target);
  __pyx_t_3 = PyNumber_Add(__pyx_t_2, __pyx_v_args); if (unlikely(!__pyx_t_3)) __PYX_ERR(28, 53, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  __pyx_t_2 = __Pyx_PyObject_Call(__pyx_t_1, __pyx_t_3, NULL); if (unlikely(!__pyx_t_2)) __PYX_ERR(28, 53, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;

  /* "src/python/grpcio/grpc/_cython/_cygrpc/thread.pyx.pxi":52
 *     def _run_with_context(target):
 *         ctx = contextvars.copy_context()
 *         def _run(*args):             # <<<<<<<<<<<<<<
 *             ctx.run(target, *args)
 *         return _run
 */

  /* function exit code */
  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_XDECREF(__pyx_t_3);
  __Pyx_AddTraceback("grpc._cython.cygrpc._run_with_context._run", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "src/python/grpcio/grpc/_cython/_cygrpc/thread.pyx.pxi":50
 * if _contextvars_supported():
 *     import contextvars
 *     def _run_with_context(target):             # <<<<<<<<<<<<<<
 *         ctx = contextvars.copy_context()
 *         def _run(*args):
 */

static PyObject *__pyx_pf_4grpc_7_cython_6cygrpc_86_run_with_context(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__pyx_v_target) {
  struct __pyx_obj_4grpc_7_cython_6cygrpc___pyx_scope_struct_9__run_with_context *__pyx_cur_scope;
  PyObject *__pyx_v__run = 0;
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  PyObject *__pyx_t_2 = NULL;
  PyObject *__pyx_t_3 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("_run_with_context", 0);
  __pyx_cur_scope = (struct __pyx_obj_4grpc_7_cython_6cygrpc___pyx_scope_struct_9__run_with_context *)__pyx_tp_new_4grpc_7_cython_6cygrpc___pyx_scope_struct_9__run_with_context(__pyx_ptype_4grpc_7_cython_6cygrpc___pyx_scope_struct_9__run_with_context, __pyx_empty_tuple, NULL);
  if (unlikely(!__pyx_cur_scope)) {
    __pyx_cur_scope = ((struct __pyx_obj_4grpc_7_cython_6cygrpc___pyx_scope_struct_9__run_with_context *)Py_None);
    __Pyx_INCREF(Py_None);
    __PYX_ERR(28, 50, __pyx_L1_error)
  } else {
    __Pyx_GOTREF(__pyx_cur_scope);
  }
  __pyx_cur_scope->__pyx_v_target = __pyx_v_target;
  __Pyx_INCREF(__pyx_cur_scope->__pyx_v_target);
  __Pyx_GIVEREF(__pyx_cur_scope->__pyx_v_target);

  /* "src/python/grpcio/grpc/_cython/_cygrpc/thread.pyx.pxi":51
 *     import contextvars
 *     def _run_with_context(target):
 *         ctx = contextvars.copy_context()             # <<<<<<<<<<<<<<
 *         def _run(*args):
 *             ctx.run(target, *args)
 */
  __Pyx_GetModuleGlobalName(__pyx_t_2, __pyx_n_s_contextvars); if (unlikely(!__pyx_t_2)) __PYX_ERR(28, 51, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __pyx_t_3 = __Pyx_PyObject_GetAttrStr(__pyx_t_2, __pyx_n_s_copy_context); if (unlikely(!__pyx_t_3)) __PYX_ERR(28, 51, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  __pyx_t_2 = NULL;
  if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_3))) {
    __pyx_t_2 = PyMethod_GET_SELF(__pyx_t_3);
    if (likely(__pyx_t_2)) {
      PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_3);
      __Pyx_INCREF(__pyx_t_2);
      __Pyx_INCREF(function);
      __Pyx_DECREF_SET(__pyx_t_3, function);
    }
  }
  __pyx_t_1 = (__pyx_t_2) ? __Pyx_PyObject_CallOneArg(__pyx_t_3, __pyx_t_2) : __Pyx_PyObject_CallNoArg(__pyx_t_3);
  __Pyx_XDECREF(__pyx_t_2); __pyx_t_2 = 0;
  if (unlikely(!__pyx_t_1)) __PYX_ERR(28, 51, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
  __Pyx_GIVEREF(__pyx_t_1);
  __pyx_cur_scope->__pyx_v_ctx = __pyx_t_1;
  __pyx_t_1 = 0;

  /* "src/python/grpcio/grpc/_cython/_cygrpc/thread.pyx.pxi":52
 *     def _run_with_context(target):
 *         ctx = contextvars.copy_context()
 *         def _run(*args):             # <<<<<<<<<<<<<<
 *             ctx.run(target, *args)
 *         return _run
 */
  __pyx_t_1 = __Pyx_CyFunction_New(&__pyx_mdef_4grpc_7_cython_6cygrpc_17_run_with_context_1_run, 0, __pyx_n_s_run_with_context_locals__run, ((PyObject*)__pyx_cur_scope), __pyx_n_s_grpc__cython_cygrpc, __pyx_d, ((PyObject *)__pyx_codeobj__133)); if (unlikely(!__pyx_t_1)) __PYX_ERR(28, 52, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_v__run = __pyx_t_1;
  __pyx_t_1 = 0;

  /* "src/python/grpcio/grpc/_cython/_cygrpc/thread.pyx.pxi":54
 *         def _run(*args):
 *             ctx.run(target, *args)
 *         return _run             # <<<<<<<<<<<<<<
 * else:
 *     def _run_with_context(target):
 */
  __Pyx_XDECREF(__pyx_r);
  __Pyx_INCREF(__pyx_v__run);
  __pyx_r = __pyx_v__run;
  goto __pyx_L0;

  /* "src/python/grpcio/grpc/_cython/_cygrpc/thread.pyx.pxi":50
 * if _contextvars_supported():
 *     import contextvars
 *     def _run_with_context(target):             # <<<<<<<<<<<<<<
 *         ctx = contextvars.copy_context()
 *         def _run(*args):
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_XDECREF(__pyx_t_3);
  __Pyx_AddTraceback("grpc._cython.cygrpc._run_with_context", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XDECREF(__pyx_v__run);
  __Pyx_DECREF(((PyObject *)__pyx_cur_scope));
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "src/python/grpcio/grpc/_cython/_cygrpc/thread.pyx.pxi":56
 *         return _run
 * else:
 *     def _run_with_context(target):             # <<<<<<<<<<<<<<
 *         def _run(*args):
 *             target(*args)
 */

/* Python wrapper */
static PyObject *__pyx_pw_4grpc_7_cython_6cygrpc_89_run_with_context(PyObject *__pyx_self, PyObject *__pyx_v_target); /*proto*/
static PyMethodDef __pyx_mdef_4grpc_7_cython_6cygrpc_89_run_with_context = {"_run_with_context", (PyCFunction)__pyx_pw_4grpc_7_cython_6cygrpc_89_run_with_context, METH_O, 0};
static PyObject *__pyx_pw_4grpc_7_cython_6cygrpc_89_run_with_context(PyObject *__pyx_self, PyObject *__pyx_v_target) {
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("_run_with_context (wrapper)", 0);
  __pyx_r = __pyx_pf_4grpc_7_cython_6cygrpc_88_run_with_context(__pyx_self, ((PyObject *)__pyx_v_target));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "src/python/grpcio/grpc/_cython/_cygrpc/thread.pyx.pxi":57
 * else:
 *     def _run_with_context(target):
 *         def _run(*args):             # <<<<<<<<<<<<<<
 *             target(*args)
 *         return _run
 */

/* Python wrapper */
static PyObject *__pyx_pw_4grpc_7_cython_6cygrpc_17_run_with_context_3_run(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
static PyMethodDef __pyx_mdef_4grpc_7_cython_6cygrpc_17_run_with_context_3_run = {"_run", (PyCFunction)(void*)(PyCFunctionWithKeywords)__pyx_pw_4grpc_7_cython_6cygrpc_17_run_with_context_3_run, METH_VARARGS|METH_KEYWORDS, 0};
static PyObject *__pyx_pw_4grpc_7_cython_6cygrpc_17_run_with_context_3_run(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
  PyObject *__pyx_v_args = 0;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("_run (wrapper)", 0);
  if (unlikely(__pyx_kwds) && unlikely(PyDict_Size(__pyx_kwds) > 0) && unlikely(!__Pyx_CheckKeywordStrings(__pyx_kwds, "_run", 0))) return NULL;
  __Pyx_INCREF(__pyx_args);
  __pyx_v_args = __pyx_args;
  __pyx_r = __pyx_pf_4grpc_7_cython_6cygrpc_17_run_with_context_2_run(__pyx_self, __pyx_v_args);

  /* function exit code */
  __Pyx_XDECREF(__pyx_v_args);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_4grpc_7_cython_6cygrpc_17_run_with_context_2_run(PyObject *__pyx_self, PyObject *__pyx_v_args) {
  struct __pyx_obj_4grpc_7_cython_6cygrpc___pyx_scope_struct_10__run_with_context *__pyx_cur_scope;
  struct __pyx_obj_4grpc_7_cython_6cygrpc___pyx_scope_struct_10__run_with_context *__pyx_outer_scope;
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("_run", 0);
  __pyx_outer_scope = (struct __pyx_obj_4grpc_7_cython_6cygrpc___pyx_scope_struct_10__run_with_context *) __Pyx_CyFunction_GetClosure(__pyx_self);
  __pyx_cur_scope = __pyx_outer_scope;

  /* "src/python/grpcio/grpc/_cython/_cygrpc/thread.pyx.pxi":58
 *     def _run_with_context(target):
 *         def _run(*args):
 *             target(*args)             # <<<<<<<<<<<<<<
 *         return _run
 */
  if (unlikely(!__pyx_cur_scope->__pyx_v_target)) { __Pyx_RaiseClosureNameError("target"); __PYX_ERR(28, 58, __pyx_L1_error) }
  __pyx_t_1 = __Pyx_PyObject_Call(__pyx_cur_scope->__pyx_v_target, __pyx_v_args, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(28, 58, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;

  /* "src/python/grpcio/grpc/_cython/_cygrpc/thread.pyx.pxi":57
 * else:
 *     def _run_with_context(target):
 *         def _run(*args):             # <<<<<<<<<<<<<<
 *             target(*args)
 *         return _run
 */

  /* function exit code */
  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_AddTraceback("grpc._cython.cygrpc._run_with_context._run", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "src/python/grpcio/grpc/_cython/_cygrpc/thread.pyx.pxi":56
 *         return _run
 * else:
 *     def _run_with_context(target):             # <<<<<<<<<<<<<<
 *         def _run(*args):
 *             target(*args)
 */

static PyObject *__pyx_pf_4grpc_7_cython_6cygrpc_88_run_with_context(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__pyx_v_target) {
  struct __pyx_obj_4grpc_7_cython_6cygrpc___pyx_scope_struct_10__run_with_context *__pyx_cur_scope;
  PyObject *__pyx_v__run = 0;
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("_run_with_context", 0);
  __pyx_cur_scope = (struct __pyx_obj_4grpc_7_cython_6cygrpc___pyx_scope_struct_10__run_with_context *)__pyx_tp_new_4grpc_7_cython_6cygrpc___pyx_scope_struct_10__run_with_context(__pyx_ptype_4grpc_7_cython_6cygrpc___pyx_scope_struct_10__run_with_context, __pyx_empty_tuple, NULL);
  if (unlikely(!__pyx_cur_scope)) {
    __pyx_cur_scope = ((struct __pyx_obj_4grpc_7_cython_6cygrpc___pyx_scope_struct_10__run_with_context *)Py_None);
    __Pyx_INCREF(Py_None);
    __PYX_ERR(28, 56, __pyx_L1_error)
  } else {
    __Pyx_GOTREF(__pyx_cur_scope);
  }
  __pyx_cur_scope->__pyx_v_target = __pyx_v_target;
  __Pyx_INCREF(__pyx_cur_scope->__pyx_v_target);
  __Pyx_GIVEREF(__pyx_cur_scope->__pyx_v_target);

  /* "src/python/grpcio/grpc/_cython/_cygrpc/thread.pyx.pxi":57
 * else:
 *     def _run_with_context(target):
 *         def _run(*args):             # <<<<<<<<<<<<<<
 *             target(*args)
 *         return _run
 */
  __pyx_t_1 = __Pyx_CyFunction_New(&__pyx_mdef_4grpc_7_cython_6cygrpc_17_run_with_context_3_run, 0, __pyx_n_s_run_with_context_locals__run, ((PyObject*)__pyx_cur_scope), __pyx_n_s_grpc__cython_cygrpc, __pyx_d, ((PyObject *)__pyx_codeobj__135)); if (unlikely(!__pyx_t_1)) __PYX_ERR(28, 57, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_v__run = __pyx_t_1;
  __pyx_t_1 = 0;

  /* "src/python/grpcio/grpc/_cython/_cygrpc/thread.pyx.pxi":59
 *         def _run(*args):
 *             target(*args)
 *         return _run             # <<<<<<<<<<<<<<
 */
  __Pyx_XDECREF(__pyx_r);
  __Pyx_INCREF(__pyx_v__run);
  __pyx_r = __pyx_v__run;
  goto __pyx_L0;

  /* "src/python/grpcio/grpc/_cython/_cygrpc/thread.pyx.pxi":56
 *         return _run
 * else:
 *     def _run_with_context(target):             # <<<<<<<<<<<<<<
 *         def _run(*args):
 *             target(*args)
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_AddTraceback("grpc._cython.cygrpc._run_with_context", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XDECREF(__pyx_v__run);
  __Pyx_DECREF(((PyObject *)__pyx_cur_scope));
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "src/python/grpcio/grpc/_cython/_cygrpc/fork_posix.pyx.pxi":37
 * _fork_handler_failed = False
 * 
 * cdef void __prefork() nogil:             # <<<<<<<<<<<<<<
 *     with gil:
 *         global _fork_handler_failed
 */

static void __pyx_f_4grpc_7_cython_6cygrpc___prefork(void) {
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  PyObject *__pyx_t_2 = NULL;
  PyObject *__pyx_t_3 = NULL;
  PyObject *__pyx_t_4 = NULL;
  PyObject *__pyx_t_5 = NULL;
  PyObject *__pyx_t_6 = NULL;
  PyObject *__pyx_t_7 = NULL;
  PyObject *__pyx_t_8 = NULL;
  PyObject *__pyx_t_9 = NULL;
  int __pyx_t_10;
  int __pyx_t_11;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  #ifdef WITH_THREAD
  PyGILState_STATE __pyx_gilstate_save;
  #endif
  __Pyx_RefNannySetupContext("__prefork", 1);

  /* "src/python/grpcio/grpc/_cython/_cygrpc/fork_posix.pyx.pxi":38
 * 
 * cdef void __prefork() nogil:
 *     with gil:             # <<<<<<<<<<<<<<
 *         global _fork_handler_failed
 *         _fork_handler_failed = False
 */
  /*try:*/ {
    {
        #ifdef WITH_THREAD
        PyGILState_STATE __pyx_gilstate_save = __Pyx_PyGILState_Ensure();
        #endif
        /*try:*/ {

          /* "src/python/grpcio/grpc/_cython/_cygrpc/fork_posix.pyx.pxi":40
 *     with gil:
 *         global _fork_handler_failed
 *         _fork_handler_failed = False             # <<<<<<<<<<<<<<
 *         with _fork_state.fork_in_progress_condition:
 *             _fork_state.fork_in_progress = True
 */
          if (PyDict_SetItem(__pyx_d, __pyx_n_s_fork_handler_failed, Py_False) < 0) __PYX_ERR(1, 40, __pyx_L7_error)

          /* "src/python/grpcio/grpc/_cython/_cygrpc/fork_posix.pyx.pxi":41
 *         global _fork_handler_failed
 *         _fork_handler_failed = False
 *         with _fork_state.fork_in_progress_condition:             # <<<<<<<<<<<<<<
 *             _fork_state.fork_in_progress = True
 *         if not _fork_state.active_thread_count.await_zero_threads(
 */
          /*with:*/ {
            __Pyx_GetModuleGlobalName(__pyx_t_1, __pyx_n_s_fork_state); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 41, __pyx_L7_error)
            __Pyx_GOTREF(__pyx_t_1);
            __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_t_1, __pyx_n_s_fork_in_progress_condition); if (unlikely(!__pyx_t_2)) __PYX_ERR(1, 41, __pyx_L7_error)
            __Pyx_GOTREF(__pyx_t_2);
            __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
            __pyx_t_3 = __Pyx_PyObject_LookupSpecial(__pyx_t_2, __pyx_n_s_exit); if (unlikely(!__pyx_t_3)) __PYX_ERR(1, 41, __pyx_L7_error)
            __Pyx_GOTREF(__pyx_t_3);
            __pyx_t_4 = __Pyx_PyObject_LookupSpecial(__pyx_t_2, __pyx_n_s_enter); if (unlikely(!__pyx_t_4)) __PYX_ERR(1, 41, __pyx_L9_error)
            __Pyx_GOTREF(__pyx_t_4);
            __pyx_t_5 = NULL;
            if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_4))) {
              __pyx_t_5 = PyMethod_GET_SELF(__pyx_t_4);
              if (likely(__pyx_t_5)) {
                PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_4);
                __Pyx_INCREF(__pyx_t_5);
                __Pyx_INCREF(function);
                __Pyx_DECREF_SET(__pyx_t_4, function);
              }
            }
            __pyx_t_1 = (__pyx_t_5) ? __Pyx_PyObject_CallOneArg(__pyx_t_4, __pyx_t_5) : __Pyx_PyObject_CallNoArg(__pyx_t_4);
            __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0;
            if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 41, __pyx_L9_error)
            __Pyx_GOTREF(__pyx_t_1);
            __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
            __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
            __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
            /*try:*/ {
              {
                __Pyx_PyThreadState_declare
                __Pyx_PyThreadState_assign
                __Pyx_ExceptionSave(&__pyx_t_6, &__pyx_t_7, &__pyx_t_8);
                __Pyx_XGOTREF(__pyx_t_6);
                __Pyx_XGOTREF(__pyx_t_7);
                __Pyx_XGOTREF(__pyx_t_8);
                /*try:*/ {

                  /* "src/python/grpcio/grpc/_cython/_cygrpc/fork_posix.pyx.pxi":42
 *         _fork_handler_failed = False
 *         with _fork_state.fork_in_progress_condition:
 *             _fork_state.fork_in_progress = True             # <<<<<<<<<<<<<<
 *         if not _fork_state.active_thread_count.await_zero_threads(
 *                 _AWAIT_THREADS_TIMEOUT_SECONDS):
 */
                  __Pyx_GetModuleGlobalName(__pyx_t_2, __pyx_n_s_fork_state); if (unlikely(!__pyx_t_2)) __PYX_ERR(1, 42, __pyx_L13_error)
                  __Pyx_GOTREF(__pyx_t_2);
                  if (__Pyx_PyObject_SetAttrStr(__pyx_t_2, __pyx_n_s_fork_in_progress, Py_True) < 0) __PYX_ERR(1, 42, __pyx_L13_error)
                  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;

                  /* "src/python/grpcio/grpc/_cython/_cygrpc/fork_posix.pyx.pxi":41
 *         global _fork_handler_failed
 *         _fork_handler_failed = False
 *         with _fork_state.fork_in_progress_condition:             # <<<<<<<<<<<<<<
 *             _fork_state.fork_in_progress = True
 *         if not _fork_state.active_thread_count.await_zero_threads(
 */
                }
                __Pyx_XDECREF(__pyx_t_6); __pyx_t_6 = 0;
                __Pyx_XDECREF(__pyx_t_7); __pyx_t_7 = 0;
                __Pyx_XDECREF(__pyx_t_8); __pyx_t_8 = 0;
                goto __pyx_L18_try_end;
                __pyx_L13_error:;
                __Pyx_XDECREF(__pyx_t_1); __pyx_t_1 = 0;
                __Pyx_XDECREF(__pyx_t_2); __pyx_t_2 = 0;
                __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0;
                __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0;
                /*except:*/ {
                  __Pyx_AddTraceback("grpc._cython.cygrpc.__prefork", __pyx_clineno, __pyx_lineno, __pyx_filename);
                  if (__Pyx_GetException(&__pyx_t_2, &__pyx_t_1, &__pyx_t_4) < 0) __PYX_ERR(1, 41, __pyx_L15_except_error)
                  __Pyx_GOTREF(__pyx_t_2);
                  __Pyx_GOTREF(__pyx_t_1);
                  __Pyx_GOTREF(__pyx_t_4);
                  __pyx_t_5 = PyTuple_Pack(3, __pyx_t_2, __pyx_t_1, __pyx_t_4); if (unlikely(!__pyx_t_5)) __PYX_ERR(1, 41, __pyx_L15_except_error)
                  __Pyx_GOTREF(__pyx_t_5);
                  __pyx_t_9 = __Pyx_PyObject_Call(__pyx_t_3, __pyx_t_5, NULL);
                  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
                  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
                  if (unlikely(!__pyx_t_9)) __PYX_ERR(1, 41, __pyx_L15_except_error)
                  __Pyx_GOTREF(__pyx_t_9);
                  __pyx_t_10 = __Pyx_PyObject_IsTrue(__pyx_t_9);
                  __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0;
                  if (__pyx_t_10 < 0) __PYX_ERR(1, 41, __pyx_L15_except_error)
                  __pyx_t_11 = ((!(__pyx_t_10 != 0)) != 0);
                  if (__pyx_t_11) {
                    __Pyx_GIVEREF(__pyx_t_2);
                    __Pyx_GIVEREF(__pyx_t_1);
                    __Pyx_XGIVEREF(__pyx_t_4);
                    __Pyx_ErrRestoreWithState(__pyx_t_2, __pyx_t_1, __pyx_t_4);
                    __pyx_t_2 = 0; __pyx_t_1 = 0; __pyx_t_4 = 0; 
                    __PYX_ERR(1, 41, __pyx_L15_except_error)
                  }
                  __Pyx_XDECREF(__pyx_t_2); __pyx_t_2 = 0;
                  __Pyx_XDECREF(__pyx_t_1); __pyx_t_1 = 0;
                  __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0;
                  goto __pyx_L14_exception_handled;
                }
                __pyx_L15_except_error:;
                __Pyx_XGIVEREF(__pyx_t_6);
                __Pyx_XGIVEREF(__pyx_t_7);
                __Pyx_XGIVEREF(__pyx_t_8);
                __Pyx_ExceptionReset(__pyx_t_6, __pyx_t_7, __pyx_t_8);
                goto __pyx_L7_error;
                __pyx_L14_exception_handled:;
                __Pyx_XGIVEREF(__pyx_t_6);
                __Pyx_XGIVEREF(__pyx_t_7);
                __Pyx_XGIVEREF(__pyx_t_8);
                __Pyx_ExceptionReset(__pyx_t_6, __pyx_t_7, __pyx_t_8);
                __pyx_L18_try_end:;
              }
            }
            /*finally:*/ {
              /*normal exit:*/{
                if (__pyx_t_3) {
                  __pyx_t_8 = __Pyx_PyObject_Call(__pyx_t_3, __pyx_tuple__17, NULL);
                  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
                  if (unlikely(!__pyx_t_8)) __PYX_ERR(1, 41, __pyx_L7_error)
                  __Pyx_GOTREF(__pyx_t_8);
                  __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
                }
                goto __pyx_L12;
              }
              __pyx_L12:;
            }
            goto __pyx_L22;
            __pyx_L9_error:;
            __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
            goto __pyx_L7_error;
            __pyx_L22:;
          }

          /* "src/python/grpcio/grpc/_cython/_cygrpc/fork_posix.pyx.pxi":43
 *         with _fork_state.fork_in_progress_condition:
 *             _fork_state.fork_in_progress = True
 *         if not _fork_state.active_thread_count.await_zero_threads(             # <<<<<<<<<<<<<<
 *                 _AWAIT_THREADS_TIMEOUT_SECONDS):
 *             _LOGGER.error(
 */
          __Pyx_GetModuleGlobalName(__pyx_t_1, __pyx_n_s_fork_state); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 43, __pyx_L7_error)
          __Pyx_GOTREF(__pyx_t_1);
          __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_t_1, __pyx_n_s_active_thread_count); if (unlikely(!__pyx_t_2)) __PYX_ERR(1, 43, __pyx_L7_error)
          __Pyx_GOTREF(__pyx_t_2);
          __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
          __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_t_2, __pyx_n_s_await_zero_threads); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 43, __pyx_L7_error)
          __Pyx_GOTREF(__pyx_t_1);
          __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;

          /* "src/python/grpcio/grpc/_cython/_cygrpc/fork_posix.pyx.pxi":44
 *             _fork_state.fork_in_progress = True
 *         if not _fork_state.active_thread_count.await_zero_threads(
 *                 _AWAIT_THREADS_TIMEOUT_SECONDS):             # <<<<<<<<<<<<<<
 *             _LOGGER.error(
 *                 'Failed to shutdown gRPC Python threads prior to fork. '
 */
          __Pyx_GetModuleGlobalName(__pyx_t_2, __pyx_n_s_AWAIT_THREADS_TIMEOUT_SECONDS); if (unlikely(!__pyx_t_2)) __PYX_ERR(1, 44, __pyx_L7_error)
          __Pyx_GOTREF(__pyx_t_2);
          __pyx_t_5 = NULL;
          if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_1))) {
            __pyx_t_5 = PyMethod_GET_SELF(__pyx_t_1);
            if (likely(__pyx_t_5)) {
              PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_1);
              __Pyx_INCREF(__pyx_t_5);
              __Pyx_INCREF(function);
              __Pyx_DECREF_SET(__pyx_t_1, function);
            }
          }
          __pyx_t_4 = (__pyx_t_5) ? __Pyx_PyObject_Call2Args(__pyx_t_1, __pyx_t_5, __pyx_t_2) : __Pyx_PyObject_CallOneArg(__pyx_t_1, __pyx_t_2);
          __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0;
          __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
          if (unlikely(!__pyx_t_4)) __PYX_ERR(1, 43, __pyx_L7_error)
          __Pyx_GOTREF(__pyx_t_4);
          __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;

          /* "src/python/grpcio/grpc/_cython/_cygrpc/fork_posix.pyx.pxi":43
 *         with _fork_state.fork_in_progress_condition:
 *             _fork_state.fork_in_progress = True
 *         if not _fork_state.active_thread_count.await_zero_threads(             # <<<<<<<<<<<<<<
 *                 _AWAIT_THREADS_TIMEOUT_SECONDS):
 *             _LOGGER.error(
 */
          __pyx_t_11 = __Pyx_PyObject_IsTrue(__pyx_t_4); if (unlikely(__pyx_t_11 < 0)) __PYX_ERR(1, 43, __pyx_L7_error)
          __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
          __pyx_t_10 = ((!__pyx_t_11) != 0);
          if (__pyx_t_10) {

            /* "src/python/grpcio/grpc/_cython/_cygrpc/fork_posix.pyx.pxi":45
 *         if not _fork_state.active_thread_count.await_zero_threads(
 *                 _AWAIT_THREADS_TIMEOUT_SECONDS):
 *             _LOGGER.error(             # <<<<<<<<<<<<<<
 *                 'Failed to shutdown gRPC Python threads prior to fork. '
 *                 'Behavior after fork will be undefined.')
 */
            __Pyx_GetModuleGlobalName(__pyx_t_1, __pyx_n_s_LOGGER); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 45, __pyx_L7_error)
            __Pyx_GOTREF(__pyx_t_1);
            __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_t_1, __pyx_n_s_error); if (unlikely(!__pyx_t_2)) __PYX_ERR(1, 45, __pyx_L7_error)
            __Pyx_GOTREF(__pyx_t_2);
            __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
            __pyx_t_1 = NULL;
            if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_2))) {
              __pyx_t_1 = PyMethod_GET_SELF(__pyx_t_2);
              if (likely(__pyx_t_1)) {
                PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_2);
                __Pyx_INCREF(__pyx_t_1);
                __Pyx_INCREF(function);
                __Pyx_DECREF_SET(__pyx_t_2, function);
              }
            }
            __pyx_t_4 = (__pyx_t_1) ? __Pyx_PyObject_Call2Args(__pyx_t_2, __pyx_t_1, __pyx_kp_s_Failed_to_shutdown_gRPC_Python_t) : __Pyx_PyObject_CallOneArg(__pyx_t_2, __pyx_kp_s_Failed_to_shutdown_gRPC_Python_t);
            __Pyx_XDECREF(__pyx_t_1); __pyx_t_1 = 0;
            if (unlikely(!__pyx_t_4)) __PYX_ERR(1, 45, __pyx_L7_error)
            __Pyx_GOTREF(__pyx_t_4);
            __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
            __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;

            /* "src/python/grpcio/grpc/_cython/_cygrpc/fork_posix.pyx.pxi":48
 *                 'Failed to shutdown gRPC Python threads prior to fork. '
 *                 'Behavior after fork will be undefined.')
 *             _fork_handler_failed = True             # <<<<<<<<<<<<<<
 * 
 * 
 */
            if (PyDict_SetItem(__pyx_d, __pyx_n_s_fork_handler_failed, Py_True) < 0) __PYX_ERR(1, 48, __pyx_L7_error)

            /* "src/python/grpcio/grpc/_cython/_cygrpc/fork_posix.pyx.pxi":43
 *         with _fork_state.fork_in_progress_condition:
 *             _fork_state.fork_in_progress = True
 *         if not _fork_state.active_thread_count.await_zero_threads(             # <<<<<<<<<<<<<<
 *                 _AWAIT_THREADS_TIMEOUT_SECONDS):
 *             _LOGGER.error(
 */
          }
        }

        /* "src/python/grpcio/grpc/_cython/_cygrpc/fork_posix.pyx.pxi":38
 * 
 * cdef void __prefork() nogil:
 *     with gil:             # <<<<<<<<<<<<<<
 *         global _fork_handler_failed
 *         _fork_handler_failed = False
 */
        /*finally:*/ {
          /*normal exit:*/{
            #ifdef WITH_THREAD
            __Pyx_PyGILState_Release(__pyx_gilstate_save);
            #endif
            goto __pyx_L8;
          }
          __pyx_L7_error: {
            #ifdef WITH_THREAD
            __Pyx_PyGILState_Release(__pyx_gilstate_save);
            #endif
            goto __pyx_L4_error;
          }
          __pyx_L8:;
        }
    }
  }
  /*finally:*/ {
    /*normal exit:*/{
      #ifdef WITH_THREAD
      __pyx_gilstate_save = __Pyx_PyGILState_Ensure();
      #endif
      goto __pyx_L5;
    }
    __pyx_L4_error: {
      #ifdef WITH_THREAD
      __pyx_gilstate_save = __Pyx_PyGILState_Ensure();
      #endif
      goto __pyx_L1_error;
    }
    __pyx_L5:;
  }

  /* "src/python/grpcio/grpc/_cython/_cygrpc/fork_posix.pyx.pxi":37
 * _fork_handler_failed = False
 * 
 * cdef void __prefork() nogil:             # <<<<<<<<<<<<<<
 *     with gil:
 *         global _fork_handler_failed
 */

  /* function exit code */
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_XDECREF(__pyx_t_4);
  __Pyx_XDECREF(__pyx_t_5);
  __Pyx_WriteUnraisable("grpc._cython.cygrpc.__prefork", __pyx_clineno, __pyx_lineno, __pyx_filename, 1, 1);
  __pyx_L0:;
  #ifdef WITH_THREAD
  __Pyx_PyGILState_Release(__pyx_gilstate_save);
  #endif
}

/* "src/python/grpcio/grpc/_cython/_cygrpc/fork_posix.pyx.pxi":51
 * 
 * 
 * cdef void __postfork_parent() nogil:             # <<<<<<<<<<<<<<
 *     with gil:
 *         with _fork_state.fork_in_progress_condition:
 */

static void __pyx_f_4grpc_7_cython_6cygrpc___postfork_parent(void) {
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  PyObject *__pyx_t_2 = NULL;
  PyObject *__pyx_t_3 = NULL;
  PyObject *__pyx_t_4 = NULL;
  PyObject *__pyx_t_5 = NULL;
  PyObject *__pyx_t_6 = NULL;
  PyObject *__pyx_t_7 = NULL;
  PyObject *__pyx_t_8 = NULL;
  PyObject *__pyx_t_9 = NULL;
  int __pyx_t_10;
  int __pyx_t_11;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  #ifdef WITH_THREAD
  PyGILState_STATE __pyx_gilstate_save;
  #endif
  __Pyx_RefNannySetupContext("__postfork_parent", 1);

  /* "src/python/grpcio/grpc/_cython/_cygrpc/fork_posix.pyx.pxi":52
 * 
 * cdef void __postfork_parent() nogil:
 *     with gil:             # <<<<<<<<<<<<<<
 *         with _fork_state.fork_in_progress_condition:
 *             _fork_state.fork_in_progress = False
 */
  /*try:*/ {
    {
        #ifdef WITH_THREAD
        PyGILState_STATE __pyx_gilstate_save = __Pyx_PyGILState_Ensure();
        #endif
        /*try:*/ {

          /* "src/python/grpcio/grpc/_cython/_cygrpc/fork_posix.pyx.pxi":53
 * cdef void __postfork_parent() nogil:
 *     with gil:
 *         with _fork_state.fork_in_progress_condition:             # <<<<<<<<<<<<<<
 *             _fork_state.fork_in_progress = False
 *             _fork_state.fork_in_progress_condition.notify_all()
 */
          /*with:*/ {
            __Pyx_GetModuleGlobalName(__pyx_t_1, __pyx_n_s_fork_state); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 53, __pyx_L7_error)
            __Pyx_GOTREF(__pyx_t_1);
            __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_t_1, __pyx_n_s_fork_in_progress_condition); if (unlikely(!__pyx_t_2)) __PYX_ERR(1, 53, __pyx_L7_error)
            __Pyx_GOTREF(__pyx_t_2);
            __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
            __pyx_t_3 = __Pyx_PyObject_LookupSpecial(__pyx_t_2, __pyx_n_s_exit); if (unlikely(!__pyx_t_3)) __PYX_ERR(1, 53, __pyx_L7_error)
            __Pyx_GOTREF(__pyx_t_3);
            __pyx_t_4 = __Pyx_PyObject_LookupSpecial(__pyx_t_2, __pyx_n_s_enter); if (unlikely(!__pyx_t_4)) __PYX_ERR(1, 53, __pyx_L9_error)
            __Pyx_GOTREF(__pyx_t_4);
            __pyx_t_5 = NULL;
            if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_4))) {
              __pyx_t_5 = PyMethod_GET_SELF(__pyx_t_4);
              if (likely(__pyx_t_5)) {
                PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_4);
                __Pyx_INCREF(__pyx_t_5);
                __Pyx_INCREF(function);
                __Pyx_DECREF_SET(__pyx_t_4, function);
              }
            }
            __pyx_t_1 = (__pyx_t_5) ? __Pyx_PyObject_CallOneArg(__pyx_t_4, __pyx_t_5) : __Pyx_PyObject_CallNoArg(__pyx_t_4);
            __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0;
            if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 53, __pyx_L9_error)
            __Pyx_GOTREF(__pyx_t_1);
            __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
            __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
            __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
            /*try:*/ {
              {
                __Pyx_PyThreadState_declare
                __Pyx_PyThreadState_assign
                __Pyx_ExceptionSave(&__pyx_t_6, &__pyx_t_7, &__pyx_t_8);
                __Pyx_XGOTREF(__pyx_t_6);
                __Pyx_XGOTREF(__pyx_t_7);
                __Pyx_XGOTREF(__pyx_t_8);
                /*try:*/ {

                  /* "src/python/grpcio/grpc/_cython/_cygrpc/fork_posix.pyx.pxi":54
 *     with gil:
 *         with _fork_state.fork_in_progress_condition:
 *             _fork_state.fork_in_progress = False             # <<<<<<<<<<<<<<
 *             _fork_state.fork_in_progress_condition.notify_all()
 * 
 */
                  __Pyx_GetModuleGlobalName(__pyx_t_2, __pyx_n_s_fork_state); if (unlikely(!__pyx_t_2)) __PYX_ERR(1, 54, __pyx_L13_error)
                  __Pyx_GOTREF(__pyx_t_2);
                  if (__Pyx_PyObject_SetAttrStr(__pyx_t_2, __pyx_n_s_fork_in_progress, Py_False) < 0) __PYX_ERR(1, 54, __pyx_L13_error)
                  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;

                  /* "src/python/grpcio/grpc/_cython/_cygrpc/fork_posix.pyx.pxi":55
 *         with _fork_state.fork_in_progress_condition:
 *             _fork_state.fork_in_progress = False
 *             _fork_state.fork_in_progress_condition.notify_all()             # <<<<<<<<<<<<<<
 * 
 * 
 */
                  __Pyx_GetModuleGlobalName(__pyx_t_1, __pyx_n_s_fork_state); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 55, __pyx_L13_error)
                  __Pyx_GOTREF(__pyx_t_1);
                  __pyx_t_4 = __Pyx_PyObject_GetAttrStr(__pyx_t_1, __pyx_n_s_fork_in_progress_condition); if (unlikely(!__pyx_t_4)) __PYX_ERR(1, 55, __pyx_L13_error)
                  __Pyx_GOTREF(__pyx_t_4);
                  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
                  __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_t_4, __pyx_n_s_notify_all); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 55, __pyx_L13_error)
                  __Pyx_GOTREF(__pyx_t_1);
                  __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
                  __pyx_t_4 = NULL;
                  if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_1))) {
                    __pyx_t_4 = PyMethod_GET_SELF(__pyx_t_1);
                    if (likely(__pyx_t_4)) {
                      PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_1);
                      __Pyx_INCREF(__pyx_t_4);
                      __Pyx_INCREF(function);
                      __Pyx_DECREF_SET(__pyx_t_1, function);
                    }
                  }
                  __pyx_t_2 = (__pyx_t_4) ? __Pyx_PyObject_CallOneArg(__pyx_t_1, __pyx_t_4) : __Pyx_PyObject_CallNoArg(__pyx_t_1);
                  __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0;
                  if (unlikely(!__pyx_t_2)) __PYX_ERR(1, 55, __pyx_L13_error)
                  __Pyx_GOTREF(__pyx_t_2);
                  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
                  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;

                  /* "src/python/grpcio/grpc/_cython/_cygrpc/fork_posix.pyx.pxi":53
 * cdef void __postfork_parent() nogil:
 *     with gil:
 *         with _fork_state.fork_in_progress_condition:             # <<<<<<<<<<<<<<
 *             _fork_state.fork_in_progress = False
 *             _fork_state.fork_in_progress_condition.notify_all()
 */
                }
                __Pyx_XDECREF(__pyx_t_6); __pyx_t_6 = 0;
                __Pyx_XDECREF(__pyx_t_7); __pyx_t_7 = 0;
                __Pyx_XDECREF(__pyx_t_8); __pyx_t_8 = 0;
                goto __pyx_L18_try_end;
                __pyx_L13_error:;
                __Pyx_XDECREF(__pyx_t_1); __pyx_t_1 = 0;
                __Pyx_XDECREF(__pyx_t_2); __pyx_t_2 = 0;
                __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0;
                __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0;
                /*except:*/ {
                  __Pyx_AddTraceback("grpc._cython.cygrpc.__postfork_parent", __pyx_clineno, __pyx_lineno, __pyx_filename);
                  if (__Pyx_GetException(&__pyx_t_2, &__pyx_t_1, &__pyx_t_4) < 0) __PYX_ERR(1, 53, __pyx_L15_except_error)
                  __Pyx_GOTREF(__pyx_t_2);
                  __Pyx_GOTREF(__pyx_t_1);
                  __Pyx_GOTREF(__pyx_t_4);
                  __pyx_t_5 = PyTuple_Pack(3, __pyx_t_2, __pyx_t_1, __pyx_t_4); if (unlikely(!__pyx_t_5)) __PYX_ERR(1, 53, __pyx_L15_except_error)
                  __Pyx_GOTREF(__pyx_t_5);
                  __pyx_t_9 = __Pyx_PyObject_Call(__pyx_t_3, __pyx_t_5, NULL);
                  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
                  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
                  if (unlikely(!__pyx_t_9)) __PYX_ERR(1, 53, __pyx_L15_except_error)
                  __Pyx_GOTREF(__pyx_t_9);
                  __pyx_t_10 = __Pyx_PyObject_IsTrue(__pyx_t_9);
                  __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0;
                  if (__pyx_t_10 < 0) __PYX_ERR(1, 53, __pyx_L15_except_error)
                  __pyx_t_11 = ((!(__pyx_t_10 != 0)) != 0);
                  if (__pyx_t_11) {
                    __Pyx_GIVEREF(__pyx_t_2);
                    __Pyx_GIVEREF(__pyx_t_1);
                    __Pyx_XGIVEREF(__pyx_t_4);
                    __Pyx_ErrRestoreWithState(__pyx_t_2, __pyx_t_1, __pyx_t_4);
                    __pyx_t_2 = 0; __pyx_t_1 = 0; __pyx_t_4 = 0; 
                    __PYX_ERR(1, 53, __pyx_L15_except_error)
                  }
                  __Pyx_XDECREF(__pyx_t_2); __pyx_t_2 = 0;
                  __Pyx_XDECREF(__pyx_t_1); __pyx_t_1 = 0;
                  __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0;
                  goto __pyx_L14_exception_handled;
                }
                __pyx_L15_except_error:;
                __Pyx_XGIVEREF(__pyx_t_6);
                __Pyx_XGIVEREF(__pyx_t_7);
                __Pyx_XGIVEREF(__pyx_t_8);
                __Pyx_ExceptionReset(__pyx_t_6, __pyx_t_7, __pyx_t_8);
                goto __pyx_L7_error;
                __pyx_L14_exception_handled:;
                __Pyx_XGIVEREF(__pyx_t_6);
                __Pyx_XGIVEREF(__pyx_t_7);
                __Pyx_XGIVEREF(__pyx_t_8);
                __Pyx_ExceptionReset(__pyx_t_6, __pyx_t_7, __pyx_t_8);
                __pyx_L18_try_end:;
              }
            }
            /*finally:*/ {
              /*normal exit:*/{
                if (__pyx_t_3) {
                  __pyx_t_8 = __Pyx_PyObject_Call(__pyx_t_3, __pyx_tuple__17, NULL);
                  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
                  if (unlikely(!__pyx_t_8)) __PYX_ERR(1, 53, __pyx_L7_error)
                  __Pyx_GOTREF(__pyx_t_8);
                  __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
                }
                goto __pyx_L12;
              }
              __pyx_L12:;
            }
            goto __pyx_L22;
            __pyx_L9_error:;
            __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
            goto __pyx_L7_error;
            __pyx_L22:;
          }
        }

        /* "src/python/grpcio/grpc/_cython/_cygrpc/fork_posix.pyx.pxi":52
 * 
 * cdef void __postfork_parent() nogil:
 *     with gil:             # <<<<<<<<<<<<<<
 *         with _fork_state.fork_in_progress_condition:
 *             _fork_state.fork_in_progress = False
 */
        /*finally:*/ {
          /*normal exit:*/{
            #ifdef WITH_THREAD
            __Pyx_PyGILState_Release(__pyx_gilstate_save);
            #endif
            goto __pyx_L8;
          }
          __pyx_L7_error: {
            #ifdef WITH_THREAD
            __Pyx_PyGILState_Release(__pyx_gilstate_save);
            #endif
            goto __pyx_L4_error;
          }
          __pyx_L8:;
        }
    }
  }
  /*finally:*/ {
    /*normal exit:*/{
      #ifdef WITH_THREAD
      __pyx_gilstate_save = __Pyx_PyGILState_Ensure();
      #endif
      goto __pyx_L5;
    }
    __pyx_L4_error: {
      #ifdef WITH_THREAD
      __pyx_gilstate_save = __Pyx_PyGILState_Ensure();
      #endif
      goto __pyx_L1_error;
    }
    __pyx_L5:;
  }

  /* "src/python/grpcio/grpc/_cython/_cygrpc/fork_posix.pyx.pxi":51
 * 
 * 
 * cdef void __postfork_parent() nogil:             # <<<<<<<<<<<<<<
 *     with gil:
 *         with _fork_state.fork_in_progress_condition:
 */

  /* function exit code */
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_XDECREF(__pyx_t_4);
  __Pyx_XDECREF(__pyx_t_5);
  __Pyx_WriteUnraisable("grpc._cython.cygrpc.__postfork_parent", __pyx_clineno, __pyx_lineno, __pyx_filename, 1, 1);
  __pyx_L0:;
  #ifdef WITH_THREAD
  __Pyx_PyGILState_Release(__pyx_gilstate_save);
  #endif
}

/* "src/python/grpcio/grpc/_cython/_cygrpc/fork_posix.pyx.pxi":58
 * 
 * 
 * cdef void __postfork_child() nogil:             # <<<<<<<<<<<<<<
 *     with gil:
 *         try:
 */

static void __pyx_f_4grpc_7_cython_6cygrpc___postfork_child(void) {
  PyObject *__pyx_v_state_to_reset = NULL;
  PyObject *__pyx_v_channel = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  PyObject *__pyx_t_2 = NULL;
  PyObject *__pyx_t_3 = NULL;
  PyObject *__pyx_t_4 = NULL;
  int __pyx_t_5;
  PyObject *__pyx_t_6 = NULL;
  PyObject *__pyx_t_7 = NULL;
  Py_ssize_t __pyx_t_8;
  PyObject *(*__pyx_t_9)(PyObject *);
  PyObject *__pyx_t_10 = NULL;
  PyObject *__pyx_t_11 = NULL;
  PyObject *__pyx_t_12 = NULL;
  PyObject *__pyx_t_13 = NULL;
  PyObject *__pyx_t_14 = NULL;
  PyObject *__pyx_t_15 = NULL;
  int __pyx_t_16;
  PyObject *__pyx_t_17 = NULL;
  PyObject *__pyx_t_18 = NULL;
  PyObject *__pyx_t_19 = NULL;
  PyObject *__pyx_t_20 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  #ifdef WITH_THREAD
  PyGILState_STATE __pyx_gilstate_save;
  #endif
  __Pyx_RefNannySetupContext("__postfork_child", 1);

  /* "src/python/grpcio/grpc/_cython/_cygrpc/fork_posix.pyx.pxi":59
 * 
 * cdef void __postfork_child() nogil:
 *     with gil:             # <<<<<<<<<<<<<<
 *         try:
 *             if _fork_handler_failed:
 */
  /*try:*/ {
    {
        #ifdef WITH_THREAD
        PyGILState_STATE __pyx_gilstate_save = __Pyx_PyGILState_Ensure();
        #endif
        /*try:*/ {

          /* "src/python/grpcio/grpc/_cython/_cygrpc/fork_posix.pyx.pxi":60
 * cdef void __postfork_child() nogil:
 *     with gil:
 *         try:             # <<<<<<<<<<<<<<
 *             if _fork_handler_failed:
 *                 return
 */
          {
            __Pyx_PyThreadState_declare
            __Pyx_PyThreadState_assign
            __Pyx_ExceptionSave(&__pyx_t_1, &__pyx_t_2, &__pyx_t_3);
            __Pyx_XGOTREF(__pyx_t_1);
            __Pyx_XGOTREF(__pyx_t_2);
            __Pyx_XGOTREF(__pyx_t_3);
            /*try:*/ {

              /* "src/python/grpcio/grpc/_cython/_cygrpc/fork_posix.pyx.pxi":61
 *     with gil:
 *         try:
 *             if _fork_handler_failed:             # <<<<<<<<<<<<<<
 *                 return
 *             # Thread could be holding the fork_in_progress_condition inside of
 */
              __Pyx_GetModuleGlobalName(__pyx_t_4, __pyx_n_s_fork_handler_failed); if (unlikely(!__pyx_t_4)) __PYX_ERR(1, 61, __pyx_L9_error)
              __Pyx_GOTREF(__pyx_t_4);
              __pyx_t_5 = __Pyx_PyObject_IsTrue(__pyx_t_4); if (unlikely(__pyx_t_5 < 0)) __PYX_ERR(1, 61, __pyx_L9_error)
              __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
              if (__pyx_t_5) {

                /* "src/python/grpcio/grpc/_cython/_cygrpc/fork_posix.pyx.pxi":62
 *         try:
 *             if _fork_handler_failed:
 *                 return             # <<<<<<<<<<<<<<
 *             # Thread could be holding the fork_in_progress_condition inside of
 *             # block_if_fork_in_progress() when fork occurs. Reset the lock here.
 */
                goto __pyx_L13_try_return;

                /* "src/python/grpcio/grpc/_cython/_cygrpc/fork_posix.pyx.pxi":61
 *     with gil:
 *         try:
 *             if _fork_handler_failed:             # <<<<<<<<<<<<<<
 *                 return
 *             # Thread could be holding the fork_in_progress_condition inside of
 */
              }

              /* "src/python/grpcio/grpc/_cython/_cygrpc/fork_posix.pyx.pxi":65
 *             # Thread could be holding the fork_in_progress_condition inside of
 *             # block_if_fork_in_progress() when fork occurs. Reset the lock here.
 *             _fork_state.fork_in_progress_condition = threading.Condition()             # <<<<<<<<<<<<<<
 *             # A thread in return_from_user_request_generator() may hold this lock
 *             # when fork occurs.
 */
              __Pyx_GetModuleGlobalName(__pyx_t_6, __pyx_n_s_threading); if (unlikely(!__pyx_t_6)) __PYX_ERR(1, 65, __pyx_L9_error)
              __Pyx_GOTREF(__pyx_t_6);
              __pyx_t_7 = __Pyx_PyObject_GetAttrStr(__pyx_t_6, __pyx_n_s_Condition); if (unlikely(!__pyx_t_7)) __PYX_ERR(1, 65, __pyx_L9_error)
              __Pyx_GOTREF(__pyx_t_7);
              __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
              __pyx_t_6 = NULL;
              if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_7))) {
                __pyx_t_6 = PyMethod_GET_SELF(__pyx_t_7);
                if (likely(__pyx_t_6)) {
                  PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_7);
                  __Pyx_INCREF(__pyx_t_6);
                  __Pyx_INCREF(function);
                  __Pyx_DECREF_SET(__pyx_t_7, function);
                }
              }
              __pyx_t_4 = (__pyx_t_6) ? __Pyx_PyObject_CallOneArg(__pyx_t_7, __pyx_t_6) : __Pyx_PyObject_CallNoArg(__pyx_t_7);
              __Pyx_XDECREF(__pyx_t_6); __pyx_t_6 = 0;
              if (unlikely(!__pyx_t_4)) __PYX_ERR(1, 65, __pyx_L9_error)
              __Pyx_GOTREF(__pyx_t_4);
              __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
              __Pyx_GetModuleGlobalName(__pyx_t_7, __pyx_n_s_fork_state); if (unlikely(!__pyx_t_7)) __PYX_ERR(1, 65, __pyx_L9_error)
              __Pyx_GOTREF(__pyx_t_7);
              if (__Pyx_PyObject_SetAttrStr(__pyx_t_7, __pyx_n_s_fork_in_progress_condition, __pyx_t_4) < 0) __PYX_ERR(1, 65, __pyx_L9_error)
              __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
              __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;

              /* "src/python/grpcio/grpc/_cython/_cygrpc/fork_posix.pyx.pxi":68
 *             # A thread in return_from_user_request_generator() may hold this lock
 *             # when fork occurs.
 *             _fork_state.active_thread_count = _ActiveThreadCount()             # <<<<<<<<<<<<<<
 *             for state_to_reset in _fork_state.postfork_states_to_reset:
 *                 state_to_reset.reset_postfork_child()
 */
              __Pyx_GetModuleGlobalName(__pyx_t_4, __pyx_n_s_ActiveThreadCount); if (unlikely(!__pyx_t_4)) __PYX_ERR(1, 68, __pyx_L9_error)
              __Pyx_GOTREF(__pyx_t_4);
              __pyx_t_6 = NULL;
              if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_4))) {
                __pyx_t_6 = PyMethod_GET_SELF(__pyx_t_4);
                if (likely(__pyx_t_6)) {
                  PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_4);
                  __Pyx_INCREF(__pyx_t_6);
                  __Pyx_INCREF(function);
                  __Pyx_DECREF_SET(__pyx_t_4, function);
                }
              }
              __pyx_t_7 = (__pyx_t_6) ? __Pyx_PyObject_CallOneArg(__pyx_t_4, __pyx_t_6) : __Pyx_PyObject_CallNoArg(__pyx_t_4);
              __Pyx_XDECREF(__pyx_t_6); __pyx_t_6 = 0;
              if (unlikely(!__pyx_t_7)) __PYX_ERR(1, 68, __pyx_L9_error)
              __Pyx_GOTREF(__pyx_t_7);
              __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
              __Pyx_GetModuleGlobalName(__pyx_t_4, __pyx_n_s_fork_state); if (unlikely(!__pyx_t_4)) __PYX_ERR(1, 68, __pyx_L9_error)
              __Pyx_GOTREF(__pyx_t_4);
              if (__Pyx_PyObject_SetAttrStr(__pyx_t_4, __pyx_n_s_active_thread_count, __pyx_t_7) < 0) __PYX_ERR(1, 68, __pyx_L9_error)
              __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
              __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;

              /* "src/python/grpcio/grpc/_cython/_cygrpc/fork_posix.pyx.pxi":69
 *             # when fork occurs.
 *             _fork_state.active_thread_count = _ActiveThreadCount()
 *             for state_to_reset in _fork_state.postfork_states_to_reset:             # <<<<<<<<<<<<<<
 *                 state_to_reset.reset_postfork_child()
 *             _fork_state.postfork_states_to_reset = []
 */
              __Pyx_GetModuleGlobalName(__pyx_t_4, __pyx_n_s_fork_state); if (unlikely(!__pyx_t_4)) __PYX_ERR(1, 69, __pyx_L9_error)
              __Pyx_GOTREF(__pyx_t_4);
              __pyx_t_7 = __Pyx_PyObject_GetAttrStr(__pyx_t_4, __pyx_n_s_postfork_states_to_reset); if (unlikely(!__pyx_t_7)) __PYX_ERR(1, 69, __pyx_L9_error)
              __Pyx_GOTREF(__pyx_t_7);
              __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
              if (likely(PyList_CheckExact(__pyx_t_7)) || PyTuple_CheckExact(__pyx_t_7)) {
                __pyx_t_4 = __pyx_t_7; __Pyx_INCREF(__pyx_t_4); __pyx_t_8 = 0;
                __pyx_t_9 = NULL;
              } else {
                __pyx_t_8 = -1; __pyx_t_4 = PyObject_GetIter(__pyx_t_7); if (unlikely(!__pyx_t_4)) __PYX_ERR(1, 69, __pyx_L9_error)
                __Pyx_GOTREF(__pyx_t_4);
                __pyx_t_9 = Py_TYPE(__pyx_t_4)->tp_iternext; if (unlikely(!__pyx_t_9)) __PYX_ERR(1, 69, __pyx_L9_error)
              }
              __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
              for (;;) {
                if (likely(!__pyx_t_9)) {
                  if (likely(PyList_CheckExact(__pyx_t_4))) {
                    if (__pyx_t_8 >= PyList_GET_SIZE(__pyx_t_4)) break;
                    #if CYTHON_ASSUME_SAFE_MACROS && !CYTHON_AVOID_BORROWED_REFS
                    __pyx_t_7 = PyList_GET_ITEM(__pyx_t_4, __pyx_t_8); __Pyx_INCREF(__pyx_t_7); __pyx_t_8++; if (unlikely(0 < 0)) __PYX_ERR(1, 69, __pyx_L9_error)
                    #else
                    __pyx_t_7 = PySequence_ITEM(__pyx_t_4, __pyx_t_8); __pyx_t_8++; if (unlikely(!__pyx_t_7)) __PYX_ERR(1, 69, __pyx_L9_error)
                    __Pyx_GOTREF(__pyx_t_7);
                    #endif
                  } else {
                    if (__pyx_t_8 >= PyTuple_GET_SIZE(__pyx_t_4)) break;
                    #if CYTHON_ASSUME_SAFE_MACROS && !CYTHON_AVOID_BORROWED_REFS
                    __pyx_t_7 = PyTuple_GET_ITEM(__pyx_t_4, __pyx_t_8); __Pyx_INCREF(__pyx_t_7); __pyx_t_8++; if (unlikely(0 < 0)) __PYX_ERR(1, 69, __pyx_L9_error)
                    #else
                    __pyx_t_7 = PySequence_ITEM(__pyx_t_4, __pyx_t_8); __pyx_t_8++; if (unlikely(!__pyx_t_7)) __PYX_ERR(1, 69, __pyx_L9_error)
                    __Pyx_GOTREF(__pyx_t_7);
                    #endif
                  }
                } else {
                  __pyx_t_7 = __pyx_t_9(__pyx_t_4);
                  if (unlikely(!__pyx_t_7)) {
                    PyObject* exc_type = PyErr_Occurred();
                    if (exc_type) {
                      if (likely(__Pyx_PyErr_GivenExceptionMatches(exc_type, PyExc_StopIteration))) PyErr_Clear();
                      else __PYX_ERR(1, 69, __pyx_L9_error)
                    }
                    break;
                  }
                  __Pyx_GOTREF(__pyx_t_7);
                }
                __Pyx_XDECREF_SET(__pyx_v_state_to_reset, __pyx_t_7);
                __pyx_t_7 = 0;

                /* "src/python/grpcio/grpc/_cython/_cygrpc/fork_posix.pyx.pxi":70
 *             _fork_state.active_thread_count = _ActiveThreadCount()
 *             for state_to_reset in _fork_state.postfork_states_to_reset:
 *                 state_to_reset.reset_postfork_child()             # <<<<<<<<<<<<<<
 *             _fork_state.postfork_states_to_reset = []
 *             _fork_state.fork_epoch += 1
 */
                __pyx_t_6 = __Pyx_PyObject_GetAttrStr(__pyx_v_state_to_reset, __pyx_n_s_reset_postfork_child); if (unlikely(!__pyx_t_6)) __PYX_ERR(1, 70, __pyx_L9_error)
                __Pyx_GOTREF(__pyx_t_6);
                __pyx_t_10 = NULL;
                if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_6))) {
                  __pyx_t_10 = PyMethod_GET_SELF(__pyx_t_6);
                  if (likely(__pyx_t_10)) {
                    PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_6);
                    __Pyx_INCREF(__pyx_t_10);
                    __Pyx_INCREF(function);
                    __Pyx_DECREF_SET(__pyx_t_6, function);
                  }
                }
                __pyx_t_7 = (__pyx_t_10) ? __Pyx_PyObject_CallOneArg(__pyx_t_6, __pyx_t_10) : __Pyx_PyObject_CallNoArg(__pyx_t_6);
                __Pyx_XDECREF(__pyx_t_10); __pyx_t_10 = 0;
                if (unlikely(!__pyx_t_7)) __PYX_ERR(1, 70, __pyx_L9_error)
                __Pyx_GOTREF(__pyx_t_7);
                __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
                __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;

                /* "src/python/grpcio/grpc/_cython/_cygrpc/fork_posix.pyx.pxi":69
 *             # when fork occurs.
 *             _fork_state.active_thread_count = _ActiveThreadCount()
 *             for state_to_reset in _fork_state.postfork_states_to_reset:             # <<<<<<<<<<<<<<
 *                 state_to_reset.reset_postfork_child()
 *             _fork_state.postfork_states_to_reset = []
 */
              }
              __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;

              /* "src/python/grpcio/grpc/_cython/_cygrpc/fork_posix.pyx.pxi":71
 *             for state_to_reset in _fork_state.postfork_states_to_reset:
 *                 state_to_reset.reset_postfork_child()
 *             _fork_state.postfork_states_to_reset = []             # <<<<<<<<<<<<<<
 *             _fork_state.fork_epoch += 1
 *             for channel in _fork_state.channels:
 */
              __pyx_t_4 = PyList_New(0); if (unlikely(!__pyx_t_4)) __PYX_ERR(1, 71, __pyx_L9_error)
              __Pyx_GOTREF(__pyx_t_4);
              __Pyx_GetModuleGlobalName(__pyx_t_7, __pyx_n_s_fork_state); if (unlikely(!__pyx_t_7)) __PYX_ERR(1, 71, __pyx_L9_error)
              __Pyx_GOTREF(__pyx_t_7);
              if (__Pyx_PyObject_SetAttrStr(__pyx_t_7, __pyx_n_s_postfork_states_to_reset, __pyx_t_4) < 0) __PYX_ERR(1, 71, __pyx_L9_error)
              __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
              __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;

              /* "src/python/grpcio/grpc/_cython/_cygrpc/fork_posix.pyx.pxi":72
 *                 state_to_reset.reset_postfork_child()
 *             _fork_state.postfork_states_to_reset = []
 *             _fork_state.fork_epoch += 1             # <<<<<<<<<<<<<<
 *             for channel in _fork_state.channels:
 *                 channel._close_on_fork()
 */
              __Pyx_GetModuleGlobalName(__pyx_t_7, __pyx_n_s_fork_state); if (unlikely(!__pyx_t_7)) __PYX_ERR(1, 72, __pyx_L9_error)
              __Pyx_GOTREF(__pyx_t_7);
              __pyx_t_4 = __Pyx_PyObject_GetAttrStr(__pyx_t_7, __pyx_n_s_fork_epoch); if (unlikely(!__pyx_t_4)) __PYX_ERR(1, 72, __pyx_L9_error)
              __Pyx_GOTREF(__pyx_t_4);
              __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
              __pyx_t_7 = __Pyx_PyInt_AddObjC(__pyx_t_4, __pyx_int_1, 1, 1, 0); if (unlikely(!__pyx_t_7)) __PYX_ERR(1, 72, __pyx_L9_error)
              __Pyx_GOTREF(__pyx_t_7);
              __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
              __Pyx_GetModuleGlobalName(__pyx_t_4, __pyx_n_s_fork_state); if (unlikely(!__pyx_t_4)) __PYX_ERR(1, 72, __pyx_L9_error)
              __Pyx_GOTREF(__pyx_t_4);
              if (__Pyx_PyObject_SetAttrStr(__pyx_t_4, __pyx_n_s_fork_epoch, __pyx_t_7) < 0) __PYX_ERR(1, 72, __pyx_L9_error)
              __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
              __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;

              /* "src/python/grpcio/grpc/_cython/_cygrpc/fork_posix.pyx.pxi":73
 *             _fork_state.postfork_states_to_reset = []
 *             _fork_state.fork_epoch += 1
 *             for channel in _fork_state.channels:             # <<<<<<<<<<<<<<
 *                 channel._close_on_fork()
 *             with _fork_state.fork_in_progress_condition:
 */
              __Pyx_GetModuleGlobalName(__pyx_t_4, __pyx_n_s_fork_state); if (unlikely(!__pyx_t_4)) __PYX_ERR(1, 73, __pyx_L9_error)
              __Pyx_GOTREF(__pyx_t_4);
              __pyx_t_7 = __Pyx_PyObject_GetAttrStr(__pyx_t_4, __pyx_n_s_channels); if (unlikely(!__pyx_t_7)) __PYX_ERR(1, 73, __pyx_L9_error)
              __Pyx_GOTREF(__pyx_t_7);
              __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
              if (likely(PyList_CheckExact(__pyx_t_7)) || PyTuple_CheckExact(__pyx_t_7)) {
                __pyx_t_4 = __pyx_t_7; __Pyx_INCREF(__pyx_t_4); __pyx_t_8 = 0;
                __pyx_t_9 = NULL;
              } else {
                __pyx_t_8 = -1; __pyx_t_4 = PyObject_GetIter(__pyx_t_7); if (unlikely(!__pyx_t_4)) __PYX_ERR(1, 73, __pyx_L9_error)
                __Pyx_GOTREF(__pyx_t_4);
                __pyx_t_9 = Py_TYPE(__pyx_t_4)->tp_iternext; if (unlikely(!__pyx_t_9)) __PYX_ERR(1, 73, __pyx_L9_error)
              }
              __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
              for (;;) {
                if (likely(!__pyx_t_9)) {
                  if (likely(PyList_CheckExact(__pyx_t_4))) {
                    if (__pyx_t_8 >= PyList_GET_SIZE(__pyx_t_4)) break;
                    #if CYTHON_ASSUME_SAFE_MACROS && !CYTHON_AVOID_BORROWED_REFS
                    __pyx_t_7 = PyList_GET_ITEM(__pyx_t_4, __pyx_t_8); __Pyx_INCREF(__pyx_t_7); __pyx_t_8++; if (unlikely(0 < 0)) __PYX_ERR(1, 73, __pyx_L9_error)
                    #else
                    __pyx_t_7 = PySequence_ITEM(__pyx_t_4, __pyx_t_8); __pyx_t_8++; if (unlikely(!__pyx_t_7)) __PYX_ERR(1, 73, __pyx_L9_error)
                    __Pyx_GOTREF(__pyx_t_7);
                    #endif
                  } else {
                    if (__pyx_t_8 >= PyTuple_GET_SIZE(__pyx_t_4)) break;
                    #if CYTHON_ASSUME_SAFE_MACROS && !CYTHON_AVOID_BORROWED_REFS
                    __pyx_t_7 = PyTuple_GET_ITEM(__pyx_t_4, __pyx_t_8); __Pyx_INCREF(__pyx_t_7); __pyx_t_8++; if (unlikely(0 < 0)) __PYX_ERR(1, 73, __pyx_L9_error)
                    #else
                    __pyx_t_7 = PySequence_ITEM(__pyx_t_4, __pyx_t_8); __pyx_t_8++; if (unlikely(!__pyx_t_7)) __PYX_ERR(1, 73, __pyx_L9_error)
                    __Pyx_GOTREF(__pyx_t_7);
                    #endif
                  }
                } else {
                  __pyx_t_7 = __pyx_t_9(__pyx_t_4);
                  if (unlikely(!__pyx_t_7)) {
                    PyObject* exc_type = PyErr_Occurred();
                    if (exc_type) {
                      if (likely(__Pyx_PyErr_GivenExceptionMatches(exc_type, PyExc_StopIteration))) PyErr_Clear();
                      else __PYX_ERR(1, 73, __pyx_L9_error)
                    }
                    break;
                  }
                  __Pyx_GOTREF(__pyx_t_7);
                }
                __Pyx_XDECREF_SET(__pyx_v_channel, __pyx_t_7);
                __pyx_t_7 = 0;

                /* "src/python/grpcio/grpc/_cython/_cygrpc/fork_posix.pyx.pxi":74
 *             _fork_state.fork_epoch += 1
 *             for channel in _fork_state.channels:
 *                 channel._close_on_fork()             # <<<<<<<<<<<<<<
 *             with _fork_state.fork_in_progress_condition:
 *                 _fork_state.fork_in_progress = False
 */
                __pyx_t_6 = __Pyx_PyObject_GetAttrStr(__pyx_v_channel, __pyx_n_s_close_on_fork); if (unlikely(!__pyx_t_6)) __PYX_ERR(1, 74, __pyx_L9_error)
                __Pyx_GOTREF(__pyx_t_6);
                __pyx_t_10 = NULL;
                if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_6))) {
                  __pyx_t_10 = PyMethod_GET_SELF(__pyx_t_6);
                  if (likely(__pyx_t_10)) {
                    PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_6);
                    __Pyx_INCREF(__pyx_t_10);
                    __Pyx_INCREF(function);
                    __Pyx_DECREF_SET(__pyx_t_6, function);
                  }
                }
                __pyx_t_7 = (__pyx_t_10) ? __Pyx_PyObject_CallOneArg(__pyx_t_6, __pyx_t_10) : __Pyx_PyObject_CallNoArg(__pyx_t_6);
                __Pyx_XDECREF(__pyx_t_10); __pyx_t_10 = 0;
                if (unlikely(!__pyx_t_7)) __PYX_ERR(1, 74, __pyx_L9_error)
                __Pyx_GOTREF(__pyx_t_7);
                __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
                __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;

                /* "src/python/grpcio/grpc/_cython/_cygrpc/fork_posix.pyx.pxi":73
 *             _fork_state.postfork_states_to_reset = []
 *             _fork_state.fork_epoch += 1
 *             for channel in _fork_state.channels:             # <<<<<<<<<<<<<<
 *                 channel._close_on_fork()
 *             with _fork_state.fork_in_progress_condition:
 */
              }
              __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;

              /* "src/python/grpcio/grpc/_cython/_cygrpc/fork_posix.pyx.pxi":75
 *             for channel in _fork_state.channels:
 *                 channel._close_on_fork()
 *             with _fork_state.fork_in_progress_condition:             # <<<<<<<<<<<<<<
 *                 _fork_state.fork_in_progress = False
 *         except:
 */
              /*with:*/ {
                __Pyx_GetModuleGlobalName(__pyx_t_4, __pyx_n_s_fork_state); if (unlikely(!__pyx_t_4)) __PYX_ERR(1, 75, __pyx_L9_error)
                __Pyx_GOTREF(__pyx_t_4);
                __pyx_t_7 = __Pyx_PyObject_GetAttrStr(__pyx_t_4, __pyx_n_s_fork_in_progress_condition); if (unlikely(!__pyx_t_7)) __PYX_ERR(1, 75, __pyx_L9_error)
                __Pyx_GOTREF(__pyx_t_7);
                __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
                __pyx_t_11 = __Pyx_PyObject_LookupSpecial(__pyx_t_7, __pyx_n_s_exit); if (unlikely(!__pyx_t_11)) __PYX_ERR(1, 75, __pyx_L9_error)
                __Pyx_GOTREF(__pyx_t_11);
                __pyx_t_6 = __Pyx_PyObject_LookupSpecial(__pyx_t_7, __pyx_n_s_enter); if (unlikely(!__pyx_t_6)) __PYX_ERR(1, 75, __pyx_L20_error)
                __Pyx_GOTREF(__pyx_t_6);
                __pyx_t_10 = NULL;
                if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_6))) {
                  __pyx_t_10 = PyMethod_GET_SELF(__pyx_t_6);
                  if (likely(__pyx_t_10)) {
                    PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_6);
                    __Pyx_INCREF(__pyx_t_10);
                    __Pyx_INCREF(function);
                    __Pyx_DECREF_SET(__pyx_t_6, function);
                  }
                }
                __pyx_t_4 = (__pyx_t_10) ? __Pyx_PyObject_CallOneArg(__pyx_t_6, __pyx_t_10) : __Pyx_PyObject_CallNoArg(__pyx_t_6);
                __Pyx_XDECREF(__pyx_t_10); __pyx_t_10 = 0;
                if (unlikely(!__pyx_t_4)) __PYX_ERR(1, 75, __pyx_L20_error)
                __Pyx_GOTREF(__pyx_t_4);
                __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
                __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
                __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
                /*try:*/ {
                  {
                    __Pyx_PyThreadState_declare
                    __Pyx_PyThreadState_assign
                    __Pyx_ExceptionSave(&__pyx_t_12, &__pyx_t_13, &__pyx_t_14);
                    __Pyx_XGOTREF(__pyx_t_12);
                    __Pyx_XGOTREF(__pyx_t_13);
                    __Pyx_XGOTREF(__pyx_t_14);
                    /*try:*/ {

                      /* "src/python/grpcio/grpc/_cython/_cygrpc/fork_posix.pyx.pxi":76
 *                 channel._close_on_fork()
 *             with _fork_state.fork_in_progress_condition:
 *                 _fork_state.fork_in_progress = False             # <<<<<<<<<<<<<<
 *         except:
 *             _LOGGER.error('Exiting child due to raised exception')
 */
                      __Pyx_GetModuleGlobalName(__pyx_t_7, __pyx_n_s_fork_state); if (unlikely(!__pyx_t_7)) __PYX_ERR(1, 76, __pyx_L24_error)
                      __Pyx_GOTREF(__pyx_t_7);
                      if (__Pyx_PyObject_SetAttrStr(__pyx_t_7, __pyx_n_s_fork_in_progress, Py_False) < 0) __PYX_ERR(1, 76, __pyx_L24_error)
                      __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;

                      /* "src/python/grpcio/grpc/_cython/_cygrpc/fork_posix.pyx.pxi":75
 *             for channel in _fork_state.channels:
 *                 channel._close_on_fork()
 *             with _fork_state.fork_in_progress_condition:             # <<<<<<<<<<<<<<
 *                 _fork_state.fork_in_progress = False
 *         except:
 */
                    }
                    __Pyx_XDECREF(__pyx_t_12); __pyx_t_12 = 0;
                    __Pyx_XDECREF(__pyx_t_13); __pyx_t_13 = 0;
                    __Pyx_XDECREF(__pyx_t_14); __pyx_t_14 = 0;
                    goto __pyx_L29_try_end;
                    __pyx_L24_error:;
                    __Pyx_XDECREF(__pyx_t_10); __pyx_t_10 = 0;
                    __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0;
                    __Pyx_XDECREF(__pyx_t_6); __pyx_t_6 = 0;
                    __Pyx_XDECREF(__pyx_t_7); __pyx_t_7 = 0;
                    /*except:*/ {
                      __Pyx_AddTraceback("grpc._cython.cygrpc.__postfork_child", __pyx_clineno, __pyx_lineno, __pyx_filename);
                      if (__Pyx_GetException(&__pyx_t_7, &__pyx_t_4, &__pyx_t_6) < 0) __PYX_ERR(1, 75, __pyx_L26_except_error)
                      __Pyx_GOTREF(__pyx_t_7);
                      __Pyx_GOTREF(__pyx_t_4);
                      __Pyx_GOTREF(__pyx_t_6);
                      __pyx_t_10 = PyTuple_Pack(3, __pyx_t_7, __pyx_t_4, __pyx_t_6); if (unlikely(!__pyx_t_10)) __PYX_ERR(1, 75, __pyx_L26_except_error)
                      __Pyx_GOTREF(__pyx_t_10);
                      __pyx_t_15 = __Pyx_PyObject_Call(__pyx_t_11, __pyx_t_10, NULL);
                      __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0;
                      __Pyx_DECREF(__pyx_t_10); __pyx_t_10 = 0;
                      if (unlikely(!__pyx_t_15)) __PYX_ERR(1, 75, __pyx_L26_except_error)
                      __Pyx_GOTREF(__pyx_t_15);
                      __pyx_t_5 = __Pyx_PyObject_IsTrue(__pyx_t_15);
                      __Pyx_DECREF(__pyx_t_15); __pyx_t_15 = 0;
                      if (__pyx_t_5 < 0) __PYX_ERR(1, 75, __pyx_L26_except_error)
                      __pyx_t_16 = ((!(__pyx_t_5 != 0)) != 0);
                      if (__pyx_t_16) {
                        __Pyx_GIVEREF(__pyx_t_7);
                        __Pyx_GIVEREF(__pyx_t_4);
                        __Pyx_XGIVEREF(__pyx_t_6);
                        __Pyx_ErrRestoreWithState(__pyx_t_7, __pyx_t_4, __pyx_t_6);
                        __pyx_t_7 = 0; __pyx_t_4 = 0; __pyx_t_6 = 0; 
                        __PYX_ERR(1, 75, __pyx_L26_except_error)
                      }
                      __Pyx_XDECREF(__pyx_t_7); __pyx_t_7 = 0;
                      __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0;
                      __Pyx_XDECREF(__pyx_t_6); __pyx_t_6 = 0;
                      goto __pyx_L25_exception_handled;
                    }
                    __pyx_L26_except_error:;
                    __Pyx_XGIVEREF(__pyx_t_12);
                    __Pyx_XGIVEREF(__pyx_t_13);
                    __Pyx_XGIVEREF(__pyx_t_14);
                    __Pyx_ExceptionReset(__pyx_t_12, __pyx_t_13, __pyx_t_14);
                    goto __pyx_L9_error;
                    __pyx_L25_exception_handled:;
                    __Pyx_XGIVEREF(__pyx_t_12);
                    __Pyx_XGIVEREF(__pyx_t_13);
                    __Pyx_XGIVEREF(__pyx_t_14);
                    __Pyx_ExceptionReset(__pyx_t_12, __pyx_t_13, __pyx_t_14);
                    __pyx_L29_try_end:;
                  }
                }
                /*finally:*/ {
                  /*normal exit:*/{
                    if (__pyx_t_11) {
                      __pyx_t_14 = __Pyx_PyObject_Call(__pyx_t_11, __pyx_tuple__17, NULL);
                      __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0;
                      if (unlikely(!__pyx_t_14)) __PYX_ERR(1, 75, __pyx_L9_error)
                      __Pyx_GOTREF(__pyx_t_14);
                      __Pyx_DECREF(__pyx_t_14); __pyx_t_14 = 0;
                    }
                    goto __pyx_L23;
                  }
                  __pyx_L23:;
                }
                goto __pyx_L33;
                __pyx_L20_error:;
                __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0;
                goto __pyx_L9_error;
                __pyx_L33:;
              }

              /* "src/python/grpcio/grpc/_cython/_cygrpc/fork_posix.pyx.pxi":60
 * cdef void __postfork_child() nogil:
 *     with gil:
 *         try:             # <<<<<<<<<<<<<<
 *             if _fork_handler_failed:
 *                 return
 */
            }
            __Pyx_XDECREF(__pyx_t_1); __pyx_t_1 = 0;
            __Pyx_XDECREF(__pyx_t_2); __pyx_t_2 = 0;
            __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0;
            goto __pyx_L14_try_end;
            __pyx_L9_error:;
            __Pyx_XDECREF(__pyx_t_10); __pyx_t_10 = 0;
            __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0;
            __Pyx_XDECREF(__pyx_t_6); __pyx_t_6 = 0;
            __Pyx_XDECREF(__pyx_t_7); __pyx_t_7 = 0;

            /* "src/python/grpcio/grpc/_cython/_cygrpc/fork_posix.pyx.pxi":77
 *             with _fork_state.fork_in_progress_condition:
 *                 _fork_state.fork_in_progress = False
 *         except:             # <<<<<<<<<<<<<<
 *             _LOGGER.error('Exiting child due to raised exception')
 *             _LOGGER.error(sys.exc_info()[0])
 */
            /*except:*/ {
              __Pyx_AddTraceback("grpc._cython.cygrpc.__postfork_child", __pyx_clineno, __pyx_lineno, __pyx_filename);
              if (__Pyx_GetException(&__pyx_t_6, &__pyx_t_4, &__pyx_t_7) < 0) __PYX_ERR(1, 77, __pyx_L11_except_error)
              __Pyx_GOTREF(__pyx_t_6);
              __Pyx_GOTREF(__pyx_t_4);
              __Pyx_GOTREF(__pyx_t_7);

              /* "src/python/grpcio/grpc/_cython/_cygrpc/fork_posix.pyx.pxi":78
 *                 _fork_state.fork_in_progress = False
 *         except:
 *             _LOGGER.error('Exiting child due to raised exception')             # <<<<<<<<<<<<<<
 *             _LOGGER.error(sys.exc_info()[0])
 *             os._exit(os.EX_USAGE)
 */
              __Pyx_GetModuleGlobalName(__pyx_t_17, __pyx_n_s_LOGGER); if (unlikely(!__pyx_t_17)) __PYX_ERR(1, 78, __pyx_L11_except_error)
              __Pyx_GOTREF(__pyx_t_17);
              __pyx_t_18 = __Pyx_PyObject_GetAttrStr(__pyx_t_17, __pyx_n_s_error); if (unlikely(!__pyx_t_18)) __PYX_ERR(1, 78, __pyx_L11_except_error)
              __Pyx_GOTREF(__pyx_t_18);
              __Pyx_DECREF(__pyx_t_17); __pyx_t_17 = 0;
              __pyx_t_17 = NULL;
              if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_18))) {
                __pyx_t_17 = PyMethod_GET_SELF(__pyx_t_18);
                if (likely(__pyx_t_17)) {
                  PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_18);
                  __Pyx_INCREF(__pyx_t_17);
                  __Pyx_INCREF(function);
                  __Pyx_DECREF_SET(__pyx_t_18, function);
                }
              }
              __pyx_t_10 = (__pyx_t_17) ? __Pyx_PyObject_Call2Args(__pyx_t_18, __pyx_t_17, __pyx_kp_s_Exiting_child_due_to_raised_exce) : __Pyx_PyObject_CallOneArg(__pyx_t_18, __pyx_kp_s_Exiting_child_due_to_raised_exce);
              __Pyx_XDECREF(__pyx_t_17); __pyx_t_17 = 0;
              if (unlikely(!__pyx_t_10)) __PYX_ERR(1, 78, __pyx_L11_except_error)
              __Pyx_GOTREF(__pyx_t_10);
              __Pyx_DECREF(__pyx_t_18); __pyx_t_18 = 0;
              __Pyx_DECREF(__pyx_t_10); __pyx_t_10 = 0;

              /* "src/python/grpcio/grpc/_cython/_cygrpc/fork_posix.pyx.pxi":79
 *         except:
 *             _LOGGER.error('Exiting child due to raised exception')
 *             _LOGGER.error(sys.exc_info()[0])             # <<<<<<<<<<<<<<
 *             os._exit(os.EX_USAGE)
 * 
 */
              __Pyx_GetModuleGlobalName(__pyx_t_18, __pyx_n_s_LOGGER); if (unlikely(!__pyx_t_18)) __PYX_ERR(1, 79, __pyx_L11_except_error)
              __Pyx_GOTREF(__pyx_t_18);
              __pyx_t_17 = __Pyx_PyObject_GetAttrStr(__pyx_t_18, __pyx_n_s_error); if (unlikely(!__pyx_t_17)) __PYX_ERR(1, 79, __pyx_L11_except_error)
              __Pyx_GOTREF(__pyx_t_17);
              __Pyx_DECREF(__pyx_t_18); __pyx_t_18 = 0;
              __Pyx_GetModuleGlobalName(__pyx_t_19, __pyx_n_s_sys); if (unlikely(!__pyx_t_19)) __PYX_ERR(1, 79, __pyx_L11_except_error)
              __Pyx_GOTREF(__pyx_t_19);
              __pyx_t_20 = __Pyx_PyObject_GetAttrStr(__pyx_t_19, __pyx_n_s_exc_info); if (unlikely(!__pyx_t_20)) __PYX_ERR(1, 79, __pyx_L11_except_error)
              __Pyx_GOTREF(__pyx_t_20);
              __Pyx_DECREF(__pyx_t_19); __pyx_t_19 = 0;
              __pyx_t_19 = NULL;
              if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_20))) {
                __pyx_t_19 = PyMethod_GET_SELF(__pyx_t_20);
                if (likely(__pyx_t_19)) {
                  PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_20);
                  __Pyx_INCREF(__pyx_t_19);
                  __Pyx_INCREF(function);
                  __Pyx_DECREF_SET(__pyx_t_20, function);
                }
              }
              __pyx_t_18 = (__pyx_t_19) ? __Pyx_PyObject_CallOneArg(__pyx_t_20, __pyx_t_19) : __Pyx_PyObject_CallNoArg(__pyx_t_20);
              __Pyx_XDECREF(__pyx_t_19); __pyx_t_19 = 0;
              if (unlikely(!__pyx_t_18)) __PYX_ERR(1, 79, __pyx_L11_except_error)
              __Pyx_GOTREF(__pyx_t_18);
              __Pyx_DECREF(__pyx_t_20); __pyx_t_20 = 0;
              __pyx_t_20 = __Pyx_GetItemInt(__pyx_t_18, 0, long, 1, __Pyx_PyInt_From_long, 0, 0, 1); if (unlikely(!__pyx_t_20)) __PYX_ERR(1, 79, __pyx_L11_except_error)
              __Pyx_GOTREF(__pyx_t_20);
              __Pyx_DECREF(__pyx_t_18); __pyx_t_18 = 0;
              __pyx_t_18 = NULL;
              if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_17))) {
                __pyx_t_18 = PyMethod_GET_SELF(__pyx_t_17);
                if (likely(__pyx_t_18)) {
                  PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_17);
                  __Pyx_INCREF(__pyx_t_18);
                  __Pyx_INCREF(function);
                  __Pyx_DECREF_SET(__pyx_t_17, function);
                }
              }
              __pyx_t_10 = (__pyx_t_18) ? __Pyx_PyObject_Call2Args(__pyx_t_17, __pyx_t_18, __pyx_t_20) : __Pyx_PyObject_CallOneArg(__pyx_t_17, __pyx_t_20);
              __Pyx_XDECREF(__pyx_t_18); __pyx_t_18 = 0;
              __Pyx_DECREF(__pyx_t_20); __pyx_t_20 = 0;
              if (unlikely(!__pyx_t_10)) __PYX_ERR(1, 79, __pyx_L11_except_error)
              __Pyx_GOTREF(__pyx_t_10);
              __Pyx_DECREF(__pyx_t_17); __pyx_t_17 = 0;
              __Pyx_DECREF(__pyx_t_10); __pyx_t_10 = 0;

              /* "src/python/grpcio/grpc/_cython/_cygrpc/fork_posix.pyx.pxi":80
 *             _LOGGER.error('Exiting child due to raised exception')
 *             _LOGGER.error(sys.exc_info()[0])
 *             os._exit(os.EX_USAGE)             # <<<<<<<<<<<<<<
 * 
 *     if grpc_is_initialized() > 0:
 */
              __Pyx_GetModuleGlobalName(__pyx_t_17, __pyx_n_s_os); if (unlikely(!__pyx_t_17)) __PYX_ERR(1, 80, __pyx_L11_except_error)
              __Pyx_GOTREF(__pyx_t_17);
              __pyx_t_20 = __Pyx_PyObject_GetAttrStr(__pyx_t_17, __pyx_n_s_exit_2); if (unlikely(!__pyx_t_20)) __PYX_ERR(1, 80, __pyx_L11_except_error)
              __Pyx_GOTREF(__pyx_t_20);
              __Pyx_DECREF(__pyx_t_17); __pyx_t_17 = 0;
              __Pyx_GetModuleGlobalName(__pyx_t_17, __pyx_n_s_os); if (unlikely(!__pyx_t_17)) __PYX_ERR(1, 80, __pyx_L11_except_error)
              __Pyx_GOTREF(__pyx_t_17);
              __pyx_t_18 = __Pyx_PyObject_GetAttrStr(__pyx_t_17, __pyx_n_s_EX_USAGE); if (unlikely(!__pyx_t_18)) __PYX_ERR(1, 80, __pyx_L11_except_error)
              __Pyx_GOTREF(__pyx_t_18);
              __Pyx_DECREF(__pyx_t_17); __pyx_t_17 = 0;
              __pyx_t_17 = NULL;
              if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_20))) {
                __pyx_t_17 = PyMethod_GET_SELF(__pyx_t_20);
                if (likely(__pyx_t_17)) {
                  PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_20);
                  __Pyx_INCREF(__pyx_t_17);
                  __Pyx_INCREF(function);
                  __Pyx_DECREF_SET(__pyx_t_20, function);
                }
              }
              __pyx_t_10 = (__pyx_t_17) ? __Pyx_PyObject_Call2Args(__pyx_t_20, __pyx_t_17, __pyx_t_18) : __Pyx_PyObject_CallOneArg(__pyx_t_20, __pyx_t_18);
              __Pyx_XDECREF(__pyx_t_17); __pyx_t_17 = 0;
              __Pyx_DECREF(__pyx_t_18); __pyx_t_18 = 0;
              if (unlikely(!__pyx_t_10)) __PYX_ERR(1, 80, __pyx_L11_except_error)
              __Pyx_GOTREF(__pyx_t_10);
              __Pyx_DECREF(__pyx_t_20); __pyx_t_20 = 0;
              __Pyx_DECREF(__pyx_t_10); __pyx_t_10 = 0;
              __Pyx_XDECREF(__pyx_t_6); __pyx_t_6 = 0;
              __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0;
              __Pyx_XDECREF(__pyx_t_7); __pyx_t_7 = 0;
              goto __pyx_L10_exception_handled;
            }
            __pyx_L11_except_error:;

            /* "src/python/grpcio/grpc/_cython/_cygrpc/fork_posix.pyx.pxi":60
 * cdef void __postfork_child() nogil:
 *     with gil:
 *         try:             # <<<<<<<<<<<<<<
 *             if _fork_handler_failed:
 *                 return
 */
            __Pyx_XGIVEREF(__pyx_t_1);
            __Pyx_XGIVEREF(__pyx_t_2);
            __Pyx_XGIVEREF(__pyx_t_3);
            __Pyx_ExceptionReset(__pyx_t_1, __pyx_t_2, __pyx_t_3);
            goto __pyx_L7_error;
            __pyx_L13_try_return:;
            __Pyx_XGIVEREF(__pyx_t_1);
            __Pyx_XGIVEREF(__pyx_t_2);
            __Pyx_XGIVEREF(__pyx_t_3);
            __Pyx_ExceptionReset(__pyx_t_1, __pyx_t_2, __pyx_t_3);
            goto __pyx_L6_return;
            __pyx_L10_exception_handled:;
            __Pyx_XGIVEREF(__pyx_t_1);
            __Pyx_XGIVEREF(__pyx_t_2);
            __Pyx_XGIVEREF(__pyx_t_3);
            __Pyx_ExceptionReset(__pyx_t_1, __pyx_t_2, __pyx_t_3);
            __pyx_L14_try_end:;
          }
        }

        /* "src/python/grpcio/grpc/_cython/_cygrpc/fork_posix.pyx.pxi":59
 * 
 * cdef void __postfork_child() nogil:
 *     with gil:             # <<<<<<<<<<<<<<
 *         try:
 *             if _fork_handler_failed:
 */
        /*finally:*/ {
          /*normal exit:*/{
            #ifdef WITH_THREAD
            __Pyx_PyGILState_Release(__pyx_gilstate_save);
            #endif
            goto __pyx_L8;
          }
          __pyx_L6_return: {
            #ifdef WITH_THREAD
            __Pyx_PyGILState_Release(__pyx_gilstate_save);
            #endif
            goto __pyx_L3_return;
          }
          __pyx_L7_error: {
            #ifdef WITH_THREAD
            __Pyx_PyGILState_Release(__pyx_gilstate_save);
            #endif
            goto __pyx_L4_error;
          }
          __pyx_L8:;
        }
    }

    /* "src/python/grpcio/grpc/_cython/_cygrpc/fork_posix.pyx.pxi":82
 *             os._exit(os.EX_USAGE)
 * 
 *     if grpc_is_initialized() > 0:             # <<<<<<<<<<<<<<
 *         with gil:
 *             _LOGGER.error('Failed to shutdown gRPC Core after fork()')
 */
    __pyx_t_16 = ((grpc_is_initialized() > 0) != 0);
    if (__pyx_t_16) {

      /* "src/python/grpcio/grpc/_cython/_cygrpc/fork_posix.pyx.pxi":83
 * 
 *     if grpc_is_initialized() > 0:
 *         with gil:             # <<<<<<<<<<<<<<
 *             _LOGGER.error('Failed to shutdown gRPC Core after fork()')
 *             os._exit(os.EX_USAGE)
 */
      {
          #ifdef WITH_THREAD
          PyGILState_STATE __pyx_gilstate_save = __Pyx_PyGILState_Ensure();
          #endif
          /*try:*/ {

            /* "src/python/grpcio/grpc/_cython/_cygrpc/fork_posix.pyx.pxi":84
 *     if grpc_is_initialized() > 0:
 *         with gil:
 *             _LOGGER.error('Failed to shutdown gRPC Core after fork()')             # <<<<<<<<<<<<<<
 *             os._exit(os.EX_USAGE)
 * 
 */
            __Pyx_GetModuleGlobalName(__pyx_t_4, __pyx_n_s_LOGGER); if (unlikely(!__pyx_t_4)) __PYX_ERR(1, 84, __pyx_L38_error)
            __Pyx_GOTREF(__pyx_t_4);
            __pyx_t_6 = __Pyx_PyObject_GetAttrStr(__pyx_t_4, __pyx_n_s_error); if (unlikely(!__pyx_t_6)) __PYX_ERR(1, 84, __pyx_L38_error)
            __Pyx_GOTREF(__pyx_t_6);
            __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
            __pyx_t_4 = NULL;
            if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_6))) {
              __pyx_t_4 = PyMethod_GET_SELF(__pyx_t_6);
              if (likely(__pyx_t_4)) {
                PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_6);
                __Pyx_INCREF(__pyx_t_4);
                __Pyx_INCREF(function);
                __Pyx_DECREF_SET(__pyx_t_6, function);
              }
            }
            __pyx_t_7 = (__pyx_t_4) ? __Pyx_PyObject_Call2Args(__pyx_t_6, __pyx_t_4, __pyx_kp_s_Failed_to_shutdown_gRPC_Core_aft) : __Pyx_PyObject_CallOneArg(__pyx_t_6, __pyx_kp_s_Failed_to_shutdown_gRPC_Core_aft);
            __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0;
            if (unlikely(!__pyx_t_7)) __PYX_ERR(1, 84, __pyx_L38_error)
            __Pyx_GOTREF(__pyx_t_7);
            __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
            __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;

            /* "src/python/grpcio/grpc/_cython/_cygrpc/fork_posix.pyx.pxi":85
 *         with gil:
 *             _LOGGER.error('Failed to shutdown gRPC Core after fork()')
 *             os._exit(os.EX_USAGE)             # <<<<<<<<<<<<<<
 * 
 * 
 */
            __Pyx_GetModuleGlobalName(__pyx_t_6, __pyx_n_s_os); if (unlikely(!__pyx_t_6)) __PYX_ERR(1, 85, __pyx_L38_error)
            __Pyx_GOTREF(__pyx_t_6);
            __pyx_t_4 = __Pyx_PyObject_GetAttrStr(__pyx_t_6, __pyx_n_s_exit_2); if (unlikely(!__pyx_t_4)) __PYX_ERR(1, 85, __pyx_L38_error)
            __Pyx_GOTREF(__pyx_t_4);
            __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
            __Pyx_GetModuleGlobalName(__pyx_t_6, __pyx_n_s_os); if (unlikely(!__pyx_t_6)) __PYX_ERR(1, 85, __pyx_L38_error)
            __Pyx_GOTREF(__pyx_t_6);
            __pyx_t_10 = __Pyx_PyObject_GetAttrStr(__pyx_t_6, __pyx_n_s_EX_USAGE); if (unlikely(!__pyx_t_10)) __PYX_ERR(1, 85, __pyx_L38_error)
            __Pyx_GOTREF(__pyx_t_10);
            __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
            __pyx_t_6 = NULL;
            if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_4))) {
              __pyx_t_6 = PyMethod_GET_SELF(__pyx_t_4);
              if (likely(__pyx_t_6)) {
                PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_4);
                __Pyx_INCREF(__pyx_t_6);
                __Pyx_INCREF(function);
                __Pyx_DECREF_SET(__pyx_t_4, function);
              }
            }
            __pyx_t_7 = (__pyx_t_6) ? __Pyx_PyObject_Call2Args(__pyx_t_4, __pyx_t_6, __pyx_t_10) : __Pyx_PyObject_CallOneArg(__pyx_t_4, __pyx_t_10);
            __Pyx_XDECREF(__pyx_t_6); __pyx_t_6 = 0;
            __Pyx_DECREF(__pyx_t_10); __pyx_t_10 = 0;
            if (unlikely(!__pyx_t_7)) __PYX_ERR(1, 85, __pyx_L38_error)
            __Pyx_GOTREF(__pyx_t_7);
            __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
            __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
          }

          /* "src/python/grpcio/grpc/_cython/_cygrpc/fork_posix.pyx.pxi":83
 * 
 *     if grpc_is_initialized() > 0:
 *         with gil:             # <<<<<<<<<<<<<<
 *             _LOGGER.error('Failed to shutdown gRPC Core after fork()')
 *             os._exit(os.EX_USAGE)
 */
          /*finally:*/ {
            /*normal exit:*/{
              #ifdef WITH_THREAD
              __Pyx_PyGILState_Release(__pyx_gilstate_save);
              #endif
              goto __pyx_L39;
            }
            __pyx_L38_error: {
              #ifdef WITH_THREAD
              __Pyx_PyGILState_Release(__pyx_gilstate_save);
              #endif
              goto __pyx_L4_error;
            }
            __pyx_L39:;
          }
      }

      /* "src/python/grpcio/grpc/_cython/_cygrpc/fork_posix.pyx.pxi":82
 *             os._exit(os.EX_USAGE)
 * 
 *     if grpc_is_initialized() > 0:             # <<<<<<<<<<<<<<
 *         with gil:
 *             _LOGGER.error('Failed to shutdown gRPC Core after fork()')
 */
    }
  }

  /* "src/python/grpcio/grpc/_cython/_cygrpc/fork_posix.pyx.pxi":59
 * 
 * cdef void __postfork_child() nogil:
 *     with gil:             # <<<<<<<<<<<<<<
 *         try:
 *             if _fork_handler_failed:
 */
  /*finally:*/ {
    /*normal exit:*/{
      #ifdef WITH_THREAD
      __pyx_gilstate_save = __Pyx_PyGILState_Ensure();
      #endif
      goto __pyx_L5;
    }
    __pyx_L3_return: {
      #ifdef WITH_THREAD
      __pyx_gilstate_save = __Pyx_PyGILState_Ensure();
      #endif
      goto __pyx_L0;
    }
    __pyx_L4_error: {
      #ifdef WITH_THREAD
      __pyx_gilstate_save = __Pyx_PyGILState_Ensure();
      #endif
      goto __pyx_L1_error;
    }
    __pyx_L5:;
  }

  /* "src/python/grpcio/grpc/_cython/_cygrpc/fork_posix.pyx.pxi":58
 * 
 * 
 * cdef void __postfork_child() nogil:             # <<<<<<<<<<<<<<
 *     with gil:
 *         try:
 */

  /* function exit code */
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_4);
  __Pyx_XDECREF(__pyx_t_6);
  __Pyx_XDECREF(__pyx_t_7);
  __Pyx_XDECREF(__pyx_t_10);
  __Pyx_XDECREF(__pyx_t_17);
  __Pyx_XDECREF(__pyx_t_18);
  __Pyx_XDECREF(__pyx_t_19);
  __Pyx_XDECREF(__pyx_t_20);
  __Pyx_WriteUnraisable("grpc._cython.cygrpc.__postfork_child", __pyx_clineno, __pyx_lineno, __pyx_filename, 1, 1);
  __pyx_L0:;
  __Pyx_XDECREF(__pyx_v_state_to_reset);
  __Pyx_XDECREF(__pyx_v_channel);
  #ifdef WITH_THREAD
  __Pyx_PyGILState_Release(__pyx_gilstate_save);
  #endif
}

/* "src/python/grpcio/grpc/_cython/_cygrpc/fork_posix.pyx.pxi":88
 * 
 * 
 * def fork_handlers_and_grpc_init():             # <<<<<<<<<<<<<<
 *     grpc_init()
 *     if _GRPC_ENABLE_FORK_SUPPORT:
 */

/* Python wrapper */
static PyObject *__pyx_pw_4grpc_7_cython_6cygrpc_91fork_handlers_and_grpc_init(PyObject *__pyx_self, CYTHON_UNUSED PyObject *unused); /*proto*/
static PyMethodDef __pyx_mdef_4grpc_7_cython_6cygrpc_91fork_handlers_and_grpc_init = {"fork_handlers_and_grpc_init", (PyCFunction)__pyx_pw_4grpc_7_cython_6cygrpc_91fork_handlers_and_grpc_init, METH_NOARGS, 0};
static PyObject *__pyx_pw_4grpc_7_cython_6cygrpc_91fork_handlers_and_grpc_init(PyObject *__pyx_self, CYTHON_UNUSED PyObject *unused) {
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("fork_handlers_and_grpc_init (wrapper)", 0);
  __pyx_r = __pyx_pf_4grpc_7_cython_6cygrpc_90fork_handlers_and_grpc_init(__pyx_self);

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_4grpc_7_cython_6cygrpc_90fork_handlers_and_grpc_init(CYTHON_UNUSED PyObject *__pyx_self) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  int __pyx_t_2;
  PyObject *__pyx_t_3 = NULL;
  PyObject *__pyx_t_4 = NULL;
  PyObject *__pyx_t_5 = NULL;
  PyObject *__pyx_t_6 = NULL;
  PyObject *__pyx_t_7 = NULL;
  PyObject *__pyx_t_8 = NULL;
  PyObject *__pyx_t_9 = NULL;
  int __pyx_t_10;
  PyObject *__pyx_t_11 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("fork_handlers_and_grpc_init", 0);

  /* "src/python/grpcio/grpc/_cython/_cygrpc/fork_posix.pyx.pxi":89
 * 
 * def fork_handlers_and_grpc_init():
 *     grpc_init()             # <<<<<<<<<<<<<<
 *     if _GRPC_ENABLE_FORK_SUPPORT:
 *         with _fork_state.fork_handler_registered_lock:
 */
  grpc_init();

  /* "src/python/grpcio/grpc/_cython/_cygrpc/fork_posix.pyx.pxi":90
 * def fork_handlers_and_grpc_init():
 *     grpc_init()
 *     if _GRPC_ENABLE_FORK_SUPPORT:             # <<<<<<<<<<<<<<
 *         with _fork_state.fork_handler_registered_lock:
 *             if not _fork_state.fork_handler_registered:
 */
  __Pyx_GetModuleGlobalName(__pyx_t_1, __pyx_n_s_GRPC_ENABLE_FORK_SUPPORT); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 90, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_t_2 = __Pyx_PyObject_IsTrue(__pyx_t_1); if (unlikely(__pyx_t_2 < 0)) __PYX_ERR(1, 90, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  if (__pyx_t_2) {

    /* "src/python/grpcio/grpc/_cython/_cygrpc/fork_posix.pyx.pxi":91
 *     grpc_init()
 *     if _GRPC_ENABLE_FORK_SUPPORT:
 *         with _fork_state.fork_handler_registered_lock:             # <<<<<<<<<<<<<<
 *             if not _fork_state.fork_handler_registered:
 *                 pthread_atfork(&__prefork, &__postfork_parent, &__postfork_child)
 */
    /*with:*/ {
      __Pyx_GetModuleGlobalName(__pyx_t_1, __pyx_n_s_fork_state); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 91, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_1);
      __pyx_t_3 = __Pyx_PyObject_GetAttrStr(__pyx_t_1, __pyx_n_s_fork_handler_registered_lock); if (unlikely(!__pyx_t_3)) __PYX_ERR(1, 91, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_3);
      __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
      __pyx_t_4 = __Pyx_PyObject_LookupSpecial(__pyx_t_3, __pyx_n_s_exit); if (unlikely(!__pyx_t_4)) __PYX_ERR(1, 91, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_4);
      __pyx_t_5 = __Pyx_PyObject_LookupSpecial(__pyx_t_3, __pyx_n_s_enter); if (unlikely(!__pyx_t_5)) __PYX_ERR(1, 91, __pyx_L4_error)
      __Pyx_GOTREF(__pyx_t_5);
      __pyx_t_6 = NULL;
      if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_5))) {
        __pyx_t_6 = PyMethod_GET_SELF(__pyx_t_5);
        if (likely(__pyx_t_6)) {
          PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_5);
          __Pyx_INCREF(__pyx_t_6);
          __Pyx_INCREF(function);
          __Pyx_DECREF_SET(__pyx_t_5, function);
        }
      }
      __pyx_t_1 = (__pyx_t_6) ? __Pyx_PyObject_CallOneArg(__pyx_t_5, __pyx_t_6) : __Pyx_PyObject_CallNoArg(__pyx_t_5);
      __Pyx_XDECREF(__pyx_t_6); __pyx_t_6 = 0;
      if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 91, __pyx_L4_error)
      __Pyx_GOTREF(__pyx_t_1);
      __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
      __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
      __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
      /*try:*/ {
        {
          __Pyx_PyThreadState_declare
          __Pyx_PyThreadState_assign
          __Pyx_ExceptionSave(&__pyx_t_7, &__pyx_t_8, &__pyx_t_9);
          __Pyx_XGOTREF(__pyx_t_7);
          __Pyx_XGOTREF(__pyx_t_8);
          __Pyx_XGOTREF(__pyx_t_9);
          /*try:*/ {

            /* "src/python/grpcio/grpc/_cython/_cygrpc/fork_posix.pyx.pxi":92
 *     if _GRPC_ENABLE_FORK_SUPPORT:
 *         with _fork_state.fork_handler_registered_lock:
 *             if not _fork_state.fork_handler_registered:             # <<<<<<<<<<<<<<
 *                 pthread_atfork(&__prefork, &__postfork_parent, &__postfork_child)
 *                 _fork_state.fork_handler_registered = True
 */
            __Pyx_GetModuleGlobalName(__pyx_t_3, __pyx_n_s_fork_state); if (unlikely(!__pyx_t_3)) __PYX_ERR(1, 92, __pyx_L8_error)
            __Pyx_GOTREF(__pyx_t_3);
            __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_t_3, __pyx_n_s_fork_handler_registered); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 92, __pyx_L8_error)
            __Pyx_GOTREF(__pyx_t_1);
            __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
            __pyx_t_2 = __Pyx_PyObject_IsTrue(__pyx_t_1); if (unlikely(__pyx_t_2 < 0)) __PYX_ERR(1, 92, __pyx_L8_error)
            __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
            __pyx_t_10 = ((!__pyx_t_2) != 0);
            if (__pyx_t_10) {

              /* "src/python/grpcio/grpc/_cython/_cygrpc/fork_posix.pyx.pxi":93
 *         with _fork_state.fork_handler_registered_lock:
 *             if not _fork_state.fork_handler_registered:
 *                 pthread_atfork(&__prefork, &__postfork_parent, &__postfork_child)             # <<<<<<<<<<<<<<
 *                 _fork_state.fork_handler_registered = True
 * 
 */
              (void)(pthread_atfork((&__pyx_f_4grpc_7_cython_6cygrpc___prefork), (&__pyx_f_4grpc_7_cython_6cygrpc___postfork_parent), (&__pyx_f_4grpc_7_cython_6cygrpc___postfork_child)));

              /* "src/python/grpcio/grpc/_cython/_cygrpc/fork_posix.pyx.pxi":94
 *             if not _fork_state.fork_handler_registered:
 *                 pthread_atfork(&__prefork, &__postfork_parent, &__postfork_child)
 *                 _fork_state.fork_handler_registered = True             # <<<<<<<<<<<<<<
 * 
 * 
 */
              __Pyx_GetModuleGlobalName(__pyx_t_1, __pyx_n_s_fork_state); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 94, __pyx_L8_error)
              __Pyx_GOTREF(__pyx_t_1);
              if (__Pyx_PyObject_SetAttrStr(__pyx_t_1, __pyx_n_s_fork_handler_registered, Py_True) < 0) __PYX_ERR(1, 94, __pyx_L8_error)
              __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;

              /* "src/python/grpcio/grpc/_cython/_cygrpc/fork_posix.pyx.pxi":92
 *     if _GRPC_ENABLE_FORK_SUPPORT:
 *         with _fork_state.fork_handler_registered_lock:
 *             if not _fork_state.fork_handler_registered:             # <<<<<<<<<<<<<<
 *                 pthread_atfork(&__prefork, &__postfork_parent, &__postfork_child)
 *                 _fork_state.fork_handler_registered = True
 */
            }

            /* "src/python/grpcio/grpc/_cython/_cygrpc/fork_posix.pyx.pxi":91
 *     grpc_init()
 *     if _GRPC_ENABLE_FORK_SUPPORT:
 *         with _fork_state.fork_handler_registered_lock:             # <<<<<<<<<<<<<<
 *             if not _fork_state.fork_handler_registered:
 *                 pthread_atfork(&__prefork, &__postfork_parent, &__postfork_child)
 */
          }
          __Pyx_XDECREF(__pyx_t_7); __pyx_t_7 = 0;
          __Pyx_XDECREF(__pyx_t_8); __pyx_t_8 = 0;
          __Pyx_XDECREF(__pyx_t_9); __pyx_t_9 = 0;
          goto __pyx_L13_try_end;
          __pyx_L8_error:;
          __Pyx_XDECREF(__pyx_t_1); __pyx_t_1 = 0;
          __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0;
          __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0;
          __Pyx_XDECREF(__pyx_t_6); __pyx_t_6 = 0;
          /*except:*/ {
            __Pyx_AddTraceback("grpc._cython.cygrpc.fork_handlers_and_grpc_init", __pyx_clineno, __pyx_lineno, __pyx_filename);
            if (__Pyx_GetException(&__pyx_t_1, &__pyx_t_3, &__pyx_t_5) < 0) __PYX_ERR(1, 91, __pyx_L10_except_error)
            __Pyx_GOTREF(__pyx_t_1);
            __Pyx_GOTREF(__pyx_t_3);
            __Pyx_GOTREF(__pyx_t_5);
            __pyx_t_6 = PyTuple_Pack(3, __pyx_t_1, __pyx_t_3, __pyx_t_5); if (unlikely(!__pyx_t_6)) __PYX_ERR(1, 91, __pyx_L10_except_error)
            __Pyx_GOTREF(__pyx_t_6);
            __pyx_t_11 = __Pyx_PyObject_Call(__pyx_t_4, __pyx_t_6, NULL);
            __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
            __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
            if (unlikely(!__pyx_t_11)) __PYX_ERR(1, 91, __pyx_L10_except_error)
            __Pyx_GOTREF(__pyx_t_11);
            __pyx_t_10 = __Pyx_PyObject_IsTrue(__pyx_t_11);
            __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0;
            if (__pyx_t_10 < 0) __PYX_ERR(1, 91, __pyx_L10_except_error)
            __pyx_t_2 = ((!(__pyx_t_10 != 0)) != 0);
            if (__pyx_t_2) {
              __Pyx_GIVEREF(__pyx_t_1);
              __Pyx_GIVEREF(__pyx_t_3);
              __Pyx_XGIVEREF(__pyx_t_5);
              __Pyx_ErrRestoreWithState(__pyx_t_1, __pyx_t_3, __pyx_t_5);
              __pyx_t_1 = 0; __pyx_t_3 = 0; __pyx_t_5 = 0; 
              __PYX_ERR(1, 91, __pyx_L10_except_error)
            }
            __Pyx_XDECREF(__pyx_t_1); __pyx_t_1 = 0;
            __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0;
            __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0;
            goto __pyx_L9_exception_handled;
          }
          __pyx_L10_except_error:;
          __Pyx_XGIVEREF(__pyx_t_7);
          __Pyx_XGIVEREF(__pyx_t_8);
          __Pyx_XGIVEREF(__pyx_t_9);
          __Pyx_ExceptionReset(__pyx_t_7, __pyx_t_8, __pyx_t_9);
          goto __pyx_L1_error;
          __pyx_L9_exception_handled:;
          __Pyx_XGIVEREF(__pyx_t_7);
          __Pyx_XGIVEREF(__pyx_t_8);
          __Pyx_XGIVEREF(__pyx_t_9);
          __Pyx_ExceptionReset(__pyx_t_7, __pyx_t_8, __pyx_t_9);
          __pyx_L13_try_end:;
        }
      }
      /*finally:*/ {
        /*normal exit:*/{
          if (__pyx_t_4) {
            __pyx_t_9 = __Pyx_PyObject_Call(__pyx_t_4, __pyx_tuple__17, NULL);
            __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
            if (unlikely(!__pyx_t_9)) __PYX_ERR(1, 91, __pyx_L1_error)
            __Pyx_GOTREF(__pyx_t_9);
            __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0;
          }
          goto __pyx_L7;
        }
        __pyx_L7:;
      }
      goto __pyx_L18;
      __pyx_L4_error:;
      __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
      goto __pyx_L1_error;
      __pyx_L18:;
    }

    /* "src/python/grpcio/grpc/_cython/_cygrpc/fork_posix.pyx.pxi":90
 * def fork_handlers_and_grpc_init():
 *     grpc_init()
 *     if _GRPC_ENABLE_FORK_SUPPORT:             # <<<<<<<<<<<<<<
 *         with _fork_state.fork_handler_registered_lock:
 *             if not _fork_state.fork_handler_registered:
 */
  }

  /* "src/python/grpcio/grpc/_cython/_cygrpc/fork_posix.pyx.pxi":88
 * 
 * 
 * def fork_handlers_and_grpc_init():             # <<<<<<<<<<<<<<
 *     grpc_init()
 *     if _GRPC_ENABLE_FORK_SUPPORT:
 */

  /* function exit code */
  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_XDECREF(__pyx_t_3);
  __Pyx_XDECREF(__pyx_t_5);
  __Pyx_XDECREF(__pyx_t_6);
  __Pyx_AddTraceback("grpc._cython.cygrpc.fork_handlers_and_grpc_init", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "src/python/grpcio/grpc/_cython/_cygrpc/fork_posix.pyx.pxi":100
 * 
 * class ForkManagedThread(object):
 *     def __init__(self, target, args=()):             # <<<<<<<<<<<<<<
 *         if _GRPC_ENABLE_FORK_SUPPORT:
 *             def managed_target(*args):
 */

/* Python wrapper */
static PyObject *__pyx_pw_4grpc_7_cython_6cygrpc_17ForkManagedThread_1__init__(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
static PyMethodDef __pyx_mdef_4grpc_7_cython_6cygrpc_17ForkManagedThread_1__init__ = {"__init__", (PyCFunction)(void*)(PyCFunctionWithKeywords)__pyx_pw_4grpc_7_cython_6cygrpc_17ForkManagedThread_1__init__, METH_VARARGS|METH_KEYWORDS, 0};
static PyObject *__pyx_pw_4grpc_7_cython_6cygrpc_17ForkManagedThread_1__init__(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
  PyObject *__pyx_v_self = 0;
  PyObject *__pyx_v_target = 0;
  PyObject *__pyx_v_args = 0;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__init__ (wrapper)", 0);
  {
    static PyObject **__pyx_pyargnames[] = {&__pyx_n_s_self,&__pyx_n_s_target,&__pyx_n_s_args,0};
    PyObject* values[3] = {0,0,0};
    values[2] = ((PyObject *)((PyObject*)__pyx_empty_tuple));
    if (unlikely(__pyx_kwds)) {
      Py_ssize_t kw_args;
      const Py_ssize_t pos_args = PyTuple_GET_SIZE(__pyx_args);
      switch (pos_args) {
        case  3: values[2] = PyTuple_GET_ITEM(__pyx_args, 2);
        CYTHON_FALLTHROUGH;
        case  2: values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
        CYTHON_FALLTHROUGH;
        case  1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
        CYTHON_FALLTHROUGH;
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      kw_args = PyDict_Size(__pyx_kwds);
      switch (pos_args) {
        case  0:
        if (likely((values[0] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_self)) != 0)) kw_args--;
        else goto __pyx_L5_argtuple_error;
        CYTHON_FALLTHROUGH;
        case  1:
        if (likely((values[1] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_target)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("__init__", 0, 2, 3, 1); __PYX_ERR(1, 100, __pyx_L3_error)
        }
        CYTHON_FALLTHROUGH;
        case  2:
        if (kw_args > 0) {
          PyObject* value = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_args);
          if (value) { values[2] = value; kw_args--; }
        }
      }
      if (unlikely(kw_args > 0)) {
        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "__init__") < 0)) __PYX_ERR(1, 100, __pyx_L3_error)
      }
    } else {
      switch (PyTuple_GET_SIZE(__pyx_args)) {
        case  3: values[2] = PyTuple_GET_ITEM(__pyx_args, 2);
        CYTHON_FALLTHROUGH;
        case  2: values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
        values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
        break;
        default: goto __pyx_L5_argtuple_error;
      }
    }
    __pyx_v_self = values[0];
    __pyx_v_target = values[1];
    __pyx_v_args = values[2];
  }
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("__init__", 0, 2, 3, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(1, 100, __pyx_L3_error)
  __pyx_L3_error:;
  __Pyx_AddTraceback("grpc._cython.cygrpc.ForkManagedThread.__init__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  __pyx_r = __pyx_pf_4grpc_7_cython_6cygrpc_17ForkManagedThread___init__(__pyx_self, __pyx_v_self, __pyx_v_target, __pyx_v_args);

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "src/python/grpcio/grpc/_cython/_cygrpc/fork_posix.pyx.pxi":102
 *     def __init__(self, target, args=()):
 *         if _GRPC_ENABLE_FORK_SUPPORT:
 *             def managed_target(*args):             # <<<<<<<<<<<<<<
 *                 try:
 *                     target(*args)
 */

/* Python wrapper */
static PyObject *__pyx_pw_4grpc_7_cython_6cygrpc_17ForkManagedThread_8__init___1managed_target(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
static PyMethodDef __pyx_mdef_4grpc_7_cython_6cygrpc_17ForkManagedThread_8__init___1managed_target = {"managed_target", (PyCFunction)(void*)(PyCFunctionWithKeywords)__pyx_pw_4grpc_7_cython_6cygrpc_17ForkManagedThread_8__init___1managed_target, METH_VARARGS|METH_KEYWORDS, 0};
static PyObject *__pyx_pw_4grpc_7_cython_6cygrpc_17ForkManagedThread_8__init___1managed_target(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
  PyObject *__pyx_v_args = 0;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("managed_target (wrapper)", 0);
  if (unlikely(__pyx_kwds) && unlikely(PyDict_Size(__pyx_kwds) > 0) && unlikely(!__Pyx_CheckKeywordStrings(__pyx_kwds, "managed_target", 0))) return NULL;
  __Pyx_INCREF(__pyx_args);
  __pyx_v_args = __pyx_args;
  __pyx_r = __pyx_pf_4grpc_7_cython_6cygrpc_17ForkManagedThread_8__init___managed_target(__pyx_self, __pyx_v_args);

  /* function exit code */
  __Pyx_XDECREF(__pyx_v_args);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_4grpc_7_cython_6cygrpc_17ForkManagedThread_8__init___managed_target(PyObject *__pyx_self, PyObject *__pyx_v_args) {
  struct __pyx_obj_4grpc_7_cython_6cygrpc___pyx_scope_struct_11___init__ *__pyx_cur_scope;
  struct __pyx_obj_4grpc_7_cython_6cygrpc___pyx_scope_struct_11___init__ *__pyx_outer_scope;
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  PyObject *__pyx_t_2 = NULL;
  PyObject *__pyx_t_3 = NULL;
  int __pyx_t_4;
  int __pyx_t_5;
  char const *__pyx_t_6;
  PyObject *__pyx_t_7 = NULL;
  PyObject *__pyx_t_8 = NULL;
  PyObject *__pyx_t_9 = NULL;
  PyObject *__pyx_t_10 = NULL;
  PyObject *__pyx_t_11 = NULL;
  PyObject *__pyx_t_12 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("managed_target", 0);
  __pyx_outer_scope = (struct __pyx_obj_4grpc_7_cython_6cygrpc___pyx_scope_struct_11___init__ *) __Pyx_CyFunction_GetClosure(__pyx_self);
  __pyx_cur_scope = __pyx_outer_scope;

  /* "src/python/grpcio/grpc/_cython/_cygrpc/fork_posix.pyx.pxi":103
 *         if _GRPC_ENABLE_FORK_SUPPORT:
 *             def managed_target(*args):
 *                 try:             # <<<<<<<<<<<<<<
 *                     target(*args)
 *                 finally:
 */
  /*try:*/ {

    /* "src/python/grpcio/grpc/_cython/_cygrpc/fork_posix.pyx.pxi":104
 *             def managed_target(*args):
 *                 try:
 *                     target(*args)             # <<<<<<<<<<<<<<
 *                 finally:
 *                     _fork_state.active_thread_count.decrement()
 */
    if (unlikely(!__pyx_cur_scope->__pyx_v_target)) { __Pyx_RaiseClosureNameError("target"); __PYX_ERR(1, 104, __pyx_L4_error) }
    __pyx_t_1 = __Pyx_PyObject_Call(__pyx_cur_scope->__pyx_v_target, __pyx_v_args, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 104, __pyx_L4_error)
    __Pyx_GOTREF(__pyx_t_1);
    __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  }

  /* "src/python/grpcio/grpc/_cython/_cygrpc/fork_posix.pyx.pxi":106
 *                     target(*args)
 *                 finally:
 *                     _fork_state.active_thread_count.decrement()             # <<<<<<<<<<<<<<
 *             self._thread = threading.Thread(target=_run_with_context(managed_target), args=args)
 *         else:
 */
  /*finally:*/ {
    /*normal exit:*/{
      __Pyx_GetModuleGlobalName(__pyx_t_2, __pyx_n_s_fork_state); if (unlikely(!__pyx_t_2)) __PYX_ERR(1, 106, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_2);
      __pyx_t_3 = __Pyx_PyObject_GetAttrStr(__pyx_t_2, __pyx_n_s_active_thread_count); if (unlikely(!__pyx_t_3)) __PYX_ERR(1, 106, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_3);
      __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
      __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_t_3, __pyx_n_s_decrement); if (unlikely(!__pyx_t_2)) __PYX_ERR(1, 106, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_2);
      __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
      __pyx_t_3 = NULL;
      if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_2))) {
        __pyx_t_3 = PyMethod_GET_SELF(__pyx_t_2);
        if (likely(__pyx_t_3)) {
          PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_2);
          __Pyx_INCREF(__pyx_t_3);
          __Pyx_INCREF(function);
          __Pyx_DECREF_SET(__pyx_t_2, function);
        }
      }
      __pyx_t_1 = (__pyx_t_3) ? __Pyx_PyObject_CallOneArg(__pyx_t_2, __pyx_t_3) : __Pyx_PyObject_CallNoArg(__pyx_t_2);
      __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0;
      if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 106, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_1);
      __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
      __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
      goto __pyx_L5;
    }
    __pyx_L4_error:;
    /*exception exit:*/{
      __Pyx_PyThreadState_declare
      __Pyx_PyThreadState_assign
      __pyx_t_7 = 0; __pyx_t_8 = 0; __pyx_t_9 = 0; __pyx_t_10 = 0; __pyx_t_11 = 0; __pyx_t_12 = 0;
      __Pyx_XDECREF(__pyx_t_1); __pyx_t_1 = 0;
      if (PY_MAJOR_VERSION >= 3) __Pyx_ExceptionSwap(&__pyx_t_10, &__pyx_t_11, &__pyx_t_12);
      if ((PY_MAJOR_VERSION < 3) || unlikely(__Pyx_GetException(&__pyx_t_7, &__pyx_t_8, &__pyx_t_9) < 0)) __Pyx_ErrFetch(&__pyx_t_7, &__pyx_t_8, &__pyx_t_9);
      __Pyx_XGOTREF(__pyx_t_7);
      __Pyx_XGOTREF(__pyx_t_8);
      __Pyx_XGOTREF(__pyx_t_9);
      __Pyx_XGOTREF(__pyx_t_10);
      __Pyx_XGOTREF(__pyx_t_11);
      __Pyx_XGOTREF(__pyx_t_12);
      __pyx_t_4 = __pyx_lineno; __pyx_t_5 = __pyx_clineno; __pyx_t_6 = __pyx_filename;
      {
        __Pyx_GetModuleGlobalName(__pyx_t_2, __pyx_n_s_fork_state); if (unlikely(!__pyx_t_2)) __PYX_ERR(1, 106, __pyx_L7_error)
        __Pyx_GOTREF(__pyx_t_2);
        __pyx_t_3 = __Pyx_PyObject_GetAttrStr(__pyx_t_2, __pyx_n_s_active_thread_count); if (unlikely(!__pyx_t_3)) __PYX_ERR(1, 106, __pyx_L7_error)
        __Pyx_GOTREF(__pyx_t_3);
        __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
        __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_t_3, __pyx_n_s_decrement); if (unlikely(!__pyx_t_2)) __PYX_ERR(1, 106, __pyx_L7_error)
        __Pyx_GOTREF(__pyx_t_2);
        __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
        __pyx_t_3 = NULL;
        if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_2))) {
          __pyx_t_3 = PyMethod_GET_SELF(__pyx_t_2);
          if (likely(__pyx_t_3)) {
            PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_2);
            __Pyx_INCREF(__pyx_t_3);
            __Pyx_INCREF(function);
            __Pyx_DECREF_SET(__pyx_t_2, function);
          }
        }
        __pyx_t_1 = (__pyx_t_3) ? __Pyx_PyObject_CallOneArg(__pyx_t_2, __pyx_t_3) : __Pyx_PyObject_CallNoArg(__pyx_t_2);
        __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0;
        if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 106, __pyx_L7_error)
        __Pyx_GOTREF(__pyx_t_1);
        __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
        __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
      }
      if (PY_MAJOR_VERSION >= 3) {
        __Pyx_XGIVEREF(__pyx_t_10);
        __Pyx_XGIVEREF(__pyx_t_11);
        __Pyx_XGIVEREF(__pyx_t_12);
        __Pyx_ExceptionReset(__pyx_t_10, __pyx_t_11, __pyx_t_12);
      }
      __Pyx_XGIVEREF(__pyx_t_7);
      __Pyx_XGIVEREF(__pyx_t_8);
      __Pyx_XGIVEREF(__pyx_t_9);
      __Pyx_ErrRestore(__pyx_t_7, __pyx_t_8, __pyx_t_9);
      __pyx_t_7 = 0; __pyx_t_8 = 0; __pyx_t_9 = 0; __pyx_t_10 = 0; __pyx_t_11 = 0; __pyx_t_12 = 0;
      __pyx_lineno = __pyx_t_4; __pyx_clineno = __pyx_t_5; __pyx_filename = __pyx_t_6;
      goto __pyx_L1_error;
      __pyx_L7_error:;
      if (PY_MAJOR_VERSION >= 3) {
        __Pyx_XGIVEREF(__pyx_t_10);
        __Pyx_XGIVEREF(__pyx_t_11);
        __Pyx_XGIVEREF(__pyx_t_12);
        __Pyx_ExceptionReset(__pyx_t_10, __pyx_t_11, __pyx_t_12);
      }
      __Pyx_XDECREF(__pyx_t_7); __pyx_t_7 = 0;
      __Pyx_XDECREF(__pyx_t_8); __pyx_t_8 = 0;
      __Pyx_XDECREF(__pyx_t_9); __pyx_t_9 = 0;
      __pyx_t_10 = 0; __pyx_t_11 = 0; __pyx_t_12 = 0;
      goto __pyx_L1_error;
    }
    __pyx_L5:;
  }

  /* "src/python/grpcio/grpc/_cython/_cygrpc/fork_posix.pyx.pxi":102
 *     def __init__(self, target, args=()):
 *         if _GRPC_ENABLE_FORK_SUPPORT:
 *             def managed_target(*args):             # <<<<<<<<<<<<<<
 *                 try:
 *                     target(*args)
 */

  /* function exit code */
  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_XDECREF(__pyx_t_3);
  __Pyx_AddTraceback("grpc._cython.cygrpc.ForkManagedThread.__init__.managed_target", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "src/python/grpcio/grpc/_cython/_cygrpc/fork_posix.pyx.pxi":100
 * 
 * class ForkManagedThread(object):
 *     def __init__(self, target, args=()):             # <<<<<<<<<<<<<<
 *         if _GRPC_ENABLE_FORK_SUPPORT:
 *             def managed_target(*args):
 */

static PyObject *__pyx_pf_4grpc_7_cython_6cygrpc_17ForkManagedThread___init__(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__pyx_v_self, PyObject *__pyx_v_target, PyObject *__pyx_v_args) {
  struct __pyx_obj_4grpc_7_cython_6cygrpc___pyx_scope_struct_11___init__ *__pyx_cur_scope;
  PyObject *__pyx_v_managed_target = 0;
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  int __pyx_t_2;
  PyObject *__pyx_t_3 = NULL;
  PyObject *__pyx_t_4 = NULL;
  PyObject *__pyx_t_5 = NULL;
  PyObject *__pyx_t_6 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("__init__", 0);
  __pyx_cur_scope = (struct __pyx_obj_4grpc_7_cython_6cygrpc___pyx_scope_struct_11___init__ *)__pyx_tp_new_4grpc_7_cython_6cygrpc___pyx_scope_struct_11___init__(__pyx_ptype_4grpc_7_cython_6cygrpc___pyx_scope_struct_11___init__, __pyx_empty_tuple, NULL);
  if (unlikely(!__pyx_cur_scope)) {
    __pyx_cur_scope = ((struct __pyx_obj_4grpc_7_cython_6cygrpc___pyx_scope_struct_11___init__ *)Py_None);
    __Pyx_INCREF(Py_None);
    __PYX_ERR(1, 100, __pyx_L1_error)
  } else {
    __Pyx_GOTREF(__pyx_cur_scope);
  }
  __pyx_cur_scope->__pyx_v_target = __pyx_v_target;
  __Pyx_INCREF(__pyx_cur_scope->__pyx_v_target);
  __Pyx_GIVEREF(__pyx_cur_scope->__pyx_v_target);

  /* "src/python/grpcio/grpc/_cython/_cygrpc/fork_posix.pyx.pxi":101
 * class ForkManagedThread(object):
 *     def __init__(self, target, args=()):
 *         if _GRPC_ENABLE_FORK_SUPPORT:             # <<<<<<<<<<<<<<
 *             def managed_target(*args):
 *                 try:
 */
  __Pyx_GetModuleGlobalName(__pyx_t_1, __pyx_n_s_GRPC_ENABLE_FORK_SUPPORT); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 101, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_t_2 = __Pyx_PyObject_IsTrue(__pyx_t_1); if (unlikely(__pyx_t_2 < 0)) __PYX_ERR(1, 101, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  if (__pyx_t_2) {

    /* "src/python/grpcio/grpc/_cython/_cygrpc/fork_posix.pyx.pxi":102
 *     def __init__(self, target, args=()):
 *         if _GRPC_ENABLE_FORK_SUPPORT:
 *             def managed_target(*args):             # <<<<<<<<<<<<<<
 *                 try:
 *                     target(*args)
 */
    __pyx_t_1 = __Pyx_CyFunction_New(&__pyx_mdef_4grpc_7_cython_6cygrpc_17ForkManagedThread_8__init___1managed_target, 0, __pyx_n_s_ForkManagedThread___init___local, ((PyObject*)__pyx_cur_scope), __pyx_n_s_grpc__cython_cygrpc, __pyx_d, ((PyObject *)__pyx_codeobj__137)); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 102, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_1);
    __pyx_v_managed_target = __pyx_t_1;
    __pyx_t_1 = 0;

    /* "src/python/grpcio/grpc/_cython/_cygrpc/fork_posix.pyx.pxi":107
 *                 finally:
 *                     _fork_state.active_thread_count.decrement()
 *             self._thread = threading.Thread(target=_run_with_context(managed_target), args=args)             # <<<<<<<<<<<<<<
 *         else:
 *             self._thread = threading.Thread(target=_run_with_context(target), args=args)
 */
    __Pyx_GetModuleGlobalName(__pyx_t_1, __pyx_n_s_threading); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 107, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_1);
    __pyx_t_3 = __Pyx_PyObject_GetAttrStr(__pyx_t_1, __pyx_n_s_Thread); if (unlikely(!__pyx_t_3)) __PYX_ERR(1, 107, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_3);
    __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
    __pyx_t_1 = __Pyx_PyDict_NewPresized(2); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 107, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_1);
    __Pyx_GetModuleGlobalName(__pyx_t_5, __pyx_n_s_run_with_context); if (unlikely(!__pyx_t_5)) __PYX_ERR(1, 107, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_5);
    __pyx_t_6 = NULL;
    if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_5))) {
      __pyx_t_6 = PyMethod_GET_SELF(__pyx_t_5);
      if (likely(__pyx_t_6)) {
        PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_5);
        __Pyx_INCREF(__pyx_t_6);
        __Pyx_INCREF(function);
        __Pyx_DECREF_SET(__pyx_t_5, function);
      }
    }
    __pyx_t_4 = (__pyx_t_6) ? __Pyx_PyObject_Call2Args(__pyx_t_5, __pyx_t_6, __pyx_v_managed_target) : __Pyx_PyObject_CallOneArg(__pyx_t_5, __pyx_v_managed_target);
    __Pyx_XDECREF(__pyx_t_6); __pyx_t_6 = 0;
    if (unlikely(!__pyx_t_4)) __PYX_ERR(1, 107, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_4);
    __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
    if (PyDict_SetItem(__pyx_t_1, __pyx_n_s_target, __pyx_t_4) < 0) __PYX_ERR(1, 107, __pyx_L1_error)
    __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
    if (PyDict_SetItem(__pyx_t_1, __pyx_n_s_args, __pyx_v_args) < 0) __PYX_ERR(1, 107, __pyx_L1_error)
    __pyx_t_4 = __Pyx_PyObject_Call(__pyx_t_3, __pyx_empty_tuple, __pyx_t_1); if (unlikely(!__pyx_t_4)) __PYX_ERR(1, 107, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_4);
    __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
    __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
    if (__Pyx_PyObject_SetAttrStr(__pyx_v_self, __pyx_n_s_thread, __pyx_t_4) < 0) __PYX_ERR(1, 107, __pyx_L1_error)
    __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;

    /* "src/python/grpcio/grpc/_cython/_cygrpc/fork_posix.pyx.pxi":101
 * class ForkManagedThread(object):
 *     def __init__(self, target, args=()):
 *         if _GRPC_ENABLE_FORK_SUPPORT:             # <<<<<<<<<<<<<<
 *             def managed_target(*args):
 *                 try:
 */
    goto __pyx_L3;
  }

  /* "src/python/grpcio/grpc/_cython/_cygrpc/fork_posix.pyx.pxi":109
 *             self._thread = threading.Thread(target=_run_with_context(managed_target), args=args)
 *         else:
 *             self._thread = threading.Thread(target=_run_with_context(target), args=args)             # <<<<<<<<<<<<<<
 * 
 *     def setDaemon(self, daemonic):
 */
  /*else*/ {
    __Pyx_GetModuleGlobalName(__pyx_t_4, __pyx_n_s_threading); if (unlikely(!__pyx_t_4)) __PYX_ERR(1, 109, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_4);
    __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_t_4, __pyx_n_s_Thread); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 109, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_1);
    __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
    __pyx_t_4 = __Pyx_PyDict_NewPresized(2); if (unlikely(!__pyx_t_4)) __PYX_ERR(1, 109, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_4);
    __Pyx_GetModuleGlobalName(__pyx_t_5, __pyx_n_s_run_with_context); if (unlikely(!__pyx_t_5)) __PYX_ERR(1, 109, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_5);
    __pyx_t_6 = NULL;
    if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_5))) {
      __pyx_t_6 = PyMethod_GET_SELF(__pyx_t_5);
      if (likely(__pyx_t_6)) {
        PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_5);
        __Pyx_INCREF(__pyx_t_6);
        __Pyx_INCREF(function);
        __Pyx_DECREF_SET(__pyx_t_5, function);
      }
    }
    __pyx_t_3 = (__pyx_t_6) ? __Pyx_PyObject_Call2Args(__pyx_t_5, __pyx_t_6, __pyx_cur_scope->__pyx_v_target) : __Pyx_PyObject_CallOneArg(__pyx_t_5, __pyx_cur_scope->__pyx_v_target);
    __Pyx_XDECREF(__pyx_t_6); __pyx_t_6 = 0;
    if (unlikely(!__pyx_t_3)) __PYX_ERR(1, 109, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_3);
    __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
    if (PyDict_SetItem(__pyx_t_4, __pyx_n_s_target, __pyx_t_3) < 0) __PYX_ERR(1, 109, __pyx_L1_error)
    __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
    if (PyDict_SetItem(__pyx_t_4, __pyx_n_s_args, __pyx_v_args) < 0) __PYX_ERR(1, 109, __pyx_L1_error)
    __pyx_t_3 = __Pyx_PyObject_Call(__pyx_t_1, __pyx_empty_tuple, __pyx_t_4); if (unlikely(!__pyx_t_3)) __PYX_ERR(1, 109, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_3);
    __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
    __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
    if (__Pyx_PyObject_SetAttrStr(__pyx_v_self, __pyx_n_s_thread, __pyx_t_3) < 0) __PYX_ERR(1, 109, __pyx_L1_error)
    __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
  }
  __pyx_L3:;

  /* "src/python/grpcio/grpc/_cython/_cygrpc/fork_posix.pyx.pxi":100
 * 
 * class ForkManagedThread(object):
 *     def __init__(self, target, args=()):             # <<<<<<<<<<<<<<
 *         if _GRPC_ENABLE_FORK_SUPPORT:
 *             def managed_target(*args):
 */

  /* function exit code */
  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_XDECREF(__pyx_t_3);
  __Pyx_XDECREF(__pyx_t_4);
  __Pyx_XDECREF(__pyx_t_5);
  __Pyx_XDECREF(__pyx_t_6);
  __Pyx_AddTraceback("grpc._cython.cygrpc.ForkManagedThread.__init__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XDECREF(__pyx_v_managed_target);
  __Pyx_DECREF(((PyObject *)__pyx_cur_scope));
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "src/python/grpcio/grpc/_cython/_cygrpc/fork_posix.pyx.pxi":111
 *             self._thread = threading.Thread(target=_run_with_context(target), args=args)
 * 
 *     def setDaemon(self, daemonic):             # <<<<<<<<<<<<<<
 *         self._thread.daemon = daemonic
 * 
 */

/* Python wrapper */
static PyObject *__pyx_pw_4grpc_7_cython_6cygrpc_17ForkManagedThread_3setDaemon(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
static PyMethodDef __pyx_mdef_4grpc_7_cython_6cygrpc_17ForkManagedThread_3setDaemon = {"setDaemon", (PyCFunction)(void*)(PyCFunctionWithKeywords)__pyx_pw_4grpc_7_cython_6cygrpc_17ForkManagedThread_3setDaemon, METH_VARARGS|METH_KEYWORDS, 0};
static PyObject *__pyx_pw_4grpc_7_cython_6cygrpc_17ForkManagedThread_3setDaemon(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
  PyObject *__pyx_v_self = 0;
  PyObject *__pyx_v_daemonic = 0;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("setDaemon (wrapper)", 0);
  {
    static PyObject **__pyx_pyargnames[] = {&__pyx_n_s_self,&__pyx_n_s_daemonic,0};
    PyObject* values[2] = {0,0};
    if (unlikely(__pyx_kwds)) {
      Py_ssize_t kw_args;
      const Py_ssize_t pos_args = PyTuple_GET_SIZE(__pyx_args);
      switch (pos_args) {
        case  2: values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
        CYTHON_FALLTHROUGH;
        case  1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
        CYTHON_FALLTHROUGH;
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      kw_args = PyDict_Size(__pyx_kwds);
      switch (pos_args) {
        case  0:
        if (likely((values[0] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_self)) != 0)) kw_args--;
        else goto __pyx_L5_argtuple_error;
        CYTHON_FALLTHROUGH;
        case  1:
        if (likely((values[1] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_daemonic)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("setDaemon", 1, 2, 2, 1); __PYX_ERR(1, 111, __pyx_L3_error)
        }
      }
      if (unlikely(kw_args > 0)) {
        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "setDaemon") < 0)) __PYX_ERR(1, 111, __pyx_L3_error)
      }
    } else if (PyTuple_GET_SIZE(__pyx_args) != 2) {
      goto __pyx_L5_argtuple_error;
    } else {
      values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
      values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
    }
    __pyx_v_self = values[0];
    __pyx_v_daemonic = values[1];
  }
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("setDaemon", 1, 2, 2, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(1, 111, __pyx_L3_error)
  __pyx_L3_error:;
  __Pyx_AddTraceback("grpc._cython.cygrpc.ForkManagedThread.setDaemon", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  __pyx_r = __pyx_pf_4grpc_7_cython_6cygrpc_17ForkManagedThread_2setDaemon(__pyx_self, __pyx_v_self, __pyx_v_daemonic);

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_4grpc_7_cython_6cygrpc_17ForkManagedThread_2setDaemon(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__pyx_v_self, PyObject *__pyx_v_daemonic) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("setDaemon", 0);

  /* "src/python/grpcio/grpc/_cython/_cygrpc/fork_posix.pyx.pxi":112
 * 
 *     def setDaemon(self, daemonic):
 *         self._thread.daemon = daemonic             # <<<<<<<<<<<<<<
 * 
 *     def start(self):
 */
  __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_v_self, __pyx_n_s_thread); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 112, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  if (__Pyx_PyObject_SetAttrStr(__pyx_t_1, __pyx_n_s_daemon, __pyx_v_daemonic) < 0) __PYX_ERR(1, 112, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;

  /* "src/python/grpcio/grpc/_cython/_cygrpc/fork_posix.pyx.pxi":111
 *             self._thread = threading.Thread(target=_run_with_context(target), args=args)
 * 
 *     def setDaemon(self, daemonic):             # <<<<<<<<<<<<<<
 *         self._thread.daemon = daemonic
 * 
 */

  /* function exit code */
  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_AddTraceback("grpc._cython.cygrpc.ForkManagedThread.setDaemon", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "src/python/grpcio/grpc/_cython/_cygrpc/fork_posix.pyx.pxi":114
 *         self._thread.daemon = daemonic
 * 
 *     def start(self):             # <<<<<<<<<<<<<<
 *         if _GRPC_ENABLE_FORK_SUPPORT:
 *             _fork_state.active_thread_count.increment()
 */

/* Python wrapper */
static PyObject *__pyx_pw_4grpc_7_cython_6cygrpc_17ForkManagedThread_5start(PyObject *__pyx_self, PyObject *__pyx_v_self); /*proto*/
static PyMethodDef __pyx_mdef_4grpc_7_cython_6cygrpc_17ForkManagedThread_5start = {"start", (PyCFunction)__pyx_pw_4grpc_7_cython_6cygrpc_17ForkManagedThread_5start, METH_O, 0};
static PyObject *__pyx_pw_4grpc_7_cython_6cygrpc_17ForkManagedThread_5start(PyObject *__pyx_self, PyObject *__pyx_v_self) {
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("start (wrapper)", 0);
  __pyx_r = __pyx_pf_4grpc_7_cython_6cygrpc_17ForkManagedThread_4start(__pyx_self, ((PyObject *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_4grpc_7_cython_6cygrpc_17ForkManagedThread_4start(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__pyx_v_self) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  int __pyx_t_2;
  PyObject *__pyx_t_3 = NULL;
  PyObject *__pyx_t_4 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("start", 0);

  /* "src/python/grpcio/grpc/_cython/_cygrpc/fork_posix.pyx.pxi":115
 * 
 *     def start(self):
 *         if _GRPC_ENABLE_FORK_SUPPORT:             # <<<<<<<<<<<<<<
 *             _fork_state.active_thread_count.increment()
 *         self._thread.start()
 */
  __Pyx_GetModuleGlobalName(__pyx_t_1, __pyx_n_s_GRPC_ENABLE_FORK_SUPPORT); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 115, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_t_2 = __Pyx_PyObject_IsTrue(__pyx_t_1); if (unlikely(__pyx_t_2 < 0)) __PYX_ERR(1, 115, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  if (__pyx_t_2) {

    /* "src/python/grpcio/grpc/_cython/_cygrpc/fork_posix.pyx.pxi":116
 *     def start(self):
 *         if _GRPC_ENABLE_FORK_SUPPORT:
 *             _fork_state.active_thread_count.increment()             # <<<<<<<<<<<<<<
 *         self._thread.start()
 * 
 */
    __Pyx_GetModuleGlobalName(__pyx_t_3, __pyx_n_s_fork_state); if (unlikely(!__pyx_t_3)) __PYX_ERR(1, 116, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_3);
    __pyx_t_4 = __Pyx_PyObject_GetAttrStr(__pyx_t_3, __pyx_n_s_active_thread_count); if (unlikely(!__pyx_t_4)) __PYX_ERR(1, 116, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_4);
    __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
    __pyx_t_3 = __Pyx_PyObject_GetAttrStr(__pyx_t_4, __pyx_n_s_increment); if (unlikely(!__pyx_t_3)) __PYX_ERR(1, 116, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_3);
    __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
    __pyx_t_4 = NULL;
    if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_3))) {
      __pyx_t_4 = PyMethod_GET_SELF(__pyx_t_3);
      if (likely(__pyx_t_4)) {
        PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_3);
        __Pyx_INCREF(__pyx_t_4);
        __Pyx_INCREF(function);
        __Pyx_DECREF_SET(__pyx_t_3, function);
      }
    }
    __pyx_t_1 = (__pyx_t_4) ? __Pyx_PyObject_CallOneArg(__pyx_t_3, __pyx_t_4) : __Pyx_PyObject_CallNoArg(__pyx_t_3);
    __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0;
    if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 116, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_1);
    __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
    __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;

    /* "src/python/grpcio/grpc/_cython/_cygrpc/fork_posix.pyx.pxi":115
 * 
 *     def start(self):
 *         if _GRPC_ENABLE_FORK_SUPPORT:             # <<<<<<<<<<<<<<
 *             _fork_state.active_thread_count.increment()
 *         self._thread.start()
 */
  }

  /* "src/python/grpcio/grpc/_cython/_cygrpc/fork_posix.pyx.pxi":117
 *         if _GRPC_ENABLE_FORK_SUPPORT:
 *             _fork_state.active_thread_count.increment()
 *         self._thread.start()             # <<<<<<<<<<<<<<
 * 
 *     def join(self):
 */
  __pyx_t_3 = __Pyx_PyObject_GetAttrStr(__pyx_v_self, __pyx_n_s_thread); if (unlikely(!__pyx_t_3)) __PYX_ERR(1, 117, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  __pyx_t_4 = __Pyx_PyObject_GetAttrStr(__pyx_t_3, __pyx_n_s_start); if (unlikely(!__pyx_t_4)) __PYX_ERR(1, 117, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_4);
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
  __pyx_t_3 = NULL;
  if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_4))) {
    __pyx_t_3 = PyMethod_GET_SELF(__pyx_t_4);
    if (likely(__pyx_t_3)) {
      PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_4);
      __Pyx_INCREF(__pyx_t_3);
      __Pyx_INCREF(function);
      __Pyx_DECREF_SET(__pyx_t_4, function);
    }
  }
  __pyx_t_1 = (__pyx_t_3) ? __Pyx_PyObject_CallOneArg(__pyx_t_4, __pyx_t_3) : __Pyx_PyObject_CallNoArg(__pyx_t_4);
  __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0;
  if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 117, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;

  /* "src/python/grpcio/grpc/_cython/_cygrpc/fork_posix.pyx.pxi":114
 *         self._thread.daemon = daemonic
 * 
 *     def start(self):             # <<<<<<<<<<<<<<
 *         if _GRPC_ENABLE_FORK_SUPPORT:
 *             _fork_state.active_thread_count.increment()
 */

  /* function exit code */
  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_XDECREF(__pyx_t_3);
  __Pyx_XDECREF(__pyx_t_4);
  __Pyx_AddTraceback("grpc._cython.cygrpc.ForkManagedThread.start", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "src/python/grpcio/grpc/_cython/_cygrpc/fork_posix.pyx.pxi":119
 *         self._thread.start()
 * 
 *     def join(self):             # <<<<<<<<<<<<<<
 *         self._thread.join()
 * 
 */

/* Python wrapper */
static PyObject *__pyx_pw_4grpc_7_cython_6cygrpc_17ForkManagedThread_7join(PyObject *__pyx_self, PyObject *__pyx_v_self); /*proto*/
static PyMethodDef __pyx_mdef_4grpc_7_cython_6cygrpc_17ForkManagedThread_7join = {"join", (PyCFunction)__pyx_pw_4grpc_7_cython_6cygrpc_17ForkManagedThread_7join, METH_O, 0};
static PyObject *__pyx_pw_4grpc_7_cython_6cygrpc_17ForkManagedThread_7join(PyObject *__pyx_self, PyObject *__pyx_v_self) {
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("join (wrapper)", 0);
  __pyx_r = __pyx_pf_4grpc_7_cython_6cygrpc_17ForkManagedThread_6join(__pyx_self, ((PyObject *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_4grpc_7_cython_6cygrpc_17ForkManagedThread_6join(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__pyx_v_self) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  PyObject *__pyx_t_2 = NULL;
  PyObject *__pyx_t_3 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("join", 0);

  /* "src/python/grpcio/grpc/_cython/_cygrpc/fork_posix.pyx.pxi":120
 * 
 *     def join(self):
 *         self._thread.join()             # <<<<<<<<<<<<<<
 * 
 * 
 */
  __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_v_self, __pyx_n_s_thread); if (unlikely(!__pyx_t_2)) __PYX_ERR(1, 120, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __pyx_t_3 = __Pyx_PyObject_GetAttrStr(__pyx_t_2, __pyx_n_s_join); if (unlikely(!__pyx_t_3)) __PYX_ERR(1, 120, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  __pyx_t_2 = NULL;
  if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_3))) {
    __pyx_t_2 = PyMethod_GET_SELF(__pyx_t_3);
    if (likely(__pyx_t_2)) {
      PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_3);
      __Pyx_INCREF(__pyx_t_2);
      __Pyx_INCREF(function);
      __Pyx_DECREF_SET(__pyx_t_3, function);
    }
  }
  __pyx_t_1 = (__pyx_t_2) ? __Pyx_PyObject_CallOneArg(__pyx_t_3, __pyx_t_2) : __Pyx_PyObject_CallNoArg(__pyx_t_3);
  __Pyx_XDECREF(__pyx_t_2); __pyx_t_2 = 0;
  if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 120, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;

  /* "src/python/grpcio/grpc/_cython/_cygrpc/fork_posix.pyx.pxi":119
 *         self._thread.start()
 * 
 *     def join(self):             # <<<<<<<<<<<<<<
 *         self._thread.join()
 * 
 */

  /* function exit code */
  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_XDECREF(__pyx_t_3);
  __Pyx_AddTraceback("grpc._cython.cygrpc.ForkManagedThread.join", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "src/python/grpcio/grpc/_cython/_cygrpc/fork_posix.pyx.pxi":123
 * 
 * 
 * def block_if_fork_in_progress(postfork_state_to_reset=None):             # <<<<<<<<<<<<<<
 *     if _GRPC_ENABLE_FORK_SUPPORT:
 *         with _fork_state.fork_in_progress_condition:
 */

/* Python wrapper */
static PyObject *__pyx_pw_4grpc_7_cython_6cygrpc_93block_if_fork_in_progress(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
static PyMethodDef __pyx_mdef_4grpc_7_cython_6cygrpc_93block_if_fork_in_progress = {"block_if_fork_in_progress", (PyCFunction)(void*)(PyCFunctionWithKeywords)__pyx_pw_4grpc_7_cython_6cygrpc_93block_if_fork_in_progress, METH_VARARGS|METH_KEYWORDS, 0};
static PyObject *__pyx_pw_4grpc_7_cython_6cygrpc_93block_if_fork_in_progress(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
  PyObject *__pyx_v_postfork_state_to_reset = 0;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("block_if_fork_in_progress (wrapper)", 0);
  {
    static PyObject **__pyx_pyargnames[] = {&__pyx_n_s_postfork_state_to_reset,0};
    PyObject* values[1] = {0};
    values[0] = ((PyObject *)Py_None);
    if (unlikely(__pyx_kwds)) {
      Py_ssize_t kw_args;
      const Py_ssize_t pos_args = PyTuple_GET_SIZE(__pyx_args);
      switch (pos_args) {
        case  1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
        CYTHON_FALLTHROUGH;
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      kw_args = PyDict_Size(__pyx_kwds);
      switch (pos_args) {
        case  0:
        if (kw_args > 0) {
          PyObject* value = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_postfork_state_to_reset);
          if (value) { values[0] = value; kw_args--; }
        }
      }
      if (unlikely(kw_args > 0)) {
        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "block_if_fork_in_progress") < 0)) __PYX_ERR(1, 123, __pyx_L3_error)
      }
    } else {
      switch (PyTuple_GET_SIZE(__pyx_args)) {
        case  1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
        CYTHON_FALLTHROUGH;
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
    }
    __pyx_v_postfork_state_to_reset = values[0];
  }
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("block_if_fork_in_progress", 0, 0, 1, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(1, 123, __pyx_L3_error)
  __pyx_L3_error:;
  __Pyx_AddTraceback("grpc._cython.cygrpc.block_if_fork_in_progress", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  __pyx_r = __pyx_pf_4grpc_7_cython_6cygrpc_92block_if_fork_in_progress(__pyx_self, __pyx_v_postfork_state_to_reset);

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_4grpc_7_cython_6cygrpc_92block_if_fork_in_progress(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__pyx_v_postfork_state_to_reset) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  int __pyx_t_2;
  PyObject *__pyx_t_3 = NULL;
  PyObject *__pyx_t_4 = NULL;
  PyObject *__pyx_t_5 = NULL;
  PyObject *__pyx_t_6 = NULL;
  PyObject *__pyx_t_7 = NULL;
  PyObject *__pyx_t_8 = NULL;
  PyObject *__pyx_t_9 = NULL;
  int __pyx_t_10;
  int __pyx_t_11;
  PyObject *__pyx_t_12 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("block_if_fork_in_progress", 0);

  /* "src/python/grpcio/grpc/_cython/_cygrpc/fork_posix.pyx.pxi":124
 * 
 * def block_if_fork_in_progress(postfork_state_to_reset=None):
 *     if _GRPC_ENABLE_FORK_SUPPORT:             # <<<<<<<<<<<<<<
 *         with _fork_state.fork_in_progress_condition:
 *             if not _fork_state.fork_in_progress:
 */
  __Pyx_GetModuleGlobalName(__pyx_t_1, __pyx_n_s_GRPC_ENABLE_FORK_SUPPORT); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 124, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_t_2 = __Pyx_PyObject_IsTrue(__pyx_t_1); if (unlikely(__pyx_t_2 < 0)) __PYX_ERR(1, 124, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  if (__pyx_t_2) {

    /* "src/python/grpcio/grpc/_cython/_cygrpc/fork_posix.pyx.pxi":125
 * def block_if_fork_in_progress(postfork_state_to_reset=None):
 *     if _GRPC_ENABLE_FORK_SUPPORT:
 *         with _fork_state.fork_in_progress_condition:             # <<<<<<<<<<<<<<
 *             if not _fork_state.fork_in_progress:
 *                 return
 */
    /*with:*/ {
      __Pyx_GetModuleGlobalName(__pyx_t_1, __pyx_n_s_fork_state); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 125, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_1);
      __pyx_t_3 = __Pyx_PyObject_GetAttrStr(__pyx_t_1, __pyx_n_s_fork_in_progress_condition); if (unlikely(!__pyx_t_3)) __PYX_ERR(1, 125, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_3);
      __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
      __pyx_t_4 = __Pyx_PyObject_LookupSpecial(__pyx_t_3, __pyx_n_s_exit); if (unlikely(!__pyx_t_4)) __PYX_ERR(1, 125, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_4);
      __pyx_t_5 = __Pyx_PyObject_LookupSpecial(__pyx_t_3, __pyx_n_s_enter); if (unlikely(!__pyx_t_5)) __PYX_ERR(1, 125, __pyx_L4_error)
      __Pyx_GOTREF(__pyx_t_5);
      __pyx_t_6 = NULL;
      if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_5))) {
        __pyx_t_6 = PyMethod_GET_SELF(__pyx_t_5);
        if (likely(__pyx_t_6)) {
          PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_5);
          __Pyx_INCREF(__pyx_t_6);
          __Pyx_INCREF(function);
          __Pyx_DECREF_SET(__pyx_t_5, function);
        }
      }
      __pyx_t_1 = (__pyx_t_6) ? __Pyx_PyObject_CallOneArg(__pyx_t_5, __pyx_t_6) : __Pyx_PyObject_CallNoArg(__pyx_t_5);
      __Pyx_XDECREF(__pyx_t_6); __pyx_t_6 = 0;
      if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 125, __pyx_L4_error)
      __Pyx_GOTREF(__pyx_t_1);
      __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
      __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
      __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
      /*try:*/ {
        {
          __Pyx_PyThreadState_declare
          __Pyx_PyThreadState_assign
          __Pyx_ExceptionSave(&__pyx_t_7, &__pyx_t_8, &__pyx_t_9);
          __Pyx_XGOTREF(__pyx_t_7);
          __Pyx_XGOTREF(__pyx_t_8);
          __Pyx_XGOTREF(__pyx_t_9);
          /*try:*/ {

            /* "src/python/grpcio/grpc/_cython/_cygrpc/fork_posix.pyx.pxi":126
 *     if _GRPC_ENABLE_FORK_SUPPORT:
 *         with _fork_state.fork_in_progress_condition:
 *             if not _fork_state.fork_in_progress:             # <<<<<<<<<<<<<<
 *                 return
 *             if postfork_state_to_reset is not None:
 */
            __Pyx_GetModuleGlobalName(__pyx_t_3, __pyx_n_s_fork_state); if (unlikely(!__pyx_t_3)) __PYX_ERR(1, 126, __pyx_L8_error)
            __Pyx_GOTREF(__pyx_t_3);
            __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_t_3, __pyx_n_s_fork_in_progress); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 126, __pyx_L8_error)
            __Pyx_GOTREF(__pyx_t_1);
            __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
            __pyx_t_2 = __Pyx_PyObject_IsTrue(__pyx_t_1); if (unlikely(__pyx_t_2 < 0)) __PYX_ERR(1, 126, __pyx_L8_error)
            __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
            __pyx_t_10 = ((!__pyx_t_2) != 0);
            if (__pyx_t_10) {

              /* "src/python/grpcio/grpc/_cython/_cygrpc/fork_posix.pyx.pxi":127
 *         with _fork_state.fork_in_progress_condition:
 *             if not _fork_state.fork_in_progress:
 *                 return             # <<<<<<<<<<<<<<
 *             if postfork_state_to_reset is not None:
 *                 _fork_state.postfork_states_to_reset.append(postfork_state_to_reset)
 */
              __Pyx_XDECREF(__pyx_r);
              __pyx_r = Py_None; __Pyx_INCREF(Py_None);
              goto __pyx_L12_try_return;

              /* "src/python/grpcio/grpc/_cython/_cygrpc/fork_posix.pyx.pxi":126
 *     if _GRPC_ENABLE_FORK_SUPPORT:
 *         with _fork_state.fork_in_progress_condition:
 *             if not _fork_state.fork_in_progress:             # <<<<<<<<<<<<<<
 *                 return
 *             if postfork_state_to_reset is not None:
 */
            }

            /* "src/python/grpcio/grpc/_cython/_cygrpc/fork_posix.pyx.pxi":128
 *             if not _fork_state.fork_in_progress:
 *                 return
 *             if postfork_state_to_reset is not None:             # <<<<<<<<<<<<<<
 *                 _fork_state.postfork_states_to_reset.append(postfork_state_to_reset)
 *             _fork_state.active_thread_count.decrement()
 */
            __pyx_t_10 = (__pyx_v_postfork_state_to_reset != Py_None);
            __pyx_t_2 = (__pyx_t_10 != 0);
            if (__pyx_t_2) {

              /* "src/python/grpcio/grpc/_cython/_cygrpc/fork_posix.pyx.pxi":129
 *                 return
 *             if postfork_state_to_reset is not None:
 *                 _fork_state.postfork_states_to_reset.append(postfork_state_to_reset)             # <<<<<<<<<<<<<<
 *             _fork_state.active_thread_count.decrement()
 *             _fork_state.fork_in_progress_condition.wait()
 */
              __Pyx_GetModuleGlobalName(__pyx_t_1, __pyx_n_s_fork_state); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 129, __pyx_L8_error)
              __Pyx_GOTREF(__pyx_t_1);
              __pyx_t_3 = __Pyx_PyObject_GetAttrStr(__pyx_t_1, __pyx_n_s_postfork_states_to_reset); if (unlikely(!__pyx_t_3)) __PYX_ERR(1, 129, __pyx_L8_error)
              __Pyx_GOTREF(__pyx_t_3);
              __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
              __pyx_t_11 = __Pyx_PyObject_Append(__pyx_t_3, __pyx_v_postfork_state_to_reset); if (unlikely(__pyx_t_11 == ((int)-1))) __PYX_ERR(1, 129, __pyx_L8_error)
              __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;

              /* "src/python/grpcio/grpc/_cython/_cygrpc/fork_posix.pyx.pxi":128
 *             if not _fork_state.fork_in_progress:
 *                 return
 *             if postfork_state_to_reset is not None:             # <<<<<<<<<<<<<<
 *                 _fork_state.postfork_states_to_reset.append(postfork_state_to_reset)
 *             _fork_state.active_thread_count.decrement()
 */
            }

            /* "src/python/grpcio/grpc/_cython/_cygrpc/fork_posix.pyx.pxi":130
 *             if postfork_state_to_reset is not None:
 *                 _fork_state.postfork_states_to_reset.append(postfork_state_to_reset)
 *             _fork_state.active_thread_count.decrement()             # <<<<<<<<<<<<<<
 *             _fork_state.fork_in_progress_condition.wait()
 *             _fork_state.active_thread_count.increment()
 */
            __Pyx_GetModuleGlobalName(__pyx_t_1, __pyx_n_s_fork_state); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 130, __pyx_L8_error)
            __Pyx_GOTREF(__pyx_t_1);
            __pyx_t_5 = __Pyx_PyObject_GetAttrStr(__pyx_t_1, __pyx_n_s_active_thread_count); if (unlikely(!__pyx_t_5)) __PYX_ERR(1, 130, __pyx_L8_error)
            __Pyx_GOTREF(__pyx_t_5);
            __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
            __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_t_5, __pyx_n_s_decrement); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 130, __pyx_L8_error)
            __Pyx_GOTREF(__pyx_t_1);
            __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
            __pyx_t_5 = NULL;
            if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_1))) {
              __pyx_t_5 = PyMethod_GET_SELF(__pyx_t_1);
              if (likely(__pyx_t_5)) {
                PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_1);
                __Pyx_INCREF(__pyx_t_5);
                __Pyx_INCREF(function);
                __Pyx_DECREF_SET(__pyx_t_1, function);
              }
            }
            __pyx_t_3 = (__pyx_t_5) ? __Pyx_PyObject_CallOneArg(__pyx_t_1, __pyx_t_5) : __Pyx_PyObject_CallNoArg(__pyx_t_1);
            __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0;
            if (unlikely(!__pyx_t_3)) __PYX_ERR(1, 130, __pyx_L8_error)
            __Pyx_GOTREF(__pyx_t_3);
            __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
            __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;

            /* "src/python/grpcio/grpc/_cython/_cygrpc/fork_posix.pyx.pxi":131
 *                 _fork_state.postfork_states_to_reset.append(postfork_state_to_reset)
 *             _fork_state.active_thread_count.decrement()
 *             _fork_state.fork_in_progress_condition.wait()             # <<<<<<<<<<<<<<
 *             _fork_state.active_thread_count.increment()
 * 
 */
            __Pyx_GetModuleGlobalName(__pyx_t_1, __pyx_n_s_fork_state); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 131, __pyx_L8_error)
            __Pyx_GOTREF(__pyx_t_1);
            __pyx_t_5 = __Pyx_PyObject_GetAttrStr(__pyx_t_1, __pyx_n_s_fork_in_progress_condition); if (unlikely(!__pyx_t_5)) __PYX_ERR(1, 131, __pyx_L8_error)
            __Pyx_GOTREF(__pyx_t_5);
            __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
            __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_t_5, __pyx_n_s_wait); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 131, __pyx_L8_error)
            __Pyx_GOTREF(__pyx_t_1);
            __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
            __pyx_t_5 = NULL;
            if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_1))) {
              __pyx_t_5 = PyMethod_GET_SELF(__pyx_t_1);
              if (likely(__pyx_t_5)) {
                PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_1);
                __Pyx_INCREF(__pyx_t_5);
                __Pyx_INCREF(function);
                __Pyx_DECREF_SET(__pyx_t_1, function);
              }
            }
            __pyx_t_3 = (__pyx_t_5) ? __Pyx_PyObject_CallOneArg(__pyx_t_1, __pyx_t_5) : __Pyx_PyObject_CallNoArg(__pyx_t_1);
            __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0;
            if (unlikely(!__pyx_t_3)) __PYX_ERR(1, 131, __pyx_L8_error)
            __Pyx_GOTREF(__pyx_t_3);
            __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
            __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;

            /* "src/python/grpcio/grpc/_cython/_cygrpc/fork_posix.pyx.pxi":132
 *             _fork_state.active_thread_count.decrement()
 *             _fork_state.fork_in_progress_condition.wait()
 *             _fork_state.active_thread_count.increment()             # <<<<<<<<<<<<<<
 * 
 * 
 */
            __Pyx_GetModuleGlobalName(__pyx_t_1, __pyx_n_s_fork_state); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 132, __pyx_L8_error)
            __Pyx_GOTREF(__pyx_t_1);
            __pyx_t_5 = __Pyx_PyObject_GetAttrStr(__pyx_t_1, __pyx_n_s_active_thread_count); if (unlikely(!__pyx_t_5)) __PYX_ERR(1, 132, __pyx_L8_error)
            __Pyx_GOTREF(__pyx_t_5);
            __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
            __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_t_5, __pyx_n_s_increment); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 132, __pyx_L8_error)
            __Pyx_GOTREF(__pyx_t_1);
            __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
            __pyx_t_5 = NULL;
            if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_1))) {
              __pyx_t_5 = PyMethod_GET_SELF(__pyx_t_1);
              if (likely(__pyx_t_5)) {
                PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_1);
                __Pyx_INCREF(__pyx_t_5);
                __Pyx_INCREF(function);
                __Pyx_DECREF_SET(__pyx_t_1, function);
              }
            }
            __pyx_t_3 = (__pyx_t_5) ? __Pyx_PyObject_CallOneArg(__pyx_t_1, __pyx_t_5) : __Pyx_PyObject_CallNoArg(__pyx_t_1);
            __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0;
            if (unlikely(!__pyx_t_3)) __PYX_ERR(1, 132, __pyx_L8_error)
            __Pyx_GOTREF(__pyx_t_3);
            __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
            __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;

            /* "src/python/grpcio/grpc/_cython/_cygrpc/fork_posix.pyx.pxi":125
 * def block_if_fork_in_progress(postfork_state_to_reset=None):
 *     if _GRPC_ENABLE_FORK_SUPPORT:
 *         with _fork_state.fork_in_progress_condition:             # <<<<<<<<<<<<<<
 *             if not _fork_state.fork_in_progress:
 *                 return
 */
          }
          __Pyx_XDECREF(__pyx_t_7); __pyx_t_7 = 0;
          __Pyx_XDECREF(__pyx_t_8); __pyx_t_8 = 0;
          __Pyx_XDECREF(__pyx_t_9); __pyx_t_9 = 0;
          goto __pyx_L13_try_end;
          __pyx_L8_error:;
          __Pyx_XDECREF(__pyx_t_1); __pyx_t_1 = 0;
          __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0;
          __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0;
          __Pyx_XDECREF(__pyx_t_6); __pyx_t_6 = 0;
          /*except:*/ {
            __Pyx_AddTraceback("grpc._cython.cygrpc.block_if_fork_in_progress", __pyx_clineno, __pyx_lineno, __pyx_filename);
            if (__Pyx_GetException(&__pyx_t_3, &__pyx_t_1, &__pyx_t_5) < 0) __PYX_ERR(1, 125, __pyx_L10_except_error)
            __Pyx_GOTREF(__pyx_t_3);
            __Pyx_GOTREF(__pyx_t_1);
            __Pyx_GOTREF(__pyx_t_5);
            __pyx_t_6 = PyTuple_Pack(3, __pyx_t_3, __pyx_t_1, __pyx_t_5); if (unlikely(!__pyx_t_6)) __PYX_ERR(1, 125, __pyx_L10_except_error)
            __Pyx_GOTREF(__pyx_t_6);
            __pyx_t_12 = __Pyx_PyObject_Call(__pyx_t_4, __pyx_t_6, NULL);
            __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
            __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
            if (unlikely(!__pyx_t_12)) __PYX_ERR(1, 125, __pyx_L10_except_error)
            __Pyx_GOTREF(__pyx_t_12);
            __pyx_t_2 = __Pyx_PyObject_IsTrue(__pyx_t_12);
            __Pyx_DECREF(__pyx_t_12); __pyx_t_12 = 0;
            if (__pyx_t_2 < 0) __PYX_ERR(1, 125, __pyx_L10_except_error)
            __pyx_t_10 = ((!(__pyx_t_2 != 0)) != 0);
            if (__pyx_t_10) {
              __Pyx_GIVEREF(__pyx_t_3);
              __Pyx_GIVEREF(__pyx_t_1);
              __Pyx_XGIVEREF(__pyx_t_5);
              __Pyx_ErrRestoreWithState(__pyx_t_3, __pyx_t_1, __pyx_t_5);
              __pyx_t_3 = 0; __pyx_t_1 = 0; __pyx_t_5 = 0; 
              __PYX_ERR(1, 125, __pyx_L10_except_error)
            }
            __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0;
            __Pyx_XDECREF(__pyx_t_1); __pyx_t_1 = 0;
            __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0;
            goto __pyx_L9_exception_handled;
          }
          __pyx_L10_except_error:;
          __Pyx_XGIVEREF(__pyx_t_7);
          __Pyx_XGIVEREF(__pyx_t_8);
          __Pyx_XGIVEREF(__pyx_t_9);
          __Pyx_ExceptionReset(__pyx_t_7, __pyx_t_8, __pyx_t_9);
          goto __pyx_L1_error;
          __pyx_L12_try_return:;
          __Pyx_XGIVEREF(__pyx_t_7);
          __Pyx_XGIVEREF(__pyx_t_8);
          __Pyx_XGIVEREF(__pyx_t_9);
          __Pyx_ExceptionReset(__pyx_t_7, __pyx_t_8, __pyx_t_9);
          goto __pyx_L5_return;
          __pyx_L9_exception_handled:;
          __Pyx_XGIVEREF(__pyx_t_7);
          __Pyx_XGIVEREF(__pyx_t_8);
          __Pyx_XGIVEREF(__pyx_t_9);
          __Pyx_ExceptionReset(__pyx_t_7, __pyx_t_8, __pyx_t_9);
          __pyx_L13_try_end:;
        }
      }
      /*finally:*/ {
        /*normal exit:*/{
          if (__pyx_t_4) {
            __pyx_t_9 = __Pyx_PyObject_Call(__pyx_t_4, __pyx_tuple__17, NULL);
            __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
            if (unlikely(!__pyx_t_9)) __PYX_ERR(1, 125, __pyx_L1_error)
            __Pyx_GOTREF(__pyx_t_9);
            __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0;
          }
          goto __pyx_L7;
        }
        __pyx_L5_return: {
          __pyx_t_9 = __pyx_r;
          __pyx_r = 0;
          if (__pyx_t_4) {
            __pyx_t_8 = __Pyx_PyObject_Call(__pyx_t_4, __pyx_tuple__17, NULL);
            __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
            if (unlikely(!__pyx_t_8)) __PYX_ERR(1, 125, __pyx_L1_error)
            __Pyx_GOTREF(__pyx_t_8);
            __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
          }
          __pyx_r = __pyx_t_9;
          __pyx_t_9 = 0;
          goto __pyx_L0;
        }
        __pyx_L7:;
      }
      goto __pyx_L19;
      __pyx_L4_error:;
      __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
      goto __pyx_L1_error;
      __pyx_L19:;
    }

    /* "src/python/grpcio/grpc/_cython/_cygrpc/fork_posix.pyx.pxi":124
 * 
 * def block_if_fork_in_progress(postfork_state_to_reset=None):
 *     if _GRPC_ENABLE_FORK_SUPPORT:             # <<<<<<<<<<<<<<
 *         with _fork_state.fork_in_progress_condition:
 *             if not _fork_state.fork_in_progress:
 */
  }

  /* "src/python/grpcio/grpc/_cython/_cygrpc/fork_posix.pyx.pxi":123
 * 
 * 
 * def block_if_fork_in_progress(postfork_state_to_reset=None):             # <<<<<<<<<<<<<<
 *     if _GRPC_ENABLE_FORK_SUPPORT:
 *         with _fork_state.fork_in_progress_condition:
 */

  /* function exit code */
  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_XDECREF(__pyx_t_3);
  __Pyx_XDECREF(__pyx_t_5);
  __Pyx_XDECREF(__pyx_t_6);
  __Pyx_AddTraceback("grpc._cython.cygrpc.block_if_fork_in_progress", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "src/python/grpcio/grpc/_cython/_cygrpc/fork_posix.pyx.pxi":135
 * 
 * 
 * def enter_user_request_generator():             # <<<<<<<<<<<<<<
 *     if _GRPC_ENABLE_FORK_SUPPORT:
 *         _fork_state.active_thread_count.decrement()
 */

/* Python wrapper */
static PyObject *__pyx_pw_4grpc_7_cython_6cygrpc_95enter_user_request_generator(PyObject *__pyx_self, CYTHON_UNUSED PyObject *unused); /*proto*/
static PyMethodDef __pyx_mdef_4grpc_7_cython_6cygrpc_95enter_user_request_generator = {"enter_user_request_generator", (PyCFunction)__pyx_pw_4grpc_7_cython_6cygrpc_95enter_user_request_generator, METH_NOARGS, 0};
static PyObject *__pyx_pw_4grpc_7_cython_6cygrpc_95enter_user_request_generator(PyObject *__pyx_self, CYTHON_UNUSED PyObject *unused) {
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("enter_user_request_generator (wrapper)", 0);
  __pyx_r = __pyx_pf_4grpc_7_cython_6cygrpc_94enter_user_request_generator(__pyx_self);

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_4grpc_7_cython_6cygrpc_94enter_user_request_generator(CYTHON_UNUSED PyObject *__pyx_self) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  int __pyx_t_2;
  PyObject *__pyx_t_3 = NULL;
  PyObject *__pyx_t_4 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("enter_user_request_generator", 0);

  /* "src/python/grpcio/grpc/_cython/_cygrpc/fork_posix.pyx.pxi":136
 * 
 * def enter_user_request_generator():
 *     if _GRPC_ENABLE_FORK_SUPPORT:             # <<<<<<<<<<<<<<
 *         _fork_state.active_thread_count.decrement()
 * 
 */
  __Pyx_GetModuleGlobalName(__pyx_t_1, __pyx_n_s_GRPC_ENABLE_FORK_SUPPORT); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 136, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_t_2 = __Pyx_PyObject_IsTrue(__pyx_t_1); if (unlikely(__pyx_t_2 < 0)) __PYX_ERR(1, 136, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  if (__pyx_t_2) {

    /* "src/python/grpcio/grpc/_cython/_cygrpc/fork_posix.pyx.pxi":137
 * def enter_user_request_generator():
 *     if _GRPC_ENABLE_FORK_SUPPORT:
 *         _fork_state.active_thread_count.decrement()             # <<<<<<<<<<<<<<
 * 
 * 
 */
    __Pyx_GetModuleGlobalName(__pyx_t_3, __pyx_n_s_fork_state); if (unlikely(!__pyx_t_3)) __PYX_ERR(1, 137, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_3);
    __pyx_t_4 = __Pyx_PyObject_GetAttrStr(__pyx_t_3, __pyx_n_s_active_thread_count); if (unlikely(!__pyx_t_4)) __PYX_ERR(1, 137, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_4);
    __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
    __pyx_t_3 = __Pyx_PyObject_GetAttrStr(__pyx_t_4, __pyx_n_s_decrement); if (unlikely(!__pyx_t_3)) __PYX_ERR(1, 137, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_3);
    __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
    __pyx_t_4 = NULL;
    if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_3))) {
      __pyx_t_4 = PyMethod_GET_SELF(__pyx_t_3);
      if (likely(__pyx_t_4)) {
        PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_3);
        __Pyx_INCREF(__pyx_t_4);
        __Pyx_INCREF(function);
        __Pyx_DECREF_SET(__pyx_t_3, function);
      }
    }
    __pyx_t_1 = (__pyx_t_4) ? __Pyx_PyObject_CallOneArg(__pyx_t_3, __pyx_t_4) : __Pyx_PyObject_CallNoArg(__pyx_t_3);
    __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0;
    if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 137, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_1);
    __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
    __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;

    /* "src/python/grpcio/grpc/_cython/_cygrpc/fork_posix.pyx.pxi":136
 * 
 * def enter_user_request_generator():
 *     if _GRPC_ENABLE_FORK_SUPPORT:             # <<<<<<<<<<<<<<
 *         _fork_state.active_thread_count.decrement()
 * 
 */
  }

  /* "src/python/grpcio/grpc/_cython/_cygrpc/fork_posix.pyx.pxi":135
 * 
 * 
 * def enter_user_request_generator():             # <<<<<<<<<<<<<<
 *     if _GRPC_ENABLE_FORK_SUPPORT:
 *         _fork_state.active_thread_count.decrement()
 */

  /* function exit code */
  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_XDECREF(__pyx_t_3);
  __Pyx_XDECREF(__pyx_t_4);
  __Pyx_AddTraceback("grpc._cython.cygrpc.enter_user_request_generator", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "src/python/grpcio/grpc/_cython/_cygrpc/fork_posix.pyx.pxi":140
 * 
 * 
 * def return_from_user_request_generator():             # <<<<<<<<<<<<<<
 *     if _GRPC_ENABLE_FORK_SUPPORT:
 *         _fork_state.active_thread_count.increment()
 */

/* Python wrapper */
static PyObject *__pyx_pw_4grpc_7_cython_6cygrpc_97return_from_user_request_generator(PyObject *__pyx_self, CYTHON_UNUSED PyObject *unused); /*proto*/
static PyMethodDef __pyx_mdef_4grpc_7_cython_6cygrpc_97return_from_user_request_generator = {"return_from_user_request_generator", (PyCFunction)__pyx_pw_4grpc_7_cython_6cygrpc_97return_from_user_request_generator, METH_NOARGS, 0};
static PyObject *__pyx_pw_4grpc_7_cython_6cygrpc_97return_from_user_request_generator(PyObject *__pyx_self, CYTHON_UNUSED PyObject *unused) {
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("return_from_user_request_generator (wrapper)", 0);
  __pyx_r = __pyx_pf_4grpc_7_cython_6cygrpc_96return_from_user_request_generator(__pyx_self);

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_4grpc_7_cython_6cygrpc_96return_from_user_request_generator(CYTHON_UNUSED PyObject *__pyx_self) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  int __pyx_t_2;
  PyObject *__pyx_t_3 = NULL;
  PyObject *__pyx_t_4 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("return_from_user_request_generator", 0);

  /* "src/python/grpcio/grpc/_cython/_cygrpc/fork_posix.pyx.pxi":141
 * 
 * def return_from_user_request_generator():
 *     if _GRPC_ENABLE_FORK_SUPPORT:             # <<<<<<<<<<<<<<
 *         _fork_state.active_thread_count.increment()
 *         block_if_fork_in_progress()
 */
  __Pyx_GetModuleGlobalName(__pyx_t_1, __pyx_n_s_GRPC_ENABLE_FORK_SUPPORT); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 141, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_t_2 = __Pyx_PyObject_IsTrue(__pyx_t_1); if (unlikely(__pyx_t_2 < 0)) __PYX_ERR(1, 141, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  if (__pyx_t_2) {

    /* "src/python/grpcio/grpc/_cython/_cygrpc/fork_posix.pyx.pxi":142
 * def return_from_user_request_generator():
 *     if _GRPC_ENABLE_FORK_SUPPORT:
 *         _fork_state.active_thread_count.increment()             # <<<<<<<<<<<<<<
 *         block_if_fork_in_progress()
 * 
 */
    __Pyx_GetModuleGlobalName(__pyx_t_3, __pyx_n_s_fork_state); if (unlikely(!__pyx_t_3)) __PYX_ERR(1, 142, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_3);
    __pyx_t_4 = __Pyx_PyObject_GetAttrStr(__pyx_t_3, __pyx_n_s_active_thread_count); if (unlikely(!__pyx_t_4)) __PYX_ERR(1, 142, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_4);
    __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
    __pyx_t_3 = __Pyx_PyObject_GetAttrStr(__pyx_t_4, __pyx_n_s_increment); if (unlikely(!__pyx_t_3)) __PYX_ERR(1, 142, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_3);
    __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
    __pyx_t_4 = NULL;
    if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_3))) {
      __pyx_t_4 = PyMethod_GET_SELF(__pyx_t_3);
      if (likely(__pyx_t_4)) {
        PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_3);
        __Pyx_INCREF(__pyx_t_4);
        __Pyx_INCREF(function);
        __Pyx_DECREF_SET(__pyx_t_3, function);
      }
    }
    __pyx_t_1 = (__pyx_t_4) ? __Pyx_PyObject_CallOneArg(__pyx_t_3, __pyx_t_4) : __Pyx_PyObject_CallNoArg(__pyx_t_3);
    __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0;
    if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 142, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_1);
    __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
    __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;

    /* "src/python/grpcio/grpc/_cython/_cygrpc/fork_posix.pyx.pxi":143
 *     if _GRPC_ENABLE_FORK_SUPPORT:
 *         _fork_state.active_thread_count.increment()
 *         block_if_fork_in_progress()             # <<<<<<<<<<<<<<
 * 
 * 
 */
    __Pyx_GetModuleGlobalName(__pyx_t_3, __pyx_n_s_block_if_fork_in_progress); if (unlikely(!__pyx_t_3)) __PYX_ERR(1, 143, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_3);
    __pyx_t_4 = NULL;
    if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_3))) {
      __pyx_t_4 = PyMethod_GET_SELF(__pyx_t_3);
      if (likely(__pyx_t_4)) {
        PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_3);
        __Pyx_INCREF(__pyx_t_4);
        __Pyx_INCREF(function);
        __Pyx_DECREF_SET(__pyx_t_3, function);
      }
    }
    __pyx_t_1 = (__pyx_t_4) ? __Pyx_PyObject_CallOneArg(__pyx_t_3, __pyx_t_4) : __Pyx_PyObject_CallNoArg(__pyx_t_3);
    __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0;
    if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 143, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_1);
    __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
    __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;

    /* "src/python/grpcio/grpc/_cython/_cygrpc/fork_posix.pyx.pxi":141
 * 
 * def return_from_user_request_generator():
 *     if _GRPC_ENABLE_FORK_SUPPORT:             # <<<<<<<<<<<<<<
 *         _fork_state.active_thread_count.increment()
 *         block_if_fork_in_progress()
 */
  }

  /* "src/python/grpcio/grpc/_cython/_cygrpc/fork_posix.pyx.pxi":140
 * 
 * 
 * def return_from_user_request_generator():             # <<<<<<<<<<<<<<
 *     if _GRPC_ENABLE_FORK_SUPPORT:
 *         _fork_state.active_thread_count.increment()
 */

  /* function exit code */
  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_XDECREF(__pyx_t_3);
  __Pyx_XDECREF(__pyx_t_4);
  __Pyx_AddTraceback("grpc._cython.cygrpc.return_from_user_request_generator", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "src/python/grpcio/grpc/_cython/_cygrpc/fork_posix.pyx.pxi":146
 * 
 * 
 * def get_fork_epoch():             # <<<<<<<<<<<<<<
 *     return _fork_state.fork_epoch
 * 
 */

/* Python wrapper */
static PyObject *__pyx_pw_4grpc_7_cython_6cygrpc_99get_fork_epoch(PyObject *__pyx_self, CYTHON_UNUSED PyObject *unused); /*proto*/
static PyMethodDef __pyx_mdef_4grpc_7_cython_6cygrpc_99get_fork_epoch = {"get_fork_epoch", (PyCFunction)__pyx_pw_4grpc_7_cython_6cygrpc_99get_fork_epoch, METH_NOARGS, 0};
static PyObject *__pyx_pw_4grpc_7_cython_6cygrpc_99get_fork_epoch(PyObject *__pyx_self, CYTHON_UNUSED PyObject *unused) {
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("get_fork_epoch (wrapper)", 0);
  __pyx_r = __pyx_pf_4grpc_7_cython_6cygrpc_98get_fork_epoch(__pyx_self);

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_4grpc_7_cython_6cygrpc_98get_fork_epoch(CYTHON_UNUSED PyObject *__pyx_self) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  PyObject *__pyx_t_2 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("get_fork_epoch", 0);

  /* "src/python/grpcio/grpc/_cython/_cygrpc/fork_posix.pyx.pxi":147
 * 
 * def get_fork_epoch():
 *     return _fork_state.fork_epoch             # <<<<<<<<<<<<<<
 * 
 * 
 */
  __Pyx_XDECREF(__pyx_r);
  __Pyx_GetModuleGlobalName(__pyx_t_1, __pyx_n_s_fork_state); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 147, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_t_1, __pyx_n_s_fork_epoch); if (unlikely(!__pyx_t_2)) __PYX_ERR(1, 147, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  __pyx_r = __pyx_t_2;
  __pyx_t_2 = 0;
  goto __pyx_L0;

  /* "src/python/grpcio/grpc/_cython/_cygrpc/fork_posix.pyx.pxi":146
 * 
 * 
 * def get_fork_epoch():             # <<<<<<<<<<<<<<
 *     return _fork_state.fork_epoch
 * 
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_AddTraceback("grpc._cython.cygrpc.get_fork_epoch", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "src/python/grpcio/grpc/_cython/_cygrpc/fork_posix.pyx.pxi":150
 * 
 * 
 * def is_fork_support_enabled():             # <<<<<<<<<<<<<<
 *     return _GRPC_ENABLE_FORK_SUPPORT
 * 
 */

/* Python wrapper */
static PyObject *__pyx_pw_4grpc_7_cython_6cygrpc_101is_fork_support_enabled(PyObject *__pyx_self, CYTHON_UNUSED PyObject *unused); /*proto*/
static PyMethodDef __pyx_mdef_4grpc_7_cython_6cygrpc_101is_fork_support_enabled = {"is_fork_support_enabled", (PyCFunction)__pyx_pw_4grpc_7_cython_6cygrpc_101is_fork_support_enabled, METH_NOARGS, 0};
static PyObject *__pyx_pw_4grpc_7_cython_6cygrpc_101is_fork_support_enabled(PyObject *__pyx_self, CYTHON_UNUSED PyObject *unused) {
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("is_fork_support_enabled (wrapper)", 0);
  __pyx_r = __pyx_pf_4grpc_7_cython_6cygrpc_100is_fork_support_enabled(__pyx_self);

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_4grpc_7_cython_6cygrpc_100is_fork_support_enabled(CYTHON_UNUSED PyObject *__pyx_self) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("is_fork_support_enabled", 0);

  /* "src/python/grpcio/grpc/_cython/_cygrpc/fork_posix.pyx.pxi":151
 * 
 * def is_fork_support_enabled():
 *     return _GRPC_ENABLE_FORK_SUPPORT             # <<<<<<<<<<<<<<
 * 
 * 
 */
  __Pyx_XDECREF(__pyx_r);
  __Pyx_GetModuleGlobalName(__pyx_t_1, __pyx_n_s_GRPC_ENABLE_FORK_SUPPORT); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 151, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_r = __pyx_t_1;
  __pyx_t_1 = 0;
  goto __pyx_L0;

  /* "src/python/grpcio/grpc/_cython/_cygrpc/fork_posix.pyx.pxi":150
 * 
 * 
 * def is_fork_support_enabled():             # <<<<<<<<<<<<<<
 *     return _GRPC_ENABLE_FORK_SUPPORT
 * 
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_AddTraceback("grpc._cython.cygrpc.is_fork_support_enabled", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "src/python/grpcio/grpc/_cython/_cygrpc/fork_posix.pyx.pxi":154
 * 
 * 
 * def fork_register_channel(channel):             # <<<<<<<<<<<<<<
 *     if _GRPC_ENABLE_FORK_SUPPORT:
 *         _fork_state.channels.add(channel)
 */

/* Python wrapper */
static PyObject *__pyx_pw_4grpc_7_cython_6cygrpc_103fork_register_channel(PyObject *__pyx_self, PyObject *__pyx_v_channel); /*proto*/
static PyMethodDef __pyx_mdef_4grpc_7_cython_6cygrpc_103fork_register_channel = {"fork_register_channel", (PyCFunction)__pyx_pw_4grpc_7_cython_6cygrpc_103fork_register_channel, METH_O, 0};
static PyObject *__pyx_pw_4grpc_7_cython_6cygrpc_103fork_register_channel(PyObject *__pyx_self, PyObject *__pyx_v_channel) {
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("fork_register_channel (wrapper)", 0);
  __pyx_r = __pyx_pf_4grpc_7_cython_6cygrpc_102fork_register_channel(__pyx_self, ((PyObject *)__pyx_v_channel));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_4grpc_7_cython_6cygrpc_102fork_register_channel(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__pyx_v_channel) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  int __pyx_t_2;
  PyObject *__pyx_t_3 = NULL;
  PyObject *__pyx_t_4 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("fork_register_channel", 0);

  /* "src/python/grpcio/grpc/_cython/_cygrpc/fork_posix.pyx.pxi":155
 * 
 * def fork_register_channel(channel):
 *     if _GRPC_ENABLE_FORK_SUPPORT:             # <<<<<<<<<<<<<<
 *         _fork_state.channels.add(channel)
 * 
 */
  __Pyx_GetModuleGlobalName(__pyx_t_1, __pyx_n_s_GRPC_ENABLE_FORK_SUPPORT); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 155, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_t_2 = __Pyx_PyObject_IsTrue(__pyx_t_1); if (unlikely(__pyx_t_2 < 0)) __PYX_ERR(1, 155, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  if (__pyx_t_2) {

    /* "src/python/grpcio/grpc/_cython/_cygrpc/fork_posix.pyx.pxi":156
 * def fork_register_channel(channel):
 *     if _GRPC_ENABLE_FORK_SUPPORT:
 *         _fork_state.channels.add(channel)             # <<<<<<<<<<<<<<
 * 
 * 
 */
    __Pyx_GetModuleGlobalName(__pyx_t_3, __pyx_n_s_fork_state); if (unlikely(!__pyx_t_3)) __PYX_ERR(1, 156, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_3);
    __pyx_t_4 = __Pyx_PyObject_GetAttrStr(__pyx_t_3, __pyx_n_s_channels); if (unlikely(!__pyx_t_4)) __PYX_ERR(1, 156, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_4);
    __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
    __pyx_t_3 = __Pyx_PyObject_GetAttrStr(__pyx_t_4, __pyx_n_s_add); if (unlikely(!__pyx_t_3)) __PYX_ERR(1, 156, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_3);
    __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
    __pyx_t_4 = NULL;
    if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_3))) {
      __pyx_t_4 = PyMethod_GET_SELF(__pyx_t_3);
      if (likely(__pyx_t_4)) {
        PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_3);
        __Pyx_INCREF(__pyx_t_4);
        __Pyx_INCREF(function);
        __Pyx_DECREF_SET(__pyx_t_3, function);
      }
    }
    __pyx_t_1 = (__pyx_t_4) ? __Pyx_PyObject_Call2Args(__pyx_t_3, __pyx_t_4, __pyx_v_channel) : __Pyx_PyObject_CallOneArg(__pyx_t_3, __pyx_v_channel);
    __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0;
    if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 156, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_1);
    __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
    __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;

    /* "src/python/grpcio/grpc/_cython/_cygrpc/fork_posix.pyx.pxi":155
 * 
 * def fork_register_channel(channel):
 *     if _GRPC_ENABLE_FORK_SUPPORT:             # <<<<<<<<<<<<<<
 *         _fork_state.channels.add(channel)
 * 
 */
  }

  /* "src/python/grpcio/grpc/_cython/_cygrpc/fork_posix.pyx.pxi":154
 * 
 * 
 * def fork_register_channel(channel):             # <<<<<<<<<<<<<<
 *     if _GRPC_ENABLE_FORK_SUPPORT:
 *         _fork_state.channels.add(channel)
 */

  /* function exit code */
  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_XDECREF(__pyx_t_3);
  __Pyx_XDECREF(__pyx_t_4);
  __Pyx_AddTraceback("grpc._cython.cygrpc.fork_register_channel", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "src/python/grpcio/grpc/_cython/_cygrpc/fork_posix.pyx.pxi":159
 * 
 * 
 * def fork_unregister_channel(channel):             # <<<<<<<<<<<<<<
 *     if _GRPC_ENABLE_FORK_SUPPORT:
 *         _fork_state.channels.discard(channel)
 */

/* Python wrapper */
static PyObject *__pyx_pw_4grpc_7_cython_6cygrpc_105fork_unregister_channel(PyObject *__pyx_self, PyObject *__pyx_v_channel); /*proto*/
static PyMethodDef __pyx_mdef_4grpc_7_cython_6cygrpc_105fork_unregister_channel = {"fork_unregister_channel", (PyCFunction)__pyx_pw_4grpc_7_cython_6cygrpc_105fork_unregister_channel, METH_O, 0};
static PyObject *__pyx_pw_4grpc_7_cython_6cygrpc_105fork_unregister_channel(PyObject *__pyx_self, PyObject *__pyx_v_channel) {
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("fork_unregister_channel (wrapper)", 0);
  __pyx_r = __pyx_pf_4grpc_7_cython_6cygrpc_104fork_unregister_channel(__pyx_self, ((PyObject *)__pyx_v_channel));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_4grpc_7_cython_6cygrpc_104fork_unregister_channel(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__pyx_v_channel) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  int __pyx_t_2;
  PyObject *__pyx_t_3 = NULL;
  PyObject *__pyx_t_4 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("fork_unregister_channel", 0);

  /* "src/python/grpcio/grpc/_cython/_cygrpc/fork_posix.pyx.pxi":160
 * 
 * def fork_unregister_channel(channel):
 *     if _GRPC_ENABLE_FORK_SUPPORT:             # <<<<<<<<<<<<<<
 *         _fork_state.channels.discard(channel)
 * 
 */
  __Pyx_GetModuleGlobalName(__pyx_t_1, __pyx_n_s_GRPC_ENABLE_FORK_SUPPORT); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 160, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_t_2 = __Pyx_PyObject_IsTrue(__pyx_t_1); if (unlikely(__pyx_t_2 < 0)) __PYX_ERR(1, 160, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  if (__pyx_t_2) {

    /* "src/python/grpcio/grpc/_cython/_cygrpc/fork_posix.pyx.pxi":161
 * def fork_unregister_channel(channel):
 *     if _GRPC_ENABLE_FORK_SUPPORT:
 *         _fork_state.channels.discard(channel)             # <<<<<<<<<<<<<<
 * 
 * 
 */
    __Pyx_GetModuleGlobalName(__pyx_t_3, __pyx_n_s_fork_state); if (unlikely(!__pyx_t_3)) __PYX_ERR(1, 161, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_3);
    __pyx_t_4 = __Pyx_PyObject_GetAttrStr(__pyx_t_3, __pyx_n_s_channels); if (unlikely(!__pyx_t_4)) __PYX_ERR(1, 161, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_4);
    __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
    __pyx_t_3 = __Pyx_PyObject_GetAttrStr(__pyx_t_4, __pyx_n_s_discard); if (unlikely(!__pyx_t_3)) __PYX_ERR(1, 161, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_3);
    __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
    __pyx_t_4 = NULL;
    if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_3))) {
      __pyx_t_4 = PyMethod_GET_SELF(__pyx_t_3);
      if (likely(__pyx_t_4)) {
        PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_3);
        __Pyx_INCREF(__pyx_t_4);
        __Pyx_INCREF(function);
        __Pyx_DECREF_SET(__pyx_t_3, function);
      }
    }
    __pyx_t_1 = (__pyx_t_4) ? __Pyx_PyObject_Call2Args(__pyx_t_3, __pyx_t_4, __pyx_v_channel) : __Pyx_PyObject_CallOneArg(__pyx_t_3, __pyx_v_channel);
    __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0;
    if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 161, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_1);
    __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
    __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;

    /* "src/python/grpcio/grpc/_cython/_cygrpc/fork_posix.pyx.pxi":160
 * 
 * def fork_unregister_channel(channel):
 *     if _GRPC_ENABLE_FORK_SUPPORT:             # <<<<<<<<<<<<<<
 *         _fork_state.channels.discard(channel)
 * 
 */
  }

  /* "src/python/grpcio/grpc/_cython/_cygrpc/fork_posix.pyx.pxi":159
 * 
 * 
 * def fork_unregister_channel(channel):             # <<<<<<<<<<<<<<
 *     if _GRPC_ENABLE_FORK_SUPPORT:
 *         _fork_state.channels.discard(channel)
 */

  /* function exit code */
  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_XDECREF(__pyx_t_3);
  __Pyx_XDECREF(__pyx_t_4);
  __Pyx_AddTraceback("grpc._cython.cygrpc.fork_unregister_channel", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "src/python/grpcio/grpc/_cython/_cygrpc/fork_posix.pyx.pxi":165
 * 
 * class _ActiveThreadCount(object):
 *     def __init__(self):             # <<<<<<<<<<<<<<
 *         self._num_active_threads = 0
 *         self._condition = threading.Condition()
 */

/* Python wrapper */
static PyObject *__pyx_pw_4grpc_7_cython_6cygrpc_18_ActiveThreadCount_1__init__(PyObject *__pyx_self, PyObject *__pyx_v_self); /*proto*/
static PyMethodDef __pyx_mdef_4grpc_7_cython_6cygrpc_18_ActiveThreadCount_1__init__ = {"__init__", (PyCFunction)__pyx_pw_4grpc_7_cython_6cygrpc_18_ActiveThreadCount_1__init__, METH_O, 0};
static PyObject *__pyx_pw_4grpc_7_cython_6cygrpc_18_ActiveThreadCount_1__init__(PyObject *__pyx_self, PyObject *__pyx_v_self) {
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__init__ (wrapper)", 0);
  __pyx_r = __pyx_pf_4grpc_7_cython_6cygrpc_18_ActiveThreadCount___init__(__pyx_self, ((PyObject *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_4grpc_7_cython_6cygrpc_18_ActiveThreadCount___init__(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__pyx_v_self) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  PyObject *__pyx_t_2 = NULL;
  PyObject *__pyx_t_3 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("__init__", 0);

  /* "src/python/grpcio/grpc/_cython/_cygrpc/fork_posix.pyx.pxi":166
 * class _ActiveThreadCount(object):
 *     def __init__(self):
 *         self._num_active_threads = 0             # <<<<<<<<<<<<<<
 *         self._condition = threading.Condition()
 * 
 */
  if (__Pyx_PyObject_SetAttrStr(__pyx_v_self, __pyx_n_s_num_active_threads, __pyx_int_0) < 0) __PYX_ERR(1, 166, __pyx_L1_error)

  /* "src/python/grpcio/grpc/_cython/_cygrpc/fork_posix.pyx.pxi":167
 *     def __init__(self):
 *         self._num_active_threads = 0
 *         self._condition = threading.Condition()             # <<<<<<<<<<<<<<
 * 
 *     def increment(self):
 */
  __Pyx_GetModuleGlobalName(__pyx_t_2, __pyx_n_s_threading); if (unlikely(!__pyx_t_2)) __PYX_ERR(1, 167, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __pyx_t_3 = __Pyx_PyObject_GetAttrStr(__pyx_t_2, __pyx_n_s_Condition); if (unlikely(!__pyx_t_3)) __PYX_ERR(1, 167, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  __pyx_t_2 = NULL;
  if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_3))) {
    __pyx_t_2 = PyMethod_GET_SELF(__pyx_t_3);
    if (likely(__pyx_t_2)) {
      PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_3);
      __Pyx_INCREF(__pyx_t_2);
      __Pyx_INCREF(function);
      __Pyx_DECREF_SET(__pyx_t_3, function);
    }
  }
  __pyx_t_1 = (__pyx_t_2) ? __Pyx_PyObject_CallOneArg(__pyx_t_3, __pyx_t_2) : __Pyx_PyObject_CallNoArg(__pyx_t_3);
  __Pyx_XDECREF(__pyx_t_2); __pyx_t_2 = 0;
  if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 167, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
  if (__Pyx_PyObject_SetAttrStr(__pyx_v_self, __pyx_n_s_condition, __pyx_t_1) < 0) __PYX_ERR(1, 167, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;

  /* "src/python/grpcio/grpc/_cython/_cygrpc/fork_posix.pyx.pxi":165
 * 
 * class _ActiveThreadCount(object):
 *     def __init__(self):             # <<<<<<<<<<<<<<
 *         self._num_active_threads = 0
 *         self._condition = threading.Condition()
 */

  /* function exit code */
  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_XDECREF(__pyx_t_3);
  __Pyx_AddTraceback("grpc._cython.cygrpc._ActiveThreadCount.__init__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "src/python/grpcio/grpc/_cython/_cygrpc/fork_posix.pyx.pxi":169
 *         self._condition = threading.Condition()
 * 
 *     def increment(self):             # <<<<<<<<<<<<<<
 *         with self._condition:
 *             self._num_active_threads += 1
 */

/* Python wrapper */
static PyObject *__pyx_pw_4grpc_7_cython_6cygrpc_18_ActiveThreadCount_3increment(PyObject *__pyx_self, PyObject *__pyx_v_self); /*proto*/
static PyMethodDef __pyx_mdef_4grpc_7_cython_6cygrpc_18_ActiveThreadCount_3increment = {"increment", (PyCFunction)__pyx_pw_4grpc_7_cython_6cygrpc_18_ActiveThreadCount_3increment, METH_O, 0};
static PyObject *__pyx_pw_4grpc_7_cython_6cygrpc_18_ActiveThreadCount_3increment(PyObject *__pyx_self, PyObject *__pyx_v_self) {
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("increment (wrapper)", 0);
  __pyx_r = __pyx_pf_4grpc_7_cython_6cygrpc_18_ActiveThreadCount_2increment(__pyx_self, ((PyObject *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_4grpc_7_cython_6cygrpc_18_ActiveThreadCount_2increment(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__pyx_v_self) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  PyObject *__pyx_t_2 = NULL;
  PyObject *__pyx_t_3 = NULL;
  PyObject *__pyx_t_4 = NULL;
  PyObject *__pyx_t_5 = NULL;
  PyObject *__pyx_t_6 = NULL;
  PyObject *__pyx_t_7 = NULL;
  PyObject *__pyx_t_8 = NULL;
  PyObject *__pyx_t_9 = NULL;
  int __pyx_t_10;
  int __pyx_t_11;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("increment", 0);

  /* "src/python/grpcio/grpc/_cython/_cygrpc/fork_posix.pyx.pxi":170
 * 
 *     def increment(self):
 *         with self._condition:             # <<<<<<<<<<<<<<
 *             self._num_active_threads += 1
 * 
 */
  /*with:*/ {
    __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_v_self, __pyx_n_s_condition); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 170, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_1);
    __pyx_t_2 = __Pyx_PyObject_LookupSpecial(__pyx_t_1, __pyx_n_s_exit); if (unlikely(!__pyx_t_2)) __PYX_ERR(1, 170, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_2);
    __pyx_t_4 = __Pyx_PyObject_LookupSpecial(__pyx_t_1, __pyx_n_s_enter); if (unlikely(!__pyx_t_4)) __PYX_ERR(1, 170, __pyx_L3_error)
    __Pyx_GOTREF(__pyx_t_4);
    __pyx_t_5 = NULL;
    if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_4))) {
      __pyx_t_5 = PyMethod_GET_SELF(__pyx_t_4);
      if (likely(__pyx_t_5)) {
        PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_4);
        __Pyx_INCREF(__pyx_t_5);
        __Pyx_INCREF(function);
        __Pyx_DECREF_SET(__pyx_t_4, function);
      }
    }
    __pyx_t_3 = (__pyx_t_5) ? __Pyx_PyObject_CallOneArg(__pyx_t_4, __pyx_t_5) : __Pyx_PyObject_CallNoArg(__pyx_t_4);
    __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0;
    if (unlikely(!__pyx_t_3)) __PYX_ERR(1, 170, __pyx_L3_error)
    __Pyx_GOTREF(__pyx_t_3);
    __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
    __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
    __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
    /*try:*/ {
      {
        __Pyx_PyThreadState_declare
        __Pyx_PyThreadState_assign
        __Pyx_ExceptionSave(&__pyx_t_6, &__pyx_t_7, &__pyx_t_8);
        __Pyx_XGOTREF(__pyx_t_6);
        __Pyx_XGOTREF(__pyx_t_7);
        __Pyx_XGOTREF(__pyx_t_8);
        /*try:*/ {

          /* "src/python/grpcio/grpc/_cython/_cygrpc/fork_posix.pyx.pxi":171
 *     def increment(self):
 *         with self._condition:
 *             self._num_active_threads += 1             # <<<<<<<<<<<<<<
 * 
 *     def decrement(self):
 */
          __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_v_self, __pyx_n_s_num_active_threads); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 171, __pyx_L7_error)
          __Pyx_GOTREF(__pyx_t_1);
          __pyx_t_3 = __Pyx_PyInt_AddObjC(__pyx_t_1, __pyx_int_1, 1, 1, 0); if (unlikely(!__pyx_t_3)) __PYX_ERR(1, 171, __pyx_L7_error)
          __Pyx_GOTREF(__pyx_t_3);
          __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
          if (__Pyx_PyObject_SetAttrStr(__pyx_v_self, __pyx_n_s_num_active_threads, __pyx_t_3) < 0) __PYX_ERR(1, 171, __pyx_L7_error)
          __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;

          /* "src/python/grpcio/grpc/_cython/_cygrpc/fork_posix.pyx.pxi":170
 * 
 *     def increment(self):
 *         with self._condition:             # <<<<<<<<<<<<<<
 *             self._num_active_threads += 1
 * 
 */
        }
        __Pyx_XDECREF(__pyx_t_6); __pyx_t_6 = 0;
        __Pyx_XDECREF(__pyx_t_7); __pyx_t_7 = 0;
        __Pyx_XDECREF(__pyx_t_8); __pyx_t_8 = 0;
        goto __pyx_L12_try_end;
        __pyx_L7_error:;
        __Pyx_XDECREF(__pyx_t_1); __pyx_t_1 = 0;
        __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0;
        __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0;
        __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0;
        /*except:*/ {
          __Pyx_AddTraceback("grpc._cython.cygrpc._ActiveThreadCount.increment", __pyx_clineno, __pyx_lineno, __pyx_filename);
          if (__Pyx_GetException(&__pyx_t_3, &__pyx_t_1, &__pyx_t_4) < 0) __PYX_ERR(1, 170, __pyx_L9_except_error)
          __Pyx_GOTREF(__pyx_t_3);
          __Pyx_GOTREF(__pyx_t_1);
          __Pyx_GOTREF(__pyx_t_4);
          __pyx_t_5 = PyTuple_Pack(3, __pyx_t_3, __pyx_t_1, __pyx_t_4); if (unlikely(!__pyx_t_5)) __PYX_ERR(1, 170, __pyx_L9_except_error)
          __Pyx_GOTREF(__pyx_t_5);
          __pyx_t_9 = __Pyx_PyObject_Call(__pyx_t_2, __pyx_t_5, NULL);
          __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
          __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
          if (unlikely(!__pyx_t_9)) __PYX_ERR(1, 170, __pyx_L9_except_error)
          __Pyx_GOTREF(__pyx_t_9);
          __pyx_t_10 = __Pyx_PyObject_IsTrue(__pyx_t_9);
          __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0;
          if (__pyx_t_10 < 0) __PYX_ERR(1, 170, __pyx_L9_except_error)
          __pyx_t_11 = ((!(__pyx_t_10 != 0)) != 0);
          if (__pyx_t_11) {
            __Pyx_GIVEREF(__pyx_t_3);
            __Pyx_GIVEREF(__pyx_t_1);
            __Pyx_XGIVEREF(__pyx_t_4);
            __Pyx_ErrRestoreWithState(__pyx_t_3, __pyx_t_1, __pyx_t_4);
            __pyx_t_3 = 0; __pyx_t_1 = 0; __pyx_t_4 = 0; 
            __PYX_ERR(1, 170, __pyx_L9_except_error)
          }
          __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0;
          __Pyx_XDECREF(__pyx_t_1); __pyx_t_1 = 0;
          __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0;
          goto __pyx_L8_exception_handled;
        }
        __pyx_L9_except_error:;
        __Pyx_XGIVEREF(__pyx_t_6);
        __Pyx_XGIVEREF(__pyx_t_7);
        __Pyx_XGIVEREF(__pyx_t_8);
        __Pyx_ExceptionReset(__pyx_t_6, __pyx_t_7, __pyx_t_8);
        goto __pyx_L1_error;
        __pyx_L8_exception_handled:;
        __Pyx_XGIVEREF(__pyx_t_6);
        __Pyx_XGIVEREF(__pyx_t_7);
        __Pyx_XGIVEREF(__pyx_t_8);
        __Pyx_ExceptionReset(__pyx_t_6, __pyx_t_7, __pyx_t_8);
        __pyx_L12_try_end:;
      }
    }
    /*finally:*/ {
      /*normal exit:*/{
        if (__pyx_t_2) {
          __pyx_t_8 = __Pyx_PyObject_Call(__pyx_t_2, __pyx_tuple__17, NULL);
          __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
          if (unlikely(!__pyx_t_8)) __PYX_ERR(1, 170, __pyx_L1_error)
          __Pyx_GOTREF(__pyx_t_8);
          __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
        }
        goto __pyx_L6;
      }
      __pyx_L6:;
    }
    goto __pyx_L16;
    __pyx_L3_error:;
    __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
    goto __pyx_L1_error;
    __pyx_L16:;
  }

  /* "src/python/grpcio/grpc/_cython/_cygrpc/fork_posix.pyx.pxi":169
 *         self._condition = threading.Condition()
 * 
 *     def increment(self):             # <<<<<<<<<<<<<<
 *         with self._condition:
 *             self._num_active_threads += 1
 */

  /* function exit code */
  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_XDECREF(__pyx_t_3);
  __Pyx_XDECREF(__pyx_t_4);
  __Pyx_XDECREF(__pyx_t_5);
  __Pyx_AddTraceback("grpc._cython.cygrpc._ActiveThreadCount.increment", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "src/python/grpcio/grpc/_cython/_cygrpc/fork_posix.pyx.pxi":173
 *             self._num_active_threads += 1
 * 
 *     def decrement(self):             # <<<<<<<<<<<<<<
 *         with self._condition:
 *             self._num_active_threads -= 1
 */

/* Python wrapper */
static PyObject *__pyx_pw_4grpc_7_cython_6cygrpc_18_ActiveThreadCount_5decrement(PyObject *__pyx_self, PyObject *__pyx_v_self); /*proto*/
static PyMethodDef __pyx_mdef_4grpc_7_cython_6cygrpc_18_ActiveThreadCount_5decrement = {"decrement", (PyCFunction)__pyx_pw_4grpc_7_cython_6cygrpc_18_ActiveThreadCount_5decrement, METH_O, 0};
static PyObject *__pyx_pw_4grpc_7_cython_6cygrpc_18_ActiveThreadCount_5decrement(PyObject *__pyx_self, PyObject *__pyx_v_self) {
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("decrement (wrapper)", 0);
  __pyx_r = __pyx_pf_4grpc_7_cython_6cygrpc_18_ActiveThreadCount_4decrement(__pyx_self, ((PyObject *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_4grpc_7_cython_6cygrpc_18_ActiveThreadCount_4decrement(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__pyx_v_self) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  PyObject *__pyx_t_2 = NULL;
  PyObject *__pyx_t_3 = NULL;
  PyObject *__pyx_t_4 = NULL;
  PyObject *__pyx_t_5 = NULL;
  PyObject *__pyx_t_6 = NULL;
  PyObject *__pyx_t_7 = NULL;
  PyObject *__pyx_t_8 = NULL;
  int __pyx_t_9;
  PyObject *__pyx_t_10 = NULL;
  int __pyx_t_11;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("decrement", 0);

  /* "src/python/grpcio/grpc/_cython/_cygrpc/fork_posix.pyx.pxi":174
 * 
 *     def decrement(self):
 *         with self._condition:             # <<<<<<<<<<<<<<
 *             self._num_active_threads -= 1
 *             if self._num_active_threads == 0:
 */
  /*with:*/ {
    __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_v_self, __pyx_n_s_condition); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 174, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_1);
    __pyx_t_2 = __Pyx_PyObject_LookupSpecial(__pyx_t_1, __pyx_n_s_exit); if (unlikely(!__pyx_t_2)) __PYX_ERR(1, 174, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_2);
    __pyx_t_4 = __Pyx_PyObject_LookupSpecial(__pyx_t_1, __pyx_n_s_enter); if (unlikely(!__pyx_t_4)) __PYX_ERR(1, 174, __pyx_L3_error)
    __Pyx_GOTREF(__pyx_t_4);
    __pyx_t_5 = NULL;
    if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_4))) {
      __pyx_t_5 = PyMethod_GET_SELF(__pyx_t_4);
      if (likely(__pyx_t_5)) {
        PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_4);
        __Pyx_INCREF(__pyx_t_5);
        __Pyx_INCREF(function);
        __Pyx_DECREF_SET(__pyx_t_4, function);
      }
    }
    __pyx_t_3 = (__pyx_t_5) ? __Pyx_PyObject_CallOneArg(__pyx_t_4, __pyx_t_5) : __Pyx_PyObject_CallNoArg(__pyx_t_4);
    __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0;
    if (unlikely(!__pyx_t_3)) __PYX_ERR(1, 174, __pyx_L3_error)
    __Pyx_GOTREF(__pyx_t_3);
    __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
    __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
    __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
    /*try:*/ {
      {
        __Pyx_PyThreadState_declare
        __Pyx_PyThreadState_assign
        __Pyx_ExceptionSave(&__pyx_t_6, &__pyx_t_7, &__pyx_t_8);
        __Pyx_XGOTREF(__pyx_t_6);
        __Pyx_XGOTREF(__pyx_t_7);
        __Pyx_XGOTREF(__pyx_t_8);
        /*try:*/ {

          /* "src/python/grpcio/grpc/_cython/_cygrpc/fork_posix.pyx.pxi":175
 *     def decrement(self):
 *         with self._condition:
 *             self._num_active_threads -= 1             # <<<<<<<<<<<<<<
 *             if self._num_active_threads == 0:
 *                 self._condition.notify_all()
 */
          __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_v_self, __pyx_n_s_num_active_threads); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 175, __pyx_L7_error)
          __Pyx_GOTREF(__pyx_t_1);
          __pyx_t_3 = __Pyx_PyInt_SubtractObjC(__pyx_t_1, __pyx_int_1, 1, 1, 0); if (unlikely(!__pyx_t_3)) __PYX_ERR(1, 175, __pyx_L7_error)
          __Pyx_GOTREF(__pyx_t_3);
          __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
          if (__Pyx_PyObject_SetAttrStr(__pyx_v_self, __pyx_n_s_num_active_threads, __pyx_t_3) < 0) __PYX_ERR(1, 175, __pyx_L7_error)
          __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;

          /* "src/python/grpcio/grpc/_cython/_cygrpc/fork_posix.pyx.pxi":176
 *         with self._condition:
 *             self._num_active_threads -= 1
 *             if self._num_active_threads == 0:             # <<<<<<<<<<<<<<
 *                 self._condition.notify_all()
 * 
 */
          __pyx_t_3 = __Pyx_PyObject_GetAttrStr(__pyx_v_self, __pyx_n_s_num_active_threads); if (unlikely(!__pyx_t_3)) __PYX_ERR(1, 176, __pyx_L7_error)
          __Pyx_GOTREF(__pyx_t_3);
          __pyx_t_1 = __Pyx_PyInt_EqObjC(__pyx_t_3, __pyx_int_0, 0, 0); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 176, __pyx_L7_error)
          __Pyx_GOTREF(__pyx_t_1);
          __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
          __pyx_t_9 = __Pyx_PyObject_IsTrue(__pyx_t_1); if (unlikely(__pyx_t_9 < 0)) __PYX_ERR(1, 176, __pyx_L7_error)
          __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
          if (__pyx_t_9) {

            /* "src/python/grpcio/grpc/_cython/_cygrpc/fork_posix.pyx.pxi":177
 *             self._num_active_threads -= 1
 *             if self._num_active_threads == 0:
 *                 self._condition.notify_all()             # <<<<<<<<<<<<<<
 * 
 *     def await_zero_threads(self, timeout_secs):
 */
            __pyx_t_3 = __Pyx_PyObject_GetAttrStr(__pyx_v_self, __pyx_n_s_condition); if (unlikely(!__pyx_t_3)) __PYX_ERR(1, 177, __pyx_L7_error)
            __Pyx_GOTREF(__pyx_t_3);
            __pyx_t_4 = __Pyx_PyObject_GetAttrStr(__pyx_t_3, __pyx_n_s_notify_all); if (unlikely(!__pyx_t_4)) __PYX_ERR(1, 177, __pyx_L7_error)
            __Pyx_GOTREF(__pyx_t_4);
            __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
            __pyx_t_3 = NULL;
            if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_4))) {
              __pyx_t_3 = PyMethod_GET_SELF(__pyx_t_4);
              if (likely(__pyx_t_3)) {
                PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_4);
                __Pyx_INCREF(__pyx_t_3);
                __Pyx_INCREF(function);
                __Pyx_DECREF_SET(__pyx_t_4, function);
              }
            }
            __pyx_t_1 = (__pyx_t_3) ? __Pyx_PyObject_CallOneArg(__pyx_t_4, __pyx_t_3) : __Pyx_PyObject_CallNoArg(__pyx_t_4);
            __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0;
            if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 177, __pyx_L7_error)
            __Pyx_GOTREF(__pyx_t_1);
            __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
            __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;

            /* "src/python/grpcio/grpc/_cython/_cygrpc/fork_posix.pyx.pxi":176
 *         with self._condition:
 *             self._num_active_threads -= 1
 *             if self._num_active_threads == 0:             # <<<<<<<<<<<<<<
 *                 self._condition.notify_all()
 * 
 */
          }

          /* "src/python/grpcio/grpc/_cython/_cygrpc/fork_posix.pyx.pxi":174
 * 
 *     def decrement(self):
 *         with self._condition:             # <<<<<<<<<<<<<<
 *             self._num_active_threads -= 1
 *             if self._num_active_threads == 0:
 */
        }
        __Pyx_XDECREF(__pyx_t_6); __pyx_t_6 = 0;
        __Pyx_XDECREF(__pyx_t_7); __pyx_t_7 = 0;
        __Pyx_XDECREF(__pyx_t_8); __pyx_t_8 = 0;
        goto __pyx_L12_try_end;
        __pyx_L7_error:;
        __Pyx_XDECREF(__pyx_t_1); __pyx_t_1 = 0;
        __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0;
        __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0;
        __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0;
        /*except:*/ {
          __Pyx_AddTraceback("grpc._cython.cygrpc._ActiveThreadCount.decrement", __pyx_clineno, __pyx_lineno, __pyx_filename);
          if (__Pyx_GetException(&__pyx_t_1, &__pyx_t_4, &__pyx_t_3) < 0) __PYX_ERR(1, 174, __pyx_L9_except_error)
          __Pyx_GOTREF(__pyx_t_1);
          __Pyx_GOTREF(__pyx_t_4);
          __Pyx_GOTREF(__pyx_t_3);
          __pyx_t_5 = PyTuple_Pack(3, __pyx_t_1, __pyx_t_4, __pyx_t_3); if (unlikely(!__pyx_t_5)) __PYX_ERR(1, 174, __pyx_L9_except_error)
          __Pyx_GOTREF(__pyx_t_5);
          __pyx_t_10 = __Pyx_PyObject_Call(__pyx_t_2, __pyx_t_5, NULL);
          __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
          __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
          if (unlikely(!__pyx_t_10)) __PYX_ERR(1, 174, __pyx_L9_except_error)
          __Pyx_GOTREF(__pyx_t_10);
          __pyx_t_9 = __Pyx_PyObject_IsTrue(__pyx_t_10);
          __Pyx_DECREF(__pyx_t_10); __pyx_t_10 = 0;
          if (__pyx_t_9 < 0) __PYX_ERR(1, 174, __pyx_L9_except_error)
          __pyx_t_11 = ((!(__pyx_t_9 != 0)) != 0);
          if (__pyx_t_11) {
            __Pyx_GIVEREF(__pyx_t_1);
            __Pyx_GIVEREF(__pyx_t_4);
            __Pyx_XGIVEREF(__pyx_t_3);
            __Pyx_ErrRestoreWithState(__pyx_t_1, __pyx_t_4, __pyx_t_3);
            __pyx_t_1 = 0; __pyx_t_4 = 0; __pyx_t_3 = 0; 
            __PYX_ERR(1, 174, __pyx_L9_except_error)
          }
          __Pyx_XDECREF(__pyx_t_1); __pyx_t_1 = 0;
          __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0;
          __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0;
          goto __pyx_L8_exception_handled;
        }
        __pyx_L9_except_error:;
        __Pyx_XGIVEREF(__pyx_t_6);
        __Pyx_XGIVEREF(__pyx_t_7);
        __Pyx_XGIVEREF(__pyx_t_8);
        __Pyx_ExceptionReset(__pyx_t_6, __pyx_t_7, __pyx_t_8);
        goto __pyx_L1_error;
        __pyx_L8_exception_handled:;
        __Pyx_XGIVEREF(__pyx_t_6);
        __Pyx_XGIVEREF(__pyx_t_7);
        __Pyx_XGIVEREF(__pyx_t_8);
        __Pyx_ExceptionReset(__pyx_t_6, __pyx_t_7, __pyx_t_8);
        __pyx_L12_try_end:;
      }
    }
    /*finally:*/ {
      /*normal exit:*/{
        if (__pyx_t_2) {
          __pyx_t_8 = __Pyx_PyObject_Call(__pyx_t_2, __pyx_tuple__17, NULL);
          __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
          if (unlikely(!__pyx_t_8)) __PYX_ERR(1, 174, __pyx_L1_error)
          __Pyx_GOTREF(__pyx_t_8);
          __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
        }
        goto __pyx_L6;
      }
      __pyx_L6:;
    }
    goto __pyx_L17;
    __pyx_L3_error:;
    __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
    goto __pyx_L1_error;
    __pyx_L17:;
  }

  /* "src/python/grpcio/grpc/_cython/_cygrpc/fork_posix.pyx.pxi":173
 *             self._num_active_threads += 1
 * 
 *     def decrement(self):             # <<<<<<<<<<<<<<
 *         with self._condition:
 *             self._num_active_threads -= 1
 */

  /* function exit code */
  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_XDECREF(__pyx_t_3);
  __Pyx_XDECREF(__pyx_t_4);
  __Pyx_XDECREF(__pyx_t_5);
  __Pyx_AddTraceback("grpc._cython.cygrpc._ActiveThreadCount.decrement", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "src/python/grpcio/grpc/_cython/_cygrpc/fork_posix.pyx.pxi":179
 *                 self._condition.notify_all()
 * 
 *     def await_zero_threads(self, timeout_secs):             # <<<<<<<<<<<<<<
 *         end_time = time.time() + timeout_secs
 *         wait_time = timeout_secs
 */

/* Python wrapper */
static PyObject *__pyx_pw_4grpc_7_cython_6cygrpc_18_ActiveThreadCount_7await_zero_threads(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
static PyMethodDef __pyx_mdef_4grpc_7_cython_6cygrpc_18_ActiveThreadCount_7await_zero_threads = {"await_zero_threads", (PyCFunction)(void*)(PyCFunctionWithKeywords)__pyx_pw_4grpc_7_cython_6cygrpc_18_ActiveThreadCount_7await_zero_threads, METH_VARARGS|METH_KEYWORDS, 0};
static PyObject *__pyx_pw_4grpc_7_cython_6cygrpc_18_ActiveThreadCount_7await_zero_threads(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
  PyObject *__pyx_v_self = 0;
  PyObject *__pyx_v_timeout_secs = 0;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("await_zero_threads (wrapper)", 0);
  {
    static PyObject **__pyx_pyargnames[] = {&__pyx_n_s_self,&__pyx_n_s_timeout_secs,0};
    PyObject* values[2] = {0,0};
    if (unlikely(__pyx_kwds)) {
      Py_ssize_t kw_args;
      const Py_ssize_t pos_args = PyTuple_GET_SIZE(__pyx_args);
      switch (pos_args) {
        case  2: values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
        CYTHON_FALLTHROUGH;
        case  1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
        CYTHON_FALLTHROUGH;
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      kw_args = PyDict_Size(__pyx_kwds);
      switch (pos_args) {
        case  0:
        if (likely((values[0] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_self)) != 0)) kw_args--;
        else goto __pyx_L5_argtuple_error;
        CYTHON_FALLTHROUGH;
        case  1:
        if (likely((values[1] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_timeout_secs)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("await_zero_threads", 1, 2, 2, 1); __PYX_ERR(1, 179, __pyx_L3_error)
        }
      }
      if (unlikely(kw_args > 0)) {
        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "await_zero_threads") < 0)) __PYX_ERR(1, 179, __pyx_L3_error)
      }
    } else if (PyTuple_GET_SIZE(__pyx_args) != 2) {
      goto __pyx_L5_argtuple_error;
    } else {
      values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
      values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
    }
    __pyx_v_self = values[0];
    __pyx_v_timeout_secs = values[1];
  }
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("await_zero_threads", 1, 2, 2, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(1, 179, __pyx_L3_error)
  __pyx_L3_error:;
  __Pyx_AddTraceback("grpc._cython.cygrpc._ActiveThreadCount.await_zero_threads", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  __pyx_r = __pyx_pf_4grpc_7_cython_6cygrpc_18_ActiveThreadCount_6await_zero_threads(__pyx_self, __pyx_v_self, __pyx_v_timeout_secs);

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_4grpc_7_cython_6cygrpc_18_ActiveThreadCount_6await_zero_threads(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__pyx_v_self, PyObject *__pyx_v_timeout_secs) {
  PyObject *__pyx_v_end_time = NULL;
  PyObject *__pyx_v_wait_time = NULL;
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  PyObject *__pyx_t_2 = NULL;
  PyObject *__pyx_t_3 = NULL;
  PyObject *__pyx_t_4 = NULL;
  PyObject *__pyx_t_5 = NULL;
  PyObject *__pyx_t_6 = NULL;
  PyObject *__pyx_t_7 = NULL;
  PyObject *__pyx_t_8 = NULL;
  int __pyx_t_9;
  PyObject *__pyx_t_10 = NULL;
  int __pyx_t_11;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("await_zero_threads", 0);

  /* "src/python/grpcio/grpc/_cython/_cygrpc/fork_posix.pyx.pxi":180
 * 
 *     def await_zero_threads(self, timeout_secs):
 *         end_time = time.time() + timeout_secs             # <<<<<<<<<<<<<<
 *         wait_time = timeout_secs
 *         with self._condition:
 */
  __Pyx_GetModuleGlobalName(__pyx_t_2, __pyx_n_s_time); if (unlikely(!__pyx_t_2)) __PYX_ERR(1, 180, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __pyx_t_3 = __Pyx_PyObject_GetAttrStr(__pyx_t_2, __pyx_n_s_time); if (unlikely(!__pyx_t_3)) __PYX_ERR(1, 180, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  __pyx_t_2 = NULL;
  if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_3))) {
    __pyx_t_2 = PyMethod_GET_SELF(__pyx_t_3);
    if (likely(__pyx_t_2)) {
      PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_3);
      __Pyx_INCREF(__pyx_t_2);
      __Pyx_INCREF(function);
      __Pyx_DECREF_SET(__pyx_t_3, function);
    }
  }
  __pyx_t_1 = (__pyx_t_2) ? __Pyx_PyObject_CallOneArg(__pyx_t_3, __pyx_t_2) : __Pyx_PyObject_CallNoArg(__pyx_t_3);
  __Pyx_XDECREF(__pyx_t_2); __pyx_t_2 = 0;
  if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 180, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
  __pyx_t_3 = PyNumber_Add(__pyx_t_1, __pyx_v_timeout_secs); if (unlikely(!__pyx_t_3)) __PYX_ERR(1, 180, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  __pyx_v_end_time = __pyx_t_3;
  __pyx_t_3 = 0;

  /* "src/python/grpcio/grpc/_cython/_cygrpc/fork_posix.pyx.pxi":181
 *     def await_zero_threads(self, timeout_secs):
 *         end_time = time.time() + timeout_secs
 *         wait_time = timeout_secs             # <<<<<<<<<<<<<<
 *         with self._condition:
 *             while True:
 */
  __Pyx_INCREF(__pyx_v_timeout_secs);
  __pyx_v_wait_time = __pyx_v_timeout_secs;

  /* "src/python/grpcio/grpc/_cython/_cygrpc/fork_posix.pyx.pxi":182
 *         end_time = time.time() + timeout_secs
 *         wait_time = timeout_secs
 *         with self._condition:             # <<<<<<<<<<<<<<
 *             while True:
 *                 if self._num_active_threads > 0:
 */
  /*with:*/ {
    __pyx_t_3 = __Pyx_PyObject_GetAttrStr(__pyx_v_self, __pyx_n_s_condition); if (unlikely(!__pyx_t_3)) __PYX_ERR(1, 182, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_3);
    __pyx_t_4 = __Pyx_PyObject_LookupSpecial(__pyx_t_3, __pyx_n_s_exit); if (unlikely(!__pyx_t_4)) __PYX_ERR(1, 182, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_4);
    __pyx_t_2 = __Pyx_PyObject_LookupSpecial(__pyx_t_3, __pyx_n_s_enter); if (unlikely(!__pyx_t_2)) __PYX_ERR(1, 182, __pyx_L3_error)
    __Pyx_GOTREF(__pyx_t_2);
    __pyx_t_5 = NULL;
    if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_2))) {
      __pyx_t_5 = PyMethod_GET_SELF(__pyx_t_2);
      if (likely(__pyx_t_5)) {
        PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_2);
        __Pyx_INCREF(__pyx_t_5);
        __Pyx_INCREF(function);
        __Pyx_DECREF_SET(__pyx_t_2, function);
      }
    }
    __pyx_t_1 = (__pyx_t_5) ? __Pyx_PyObject_CallOneArg(__pyx_t_2, __pyx_t_5) : __Pyx_PyObject_CallNoArg(__pyx_t_2);
    __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0;
    if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 182, __pyx_L3_error)
    __Pyx_GOTREF(__pyx_t_1);
    __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
    __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
    __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
    /*try:*/ {
      {
        __Pyx_PyThreadState_declare
        __Pyx_PyThreadState_assign
        __Pyx_ExceptionSave(&__pyx_t_6, &__pyx_t_7, &__pyx_t_8);
        __Pyx_XGOTREF(__pyx_t_6);
        __Pyx_XGOTREF(__pyx_t_7);
        __Pyx_XGOTREF(__pyx_t_8);
        /*try:*/ {

          /* "src/python/grpcio/grpc/_cython/_cygrpc/fork_posix.pyx.pxi":183
 *         wait_time = timeout_secs
 *         with self._condition:
 *             while True:             # <<<<<<<<<<<<<<
 *                 if self._num_active_threads > 0:
 *                     self._condition.wait(wait_time)
 */
          while (1) {

            /* "src/python/grpcio/grpc/_cython/_cygrpc/fork_posix.pyx.pxi":184
 *         with self._condition:
 *             while True:
 *                 if self._num_active_threads > 0:             # <<<<<<<<<<<<<<
 *                     self._condition.wait(wait_time)
 *                 if self._num_active_threads == 0:
 */
            __pyx_t_3 = __Pyx_PyObject_GetAttrStr(__pyx_v_self, __pyx_n_s_num_active_threads); if (unlikely(!__pyx_t_3)) __PYX_ERR(1, 184, __pyx_L7_error)
            __Pyx_GOTREF(__pyx_t_3);
            __pyx_t_1 = PyObject_RichCompare(__pyx_t_3, __pyx_int_0, Py_GT); __Pyx_XGOTREF(__pyx_t_1); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 184, __pyx_L7_error)
            __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
            __pyx_t_9 = __Pyx_PyObject_IsTrue(__pyx_t_1); if (unlikely(__pyx_t_9 < 0)) __PYX_ERR(1, 184, __pyx_L7_error)
            __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
            if (__pyx_t_9) {

              /* "src/python/grpcio/grpc/_cython/_cygrpc/fork_posix.pyx.pxi":185
 *             while True:
 *                 if self._num_active_threads > 0:
 *                     self._condition.wait(wait_time)             # <<<<<<<<<<<<<<
 *                 if self._num_active_threads == 0:
 *                     return True
 */
              __pyx_t_3 = __Pyx_PyObject_GetAttrStr(__pyx_v_self, __pyx_n_s_condition); if (unlikely(!__pyx_t_3)) __PYX_ERR(1, 185, __pyx_L7_error)
              __Pyx_GOTREF(__pyx_t_3);
              __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_t_3, __pyx_n_s_wait); if (unlikely(!__pyx_t_2)) __PYX_ERR(1, 185, __pyx_L7_error)
              __Pyx_GOTREF(__pyx_t_2);
              __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
              __pyx_t_3 = NULL;
              if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_2))) {
                __pyx_t_3 = PyMethod_GET_SELF(__pyx_t_2);
                if (likely(__pyx_t_3)) {
                  PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_2);
                  __Pyx_INCREF(__pyx_t_3);
                  __Pyx_INCREF(function);
                  __Pyx_DECREF_SET(__pyx_t_2, function);
                }
              }
              __pyx_t_1 = (__pyx_t_3) ? __Pyx_PyObject_Call2Args(__pyx_t_2, __pyx_t_3, __pyx_v_wait_time) : __Pyx_PyObject_CallOneArg(__pyx_t_2, __pyx_v_wait_time);
              __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0;
              if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 185, __pyx_L7_error)
              __Pyx_GOTREF(__pyx_t_1);
              __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
              __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;

              /* "src/python/grpcio/grpc/_cython/_cygrpc/fork_posix.pyx.pxi":184
 *         with self._condition:
 *             while True:
 *                 if self._num_active_threads > 0:             # <<<<<<<<<<<<<<
 *                     self._condition.wait(wait_time)
 *                 if self._num_active_threads == 0:
 */
            }

            /* "src/python/grpcio/grpc/_cython/_cygrpc/fork_posix.pyx.pxi":186
 *                 if self._num_active_threads > 0:
 *                     self._condition.wait(wait_time)
 *                 if self._num_active_threads == 0:             # <<<<<<<<<<<<<<
 *                     return True
 *                 # Thread count may have increased before this re-obtains the
 */
            __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_v_self, __pyx_n_s_num_active_threads); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 186, __pyx_L7_error)
            __Pyx_GOTREF(__pyx_t_1);
            __pyx_t_2 = __Pyx_PyInt_EqObjC(__pyx_t_1, __pyx_int_0, 0, 0); if (unlikely(!__pyx_t_2)) __PYX_ERR(1, 186, __pyx_L7_error)
            __Pyx_GOTREF(__pyx_t_2);
            __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
            __pyx_t_9 = __Pyx_PyObject_IsTrue(__pyx_t_2); if (unlikely(__pyx_t_9 < 0)) __PYX_ERR(1, 186, __pyx_L7_error)
            __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
            if (__pyx_t_9) {

              /* "src/python/grpcio/grpc/_cython/_cygrpc/fork_posix.pyx.pxi":187
 *                     self._condition.wait(wait_time)
 *                 if self._num_active_threads == 0:
 *                     return True             # <<<<<<<<<<<<<<
 *                 # Thread count may have increased before this re-obtains the
 *                 # lock after a notify(). Wait again until timeout_secs has
 */
              __Pyx_XDECREF(__pyx_r);
              __Pyx_INCREF(Py_True);
              __pyx_r = Py_True;
              goto __pyx_L11_try_return;

              /* "src/python/grpcio/grpc/_cython/_cygrpc/fork_posix.pyx.pxi":186
 *                 if self._num_active_threads > 0:
 *                     self._condition.wait(wait_time)
 *                 if self._num_active_threads == 0:             # <<<<<<<<<<<<<<
 *                     return True
 *                 # Thread count may have increased before this re-obtains the
 */
            }

            /* "src/python/grpcio/grpc/_cython/_cygrpc/fork_posix.pyx.pxi":191
 *                 # lock after a notify(). Wait again until timeout_secs has
 *                 # elapsed.
 *                 wait_time = end_time - time.time()             # <<<<<<<<<<<<<<
 *                 if wait_time <= 0:
 *                     return False
 */
            __Pyx_GetModuleGlobalName(__pyx_t_1, __pyx_n_s_time); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 191, __pyx_L7_error)
            __Pyx_GOTREF(__pyx_t_1);
            __pyx_t_3 = __Pyx_PyObject_GetAttrStr(__pyx_t_1, __pyx_n_s_time); if (unlikely(!__pyx_t_3)) __PYX_ERR(1, 191, __pyx_L7_error)
            __Pyx_GOTREF(__pyx_t_3);
            __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
            __pyx_t_1 = NULL;
            if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_3))) {
              __pyx_t_1 = PyMethod_GET_SELF(__pyx_t_3);
              if (likely(__pyx_t_1)) {
                PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_3);
                __Pyx_INCREF(__pyx_t_1);
                __Pyx_INCREF(function);
                __Pyx_DECREF_SET(__pyx_t_3, function);
              }
            }
            __pyx_t_2 = (__pyx_t_1) ? __Pyx_PyObject_CallOneArg(__pyx_t_3, __pyx_t_1) : __Pyx_PyObject_CallNoArg(__pyx_t_3);
            __Pyx_XDECREF(__pyx_t_1); __pyx_t_1 = 0;
            if (unlikely(!__pyx_t_2)) __PYX_ERR(1, 191, __pyx_L7_error)
            __Pyx_GOTREF(__pyx_t_2);
            __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
            __pyx_t_3 = PyNumber_Subtract(__pyx_v_end_time, __pyx_t_2); if (unlikely(!__pyx_t_3)) __PYX_ERR(1, 191, __pyx_L7_error)
            __Pyx_GOTREF(__pyx_t_3);
            __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
            __Pyx_DECREF_SET(__pyx_v_wait_time, __pyx_t_3);
            __pyx_t_3 = 0;

            /* "src/python/grpcio/grpc/_cython/_cygrpc/fork_posix.pyx.pxi":192
 *                 # elapsed.
 *                 wait_time = end_time - time.time()
 *                 if wait_time <= 0:             # <<<<<<<<<<<<<<
 *                     return False
 * 
 */
            __pyx_t_3 = PyObject_RichCompare(__pyx_v_wait_time, __pyx_int_0, Py_LE); __Pyx_XGOTREF(__pyx_t_3); if (unlikely(!__pyx_t_3)) __PYX_ERR(1, 192, __pyx_L7_error)
            __pyx_t_9 = __Pyx_PyObject_IsTrue(__pyx_t_3); if (unlikely(__pyx_t_9 < 0)) __PYX_ERR(1, 192, __pyx_L7_error)
            __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
            if (__pyx_t_9) {

              /* "src/python/grpcio/grpc/_cython/_cygrpc/fork_posix.pyx.pxi":193
 *                 wait_time = end_time - time.time()
 *                 if wait_time <= 0:
 *                     return False             # <<<<<<<<<<<<<<
 * 
 * 
 */
              __Pyx_XDECREF(__pyx_r);
              __Pyx_INCREF(Py_False);
              __pyx_r = Py_False;
              goto __pyx_L11_try_return;

              /* "src/python/grpcio/grpc/_cython/_cygrpc/fork_posix.pyx.pxi":192
 *                 # elapsed.
 *                 wait_time = end_time - time.time()
 *                 if wait_time <= 0:             # <<<<<<<<<<<<<<
 *                     return False
 * 
 */
            }
          }

          /* "src/python/grpcio/grpc/_cython/_cygrpc/fork_posix.pyx.pxi":182
 *         end_time = time.time() + timeout_secs
 *         wait_time = timeout_secs
 *         with self._condition:             # <<<<<<<<<<<<<<
 *             while True:
 *                 if self._num_active_threads > 0:
 */
        }
        __Pyx_XDECREF(__pyx_t_6); __pyx_t_6 = 0;
        __Pyx_XDECREF(__pyx_t_7); __pyx_t_7 = 0;
        __Pyx_XDECREF(__pyx_t_8); __pyx_t_8 = 0;
        goto __pyx_L12_try_end;
        __pyx_L7_error:;
        __Pyx_XDECREF(__pyx_t_1); __pyx_t_1 = 0;
        __Pyx_XDECREF(__pyx_t_2); __pyx_t_2 = 0;
        __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0;
        __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0;
        /*except:*/ {
          __Pyx_AddTraceback("grpc._cython.cygrpc._ActiveThreadCount.await_zero_threads", __pyx_clineno, __pyx_lineno, __pyx_filename);
          if (__Pyx_GetException(&__pyx_t_3, &__pyx_t_2, &__pyx_t_1) < 0) __PYX_ERR(1, 182, __pyx_L9_except_error)
          __Pyx_GOTREF(__pyx_t_3);
          __Pyx_GOTREF(__pyx_t_2);
          __Pyx_GOTREF(__pyx_t_1);
          __pyx_t_5 = PyTuple_Pack(3, __pyx_t_3, __pyx_t_2, __pyx_t_1); if (unlikely(!__pyx_t_5)) __PYX_ERR(1, 182, __pyx_L9_except_error)
          __Pyx_GOTREF(__pyx_t_5);
          __pyx_t_10 = __Pyx_PyObject_Call(__pyx_t_4, __pyx_t_5, NULL);
          __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
          __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
          if (unlikely(!__pyx_t_10)) __PYX_ERR(1, 182, __pyx_L9_except_error)
          __Pyx_GOTREF(__pyx_t_10);
          __pyx_t_9 = __Pyx_PyObject_IsTrue(__pyx_t_10);
          __Pyx_DECREF(__pyx_t_10); __pyx_t_10 = 0;
          if (__pyx_t_9 < 0) __PYX_ERR(1, 182, __pyx_L9_except_error)
          __pyx_t_11 = ((!(__pyx_t_9 != 0)) != 0);
          if (__pyx_t_11) {
            __Pyx_GIVEREF(__pyx_t_3);
            __Pyx_GIVEREF(__pyx_t_2);
            __Pyx_XGIVEREF(__pyx_t_1);
            __Pyx_ErrRestoreWithState(__pyx_t_3, __pyx_t_2, __pyx_t_1);
            __pyx_t_3 = 0; __pyx_t_2 = 0; __pyx_t_1 = 0; 
            __PYX_ERR(1, 182, __pyx_L9_except_error)
          }
          __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0;
          __Pyx_XDECREF(__pyx_t_2); __pyx_t_2 = 0;
          __Pyx_XDECREF(__pyx_t_1); __pyx_t_1 = 0;
          goto __pyx_L8_exception_handled;
        }
        __pyx_L9_except_error:;
        __Pyx_XGIVEREF(__pyx_t_6);
        __Pyx_XGIVEREF(__pyx_t_7);
        __Pyx_XGIVEREF(__pyx_t_8);
        __Pyx_ExceptionReset(__pyx_t_6, __pyx_t_7, __pyx_t_8);
        goto __pyx_L1_error;
        __pyx_L11_try_return:;
        __Pyx_XGIVEREF(__pyx_t_6);
        __Pyx_XGIVEREF(__pyx_t_7);
        __Pyx_XGIVEREF(__pyx_t_8);
        __Pyx_ExceptionReset(__pyx_t_6, __pyx_t_7, __pyx_t_8);
        goto __pyx_L4_return;
        __pyx_L8_exception_handled:;
        __Pyx_XGIVEREF(__pyx_t_6);
        __Pyx_XGIVEREF(__pyx_t_7);
        __Pyx_XGIVEREF(__pyx_t_8);
        __Pyx_ExceptionReset(__pyx_t_6, __pyx_t_7, __pyx_t_8);
        __pyx_L12_try_end:;
      }
    }
    /*finally:*/ {
      /*normal exit:*/{
        if (__pyx_t_4) {
          __pyx_t_8 = __Pyx_PyObject_Call(__pyx_t_4, __pyx_tuple__17, NULL);
          __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
          if (unlikely(!__pyx_t_8)) __PYX_ERR(1, 182, __pyx_L1_error)
          __Pyx_GOTREF(__pyx_t_8);
          __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
        }
        goto __pyx_L6;
      }
      __pyx_L4_return: {
        __pyx_t_8 = __pyx_r;
        __pyx_r = 0;
        if (__pyx_t_4) {
          __pyx_t_7 = __Pyx_PyObject_Call(__pyx_t_4, __pyx_tuple__17, NULL);
          __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
          if (unlikely(!__pyx_t_7)) __PYX_ERR(1, 182, __pyx_L1_error)
          __Pyx_GOTREF(__pyx_t_7);
          __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
        }
        __pyx_r = __pyx_t_8;
        __pyx_t_8 = 0;
        goto __pyx_L0;
      }
      __pyx_L6:;
    }
    goto __pyx_L21;
    __pyx_L3_error:;
    __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
    goto __pyx_L1_error;
    __pyx_L21:;
  }

  /* "src/python/grpcio/grpc/_cython/_cygrpc/fork_posix.pyx.pxi":179
 *                 self._condition.notify_all()
 * 
 *     def await_zero_threads(self, timeout_secs):             # <<<<<<<<<<<<<<
 *         end_time = time.time() + timeout_secs
 *         wait_time = timeout_secs
 */

  /* function exit code */
  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_XDECREF(__pyx_t_3);
  __Pyx_XDECREF(__pyx_t_5);
  __Pyx_AddTraceback("grpc._cython.cygrpc._ActiveThreadCount.await_zero_threads", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XDECREF(__pyx_v_end_time);
  __Pyx_XDECREF(__pyx_v_wait_time);
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "src/python/grpcio/grpc/_cython/_cygrpc/fork_posix.pyx.pxi":197
 * 
 * class _ForkState(object):
 *     def __init__(self):             # <<<<<<<<<<<<<<
 *         self.fork_in_progress_condition = threading.Condition()
 *         self.fork_in_progress = False
 */

/* Python wrapper */
static PyObject *__pyx_pw_4grpc_7_cython_6cygrpc_10_ForkState_1__init__(PyObject *__pyx_self, PyObject *__pyx_v_self); /*proto*/
static PyMethodDef __pyx_mdef_4grpc_7_cython_6cygrpc_10_ForkState_1__init__ = {"__init__", (PyCFunction)__pyx_pw_4grpc_7_cython_6cygrpc_10_ForkState_1__init__, METH_O, 0};
static PyObject *__pyx_pw_4grpc_7_cython_6cygrpc_10_ForkState_1__init__(PyObject *__pyx_self, PyObject *__pyx_v_self) {
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__init__ (wrapper)", 0);
  __pyx_r = __pyx_pf_4grpc_7_cython_6cygrpc_10_ForkState___init__(__pyx_self, ((PyObject *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_4grpc_7_cython_6cygrpc_10_ForkState___init__(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__pyx_v_self) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  PyObject *__pyx_t_2 = NULL;
  PyObject *__pyx_t_3 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("__init__", 0);

  /* "src/python/grpcio/grpc/_cython/_cygrpc/fork_posix.pyx.pxi":198
 * class _ForkState(object):
 *     def __init__(self):
 *         self.fork_in_progress_condition = threading.Condition()             # <<<<<<<<<<<<<<
 *         self.fork_in_progress = False
 *         self.postfork_states_to_reset = []
 */
  __Pyx_GetModuleGlobalName(__pyx_t_2, __pyx_n_s_threading); if (unlikely(!__pyx_t_2)) __PYX_ERR(1, 198, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __pyx_t_3 = __Pyx_PyObject_GetAttrStr(__pyx_t_2, __pyx_n_s_Condition); if (unlikely(!__pyx_t_3)) __PYX_ERR(1, 198, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  __pyx_t_2 = NULL;
  if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_3))) {
    __pyx_t_2 = PyMethod_GET_SELF(__pyx_t_3);
    if (likely(__pyx_t_2)) {
      PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_3);
      __Pyx_INCREF(__pyx_t_2);
      __Pyx_INCREF(function);
      __Pyx_DECREF_SET(__pyx_t_3, function);
    }
  }
  __pyx_t_1 = (__pyx_t_2) ? __Pyx_PyObject_CallOneArg(__pyx_t_3, __pyx_t_2) : __Pyx_PyObject_CallNoArg(__pyx_t_3);
  __Pyx_XDECREF(__pyx_t_2); __pyx_t_2 = 0;
  if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 198, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
  if (__Pyx_PyObject_SetAttrStr(__pyx_v_self, __pyx_n_s_fork_in_progress_condition, __pyx_t_1) < 0) __PYX_ERR(1, 198, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;

  /* "src/python/grpcio/grpc/_cython/_cygrpc/fork_posix.pyx.pxi":199
 *     def __init__(self):
 *         self.fork_in_progress_condition = threading.Condition()
 *         self.fork_in_progress = False             # <<<<<<<<<<<<<<
 *         self.postfork_states_to_reset = []
 *         self.fork_handler_registered_lock = threading.Lock()
 */
  if (__Pyx_PyObject_SetAttrStr(__pyx_v_self, __pyx_n_s_fork_in_progress, Py_False) < 0) __PYX_ERR(1, 199, __pyx_L1_error)

  /* "src/python/grpcio/grpc/_cython/_cygrpc/fork_posix.pyx.pxi":200
 *         self.fork_in_progress_condition = threading.Condition()
 *         self.fork_in_progress = False
 *         self.postfork_states_to_reset = []             # <<<<<<<<<<<<<<
 *         self.fork_handler_registered_lock = threading.Lock()
 *         self.fork_handler_registered = False
 */
  __pyx_t_1 = PyList_New(0); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 200, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  if (__Pyx_PyObject_SetAttrStr(__pyx_v_self, __pyx_n_s_postfork_states_to_reset, __pyx_t_1) < 0) __PYX_ERR(1, 200, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;

  /* "src/python/grpcio/grpc/_cython/_cygrpc/fork_posix.pyx.pxi":201
 *         self.fork_in_progress = False
 *         self.postfork_states_to_reset = []
 *         self.fork_handler_registered_lock = threading.Lock()             # <<<<<<<<<<<<<<
 *         self.fork_handler_registered = False
 *         self.active_thread_count = _ActiveThreadCount()
 */
  __Pyx_GetModuleGlobalName(__pyx_t_3, __pyx_n_s_threading); if (unlikely(!__pyx_t_3)) __PYX_ERR(1, 201, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_t_3, __pyx_n_s_Lock); if (unlikely(!__pyx_t_2)) __PYX_ERR(1, 201, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
  __pyx_t_3 = NULL;
  if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_2))) {
    __pyx_t_3 = PyMethod_GET_SELF(__pyx_t_2);
    if (likely(__pyx_t_3)) {
      PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_2);
      __Pyx_INCREF(__pyx_t_3);
      __Pyx_INCREF(function);
      __Pyx_DECREF_SET(__pyx_t_2, function);
    }
  }
  __pyx_t_1 = (__pyx_t_3) ? __Pyx_PyObject_CallOneArg(__pyx_t_2, __pyx_t_3) : __Pyx_PyObject_CallNoArg(__pyx_t_2);
  __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0;
  if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 201, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  if (__Pyx_PyObject_SetAttrStr(__pyx_v_self, __pyx_n_s_fork_handler_registered_lock, __pyx_t_1) < 0) __PYX_ERR(1, 201, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;

  /* "src/python/grpcio/grpc/_cython/_cygrpc/fork_posix.pyx.pxi":202
 *         self.postfork_states_to_reset = []
 *         self.fork_handler_registered_lock = threading.Lock()
 *         self.fork_handler_registered = False             # <<<<<<<<<<<<<<
 *         self.active_thread_count = _ActiveThreadCount()
 *         self.fork_epoch = 0
 */
  if (__Pyx_PyObject_SetAttrStr(__pyx_v_self, __pyx_n_s_fork_handler_registered, Py_False) < 0) __PYX_ERR(1, 202, __pyx_L1_error)

  /* "src/python/grpcio/grpc/_cython/_cygrpc/fork_posix.pyx.pxi":203
 *         self.fork_handler_registered_lock = threading.Lock()
 *         self.fork_handler_registered = False
 *         self.active_thread_count = _ActiveThreadCount()             # <<<<<<<<<<<<<<
 *         self.fork_epoch = 0
 *         self.channels = set()
 */
  __Pyx_GetModuleGlobalName(__pyx_t_2, __pyx_n_s_ActiveThreadCount); if (unlikely(!__pyx_t_2)) __PYX_ERR(1, 203, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __pyx_t_3 = NULL;
  if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_2))) {
    __pyx_t_3 = PyMethod_GET_SELF(__pyx_t_2);
    if (likely(__pyx_t_3)) {
      PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_2);
      __Pyx_INCREF(__pyx_t_3);
      __Pyx_INCREF(function);
      __Pyx_DECREF_SET(__pyx_t_2, function);
    }
  }
  __pyx_t_1 = (__pyx_t_3) ? __Pyx_PyObject_CallOneArg(__pyx_t_2, __pyx_t_3) : __Pyx_PyObject_CallNoArg(__pyx_t_2);
  __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0;
  if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 203, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  if (__Pyx_PyObject_SetAttrStr(__pyx_v_self, __pyx_n_s_active_thread_count, __pyx_t_1) < 0) __PYX_ERR(1, 203, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;

  /* "src/python/grpcio/grpc/_cython/_cygrpc/fork_posix.pyx.pxi":204
 *         self.fork_handler_registered = False
 *         self.active_thread_count = _ActiveThreadCount()
 *         self.fork_epoch = 0             # <<<<<<<<<<<<<<
 *         self.channels = set()
 * 
 */
  if (__Pyx_PyObject_SetAttrStr(__pyx_v_self, __pyx_n_s_fork_epoch, __pyx_int_0) < 0) __PYX_ERR(1, 204, __pyx_L1_error)

  /* "src/python/grpcio/grpc/_cython/_cygrpc/fork_posix.pyx.pxi":205
 *         self.active_thread_count = _ActiveThreadCount()
 *         self.fork_epoch = 0
 *         self.channels = set()             # <<<<<<<<<<<<<<
 * 
 * 
 */
  __pyx_t_1 = PySet_New(0); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 205, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  if (__Pyx_PyObject_SetAttrStr(__pyx_v_self, __pyx_n_s_channels, __pyx_t_1) < 0) __PYX_ERR(1, 205, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;

  /* "src/python/grpcio/grpc/_cython/_cygrpc/fork_posix.pyx.pxi":197
 * 
 * class _ForkState(object):
 *     def __init__(self):             # <<<<<<<<<<<<<<
 *         self.fork_in_progress_condition = threading.Condition()
 *         self.fork_in_progress = False
 */

  /* function exit code */
  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_XDECREF(__pyx_t_3);
  __Pyx_AddTraceback("grpc._cython.cygrpc._ForkState.__init__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "src/python/grpcio/grpc/_cython/_cygrpc/aio/common.pyx.pxi":18
 * 
 * 
 * cdef grpc_status_code get_status_code(object code) except *:             # <<<<<<<<<<<<<<
 *     if isinstance(code, int):
 *         if code >= StatusCode.ok and code <= StatusCode.data_loss:
 */

static grpc_status_code __pyx_f_4grpc_7_cython_6cygrpc_get_status_code(PyObject *__pyx_v_code) {
  grpc_status_code __pyx_r;
  __Pyx_RefNannyDeclarations
  int __pyx_t_1;
  int __pyx_t_2;
  PyObject *__pyx_t_3 = NULL;
  PyObject *__pyx_t_4 = NULL;
  grpc_status_code __pyx_t_5;
  PyObject *__pyx_t_6 = NULL;
  PyObject *__pyx_t_7 = NULL;
  PyObject *__pyx_t_8 = NULL;
  int __pyx_t_9;
  PyObject *__pyx_t_10 = NULL;
  PyObject *__pyx_t_11 = NULL;
  PyObject *__pyx_t_12 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("get_status_code", 0);

  /* "src/python/grpcio/grpc/_cython/_cygrpc/aio/common.pyx.pxi":19
 * 
 * cdef grpc_status_code get_status_code(object code) except *:
 *     if isinstance(code, int):             # <<<<<<<<<<<<<<
 *         if code >= StatusCode.ok and code <= StatusCode.data_loss:
 *             return code
 */
  __pyx_t_1 = PyInt_Check(__pyx_v_code); 
  __pyx_t_2 = (__pyx_t_1 != 0);
  if (__pyx_t_2) {

    /* "src/python/grpcio/grpc/_cython/_cygrpc/aio/common.pyx.pxi":20
 * cdef grpc_status_code get_status_code(object code) except *:
 *     if isinstance(code, int):
 *         if code >= StatusCode.ok and code <= StatusCode.data_loss:             # <<<<<<<<<<<<<<
 *             return code
 *         else:
 */
    __Pyx_GetModuleGlobalName(__pyx_t_3, __pyx_n_s_StatusCode); if (unlikely(!__pyx_t_3)) __PYX_ERR(7, 20, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_3);
    __pyx_t_4 = __Pyx_PyObject_GetAttrStr(__pyx_t_3, __pyx_n_s_ok); if (unlikely(!__pyx_t_4)) __PYX_ERR(7, 20, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_4);
    __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
    __pyx_t_3 = PyObject_RichCompare(__pyx_v_code, __pyx_t_4, Py_GE); __Pyx_XGOTREF(__pyx_t_3); if (unlikely(!__pyx_t_3)) __PYX_ERR(7, 20, __pyx_L1_error)
    __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
    __pyx_t_1 = __Pyx_PyObject_IsTrue(__pyx_t_3); if (unlikely(__pyx_t_1 < 0)) __PYX_ERR(7, 20, __pyx_L1_error)
    __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
    if (__pyx_t_1) {
    } else {
      __pyx_t_2 = __pyx_t_1;
      goto __pyx_L5_bool_binop_done;
    }
    __Pyx_GetModuleGlobalName(__pyx_t_3, __pyx_n_s_StatusCode); if (unlikely(!__pyx_t_3)) __PYX_ERR(7, 20, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_3);
    __pyx_t_4 = __Pyx_PyObject_GetAttrStr(__pyx_t_3, __pyx_n_s_data_loss); if (unlikely(!__pyx_t_4)) __PYX_ERR(7, 20, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_4);
    __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
    __pyx_t_3 = PyObject_RichCompare(__pyx_v_code, __pyx_t_4, Py_LE); __Pyx_XGOTREF(__pyx_t_3); if (unlikely(!__pyx_t_3)) __PYX_ERR(7, 20, __pyx_L1_error)
    __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
    __pyx_t_1 = __Pyx_PyObject_IsTrue(__pyx_t_3); if (unlikely(__pyx_t_1 < 0)) __PYX_ERR(7, 20, __pyx_L1_error)
    __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
    __pyx_t_2 = __pyx_t_1;
    __pyx_L5_bool_binop_done:;
    if (__pyx_t_2) {

      /* "src/python/grpcio/grpc/_cython/_cygrpc/aio/common.pyx.pxi":21
 *     if isinstance(code, int):
 *         if code >= StatusCode.ok and code <= StatusCode.data_loss:
 *             return code             # <<<<<<<<<<<<<<
 *         else:
 *             return StatusCode.unknown
 */
      __pyx_t_5 = ((grpc_status_code)__Pyx_PyInt_As_grpc_status_code(__pyx_v_code)); if (unlikely(PyErr_Occurred())) __PYX_ERR(7, 21, __pyx_L1_error)
      __pyx_r = __pyx_t_5;
      goto __pyx_L0;

      /* "src/python/grpcio/grpc/_cython/_cygrpc/aio/common.pyx.pxi":20
 * cdef grpc_status_code get_status_code(object code) except *:
 *     if isinstance(code, int):
 *         if code >= StatusCode.ok and code <= StatusCode.data_loss:             # <<<<<<<<<<<<<<
 *             return code
 *         else:
 */
    }

    /* "src/python/grpcio/grpc/_cython/_cygrpc/aio/common.pyx.pxi":23
 *             return code
 *         else:
 *             return StatusCode.unknown             # <<<<<<<<<<<<<<
 *     else:
 *         try:
 */
    /*else*/ {
      __Pyx_GetModuleGlobalName(__pyx_t_3, __pyx_n_s_StatusCode); if (unlikely(!__pyx_t_3)) __PYX_ERR(7, 23, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_3);
      __pyx_t_4 = __Pyx_PyObject_GetAttrStr(__pyx_t_3, __pyx_n_s_unknown); if (unlikely(!__pyx_t_4)) __PYX_ERR(7, 23, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_4);
      __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
      __pyx_t_5 = ((grpc_status_code)__Pyx_PyInt_As_grpc_status_code(__pyx_t_4)); if (unlikely(PyErr_Occurred())) __PYX_ERR(7, 23, __pyx_L1_error)
      __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
      __pyx_r = __pyx_t_5;
      goto __pyx_L0;
    }

    /* "src/python/grpcio/grpc/_cython/_cygrpc/aio/common.pyx.pxi":19
 * 
 * cdef grpc_status_code get_status_code(object code) except *:
 *     if isinstance(code, int):             # <<<<<<<<<<<<<<
 *         if code >= StatusCode.ok and code <= StatusCode.data_loss:
 *             return code
 */
  }

  /* "src/python/grpcio/grpc/_cython/_cygrpc/aio/common.pyx.pxi":25
 *             return StatusCode.unknown
 *     else:
 *         try:             # <<<<<<<<<<<<<<
 *             return code.value[0]
 *         except (KeyError, AttributeError):
 */
  /*else*/ {
    {
      __Pyx_PyThreadState_declare
      __Pyx_PyThreadState_assign
      __Pyx_ExceptionSave(&__pyx_t_6, &__pyx_t_7, &__pyx_t_8);
      __Pyx_XGOTREF(__pyx_t_6);
      __Pyx_XGOTREF(__pyx_t_7);
      __Pyx_XGOTREF(__pyx_t_8);
      /*try:*/ {

        /* "src/python/grpcio/grpc/_cython/_cygrpc/aio/common.pyx.pxi":26
 *     else:
 *         try:
 *             return code.value[0]             # <<<<<<<<<<<<<<
 *         except (KeyError, AttributeError):
 *             return StatusCode.unknown
 */
        __pyx_t_4 = __Pyx_PyObject_GetAttrStr(__pyx_v_code, __pyx_n_s_value); if (unlikely(!__pyx_t_4)) __PYX_ERR(7, 26, __pyx_L7_error)
        __Pyx_GOTREF(__pyx_t_4);
        __pyx_t_3 = __Pyx_GetItemInt(__pyx_t_4, 0, long, 1, __Pyx_PyInt_From_long, 0, 0, 1); if (unlikely(!__pyx_t_3)) __PYX_ERR(7, 26, __pyx_L7_error)
        __Pyx_GOTREF(__pyx_t_3);
        __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
        __pyx_t_5 = ((grpc_status_code)__Pyx_PyInt_As_grpc_status_code(__pyx_t_3)); if (unlikely(PyErr_Occurred())) __PYX_ERR(7, 26, __pyx_L7_error)
        __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
        __pyx_r = __pyx_t_5;
        goto __pyx_L11_try_return;

        /* "src/python/grpcio/grpc/_cython/_cygrpc/aio/common.pyx.pxi":25
 *             return StatusCode.unknown
 *     else:
 *         try:             # <<<<<<<<<<<<<<
 *             return code.value[0]
 *         except (KeyError, AttributeError):
 */
      }
      __pyx_L7_error:;
      __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0;
      __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0;

      /* "src/python/grpcio/grpc/_cython/_cygrpc/aio/common.pyx.pxi":27
 *         try:
 *             return code.value[0]
 *         except (KeyError, AttributeError):             # <<<<<<<<<<<<<<
 *             return StatusCode.unknown
 * 
 */
      __pyx_t_9 = __Pyx_PyErr_ExceptionMatches(__pyx_builtin_KeyError) || __Pyx_PyErr_ExceptionMatches(__pyx_builtin_AttributeError);
      if (__pyx_t_9) {
        __Pyx_AddTraceback("grpc._cython.cygrpc.get_status_code", __pyx_clineno, __pyx_lineno, __pyx_filename);
        if (__Pyx_GetException(&__pyx_t_3, &__pyx_t_4, &__pyx_t_10) < 0) __PYX_ERR(7, 27, __pyx_L9_except_error)
        __Pyx_GOTREF(__pyx_t_3);
        __Pyx_GOTREF(__pyx_t_4);
        __Pyx_GOTREF(__pyx_t_10);

        /* "src/python/grpcio/grpc/_cython/_cygrpc/aio/common.pyx.pxi":28
 *             return code.value[0]
 *         except (KeyError, AttributeError):
 *             return StatusCode.unknown             # <<<<<<<<<<<<<<
 * 
 * 
 */
        __Pyx_GetModuleGlobalName(__pyx_t_11, __pyx_n_s_StatusCode); if (unlikely(!__pyx_t_11)) __PYX_ERR(7, 28, __pyx_L9_except_error)
        __Pyx_GOTREF(__pyx_t_11);
        __pyx_t_12 = __Pyx_PyObject_GetAttrStr(__pyx_t_11, __pyx_n_s_unknown); if (unlikely(!__pyx_t_12)) __PYX_ERR(7, 28, __pyx_L9_except_error)
        __Pyx_GOTREF(__pyx_t_12);
        __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0;
        __pyx_t_5 = ((grpc_status_code)__Pyx_PyInt_As_grpc_status_code(__pyx_t_12)); if (unlikely(PyErr_Occurred())) __PYX_ERR(7, 28, __pyx_L9_except_error)
        __Pyx_DECREF(__pyx_t_12); __pyx_t_12 = 0;
        __pyx_r = __pyx_t_5;
        __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
        __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
        __Pyx_DECREF(__pyx_t_10); __pyx_t_10 = 0;
        goto __pyx_L10_except_return;
      }
      goto __pyx_L9_except_error;
      __pyx_L9_except_error:;

      /* "src/python/grpcio/grpc/_cython/_cygrpc/aio/common.pyx.pxi":25
 *             return StatusCode.unknown
 *     else:
 *         try:             # <<<<<<<<<<<<<<
 *             return code.value[0]
 *         except (KeyError, AttributeError):
 */
      __Pyx_XGIVEREF(__pyx_t_6);
      __Pyx_XGIVEREF(__pyx_t_7);
      __Pyx_XGIVEREF(__pyx_t_8);
      __Pyx_ExceptionReset(__pyx_t_6, __pyx_t_7, __pyx_t_8);
      goto __pyx_L1_error;
      __pyx_L11_try_return:;
      __Pyx_XGIVEREF(__pyx_t_6);
      __Pyx_XGIVEREF(__pyx_t_7);
      __Pyx_XGIVEREF(__pyx_t_8);
      __Pyx_ExceptionReset(__pyx_t_6, __pyx_t_7, __pyx_t_8);
      goto __pyx_L0;
      __pyx_L10_except_return:;
      __Pyx_XGIVEREF(__pyx_t_6);
      __Pyx_XGIVEREF(__pyx_t_7);
      __Pyx_XGIVEREF(__pyx_t_8);
      __Pyx_ExceptionReset(__pyx_t_6, __pyx_t_7, __pyx_t_8);
      goto __pyx_L0;
    }
  }

  /* "src/python/grpcio/grpc/_cython/_cygrpc/aio/common.pyx.pxi":18
 * 
 * 
 * cdef grpc_status_code get_status_code(object code) except *:             # <<<<<<<<<<<<<<
 *     if isinstance(code, int):
 *         if code >= StatusCode.ok and code <= StatusCode.data_loss:
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_3);
  __Pyx_XDECREF(__pyx_t_4);
  __Pyx_XDECREF(__pyx_t_10);
  __Pyx_XDECREF(__pyx_t_11);
  __Pyx_XDECREF(__pyx_t_12);
  __Pyx_AddTraceback("grpc._cython.cygrpc.get_status_code", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = (grpc_status_code) 0;
  __pyx_L0:;
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "src/python/grpcio/grpc/_cython/_cygrpc/aio/common.pyx.pxi":31
 * 
 * 
 * cdef object deserialize(object deserializer, bytes raw_message):             # <<<<<<<<<<<<<<
 *     """Perform deserialization on raw bytes.
 * 
 */

static PyObject *__pyx_f_4grpc_7_cython_6cygrpc_deserialize(PyObject *__pyx_v_deserializer, PyObject *__pyx_v_raw_message) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  int __pyx_t_1;
  PyObject *__pyx_t_2 = NULL;
  PyObject *__pyx_t_3 = NULL;
  PyObject *__pyx_t_4 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("deserialize", 0);

  /* "src/python/grpcio/grpc/_cython/_cygrpc/aio/common.pyx.pxi":36
 *     Failure to deserialize is a fatal error.
 *     """
 *     if deserializer:             # <<<<<<<<<<<<<<
 *         return deserializer(raw_message)
 *     else:
 */
  __pyx_t_1 = __Pyx_PyObject_IsTrue(__pyx_v_deserializer); if (unlikely(__pyx_t_1 < 0)) __PYX_ERR(7, 36, __pyx_L1_error)
  if (__pyx_t_1) {

    /* "src/python/grpcio/grpc/_cython/_cygrpc/aio/common.pyx.pxi":37
 *     """
 *     if deserializer:
 *         return deserializer(raw_message)             # <<<<<<<<<<<<<<
 *     else:
 *         return raw_message
 */
    __Pyx_XDECREF(__pyx_r);
    __Pyx_INCREF(__pyx_v_deserializer);
    __pyx_t_3 = __pyx_v_deserializer; __pyx_t_4 = NULL;
    if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_3))) {
      __pyx_t_4 = PyMethod_GET_SELF(__pyx_t_3);
      if (likely(__pyx_t_4)) {
        PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_3);
        __Pyx_INCREF(__pyx_t_4);
        __Pyx_INCREF(function);
        __Pyx_DECREF_SET(__pyx_t_3, function);
      }
    }
    __pyx_t_2 = (__pyx_t_4) ? __Pyx_PyObject_Call2Args(__pyx_t_3, __pyx_t_4, __pyx_v_raw_message) : __Pyx_PyObject_CallOneArg(__pyx_t_3, __pyx_v_raw_message);
    __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0;
    if (unlikely(!__pyx_t_2)) __PYX_ERR(7, 37, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_2);
    __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
    __pyx_r = __pyx_t_2;
    __pyx_t_2 = 0;
    goto __pyx_L0;

    /* "src/python/grpcio/grpc/_cython/_cygrpc/aio/common.pyx.pxi":36
 *     Failure to deserialize is a fatal error.
 *     """
 *     if deserializer:             # <<<<<<<<<<<<<<
 *         return deserializer(raw_message)
 *     else:
 */
  }

  /* "src/python/grpcio/grpc/_cython/_cygrpc/aio/common.pyx.pxi":39
 *         return deserializer(raw_message)
 *     else:
 *         return raw_message             # <<<<<<<<<<<<<<
 * 
 * 
 */
  /*else*/ {
    __Pyx_XDECREF(__pyx_r);
    __Pyx_INCREF(__pyx_v_raw_message);
    __pyx_r = __pyx_v_raw_message;
    goto __pyx_L0;
  }

  /* "src/python/grpcio/grpc/_cython/_cygrpc/aio/common.pyx.pxi":31
 * 
 * 
 * cdef object deserialize(object deserializer, bytes raw_message):             # <<<<<<<<<<<<<<
 *     """Perform deserialization on raw bytes.
 * 
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_XDECREF(__pyx_t_3);
  __Pyx_XDECREF(__pyx_t_4);
  __Pyx_AddTraceback("grpc._cython.cygrpc.deserialize", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = 0;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "src/python/grpcio/grpc/_cython/_cygrpc/aio/common.pyx.pxi":42
 * 
 * 
 * cdef bytes serialize(object serializer, object message):             # <<<<<<<<<<<<<<
 *     """Perform serialization on a message.
 * 
 */

static PyObject *__pyx_f_4grpc_7_cython_6cygrpc_serialize(PyObject *__pyx_v_serializer, PyObject *__pyx_v_message) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  int __pyx_t_1;
  int __pyx_t_2;
  PyObject *__pyx_t_3 = NULL;
  PyObject *__pyx_t_4 = NULL;
  PyObject *__pyx_t_5 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("serialize", 0);
  __Pyx_INCREF(__pyx_v_message);

  /* "src/python/grpcio/grpc/_cython/_cygrpc/aio/common.pyx.pxi":47
 *     Failure to serialize is a fatal error.
 *     """
 *     if isinstance(message, str):             # <<<<<<<<<<<<<<
 *         message = message.encode('utf-8')
 *     if serializer:
 */
  __pyx_t_1 = PyString_Check(__pyx_v_message); 
  __pyx_t_2 = (__pyx_t_1 != 0);
  if (__pyx_t_2) {

    /* "src/python/grpcio/grpc/_cython/_cygrpc/aio/common.pyx.pxi":48
 *     """
 *     if isinstance(message, str):
 *         message = message.encode('utf-8')             # <<<<<<<<<<<<<<
 *     if serializer:
 *         return serializer(message)
 */
    __pyx_t_4 = __Pyx_PyObject_GetAttrStr(__pyx_v_message, __pyx_n_s_encode); if (unlikely(!__pyx_t_4)) __PYX_ERR(7, 48, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_4);
    __pyx_t_5 = NULL;
    if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_4))) {
      __pyx_t_5 = PyMethod_GET_SELF(__pyx_t_4);
      if (likely(__pyx_t_5)) {
        PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_4);
        __Pyx_INCREF(__pyx_t_5);
        __Pyx_INCREF(function);
        __Pyx_DECREF_SET(__pyx_t_4, function);
      }
    }
    __pyx_t_3 = (__pyx_t_5) ? __Pyx_PyObject_Call2Args(__pyx_t_4, __pyx_t_5, __pyx_kp_s_utf_8) : __Pyx_PyObject_CallOneArg(__pyx_t_4, __pyx_kp_s_utf_8);
    __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0;
    if (unlikely(!__pyx_t_3)) __PYX_ERR(7, 48, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_3);
    __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
    __Pyx_DECREF_SET(__pyx_v_message, __pyx_t_3);
    __pyx_t_3 = 0;

    /* "src/python/grpcio/grpc/_cython/_cygrpc/aio/common.pyx.pxi":47
 *     Failure to serialize is a fatal error.
 *     """
 *     if isinstance(message, str):             # <<<<<<<<<<<<<<
 *         message = message.encode('utf-8')
 *     if serializer:
 */
  }

  /* "src/python/grpcio/grpc/_cython/_cygrpc/aio/common.pyx.pxi":49
 *     if isinstance(message, str):
 *         message = message.encode('utf-8')
 *     if serializer:             # <<<<<<<<<<<<<<
 *         return serializer(message)
 *     else:
 */
  __pyx_t_2 = __Pyx_PyObject_IsTrue(__pyx_v_serializer); if (unlikely(__pyx_t_2 < 0)) __PYX_ERR(7, 49, __pyx_L1_error)
  if (__pyx_t_2) {

    /* "src/python/grpcio/grpc/_cython/_cygrpc/aio/common.pyx.pxi":50
 *         message = message.encode('utf-8')
 *     if serializer:
 *         return serializer(message)             # <<<<<<<<<<<<<<
 *     else:
 *         return message
 */
    __Pyx_XDECREF(__pyx_r);
    __Pyx_INCREF(__pyx_v_serializer);
    __pyx_t_4 = __pyx_v_serializer; __pyx_t_5 = NULL;
    if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_4))) {
      __pyx_t_5 = PyMethod_GET_SELF(__pyx_t_4);
      if (likely(__pyx_t_5)) {
        PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_4);
        __Pyx_INCREF(__pyx_t_5);
        __Pyx_INCREF(function);
        __Pyx_DECREF_SET(__pyx_t_4, function);
      }
    }
    __pyx_t_3 = (__pyx_t_5) ? __Pyx_PyObject_Call2Args(__pyx_t_4, __pyx_t_5, __pyx_v_message) : __Pyx_PyObject_CallOneArg(__pyx_t_4, __pyx_v_message);
    __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0;
    if (unlikely(!__pyx_t_3)) __PYX_ERR(7, 50, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_3);
    __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
    if (!(likely(PyBytes_CheckExact(__pyx_t_3))||((__pyx_t_3) == Py_None)||(PyErr_Format(PyExc_TypeError, "Expected %.16s, got %.200s", "bytes", Py_TYPE(__pyx_t_3)->tp_name), 0))) __PYX_ERR(7, 50, __pyx_L1_error)
    __pyx_r = ((PyObject*)__pyx_t_3);
    __pyx_t_3 = 0;
    goto __pyx_L0;

    /* "src/python/grpcio/grpc/_cython/_cygrpc/aio/common.pyx.pxi":49
 *     if isinstance(message, str):
 *         message = message.encode('utf-8')
 *     if serializer:             # <<<<<<<<<<<<<<
 *         return serializer(message)
 *     else:
 */
  }

  /* "src/python/grpcio/grpc/_cython/_cygrpc/aio/common.pyx.pxi":52
 *         return serializer(message)
 *     else:
 *         return message             # <<<<<<<<<<<<<<
 * 
 * 
 */
  /*else*/ {
    __Pyx_XDECREF(__pyx_r);
    if (!(likely(PyBytes_CheckExact(__pyx_v_message))||((__pyx_v_message) == Py_None)||(PyErr_Format(PyExc_TypeError, "Expected %.16s, got %.200s", "bytes", Py_TYPE(__pyx_v_message)->tp_name), 0))) __PYX_ERR(7, 52, __pyx_L1_error)
    __Pyx_INCREF(__pyx_v_message);
    __pyx_r = ((PyObject*)__pyx_v_message);
    goto __pyx_L0;
  }

  /* "src/python/grpcio/grpc/_cython/_cygrpc/aio/common.pyx.pxi":42
 * 
 * 
 * cdef bytes serialize(object serializer, object message):             # <<<<<<<<<<<<<<
 *     """Perform serialization on a message.
 * 
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_3);
  __Pyx_XDECREF(__pyx_t_4);
  __Pyx_XDECREF(__pyx_t_5);
  __Pyx_AddTraceback("grpc._cython.cygrpc.serialize", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = 0;
  __pyx_L0:;
  __Pyx_XDECREF(__pyx_v_message);
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "src/python/grpcio/grpc/_cython/_cygrpc/aio/common.pyx.pxi":57
 * class _EOF:
 * 
 *     def __bool__(self):             # <<<<<<<<<<<<<<
 *         return False
 * 
 */

/* Python wrapper */
static PyObject *__pyx_pw_4grpc_7_cython_6cygrpc_4_EOF_1__bool__(PyObject *__pyx_self, PyObject *__pyx_v_self); /*proto*/
static PyMethodDef __pyx_mdef_4grpc_7_cython_6cygrpc_4_EOF_1__bool__ = {"__bool__", (PyCFunction)__pyx_pw_4grpc_7_cython_6cygrpc_4_EOF_1__bool__, METH_O, 0};
static PyObject *__pyx_pw_4grpc_7_cython_6cygrpc_4_EOF_1__bool__(PyObject *__pyx_self, PyObject *__pyx_v_self) {
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__bool__ (wrapper)", 0);
  __pyx_r = __pyx_pf_4grpc_7_cython_6cygrpc_4_EOF___bool__(__pyx_self, ((PyObject *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_4grpc_7_cython_6cygrpc_4_EOF___bool__(CYTHON_UNUSED PyObject *__pyx_self, CYTHON_UNUSED PyObject *__pyx_v_self) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__bool__", 0);

  /* "src/python/grpcio/grpc/_cython/_cygrpc/aio/common.pyx.pxi":58
 * 
 *     def __bool__(self):
 *         return False             # <<<<<<<<<<<<<<
 * 
 *     def __len__(self):
 */
  __Pyx_XDECREF(__pyx_r);
  __Pyx_INCREF(Py_False);
  __pyx_r = Py_False;
  goto __pyx_L0;

  /* "src/python/grpcio/grpc/_cython/_cygrpc/aio/common.pyx.pxi":57
 * class _EOF:
 * 
 *     def __bool__(self):             # <<<<<<<<<<<<<<
 *         return False
 * 
 */

  /* function exit code */
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "src/python/grpcio/grpc/_cython/_cygrpc/aio/common.pyx.pxi":60
 *         return False
 * 
 *     def __len__(self):             # <<<<<<<<<<<<<<
 *         return 0
 * 
 */

/* Python wrapper */
static PyObject *__pyx_pw_4grpc_7_cython_6cygrpc_4_EOF_3__len__(PyObject *__pyx_self, PyObject *__pyx_v_self); /*proto*/
static PyMethodDef __pyx_mdef_4grpc_7_cython_6cygrpc_4_EOF_3__len__ = {"__len__", (PyCFunction)__pyx_pw_4grpc_7_cython_6cygrpc_4_EOF_3__len__, METH_O, 0};
static PyObject *__pyx_pw_4grpc_7_cython_6cygrpc_4_EOF_3__len__(PyObject *__pyx_self, PyObject *__pyx_v_self) {
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__len__ (wrapper)", 0);
  __pyx_r = __pyx_pf_4grpc_7_cython_6cygrpc_4_EOF_2__len__(__pyx_self, ((PyObject *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_4grpc_7_cython_6cygrpc_4_EOF_2__len__(CYTHON_UNUSED PyObject *__pyx_self, CYTHON_UNUSED PyObject *__pyx_v_self) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__len__", 0);

  /* "src/python/grpcio/grpc/_cython/_cygrpc/aio/common.pyx.pxi":61
 * 
 *     def __len__(self):
 *         return 0             # <<<<<<<<<<<<<<
 * 
 *     def _repr(self) -> str:
 */
  __Pyx_XDECREF(__pyx_r);
  __Pyx_INCREF(__pyx_int_0);
  __pyx_r = __pyx_int_0;
  goto __pyx_L0;

  /* "src/python/grpcio/grpc/_cython/_cygrpc/aio/common.pyx.pxi":60
 *         return False
 * 
 *     def __len__(self):             # <<<<<<<<<<<<<<
 *         return 0
 * 
 */

  /* function exit code */
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "src/python/grpcio/grpc/_cython/_cygrpc/aio/common.pyx.pxi":63
 *         return 0
 * 
 *     def _repr(self) -> str:             # <<<<<<<<<<<<<<
 *         return '<grpc.aio.EOF>'
 * 
 */

/* Python wrapper */
static PyObject *__pyx_pw_4grpc_7_cython_6cygrpc_4_EOF_5_repr(PyObject *__pyx_self, PyObject *__pyx_v_self); /*proto*/
static PyMethodDef __pyx_mdef_4grpc_7_cython_6cygrpc_4_EOF_5_repr = {"_repr", (PyCFunction)__pyx_pw_4grpc_7_cython_6cygrpc_4_EOF_5_repr, METH_O, 0};
static PyObject *__pyx_pw_4grpc_7_cython_6cygrpc_4_EOF_5_repr(PyObject *__pyx_self, PyObject *__pyx_v_self) {
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("_repr (wrapper)", 0);
  __pyx_r = __pyx_pf_4grpc_7_cython_6cygrpc_4_EOF_4_repr(__pyx_self, ((PyObject *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_4grpc_7_cython_6cygrpc_4_EOF_4_repr(CYTHON_UNUSED PyObject *__pyx_self, CYTHON_UNUSED PyObject *__pyx_v_self) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("_repr", 0);

  /* "src/python/grpcio/grpc/_cython/_cygrpc/aio/common.pyx.pxi":64
 * 
 *     def _repr(self) -> str:
 *         return '<grpc.aio.EOF>'             # <<<<<<<<<<<<<<
 * 
 *     def __repr__(self) -> str:
 */
  __Pyx_XDECREF(__pyx_r);
  __Pyx_INCREF(__pyx_kp_s_grpc_aio_EOF);
  __pyx_r = __pyx_kp_s_grpc_aio_EOF;
  goto __pyx_L0;

  /* "src/python/grpcio/grpc/_cython/_cygrpc/aio/common.pyx.pxi":63
 *         return 0
 * 
 *     def _repr(self) -> str:             # <<<<<<<<<<<<<<
 *         return '<grpc.aio.EOF>'
 * 
 */

  /* function exit code */
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "src/python/grpcio/grpc/_cython/_cygrpc/aio/common.pyx.pxi":66
 *         return '<grpc.aio.EOF>'
 * 
 *     def __repr__(self) -> str:             # <<<<<<<<<<<<<<
 *         return self._repr()
 * 
 */

/* Python wrapper */
static PyObject *__pyx_pw_4grpc_7_cython_6cygrpc_4_EOF_7__repr__(PyObject *__pyx_self, PyObject *__pyx_v_self); /*proto*/
static PyMethodDef __pyx_mdef_4grpc_7_cython_6cygrpc_4_EOF_7__repr__ = {"__repr__", (PyCFunction)__pyx_pw_4grpc_7_cython_6cygrpc_4_EOF_7__repr__, METH_O, 0};
static PyObject *__pyx_pw_4grpc_7_cython_6cygrpc_4_EOF_7__repr__(PyObject *__pyx_self, PyObject *__pyx_v_self) {
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__repr__ (wrapper)", 0);
  __pyx_r = __pyx_pf_4grpc_7_cython_6cygrpc_4_EOF_6__repr__(__pyx_self, ((PyObject *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_4grpc_7_cython_6cygrpc_4_EOF_6__repr__(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__pyx_v_self) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  PyObject *__pyx_t_2 = NULL;
  PyObject *__pyx_t_3 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("__repr__", 0);

  /* "src/python/grpcio/grpc/_cython/_cygrpc/aio/common.pyx.pxi":67
 * 
 *     def __repr__(self) -> str:
 *         return self._repr()             # <<<<<<<<<<<<<<
 * 
 *     def __str__(self) -> str:
 */
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_v_self, __pyx_n_s_repr); if (unlikely(!__pyx_t_2)) __PYX_ERR(7, 67, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __pyx_t_3 = NULL;
  if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_2))) {
    __pyx_t_3 = PyMethod_GET_SELF(__pyx_t_2);
    if (likely(__pyx_t_3)) {
      PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_2);
      __Pyx_INCREF(__pyx_t_3);
      __Pyx_INCREF(function);
      __Pyx_DECREF_SET(__pyx_t_2, function);
    }
  }
  __pyx_t_1 = (__pyx_t_3) ? __Pyx_PyObject_CallOneArg(__pyx_t_2, __pyx_t_3) : __Pyx_PyObject_CallNoArg(__pyx_t_2);
  __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0;
  if (unlikely(!__pyx_t_1)) __PYX_ERR(7, 67, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  if (!(likely(PyString_CheckExact(__pyx_t_1))||((__pyx_t_1) == Py_None)||(PyErr_Format(PyExc_TypeError, "Expected %.16s, got %.200s", "str", Py_TYPE(__pyx_t_1)->tp_name), 0))) __PYX_ERR(7, 67, __pyx_L1_error)
  __pyx_r = ((PyObject*)__pyx_t_1);
  __pyx_t_1 = 0;
  goto __pyx_L0;

  /* "src/python/grpcio/grpc/_cython/_cygrpc/aio/common.pyx.pxi":66
 *         return '<grpc.aio.EOF>'
 * 
 *     def __repr__(self) -> str:             # <<<<<<<<<<<<<<
 *         return self._repr()
 * 
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_XDECREF(__pyx_t_3);
  __Pyx_AddTraceback("grpc._cython.cygrpc._EOF.__repr__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "src/python/grpcio/grpc/_cython/_cygrpc/aio/common.pyx.pxi":69
 *         return self._repr()
 * 
 *     def __str__(self) -> str:             # <<<<<<<<<<<<<<
 *         return self._repr()
 * 
 */

/* Python wrapper */
static PyObject *__pyx_pw_4grpc_7_cython_6cygrpc_4_EOF_9__str__(PyObject *__pyx_self, PyObject *__pyx_v_self); /*proto*/
static PyMethodDef __pyx_mdef_4grpc_7_cython_6cygrpc_4_EOF_9__str__ = {"__str__", (PyCFunction)__pyx_pw_4grpc_7_cython_6cygrpc_4_EOF_9__str__, METH_O, 0};
static PyObject *__pyx_pw_4grpc_7_cython_6cygrpc_4_EOF_9__str__(PyObject *__pyx_self, PyObject *__pyx_v_self) {
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__str__ (wrapper)", 0);
  __pyx_r = __pyx_pf_4grpc_7_cython_6cygrpc_4_EOF_8__str__(__pyx_self, ((PyObject *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_4grpc_7_cython_6cygrpc_4_EOF_8__str__(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__pyx_v_self) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  PyObject *__pyx_t_2 = NULL;
  PyObject *__pyx_t_3 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("__str__", 0);

  /* "src/python/grpcio/grpc/_cython/_cygrpc/aio/common.pyx.pxi":70
 * 
 *     def __str__(self) -> str:
 *         return self._repr()             # <<<<<<<<<<<<<<
 * 
 * 
 */
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_v_self, __pyx_n_s_repr); if (unlikely(!__pyx_t_2)) __PYX_ERR(7, 70, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __pyx_t_3 = NULL;
  if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_2))) {
    __pyx_t_3 = PyMethod_GET_SELF(__pyx_t_2);
    if (likely(__pyx_t_3)) {
      PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_2);
      __Pyx_INCREF(__pyx_t_3);
      __Pyx_INCREF(function);
      __Pyx_DECREF_SET(__pyx_t_2, function);
    }
  }
  __pyx_t_1 = (__pyx_t_3) ? __Pyx_PyObject_CallOneArg(__pyx_t_2, __pyx_t_3) : __Pyx_PyObject_CallNoArg(__pyx_t_2);
  __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0;
  if (unlikely(!__pyx_t_1)) __PYX_ERR(7, 70, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  if (!(likely(PyString_CheckExact(__pyx_t_1))||((__pyx_t_1) == Py_None)||(PyErr_Format(PyExc_TypeError, "Expected %.16s, got %.200s", "str", Py_TYPE(__pyx_t_1)->tp_name), 0))) __PYX_ERR(7, 70, __pyx_L1_error)
  __pyx_r = ((PyObject*)__pyx_t_1);
  __pyx_t_1 = 0;
  goto __pyx_L0;

  /* "src/python/grpcio/grpc/_cython/_cygrpc/aio/common.pyx.pxi":69
 *         return self._repr()
 * 
 *     def __str__(self) -> str:             # <<<<<<<<<<<<<<
 *         return self._repr()
 * 
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_XDECREF(__pyx_t_3);
  __Pyx_AddTraceback("grpc._cython.cygrpc._EOF.__str__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "src/python/grpcio/grpc/_cython/_cygrpc/aio/common.pyx.pxi":106
 * 
 * 
 * def schedule_coro_threadsafe(object coro, object loop):             # <<<<<<<<<<<<<<
 *     try:
 *         return loop.create_task(coro)
 */

/* Python wrapper */
static PyObject *__pyx_pw_4grpc_7_cython_6cygrpc_107schedule_coro_threadsafe(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
static PyMethodDef __pyx_mdef_4grpc_7_cython_6cygrpc_107schedule_coro_threadsafe = {"schedule_coro_threadsafe", (PyCFunction)(void*)(PyCFunctionWithKeywords)__pyx_pw_4grpc_7_cython_6cygrpc_107schedule_coro_threadsafe, METH_VARARGS|METH_KEYWORDS, 0};
static PyObject *__pyx_pw_4grpc_7_cython_6cygrpc_107schedule_coro_threadsafe(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
  PyObject *__pyx_v_coro = 0;
  PyObject *__pyx_v_loop = 0;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("schedule_coro_threadsafe (wrapper)", 0);
  {
    static PyObject **__pyx_pyargnames[] = {&__pyx_n_s_coro,&__pyx_n_s_loop,0};
    PyObject* values[2] = {0,0};
    if (unlikely(__pyx_kwds)) {
      Py_ssize_t kw_args;
      const Py_ssize_t pos_args = PyTuple_GET_SIZE(__pyx_args);
      switch (pos_args) {
        case  2: values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
        CYTHON_FALLTHROUGH;
        case  1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
        CYTHON_FALLTHROUGH;
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      kw_args = PyDict_Size(__pyx_kwds);
      switch (pos_args) {
        case  0:
        if (likely((values[0] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_coro)) != 0)) kw_args--;
        else goto __pyx_L5_argtuple_error;
        CYTHON_FALLTHROUGH;
        case  1:
        if (likely((values[1] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_loop)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("schedule_coro_threadsafe", 1, 2, 2, 1); __PYX_ERR(7, 106, __pyx_L3_error)
        }
      }
      if (unlikely(kw_args > 0)) {
        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "schedule_coro_threadsafe") < 0)) __PYX_ERR(7, 106, __pyx_L3_error)
      }
    } else if (PyTuple_GET_SIZE(__pyx_args) != 2) {
      goto __pyx_L5_argtuple_error;
    } else {
      values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
      values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
    }
    __pyx_v_coro = values[0];
    __pyx_v_loop = values[1];
  }
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("schedule_coro_threadsafe", 1, 2, 2, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(7, 106, __pyx_L3_error)
  __pyx_L3_error:;
  __Pyx_AddTraceback("grpc._cython.cygrpc.schedule_coro_threadsafe", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  __pyx_r = __pyx_pf_4grpc_7_cython_6cygrpc_106schedule_coro_threadsafe(__pyx_self, __pyx_v_coro, __pyx_v_loop);

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_4grpc_7_cython_6cygrpc_106schedule_coro_threadsafe(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__pyx_v_coro, PyObject *__pyx_v_loop) {
  PyObject *__pyx_v_runtime_error = NULL;
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  PyObject *__pyx_t_2 = NULL;
  PyObject *__pyx_t_3 = NULL;
  PyObject *__pyx_t_4 = NULL;
  PyObject *__pyx_t_5 = NULL;
  PyObject *__pyx_t_6 = NULL;
  int __pyx_t_7;
  PyObject *__pyx_t_8 = NULL;
  int __pyx_t_9;
  int __pyx_t_10;
  PyObject *__pyx_t_11 = NULL;
  PyObject *__pyx_t_12 = NULL;
  PyObject *__pyx_t_13 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("schedule_coro_threadsafe", 0);

  /* "src/python/grpcio/grpc/_cython/_cygrpc/aio/common.pyx.pxi":107
 * 
 * def schedule_coro_threadsafe(object coro, object loop):
 *     try:             # <<<<<<<<<<<<<<
 *         return loop.create_task(coro)
 *     except RuntimeError as runtime_error:
 */
  {
    __Pyx_PyThreadState_declare
    __Pyx_PyThreadState_assign
    __Pyx_ExceptionSave(&__pyx_t_1, &__pyx_t_2, &__pyx_t_3);
    __Pyx_XGOTREF(__pyx_t_1);
    __Pyx_XGOTREF(__pyx_t_2);
    __Pyx_XGOTREF(__pyx_t_3);
    /*try:*/ {

      /* "src/python/grpcio/grpc/_cython/_cygrpc/aio/common.pyx.pxi":108
 * def schedule_coro_threadsafe(object coro, object loop):
 *     try:
 *         return loop.create_task(coro)             # <<<<<<<<<<<<<<
 *     except RuntimeError as runtime_error:
 *         if 'Non-thread-safe operation' in str(runtime_error):
 */
      __Pyx_XDECREF(__pyx_r);
      __pyx_t_5 = __Pyx_PyObject_GetAttrStr(__pyx_v_loop, __pyx_n_s_create_task); if (unlikely(!__pyx_t_5)) __PYX_ERR(7, 108, __pyx_L3_error)
      __Pyx_GOTREF(__pyx_t_5);
      __pyx_t_6 = NULL;
      if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_5))) {
        __pyx_t_6 = PyMethod_GET_SELF(__pyx_t_5);
        if (likely(__pyx_t_6)) {
          PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_5);
          __Pyx_INCREF(__pyx_t_6);
          __Pyx_INCREF(function);
          __Pyx_DECREF_SET(__pyx_t_5, function);
        }
      }
      __pyx_t_4 = (__pyx_t_6) ? __Pyx_PyObject_Call2Args(__pyx_t_5, __pyx_t_6, __pyx_v_coro) : __Pyx_PyObject_CallOneArg(__pyx_t_5, __pyx_v_coro);
      __Pyx_XDECREF(__pyx_t_6); __pyx_t_6 = 0;
      if (unlikely(!__pyx_t_4)) __PYX_ERR(7, 108, __pyx_L3_error)
      __Pyx_GOTREF(__pyx_t_4);
      __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
      __pyx_r = __pyx_t_4;
      __pyx_t_4 = 0;
      goto __pyx_L7_try_return;

      /* "src/python/grpcio/grpc/_cython/_cygrpc/aio/common.pyx.pxi":107
 * 
 * def schedule_coro_threadsafe(object coro, object loop):
 *     try:             # <<<<<<<<<<<<<<
 *         return loop.create_task(coro)
 *     except RuntimeError as runtime_error:
 */
    }
    __pyx_L3_error:;
    __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0;
    __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0;
    __Pyx_XDECREF(__pyx_t_6); __pyx_t_6 = 0;

    /* "src/python/grpcio/grpc/_cython/_cygrpc/aio/common.pyx.pxi":109
 *     try:
 *         return loop.create_task(coro)
 *     except RuntimeError as runtime_error:             # <<<<<<<<<<<<<<
 *         if 'Non-thread-safe operation' in str(runtime_error):
 *             return asyncio.run_coroutine_threadsafe(
 */
    __pyx_t_7 = __Pyx_PyErr_ExceptionMatches(__pyx_builtin_RuntimeError);
    if (__pyx_t_7) {
      __Pyx_AddTraceback("grpc._cython.cygrpc.schedule_coro_threadsafe", __pyx_clineno, __pyx_lineno, __pyx_filename);
      if (__Pyx_GetException(&__pyx_t_4, &__pyx_t_5, &__pyx_t_6) < 0) __PYX_ERR(7, 109, __pyx_L5_except_error)
      __Pyx_GOTREF(__pyx_t_4);
      __Pyx_GOTREF(__pyx_t_5);
      __Pyx_GOTREF(__pyx_t_6);
      __Pyx_INCREF(__pyx_t_5);
      __pyx_v_runtime_error = __pyx_t_5;

      /* "src/python/grpcio/grpc/_cython/_cygrpc/aio/common.pyx.pxi":110
 *         return loop.create_task(coro)
 *     except RuntimeError as runtime_error:
 *         if 'Non-thread-safe operation' in str(runtime_error):             # <<<<<<<<<<<<<<
 *             return asyncio.run_coroutine_threadsafe(
 *                 coro,
 */
      __pyx_t_8 = __Pyx_PyObject_CallOneArg(((PyObject *)(&PyString_Type)), __pyx_v_runtime_error); if (unlikely(!__pyx_t_8)) __PYX_ERR(7, 110, __pyx_L5_except_error)
      __Pyx_GOTREF(__pyx_t_8);
      __pyx_t_9 = (__Pyx_PySequence_ContainsTF(__pyx_kp_s_Non_thread_safe_operation, __pyx_t_8, Py_EQ)); if (unlikely(__pyx_t_9 < 0)) __PYX_ERR(7, 110, __pyx_L5_except_error)
      __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
      __pyx_t_10 = (__pyx_t_9 != 0);
      if (likely(__pyx_t_10)) {

        /* "src/python/grpcio/grpc/_cython/_cygrpc/aio/common.pyx.pxi":111
 *     except RuntimeError as runtime_error:
 *         if 'Non-thread-safe operation' in str(runtime_error):
 *             return asyncio.run_coroutine_threadsafe(             # <<<<<<<<<<<<<<
 *                 coro,
 *                 loop,
 */
        __Pyx_XDECREF(__pyx_r);
        __Pyx_GetModuleGlobalName(__pyx_t_11, __pyx_n_s_asyncio); if (unlikely(!__pyx_t_11)) __PYX_ERR(7, 111, __pyx_L5_except_error)
        __Pyx_GOTREF(__pyx_t_11);
        __pyx_t_12 = __Pyx_PyObject_GetAttrStr(__pyx_t_11, __pyx_n_s_run_coroutine_threadsafe); if (unlikely(!__pyx_t_12)) __PYX_ERR(7, 111, __pyx_L5_except_error)
        __Pyx_GOTREF(__pyx_t_12);
        __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0;

        /* "src/python/grpcio/grpc/_cython/_cygrpc/aio/common.pyx.pxi":113
 *             return asyncio.run_coroutine_threadsafe(
 *                 coro,
 *                 loop,             # <<<<<<<<<<<<<<
 *             )
 *         else:
 */
        __pyx_t_11 = NULL;
        __pyx_t_7 = 0;
        if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_12))) {
          __pyx_t_11 = PyMethod_GET_SELF(__pyx_t_12);
          if (likely(__pyx_t_11)) {
            PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_12);
            __Pyx_INCREF(__pyx_t_11);
            __Pyx_INCREF(function);
            __Pyx_DECREF_SET(__pyx_t_12, function);
            __pyx_t_7 = 1;
          }
        }
        #if CYTHON_FAST_PYCALL
        if (PyFunction_Check(__pyx_t_12)) {
          PyObject *__pyx_temp[3] = {__pyx_t_11, __pyx_v_coro, __pyx_v_loop};
          __pyx_t_8 = __Pyx_PyFunction_FastCall(__pyx_t_12, __pyx_temp+1-__pyx_t_7, 2+__pyx_t_7); if (unlikely(!__pyx_t_8)) __PYX_ERR(7, 111, __pyx_L5_except_error)
          __Pyx_XDECREF(__pyx_t_11); __pyx_t_11 = 0;
          __Pyx_GOTREF(__pyx_t_8);
        } else
        #endif
        #if CYTHON_FAST_PYCCALL
        if (__Pyx_PyFastCFunction_Check(__pyx_t_12)) {
          PyObject *__pyx_temp[3] = {__pyx_t_11, __pyx_v_coro, __pyx_v_loop};
          __pyx_t_8 = __Pyx_PyCFunction_FastCall(__pyx_t_12, __pyx_temp+1-__pyx_t_7, 2+__pyx_t_7); if (unlikely(!__pyx_t_8)) __PYX_ERR(7, 111, __pyx_L5_except_error)
          __Pyx_XDECREF(__pyx_t_11); __pyx_t_11 = 0;
          __Pyx_GOTREF(__pyx_t_8);
        } else
        #endif
        {
          __pyx_t_13 = PyTuple_New(2+__pyx_t_7); if (unlikely(!__pyx_t_13)) __PYX_ERR(7, 111, __pyx_L5_except_error)
          __Pyx_GOTREF(__pyx_t_13);
          if (__pyx_t_11) {
            __Pyx_GIVEREF(__pyx_t_11); PyTuple_SET_ITEM(__pyx_t_13, 0, __pyx_t_11); __pyx_t_11 = NULL;
          }
          __Pyx_INCREF(__pyx_v_coro);
          __Pyx_GIVEREF(__pyx_v_coro);
          PyTuple_SET_ITEM(__pyx_t_13, 0+__pyx_t_7, __pyx_v_coro);
          __Pyx_INCREF(__pyx_v_loop);
          __Pyx_GIVEREF(__pyx_v_loop);
          PyTuple_SET_ITEM(__pyx_t_13, 1+__pyx_t_7, __pyx_v_loop);
          __pyx_t_8 = __Pyx_PyObject_Call(__pyx_t_12, __pyx_t_13, NULL); if (unlikely(!__pyx_t_8)) __PYX_ERR(7, 111, __pyx_L5_except_error)
          __Pyx_GOTREF(__pyx_t_8);
          __Pyx_DECREF(__pyx_t_13); __pyx_t_13 = 0;
        }
        __Pyx_DECREF(__pyx_t_12); __pyx_t_12 = 0;
        __pyx_r = __pyx_t_8;
        __pyx_t_8 = 0;
        __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
        __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
        __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
        goto __pyx_L6_except_return;

        /* "src/python/grpcio/grpc/_cython/_cygrpc/aio/common.pyx.pxi":110
 *         return loop.create_task(coro)
 *     except RuntimeError as runtime_error:
 *         if 'Non-thread-safe operation' in str(runtime_error):             # <<<<<<<<<<<<<<
 *             return asyncio.run_coroutine_threadsafe(
 *                 coro,
 */
      }

      /* "src/python/grpcio/grpc/_cython/_cygrpc/aio/common.pyx.pxi":116
 *             )
 *         else:
 *             raise             # <<<<<<<<<<<<<<
 * 
 * 
 */
      /*else*/ {
        __Pyx_GIVEREF(__pyx_t_4);
        __Pyx_GIVEREF(__pyx_t_5);
        __Pyx_XGIVEREF(__pyx_t_6);
        __Pyx_ErrRestoreWithState(__pyx_t_4, __pyx_t_5, __pyx_t_6);
        __pyx_t_4 = 0; __pyx_t_5 = 0; __pyx_t_6 = 0; 
        __PYX_ERR(7, 116, __pyx_L5_except_error)
      }
    }
    goto __pyx_L5_except_error;
    __pyx_L5_except_error:;

    /* "src/python/grpcio/grpc/_cython/_cygrpc/aio/common.pyx.pxi":107
 * 
 * def schedule_coro_threadsafe(object coro, object loop):
 *     try:             # <<<<<<<<<<<<<<
 *         return loop.create_task(coro)
 *     except RuntimeError as runtime_error:
 */
    __Pyx_XGIVEREF(__pyx_t_1);
    __Pyx_XGIVEREF(__pyx_t_2);
    __Pyx_XGIVEREF(__pyx_t_3);
    __Pyx_ExceptionReset(__pyx_t_1, __pyx_t_2, __pyx_t_3);
    goto __pyx_L1_error;
    __pyx_L7_try_return:;
    __Pyx_XGIVEREF(__pyx_t_1);
    __Pyx_XGIVEREF(__pyx_t_2);
    __Pyx_XGIVEREF(__pyx_t_3);
    __Pyx_ExceptionReset(__pyx_t_1, __pyx_t_2, __pyx_t_3);
    goto __pyx_L0;
    __pyx_L6_except_return:;
    __Pyx_XGIVEREF(__pyx_t_1);
    __Pyx_XGIVEREF(__pyx_t_2);
    __Pyx_XGIVEREF(__pyx_t_3);
    __Pyx_ExceptionReset(__pyx_t_1, __pyx_t_2, __pyx_t_3);
    goto __pyx_L0;
  }

  /* "src/python/grpcio/grpc/_cython/_cygrpc/aio/common.pyx.pxi":106
 * 
 * 
 * def schedule_coro_threadsafe(object coro, object loop):             # <<<<<<<<<<<<<<
 *     try:
 *         return loop.create_task(coro)
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_4);
  __Pyx_XDECREF(__pyx_t_5);
  __Pyx_XDECREF(__pyx_t_6);
  __Pyx_XDECREF(__pyx_t_8);
  __Pyx_XDECREF(__pyx_t_11);
  __Pyx_XDECREF(__pyx_t_12);
  __Pyx_XDECREF(__pyx_t_13);
  __Pyx_AddTraceback("grpc._cython.cygrpc.schedule_coro_threadsafe", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XDECREF(__pyx_v_runtime_error);
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}
static PyObject *__pyx_gb_4grpc_7_cython_6cygrpc_110generator(__pyx_CoroutineObject *__pyx_generator, CYTHON_UNUSED PyThreadState *__pyx_tstate, PyObject *__pyx_sent_value); /* proto */

/* "src/python/grpcio/grpc/_cython/_cygrpc/aio/common.pyx.pxi":119
 * 
 * 
 * def async_generator_to_generator(object agen, object loop):             # <<<<<<<<<<<<<<
 *     """Converts an async generator into generator."""
 *     try:
 */

/* Python wrapper */
static PyObject *__pyx_pw_4grpc_7_cython_6cygrpc_109async_generator_to_generator(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
static char __pyx_doc_4grpc_7_cython_6cygrpc_108async_generator_to_generator[] = "Converts an async generator into generator.";
static PyMethodDef __pyx_mdef_4grpc_7_cython_6cygrpc_109async_generator_to_generator = {"async_generator_to_generator", (PyCFunction)(void*)(PyCFunctionWithKeywords)__pyx_pw_4grpc_7_cython_6cygrpc_109async_generator_to_generator, METH_VARARGS|METH_KEYWORDS, __pyx_doc_4grpc_7_cython_6cygrpc_108async_generator_to_generator};
static PyObject *__pyx_pw_4grpc_7_cython_6cygrpc_109async_generator_to_generator(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
  PyObject *__pyx_v_agen = 0;
  PyObject *__pyx_v_loop = 0;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("async_generator_to_generator (wrapper)", 0);
  {
    static PyObject **__pyx_pyargnames[] = {&__pyx_n_s_agen,&__pyx_n_s_loop,0};
    PyObject* values[2] = {0,0};
    if (unlikely(__pyx_kwds)) {
      Py_ssize_t kw_args;
      const Py_ssize_t pos_args = PyTuple_GET_SIZE(__pyx_args);
      switch (pos_args) {
        case  2: values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
        CYTHON_FALLTHROUGH;
        case  1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
        CYTHON_FALLTHROUGH;
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      kw_args = PyDict_Size(__pyx_kwds);
      switch (pos_args) {
        case  0:
        if (likely((values[0] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_agen)) != 0)) kw_args--;
        else goto __pyx_L5_argtuple_error;
        CYTHON_FALLTHROUGH;
        case  1:
        if (likely((values[1] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_loop)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("async_generator_to_generator", 1, 2, 2, 1); __PYX_ERR(7, 119, __pyx_L3_error)
        }
      }
      if (unlikely(kw_args > 0)) {
        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "async_generator_to_generator") < 0)) __PYX_ERR(7, 119, __pyx_L3_error)
      }
    } else if (PyTuple_GET_SIZE(__pyx_args) != 2) {
      goto __pyx_L5_argtuple_error;
    } else {
      values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
      values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
    }
    __pyx_v_agen = values[0];
    __pyx_v_loop = values[1];
  }
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("async_generator_to_generator", 1, 2, 2, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(7, 119, __pyx_L3_error)
  __pyx_L3_error:;
  __Pyx_AddTraceback("grpc._cython.cygrpc.async_generator_to_generator", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  __pyx_r = __pyx_pf_4grpc_7_cython_6cygrpc_108async_generator_to_generator(__pyx_self, __pyx_v_agen, __pyx_v_loop);

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_4grpc_7_cython_6cygrpc_108async_generator_to_generator(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__pyx_v_agen, PyObject *__pyx_v_loop) {
  struct __pyx_obj_4grpc_7_cython_6cygrpc___pyx_scope_struct_12_async_generator_to_generator *__pyx_cur_scope;
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("async_generator_to_generator", 0);
  __pyx_cur_scope = (struct __pyx_obj_4grpc_7_cython_6cygrpc___pyx_scope_struct_12_async_generator_to_generator *)__pyx_tp_new_4grpc_7_cython_6cygrpc___pyx_scope_struct_12_async_generator_to_generator(__pyx_ptype_4grpc_7_cython_6cygrpc___pyx_scope_struct_12_async_generator_to_generator, __pyx_empty_tuple, NULL);
  if (unlikely(!__pyx_cur_scope)) {
    __pyx_cur_scope = ((struct __pyx_obj_4grpc_7_cython_6cygrpc___pyx_scope_struct_12_async_generator_to_generator *)Py_None);
    __Pyx_INCREF(Py_None);
    __PYX_ERR(7, 119, __pyx_L1_error)
  } else {
    __Pyx_GOTREF(__pyx_cur_scope);
  }
  __pyx_cur_scope->__pyx_v_agen = __pyx_v_agen;
  __Pyx_INCREF(__pyx_cur_scope->__pyx_v_agen);
  __Pyx_GIVEREF(__pyx_cur_scope->__pyx_v_agen);
  __pyx_cur_scope->__pyx_v_loop = __pyx_v_loop;
  __Pyx_INCREF(__pyx_cur_scope->__pyx_v_loop);
  __Pyx_GIVEREF(__pyx_cur_scope->__pyx_v_loop);
  {
    __pyx_CoroutineObject *gen = __Pyx_Generator_New((__pyx_coroutine_body_t) __pyx_gb_4grpc_7_cython_6cygrpc_110generator, __pyx_codeobj__138, (PyObject *) __pyx_cur_scope, __pyx_n_s_async_generator_to_generator, __pyx_n_s_async_generator_to_generator, __pyx_n_s_grpc__cython_cygrpc); if (unlikely(!gen)) __PYX_ERR(7, 119, __pyx_L1_error)
    __Pyx_DECREF(__pyx_cur_scope);
    __Pyx_RefNannyFinishContext();
    return (PyObject *) gen;
  }

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_AddTraceback("grpc._cython.cygrpc.async_generator_to_generator", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __Pyx_DECREF(((PyObject *)__pyx_cur_scope));
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_gb_4grpc_7_cython_6cygrpc_110generator(__pyx_CoroutineObject *__pyx_generator, CYTHON_UNUSED PyThreadState *__pyx_tstate, PyObject *__pyx_sent_value) /* generator body */
{
  struct __pyx_obj_4grpc_7_cython_6cygrpc___pyx_scope_struct_12_async_generator_to_generator *__pyx_cur_scope = ((struct __pyx_obj_4grpc_7_cython_6cygrpc___pyx_scope_struct_12_async_generator_to_generator *)__pyx_generator->closure);
  PyObject *__pyx_r = NULL;
  PyObject *__pyx_t_1 = NULL;
  PyObject *__pyx_t_2 = NULL;
  PyObject *__pyx_t_3 = NULL;
  PyObject *__pyx_t_4 = NULL;
  PyObject *__pyx_t_5 = NULL;
  PyObject *__pyx_t_6 = NULL;
  PyObject *__pyx_t_7 = NULL;
  PyObject *__pyx_t_8 = NULL;
  int __pyx_t_9;
  int __pyx_t_10;
  int __pyx_t_11;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("async_generator_to_generator", 0);
  switch (__pyx_generator->resume_label) {
    case 0: goto __pyx_L3_first_run;
    case 1: goto __pyx_L13_resume_from_yield;
    default: /* CPython raises the right error here */
    __Pyx_RefNannyFinishContext();
    return NULL;
  }
  __pyx_L3_first_run:;
  if (unlikely(!__pyx_sent_value)) __PYX_ERR(7, 119, __pyx_L1_error)

  /* "src/python/grpcio/grpc/_cython/_cygrpc/aio/common.pyx.pxi":121
 * def async_generator_to_generator(object agen, object loop):
 *     """Converts an async generator into generator."""
 *     try:             # <<<<<<<<<<<<<<
 *         while True:
 *             future = asyncio.run_coroutine_threadsafe(
 */
  {
    __Pyx_ExceptionSave(&__pyx_t_1, &__pyx_t_2, &__pyx_t_3);
    __Pyx_XGOTREF(__pyx_t_1);
    __Pyx_XGOTREF(__pyx_t_2);
    __Pyx_XGOTREF(__pyx_t_3);
    /*try:*/ {

      /* "src/python/grpcio/grpc/_cython/_cygrpc/aio/common.pyx.pxi":122
 *     """Converts an async generator into generator."""
 *     try:
 *         while True:             # <<<<<<<<<<<<<<
 *             future = asyncio.run_coroutine_threadsafe(
 *                 agen.__anext__(),
 */
      while (1) {

        /* "src/python/grpcio/grpc/_cython/_cygrpc/aio/common.pyx.pxi":123
 *     try:
 *         while True:
 *             future = asyncio.run_coroutine_threadsafe(             # <<<<<<<<<<<<<<
 *                 agen.__anext__(),
 *                 loop
 */
        __Pyx_GetModuleGlobalName(__pyx_t_5, __pyx_n_s_asyncio); if (unlikely(!__pyx_t_5)) __PYX_ERR(7, 123, __pyx_L4_error)
        __Pyx_GOTREF(__pyx_t_5);
        __pyx_t_6 = __Pyx_PyObject_GetAttrStr(__pyx_t_5, __pyx_n_s_run_coroutine_threadsafe); if (unlikely(!__pyx_t_6)) __PYX_ERR(7, 123, __pyx_L4_error)
        __Pyx_GOTREF(__pyx_t_6);
        __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;

        /* "src/python/grpcio/grpc/_cython/_cygrpc/aio/common.pyx.pxi":124
 *         while True:
 *             future = asyncio.run_coroutine_threadsafe(
 *                 agen.__anext__(),             # <<<<<<<<<<<<<<
 *                 loop
 *             )
 */
        __pyx_t_7 = __Pyx_PyObject_GetAttrStr(__pyx_cur_scope->__pyx_v_agen, __pyx_n_s_anext); if (unlikely(!__pyx_t_7)) __PYX_ERR(7, 124, __pyx_L4_error)
        __Pyx_GOTREF(__pyx_t_7);
        __pyx_t_8 = NULL;
        if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_7))) {
          __pyx_t_8 = PyMethod_GET_SELF(__pyx_t_7);
          if (likely(__pyx_t_8)) {
            PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_7);
            __Pyx_INCREF(__pyx_t_8);
            __Pyx_INCREF(function);
            __Pyx_DECREF_SET(__pyx_t_7, function);
          }
        }
        __pyx_t_5 = (__pyx_t_8) ? __Pyx_PyObject_CallOneArg(__pyx_t_7, __pyx_t_8) : __Pyx_PyObject_CallNoArg(__pyx_t_7);
        __Pyx_XDECREF(__pyx_t_8); __pyx_t_8 = 0;
        if (unlikely(!__pyx_t_5)) __PYX_ERR(7, 124, __pyx_L4_error)
        __Pyx_GOTREF(__pyx_t_5);
        __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;

        /* "src/python/grpcio/grpc/_cython/_cygrpc/aio/common.pyx.pxi":125
 *             future = asyncio.run_coroutine_threadsafe(
 *                 agen.__anext__(),
 *                 loop             # <<<<<<<<<<<<<<
 *             )
 *             response = future.result()
 */
        __pyx_t_7 = NULL;
        __pyx_t_9 = 0;
        if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_6))) {
          __pyx_t_7 = PyMethod_GET_SELF(__pyx_t_6);
          if (likely(__pyx_t_7)) {
            PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_6);
            __Pyx_INCREF(__pyx_t_7);
            __Pyx_INCREF(function);
            __Pyx_DECREF_SET(__pyx_t_6, function);
            __pyx_t_9 = 1;
          }
        }
        #if CYTHON_FAST_PYCALL
        if (PyFunction_Check(__pyx_t_6)) {
          PyObject *__pyx_temp[3] = {__pyx_t_7, __pyx_t_5, __pyx_cur_scope->__pyx_v_loop};
          __pyx_t_4 = __Pyx_PyFunction_FastCall(__pyx_t_6, __pyx_temp+1-__pyx_t_9, 2+__pyx_t_9); if (unlikely(!__pyx_t_4)) __PYX_ERR(7, 123, __pyx_L4_error)
          __Pyx_XDECREF(__pyx_t_7); __pyx_t_7 = 0;
          __Pyx_GOTREF(__pyx_t_4);
          __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
        } else
        #endif
        #if CYTHON_FAST_PYCCALL
        if (__Pyx_PyFastCFunction_Check(__pyx_t_6)) {
          PyObject *__pyx_temp[3] = {__pyx_t_7, __pyx_t_5, __pyx_cur_scope->__pyx_v_loop};
          __pyx_t_4 = __Pyx_PyCFunction_FastCall(__pyx_t_6, __pyx_temp+1-__pyx_t_9, 2+__pyx_t_9); if (unlikely(!__pyx_t_4)) __PYX_ERR(7, 123, __pyx_L4_error)
          __Pyx_XDECREF(__pyx_t_7); __pyx_t_7 = 0;
          __Pyx_GOTREF(__pyx_t_4);
          __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
        } else
        #endif
        {
          __pyx_t_8 = PyTuple_New(2+__pyx_t_9); if (unlikely(!__pyx_t_8)) __PYX_ERR(7, 123, __pyx_L4_error)
          __Pyx_GOTREF(__pyx_t_8);
          if (__pyx_t_7) {
            __Pyx_GIVEREF(__pyx_t_7); PyTuple_SET_ITEM(__pyx_t_8, 0, __pyx_t_7); __pyx_t_7 = NULL;
          }
          __Pyx_GIVEREF(__pyx_t_5);
          PyTuple_SET_ITEM(__pyx_t_8, 0+__pyx_t_9, __pyx_t_5);
          __Pyx_INCREF(__pyx_cur_scope->__pyx_v_loop);
          __Pyx_GIVEREF(__pyx_cur_scope->__pyx_v_loop);
          PyTuple_SET_ITEM(__pyx_t_8, 1+__pyx_t_9, __pyx_cur_scope->__pyx_v_loop);
          __pyx_t_5 = 0;
          __pyx_t_4 = __Pyx_PyObject_Call(__pyx_t_6, __pyx_t_8, NULL); if (unlikely(!__pyx_t_4)) __PYX_ERR(7, 123, __pyx_L4_error)
          __Pyx_GOTREF(__pyx_t_4);
          __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
        }
        __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
        __Pyx_XGOTREF(__pyx_cur_scope->__pyx_v_future);
        __Pyx_XDECREF_SET(__pyx_cur_scope->__pyx_v_future, __pyx_t_4);
        __Pyx_GIVEREF(__pyx_t_4);
        __pyx_t_4 = 0;

        /* "src/python/grpcio/grpc/_cython/_cygrpc/aio/common.pyx.pxi":127
 *                 loop
 *             )
 *             response = future.result()             # <<<<<<<<<<<<<<
 *             if response is EOF:
 *                 break
 */
        __pyx_t_6 = __Pyx_PyObject_GetAttrStr(__pyx_cur_scope->__pyx_v_future, __pyx_n_s_result); if (unlikely(!__pyx_t_6)) __PYX_ERR(7, 127, __pyx_L4_error)
        __Pyx_GOTREF(__pyx_t_6);
        __pyx_t_8 = NULL;
        if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_6))) {
          __pyx_t_8 = PyMethod_GET_SELF(__pyx_t_6);
          if (likely(__pyx_t_8)) {
            PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_6);
            __Pyx_INCREF(__pyx_t_8);
            __Pyx_INCREF(function);
            __Pyx_DECREF_SET(__pyx_t_6, function);
          }
        }
        __pyx_t_4 = (__pyx_t_8) ? __Pyx_PyObject_CallOneArg(__pyx_t_6, __pyx_t_8) : __Pyx_PyObject_CallNoArg(__pyx_t_6);
        __Pyx_XDECREF(__pyx_t_8); __pyx_t_8 = 0;
        if (unlikely(!__pyx_t_4)) __PYX_ERR(7, 127, __pyx_L4_error)
        __Pyx_GOTREF(__pyx_t_4);
        __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
        __Pyx_XGOTREF(__pyx_cur_scope->__pyx_v_response);
        __Pyx_XDECREF_SET(__pyx_cur_scope->__pyx_v_response, __pyx_t_4);
        __Pyx_GIVEREF(__pyx_t_4);
        __pyx_t_4 = 0;

        /* "src/python/grpcio/grpc/_cython/_cygrpc/aio/common.pyx.pxi":128
 *             )
 *             response = future.result()
 *             if response is EOF:             # <<<<<<<<<<<<<<
 *                 break
 *             else:
 */
        __Pyx_GetModuleGlobalName(__pyx_t_4, __pyx_n_s_EOF); if (unlikely(!__pyx_t_4)) __PYX_ERR(7, 128, __pyx_L4_error)
        __Pyx_GOTREF(__pyx_t_4);
        __pyx_t_10 = (__pyx_cur_scope->__pyx_v_response == __pyx_t_4);
        __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
        __pyx_t_11 = (__pyx_t_10 != 0);
        if (__pyx_t_11) {

          /* "src/python/grpcio/grpc/_cython/_cygrpc/aio/common.pyx.pxi":129
 *             response = future.result()
 *             if response is EOF:
 *                 break             # <<<<<<<<<<<<<<
 *             else:
 *                 yield response
 */
          goto __pyx_L11_break;

          /* "src/python/grpcio/grpc/_cython/_cygrpc/aio/common.pyx.pxi":128
 *             )
 *             response = future.result()
 *             if response is EOF:             # <<<<<<<<<<<<<<
 *                 break
 *             else:
 */
        }

        /* "src/python/grpcio/grpc/_cython/_cygrpc/aio/common.pyx.pxi":131
 *                 break
 *             else:
 *                 yield response             # <<<<<<<<<<<<<<
 *     except StopAsyncIteration:
 *         # If StopAsyncIteration is raised, end this generator.
 */
        /*else*/ {
          __Pyx_INCREF(__pyx_cur_scope->__pyx_v_response);
          __pyx_r = __pyx_cur_scope->__pyx_v_response;
          __Pyx_XGIVEREF(__pyx_t_1);
          __pyx_cur_scope->__pyx_t_0 = __pyx_t_1;
          __Pyx_XGIVEREF(__pyx_t_2);
          __pyx_cur_scope->__pyx_t_1 = __pyx_t_2;
          __Pyx_XGIVEREF(__pyx_t_3);
          __pyx_cur_scope->__pyx_t_2 = __pyx_t_3;
          __Pyx_XGIVEREF(__pyx_r);
          __Pyx_RefNannyFinishContext();
          __Pyx_Coroutine_ResetAndClearException(__pyx_generator);
          /* return from generator, yielding value */
          __pyx_generator->resume_label = 1;
          return __pyx_r;
          __pyx_L13_resume_from_yield:;
          __pyx_t_1 = __pyx_cur_scope->__pyx_t_0;
          __pyx_cur_scope->__pyx_t_0 = 0;
          __Pyx_XGOTREF(__pyx_t_1);
          __pyx_t_2 = __pyx_cur_scope->__pyx_t_1;
          __pyx_cur_scope->__pyx_t_1 = 0;
          __Pyx_XGOTREF(__pyx_t_2);
          __pyx_t_3 = __pyx_cur_scope->__pyx_t_2;
          __pyx_cur_scope->__pyx_t_2 = 0;
          __Pyx_XGOTREF(__pyx_t_3);
          if (unlikely(!__pyx_sent_value)) __PYX_ERR(7, 131, __pyx_L4_error)
        }
      }
      __pyx_L11_break:;

      /* "src/python/grpcio/grpc/_cython/_cygrpc/aio/common.pyx.pxi":121
 * def async_generator_to_generator(object agen, object loop):
 *     """Converts an async generator into generator."""
 *     try:             # <<<<<<<<<<<<<<
 *         while True:
 *             future = asyncio.run_coroutine_threadsafe(
 */
    }
    __Pyx_XDECREF(__pyx_t_1); __pyx_t_1 = 0;
    __Pyx_XDECREF(__pyx_t_2); __pyx_t_2 = 0;
    __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0;
    goto __pyx_L9_try_end;
    __pyx_L4_error:;
    __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0;
    __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0;
    __Pyx_XDECREF(__pyx_t_6); __pyx_t_6 = 0;
    __Pyx_XDECREF(__pyx_t_7); __pyx_t_7 = 0;
    __Pyx_XDECREF(__pyx_t_8); __pyx_t_8 = 0;

    /* "src/python/grpcio/grpc/_cython/_cygrpc/aio/common.pyx.pxi":132
 *             else:
 *                 yield response
 *     except StopAsyncIteration:             # <<<<<<<<<<<<<<
 *         # If StopAsyncIteration is raised, end this generator.
 *         pass
 */
    __pyx_t_9 = __Pyx_PyErr_ExceptionMatches(((PyObject *)(&((PyTypeObject*)__Pyx_PyExc_StopAsyncIteration)[0])));
    if (__pyx_t_9) {
      __Pyx_ErrRestore(0,0,0);
      goto __pyx_L5_exception_handled;
    }
    goto __pyx_L6_except_error;
    __pyx_L6_except_error:;

    /* "src/python/grpcio/grpc/_cython/_cygrpc/aio/common.pyx.pxi":121
 * def async_generator_to_generator(object agen, object loop):
 *     """Converts an async generator into generator."""
 *     try:             # <<<<<<<<<<<<<<
 *         while True:
 *             future = asyncio.run_coroutine_threadsafe(
 */
    __Pyx_XGIVEREF(__pyx_t_1);
    __Pyx_XGIVEREF(__pyx_t_2);
    __Pyx_XGIVEREF(__pyx_t_3);
    __Pyx_ExceptionReset(__pyx_t_1, __pyx_t_2, __pyx_t_3);
    goto __pyx_L1_error;
    __pyx_L5_exception_handled:;
    __Pyx_XGIVEREF(__pyx_t_1);
    __Pyx_XGIVEREF(__pyx_t_2);
    __Pyx_XGIVEREF(__pyx_t_3);
    __Pyx_ExceptionReset(__pyx_t_1, __pyx_t_2, __pyx_t_3);
    __pyx_L9_try_end:;
  }
  CYTHON_MAYBE_UNUSED_VAR(__pyx_cur_scope);

  /* "src/python/grpcio/grpc/_cython/_cygrpc/aio/common.pyx.pxi":119
 * 
 * 
 * def async_generator_to_generator(object agen, object loop):             # <<<<<<<<<<<<<<
 *     """Converts an async generator into generator."""
 *     try:
 */

  /* function exit code */
  PyErr_SetNone(PyExc_StopIteration);
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_4);
  __Pyx_XDECREF(__pyx_t_5);
  __Pyx_XDECREF(__pyx_t_6);
  __Pyx_XDECREF(__pyx_t_7);
  __Pyx_XDECREF(__pyx_t_8);
  __Pyx_AddTraceback("async_generator_to_generator", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_L0:;
  __Pyx_XDECREF(__pyx_r); __pyx_r = 0;
  #if !CYTHON_USE_EXC_INFO_STACK
  __Pyx_Coroutine_ResetAndClearException(__pyx_generator);
  #endif
  __pyx_generator->resume_label = -1;
  __Pyx_Coroutine_clear((PyObject*)__pyx_generator);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}
static PyObject *__pyx_gb_4grpc_7_cython_6cygrpc_113generator1(__pyx_CoroutineObject *__pyx_generator, CYTHON_UNUSED PyThreadState *__pyx_tstate, PyObject *__pyx_sent_value); /* proto */

/* "src/python/grpcio/grpc/_cython/_cygrpc/aio/common.pyx.pxi":137
 * 
 * 
 * async def generator_to_async_generator(object gen, object loop, object thread_pool):             # <<<<<<<<<<<<<<
 *     """Converts a generator into async generator.
 * 
 */

/* Python wrapper */
static PyObject *__pyx_pw_4grpc_7_cython_6cygrpc_112generator_to_async_generator(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
static char __pyx_doc_4grpc_7_cython_6cygrpc_111generator_to_async_generator[] = "Converts a generator into async generator.\n\n    The generator might block, so we need to delegate the iteration to thread\n    pool. Also, we can't simply delegate __next__ to the thread pool, otherwise\n    we will see following error:\n\n        TypeError: StopIteration interacts badly with generators and cannot be\n            raised into a Future\n    ";
static PyMethodDef __pyx_mdef_4grpc_7_cython_6cygrpc_112generator_to_async_generator = {"generator_to_async_generator", (PyCFunction)(void*)(PyCFunctionWithKeywords)__pyx_pw_4grpc_7_cython_6cygrpc_112generator_to_async_generator, METH_VARARGS|METH_KEYWORDS, __pyx_doc_4grpc_7_cython_6cygrpc_111generator_to_async_generator};
static PyObject *__pyx_pw_4grpc_7_cython_6cygrpc_112generator_to_async_generator(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
  PyObject *__pyx_v_gen = 0;
  PyObject *__pyx_v_loop = 0;
  PyObject *__pyx_v_thread_pool = 0;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("generator_to_async_generator (wrapper)", 0);
  {
    static PyObject **__pyx_pyargnames[] = {&__pyx_n_s_gen,&__pyx_n_s_loop,&__pyx_n_s_thread_pool,0};
    PyObject* values[3] = {0,0,0};
    if (unlikely(__pyx_kwds)) {
      Py_ssize_t kw_args;
      const Py_ssize_t pos_args = PyTuple_GET_SIZE(__pyx_args);
      switch (pos_args) {
        case  3: values[2] = PyTuple_GET_ITEM(__pyx_args, 2);
        CYTHON_FALLTHROUGH;
        case  2: values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
        CYTHON_FALLTHROUGH;
        case  1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
        CYTHON_FALLTHROUGH;
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      kw_args = PyDict_Size(__pyx_kwds);
      switch (pos_args) {
        case  0:
        if (likely((values[0] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_gen)) != 0)) kw_args--;
        else goto __pyx_L5_argtuple_error;
        CYTHON_FALLTHROUGH;
        case  1:
        if (likely((values[1] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_loop)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("generator_to_async_generator", 1, 3, 3, 1); __PYX_ERR(7, 137, __pyx_L3_error)
        }
        CYTHON_FALLTHROUGH;
        case  2:
        if (likely((values[2] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_thread_pool)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("generator_to_async_generator", 1, 3, 3, 2); __PYX_ERR(7, 137, __pyx_L3_error)
        }
      }
      if (unlikely(kw_args > 0)) {
        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "generator_to_async_generator") < 0)) __PYX_ERR(7, 137, __pyx_L3_error)
      }
    } else if (PyTuple_GET_SIZE(__pyx_args) != 3) {
      goto __pyx_L5_argtuple_error;
    } else {
      values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
      values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
      values[2] = PyTuple_GET_ITEM(__pyx_args, 2);
    }
    __pyx_v_gen = values[0];
    __pyx_v_loop = values[1];
    __pyx_v_thread_pool = values[2];
  }
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("generator_to_async_generator", 1, 3, 3, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(7, 137, __pyx_L3_error)
  __pyx_L3_error:;
  __Pyx_AddTraceback("grpc._cython.cygrpc.generator_to_async_generator", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  __pyx_r = __pyx_pf_4grpc_7_cython_6cygrpc_111generator_to_async_generator(__pyx_self, __pyx_v_gen, __pyx_v_loop, __pyx_v_thread_pool);

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_4grpc_7_cython_6cygrpc_111generator_to_async_generator(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__pyx_v_gen, PyObject *__pyx_v_loop, PyObject *__pyx_v_thread_pool) {
  struct __pyx_obj_4grpc_7_cython_6cygrpc___pyx_scope_struct_13_generator_to_async_generator *__pyx_cur_scope;
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("generator_to_async_generator", 0);
  __pyx_cur_scope = (struct __pyx_obj_4grpc_7_cython_6cygrpc___pyx_scope_struct_13_generator_to_async_generator *)__pyx_tp_new_4grpc_7_cython_6cygrpc___pyx_scope_struct_13_generator_to_async_generator(__pyx_ptype_4grpc_7_cython_6cygrpc___pyx_scope_struct_13_generator_to_async_generator, __pyx_empty_tuple, NULL);
  if (unlikely(!__pyx_cur_scope)) {
    __pyx_cur_scope = ((struct __pyx_obj_4grpc_7_cython_6cygrpc___pyx_scope_struct_13_generator_to_async_generator *)Py_None);
    __Pyx_INCREF(Py_None);
    __PYX_ERR(7, 137, __pyx_L1_error)
  } else {
    __Pyx_GOTREF(__pyx_cur_scope);
  }
  __pyx_cur_scope->__pyx_v_gen = __pyx_v_gen;
  __Pyx_INCREF(__pyx_cur_scope->__pyx_v_gen);
  __Pyx_GIVEREF(__pyx_cur_scope->__pyx_v_gen);
  __pyx_cur_scope->__pyx_v_loop = __pyx_v_loop;
  __Pyx_INCREF(__pyx_cur_scope->__pyx_v_loop);
  __Pyx_GIVEREF(__pyx_cur_scope->__pyx_v_loop);
  __pyx_cur_scope->__pyx_v_thread_pool = __pyx_v_thread_pool;
  __Pyx_INCREF(__pyx_cur_scope->__pyx_v_thread_pool);
  __Pyx_GIVEREF(__pyx_cur_scope->__pyx_v_thread_pool);
  {
    __pyx_CoroutineObject *gen = __Pyx_AsyncGen_New((__pyx_coroutine_body_t) __pyx_gb_4grpc_7_cython_6cygrpc_113generator1, __pyx_codeobj__139, (PyObject *) __pyx_cur_scope, __pyx_n_s_generator_to_async_generator, __pyx_n_s_generator_to_async_generator, __pyx_n_s_grpc__cython_cygrpc); if (unlikely(!gen)) __PYX_ERR(7, 137, __pyx_L1_error)
    __Pyx_DECREF(__pyx_cur_scope);
    __Pyx_RefNannyFinishContext();
    return (PyObject *) gen;
  }

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_AddTraceback("grpc._cython.cygrpc.generator_to_async_generator", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __Pyx_DECREF(((PyObject *)__pyx_cur_scope));
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "src/python/grpcio/grpc/_cython/_cygrpc/aio/common.pyx.pxi":149
 *     queue = asyncio.Queue(maxsize=1, loop=loop)
 * 
 *     def yield_to_queue():             # <<<<<<<<<<<<<<
 *         try:
 *             for item in gen:
 */

/* Python wrapper */
static PyObject *__pyx_pw_4grpc_7_cython_6cygrpc_28generator_to_async_generator_1yield_to_queue(PyObject *__pyx_self, CYTHON_UNUSED PyObject *unused); /*proto*/
static PyMethodDef __pyx_mdef_4grpc_7_cython_6cygrpc_28generator_to_async_generator_1yield_to_queue = {"yield_to_queue", (PyCFunction)__pyx_pw_4grpc_7_cython_6cygrpc_28generator_to_async_generator_1yield_to_queue, METH_NOARGS, 0};
static PyObject *__pyx_pw_4grpc_7_cython_6cygrpc_28generator_to_async_generator_1yield_to_queue(PyObject *__pyx_self, CYTHON_UNUSED PyObject *unused) {
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("yield_to_queue (wrapper)", 0);
  __pyx_r = __pyx_pf_4grpc_7_cython_6cygrpc_28generator_to_async_generator_yield_to_queue(__pyx_self);

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_4grpc_7_cython_6cygrpc_28generator_to_async_generator_yield_to_queue(PyObject *__pyx_self) {
  struct __pyx_obj_4grpc_7_cython_6cygrpc___pyx_scope_struct_13_generator_to_async_generator *__pyx_cur_scope;
  struct __pyx_obj_4grpc_7_cython_6cygrpc___pyx_scope_struct_13_generator_to_async_generator *__pyx_outer_scope;
  PyObject *__pyx_v_item = NULL;
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  Py_ssize_t __pyx_t_2;
  PyObject *(*__pyx_t_3)(PyObject *);
  PyObject *__pyx_t_4 = NULL;
  PyObject *__pyx_t_5 = NULL;
  PyObject *__pyx_t_6 = NULL;
  PyObject *__pyx_t_7 = NULL;
  PyObject *__pyx_t_8 = NULL;
  PyObject *__pyx_t_9 = NULL;
  int __pyx_t_10;
  int __pyx_t_11;
  char const *__pyx_t_12;
  PyObject *__pyx_t_13 = NULL;
  PyObject *__pyx_t_14 = NULL;
  PyObject *__pyx_t_15 = NULL;
  PyObject *__pyx_t_16 = NULL;
  PyObject *__pyx_t_17 = NULL;
  PyObject *__pyx_t_18 = NULL;
  int __pyx_t_19;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("yield_to_queue", 0);
  __pyx_outer_scope = (struct __pyx_obj_4grpc_7_cython_6cygrpc___pyx_scope_struct_13_generator_to_async_generator *) __Pyx_CyFunction_GetClosure(__pyx_self);
  __pyx_cur_scope = __pyx_outer_scope;

  /* "src/python/grpcio/grpc/_cython/_cygrpc/aio/common.pyx.pxi":150
 * 
 *     def yield_to_queue():
 *         try:             # <<<<<<<<<<<<<<
 *             for item in gen:
 *                 asyncio.run_coroutine_threadsafe(queue.put(item), loop).result()
 */
  /*try:*/ {

    /* "src/python/grpcio/grpc/_cython/_cygrpc/aio/common.pyx.pxi":151
 *     def yield_to_queue():
 *         try:
 *             for item in gen:             # <<<<<<<<<<<<<<
 *                 asyncio.run_coroutine_threadsafe(queue.put(item), loop).result()
 *         finally:
 */
    if (unlikely(!__pyx_cur_scope->__pyx_v_gen)) { __Pyx_RaiseClosureNameError("gen"); __PYX_ERR(7, 151, __pyx_L4_error) }
    if (likely(PyList_CheckExact(__pyx_cur_scope->__pyx_v_gen)) || PyTuple_CheckExact(__pyx_cur_scope->__pyx_v_gen)) {
      __pyx_t_1 = __pyx_cur_scope->__pyx_v_gen; __Pyx_INCREF(__pyx_t_1); __pyx_t_2 = 0;
      __pyx_t_3 = NULL;
    } else {
      __pyx_t_2 = -1; __pyx_t_1 = PyObject_GetIter(__pyx_cur_scope->__pyx_v_gen); if (unlikely(!__pyx_t_1)) __PYX_ERR(7, 151, __pyx_L4_error)
      __Pyx_GOTREF(__pyx_t_1);
      __pyx_t_3 = Py_TYPE(__pyx_t_1)->tp_iternext; if (unlikely(!__pyx_t_3)) __PYX_ERR(7, 151, __pyx_L4_error)
    }
    for (;;) {
      if (likely(!__pyx_t_3)) {
        if (likely(PyList_CheckExact(__pyx_t_1))) {
          if (__pyx_t_2 >= PyList_GET_SIZE(__pyx_t_1)) break;
          #if CYTHON_ASSUME_SAFE_MACROS && !CYTHON_AVOID_BORROWED_REFS
          __pyx_t_4 = PyList_GET_ITEM(__pyx_t_1, __pyx_t_2); __Pyx_INCREF(__pyx_t_4); __pyx_t_2++; if (unlikely(0 < 0)) __PYX_ERR(7, 151, __pyx_L4_error)
          #else
          __pyx_t_4 = PySequence_ITEM(__pyx_t_1, __pyx_t_2); __pyx_t_2++; if (unlikely(!__pyx_t_4)) __PYX_ERR(7, 151, __pyx_L4_error)
          __Pyx_GOTREF(__pyx_t_4);
          #endif
        } else {
          if (__pyx_t_2 >= PyTuple_GET_SIZE(__pyx_t_1)) break;
          #if CYTHON_ASSUME_SAFE_MACROS && !CYTHON_AVOID_BORROWED_REFS
          __pyx_t_4 = PyTuple_GET_ITEM(__pyx_t_1, __pyx_t_2); __Pyx_INCREF(__pyx_t_4); __pyx_t_2++; if (unlikely(0 < 0)) __PYX_ERR(7, 151, __pyx_L4_error)
          #else
          __pyx_t_4 = PySequence_ITEM(__pyx_t_1, __pyx_t_2); __pyx_t_2++; if (unlikely(!__pyx_t_4)) __PYX_ERR(7, 151, __pyx_L4_error)
          __Pyx_GOTREF(__pyx_t_4);
          #endif
        }
      } else {
        __pyx_t_4 = __pyx_t_3(__pyx_t_1);
        if (unlikely(!__pyx_t_4)) {
          PyObject* exc_type = PyErr_Occurred();
          if (exc_type) {
            if (likely(__Pyx_PyErr_GivenExceptionMatches(exc_type, PyExc_StopIteration))) PyErr_Clear();
            else __PYX_ERR(7, 151, __pyx_L4_error)
          }
          break;
        }
        __Pyx_GOTREF(__pyx_t_4);
      }
      __Pyx_XDECREF_SET(__pyx_v_item, __pyx_t_4);
      __pyx_t_4 = 0;

      /* "src/python/grpcio/grpc/_cython/_cygrpc/aio/common.pyx.pxi":152
 *         try:
 *             for item in gen:
 *                 asyncio.run_coroutine_threadsafe(queue.put(item), loop).result()             # <<<<<<<<<<<<<<
 *         finally:
 *             asyncio.run_coroutine_threadsafe(queue.put(EOF), loop).result()
 */
      __Pyx_GetModuleGlobalName(__pyx_t_6, __pyx_n_s_asyncio); if (unlikely(!__pyx_t_6)) __PYX_ERR(7, 152, __pyx_L4_error)
      __Pyx_GOTREF(__pyx_t_6);
      __pyx_t_7 = __Pyx_PyObject_GetAttrStr(__pyx_t_6, __pyx_n_s_run_coroutine_threadsafe); if (unlikely(!__pyx_t_7)) __PYX_ERR(7, 152, __pyx_L4_error)
      __Pyx_GOTREF(__pyx_t_7);
      __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
      if (unlikely(!__pyx_cur_scope->__pyx_v_queue)) { __Pyx_RaiseClosureNameError("queue"); __PYX_ERR(7, 152, __pyx_L4_error) }
      __pyx_t_8 = __Pyx_PyObject_GetAttrStr(__pyx_cur_scope->__pyx_v_queue, __pyx_n_s_put); if (unlikely(!__pyx_t_8)) __PYX_ERR(7, 152, __pyx_L4_error)
      __Pyx_GOTREF(__pyx_t_8);
      __pyx_t_9 = NULL;
      if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_8))) {
        __pyx_t_9 = PyMethod_GET_SELF(__pyx_t_8);
        if (likely(__pyx_t_9)) {
          PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_8);
          __Pyx_INCREF(__pyx_t_9);
          __Pyx_INCREF(function);
          __Pyx_DECREF_SET(__pyx_t_8, function);
        }
      }
      __pyx_t_6 = (__pyx_t_9) ? __Pyx_PyObject_Call2Args(__pyx_t_8, __pyx_t_9, __pyx_v_item) : __Pyx_PyObject_CallOneArg(__pyx_t_8, __pyx_v_item);
      __Pyx_XDECREF(__pyx_t_9); __pyx_t_9 = 0;
      if (unlikely(!__pyx_t_6)) __PYX_ERR(7, 152, __pyx_L4_error)
      __Pyx_GOTREF(__pyx_t_6);
      __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
      if (unlikely(!__pyx_cur_scope->__pyx_v_loop)) { __Pyx_RaiseClosureNameError("loop"); __PYX_ERR(7, 152, __pyx_L4_error) }
      __pyx_t_8 = NULL;
      __pyx_t_10 = 0;
      if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_7))) {
        __pyx_t_8 = PyMethod_GET_SELF(__pyx_t_7);
        if (likely(__pyx_t_8)) {
          PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_7);
          __Pyx_INCREF(__pyx_t_8);
          __Pyx_INCREF(function);
          __Pyx_DECREF_SET(__pyx_t_7, function);
          __pyx_t_10 = 1;
        }
      }
      #if CYTHON_FAST_PYCALL
      if (PyFunction_Check(__pyx_t_7)) {
        PyObject *__pyx_temp[3] = {__pyx_t_8, __pyx_t_6, __pyx_cur_scope->__pyx_v_loop};
        __pyx_t_5 = __Pyx_PyFunction_FastCall(__pyx_t_7, __pyx_temp+1-__pyx_t_10, 2+__pyx_t_10); if (unlikely(!__pyx_t_5)) __PYX_ERR(7, 152, __pyx_L4_error)
        __Pyx_XDECREF(__pyx_t_8); __pyx_t_8 = 0;
        __Pyx_GOTREF(__pyx_t_5);
        __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
      } else
      #endif
      #if CYTHON_FAST_PYCCALL
      if (__Pyx_PyFastCFunction_Check(__pyx_t_7)) {
        PyObject *__pyx_temp[3] = {__pyx_t_8, __pyx_t_6, __pyx_cur_scope->__pyx_v_loop};
        __pyx_t_5 = __Pyx_PyCFunction_FastCall(__pyx_t_7, __pyx_temp+1-__pyx_t_10, 2+__pyx_t_10); if (unlikely(!__pyx_t_5)) __PYX_ERR(7, 152, __pyx_L4_error)
        __Pyx_XDECREF(__pyx_t_8); __pyx_t_8 = 0;
        __Pyx_GOTREF(__pyx_t_5);
        __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
      } else
      #endif
      {
        __pyx_t_9 = PyTuple_New(2+__pyx_t_10); if (unlikely(!__pyx_t_9)) __PYX_ERR(7, 152, __pyx_L4_error)
        __Pyx_GOTREF(__pyx_t_9);
        if (__pyx_t_8) {
          __Pyx_GIVEREF(__pyx_t_8); PyTuple_SET_ITEM(__pyx_t_9, 0, __pyx_t_8); __pyx_t_8 = NULL;
        }
        __Pyx_GIVEREF(__pyx_t_6);
        PyTuple_SET_ITEM(__pyx_t_9, 0+__pyx_t_10, __pyx_t_6);
        __Pyx_INCREF(__pyx_cur_scope->__pyx_v_loop);
        __Pyx_GIVEREF(__pyx_cur_scope->__pyx_v_loop);
        PyTuple_SET_ITEM(__pyx_t_9, 1+__pyx_t_10, __pyx_cur_scope->__pyx_v_loop);
        __pyx_t_6 = 0;
        __pyx_t_5 = __Pyx_PyObject_Call(__pyx_t_7, __pyx_t_9, NULL); if (unlikely(!__pyx_t_5)) __PYX_ERR(7, 152, __pyx_L4_error)
        __Pyx_GOTREF(__pyx_t_5);
        __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0;
      }
      __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
      __pyx_t_7 = __Pyx_PyObject_GetAttrStr(__pyx_t_5, __pyx_n_s_result); if (unlikely(!__pyx_t_7)) __PYX_ERR(7, 152, __pyx_L4_error)
      __Pyx_GOTREF(__pyx_t_7);
      __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
      __pyx_t_5 = NULL;
      if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_7))) {
        __pyx_t_5 = PyMethod_GET_SELF(__pyx_t_7);
        if (likely(__pyx_t_5)) {
          PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_7);
          __Pyx_INCREF(__pyx_t_5);
          __Pyx_INCREF(function);
          __Pyx_DECREF_SET(__pyx_t_7, function);
        }
      }
      __pyx_t_4 = (__pyx_t_5) ? __Pyx_PyObject_CallOneArg(__pyx_t_7, __pyx_t_5) : __Pyx_PyObject_CallNoArg(__pyx_t_7);
      __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0;
      if (unlikely(!__pyx_t_4)) __PYX_ERR(7, 152, __pyx_L4_error)
      __Pyx_GOTREF(__pyx_t_4);
      __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
      __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;

      /* "src/python/grpcio/grpc/_cython/_cygrpc/aio/common.pyx.pxi":151
 *     def yield_to_queue():
 *         try:
 *             for item in gen:             # <<<<<<<<<<<<<<
 *                 asyncio.run_coroutine_threadsafe(queue.put(item), loop).result()
 *         finally:
 */
    }
    __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  }

  /* "src/python/grpcio/grpc/_cython/_cygrpc/aio/common.pyx.pxi":154
 *                 asyncio.run_coroutine_threadsafe(queue.put(item), loop).result()
 *         finally:
 *             asyncio.run_coroutine_threadsafe(queue.put(EOF), loop).result()             # <<<<<<<<<<<<<<
 * 
 *     future = loop.run_in_executor(
 */
  /*finally:*/ {
    /*normal exit:*/{
      __Pyx_GetModuleGlobalName(__pyx_t_7, __pyx_n_s_asyncio); if (unlikely(!__pyx_t_7)) __PYX_ERR(7, 154, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_7);
      __pyx_t_5 = __Pyx_PyObject_GetAttrStr(__pyx_t_7, __pyx_n_s_run_coroutine_threadsafe); if (unlikely(!__pyx_t_5)) __PYX_ERR(7, 154, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_5);
      __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
      if (unlikely(!__pyx_cur_scope->__pyx_v_queue)) { __Pyx_RaiseClosureNameError("queue"); __PYX_ERR(7, 154, __pyx_L1_error) }
      __pyx_t_9 = __Pyx_PyObject_GetAttrStr(__pyx_cur_scope->__pyx_v_queue, __pyx_n_s_put); if (unlikely(!__pyx_t_9)) __PYX_ERR(7, 154, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_9);
      __Pyx_GetModuleGlobalName(__pyx_t_6, __pyx_n_s_EOF); if (unlikely(!__pyx_t_6)) __PYX_ERR(7, 154, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_6);
      __pyx_t_8 = NULL;
      if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_9))) {
        __pyx_t_8 = PyMethod_GET_SELF(__pyx_t_9);
        if (likely(__pyx_t_8)) {
          PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_9);
          __Pyx_INCREF(__pyx_t_8);
          __Pyx_INCREF(function);
          __Pyx_DECREF_SET(__pyx_t_9, function);
        }
      }
      __pyx_t_7 = (__pyx_t_8) ? __Pyx_PyObject_Call2Args(__pyx_t_9, __pyx_t_8, __pyx_t_6) : __Pyx_PyObject_CallOneArg(__pyx_t_9, __pyx_t_6);
      __Pyx_XDECREF(__pyx_t_8); __pyx_t_8 = 0;
      __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
      if (unlikely(!__pyx_t_7)) __PYX_ERR(7, 154, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_7);
      __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0;
      if (unlikely(!__pyx_cur_scope->__pyx_v_loop)) { __Pyx_RaiseClosureNameError("loop"); __PYX_ERR(7, 154, __pyx_L1_error) }
      __pyx_t_9 = NULL;
      __pyx_t_10 = 0;
      if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_5))) {
        __pyx_t_9 = PyMethod_GET_SELF(__pyx_t_5);
        if (likely(__pyx_t_9)) {
          PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_5);
          __Pyx_INCREF(__pyx_t_9);
          __Pyx_INCREF(function);
          __Pyx_DECREF_SET(__pyx_t_5, function);
          __pyx_t_10 = 1;
        }
      }
      #if CYTHON_FAST_PYCALL
      if (PyFunction_Check(__pyx_t_5)) {
        PyObject *__pyx_temp[3] = {__pyx_t_9, __pyx_t_7, __pyx_cur_scope->__pyx_v_loop};
        __pyx_t_4 = __Pyx_PyFunction_FastCall(__pyx_t_5, __pyx_temp+1-__pyx_t_10, 2+__pyx_t_10); if (unlikely(!__pyx_t_4)) __PYX_ERR(7, 154, __pyx_L1_error)
        __Pyx_XDECREF(__pyx_t_9); __pyx_t_9 = 0;
        __Pyx_GOTREF(__pyx_t_4);
        __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
      } else
      #endif
      #if CYTHON_FAST_PYCCALL
      if (__Pyx_PyFastCFunction_Check(__pyx_t_5)) {
        PyObject *__pyx_temp[3] = {__pyx_t_9, __pyx_t_7, __pyx_cur_scope->__pyx_v_loop};
        __pyx_t_4 = __Pyx_PyCFunction_FastCall(__pyx_t_5, __pyx_temp+1-__pyx_t_10, 2+__pyx_t_10); if (unlikely(!__pyx_t_4)) __PYX_ERR(7, 154, __pyx_L1_error)
        __Pyx_XDECREF(__pyx_t_9); __pyx_t_9 = 0;
        __Pyx_GOTREF(__pyx_t_4);
        __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
      } else
      #endif
      {
        __pyx_t_6 = PyTuple_New(2+__pyx_t_10); if (unlikely(!__pyx_t_6)) __PYX_ERR(7, 154, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_6);
        if (__pyx_t_9) {
          __Pyx_GIVEREF(__pyx_t_9); PyTuple_SET_ITEM(__pyx_t_6, 0, __pyx_t_9); __pyx_t_9 = NULL;
        }
        __Pyx_GIVEREF(__pyx_t_7);
        PyTuple_SET_ITEM(__pyx_t_6, 0+__pyx_t_10, __pyx_t_7);
        __Pyx_INCREF(__pyx_cur_scope->__pyx_v_loop);
        __Pyx_GIVEREF(__pyx_cur_scope->__pyx_v_loop);
        PyTuple_SET_ITEM(__pyx_t_6, 1+__pyx_t_10, __pyx_cur_scope->__pyx_v_loop);
        __pyx_t_7 = 0;
        __pyx_t_4 = __Pyx_PyObject_Call(__pyx_t_5, __pyx_t_6, NULL); if (unlikely(!__pyx_t_4)) __PYX_ERR(7, 154, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_4);
        __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
      }
      __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
      __pyx_t_5 = __Pyx_PyObject_GetAttrStr(__pyx_t_4, __pyx_n_s_result); if (unlikely(!__pyx_t_5)) __PYX_ERR(7, 154, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_5);
      __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
      __pyx_t_4 = NULL;
      if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_5))) {
        __pyx_t_4 = PyMethod_GET_SELF(__pyx_t_5);
        if (likely(__pyx_t_4)) {
          PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_5);
          __Pyx_INCREF(__pyx_t_4);
          __Pyx_INCREF(function);
          __Pyx_DECREF_SET(__pyx_t_5, function);
        }
      }
      __pyx_t_1 = (__pyx_t_4) ? __Pyx_PyObject_CallOneArg(__pyx_t_5, __pyx_t_4) : __Pyx_PyObject_CallNoArg(__pyx_t_5);
      __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0;
      if (unlikely(!__pyx_t_1)) __PYX_ERR(7, 154, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_1);
      __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
      __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
      goto __pyx_L5;
    }
    __pyx_L4_error:;
    /*exception exit:*/{
      __Pyx_PyThreadState_declare
      __Pyx_PyThreadState_assign
      __pyx_t_13 = 0; __pyx_t_14 = 0; __pyx_t_15 = 0; __pyx_t_16 = 0; __pyx_t_17 = 0; __pyx_t_18 = 0;
      __Pyx_XDECREF(__pyx_t_1); __pyx_t_1 = 0;
      __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0;
      __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0;
      __Pyx_XDECREF(__pyx_t_6); __pyx_t_6 = 0;
      __Pyx_XDECREF(__pyx_t_7); __pyx_t_7 = 0;
      __Pyx_XDECREF(__pyx_t_8); __pyx_t_8 = 0;
      __Pyx_XDECREF(__pyx_t_9); __pyx_t_9 = 0;
      if (PY_MAJOR_VERSION >= 3) __Pyx_ExceptionSwap(&__pyx_t_16, &__pyx_t_17, &__pyx_t_18);
      if ((PY_MAJOR_VERSION < 3) || unlikely(__Pyx_GetException(&__pyx_t_13, &__pyx_t_14, &__pyx_t_15) < 0)) __Pyx_ErrFetch(&__pyx_t_13, &__pyx_t_14, &__pyx_t_15);
      __Pyx_XGOTREF(__pyx_t_13);
      __Pyx_XGOTREF(__pyx_t_14);
      __Pyx_XGOTREF(__pyx_t_15);
      __Pyx_XGOTREF(__pyx_t_16);
      __Pyx_XGOTREF(__pyx_t_17);
      __Pyx_XGOTREF(__pyx_t_18);
      __pyx_t_10 = __pyx_lineno; __pyx_t_11 = __pyx_clineno; __pyx_t_12 = __pyx_filename;
      {
        __Pyx_GetModuleGlobalName(__pyx_t_4, __pyx_n_s_asyncio); if (unlikely(!__pyx_t_4)) __PYX_ERR(7, 154, __pyx_L9_error)
        __Pyx_GOTREF(__pyx_t_4);
        __pyx_t_6 = __Pyx_PyObject_GetAttrStr(__pyx_t_4, __pyx_n_s_run_coroutine_threadsafe); if (unlikely(!__pyx_t_6)) __PYX_ERR(7, 154, __pyx_L9_error)
        __Pyx_GOTREF(__pyx_t_6);
        __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
        if (unlikely(!__pyx_cur_scope->__pyx_v_queue)) { __Pyx_RaiseClosureNameError("queue"); __PYX_ERR(7, 154, __pyx_L9_error) }
        __pyx_t_7 = __Pyx_PyObject_GetAttrStr(__pyx_cur_scope->__pyx_v_queue, __pyx_n_s_put); if (unlikely(!__pyx_t_7)) __PYX_ERR(7, 154, __pyx_L9_error)
        __Pyx_GOTREF(__pyx_t_7);
        __Pyx_GetModuleGlobalName(__pyx_t_9, __pyx_n_s_EOF); if (unlikely(!__pyx_t_9)) __PYX_ERR(7, 154, __pyx_L9_error)
        __Pyx_GOTREF(__pyx_t_9);
        __pyx_t_8 = NULL;
        if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_7))) {
          __pyx_t_8 = PyMethod_GET_SELF(__pyx_t_7);
          if (likely(__pyx_t_8)) {
            PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_7);
            __Pyx_INCREF(__pyx_t_8);
            __Pyx_INCREF(function);
            __Pyx_DECREF_SET(__pyx_t_7, function);
          }
        }
        __pyx_t_4 = (__pyx_t_8) ? __Pyx_PyObject_Call2Args(__pyx_t_7, __pyx_t_8, __pyx_t_9) : __Pyx_PyObject_CallOneArg(__pyx_t_7, __pyx_t_9);
        __Pyx_XDECREF(__pyx_t_8); __pyx_t_8 = 0;
        __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0;
        if (unlikely(!__pyx_t_4)) __PYX_ERR(7, 154, __pyx_L9_error)
        __Pyx_GOTREF(__pyx_t_4);
        __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
        if (unlikely(!__pyx_cur_scope->__pyx_v_loop)) { __Pyx_RaiseClosureNameError("loop"); __PYX_ERR(7, 154, __pyx_L9_error) }
        __pyx_t_7 = NULL;
        __pyx_t_19 = 0;
        if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_6))) {
          __pyx_t_7 = PyMethod_GET_SELF(__pyx_t_6);
          if (likely(__pyx_t_7)) {
            PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_6);
            __Pyx_INCREF(__pyx_t_7);
            __Pyx_INCREF(function);
            __Pyx_DECREF_SET(__pyx_t_6, function);
            __pyx_t_19 = 1;
          }
        }
        #if CYTHON_FAST_PYCALL
        if (PyFunction_Check(__pyx_t_6)) {
          PyObject *__pyx_temp[3] = {__pyx_t_7, __pyx_t_4, __pyx_cur_scope->__pyx_v_loop};
          __pyx_t_5 = __Pyx_PyFunction_FastCall(__pyx_t_6, __pyx_temp+1-__pyx_t_19, 2+__pyx_t_19); if (unlikely(!__pyx_t_5)) __PYX_ERR(7, 154, __pyx_L9_error)
          __Pyx_XDECREF(__pyx_t_7); __pyx_t_7 = 0;
          __Pyx_GOTREF(__pyx_t_5);
          __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
        } else
        #endif
        #if CYTHON_FAST_PYCCALL
        if (__Pyx_PyFastCFunction_Check(__pyx_t_6)) {
          PyObject *__pyx_temp[3] = {__pyx_t_7, __pyx_t_4, __pyx_cur_scope->__pyx_v_loop};
          __pyx_t_5 = __Pyx_PyCFunction_FastCall(__pyx_t_6, __pyx_temp+1-__pyx_t_19, 2+__pyx_t_19); if (unlikely(!__pyx_t_5)) __PYX_ERR(7, 154, __pyx_L9_error)
          __Pyx_XDECREF(__pyx_t_7); __pyx_t_7 = 0;
          __Pyx_GOTREF(__pyx_t_5);
          __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
        } else
        #endif
        {
          __pyx_t_9 = PyTuple_New(2+__pyx_t_19); if (unlikely(!__pyx_t_9)) __PYX_ERR(7, 154, __pyx_L9_error)
          __Pyx_GOTREF(__pyx_t_9);
          if (__pyx_t_7) {
            __Pyx_GIVEREF(__pyx_t_7); PyTuple_SET_ITEM(__pyx_t_9, 0, __pyx_t_7); __pyx_t_7 = NULL;
          }
          __Pyx_GIVEREF(__pyx_t_4);
          PyTuple_SET_ITEM(__pyx_t_9, 0+__pyx_t_19, __pyx_t_4);
          __Pyx_INCREF(__pyx_cur_scope->__pyx_v_loop);
          __Pyx_GIVEREF(__pyx_cur_scope->__pyx_v_loop);
          PyTuple_SET_ITEM(__pyx_t_9, 1+__pyx_t_19, __pyx_cur_scope->__pyx_v_loop);
          __pyx_t_4 = 0;
          __pyx_t_5 = __Pyx_PyObject_Call(__pyx_t_6, __pyx_t_9, NULL); if (unlikely(!__pyx_t_5)) __PYX_ERR(7, 154, __pyx_L9_error)
          __Pyx_GOTREF(__pyx_t_5);
          __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0;
        }
        __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
        __pyx_t_6 = __Pyx_PyObject_GetAttrStr(__pyx_t_5, __pyx_n_s_result); if (unlikely(!__pyx_t_6)) __PYX_ERR(7, 154, __pyx_L9_error)
        __Pyx_GOTREF(__pyx_t_6);
        __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
        __pyx_t_5 = NULL;
        if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_6))) {
          __pyx_t_5 = PyMethod_GET_SELF(__pyx_t_6);
          if (likely(__pyx_t_5)) {
            PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_6);
            __Pyx_INCREF(__pyx_t_5);
            __Pyx_INCREF(function);
            __Pyx_DECREF_SET(__pyx_t_6, function);
          }
        }
        __pyx_t_1 = (__pyx_t_5) ? __Pyx_PyObject_CallOneArg(__pyx_t_6, __pyx_t_5) : __Pyx_PyObject_CallNoArg(__pyx_t_6);
        __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0;
        if (unlikely(!__pyx_t_1)) __PYX_ERR(7, 154, __pyx_L9_error)
        __Pyx_GOTREF(__pyx_t_1);
        __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
        __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
      }
      if (PY_MAJOR_VERSION >= 3) {
        __Pyx_XGIVEREF(__pyx_t_16);
        __Pyx_XGIVEREF(__pyx_t_17);
        __Pyx_XGIVEREF(__pyx_t_18);
        __Pyx_ExceptionReset(__pyx_t_16, __pyx_t_17, __pyx_t_18);
      }
      __Pyx_XGIVEREF(__pyx_t_13);
      __Pyx_XGIVEREF(__pyx_t_14);
      __Pyx_XGIVEREF(__pyx_t_15);
      __Pyx_ErrRestore(__pyx_t_13, __pyx_t_14, __pyx_t_15);
      __pyx_t_13 = 0; __pyx_t_14 = 0; __pyx_t_15 = 0; __pyx_t_16 = 0; __pyx_t_17 = 0; __pyx_t_18 = 0;
      __pyx_lineno = __pyx_t_10; __pyx_clineno = __pyx_t_11; __pyx_filename = __pyx_t_12;
      goto __pyx_L1_error;
      __pyx_L9_error:;
      if (PY_MAJOR_VERSION >= 3) {
        __Pyx_XGIVEREF(__pyx_t_16);
        __Pyx_XGIVEREF(__pyx_t_17);
        __Pyx_XGIVEREF(__pyx_t_18);
        __Pyx_ExceptionReset(__pyx_t_16, __pyx_t_17, __pyx_t_18);
      }
      __Pyx_XDECREF(__pyx_t_13); __pyx_t_13 = 0;
      __Pyx_XDECREF(__pyx_t_14); __pyx_t_14 = 0;
      __Pyx_XDECREF(__pyx_t_15); __pyx_t_15 = 0;
      __pyx_t_16 = 0; __pyx_t_17 = 0; __pyx_t_18 = 0;
      goto __pyx_L1_error;
    }
    __pyx_L5:;
  }

  /* "src/python/grpcio/grpc/_cython/_cygrpc/aio/common.pyx.pxi":149
 *     queue = asyncio.Queue(maxsize=1, loop=loop)
 * 
 *     def yield_to_queue():             # <<<<<<<<<<<<<<
 *         try:
 *             for item in gen:
 */

  /* function exit code */
  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_XDECREF(__pyx_t_4);
  __Pyx_XDECREF(__pyx_t_5);
  __Pyx_XDECREF(__pyx_t_6);
  __Pyx_XDECREF(__pyx_t_7);
  __Pyx_XDECREF(__pyx_t_8);
  __Pyx_XDECREF(__pyx_t_9);
  __Pyx_AddTraceback("grpc._cython.cygrpc.generator_to_async_generator.yield_to_queue", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XDECREF(__pyx_v_item);
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "src/python/grpcio/grpc/_cython/_cygrpc/aio/common.pyx.pxi":137
 * 
 * 
 * async def generator_to_async_generator(object gen, object loop, object thread_pool):             # <<<<<<<<<<<<<<
 *     """Converts a generator into async generator.
 * 
 */

static PyObject *__pyx_gb_4grpc_7_cython_6cygrpc_113generator1(__pyx_CoroutineObject *__pyx_generator, CYTHON_UNUSED PyThreadState *__pyx_tstate, PyObject *__pyx_sent_value) /* generator body */
{
  struct __pyx_obj_4grpc_7_cython_6cygrpc___pyx_scope_struct_13_generator_to_async_generator *__pyx_cur_scope = ((struct __pyx_obj_4grpc_7_cython_6cygrpc___pyx_scope_struct_13_generator_to_async_generator *)__pyx_generator->closure);
  PyObject *__pyx_r = NULL;
  PyObject *__pyx_t_1 = NULL;
  PyObject *__pyx_t_2 = NULL;
  PyObject *__pyx_t_3 = NULL;
  int __pyx_t_4;
  PyObject *__pyx_t_5 = NULL;
  int __pyx_t_6;
  int __pyx_t_7;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("generator_to_async_generator", 0);
  switch (__pyx_generator->resume_label) {
    case 0: goto __pyx_L3_first_run;
    case 1: goto __pyx_L6_resume_from_await;
    case 2: goto __pyx_L8_resume_from_yield;
    case 3: goto __pyx_L9_resume_from_await;
    default: /* CPython raises the right error here */
    __Pyx_RefNannyFinishContext();
    return NULL;
  }
  __pyx_L3_first_run:;
  if (unlikely(!__pyx_sent_value)) __PYX_ERR(7, 137, __pyx_L1_error)

  /* "src/python/grpcio/grpc/_cython/_cygrpc/aio/common.pyx.pxi":147
 *             raised into a Future
 *     """
 *     queue = asyncio.Queue(maxsize=1, loop=loop)             # <<<<<<<<<<<<<<
 * 
 *     def yield_to_queue():
 */
  __Pyx_GetModuleGlobalName(__pyx_t_1, __pyx_n_s_asyncio); if (unlikely(!__pyx_t_1)) __PYX_ERR(7, 147, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_t_1, __pyx_n_s_Queue); if (unlikely(!__pyx_t_2)) __PYX_ERR(7, 147, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  __pyx_t_1 = __Pyx_PyDict_NewPresized(2); if (unlikely(!__pyx_t_1)) __PYX_ERR(7, 147, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  if (PyDict_SetItem(__pyx_t_1, __pyx_n_s_maxsize, __pyx_int_1) < 0) __PYX_ERR(7, 147, __pyx_L1_error)
  if (PyDict_SetItem(__pyx_t_1, __pyx_n_s_loop, __pyx_cur_scope->__pyx_v_loop) < 0) __PYX_ERR(7, 147, __pyx_L1_error)
  __pyx_t_3 = __Pyx_PyObject_Call(__pyx_t_2, __pyx_empty_tuple, __pyx_t_1); if (unlikely(!__pyx_t_3)) __PYX_ERR(7, 147, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  __Pyx_GIVEREF(__pyx_t_3);
  __pyx_cur_scope->__pyx_v_queue = __pyx_t_3;
  __pyx_t_3 = 0;

  /* "src/python/grpcio/grpc/_cython/_cygrpc/aio/common.pyx.pxi":149
 *     queue = asyncio.Queue(maxsize=1, loop=loop)
 * 
 *     def yield_to_queue():             # <<<<<<<<<<<<<<
 *         try:
 *             for item in gen:
 */
  __pyx_t_3 = __Pyx_CyFunction_New(&__pyx_mdef_4grpc_7_cython_6cygrpc_28generator_to_async_generator_1yield_to_queue, 0, __pyx_n_s_generator_to_async_generator_loc, ((PyObject*)__pyx_cur_scope), __pyx_n_s_grpc__cython_cygrpc, __pyx_d, ((PyObject *)__pyx_codeobj__141)); if (unlikely(!__pyx_t_3)) __PYX_ERR(7, 149, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  __Pyx_GIVEREF(__pyx_t_3);
  __pyx_cur_scope->__pyx_v_yield_to_queue = __pyx_t_3;
  __pyx_t_3 = 0;

  /* "src/python/grpcio/grpc/_cython/_cygrpc/aio/common.pyx.pxi":156
 *             asyncio.run_coroutine_threadsafe(queue.put(EOF), loop).result()
 * 
 *     future = loop.run_in_executor(             # <<<<<<<<<<<<<<
 *         thread_pool,
 *         yield_to_queue,
 */
  __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_cur_scope->__pyx_v_loop, __pyx_n_s_run_in_executor); if (unlikely(!__pyx_t_1)) __PYX_ERR(7, 156, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);

  /* "src/python/grpcio/grpc/_cython/_cygrpc/aio/common.pyx.pxi":158
 *     future = loop.run_in_executor(
 *         thread_pool,
 *         yield_to_queue,             # <<<<<<<<<<<<<<
 *     )
 * 
 */
  __pyx_t_2 = NULL;
  __pyx_t_4 = 0;
  if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_1))) {
    __pyx_t_2 = PyMethod_GET_SELF(__pyx_t_1);
    if (likely(__pyx_t_2)) {
      PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_1);
      __Pyx_INCREF(__pyx_t_2);
      __Pyx_INCREF(function);
      __Pyx_DECREF_SET(__pyx_t_1, function);
      __pyx_t_4 = 1;
    }
  }
  #if CYTHON_FAST_PYCALL
  if (PyFunction_Check(__pyx_t_1)) {
    PyObject *__pyx_temp[3] = {__pyx_t_2, __pyx_cur_scope->__pyx_v_thread_pool, __pyx_cur_scope->__pyx_v_yield_to_queue};
    __pyx_t_3 = __Pyx_PyFunction_FastCall(__pyx_t_1, __pyx_temp+1-__pyx_t_4, 2+__pyx_t_4); if (unlikely(!__pyx_t_3)) __PYX_ERR(7, 156, __pyx_L1_error)
    __Pyx_XDECREF(__pyx_t_2); __pyx_t_2 = 0;
    __Pyx_GOTREF(__pyx_t_3);
  } else
  #endif
  #if CYTHON_FAST_PYCCALL
  if (__Pyx_PyFastCFunction_Check(__pyx_t_1)) {
    PyObject *__pyx_temp[3] = {__pyx_t_2, __pyx_cur_scope->__pyx_v_thread_pool, __pyx_cur_scope->__pyx_v_yield_to_queue};
    __pyx_t_3 = __Pyx_PyCFunction_FastCall(__pyx_t_1, __pyx_temp+1-__pyx_t_4, 2+__pyx_t_4); if (unlikely(!__pyx_t_3)) __PYX_ERR(7, 156, __pyx_L1_error)
    __Pyx_XDECREF(__pyx_t_2); __pyx_t_2 = 0;
    __Pyx_GOTREF(__pyx_t_3);
  } else
  #endif
  {
    __pyx_t_5 = PyTuple_New(2+__pyx_t_4); if (unlikely(!__pyx_t_5)) __PYX_ERR(7, 156, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_5);
    if (__pyx_t_2) {
      __Pyx_GIVEREF(__pyx_t_2); PyTuple_SET_ITEM(__pyx_t_5, 0, __pyx_t_2); __pyx_t_2 = NULL;
    }
    __Pyx_INCREF(__pyx_cur_scope->__pyx_v_thread_pool);
    __Pyx_GIVEREF(__pyx_cur_scope->__pyx_v_thread_pool);
    PyTuple_SET_ITEM(__pyx_t_5, 0+__pyx_t_4, __pyx_cur_scope->__pyx_v_thread_pool);
    __Pyx_INCREF(__pyx_cur_scope->__pyx_v_yield_to_queue);
    __Pyx_GIVEREF(__pyx_cur_scope->__pyx_v_yield_to_queue);
    PyTuple_SET_ITEM(__pyx_t_5, 1+__pyx_t_4, __pyx_cur_scope->__pyx_v_yield_to_queue);
    __pyx_t_3 = __Pyx_PyObject_Call(__pyx_t_1, __pyx_t_5, NULL); if (unlikely(!__pyx_t_3)) __PYX_ERR(7, 156, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_3);
    __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
  }
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  __Pyx_GIVEREF(__pyx_t_3);
  __pyx_cur_scope->__pyx_v_future = __pyx_t_3;
  __pyx_t_3 = 0;

  /* "src/python/grpcio/grpc/_cython/_cygrpc/aio/common.pyx.pxi":161
 *     )
 * 
 *     while True:             # <<<<<<<<<<<<<<
 *         response = await queue.get()
 *         if response is EOF:
 */
  while (1) {

    /* "src/python/grpcio/grpc/_cython/_cygrpc/aio/common.pyx.pxi":162
 * 
 *     while True:
 *         response = await queue.get()             # <<<<<<<<<<<<<<
 *         if response is EOF:
 *             break
 */
    __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_cur_scope->__pyx_v_queue, __pyx_n_s_get); if (unlikely(!__pyx_t_1)) __PYX_ERR(7, 162, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_1);
    __pyx_t_5 = NULL;
    if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_1))) {
      __pyx_t_5 = PyMethod_GET_SELF(__pyx_t_1);
      if (likely(__pyx_t_5)) {
        PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_1);
        __Pyx_INCREF(__pyx_t_5);
        __Pyx_INCREF(function);
        __Pyx_DECREF_SET(__pyx_t_1, function);
      }
    }
    __pyx_t_3 = (__pyx_t_5) ? __Pyx_PyObject_CallOneArg(__pyx_t_1, __pyx_t_5) : __Pyx_PyObject_CallNoArg(__pyx_t_1);
    __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0;
    if (unlikely(!__pyx_t_3)) __PYX_ERR(7, 162, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_3);
    __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
    __pyx_r = __Pyx_Coroutine_Yield_From(__pyx_generator, __pyx_t_3);
    __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
    __Pyx_XGOTREF(__pyx_r);
    if (likely(__pyx_r)) {
      __Pyx_XGIVEREF(__pyx_r);
      __Pyx_RefNannyFinishContext();
      __Pyx_Coroutine_ResetAndClearException(__pyx_generator);
      /* return from async generator, awaiting value */
      __pyx_generator->resume_label = 1;
      return __pyx_r;
      __pyx_L6_resume_from_await:;
      if (unlikely(!__pyx_sent_value)) __PYX_ERR(7, 162, __pyx_L1_error)
      __pyx_t_3 = __pyx_sent_value; __Pyx_INCREF(__pyx_t_3);
    } else {
      __pyx_t_3 = NULL;
      if (__Pyx_PyGen_FetchStopIterationValue(&__pyx_t_3) < 0) __PYX_ERR(7, 162, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_3);
    }
    __Pyx_XGOTREF(__pyx_cur_scope->__pyx_v_response);
    __Pyx_XDECREF_SET(__pyx_cur_scope->__pyx_v_response, __pyx_t_3);
    __Pyx_GIVEREF(__pyx_t_3);
    __pyx_t_3 = 0;

    /* "src/python/grpcio/grpc/_cython/_cygrpc/aio/common.pyx.pxi":163
 *     while True:
 *         response = await queue.get()
 *         if response is EOF:             # <<<<<<<<<<<<<<
 *             break
 *         else:
 */
    __Pyx_GetModuleGlobalName(__pyx_t_3, __pyx_n_s_EOF); if (unlikely(!__pyx_t_3)) __PYX_ERR(7, 163, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_3);
    __pyx_t_6 = (__pyx_cur_scope->__pyx_v_response == __pyx_t_3);
    __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
    __pyx_t_7 = (__pyx_t_6 != 0);
    if (__pyx_t_7) {

      /* "src/python/grpcio/grpc/_cython/_cygrpc/aio/common.pyx.pxi":164
 *         response = await queue.get()
 *         if response is EOF:
 *             break             # <<<<<<<<<<<<<<
 *         else:
 *             yield response
 */
      goto __pyx_L5_break;

      /* "src/python/grpcio/grpc/_cython/_cygrpc/aio/common.pyx.pxi":163
 *     while True:
 *         response = await queue.get()
 *         if response is EOF:             # <<<<<<<<<<<<<<
 *             break
 *         else:
 */
    }

    /* "src/python/grpcio/grpc/_cython/_cygrpc/aio/common.pyx.pxi":166
 *             break
 *         else:
 *             yield response             # <<<<<<<<<<<<<<
 * 
 *     # Port the exception if there is any
 */
    /*else*/ {
      __Pyx_INCREF(__pyx_cur_scope->__pyx_v_response);
      __pyx_r = __pyx_cur_scope->__pyx_v_response;
      __Pyx_XGIVEREF(__pyx_r);
      __Pyx_RefNannyFinishContext();
      __Pyx_Coroutine_ResetAndClearException(__pyx_generator);
      /* return from async generator, yielding value */
      __pyx_generator->resume_label = 2;
      return __Pyx__PyAsyncGenValueWrapperNew(__pyx_r);
      __pyx_L8_resume_from_yield:;
      if (unlikely(!__pyx_sent_value)) __PYX_ERR(7, 166, __pyx_L1_error)
    }
  }
  __pyx_L5_break:;

  /* "src/python/grpcio/grpc/_cython/_cygrpc/aio/common.pyx.pxi":169
 * 
 *     # Port the exception if there is any
 *     await future             # <<<<<<<<<<<<<<
 * 
 * 
 */
  __pyx_r = __Pyx_Coroutine_Yield_From(__pyx_generator, __pyx_cur_scope->__pyx_v_future);
  __Pyx_XGOTREF(__pyx_r);
  if (likely(__pyx_r)) {
    __Pyx_XGIVEREF(__pyx_r);
    __Pyx_RefNannyFinishContext();
    __Pyx_Coroutine_ResetAndClearException(__pyx_generator);
    /* return from async generator, awaiting value */
    __pyx_generator->resume_label = 3;
    return __pyx_r;
    __pyx_L9_resume_from_await:;
    if (unlikely(!__pyx_sent_value)) __PYX_ERR(7, 169, __pyx_L1_error)
  } else {
    PyObject* exc_type = __Pyx_PyErr_Occurred();
    if (exc_type) {
      if (likely(exc_type == PyExc_StopIteration || (exc_type != PyExc_GeneratorExit && __Pyx_PyErr_GivenExceptionMatches(exc_type, PyExc_StopIteration)))) PyErr_Clear();
      else __PYX_ERR(7, 169, __pyx_L1_error)
    }
  }
  CYTHON_MAYBE_UNUSED_VAR(__pyx_cur_scope);

  /* "src/python/grpcio/grpc/_cython/_cygrpc/aio/common.pyx.pxi":137
 * 
 * 
 * async def generator_to_async_generator(object gen, object loop, object thread_pool):             # <<<<<<<<<<<<<<
 *     """Converts a generator into async generator.
 * 
 */

  /* function exit code */
  PyErr_SetNone(__Pyx_PyExc_StopAsyncIteration);
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_XDECREF(__pyx_t_3);
  __Pyx_XDECREF(__pyx_t_5);
  __Pyx_AddTraceback("generator_to_async_generator", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_L0:;
  __Pyx_XDECREF(__pyx_r); __pyx_r = 0;
  #if !CYTHON_USE_EXC_INFO_STACK
  __Pyx_Coroutine_ResetAndClearException(__pyx_generator);
  #endif
  __pyx_generator->resume_label = -1;
  __Pyx_Coroutine_clear((PyObject*)__pyx_generator);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "src/python/grpcio/grpc/_cython/_cygrpc/aio/common.pyx.pxi":173
 * 
 * if PY_MAJOR_VERSION >= 3 and PY_MINOR_VERSION >= 7:
 *     def get_working_loop():             # <<<<<<<<<<<<<<
 *         """Returns a running event loop.
 * 
 */

/* Python wrapper */
static PyObject *__pyx_pw_4grpc_7_cython_6cygrpc_115get_working_loop(PyObject *__pyx_self, CYTHON_UNUSED PyObject *unused); /*proto*/
static char __pyx_doc_4grpc_7_cython_6cygrpc_114get_working_loop[] = "Returns a running event loop.\n\n        Due to a defect of asyncio.get_event_loop, its returned event loop might\n        not be set as the default event loop for the main thread.\n        ";
static PyMethodDef __pyx_mdef_4grpc_7_cython_6cygrpc_115get_working_loop = {"get_working_loop", (PyCFunction)__pyx_pw_4grpc_7_cython_6cygrpc_115get_working_loop, METH_NOARGS, __pyx_doc_4grpc_7_cython_6cygrpc_114get_working_loop};
static PyObject *__pyx_pw_4grpc_7_cython_6cygrpc_115get_working_loop(PyObject *__pyx_self, CYTHON_UNUSED PyObject *unused) {
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("get_working_loop (wrapper)", 0);
  __pyx_r = __pyx_pf_4grpc_7_cython_6cygrpc_114get_working_loop(__pyx_self);

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_4grpc_7_cython_6cygrpc_114get_working_loop(CYTHON_UNUSED PyObject *__pyx_self) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  PyObject *__pyx_t_2 = NULL;
  PyObject *__pyx_t_3 = NULL;
  PyObject *__pyx_t_4 = NULL;
  PyObject *__pyx_t_5 = NULL;
  PyObject *__pyx_t_6 = NULL;
  int __pyx_t_7;
  PyObject *__pyx_t_8 = NULL;
  PyObject *__pyx_t_9 = NULL;
  PyObject *__pyx_t_10 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("get_working_loop", 0);

  /* "src/python/grpcio/grpc/_cython/_cygrpc/aio/common.pyx.pxi":179
 *         not be set as the default event loop for the main thread.
 *         """
 *         try:             # <<<<<<<<<<<<<<
 *             return asyncio.get_running_loop()
 *         except RuntimeError:
 */
  {
    __Pyx_PyThreadState_declare
    __Pyx_PyThreadState_assign
    __Pyx_ExceptionSave(&__pyx_t_1, &__pyx_t_2, &__pyx_t_3);
    __Pyx_XGOTREF(__pyx_t_1);
    __Pyx_XGOTREF(__pyx_t_2);
    __Pyx_XGOTREF(__pyx_t_3);
    /*try:*/ {

      /* "src/python/grpcio/grpc/_cython/_cygrpc/aio/common.pyx.pxi":180
 *         """
 *         try:
 *             return asyncio.get_running_loop()             # <<<<<<<<<<<<<<
 *         except RuntimeError:
 *             return asyncio.get_event_loop()
 */
      __Pyx_XDECREF(__pyx_r);
      __Pyx_GetModuleGlobalName(__pyx_t_5, __pyx_n_s_asyncio); if (unlikely(!__pyx_t_5)) __PYX_ERR(7, 180, __pyx_L3_error)
      __Pyx_GOTREF(__pyx_t_5);
      __pyx_t_6 = __Pyx_PyObject_GetAttrStr(__pyx_t_5, __pyx_n_s_get_running_loop); if (unlikely(!__pyx_t_6)) __PYX_ERR(7, 180, __pyx_L3_error)
      __Pyx_GOTREF(__pyx_t_6);
      __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
      __pyx_t_5 = NULL;
      if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_6))) {
        __pyx_t_5 = PyMethod_GET_SELF(__pyx_t_6);
        if (likely(__pyx_t_5)) {
          PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_6);
          __Pyx_INCREF(__pyx_t_5);
          __Pyx_INCREF(function);
          __Pyx_DECREF_SET(__pyx_t_6, function);
        }
      }
      __pyx_t_4 = (__pyx_t_5) ? __Pyx_PyObject_CallOneArg(__pyx_t_6, __pyx_t_5) : __Pyx_PyObject_CallNoArg(__pyx_t_6);
      __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0;
      if (unlikely(!__pyx_t_4)) __PYX_ERR(7, 180, __pyx_L3_error)
      __Pyx_GOTREF(__pyx_t_4);
      __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
      __pyx_r = __pyx_t_4;
      __pyx_t_4 = 0;
      goto __pyx_L7_try_return;

      /* "src/python/grpcio/grpc/_cython/_cygrpc/aio/common.pyx.pxi":179
 *         not be set as the default event loop for the main thread.
 *         """
 *         try:             # <<<<<<<<<<<<<<
 *             return asyncio.get_running_loop()
 *         except RuntimeError:
 */
    }
    __pyx_L3_error:;
    __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0;
    __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0;
    __Pyx_XDECREF(__pyx_t_6); __pyx_t_6 = 0;

    /* "src/python/grpcio/grpc/_cython/_cygrpc/aio/common.pyx.pxi":181
 *         try:
 *             return asyncio.get_running_loop()
 *         except RuntimeError:             # <<<<<<<<<<<<<<
 *             return asyncio.get_event_loop()
 * else:
 */
    __pyx_t_7 = __Pyx_PyErr_ExceptionMatches(__pyx_builtin_RuntimeError);
    if (__pyx_t_7) {
      __Pyx_AddTraceback("grpc._cython.cygrpc.get_working_loop", __pyx_clineno, __pyx_lineno, __pyx_filename);
      if (__Pyx_GetException(&__pyx_t_4, &__pyx_t_6, &__pyx_t_5) < 0) __PYX_ERR(7, 181, __pyx_L5_except_error)
      __Pyx_GOTREF(__pyx_t_4);
      __Pyx_GOTREF(__pyx_t_6);
      __Pyx_GOTREF(__pyx_t_5);

      /* "src/python/grpcio/grpc/_cython/_cygrpc/aio/common.pyx.pxi":182
 *             return asyncio.get_running_loop()
 *         except RuntimeError:
 *             return asyncio.get_event_loop()             # <<<<<<<<<<<<<<
 * else:
 *     def get_working_loop():
 */
      __Pyx_XDECREF(__pyx_r);
      __Pyx_GetModuleGlobalName(__pyx_t_9, __pyx_n_s_asyncio); if (unlikely(!__pyx_t_9)) __PYX_ERR(7, 182, __pyx_L5_except_error)
      __Pyx_GOTREF(__pyx_t_9);
      __pyx_t_10 = __Pyx_PyObject_GetAttrStr(__pyx_t_9, __pyx_n_s_get_event_loop); if (unlikely(!__pyx_t_10)) __PYX_ERR(7, 182, __pyx_L5_except_error)
      __Pyx_GOTREF(__pyx_t_10);
      __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0;
      __pyx_t_9 = NULL;
      if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_10))) {
        __pyx_t_9 = PyMethod_GET_SELF(__pyx_t_10);
        if (likely(__pyx_t_9)) {
          PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_10);
          __Pyx_INCREF(__pyx_t_9);
          __Pyx_INCREF(function);
          __Pyx_DECREF_SET(__pyx_t_10, function);
        }
      }
      __pyx_t_8 = (__pyx_t_9) ? __Pyx_PyObject_CallOneArg(__pyx_t_10, __pyx_t_9) : __Pyx_PyObject_CallNoArg(__pyx_t_10);
      __Pyx_XDECREF(__pyx_t_9); __pyx_t_9 = 0;
      if (unlikely(!__pyx_t_8)) __PYX_ERR(7, 182, __pyx_L5_except_error)
      __Pyx_GOTREF(__pyx_t_8);
      __Pyx_DECREF(__pyx_t_10); __pyx_t_10 = 0;
      __pyx_r = __pyx_t_8;
      __pyx_t_8 = 0;
      __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
      __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
      __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
      goto __pyx_L6_except_return;
    }
    goto __pyx_L5_except_error;
    __pyx_L5_except_error:;

    /* "src/python/grpcio/grpc/_cython/_cygrpc/aio/common.pyx.pxi":179
 *         not be set as the default event loop for the main thread.
 *         """
 *         try:             # <<<<<<<<<<<<<<
 *             return asyncio.get_running_loop()
 *         except RuntimeError:
 */
    __Pyx_XGIVEREF(__pyx_t_1);
    __Pyx_XGIVEREF(__pyx_t_2);
    __Pyx_XGIVEREF(__pyx_t_3);
    __Pyx_ExceptionReset(__pyx_t_1, __pyx_t_2, __pyx_t_3);
    goto __pyx_L1_error;
    __pyx_L7_try_return:;
    __Pyx_XGIVEREF(__pyx_t_1);
    __Pyx_XGIVEREF(__pyx_t_2);
    __Pyx_XGIVEREF(__pyx_t_3);
    __Pyx_ExceptionReset(__pyx_t_1, __pyx_t_2, __pyx_t_3);
    goto __pyx_L0;
    __pyx_L6_except_return:;
    __Pyx_XGIVEREF(__pyx_t_1);
    __Pyx_XGIVEREF(__pyx_t_2);
    __Pyx_XGIVEREF(__pyx_t_3);
    __Pyx_ExceptionReset(__pyx_t_1, __pyx_t_2, __pyx_t_3);
    goto __pyx_L0;
  }

  /* "src/python/grpcio/grpc/_cython/_cygrpc/aio/common.pyx.pxi":173
 * 
 * if PY_MAJOR_VERSION >= 3 and PY_MINOR_VERSION >= 7:
 *     def get_working_loop():             # <<<<<<<<<<<<<<
 *         """Returns a running event loop.
 * 
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_4);
  __Pyx_XDECREF(__pyx_t_5);
  __Pyx_XDECREF(__pyx_t_6);
  __Pyx_XDECREF(__pyx_t_8);
  __Pyx_XDECREF(__pyx_t_9);
  __Pyx_XDECREF(__pyx_t_10);
  __Pyx_AddTraceback("grpc._cython.cygrpc.get_working_loop", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "src/python/grpcio/grpc/_cython/_cygrpc/aio/common.pyx.pxi":184
 *             return asyncio.get_event_loop()
 * else:
 *     def get_working_loop():             # <<<<<<<<<<<<<<
 *         """Returns a running event loop."""
 *         return asyncio.get_event_loop()
 */

/* Python wrapper */
static PyObject *__pyx_pw_4grpc_7_cython_6cygrpc_117get_working_loop(PyObject *__pyx_self, CYTHON_UNUSED PyObject *unused); /*proto*/
static char __pyx_doc_4grpc_7_cython_6cygrpc_116get_working_loop[] = "Returns a running event loop.";
static PyMethodDef __pyx_mdef_4grpc_7_cython_6cygrpc_117get_working_loop = {"get_working_loop", (PyCFunction)__pyx_pw_4grpc_7_cython_6cygrpc_117get_working_loop, METH_NOARGS, __pyx_doc_4grpc_7_cython_6cygrpc_116get_working_loop};
static PyObject *__pyx_pw_4grpc_7_cython_6cygrpc_117get_working_loop(PyObject *__pyx_self, CYTHON_UNUSED PyObject *unused) {
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("get_working_loop (wrapper)", 0);
  __pyx_r = __pyx_pf_4grpc_7_cython_6cygrpc_116get_working_loop(__pyx_self);

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_4grpc_7_cython_6cygrpc_116get_working_loop(CYTHON_UNUSED PyObject *__pyx_self) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  PyObject *__pyx_t_2 = NULL;
  PyObject *__pyx_t_3 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("get_working_loop", 0);

  /* "src/python/grpcio/grpc/_cython/_cygrpc/aio/common.pyx.pxi":186
 *     def get_working_loop():
 *         """Returns a running event loop."""
 *         return asyncio.get_event_loop()             # <<<<<<<<<<<<<<
 */
  __Pyx_XDECREF(__pyx_r);
  __Pyx_GetModuleGlobalName(__pyx_t_2, __pyx_n_s_asyncio); if (unlikely(!__pyx_t_2)) __PYX_ERR(7, 186, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __pyx_t_3 = __Pyx_PyObject_GetAttrStr(__pyx_t_2, __pyx_n_s_get_event_loop); if (unlikely(!__pyx_t_3)) __PYX_ERR(7, 186, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  __pyx_t_2 = NULL;
  if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_3))) {
    __pyx_t_2 = PyMethod_GET_SELF(__pyx_t_3);
    if (likely(__pyx_t_2)) {
      PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_3);
      __Pyx_INCREF(__pyx_t_2);
      __Pyx_INCREF(function);
      __Pyx_DECREF_SET(__pyx_t_3, function);
    }
  }
  __pyx_t_1 = (__pyx_t_2) ? __Pyx_PyObject_CallOneArg(__pyx_t_3, __pyx_t_2) : __Pyx_PyObject_CallNoArg(__pyx_t_3);
  __Pyx_XDECREF(__pyx_t_2); __pyx_t_2 = 0;
  if (unlikely(!__pyx_t_1)) __PYX_ERR(7, 186, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
  __pyx_r = __pyx_t_1;
  __pyx_t_1 = 0;
  goto __pyx_L0;

  /* "src/python/grpcio/grpc/_cython/_cygrpc/aio/common.pyx.pxi":184
 *             return asyncio.get_event_loop()
 * else:
 *     def get_working_loop():             # <<<<<<<<<<<<<<
 *         """Returns a running event loop."""
 *         return asyncio.get_event_loop()
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_XDECREF(__pyx_t_3);
  __Pyx_AddTraceback("grpc._cython.cygrpc.get_working_loop", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "src/python/grpcio/grpc/_cython/_cygrpc/aio/rpc_status.pyx.pxi":21
 *     # The final status of gRPC is represented by three trailing metadata:
 *     # `grpc-status`, `grpc-status-message`, abd `grpc-status-details`.
 *     def __cinit__(self,             # <<<<<<<<<<<<<<
 *                   grpc_status_code code,
 *                   str details,
 */

/* Python wrapper */
static int __pyx_pw_4grpc_7_cython_6cygrpc_12AioRpcStatus_1__cinit__(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
static int __pyx_pw_4grpc_7_cython_6cygrpc_12AioRpcStatus_1__cinit__(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
  grpc_status_code __pyx_v_code;
  PyObject *__pyx_v_details = 0;
  PyObject *__pyx_v_trailing_metadata = 0;
  PyObject *__pyx_v_debug_error_string = 0;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  int __pyx_r;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__cinit__ (wrapper)", 0);
  {
    static PyObject **__pyx_pyargnames[] = {&__pyx_n_s_code,&__pyx_n_s_details,&__pyx_n_s_trailing_metadata,&__pyx_n_s_debug_error_string,0};
    PyObject* values[4] = {0,0,0,0};
    if (unlikely(__pyx_kwds)) {
      Py_ssize_t kw_args;
      const Py_ssize_t pos_args = PyTuple_GET_SIZE(__pyx_args);
      switch (pos_args) {
        case  4: values[3] = PyTuple_GET_ITEM(__pyx_args, 3);
        CYTHON_FALLTHROUGH;
        case  3: values[2] = PyTuple_GET_ITEM(__pyx_args, 2);
        CYTHON_FALLTHROUGH;
        case  2: values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
        CYTHON_FALLTHROUGH;
        case  1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
        CYTHON_FALLTHROUGH;
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      kw_args = PyDict_Size(__pyx_kwds);
      switch (pos_args) {
        case  0:
        if (likely((values[0] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_code)) != 0)) kw_args--;
        else goto __pyx_L5_argtuple_error;
        CYTHON_FALLTHROUGH;
        case  1:
        if (likely((values[1] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_details)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("__cinit__", 1, 4, 4, 1); __PYX_ERR(29, 21, __pyx_L3_error)
        }
        CYTHON_FALLTHROUGH;
        case  2:
        if (likely((values[2] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_trailing_metadata)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("__cinit__", 1, 4, 4, 2); __PYX_ERR(29, 21, __pyx_L3_error)
        }
        CYTHON_FALLTHROUGH;
        case  3:
        if (likely((values[3] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_debug_error_string)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("__cinit__", 1, 4, 4, 3); __PYX_ERR(29, 21, __pyx_L3_error)
        }
      }
      if (unlikely(kw_args > 0)) {
        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "__cinit__") < 0)) __PYX_ERR(29, 21, __pyx_L3_error)
      }
    } else if (PyTuple_GET_SIZE(__pyx_args) != 4) {
      goto __pyx_L5_argtuple_error;
    } else {
      values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
      values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
      values[2] = PyTuple_GET_ITEM(__pyx_args, 2);
      values[3] = PyTuple_GET_ITEM(__pyx_args, 3);
    }
    __pyx_v_code = ((grpc_status_code)__Pyx_PyInt_As_grpc_status_code(values[0])); if (unlikely(PyErr_Occurred())) __PYX_ERR(29, 22, __pyx_L3_error)
    __pyx_v_details = ((PyObject*)values[1]);
    __pyx_v_trailing_metadata = ((PyObject*)values[2]);
    __pyx_v_debug_error_string = ((PyObject*)values[3]);
  }
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("__cinit__", 1, 4, 4, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(29, 21, __pyx_L3_error)
  __pyx_L3_error:;
  __Pyx_AddTraceback("grpc._cython.cygrpc.AioRpcStatus.__cinit__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return -1;
  __pyx_L4_argument_unpacking_done:;
  if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_details), (&PyString_Type), 1, "details", 1))) __PYX_ERR(29, 23, __pyx_L1_error)
  if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_trailing_metadata), (&PyTuple_Type), 1, "trailing_metadata", 1))) __PYX_ERR(29, 24, __pyx_L1_error)
  if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_debug_error_string), (&PyString_Type), 1, "debug_error_string", 1))) __PYX_ERR(29, 25, __pyx_L1_error)
  __pyx_r = __pyx_pf_4grpc_7_cython_6cygrpc_12AioRpcStatus___cinit__(((struct __pyx_obj_4grpc_7_cython_6cygrpc_AioRpcStatus *)__pyx_v_self), __pyx_v_code, __pyx_v_details, __pyx_v_trailing_metadata, __pyx_v_debug_error_string);

  /* function exit code */
  goto __pyx_L0;
  __pyx_L1_error:;
  __pyx_r = -1;
  __pyx_L0:;
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static int __pyx_pf_4grpc_7_cython_6cygrpc_12AioRpcStatus___cinit__(struct __pyx_obj_4grpc_7_cython_6cygrpc_AioRpcStatus *__pyx_v_self, grpc_status_code __pyx_v_code, PyObject *__pyx_v_details, PyObject *__pyx_v_trailing_metadata, PyObject *__pyx_v_debug_error_string) {
  int __pyx_r;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__cinit__", 0);

  /* "src/python/grpcio/grpc/_cython/_cygrpc/aio/rpc_status.pyx.pxi":26
 *                   tuple trailing_metadata,
 *                   str debug_error_string):
 *         self._code = code             # <<<<<<<<<<<<<<
 *         self._details = details
 *         self._trailing_metadata = trailing_metadata
 */
  __pyx_v_self->_code = __pyx_v_code;

  /* "src/python/grpcio/grpc/_cython/_cygrpc/aio/rpc_status.pyx.pxi":27
 *                   str debug_error_string):
 *         self._code = code
 *         self._details = details             # <<<<<<<<<<<<<<
 *         self._trailing_metadata = trailing_metadata
 *         self._debug_error_string = debug_error_string
 */
  __Pyx_INCREF(__pyx_v_details);
  __Pyx_GIVEREF(__pyx_v_details);
  __Pyx_GOTREF(__pyx_v_self->_details);
  __Pyx_DECREF(__pyx_v_self->_details);
  __pyx_v_self->_details = __pyx_v_details;

  /* "src/python/grpcio/grpc/_cython/_cygrpc/aio/rpc_status.pyx.pxi":28
 *         self._code = code
 *         self._details = details
 *         self._trailing_metadata = trailing_metadata             # <<<<<<<<<<<<<<
 *         self._debug_error_string = debug_error_string
 * 
 */
  __Pyx_INCREF(__pyx_v_trailing_metadata);
  __Pyx_GIVEREF(__pyx_v_trailing_metadata);
  __Pyx_GOTREF(__pyx_v_self->_trailing_metadata);
  __Pyx_DECREF(__pyx_v_self->_trailing_metadata);
  __pyx_v_self->_trailing_metadata = __pyx_v_trailing_metadata;

  /* "src/python/grpcio/grpc/_cython/_cygrpc/aio/rpc_status.pyx.pxi":29
 *         self._details = details
 *         self._trailing_metadata = trailing_metadata
 *         self._debug_error_string = debug_error_string             # <<<<<<<<<<<<<<
 * 
 *     cpdef grpc_status_code code(self):
 */
  __Pyx_INCREF(__pyx_v_debug_error_string);
  __Pyx_GIVEREF(__pyx_v_debug_error_string);
  __Pyx_GOTREF(__pyx_v_self->_debug_error_string);
  __Pyx_DECREF(__pyx_v_self->_debug_error_string);
  __pyx_v_self->_debug_error_string = __pyx_v_debug_error_string;

  /* "src/python/grpcio/grpc/_cython/_cygrpc/aio/rpc_status.pyx.pxi":21
 *     # The final status of gRPC is represented by three trailing metadata:
 *     # `grpc-status`, `grpc-status-message`, abd `grpc-status-details`.
 *     def __cinit__(self,             # <<<<<<<<<<<<<<
 *                   grpc_status_code code,
 *                   str details,
 */

  /* function exit code */
  __pyx_r = 0;
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "src/python/grpcio/grpc/_cython/_cygrpc/aio/rpc_status.pyx.pxi":31
 *         self._debug_error_string = debug_error_string
 * 
 *     cpdef grpc_status_code code(self):             # <<<<<<<<<<<<<<
 *         return self._code
 * 
 */

static PyObject *__pyx_pw_4grpc_7_cython_6cygrpc_12AioRpcStatus_3code(PyObject *__pyx_v_self, CYTHON_UNUSED PyObject *unused); /*proto*/
static grpc_status_code __pyx_f_4grpc_7_cython_6cygrpc_12AioRpcStatus_code(struct __pyx_obj_4grpc_7_cython_6cygrpc_AioRpcStatus *__pyx_v_self, int __pyx_skip_dispatch) {
  grpc_status_code __pyx_r;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  PyObject *__pyx_t_2 = NULL;
  PyObject *__pyx_t_3 = NULL;
  PyObject *__pyx_t_4 = NULL;
  grpc_status_code __pyx_t_5;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("code", 0);
  /* Check if called by wrapper */
  if (unlikely(__pyx_skip_dispatch)) ;
  /* Check if overridden in Python */
  else if (unlikely((Py_TYPE(((PyObject *)__pyx_v_self))->tp_dictoffset != 0) || (Py_TYPE(((PyObject *)__pyx_v_self))->tp_flags & (Py_TPFLAGS_IS_ABSTRACT | Py_TPFLAGS_HEAPTYPE)))) {
    #if CYTHON_USE_DICT_VERSIONS && CYTHON_USE_PYTYPE_LOOKUP && CYTHON_USE_TYPE_SLOTS
    static PY_UINT64_T __pyx_tp_dict_version = __PYX_DICT_VERSION_INIT, __pyx_obj_dict_version = __PYX_DICT_VERSION_INIT;
    if (unlikely(!__Pyx_object_dict_version_matches(((PyObject *)__pyx_v_self), __pyx_tp_dict_version, __pyx_obj_dict_version))) {
      PY_UINT64_T __pyx_type_dict_guard = __Pyx_get_tp_dict_version(((PyObject *)__pyx_v_self));
      #endif
      __pyx_t_1 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_code); if (unlikely(!__pyx_t_1)) __PYX_ERR(29, 31, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_1);
      if (!PyCFunction_Check(__pyx_t_1) || (PyCFunction_GET_FUNCTION(__pyx_t_1) != (PyCFunction)(void*)__pyx_pw_4grpc_7_cython_6cygrpc_12AioRpcStatus_3code)) {
        __Pyx_INCREF(__pyx_t_1);
        __pyx_t_3 = __pyx_t_1; __pyx_t_4 = NULL;
        if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_3))) {
          __pyx_t_4 = PyMethod_GET_SELF(__pyx_t_3);
          if (likely(__pyx_t_4)) {
            PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_3);
            __Pyx_INCREF(__pyx_t_4);
            __Pyx_INCREF(function);
            __Pyx_DECREF_SET(__pyx_t_3, function);
          }
        }
        __pyx_t_2 = (__pyx_t_4) ? __Pyx_PyObject_CallOneArg(__pyx_t_3, __pyx_t_4) : __Pyx_PyObject_CallNoArg(__pyx_t_3);
        __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0;
        if (unlikely(!__pyx_t_2)) __PYX_ERR(29, 31, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_2);
        __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
        __pyx_t_5 = ((grpc_status_code)__Pyx_PyInt_As_grpc_status_code(__pyx_t_2)); if (unlikely(PyErr_Occurred())) __PYX_ERR(29, 31, __pyx_L1_error)
        __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
        __pyx_r = __pyx_t_5;
        __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
        goto __pyx_L0;
      }
      #if CYTHON_USE_DICT_VERSIONS && CYTHON_USE_PYTYPE_LOOKUP && CYTHON_USE_TYPE_SLOTS
      __pyx_tp_dict_version = __Pyx_get_tp_dict_version(((PyObject *)__pyx_v_self));
      __pyx_obj_dict_version = __Pyx_get_object_dict_version(((PyObject *)__pyx_v_self));
      if (unlikely(__pyx_type_dict_guard != __pyx_tp_dict_version)) {
        __pyx_tp_dict_version = __pyx_obj_dict_version = __PYX_DICT_VERSION_INIT;
      }
      #endif
      __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
      #if CYTHON_USE_DICT_VERSIONS && CYTHON_USE_PYTYPE_LOOKUP && CYTHON_USE_TYPE_SLOTS
    }
    #endif
  }

  /* "src/python/grpcio/grpc/_cython/_cygrpc/aio/rpc_status.pyx.pxi":32
 * 
 *     cpdef grpc_status_code code(self):
 *         return self._code             # <<<<<<<<<<<<<<
 * 
 *     cpdef str details(self):
 */
  __pyx_r = __pyx_v_self->_code;
  goto __pyx_L0;

  /* "src/python/grpcio/grpc/_cython/_cygrpc/aio/rpc_status.pyx.pxi":31
 *         self._debug_error_string = debug_error_string
 * 
 *     cpdef grpc_status_code code(self):             # <<<<<<<<<<<<<<
 *         return self._code
 * 
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_XDECREF(__pyx_t_3);
  __Pyx_XDECREF(__pyx_t_4);
  __Pyx_WriteUnraisable("grpc._cython.cygrpc.AioRpcStatus.code", __pyx_clineno, __pyx_lineno, __pyx_filename, 1, 0);
  __pyx_r = (grpc_status_code) 0;
  __pyx_L0:;
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* Python wrapper */
static PyObject *__pyx_pw_4grpc_7_cython_6cygrpc_12AioRpcStatus_3code(PyObject *__pyx_v_self, CYTHON_UNUSED PyObject *unused); /*proto*/
static PyObject *__pyx_pw_4grpc_7_cython_6cygrpc_12AioRpcStatus_3code(PyObject *__pyx_v_self, CYTHON_UNUSED PyObject *unused) {
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("code (wrapper)", 0);
  __pyx_r = __pyx_pf_4grpc_7_cython_6cygrpc_12AioRpcStatus_2code(((struct __pyx_obj_4grpc_7_cython_6cygrpc_AioRpcStatus *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_4grpc_7_cython_6cygrpc_12AioRpcStatus_2code(struct __pyx_obj_4grpc_7_cython_6cygrpc_AioRpcStatus *__pyx_v_self) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("code", 0);
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_1 = __Pyx_PyInt_From_grpc_status_code(__pyx_f_4grpc_7_cython_6cygrpc_12AioRpcStatus_code(__pyx_v_self, 1)); if (unlikely(!__pyx_t_1)) __PYX_ERR(29, 31, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_r = __pyx_t_1;
  __pyx_t_1 = 0;
  goto __pyx_L0;

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_AddTraceback("grpc._cython.cygrpc.AioRpcStatus.code", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "src/python/grpcio/grpc/_cython/_cygrpc/aio/rpc_status.pyx.pxi":34
 *         return self._code
 * 
 *     cpdef str details(self):             # <<<<<<<<<<<<<<
 *         return self._details
 * 
 */

static PyObject *__pyx_pw_4grpc_7_cython_6cygrpc_12AioRpcStatus_5details(PyObject *__pyx_v_self, CYTHON_UNUSED PyObject *unused); /*proto*/
static PyObject *__pyx_f_4grpc_7_cython_6cygrpc_12AioRpcStatus_details(struct __pyx_obj_4grpc_7_cython_6cygrpc_AioRpcStatus *__pyx_v_self, int __pyx_skip_dispatch) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  PyObject *__pyx_t_2 = NULL;
  PyObject *__pyx_t_3 = NULL;
  PyObject *__pyx_t_4 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("details", 0);
  /* Check if called by wrapper */
  if (unlikely(__pyx_skip_dispatch)) ;
  /* Check if overridden in Python */
  else if (unlikely((Py_TYPE(((PyObject *)__pyx_v_self))->tp_dictoffset != 0) || (Py_TYPE(((PyObject *)__pyx_v_self))->tp_flags & (Py_TPFLAGS_IS_ABSTRACT | Py_TPFLAGS_HEAPTYPE)))) {
    #if CYTHON_USE_DICT_VERSIONS && CYTHON_USE_PYTYPE_LOOKUP && CYTHON_USE_TYPE_SLOTS
    static PY_UINT64_T __pyx_tp_dict_version = __PYX_DICT_VERSION_INIT, __pyx_obj_dict_version = __PYX_DICT_VERSION_INIT;
    if (unlikely(!__Pyx_object_dict_version_matches(((PyObject *)__pyx_v_self), __pyx_tp_dict_version, __pyx_obj_dict_version))) {
      PY_UINT64_T __pyx_type_dict_guard = __Pyx_get_tp_dict_version(((PyObject *)__pyx_v_self));
      #endif
      __pyx_t_1 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_details); if (unlikely(!__pyx_t_1)) __PYX_ERR(29, 34, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_1);
      if (!PyCFunction_Check(__pyx_t_1) || (PyCFunction_GET_FUNCTION(__pyx_t_1) != (PyCFunction)(void*)__pyx_pw_4grpc_7_cython_6cygrpc_12AioRpcStatus_5details)) {
        __Pyx_XDECREF(__pyx_r);
        __Pyx_INCREF(__pyx_t_1);
        __pyx_t_3 = __pyx_t_1; __pyx_t_4 = NULL;
        if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_3))) {
          __pyx_t_4 = PyMethod_GET_SELF(__pyx_t_3);
          if (likely(__pyx_t_4)) {
            PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_3);
            __Pyx_INCREF(__pyx_t_4);
            __Pyx_INCREF(function);
            __Pyx_DECREF_SET(__pyx_t_3, function);
          }
        }
        __pyx_t_2 = (__pyx_t_4) ? __Pyx_PyObject_CallOneArg(__pyx_t_3, __pyx_t_4) : __Pyx_PyObject_CallNoArg(__pyx_t_3);
        __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0;
        if (unlikely(!__pyx_t_2)) __PYX_ERR(29, 34, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_2);
        __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
        if (!(likely(PyString_CheckExact(__pyx_t_2))||((__pyx_t_2) == Py_None)||(PyErr_Format(PyExc_TypeError, "Expected %.16s, got %.200s", "str", Py_TYPE(__pyx_t_2)->tp_name), 0))) __PYX_ERR(29, 34, __pyx_L1_error)
        __pyx_r = ((PyObject*)__pyx_t_2);
        __pyx_t_2 = 0;
        __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
        goto __pyx_L0;
      }
      #if CYTHON_USE_DICT_VERSIONS && CYTHON_USE_PYTYPE_LOOKUP && CYTHON_USE_TYPE_SLOTS
      __pyx_tp_dict_version = __Pyx_get_tp_dict_version(((PyObject *)__pyx_v_self));
      __pyx_obj_dict_version = __Pyx_get_object_dict_version(((PyObject *)__pyx_v_self));
      if (unlikely(__pyx_type_dict_guard != __pyx_tp_dict_version)) {
        __pyx_tp_dict_version = __pyx_obj_dict_version = __PYX_DICT_VERSION_INIT;
      }
      #endif
      __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
      #if CYTHON_USE_DICT_VERSIONS && CYTHON_USE_PYTYPE_LOOKUP && CYTHON_USE_TYPE_SLOTS
    }
    #endif
  }

  /* "src/python/grpcio/grpc/_cython/_cygrpc/aio/rpc_status.pyx.pxi":35
 * 
 *     cpdef str details(self):
 *         return self._details             # <<<<<<<<<<<<<<
 * 
 *     cpdef tuple trailing_metadata(self):
 */
  __Pyx_XDECREF(__pyx_r);
  __Pyx_INCREF(__pyx_v_self->_details);
  __pyx_r = __pyx_v_self->_details;
  goto __pyx_L0;

  /* "src/python/grpcio/grpc/_cython/_cygrpc/aio/rpc_status.pyx.pxi":34
 *         return self._code
 * 
 *     cpdef str details(self):             # <<<<<<<<<<<<<<
 *         return self._details
 * 
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_XDECREF(__pyx_t_3);
  __Pyx_XDECREF(__pyx_t_4);
  __Pyx_AddTraceback("grpc._cython.cygrpc.AioRpcStatus.details", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = 0;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* Python wrapper */
static PyObject *__pyx_pw_4grpc_7_cython_6cygrpc_12AioRpcStatus_5details(PyObject *__pyx_v_self, CYTHON_UNUSED PyObject *unused); /*proto*/
static PyObject *__pyx_pw_4grpc_7_cython_6cygrpc_12AioRpcStatus_5details(PyObject *__pyx_v_self, CYTHON_UNUSED PyObject *unused) {
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("details (wrapper)", 0);
  __pyx_r = __pyx_pf_4grpc_7_cython_6cygrpc_12AioRpcStatus_4details(((struct __pyx_obj_4grpc_7_cython_6cygrpc_AioRpcStatus *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_4grpc_7_cython_6cygrpc_12AioRpcStatus_4details(struct __pyx_obj_4grpc_7_cython_6cygrpc_AioRpcStatus *__pyx_v_self) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("details", 0);
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_1 = __pyx_f_4grpc_7_cython_6cygrpc_12AioRpcStatus_details(__pyx_v_self, 1); if (unlikely(!__pyx_t_1)) __PYX_ERR(29, 34, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_r = __pyx_t_1;
  __pyx_t_1 = 0;
  goto __pyx_L0;

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_AddTraceback("grpc._cython.cygrpc.AioRpcStatus.details", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "src/python/grpcio/grpc/_cython/_cygrpc/aio/rpc_status.pyx.pxi":37
 *         return self._details
 * 
 *     cpdef tuple trailing_metadata(self):             # <<<<<<<<<<<<<<
 *         return self._trailing_metadata
 * 
 */

static PyObject *__pyx_pw_4grpc_7_cython_6cygrpc_12AioRpcStatus_7trailing_metadata(PyObject *__pyx_v_self, CYTHON_UNUSED PyObject *unused); /*proto*/
static PyObject *__pyx_f_4grpc_7_cython_6cygrpc_12AioRpcStatus_trailing_metadata(struct __pyx_obj_4grpc_7_cython_6cygrpc_AioRpcStatus *__pyx_v_self, int __pyx_skip_dispatch) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  PyObject *__pyx_t_2 = NULL;
  PyObject *__pyx_t_3 = NULL;
  PyObject *__pyx_t_4 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("trailing_metadata", 0);
  /* Check if called by wrapper */
  if (unlikely(__pyx_skip_dispatch)) ;
  /* Check if overridden in Python */
  else if (unlikely((Py_TYPE(((PyObject *)__pyx_v_self))->tp_dictoffset != 0) || (Py_TYPE(((PyObject *)__pyx_v_self))->tp_flags & (Py_TPFLAGS_IS_ABSTRACT | Py_TPFLAGS_HEAPTYPE)))) {
    #if CYTHON_USE_DICT_VERSIONS && CYTHON_USE_PYTYPE_LOOKUP && CYTHON_USE_TYPE_SLOTS
    static PY_UINT64_T __pyx_tp_dict_version = __PYX_DICT_VERSION_INIT, __pyx_obj_dict_version = __PYX_DICT_VERSION_INIT;
    if (unlikely(!__Pyx_object_dict_version_matches(((PyObject *)__pyx_v_self), __pyx_tp_dict_version, __pyx_obj_dict_version))) {
      PY_UINT64_T __pyx_type_dict_guard = __Pyx_get_tp_dict_version(((PyObject *)__pyx_v_self));
      #endif
      __pyx_t_1 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_trailing_metadata); if (unlikely(!__pyx_t_1)) __PYX_ERR(29, 37, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_1);
      if (!PyCFunction_Check(__pyx_t_1) || (PyCFunction_GET_FUNCTION(__pyx_t_1) != (PyCFunction)(void*)__pyx_pw_4grpc_7_cython_6cygrpc_12AioRpcStatus_7trailing_metadata)) {
        __Pyx_XDECREF(__pyx_r);
        __Pyx_INCREF(__pyx_t_1);
        __pyx_t_3 = __pyx_t_1; __pyx_t_4 = NULL;
        if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_3))) {
          __pyx_t_4 = PyMethod_GET_SELF(__pyx_t_3);
          if (likely(__pyx_t_4)) {
            PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_3);
            __Pyx_INCREF(__pyx_t_4);
            __Pyx_INCREF(function);
            __Pyx_DECREF_SET(__pyx_t_3, function);
          }
        }
        __pyx_t_2 = (__pyx_t_4) ? __Pyx_PyObject_CallOneArg(__pyx_t_3, __pyx_t_4) : __Pyx_PyObject_CallNoArg(__pyx_t_3);
        __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0;
        if (unlikely(!__pyx_t_2)) __PYX_ERR(29, 37, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_2);
        __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
        if (!(likely(PyTuple_CheckExact(__pyx_t_2))||((__pyx_t_2) == Py_None)||(PyErr_Format(PyExc_TypeError, "Expected %.16s, got %.200s", "tuple", Py_TYPE(__pyx_t_2)->tp_name), 0))) __PYX_ERR(29, 37, __pyx_L1_error)
        __pyx_r = ((PyObject*)__pyx_t_2);
        __pyx_t_2 = 0;
        __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
        goto __pyx_L0;
      }
      #if CYTHON_USE_DICT_VERSIONS && CYTHON_USE_PYTYPE_LOOKUP && CYTHON_USE_TYPE_SLOTS
      __pyx_tp_dict_version = __Pyx_get_tp_dict_version(((PyObject *)__pyx_v_self));
      __pyx_obj_dict_version = __Pyx_get_object_dict_version(((PyObject *)__pyx_v_self));
      if (unlikely(__pyx_type_dict_guard != __pyx_tp_dict_version)) {
        __pyx_tp_dict_version = __pyx_obj_dict_version = __PYX_DICT_VERSION_INIT;
      }
      #endif
      __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
      #if CYTHON_USE_DICT_VERSIONS && CYTHON_USE_PYTYPE_LOOKUP && CYTHON_USE_TYPE_SLOTS
    }
    #endif
  }

  /* "src/python/grpcio/grpc/_cython/_cygrpc/aio/rpc_status.pyx.pxi":38
 * 
 *     cpdef tuple trailing_metadata(self):
 *         return self._trailing_metadata             # <<<<<<<<<<<<<<
 * 
 *     cpdef str debug_error_string(self):
 */
  __Pyx_XDECREF(__pyx_r);
  __Pyx_INCREF(__pyx_v_self->_trailing_metadata);
  __pyx_r = __pyx_v_self->_trailing_metadata;
  goto __pyx_L0;

  /* "src/python/grpcio/grpc/_cython/_cygrpc/aio/rpc_status.pyx.pxi":37
 *         return self._details
 * 
 *     cpdef tuple trailing_metadata(self):             # <<<<<<<<<<<<<<
 *         return self._trailing_metadata
 * 
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_XDECREF(__pyx_t_3);
  __Pyx_XDECREF(__pyx_t_4);
  __Pyx_AddTraceback("grpc._cython.cygrpc.AioRpcStatus.trailing_metadata", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = 0;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* Python wrapper */
static PyObject *__pyx_pw_4grpc_7_cython_6cygrpc_12AioRpcStatus_7trailing_metadata(PyObject *__pyx_v_self, CYTHON_UNUSED PyObject *unused); /*proto*/
static PyObject *__pyx_pw_4grpc_7_cython_6cygrpc_12AioRpcStatus_7trailing_metadata(PyObject *__pyx_v_self, CYTHON_UNUSED PyObject *unused) {
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("trailing_metadata (wrapper)", 0);
  __pyx_r = __pyx_pf_4grpc_7_cython_6cygrpc_12AioRpcStatus_6trailing_metadata(((struct __pyx_obj_4grpc_7_cython_6cygrpc_AioRpcStatus *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_4grpc_7_cython_6cygrpc_12AioRpcStatus_6trailing_metadata(struct __pyx_obj_4grpc_7_cython_6cygrpc_AioRpcStatus *__pyx_v_self) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("trailing_metadata", 0);
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_1 = __pyx_f_4grpc_7_cython_6cygrpc_12AioRpcStatus_trailing_metadata(__pyx_v_self, 1); if (unlikely(!__pyx_t_1)) __PYX_ERR(29, 37, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_r = __pyx_t_1;
  __pyx_t_1 = 0;
  goto __pyx_L0;

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_AddTraceback("grpc._cython.cygrpc.AioRpcStatus.trailing_metadata", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "src/python/grpcio/grpc/_cython/_cygrpc/aio/rpc_status.pyx.pxi":40
 *         return self._trailing_metadata
 * 
 *     cpdef str debug_error_string(self):             # <<<<<<<<<<<<<<
 *         return self._debug_error_string
 * 
 */

static PyObject *__pyx_pw_4grpc_7_cython_6cygrpc_12AioRpcStatus_9debug_error_string(PyObject *__pyx_v_self, CYTHON_UNUSED PyObject *unused); /*proto*/
static PyObject *__pyx_f_4grpc_7_cython_6cygrpc_12AioRpcStatus_debug_error_string(struct __pyx_obj_4grpc_7_cython_6cygrpc_AioRpcStatus *__pyx_v_self, int __pyx_skip_dispatch) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  PyObject *__pyx_t_2 = NULL;
  PyObject *__pyx_t_3 = NULL;
  PyObject *__pyx_t_4 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("debug_error_string", 0);
  /* Check if called by wrapper */
  if (unlikely(__pyx_skip_dispatch)) ;
  /* Check if overridden in Python */
  else if (unlikely((Py_TYPE(((PyObject *)__pyx_v_self))->tp_dictoffset != 0) || (Py_TYPE(((PyObject *)__pyx_v_self))->tp_flags & (Py_TPFLAGS_IS_ABSTRACT | Py_TPFLAGS_HEAPTYPE)))) {
    #if CYTHON_USE_DICT_VERSIONS && CYTHON_USE_PYTYPE_LOOKUP && CYTHON_USE_TYPE_SLOTS
    static PY_UINT64_T __pyx_tp_dict_version = __PYX_DICT_VERSION_INIT, __pyx_obj_dict_version = __PYX_DICT_VERSION_INIT;
    if (unlikely(!__Pyx_object_dict_version_matches(((PyObject *)__pyx_v_self), __pyx_tp_dict_version, __pyx_obj_dict_version))) {
      PY_UINT64_T __pyx_type_dict_guard = __Pyx_get_tp_dict_version(((PyObject *)__pyx_v_self));
      #endif
      __pyx_t_1 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_debug_error_string); if (unlikely(!__pyx_t_1)) __PYX_ERR(29, 40, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_1);
      if (!PyCFunction_Check(__pyx_t_1) || (PyCFunction_GET_FUNCTION(__pyx_t_1) != (PyCFunction)(void*)__pyx_pw_4grpc_7_cython_6cygrpc_12AioRpcStatus_9debug_error_string)) {
        __Pyx_XDECREF(__pyx_r);
        __Pyx_INCREF(__pyx_t_1);
        __pyx_t_3 = __pyx_t_1; __pyx_t_4 = NULL;
        if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_3))) {
          __pyx_t_4 = PyMethod_GET_SELF(__pyx_t_3);
          if (likely(__pyx_t_4)) {
            PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_3);
            __Pyx_INCREF(__pyx_t_4);
            __Pyx_INCREF(function);
            __Pyx_DECREF_SET(__pyx_t_3, function);
          }
        }
        __pyx_t_2 = (__pyx_t_4) ? __Pyx_PyObject_CallOneArg(__pyx_t_3, __pyx_t_4) : __Pyx_PyObject_CallNoArg(__pyx_t_3);
        __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0;
        if (unlikely(!__pyx_t_2)) __PYX_ERR(29, 40, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_2);
        __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
        if (!(likely(PyString_CheckExact(__pyx_t_2))||((__pyx_t_2) == Py_None)||(PyErr_Format(PyExc_TypeError, "Expected %.16s, got %.200s", "str", Py_TYPE(__pyx_t_2)->tp_name), 0))) __PYX_ERR(29, 40, __pyx_L1_error)
        __pyx_r = ((PyObject*)__pyx_t_2);
        __pyx_t_2 = 0;
        __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
        goto __pyx_L0;
      }
      #if CYTHON_USE_DICT_VERSIONS && CYTHON_USE_PYTYPE_LOOKUP && CYTHON_USE_TYPE_SLOTS
      __pyx_tp_dict_version = __Pyx_get_tp_dict_version(((PyObject *)__pyx_v_self));
      __pyx_obj_dict_version = __Pyx_get_object_dict_version(((PyObject *)__pyx_v_self));
      if (unlikely(__pyx_type_dict_guard != __pyx_tp_dict_version)) {
        __pyx_tp_dict_version = __pyx_obj_dict_version = __PYX_DICT_VERSION_INIT;
      }
      #endif
      __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
      #if CYTHON_USE_DICT_VERSIONS && CYTHON_USE_PYTYPE_LOOKUP && CYTHON_USE_TYPE_SLOTS
    }
    #endif
  }

  /* "src/python/grpcio/grpc/_cython/_cygrpc/aio/rpc_status.pyx.pxi":41
 * 
 *     cpdef str debug_error_string(self):
 *         return self._debug_error_string             # <<<<<<<<<<<<<<
 * 
 *     cdef grpc_status_code c_code(self):
 */
  __Pyx_XDECREF(__pyx_r);
  __Pyx_INCREF(__pyx_v_self->_debug_error_string);
  __pyx_r = __pyx_v_self->_debug_error_string;
  goto __pyx_L0;

  /* "src/python/grpcio/grpc/_cython/_cygrpc/aio/rpc_status.pyx.pxi":40
 *         return self._trailing_metadata
 * 
 *     cpdef str debug_error_string(self):             # <<<<<<<<<<<<<<
 *         return self._debug_error_string
 * 
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_XDECREF(__pyx_t_3);
  __Pyx_XDECREF(__pyx_t_4);
  __Pyx_AddTraceback("grpc._cython.cygrpc.AioRpcStatus.debug_error_string", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = 0;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* Python wrapper */
static PyObject *__pyx_pw_4grpc_7_cython_6cygrpc_12AioRpcStatus_9debug_error_string(PyObject *__pyx_v_self, CYTHON_UNUSED PyObject *unused); /*proto*/
static PyObject *__pyx_pw_4grpc_7_cython_6cygrpc_12AioRpcStatus_9debug_error_string(PyObject *__pyx_v_self, CYTHON_UNUSED PyObject *unused) {
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("debug_error_string (wrapper)", 0);
  __pyx_r = __pyx_pf_4grpc_7_cython_6cygrpc_12AioRpcStatus_8debug_error_string(((struct __pyx_obj_4grpc_7_cython_6cygrpc_AioRpcStatus *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_4grpc_7_cython_6cygrpc_12AioRpcStatus_8debug_error_string(struct __pyx_obj_4grpc_7_cython_6cygrpc_AioRpcStatus *__pyx_v_self) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("debug_error_string", 0);
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_1 = __pyx_f_4grpc_7_cython_6cygrpc_12AioRpcStatus_debug_error_string(__pyx_v_self, 1); if (unlikely(!__pyx_t_1)) __PYX_ERR(29, 40, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_r = __pyx_t_1;
  __pyx_t_1 = 0;
  goto __pyx_L0;

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_AddTraceback("grpc._cython.cygrpc.AioRpcStatus.debug_error_string", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "src/python/grpcio/grpc/_cython/_cygrpc/aio/rpc_status.pyx.pxi":43
 *         return self._debug_error_string
 * 
 *     cdef grpc_status_code c_code(self):             # <<<<<<<<<<<<<<
 *         return <grpc_status_code>self._code
 */

static grpc_status_code __pyx_f_4grpc_7_cython_6cygrpc_12AioRpcStatus_c_code(struct __pyx_obj_4grpc_7_cython_6cygrpc_AioRpcStatus *__pyx_v_self) {
  grpc_status_code __pyx_r;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("c_code", 0);

  /* "src/python/grpcio/grpc/_cython/_cygrpc/aio/rpc_status.pyx.pxi":44
 * 
 *     cdef grpc_status_code c_code(self):
 *         return <grpc_status_code>self._code             # <<<<<<<<<<<<<<
 */
  __pyx_r = ((grpc_status_code)__pyx_v_self->_code);
  goto __pyx_L0;

  /* "src/python/grpcio/grpc/_cython/_cygrpc/aio/rpc_status.pyx.pxi":43
 *         return self._debug_error_string
 * 
 *     cdef grpc_status_code c_code(self):             # <<<<<<<<<<<<<<
 *         return <grpc_status_code>self._code
 */

  /* function exit code */
  __pyx_L0:;
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "src/python/grpcio/grpc/_cython/_cygrpc/aio/rpc_status.pxd.pxi":19
 * cdef class AioRpcStatus(Exception):
 *     cdef readonly:
 *         grpc_status_code _code             # <<<<<<<<<<<<<<
 *         str _details
 *         # Per the spec, only client-side status has trailing metadata.
 */

/* Python wrapper */
static PyObject *__pyx_pw_4grpc_7_cython_6cygrpc_12AioRpcStatus_5_code_1__get__(PyObject *__pyx_v_self); /*proto*/
static PyObject *__pyx_pw_4grpc_7_cython_6cygrpc_12AioRpcStatus_5_code_1__get__(PyObject *__pyx_v_self) {
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__get__ (wrapper)", 0);
  __pyx_r = __pyx_pf_4grpc_7_cython_6cygrpc_12AioRpcStatus_5_code___get__(((struct __pyx_obj_4grpc_7_cython_6cygrpc_AioRpcStatus *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_4grpc_7_cython_6cygrpc_12AioRpcStatus_5_code___get__(struct __pyx_obj_4grpc_7_cython_6cygrpc_AioRpcStatus *__pyx_v_self) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("__get__", 0);
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_1 = __Pyx_PyInt_From_grpc_status_code(__pyx_v_self->_code); if (unlikely(!__pyx_t_1)) __PYX_ERR(30, 19, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_r = __pyx_t_1;
  __pyx_t_1 = 0;
  goto __pyx_L0;

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_AddTraceback("grpc._cython.cygrpc.AioRpcStatus._code.__get__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "src/python/grpcio/grpc/_cython/_cygrpc/aio/rpc_status.pxd.pxi":20
 *     cdef readonly:
 *         grpc_status_code _code
 *         str _details             # <<<<<<<<<<<<<<
 *         # Per the spec, only client-side status has trailing metadata.
 *         tuple _trailing_metadata
 */

/* Python wrapper */
static PyObject *__pyx_pw_4grpc_7_cython_6cygrpc_12AioRpcStatus_8_details_1__get__(PyObject *__pyx_v_self); /*proto*/
static PyObject *__pyx_pw_4grpc_7_cython_6cygrpc_12AioRpcStatus_8_details_1__get__(PyObject *__pyx_v_self) {
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__get__ (wrapper)", 0);
  __pyx_r = __pyx_pf_4grpc_7_cython_6cygrpc_12AioRpcStatus_8_details___get__(((struct __pyx_obj_4grpc_7_cython_6cygrpc_AioRpcStatus *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_4grpc_7_cython_6cygrpc_12AioRpcStatus_8_details___get__(struct __pyx_obj_4grpc_7_cython_6cygrpc_AioRpcStatus *__pyx_v_self) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__get__", 0);
  __Pyx_XDECREF(__pyx_r);
  __Pyx_INCREF(__pyx_v_self->_details);
  __pyx_r = __pyx_v_self->_details;
  goto __pyx_L0;

  /* function exit code */
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "src/python/grpcio/grpc/_cython/_cygrpc/aio/rpc_status.pxd.pxi":22
 *         str _details
 *         # Per the spec, only client-side status has trailing metadata.
 *         tuple _trailing_metadata             # <<<<<<<<<<<<<<
 *         str _debug_error_string
 * 
 */

/* Python wrapper */
static PyObject *__pyx_pw_4grpc_7_cython_6cygrpc_12AioRpcStatus_18_trailing_metadata_1__get__(PyObject *__pyx_v_self); /*proto*/
static PyObject *__pyx_pw_4grpc_7_cython_6cygrpc_12AioRpcStatus_18_trailing_metadata_1__get__(PyObject *__pyx_v_self) {
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__get__ (wrapper)", 0);
  __pyx_r = __pyx_pf_4grpc_7_cython_6cygrpc_12AioRpcStatus_18_trailing_metadata___get__(((struct __pyx_obj_4grpc_7_cython_6cygrpc_AioRpcStatus *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_4grpc_7_cython_6cygrpc_12AioRpcStatus_18_trailing_metadata___get__(struct __pyx_obj_4grpc_7_cython_6cygrpc_AioRpcStatus *__pyx_v_self) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__get__", 0);
  __Pyx_XDECREF(__pyx_r);
  __Pyx_INCREF(__pyx_v_self->_trailing_metadata);
  __pyx_r = __pyx_v_self->_trailing_metadata;
  goto __pyx_L0;

  /* function exit code */
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "src/python/grpcio/grpc/_cython/_cygrpc/aio/rpc_status.pxd.pxi":23
 *         # Per the spec, only client-side status has trailing metadata.
 *         tuple _trailing_metadata
 *         str _debug_error_string             # <<<<<<<<<<<<<<
 * 
 *     cpdef grpc_status_code code(self)
 */

/* Python wrapper */
static PyObject *__pyx_pw_4grpc_7_cython_6cygrpc_12AioRpcStatus_19_debug_error_string_1__get__(PyObject *__pyx_v_self); /*proto*/
static PyObject *__pyx_pw_4grpc_7_cython_6cygrpc_12AioRpcStatus_19_debug_error_string_1__get__(PyObject *__pyx_v_self) {
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__get__ (wrapper)", 0);
  __pyx_r = __pyx_pf_4grpc_7_cython_6cygrpc_12AioRpcStatus_19_debug_error_string___get__(((struct __pyx_obj_4grpc_7_cython_6cygrpc_AioRpcStatus *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_4grpc_7_cython_6cygrpc_12AioRpcStatus_19_debug_error_string___get__(struct __pyx_obj_4grpc_7_cython_6cygrpc_AioRpcStatus *__pyx_v_self) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__get__", 0);
  __Pyx_XDECREF(__pyx_r);
  __Pyx_INCREF(__pyx_v_self->_debug_error_string);
  __pyx_r = __pyx_v_self->_debug_error_string;
  goto __pyx_L0;

  /* function exit code */
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "(tree fragment)":1
 * def __reduce_cython__(self):             # <<<<<<<<<<<<<<
 *     raise TypeError("no default __reduce__ due to non-trivial __cinit__")
 * def __setstate_cython__(self, __pyx_state):
 */

/* Python wrapper */
static PyObject *__pyx_pw_4grpc_7_cython_6cygrpc_12AioRpcStatus_11__reduce_cython__(PyObject *__pyx_v_self, CYTHON_UNUSED PyObject *unused); /*proto*/
static PyObject *__pyx_pw_4grpc_7_cython_6cygrpc_12AioRpcStatus_11__reduce_cython__(PyObject *__pyx_v_self, CYTHON_UNUSED PyObject *unused) {
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__reduce_cython__ (wrapper)", 0);
  __pyx_r = __pyx_pf_4grpc_7_cython_6cygrpc_12AioRpcStatus_10__reduce_cython__(((struct __pyx_obj_4grpc_7_cython_6cygrpc_AioRpcStatus *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_4grpc_7_cython_6cygrpc_12AioRpcStatus_10__reduce_cython__(CYTHON_UNUSED struct __pyx_obj_4grpc_7_cython_6cygrpc_AioRpcStatus *__pyx_v_self) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("__reduce_cython__", 0);

  /* "(tree fragment)":2
 * def __reduce_cython__(self):
 *     raise TypeError("no default __reduce__ due to non-trivial __cinit__")             # <<<<<<<<<<<<<<
 * def __setstate_cython__(self, __pyx_state):
 *     raise TypeError("no default __reduce__ due to non-trivial __cinit__")
 */
  __pyx_t_1 = __Pyx_PyObject_Call(__pyx_builtin_TypeError, __pyx_tuple__142, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(11, 2, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_Raise(__pyx_t_1, 0, 0, 0);
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  __PYX_ERR(11, 2, __pyx_L1_error)

  /* "(tree fragment)":1
 * def __reduce_cython__(self):             # <<<<<<<<<<<<<<
 *     raise TypeError("no default __reduce__ due to non-trivial __cinit__")
 * def __setstate_cython__(self, __pyx_state):
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_AddTraceback("grpc._cython.cygrpc.AioRpcStatus.__reduce_cython__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "(tree fragment)":3
 * def __reduce_cython__(self):
 *     raise TypeError("no default __reduce__ due to non-trivial __cinit__")
 * def __setstate_cython__(self, __pyx_state):             # <<<<<<<<<<<<<<
 *     raise TypeError("no default __reduce__ due to non-trivial __cinit__")
 */

/* Python wrapper */
static PyObject *__pyx_pw_4grpc_7_cython_6cygrpc_12AioRpcStatus_13__setstate_cython__(PyObject *__pyx_v_self, PyObject *__pyx_v___pyx_state); /*proto*/
static PyObject *__pyx_pw_4grpc_7_cython_6cygrpc_12AioRpcStatus_13__setstate_cython__(PyObject *__pyx_v_self, PyObject *__pyx_v___pyx_state) {
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__setstate_cython__ (wrapper)", 0);
  __pyx_r = __pyx_pf_4grpc_7_cython_6cygrpc_12AioRpcStatus_12__setstate_cython__(((struct __pyx_obj_4grpc_7_cython_6cygrpc_AioRpcStatus *)__pyx_v_self), ((PyObject *)__pyx_v___pyx_state));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_4grpc_7_cython_6cygrpc_12AioRpcStatus_12__setstate_cython__(CYTHON_UNUSED struct __pyx_obj_4grpc_7_cython_6cygrpc_AioRpcStatus *__pyx_v_self, CYTHON_UNUSED PyObject *__pyx_v___pyx_state) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("__setstate_cython__", 0);

  /* "(tree fragment)":4
 *     raise TypeError("no default __reduce__ due to non-trivial __cinit__")
 * def __setstate_cython__(self, __pyx_state):
 *     raise TypeError("no default __reduce__ due to non-trivial __cinit__")             # <<<<<<<<<<<<<<
 */
  __pyx_t_1 = __Pyx_PyObject_Call(__pyx_builtin_TypeError, __pyx_tuple__143, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(11, 4, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_Raise(__pyx_t_1, 0, 0, 0);
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  __PYX_ERR(11, 4, __pyx_L1_error)

  /* "(tree fragment)":3
 * def __reduce_cython__(self):
 *     raise TypeError("no default __reduce__ due to non-trivial __cinit__")
 * def __setstate_cython__(self, __pyx_state):             # <<<<<<<<<<<<<<
 *     raise TypeError("no default __reduce__ due to non-trivial __cinit__")
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_AddTraceback("grpc._cython.cygrpc.AioRpcStatus.__setstate_cython__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "src/python/grpcio/grpc/_cython/_cygrpc/aio/completion_queue.pyx.pxi":30
 *     from posix cimport unistd
 * 
 *     cdef void _unified_socket_write(int fd) nogil:             # <<<<<<<<<<<<<<
 *         unistd.write(fd, b"1", 1)
 * 
 */

static void __pyx_f_4grpc_7_cython_6cygrpc__unified_socket_write(int __pyx_v_fd) {

  /* "src/python/grpcio/grpc/_cython/_cygrpc/aio/completion_queue.pyx.pxi":31
 * 
 *     cdef void _unified_socket_write(int fd) nogil:
 *         unistd.write(fd, b"1", 1)             # <<<<<<<<<<<<<<
 * 
 * 
 */
  (void)(write(__pyx_v_fd, ((char *)"1"), 1));

  /* "src/python/grpcio/grpc/_cython/_cygrpc/aio/completion_queue.pyx.pxi":30
 *     from posix cimport unistd
 * 
 *     cdef void _unified_socket_write(int fd) nogil:             # <<<<<<<<<<<<<<
 *         unistd.write(fd, b"1", 1)
 * 
 */

  /* function exit code */
}

/* "src/python/grpcio/grpc/_cython/_cygrpc/aio/completion_queue.pyx.pxi":34
 * 
 * 
 * def _handle_callback_wrapper(CallbackWrapper callback_wrapper, int success):             # <<<<<<<<<<<<<<
 *     CallbackWrapper.functor_run(callback_wrapper.c_functor(), success)
 * 
 */

/* Python wrapper */
static PyObject *__pyx_pw_4grpc_7_cython_6cygrpc_119_handle_callback_wrapper(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
static PyMethodDef __pyx_mdef_4grpc_7_cython_6cygrpc_119_handle_callback_wrapper = {"_handle_callback_wrapper", (PyCFunction)(void*)(PyCFunctionWithKeywords)__pyx_pw_4grpc_7_cython_6cygrpc_119_handle_callback_wrapper, METH_VARARGS|METH_KEYWORDS, 0};
static PyObject *__pyx_pw_4grpc_7_cython_6cygrpc_119_handle_callback_wrapper(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
  struct __pyx_obj_4grpc_7_cython_6cygrpc_CallbackWrapper *__pyx_v_callback_wrapper = 0;
  int __pyx_v_success;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("_handle_callback_wrapper (wrapper)", 0);
  {
    static PyObject **__pyx_pyargnames[] = {&__pyx_n_s_callback_wrapper,&__pyx_n_s_success,0};
    PyObject* values[2] = {0,0};
    if (unlikely(__pyx_kwds)) {
      Py_ssize_t kw_args;
      const Py_ssize_t pos_args = PyTuple_GET_SIZE(__pyx_args);
      switch (pos_args) {
        case  2: values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
        CYTHON_FALLTHROUGH;
        case  1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
        CYTHON_FALLTHROUGH;
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      kw_args = PyDict_Size(__pyx_kwds);
      switch (pos_args) {
        case  0:
        if (likely((values[0] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_callback_wrapper)) != 0)) kw_args--;
        else goto __pyx_L5_argtuple_error;
        CYTHON_FALLTHROUGH;
        case  1:
        if (likely((values[1] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_success)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("_handle_callback_wrapper", 1, 2, 2, 1); __PYX_ERR(8, 34, __pyx_L3_error)
        }
      }
      if (unlikely(kw_args > 0)) {
        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "_handle_callback_wrapper") < 0)) __PYX_ERR(8, 34, __pyx_L3_error)
      }
    } else if (PyTuple_GET_SIZE(__pyx_args) != 2) {
      goto __pyx_L5_argtuple_error;
    } else {
      values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
      values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
    }
    __pyx_v_callback_wrapper = ((struct __pyx_obj_4grpc_7_cython_6cygrpc_CallbackWrapper *)values[0]);
    __pyx_v_success = __Pyx_PyInt_As_int(values[1]); if (unlikely((__pyx_v_success == (int)-1) && PyErr_Occurred())) __PYX_ERR(8, 34, __pyx_L3_error)
  }
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("_handle_callback_wrapper", 1, 2, 2, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(8, 34, __pyx_L3_error)
  __pyx_L3_error:;
  __Pyx_AddTraceback("grpc._cython.cygrpc._handle_callback_wrapper", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_callback_wrapper), __pyx_ptype_4grpc_7_cython_6cygrpc_CallbackWrapper, 1, "callback_wrapper", 0))) __PYX_ERR(8, 34, __pyx_L1_error)
  __pyx_r = __pyx_pf_4grpc_7_cython_6cygrpc_118_handle_callback_wrapper(__pyx_self, __pyx_v_callback_wrapper, __pyx_v_success);

  /* function exit code */
  goto __pyx_L0;
  __pyx_L1_error:;
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_4grpc_7_cython_6cygrpc_118_handle_callback_wrapper(CYTHON_UNUSED PyObject *__pyx_self, struct __pyx_obj_4grpc_7_cython_6cygrpc_CallbackWrapper *__pyx_v_callback_wrapper, int __pyx_v_success) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("_handle_callback_wrapper", 0);

  /* "src/python/grpcio/grpc/_cython/_cygrpc/aio/completion_queue.pyx.pxi":35
 * 
 * def _handle_callback_wrapper(CallbackWrapper callback_wrapper, int success):
 *     CallbackWrapper.functor_run(callback_wrapper.c_functor(), success)             # <<<<<<<<<<<<<<
 * 
 * 
 */
  __pyx_f_4grpc_7_cython_6cygrpc_15CallbackWrapper_functor_run(((struct __pyx_vtabstruct_4grpc_7_cython_6cygrpc_CallbackWrapper *)__pyx_v_callback_wrapper->__pyx_vtab)->c_functor(__pyx_v_callback_wrapper), __pyx_v_success);

  /* "src/python/grpcio/grpc/_cython/_cygrpc/aio/completion_queue.pyx.pxi":34
 * 
 * 
 * def _handle_callback_wrapper(CallbackWrapper callback_wrapper, int success):             # <<<<<<<<<<<<<<
 *     CallbackWrapper.functor_run(callback_wrapper.c_functor(), success)
 * 
 */

  /* function exit code */
  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "src/python/grpcio/grpc/_cython/_cygrpc/aio/completion_queue.pyx.pxi":40
 * cdef class BaseCompletionQueue:
 * 
 *     cdef grpc_completion_queue* c_ptr(self):             # <<<<<<<<<<<<<<
 *         return self._cq
 * 
 */

static grpc_completion_queue *__pyx_f_4grpc_7_cython_6cygrpc_19BaseCompletionQueue_c_ptr(struct __pyx_obj_4grpc_7_cython_6cygrpc_BaseCompletionQueue *__pyx_v_self) {
  grpc_completion_queue *__pyx_r;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("c_ptr", 0);

  /* "src/python/grpcio/grpc/_cython/_cygrpc/aio/completion_queue.pyx.pxi":41
 * 
 *     cdef grpc_completion_queue* c_ptr(self):
 *         return self._cq             # <<<<<<<<<<<<<<
 * 
 * 
 */
  __pyx_r = __pyx_v_self->_cq;
  goto __pyx_L0;

  /* "src/python/grpcio/grpc/_cython/_cygrpc/aio/completion_queue.pyx.pxi":40
 * cdef class BaseCompletionQueue:
 * 
 *     cdef grpc_completion_queue* c_ptr(self):             # <<<<<<<<<<<<<<
 *         return self._cq
 * 
 */

  /* function exit code */
  __pyx_L0:;
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "(tree fragment)":1
 * def __reduce_cython__(self):             # <<<<<<<<<<<<<<
 *     raise TypeError("self._cq cannot be converted to a Python object for pickling")
 * def __setstate_cython__(self, __pyx_state):
 */

/* Python wrapper */
static PyObject *__pyx_pw_4grpc_7_cython_6cygrpc_19BaseCompletionQueue_1__reduce_cython__(PyObject *__pyx_v_self, CYTHON_UNUSED PyObject *unused); /*proto*/
static PyObject *__pyx_pw_4grpc_7_cython_6cygrpc_19BaseCompletionQueue_1__reduce_cython__(PyObject *__pyx_v_self, CYTHON_UNUSED PyObject *unused) {
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__reduce_cython__ (wrapper)", 0);
  __pyx_r = __pyx_pf_4grpc_7_cython_6cygrpc_19BaseCompletionQueue___reduce_cython__(((struct __pyx_obj_4grpc_7_cython_6cygrpc_BaseCompletionQueue *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_4grpc_7_cython_6cygrpc_19BaseCompletionQueue___reduce_cython__(CYTHON_UNUSED struct __pyx_obj_4grpc_7_cython_6cygrpc_BaseCompletionQueue *__pyx_v_self) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("__reduce_cython__", 0);

  /* "(tree fragment)":2
 * def __reduce_cython__(self):
 *     raise TypeError("self._cq cannot be converted to a Python object for pickling")             # <<<<<<<<<<<<<<
 * def __setstate_cython__(self, __pyx_state):
 *     raise TypeError("self._cq cannot be converted to a Python object for pickling")
 */
  __pyx_t_1 = __Pyx_PyObject_Call(__pyx_builtin_TypeError, __pyx_tuple__144, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(11, 2, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_Raise(__pyx_t_1, 0, 0, 0);
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  __PYX_ERR(11, 2, __pyx_L1_error)

  /* "(tree fragment)":1
 * def __reduce_cython__(self):             # <<<<<<<<<<<<<<
 *     raise TypeError("self._cq cannot be converted to a Python object for pickling")
 * def __setstate_cython__(self, __pyx_state):
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_AddTraceback("grpc._cython.cygrpc.BaseCompletionQueue.__reduce_cython__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "(tree fragment)":3
 * def __reduce_cython__(self):
 *     raise TypeError("self._cq cannot be converted to a Python object for pickling")
 * def __setstate_cython__(self, __pyx_state):             # <<<<<<<<<<<<<<
 *     raise TypeError("self._cq cannot be converted to a Python object for pickling")
 */

/* Python wrapper */
static PyObject *__pyx_pw_4grpc_7_cython_6cygrpc_19BaseCompletionQueue_3__setstate_cython__(PyObject *__pyx_v_self, PyObject *__pyx_v___pyx_state); /*proto*/
static PyObject *__pyx_pw_4grpc_7_cython_6cygrpc_19BaseCompletionQueue_3__setstate_cython__(PyObject *__pyx_v_self, PyObject *__pyx_v___pyx_state) {
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__setstate_cython__ (wrapper)", 0);
  __pyx_r = __pyx_pf_4grpc_7_cython_6cygrpc_19BaseCompletionQueue_2__setstate_cython__(((struct __pyx_obj_4grpc_7_cython_6cygrpc_BaseCompletionQueue *)__pyx_v_self), ((PyObject *)__pyx_v___pyx_state));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_4grpc_7_cython_6cygrpc_19BaseCompletionQueue_2__setstate_cython__(CYTHON_UNUSED struct __pyx_obj_4grpc_7_cython_6cygrpc_BaseCompletionQueue *__pyx_v_self, CYTHON_UNUSED PyObject *__pyx_v___pyx_state) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("__setstate_cython__", 0);

  /* "(tree fragment)":4
 *     raise TypeError("self._cq cannot be converted to a Python object for pickling")
 * def __setstate_cython__(self, __pyx_state):
 *     raise TypeError("self._cq cannot be converted to a Python object for pickling")             # <<<<<<<<<<<<<<
 */
  __pyx_t_1 = __Pyx_PyObject_Call(__pyx_builtin_TypeError, __pyx_tuple__145, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(11, 4, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_Raise(__pyx_t_1, 0, 0, 0);
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  __PYX_ERR(11, 4, __pyx_L1_error)

  /* "(tree fragment)":3
 * def __reduce_cython__(self):
 *     raise TypeError("self._cq cannot be converted to a Python object for pickling")
 * def __setstate_cython__(self, __pyx_state):             # <<<<<<<<<<<<<<
 *     raise TypeError("self._cq cannot be converted to a Python object for pickling")
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_AddTraceback("grpc._cython.cygrpc.BaseCompletionQueue.__setstate_cython__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "src/python/grpcio/grpc/_cython/_cygrpc/aio/completion_queue.pyx.pxi":46
 * cdef class _BoundEventLoop:
 * 
 *     def __cinit__(self, object loop, object read_socket, object handler):             # <<<<<<<<<<<<<<
 *         global _has_fd_monitoring
 *         self.loop = loop
 */

/* Python wrapper */
static int __pyx_pw_4grpc_7_cython_6cygrpc_15_BoundEventLoop_1__cinit__(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
static int __pyx_pw_4grpc_7_cython_6cygrpc_15_BoundEventLoop_1__cinit__(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
  PyObject *__pyx_v_loop = 0;
  PyObject *__pyx_v_read_socket = 0;
  PyObject *__pyx_v_handler = 0;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  int __pyx_r;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__cinit__ (wrapper)", 0);
  {
    static PyObject **__pyx_pyargnames[] = {&__pyx_n_s_loop,&__pyx_n_s_read_socket,&__pyx_n_s_handler,0};
    PyObject* values[3] = {0,0,0};
    if (unlikely(__pyx_kwds)) {
      Py_ssize_t kw_args;
      const Py_ssize_t pos_args = PyTuple_GET_SIZE(__pyx_args);
      switch (pos_args) {
        case  3: values[2] = PyTuple_GET_ITEM(__pyx_args, 2);
        CYTHON_FALLTHROUGH;
        case  2: values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
        CYTHON_FALLTHROUGH;
        case  1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
        CYTHON_FALLTHROUGH;
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      kw_args = PyDict_Size(__pyx_kwds);
      switch (pos_args) {
        case  0:
        if (likely((values[0] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_loop)) != 0)) kw_args--;
        else goto __pyx_L5_argtuple_error;
        CYTHON_FALLTHROUGH;
        case  1:
        if (likely((values[1] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_read_socket)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("__cinit__", 1, 3, 3, 1); __PYX_ERR(8, 46, __pyx_L3_error)
        }
        CYTHON_FALLTHROUGH;
        case  2:
        if (likely((values[2] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_handler)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("__cinit__", 1, 3, 3, 2); __PYX_ERR(8, 46, __pyx_L3_error)
        }
      }
      if (unlikely(kw_args > 0)) {
        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "__cinit__") < 0)) __PYX_ERR(8, 46, __pyx_L3_error)
      }
    } else if (PyTuple_GET_SIZE(__pyx_args) != 3) {
      goto __pyx_L5_argtuple_error;
    } else {
      values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
      values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
      values[2] = PyTuple_GET_ITEM(__pyx_args, 2);
    }
    __pyx_v_loop = values[0];
    __pyx_v_read_socket = values[1];
    __pyx_v_handler = values[2];
  }
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("__cinit__", 1, 3, 3, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(8, 46, __pyx_L3_error)
  __pyx_L3_error:;
  __Pyx_AddTraceback("grpc._cython.cygrpc._BoundEventLoop.__cinit__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return -1;
  __pyx_L4_argument_unpacking_done:;
  __pyx_r = __pyx_pf_4grpc_7_cython_6cygrpc_15_BoundEventLoop___cinit__(((struct __pyx_obj_4grpc_7_cython_6cygrpc__BoundEventLoop *)__pyx_v_self), __pyx_v_loop, __pyx_v_read_socket, __pyx_v_handler);

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static int __pyx_pf_4grpc_7_cython_6cygrpc_15_BoundEventLoop___cinit__(struct __pyx_obj_4grpc_7_cython_6cygrpc__BoundEventLoop *__pyx_v_self, PyObject *__pyx_v_loop, PyObject *__pyx_v_read_socket, PyObject *__pyx_v_handler) {
  PyObject *__pyx_v_reader_function = NULL;
  int __pyx_r;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  PyObject *__pyx_t_2 = NULL;
  PyObject *__pyx_t_3 = NULL;
  int __pyx_t_4;
  PyObject *__pyx_t_5 = NULL;
  int __pyx_t_6;
  PyObject *__pyx_t_7 = NULL;
  PyObject *__pyx_t_8 = NULL;
  PyObject *__pyx_t_9 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("__cinit__", 0);

  /* "src/python/grpcio/grpc/_cython/_cygrpc/aio/completion_queue.pyx.pxi":48
 *     def __cinit__(self, object loop, object read_socket, object handler):
 *         global _has_fd_monitoring
 *         self.loop = loop             # <<<<<<<<<<<<<<
 *         self.read_socket = read_socket
 *         reader_function = functools.partial(
 */
  __Pyx_INCREF(__pyx_v_loop);
  __Pyx_GIVEREF(__pyx_v_loop);
  __Pyx_GOTREF(__pyx_v_self->loop);
  __Pyx_DECREF(__pyx_v_self->loop);
  __pyx_v_self->loop = __pyx_v_loop;

  /* "src/python/grpcio/grpc/_cython/_cygrpc/aio/completion_queue.pyx.pxi":49
 *         global _has_fd_monitoring
 *         self.loop = loop
 *         self.read_socket = read_socket             # <<<<<<<<<<<<<<
 *         reader_function = functools.partial(
 *             handler,
 */
  __Pyx_INCREF(__pyx_v_read_socket);
  __Pyx_GIVEREF(__pyx_v_read_socket);
  __Pyx_GOTREF(__pyx_v_self->read_socket);
  __Pyx_DECREF(__pyx_v_self->read_socket);
  __pyx_v_self->read_socket = __pyx_v_read_socket;

  /* "src/python/grpcio/grpc/_cython/_cygrpc/aio/completion_queue.pyx.pxi":50
 *         self.loop = loop
 *         self.read_socket = read_socket
 *         reader_function = functools.partial(             # <<<<<<<<<<<<<<
 *             handler,
 *             loop
 */
  __Pyx_GetModuleGlobalName(__pyx_t_2, __pyx_n_s_functools); if (unlikely(!__pyx_t_2)) __PYX_ERR(8, 50, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __pyx_t_3 = __Pyx_PyObject_GetAttrStr(__pyx_t_2, __pyx_n_s_partial); if (unlikely(!__pyx_t_3)) __PYX_ERR(8, 50, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;

  /* "src/python/grpcio/grpc/_cython/_cygrpc/aio/completion_queue.pyx.pxi":52
 *         reader_function = functools.partial(
 *             handler,
 *             loop             # <<<<<<<<<<<<<<
 *         )
 *         # NOTE(lidiz) There isn't a way to cleanly pre-check if fd monitoring
 */
  __pyx_t_2 = NULL;
  __pyx_t_4 = 0;
  if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_3))) {
    __pyx_t_2 = PyMethod_GET_SELF(__pyx_t_3);
    if (likely(__pyx_t_2)) {
      PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_3);
      __Pyx_INCREF(__pyx_t_2);
      __Pyx_INCREF(function);
      __Pyx_DECREF_SET(__pyx_t_3, function);
      __pyx_t_4 = 1;
    }
  }
  #if CYTHON_FAST_PYCALL
  if (PyFunction_Check(__pyx_t_3)) {
    PyObject *__pyx_temp[3] = {__pyx_t_2, __pyx_v_handler, __pyx_v_loop};
    __pyx_t_1 = __Pyx_PyFunction_FastCall(__pyx_t_3, __pyx_temp+1-__pyx_t_4, 2+__pyx_t_4); if (unlikely(!__pyx_t_1)) __PYX_ERR(8, 50, __pyx_L1_error)
    __Pyx_XDECREF(__pyx_t_2); __pyx_t_2 = 0;
    __Pyx_GOTREF(__pyx_t_1);
  } else
  #endif
  #if CYTHON_FAST_PYCCALL
  if (__Pyx_PyFastCFunction_Check(__pyx_t_3)) {
    PyObject *__pyx_temp[3] = {__pyx_t_2, __pyx_v_handler, __pyx_v_loop};
    __pyx_t_1 = __Pyx_PyCFunction_FastCall(__pyx_t_3, __pyx_temp+1-__pyx_t_4, 2+__pyx_t_4); if (unlikely(!__pyx_t_1)) __PYX_ERR(8, 50, __pyx_L1_error)
    __Pyx_XDECREF(__pyx_t_2); __pyx_t_2 = 0;
    __Pyx_GOTREF(__pyx_t_1);
  } else
  #endif
  {
    __pyx_t_5 = PyTuple_New(2+__pyx_t_4); if (unlikely(!__pyx_t_5)) __PYX_ERR(8, 50, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_5);
    if (__pyx_t_2) {
      __Pyx_GIVEREF(__pyx_t_2); PyTuple_SET_ITEM(__pyx_t_5, 0, __pyx_t_2); __pyx_t_2 = NULL;
    }
    __Pyx_INCREF(__pyx_v_handler);
    __Pyx_GIVEREF(__pyx_v_handler);
    PyTuple_SET_ITEM(__pyx_t_5, 0+__pyx_t_4, __pyx_v_handler);
    __Pyx_INCREF(__pyx_v_loop);
    __Pyx_GIVEREF(__pyx_v_loop);
    PyTuple_SET_ITEM(__pyx_t_5, 1+__pyx_t_4, __pyx_v_loop);
    __pyx_t_1 = __Pyx_PyObject_Call(__pyx_t_3, __pyx_t_5, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(8, 50, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_1);
    __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
  }
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
  __pyx_v_reader_function = __pyx_t_1;
  __pyx_t_1 = 0;

  /* "src/python/grpcio/grpc/_cython/_cygrpc/aio/completion_queue.pyx.pxi":58
 *         # good enough. The application can has its own loop implementation, or
 *         # uses different types of event loops (e.g., 1 Proactor, 3 Selectors).
 *         if _has_fd_monitoring:             # <<<<<<<<<<<<<<
 *             try:
 *                 self.loop.add_reader(self.read_socket, reader_function)
 */
  __pyx_t_6 = (__pyx_v_4grpc_7_cython_6cygrpc__has_fd_monitoring != 0);
  if (__pyx_t_6) {

    /* "src/python/grpcio/grpc/_cython/_cygrpc/aio/completion_queue.pyx.pxi":59
 *         # uses different types of event loops (e.g., 1 Proactor, 3 Selectors).
 *         if _has_fd_monitoring:
 *             try:             # <<<<<<<<<<<<<<
 *                 self.loop.add_reader(self.read_socket, reader_function)
 *                 self._has_reader = True
 */
    {
      __Pyx_PyThreadState_declare
      __Pyx_PyThreadState_assign
      __Pyx_ExceptionSave(&__pyx_t_7, &__pyx_t_8, &__pyx_t_9);
      __Pyx_XGOTREF(__pyx_t_7);
      __Pyx_XGOTREF(__pyx_t_8);
      __Pyx_XGOTREF(__pyx_t_9);
      /*try:*/ {

        /* "src/python/grpcio/grpc/_cython/_cygrpc/aio/completion_queue.pyx.pxi":60
 *         if _has_fd_monitoring:
 *             try:
 *                 self.loop.add_reader(self.read_socket, reader_function)             # <<<<<<<<<<<<<<
 *                 self._has_reader = True
 *             except NotImplementedError:
 */
        __pyx_t_3 = __Pyx_PyObject_GetAttrStr(__pyx_v_self->loop, __pyx_n_s_add_reader); if (unlikely(!__pyx_t_3)) __PYX_ERR(8, 60, __pyx_L4_error)
        __Pyx_GOTREF(__pyx_t_3);
        __pyx_t_5 = NULL;
        __pyx_t_4 = 0;
        if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_3))) {
          __pyx_t_5 = PyMethod_GET_SELF(__pyx_t_3);
          if (likely(__pyx_t_5)) {
            PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_3);
            __Pyx_INCREF(__pyx_t_5);
            __Pyx_INCREF(function);
            __Pyx_DECREF_SET(__pyx_t_3, function);
            __pyx_t_4 = 1;
          }
        }
        #if CYTHON_FAST_PYCALL
        if (PyFunction_Check(__pyx_t_3)) {
          PyObject *__pyx_temp[3] = {__pyx_t_5, __pyx_v_self->read_socket, __pyx_v_reader_function};
          __pyx_t_1 = __Pyx_PyFunction_FastCall(__pyx_t_3, __pyx_temp+1-__pyx_t_4, 2+__pyx_t_4); if (unlikely(!__pyx_t_1)) __PYX_ERR(8, 60, __pyx_L4_error)
          __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0;
          __Pyx_GOTREF(__pyx_t_1);
        } else
        #endif
        #if CYTHON_FAST_PYCCALL
        if (__Pyx_PyFastCFunction_Check(__pyx_t_3)) {
          PyObject *__pyx_temp[3] = {__pyx_t_5, __pyx_v_self->read_socket, __pyx_v_reader_function};
          __pyx_t_1 = __Pyx_PyCFunction_FastCall(__pyx_t_3, __pyx_temp+1-__pyx_t_4, 2+__pyx_t_4); if (unlikely(!__pyx_t_1)) __PYX_ERR(8, 60, __pyx_L4_error)
          __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0;
          __Pyx_GOTREF(__pyx_t_1);
        } else
        #endif
        {
          __pyx_t_2 = PyTuple_New(2+__pyx_t_4); if (unlikely(!__pyx_t_2)) __PYX_ERR(8, 60, __pyx_L4_error)
          __Pyx_GOTREF(__pyx_t_2);
          if (__pyx_t_5) {
            __Pyx_GIVEREF(__pyx_t_5); PyTuple_SET_ITEM(__pyx_t_2, 0, __pyx_t_5); __pyx_t_5 = NULL;
          }
          __Pyx_INCREF(__pyx_v_self->read_socket);
          __Pyx_GIVEREF(__pyx_v_self->read_socket);
          PyTuple_SET_ITEM(__pyx_t_2, 0+__pyx_t_4, __pyx_v_self->read_socket);
          __Pyx_INCREF(__pyx_v_reader_function);
          __Pyx_GIVEREF(__pyx_v_reader_function);
          PyTuple_SET_ITEM(__pyx_t_2, 1+__pyx_t_4, __pyx_v_reader_function);
          __pyx_t_1 = __Pyx_PyObject_Call(__pyx_t_3, __pyx_t_2, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(8, 60, __pyx_L4_error)
          __Pyx_GOTREF(__pyx_t_1);
          __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
        }
        __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
        __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;

        /* "src/python/grpcio/grpc/_cython/_cygrpc/aio/completion_queue.pyx.pxi":61
 *             try:
 *                 self.loop.add_reader(self.read_socket, reader_function)
 *                 self._has_reader = True             # <<<<<<<<<<<<<<
 *             except NotImplementedError:
 *                 _has_fd_monitoring = False
 */
        __pyx_v_self->_has_reader = 1;

        /* "src/python/grpcio/grpc/_cython/_cygrpc/aio/completion_queue.pyx.pxi":59
 *         # uses different types of event loops (e.g., 1 Proactor, 3 Selectors).
 *         if _has_fd_monitoring:
 *             try:             # <<<<<<<<<<<<<<
 *                 self.loop.add_reader(self.read_socket, reader_function)
 *                 self._has_reader = True
 */
      }
      __Pyx_XDECREF(__pyx_t_7); __pyx_t_7 = 0;
      __Pyx_XDECREF(__pyx_t_8); __pyx_t_8 = 0;
      __Pyx_XDECREF(__pyx_t_9); __pyx_t_9 = 0;
      goto __pyx_L9_try_end;
      __pyx_L4_error:;
      __Pyx_XDECREF(__pyx_t_1); __pyx_t_1 = 0;
      __Pyx_XDECREF(__pyx_t_2); __pyx_t_2 = 0;
      __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0;
      __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0;

      /* "src/python/grpcio/grpc/_cython/_cygrpc/aio/completion_queue.pyx.pxi":62
 *                 self.loop.add_reader(self.read_socket, reader_function)
 *                 self._has_reader = True
 *             except NotImplementedError:             # <<<<<<<<<<<<<<
 *                 _has_fd_monitoring = False
 *                 self._has_reader = False
 */
      __pyx_t_4 = __Pyx_PyErr_ExceptionMatches(__pyx_builtin_NotImplementedError);
      if (__pyx_t_4) {
        __Pyx_AddTraceback("grpc._cython.cygrpc._BoundEventLoop.__cinit__", __pyx_clineno, __pyx_lineno, __pyx_filename);
        if (__Pyx_GetException(&__pyx_t_1, &__pyx_t_3, &__pyx_t_2) < 0) __PYX_ERR(8, 62, __pyx_L6_except_error)
        __Pyx_GOTREF(__pyx_t_1);
        __Pyx_GOTREF(__pyx_t_3);
        __Pyx_GOTREF(__pyx_t_2);

        /* "src/python/grpcio/grpc/_cython/_cygrpc/aio/completion_queue.pyx.pxi":63
 *                 self._has_reader = True
 *             except NotImplementedError:
 *                 _has_fd_monitoring = False             # <<<<<<<<<<<<<<
 *                 self._has_reader = False
 * 
 */
        __pyx_v_4grpc_7_cython_6cygrpc__has_fd_monitoring = 0;

        /* "src/python/grpcio/grpc/_cython/_cygrpc/aio/completion_queue.pyx.pxi":64
 *             except NotImplementedError:
 *                 _has_fd_monitoring = False
 *                 self._has_reader = False             # <<<<<<<<<<<<<<
 * 
 *     def close(self):
 */
        __pyx_v_self->_has_reader = 0;
        __Pyx_XDECREF(__pyx_t_1); __pyx_t_1 = 0;
        __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0;
        __Pyx_XDECREF(__pyx_t_2); __pyx_t_2 = 0;
        goto __pyx_L5_exception_handled;
      }
      goto __pyx_L6_except_error;
      __pyx_L6_except_error:;

      /* "src/python/grpcio/grpc/_cython/_cygrpc/aio/completion_queue.pyx.pxi":59
 *         # uses different types of event loops (e.g., 1 Proactor, 3 Selectors).
 *         if _has_fd_monitoring:
 *             try:             # <<<<<<<<<<<<<<
 *                 self.loop.add_reader(self.read_socket, reader_function)
 *                 self._has_reader = True
 */
      __Pyx_XGIVEREF(__pyx_t_7);
      __Pyx_XGIVEREF(__pyx_t_8);
      __Pyx_XGIVEREF(__pyx_t_9);
      __Pyx_ExceptionReset(__pyx_t_7, __pyx_t_8, __pyx_t_9);
      goto __pyx_L1_error;
      __pyx_L5_exception_handled:;
      __Pyx_XGIVEREF(__pyx_t_7);
      __Pyx_XGIVEREF(__pyx_t_8);
      __Pyx_XGIVEREF(__pyx_t_9);
      __Pyx_ExceptionReset(__pyx_t_7, __pyx_t_8, __pyx_t_9);
      __pyx_L9_try_end:;
    }

    /* "src/python/grpcio/grpc/_cython/_cygrpc/aio/completion_queue.pyx.pxi":58
 *         # good enough. The application can has its own loop implementation, or
 *         # uses different types of event loops (e.g., 1 Proactor, 3 Selectors).
 *         if _has_fd_monitoring:             # <<<<<<<<<<<<<<
 *             try:
 *                 self.loop.add_reader(self.read_socket, reader_function)
 */
  }

  /* "src/python/grpcio/grpc/_cython/_cygrpc/aio/completion_queue.pyx.pxi":46
 * cdef class _BoundEventLoop:
 * 
 *     def __cinit__(self, object loop, object read_socket, object handler):             # <<<<<<<<<<<<<<
 *         global _has_fd_monitoring
 *         self.loop = loop
 */

  /* function exit code */
  __pyx_r = 0;
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_XDECREF(__pyx_t_3);
  __Pyx_XDECREF(__pyx_t_5);
  __Pyx_AddTraceback("grpc._cython.cygrpc._BoundEventLoop.__cinit__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = -1;
  __pyx_L0:;
  __Pyx_XDECREF(__pyx_v_reader_function);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "src/python/grpcio/grpc/_cython/_cygrpc/aio/completion_queue.pyx.pxi":66
 *                 self._has_reader = False
 * 
 *     def close(self):             # <<<<<<<<<<<<<<
 *         if self.loop:
 *             if self._has_reader:
 */

/* Python wrapper */
static PyObject *__pyx_pw_4grpc_7_cython_6cygrpc_15_BoundEventLoop_3close(PyObject *__pyx_v_self, CYTHON_UNUSED PyObject *unused); /*proto*/
static PyObject *__pyx_pw_4grpc_7_cython_6cygrpc_15_BoundEventLoop_3close(PyObject *__pyx_v_self, CYTHON_UNUSED PyObject *unused) {
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("close (wrapper)", 0);
  __pyx_r = __pyx_pf_4grpc_7_cython_6cygrpc_15_BoundEventLoop_2close(((struct __pyx_obj_4grpc_7_cython_6cygrpc__BoundEventLoop *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_4grpc_7_cython_6cygrpc_15_BoundEventLoop_2close(struct __pyx_obj_4grpc_7_cython_6cygrpc__BoundEventLoop *__pyx_v_self) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  int __pyx_t_1;
  PyObject *__pyx_t_2 = NULL;
  PyObject *__pyx_t_3 = NULL;
  PyObject *__pyx_t_4 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("close", 0);

  /* "src/python/grpcio/grpc/_cython/_cygrpc/aio/completion_queue.pyx.pxi":67
 * 
 *     def close(self):
 *         if self.loop:             # <<<<<<<<<<<<<<
 *             if self._has_reader:
 *                 self.loop.remove_reader(self.read_socket)
 */
  __pyx_t_1 = __Pyx_PyObject_IsTrue(__pyx_v_self->loop); if (unlikely(__pyx_t_1 < 0)) __PYX_ERR(8, 67, __pyx_L1_error)
  if (__pyx_t_1) {

    /* "src/python/grpcio/grpc/_cython/_cygrpc/aio/completion_queue.pyx.pxi":68
 *     def close(self):
 *         if self.loop:
 *             if self._has_reader:             # <<<<<<<<<<<<<<
 *                 self.loop.remove_reader(self.read_socket)
 * 
 */
    __pyx_t_1 = (__pyx_v_self->_has_reader != 0);
    if (__pyx_t_1) {

      /* "src/python/grpcio/grpc/_cython/_cygrpc/aio/completion_queue.pyx.pxi":69
 *         if self.loop:
 *             if self._has_reader:
 *                 self.loop.remove_reader(self.read_socket)             # <<<<<<<<<<<<<<
 * 
 * 
 */
      __pyx_t_3 = __Pyx_PyObject_GetAttrStr(__pyx_v_self->loop, __pyx_n_s_remove_reader); if (unlikely(!__pyx_t_3)) __PYX_ERR(8, 69, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_3);
      __pyx_t_4 = NULL;
      if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_3))) {
        __pyx_t_4 = PyMethod_GET_SELF(__pyx_t_3);
        if (likely(__pyx_t_4)) {
          PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_3);
          __Pyx_INCREF(__pyx_t_4);
          __Pyx_INCREF(function);
          __Pyx_DECREF_SET(__pyx_t_3, function);
        }
      }
      __pyx_t_2 = (__pyx_t_4) ? __Pyx_PyObject_Call2Args(__pyx_t_3, __pyx_t_4, __pyx_v_self->read_socket) : __Pyx_PyObject_CallOneArg(__pyx_t_3, __pyx_v_self->read_socket);
      __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0;
      if (unlikely(!__pyx_t_2)) __PYX_ERR(8, 69, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_2);
      __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
      __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;

      /* "src/python/grpcio/grpc/_cython/_cygrpc/aio/completion_queue.pyx.pxi":68
 *     def close(self):
 *         if self.loop:
 *             if self._has_reader:             # <<<<<<<<<<<<<<
 *                 self.loop.remove_reader(self.read_socket)
 * 
 */
    }

    /* "src/python/grpcio/grpc/_cython/_cygrpc/aio/completion_queue.pyx.pxi":67
 * 
 *     def close(self):
 *         if self.loop:             # <<<<<<<<<<<<<<
 *             if self._has_reader:
 *                 self.loop.remove_reader(self.read_socket)
 */
  }

  /* "src/python/grpcio/grpc/_cython/_cygrpc/aio/completion_queue.pyx.pxi":66
 *                 self._has_reader = False
 * 
 *     def close(self):             # <<<<<<<<<<<<<<
 *         if self.loop:
 *             if self._has_reader:
 */

  /* function exit code */
  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_XDECREF(__pyx_t_3);
  __Pyx_XDECREF(__pyx_t_4);
  __Pyx_AddTraceback("grpc._cython.cygrpc._BoundEventLoop.close", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "src/python/grpcio/grpc/_cython/_cygrpc/aio/completion_queue.pxd.pxi":54
 * 
 * cdef class _BoundEventLoop:
 *     cdef readonly object loop             # <<<<<<<<<<<<<<
 *     cdef readonly object read_socket  # socket.socket
 *     cdef bint _has_reader
 */

/* Python wrapper */
static PyObject *__pyx_pw_4grpc_7_cython_6cygrpc_15_BoundEventLoop_4loop_1__get__(PyObject *__pyx_v_self); /*proto*/
static PyObject *__pyx_pw_4grpc_7_cython_6cygrpc_15_BoundEventLoop_4loop_1__get__(PyObject *__pyx_v_self) {
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__get__ (wrapper)", 0);
  __pyx_r = __pyx_pf_4grpc_7_cython_6cygrpc_15_BoundEventLoop_4loop___get__(((struct __pyx_obj_4grpc_7_cython_6cygrpc__BoundEventLoop *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_4grpc_7_cython_6cygrpc_15_BoundEventLoop_4loop___get__(struct __pyx_obj_4grpc_7_cython_6cygrpc__BoundEventLoop *__pyx_v_self) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__get__", 0);
  __Pyx_XDECREF(__pyx_r);
  __Pyx_INCREF(__pyx_v_self->loop);
  __pyx_r = __pyx_v_self->loop;
  goto __pyx_L0;

  /* function exit code */
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "src/python/grpcio/grpc/_cython/_cygrpc/aio/completion_queue.pxd.pxi":55
 * cdef class _BoundEventLoop:
 *     cdef readonly object loop
 *     cdef readonly object read_socket  # socket.socket             # <<<<<<<<<<<<<<
 *     cdef bint _has_reader
 * 
 */

/* Python wrapper */
static PyObject *__pyx_pw_4grpc_7_cython_6cygrpc_15_BoundEventLoop_11read_socket_1__get__(PyObject *__pyx_v_self); /*proto*/
static PyObject *__pyx_pw_4grpc_7_cython_6cygrpc_15_BoundEventLoop_11read_socket_1__get__(PyObject *__pyx_v_self) {
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__get__ (wrapper)", 0);
  __pyx_r = __pyx_pf_4grpc_7_cython_6cygrpc_15_BoundEventLoop_11read_socket___get__(((struct __pyx_obj_4grpc_7_cython_6cygrpc__BoundEventLoop *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_4grpc_7_cython_6cygrpc_15_BoundEventLoop_11read_socket___get__(struct __pyx_obj_4grpc_7_cython_6cygrpc__BoundEventLoop *__pyx_v_self) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__get__", 0);
  __Pyx_XDECREF(__pyx_r);
  __Pyx_INCREF(__pyx_v_self->read_socket);
  __pyx_r = __pyx_v_self->read_socket;
  goto __pyx_L0;

  /* function exit code */
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "(tree fragment)":1
 * def __reduce_cython__(self):             # <<<<<<<<<<<<<<
 *     raise TypeError("no default __reduce__ due to non-trivial __cinit__")
 * def __setstate_cython__(self, __pyx_state):
 */

/* Python wrapper */
static PyObject *__pyx_pw_4grpc_7_cython_6cygrpc_15_BoundEventLoop_5__reduce_cython__(PyObject *__pyx_v_self, CYTHON_UNUSED PyObject *unused); /*proto*/
static PyObject *__pyx_pw_4grpc_7_cython_6cygrpc_15_BoundEventLoop_5__reduce_cython__(PyObject *__pyx_v_self, CYTHON_UNUSED PyObject *unused) {
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__reduce_cython__ (wrapper)", 0);
  __pyx_r = __pyx_pf_4grpc_7_cython_6cygrpc_15_BoundEventLoop_4__reduce_cython__(((struct __pyx_obj_4grpc_7_cython_6cygrpc__BoundEventLoop *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_4grpc_7_cython_6cygrpc_15_BoundEventLoop_4__reduce_cython__(CYTHON_UNUSED struct __pyx_obj_4grpc_7_cython_6cygrpc__BoundEventLoop *__pyx_v_self) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("__reduce_cython__", 0);

  /* "(tree fragment)":2
 * def __reduce_cython__(self):
 *     raise TypeError("no default __reduce__ due to non-trivial __cinit__")             # <<<<<<<<<<<<<<
 * def __setstate_cython__(self, __pyx_state):
 *     raise TypeError("no default __reduce__ due to non-trivial __cinit__")
 */
  __pyx_t_1 = __Pyx_PyObject_Call(__pyx_builtin_TypeError, __pyx_tuple__146, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(11, 2, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_Raise(__pyx_t_1, 0, 0, 0);
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  __PYX_ERR(11, 2, __pyx_L1_error)

  /* "(tree fragment)":1
 * def __reduce_cython__(self):             # <<<<<<<<<<<<<<
 *     raise TypeError("no default __reduce__ due to non-trivial __cinit__")
 * def __setstate_cython__(self, __pyx_state):
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_AddTraceback("grpc._cython.cygrpc._BoundEventLoop.__reduce_cython__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "(tree fragment)":3
 * def __reduce_cython__(self):
 *     raise TypeError("no default __reduce__ due to non-trivial __cinit__")
 * def __setstate_cython__(self, __pyx_state):             # <<<<<<<<<<<<<<
 *     raise TypeError("no default __reduce__ due to non-trivial __cinit__")
 */

/* Python wrapper */
static PyObject *__pyx_pw_4grpc_7_cython_6cygrpc_15_BoundEventLoop_7__setstate_cython__(PyObject *__pyx_v_self, PyObject *__pyx_v___pyx_state); /*proto*/
static PyObject *__pyx_pw_4grpc_7_cython_6cygrpc_15_BoundEventLoop_7__setstate_cython__(PyObject *__pyx_v_self, PyObject *__pyx_v___pyx_state) {
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__setstate_cython__ (wrapper)", 0);
  __pyx_r = __pyx_pf_4grpc_7_cython_6cygrpc_15_BoundEventLoop_6__setstate_cython__(((struct __pyx_obj_4grpc_7_cython_6cygrpc__BoundEventLoop *)__pyx_v_self), ((PyObject *)__pyx_v___pyx_state));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_4grpc_7_cython_6cygrpc_15_BoundEventLoop_6__setstate_cython__(CYTHON_UNUSED struct __pyx_obj_4grpc_7_cython_6cygrpc__BoundEventLoop *__pyx_v_self, CYTHON_UNUSED PyObject *__pyx_v___pyx_state) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("__setstate_cython__", 0);

  /* "(tree fragment)":4
 *     raise TypeError("no default __reduce__ due to non-trivial __cinit__")
 * def __setstate_cython__(self, __pyx_state):
 *     raise TypeError("no default __reduce__ due to non-trivial __cinit__")             # <<<<<<<<<<<<<<
 */
  __pyx_t_1 = __Pyx_PyObject_Call(__pyx_builtin_TypeError, __pyx_tuple__147, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(11, 4, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_Raise(__pyx_t_1, 0, 0, 0);
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  __PYX_ERR(11, 4, __pyx_L1_error)

  /* "(tree fragment)":3
 * def __reduce_cython__(self):
 *     raise TypeError("no default __reduce__ due to non-trivial __cinit__")
 * def __setstate_cython__(self, __pyx_state):             # <<<<<<<<<<<<<<
 *     raise TypeError("no default __reduce__ due to non-trivial __cinit__")
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_AddTraceback("grpc._cython.cygrpc._BoundEventLoop.__setstate_cython__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "src/python/grpcio/grpc/_cython/_cygrpc/aio/completion_queue.pyx.pxi":74
 * cdef class PollerCompletionQueue(BaseCompletionQueue):
 * 
 *     def __cinit__(self):             # <<<<<<<<<<<<<<
 *         self._cq = grpc_completion_queue_create_for_next(NULL)
 *         self._shutdown = False
 */

/* Python wrapper */
static int __pyx_pw_4grpc_7_cython_6cygrpc_21PollerCompletionQueue_1__cinit__(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
static int __pyx_pw_4grpc_7_cython_6cygrpc_21PollerCompletionQueue_1__cinit__(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
  int __pyx_r;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__cinit__ (wrapper)", 0);
  if (unlikely(PyTuple_GET_SIZE(__pyx_args) > 0)) {
    __Pyx_RaiseArgtupleInvalid("__cinit__", 1, 0, 0, PyTuple_GET_SIZE(__pyx_args)); return -1;}
  if (unlikely(__pyx_kwds) && unlikely(PyDict_Size(__pyx_kwds) > 0) && unlikely(!__Pyx_CheckKeywordStrings(__pyx_kwds, "__cinit__", 0))) return -1;
  __pyx_r = __pyx_pf_4grpc_7_cython_6cygrpc_21PollerCompletionQueue___cinit__(((struct __pyx_obj_4grpc_7_cython_6cygrpc_PollerCompletionQueue *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static int __pyx_pf_4grpc_7_cython_6cygrpc_21PollerCompletionQueue___cinit__(struct __pyx_obj_4grpc_7_cython_6cygrpc_PollerCompletionQueue *__pyx_v_self) {
  int __pyx_r;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  PyObject *__pyx_t_2 = NULL;
  PyObject *__pyx_t_3 = NULL;
  PyObject *__pyx_t_4 = NULL;
  PyObject *(*__pyx_t_5)(PyObject *);
  int __pyx_t_6;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("__cinit__", 0);

  /* "src/python/grpcio/grpc/_cython/_cygrpc/aio/completion_queue.pyx.pxi":75
 * 
 *     def __cinit__(self):
 *         self._cq = grpc_completion_queue_create_for_next(NULL)             # <<<<<<<<<<<<<<
 *         self._shutdown = False
 *         self._poller_thread = threading.Thread(target=self._poll_wrapper, daemon=True)
 */
  __pyx_v_self->__pyx_base._cq = grpc_completion_queue_create_for_next(NULL);

  /* "src/python/grpcio/grpc/_cython/_cygrpc/aio/completion_queue.pyx.pxi":76
 *     def __cinit__(self):
 *         self._cq = grpc_completion_queue_create_for_next(NULL)
 *         self._shutdown = False             # <<<<<<<<<<<<<<
 *         self._poller_thread = threading.Thread(target=self._poll_wrapper, daemon=True)
 *         self._poller_thread.start()
 */
  __pyx_v_self->_shutdown = 0;

  /* "src/python/grpcio/grpc/_cython/_cygrpc/aio/completion_queue.pyx.pxi":77
 *         self._cq = grpc_completion_queue_create_for_next(NULL)
 *         self._shutdown = False
 *         self._poller_thread = threading.Thread(target=self._poll_wrapper, daemon=True)             # <<<<<<<<<<<<<<
 *         self._poller_thread.start()
 * 
 */
  __Pyx_GetModuleGlobalName(__pyx_t_1, __pyx_n_s_threading); if (unlikely(!__pyx_t_1)) __PYX_ERR(8, 77, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_t_1, __pyx_n_s_Thread); if (unlikely(!__pyx_t_2)) __PYX_ERR(8, 77, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  __pyx_t_1 = __Pyx_PyDict_NewPresized(2); if (unlikely(!__pyx_t_1)) __PYX_ERR(8, 77, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_t_3 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_poll_wrapper); if (unlikely(!__pyx_t_3)) __PYX_ERR(8, 77, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  if (PyDict_SetItem(__pyx_t_1, __pyx_n_s_target, __pyx_t_3) < 0) __PYX_ERR(8, 77, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
  if (PyDict_SetItem(__pyx_t_1, __pyx_n_s_daemon, Py_True) < 0) __PYX_ERR(8, 77, __pyx_L1_error)
  __pyx_t_3 = __Pyx_PyObject_Call(__pyx_t_2, __pyx_empty_tuple, __pyx_t_1); if (unlikely(!__pyx_t_3)) __PYX_ERR(8, 77, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  __Pyx_GIVEREF(__pyx_t_3);
  __Pyx_GOTREF(__pyx_v_self->_poller_thread);
  __Pyx_DECREF(__pyx_v_self->_poller_thread);
  __pyx_v_self->_poller_thread = __pyx_t_3;
  __pyx_t_3 = 0;

  /* "src/python/grpcio/grpc/_cython/_cygrpc/aio/completion_queue.pyx.pxi":78
 *         self._shutdown = False
 *         self._poller_thread = threading.Thread(target=self._poll_wrapper, daemon=True)
 *         self._poller_thread.start()             # <<<<<<<<<<<<<<
 * 
 *         self._read_socket, self._write_socket = socket.socketpair()
 */
  __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_v_self->_poller_thread, __pyx_n_s_start); if (unlikely(!__pyx_t_1)) __PYX_ERR(8, 78, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_t_2 = NULL;
  if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_1))) {
    __pyx_t_2 = PyMethod_GET_SELF(__pyx_t_1);
    if (likely(__pyx_t_2)) {
      PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_1);
      __Pyx_INCREF(__pyx_t_2);
      __Pyx_INCREF(function);
      __Pyx_DECREF_SET(__pyx_t_1, function);
    }
  }
  __pyx_t_3 = (__pyx_t_2) ? __Pyx_PyObject_CallOneArg(__pyx_t_1, __pyx_t_2) : __Pyx_PyObject_CallNoArg(__pyx_t_1);
  __Pyx_XDECREF(__pyx_t_2); __pyx_t_2 = 0;
  if (unlikely(!__pyx_t_3)) __PYX_ERR(8, 78, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;

  /* "src/python/grpcio/grpc/_cython/_cygrpc/aio/completion_queue.pyx.pxi":80
 *         self._poller_thread.start()
 * 
 *         self._read_socket, self._write_socket = socket.socketpair()             # <<<<<<<<<<<<<<
 *         self._write_fd = self._write_socket.fileno()
 *         self._loops = {}
 */
  __Pyx_GetModuleGlobalName(__pyx_t_1, __pyx_n_s_socket); if (unlikely(!__pyx_t_1)) __PYX_ERR(8, 80, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_t_1, __pyx_n_s_socketpair); if (unlikely(!__pyx_t_2)) __PYX_ERR(8, 80, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  __pyx_t_1 = NULL;
  if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_2))) {
    __pyx_t_1 = PyMethod_GET_SELF(__pyx_t_2);
    if (likely(__pyx_t_1)) {
      PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_2);
      __Pyx_INCREF(__pyx_t_1);
      __Pyx_INCREF(function);
      __Pyx_DECREF_SET(__pyx_t_2, function);
    }
  }
  __pyx_t_3 = (__pyx_t_1) ? __Pyx_PyObject_CallOneArg(__pyx_t_2, __pyx_t_1) : __Pyx_PyObject_CallNoArg(__pyx_t_2);
  __Pyx_XDECREF(__pyx_t_1); __pyx_t_1 = 0;
  if (unlikely(!__pyx_t_3)) __PYX_ERR(8, 80, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  if ((likely(PyTuple_CheckExact(__pyx_t_3))) || (PyList_CheckExact(__pyx_t_3))) {
    PyObject* sequence = __pyx_t_3;
    Py_ssize_t size = __Pyx_PySequence_SIZE(sequence);
    if (unlikely(size != 2)) {
      if (size > 2) __Pyx_RaiseTooManyValuesError(2);
      else if (size >= 0) __Pyx_RaiseNeedMoreValuesError(size);
      __PYX_ERR(8, 80, __pyx_L1_error)
    }
    #if CYTHON_ASSUME_SAFE_MACROS && !CYTHON_AVOID_BORROWED_REFS
    if (likely(PyTuple_CheckExact(sequence))) {
      __pyx_t_2 = PyTuple_GET_ITEM(sequence, 0); 
      __pyx_t_1 = PyTuple_GET_ITEM(sequence, 1); 
    } else {
      __pyx_t_2 = PyList_GET_ITEM(sequence, 0); 
      __pyx_t_1 = PyList_GET_ITEM(sequence, 1); 
    }
    __Pyx_INCREF(__pyx_t_2);
    __Pyx_INCREF(__pyx_t_1);
    #else
    __pyx_t_2 = PySequence_ITEM(sequence, 0); if (unlikely(!__pyx_t_2)) __PYX_ERR(8, 80, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_2);
    __pyx_t_1 = PySequence_ITEM(sequence, 1); if (unlikely(!__pyx_t_1)) __PYX_ERR(8, 80, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_1);
    #endif
    __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
  } else {
    Py_ssize_t index = -1;
    __pyx_t_4 = PyObject_GetIter(__pyx_t_3); if (unlikely(!__pyx_t_4)) __PYX_ERR(8, 80, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_4);
    __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
    __pyx_t_5 = Py_TYPE(__pyx_t_4)->tp_iternext;
    index = 0; __pyx_t_2 = __pyx_t_5(__pyx_t_4); if (unlikely(!__pyx_t_2)) goto __pyx_L3_unpacking_failed;
    __Pyx_GOTREF(__pyx_t_2);
    index = 1; __pyx_t_1 = __pyx_t_5(__pyx_t_4); if (unlikely(!__pyx_t_1)) goto __pyx_L3_unpacking_failed;
    __Pyx_GOTREF(__pyx_t_1);
    if (__Pyx_IternextUnpackEndCheck(__pyx_t_5(__pyx_t_4), 2) < 0) __PYX_ERR(8, 80, __pyx_L1_error)
    __pyx_t_5 = NULL;
    __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
    goto __pyx_L4_unpacking_done;
    __pyx_L3_unpacking_failed:;
    __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
    __pyx_t_5 = NULL;
    if (__Pyx_IterFinish() == 0) __Pyx_RaiseNeedMoreValuesError(index);
    __PYX_ERR(8, 80, __pyx_L1_error)
    __pyx_L4_unpacking_done:;
  }
  __Pyx_GIVEREF(__pyx_t_2);
  __Pyx_GOTREF(__pyx_v_self->_read_socket);
  __Pyx_DECREF(__pyx_v_self->_read_socket);
  __pyx_v_self->_read_socket = __pyx_t_2;
  __pyx_t_2 = 0;
  __Pyx_GIVEREF(__pyx_t_1);
  __Pyx_GOTREF(__pyx_v_self->_write_socket);
  __Pyx_DECREF(__pyx_v_self->_write_socket);
  __pyx_v_self->_write_socket = __pyx_t_1;
  __pyx_t_1 = 0;

  /* "src/python/grpcio/grpc/_cython/_cygrpc/aio/completion_queue.pyx.pxi":81
 * 
 *         self._read_socket, self._write_socket = socket.socketpair()
 *         self._write_fd = self._write_socket.fileno()             # <<<<<<<<<<<<<<
 *         self._loops = {}
 * 
 */
  __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_v_self->_write_socket, __pyx_n_s_fileno); if (unlikely(!__pyx_t_1)) __PYX_ERR(8, 81, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_t_2 = NULL;
  if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_1))) {
    __pyx_t_2 = PyMethod_GET_SELF(__pyx_t_1);
    if (likely(__pyx_t_2)) {
      PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_1);
      __Pyx_INCREF(__pyx_t_2);
      __Pyx_INCREF(function);
      __Pyx_DECREF_SET(__pyx_t_1, function);
    }
  }
  __pyx_t_3 = (__pyx_t_2) ? __Pyx_PyObject_CallOneArg(__pyx_t_1, __pyx_t_2) : __Pyx_PyObject_CallNoArg(__pyx_t_1);
  __Pyx_XDECREF(__pyx_t_2); __pyx_t_2 = 0;
  if (unlikely(!__pyx_t_3)) __PYX_ERR(8, 81, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  __pyx_t_6 = __Pyx_PyInt_As_int(__pyx_t_3); if (unlikely((__pyx_t_6 == (int)-1) && PyErr_Occurred())) __PYX_ERR(8, 81, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
  __pyx_v_self->_write_fd = __pyx_t_6;

  /* "src/python/grpcio/grpc/_cython/_cygrpc/aio/completion_queue.pyx.pxi":82
 *         self._read_socket, self._write_socket = socket.socketpair()
 *         self._write_fd = self._write_socket.fileno()
 *         self._loops = {}             # <<<<<<<<<<<<<<
 * 
 *         # The read socket might be read by multiple threads. But only one of them will
 */
  __pyx_t_3 = __Pyx_PyDict_NewPresized(0); if (unlikely(!__pyx_t_3)) __PYX_ERR(8, 82, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  __Pyx_GIVEREF(__pyx_t_3);
  __Pyx_GOTREF(__pyx_v_self->_loops);
  __Pyx_DECREF(__pyx_v_self->_loops);
  __pyx_v_self->_loops = ((PyObject*)__pyx_t_3);
  __pyx_t_3 = 0;

  /* "src/python/grpcio/grpc/_cython/_cygrpc/aio/completion_queue.pyx.pxi":87
 *         # read the 1 byte sent by the poller thread. This setting is essential to allow
 *         # multiple loops in multiple threads bound to the same poller.
 *         self._read_socket.setblocking(False)             # <<<<<<<<<<<<<<
 * 
 *         self._queue = cpp_event_queue()
 */
  __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_v_self->_read_socket, __pyx_n_s_setblocking); if (unlikely(!__pyx_t_1)) __PYX_ERR(8, 87, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_t_2 = NULL;
  if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_1))) {
    __pyx_t_2 = PyMethod_GET_SELF(__pyx_t_1);
    if (likely(__pyx_t_2)) {
      PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_1);
      __Pyx_INCREF(__pyx_t_2);
      __Pyx_INCREF(function);
      __Pyx_DECREF_SET(__pyx_t_1, function);
    }
  }
  __pyx_t_3 = (__pyx_t_2) ? __Pyx_PyObject_Call2Args(__pyx_t_1, __pyx_t_2, Py_False) : __Pyx_PyObject_CallOneArg(__pyx_t_1, Py_False);
  __Pyx_XDECREF(__pyx_t_2); __pyx_t_2 = 0;
  if (unlikely(!__pyx_t_3)) __PYX_ERR(8, 87, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;

  /* "src/python/grpcio/grpc/_cython/_cygrpc/aio/completion_queue.pyx.pxi":89
 *         self._read_socket.setblocking(False)
 * 
 *         self._queue = cpp_event_queue()             # <<<<<<<<<<<<<<
 * 
 *     def bind_loop(self, object loop):
 */
  __pyx_v_self->_queue = __pyx_t_4grpc_7_cython_6cygrpc_cpp_event_queue();

  /* "src/python/grpcio/grpc/_cython/_cygrpc/aio/completion_queue.pyx.pxi":74
 * cdef class PollerCompletionQueue(BaseCompletionQueue):
 * 
 *     def __cinit__(self):             # <<<<<<<<<<<<<<
 *         self._cq = grpc_completion_queue_create_for_next(NULL)
 *         self._shutdown = False
 */

  /* function exit code */
  __pyx_r = 0;
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_XDECREF(__pyx_t_3);
  __Pyx_XDECREF(__pyx_t_4);
  __Pyx_AddTraceback("grpc._cython.cygrpc.PollerCompletionQueue.__cinit__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = -1;
  __pyx_L0:;
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "src/python/grpcio/grpc/_cython/_cygrpc/aio/completion_queue.pyx.pxi":91
 *         self._queue = cpp_event_queue()
 * 
 *     def bind_loop(self, object loop):             # <<<<<<<<<<<<<<
 *         if loop in self._loops:
 *             return
 */

/* Python wrapper */
static PyObject *__pyx_pw_4grpc_7_cython_6cygrpc_21PollerCompletionQueue_3bind_loop(PyObject *__pyx_v_self, PyObject *__pyx_v_loop); /*proto*/
static PyObject *__pyx_pw_4grpc_7_cython_6cygrpc_21PollerCompletionQueue_3bind_loop(PyObject *__pyx_v_self, PyObject *__pyx_v_loop) {
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("bind_loop (wrapper)", 0);
  __pyx_r = __pyx_pf_4grpc_7_cython_6cygrpc_21PollerCompletionQueue_2bind_loop(((struct __pyx_obj_4grpc_7_cython_6cygrpc_PollerCompletionQueue *)__pyx_v_self), ((PyObject *)__pyx_v_loop));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_4grpc_7_cython_6cygrpc_21PollerCompletionQueue_2bind_loop(struct __pyx_obj_4grpc_7_cython_6cygrpc_PollerCompletionQueue *__pyx_v_self, PyObject *__pyx_v_loop) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  int __pyx_t_1;
  int __pyx_t_2;
  PyObject *__pyx_t_3 = NULL;
  PyObject *__pyx_t_4 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("bind_loop", 0);

  /* "src/python/grpcio/grpc/_cython/_cygrpc/aio/completion_queue.pyx.pxi":92
 * 
 *     def bind_loop(self, object loop):
 *         if loop in self._loops:             # <<<<<<<<<<<<<<
 *             return
 *         else:
 */
  if (unlikely(__pyx_v_self->_loops == Py_None)) {
    PyErr_SetString(PyExc_TypeError, "'NoneType' object is not iterable");
    __PYX_ERR(8, 92, __pyx_L1_error)
  }
  __pyx_t_1 = (__Pyx_PyDict_ContainsTF(__pyx_v_loop, __pyx_v_self->_loops, Py_EQ)); if (unlikely(__pyx_t_1 < 0)) __PYX_ERR(8, 92, __pyx_L1_error)
  __pyx_t_2 = (__pyx_t_1 != 0);
  if (__pyx_t_2) {

    /* "src/python/grpcio/grpc/_cython/_cygrpc/aio/completion_queue.pyx.pxi":93
 *     def bind_loop(self, object loop):
 *         if loop in self._loops:
 *             return             # <<<<<<<<<<<<<<
 *         else:
 *             self._loops[loop] = _BoundEventLoop(loop, self._read_socket, self._handle_events)
 */
    __Pyx_XDECREF(__pyx_r);
    __pyx_r = Py_None; __Pyx_INCREF(Py_None);
    goto __pyx_L0;

    /* "src/python/grpcio/grpc/_cython/_cygrpc/aio/completion_queue.pyx.pxi":92
 * 
 *     def bind_loop(self, object loop):
 *         if loop in self._loops:             # <<<<<<<<<<<<<<
 *             return
 *         else:
 */
  }

  /* "src/python/grpcio/grpc/_cython/_cygrpc/aio/completion_queue.pyx.pxi":95
 *             return
 *         else:
 *             self._loops[loop] = _BoundEventLoop(loop, self._read_socket, self._handle_events)             # <<<<<<<<<<<<<<
 * 
 *     cdef void _poll(self) nogil:
 */
  /*else*/ {
    __pyx_t_3 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_handle_events); if (unlikely(!__pyx_t_3)) __PYX_ERR(8, 95, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_3);
    __pyx_t_4 = PyTuple_New(3); if (unlikely(!__pyx_t_4)) __PYX_ERR(8, 95, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_4);
    __Pyx_INCREF(__pyx_v_loop);
    __Pyx_GIVEREF(__pyx_v_loop);
    PyTuple_SET_ITEM(__pyx_t_4, 0, __pyx_v_loop);
    __Pyx_INCREF(__pyx_v_self->_read_socket);
    __Pyx_GIVEREF(__pyx_v_self->_read_socket);
    PyTuple_SET_ITEM(__pyx_t_4, 1, __pyx_v_self->_read_socket);
    __Pyx_GIVEREF(__pyx_t_3);
    PyTuple_SET_ITEM(__pyx_t_4, 2, __pyx_t_3);
    __pyx_t_3 = 0;
    __pyx_t_3 = __Pyx_PyObject_Call(((PyObject *)__pyx_ptype_4grpc_7_cython_6cygrpc__BoundEventLoop), __pyx_t_4, NULL); if (unlikely(!__pyx_t_3)) __PYX_ERR(8, 95, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_3);
    __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
    if (unlikely(__pyx_v_self->_loops == Py_None)) {
      PyErr_SetString(PyExc_TypeError, "'NoneType' object is not subscriptable");
      __PYX_ERR(8, 95, __pyx_L1_error)
    }
    if (unlikely(PyDict_SetItem(__pyx_v_self->_loops, __pyx_v_loop, __pyx_t_3) < 0)) __PYX_ERR(8, 95, __pyx_L1_error)
    __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
  }

  /* "src/python/grpcio/grpc/_cython/_cygrpc/aio/completion_queue.pyx.pxi":91
 *         self._queue = cpp_event_queue()
 * 
 *     def bind_loop(self, object loop):             # <<<<<<<<<<<<<<
 *         if loop in self._loops:
 *             return
 */

  /* function exit code */
  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_3);
  __Pyx_XDECREF(__pyx_t_4);
  __Pyx_AddTraceback("grpc._cython.cygrpc.PollerCompletionQueue.bind_loop", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "src/python/grpcio/grpc/_cython/_cygrpc/aio/completion_queue.pyx.pxi":97
 *             self._loops[loop] = _BoundEventLoop(loop, self._read_socket, self._handle_events)
 * 
 *     cdef void _poll(self) nogil:             # <<<<<<<<<<<<<<
 *         cdef grpc_event event
 *         cdef CallbackContext *context
 */

static void __pyx_f_4grpc_7_cython_6cygrpc_21PollerCompletionQueue__poll(struct __pyx_obj_4grpc_7_cython_6cygrpc_PollerCompletionQueue *__pyx_v_self) {
  grpc_event __pyx_v_event;
  __Pyx_RefNannyDeclarations
  int __pyx_t_1;
  PyObject *__pyx_t_2 = NULL;
  PyObject *__pyx_t_3 = NULL;
  PyObject *__pyx_t_4 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  #ifdef WITH_THREAD
  PyGILState_STATE __pyx_gilstate_save = __Pyx_PyGILState_Ensure();
  #endif
  __Pyx_RefNannySetupContext("_poll", 0);
  #ifdef WITH_THREAD
  __Pyx_PyGILState_Release(__pyx_gilstate_save);
  #endif

  /* "src/python/grpcio/grpc/_cython/_cygrpc/aio/completion_queue.pyx.pxi":98
 * 
 *     cdef void _poll(self) nogil:
 *         cdef grpc_event event             # <<<<<<<<<<<<<<
 *         cdef CallbackContext *context
 * 
 */
  /*try:*/ {

    /* "src/python/grpcio/grpc/_cython/_cygrpc/aio/completion_queue.pyx.pxi":101
 *         cdef CallbackContext *context
 * 
 *         while not self._shutdown:             # <<<<<<<<<<<<<<
 *             event = grpc_completion_queue_next(self._cq,
 *                                                _GPR_INF_FUTURE,
 */
    while (1) {
      __pyx_t_1 = ((!(__pyx_v_self->_shutdown != 0)) != 0);
      if (!__pyx_t_1) break;

      /* "src/python/grpcio/grpc/_cython/_cygrpc/aio/completion_queue.pyx.pxi":102
 * 
 *         while not self._shutdown:
 *             event = grpc_completion_queue_next(self._cq,             # <<<<<<<<<<<<<<
 *                                                _GPR_INF_FUTURE,
 *                                                NULL)
 */
      __pyx_v_event = grpc_completion_queue_next(__pyx_v_self->__pyx_base._cq, __pyx_v_4grpc_7_cython_6cygrpc__GPR_INF_FUTURE, NULL);

      /* "src/python/grpcio/grpc/_cython/_cygrpc/aio/completion_queue.pyx.pxi":106
 *                                                NULL)
 * 
 *             if event.type == GRPC_QUEUE_TIMEOUT:             # <<<<<<<<<<<<<<
 *                 with gil:
 *                     raise AssertionError("Core should not return GRPC_QUEUE_TIMEOUT!")
 */
      switch (__pyx_v_event.type) {
        case GRPC_QUEUE_TIMEOUT:

        /* "src/python/grpcio/grpc/_cython/_cygrpc/aio/completion_queue.pyx.pxi":107
 * 
 *             if event.type == GRPC_QUEUE_TIMEOUT:
 *                 with gil:             # <<<<<<<<<<<<<<
 *                     raise AssertionError("Core should not return GRPC_QUEUE_TIMEOUT!")
 *             elif event.type == GRPC_QUEUE_SHUTDOWN:
 */
        {
            #ifdef WITH_THREAD
            PyGILState_STATE __pyx_gilstate_save = __Pyx_PyGILState_Ensure();
            #endif
            /*try:*/ {

              /* "src/python/grpcio/grpc/_cython/_cygrpc/aio/completion_queue.pyx.pxi":108
 *             if event.type == GRPC_QUEUE_TIMEOUT:
 *                 with gil:
 *                     raise AssertionError("Core should not return GRPC_QUEUE_TIMEOUT!")             # <<<<<<<<<<<<<<
 *             elif event.type == GRPC_QUEUE_SHUTDOWN:
 *                 self._shutdown = True
 */
              __pyx_t_2 = __Pyx_PyObject_Call(__pyx_builtin_AssertionError, __pyx_tuple__148, NULL); if (unlikely(!__pyx_t_2)) __PYX_ERR(8, 108, __pyx_L11_error)
              __Pyx_GOTREF(__pyx_t_2);
              __Pyx_Raise(__pyx_t_2, 0, 0, 0);
              __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
              __PYX_ERR(8, 108, __pyx_L11_error)
            }

            /* "src/python/grpcio/grpc/_cython/_cygrpc/aio/completion_queue.pyx.pxi":107
 * 
 *             if event.type == GRPC_QUEUE_TIMEOUT:
 *                 with gil:             # <<<<<<<<<<<<<<
 *                     raise AssertionError("Core should not return GRPC_QUEUE_TIMEOUT!")
 *             elif event.type == GRPC_QUEUE_SHUTDOWN:
 */
            /*finally:*/ {
              __pyx_L11_error: {
                #ifdef WITH_THREAD
                __Pyx_PyGILState_Release(__pyx_gilstate_save);
                #endif
                goto __pyx_L4_error;
              }
            }
        }

        /* "src/python/grpcio/grpc/_cython/_cygrpc/aio/completion_queue.pyx.pxi":106
 *                                                NULL)
 * 
 *             if event.type == GRPC_QUEUE_TIMEOUT:             # <<<<<<<<<<<<<<
 *                 with gil:
 *                     raise AssertionError("Core should not return GRPC_QUEUE_TIMEOUT!")
 */
        break;
        case GRPC_QUEUE_SHUTDOWN:

        /* "src/python/grpcio/grpc/_cython/_cygrpc/aio/completion_queue.pyx.pxi":110
 *                     raise AssertionError("Core should not return GRPC_QUEUE_TIMEOUT!")
 *             elif event.type == GRPC_QUEUE_SHUTDOWN:
 *                 self._shutdown = True             # <<<<<<<<<<<<<<
 *             else:
 *                 self._queue_mutex.lock()
 */
        __pyx_v_self->_shutdown = 1;

        /* "src/python/grpcio/grpc/_cython/_cygrpc/aio/completion_queue.pyx.pxi":109
 *                 with gil:
 *                     raise AssertionError("Core should not return GRPC_QUEUE_TIMEOUT!")
 *             elif event.type == GRPC_QUEUE_SHUTDOWN:             # <<<<<<<<<<<<<<
 *                 self._shutdown = True
 *             else:
 */
        break;
        default:

        /* "src/python/grpcio/grpc/_cython/_cygrpc/aio/completion_queue.pyx.pxi":112
 *                 self._shutdown = True
 *             else:
 *                 self._queue_mutex.lock()             # <<<<<<<<<<<<<<
 *                 self._queue.push(event)
 *                 self._queue_mutex.unlock()
 */
        __pyx_v_self->_queue_mutex.lock();

        /* "src/python/grpcio/grpc/_cython/_cygrpc/aio/completion_queue.pyx.pxi":113
 *             else:
 *                 self._queue_mutex.lock()
 *                 self._queue.push(event)             # <<<<<<<<<<<<<<
 *                 self._queue_mutex.unlock()
 *                 if _has_fd_monitoring:
 */
        __pyx_v_self->_queue.push(__pyx_v_event);

        /* "src/python/grpcio/grpc/_cython/_cygrpc/aio/completion_queue.pyx.pxi":114
 *                 self._queue_mutex.lock()
 *                 self._queue.push(event)
 *                 self._queue_mutex.unlock()             # <<<<<<<<<<<<<<
 *                 if _has_fd_monitoring:
 *                     _unified_socket_write(self._write_fd)
 */
        __pyx_v_self->_queue_mutex.unlock();

        /* "src/python/grpcio/grpc/_cython/_cygrpc/aio/completion_queue.pyx.pxi":115
 *                 self._queue.push(event)
 *                 self._queue_mutex.unlock()
 *                 if _has_fd_monitoring:             # <<<<<<<<<<<<<<
 *                     _unified_socket_write(self._write_fd)
 *                 else:
 */
        __pyx_t_1 = (__pyx_v_4grpc_7_cython_6cygrpc__has_fd_monitoring != 0);
        if (__pyx_t_1) {

          /* "src/python/grpcio/grpc/_cython/_cygrpc/aio/completion_queue.pyx.pxi":116
 *                 self._queue_mutex.unlock()
 *                 if _has_fd_monitoring:
 *                     _unified_socket_write(self._write_fd)             # <<<<<<<<<<<<<<
 *                 else:
 *                     with gil:
 */
          __pyx_f_4grpc_7_cython_6cygrpc__unified_socket_write(__pyx_v_self->_write_fd);

          /* "src/python/grpcio/grpc/_cython/_cygrpc/aio/completion_queue.pyx.pxi":115
 *                 self._queue.push(event)
 *                 self._queue_mutex.unlock()
 *                 if _has_fd_monitoring:             # <<<<<<<<<<<<<<
 *                     _unified_socket_write(self._write_fd)
 *                 else:
 */
          goto __pyx_L13;
        }

        /* "src/python/grpcio/grpc/_cython/_cygrpc/aio/completion_queue.pyx.pxi":118
 *                     _unified_socket_write(self._write_fd)
 *                 else:
 *                     with gil:             # <<<<<<<<<<<<<<
 *                         # Event loops can be paused or killed at any time. So,
 *                         # instead of deligate to any thread, the polling thread
 */
        /*else*/ {
          {
              #ifdef WITH_THREAD
              PyGILState_STATE __pyx_gilstate_save = __Pyx_PyGILState_Ensure();
              #endif
              /*try:*/ {

                /* "src/python/grpcio/grpc/_cython/_cygrpc/aio/completion_queue.pyx.pxi":122
 *                         # instead of deligate to any thread, the polling thread
 *                         # should handle the distribution of the event.
 *                         self._handle_events(None)             # <<<<<<<<<<<<<<
 * 
 *     def _poll_wrapper(self):
 */
                __pyx_t_3 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_handle_events); if (unlikely(!__pyx_t_3)) __PYX_ERR(8, 122, __pyx_L17_error)
                __Pyx_GOTREF(__pyx_t_3);
                __pyx_t_4 = NULL;
                if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_3))) {
                  __pyx_t_4 = PyMethod_GET_SELF(__pyx_t_3);
                  if (likely(__pyx_t_4)) {
                    PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_3);
                    __Pyx_INCREF(__pyx_t_4);
                    __Pyx_INCREF(function);
                    __Pyx_DECREF_SET(__pyx_t_3, function);
                  }
                }
                __pyx_t_2 = (__pyx_t_4) ? __Pyx_PyObject_Call2Args(__pyx_t_3, __pyx_t_4, Py_None) : __Pyx_PyObject_CallOneArg(__pyx_t_3, Py_None);
                __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0;
                if (unlikely(!__pyx_t_2)) __PYX_ERR(8, 122, __pyx_L17_error)
                __Pyx_GOTREF(__pyx_t_2);
                __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
                __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
              }

              /* "src/python/grpcio/grpc/_cython/_cygrpc/aio/completion_queue.pyx.pxi":118
 *                     _unified_socket_write(self._write_fd)
 *                 else:
 *                     with gil:             # <<<<<<<<<<<<<<
 *                         # Event loops can be paused or killed at any time. So,
 *                         # instead of deligate to any thread, the polling thread
 */
              /*finally:*/ {
                /*normal exit:*/{
                  #ifdef WITH_THREAD
                  __Pyx_PyGILState_Release(__pyx_gilstate_save);
                  #endif
                  goto __pyx_L18;
                }
                __pyx_L17_error: {
                  #ifdef WITH_THREAD
                  __Pyx_PyGILState_Release(__pyx_gilstate_save);
                  #endif
                  goto __pyx_L4_error;
                }
                __pyx_L18:;
              }
          }
        }
        __pyx_L13:;
        break;
      }
    }
  }

  /* "src/python/grpcio/grpc/_cython/_cygrpc/aio/completion_queue.pyx.pxi":98
 * 
 *     cdef void _poll(self) nogil:
 *         cdef grpc_event event             # <<<<<<<<<<<<<<
 *         cdef CallbackContext *context
 * 
 */
  /*finally:*/ {
    /*normal exit:*/{
      #ifdef WITH_THREAD
      __pyx_gilstate_save = __Pyx_PyGILState_Ensure();
      #endif
      goto __pyx_L5;
    }
    __pyx_L4_error: {
      #ifdef WITH_THREAD
      __pyx_gilstate_save = __Pyx_PyGILState_Ensure();
      #endif
      goto __pyx_L1_error;
    }
    __pyx_L5:;
  }

  /* "src/python/grpcio/grpc/_cython/_cygrpc/aio/completion_queue.pyx.pxi":97
 *             self._loops[loop] = _BoundEventLoop(loop, self._read_socket, self._handle_events)
 * 
 *     cdef void _poll(self) nogil:             # <<<<<<<<<<<<<<
 *         cdef grpc_event event
 *         cdef CallbackContext *context
 */

  /* function exit code */
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_XDECREF(__pyx_t_3);
  __Pyx_XDECREF(__pyx_t_4);
  __Pyx_WriteUnraisable("grpc._cython.cygrpc.PollerCompletionQueue._poll", __pyx_clineno, __pyx_lineno, __pyx_filename, 1, 1);
  __pyx_L0:;
  #ifdef WITH_THREAD
  __Pyx_PyGILState_Release(__pyx_gilstate_save);
  #endif
}

/* "src/python/grpcio/grpc/_cython/_cygrpc/aio/completion_queue.pyx.pxi":124
 *                         self._handle_events(None)
 * 
 *     def _poll_wrapper(self):             # <<<<<<<<<<<<<<
 *         with nogil:
 *             self._poll()
 */

/* Python wrapper */
static PyObject *__pyx_pw_4grpc_7_cython_6cygrpc_21PollerCompletionQueue_5_poll_wrapper(PyObject *__pyx_v_self, CYTHON_UNUSED PyObject *unused); /*proto*/
static PyObject *__pyx_pw_4grpc_7_cython_6cygrpc_21PollerCompletionQueue_5_poll_wrapper(PyObject *__pyx_v_self, CYTHON_UNUSED PyObject *unused) {
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("_poll_wrapper (wrapper)", 0);
  __pyx_r = __pyx_pf_4grpc_7_cython_6cygrpc_21PollerCompletionQueue_4_poll_wrapper(((struct __pyx_obj_4grpc_7_cython_6cygrpc_PollerCompletionQueue *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_4grpc_7_cython_6cygrpc_21PollerCompletionQueue_4_poll_wrapper(struct __pyx_obj_4grpc_7_cython_6cygrpc_PollerCompletionQueue *__pyx_v_self) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("_poll_wrapper", 0);

  /* "src/python/grpcio/grpc/_cython/_cygrpc/aio/completion_queue.pyx.pxi":125
 * 
 *     def _poll_wrapper(self):
 *         with nogil:             # <<<<<<<<<<<<<<
 *             self._poll()
 * 
 */
  {
      #ifdef WITH_THREAD
      PyThreadState *_save;
      Py_UNBLOCK_THREADS
      __Pyx_FastGIL_Remember();
      #endif
      /*try:*/ {

        /* "src/python/grpcio/grpc/_cython/_cygrpc/aio/completion_queue.pyx.pxi":126
 *     def _poll_wrapper(self):
 *         with nogil:
 *             self._poll()             # <<<<<<<<<<<<<<
 * 
 *     cdef shutdown(self):
 */
        ((struct __pyx_vtabstruct_4grpc_7_cython_6cygrpc_PollerCompletionQueue *)__pyx_v_self->__pyx_base.__pyx_vtab)->_poll(__pyx_v_self);
      }

      /* "src/python/grpcio/grpc/_cython/_cygrpc/aio/completion_queue.pyx.pxi":125
 * 
 *     def _poll_wrapper(self):
 *         with nogil:             # <<<<<<<<<<<<<<
 *             self._poll()
 * 
 */
      /*finally:*/ {
        /*normal exit:*/{
          #ifdef WITH_THREAD
          __Pyx_FastGIL_Forget();
          Py_BLOCK_THREADS
          #endif
          goto __pyx_L5;
        }
        __pyx_L5:;
      }
  }

  /* "src/python/grpcio/grpc/_cython/_cygrpc/aio/completion_queue.pyx.pxi":124
 *                         self._handle_events(None)
 * 
 *     def _poll_wrapper(self):             # <<<<<<<<<<<<<<
 *         with nogil:
 *             self._poll()
 */

  /* function exit code */
  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "src/python/grpcio/grpc/_cython/_cygrpc/aio/completion_queue.pyx.pxi":128
 *             self._poll()
 * 
 *     cdef shutdown(self):             # <<<<<<<<<<<<<<
 *         # Removes the socket hook from loops
 *         for loop in self._loops:
 */

static PyObject *__pyx_f_4grpc_7_cython_6cygrpc_21PollerCompletionQueue_shutdown(struct __pyx_obj_4grpc_7_cython_6cygrpc_PollerCompletionQueue *__pyx_v_self) {
  PyObject *__pyx_v_loop = NULL;
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  Py_ssize_t __pyx_t_2;
  Py_ssize_t __pyx_t_3;
  int __pyx_t_4;
  PyObject *__pyx_t_5 = NULL;
  int __pyx_t_6;
  PyObject *__pyx_t_7 = NULL;
  PyObject *__pyx_t_8 = NULL;
  int __pyx_t_9;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("shutdown", 0);

  /* "src/python/grpcio/grpc/_cython/_cygrpc/aio/completion_queue.pyx.pxi":130
 *     cdef shutdown(self):
 *         # Removes the socket hook from loops
 *         for loop in self._loops:             # <<<<<<<<<<<<<<
 *             self._loops.get(loop).close()
 * 
 */
  __pyx_t_2 = 0;
  if (unlikely(__pyx_v_self->_loops == Py_None)) {
    PyErr_SetString(PyExc_TypeError, "'NoneType' object is not iterable");
    __PYX_ERR(8, 130, __pyx_L1_error)
  }
  __pyx_t_5 = __Pyx_dict_iterator(__pyx_v_self->_loops, 1, ((PyObject *)NULL), (&__pyx_t_3), (&__pyx_t_4)); if (unlikely(!__pyx_t_5)) __PYX_ERR(8, 130, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_5);
  __Pyx_XDECREF(__pyx_t_1);
  __pyx_t_1 = __pyx_t_5;
  __pyx_t_5 = 0;
  while (1) {
    __pyx_t_6 = __Pyx_dict_iter_next(__pyx_t_1, __pyx_t_3, &__pyx_t_2, &__pyx_t_5, NULL, NULL, __pyx_t_4);
    if (unlikely(__pyx_t_6 == 0)) break;
    if (unlikely(__pyx_t_6 == -1)) __PYX_ERR(8, 130, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_5);
    __Pyx_XDECREF_SET(__pyx_v_loop, __pyx_t_5);
    __pyx_t_5 = 0;

    /* "src/python/grpcio/grpc/_cython/_cygrpc/aio/completion_queue.pyx.pxi":131
 *         # Removes the socket hook from loops
 *         for loop in self._loops:
 *             self._loops.get(loop).close()             # <<<<<<<<<<<<<<
 * 
 *         # TODO(https://github.com/grpc/grpc/issues/22365) perform graceful shutdown
 */
    if (unlikely(__pyx_v_self->_loops == Py_None)) {
      PyErr_Format(PyExc_AttributeError, "'NoneType' object has no attribute '%.30s'", "get");
      __PYX_ERR(8, 131, __pyx_L1_error)
    }
    __pyx_t_7 = __Pyx_PyDict_GetItemDefault(__pyx_v_self->_loops, __pyx_v_loop, Py_None); if (unlikely(!__pyx_t_7)) __PYX_ERR(8, 131, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_7);
    __pyx_t_8 = __Pyx_PyObject_GetAttrStr(__pyx_t_7, __pyx_n_s_close); if (unlikely(!__pyx_t_8)) __PYX_ERR(8, 131, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_8);
    __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
    __pyx_t_7 = NULL;
    if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_8))) {
      __pyx_t_7 = PyMethod_GET_SELF(__pyx_t_8);
      if (likely(__pyx_t_7)) {
        PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_8);
        __Pyx_INCREF(__pyx_t_7);
        __Pyx_INCREF(function);
        __Pyx_DECREF_SET(__pyx_t_8, function);
      }
    }
    __pyx_t_5 = (__pyx_t_7) ? __Pyx_PyObject_CallOneArg(__pyx_t_8, __pyx_t_7) : __Pyx_PyObject_CallNoArg(__pyx_t_8);
    __Pyx_XDECREF(__pyx_t_7); __pyx_t_7 = 0;
    if (unlikely(!__pyx_t_5)) __PYX_ERR(8, 131, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_5);
    __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
    __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
  }
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;

  /* "src/python/grpcio/grpc/_cython/_cygrpc/aio/completion_queue.pyx.pxi":134
 * 
 *         # TODO(https://github.com/grpc/grpc/issues/22365) perform graceful shutdown
 *         grpc_completion_queue_shutdown(self._cq)             # <<<<<<<<<<<<<<
 *         while not self._shutdown:
 *             self._poller_thread.join(timeout=_POLL_AWAKE_INTERVAL_S)
 */
  grpc_completion_queue_shutdown(__pyx_v_self->__pyx_base._cq);

  /* "src/python/grpcio/grpc/_cython/_cygrpc/aio/completion_queue.pyx.pxi":135
 *         # TODO(https://github.com/grpc/grpc/issues/22365) perform graceful shutdown
 *         grpc_completion_queue_shutdown(self._cq)
 *         while not self._shutdown:             # <<<<<<<<<<<<<<
 *             self._poller_thread.join(timeout=_POLL_AWAKE_INTERVAL_S)
 *         grpc_completion_queue_destroy(self._cq)
 */
  while (1) {
    __pyx_t_9 = ((!(__pyx_v_self->_shutdown != 0)) != 0);
    if (!__pyx_t_9) break;

    /* "src/python/grpcio/grpc/_cython/_cygrpc/aio/completion_queue.pyx.pxi":136
 *         grpc_completion_queue_shutdown(self._cq)
 *         while not self._shutdown:
 *             self._poller_thread.join(timeout=_POLL_AWAKE_INTERVAL_S)             # <<<<<<<<<<<<<<
 *         grpc_completion_queue_destroy(self._cq)
 * 
 */
    __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_v_self->_poller_thread, __pyx_n_s_join); if (unlikely(!__pyx_t_1)) __PYX_ERR(8, 136, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_1);
    __pyx_t_5 = __Pyx_PyDict_NewPresized(1); if (unlikely(!__pyx_t_5)) __PYX_ERR(8, 136, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_5);
    __pyx_t_8 = PyFloat_FromDouble(__pyx_v_4grpc_7_cython_6cygrpc__POLL_AWAKE_INTERVAL_S); if (unlikely(!__pyx_t_8)) __PYX_ERR(8, 136, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_8);
    if (PyDict_SetItem(__pyx_t_5, __pyx_n_s_timeout, __pyx_t_8) < 0) __PYX_ERR(8, 136, __pyx_L1_error)
    __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
    __pyx_t_8 = __Pyx_PyObject_Call(__pyx_t_1, __pyx_empty_tuple, __pyx_t_5); if (unlikely(!__pyx_t_8)) __PYX_ERR(8, 136, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_8);
    __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
    __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
    __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
  }

  /* "src/python/grpcio/grpc/_cython/_cygrpc/aio/completion_queue.pyx.pxi":137
 *         while not self._shutdown:
 *             self._poller_thread.join(timeout=_POLL_AWAKE_INTERVAL_S)
 *         grpc_completion_queue_destroy(self._cq)             # <<<<<<<<<<<<<<
 * 
 *         # Clean up socket resources
 */
  grpc_completion_queue_destroy(__pyx_v_self->__pyx_base._cq);

  /* "src/python/grpcio/grpc/_cython/_cygrpc/aio/completion_queue.pyx.pxi":140
 * 
 *         # Clean up socket resources
 *         self._read_socket.close()             # <<<<<<<<<<<<<<
 *         self._write_socket.close()
 * 
 */
  __pyx_t_5 = __Pyx_PyObject_GetAttrStr(__pyx_v_self->_read_socket, __pyx_n_s_close); if (unlikely(!__pyx_t_5)) __PYX_ERR(8, 140, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_5);
  __pyx_t_1 = NULL;
  if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_5))) {
    __pyx_t_1 = PyMethod_GET_SELF(__pyx_t_5);
    if (likely(__pyx_t_1)) {
      PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_5);
      __Pyx_INCREF(__pyx_t_1);
      __Pyx_INCREF(function);
      __Pyx_DECREF_SET(__pyx_t_5, function);
    }
  }
  __pyx_t_8 = (__pyx_t_1) ? __Pyx_PyObject_CallOneArg(__pyx_t_5, __pyx_t_1) : __Pyx_PyObject_CallNoArg(__pyx_t_5);
  __Pyx_XDECREF(__pyx_t_1); __pyx_t_1 = 0;
  if (unlikely(!__pyx_t_8)) __PYX_ERR(8, 140, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_8);
  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
  __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;

  /* "src/python/grpcio/grpc/_cython/_cygrpc/aio/completion_queue.pyx.pxi":141
 *         # Clean up socket resources
 *         self._read_socket.close()
 *         self._write_socket.close()             # <<<<<<<<<<<<<<
 * 
 *     def _handle_events(self, object context_loop):
 */
  __pyx_t_5 = __Pyx_PyObject_GetAttrStr(__pyx_v_self->_write_socket, __pyx_n_s_close); if (unlikely(!__pyx_t_5)) __PYX_ERR(8, 141, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_5);
  __pyx_t_1 = NULL;
  if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_5))) {
    __pyx_t_1 = PyMethod_GET_SELF(__pyx_t_5);
    if (likely(__pyx_t_1)) {
      PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_5);
      __Pyx_INCREF(__pyx_t_1);
      __Pyx_INCREF(function);
      __Pyx_DECREF_SET(__pyx_t_5, function);
    }
  }
  __pyx_t_8 = (__pyx_t_1) ? __Pyx_PyObject_CallOneArg(__pyx_t_5, __pyx_t_1) : __Pyx_PyObject_CallNoArg(__pyx_t_5);
  __Pyx_XDECREF(__pyx_t_1); __pyx_t_1 = 0;
  if (unlikely(!__pyx_t_8)) __PYX_ERR(8, 141, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_8);
  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
  __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;

  /* "src/python/grpcio/grpc/_cython/_cygrpc/aio/completion_queue.pyx.pxi":128
 *             self._poll()
 * 
 *     cdef shutdown(self):             # <<<<<<<<<<<<<<
 *         # Removes the socket hook from loops
 *         for loop in self._loops:
 */

  /* function exit code */
  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_XDECREF(__pyx_t_5);
  __Pyx_XDECREF(__pyx_t_7);
  __Pyx_XDECREF(__pyx_t_8);
  __Pyx_AddTraceback("grpc._cython.cygrpc.PollerCompletionQueue.shutdown", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = 0;
  __pyx_L0:;
  __Pyx_XDECREF(__pyx_v_loop);
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "src/python/grpcio/grpc/_cython/_cygrpc/aio/completion_queue.pyx.pxi":143
 *         self._write_socket.close()
 * 
 *     def _handle_events(self, object context_loop):             # <<<<<<<<<<<<<<
 *         cdef bytes data
 *         if _has_fd_monitoring:
 */

/* Python wrapper */
static PyObject *__pyx_pw_4grpc_7_cython_6cygrpc_21PollerCompletionQueue_7_handle_events(PyObject *__pyx_v_self, PyObject *__pyx_v_context_loop); /*proto*/
static PyObject *__pyx_pw_4grpc_7_cython_6cygrpc_21PollerCompletionQueue_7_handle_events(PyObject *__pyx_v_self, PyObject *__pyx_v_context_loop) {
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("_handle_events (wrapper)", 0);
  __pyx_r = __pyx_pf_4grpc_7_cython_6cygrpc_21PollerCompletionQueue_6_handle_events(((struct __pyx_obj_4grpc_7_cython_6cygrpc_PollerCompletionQueue *)__pyx_v_self), ((PyObject *)__pyx_v_context_loop));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_4grpc_7_cython_6cygrpc_21PollerCompletionQueue_6_handle_events(struct __pyx_obj_4grpc_7_cython_6cygrpc_PollerCompletionQueue *__pyx_v_self, PyObject *__pyx_v_context_loop) {
  CYTHON_UNUSED PyObject *__pyx_v_data = 0;
  grpc_event __pyx_v_event;
  struct __pyx_t_4grpc_7_cython_6cygrpc_CallbackContext *__pyx_v_context;
  PyObject *__pyx_v_loop = NULL;
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  int __pyx_t_1;
  PyObject *__pyx_t_2 = NULL;
  PyObject *__pyx_t_3 = NULL;
  PyObject *__pyx_t_4 = NULL;
  int __pyx_t_5;
  PyObject *__pyx_t_6 = NULL;
  PyObject *__pyx_t_7 = NULL;
  int __pyx_t_8;
  PyObject *__pyx_t_9 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("_handle_events", 0);

  /* "src/python/grpcio/grpc/_cython/_cygrpc/aio/completion_queue.pyx.pxi":145
 *     def _handle_events(self, object context_loop):
 *         cdef bytes data
 *         if _has_fd_monitoring:             # <<<<<<<<<<<<<<
 *             # If fd monitoring is working, clean the socket without blocking.
 *             data = self._read_socket.recv(1)
 */
  __pyx_t_1 = (__pyx_v_4grpc_7_cython_6cygrpc__has_fd_monitoring != 0);
  if (__pyx_t_1) {

    /* "src/python/grpcio/grpc/_cython/_cygrpc/aio/completion_queue.pyx.pxi":147
 *         if _has_fd_monitoring:
 *             # If fd monitoring is working, clean the socket without blocking.
 *             data = self._read_socket.recv(1)             # <<<<<<<<<<<<<<
 *         cdef grpc_event event
 *         cdef CallbackContext *context
 */
    __pyx_t_3 = __Pyx_PyObject_GetAttrStr(__pyx_v_self->_read_socket, __pyx_n_s_recv); if (unlikely(!__pyx_t_3)) __PYX_ERR(8, 147, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_3);
    __pyx_t_4 = NULL;
    if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_3))) {
      __pyx_t_4 = PyMethod_GET_SELF(__pyx_t_3);
      if (likely(__pyx_t_4)) {
        PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_3);
        __Pyx_INCREF(__pyx_t_4);
        __Pyx_INCREF(function);
        __Pyx_DECREF_SET(__pyx_t_3, function);
      }
    }
    __pyx_t_2 = (__pyx_t_4) ? __Pyx_PyObject_Call2Args(__pyx_t_3, __pyx_t_4, __pyx_int_1) : __Pyx_PyObject_CallOneArg(__pyx_t_3, __pyx_int_1);
    __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0;
    if (unlikely(!__pyx_t_2)) __PYX_ERR(8, 147, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_2);
    __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
    if (!(likely(PyBytes_CheckExact(__pyx_t_2))||((__pyx_t_2) == Py_None)||(PyErr_Format(PyExc_TypeError, "Expected %.16s, got %.200s", "bytes", Py_TYPE(__pyx_t_2)->tp_name), 0))) __PYX_ERR(8, 147, __pyx_L1_error)
    __pyx_v_data = ((PyObject*)__pyx_t_2);
    __pyx_t_2 = 0;

    /* "src/python/grpcio/grpc/_cython/_cygrpc/aio/completion_queue.pyx.pxi":145
 *     def _handle_events(self, object context_loop):
 *         cdef bytes data
 *         if _has_fd_monitoring:             # <<<<<<<<<<<<<<
 *             # If fd monitoring is working, clean the socket without blocking.
 *             data = self._read_socket.recv(1)
 */
  }

  /* "src/python/grpcio/grpc/_cython/_cygrpc/aio/completion_queue.pyx.pxi":151
 *         cdef CallbackContext *context
 * 
 *         while True:             # <<<<<<<<<<<<<<
 *             self._queue_mutex.lock()
 *             if self._queue.empty():
 */
  while (1) {

    /* "src/python/grpcio/grpc/_cython/_cygrpc/aio/completion_queue.pyx.pxi":152
 * 
 *         while True:
 *             self._queue_mutex.lock()             # <<<<<<<<<<<<<<
 *             if self._queue.empty():
 *                 self._queue_mutex.unlock()
 */
    __pyx_v_self->_queue_mutex.lock();

    /* "src/python/grpcio/grpc/_cython/_cygrpc/aio/completion_queue.pyx.pxi":153
 *         while True:
 *             self._queue_mutex.lock()
 *             if self._queue.empty():             # <<<<<<<<<<<<<<
 *                 self._queue_mutex.unlock()
 *                 break
 */
    __pyx_t_1 = (__pyx_v_self->_queue.empty() != 0);
    if (__pyx_t_1) {

      /* "src/python/grpcio/grpc/_cython/_cygrpc/aio/completion_queue.pyx.pxi":154
 *             self._queue_mutex.lock()
 *             if self._queue.empty():
 *                 self._queue_mutex.unlock()             # <<<<<<<<<<<<<<
 *                 break
 *             else:
 */
      __pyx_v_self->_queue_mutex.unlock();

      /* "src/python/grpcio/grpc/_cython/_cygrpc/aio/completion_queue.pyx.pxi":155
 *             if self._queue.empty():
 *                 self._queue_mutex.unlock()
 *                 break             # <<<<<<<<<<<<<<
 *             else:
 *                 event = self._queue.front()
 */
      goto __pyx_L5_break;

      /* "src/python/grpcio/grpc/_cython/_cygrpc/aio/completion_queue.pyx.pxi":153
 *         while True:
 *             self._queue_mutex.lock()
 *             if self._queue.empty():             # <<<<<<<<<<<<<<
 *                 self._queue_mutex.unlock()
 *                 break
 */
    }

    /* "src/python/grpcio/grpc/_cython/_cygrpc/aio/completion_queue.pyx.pxi":157
 *                 break
 *             else:
 *                 event = self._queue.front()             # <<<<<<<<<<<<<<
 *                 self._queue.pop()
 *                 self._queue_mutex.unlock()
 */
    /*else*/ {
      __pyx_v_event = __pyx_v_self->_queue.front();

      /* "src/python/grpcio/grpc/_cython/_cygrpc/aio/completion_queue.pyx.pxi":158
 *             else:
 *                 event = self._queue.front()
 *                 self._queue.pop()             # <<<<<<<<<<<<<<
 *                 self._queue_mutex.unlock()
 * 
 */
      __pyx_v_self->_queue.pop();

      /* "src/python/grpcio/grpc/_cython/_cygrpc/aio/completion_queue.pyx.pxi":159
 *                 event = self._queue.front()
 *                 self._queue.pop()
 *                 self._queue_mutex.unlock()             # <<<<<<<<<<<<<<
 * 
 *             context = <CallbackContext *>event.tag
 */
      __pyx_v_self->_queue_mutex.unlock();
    }

    /* "src/python/grpcio/grpc/_cython/_cygrpc/aio/completion_queue.pyx.pxi":161
 *                 self._queue_mutex.unlock()
 * 
 *             context = <CallbackContext *>event.tag             # <<<<<<<<<<<<<<
 *             loop = <object>context.loop
 *             if loop is context_loop:
 */
    __pyx_v_context = ((struct __pyx_t_4grpc_7_cython_6cygrpc_CallbackContext *)__pyx_v_event.tag);

    /* "src/python/grpcio/grpc/_cython/_cygrpc/aio/completion_queue.pyx.pxi":162
 * 
 *             context = <CallbackContext *>event.tag
 *             loop = <object>context.loop             # <<<<<<<<<<<<<<
 *             if loop is context_loop:
 *                 # Executes callbacks: complete the future
 */
    __pyx_t_2 = ((PyObject *)__pyx_v_context->loop);
    __Pyx_INCREF(__pyx_t_2);
    __Pyx_XDECREF_SET(__pyx_v_loop, __pyx_t_2);
    __pyx_t_2 = 0;

    /* "src/python/grpcio/grpc/_cython/_cygrpc/aio/completion_queue.pyx.pxi":163
 *             context = <CallbackContext *>event.tag
 *             loop = <object>context.loop
 *             if loop is context_loop:             # <<<<<<<<<<<<<<
 *                 # Executes callbacks: complete the future
 *                 CallbackWrapper.functor_run(
 */
    __pyx_t_1 = (__pyx_v_loop == __pyx_v_context_loop);
    __pyx_t_5 = (__pyx_t_1 != 0);
    if (__pyx_t_5) {

      /* "src/python/grpcio/grpc/_cython/_cygrpc/aio/completion_queue.pyx.pxi":165
 *             if loop is context_loop:
 *                 # Executes callbacks: complete the future
 *                 CallbackWrapper.functor_run(             # <<<<<<<<<<<<<<
 *                     <grpc_completion_queue_functor *>event.tag,
 *                     event.success
 */
      __pyx_f_4grpc_7_cython_6cygrpc_15CallbackWrapper_functor_run(((grpc_completion_queue_functor *)__pyx_v_event.tag), __pyx_v_event.success);

      /* "src/python/grpcio/grpc/_cython/_cygrpc/aio/completion_queue.pyx.pxi":163
 *             context = <CallbackContext *>event.tag
 *             loop = <object>context.loop
 *             if loop is context_loop:             # <<<<<<<<<<<<<<
 *                 # Executes callbacks: complete the future
 *                 CallbackWrapper.functor_run(
 */
      goto __pyx_L7;
    }

    /* "src/python/grpcio/grpc/_cython/_cygrpc/aio/completion_queue.pyx.pxi":170
 *                 )
 *             else:
 *                 loop.call_soon_threadsafe(             # <<<<<<<<<<<<<<
 *                     _handle_callback_wrapper,
 *                     <CallbackWrapper>context.callback_wrapper,
 */
    /*else*/ {
      __pyx_t_3 = __Pyx_PyObject_GetAttrStr(__pyx_v_loop, __pyx_n_s_call_soon_threadsafe); if (unlikely(!__pyx_t_3)) __PYX_ERR(8, 170, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_3);

      /* "src/python/grpcio/grpc/_cython/_cygrpc/aio/completion_queue.pyx.pxi":171
 *             else:
 *                 loop.call_soon_threadsafe(
 *                     _handle_callback_wrapper,             # <<<<<<<<<<<<<<
 *                     <CallbackWrapper>context.callback_wrapper,
 *                     event.success
 */
      __Pyx_GetModuleGlobalName(__pyx_t_4, __pyx_n_s_handle_callback_wrapper); if (unlikely(!__pyx_t_4)) __PYX_ERR(8, 171, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_4);

      /* "src/python/grpcio/grpc/_cython/_cygrpc/aio/completion_queue.pyx.pxi":173
 *                     _handle_callback_wrapper,
 *                     <CallbackWrapper>context.callback_wrapper,
 *                     event.success             # <<<<<<<<<<<<<<
 *                 )
 */
      __pyx_t_6 = __Pyx_PyInt_From_int(__pyx_v_event.success); if (unlikely(!__pyx_t_6)) __PYX_ERR(8, 173, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_6);
      __pyx_t_7 = NULL;
      __pyx_t_8 = 0;
      if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_3))) {
        __pyx_t_7 = PyMethod_GET_SELF(__pyx_t_3);
        if (likely(__pyx_t_7)) {
          PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_3);
          __Pyx_INCREF(__pyx_t_7);
          __Pyx_INCREF(function);
          __Pyx_DECREF_SET(__pyx_t_3, function);
          __pyx_t_8 = 1;
        }
      }
      #if CYTHON_FAST_PYCALL
      if (PyFunction_Check(__pyx_t_3)) {
        PyObject *__pyx_temp[4] = {__pyx_t_7, __pyx_t_4, ((PyObject *)__pyx_v_context->callback_wrapper), __pyx_t_6};
        __pyx_t_2 = __Pyx_PyFunction_FastCall(__pyx_t_3, __pyx_temp+1-__pyx_t_8, 3+__pyx_t_8); if (unlikely(!__pyx_t_2)) __PYX_ERR(8, 170, __pyx_L1_error)
        __Pyx_XDECREF(__pyx_t_7); __pyx_t_7 = 0;
        __Pyx_GOTREF(__pyx_t_2);
        __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
        __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
      } else
      #endif
      #if CYTHON_FAST_PYCCALL
      if (__Pyx_PyFastCFunction_Check(__pyx_t_3)) {
        PyObject *__pyx_temp[4] = {__pyx_t_7, __pyx_t_4, ((PyObject *)__pyx_v_context->callback_wrapper), __pyx_t_6};
        __pyx_t_2 = __Pyx_PyCFunction_FastCall(__pyx_t_3, __pyx_temp+1-__pyx_t_8, 3+__pyx_t_8); if (unlikely(!__pyx_t_2)) __PYX_ERR(8, 170, __pyx_L1_error)
        __Pyx_XDECREF(__pyx_t_7); __pyx_t_7 = 0;
        __Pyx_GOTREF(__pyx_t_2);
        __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
        __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
      } else
      #endif
      {
        __pyx_t_9 = PyTuple_New(3+__pyx_t_8); if (unlikely(!__pyx_t_9)) __PYX_ERR(8, 170, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_9);
        if (__pyx_t_7) {
          __Pyx_GIVEREF(__pyx_t_7); PyTuple_SET_ITEM(__pyx_t_9, 0, __pyx_t_7); __pyx_t_7 = NULL;
        }
        __Pyx_GIVEREF(__pyx_t_4);
        PyTuple_SET_ITEM(__pyx_t_9, 0+__pyx_t_8, __pyx_t_4);
        __Pyx_INCREF(((PyObject *)((struct __pyx_obj_4grpc_7_cython_6cygrpc_CallbackWrapper *)__pyx_v_context->callback_wrapper)));
        __Pyx_GIVEREF(((PyObject *)__pyx_v_context->callback_wrapper));
        PyTuple_SET_ITEM(__pyx_t_9, 1+__pyx_t_8, ((PyObject *)__pyx_v_context->callback_wrapper));
        __Pyx_GIVEREF(__pyx_t_6);
        PyTuple_SET_ITEM(__pyx_t_9, 2+__pyx_t_8, __pyx_t_6);
        __pyx_t_4 = 0;
        __pyx_t_6 = 0;
        __pyx_t_2 = __Pyx_PyObject_Call(__pyx_t_3, __pyx_t_9, NULL); if (unlikely(!__pyx_t_2)) __PYX_ERR(8, 170, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_2);
        __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0;
      }
      __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
      __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
    }
    __pyx_L7:;
  }
  __pyx_L5_break:;

  /* "src/python/grpcio/grpc/_cython/_cygrpc/aio/completion_queue.pyx.pxi":143
 *         self._write_socket.close()
 * 
 *     def _handle_events(self, object context_loop):             # <<<<<<<<<<<<<<
 *         cdef bytes data
 *         if _has_fd_monitoring:
 */

  /* function exit code */
  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_XDECREF(__pyx_t_3);
  __Pyx_XDECREF(__pyx_t_4);
  __Pyx_XDECREF(__pyx_t_6);
  __Pyx_XDECREF(__pyx_t_7);
  __Pyx_XDECREF(__pyx_t_9);
  __Pyx_AddTraceback("grpc._cython.cygrpc.PollerCompletionQueue._handle_events", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XDECREF(__pyx_v_data);
  __Pyx_XDECREF(__pyx_v_loop);
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "(tree fragment)":1
 * def __reduce_cython__(self):             # <<<<<<<<<<<<<<
 *     raise TypeError("no default __reduce__ due to non-trivial __cinit__")
 * def __setstate_cython__(self, __pyx_state):
 */

/* Python wrapper */
static PyObject *__pyx_pw_4grpc_7_cython_6cygrpc_21PollerCompletionQueue_9__reduce_cython__(PyObject *__pyx_v_self, CYTHON_UNUSED PyObject *unused); /*proto*/
static PyObject *__pyx_pw_4grpc_7_cython_6cygrpc_21PollerCompletionQueue_9__reduce_cython__(PyObject *__pyx_v_self, CYTHON_UNUSED PyObject *unused) {
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__reduce_cython__ (wrapper)", 0);
  __pyx_r = __pyx_pf_4grpc_7_cython_6cygrpc_21PollerCompletionQueue_8__reduce_cython__(((struct __pyx_obj_4grpc_7_cython_6cygrpc_PollerCompletionQueue *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_4grpc_7_cython_6cygrpc_21PollerCompletionQueue_8__reduce_cython__(CYTHON_UNUSED struct __pyx_obj_4grpc_7_cython_6cygrpc_PollerCompletionQueue *__pyx_v_self) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("__reduce_cython__", 0);

  /* "(tree fragment)":2
 * def __reduce_cython__(self):
 *     raise TypeError("no default __reduce__ due to non-trivial __cinit__")             # <<<<<<<<<<<<<<
 * def __setstate_cython__(self, __pyx_state):
 *     raise TypeError("no default __reduce__ due to non-trivial __cinit__")
 */
  __pyx_t_1 = __Pyx_PyObject_Call(__pyx_builtin_TypeError, __pyx_tuple__149, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(11, 2, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_Raise(__pyx_t_1, 0, 0, 0);
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  __PYX_ERR(11, 2, __pyx_L1_error)

  /* "(tree fragment)":1
 * def __reduce_cython__(self):             # <<<<<<<<<<<<<<
 *     raise TypeError("no default __reduce__ due to non-trivial __cinit__")
 * def __setstate_cython__(self, __pyx_state):
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_AddTraceback("grpc._cython.cygrpc.PollerCompletionQueue.__reduce_cython__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "(tree fragment)":3
 * def __reduce_cython__(self):
 *     raise TypeError("no default __reduce__ due to non-trivial __cinit__")
 * def __setstate_cython__(self, __pyx_state):             # <<<<<<<<<<<<<<
 *     raise TypeError("no default __reduce__ due to non-trivial __cinit__")
 */

/* Python wrapper */
static PyObject *__pyx_pw_4grpc_7_cython_6cygrpc_21PollerCompletionQueue_11__setstate_cython__(PyObject *__pyx_v_self, PyObject *__pyx_v___pyx_state); /*proto*/
static PyObject *__pyx_pw_4grpc_7_cython_6cygrpc_21PollerCompletionQueue_11__setstate_cython__(PyObject *__pyx_v_self, PyObject *__pyx_v___pyx_state) {
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__setstate_cython__ (wrapper)", 0);
  __pyx_r = __pyx_pf_4grpc_7_cython_6cygrpc_21PollerCompletionQueue_10__setstate_cython__(((struct __pyx_obj_4grpc_7_cython_6cygrpc_PollerCompletionQueue *)__pyx_v_self), ((PyObject *)__pyx_v___pyx_state));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_4grpc_7_cython_6cygrpc_21PollerCompletionQueue_10__setstate_cython__(CYTHON_UNUSED struct __pyx_obj_4grpc_7_cython_6cygrpc_PollerCompletionQueue *__pyx_v_self, CYTHON_UNUSED PyObject *__pyx_v___pyx_state) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("__setstate_cython__", 0);

  /* "(tree fragment)":4
 *     raise TypeError("no default __reduce__ due to non-trivial __cinit__")
 * def __setstate_cython__(self, __pyx_state):
 *     raise TypeError("no default __reduce__ due to non-trivial __cinit__")             # <<<<<<<<<<<<<<
 */
  __pyx_t_1 = __Pyx_PyObject_Call(__pyx_builtin_TypeError, __pyx_tuple__150, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(11, 4, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_Raise(__pyx_t_1, 0, 0, 0);
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  __PYX_ERR(11, 4, __pyx_L1_error)

  /* "(tree fragment)":3
 * def __reduce_cython__(self):
 *     raise TypeError("no default __reduce__ due to non-trivial __cinit__")
 * def __setstate_cython__(self, __pyx_state):             # <<<<<<<<<<<<<<
 *     raise TypeError("no default __reduce__ due to non-trivial __cinit__")
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_AddTraceback("grpc._cython.cygrpc.PollerCompletionQueue.__setstate_cython__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "src/python/grpcio/grpc/_cython/_cygrpc/aio/callback_common.pyx.pxi":18
 * cdef class CallbackFailureHandler:
 * 
 *     def __cinit__(self,             # <<<<<<<<<<<<<<
 *                   str core_function_name,
 *                   object error_details,
 */

/* Python wrapper */
static int __pyx_pw_4grpc_7_cython_6cygrpc_22CallbackFailureHandler_1__cinit__(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
static int __pyx_pw_4grpc_7_cython_6cygrpc_22CallbackFailureHandler_1__cinit__(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
  PyObject *__pyx_v_core_function_name = 0;
  PyObject *__pyx_v_error_details = 0;
  PyObject *__pyx_v_exception_type = 0;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  int __pyx_r;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__cinit__ (wrapper)", 0);
  {
    static PyObject **__pyx_pyargnames[] = {&__pyx_n_s_core_function_name,&__pyx_n_s_error_details,&__pyx_n_s_exception_type,0};
    PyObject* values[3] = {0,0,0};
    if (unlikely(__pyx_kwds)) {
      Py_ssize_t kw_args;
      const Py_ssize_t pos_args = PyTuple_GET_SIZE(__pyx_args);
      switch (pos_args) {
        case  3: values[2] = PyTuple_GET_ITEM(__pyx_args, 2);
        CYTHON_FALLTHROUGH;
        case  2: values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
        CYTHON_FALLTHROUGH;
        case  1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
        CYTHON_FALLTHROUGH;
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      kw_args = PyDict_Size(__pyx_kwds);
      switch (pos_args) {
        case  0:
        if (likely((values[0] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_core_function_name)) != 0)) kw_args--;
        else goto __pyx_L5_argtuple_error;
        CYTHON_FALLTHROUGH;
        case  1:
        if (likely((values[1] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_error_details)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("__cinit__", 1, 3, 3, 1); __PYX_ERR(31, 18, __pyx_L3_error)
        }
        CYTHON_FALLTHROUGH;
        case  2:
        if (likely((values[2] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_exception_type)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("__cinit__", 1, 3, 3, 2); __PYX_ERR(31, 18, __pyx_L3_error)
        }
      }
      if (unlikely(kw_args > 0)) {
        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "__cinit__") < 0)) __PYX_ERR(31, 18, __pyx_L3_error)
      }
    } else if (PyTuple_GET_SIZE(__pyx_args) != 3) {
      goto __pyx_L5_argtuple_error;
    } else {
      values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
      values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
      values[2] = PyTuple_GET_ITEM(__pyx_args, 2);
    }
    __pyx_v_core_function_name = ((PyObject*)values[0]);
    __pyx_v_error_details = values[1];
    __pyx_v_exception_type = values[2];
  }
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("__cinit__", 1, 3, 3, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(31, 18, __pyx_L3_error)
  __pyx_L3_error:;
  __Pyx_AddTraceback("grpc._cython.cygrpc.CallbackFailureHandler.__cinit__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return -1;
  __pyx_L4_argument_unpacking_done:;
  if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_core_function_name), (&PyString_Type), 1, "core_function_name", 1))) __PYX_ERR(31, 19, __pyx_L1_error)
  __pyx_r = __pyx_pf_4grpc_7_cython_6cygrpc_22CallbackFailureHandler___cinit__(((struct __pyx_obj_4grpc_7_cython_6cygrpc_CallbackFailureHandler *)__pyx_v_self), __pyx_v_core_function_name, __pyx_v_error_details, __pyx_v_exception_type);

  /* function exit code */
  goto __pyx_L0;
  __pyx_L1_error:;
  __pyx_r = -1;
  __pyx_L0:;
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static int __pyx_pf_4grpc_7_cython_6cygrpc_22CallbackFailureHandler___cinit__(struct __pyx_obj_4grpc_7_cython_6cygrpc_CallbackFailureHandler *__pyx_v_self, PyObject *__pyx_v_core_function_name, PyObject *__pyx_v_error_details, PyObject *__pyx_v_exception_type) {
  int __pyx_r;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__cinit__", 0);

  /* "src/python/grpcio/grpc/_cython/_cygrpc/aio/callback_common.pyx.pxi":23
 *                   object exception_type):
 *         """Handles failure by raising exception."""
 *         self._core_function_name = core_function_name             # <<<<<<<<<<<<<<
 *         self._error_details = error_details
 *         self._exception_type = exception_type
 */
  __Pyx_INCREF(__pyx_v_core_function_name);
  __Pyx_GIVEREF(__pyx_v_core_function_name);
  __Pyx_GOTREF(__pyx_v_self->_core_function_name);
  __Pyx_DECREF(__pyx_v_self->_core_function_name);
  __pyx_v_self->_core_function_name = __pyx_v_core_function_name;

  /* "src/python/grpcio/grpc/_cython/_cygrpc/aio/callback_common.pyx.pxi":24
 *         """Handles failure by raising exception."""
 *         self._core_function_name = core_function_name
 *         self._error_details = error_details             # <<<<<<<<<<<<<<
 *         self._exception_type = exception_type
 * 
 */
  __Pyx_INCREF(__pyx_v_error_details);
  __Pyx_GIVEREF(__pyx_v_error_details);
  __Pyx_GOTREF(__pyx_v_self->_error_details);
  __Pyx_DECREF(__pyx_v_self->_error_details);
  __pyx_v_self->_error_details = __pyx_v_error_details;

  /* "src/python/grpcio/grpc/_cython/_cygrpc/aio/callback_common.pyx.pxi":25
 *         self._core_function_name = core_function_name
 *         self._error_details = error_details
 *         self._exception_type = exception_type             # <<<<<<<<<<<<<<
 * 
 *     cdef handle(self, object future):
 */
  __Pyx_INCREF(__pyx_v_exception_type);
  __Pyx_GIVEREF(__pyx_v_exception_type);
  __Pyx_GOTREF(__pyx_v_self->_exception_type);
  __Pyx_DECREF(__pyx_v_self->_exception_type);
  __pyx_v_self->_exception_type = __pyx_v_exception_type;

  /* "src/python/grpcio/grpc/_cython/_cygrpc/aio/callback_common.pyx.pxi":18
 * cdef class CallbackFailureHandler:
 * 
 *     def __cinit__(self,             # <<<<<<<<<<<<<<
 *                   str core_function_name,
 *                   object error_details,
 */

  /* function exit code */
  __pyx_r = 0;
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "src/python/grpcio/grpc/_cython/_cygrpc/aio/callback_common.pyx.pxi":27
 *         self._exception_type = exception_type
 * 
 *     cdef handle(self, object future):             # <<<<<<<<<<<<<<
 *         future.set_exception(self._exception_type(
 *             'Failed "%s": %s' % (self._core_function_name, self._error_details)
 */

static PyObject *__pyx_f_4grpc_7_cython_6cygrpc_22CallbackFailureHandler_handle(struct __pyx_obj_4grpc_7_cython_6cygrpc_CallbackFailureHandler *__pyx_v_self, PyObject *__pyx_v_future) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  PyObject *__pyx_t_2 = NULL;
  PyObject *__pyx_t_3 = NULL;
  PyObject *__pyx_t_4 = NULL;
  PyObject *__pyx_t_5 = NULL;
  PyObject *__pyx_t_6 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("handle", 0);

  /* "src/python/grpcio/grpc/_cython/_cygrpc/aio/callback_common.pyx.pxi":28
 * 
 *     cdef handle(self, object future):
 *         future.set_exception(self._exception_type(             # <<<<<<<<<<<<<<
 *             'Failed "%s": %s' % (self._core_function_name, self._error_details)
 *         ))
 */
  __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_v_future, __pyx_n_s_set_exception); if (unlikely(!__pyx_t_2)) __PYX_ERR(31, 28, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);

  /* "src/python/grpcio/grpc/_cython/_cygrpc/aio/callback_common.pyx.pxi":29
 *     cdef handle(self, object future):
 *         future.set_exception(self._exception_type(
 *             'Failed "%s": %s' % (self._core_function_name, self._error_details)             # <<<<<<<<<<<<<<
 *         ))
 * 
 */
  __pyx_t_4 = PyTuple_New(2); if (unlikely(!__pyx_t_4)) __PYX_ERR(31, 29, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_4);
  __Pyx_INCREF(__pyx_v_self->_core_function_name);
  __Pyx_GIVEREF(__pyx_v_self->_core_function_name);
  PyTuple_SET_ITEM(__pyx_t_4, 0, __pyx_v_self->_core_function_name);
  __Pyx_INCREF(__pyx_v_self->_error_details);
  __Pyx_GIVEREF(__pyx_v_self->_error_details);
  PyTuple_SET_ITEM(__pyx_t_4, 1, __pyx_v_self->_error_details);
  __pyx_t_5 = __Pyx_PyString_Format(__pyx_kp_s_Failed_s_s, __pyx_t_4); if (unlikely(!__pyx_t_5)) __PYX_ERR(31, 29, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_5);
  __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
  __Pyx_INCREF(__pyx_v_self->_exception_type);
  __pyx_t_4 = __pyx_v_self->_exception_type; __pyx_t_6 = NULL;
  if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_4))) {
    __pyx_t_6 = PyMethod_GET_SELF(__pyx_t_4);
    if (likely(__pyx_t_6)) {
      PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_4);
      __Pyx_INCREF(__pyx_t_6);
      __Pyx_INCREF(function);
      __Pyx_DECREF_SET(__pyx_t_4, function);
    }
  }
  __pyx_t_3 = (__pyx_t_6) ? __Pyx_PyObject_Call2Args(__pyx_t_4, __pyx_t_6, __pyx_t_5) : __Pyx_PyObject_CallOneArg(__pyx_t_4, __pyx_t_5);
  __Pyx_XDECREF(__pyx_t_6); __pyx_t_6 = 0;
  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
  if (unlikely(!__pyx_t_3)) __PYX_ERR(31, 28, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
  __pyx_t_4 = NULL;
  if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_2))) {
    __pyx_t_4 = PyMethod_GET_SELF(__pyx_t_2);
    if (likely(__pyx_t_4)) {
      PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_2);
      __Pyx_INCREF(__pyx_t_4);
      __Pyx_INCREF(function);
      __Pyx_DECREF_SET(__pyx_t_2, function);
    }
  }
  __pyx_t_1 = (__pyx_t_4) ? __Pyx_PyObject_Call2Args(__pyx_t_2, __pyx_t_4, __pyx_t_3) : __Pyx_PyObject_CallOneArg(__pyx_t_2, __pyx_t_3);
  __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0;
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
  if (unlikely(!__pyx_t_1)) __PYX_ERR(31, 28, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;

  /* "src/python/grpcio/grpc/_cython/_cygrpc/aio/callback_common.pyx.pxi":27
 *         self._exception_type = exception_type
 * 
 *     cdef handle(self, object future):             # <<<<<<<<<<<<<<
 *         future.set_exception(self._exception_type(
 *             'Failed "%s": %s' % (self._core_function_name, self._error_details)
 */

  /* function exit code */
  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_XDECREF(__pyx_t_3);
  __Pyx_XDECREF(__pyx_t_4);
  __Pyx_XDECREF(__pyx_t_5);
  __Pyx_XDECREF(__pyx_t_6);
  __Pyx_AddTraceback("grpc._cython.cygrpc.CallbackFailureHandler.handle", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = 0;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "(tree fragment)":1
 * def __reduce_cython__(self):             # <<<<<<<<<<<<<<
 *     raise TypeError("no default __reduce__ due to non-trivial __cinit__")
 * def __setstate_cython__(self, __pyx_state):
 */

/* Python wrapper */
static PyObject *__pyx_pw_4grpc_7_cython_6cygrpc_22CallbackFailureHandler_3__reduce_cython__(PyObject *__pyx_v_self, CYTHON_UNUSED PyObject *unused); /*proto*/
static PyObject *__pyx_pw_4grpc_7_cython_6cygrpc_22CallbackFailureHandler_3__reduce_cython__(PyObject *__pyx_v_self, CYTHON_UNUSED PyObject *unused) {
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__reduce_cython__ (wrapper)", 0);
  __pyx_r = __pyx_pf_4grpc_7_cython_6cygrpc_22CallbackFailureHandler_2__reduce_cython__(((struct __pyx_obj_4grpc_7_cython_6cygrpc_CallbackFailureHandler *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_4grpc_7_cython_6cygrpc_22CallbackFailureHandler_2__reduce_cython__(CYTHON_UNUSED struct __pyx_obj_4grpc_7_cython_6cygrpc_CallbackFailureHandler *__pyx_v_self) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("__reduce_cython__", 0);

  /* "(tree fragment)":2
 * def __reduce_cython__(self):
 *     raise TypeError("no default __reduce__ due to non-trivial __cinit__")             # <<<<<<<<<<<<<<
 * def __setstate_cython__(self, __pyx_state):
 *     raise TypeError("no default __reduce__ due to non-trivial __cinit__")
 */
  __pyx_t_1 = __Pyx_PyObject_Call(__pyx_builtin_TypeError, __pyx_tuple__151, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(11, 2, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_Raise(__pyx_t_1, 0, 0, 0);
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  __PYX_ERR(11, 2, __pyx_L1_error)

  /* "(tree fragment)":1
 * def __reduce_cython__(self):             # <<<<<<<<<<<<<<
 *     raise TypeError("no default __reduce__ due to non-trivial __cinit__")
 * def __setstate_cython__(self, __pyx_state):
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_AddTraceback("grpc._cython.cygrpc.CallbackFailureHandler.__reduce_cython__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "(tree fragment)":3
 * def __reduce_cython__(self):
 *     raise TypeError("no default __reduce__ due to non-trivial __cinit__")
 * def __setstate_cython__(self, __pyx_state):             # <<<<<<<<<<<<<<
 *     raise TypeError("no default __reduce__ due to non-trivial __cinit__")
 */

/* Python wrapper */
static PyObject *__pyx_pw_4grpc_7_cython_6cygrpc_22CallbackFailureHandler_5__setstate_cython__(PyObject *__pyx_v_self, PyObject *__pyx_v___pyx_state); /*proto*/
static PyObject *__pyx_pw_4grpc_7_cython_6cygrpc_22CallbackFailureHandler_5__setstate_cython__(PyObject *__pyx_v_self, PyObject *__pyx_v___pyx_state) {
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__setstate_cython__ (wrapper)", 0);
  __pyx_r = __pyx_pf_4grpc_7_cython_6cygrpc_22CallbackFailureHandler_4__setstate_cython__(((struct __pyx_obj_4grpc_7_cython_6cygrpc_CallbackFailureHandler *)__pyx_v_self), ((PyObject *)__pyx_v___pyx_state));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_4grpc_7_cython_6cygrpc_22CallbackFailureHandler_4__setstate_cython__(CYTHON_UNUSED struct __pyx_obj_4grpc_7_cython_6cygrpc_CallbackFailureHandler *__pyx_v_self, CYTHON_UNUSED PyObject *__pyx_v___pyx_state) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("__setstate_cython__", 0);

  /* "(tree fragment)":4
 *     raise TypeError("no default __reduce__ due to non-trivial __cinit__")
 * def __setstate_cython__(self, __pyx_state):
 *     raise TypeError("no default __reduce__ due to non-trivial __cinit__")             # <<<<<<<<<<<<<<
 */
  __pyx_t_1 = __Pyx_PyObject_Call(__pyx_builtin_TypeError, __pyx_tuple__152, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(11, 4, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_Raise(__pyx_t_1, 0, 0, 0);
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  __PYX_ERR(11, 4, __pyx_L1_error)

  /* "(tree fragment)":3
 * def __reduce_cython__(self):
 *     raise TypeError("no default __reduce__ due to non-trivial __cinit__")
 * def __setstate_cython__(self, __pyx_state):             # <<<<<<<<<<<<<<
 *     raise TypeError("no default __reduce__ due to non-trivial __cinit__")
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_AddTraceback("grpc._cython.cygrpc.CallbackFailureHandler.__setstate_cython__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "src/python/grpcio/grpc/_cython/_cygrpc/aio/callback_common.pyx.pxi":35
 * cdef class CallbackWrapper:
 * 
 *     def __cinit__(self, object future, object loop, CallbackFailureHandler failure_handler):             # <<<<<<<<<<<<<<
 *         self.context.functor.functor_run = self.functor_run
 *         self.context.waiter = <cpython.PyObject*>future
 */

/* Python wrapper */
static int __pyx_pw_4grpc_7_cython_6cygrpc_15CallbackWrapper_1__cinit__(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
static int __pyx_pw_4grpc_7_cython_6cygrpc_15CallbackWrapper_1__cinit__(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
  PyObject *__pyx_v_future = 0;
  PyObject *__pyx_v_loop = 0;
  struct __pyx_obj_4grpc_7_cython_6cygrpc_CallbackFailureHandler *__pyx_v_failure_handler = 0;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  int __pyx_r;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__cinit__ (wrapper)", 0);
  {
    static PyObject **__pyx_pyargnames[] = {&__pyx_n_s_future,&__pyx_n_s_loop,&__pyx_n_s_failure_handler,0};
    PyObject* values[3] = {0,0,0};
    if (unlikely(__pyx_kwds)) {
      Py_ssize_t kw_args;
      const Py_ssize_t pos_args = PyTuple_GET_SIZE(__pyx_args);
      switch (pos_args) {
        case  3: values[2] = PyTuple_GET_ITEM(__pyx_args, 2);
        CYTHON_FALLTHROUGH;
        case  2: values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
        CYTHON_FALLTHROUGH;
        case  1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
        CYTHON_FALLTHROUGH;
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      kw_args = PyDict_Size(__pyx_kwds);
      switch (pos_args) {
        case  0:
        if (likely((values[0] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_future)) != 0)) kw_args--;
        else goto __pyx_L5_argtuple_error;
        CYTHON_FALLTHROUGH;
        case  1:
        if (likely((values[1] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_loop)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("__cinit__", 1, 3, 3, 1); __PYX_ERR(31, 35, __pyx_L3_error)
        }
        CYTHON_FALLTHROUGH;
        case  2:
        if (likely((values[2] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_failure_handler)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("__cinit__", 1, 3, 3, 2); __PYX_ERR(31, 35, __pyx_L3_error)
        }
      }
      if (unlikely(kw_args > 0)) {
        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "__cinit__") < 0)) __PYX_ERR(31, 35, __pyx_L3_error)
      }
    } else if (PyTuple_GET_SIZE(__pyx_args) != 3) {
      goto __pyx_L5_argtuple_error;
    } else {
      values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
      values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
      values[2] = PyTuple_GET_ITEM(__pyx_args, 2);
    }
    __pyx_v_future = values[0];
    __pyx_v_loop = values[1];
    __pyx_v_failure_handler = ((struct __pyx_obj_4grpc_7_cython_6cygrpc_CallbackFailureHandler *)values[2]);
  }
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("__cinit__", 1, 3, 3, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(31, 35, __pyx_L3_error)
  __pyx_L3_error:;
  __Pyx_AddTraceback("grpc._cython.cygrpc.CallbackWrapper.__cinit__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return -1;
  __pyx_L4_argument_unpacking_done:;
  if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_failure_handler), __pyx_ptype_4grpc_7_cython_6cygrpc_CallbackFailureHandler, 1, "failure_handler", 0))) __PYX_ERR(31, 35, __pyx_L1_error)
  __pyx_r = __pyx_pf_4grpc_7_cython_6cygrpc_15CallbackWrapper___cinit__(((struct __pyx_obj_4grpc_7_cython_6cygrpc_CallbackWrapper *)__pyx_v_self), __pyx_v_future, __pyx_v_loop, __pyx_v_failure_handler);

  /* function exit code */
  goto __pyx_L0;
  __pyx_L1_error:;
  __pyx_r = -1;
  __pyx_L0:;
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static int __pyx_pf_4grpc_7_cython_6cygrpc_15CallbackWrapper___cinit__(struct __pyx_obj_4grpc_7_cython_6cygrpc_CallbackWrapper *__pyx_v_self, PyObject *__pyx_v_future, PyObject *__pyx_v_loop, struct __pyx_obj_4grpc_7_cython_6cygrpc_CallbackFailureHandler *__pyx_v_failure_handler) {
  int __pyx_r;
  __Pyx_RefNannyDeclarations
  void (*__pyx_t_1)(grpc_completion_queue_functor *, int);
  __Pyx_RefNannySetupContext("__cinit__", 0);

  /* "src/python/grpcio/grpc/_cython/_cygrpc/aio/callback_common.pyx.pxi":36
 * 
 *     def __cinit__(self, object future, object loop, CallbackFailureHandler failure_handler):
 *         self.context.functor.functor_run = self.functor_run             # <<<<<<<<<<<<<<
 *         self.context.waiter = <cpython.PyObject*>future
 *         self.context.loop = <cpython.PyObject*>loop
 */
  __pyx_t_1 = ((struct __pyx_vtabstruct_4grpc_7_cython_6cygrpc_CallbackWrapper *)__pyx_v_self->__pyx_vtab)->functor_run;
  __pyx_v_self->context.functor.functor_run = __pyx_t_1;

  /* "src/python/grpcio/grpc/_cython/_cygrpc/aio/callback_common.pyx.pxi":37
 *     def __cinit__(self, object future, object loop, CallbackFailureHandler failure_handler):
 *         self.context.functor.functor_run = self.functor_run
 *         self.context.waiter = <cpython.PyObject*>future             # <<<<<<<<<<<<<<
 *         self.context.loop = <cpython.PyObject*>loop
 *         self.context.failure_handler = <cpython.PyObject*>failure_handler
 */
  __pyx_v_self->context.waiter = ((PyObject *)__pyx_v_future);

  /* "src/python/grpcio/grpc/_cython/_cygrpc/aio/callback_common.pyx.pxi":38
 *         self.context.functor.functor_run = self.functor_run
 *         self.context.waiter = <cpython.PyObject*>future
 *         self.context.loop = <cpython.PyObject*>loop             # <<<<<<<<<<<<<<
 *         self.context.failure_handler = <cpython.PyObject*>failure_handler
 *         self.context.callback_wrapper = <cpython.PyObject*>self
 */
  __pyx_v_self->context.loop = ((PyObject *)__pyx_v_loop);

  /* "src/python/grpcio/grpc/_cython/_cygrpc/aio/callback_common.pyx.pxi":39
 *         self.context.waiter = <cpython.PyObject*>future
 *         self.context.loop = <cpython.PyObject*>loop
 *         self.context.failure_handler = <cpython.PyObject*>failure_handler             # <<<<<<<<<<<<<<
 *         self.context.callback_wrapper = <cpython.PyObject*>self
 *         # NOTE(lidiz) Not using a list here, because this class is critical in
 */
  __pyx_v_self->context.failure_handler = ((PyObject *)__pyx_v_failure_handler);

  /* "src/python/grpcio/grpc/_cython/_cygrpc/aio/callback_common.pyx.pxi":40
 *         self.context.loop = <cpython.PyObject*>loop
 *         self.context.failure_handler = <cpython.PyObject*>failure_handler
 *         self.context.callback_wrapper = <cpython.PyObject*>self             # <<<<<<<<<<<<<<
 *         # NOTE(lidiz) Not using a list here, because this class is critical in
 *         # data path. We should make it as efficient as possible.
 */
  __pyx_v_self->context.callback_wrapper = ((PyObject *)__pyx_v_self);

  /* "src/python/grpcio/grpc/_cython/_cygrpc/aio/callback_common.pyx.pxi":43
 *         # NOTE(lidiz) Not using a list here, because this class is critical in
 *         # data path. We should make it as efficient as possible.
 *         self._reference_of_future = future             # <<<<<<<<<<<<<<
 *         self._reference_of_failure_handler = failure_handler
 *         # NOTE(lidiz) We need to ensure when Core invokes our callback, the
 */
  __Pyx_INCREF(__pyx_v_future);
  __Pyx_GIVEREF(__pyx_v_future);
  __Pyx_GOTREF(__pyx_v_self->_reference_of_future);
  __Pyx_DECREF(__pyx_v_self->_reference_of_future);
  __pyx_v_self->_reference_of_future = __pyx_v_future;

  /* "src/python/grpcio/grpc/_cython/_cygrpc/aio/callback_common.pyx.pxi":44
 *         # data path. We should make it as efficient as possible.
 *         self._reference_of_future = future
 *         self._reference_of_failure_handler = failure_handler             # <<<<<<<<<<<<<<
 *         # NOTE(lidiz) We need to ensure when Core invokes our callback, the
 *         # callback function itself is not deallocated. Othersise, we will get
 */
  __Pyx_INCREF(((PyObject *)__pyx_v_failure_handler));
  __Pyx_GIVEREF(((PyObject *)__pyx_v_failure_handler));
  __Pyx_GOTREF(__pyx_v_self->_reference_of_failure_handler);
  __Pyx_DECREF(__pyx_v_self->_reference_of_failure_handler);
  __pyx_v_self->_reference_of_failure_handler = ((PyObject *)__pyx_v_failure_handler);

  /* "src/python/grpcio/grpc/_cython/_cygrpc/aio/callback_common.pyx.pxi":48
 *         # callback function itself is not deallocated. Othersise, we will get
 *         # a segfault. We can view this as Core holding a ref.
 *         cpython.Py_INCREF(self)             # <<<<<<<<<<<<<<
 * 
 *     @staticmethod
 */
  Py_INCREF(((PyObject *)__pyx_v_self));

  /* "src/python/grpcio/grpc/_cython/_cygrpc/aio/callback_common.pyx.pxi":35
 * cdef class CallbackWrapper:
 * 
 *     def __cinit__(self, object future, object loop, CallbackFailureHandler failure_handler):             # <<<<<<<<<<<<<<
 *         self.context.functor.functor_run = self.functor_run
 *         self.context.waiter = <cpython.PyObject*>future
 */

  /* function exit code */
  __pyx_r = 0;
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "src/python/grpcio/grpc/_cython/_cygrpc/aio/callback_common.pyx.pxi":51
 * 
 *     @staticmethod
 *     cdef void functor_run(             # <<<<<<<<<<<<<<
 *             grpc_completion_queue_functor* functor,
 *             int success):
 */

static void __pyx_f_4grpc_7_cython_6cygrpc_15CallbackWrapper_functor_run(grpc_completion_queue_functor *__pyx_v_functor, int __pyx_v_success) {
  struct __pyx_t_4grpc_7_cython_6cygrpc_CallbackContext *__pyx_v_context;
  PyObject *__pyx_v_waiter = 0;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  PyObject *__pyx_t_2 = NULL;
  PyObject *__pyx_t_3 = NULL;
  int __pyx_t_4;
  int __pyx_t_5;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("functor_run", 0);

  /* "src/python/grpcio/grpc/_cython/_cygrpc/aio/callback_common.pyx.pxi":54
 *             grpc_completion_queue_functor* functor,
 *             int success):
 *         cdef CallbackContext *context = <CallbackContext *>functor             # <<<<<<<<<<<<<<
 *         cdef object waiter = <object>context.waiter
 *         if not waiter.cancelled():
 */
  __pyx_v_context = ((struct __pyx_t_4grpc_7_cython_6cygrpc_CallbackContext *)__pyx_v_functor);

  /* "src/python/grpcio/grpc/_cython/_cygrpc/aio/callback_common.pyx.pxi":55
 *             int success):
 *         cdef CallbackContext *context = <CallbackContext *>functor
 *         cdef object waiter = <object>context.waiter             # <<<<<<<<<<<<<<
 *         if not waiter.cancelled():
 *             if success == 0:
 */
  __pyx_t_1 = ((PyObject *)__pyx_v_context->waiter);
  __Pyx_INCREF(__pyx_t_1);
  __pyx_v_waiter = __pyx_t_1;
  __pyx_t_1 = 0;

  /* "src/python/grpcio/grpc/_cython/_cygrpc/aio/callback_common.pyx.pxi":56
 *         cdef CallbackContext *context = <CallbackContext *>functor
 *         cdef object waiter = <object>context.waiter
 *         if not waiter.cancelled():             # <<<<<<<<<<<<<<
 *             if success == 0:
 *                 (<CallbackFailureHandler>context.failure_handler).handle(waiter)
 */
  __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_v_waiter, __pyx_n_s_cancelled); if (unlikely(!__pyx_t_2)) __PYX_ERR(31, 56, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __pyx_t_3 = NULL;
  if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_2))) {
    __pyx_t_3 = PyMethod_GET_SELF(__pyx_t_2);
    if (likely(__pyx_t_3)) {
      PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_2);
      __Pyx_INCREF(__pyx_t_3);
      __Pyx_INCREF(function);
      __Pyx_DECREF_SET(__pyx_t_2, function);
    }
  }
  __pyx_t_1 = (__pyx_t_3) ? __Pyx_PyObject_CallOneArg(__pyx_t_2, __pyx_t_3) : __Pyx_PyObject_CallNoArg(__pyx_t_2);
  __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0;
  if (unlikely(!__pyx_t_1)) __PYX_ERR(31, 56, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  __pyx_t_4 = __Pyx_PyObject_IsTrue(__pyx_t_1); if (unlikely(__pyx_t_4 < 0)) __PYX_ERR(31, 56, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  __pyx_t_5 = ((!__pyx_t_4) != 0);
  if (__pyx_t_5) {

    /* "src/python/grpcio/grpc/_cython/_cygrpc/aio/callback_common.pyx.pxi":57
 *         cdef object waiter = <object>context.waiter
 *         if not waiter.cancelled():
 *             if success == 0:             # <<<<<<<<<<<<<<
 *                 (<CallbackFailureHandler>context.failure_handler).handle(waiter)
 *             else:
 */
    __pyx_t_5 = ((__pyx_v_success == 0) != 0);
    if (__pyx_t_5) {

      /* "src/python/grpcio/grpc/_cython/_cygrpc/aio/callback_common.pyx.pxi":58
 *         if not waiter.cancelled():
 *             if success == 0:
 *                 (<CallbackFailureHandler>context.failure_handler).handle(waiter)             # <<<<<<<<<<<<<<
 *             else:
 *                 waiter.set_result(None)
 */
      __pyx_t_1 = ((struct __pyx_vtabstruct_4grpc_7_cython_6cygrpc_CallbackFailureHandler *)((struct __pyx_obj_4grpc_7_cython_6cygrpc_CallbackFailureHandler *)__pyx_v_context->failure_handler)->__pyx_vtab)->handle(((struct __pyx_obj_4grpc_7_cython_6cygrpc_CallbackFailureHandler *)__pyx_v_context->failure_handler), __pyx_v_waiter); if (unlikely(!__pyx_t_1)) __PYX_ERR(31, 58, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_1);
      __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;

      /* "src/python/grpcio/grpc/_cython/_cygrpc/aio/callback_common.pyx.pxi":57
 *         cdef object waiter = <object>context.waiter
 *         if not waiter.cancelled():
 *             if success == 0:             # <<<<<<<<<<<<<<
 *                 (<CallbackFailureHandler>context.failure_handler).handle(waiter)
 *             else:
 */
      goto __pyx_L4;
    }

    /* "src/python/grpcio/grpc/_cython/_cygrpc/aio/callback_common.pyx.pxi":60
 *                 (<CallbackFailureHandler>context.failure_handler).handle(waiter)
 *             else:
 *                 waiter.set_result(None)             # <<<<<<<<<<<<<<
 *         cpython.Py_DECREF(<object>context.callback_wrapper)
 * 
 */
    /*else*/ {
      __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_v_waiter, __pyx_n_s_set_result); if (unlikely(!__pyx_t_2)) __PYX_ERR(31, 60, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_2);
      __pyx_t_3 = NULL;
      if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_2))) {
        __pyx_t_3 = PyMethod_GET_SELF(__pyx_t_2);
        if (likely(__pyx_t_3)) {
          PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_2);
          __Pyx_INCREF(__pyx_t_3);
          __Pyx_INCREF(function);
          __Pyx_DECREF_SET(__pyx_t_2, function);
        }
      }
      __pyx_t_1 = (__pyx_t_3) ? __Pyx_PyObject_Call2Args(__pyx_t_2, __pyx_t_3, Py_None) : __Pyx_PyObject_CallOneArg(__pyx_t_2, Py_None);
      __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0;
      if (unlikely(!__pyx_t_1)) __PYX_ERR(31, 60, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_1);
      __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
      __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
    }
    __pyx_L4:;

    /* "src/python/grpcio/grpc/_cython/_cygrpc/aio/callback_common.pyx.pxi":56
 *         cdef CallbackContext *context = <CallbackContext *>functor
 *         cdef object waiter = <object>context.waiter
 *         if not waiter.cancelled():             # <<<<<<<<<<<<<<
 *             if success == 0:
 *                 (<CallbackFailureHandler>context.failure_handler).handle(waiter)
 */
  }

  /* "src/python/grpcio/grpc/_cython/_cygrpc/aio/callback_common.pyx.pxi":61
 *             else:
 *                 waiter.set_result(None)
 *         cpython.Py_DECREF(<object>context.callback_wrapper)             # <<<<<<<<<<<<<<
 * 
 *     cdef grpc_completion_queue_functor *c_functor(self):
 */
  __pyx_t_1 = ((PyObject *)__pyx_v_context->callback_wrapper);
  __Pyx_INCREF(__pyx_t_1);
  Py_DECREF(__pyx_t_1);
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;

  /* "src/python/grpcio/grpc/_cython/_cygrpc/aio/callback_common.pyx.pxi":51
 * 
 *     @staticmethod
 *     cdef void functor_run(             # <<<<<<<<<<<<<<
 *             grpc_completion_queue_functor* functor,
 *             int success):
 */

  /* function exit code */
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_XDECREF(__pyx_t_3);
  __Pyx_WriteUnraisable("grpc._cython.cygrpc.CallbackWrapper.functor_run", __pyx_clineno, __pyx_lineno, __pyx_filename, 1, 0);
  __pyx_L0:;
  __Pyx_XDECREF(__pyx_v_waiter);
  __Pyx_RefNannyFinishContext();
}

/* "src/python/grpcio/grpc/_cython/_cygrpc/aio/callback_common.pyx.pxi":63
 *         cpython.Py_DECREF(<object>context.callback_wrapper)
 * 
 *     cdef grpc_completion_queue_functor *c_functor(self):             # <<<<<<<<<<<<<<
 *         return &self.context.functor
 * 
 */

static grpc_completion_queue_functor *__pyx_f_4grpc_7_cython_6cygrpc_15CallbackWrapper_c_functor(struct __pyx_obj_4grpc_7_cython_6cygrpc_CallbackWrapper *__pyx_v_self) {
  grpc_completion_queue_functor *__pyx_r;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("c_functor", 0);

  /* "src/python/grpcio/grpc/_cython/_cygrpc/aio/callback_common.pyx.pxi":64
 * 
 *     cdef grpc_completion_queue_functor *c_functor(self):
 *         return &self.context.functor             # <<<<<<<<<<<<<<
 * 
 * 
 */
  __pyx_r = (&__pyx_v_self->context.functor);
  goto __pyx_L0;

  /* "src/python/grpcio/grpc/_cython/_cygrpc/aio/callback_common.pyx.pxi":63
 *         cpython.Py_DECREF(<object>context.callback_wrapper)
 * 
 *     cdef grpc_completion_queue_functor *c_functor(self):             # <<<<<<<<<<<<<<
 *         return &self.context.functor
 * 
 */

  /* function exit code */
  __pyx_L0:;
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "(tree fragment)":1
 * def __reduce_cython__(self):             # <<<<<<<<<<<<<<
 *     raise TypeError("no default __reduce__ due to non-trivial __cinit__")
 * def __setstate_cython__(self, __pyx_state):
 */

/* Python wrapper */
static PyObject *__pyx_pw_4grpc_7_cython_6cygrpc_15CallbackWrapper_3__reduce_cython__(PyObject *__pyx_v_self, CYTHON_UNUSED PyObject *unused); /*proto*/
static PyObject *__pyx_pw_4grpc_7_cython_6cygrpc_15CallbackWrapper_3__reduce_cython__(PyObject *__pyx_v_self, CYTHON_UNUSED PyObject *unused) {
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__reduce_cython__ (wrapper)", 0);
  __pyx_r = __pyx_pf_4grpc_7_cython_6cygrpc_15CallbackWrapper_2__reduce_cython__(((struct __pyx_obj_4grpc_7_cython_6cygrpc_CallbackWrapper *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_4grpc_7_cython_6cygrpc_15CallbackWrapper_2__reduce_cython__(CYTHON_UNUSED struct __pyx_obj_4grpc_7_cython_6cygrpc_CallbackWrapper *__pyx_v_self) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("__reduce_cython__", 0);

  /* "(tree fragment)":2
 * def __reduce_cython__(self):
 *     raise TypeError("no default __reduce__ due to non-trivial __cinit__")             # <<<<<<<<<<<<<<
 * def __setstate_cython__(self, __pyx_state):
 *     raise TypeError("no default __reduce__ due to non-trivial __cinit__")
 */
  __pyx_t_1 = __Pyx_PyObject_Call(__pyx_builtin_TypeError, __pyx_tuple__153, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(11, 2, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_Raise(__pyx_t_1, 0, 0, 0);
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  __PYX_ERR(11, 2, __pyx_L1_error)

  /* "(tree fragment)":1
 * def __reduce_cython__(self):             # <<<<<<<<<<<<<<
 *     raise TypeError("no default __reduce__ due to non-trivial __cinit__")
 * def __setstate_cython__(self, __pyx_state):
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_AddTraceback("grpc._cython.cygrpc.CallbackWrapper.__reduce_cython__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "(tree fragment)":3
 * def __reduce_cython__(self):
 *     raise TypeError("no default __reduce__ due to non-trivial __cinit__")
 * def __setstate_cython__(self, __pyx_state):             # <<<<<<<<<<<<<<
 *     raise TypeError("no default __reduce__ due to non-trivial __cinit__")
 */

/* Python wrapper */
static PyObject *__pyx_pw_4grpc_7_cython_6cygrpc_15CallbackWrapper_5__setstate_cython__(PyObject *__pyx_v_self, PyObject *__pyx_v___pyx_state); /*proto*/
static PyObject *__pyx_pw_4grpc_7_cython_6cygrpc_15CallbackWrapper_5__setstate_cython__(PyObject *__pyx_v_self, PyObject *__pyx_v___pyx_state) {
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__setstate_cython__ (wrapper)", 0);
  __pyx_r = __pyx_pf_4grpc_7_cython_6cygrpc_15CallbackWrapper_4__setstate_cython__(((struct __pyx_obj_4grpc_7_cython_6cygrpc_CallbackWrapper *)__pyx_v_self), ((PyObject *)__pyx_v___pyx_state));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_4grpc_7_cython_6cygrpc_15CallbackWrapper_4__setstate_cython__(CYTHON_UNUSED struct __pyx_obj_4grpc_7_cython_6cygrpc_CallbackWrapper *__pyx_v_self, CYTHON_UNUSED PyObject *__pyx_v___pyx_state) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("__setstate_cython__", 0);

  /* "(tree fragment)":4
 *     raise TypeError("no default __reduce__ due to non-trivial __cinit__")
 * def __setstate_cython__(self, __pyx_state):
 *     raise TypeError("no default __reduce__ due to non-trivial __cinit__")             # <<<<<<<<<<<<<<
 */
  __pyx_t_1 = __Pyx_PyObject_Call(__pyx_builtin_TypeError, __pyx_tuple__154, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(11, 4, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_Raise(__pyx_t_1, 0, 0, 0);
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  __PYX_ERR(11, 4, __pyx_L1_error)

  /* "(tree fragment)":3
 * def __reduce_cython__(self):
 *     raise TypeError("no default __reduce__ due to non-trivial __cinit__")
 * def __setstate_cython__(self, __pyx_state):             # <<<<<<<<<<<<<<
 *     raise TypeError("no default __reduce__ due to non-trivial __cinit__")
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_AddTraceback("grpc._cython.cygrpc.CallbackWrapper.__setstate_cython__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}
static PyObject *__pyx_gb_4grpc_7_cython_6cygrpc_122generator2(__pyx_CoroutineObject *__pyx_generator, CYTHON_UNUSED PyThreadState *__pyx_tstate, PyObject *__pyx_sent_value); /* proto */

/* "src/python/grpcio/grpc/_cython/_cygrpc/aio/callback_common.pyx.pxi":77
 * 
 * 
 * async def execute_batch(GrpcCallWrapper grpc_call_wrapper,             # <<<<<<<<<<<<<<
 *                                tuple operations,
 *                                object loop):
 */

/* Python wrapper */
static PyObject *__pyx_pw_4grpc_7_cython_6cygrpc_121execute_batch(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
static char __pyx_doc_4grpc_7_cython_6cygrpc_120execute_batch[] = "The callback version of start batch operations.";
static PyMethodDef __pyx_mdef_4grpc_7_cython_6cygrpc_121execute_batch = {"execute_batch", (PyCFunction)(void*)(PyCFunctionWithKeywords)__pyx_pw_4grpc_7_cython_6cygrpc_121execute_batch, METH_VARARGS|METH_KEYWORDS, __pyx_doc_4grpc_7_cython_6cygrpc_120execute_batch};
static PyObject *__pyx_pw_4grpc_7_cython_6cygrpc_121execute_batch(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
  struct __pyx_obj_4grpc_7_cython_6cygrpc_GrpcCallWrapper *__pyx_v_grpc_call_wrapper = 0;
  PyObject *__pyx_v_operations = 0;
  PyObject *__pyx_v_loop = 0;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("execute_batch (wrapper)", 0);
  {
    static PyObject **__pyx_pyargnames[] = {&__pyx_n_s_grpc_call_wrapper,&__pyx_n_s_operations,&__pyx_n_s_loop,0};
    PyObject* values[3] = {0,0,0};
    if (unlikely(__pyx_kwds)) {
      Py_ssize_t kw_args;
      const Py_ssize_t pos_args = PyTuple_GET_SIZE(__pyx_args);
      switch (pos_args) {
        case  3: values[2] = PyTuple_GET_ITEM(__pyx_args, 2);
        CYTHON_FALLTHROUGH;
        case  2: values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
        CYTHON_FALLTHROUGH;
        case  1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
        CYTHON_FALLTHROUGH;
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      kw_args = PyDict_Size(__pyx_kwds);
      switch (pos_args) {
        case  0:
        if (likely((values[0] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_grpc_call_wrapper)) != 0)) kw_args--;
        else goto __pyx_L5_argtuple_error;
        CYTHON_FALLTHROUGH;
        case  1:
        if (likely((values[1] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_operations)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("execute_batch", 1, 3, 3, 1); __PYX_ERR(31, 77, __pyx_L3_error)
        }
        CYTHON_FALLTHROUGH;
        case  2:
        if (likely((values[2] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_loop)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("execute_batch", 1, 3, 3, 2); __PYX_ERR(31, 77, __pyx_L3_error)
        }
      }
      if (unlikely(kw_args > 0)) {
        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "execute_batch") < 0)) __PYX_ERR(31, 77, __pyx_L3_error)
      }
    } else if (PyTuple_GET_SIZE(__pyx_args) != 3) {
      goto __pyx_L5_argtuple_error;
    } else {
      values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
      values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
      values[2] = PyTuple_GET_ITEM(__pyx_args, 2);
    }
    __pyx_v_grpc_call_wrapper = ((struct __pyx_obj_4grpc_7_cython_6cygrpc_GrpcCallWrapper *)values[0]);
    __pyx_v_operations = ((PyObject*)values[1]);
    __pyx_v_loop = values[2];
  }
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("execute_batch", 1, 3, 3, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(31, 77, __pyx_L3_error)
  __pyx_L3_error:;
  __Pyx_AddTraceback("grpc._cython.cygrpc.execute_batch", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_grpc_call_wrapper), __pyx_ptype_4grpc_7_cython_6cygrpc_GrpcCallWrapper, 1, "grpc_call_wrapper", 0))) __PYX_ERR(31, 77, __pyx_L1_error)
  if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_operations), (&PyTuple_Type), 1, "operations", 1))) __PYX_ERR(31, 78, __pyx_L1_error)
  __pyx_r = __pyx_pf_4grpc_7_cython_6cygrpc_120execute_batch(__pyx_self, __pyx_v_grpc_call_wrapper, __pyx_v_operations, __pyx_v_loop);

  /* function exit code */
  goto __pyx_L0;
  __pyx_L1_error:;
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_4grpc_7_cython_6cygrpc_120execute_batch(CYTHON_UNUSED PyObject *__pyx_self, struct __pyx_obj_4grpc_7_cython_6cygrpc_GrpcCallWrapper *__pyx_v_grpc_call_wrapper, PyObject *__pyx_v_operations, PyObject *__pyx_v_loop) {
  struct __pyx_obj_4grpc_7_cython_6cygrpc___pyx_scope_struct_14_execute_batch *__pyx_cur_scope;
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("execute_batch", 0);
  __pyx_cur_scope = (struct __pyx_obj_4grpc_7_cython_6cygrpc___pyx_scope_struct_14_execute_batch *)__pyx_tp_new_4grpc_7_cython_6cygrpc___pyx_scope_struct_14_execute_batch(__pyx_ptype_4grpc_7_cython_6cygrpc___pyx_scope_struct_14_execute_batch, __pyx_empty_tuple, NULL);
  if (unlikely(!__pyx_cur_scope)) {
    __pyx_cur_scope = ((struct __pyx_obj_4grpc_7_cython_6cygrpc___pyx_scope_struct_14_execute_batch *)Py_None);
    __Pyx_INCREF(Py_None);
    __PYX_ERR(31, 77, __pyx_L1_error)
  } else {
    __Pyx_GOTREF(__pyx_cur_scope);
  }
  __pyx_cur_scope->__pyx_v_grpc_call_wrapper = __pyx_v_grpc_call_wrapper;
  __Pyx_INCREF((PyObject *)__pyx_cur_scope->__pyx_v_grpc_call_wrapper);
  __Pyx_GIVEREF((PyObject *)__pyx_cur_scope->__pyx_v_grpc_call_wrapper);
  __pyx_cur_scope->__pyx_v_operations = __pyx_v_operations;
  __Pyx_INCREF(__pyx_cur_scope->__pyx_v_operations);
  __Pyx_GIVEREF(__pyx_cur_scope->__pyx_v_operations);
  __pyx_cur_scope->__pyx_v_loop = __pyx_v_loop;
  __Pyx_INCREF(__pyx_cur_scope->__pyx_v_loop);
  __Pyx_GIVEREF(__pyx_cur_scope->__pyx_v_loop);
  {
    __pyx_CoroutineObject *gen = __Pyx_Coroutine_New((__pyx_coroutine_body_t) __pyx_gb_4grpc_7_cython_6cygrpc_122generator2, __pyx_codeobj__155, (PyObject *) __pyx_cur_scope, __pyx_n_s_execute_batch, __pyx_n_s_execute_batch, __pyx_n_s_grpc__cython_cygrpc); if (unlikely(!gen)) __PYX_ERR(31, 77, __pyx_L1_error)
    __Pyx_DECREF(__pyx_cur_scope);
    __Pyx_RefNannyFinishContext();
    return (PyObject *) gen;
  }

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_AddTraceback("grpc._cython.cygrpc.execute_batch", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __Pyx_DECREF(((PyObject *)__pyx_cur_scope));
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_gb_4grpc_7_cython_6cygrpc_122generator2(__pyx_CoroutineObject *__pyx_generator, CYTHON_UNUSED PyThreadState *__pyx_tstate, PyObject *__pyx_sent_value) /* generator body */
{
  struct __pyx_obj_4grpc_7_cython_6cygrpc___pyx_scope_struct_14_execute_batch *__pyx_cur_scope = ((struct __pyx_obj_4grpc_7_cython_6cygrpc___pyx_scope_struct_14_execute_batch *)__pyx_generator->closure);
  PyObject *__pyx_r = NULL;
  PyObject *__pyx_t_1 = NULL;
  PyObject *__pyx_t_2 = NULL;
  PyObject *__pyx_t_3 = NULL;
  int __pyx_t_4;
  PyObject *__pyx_t_5 = NULL;
  PyObject *__pyx_t_6 = NULL;
  PyObject *__pyx_t_7 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("execute_batch", 0);
  switch (__pyx_generator->resume_label) {
    case 0: goto __pyx_L3_first_run;
    case 1: goto __pyx_L5_resume_from_await;
    default: /* CPython raises the right error here */
    __Pyx_RefNannyFinishContext();
    return NULL;
  }
  __pyx_L3_first_run:;
  if (unlikely(!__pyx_sent_value)) __PYX_ERR(31, 77, __pyx_L1_error)

  /* "src/python/grpcio/grpc/_cython/_cygrpc/aio/callback_common.pyx.pxi":81
 *                                object loop):
 *     """The callback version of start batch operations."""
 *     cdef _BatchOperationTag batch_operation_tag = _BatchOperationTag(None, operations, None)             # <<<<<<<<<<<<<<
 *     batch_operation_tag.prepare()
 * 
 */
  __pyx_t_1 = PyTuple_New(3); if (unlikely(!__pyx_t_1)) __PYX_ERR(31, 81, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_INCREF(Py_None);
  __Pyx_GIVEREF(Py_None);
  PyTuple_SET_ITEM(__pyx_t_1, 0, Py_None);
  __Pyx_INCREF(__pyx_cur_scope->__pyx_v_operations);
  __Pyx_GIVEREF(__pyx_cur_scope->__pyx_v_operations);
  PyTuple_SET_ITEM(__pyx_t_1, 1, __pyx_cur_scope->__pyx_v_operations);
  __Pyx_INCREF(Py_None);
  __Pyx_GIVEREF(Py_None);
  PyTuple_SET_ITEM(__pyx_t_1, 2, Py_None);
  __pyx_t_2 = __Pyx_PyObject_Call(((PyObject *)__pyx_ptype_4grpc_7_cython_6cygrpc__BatchOperationTag), __pyx_t_1, NULL); if (unlikely(!__pyx_t_2)) __PYX_ERR(31, 81, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  __Pyx_GIVEREF(__pyx_t_2);
  __pyx_cur_scope->__pyx_v_batch_operation_tag = ((struct __pyx_obj_4grpc_7_cython_6cygrpc__BatchOperationTag *)__pyx_t_2);
  __pyx_t_2 = 0;

  /* "src/python/grpcio/grpc/_cython/_cygrpc/aio/callback_common.pyx.pxi":82
 *     """The callback version of start batch operations."""
 *     cdef _BatchOperationTag batch_operation_tag = _BatchOperationTag(None, operations, None)
 *     batch_operation_tag.prepare()             # <<<<<<<<<<<<<<
 * 
 *     cdef object future = loop.create_future()
 */
  ((struct __pyx_vtabstruct_4grpc_7_cython_6cygrpc__BatchOperationTag *)__pyx_cur_scope->__pyx_v_batch_operation_tag->__pyx_base.__pyx_vtab)->prepare(__pyx_cur_scope->__pyx_v_batch_operation_tag); if (unlikely(PyErr_Occurred())) __PYX_ERR(31, 82, __pyx_L1_error)

  /* "src/python/grpcio/grpc/_cython/_cygrpc/aio/callback_common.pyx.pxi":84
 *     batch_operation_tag.prepare()
 * 
 *     cdef object future = loop.create_future()             # <<<<<<<<<<<<<<
 *     cdef CallbackWrapper wrapper = CallbackWrapper(
 *         future,
 */
  __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_cur_scope->__pyx_v_loop, __pyx_n_s_create_future); if (unlikely(!__pyx_t_1)) __PYX_ERR(31, 84, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_t_3 = NULL;
  if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_1))) {
    __pyx_t_3 = PyMethod_GET_SELF(__pyx_t_1);
    if (likely(__pyx_t_3)) {
      PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_1);
      __Pyx_INCREF(__pyx_t_3);
      __Pyx_INCREF(function);
      __Pyx_DECREF_SET(__pyx_t_1, function);
    }
  }
  __pyx_t_2 = (__pyx_t_3) ? __Pyx_PyObject_CallOneArg(__pyx_t_1, __pyx_t_3) : __Pyx_PyObject_CallNoArg(__pyx_t_1);
  __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0;
  if (unlikely(!__pyx_t_2)) __PYX_ERR(31, 84, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  __Pyx_GIVEREF(__pyx_t_2);
  __pyx_cur_scope->__pyx_v_future = __pyx_t_2;
  __pyx_t_2 = 0;

  /* "src/python/grpcio/grpc/_cython/_cygrpc/aio/callback_common.pyx.pxi":88
 *         future,
 *         loop,
 *         CallbackFailureHandler('execute_batch', operations, ExecuteBatchError))             # <<<<<<<<<<<<<<
 *     cdef grpc_call_error error = grpc_call_start_batch(
 *         grpc_call_wrapper.call,
 */
  __Pyx_GetModuleGlobalName(__pyx_t_2, __pyx_n_s_ExecuteBatchError); if (unlikely(!__pyx_t_2)) __PYX_ERR(31, 88, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __pyx_t_1 = PyTuple_New(3); if (unlikely(!__pyx_t_1)) __PYX_ERR(31, 88, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_INCREF(__pyx_n_s_execute_batch);
  __Pyx_GIVEREF(__pyx_n_s_execute_batch);
  PyTuple_SET_ITEM(__pyx_t_1, 0, __pyx_n_s_execute_batch);
  __Pyx_INCREF(__pyx_cur_scope->__pyx_v_operations);
  __Pyx_GIVEREF(__pyx_cur_scope->__pyx_v_operations);
  PyTuple_SET_ITEM(__pyx_t_1, 1, __pyx_cur_scope->__pyx_v_operations);
  __Pyx_GIVEREF(__pyx_t_2);
  PyTuple_SET_ITEM(__pyx_t_1, 2, __pyx_t_2);
  __pyx_t_2 = 0;
  __pyx_t_2 = __Pyx_PyObject_Call(((PyObject *)__pyx_ptype_4grpc_7_cython_6cygrpc_CallbackFailureHandler), __pyx_t_1, NULL); if (unlikely(!__pyx_t_2)) __PYX_ERR(31, 88, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;

  /* "src/python/grpcio/grpc/_cython/_cygrpc/aio/callback_common.pyx.pxi":85
 * 
 *     cdef object future = loop.create_future()
 *     cdef CallbackWrapper wrapper = CallbackWrapper(             # <<<<<<<<<<<<<<
 *         future,
 *         loop,
 */
  __pyx_t_1 = PyTuple_New(3); if (unlikely(!__pyx_t_1)) __PYX_ERR(31, 85, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_INCREF(__pyx_cur_scope->__pyx_v_future);
  __Pyx_GIVEREF(__pyx_cur_scope->__pyx_v_future);
  PyTuple_SET_ITEM(__pyx_t_1, 0, __pyx_cur_scope->__pyx_v_future);
  __Pyx_INCREF(__pyx_cur_scope->__pyx_v_loop);
  __Pyx_GIVEREF(__pyx_cur_scope->__pyx_v_loop);
  PyTuple_SET_ITEM(__pyx_t_1, 1, __pyx_cur_scope->__pyx_v_loop);
  __Pyx_GIVEREF(__pyx_t_2);
  PyTuple_SET_ITEM(__pyx_t_1, 2, __pyx_t_2);
  __pyx_t_2 = 0;
  __pyx_t_2 = __Pyx_PyObject_Call(((PyObject *)__pyx_ptype_4grpc_7_cython_6cygrpc_CallbackWrapper), __pyx_t_1, NULL); if (unlikely(!__pyx_t_2)) __PYX_ERR(31, 85, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  __Pyx_GIVEREF(__pyx_t_2);
  __pyx_cur_scope->__pyx_v_wrapper = ((struct __pyx_obj_4grpc_7_cython_6cygrpc_CallbackWrapper *)__pyx_t_2);
  __pyx_t_2 = 0;

  /* "src/python/grpcio/grpc/_cython/_cygrpc/aio/callback_common.pyx.pxi":89
 *         loop,
 *         CallbackFailureHandler('execute_batch', operations, ExecuteBatchError))
 *     cdef grpc_call_error error = grpc_call_start_batch(             # <<<<<<<<<<<<<<
 *         grpc_call_wrapper.call,
 *         batch_operation_tag.c_ops,
 */
  __pyx_cur_scope->__pyx_v_error = grpc_call_start_batch(__pyx_cur_scope->__pyx_v_grpc_call_wrapper->call, __pyx_cur_scope->__pyx_v_batch_operation_tag->c_ops, __pyx_cur_scope->__pyx_v_batch_operation_tag->c_nops, ((struct __pyx_vtabstruct_4grpc_7_cython_6cygrpc_CallbackWrapper *)__pyx_cur_scope->__pyx_v_wrapper->__pyx_vtab)->c_functor(__pyx_cur_scope->__pyx_v_wrapper), NULL);

  /* "src/python/grpcio/grpc/_cython/_cygrpc/aio/callback_common.pyx.pxi":95
 *         wrapper.c_functor(), NULL)
 * 
 *     if error != GRPC_CALL_OK:             # <<<<<<<<<<<<<<
 *         raise ExecuteBatchError("Failed grpc_call_start_batch: {}".format(error))
 * 
 */
  __pyx_t_4 = ((__pyx_cur_scope->__pyx_v_error != GRPC_CALL_OK) != 0);
  if (unlikely(__pyx_t_4)) {

    /* "src/python/grpcio/grpc/_cython/_cygrpc/aio/callback_common.pyx.pxi":96
 * 
 *     if error != GRPC_CALL_OK:
 *         raise ExecuteBatchError("Failed grpc_call_start_batch: {}".format(error))             # <<<<<<<<<<<<<<
 * 
 *     await future
 */
    __Pyx_GetModuleGlobalName(__pyx_t_1, __pyx_n_s_ExecuteBatchError); if (unlikely(!__pyx_t_1)) __PYX_ERR(31, 96, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_1);
    __pyx_t_5 = __Pyx_PyObject_GetAttrStr(__pyx_kp_s_Failed_grpc_call_start_batch, __pyx_n_s_format); if (unlikely(!__pyx_t_5)) __PYX_ERR(31, 96, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_5);
    __pyx_t_6 = __Pyx_PyInt_From_grpc_call_error(__pyx_cur_scope->__pyx_v_error); if (unlikely(!__pyx_t_6)) __PYX_ERR(31, 96, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_6);
    __pyx_t_7 = NULL;
    if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_5))) {
      __pyx_t_7 = PyMethod_GET_SELF(__pyx_t_5);
      if (likely(__pyx_t_7)) {
        PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_5);
        __Pyx_INCREF(__pyx_t_7);
        __Pyx_INCREF(function);
        __Pyx_DECREF_SET(__pyx_t_5, function);
      }
    }
    __pyx_t_3 = (__pyx_t_7) ? __Pyx_PyObject_Call2Args(__pyx_t_5, __pyx_t_7, __pyx_t_6) : __Pyx_PyObject_CallOneArg(__pyx_t_5, __pyx_t_6);
    __Pyx_XDECREF(__pyx_t_7); __pyx_t_7 = 0;
    __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
    if (unlikely(!__pyx_t_3)) __PYX_ERR(31, 96, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_3);
    __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
    __pyx_t_5 = NULL;
    if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_1))) {
      __pyx_t_5 = PyMethod_GET_SELF(__pyx_t_1);
      if (likely(__pyx_t_5)) {
        PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_1);
        __Pyx_INCREF(__pyx_t_5);
        __Pyx_INCREF(function);
        __Pyx_DECREF_SET(__pyx_t_1, function);
      }
    }
    __pyx_t_2 = (__pyx_t_5) ? __Pyx_PyObject_Call2Args(__pyx_t_1, __pyx_t_5, __pyx_t_3) : __Pyx_PyObject_CallOneArg(__pyx_t_1, __pyx_t_3);
    __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0;
    __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
    if (unlikely(!__pyx_t_2)) __PYX_ERR(31, 96, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_2);
    __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
    __Pyx_Raise(__pyx_t_2, 0, 0, 0);
    __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
    __PYX_ERR(31, 96, __pyx_L1_error)

    /* "src/python/grpcio/grpc/_cython/_cygrpc/aio/callback_common.pyx.pxi":95
 *         wrapper.c_functor(), NULL)
 * 
 *     if error != GRPC_CALL_OK:             # <<<<<<<<<<<<<<
 *         raise ExecuteBatchError("Failed grpc_call_start_batch: {}".format(error))
 * 
 */
  }

  /* "src/python/grpcio/grpc/_cython/_cygrpc/aio/callback_common.pyx.pxi":98
 *         raise ExecuteBatchError("Failed grpc_call_start_batch: {}".format(error))
 * 
 *     await future             # <<<<<<<<<<<<<<
 * 
 *     cdef grpc_event c_event
 */
  __pyx_r = __Pyx_Coroutine_Yield_From(__pyx_generator, __pyx_cur_scope->__pyx_v_future);
  __Pyx_XGOTREF(__pyx_r);
  if (likely(__pyx_r)) {
    __Pyx_XGIVEREF(__pyx_r);
    __Pyx_RefNannyFinishContext();
    __Pyx_Coroutine_ResetAndClearException(__pyx_generator);
    /* return from generator, awaiting value */
    __pyx_generator->resume_label = 1;
    return __pyx_r;
    __pyx_L5_resume_from_await:;
    if (unlikely(!__pyx_sent_value)) __PYX_ERR(31, 98, __pyx_L1_error)
  } else {
    PyObject* exc_type = __Pyx_PyErr_Occurred();
    if (exc_type) {
      if (likely(exc_type == PyExc_StopIteration || (exc_type != PyExc_GeneratorExit && __Pyx_PyErr_GivenExceptionMatches(exc_type, PyExc_StopIteration)))) PyErr_Clear();
      else __PYX_ERR(31, 98, __pyx_L1_error)
    }
  }

  /* "src/python/grpcio/grpc/_cython/_cygrpc/aio/callback_common.pyx.pxi":102
 *     cdef grpc_event c_event
 *     # Tag.event must be called, otherwise messages won't be parsed from C
 *     batch_operation_tag.event(c_event)             # <<<<<<<<<<<<<<
 * 
 * 
 */
  __pyx_t_2 = ((PyObject *)((struct __pyx_vtabstruct_4grpc_7_cython_6cygrpc__BatchOperationTag *)__pyx_cur_scope->__pyx_v_batch_operation_tag->__pyx_base.__pyx_vtab)->event(__pyx_cur_scope->__pyx_v_batch_operation_tag, __pyx_cur_scope->__pyx_v_c_event)); if (unlikely(!__pyx_t_2)) __PYX_ERR(31, 102, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  CYTHON_MAYBE_UNUSED_VAR(__pyx_cur_scope);

  /* "src/python/grpcio/grpc/_cython/_cygrpc/aio/callback_common.pyx.pxi":77
 * 
 * 
 * async def execute_batch(GrpcCallWrapper grpc_call_wrapper,             # <<<<<<<<<<<<<<
 *                                tuple operations,
 *                                object loop):
 */

  /* function exit code */
  PyErr_SetNone(PyExc_StopIteration);
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_XDECREF(__pyx_t_3);
  __Pyx_XDECREF(__pyx_t_5);
  __Pyx_XDECREF(__pyx_t_6);
  __Pyx_XDECREF(__pyx_t_7);
  __Pyx_AddTraceback("execute_batch", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_L0:;
  __Pyx_XDECREF(__pyx_r); __pyx_r = 0;
  #if !CYTHON_USE_EXC_INFO_STACK
  __Pyx_Coroutine_ResetAndClearException(__pyx_generator);
  #endif
  __pyx_generator->resume_label = -1;
  __Pyx_Coroutine_clear((PyObject*)__pyx_generator);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "src/python/grpcio/grpc/_cython/_cygrpc/aio/callback_common.pyx.pxi":105
 * 
 * 
 * cdef prepend_send_initial_metadata_op(tuple ops, tuple metadata):             # <<<<<<<<<<<<<<
 *     # Eventually, this function should be the only function that produces
 *     # SendInitialMetadataOperation. So we have more control over the flag.
 */

static PyObject *__pyx_f_4grpc_7_cython_6cygrpc_prepend_send_initial_metadata_op(PyObject *__pyx_v_ops, PyObject *__pyx_v_metadata) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  PyObject *__pyx_t_2 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("prepend_send_initial_metadata_op", 0);

  /* "src/python/grpcio/grpc/_cython/_cygrpc/aio/callback_common.pyx.pxi":108
 *     # Eventually, this function should be the only function that produces
 *     # SendInitialMetadataOperation. So we have more control over the flag.
 *     return (SendInitialMetadataOperation(             # <<<<<<<<<<<<<<
 *         metadata,
 *         _EMPTY_FLAG
 */
  __Pyx_XDECREF(__pyx_r);

  /* "src/python/grpcio/grpc/_cython/_cygrpc/aio/callback_common.pyx.pxi":110
 *     return (SendInitialMetadataOperation(
 *         metadata,
 *         _EMPTY_FLAG             # <<<<<<<<<<<<<<
 *     ),) + ops
 * 
 */
  __pyx_t_1 = __Pyx_PyInt_From_int(__pyx_v_4grpc_7_cython_6cygrpc__EMPTY_FLAG); if (unlikely(!__pyx_t_1)) __PYX_ERR(31, 110, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);

  /* "src/python/grpcio/grpc/_cython/_cygrpc/aio/callback_common.pyx.pxi":108
 *     # Eventually, this function should be the only function that produces
 *     # SendInitialMetadataOperation. So we have more control over the flag.
 *     return (SendInitialMetadataOperation(             # <<<<<<<<<<<<<<
 *         metadata,
 *         _EMPTY_FLAG
 */
  __pyx_t_2 = PyTuple_New(2); if (unlikely(!__pyx_t_2)) __PYX_ERR(31, 108, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __Pyx_INCREF(__pyx_v_metadata);
  __Pyx_GIVEREF(__pyx_v_metadata);
  PyTuple_SET_ITEM(__pyx_t_2, 0, __pyx_v_metadata);
  __Pyx_GIVEREF(__pyx_t_1);
  PyTuple_SET_ITEM(__pyx_t_2, 1, __pyx_t_1);
  __pyx_t_1 = 0;
  __pyx_t_1 = __Pyx_PyObject_Call(((PyObject *)__pyx_ptype_4grpc_7_cython_6cygrpc_SendInitialMetadataOperation), __pyx_t_2, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(31, 108, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  __pyx_t_2 = PyTuple_New(1); if (unlikely(!__pyx_t_2)) __PYX_ERR(31, 108, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __Pyx_GIVEREF(__pyx_t_1);
  PyTuple_SET_ITEM(__pyx_t_2, 0, __pyx_t_1);
  __pyx_t_1 = 0;

  /* "src/python/grpcio/grpc/_cython/_cygrpc/aio/callback_common.pyx.pxi":111
 *         metadata,
 *         _EMPTY_FLAG
 *     ),) + ops             # <<<<<<<<<<<<<<
 * 
 * 
 */
  __pyx_t_1 = PyNumber_Add(__pyx_t_2, __pyx_v_ops); if (unlikely(!__pyx_t_1)) __PYX_ERR(31, 111, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  __pyx_r = __pyx_t_1;
  __pyx_t_1 = 0;
  goto __pyx_L0;

  /* "src/python/grpcio/grpc/_cython/_cygrpc/aio/callback_common.pyx.pxi":105
 * 
 * 
 * cdef prepend_send_initial_metadata_op(tuple ops, tuple metadata):             # <<<<<<<<<<<<<<
 *     # Eventually, this function should be the only function that produces
 *     # SendInitialMetadataOperation. So we have more control over the flag.
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_AddTraceback("grpc._cython.cygrpc.prepend_send_initial_metadata_op", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = 0;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}
static PyObject *__pyx_gb_4grpc_7_cython_6cygrpc_125generator3(__pyx_CoroutineObject *__pyx_generator, CYTHON_UNUSED PyThreadState *__pyx_tstate, PyObject *__pyx_sent_value); /* proto */

/* "src/python/grpcio/grpc/_cython/_cygrpc/aio/callback_common.pyx.pxi":114
 * 
 * 
 * async def _receive_message(GrpcCallWrapper grpc_call_wrapper,             # <<<<<<<<<<<<<<
 *                            object loop):
 *     """Retrives parsed messages from Core.
 */

/* Python wrapper */
static PyObject *__pyx_pw_4grpc_7_cython_6cygrpc_124_receive_message(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
static char __pyx_doc_4grpc_7_cython_6cygrpc_123_receive_message[] = "Retrives parsed messages from Core.\n\n    The messages maybe already in Core's buffer, so there isn't a 1-to-1\n    mapping between this and the underlying \"socket.read()\". Also, eventually,\n    this function will end with an EOF, which reads empty message.\n    ";
static PyMethodDef __pyx_mdef_4grpc_7_cython_6cygrpc_124_receive_message = {"_receive_message", (PyCFunction)(void*)(PyCFunctionWithKeywords)__pyx_pw_4grpc_7_cython_6cygrpc_124_receive_message, METH_VARARGS|METH_KEYWORDS, __pyx_doc_4grpc_7_cython_6cygrpc_123_receive_message};
static PyObject *__pyx_pw_4grpc_7_cython_6cygrpc_124_receive_message(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
  struct __pyx_obj_4grpc_7_cython_6cygrpc_GrpcCallWrapper *__pyx_v_grpc_call_wrapper = 0;
  PyObject *__pyx_v_loop = 0;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("_receive_message (wrapper)", 0);
  {
    static PyObject **__pyx_pyargnames[] = {&__pyx_n_s_grpc_call_wrapper,&__pyx_n_s_loop,0};
    PyObject* values[2] = {0,0};
    if (unlikely(__pyx_kwds)) {
      Py_ssize_t kw_args;
      const Py_ssize_t pos_args = PyTuple_GET_SIZE(__pyx_args);
      switch (pos_args) {
        case  2: values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
        CYTHON_FALLTHROUGH;
        case  1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
        CYTHON_FALLTHROUGH;
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      kw_args = PyDict_Size(__pyx_kwds);
      switch (pos_args) {
        case  0:
        if (likely((values[0] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_grpc_call_wrapper)) != 0)) kw_args--;
        else goto __pyx_L5_argtuple_error;
        CYTHON_FALLTHROUGH;
        case  1:
        if (likely((values[1] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_loop)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("_receive_message", 1, 2, 2, 1); __PYX_ERR(31, 114, __pyx_L3_error)
        }
      }
      if (unlikely(kw_args > 0)) {
        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "_receive_message") < 0)) __PYX_ERR(31, 114, __pyx_L3_error)
      }
    } else if (PyTuple_GET_SIZE(__pyx_args) != 2) {
      goto __pyx_L5_argtuple_error;
    } else {
      values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
      values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
    }
    __pyx_v_grpc_call_wrapper = ((struct __pyx_obj_4grpc_7_cython_6cygrpc_GrpcCallWrapper *)values[0]);
    __pyx_v_loop = values[1];
  }
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("_receive_message", 1, 2, 2, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(31, 114, __pyx_L3_error)
  __pyx_L3_error:;
  __Pyx_AddTraceback("grpc._cython.cygrpc._receive_message", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_grpc_call_wrapper), __pyx_ptype_4grpc_7_cython_6cygrpc_GrpcCallWrapper, 1, "grpc_call_wrapper", 0))) __PYX_ERR(31, 114, __pyx_L1_error)
  __pyx_r = __pyx_pf_4grpc_7_cython_6cygrpc_123_receive_message(__pyx_self, __pyx_v_grpc_call_wrapper, __pyx_v_loop);

  /* function exit code */
  goto __pyx_L0;
  __pyx_L1_error:;
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_4grpc_7_cython_6cygrpc_123_receive_message(CYTHON_UNUSED PyObject *__pyx_self, struct __pyx_obj_4grpc_7_cython_6cygrpc_GrpcCallWrapper *__pyx_v_grpc_call_wrapper, PyObject *__pyx_v_loop) {
  struct __pyx_obj_4grpc_7_cython_6cygrpc___pyx_scope_struct_15__receive_message *__pyx_cur_scope;
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("_receive_message", 0);
  __pyx_cur_scope = (struct __pyx_obj_4grpc_7_cython_6cygrpc___pyx_scope_struct_15__receive_message *)__pyx_tp_new_4grpc_7_cython_6cygrpc___pyx_scope_struct_15__receive_message(__pyx_ptype_4grpc_7_cython_6cygrpc___pyx_scope_struct_15__receive_message, __pyx_empty_tuple, NULL);
  if (unlikely(!__pyx_cur_scope)) {
    __pyx_cur_scope = ((struct __pyx_obj_4grpc_7_cython_6cygrpc___pyx_scope_struct_15__receive_message *)Py_None);
    __Pyx_INCREF(Py_None);
    __PYX_ERR(31, 114, __pyx_L1_error)
  } else {
    __Pyx_GOTREF(__pyx_cur_scope);
  }
  __pyx_cur_scope->__pyx_v_grpc_call_wrapper = __pyx_v_grpc_call_wrapper;
  __Pyx_INCREF((PyObject *)__pyx_cur_scope->__pyx_v_grpc_call_wrapper);
  __Pyx_GIVEREF((PyObject *)__pyx_cur_scope->__pyx_v_grpc_call_wrapper);
  __pyx_cur_scope->__pyx_v_loop = __pyx_v_loop;
  __Pyx_INCREF(__pyx_cur_scope->__pyx_v_loop);
  __Pyx_GIVEREF(__pyx_cur_scope->__pyx_v_loop);
  {
    __pyx_CoroutineObject *gen = __Pyx_Coroutine_New((__pyx_coroutine_body_t) __pyx_gb_4grpc_7_cython_6cygrpc_125generator3, __pyx_codeobj__156, (PyObject *) __pyx_cur_scope, __pyx_n_s_receive_message, __pyx_n_s_receive_message, __pyx_n_s_grpc__cython_cygrpc); if (unlikely(!gen)) __PYX_ERR(31, 114, __pyx_L1_error)
    __Pyx_DECREF(__pyx_cur_scope);
    __Pyx_RefNannyFinishContext();
    return (PyObject *) gen;
  }

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_AddTraceback("grpc._cython.cygrpc._receive_message", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __Pyx_DECREF(((PyObject *)__pyx_cur_scope));
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_gb_4grpc_7_cython_6cygrpc_125generator3(__pyx_CoroutineObject *__pyx_generator, CYTHON_UNUSED PyThreadState *__pyx_tstate, PyObject *__pyx_sent_value) /* generator body */
{
  struct __pyx_obj_4grpc_7_cython_6cygrpc___pyx_scope_struct_15__receive_message *__pyx_cur_scope = ((struct __pyx_obj_4grpc_7_cython_6cygrpc___pyx_scope_struct_15__receive_message *)__pyx_generator->closure);
  PyObject *__pyx_r = NULL;
  PyObject *__pyx_t_1 = NULL;
  PyObject *__pyx_t_2 = NULL;
  PyObject *__pyx_t_3 = NULL;
  PyObject *__pyx_t_4 = NULL;
  PyObject *__pyx_t_5 = NULL;
  PyObject *__pyx_t_6 = NULL;
  int __pyx_t_7;
  PyObject *__pyx_t_8 = NULL;
  PyObject *__pyx_t_9 = NULL;
  PyObject *__pyx_t_10 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("_receive_message", 0);
  switch (__pyx_generator->resume_label) {
    case 0: goto __pyx_L3_first_run;
    case 1: goto __pyx_L10_resume_from_await;
    default: /* CPython raises the right error here */
    __Pyx_RefNannyFinishContext();
    return NULL;
  }
  __pyx_L3_first_run:;
  if (unlikely(!__pyx_sent_value)) __PYX_ERR(31, 114, __pyx_L1_error)

  /* "src/python/grpcio/grpc/_cython/_cygrpc/aio/callback_common.pyx.pxi":122
 *     this function will end with an EOF, which reads empty message.
 *     """
 *     cdef ReceiveMessageOperation receive_op = ReceiveMessageOperation(_EMPTY_FLAG)             # <<<<<<<<<<<<<<
 *     cdef tuple ops = (receive_op,)
 *     try:
 */
  __pyx_t_1 = __Pyx_PyInt_From_int(__pyx_v_4grpc_7_cython_6cygrpc__EMPTY_FLAG); if (unlikely(!__pyx_t_1)) __PYX_ERR(31, 122, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_t_2 = __Pyx_PyObject_CallOneArg(((PyObject *)__pyx_ptype_4grpc_7_cython_6cygrpc_ReceiveMessageOperation), __pyx_t_1); if (unlikely(!__pyx_t_2)) __PYX_ERR(31, 122, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  __Pyx_GIVEREF(__pyx_t_2);
  __pyx_cur_scope->__pyx_v_receive_op = ((struct __pyx_obj_4grpc_7_cython_6cygrpc_ReceiveMessageOperation *)__pyx_t_2);
  __pyx_t_2 = 0;

  /* "src/python/grpcio/grpc/_cython/_cygrpc/aio/callback_common.pyx.pxi":123
 *     """
 *     cdef ReceiveMessageOperation receive_op = ReceiveMessageOperation(_EMPTY_FLAG)
 *     cdef tuple ops = (receive_op,)             # <<<<<<<<<<<<<<
 *     try:
 *         await execute_batch(grpc_call_wrapper, ops, loop)
 */
  __pyx_t_2 = PyTuple_New(1); if (unlikely(!__pyx_t_2)) __PYX_ERR(31, 123, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __Pyx_INCREF(((PyObject *)__pyx_cur_scope->__pyx_v_receive_op));
  __Pyx_GIVEREF(((PyObject *)__pyx_cur_scope->__pyx_v_receive_op));
  PyTuple_SET_ITEM(__pyx_t_2, 0, ((PyObject *)__pyx_cur_scope->__pyx_v_receive_op));
  __Pyx_GIVEREF(__pyx_t_2);
  __pyx_cur_scope->__pyx_v_ops = ((PyObject*)__pyx_t_2);
  __pyx_t_2 = 0;

  /* "src/python/grpcio/grpc/_cython/_cygrpc/aio/callback_common.pyx.pxi":124
 *     cdef ReceiveMessageOperation receive_op = ReceiveMessageOperation(_EMPTY_FLAG)
 *     cdef tuple ops = (receive_op,)
 *     try:             # <<<<<<<<<<<<<<
 *         await execute_batch(grpc_call_wrapper, ops, loop)
 *     except ExecuteBatchError as e:
 */
  {
    __Pyx_ExceptionSave(&__pyx_t_3, &__pyx_t_4, &__pyx_t_5);
    __Pyx_XGOTREF(__pyx_t_3);
    __Pyx_XGOTREF(__pyx_t_4);
    __Pyx_XGOTREF(__pyx_t_5);
    /*try:*/ {

      /* "src/python/grpcio/grpc/_cython/_cygrpc/aio/callback_common.pyx.pxi":125
 *     cdef tuple ops = (receive_op,)
 *     try:
 *         await execute_batch(grpc_call_wrapper, ops, loop)             # <<<<<<<<<<<<<<
 *     except ExecuteBatchError as e:
 *         # NOTE(lidiz) The receive message operation has two ways to indicate
 */
      __Pyx_GetModuleGlobalName(__pyx_t_1, __pyx_n_s_execute_batch); if (unlikely(!__pyx_t_1)) __PYX_ERR(31, 125, __pyx_L4_error)
      __Pyx_GOTREF(__pyx_t_1);
      __pyx_t_6 = NULL;
      __pyx_t_7 = 0;
      if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_1))) {
        __pyx_t_6 = PyMethod_GET_SELF(__pyx_t_1);
        if (likely(__pyx_t_6)) {
          PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_1);
          __Pyx_INCREF(__pyx_t_6);
          __Pyx_INCREF(function);
          __Pyx_DECREF_SET(__pyx_t_1, function);
          __pyx_t_7 = 1;
        }
      }
      #if CYTHON_FAST_PYCALL
      if (PyFunction_Check(__pyx_t_1)) {
        PyObject *__pyx_temp[4] = {__pyx_t_6, ((PyObject *)__pyx_cur_scope->__pyx_v_grpc_call_wrapper), __pyx_cur_scope->__pyx_v_ops, __pyx_cur_scope->__pyx_v_loop};
        __pyx_t_2 = __Pyx_PyFunction_FastCall(__pyx_t_1, __pyx_temp+1-__pyx_t_7, 3+__pyx_t_7); if (unlikely(!__pyx_t_2)) __PYX_ERR(31, 125, __pyx_L4_error)
        __Pyx_XDECREF(__pyx_t_6); __pyx_t_6 = 0;
        __Pyx_GOTREF(__pyx_t_2);
      } else
      #endif
      #if CYTHON_FAST_PYCCALL
      if (__Pyx_PyFastCFunction_Check(__pyx_t_1)) {
        PyObject *__pyx_temp[4] = {__pyx_t_6, ((PyObject *)__pyx_cur_scope->__pyx_v_grpc_call_wrapper), __pyx_cur_scope->__pyx_v_ops, __pyx_cur_scope->__pyx_v_loop};
        __pyx_t_2 = __Pyx_PyCFunction_FastCall(__pyx_t_1, __pyx_temp+1-__pyx_t_7, 3+__pyx_t_7); if (unlikely(!__pyx_t_2)) __PYX_ERR(31, 125, __pyx_L4_error)
        __Pyx_XDECREF(__pyx_t_6); __pyx_t_6 = 0;
        __Pyx_GOTREF(__pyx_t_2);
      } else
      #endif
      {
        __pyx_t_8 = PyTuple_New(3+__pyx_t_7); if (unlikely(!__pyx_t_8)) __PYX_ERR(31, 125, __pyx_L4_error)
        __Pyx_GOTREF(__pyx_t_8);
        if (__pyx_t_6) {
          __Pyx_GIVEREF(__pyx_t_6); PyTuple_SET_ITEM(__pyx_t_8, 0, __pyx_t_6); __pyx_t_6 = NULL;
        }
        __Pyx_INCREF(((PyObject *)__pyx_cur_scope->__pyx_v_grpc_call_wrapper));
        __Pyx_GIVEREF(((PyObject *)__pyx_cur_scope->__pyx_v_grpc_call_wrapper));
        PyTuple_SET_ITEM(__pyx_t_8, 0+__pyx_t_7, ((PyObject *)__pyx_cur_scope->__pyx_v_grpc_call_wrapper));
        __Pyx_INCREF(__pyx_cur_scope->__pyx_v_ops);
        __Pyx_GIVEREF(__pyx_cur_scope->__pyx_v_ops);
        PyTuple_SET_ITEM(__pyx_t_8, 1+__pyx_t_7, __pyx_cur_scope->__pyx_v_ops);
        __Pyx_INCREF(__pyx_cur_scope->__pyx_v_loop);
        __Pyx_GIVEREF(__pyx_cur_scope->__pyx_v_loop);
        PyTuple_SET_ITEM(__pyx_t_8, 2+__pyx_t_7, __pyx_cur_scope->__pyx_v_loop);
        __pyx_t_2 = __Pyx_PyObject_Call(__pyx_t_1, __pyx_t_8, NULL); if (unlikely(!__pyx_t_2)) __PYX_ERR(31, 125, __pyx_L4_error)
        __Pyx_GOTREF(__pyx_t_2);
        __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
      }
      __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
      __pyx_r = __Pyx_Coroutine_Yield_From(__pyx_generator, __pyx_t_2);
      __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
      __Pyx_XGOTREF(__pyx_r);
      if (likely(__pyx_r)) {
        __Pyx_XGIVEREF(__pyx_t_3);
        __pyx_cur_scope->__pyx_t_0 = __pyx_t_3;
        __Pyx_XGIVEREF(__pyx_t_4);
        __pyx_cur_scope->__pyx_t_1 = __pyx_t_4;
        __Pyx_XGIVEREF(__pyx_t_5);
        __pyx_cur_scope->__pyx_t_2 = __pyx_t_5;
        __Pyx_XGIVEREF(__pyx_r);
        __Pyx_RefNannyFinishContext();
        __Pyx_Coroutine_ResetAndClearException(__pyx_generator);
        /* return from generator, awaiting value */
        __pyx_generator->resume_label = 1;
        return __pyx_r;
        __pyx_L10_resume_from_await:;
        __pyx_t_3 = __pyx_cur_scope->__pyx_t_0;
        __pyx_cur_scope->__pyx_t_0 = 0;
        __Pyx_XGOTREF(__pyx_t_3);
        __pyx_t_4 = __pyx_cur_scope->__pyx_t_1;
        __pyx_cur_scope->__pyx_t_1 = 0;
        __Pyx_XGOTREF(__pyx_t_4);
        __pyx_t_5 = __pyx_cur_scope->__pyx_t_2;
        __pyx_cur_scope->__pyx_t_2 = 0;
        __Pyx_XGOTREF(__pyx_t_5);
        if (unlikely(!__pyx_sent_value)) __PYX_ERR(31, 125, __pyx_L4_error)
      } else {
        PyObject* exc_type = __Pyx_PyErr_Occurred();
        if (exc_type) {
          if (likely(exc_type == PyExc_StopIteration || (exc_type != PyExc_GeneratorExit && __Pyx_PyErr_GivenExceptionMatches(exc_type, PyExc_StopIteration)))) PyErr_Clear();
          else __PYX_ERR(31, 125, __pyx_L4_error)
        }
      }

      /* "src/python/grpcio/grpc/_cython/_cygrpc/aio/callback_common.pyx.pxi":124
 *     cdef ReceiveMessageOperation receive_op = ReceiveMessageOperation(_EMPTY_FLAG)
 *     cdef tuple ops = (receive_op,)
 *     try:             # <<<<<<<<<<<<<<
 *         await execute_batch(grpc_call_wrapper, ops, loop)
 *     except ExecuteBatchError as e:
 */
    }
    __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0;
    __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0;
    __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0;
    goto __pyx_L9_try_end;
    __pyx_L4_error:;
    __Pyx_XDECREF(__pyx_t_1); __pyx_t_1 = 0;
    __Pyx_XDECREF(__pyx_t_2); __pyx_t_2 = 0;
    __Pyx_XDECREF(__pyx_t_6); __pyx_t_6 = 0;
    __Pyx_XDECREF(__pyx_t_8); __pyx_t_8 = 0;

    /* "src/python/grpcio/grpc/_cython/_cygrpc/aio/callback_common.pyx.pxi":126
 *     try:
 *         await execute_batch(grpc_call_wrapper, ops, loop)
 *     except ExecuteBatchError as e:             # <<<<<<<<<<<<<<
 *         # NOTE(lidiz) The receive message operation has two ways to indicate
 *         # finish state : 1) returns empty message due to EOF; 2) fails inside
 */
    __Pyx_ErrFetch(&__pyx_t_2, &__pyx_t_1, &__pyx_t_8);
    __Pyx_GetModuleGlobalName(__pyx_t_6, __pyx_n_s_ExecuteBatchError); if (unlikely(!__pyx_t_6)) __PYX_ERR(31, 126, __pyx_L6_except_error)
    __Pyx_GOTREF(__pyx_t_6);
    __pyx_t_7 = __Pyx_PyErr_GivenExceptionMatches(__pyx_t_2, __pyx_t_6);
    __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
    __Pyx_ErrRestore(__pyx_t_2, __pyx_t_1, __pyx_t_8);
    __pyx_t_2 = 0; __pyx_t_1 = 0; __pyx_t_8 = 0;
    if (__pyx_t_7) {
      __Pyx_AddTraceback("grpc._cython.cygrpc._receive_message", __pyx_clineno, __pyx_lineno, __pyx_filename);
      if (__Pyx_GetException(&__pyx_t_8, &__pyx_t_1, &__pyx_t_2) < 0) __PYX_ERR(31, 126, __pyx_L6_except_error)
      __Pyx_GOTREF(__pyx_t_8);
      __Pyx_GOTREF(__pyx_t_1);
      __Pyx_GOTREF(__pyx_t_2);
      __Pyx_INCREF(__pyx_t_1);
      __Pyx_GIVEREF(__pyx_t_1);
      __pyx_cur_scope->__pyx_v_e = __pyx_t_1;

      /* "src/python/grpcio/grpc/_cython/_cygrpc/aio/callback_common.pyx.pxi":132
 *         #
 *         # Since they all indicates finish, they are better be merged.
 *         _LOGGER.debug('Failed to receive any message from Core')             # <<<<<<<<<<<<<<
 *     # NOTE(lidiz) The returned message might be an empty bytes (aka. b'').
 *     # Please explicitly check if it is None or falsey string object!
 */
      __Pyx_GetModuleGlobalName(__pyx_t_9, __pyx_n_s_LOGGER); if (unlikely(!__pyx_t_9)) __PYX_ERR(31, 132, __pyx_L6_except_error)
      __Pyx_GOTREF(__pyx_t_9);
      __pyx_t_10 = __Pyx_PyObject_GetAttrStr(__pyx_t_9, __pyx_n_s_debug); if (unlikely(!__pyx_t_10)) __PYX_ERR(31, 132, __pyx_L6_except_error)
      __Pyx_GOTREF(__pyx_t_10);
      __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0;
      __pyx_t_9 = NULL;
      if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_10))) {
        __pyx_t_9 = PyMethod_GET_SELF(__pyx_t_10);
        if (likely(__pyx_t_9)) {
          PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_10);
          __Pyx_INCREF(__pyx_t_9);
          __Pyx_INCREF(function);
          __Pyx_DECREF_SET(__pyx_t_10, function);
        }
      }
      __pyx_t_6 = (__pyx_t_9) ? __Pyx_PyObject_Call2Args(__pyx_t_10, __pyx_t_9, __pyx_kp_s_Failed_to_receive_any_message_fr) : __Pyx_PyObject_CallOneArg(__pyx_t_10, __pyx_kp_s_Failed_to_receive_any_message_fr);
      __Pyx_XDECREF(__pyx_t_9); __pyx_t_9 = 0;
      if (unlikely(!__pyx_t_6)) __PYX_ERR(31, 132, __pyx_L6_except_error)
      __Pyx_GOTREF(__pyx_t_6);
      __Pyx_DECREF(__pyx_t_10); __pyx_t_10 = 0;
      __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
      __Pyx_XDECREF(__pyx_t_8); __pyx_t_8 = 0;
      __Pyx_XDECREF(__pyx_t_1); __pyx_t_1 = 0;
      __Pyx_XDECREF(__pyx_t_2); __pyx_t_2 = 0;
      goto __pyx_L5_exception_handled;
    }
    goto __pyx_L6_except_error;
    __pyx_L6_except_error:;

    /* "src/python/grpcio/grpc/_cython/_cygrpc/aio/callback_common.pyx.pxi":124
 *     cdef ReceiveMessageOperation receive_op = ReceiveMessageOperation(_EMPTY_FLAG)
 *     cdef tuple ops = (receive_op,)
 *     try:             # <<<<<<<<<<<<<<
 *         await execute_batch(grpc_call_wrapper, ops, loop)
 *     except ExecuteBatchError as e:
 */
    __Pyx_XGIVEREF(__pyx_t_3);
    __Pyx_XGIVEREF(__pyx_t_4);
    __Pyx_XGIVEREF(__pyx_t_5);
    __Pyx_ExceptionReset(__pyx_t_3, __pyx_t_4, __pyx_t_5);
    goto __pyx_L1_error;
    __pyx_L5_exception_handled:;
    __Pyx_XGIVEREF(__pyx_t_3);
    __Pyx_XGIVEREF(__pyx_t_4);
    __Pyx_XGIVEREF(__pyx_t_5);
    __Pyx_ExceptionReset(__pyx_t_3, __pyx_t_4, __pyx_t_5);
    __pyx_L9_try_end:;
  }

  /* "src/python/grpcio/grpc/_cython/_cygrpc/aio/callback_common.pyx.pxi":135
 *     # NOTE(lidiz) The returned message might be an empty bytes (aka. b'').
 *     # Please explicitly check if it is None or falsey string object!
 *     return receive_op.message()             # <<<<<<<<<<<<<<
 * 
 * 
 */
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_1 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_cur_scope->__pyx_v_receive_op), __pyx_n_s_message); if (unlikely(!__pyx_t_1)) __PYX_ERR(31, 135, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_t_8 = NULL;
  if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_1))) {
    __pyx_t_8 = PyMethod_GET_SELF(__pyx_t_1);
    if (likely(__pyx_t_8)) {
      PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_1);
      __Pyx_INCREF(__pyx_t_8);
      __Pyx_INCREF(function);
      __Pyx_DECREF_SET(__pyx_t_1, function);
    }
  }
  __pyx_t_2 = (__pyx_t_8) ? __Pyx_PyObject_CallOneArg(__pyx_t_1, __pyx_t_8) : __Pyx_PyObject_CallNoArg(__pyx_t_1);
  __Pyx_XDECREF(__pyx_t_8); __pyx_t_8 = 0;
  if (unlikely(!__pyx_t_2)) __PYX_ERR(31, 135, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  __pyx_r = NULL; __Pyx_ReturnWithStopIteration(__pyx_t_2);
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  goto __pyx_L0;
  CYTHON_MAYBE_UNUSED_VAR(__pyx_cur_scope);

  /* "src/python/grpcio/grpc/_cython/_cygrpc/aio/callback_common.pyx.pxi":114
 * 
 * 
 * async def _receive_message(GrpcCallWrapper grpc_call_wrapper,             # <<<<<<<<<<<<<<
 *                            object loop):
 *     """Retrives parsed messages from Core.
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_XDECREF(__pyx_t_6);
  __Pyx_XDECREF(__pyx_t_8);
  __Pyx_XDECREF(__pyx_t_9);
  __Pyx_XDECREF(__pyx_t_10);
  __Pyx_AddTraceback("_receive_message", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_L0:;
  __Pyx_XDECREF(__pyx_r); __pyx_r = 0;
  #if !CYTHON_USE_EXC_INFO_STACK
  __Pyx_Coroutine_ResetAndClearException(__pyx_generator);
  #endif
  __pyx_generator->resume_label = -1;
  __Pyx_Coroutine_clear((PyObject*)__pyx_generator);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}
static PyObject *__pyx_gb_4grpc_7_cython_6cygrpc_128generator4(__pyx_CoroutineObject *__pyx_generator, CYTHON_UNUSED PyThreadState *__pyx_tstate, PyObject *__pyx_sent_value); /* proto */

/* "src/python/grpcio/grpc/_cython/_cygrpc/aio/callback_common.pyx.pxi":138
 * 
 * 
 * async def _send_message(GrpcCallWrapper grpc_call_wrapper,             # <<<<<<<<<<<<<<
 *                         bytes message,
 *                         Operation send_initial_metadata_op,
 */

/* Python wrapper */
static PyObject *__pyx_pw_4grpc_7_cython_6cygrpc_127_send_message(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
static PyMethodDef __pyx_mdef_4grpc_7_cython_6cygrpc_127_send_message = {"_send_message", (PyCFunction)(void*)(PyCFunctionWithKeywords)__pyx_pw_4grpc_7_cython_6cygrpc_127_send_message, METH_VARARGS|METH_KEYWORDS, 0};
static PyObject *__pyx_pw_4grpc_7_cython_6cygrpc_127_send_message(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
  struct __pyx_obj_4grpc_7_cython_6cygrpc_GrpcCallWrapper *__pyx_v_grpc_call_wrapper = 0;
  PyObject *__pyx_v_message = 0;
  struct __pyx_obj_4grpc_7_cython_6cygrpc_Operation *__pyx_v_send_initial_metadata_op = 0;
  int __pyx_v_write_flag;
  PyObject *__pyx_v_loop = 0;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("_send_message (wrapper)", 0);
  {
    static PyObject **__pyx_pyargnames[] = {&__pyx_n_s_grpc_call_wrapper,&__pyx_n_s_message,&__pyx_n_s_send_initial_metadata_op,&__pyx_n_s_write_flag,&__pyx_n_s_loop,0};
    PyObject* values[5] = {0,0,0,0,0};
    if (unlikely(__pyx_kwds)) {
      Py_ssize_t kw_args;
      const Py_ssize_t pos_args = PyTuple_GET_SIZE(__pyx_args);
      switch (pos_args) {
        case  5: values[4] = PyTuple_GET_ITEM(__pyx_args, 4);
        CYTHON_FALLTHROUGH;
        case  4: values[3] = PyTuple_GET_ITEM(__pyx_args, 3);
        CYTHON_FALLTHROUGH;
        case  3: values[2] = PyTuple_GET_ITEM(__pyx_args, 2);
        CYTHON_FALLTHROUGH;
        case  2: values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
        CYTHON_FALLTHROUGH;
        case  1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
        CYTHON_FALLTHROUGH;
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      kw_args = PyDict_Size(__pyx_kwds);
      switch (pos_args) {
        case  0:
        if (likely((values[0] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_grpc_call_wrapper)) != 0)) kw_args--;
        else goto __pyx_L5_argtuple_error;
        CYTHON_FALLTHROUGH;
        case  1:
        if (likely((values[1] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_message)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("_send_message", 1, 5, 5, 1); __PYX_ERR(31, 138, __pyx_L3_error)
        }
        CYTHON_FALLTHROUGH;
        case  2:
        if (likely((values[2] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_send_initial_metadata_op)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("_send_message", 1, 5, 5, 2); __PYX_ERR(31, 138, __pyx_L3_error)
        }
        CYTHON_FALLTHROUGH;
        case  3:
        if (likely((values[3] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_write_flag)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("_send_message", 1, 5, 5, 3); __PYX_ERR(31, 138, __pyx_L3_error)
        }
        CYTHON_FALLTHROUGH;
        case  4:
        if (likely((values[4] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_loop)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("_send_message", 1, 5, 5, 4); __PYX_ERR(31, 138, __pyx_L3_error)
        }
      }
      if (unlikely(kw_args > 0)) {
        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "_send_message") < 0)) __PYX_ERR(31, 138, __pyx_L3_error)
      }
    } else if (PyTuple_GET_SIZE(__pyx_args) != 5) {
      goto __pyx_L5_argtuple_error;
    } else {
      values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
      values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
      values[2] = PyTuple_GET_ITEM(__pyx_args, 2);
      values[3] = PyTuple_GET_ITEM(__pyx_args, 3);
      values[4] = PyTuple_GET_ITEM(__pyx_args, 4);
    }
    __pyx_v_grpc_call_wrapper = ((struct __pyx_obj_4grpc_7_cython_6cygrpc_GrpcCallWrapper *)values[0]);
    __pyx_v_message = ((PyObject*)values[1]);
    __pyx_v_send_initial_metadata_op = ((struct __pyx_obj_4grpc_7_cython_6cygrpc_Operation *)values[2]);
    __pyx_v_write_flag = __Pyx_PyInt_As_int(values[3]); if (unlikely((__pyx_v_write_flag == (int)-1) && PyErr_Occurred())) __PYX_ERR(31, 141, __pyx_L3_error)
    __pyx_v_loop = values[4];
  }
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("_send_message", 1, 5, 5, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(31, 138, __pyx_L3_error)
  __pyx_L3_error:;
  __Pyx_AddTraceback("grpc._cython.cygrpc._send_message", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_grpc_call_wrapper), __pyx_ptype_4grpc_7_cython_6cygrpc_GrpcCallWrapper, 1, "grpc_call_wrapper", 0))) __PYX_ERR(31, 138, __pyx_L1_error)
  if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_message), (&PyBytes_Type), 1, "message", 1))) __PYX_ERR(31, 139, __pyx_L1_error)
  if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_send_initial_metadata_op), __pyx_ptype_4grpc_7_cython_6cygrpc_Operation, 1, "send_initial_metadata_op", 0))) __PYX_ERR(31, 140, __pyx_L1_error)
  __pyx_r = __pyx_pf_4grpc_7_cython_6cygrpc_126_send_message(__pyx_self, __pyx_v_grpc_call_wrapper, __pyx_v_message, __pyx_v_send_initial_metadata_op, __pyx_v_write_flag, __pyx_v_loop);

  /* function exit code */
  goto __pyx_L0;
  __pyx_L1_error:;
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_4grpc_7_cython_6cygrpc_126_send_message(CYTHON_UNUSED PyObject *__pyx_self, struct __pyx_obj_4grpc_7_cython_6cygrpc_GrpcCallWrapper *__pyx_v_grpc_call_wrapper, PyObject *__pyx_v_message, struct __pyx_obj_4grpc_7_cython_6cygrpc_Operation *__pyx_v_send_initial_metadata_op, int __pyx_v_write_flag, PyObject *__pyx_v_loop) {
  struct __pyx_obj_4grpc_7_cython_6cygrpc___pyx_scope_struct_16__send_message *__pyx_cur_scope;
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("_send_message", 0);
  __pyx_cur_scope = (struct __pyx_obj_4grpc_7_cython_6cygrpc___pyx_scope_struct_16__send_message *)__pyx_tp_new_4grpc_7_cython_6cygrpc___pyx_scope_struct_16__send_message(__pyx_ptype_4grpc_7_cython_6cygrpc___pyx_scope_struct_16__send_message, __pyx_empty_tuple, NULL);
  if (unlikely(!__pyx_cur_scope)) {
    __pyx_cur_scope = ((struct __pyx_obj_4grpc_7_cython_6cygrpc___pyx_scope_struct_16__send_message *)Py_None);
    __Pyx_INCREF(Py_None);
    __PYX_ERR(31, 138, __pyx_L1_error)
  } else {
    __Pyx_GOTREF(__pyx_cur_scope);
  }
  __pyx_cur_scope->__pyx_v_grpc_call_wrapper = __pyx_v_grpc_call_wrapper;
  __Pyx_INCREF((PyObject *)__pyx_cur_scope->__pyx_v_grpc_call_wrapper);
  __Pyx_GIVEREF((PyObject *)__pyx_cur_scope->__pyx_v_grpc_call_wrapper);
  __pyx_cur_scope->__pyx_v_message = __pyx_v_message;
  __Pyx_INCREF(__pyx_cur_scope->__pyx_v_message);
  __Pyx_GIVEREF(__pyx_cur_scope->__pyx_v_message);
  __pyx_cur_scope->__pyx_v_send_initial_metadata_op = __pyx_v_send_initial_metadata_op;
  __Pyx_INCREF((PyObject *)__pyx_cur_scope->__pyx_v_send_initial_metadata_op);
  __Pyx_GIVEREF((PyObject *)__pyx_cur_scope->__pyx_v_send_initial_metadata_op);
  __pyx_cur_scope->__pyx_v_write_flag = __pyx_v_write_flag;
  __pyx_cur_scope->__pyx_v_loop = __pyx_v_loop;
  __Pyx_INCREF(__pyx_cur_scope->__pyx_v_loop);
  __Pyx_GIVEREF(__pyx_cur_scope->__pyx_v_loop);
  {
    __pyx_CoroutineObject *gen = __Pyx_Coroutine_New((__pyx_coroutine_body_t) __pyx_gb_4grpc_7_cython_6cygrpc_128generator4, __pyx_codeobj__157, (PyObject *) __pyx_cur_scope, __pyx_n_s_send_message, __pyx_n_s_send_message, __pyx_n_s_grpc__cython_cygrpc); if (unlikely(!gen)) __PYX_ERR(31, 138, __pyx_L1_error)
    __Pyx_DECREF(__pyx_cur_scope);
    __Pyx_RefNannyFinishContext();
    return (PyObject *) gen;
  }

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_AddTraceback("grpc._cython.cygrpc._send_message", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __Pyx_DECREF(((PyObject *)__pyx_cur_scope));
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_gb_4grpc_7_cython_6cygrpc_128generator4(__pyx_CoroutineObject *__pyx_generator, CYTHON_UNUSED PyThreadState *__pyx_tstate, PyObject *__pyx_sent_value) /* generator body */
{
  struct __pyx_obj_4grpc_7_cython_6cygrpc___pyx_scope_struct_16__send_message *__pyx_cur_scope = ((struct __pyx_obj_4grpc_7_cython_6cygrpc___pyx_scope_struct_16__send_message *)__pyx_generator->closure);
  PyObject *__pyx_r = NULL;
  PyObject *__pyx_t_1 = NULL;
  PyObject *__pyx_t_2 = NULL;
  int __pyx_t_3;
  int __pyx_t_4;
  PyObject *__pyx_t_5 = NULL;
  int __pyx_t_6;
  PyObject *__pyx_t_7 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("_send_message", 0);
  switch (__pyx_generator->resume_label) {
    case 0: goto __pyx_L3_first_run;
    case 1: goto __pyx_L5_resume_from_await;
    default: /* CPython raises the right error here */
    __Pyx_RefNannyFinishContext();
    return NULL;
  }
  __pyx_L3_first_run:;
  if (unlikely(!__pyx_sent_value)) __PYX_ERR(31, 138, __pyx_L1_error)

  /* "src/python/grpcio/grpc/_cython/_cygrpc/aio/callback_common.pyx.pxi":143
 *                         int write_flag,
 *                         object loop):
 *     cdef SendMessageOperation op = SendMessageOperation(message, write_flag)             # <<<<<<<<<<<<<<
 *     cdef tuple ops = (op,)
 *     if send_initial_metadata_op is not None:
 */
  __pyx_t_1 = __Pyx_PyInt_From_int(__pyx_cur_scope->__pyx_v_write_flag); if (unlikely(!__pyx_t_1)) __PYX_ERR(31, 143, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_t_2 = PyTuple_New(2); if (unlikely(!__pyx_t_2)) __PYX_ERR(31, 143, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __Pyx_INCREF(__pyx_cur_scope->__pyx_v_message);
  __Pyx_GIVEREF(__pyx_cur_scope->__pyx_v_message);
  PyTuple_SET_ITEM(__pyx_t_2, 0, __pyx_cur_scope->__pyx_v_message);
  __Pyx_GIVEREF(__pyx_t_1);
  PyTuple_SET_ITEM(__pyx_t_2, 1, __pyx_t_1);
  __pyx_t_1 = 0;
  __pyx_t_1 = __Pyx_PyObject_Call(((PyObject *)__pyx_ptype_4grpc_7_cython_6cygrpc_SendMessageOperation), __pyx_t_2, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(31, 143, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  __Pyx_GIVEREF(__pyx_t_1);
  __pyx_cur_scope->__pyx_v_op = ((struct __pyx_obj_4grpc_7_cython_6cygrpc_SendMessageOperation *)__pyx_t_1);
  __pyx_t_1 = 0;

  /* "src/python/grpcio/grpc/_cython/_cygrpc/aio/callback_common.pyx.pxi":144
 *                         object loop):
 *     cdef SendMessageOperation op = SendMessageOperation(message, write_flag)
 *     cdef tuple ops = (op,)             # <<<<<<<<<<<<<<
 *     if send_initial_metadata_op is not None:
 *         ops = (send_initial_metadata_op,) + ops
 */
  __pyx_t_1 = PyTuple_New(1); if (unlikely(!__pyx_t_1)) __PYX_ERR(31, 144, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_INCREF(((PyObject *)__pyx_cur_scope->__pyx_v_op));
  __Pyx_GIVEREF(((PyObject *)__pyx_cur_scope->__pyx_v_op));
  PyTuple_SET_ITEM(__pyx_t_1, 0, ((PyObject *)__pyx_cur_scope->__pyx_v_op));
  __Pyx_GIVEREF(__pyx_t_1);
  __pyx_cur_scope->__pyx_v_ops = ((PyObject*)__pyx_t_1);
  __pyx_t_1 = 0;

  /* "src/python/grpcio/grpc/_cython/_cygrpc/aio/callback_common.pyx.pxi":145
 *     cdef SendMessageOperation op = SendMessageOperation(message, write_flag)
 *     cdef tuple ops = (op,)
 *     if send_initial_metadata_op is not None:             # <<<<<<<<<<<<<<
 *         ops = (send_initial_metadata_op,) + ops
 *     await execute_batch(grpc_call_wrapper, ops, loop)
 */
  __pyx_t_3 = (((PyObject *)__pyx_cur_scope->__pyx_v_send_initial_metadata_op) != Py_None);
  __pyx_t_4 = (__pyx_t_3 != 0);
  if (__pyx_t_4) {

    /* "src/python/grpcio/grpc/_cython/_cygrpc/aio/callback_common.pyx.pxi":146
 *     cdef tuple ops = (op,)
 *     if send_initial_metadata_op is not None:
 *         ops = (send_initial_metadata_op,) + ops             # <<<<<<<<<<<<<<
 *     await execute_batch(grpc_call_wrapper, ops, loop)
 * 
 */
    __pyx_t_1 = PyTuple_New(1); if (unlikely(!__pyx_t_1)) __PYX_ERR(31, 146, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_1);
    __Pyx_INCREF(((PyObject *)__pyx_cur_scope->__pyx_v_send_initial_metadata_op));
    __Pyx_GIVEREF(((PyObject *)__pyx_cur_scope->__pyx_v_send_initial_metadata_op));
    PyTuple_SET_ITEM(__pyx_t_1, 0, ((PyObject *)__pyx_cur_scope->__pyx_v_send_initial_metadata_op));
    __pyx_t_2 = PyNumber_Add(__pyx_t_1, __pyx_cur_scope->__pyx_v_ops); if (unlikely(!__pyx_t_2)) __PYX_ERR(31, 146, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_2);
    __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
    __Pyx_GOTREF(__pyx_cur_scope->__pyx_v_ops);
    __Pyx_DECREF_SET(__pyx_cur_scope->__pyx_v_ops, ((PyObject*)__pyx_t_2));
    __Pyx_GIVEREF(__pyx_t_2);
    __pyx_t_2 = 0;

    /* "src/python/grpcio/grpc/_cython/_cygrpc/aio/callback_common.pyx.pxi":145
 *     cdef SendMessageOperation op = SendMessageOperation(message, write_flag)
 *     cdef tuple ops = (op,)
 *     if send_initial_metadata_op is not None:             # <<<<<<<<<<<<<<
 *         ops = (send_initial_metadata_op,) + ops
 *     await execute_batch(grpc_call_wrapper, ops, loop)
 */
  }

  /* "src/python/grpcio/grpc/_cython/_cygrpc/aio/callback_common.pyx.pxi":147
 *     if send_initial_metadata_op is not None:
 *         ops = (send_initial_metadata_op,) + ops
 *     await execute_batch(grpc_call_wrapper, ops, loop)             # <<<<<<<<<<<<<<
 * 
 * 
 */
  __Pyx_GetModuleGlobalName(__pyx_t_1, __pyx_n_s_execute_batch); if (unlikely(!__pyx_t_1)) __PYX_ERR(31, 147, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_t_5 = NULL;
  __pyx_t_6 = 0;
  if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_1))) {
    __pyx_t_5 = PyMethod_GET_SELF(__pyx_t_1);
    if (likely(__pyx_t_5)) {
      PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_1);
      __Pyx_INCREF(__pyx_t_5);
      __Pyx_INCREF(function);
      __Pyx_DECREF_SET(__pyx_t_1, function);
      __pyx_t_6 = 1;
    }
  }
  #if CYTHON_FAST_PYCALL
  if (PyFunction_Check(__pyx_t_1)) {
    PyObject *__pyx_temp[4] = {__pyx_t_5, ((PyObject *)__pyx_cur_scope->__pyx_v_grpc_call_wrapper), __pyx_cur_scope->__pyx_v_ops, __pyx_cur_scope->__pyx_v_loop};
    __pyx_t_2 = __Pyx_PyFunction_FastCall(__pyx_t_1, __pyx_temp+1-__pyx_t_6, 3+__pyx_t_6); if (unlikely(!__pyx_t_2)) __PYX_ERR(31, 147, __pyx_L1_error)
    __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0;
    __Pyx_GOTREF(__pyx_t_2);
  } else
  #endif
  #if CYTHON_FAST_PYCCALL
  if (__Pyx_PyFastCFunction_Check(__pyx_t_1)) {
    PyObject *__pyx_temp[4] = {__pyx_t_5, ((PyObject *)__pyx_cur_scope->__pyx_v_grpc_call_wrapper), __pyx_cur_scope->__pyx_v_ops, __pyx_cur_scope->__pyx_v_loop};
    __pyx_t_2 = __Pyx_PyCFunction_FastCall(__pyx_t_1, __pyx_temp+1-__pyx_t_6, 3+__pyx_t_6); if (unlikely(!__pyx_t_2)) __PYX_ERR(31, 147, __pyx_L1_error)
    __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0;
    __Pyx_GOTREF(__pyx_t_2);
  } else
  #endif
  {
    __pyx_t_7 = PyTuple_New(3+__pyx_t_6); if (unlikely(!__pyx_t_7)) __PYX_ERR(31, 147, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_7);
    if (__pyx_t_5) {
      __Pyx_GIVEREF(__pyx_t_5); PyTuple_SET_ITEM(__pyx_t_7, 0, __pyx_t_5); __pyx_t_5 = NULL;
    }
    __Pyx_INCREF(((PyObject *)__pyx_cur_scope->__pyx_v_grpc_call_wrapper));
    __Pyx_GIVEREF(((PyObject *)__pyx_cur_scope->__pyx_v_grpc_call_wrapper));
    PyTuple_SET_ITEM(__pyx_t_7, 0+__pyx_t_6, ((PyObject *)__pyx_cur_scope->__pyx_v_grpc_call_wrapper));
    __Pyx_INCREF(__pyx_cur_scope->__pyx_v_ops);
    __Pyx_GIVEREF(__pyx_cur_scope->__pyx_v_ops);
    PyTuple_SET_ITEM(__pyx_t_7, 1+__pyx_t_6, __pyx_cur_scope->__pyx_v_ops);
    __Pyx_INCREF(__pyx_cur_scope->__pyx_v_loop);
    __Pyx_GIVEREF(__pyx_cur_scope->__pyx_v_loop);
    PyTuple_SET_ITEM(__pyx_t_7, 2+__pyx_t_6, __pyx_cur_scope->__pyx_v_loop);
    __pyx_t_2 = __Pyx_PyObject_Call(__pyx_t_1, __pyx_t_7, NULL); if (unlikely(!__pyx_t_2)) __PYX_ERR(31, 147, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_2);
    __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
  }
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  __pyx_r = __Pyx_Coroutine_Yield_From(__pyx_generator, __pyx_t_2);
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  __Pyx_XGOTREF(__pyx_r);
  if (likely(__pyx_r)) {
    __Pyx_XGIVEREF(__pyx_r);
    __Pyx_RefNannyFinishContext();
    __Pyx_Coroutine_ResetAndClearException(__pyx_generator);
    /* return from generator, awaiting value */
    __pyx_generator->resume_label = 1;
    return __pyx_r;
    __pyx_L5_resume_from_await:;
    if (unlikely(!__pyx_sent_value)) __PYX_ERR(31, 147, __pyx_L1_error)
  } else {
    PyObject* exc_type = __Pyx_PyErr_Occurred();
    if (exc_type) {
      if (likely(exc_type == PyExc_StopIteration || (exc_type != PyExc_GeneratorExit && __Pyx_PyErr_GivenExceptionMatches(exc_type, PyExc_StopIteration)))) PyErr_Clear();
      else __PYX_ERR(31, 147, __pyx_L1_error)
    }
  }
  CYTHON_MAYBE_UNUSED_VAR(__pyx_cur_scope);

  /* "src/python/grpcio/grpc/_cython/_cygrpc/aio/callback_common.pyx.pxi":138
 * 
 * 
 * async def _send_message(GrpcCallWrapper grpc_call_wrapper,             # <<<<<<<<<<<<<<
 *                         bytes message,
 *                         Operation send_initial_metadata_op,
 */

  /* function exit code */
  PyErr_SetNone(PyExc_StopIteration);
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_XDECREF(__pyx_t_5);
  __Pyx_XDECREF(__pyx_t_7);
  __Pyx_AddTraceback("_send_message", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_L0:;
  __Pyx_XDECREF(__pyx_r); __pyx_r = 0;
  #if !CYTHON_USE_EXC_INFO_STACK
  __Pyx_Coroutine_ResetAndClearException(__pyx_generator);
  #endif
  __pyx_generator->resume_label = -1;
  __Pyx_Coroutine_clear((PyObject*)__pyx_generator);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}
static PyObject *__pyx_gb_4grpc_7_cython_6cygrpc_131generator5(__pyx_CoroutineObject *__pyx_generator, CYTHON_UNUSED PyThreadState *__pyx_tstate, PyObject *__pyx_sent_value); /* proto */

/* "src/python/grpcio/grpc/_cython/_cygrpc/aio/callback_common.pyx.pxi":150
 * 
 * 
 * async def _send_initial_metadata(GrpcCallWrapper grpc_call_wrapper,             # <<<<<<<<<<<<<<
 *                                  tuple metadata,
 *                                  int flags,
 */

/* Python wrapper */
static PyObject *__pyx_pw_4grpc_7_cython_6cygrpc_130_send_initial_metadata(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
static PyMethodDef __pyx_mdef_4grpc_7_cython_6cygrpc_130_send_initial_metadata = {"_send_initial_metadata", (PyCFunction)(void*)(PyCFunctionWithKeywords)__pyx_pw_4grpc_7_cython_6cygrpc_130_send_initial_metadata, METH_VARARGS|METH_KEYWORDS, 0};
static PyObject *__pyx_pw_4grpc_7_cython_6cygrpc_130_send_initial_metadata(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
  struct __pyx_obj_4grpc_7_cython_6cygrpc_GrpcCallWrapper *__pyx_v_grpc_call_wrapper = 0;
  PyObject *__pyx_v_metadata = 0;
  int __pyx_v_flags;
  PyObject *__pyx_v_loop = 0;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("_send_initial_metadata (wrapper)", 0);
  {
    static PyObject **__pyx_pyargnames[] = {&__pyx_n_s_grpc_call_wrapper,&__pyx_n_s_metadata,&__pyx_n_s_flags,&__pyx_n_s_loop,0};
    PyObject* values[4] = {0,0,0,0};
    if (unlikely(__pyx_kwds)) {
      Py_ssize_t kw_args;
      const Py_ssize_t pos_args = PyTuple_GET_SIZE(__pyx_args);
      switch (pos_args) {
        case  4: values[3] = PyTuple_GET_ITEM(__pyx_args, 3);
        CYTHON_FALLTHROUGH;
        case  3: values[2] = PyTuple_GET_ITEM(__pyx_args, 2);
        CYTHON_FALLTHROUGH;
        case  2: values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
        CYTHON_FALLTHROUGH;
        case  1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
        CYTHON_FALLTHROUGH;
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      kw_args = PyDict_Size(__pyx_kwds);
      switch (pos_args) {
        case  0:
        if (likely((values[0] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_grpc_call_wrapper)) != 0)) kw_args--;
        else goto __pyx_L5_argtuple_error;
        CYTHON_FALLTHROUGH;
        case  1:
        if (likely((values[1] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_metadata)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("_send_initial_metadata", 1, 4, 4, 1); __PYX_ERR(31, 150, __pyx_L3_error)
        }
        CYTHON_FALLTHROUGH;
        case  2:
        if (likely((values[2] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_flags)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("_send_initial_metadata", 1, 4, 4, 2); __PYX_ERR(31, 150, __pyx_L3_error)
        }
        CYTHON_FALLTHROUGH;
        case  3:
        if (likely((values[3] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_loop)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("_send_initial_metadata", 1, 4, 4, 3); __PYX_ERR(31, 150, __pyx_L3_error)
        }
      }
      if (unlikely(kw_args > 0)) {
        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "_send_initial_metadata") < 0)) __PYX_ERR(31, 150, __pyx_L3_error)
      }
    } else if (PyTuple_GET_SIZE(__pyx_args) != 4) {
      goto __pyx_L5_argtuple_error;
    } else {
      values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
      values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
      values[2] = PyTuple_GET_ITEM(__pyx_args, 2);
      values[3] = PyTuple_GET_ITEM(__pyx_args, 3);
    }
    __pyx_v_grpc_call_wrapper = ((struct __pyx_obj_4grpc_7_cython_6cygrpc_GrpcCallWrapper *)values[0]);
    __pyx_v_metadata = ((PyObject*)values[1]);
    __pyx_v_flags = __Pyx_PyInt_As_int(values[2]); if (unlikely((__pyx_v_flags == (int)-1) && PyErr_Occurred())) __PYX_ERR(31, 152, __pyx_L3_error)
    __pyx_v_loop = values[3];
  }
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("_send_initial_metadata", 1, 4, 4, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(31, 150, __pyx_L3_error)
  __pyx_L3_error:;
  __Pyx_AddTraceback("grpc._cython.cygrpc._send_initial_metadata", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_grpc_call_wrapper), __pyx_ptype_4grpc_7_cython_6cygrpc_GrpcCallWrapper, 1, "grpc_call_wrapper", 0))) __PYX_ERR(31, 150, __pyx_L1_error)
  if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_metadata), (&PyTuple_Type), 1, "metadata", 1))) __PYX_ERR(31, 151, __pyx_L1_error)
  __pyx_r = __pyx_pf_4grpc_7_cython_6cygrpc_129_send_initial_metadata(__pyx_self, __pyx_v_grpc_call_wrapper, __pyx_v_metadata, __pyx_v_flags, __pyx_v_loop);

  /* function exit code */
  goto __pyx_L0;
  __pyx_L1_error:;
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_4grpc_7_cython_6cygrpc_129_send_initial_metadata(CYTHON_UNUSED PyObject *__pyx_self, struct __pyx_obj_4grpc_7_cython_6cygrpc_GrpcCallWrapper *__pyx_v_grpc_call_wrapper, PyObject *__pyx_v_metadata, int __pyx_v_flags, PyObject *__pyx_v_loop) {
  struct __pyx_obj_4grpc_7_cython_6cygrpc___pyx_scope_struct_17__send_initial_metadata *__pyx_cur_scope;
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("_send_initial_metadata", 0);
  __pyx_cur_scope = (struct __pyx_obj_4grpc_7_cython_6cygrpc___pyx_scope_struct_17__send_initial_metadata *)__pyx_tp_new_4grpc_7_cython_6cygrpc___pyx_scope_struct_17__send_initial_metadata(__pyx_ptype_4grpc_7_cython_6cygrpc___pyx_scope_struct_17__send_initial_metadata, __pyx_empty_tuple, NULL);
  if (unlikely(!__pyx_cur_scope)) {
    __pyx_cur_scope = ((struct __pyx_obj_4grpc_7_cython_6cygrpc___pyx_scope_struct_17__send_initial_metadata *)Py_None);
    __Pyx_INCREF(Py_None);
    __PYX_ERR(31, 150, __pyx_L1_error)
  } else {
    __Pyx_GOTREF(__pyx_cur_scope);
  }
  __pyx_cur_scope->__pyx_v_grpc_call_wrapper = __pyx_v_grpc_call_wrapper;
  __Pyx_INCREF((PyObject *)__pyx_cur_scope->__pyx_v_grpc_call_wrapper);
  __Pyx_GIVEREF((PyObject *)__pyx_cur_scope->__pyx_v_grpc_call_wrapper);
  __pyx_cur_scope->__pyx_v_metadata = __pyx_v_metadata;
  __Pyx_INCREF(__pyx_cur_scope->__pyx_v_metadata);
  __Pyx_GIVEREF(__pyx_cur_scope->__pyx_v_metadata);
  __pyx_cur_scope->__pyx_v_flags = __pyx_v_flags;
  __pyx_cur_scope->__pyx_v_loop = __pyx_v_loop;
  __Pyx_INCREF(__pyx_cur_scope->__pyx_v_loop);
  __Pyx_GIVEREF(__pyx_cur_scope->__pyx_v_loop);
  {
    __pyx_CoroutineObject *gen = __Pyx_Coroutine_New((__pyx_coroutine_body_t) __pyx_gb_4grpc_7_cython_6cygrpc_131generator5, __pyx_codeobj__158, (PyObject *) __pyx_cur_scope, __pyx_n_s_send_initial_metadata, __pyx_n_s_send_initial_metadata, __pyx_n_s_grpc__cython_cygrpc); if (unlikely(!gen)) __PYX_ERR(31, 150, __pyx_L1_error)
    __Pyx_DECREF(__pyx_cur_scope);
    __Pyx_RefNannyFinishContext();
    return (PyObject *) gen;
  }

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_AddTraceback("grpc._cython.cygrpc._send_initial_metadata", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __Pyx_DECREF(((PyObject *)__pyx_cur_scope));
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_gb_4grpc_7_cython_6cygrpc_131generator5(__pyx_CoroutineObject *__pyx_generator, CYTHON_UNUSED PyThreadState *__pyx_tstate, PyObject *__pyx_sent_value) /* generator body */
{
  struct __pyx_obj_4grpc_7_cython_6cygrpc___pyx_scope_struct_17__send_initial_metadata *__pyx_cur_scope = ((struct __pyx_obj_4grpc_7_cython_6cygrpc___pyx_scope_struct_17__send_initial_metadata *)__pyx_generator->closure);
  PyObject *__pyx_r = NULL;
  PyObject *__pyx_t_1 = NULL;
  PyObject *__pyx_t_2 = NULL;
  PyObject *__pyx_t_3 = NULL;
  int __pyx_t_4;
  PyObject *__pyx_t_5 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("_send_initial_metadata", 0);
  switch (__pyx_generator->resume_label) {
    case 0: goto __pyx_L3_first_run;
    case 1: goto __pyx_L4_resume_from_await;
    default: /* CPython raises the right error here */
    __Pyx_RefNannyFinishContext();
    return NULL;
  }
  __pyx_L3_first_run:;
  if (unlikely(!__pyx_sent_value)) __PYX_ERR(31, 150, __pyx_L1_error)

  /* "src/python/grpcio/grpc/_cython/_cygrpc/aio/callback_common.pyx.pxi":156
 *     cdef SendInitialMetadataOperation op = SendInitialMetadataOperation(
 *         metadata,
 *         flags)             # <<<<<<<<<<<<<<
 *     cdef tuple ops = (op,)
 *     await execute_batch(grpc_call_wrapper, ops, loop)
 */
  __pyx_t_1 = __Pyx_PyInt_From_int(__pyx_cur_scope->__pyx_v_flags); if (unlikely(!__pyx_t_1)) __PYX_ERR(31, 156, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);

  /* "src/python/grpcio/grpc/_cython/_cygrpc/aio/callback_common.pyx.pxi":154
 *                                  int flags,
 *                                  object loop):
 *     cdef SendInitialMetadataOperation op = SendInitialMetadataOperation(             # <<<<<<<<<<<<<<
 *         metadata,
 *         flags)
 */
  __pyx_t_2 = PyTuple_New(2); if (unlikely(!__pyx_t_2)) __PYX_ERR(31, 154, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __Pyx_INCREF(__pyx_cur_scope->__pyx_v_metadata);
  __Pyx_GIVEREF(__pyx_cur_scope->__pyx_v_metadata);
  PyTuple_SET_ITEM(__pyx_t_2, 0, __pyx_cur_scope->__pyx_v_metadata);
  __Pyx_GIVEREF(__pyx_t_1);
  PyTuple_SET_ITEM(__pyx_t_2, 1, __pyx_t_1);
  __pyx_t_1 = 0;
  __pyx_t_1 = __Pyx_PyObject_Call(((PyObject *)__pyx_ptype_4grpc_7_cython_6cygrpc_SendInitialMetadataOperation), __pyx_t_2, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(31, 154, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  __Pyx_GIVEREF(__pyx_t_1);
  __pyx_cur_scope->__pyx_v_op = ((struct __pyx_obj_4grpc_7_cython_6cygrpc_SendInitialMetadataOperation *)__pyx_t_1);
  __pyx_t_1 = 0;

  /* "src/python/grpcio/grpc/_cython/_cygrpc/aio/callback_common.pyx.pxi":157
 *         metadata,
 *         flags)
 *     cdef tuple ops = (op,)             # <<<<<<<<<<<<<<
 *     await execute_batch(grpc_call_wrapper, ops, loop)
 * 
 */
  __pyx_t_1 = PyTuple_New(1); if (unlikely(!__pyx_t_1)) __PYX_ERR(31, 157, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_INCREF(((PyObject *)__pyx_cur_scope->__pyx_v_op));
  __Pyx_GIVEREF(((PyObject *)__pyx_cur_scope->__pyx_v_op));
  PyTuple_SET_ITEM(__pyx_t_1, 0, ((PyObject *)__pyx_cur_scope->__pyx_v_op));
  __Pyx_GIVEREF(__pyx_t_1);
  __pyx_cur_scope->__pyx_v_ops = ((PyObject*)__pyx_t_1);
  __pyx_t_1 = 0;

  /* "src/python/grpcio/grpc/_cython/_cygrpc/aio/callback_common.pyx.pxi":158
 *         flags)
 *     cdef tuple ops = (op,)
 *     await execute_batch(grpc_call_wrapper, ops, loop)             # <<<<<<<<<<<<<<
 * 
 * 
 */
  __Pyx_GetModuleGlobalName(__pyx_t_2, __pyx_n_s_execute_batch); if (unlikely(!__pyx_t_2)) __PYX_ERR(31, 158, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __pyx_t_3 = NULL;
  __pyx_t_4 = 0;
  if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_2))) {
    __pyx_t_3 = PyMethod_GET_SELF(__pyx_t_2);
    if (likely(__pyx_t_3)) {
      PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_2);
      __Pyx_INCREF(__pyx_t_3);
      __Pyx_INCREF(function);
      __Pyx_DECREF_SET(__pyx_t_2, function);
      __pyx_t_4 = 1;
    }
  }
  #if CYTHON_FAST_PYCALL
  if (PyFunction_Check(__pyx_t_2)) {
    PyObject *__pyx_temp[4] = {__pyx_t_3, ((PyObject *)__pyx_cur_scope->__pyx_v_grpc_call_wrapper), __pyx_cur_scope->__pyx_v_ops, __pyx_cur_scope->__pyx_v_loop};
    __pyx_t_1 = __Pyx_PyFunction_FastCall(__pyx_t_2, __pyx_temp+1-__pyx_t_4, 3+__pyx_t_4); if (unlikely(!__pyx_t_1)) __PYX_ERR(31, 158, __pyx_L1_error)
    __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0;
    __Pyx_GOTREF(__pyx_t_1);
  } else
  #endif
  #if CYTHON_FAST_PYCCALL
  if (__Pyx_PyFastCFunction_Check(__pyx_t_2)) {
    PyObject *__pyx_temp[4] = {__pyx_t_3, ((PyObject *)__pyx_cur_scope->__pyx_v_grpc_call_wrapper), __pyx_cur_scope->__pyx_v_ops, __pyx_cur_scope->__pyx_v_loop};
    __pyx_t_1 = __Pyx_PyCFunction_FastCall(__pyx_t_2, __pyx_temp+1-__pyx_t_4, 3+__pyx_t_4); if (unlikely(!__pyx_t_1)) __PYX_ERR(31, 158, __pyx_L1_error)
    __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0;
    __Pyx_GOTREF(__pyx_t_1);
  } else
  #endif
  {
    __pyx_t_5 = PyTuple_New(3+__pyx_t_4); if (unlikely(!__pyx_t_5)) __PYX_ERR(31, 158, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_5);
    if (__pyx_t_3) {
      __Pyx_GIVEREF(__pyx_t_3); PyTuple_SET_ITEM(__pyx_t_5, 0, __pyx_t_3); __pyx_t_3 = NULL;
    }
    __Pyx_INCREF(((PyObject *)__pyx_cur_scope->__pyx_v_grpc_call_wrapper));
    __Pyx_GIVEREF(((PyObject *)__pyx_cur_scope->__pyx_v_grpc_call_wrapper));
    PyTuple_SET_ITEM(__pyx_t_5, 0+__pyx_t_4, ((PyObject *)__pyx_cur_scope->__pyx_v_grpc_call_wrapper));
    __Pyx_INCREF(__pyx_cur_scope->__pyx_v_ops);
    __Pyx_GIVEREF(__pyx_cur_scope->__pyx_v_ops);
    PyTuple_SET_ITEM(__pyx_t_5, 1+__pyx_t_4, __pyx_cur_scope->__pyx_v_ops);
    __Pyx_INCREF(__pyx_cur_scope->__pyx_v_loop);
    __Pyx_GIVEREF(__pyx_cur_scope->__pyx_v_loop);
    PyTuple_SET_ITEM(__pyx_t_5, 2+__pyx_t_4, __pyx_cur_scope->__pyx_v_loop);
    __pyx_t_1 = __Pyx_PyObject_Call(__pyx_t_2, __pyx_t_5, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(31, 158, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_1);
    __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
  }
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  __pyx_r = __Pyx_Coroutine_Yield_From(__pyx_generator, __pyx_t_1);
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  __Pyx_XGOTREF(__pyx_r);
  if (likely(__pyx_r)) {
    __Pyx_XGIVEREF(__pyx_r);
    __Pyx_RefNannyFinishContext();
    __Pyx_Coroutine_ResetAndClearException(__pyx_generator);
    /* return from generator, awaiting value */
    __pyx_generator->resume_label = 1;
    return __pyx_r;
    __pyx_L4_resume_from_await:;
    if (unlikely(!__pyx_sent_value)) __PYX_ERR(31, 158, __pyx_L1_error)
  } else {
    PyObject* exc_type = __Pyx_PyErr_Occurred();
    if (exc_type) {
      if (likely(exc_type == PyExc_StopIteration || (exc_type != PyExc_GeneratorExit && __Pyx_PyErr_GivenExceptionMatches(exc_type, PyExc_StopIteration)))) PyErr_Clear();
      else __PYX_ERR(31, 158, __pyx_L1_error)
    }
  }
  CYTHON_MAYBE_UNUSED_VAR(__pyx_cur_scope);

  /* "src/python/grpcio/grpc/_cython/_cygrpc/aio/callback_common.pyx.pxi":150
 * 
 * 
 * async def _send_initial_metadata(GrpcCallWrapper grpc_call_wrapper,             # <<<<<<<<<<<<<<
 *                                  tuple metadata,
 *                                  int flags,
 */

  /* function exit code */
  PyErr_SetNone(PyExc_StopIteration);
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_XDECREF(__pyx_t_3);
  __Pyx_XDECREF(__pyx_t_5);
  __Pyx_AddTraceback("_send_initial_metadata", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_L0:;
  __Pyx_XDECREF(__pyx_r); __pyx_r = 0;
  #if !CYTHON_USE_EXC_INFO_STACK
  __Pyx_Coroutine_ResetAndClearException(__pyx_generator);
  #endif
  __pyx_generator->resume_label = -1;
  __Pyx_Coroutine_clear((PyObject*)__pyx_generator);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}
static PyObject *__pyx_gb_4grpc_7_cython_6cygrpc_134generator6(__pyx_CoroutineObject *__pyx_generator, CYTHON_UNUSED PyThreadState *__pyx_tstate, PyObject *__pyx_sent_value); /* proto */

/* "src/python/grpcio/grpc/_cython/_cygrpc/aio/callback_common.pyx.pxi":161
 * 
 * 
 * async def _receive_initial_metadata(GrpcCallWrapper grpc_call_wrapper,             # <<<<<<<<<<<<<<
 *                                     object loop):
 *     cdef ReceiveInitialMetadataOperation op = ReceiveInitialMetadataOperation(_EMPTY_FLAGS)
 */

/* Python wrapper */
static PyObject *__pyx_pw_4grpc_7_cython_6cygrpc_133_receive_initial_metadata(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
static PyMethodDef __pyx_mdef_4grpc_7_cython_6cygrpc_133_receive_initial_metadata = {"_receive_initial_metadata", (PyCFunction)(void*)(PyCFunctionWithKeywords)__pyx_pw_4grpc_7_cython_6cygrpc_133_receive_initial_metadata, METH_VARARGS|METH_KEYWORDS, 0};
static PyObject *__pyx_pw_4grpc_7_cython_6cygrpc_133_receive_initial_metadata(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
  struct __pyx_obj_4grpc_7_cython_6cygrpc_GrpcCallWrapper *__pyx_v_grpc_call_wrapper = 0;
  PyObject *__pyx_v_loop = 0;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("_receive_initial_metadata (wrapper)", 0);
  {
    static PyObject **__pyx_pyargnames[] = {&__pyx_n_s_grpc_call_wrapper,&__pyx_n_s_loop,0};
    PyObject* values[2] = {0,0};
    if (unlikely(__pyx_kwds)) {
      Py_ssize_t kw_args;
      const Py_ssize_t pos_args = PyTuple_GET_SIZE(__pyx_args);
      switch (pos_args) {
        case  2: values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
        CYTHON_FALLTHROUGH;
        case  1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
        CYTHON_FALLTHROUGH;
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      kw_args = PyDict_Size(__pyx_kwds);
      switch (pos_args) {
        case  0:
        if (likely((values[0] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_grpc_call_wrapper)) != 0)) kw_args--;
        else goto __pyx_L5_argtuple_error;
        CYTHON_FALLTHROUGH;
        case  1:
        if (likely((values[1] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_loop)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("_receive_initial_metadata", 1, 2, 2, 1); __PYX_ERR(31, 161, __pyx_L3_error)
        }
      }
      if (unlikely(kw_args > 0)) {
        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "_receive_initial_metadata") < 0)) __PYX_ERR(31, 161, __pyx_L3_error)
      }
    } else if (PyTuple_GET_SIZE(__pyx_args) != 2) {
      goto __pyx_L5_argtuple_error;
    } else {
      values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
      values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
    }
    __pyx_v_grpc_call_wrapper = ((struct __pyx_obj_4grpc_7_cython_6cygrpc_GrpcCallWrapper *)values[0]);
    __pyx_v_loop = values[1];
  }
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("_receive_initial_metadata", 1, 2, 2, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(31, 161, __pyx_L3_error)
  __pyx_L3_error:;
  __Pyx_AddTraceback("grpc._cython.cygrpc._receive_initial_metadata", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_grpc_call_wrapper), __pyx_ptype_4grpc_7_cython_6cygrpc_GrpcCallWrapper, 1, "grpc_call_wrapper", 0))) __PYX_ERR(31, 161, __pyx_L1_error)
  __pyx_r = __pyx_pf_4grpc_7_cython_6cygrpc_132_receive_initial_metadata(__pyx_self, __pyx_v_grpc_call_wrapper, __pyx_v_loop);

  /* function exit code */
  goto __pyx_L0;
  __pyx_L1_error:;
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_4grpc_7_cython_6cygrpc_132_receive_initial_metadata(CYTHON_UNUSED PyObject *__pyx_self, struct __pyx_obj_4grpc_7_cython_6cygrpc_GrpcCallWrapper *__pyx_v_grpc_call_wrapper, PyObject *__pyx_v_loop) {
  struct __pyx_obj_4grpc_7_cython_6cygrpc___pyx_scope_struct_18__receive_initial_metadata *__pyx_cur_scope;
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("_receive_initial_metadata", 0);
  __pyx_cur_scope = (struct __pyx_obj_4grpc_7_cython_6cygrpc___pyx_scope_struct_18__receive_initial_metadata *)__pyx_tp_new_4grpc_7_cython_6cygrpc___pyx_scope_struct_18__receive_initial_metadata(__pyx_ptype_4grpc_7_cython_6cygrpc___pyx_scope_struct_18__receive_initial_metadata, __pyx_empty_tuple, NULL);
  if (unlikely(!__pyx_cur_scope)) {
    __pyx_cur_scope = ((struct __pyx_obj_4grpc_7_cython_6cygrpc___pyx_scope_struct_18__receive_initial_metadata *)Py_None);
    __Pyx_INCREF(Py_None);
    __PYX_ERR(31, 161, __pyx_L1_error)
  } else {
    __Pyx_GOTREF(__pyx_cur_scope);
  }
  __pyx_cur_scope->__pyx_v_grpc_call_wrapper = __pyx_v_grpc_call_wrapper;
  __Pyx_INCREF((PyObject *)__pyx_cur_scope->__pyx_v_grpc_call_wrapper);
  __Pyx_GIVEREF((PyObject *)__pyx_cur_scope->__pyx_v_grpc_call_wrapper);
  __pyx_cur_scope->__pyx_v_loop = __pyx_v_loop;
  __Pyx_INCREF(__pyx_cur_scope->__pyx_v_loop);
  __Pyx_GIVEREF(__pyx_cur_scope->__pyx_v_loop);
  {
    __pyx_CoroutineObject *gen = __Pyx_Coroutine_New((__pyx_coroutine_body_t) __pyx_gb_4grpc_7_cython_6cygrpc_134generator6, __pyx_codeobj__159, (PyObject *) __pyx_cur_scope, __pyx_n_s_receive_initial_metadata, __pyx_n_s_receive_initial_metadata, __pyx_n_s_grpc__cython_cygrpc); if (unlikely(!gen)) __PYX_ERR(31, 161, __pyx_L1_error)
    __Pyx_DECREF(__pyx_cur_scope);
    __Pyx_RefNannyFinishContext();
    return (PyObject *) gen;
  }

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_AddTraceback("grpc._cython.cygrpc._receive_initial_metadata", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __Pyx_DECREF(((PyObject *)__pyx_cur_scope));
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_gb_4grpc_7_cython_6cygrpc_134generator6(__pyx_CoroutineObject *__pyx_generator, CYTHON_UNUSED PyThreadState *__pyx_tstate, PyObject *__pyx_sent_value) /* generator body */
{
  struct __pyx_obj_4grpc_7_cython_6cygrpc___pyx_scope_struct_18__receive_initial_metadata *__pyx_cur_scope = ((struct __pyx_obj_4grpc_7_cython_6cygrpc___pyx_scope_struct_18__receive_initial_metadata *)__pyx_generator->closure);
  PyObject *__pyx_r = NULL;
  PyObject *__pyx_t_1 = NULL;
  PyObject *__pyx_t_2 = NULL;
  PyObject *__pyx_t_3 = NULL;
  int __pyx_t_4;
  PyObject *__pyx_t_5 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("_receive_initial_metadata", 0);
  switch (__pyx_generator->resume_label) {
    case 0: goto __pyx_L3_first_run;
    case 1: goto __pyx_L4_resume_from_await;
    default: /* CPython raises the right error here */
    __Pyx_RefNannyFinishContext();
    return NULL;
  }
  __pyx_L3_first_run:;
  if (unlikely(!__pyx_sent_value)) __PYX_ERR(31, 161, __pyx_L1_error)

  /* "src/python/grpcio/grpc/_cython/_cygrpc/aio/callback_common.pyx.pxi":163
 * async def _receive_initial_metadata(GrpcCallWrapper grpc_call_wrapper,
 *                                     object loop):
 *     cdef ReceiveInitialMetadataOperation op = ReceiveInitialMetadataOperation(_EMPTY_FLAGS)             # <<<<<<<<<<<<<<
 *     cdef tuple ops = (op,)
 *     await execute_batch(grpc_call_wrapper, ops, loop)
 */
  __Pyx_GetModuleGlobalName(__pyx_t_1, __pyx_n_s_EMPTY_FLAGS); if (unlikely(!__pyx_t_1)) __PYX_ERR(31, 163, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_t_2 = __Pyx_PyObject_CallOneArg(((PyObject *)__pyx_ptype_4grpc_7_cython_6cygrpc_ReceiveInitialMetadataOperation), __pyx_t_1); if (unlikely(!__pyx_t_2)) __PYX_ERR(31, 163, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  __Pyx_GIVEREF(__pyx_t_2);
  __pyx_cur_scope->__pyx_v_op = ((struct __pyx_obj_4grpc_7_cython_6cygrpc_ReceiveInitialMetadataOperation *)__pyx_t_2);
  __pyx_t_2 = 0;

  /* "src/python/grpcio/grpc/_cython/_cygrpc/aio/callback_common.pyx.pxi":164
 *                                     object loop):
 *     cdef ReceiveInitialMetadataOperation op = ReceiveInitialMetadataOperation(_EMPTY_FLAGS)
 *     cdef tuple ops = (op,)             # <<<<<<<<<<<<<<
 *     await execute_batch(grpc_call_wrapper, ops, loop)
 *     return op.initial_metadata()
 */
  __pyx_t_2 = PyTuple_New(1); if (unlikely(!__pyx_t_2)) __PYX_ERR(31, 164, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __Pyx_INCREF(((PyObject *)__pyx_cur_scope->__pyx_v_op));
  __Pyx_GIVEREF(((PyObject *)__pyx_cur_scope->__pyx_v_op));
  PyTuple_SET_ITEM(__pyx_t_2, 0, ((PyObject *)__pyx_cur_scope->__pyx_v_op));
  __Pyx_GIVEREF(__pyx_t_2);
  __pyx_cur_scope->__pyx_v_ops = ((PyObject*)__pyx_t_2);
  __pyx_t_2 = 0;

  /* "src/python/grpcio/grpc/_cython/_cygrpc/aio/callback_common.pyx.pxi":165
 *     cdef ReceiveInitialMetadataOperation op = ReceiveInitialMetadataOperation(_EMPTY_FLAGS)
 *     cdef tuple ops = (op,)
 *     await execute_batch(grpc_call_wrapper, ops, loop)             # <<<<<<<<<<<<<<
 *     return op.initial_metadata()
 * 
 */
  __Pyx_GetModuleGlobalName(__pyx_t_1, __pyx_n_s_execute_batch); if (unlikely(!__pyx_t_1)) __PYX_ERR(31, 165, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_t_3 = NULL;
  __pyx_t_4 = 0;
  if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_1))) {
    __pyx_t_3 = PyMethod_GET_SELF(__pyx_t_1);
    if (likely(__pyx_t_3)) {
      PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_1);
      __Pyx_INCREF(__pyx_t_3);
      __Pyx_INCREF(function);
      __Pyx_DECREF_SET(__pyx_t_1, function);
      __pyx_t_4 = 1;
    }
  }
  #if CYTHON_FAST_PYCALL
  if (PyFunction_Check(__pyx_t_1)) {
    PyObject *__pyx_temp[4] = {__pyx_t_3, ((PyObject *)__pyx_cur_scope->__pyx_v_grpc_call_wrapper), __pyx_cur_scope->__pyx_v_ops, __pyx_cur_scope->__pyx_v_loop};
    __pyx_t_2 = __Pyx_PyFunction_FastCall(__pyx_t_1, __pyx_temp+1-__pyx_t_4, 3+__pyx_t_4); if (unlikely(!__pyx_t_2)) __PYX_ERR(31, 165, __pyx_L1_error)
    __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0;
    __Pyx_GOTREF(__pyx_t_2);
  } else
  #endif
  #if CYTHON_FAST_PYCCALL
  if (__Pyx_PyFastCFunction_Check(__pyx_t_1)) {
    PyObject *__pyx_temp[4] = {__pyx_t_3, ((PyObject *)__pyx_cur_scope->__pyx_v_grpc_call_wrapper), __pyx_cur_scope->__pyx_v_ops, __pyx_cur_scope->__pyx_v_loop};
    __pyx_t_2 = __Pyx_PyCFunction_FastCall(__pyx_t_1, __pyx_temp+1-__pyx_t_4, 3+__pyx_t_4); if (unlikely(!__pyx_t_2)) __PYX_ERR(31, 165, __pyx_L1_error)
    __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0;
    __Pyx_GOTREF(__pyx_t_2);
  } else
  #endif
  {
    __pyx_t_5 = PyTuple_New(3+__pyx_t_4); if (unlikely(!__pyx_t_5)) __PYX_ERR(31, 165, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_5);
    if (__pyx_t_3) {
      __Pyx_GIVEREF(__pyx_t_3); PyTuple_SET_ITEM(__pyx_t_5, 0, __pyx_t_3); __pyx_t_3 = NULL;
    }
    __Pyx_INCREF(((PyObject *)__pyx_cur_scope->__pyx_v_grpc_call_wrapper));
    __Pyx_GIVEREF(((PyObject *)__pyx_cur_scope->__pyx_v_grpc_call_wrapper));
    PyTuple_SET_ITEM(__pyx_t_5, 0+__pyx_t_4, ((PyObject *)__pyx_cur_scope->__pyx_v_grpc_call_wrapper));
    __Pyx_INCREF(__pyx_cur_scope->__pyx_v_ops);
    __Pyx_GIVEREF(__pyx_cur_scope->__pyx_v_ops);
    PyTuple_SET_ITEM(__pyx_t_5, 1+__pyx_t_4, __pyx_cur_scope->__pyx_v_ops);
    __Pyx_INCREF(__pyx_cur_scope->__pyx_v_loop);
    __Pyx_GIVEREF(__pyx_cur_scope->__pyx_v_loop);
    PyTuple_SET_ITEM(__pyx_t_5, 2+__pyx_t_4, __pyx_cur_scope->__pyx_v_loop);
    __pyx_t_2 = __Pyx_PyObject_Call(__pyx_t_1, __pyx_t_5, NULL); if (unlikely(!__pyx_t_2)) __PYX_ERR(31, 165, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_2);
    __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
  }
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  __pyx_r = __Pyx_Coroutine_Yield_From(__pyx_generator, __pyx_t_2);
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  __Pyx_XGOTREF(__pyx_r);
  if (likely(__pyx_r)) {
    __Pyx_XGIVEREF(__pyx_r);
    __Pyx_RefNannyFinishContext();
    __Pyx_Coroutine_ResetAndClearException(__pyx_generator);
    /* return from generator, awaiting value */
    __pyx_generator->resume_label = 1;
    return __pyx_r;
    __pyx_L4_resume_from_await:;
    if (unlikely(!__pyx_sent_value)) __PYX_ERR(31, 165, __pyx_L1_error)
  } else {
    PyObject* exc_type = __Pyx_PyErr_Occurred();
    if (exc_type) {
      if (likely(exc_type == PyExc_StopIteration || (exc_type != PyExc_GeneratorExit && __Pyx_PyErr_GivenExceptionMatches(exc_type, PyExc_StopIteration)))) PyErr_Clear();
      else __PYX_ERR(31, 165, __pyx_L1_error)
    }
  }

  /* "src/python/grpcio/grpc/_cython/_cygrpc/aio/callback_common.pyx.pxi":166
 *     cdef tuple ops = (op,)
 *     await execute_batch(grpc_call_wrapper, ops, loop)
 *     return op.initial_metadata()             # <<<<<<<<<<<<<<
 * 
 * async def _send_error_status_from_server(GrpcCallWrapper grpc_call_wrapper,
 */
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_1 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_cur_scope->__pyx_v_op), __pyx_n_s_initial_metadata); if (unlikely(!__pyx_t_1)) __PYX_ERR(31, 166, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_t_5 = NULL;
  if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_1))) {
    __pyx_t_5 = PyMethod_GET_SELF(__pyx_t_1);
    if (likely(__pyx_t_5)) {
      PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_1);
      __Pyx_INCREF(__pyx_t_5);
      __Pyx_INCREF(function);
      __Pyx_DECREF_SET(__pyx_t_1, function);
    }
  }
  __pyx_t_2 = (__pyx_t_5) ? __Pyx_PyObject_CallOneArg(__pyx_t_1, __pyx_t_5) : __Pyx_PyObject_CallNoArg(__pyx_t_1);
  __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0;
  if (unlikely(!__pyx_t_2)) __PYX_ERR(31, 166, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  __pyx_r = NULL; __Pyx_ReturnWithStopIteration(__pyx_t_2);
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  goto __pyx_L0;
  CYTHON_MAYBE_UNUSED_VAR(__pyx_cur_scope);

  /* "src/python/grpcio/grpc/_cython/_cygrpc/aio/callback_common.pyx.pxi":161
 * 
 * 
 * async def _receive_initial_metadata(GrpcCallWrapper grpc_call_wrapper,             # <<<<<<<<<<<<<<
 *                                     object loop):
 *     cdef ReceiveInitialMetadataOperation op = ReceiveInitialMetadataOperation(_EMPTY_FLAGS)
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_XDECREF(__pyx_t_3);
  __Pyx_XDECREF(__pyx_t_5);
  __Pyx_AddTraceback("_receive_initial_metadata", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_L0:;
  __Pyx_XDECREF(__pyx_r); __pyx_r = 0;
  #if !CYTHON_USE_EXC_INFO_STACK
  __Pyx_Coroutine_ResetAndClearException(__pyx_generator);
  #endif
  __pyx_generator->resume_label = -1;
  __Pyx_Coroutine_clear((PyObject*)__pyx_generator);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}
static PyObject *__pyx_gb_4grpc_7_cython_6cygrpc_137generator7(__pyx_CoroutineObject *__pyx_generator, CYTHON_UNUSED PyThreadState *__pyx_tstate, PyObject *__pyx_sent_value); /* proto */

/* "src/python/grpcio/grpc/_cython/_cygrpc/aio/callback_common.pyx.pxi":168
 *     return op.initial_metadata()
 * 
 * async def _send_error_status_from_server(GrpcCallWrapper grpc_call_wrapper,             # <<<<<<<<<<<<<<
 *                                          grpc_status_code code,
 *                                          str details,
 */

/* Python wrapper */
static PyObject *__pyx_pw_4grpc_7_cython_6cygrpc_136_send_error_status_from_server(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
static PyMethodDef __pyx_mdef_4grpc_7_cython_6cygrpc_136_send_error_status_from_server = {"_send_error_status_from_server", (PyCFunction)(void*)(PyCFunctionWithKeywords)__pyx_pw_4grpc_7_cython_6cygrpc_136_send_error_status_from_server, METH_VARARGS|METH_KEYWORDS, 0};
static PyObject *__pyx_pw_4grpc_7_cython_6cygrpc_136_send_error_status_from_server(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
  struct __pyx_obj_4grpc_7_cython_6cygrpc_GrpcCallWrapper *__pyx_v_grpc_call_wrapper = 0;
  grpc_status_code __pyx_v_code;
  PyObject *__pyx_v_details = 0;
  PyObject *__pyx_v_trailing_metadata = 0;
  struct __pyx_obj_4grpc_7_cython_6cygrpc_Operation *__pyx_v_send_initial_metadata_op = 0;
  PyObject *__pyx_v_loop = 0;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("_send_error_status_from_server (wrapper)", 0);
  {
    static PyObject **__pyx_pyargnames[] = {&__pyx_n_s_grpc_call_wrapper,&__pyx_n_s_code,&__pyx_n_s_details,&__pyx_n_s_trailing_metadata,&__pyx_n_s_send_initial_metadata_op,&__pyx_n_s_loop,0};
    PyObject* values[6] = {0,0,0,0,0,0};
    if (unlikely(__pyx_kwds)) {
      Py_ssize_t kw_args;
      const Py_ssize_t pos_args = PyTuple_GET_SIZE(__pyx_args);
      switch (pos_args) {
        case  6: values[5] = PyTuple_GET_ITEM(__pyx_args, 5);
        CYTHON_FALLTHROUGH;
        case  5: values[4] = PyTuple_GET_ITEM(__pyx_args, 4);
        CYTHON_FALLTHROUGH;
        case  4: values[3] = PyTuple_GET_ITEM(__pyx_args, 3);
        CYTHON_FALLTHROUGH;
        case  3: values[2] = PyTuple_GET_ITEM(__pyx_args, 2);
        CYTHON_FALLTHROUGH;
        case  2: values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
        CYTHON_FALLTHROUGH;
        case  1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
        CYTHON_FALLTHROUGH;
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      kw_args = PyDict_Size(__pyx_kwds);
      switch (pos_args) {
        case  0:
        if (likely((values[0] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_grpc_call_wrapper)) != 0)) kw_args--;
        else goto __pyx_L5_argtuple_error;
        CYTHON_FALLTHROUGH;
        case  1:
        if (likely((values[1] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_code)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("_send_error_status_from_server", 1, 6, 6, 1); __PYX_ERR(31, 168, __pyx_L3_error)
        }
        CYTHON_FALLTHROUGH;
        case  2:
        if (likely((values[2] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_details)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("_send_error_status_from_server", 1, 6, 6, 2); __PYX_ERR(31, 168, __pyx_L3_error)
        }
        CYTHON_FALLTHROUGH;
        case  3:
        if (likely((values[3] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_trailing_metadata)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("_send_error_status_from_server", 1, 6, 6, 3); __PYX_ERR(31, 168, __pyx_L3_error)
        }
        CYTHON_FALLTHROUGH;
        case  4:
        if (likely((values[4] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_send_initial_metadata_op)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("_send_error_status_from_server", 1, 6, 6, 4); __PYX_ERR(31, 168, __pyx_L3_error)
        }
        CYTHON_FALLTHROUGH;
        case  5:
        if (likely((values[5] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_loop)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("_send_error_status_from_server", 1, 6, 6, 5); __PYX_ERR(31, 168, __pyx_L3_error)
        }
      }
      if (unlikely(kw_args > 0)) {
        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "_send_error_status_from_server") < 0)) __PYX_ERR(31, 168, __pyx_L3_error)
      }
    } else if (PyTuple_GET_SIZE(__pyx_args) != 6) {
      goto __pyx_L5_argtuple_error;
    } else {
      values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
      values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
      values[2] = PyTuple_GET_ITEM(__pyx_args, 2);
      values[3] = PyTuple_GET_ITEM(__pyx_args, 3);
      values[4] = PyTuple_GET_ITEM(__pyx_args, 4);
      values[5] = PyTuple_GET_ITEM(__pyx_args, 5);
    }
    __pyx_v_grpc_call_wrapper = ((struct __pyx_obj_4grpc_7_cython_6cygrpc_GrpcCallWrapper *)values[0]);
    __pyx_v_code = ((grpc_status_code)__Pyx_PyInt_As_grpc_status_code(values[1])); if (unlikely(PyErr_Occurred())) __PYX_ERR(31, 169, __pyx_L3_error)
    __pyx_v_details = ((PyObject*)values[2]);
    __pyx_v_trailing_metadata = ((PyObject*)values[3]);
    __pyx_v_send_initial_metadata_op = ((struct __pyx_obj_4grpc_7_cython_6cygrpc_Operation *)values[4]);
    __pyx_v_loop = values[5];
  }
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("_send_error_status_from_server", 1, 6, 6, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(31, 168, __pyx_L3_error)
  __pyx_L3_error:;
  __Pyx_AddTraceback("grpc._cython.cygrpc._send_error_status_from_server", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_grpc_call_wrapper), __pyx_ptype_4grpc_7_cython_6cygrpc_GrpcCallWrapper, 1, "grpc_call_wrapper", 0))) __PYX_ERR(31, 168, __pyx_L1_error)
  if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_details), (&PyString_Type), 1, "details", 1))) __PYX_ERR(31, 170, __pyx_L1_error)
  if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_trailing_metadata), (&PyTuple_Type), 1, "trailing_metadata", 1))) __PYX_ERR(31, 171, __pyx_L1_error)
  if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_send_initial_metadata_op), __pyx_ptype_4grpc_7_cython_6cygrpc_Operation, 1, "send_initial_metadata_op", 0))) __PYX_ERR(31, 172, __pyx_L1_error)
  __pyx_r = __pyx_pf_4grpc_7_cython_6cygrpc_135_send_error_status_from_server(__pyx_self, __pyx_v_grpc_call_wrapper, __pyx_v_code, __pyx_v_details, __pyx_v_trailing_metadata, __pyx_v_send_initial_metadata_op, __pyx_v_loop);

  /* function exit code */
  goto __pyx_L0;
  __pyx_L1_error:;
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_4grpc_7_cython_6cygrpc_135_send_error_status_from_server(CYTHON_UNUSED PyObject *__pyx_self, struct __pyx_obj_4grpc_7_cython_6cygrpc_GrpcCallWrapper *__pyx_v_grpc_call_wrapper, grpc_status_code __pyx_v_code, PyObject *__pyx_v_details, PyObject *__pyx_v_trailing_metadata, struct __pyx_obj_4grpc_7_cython_6cygrpc_Operation *__pyx_v_send_initial_metadata_op, PyObject *__pyx_v_loop) {
  struct __pyx_obj_4grpc_7_cython_6cygrpc___pyx_scope_struct_19__send_error_status_from_server *__pyx_cur_scope;
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("_send_error_status_from_server", 0);
  __pyx_cur_scope = (struct __pyx_obj_4grpc_7_cython_6cygrpc___pyx_scope_struct_19__send_error_status_from_server *)__pyx_tp_new_4grpc_7_cython_6cygrpc___pyx_scope_struct_19__send_error_status_from_server(__pyx_ptype_4grpc_7_cython_6cygrpc___pyx_scope_struct_19__send_error_status_from_server, __pyx_empty_tuple, NULL);
  if (unlikely(!__pyx_cur_scope)) {
    __pyx_cur_scope = ((struct __pyx_obj_4grpc_7_cython_6cygrpc___pyx_scope_struct_19__send_error_status_from_server *)Py_None);
    __Pyx_INCREF(Py_None);
    __PYX_ERR(31, 168, __pyx_L1_error)
  } else {
    __Pyx_GOTREF(__pyx_cur_scope);
  }
  __pyx_cur_scope->__pyx_v_grpc_call_wrapper = __pyx_v_grpc_call_wrapper;
  __Pyx_INCREF((PyObject *)__pyx_cur_scope->__pyx_v_grpc_call_wrapper);
  __Pyx_GIVEREF((PyObject *)__pyx_cur_scope->__pyx_v_grpc_call_wrapper);
  __pyx_cur_scope->__pyx_v_code = __pyx_v_code;
  __pyx_cur_scope->__pyx_v_details = __pyx_v_details;
  __Pyx_INCREF(__pyx_cur_scope->__pyx_v_details);
  __Pyx_GIVEREF(__pyx_cur_scope->__pyx_v_details);
  __pyx_cur_scope->__pyx_v_trailing_metadata = __pyx_v_trailing_metadata;
  __Pyx_INCREF(__pyx_cur_scope->__pyx_v_trailing_metadata);
  __Pyx_GIVEREF(__pyx_cur_scope->__pyx_v_trailing_metadata);
  __pyx_cur_scope->__pyx_v_send_initial_metadata_op = __pyx_v_send_initial_metadata_op;
  __Pyx_INCREF((PyObject *)__pyx_cur_scope->__pyx_v_send_initial_metadata_op);
  __Pyx_GIVEREF((PyObject *)__pyx_cur_scope->__pyx_v_send_initial_metadata_op);
  __pyx_cur_scope->__pyx_v_loop = __pyx_v_loop;
  __Pyx_INCREF(__pyx_cur_scope->__pyx_v_loop);
  __Pyx_GIVEREF(__pyx_cur_scope->__pyx_v_loop);
  {
    __pyx_CoroutineObject *gen = __Pyx_Coroutine_New((__pyx_coroutine_body_t) __pyx_gb_4grpc_7_cython_6cygrpc_137generator7, __pyx_codeobj__160, (PyObject *) __pyx_cur_scope, __pyx_n_s_send_error_status_from_server, __pyx_n_s_send_error_status_from_server, __pyx_n_s_grpc__cython_cygrpc); if (unlikely(!gen)) __PYX_ERR(31, 168, __pyx_L1_error)
    __Pyx_DECREF(__pyx_cur_scope);
    __Pyx_RefNannyFinishContext();
    return (PyObject *) gen;
  }

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_AddTraceback("grpc._cython.cygrpc._send_error_status_from_server", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __Pyx_DECREF(((PyObject *)__pyx_cur_scope));
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_gb_4grpc_7_cython_6cygrpc_137generator7(__pyx_CoroutineObject *__pyx_generator, CYTHON_UNUSED PyThreadState *__pyx_tstate, PyObject *__pyx_sent_value) /* generator body */
{
  struct __pyx_obj_4grpc_7_cython_6cygrpc___pyx_scope_struct_19__send_error_status_from_server *__pyx_cur_scope = ((struct __pyx_obj_4grpc_7_cython_6cygrpc___pyx_scope_struct_19__send_error_status_from_server *)__pyx_generator->closure);
  PyObject *__pyx_r = NULL;
  PyObject *__pyx_t_1 = NULL;
  PyObject *__pyx_t_2 = NULL;
  PyObject *__pyx_t_3 = NULL;
  int __pyx_t_4;
  int __pyx_t_5;
  int __pyx_t_6;
  PyObject *__pyx_t_7 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("_send_error_status_from_server", 0);
  switch (__pyx_generator->resume_label) {
    case 0: goto __pyx_L3_first_run;
    case 1: goto __pyx_L5_resume_from_await;
    default: /* CPython raises the right error here */
    __Pyx_RefNannyFinishContext();
    return NULL;
  }
  __pyx_L3_first_run:;
  if (unlikely(!__pyx_sent_value)) __PYX_ERR(31, 168, __pyx_L1_error)

  /* "src/python/grpcio/grpc/_cython/_cygrpc/aio/callback_common.pyx.pxi":174
 *                                          Operation send_initial_metadata_op,
 *                                          object loop):
 *     assert code != StatusCode.ok, 'Expecting non-ok status code.'             # <<<<<<<<<<<<<<
 *     cdef SendStatusFromServerOperation op = SendStatusFromServerOperation(
 *         trailing_metadata,
 */
  #ifndef CYTHON_WITHOUT_ASSERTIONS
  if (unlikely(!Py_OptimizeFlag)) {
    __pyx_t_1 = __Pyx_PyInt_From_grpc_status_code(__pyx_cur_scope->__pyx_v_code); if (unlikely(!__pyx_t_1)) __PYX_ERR(31, 174, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_1);
    __Pyx_GetModuleGlobalName(__pyx_t_2, __pyx_n_s_StatusCode); if (unlikely(!__pyx_t_2)) __PYX_ERR(31, 174, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_2);
    __pyx_t_3 = __Pyx_PyObject_GetAttrStr(__pyx_t_2, __pyx_n_s_ok); if (unlikely(!__pyx_t_3)) __PYX_ERR(31, 174, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_3);
    __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
    __pyx_t_2 = PyObject_RichCompare(__pyx_t_1, __pyx_t_3, Py_NE); __Pyx_XGOTREF(__pyx_t_2); if (unlikely(!__pyx_t_2)) __PYX_ERR(31, 174, __pyx_L1_error)
    __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
    __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
    __pyx_t_4 = __Pyx_PyObject_IsTrue(__pyx_t_2); if (unlikely(__pyx_t_4 < 0)) __PYX_ERR(31, 174, __pyx_L1_error)
    __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
    if (unlikely(!__pyx_t_4)) {
      PyErr_SetObject(PyExc_AssertionError, __pyx_kp_s_Expecting_non_ok_status_code);
      __PYX_ERR(31, 174, __pyx_L1_error)
    }
  }
  #endif

  /* "src/python/grpcio/grpc/_cython/_cygrpc/aio/callback_common.pyx.pxi":177
 *     cdef SendStatusFromServerOperation op = SendStatusFromServerOperation(
 *         trailing_metadata,
 *         code,             # <<<<<<<<<<<<<<
 *         details,
 *         _EMPTY_FLAGS,
 */
  __pyx_t_2 = __Pyx_PyInt_From_grpc_status_code(__pyx_cur_scope->__pyx_v_code); if (unlikely(!__pyx_t_2)) __PYX_ERR(31, 177, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);

  /* "src/python/grpcio/grpc/_cython/_cygrpc/aio/callback_common.pyx.pxi":179
 *         code,
 *         details,
 *         _EMPTY_FLAGS,             # <<<<<<<<<<<<<<
 *     )
 *     cdef tuple ops = (op,)
 */
  __Pyx_GetModuleGlobalName(__pyx_t_3, __pyx_n_s_EMPTY_FLAGS); if (unlikely(!__pyx_t_3)) __PYX_ERR(31, 179, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);

  /* "src/python/grpcio/grpc/_cython/_cygrpc/aio/callback_common.pyx.pxi":175
 *                                          object loop):
 *     assert code != StatusCode.ok, 'Expecting non-ok status code.'
 *     cdef SendStatusFromServerOperation op = SendStatusFromServerOperation(             # <<<<<<<<<<<<<<
 *         trailing_metadata,
 *         code,
 */
  __pyx_t_1 = PyTuple_New(4); if (unlikely(!__pyx_t_1)) __PYX_ERR(31, 175, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_INCREF(__pyx_cur_scope->__pyx_v_trailing_metadata);
  __Pyx_GIVEREF(__pyx_cur_scope->__pyx_v_trailing_metadata);
  PyTuple_SET_ITEM(__pyx_t_1, 0, __pyx_cur_scope->__pyx_v_trailing_metadata);
  __Pyx_GIVEREF(__pyx_t_2);
  PyTuple_SET_ITEM(__pyx_t_1, 1, __pyx_t_2);
  __Pyx_INCREF(__pyx_cur_scope->__pyx_v_details);
  __Pyx_GIVEREF(__pyx_cur_scope->__pyx_v_details);
  PyTuple_SET_ITEM(__pyx_t_1, 2, __pyx_cur_scope->__pyx_v_details);
  __Pyx_GIVEREF(__pyx_t_3);
  PyTuple_SET_ITEM(__pyx_t_1, 3, __pyx_t_3);
  __pyx_t_2 = 0;
  __pyx_t_3 = 0;
  __pyx_t_3 = __Pyx_PyObject_Call(((PyObject *)__pyx_ptype_4grpc_7_cython_6cygrpc_SendStatusFromServerOperation), __pyx_t_1, NULL); if (unlikely(!__pyx_t_3)) __PYX_ERR(31, 175, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  __Pyx_GIVEREF(__pyx_t_3);
  __pyx_cur_scope->__pyx_v_op = ((struct __pyx_obj_4grpc_7_cython_6cygrpc_SendStatusFromServerOperation *)__pyx_t_3);
  __pyx_t_3 = 0;

  /* "src/python/grpcio/grpc/_cython/_cygrpc/aio/callback_common.pyx.pxi":181
 *         _EMPTY_FLAGS,
 *     )
 *     cdef tuple ops = (op,)             # <<<<<<<<<<<<<<
 *     if send_initial_metadata_op is not None:
 *         ops = (send_initial_metadata_op,) + ops
 */
  __pyx_t_3 = PyTuple_New(1); if (unlikely(!__pyx_t_3)) __PYX_ERR(31, 181, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  __Pyx_INCREF(((PyObject *)__pyx_cur_scope->__pyx_v_op));
  __Pyx_GIVEREF(((PyObject *)__pyx_cur_scope->__pyx_v_op));
  PyTuple_SET_ITEM(__pyx_t_3, 0, ((PyObject *)__pyx_cur_scope->__pyx_v_op));
  __Pyx_GIVEREF(__pyx_t_3);
  __pyx_cur_scope->__pyx_v_ops = ((PyObject*)__pyx_t_3);
  __pyx_t_3 = 0;

  /* "src/python/grpcio/grpc/_cython/_cygrpc/aio/callback_common.pyx.pxi":182
 *     )
 *     cdef tuple ops = (op,)
 *     if send_initial_metadata_op is not None:             # <<<<<<<<<<<<<<
 *         ops = (send_initial_metadata_op,) + ops
 *     await execute_batch(grpc_call_wrapper, ops, loop)
 */
  __pyx_t_4 = (((PyObject *)__pyx_cur_scope->__pyx_v_send_initial_metadata_op) != Py_None);
  __pyx_t_5 = (__pyx_t_4 != 0);
  if (__pyx_t_5) {

    /* "src/python/grpcio/grpc/_cython/_cygrpc/aio/callback_common.pyx.pxi":183
 *     cdef tuple ops = (op,)
 *     if send_initial_metadata_op is not None:
 *         ops = (send_initial_metadata_op,) + ops             # <<<<<<<<<<<<<<
 *     await execute_batch(grpc_call_wrapper, ops, loop)
 */
    __pyx_t_3 = PyTuple_New(1); if (unlikely(!__pyx_t_3)) __PYX_ERR(31, 183, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_3);
    __Pyx_INCREF(((PyObject *)__pyx_cur_scope->__pyx_v_send_initial_metadata_op));
    __Pyx_GIVEREF(((PyObject *)__pyx_cur_scope->__pyx_v_send_initial_metadata_op));
    PyTuple_SET_ITEM(__pyx_t_3, 0, ((PyObject *)__pyx_cur_scope->__pyx_v_send_initial_metadata_op));
    __pyx_t_1 = PyNumber_Add(__pyx_t_3, __pyx_cur_scope->__pyx_v_ops); if (unlikely(!__pyx_t_1)) __PYX_ERR(31, 183, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_1);
    __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
    __Pyx_GOTREF(__pyx_cur_scope->__pyx_v_ops);
    __Pyx_DECREF_SET(__pyx_cur_scope->__pyx_v_ops, ((PyObject*)__pyx_t_1));
    __Pyx_GIVEREF(__pyx_t_1);
    __pyx_t_1 = 0;

    /* "src/python/grpcio/grpc/_cython/_cygrpc/aio/callback_common.pyx.pxi":182
 *     )
 *     cdef tuple ops = (op,)
 *     if send_initial_metadata_op is not None:             # <<<<<<<<<<<<<<
 *         ops = (send_initial_metadata_op,) + ops
 *     await execute_batch(grpc_call_wrapper, ops, loop)
 */
  }

  /* "src/python/grpcio/grpc/_cython/_cygrpc/aio/callback_common.pyx.pxi":184
 *     if send_initial_metadata_op is not None:
 *         ops = (send_initial_metadata_op,) + ops
 *     await execute_batch(grpc_call_wrapper, ops, loop)             # <<<<<<<<<<<<<<
 */
  __Pyx_GetModuleGlobalName(__pyx_t_3, __pyx_n_s_execute_batch); if (unlikely(!__pyx_t_3)) __PYX_ERR(31, 184, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  __pyx_t_2 = NULL;
  __pyx_t_6 = 0;
  if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_3))) {
    __pyx_t_2 = PyMethod_GET_SELF(__pyx_t_3);
    if (likely(__pyx_t_2)) {
      PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_3);
      __Pyx_INCREF(__pyx_t_2);
      __Pyx_INCREF(function);
      __Pyx_DECREF_SET(__pyx_t_3, function);
      __pyx_t_6 = 1;
    }
  }
  #if CYTHON_FAST_PYCALL
  if (PyFunction_Check(__pyx_t_3)) {
    PyObject *__pyx_temp[4] = {__pyx_t_2, ((PyObject *)__pyx_cur_scope->__pyx_v_grpc_call_wrapper), __pyx_cur_scope->__pyx_v_ops, __pyx_cur_scope->__pyx_v_loop};
    __pyx_t_1 = __Pyx_PyFunction_FastCall(__pyx_t_3, __pyx_temp+1-__pyx_t_6, 3+__pyx_t_6); if (unlikely(!__pyx_t_1)) __PYX_ERR(31, 184, __pyx_L1_error)
    __Pyx_XDECREF(__pyx_t_2); __pyx_t_2 = 0;
    __Pyx_GOTREF(__pyx_t_1);
  } else
  #endif
  #if CYTHON_FAST_PYCCALL
  if (__Pyx_PyFastCFunction_Check(__pyx_t_3)) {
    PyObject *__pyx_temp[4] = {__pyx_t_2, ((PyObject *)__pyx_cur_scope->__pyx_v_grpc_call_wrapper), __pyx_cur_scope->__pyx_v_ops, __pyx_cur_scope->__pyx_v_loop};
    __pyx_t_1 = __Pyx_PyCFunction_FastCall(__pyx_t_3, __pyx_temp+1-__pyx_t_6, 3+__pyx_t_6); if (unlikely(!__pyx_t_1)) __PYX_ERR(31, 184, __pyx_L1_error)
    __Pyx_XDECREF(__pyx_t_2); __pyx_t_2 = 0;
    __Pyx_GOTREF(__pyx_t_1);
  } else
  #endif
  {
    __pyx_t_7 = PyTuple_New(3+__pyx_t_6); if (unlikely(!__pyx_t_7)) __PYX_ERR(31, 184, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_7);
    if (__pyx_t_2) {
      __Pyx_GIVEREF(__pyx_t_2); PyTuple_SET_ITEM(__pyx_t_7, 0, __pyx_t_2); __pyx_t_2 = NULL;
    }
    __Pyx_INCREF(((PyObject *)__pyx_cur_scope->__pyx_v_grpc_call_wrapper));
    __Pyx_GIVEREF(((PyObject *)__pyx_cur_scope->__pyx_v_grpc_call_wrapper));
    PyTuple_SET_ITEM(__pyx_t_7, 0+__pyx_t_6, ((PyObject *)__pyx_cur_scope->__pyx_v_grpc_call_wrapper));
    __Pyx_INCREF(__pyx_cur_scope->__pyx_v_ops);
    __Pyx_GIVEREF(__pyx_cur_scope->__pyx_v_ops);
    PyTuple_SET_ITEM(__pyx_t_7, 1+__pyx_t_6, __pyx_cur_scope->__pyx_v_ops);
    __Pyx_INCREF(__pyx_cur_scope->__pyx_v_loop);
    __Pyx_GIVEREF(__pyx_cur_scope->__pyx_v_loop);
    PyTuple_SET_ITEM(__pyx_t_7, 2+__pyx_t_6, __pyx_cur_scope->__pyx_v_loop);
    __pyx_t_1 = __Pyx_PyObject_Call(__pyx_t_3, __pyx_t_7, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(31, 184, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_1);
    __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
  }
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
  __pyx_r = __Pyx_Coroutine_Yield_From(__pyx_generator, __pyx_t_1);
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  __Pyx_XGOTREF(__pyx_r);
  if (likely(__pyx_r)) {
    __Pyx_XGIVEREF(__pyx_r);
    __Pyx_RefNannyFinishContext();
    __Pyx_Coroutine_ResetAndClearException(__pyx_generator);
    /* return from generator, awaiting value */
    __pyx_generator->resume_label = 1;
    return __pyx_r;
    __pyx_L5_resume_from_await:;
    if (unlikely(!__pyx_sent_value)) __PYX_ERR(31, 184, __pyx_L1_error)
  } else {
    PyObject* exc_type = __Pyx_PyErr_Occurred();
    if (exc_type) {
      if (likely(exc_type == PyExc_StopIteration || (exc_type != PyExc_GeneratorExit && __Pyx_PyErr_GivenExceptionMatches(exc_type, PyExc_StopIteration)))) PyErr_Clear();
      else __PYX_ERR(31, 184, __pyx_L1_error)
    }
  }
  CYTHON_MAYBE_UNUSED_VAR(__pyx_cur_scope);

  /* "src/python/grpcio/grpc/_cython/_cygrpc/aio/callback_common.pyx.pxi":168
 *     return op.initial_metadata()
 * 
 * async def _send_error_status_from_server(GrpcCallWrapper grpc_call_wrapper,             # <<<<<<<<<<<<<<
 *                                          grpc_status_code code,
 *                                          str details,
 */

  /* function exit code */
  PyErr_SetNone(PyExc_StopIteration);
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_XDECREF(__pyx_t_3);
  __Pyx_XDECREF(__pyx_t_7);
  __Pyx_AddTraceback("_send_error_status_from_server", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_L0:;
  __Pyx_XDECREF(__pyx_r); __pyx_r = 0;
  #if !CYTHON_USE_EXC_INFO_STACK
  __Pyx_Coroutine_ResetAndClearException(__pyx_generator);
  #endif
  __pyx_generator->resume_label = -1;
  __Pyx_Coroutine_clear((PyObject*)__pyx_generator);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "src/python/grpcio/grpc/_cython/_cygrpc/aio/grpc_aio.pyx.pxi":28
 * 
 * 
 * cdef _default_asyncio_engine():             # <<<<<<<<<<<<<<
 *     return AsyncIOEngine.POLLER
 * 
 */

static PyObject *__pyx_f_4grpc_7_cython_6cygrpc__default_asyncio_engine(void) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  PyObject *__pyx_t_2 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("_default_asyncio_engine", 0);

  /* "src/python/grpcio/grpc/_cython/_cygrpc/aio/grpc_aio.pyx.pxi":29
 * 
 * cdef _default_asyncio_engine():
 *     return AsyncIOEngine.POLLER             # <<<<<<<<<<<<<<
 * 
 * 
 */
  __Pyx_XDECREF(__pyx_r);
  __Pyx_GetModuleGlobalName(__pyx_t_1, __pyx_n_s_AsyncIOEngine); if (unlikely(!__pyx_t_1)) __PYX_ERR(32, 29, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_t_1, __pyx_n_s_POLLER); if (unlikely(!__pyx_t_2)) __PYX_ERR(32, 29, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  __pyx_r = __pyx_t_2;
  __pyx_t_2 = 0;
  goto __pyx_L0;

  /* "src/python/grpcio/grpc/_cython/_cygrpc/aio/grpc_aio.pyx.pxi":28
 * 
 * 
 * cdef _default_asyncio_engine():             # <<<<<<<<<<<<<<
 *     return AsyncIOEngine.POLLER
 * 
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_AddTraceback("grpc._cython.cygrpc._default_asyncio_engine", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = 0;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "src/python/grpcio/grpc/_cython/_cygrpc/aio/grpc_aio.pyx.pxi":32
 * 
 * 
 * cdef grpc_completion_queue *global_completion_queue():             # <<<<<<<<<<<<<<
 *     return _global_aio_state.cq.c_ptr()
 * 
 */

static grpc_completion_queue *__pyx_f_4grpc_7_cython_6cygrpc_global_completion_queue(void) {
  grpc_completion_queue *__pyx_r;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("global_completion_queue", 0);

  /* "src/python/grpcio/grpc/_cython/_cygrpc/aio/grpc_aio.pyx.pxi":33
 * 
 * cdef grpc_completion_queue *global_completion_queue():
 *     return _global_aio_state.cq.c_ptr()             # <<<<<<<<<<<<<<
 * 
 * 
 */
  __pyx_r = ((struct __pyx_vtabstruct_4grpc_7_cython_6cygrpc_BaseCompletionQueue *)__pyx_v_4grpc_7_cython_6cygrpc__global_aio_state->cq->__pyx_vtab)->c_ptr(__pyx_v_4grpc_7_cython_6cygrpc__global_aio_state->cq);
  goto __pyx_L0;

  /* "src/python/grpcio/grpc/_cython/_cygrpc/aio/grpc_aio.pyx.pxi":32
 * 
 * 
 * cdef grpc_completion_queue *global_completion_queue():             # <<<<<<<<<<<<<<
 *     return _global_aio_state.cq.c_ptr()
 * 
 */

  /* function exit code */
  __pyx_L0:;
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "src/python/grpcio/grpc/_cython/_cygrpc/aio/grpc_aio.pyx.pxi":38
 * cdef class _AioState:
 * 
 *     def __cinit__(self):             # <<<<<<<<<<<<<<
 *         self.lock = threading.RLock()
 *         self.refcount = 0
 */

/* Python wrapper */
static int __pyx_pw_4grpc_7_cython_6cygrpc_9_AioState_1__cinit__(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
static int __pyx_pw_4grpc_7_cython_6cygrpc_9_AioState_1__cinit__(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
  int __pyx_r;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__cinit__ (wrapper)", 0);
  if (unlikely(PyTuple_GET_SIZE(__pyx_args) > 0)) {
    __Pyx_RaiseArgtupleInvalid("__cinit__", 1, 0, 0, PyTuple_GET_SIZE(__pyx_args)); return -1;}
  if (unlikely(__pyx_kwds) && unlikely(PyDict_Size(__pyx_kwds) > 0) && unlikely(!__Pyx_CheckKeywordStrings(__pyx_kwds, "__cinit__", 0))) return -1;
  __pyx_r = __pyx_pf_4grpc_7_cython_6cygrpc_9_AioState___cinit__(((struct __pyx_obj_4grpc_7_cython_6cygrpc__AioState *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static int __pyx_pf_4grpc_7_cython_6cygrpc_9_AioState___cinit__(struct __pyx_obj_4grpc_7_cython_6cygrpc__AioState *__pyx_v_self) {
  int __pyx_r;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  PyObject *__pyx_t_2 = NULL;
  PyObject *__pyx_t_3 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("__cinit__", 0);

  /* "src/python/grpcio/grpc/_cython/_cygrpc/aio/grpc_aio.pyx.pxi":39
 * 
 *     def __cinit__(self):
 *         self.lock = threading.RLock()             # <<<<<<<<<<<<<<
 *         self.refcount = 0
 *         self.engine = None
 */
  __Pyx_GetModuleGlobalName(__pyx_t_2, __pyx_n_s_threading); if (unlikely(!__pyx_t_2)) __PYX_ERR(32, 39, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __pyx_t_3 = __Pyx_PyObject_GetAttrStr(__pyx_t_2, __pyx_n_s_RLock); if (unlikely(!__pyx_t_3)) __PYX_ERR(32, 39, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  __pyx_t_2 = NULL;
  if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_3))) {
    __pyx_t_2 = PyMethod_GET_SELF(__pyx_t_3);
    if (likely(__pyx_t_2)) {
      PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_3);
      __Pyx_INCREF(__pyx_t_2);
      __Pyx_INCREF(function);
      __Pyx_DECREF_SET(__pyx_t_3, function);
    }
  }
  __pyx_t_1 = (__pyx_t_2) ? __Pyx_PyObject_CallOneArg(__pyx_t_3, __pyx_t_2) : __Pyx_PyObject_CallNoArg(__pyx_t_3);
  __Pyx_XDECREF(__pyx_t_2); __pyx_t_2 = 0;
  if (unlikely(!__pyx_t_1)) __PYX_ERR(32, 39, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
  __Pyx_GIVEREF(__pyx_t_1);
  __Pyx_GOTREF(__pyx_v_self->lock);
  __Pyx_DECREF(__pyx_v_self->lock);
  __pyx_v_self->lock = __pyx_t_1;
  __pyx_t_1 = 0;

  /* "src/python/grpcio/grpc/_cython/_cygrpc/aio/grpc_aio.pyx.pxi":40
 *     def __cinit__(self):
 *         self.lock = threading.RLock()
 *         self.refcount = 0             # <<<<<<<<<<<<<<
 *         self.engine = None
 *         self.cq = None
 */
  __pyx_v_self->refcount = 0;

  /* "src/python/grpcio/grpc/_cython/_cygrpc/aio/grpc_aio.pyx.pxi":41
 *         self.lock = threading.RLock()
 *         self.refcount = 0
 *         self.engine = None             # <<<<<<<<<<<<<<
 *         self.cq = None
 * 
 */
  __Pyx_INCREF(Py_None);
  __Pyx_GIVEREF(Py_None);
  __Pyx_GOTREF(__pyx_v_self->engine);
  __Pyx_DECREF(__pyx_v_self->engine);
  __pyx_v_self->engine = Py_None;

  /* "src/python/grpcio/grpc/_cython/_cygrpc/aio/grpc_aio.pyx.pxi":42
 *         self.refcount = 0
 *         self.engine = None
 *         self.cq = None             # <<<<<<<<<<<<<<
 * 
 * 
 */
  __Pyx_INCREF(Py_None);
  __Pyx_GIVEREF(Py_None);
  __Pyx_GOTREF(__pyx_v_self->cq);
  __Pyx_DECREF(((PyObject *)__pyx_v_self->cq));
  __pyx_v_self->cq = ((struct __pyx_obj_4grpc_7_cython_6cygrpc_BaseCompletionQueue *)Py_None);

  /* "src/python/grpcio/grpc/_cython/_cygrpc/aio/grpc_aio.pyx.pxi":38
 * cdef class _AioState:
 * 
 *     def __cinit__(self):             # <<<<<<<<<<<<<<
 *         self.lock = threading.RLock()
 *         self.refcount = 0
 */

  /* function exit code */
  __pyx_r = 0;
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_XDECREF(__pyx_t_3);
  __Pyx_AddTraceback("grpc._cython.cygrpc._AioState.__cinit__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = -1;
  __pyx_L0:;
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "(tree fragment)":1
 * def __reduce_cython__(self):             # <<<<<<<<<<<<<<
 *     raise TypeError("no default __reduce__ due to non-trivial __cinit__")
 * def __setstate_cython__(self, __pyx_state):
 */

/* Python wrapper */
static PyObject *__pyx_pw_4grpc_7_cython_6cygrpc_9_AioState_3__reduce_cython__(PyObject *__pyx_v_self, CYTHON_UNUSED PyObject *unused); /*proto*/
static PyObject *__pyx_pw_4grpc_7_cython_6cygrpc_9_AioState_3__reduce_cython__(PyObject *__pyx_v_self, CYTHON_UNUSED PyObject *unused) {
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__reduce_cython__ (wrapper)", 0);
  __pyx_r = __pyx_pf_4grpc_7_cython_6cygrpc_9_AioState_2__reduce_cython__(((struct __pyx_obj_4grpc_7_cython_6cygrpc__AioState *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_4grpc_7_cython_6cygrpc_9_AioState_2__reduce_cython__(CYTHON_UNUSED struct __pyx_obj_4grpc_7_cython_6cygrpc__AioState *__pyx_v_self) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("__reduce_cython__", 0);

  /* "(tree fragment)":2
 * def __reduce_cython__(self):
 *     raise TypeError("no default __reduce__ due to non-trivial __cinit__")             # <<<<<<<<<<<<<<
 * def __setstate_cython__(self, __pyx_state):
 *     raise TypeError("no default __reduce__ due to non-trivial __cinit__")
 */
  __pyx_t_1 = __Pyx_PyObject_Call(__pyx_builtin_TypeError, __pyx_tuple__161, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(11, 2, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_Raise(__pyx_t_1, 0, 0, 0);
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  __PYX_ERR(11, 2, __pyx_L1_error)

  /* "(tree fragment)":1
 * def __reduce_cython__(self):             # <<<<<<<<<<<<<<
 *     raise TypeError("no default __reduce__ due to non-trivial __cinit__")
 * def __setstate_cython__(self, __pyx_state):
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_AddTraceback("grpc._cython.cygrpc._AioState.__reduce_cython__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "(tree fragment)":3
 * def __reduce_cython__(self):
 *     raise TypeError("no default __reduce__ due to non-trivial __cinit__")
 * def __setstate_cython__(self, __pyx_state):             # <<<<<<<<<<<<<<
 *     raise TypeError("no default __reduce__ due to non-trivial __cinit__")
 */

/* Python wrapper */
static PyObject *__pyx_pw_4grpc_7_cython_6cygrpc_9_AioState_5__setstate_cython__(PyObject *__pyx_v_self, PyObject *__pyx_v___pyx_state); /*proto*/
static PyObject *__pyx_pw_4grpc_7_cython_6cygrpc_9_AioState_5__setstate_cython__(PyObject *__pyx_v_self, PyObject *__pyx_v___pyx_state) {
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__setstate_cython__ (wrapper)", 0);
  __pyx_r = __pyx_pf_4grpc_7_cython_6cygrpc_9_AioState_4__setstate_cython__(((struct __pyx_obj_4grpc_7_cython_6cygrpc__AioState *)__pyx_v_self), ((PyObject *)__pyx_v___pyx_state));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_4grpc_7_cython_6cygrpc_9_AioState_4__setstate_cython__(CYTHON_UNUSED struct __pyx_obj_4grpc_7_cython_6cygrpc__AioState *__pyx_v_self, CYTHON_UNUSED PyObject *__pyx_v___pyx_state) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("__setstate_cython__", 0);

  /* "(tree fragment)":4
 *     raise TypeError("no default __reduce__ due to non-trivial __cinit__")
 * def __setstate_cython__(self, __pyx_state):
 *     raise TypeError("no default __reduce__ due to non-trivial __cinit__")             # <<<<<<<<<<<<<<
 */
  __pyx_t_1 = __Pyx_PyObject_Call(__pyx_builtin_TypeError, __pyx_tuple__162, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(11, 4, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_Raise(__pyx_t_1, 0, 0, 0);
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  __PYX_ERR(11, 4, __pyx_L1_error)

  /* "(tree fragment)":3
 * def __reduce_cython__(self):
 *     raise TypeError("no default __reduce__ due to non-trivial __cinit__")
 * def __setstate_cython__(self, __pyx_state):             # <<<<<<<<<<<<<<
 *     raise TypeError("no default __reduce__ due to non-trivial __cinit__")
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_AddTraceback("grpc._cython.cygrpc._AioState.__setstate_cython__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "src/python/grpcio/grpc/_cython/_cygrpc/aio/grpc_aio.pyx.pxi":45
 * 
 * 
 * cdef _initialize_poller():             # <<<<<<<<<<<<<<
 *     # Initializes gRPC Core, must be called before other Core API
 *     grpc_init()
 */

static PyObject *__pyx_f_4grpc_7_cython_6cygrpc__initialize_poller(void) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("_initialize_poller", 0);

  /* "src/python/grpcio/grpc/_cython/_cygrpc/aio/grpc_aio.pyx.pxi":47
 * cdef _initialize_poller():
 *     # Initializes gRPC Core, must be called before other Core API
 *     grpc_init()             # <<<<<<<<<<<<<<
 * 
 *     # Creates the only completion queue
 */
  grpc_init();

  /* "src/python/grpcio/grpc/_cython/_cygrpc/aio/grpc_aio.pyx.pxi":50
 * 
 *     # Creates the only completion queue
 *     _global_aio_state.cq = PollerCompletionQueue()             # <<<<<<<<<<<<<<
 * 
 * 
 */
  __pyx_t_1 = __Pyx_PyObject_CallNoArg(((PyObject *)__pyx_ptype_4grpc_7_cython_6cygrpc_PollerCompletionQueue)); if (unlikely(!__pyx_t_1)) __PYX_ERR(32, 50, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_GIVEREF(__pyx_t_1);
  __Pyx_GOTREF(__pyx_v_4grpc_7_cython_6cygrpc__global_aio_state->cq);
  __Pyx_DECREF(((PyObject *)__pyx_v_4grpc_7_cython_6cygrpc__global_aio_state->cq));
  __pyx_v_4grpc_7_cython_6cygrpc__global_aio_state->cq = ((struct __pyx_obj_4grpc_7_cython_6cygrpc_BaseCompletionQueue *)__pyx_t_1);
  __pyx_t_1 = 0;

  /* "src/python/grpcio/grpc/_cython/_cygrpc/aio/grpc_aio.pyx.pxi":45
 * 
 * 
 * cdef _initialize_poller():             # <<<<<<<<<<<<<<
 *     # Initializes gRPC Core, must be called before other Core API
 *     grpc_init()
 */

  /* function exit code */
  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_AddTraceback("grpc._cython.cygrpc._initialize_poller", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = 0;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "src/python/grpcio/grpc/_cython/_cygrpc/aio/grpc_aio.pyx.pxi":53
 * 
 * 
 * cdef _actual_aio_initialization():             # <<<<<<<<<<<<<<
 *     # Picks the engine for gRPC AsyncIO Stack
 *     _global_aio_state.engine = AsyncIOEngine.__members__.get(
 */

static PyObject *__pyx_f_4grpc_7_cython_6cygrpc__actual_aio_initialization(void) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  PyObject *__pyx_t_2 = NULL;
  PyObject *__pyx_t_3 = NULL;
  PyObject *__pyx_t_4 = NULL;
  int __pyx_t_5;
  PyObject *__pyx_t_6 = NULL;
  int __pyx_t_7;
  int __pyx_t_8;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("_actual_aio_initialization", 0);

  /* "src/python/grpcio/grpc/_cython/_cygrpc/aio/grpc_aio.pyx.pxi":55
 * cdef _actual_aio_initialization():
 *     # Picks the engine for gRPC AsyncIO Stack
 *     _global_aio_state.engine = AsyncIOEngine.__members__.get(             # <<<<<<<<<<<<<<
 *         _GRPC_ASYNCIO_ENGINE,
 *         _default_asyncio_engine(),
 */
  __Pyx_GetModuleGlobalName(__pyx_t_2, __pyx_n_s_AsyncIOEngine); if (unlikely(!__pyx_t_2)) __PYX_ERR(32, 55, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __pyx_t_3 = __Pyx_PyObject_GetAttrStr(__pyx_t_2, __pyx_n_s_members); if (unlikely(!__pyx_t_3)) __PYX_ERR(32, 55, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_t_3, __pyx_n_s_get); if (unlikely(!__pyx_t_2)) __PYX_ERR(32, 55, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;

  /* "src/python/grpcio/grpc/_cython/_cygrpc/aio/grpc_aio.pyx.pxi":57
 *     _global_aio_state.engine = AsyncIOEngine.__members__.get(
 *         _GRPC_ASYNCIO_ENGINE,
 *         _default_asyncio_engine(),             # <<<<<<<<<<<<<<
 *     )
 *     _LOGGER.debug('Using %s as I/O engine', _global_aio_state.engine)
 */
  __pyx_t_3 = __pyx_f_4grpc_7_cython_6cygrpc__default_asyncio_engine(); if (unlikely(!__pyx_t_3)) __PYX_ERR(32, 57, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  __pyx_t_4 = NULL;
  __pyx_t_5 = 0;
  if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_2))) {
    __pyx_t_4 = PyMethod_GET_SELF(__pyx_t_2);
    if (likely(__pyx_t_4)) {
      PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_2);
      __Pyx_INCREF(__pyx_t_4);
      __Pyx_INCREF(function);
      __Pyx_DECREF_SET(__pyx_t_2, function);
      __pyx_t_5 = 1;
    }
  }
  #if CYTHON_FAST_PYCALL
  if (PyFunction_Check(__pyx_t_2)) {
    PyObject *__pyx_temp[3] = {__pyx_t_4, __pyx_v_4grpc_7_cython_6cygrpc__GRPC_ASYNCIO_ENGINE, __pyx_t_3};
    __pyx_t_1 = __Pyx_PyFunction_FastCall(__pyx_t_2, __pyx_temp+1-__pyx_t_5, 2+__pyx_t_5); if (unlikely(!__pyx_t_1)) __PYX_ERR(32, 55, __pyx_L1_error)
    __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0;
    __Pyx_GOTREF(__pyx_t_1);
    __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
  } else
  #endif
  #if CYTHON_FAST_PYCCALL
  if (__Pyx_PyFastCFunction_Check(__pyx_t_2)) {
    PyObject *__pyx_temp[3] = {__pyx_t_4, __pyx_v_4grpc_7_cython_6cygrpc__GRPC_ASYNCIO_ENGINE, __pyx_t_3};
    __pyx_t_1 = __Pyx_PyCFunction_FastCall(__pyx_t_2, __pyx_temp+1-__pyx_t_5, 2+__pyx_t_5); if (unlikely(!__pyx_t_1)) __PYX_ERR(32, 55, __pyx_L1_error)
    __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0;
    __Pyx_GOTREF(__pyx_t_1);
    __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
  } else
  #endif
  {
    __pyx_t_6 = PyTuple_New(2+__pyx_t_5); if (unlikely(!__pyx_t_6)) __PYX_ERR(32, 55, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_6);
    if (__pyx_t_4) {
      __Pyx_GIVEREF(__pyx_t_4); PyTuple_SET_ITEM(__pyx_t_6, 0, __pyx_t_4); __pyx_t_4 = NULL;
    }
    __Pyx_INCREF(__pyx_v_4grpc_7_cython_6cygrpc__GRPC_ASYNCIO_ENGINE);
    __Pyx_GIVEREF(__pyx_v_4grpc_7_cython_6cygrpc__GRPC_ASYNCIO_ENGINE);
    PyTuple_SET_ITEM(__pyx_t_6, 0+__pyx_t_5, __pyx_v_4grpc_7_cython_6cygrpc__GRPC_ASYNCIO_ENGINE);
    __Pyx_GIVEREF(__pyx_t_3);
    PyTuple_SET_ITEM(__pyx_t_6, 1+__pyx_t_5, __pyx_t_3);
    __pyx_t_3 = 0;
    __pyx_t_1 = __Pyx_PyObject_Call(__pyx_t_2, __pyx_t_6, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(32, 55, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_1);
    __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
  }
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;

  /* "src/python/grpcio/grpc/_cython/_cygrpc/aio/grpc_aio.pyx.pxi":55
 * cdef _actual_aio_initialization():
 *     # Picks the engine for gRPC AsyncIO Stack
 *     _global_aio_state.engine = AsyncIOEngine.__members__.get(             # <<<<<<<<<<<<<<
 *         _GRPC_ASYNCIO_ENGINE,
 *         _default_asyncio_engine(),
 */
  __Pyx_GIVEREF(__pyx_t_1);
  __Pyx_GOTREF(__pyx_v_4grpc_7_cython_6cygrpc__global_aio_state->engine);
  __Pyx_DECREF(__pyx_v_4grpc_7_cython_6cygrpc__global_aio_state->engine);
  __pyx_v_4grpc_7_cython_6cygrpc__global_aio_state->engine = __pyx_t_1;
  __pyx_t_1 = 0;

  /* "src/python/grpcio/grpc/_cython/_cygrpc/aio/grpc_aio.pyx.pxi":59
 *         _default_asyncio_engine(),
 *     )
 *     _LOGGER.debug('Using %s as I/O engine', _global_aio_state.engine)             # <<<<<<<<<<<<<<
 * 
 *     # Initializes the process-level state accordingly
 */
  __Pyx_GetModuleGlobalName(__pyx_t_2, __pyx_n_s_LOGGER); if (unlikely(!__pyx_t_2)) __PYX_ERR(32, 59, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __pyx_t_6 = __Pyx_PyObject_GetAttrStr(__pyx_t_2, __pyx_n_s_debug); if (unlikely(!__pyx_t_6)) __PYX_ERR(32, 59, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_6);
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  __pyx_t_2 = NULL;
  __pyx_t_5 = 0;
  if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_6))) {
    __pyx_t_2 = PyMethod_GET_SELF(__pyx_t_6);
    if (likely(__pyx_t_2)) {
      PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_6);
      __Pyx_INCREF(__pyx_t_2);
      __Pyx_INCREF(function);
      __Pyx_DECREF_SET(__pyx_t_6, function);
      __pyx_t_5 = 1;
    }
  }
  #if CYTHON_FAST_PYCALL
  if (PyFunction_Check(__pyx_t_6)) {
    PyObject *__pyx_temp[3] = {__pyx_t_2, __pyx_kp_s_Using_s_as_I_O_engine, __pyx_v_4grpc_7_cython_6cygrpc__global_aio_state->engine};
    __pyx_t_1 = __Pyx_PyFunction_FastCall(__pyx_t_6, __pyx_temp+1-__pyx_t_5, 2+__pyx_t_5); if (unlikely(!__pyx_t_1)) __PYX_ERR(32, 59, __pyx_L1_error)
    __Pyx_XDECREF(__pyx_t_2); __pyx_t_2 = 0;
    __Pyx_GOTREF(__pyx_t_1);
  } else
  #endif
  #if CYTHON_FAST_PYCCALL
  if (__Pyx_PyFastCFunction_Check(__pyx_t_6)) {
    PyObject *__pyx_temp[3] = {__pyx_t_2, __pyx_kp_s_Using_s_as_I_O_engine, __pyx_v_4grpc_7_cython_6cygrpc__global_aio_state->engine};
    __pyx_t_1 = __Pyx_PyCFunction_FastCall(__pyx_t_6, __pyx_temp+1-__pyx_t_5, 2+__pyx_t_5); if (unlikely(!__pyx_t_1)) __PYX_ERR(32, 59, __pyx_L1_error)
    __Pyx_XDECREF(__pyx_t_2); __pyx_t_2 = 0;
    __Pyx_GOTREF(__pyx_t_1);
  } else
  #endif
  {
    __pyx_t_3 = PyTuple_New(2+__pyx_t_5); if (unlikely(!__pyx_t_3)) __PYX_ERR(32, 59, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_3);
    if (__pyx_t_2) {
      __Pyx_GIVEREF(__pyx_t_2); PyTuple_SET_ITEM(__pyx_t_3, 0, __pyx_t_2); __pyx_t_2 = NULL;
    }
    __Pyx_INCREF(__pyx_kp_s_Using_s_as_I_O_engine);
    __Pyx_GIVEREF(__pyx_kp_s_Using_s_as_I_O_engine);
    PyTuple_SET_ITEM(__pyx_t_3, 0+__pyx_t_5, __pyx_kp_s_Using_s_as_I_O_engine);
    __Pyx_INCREF(__pyx_v_4grpc_7_cython_6cygrpc__global_aio_state->engine);
    __Pyx_GIVEREF(__pyx_v_4grpc_7_cython_6cygrpc__global_aio_state->engine);
    PyTuple_SET_ITEM(__pyx_t_3, 1+__pyx_t_5, __pyx_v_4grpc_7_cython_6cygrpc__global_aio_state->engine);
    __pyx_t_1 = __Pyx_PyObject_Call(__pyx_t_6, __pyx_t_3, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(32, 59, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_1);
    __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
  }
  __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;

  /* "src/python/grpcio/grpc/_cython/_cygrpc/aio/grpc_aio.pyx.pxi":62
 * 
 *     # Initializes the process-level state accordingly
 *     if _global_aio_state.engine is AsyncIOEngine.POLLER:             # <<<<<<<<<<<<<<
 *         _initialize_poller()
 *     else:
 */
  __Pyx_GetModuleGlobalName(__pyx_t_1, __pyx_n_s_AsyncIOEngine); if (unlikely(!__pyx_t_1)) __PYX_ERR(32, 62, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_t_6 = __Pyx_PyObject_GetAttrStr(__pyx_t_1, __pyx_n_s_POLLER); if (unlikely(!__pyx_t_6)) __PYX_ERR(32, 62, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_6);
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  __pyx_t_7 = (__pyx_v_4grpc_7_cython_6cygrpc__global_aio_state->engine == __pyx_t_6);
  __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
  __pyx_t_8 = (__pyx_t_7 != 0);
  if (likely(__pyx_t_8)) {

    /* "src/python/grpcio/grpc/_cython/_cygrpc/aio/grpc_aio.pyx.pxi":63
 *     # Initializes the process-level state accordingly
 *     if _global_aio_state.engine is AsyncIOEngine.POLLER:
 *         _initialize_poller()             # <<<<<<<<<<<<<<
 *     else:
 *         raise ValueError('Unsupported engine type [%s]' % _global_aio_state.engine)
 */
    __pyx_t_6 = __pyx_f_4grpc_7_cython_6cygrpc__initialize_poller(); if (unlikely(!__pyx_t_6)) __PYX_ERR(32, 63, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_6);
    __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;

    /* "src/python/grpcio/grpc/_cython/_cygrpc/aio/grpc_aio.pyx.pxi":62
 * 
 *     # Initializes the process-level state accordingly
 *     if _global_aio_state.engine is AsyncIOEngine.POLLER:             # <<<<<<<<<<<<<<
 *         _initialize_poller()
 *     else:
 */
    goto __pyx_L3;
  }

  /* "src/python/grpcio/grpc/_cython/_cygrpc/aio/grpc_aio.pyx.pxi":65
 *         _initialize_poller()
 *     else:
 *         raise ValueError('Unsupported engine type [%s]' % _global_aio_state.engine)             # <<<<<<<<<<<<<<
 * 
 * 
 */
  /*else*/ {
    __pyx_t_6 = __Pyx_PyString_FormatSafe(__pyx_kp_s_Unsupported_engine_type_s, __pyx_v_4grpc_7_cython_6cygrpc__global_aio_state->engine); if (unlikely(!__pyx_t_6)) __PYX_ERR(32, 65, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_6);
    __pyx_t_1 = __Pyx_PyObject_CallOneArg(__pyx_builtin_ValueError, __pyx_t_6); if (unlikely(!__pyx_t_1)) __PYX_ERR(32, 65, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_1);
    __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
    __Pyx_Raise(__pyx_t_1, 0, 0, 0);
    __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
    __PYX_ERR(32, 65, __pyx_L1_error)
  }
  __pyx_L3:;

  /* "src/python/grpcio/grpc/_cython/_cygrpc/aio/grpc_aio.pyx.pxi":53
 * 
 * 
 * cdef _actual_aio_initialization():             # <<<<<<<<<<<<<<
 *     # Picks the engine for gRPC AsyncIO Stack
 *     _global_aio_state.engine = AsyncIOEngine.__members__.get(
 */

  /* function exit code */
  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_XDECREF(__pyx_t_3);
  __Pyx_XDECREF(__pyx_t_4);
  __Pyx_XDECREF(__pyx_t_6);
  __Pyx_AddTraceback("grpc._cython.cygrpc._actual_aio_initialization", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = 0;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "src/python/grpcio/grpc/_cython/_cygrpc/aio/grpc_aio.pyx.pxi":68
 * 
 * 
 * def _grpc_shutdown_wrapper(_):             # <<<<<<<<<<<<<<
 *     """A thin Python wrapper of Core's shutdown function.
 * 
 */

/* Python wrapper */
static PyObject *__pyx_pw_4grpc_7_cython_6cygrpc_139_grpc_shutdown_wrapper(PyObject *__pyx_self, PyObject *__pyx_v__); /*proto*/
static char __pyx_doc_4grpc_7_cython_6cygrpc_138_grpc_shutdown_wrapper[] = "A thin Python wrapper of Core's shutdown function.\n\n    Define functions are not allowed in \"cdef\" functions, and Cython complains\n    about a simple lambda with a C function.\n    ";
static PyMethodDef __pyx_mdef_4grpc_7_cython_6cygrpc_139_grpc_shutdown_wrapper = {"_grpc_shutdown_wrapper", (PyCFunction)__pyx_pw_4grpc_7_cython_6cygrpc_139_grpc_shutdown_wrapper, METH_O, __pyx_doc_4grpc_7_cython_6cygrpc_138_grpc_shutdown_wrapper};
static PyObject *__pyx_pw_4grpc_7_cython_6cygrpc_139_grpc_shutdown_wrapper(PyObject *__pyx_self, PyObject *__pyx_v__) {
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("_grpc_shutdown_wrapper (wrapper)", 0);
  __pyx_r = __pyx_pf_4grpc_7_cython_6cygrpc_138_grpc_shutdown_wrapper(__pyx_self, ((PyObject *)__pyx_v__));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_4grpc_7_cython_6cygrpc_138_grpc_shutdown_wrapper(CYTHON_UNUSED PyObject *__pyx_self, CYTHON_UNUSED PyObject *__pyx_v__) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("_grpc_shutdown_wrapper", 0);

  /* "src/python/grpcio/grpc/_cython/_cygrpc/aio/grpc_aio.pyx.pxi":74
 *     about a simple lambda with a C function.
 *     """
 *     grpc_shutdown()             # <<<<<<<<<<<<<<
 * 
 * 
 */
  grpc_shutdown();

  /* "src/python/grpcio/grpc/_cython/_cygrpc/aio/grpc_aio.pyx.pxi":68
 * 
 * 
 * def _grpc_shutdown_wrapper(_):             # <<<<<<<<<<<<<<
 *     """A thin Python wrapper of Core's shutdown function.
 * 
 */

  /* function exit code */
  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "src/python/grpcio/grpc/_cython/_cygrpc/aio/grpc_aio.pyx.pxi":77
 * 
 * 
 * cdef _actual_aio_shutdown():             # <<<<<<<<<<<<<<
 *     if _global_aio_state.engine is AsyncIOEngine.POLLER:
 *         (<PollerCompletionQueue>_global_aio_state.cq).shutdown()
 */

static PyObject *__pyx_f_4grpc_7_cython_6cygrpc__actual_aio_shutdown(void) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  PyObject *__pyx_t_2 = NULL;
  int __pyx_t_3;
  int __pyx_t_4;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("_actual_aio_shutdown", 0);

  /* "src/python/grpcio/grpc/_cython/_cygrpc/aio/grpc_aio.pyx.pxi":78
 * 
 * cdef _actual_aio_shutdown():
 *     if _global_aio_state.engine is AsyncIOEngine.POLLER:             # <<<<<<<<<<<<<<
 *         (<PollerCompletionQueue>_global_aio_state.cq).shutdown()
 *         grpc_shutdown()
 */
  __Pyx_GetModuleGlobalName(__pyx_t_1, __pyx_n_s_AsyncIOEngine); if (unlikely(!__pyx_t_1)) __PYX_ERR(32, 78, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_t_1, __pyx_n_s_POLLER); if (unlikely(!__pyx_t_2)) __PYX_ERR(32, 78, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  __pyx_t_3 = (__pyx_v_4grpc_7_cython_6cygrpc__global_aio_state->engine == __pyx_t_2);
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  __pyx_t_4 = (__pyx_t_3 != 0);
  if (likely(__pyx_t_4)) {

    /* "src/python/grpcio/grpc/_cython/_cygrpc/aio/grpc_aio.pyx.pxi":79
 * cdef _actual_aio_shutdown():
 *     if _global_aio_state.engine is AsyncIOEngine.POLLER:
 *         (<PollerCompletionQueue>_global_aio_state.cq).shutdown()             # <<<<<<<<<<<<<<
 *         grpc_shutdown()
 *     else:
 */
    __pyx_t_2 = ((struct __pyx_vtabstruct_4grpc_7_cython_6cygrpc_PollerCompletionQueue *)((struct __pyx_obj_4grpc_7_cython_6cygrpc_PollerCompletionQueue *)__pyx_v_4grpc_7_cython_6cygrpc__global_aio_state->cq)->__pyx_base.__pyx_vtab)->shutdown(((struct __pyx_obj_4grpc_7_cython_6cygrpc_PollerCompletionQueue *)__pyx_v_4grpc_7_cython_6cygrpc__global_aio_state->cq)); if (unlikely(!__pyx_t_2)) __PYX_ERR(32, 79, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_2);
    __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;

    /* "src/python/grpcio/grpc/_cython/_cygrpc/aio/grpc_aio.pyx.pxi":80
 *     if _global_aio_state.engine is AsyncIOEngine.POLLER:
 *         (<PollerCompletionQueue>_global_aio_state.cq).shutdown()
 *         grpc_shutdown()             # <<<<<<<<<<<<<<
 *     else:
 *         raise ValueError('Unsupported engine type [%s]' % _global_aio_state.engine)
 */
    grpc_shutdown();

    /* "src/python/grpcio/grpc/_cython/_cygrpc/aio/grpc_aio.pyx.pxi":78
 * 
 * cdef _actual_aio_shutdown():
 *     if _global_aio_state.engine is AsyncIOEngine.POLLER:             # <<<<<<<<<<<<<<
 *         (<PollerCompletionQueue>_global_aio_state.cq).shutdown()
 *         grpc_shutdown()
 */
    goto __pyx_L3;
  }

  /* "src/python/grpcio/grpc/_cython/_cygrpc/aio/grpc_aio.pyx.pxi":82
 *         grpc_shutdown()
 *     else:
 *         raise ValueError('Unsupported engine type [%s]' % _global_aio_state.engine)             # <<<<<<<<<<<<<<
 * 
 * 
 */
  /*else*/ {
    __pyx_t_2 = __Pyx_PyString_FormatSafe(__pyx_kp_s_Unsupported_engine_type_s, __pyx_v_4grpc_7_cython_6cygrpc__global_aio_state->engine); if (unlikely(!__pyx_t_2)) __PYX_ERR(32, 82, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_2);
    __pyx_t_1 = __Pyx_PyObject_CallOneArg(__pyx_builtin_ValueError, __pyx_t_2); if (unlikely(!__pyx_t_1)) __PYX_ERR(32, 82, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_1);
    __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
    __Pyx_Raise(__pyx_t_1, 0, 0, 0);
    __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
    __PYX_ERR(32, 82, __pyx_L1_error)
  }
  __pyx_L3:;

  /* "src/python/grpcio/grpc/_cython/_cygrpc/aio/grpc_aio.pyx.pxi":77
 * 
 * 
 * cdef _actual_aio_shutdown():             # <<<<<<<<<<<<<<
 *     if _global_aio_state.engine is AsyncIOEngine.POLLER:
 *         (<PollerCompletionQueue>_global_aio_state.cq).shutdown()
 */

  /* function exit code */
  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_AddTraceback("grpc._cython.cygrpc._actual_aio_shutdown", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = 0;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "src/python/grpcio/grpc/_cython/_cygrpc/aio/grpc_aio.pyx.pxi":85
 * 
 * 
 * cdef _initialize_per_loop():             # <<<<<<<<<<<<<<
 *     cdef object loop = get_working_loop()
 *     if _global_aio_state.engine is AsyncIOEngine.POLLER:
 */

static PyObject *__pyx_f_4grpc_7_cython_6cygrpc__initialize_per_loop(void) {
  PyObject *__pyx_v_loop = 0;
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  PyObject *__pyx_t_2 = NULL;
  PyObject *__pyx_t_3 = NULL;
  int __pyx_t_4;
  int __pyx_t_5;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("_initialize_per_loop", 0);

  /* "src/python/grpcio/grpc/_cython/_cygrpc/aio/grpc_aio.pyx.pxi":86
 * 
 * cdef _initialize_per_loop():
 *     cdef object loop = get_working_loop()             # <<<<<<<<<<<<<<
 *     if _global_aio_state.engine is AsyncIOEngine.POLLER:
 *         _global_aio_state.cq.bind_loop(loop)
 */
  __Pyx_GetModuleGlobalName(__pyx_t_2, __pyx_n_s_get_working_loop); if (unlikely(!__pyx_t_2)) __PYX_ERR(32, 86, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __pyx_t_3 = NULL;
  if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_2))) {
    __pyx_t_3 = PyMethod_GET_SELF(__pyx_t_2);
    if (likely(__pyx_t_3)) {
      PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_2);
      __Pyx_INCREF(__pyx_t_3);
      __Pyx_INCREF(function);
      __Pyx_DECREF_SET(__pyx_t_2, function);
    }
  }
  __pyx_t_1 = (__pyx_t_3) ? __Pyx_PyObject_CallOneArg(__pyx_t_2, __pyx_t_3) : __Pyx_PyObject_CallNoArg(__pyx_t_2);
  __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0;
  if (unlikely(!__pyx_t_1)) __PYX_ERR(32, 86, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  __pyx_v_loop = __pyx_t_1;
  __pyx_t_1 = 0;

  /* "src/python/grpcio/grpc/_cython/_cygrpc/aio/grpc_aio.pyx.pxi":87
 * cdef _initialize_per_loop():
 *     cdef object loop = get_working_loop()
 *     if _global_aio_state.engine is AsyncIOEngine.POLLER:             # <<<<<<<<<<<<<<
 *         _global_aio_state.cq.bind_loop(loop)
 * 
 */
  __Pyx_GetModuleGlobalName(__pyx_t_1, __pyx_n_s_AsyncIOEngine); if (unlikely(!__pyx_t_1)) __PYX_ERR(32, 87, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_t_1, __pyx_n_s_POLLER); if (unlikely(!__pyx_t_2)) __PYX_ERR(32, 87, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  __pyx_t_4 = (__pyx_v_4grpc_7_cython_6cygrpc__global_aio_state->engine == __pyx_t_2);
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  __pyx_t_5 = (__pyx_t_4 != 0);
  if (__pyx_t_5) {

    /* "src/python/grpcio/grpc/_cython/_cygrpc/aio/grpc_aio.pyx.pxi":88
 *     cdef object loop = get_working_loop()
 *     if _global_aio_state.engine is AsyncIOEngine.POLLER:
 *         _global_aio_state.cq.bind_loop(loop)             # <<<<<<<<<<<<<<
 * 
 * 
 */
    __pyx_t_1 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_4grpc_7_cython_6cygrpc__global_aio_state->cq), __pyx_n_s_bind_loop); if (unlikely(!__pyx_t_1)) __PYX_ERR(32, 88, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_1);
    __pyx_t_3 = NULL;
    if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_1))) {
      __pyx_t_3 = PyMethod_GET_SELF(__pyx_t_1);
      if (likely(__pyx_t_3)) {
        PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_1);
        __Pyx_INCREF(__pyx_t_3);
        __Pyx_INCREF(function);
        __Pyx_DECREF_SET(__pyx_t_1, function);
      }
    }
    __pyx_t_2 = (__pyx_t_3) ? __Pyx_PyObject_Call2Args(__pyx_t_1, __pyx_t_3, __pyx_v_loop) : __Pyx_PyObject_CallOneArg(__pyx_t_1, __pyx_v_loop);
    __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0;
    if (unlikely(!__pyx_t_2)) __PYX_ERR(32, 88, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_2);
    __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
    __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;

    /* "src/python/grpcio/grpc/_cython/_cygrpc/aio/grpc_aio.pyx.pxi":87
 * cdef _initialize_per_loop():
 *     cdef object loop = get_working_loop()
 *     if _global_aio_state.engine is AsyncIOEngine.POLLER:             # <<<<<<<<<<<<<<
 *         _global_aio_state.cq.bind_loop(loop)
 * 
 */
  }

  /* "src/python/grpcio/grpc/_cython/_cygrpc/aio/grpc_aio.pyx.pxi":85
 * 
 * 
 * cdef _initialize_per_loop():             # <<<<<<<<<<<<<<
 *     cdef object loop = get_working_loop()
 *     if _global_aio_state.engine is AsyncIOEngine.POLLER:
 */

  /* function exit code */
  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_XDECREF(__pyx_t_3);
  __Pyx_AddTraceback("grpc._cython.cygrpc._initialize_per_loop", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = 0;
  __pyx_L0:;
  __Pyx_XDECREF(__pyx_v_loop);
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "src/python/grpcio/grpc/_cython/_cygrpc/aio/grpc_aio.pyx.pxi":91
 * 
 * 
 * cpdef init_grpc_aio():             # <<<<<<<<<<<<<<
 *     """Initializes the gRPC AsyncIO module.
 * 
 */

static PyObject *__pyx_pw_4grpc_7_cython_6cygrpc_141init_grpc_aio(PyObject *__pyx_self, CYTHON_UNUSED PyObject *unused); /*proto*/
static PyObject *__pyx_f_4grpc_7_cython_6cygrpc_init_grpc_aio(CYTHON_UNUSED int __pyx_skip_dispatch) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  PyObject *__pyx_t_2 = NULL;
  PyObject *__pyx_t_3 = NULL;
  PyObject *__pyx_t_4 = NULL;
  PyObject *__pyx_t_5 = NULL;
  PyObject *__pyx_t_6 = NULL;
  PyObject *__pyx_t_7 = NULL;
  int __pyx_t_8;
  PyObject *__pyx_t_9 = NULL;
  PyObject *__pyx_t_10 = NULL;
  int __pyx_t_11;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("init_grpc_aio", 0);

  /* "src/python/grpcio/grpc/_cython/_cygrpc/aio/grpc_aio.pyx.pxi":97
 *     E.g., AioChannel, AioServer.
 *     """
 *     with _global_aio_state.lock:             # <<<<<<<<<<<<<<
 *         _global_aio_state.refcount += 1
 *         if _global_aio_state.refcount == 1:
 */
  /*with:*/ {
    __pyx_t_1 = __Pyx_PyObject_LookupSpecial(__pyx_v_4grpc_7_cython_6cygrpc__global_aio_state->lock, __pyx_n_s_exit); if (unlikely(!__pyx_t_1)) __PYX_ERR(32, 97, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_1);
    __pyx_t_3 = __Pyx_PyObject_LookupSpecial(__pyx_v_4grpc_7_cython_6cygrpc__global_aio_state->lock, __pyx_n_s_enter); if (unlikely(!__pyx_t_3)) __PYX_ERR(32, 97, __pyx_L3_error)
    __Pyx_GOTREF(__pyx_t_3);
    __pyx_t_4 = NULL;
    if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_3))) {
      __pyx_t_4 = PyMethod_GET_SELF(__pyx_t_3);
      if (likely(__pyx_t_4)) {
        PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_3);
        __Pyx_INCREF(__pyx_t_4);
        __Pyx_INCREF(function);
        __Pyx_DECREF_SET(__pyx_t_3, function);
      }
    }
    __pyx_t_2 = (__pyx_t_4) ? __Pyx_PyObject_CallOneArg(__pyx_t_3, __pyx_t_4) : __Pyx_PyObject_CallNoArg(__pyx_t_3);
    __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0;
    if (unlikely(!__pyx_t_2)) __PYX_ERR(32, 97, __pyx_L3_error)
    __Pyx_GOTREF(__pyx_t_2);
    __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
    __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
    /*try:*/ {
      {
        __Pyx_PyThreadState_declare
        __Pyx_PyThreadState_assign
        __Pyx_ExceptionSave(&__pyx_t_5, &__pyx_t_6, &__pyx_t_7);
        __Pyx_XGOTREF(__pyx_t_5);
        __Pyx_XGOTREF(__pyx_t_6);
        __Pyx_XGOTREF(__pyx_t_7);
        /*try:*/ {

          /* "src/python/grpcio/grpc/_cython/_cygrpc/aio/grpc_aio.pyx.pxi":98
 *     """
 *     with _global_aio_state.lock:
 *         _global_aio_state.refcount += 1             # <<<<<<<<<<<<<<
 *         if _global_aio_state.refcount == 1:
 *             _actual_aio_initialization()
 */
          __pyx_v_4grpc_7_cython_6cygrpc__global_aio_state->refcount = (__pyx_v_4grpc_7_cython_6cygrpc__global_aio_state->refcount + 1);

          /* "src/python/grpcio/grpc/_cython/_cygrpc/aio/grpc_aio.pyx.pxi":99
 *     with _global_aio_state.lock:
 *         _global_aio_state.refcount += 1
 *         if _global_aio_state.refcount == 1:             # <<<<<<<<<<<<<<
 *             _actual_aio_initialization()
 *         _initialize_per_loop()
 */
          __pyx_t_8 = ((__pyx_v_4grpc_7_cython_6cygrpc__global_aio_state->refcount == 1) != 0);
          if (__pyx_t_8) {

            /* "src/python/grpcio/grpc/_cython/_cygrpc/aio/grpc_aio.pyx.pxi":100
 *         _global_aio_state.refcount += 1
 *         if _global_aio_state.refcount == 1:
 *             _actual_aio_initialization()             # <<<<<<<<<<<<<<
 *         _initialize_per_loop()
 * 
 */
            __pyx_t_2 = __pyx_f_4grpc_7_cython_6cygrpc__actual_aio_initialization(); if (unlikely(!__pyx_t_2)) __PYX_ERR(32, 100, __pyx_L7_error)
            __Pyx_GOTREF(__pyx_t_2);
            __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;

            /* "src/python/grpcio/grpc/_cython/_cygrpc/aio/grpc_aio.pyx.pxi":99
 *     with _global_aio_state.lock:
 *         _global_aio_state.refcount += 1
 *         if _global_aio_state.refcount == 1:             # <<<<<<<<<<<<<<
 *             _actual_aio_initialization()
 *         _initialize_per_loop()
 */
          }

          /* "src/python/grpcio/grpc/_cython/_cygrpc/aio/grpc_aio.pyx.pxi":101
 *         if _global_aio_state.refcount == 1:
 *             _actual_aio_initialization()
 *         _initialize_per_loop()             # <<<<<<<<<<<<<<
 * 
 * 
 */
          __pyx_t_2 = __pyx_f_4grpc_7_cython_6cygrpc__initialize_per_loop(); if (unlikely(!__pyx_t_2)) __PYX_ERR(32, 101, __pyx_L7_error)
          __Pyx_GOTREF(__pyx_t_2);
          __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;

          /* "src/python/grpcio/grpc/_cython/_cygrpc/aio/grpc_aio.pyx.pxi":97
 *     E.g., AioChannel, AioServer.
 *     """
 *     with _global_aio_state.lock:             # <<<<<<<<<<<<<<
 *         _global_aio_state.refcount += 1
 *         if _global_aio_state.refcount == 1:
 */
        }
        __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0;
        __Pyx_XDECREF(__pyx_t_6); __pyx_t_6 = 0;
        __Pyx_XDECREF(__pyx_t_7); __pyx_t_7 = 0;
        goto __pyx_L12_try_end;
        __pyx_L7_error:;
        __Pyx_XDECREF(__pyx_t_2); __pyx_t_2 = 0;
        __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0;
        __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0;
        /*except:*/ {
          __Pyx_AddTraceback("grpc._cython.cygrpc.init_grpc_aio", __pyx_clineno, __pyx_lineno, __pyx_filename);
          if (__Pyx_GetException(&__pyx_t_2, &__pyx_t_3, &__pyx_t_4) < 0) __PYX_ERR(32, 97, __pyx_L9_except_error)
          __Pyx_GOTREF(__pyx_t_2);
          __Pyx_GOTREF(__pyx_t_3);
          __Pyx_GOTREF(__pyx_t_4);
          __pyx_t_9 = PyTuple_Pack(3, __pyx_t_2, __pyx_t_3, __pyx_t_4); if (unlikely(!__pyx_t_9)) __PYX_ERR(32, 97, __pyx_L9_except_error)
          __Pyx_GOTREF(__pyx_t_9);
          __pyx_t_10 = __Pyx_PyObject_Call(__pyx_t_1, __pyx_t_9, NULL);
          __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
          __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0;
          if (unlikely(!__pyx_t_10)) __PYX_ERR(32, 97, __pyx_L9_except_error)
          __Pyx_GOTREF(__pyx_t_10);
          __pyx_t_8 = __Pyx_PyObject_IsTrue(__pyx_t_10);
          __Pyx_DECREF(__pyx_t_10); __pyx_t_10 = 0;
          if (__pyx_t_8 < 0) __PYX_ERR(32, 97, __pyx_L9_except_error)
          __pyx_t_11 = ((!(__pyx_t_8 != 0)) != 0);
          if (__pyx_t_11) {
            __Pyx_GIVEREF(__pyx_t_2);
            __Pyx_GIVEREF(__pyx_t_3);
            __Pyx_XGIVEREF(__pyx_t_4);
            __Pyx_ErrRestoreWithState(__pyx_t_2, __pyx_t_3, __pyx_t_4);
            __pyx_t_2 = 0; __pyx_t_3 = 0; __pyx_t_4 = 0; 
            __PYX_ERR(32, 97, __pyx_L9_except_error)
          }
          __Pyx_XDECREF(__pyx_t_2); __pyx_t_2 = 0;
          __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0;
          __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0;
          goto __pyx_L8_exception_handled;
        }
        __pyx_L9_except_error:;
        __Pyx_XGIVEREF(__pyx_t_5);
        __Pyx_XGIVEREF(__pyx_t_6);
        __Pyx_XGIVEREF(__pyx_t_7);
        __Pyx_ExceptionReset(__pyx_t_5, __pyx_t_6, __pyx_t_7);
        goto __pyx_L1_error;
        __pyx_L8_exception_handled:;
        __Pyx_XGIVEREF(__pyx_t_5);
        __Pyx_XGIVEREF(__pyx_t_6);
        __Pyx_XGIVEREF(__pyx_t_7);
        __Pyx_ExceptionReset(__pyx_t_5, __pyx_t_6, __pyx_t_7);
        __pyx_L12_try_end:;
      }
    }
    /*finally:*/ {
      /*normal exit:*/{
        if (__pyx_t_1) {
          __pyx_t_7 = __Pyx_PyObject_Call(__pyx_t_1, __pyx_tuple__17, NULL);
          __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
          if (unlikely(!__pyx_t_7)) __PYX_ERR(32, 97, __pyx_L1_error)
          __Pyx_GOTREF(__pyx_t_7);
          __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
        }
        goto __pyx_L6;
      }
      __pyx_L6:;
    }
    goto __pyx_L17;
    __pyx_L3_error:;
    __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
    goto __pyx_L1_error;
    __pyx_L17:;
  }

  /* "src/python/grpcio/grpc/_cython/_cygrpc/aio/grpc_aio.pyx.pxi":91
 * 
 * 
 * cpdef init_grpc_aio():             # <<<<<<<<<<<<<<
 *     """Initializes the gRPC AsyncIO module.
 * 
 */

  /* function exit code */
  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_XDECREF(__pyx_t_3);
  __Pyx_XDECREF(__pyx_t_4);
  __Pyx_XDECREF(__pyx_t_9);
  __Pyx_AddTraceback("grpc._cython.cygrpc.init_grpc_aio", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = 0;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* Python wrapper */
static PyObject *__pyx_pw_4grpc_7_cython_6cygrpc_141init_grpc_aio(PyObject *__pyx_self, CYTHON_UNUSED PyObject *unused); /*proto*/
static char __pyx_doc_4grpc_7_cython_6cygrpc_140init_grpc_aio[] = "Initializes the gRPC AsyncIO module.\n\n    Expected to be invoked on critical class constructors.\n    E.g., AioChannel, AioServer.\n    ";
static PyObject *__pyx_pw_4grpc_7_cython_6cygrpc_141init_grpc_aio(PyObject *__pyx_self, CYTHON_UNUSED PyObject *unused) {
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("init_grpc_aio (wrapper)", 0);
  __pyx_r = __pyx_pf_4grpc_7_cython_6cygrpc_140init_grpc_aio(__pyx_self);

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_4grpc_7_cython_6cygrpc_140init_grpc_aio(CYTHON_UNUSED PyObject *__pyx_self) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("init_grpc_aio", 0);
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_1 = __pyx_f_4grpc_7_cython_6cygrpc_init_grpc_aio(0); if (unlikely(!__pyx_t_1)) __PYX_ERR(32, 91, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_r = __pyx_t_1;
  __pyx_t_1 = 0;
  goto __pyx_L0;

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_AddTraceback("grpc._cython.cygrpc.init_grpc_aio", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "src/python/grpcio/grpc/_cython/_cygrpc/aio/grpc_aio.pyx.pxi":104
 * 
 * 
 * cpdef shutdown_grpc_aio():             # <<<<<<<<<<<<<<
 *     """Shuts down the gRPC AsyncIO module.
 * 
 */

static PyObject *__pyx_pw_4grpc_7_cython_6cygrpc_143shutdown_grpc_aio(PyObject *__pyx_self, CYTHON_UNUSED PyObject *unused); /*proto*/
static PyObject *__pyx_f_4grpc_7_cython_6cygrpc_shutdown_grpc_aio(CYTHON_UNUSED int __pyx_skip_dispatch) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  PyObject *__pyx_t_2 = NULL;
  PyObject *__pyx_t_3 = NULL;
  PyObject *__pyx_t_4 = NULL;
  PyObject *__pyx_t_5 = NULL;
  PyObject *__pyx_t_6 = NULL;
  PyObject *__pyx_t_7 = NULL;
  int __pyx_t_8;
  PyObject *__pyx_t_9 = NULL;
  PyObject *__pyx_t_10 = NULL;
  int __pyx_t_11;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("shutdown_grpc_aio", 0);

  /* "src/python/grpcio/grpc/_cython/_cygrpc/aio/grpc_aio.pyx.pxi":110
 *     E.g., AioChannel, AioServer.
 *     """
 *     with _global_aio_state.lock:             # <<<<<<<<<<<<<<
 *         assert _global_aio_state.refcount > 0
 *         _global_aio_state.refcount -= 1
 */
  /*with:*/ {
    __pyx_t_1 = __Pyx_PyObject_LookupSpecial(__pyx_v_4grpc_7_cython_6cygrpc__global_aio_state->lock, __pyx_n_s_exit); if (unlikely(!__pyx_t_1)) __PYX_ERR(32, 110, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_1);
    __pyx_t_3 = __Pyx_PyObject_LookupSpecial(__pyx_v_4grpc_7_cython_6cygrpc__global_aio_state->lock, __pyx_n_s_enter); if (unlikely(!__pyx_t_3)) __PYX_ERR(32, 110, __pyx_L3_error)
    __Pyx_GOTREF(__pyx_t_3);
    __pyx_t_4 = NULL;
    if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_3))) {
      __pyx_t_4 = PyMethod_GET_SELF(__pyx_t_3);
      if (likely(__pyx_t_4)) {
        PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_3);
        __Pyx_INCREF(__pyx_t_4);
        __Pyx_INCREF(function);
        __Pyx_DECREF_SET(__pyx_t_3, function);
      }
    }
    __pyx_t_2 = (__pyx_t_4) ? __Pyx_PyObject_CallOneArg(__pyx_t_3, __pyx_t_4) : __Pyx_PyObject_CallNoArg(__pyx_t_3);
    __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0;
    if (unlikely(!__pyx_t_2)) __PYX_ERR(32, 110, __pyx_L3_error)
    __Pyx_GOTREF(__pyx_t_2);
    __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
    __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
    /*try:*/ {
      {
        __Pyx_PyThreadState_declare
        __Pyx_PyThreadState_assign
        __Pyx_ExceptionSave(&__pyx_t_5, &__pyx_t_6, &__pyx_t_7);
        __Pyx_XGOTREF(__pyx_t_5);
        __Pyx_XGOTREF(__pyx_t_6);
        __Pyx_XGOTREF(__pyx_t_7);
        /*try:*/ {

          /* "src/python/grpcio/grpc/_cython/_cygrpc/aio/grpc_aio.pyx.pxi":111
 *     """
 *     with _global_aio_state.lock:
 *         assert _global_aio_state.refcount > 0             # <<<<<<<<<<<<<<
 *         _global_aio_state.refcount -= 1
 *         if not _global_aio_state.refcount:
 */
          #ifndef CYTHON_WITHOUT_ASSERTIONS
          if (unlikely(!Py_OptimizeFlag)) {
            if (unlikely(!((__pyx_v_4grpc_7_cython_6cygrpc__global_aio_state->refcount > 0) != 0))) {
              PyErr_SetNone(PyExc_AssertionError);
              __PYX_ERR(32, 111, __pyx_L7_error)
            }
          }
          #endif

          /* "src/python/grpcio/grpc/_cython/_cygrpc/aio/grpc_aio.pyx.pxi":112
 *     with _global_aio_state.lock:
 *         assert _global_aio_state.refcount > 0
 *         _global_aio_state.refcount -= 1             # <<<<<<<<<<<<<<
 *         if not _global_aio_state.refcount:
 *             _actual_aio_shutdown()
 */
          __pyx_v_4grpc_7_cython_6cygrpc__global_aio_state->refcount = (__pyx_v_4grpc_7_cython_6cygrpc__global_aio_state->refcount - 1);

          /* "src/python/grpcio/grpc/_cython/_cygrpc/aio/grpc_aio.pyx.pxi":113
 *         assert _global_aio_state.refcount > 0
 *         _global_aio_state.refcount -= 1
 *         if not _global_aio_state.refcount:             # <<<<<<<<<<<<<<
 *             _actual_aio_shutdown()
 */
          __pyx_t_8 = ((!(__pyx_v_4grpc_7_cython_6cygrpc__global_aio_state->refcount != 0)) != 0);
          if (__pyx_t_8) {

            /* "src/python/grpcio/grpc/_cython/_cygrpc/aio/grpc_aio.pyx.pxi":114
 *         _global_aio_state.refcount -= 1
 *         if not _global_aio_state.refcount:
 *             _actual_aio_shutdown()             # <<<<<<<<<<<<<<
 */
            __pyx_t_2 = __pyx_f_4grpc_7_cython_6cygrpc__actual_aio_shutdown(); if (unlikely(!__pyx_t_2)) __PYX_ERR(32, 114, __pyx_L7_error)
            __Pyx_GOTREF(__pyx_t_2);
            __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;

            /* "src/python/grpcio/grpc/_cython/_cygrpc/aio/grpc_aio.pyx.pxi":113
 *         assert _global_aio_state.refcount > 0
 *         _global_aio_state.refcount -= 1
 *         if not _global_aio_state.refcount:             # <<<<<<<<<<<<<<
 *             _actual_aio_shutdown()
 */
          }

          /* "src/python/grpcio/grpc/_cython/_cygrpc/aio/grpc_aio.pyx.pxi":110
 *     E.g., AioChannel, AioServer.
 *     """
 *     with _global_aio_state.lock:             # <<<<<<<<<<<<<<
 *         assert _global_aio_state.refcount > 0
 *         _global_aio_state.refcount -= 1
 */
        }
        __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0;
        __Pyx_XDECREF(__pyx_t_6); __pyx_t_6 = 0;
        __Pyx_XDECREF(__pyx_t_7); __pyx_t_7 = 0;
        goto __pyx_L12_try_end;
        __pyx_L7_error:;
        __Pyx_XDECREF(__pyx_t_2); __pyx_t_2 = 0;
        __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0;
        __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0;
        /*except:*/ {
          __Pyx_AddTraceback("grpc._cython.cygrpc.shutdown_grpc_aio", __pyx_clineno, __pyx_lineno, __pyx_filename);
          if (__Pyx_GetException(&__pyx_t_2, &__pyx_t_3, &__pyx_t_4) < 0) __PYX_ERR(32, 110, __pyx_L9_except_error)
          __Pyx_GOTREF(__pyx_t_2);
          __Pyx_GOTREF(__pyx_t_3);
          __Pyx_GOTREF(__pyx_t_4);
          __pyx_t_9 = PyTuple_Pack(3, __pyx_t_2, __pyx_t_3, __pyx_t_4); if (unlikely(!__pyx_t_9)) __PYX_ERR(32, 110, __pyx_L9_except_error)
          __Pyx_GOTREF(__pyx_t_9);
          __pyx_t_10 = __Pyx_PyObject_Call(__pyx_t_1, __pyx_t_9, NULL);
          __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
          __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0;
          if (unlikely(!__pyx_t_10)) __PYX_ERR(32, 110, __pyx_L9_except_error)
          __Pyx_GOTREF(__pyx_t_10);
          __pyx_t_8 = __Pyx_PyObject_IsTrue(__pyx_t_10);
          __Pyx_DECREF(__pyx_t_10); __pyx_t_10 = 0;
          if (__pyx_t_8 < 0) __PYX_ERR(32, 110, __pyx_L9_except_error)
          __pyx_t_11 = ((!(__pyx_t_8 != 0)) != 0);
          if (__pyx_t_11) {
            __Pyx_GIVEREF(__pyx_t_2);
            __Pyx_GIVEREF(__pyx_t_3);
            __Pyx_XGIVEREF(__pyx_t_4);
            __Pyx_ErrRestoreWithState(__pyx_t_2, __pyx_t_3, __pyx_t_4);
            __pyx_t_2 = 0; __pyx_t_3 = 0; __pyx_t_4 = 0; 
            __PYX_ERR(32, 110, __pyx_L9_except_error)
          }
          __Pyx_XDECREF(__pyx_t_2); __pyx_t_2 = 0;
          __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0;
          __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0;
          goto __pyx_L8_exception_handled;
        }
        __pyx_L9_except_error:;
        __Pyx_XGIVEREF(__pyx_t_5);
        __Pyx_XGIVEREF(__pyx_t_6);
        __Pyx_XGIVEREF(__pyx_t_7);
        __Pyx_ExceptionReset(__pyx_t_5, __pyx_t_6, __pyx_t_7);
        goto __pyx_L1_error;
        __pyx_L8_exception_handled:;
        __Pyx_XGIVEREF(__pyx_t_5);
        __Pyx_XGIVEREF(__pyx_t_6);
        __Pyx_XGIVEREF(__pyx_t_7);
        __Pyx_ExceptionReset(__pyx_t_5, __pyx_t_6, __pyx_t_7);
        __pyx_L12_try_end:;
      }
    }
    /*finally:*/ {
      /*normal exit:*/{
        if (__pyx_t_1) {
          __pyx_t_7 = __Pyx_PyObject_Call(__pyx_t_1, __pyx_tuple__17, NULL);
          __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
          if (unlikely(!__pyx_t_7)) __PYX_ERR(32, 110, __pyx_L1_error)
          __Pyx_GOTREF(__pyx_t_7);
          __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
        }
        goto __pyx_L6;
      }
      __pyx_L6:;
    }
    goto __pyx_L17;
    __pyx_L3_error:;
    __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
    goto __pyx_L1_error;
    __pyx_L17:;
  }

  /* "src/python/grpcio/grpc/_cython/_cygrpc/aio/grpc_aio.pyx.pxi":104
 * 
 * 
 * cpdef shutdown_grpc_aio():             # <<<<<<<<<<<<<<
 *     """Shuts down the gRPC AsyncIO module.
 * 
 */

  /* function exit code */
  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_XDECREF(__pyx_t_3);
  __Pyx_XDECREF(__pyx_t_4);
  __Pyx_XDECREF(__pyx_t_9);
  __Pyx_AddTraceback("grpc._cython.cygrpc.shutdown_grpc_aio", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = 0;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* Python wrapper */
static PyObject *__pyx_pw_4grpc_7_cython_6cygrpc_143shutdown_grpc_aio(PyObject *__pyx_self, CYTHON_UNUSED PyObject *unused); /*proto*/
static char __pyx_doc_4grpc_7_cython_6cygrpc_142shutdown_grpc_aio[] = "Shuts down the gRPC AsyncIO module.\n\n    Expected to be invoked on critical class destructors.\n    E.g., AioChannel, AioServer.\n    ";
static PyObject *__pyx_pw_4grpc_7_cython_6cygrpc_143shutdown_grpc_aio(PyObject *__pyx_self, CYTHON_UNUSED PyObject *unused) {
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("shutdown_grpc_aio (wrapper)", 0);
  __pyx_r = __pyx_pf_4grpc_7_cython_6cygrpc_142shutdown_grpc_aio(__pyx_self);

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_4grpc_7_cython_6cygrpc_142shutdown_grpc_aio(CYTHON_UNUSED PyObject *__pyx_self) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("shutdown_grpc_aio", 0);
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_1 = __pyx_f_4grpc_7_cython_6cygrpc_shutdown_grpc_aio(0); if (unlikely(!__pyx_t_1)) __PYX_ERR(32, 104, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_r = __pyx_t_1;
  __pyx_t_1 = 0;
  goto __pyx_L0;

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_AddTraceback("grpc._cython.cygrpc.shutdown_grpc_aio", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "src/python/grpcio/grpc/_cython/_cygrpc/aio/call.pyx.pxi":33
 * 
 * 
 * cdef int _get_send_initial_metadata_flags(object wait_for_ready) except *:             # <<<<<<<<<<<<<<
 *     cdef int flags = 0
 *     # Wait-for-ready can be None, which means using default value in Core.
 */

static int __pyx_f_4grpc_7_cython_6cygrpc__get_send_initial_metadata_flags(PyObject *__pyx_v_wait_for_ready) {
  int __pyx_v_flags;
  int __pyx_r;
  __Pyx_RefNannyDeclarations
  int __pyx_t_1;
  int __pyx_t_2;
  PyObject *__pyx_t_3 = NULL;
  PyObject *__pyx_t_4 = NULL;
  PyObject *__pyx_t_5 = NULL;
  int __pyx_t_6;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("_get_send_initial_metadata_flags", 0);

  /* "src/python/grpcio/grpc/_cython/_cygrpc/aio/call.pyx.pxi":34
 * 
 * cdef int _get_send_initial_metadata_flags(object wait_for_ready) except *:
 *     cdef int flags = 0             # <<<<<<<<<<<<<<
 *     # Wait-for-ready can be None, which means using default value in Core.
 *     if wait_for_ready is not None:
 */
  __pyx_v_flags = 0;

  /* "src/python/grpcio/grpc/_cython/_cygrpc/aio/call.pyx.pxi":36
 *     cdef int flags = 0
 *     # Wait-for-ready can be None, which means using default value in Core.
 *     if wait_for_ready is not None:             # <<<<<<<<<<<<<<
 *         flags |= InitialMetadataFlags.wait_for_ready_explicitly_set
 *         if wait_for_ready:
 */
  __pyx_t_1 = (__pyx_v_wait_for_ready != Py_None);
  __pyx_t_2 = (__pyx_t_1 != 0);
  if (__pyx_t_2) {

    /* "src/python/grpcio/grpc/_cython/_cygrpc/aio/call.pyx.pxi":37
 *     # Wait-for-ready can be None, which means using default value in Core.
 *     if wait_for_ready is not None:
 *         flags |= InitialMetadataFlags.wait_for_ready_explicitly_set             # <<<<<<<<<<<<<<
 *         if wait_for_ready:
 *             flags |= InitialMetadataFlags.wait_for_ready
 */
    __pyx_t_3 = __Pyx_PyInt_From_int(__pyx_v_flags); if (unlikely(!__pyx_t_3)) __PYX_ERR(33, 37, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_3);
    __Pyx_GetModuleGlobalName(__pyx_t_4, __pyx_n_s_InitialMetadataFlags); if (unlikely(!__pyx_t_4)) __PYX_ERR(33, 37, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_4);
    __pyx_t_5 = __Pyx_PyObject_GetAttrStr(__pyx_t_4, __pyx_n_s_wait_for_ready_explicitly_set); if (unlikely(!__pyx_t_5)) __PYX_ERR(33, 37, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_5);
    __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
    __pyx_t_4 = PyNumber_InPlaceOr(__pyx_t_3, __pyx_t_5); if (unlikely(!__pyx_t_4)) __PYX_ERR(33, 37, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_4);
    __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
    __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
    __pyx_t_6 = __Pyx_PyInt_As_int(__pyx_t_4); if (unlikely((__pyx_t_6 == (int)-1) && PyErr_Occurred())) __PYX_ERR(33, 37, __pyx_L1_error)
    __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
    __pyx_v_flags = __pyx_t_6;

    /* "src/python/grpcio/grpc/_cython/_cygrpc/aio/call.pyx.pxi":38
 *     if wait_for_ready is not None:
 *         flags |= InitialMetadataFlags.wait_for_ready_explicitly_set
 *         if wait_for_ready:             # <<<<<<<<<<<<<<
 *             flags |= InitialMetadataFlags.wait_for_ready
 * 
 */
    __pyx_t_2 = __Pyx_PyObject_IsTrue(__pyx_v_wait_for_ready); if (unlikely(__pyx_t_2 < 0)) __PYX_ERR(33, 38, __pyx_L1_error)
    if (__pyx_t_2) {

      /* "src/python/grpcio/grpc/_cython/_cygrpc/aio/call.pyx.pxi":39
 *         flags |= InitialMetadataFlags.wait_for_ready_explicitly_set
 *         if wait_for_ready:
 *             flags |= InitialMetadataFlags.wait_for_ready             # <<<<<<<<<<<<<<
 * 
 *     flags &= InitialMetadataFlags.used_mask
 */
      __pyx_t_4 = __Pyx_PyInt_From_int(__pyx_v_flags); if (unlikely(!__pyx_t_4)) __PYX_ERR(33, 39, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_4);
      __Pyx_GetModuleGlobalName(__pyx_t_5, __pyx_n_s_InitialMetadataFlags); if (unlikely(!__pyx_t_5)) __PYX_ERR(33, 39, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_5);
      __pyx_t_3 = __Pyx_PyObject_GetAttrStr(__pyx_t_5, __pyx_n_s_wait_for_ready); if (unlikely(!__pyx_t_3)) __PYX_ERR(33, 39, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_3);
      __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
      __pyx_t_5 = PyNumber_InPlaceOr(__pyx_t_4, __pyx_t_3); if (unlikely(!__pyx_t_5)) __PYX_ERR(33, 39, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_5);
      __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
      __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
      __pyx_t_6 = __Pyx_PyInt_As_int(__pyx_t_5); if (unlikely((__pyx_t_6 == (int)-1) && PyErr_Occurred())) __PYX_ERR(33, 39, __pyx_L1_error)
      __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
      __pyx_v_flags = __pyx_t_6;

      /* "src/python/grpcio/grpc/_cython/_cygrpc/aio/call.pyx.pxi":38
 *     if wait_for_ready is not None:
 *         flags |= InitialMetadataFlags.wait_for_ready_explicitly_set
 *         if wait_for_ready:             # <<<<<<<<<<<<<<
 *             flags |= InitialMetadataFlags.wait_for_ready
 * 
 */
    }

    /* "src/python/grpcio/grpc/_cython/_cygrpc/aio/call.pyx.pxi":36
 *     cdef int flags = 0
 *     # Wait-for-ready can be None, which means using default value in Core.
 *     if wait_for_ready is not None:             # <<<<<<<<<<<<<<
 *         flags |= InitialMetadataFlags.wait_for_ready_explicitly_set
 *         if wait_for_ready:
 */
  }

  /* "src/python/grpcio/grpc/_cython/_cygrpc/aio/call.pyx.pxi":41
 *             flags |= InitialMetadataFlags.wait_for_ready
 * 
 *     flags &= InitialMetadataFlags.used_mask             # <<<<<<<<<<<<<<
 *     return flags
 * 
 */
  __pyx_t_5 = __Pyx_PyInt_From_int(__pyx_v_flags); if (unlikely(!__pyx_t_5)) __PYX_ERR(33, 41, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_5);
  __Pyx_GetModuleGlobalName(__pyx_t_3, __pyx_n_s_InitialMetadataFlags); if (unlikely(!__pyx_t_3)) __PYX_ERR(33, 41, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  __pyx_t_4 = __Pyx_PyObject_GetAttrStr(__pyx_t_3, __pyx_n_s_used_mask); if (unlikely(!__pyx_t_4)) __PYX_ERR(33, 41, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_4);
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
  __pyx_t_3 = PyNumber_InPlaceAnd(__pyx_t_5, __pyx_t_4); if (unlikely(!__pyx_t_3)) __PYX_ERR(33, 41, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
  __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
  __pyx_t_6 = __Pyx_PyInt_As_int(__pyx_t_3); if (unlikely((__pyx_t_6 == (int)-1) && PyErr_Occurred())) __PYX_ERR(33, 41, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
  __pyx_v_flags = __pyx_t_6;

  /* "src/python/grpcio/grpc/_cython/_cygrpc/aio/call.pyx.pxi":42
 * 
 *     flags &= InitialMetadataFlags.used_mask
 *     return flags             # <<<<<<<<<<<<<<
 * 
 * 
 */
  __pyx_r = __pyx_v_flags;
  goto __pyx_L0;

  /* "src/python/grpcio/grpc/_cython/_cygrpc/aio/call.pyx.pxi":33
 * 
 * 
 * cdef int _get_send_initial_metadata_flags(object wait_for_ready) except *:             # <<<<<<<<<<<<<<
 *     cdef int flags = 0
 *     # Wait-for-ready can be None, which means using default value in Core.
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_3);
  __Pyx_XDECREF(__pyx_t_4);
  __Pyx_XDECREF(__pyx_t_5);
  __Pyx_AddTraceback("grpc._cython.cygrpc._get_send_initial_metadata_flags", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = -1;
  __pyx_L0:;
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "src/python/grpcio/grpc/_cython/_cygrpc/aio/call.pyx.pxi":47
 * cdef class _AioCall(GrpcCallWrapper):
 * 
 *     def __cinit__(self, AioChannel channel, object deadline,             # <<<<<<<<<<<<<<
 *                   bytes method, CallCredentials call_credentials, object wait_for_ready):
 *         init_grpc_aio()
 */

/* Python wrapper */
static int __pyx_pw_4grpc_7_cython_6cygrpc_8_AioCall_1__cinit__(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
static int __pyx_pw_4grpc_7_cython_6cygrpc_8_AioCall_1__cinit__(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
  struct __pyx_obj_4grpc_7_cython_6cygrpc_AioChannel *__pyx_v_channel = 0;
  PyObject *__pyx_v_deadline = 0;
  PyObject *__pyx_v_method = 0;
  struct __pyx_obj_4grpc_7_cython_6cygrpc_CallCredentials *__pyx_v_call_credentials = 0;
  PyObject *__pyx_v_wait_for_ready = 0;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  int __pyx_r;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__cinit__ (wrapper)", 0);
  {
    static PyObject **__pyx_pyargnames[] = {&__pyx_n_s_channel,&__pyx_n_s_deadline,&__pyx_n_s_method,&__pyx_n_s_call_credentials,&__pyx_n_s_wait_for_ready,0};
    PyObject* values[5] = {0,0,0,0,0};
    if (unlikely(__pyx_kwds)) {
      Py_ssize_t kw_args;
      const Py_ssize_t pos_args = PyTuple_GET_SIZE(__pyx_args);
      switch (pos_args) {
        case  5: values[4] = PyTuple_GET_ITEM(__pyx_args, 4);
        CYTHON_FALLTHROUGH;
        case  4: values[3] = PyTuple_GET_ITEM(__pyx_args, 3);
        CYTHON_FALLTHROUGH;
        case  3: values[2] = PyTuple_GET_ITEM(__pyx_args, 2);
        CYTHON_FALLTHROUGH;
        case  2: values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
        CYTHON_FALLTHROUGH;
        case  1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
        CYTHON_FALLTHROUGH;
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      kw_args = PyDict_Size(__pyx_kwds);
      switch (pos_args) {
        case  0:
        if (likely((values[0] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_channel)) != 0)) kw_args--;
        else goto __pyx_L5_argtuple_error;
        CYTHON_FALLTHROUGH;
        case  1:
        if (likely((values[1] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_deadline)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("__cinit__", 1, 5, 5, 1); __PYX_ERR(33, 47, __pyx_L3_error)
        }
        CYTHON_FALLTHROUGH;
        case  2:
        if (likely((values[2] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_method)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("__cinit__", 1, 5, 5, 2); __PYX_ERR(33, 47, __pyx_L3_error)
        }
        CYTHON_FALLTHROUGH;
        case  3:
        if (likely((values[3] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_call_credentials)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("__cinit__", 1, 5, 5, 3); __PYX_ERR(33, 47, __pyx_L3_error)
        }
        CYTHON_FALLTHROUGH;
        case  4:
        if (likely((values[4] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_wait_for_ready)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("__cinit__", 1, 5, 5, 4); __PYX_ERR(33, 47, __pyx_L3_error)
        }
      }
      if (unlikely(kw_args > 0)) {
        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "__cinit__") < 0)) __PYX_ERR(33, 47, __pyx_L3_error)
      }
    } else if (PyTuple_GET_SIZE(__pyx_args) != 5) {
      goto __pyx_L5_argtuple_error;
    } else {
      values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
      values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
      values[2] = PyTuple_GET_ITEM(__pyx_args, 2);
      values[3] = PyTuple_GET_ITEM(__pyx_args, 3);
      values[4] = PyTuple_GET_ITEM(__pyx_args, 4);
    }
    __pyx_v_channel = ((struct __pyx_obj_4grpc_7_cython_6cygrpc_AioChannel *)values[0]);
    __pyx_v_deadline = values[1];
    __pyx_v_method = ((PyObject*)values[2]);
    __pyx_v_call_credentials = ((struct __pyx_obj_4grpc_7_cython_6cygrpc_CallCredentials *)values[3]);
    __pyx_v_wait_for_ready = values[4];
  }
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("__cinit__", 1, 5, 5, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(33, 47, __pyx_L3_error)
  __pyx_L3_error:;
  __Pyx_AddTraceback("grpc._cython.cygrpc._AioCall.__cinit__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return -1;
  __pyx_L4_argument_unpacking_done:;
  if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_channel), __pyx_ptype_4grpc_7_cython_6cygrpc_AioChannel, 1, "channel", 0))) __PYX_ERR(33, 47, __pyx_L1_error)
  if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_method), (&PyBytes_Type), 1, "method", 1))) __PYX_ERR(33, 48, __pyx_L1_error)
  if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_call_credentials), __pyx_ptype_4grpc_7_cython_6cygrpc_CallCredentials, 1, "call_credentials", 0))) __PYX_ERR(33, 48, __pyx_L1_error)
  __pyx_r = __pyx_pf_4grpc_7_cython_6cygrpc_8_AioCall___cinit__(((struct __pyx_obj_4grpc_7_cython_6cygrpc__AioCall *)__pyx_v_self), __pyx_v_channel, __pyx_v_deadline, __pyx_v_method, __pyx_v_call_credentials, __pyx_v_wait_for_ready);

  /* function exit code */
  goto __pyx_L0;
  __pyx_L1_error:;
  __pyx_r = -1;
  __pyx_L0:;
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static int __pyx_pf_4grpc_7_cython_6cygrpc_8_AioCall___cinit__(struct __pyx_obj_4grpc_7_cython_6cygrpc__AioCall *__pyx_v_self, struct __pyx_obj_4grpc_7_cython_6cygrpc_AioChannel *__pyx_v_channel, PyObject *__pyx_v_deadline, PyObject *__pyx_v_method, struct __pyx_obj_4grpc_7_cython_6cygrpc_CallCredentials *__pyx_v_call_credentials, PyObject *__pyx_v_wait_for_ready) {
  int __pyx_r;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  int __pyx_t_2;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("__cinit__", 0);

  /* "src/python/grpcio/grpc/_cython/_cygrpc/aio/call.pyx.pxi":49
 *     def __cinit__(self, AioChannel channel, object deadline,
 *                   bytes method, CallCredentials call_credentials, object wait_for_ready):
 *         init_grpc_aio()             # <<<<<<<<<<<<<<
 *         self.call = NULL
 *         self._channel = channel
 */
  __pyx_t_1 = __pyx_f_4grpc_7_cython_6cygrpc_init_grpc_aio(0); if (unlikely(!__pyx_t_1)) __PYX_ERR(33, 49, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;

  /* "src/python/grpcio/grpc/_cython/_cygrpc/aio/call.pyx.pxi":50
 *                   bytes method, CallCredentials call_credentials, object wait_for_ready):
 *         init_grpc_aio()
 *         self.call = NULL             # <<<<<<<<<<<<<<
 *         self._channel = channel
 *         self._loop = channel.loop
 */
  __pyx_v_self->__pyx_base.call = NULL;

  /* "src/python/grpcio/grpc/_cython/_cygrpc/aio/call.pyx.pxi":51
 *         init_grpc_aio()
 *         self.call = NULL
 *         self._channel = channel             # <<<<<<<<<<<<<<
 *         self._loop = channel.loop
 *         self._references = []
 */
  __Pyx_INCREF(((PyObject *)__pyx_v_channel));
  __Pyx_GIVEREF(((PyObject *)__pyx_v_channel));
  __Pyx_GOTREF(__pyx_v_self->_channel);
  __Pyx_DECREF(((PyObject *)__pyx_v_self->_channel));
  __pyx_v_self->_channel = __pyx_v_channel;

  /* "src/python/grpcio/grpc/_cython/_cygrpc/aio/call.pyx.pxi":52
 *         self.call = NULL
 *         self._channel = channel
 *         self._loop = channel.loop             # <<<<<<<<<<<<<<
 *         self._references = []
 *         self._status = None
 */
  __pyx_t_1 = __pyx_v_channel->loop;
  __Pyx_INCREF(__pyx_t_1);
  __Pyx_GIVEREF(__pyx_t_1);
  __Pyx_GOTREF(__pyx_v_self->_loop);
  __Pyx_DECREF(__pyx_v_self->_loop);
  __pyx_v_self->_loop = __pyx_t_1;
  __pyx_t_1 = 0;

  /* "src/python/grpcio/grpc/_cython/_cygrpc/aio/call.pyx.pxi":53
 *         self._channel = channel
 *         self._loop = channel.loop
 *         self._references = []             # <<<<<<<<<<<<<<
 *         self._status = None
 *         self._initial_metadata = None
 */
  __pyx_t_1 = PyList_New(0); if (unlikely(!__pyx_t_1)) __PYX_ERR(33, 53, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_GIVEREF(__pyx_t_1);
  __Pyx_GOTREF(__pyx_v_self->_references);
  __Pyx_DECREF(__pyx_v_self->_references);
  __pyx_v_self->_references = ((PyObject*)__pyx_t_1);
  __pyx_t_1 = 0;

  /* "src/python/grpcio/grpc/_cython/_cygrpc/aio/call.pyx.pxi":54
 *         self._loop = channel.loop
 *         self._references = []
 *         self._status = None             # <<<<<<<<<<<<<<
 *         self._initial_metadata = None
 *         self._waiters_status = []
 */
  __Pyx_INCREF(Py_None);
  __Pyx_GIVEREF(Py_None);
  __Pyx_GOTREF(__pyx_v_self->_status);
  __Pyx_DECREF(((PyObject *)__pyx_v_self->_status));
  __pyx_v_self->_status = ((struct __pyx_obj_4grpc_7_cython_6cygrpc_AioRpcStatus *)Py_None);

  /* "src/python/grpcio/grpc/_cython/_cygrpc/aio/call.pyx.pxi":55
 *         self._references = []
 *         self._status = None
 *         self._initial_metadata = None             # <<<<<<<<<<<<<<
 *         self._waiters_status = []
 *         self._waiters_initial_metadata = []
 */
  __Pyx_INCREF(Py_None);
  __Pyx_GIVEREF(Py_None);
  __Pyx_GOTREF(__pyx_v_self->_initial_metadata);
  __Pyx_DECREF(__pyx_v_self->_initial_metadata);
  __pyx_v_self->_initial_metadata = ((PyObject*)Py_None);

  /* "src/python/grpcio/grpc/_cython/_cygrpc/aio/call.pyx.pxi":56
 *         self._status = None
 *         self._initial_metadata = None
 *         self._waiters_status = []             # <<<<<<<<<<<<<<
 *         self._waiters_initial_metadata = []
 *         self._done_callbacks = []
 */
  __pyx_t_1 = PyList_New(0); if (unlikely(!__pyx_t_1)) __PYX_ERR(33, 56, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_GIVEREF(__pyx_t_1);
  __Pyx_GOTREF(__pyx_v_self->_waiters_status);
  __Pyx_DECREF(__pyx_v_self->_waiters_status);
  __pyx_v_self->_waiters_status = ((PyObject*)__pyx_t_1);
  __pyx_t_1 = 0;

  /* "src/python/grpcio/grpc/_cython/_cygrpc/aio/call.pyx.pxi":57
 *         self._initial_metadata = None
 *         self._waiters_status = []
 *         self._waiters_initial_metadata = []             # <<<<<<<<<<<<<<
 *         self._done_callbacks = []
 *         self._is_locally_cancelled = False
 */
  __pyx_t_1 = PyList_New(0); if (unlikely(!__pyx_t_1)) __PYX_ERR(33, 57, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_GIVEREF(__pyx_t_1);
  __Pyx_GOTREF(__pyx_v_self->_waiters_initial_metadata);
  __Pyx_DECREF(__pyx_v_self->_waiters_initial_metadata);
  __pyx_v_self->_waiters_initial_metadata = ((PyObject*)__pyx_t_1);
  __pyx_t_1 = 0;

  /* "src/python/grpcio/grpc/_cython/_cygrpc/aio/call.pyx.pxi":58
 *         self._waiters_status = []
 *         self._waiters_initial_metadata = []
 *         self._done_callbacks = []             # <<<<<<<<<<<<<<
 *         self._is_locally_cancelled = False
 *         self._deadline = deadline
 */
  __pyx_t_1 = PyList_New(0); if (unlikely(!__pyx_t_1)) __PYX_ERR(33, 58, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_GIVEREF(__pyx_t_1);
  __Pyx_GOTREF(__pyx_v_self->_done_callbacks);
  __Pyx_DECREF(__pyx_v_self->_done_callbacks);
  __pyx_v_self->_done_callbacks = ((PyObject*)__pyx_t_1);
  __pyx_t_1 = 0;

  /* "src/python/grpcio/grpc/_cython/_cygrpc/aio/call.pyx.pxi":59
 *         self._waiters_initial_metadata = []
 *         self._done_callbacks = []
 *         self._is_locally_cancelled = False             # <<<<<<<<<<<<<<
 *         self._deadline = deadline
 *         self._send_initial_metadata_flags = _get_send_initial_metadata_flags(wait_for_ready)
 */
  __pyx_v_self->_is_locally_cancelled = 0;

  /* "src/python/grpcio/grpc/_cython/_cygrpc/aio/call.pyx.pxi":60
 *         self._done_callbacks = []
 *         self._is_locally_cancelled = False
 *         self._deadline = deadline             # <<<<<<<<<<<<<<
 *         self._send_initial_metadata_flags = _get_send_initial_metadata_flags(wait_for_ready)
 *         self._create_grpc_call(deadline, method, call_credentials)
 */
  __Pyx_INCREF(__pyx_v_deadline);
  __Pyx_GIVEREF(__pyx_v_deadline);
  __Pyx_GOTREF(__pyx_v_self->_deadline);
  __Pyx_DECREF(__pyx_v_self->_deadline);
  __pyx_v_self->_deadline = __pyx_v_deadline;

  /* "src/python/grpcio/grpc/_cython/_cygrpc/aio/call.pyx.pxi":61
 *         self._is_locally_cancelled = False
 *         self._deadline = deadline
 *         self._send_initial_metadata_flags = _get_send_initial_metadata_flags(wait_for_ready)             # <<<<<<<<<<<<<<
 *         self._create_grpc_call(deadline, method, call_credentials)
 * 
 */
  __pyx_t_2 = __pyx_f_4grpc_7_cython_6cygrpc__get_send_initial_metadata_flags(__pyx_v_wait_for_ready); if (unlikely(__pyx_t_2 == ((int)-1) && PyErr_Occurred())) __PYX_ERR(33, 61, __pyx_L1_error)
  __pyx_v_self->_send_initial_metadata_flags = __pyx_t_2;

  /* "src/python/grpcio/grpc/_cython/_cygrpc/aio/call.pyx.pxi":62
 *         self._deadline = deadline
 *         self._send_initial_metadata_flags = _get_send_initial_metadata_flags(wait_for_ready)
 *         self._create_grpc_call(deadline, method, call_credentials)             # <<<<<<<<<<<<<<
 * 
 *     def __dealloc__(self):
 */
  ((struct __pyx_vtabstruct_4grpc_7_cython_6cygrpc__AioCall *)__pyx_v_self->__pyx_vtab)->_create_grpc_call(__pyx_v_self, __pyx_v_deadline, __pyx_v_method, __pyx_v_call_credentials); if (unlikely(PyErr_Occurred())) __PYX_ERR(33, 62, __pyx_L1_error)

  /* "src/python/grpcio/grpc/_cython/_cygrpc/aio/call.pyx.pxi":47
 * cdef class _AioCall(GrpcCallWrapper):
 * 
 *     def __cinit__(self, AioChannel channel, object deadline,             # <<<<<<<<<<<<<<
 *                   bytes method, CallCredentials call_credentials, object wait_for_ready):
 *         init_grpc_aio()
 */

  /* function exit code */
  __pyx_r = 0;
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_AddTraceback("grpc._cython.cygrpc._AioCall.__cinit__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = -1;
  __pyx_L0:;
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "src/python/grpcio/grpc/_cython/_cygrpc/aio/call.pyx.pxi":64
 *         self._create_grpc_call(deadline, method, call_credentials)
 * 
 *     def __dealloc__(self):             # <<<<<<<<<<<<<<
 *         if self.call:
 *             grpc_call_unref(self.call)
 */

/* Python wrapper */
static void __pyx_pw_4grpc_7_cython_6cygrpc_8_AioCall_3__dealloc__(PyObject *__pyx_v_self); /*proto*/
static void __pyx_pw_4grpc_7_cython_6cygrpc_8_AioCall_3__dealloc__(PyObject *__pyx_v_self) {
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__dealloc__ (wrapper)", 0);
  __pyx_pf_4grpc_7_cython_6cygrpc_8_AioCall_2__dealloc__(((struct __pyx_obj_4grpc_7_cython_6cygrpc__AioCall *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
}

static void __pyx_pf_4grpc_7_cython_6cygrpc_8_AioCall_2__dealloc__(struct __pyx_obj_4grpc_7_cython_6cygrpc__AioCall *__pyx_v_self) {
  __Pyx_RefNannyDeclarations
  int __pyx_t_1;
  PyObject *__pyx_t_2 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("__dealloc__", 0);

  /* "src/python/grpcio/grpc/_cython/_cygrpc/aio/call.pyx.pxi":65
 * 
 *     def __dealloc__(self):
 *         if self.call:             # <<<<<<<<<<<<<<
 *             grpc_call_unref(self.call)
 *         shutdown_grpc_aio()
 */
  __pyx_t_1 = (__pyx_v_self->__pyx_base.call != 0);
  if (__pyx_t_1) {

    /* "src/python/grpcio/grpc/_cython/_cygrpc/aio/call.pyx.pxi":66
 *     def __dealloc__(self):
 *         if self.call:
 *             grpc_call_unref(self.call)             # <<<<<<<<<<<<<<
 *         shutdown_grpc_aio()
 * 
 */
    grpc_call_unref(__pyx_v_self->__pyx_base.call);

    /* "src/python/grpcio/grpc/_cython/_cygrpc/aio/call.pyx.pxi":65
 * 
 *     def __dealloc__(self):
 *         if self.call:             # <<<<<<<<<<<<<<
 *             grpc_call_unref(self.call)
 *         shutdown_grpc_aio()
 */
  }

  /* "src/python/grpcio/grpc/_cython/_cygrpc/aio/call.pyx.pxi":67
 *         if self.call:
 *             grpc_call_unref(self.call)
 *         shutdown_grpc_aio()             # <<<<<<<<<<<<<<
 * 
 *     def _repr(self) -> str:
 */
  __pyx_t_2 = __pyx_f_4grpc_7_cython_6cygrpc_shutdown_grpc_aio(0); if (unlikely(!__pyx_t_2)) __PYX_ERR(33, 67, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;

  /* "src/python/grpcio/grpc/_cython/_cygrpc/aio/call.pyx.pxi":64
 *         self._create_grpc_call(deadline, method, call_credentials)
 * 
 *     def __dealloc__(self):             # <<<<<<<<<<<<<<
 *         if self.call:
 *             grpc_call_unref(self.call)
 */

  /* function exit code */
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_WriteUnraisable("grpc._cython.cygrpc._AioCall.__dealloc__", __pyx_clineno, __pyx_lineno, __pyx_filename, 1, 0);
  __pyx_L0:;
  __Pyx_RefNannyFinishContext();
}

/* "src/python/grpcio/grpc/_cython/_cygrpc/aio/call.pyx.pxi":69
 *         shutdown_grpc_aio()
 * 
 *     def _repr(self) -> str:             # <<<<<<<<<<<<<<
 *         """Assembles the RPC representation string."""
 *         # This needs to be loaded at run time once everything
 */

/* Python wrapper */
static PyObject *__pyx_pw_4grpc_7_cython_6cygrpc_8_AioCall_5_repr(PyObject *__pyx_v_self, CYTHON_UNUSED PyObject *unused); /*proto*/
static char __pyx_doc_4grpc_7_cython_6cygrpc_8_AioCall_4_repr[] = "Assembles the RPC representation string.";
static PyObject *__pyx_pw_4grpc_7_cython_6cygrpc_8_AioCall_5_repr(PyObject *__pyx_v_self, CYTHON_UNUSED PyObject *unused) {
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("_repr (wrapper)", 0);
  __pyx_r = __pyx_pf_4grpc_7_cython_6cygrpc_8_AioCall_4_repr(((struct __pyx_obj_4grpc_7_cython_6cygrpc__AioCall *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_4grpc_7_cython_6cygrpc_8_AioCall_4_repr(struct __pyx_obj_4grpc_7_cython_6cygrpc__AioCall *__pyx_v_self) {
  PyObject *__pyx_v__common = NULL;
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  PyObject *__pyx_t_2 = NULL;
  PyObject *__pyx_t_3 = NULL;
  int __pyx_t_4;
  int __pyx_t_5;
  PyObject *__pyx_t_6 = NULL;
  PyObject *__pyx_t_7 = NULL;
  PyObject *__pyx_t_8 = NULL;
  int __pyx_t_9;
  PyObject *__pyx_t_10 = NULL;
  PyObject *__pyx_t_11 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("_repr", 0);

  /* "src/python/grpcio/grpc/_cython/_cygrpc/aio/call.pyx.pxi":73
 *         # This needs to be loaded at run time once everything
 *         # has been loaded.
 *         from grpc import _common             # <<<<<<<<<<<<<<
 * 
 *         if not self.done():
 */
  __pyx_t_1 = PyList_New(1); if (unlikely(!__pyx_t_1)) __PYX_ERR(33, 73, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_INCREF(__pyx_n_s_common);
  __Pyx_GIVEREF(__pyx_n_s_common);
  PyList_SET_ITEM(__pyx_t_1, 0, __pyx_n_s_common);
  __pyx_t_2 = __Pyx_Import(__pyx_n_s_grpc, __pyx_t_1, -1); if (unlikely(!__pyx_t_2)) __PYX_ERR(33, 73, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  __pyx_t_1 = __Pyx_ImportFrom(__pyx_t_2, __pyx_n_s_common); if (unlikely(!__pyx_t_1)) __PYX_ERR(33, 73, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_INCREF(__pyx_t_1);
  __pyx_v__common = __pyx_t_1;
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;

  /* "src/python/grpcio/grpc/_cython/_cygrpc/aio/call.pyx.pxi":75
 *         from grpc import _common
 * 
 *         if not self.done():             # <<<<<<<<<<<<<<
 *             return '<{} object>'.format(self.__class__.__name__)
 * 
 */
  __pyx_t_1 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_done); if (unlikely(!__pyx_t_1)) __PYX_ERR(33, 75, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_t_3 = NULL;
  if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_1))) {
    __pyx_t_3 = PyMethod_GET_SELF(__pyx_t_1);
    if (likely(__pyx_t_3)) {
      PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_1);
      __Pyx_INCREF(__pyx_t_3);
      __Pyx_INCREF(function);
      __Pyx_DECREF_SET(__pyx_t_1, function);
    }
  }
  __pyx_t_2 = (__pyx_t_3) ? __Pyx_PyObject_CallOneArg(__pyx_t_1, __pyx_t_3) : __Pyx_PyObject_CallNoArg(__pyx_t_1);
  __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0;
  if (unlikely(!__pyx_t_2)) __PYX_ERR(33, 75, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  __pyx_t_4 = __Pyx_PyObject_IsTrue(__pyx_t_2); if (unlikely(__pyx_t_4 < 0)) __PYX_ERR(33, 75, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  __pyx_t_5 = ((!__pyx_t_4) != 0);
  if (__pyx_t_5) {

    /* "src/python/grpcio/grpc/_cython/_cygrpc/aio/call.pyx.pxi":76
 * 
 *         if not self.done():
 *             return '<{} object>'.format(self.__class__.__name__)             # <<<<<<<<<<<<<<
 * 
 *         if self._status.code() is StatusCode.ok:
 */
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_kp_s_object_2, __pyx_n_s_format); if (unlikely(!__pyx_t_1)) __PYX_ERR(33, 76, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_1);
    __pyx_t_3 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_class); if (unlikely(!__pyx_t_3)) __PYX_ERR(33, 76, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_3);
    __pyx_t_6 = __Pyx_PyObject_GetAttrStr(__pyx_t_3, __pyx_n_s_name_2); if (unlikely(!__pyx_t_6)) __PYX_ERR(33, 76, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_6);
    __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
    __pyx_t_3 = NULL;
    if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_1))) {
      __pyx_t_3 = PyMethod_GET_SELF(__pyx_t_1);
      if (likely(__pyx_t_3)) {
        PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_1);
        __Pyx_INCREF(__pyx_t_3);
        __Pyx_INCREF(function);
        __Pyx_DECREF_SET(__pyx_t_1, function);
      }
    }
    __pyx_t_2 = (__pyx_t_3) ? __Pyx_PyObject_Call2Args(__pyx_t_1, __pyx_t_3, __pyx_t_6) : __Pyx_PyObject_CallOneArg(__pyx_t_1, __pyx_t_6);
    __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0;
    __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
    if (unlikely(!__pyx_t_2)) __PYX_ERR(33, 76, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_2);
    __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
    if (!(likely(PyString_CheckExact(__pyx_t_2))||((__pyx_t_2) == Py_None)||(PyErr_Format(PyExc_TypeError, "Expected %.16s, got %.200s", "str", Py_TYPE(__pyx_t_2)->tp_name), 0))) __PYX_ERR(33, 76, __pyx_L1_error)
    __pyx_r = ((PyObject*)__pyx_t_2);
    __pyx_t_2 = 0;
    goto __pyx_L0;

    /* "src/python/grpcio/grpc/_cython/_cygrpc/aio/call.pyx.pxi":75
 *         from grpc import _common
 * 
 *         if not self.done():             # <<<<<<<<<<<<<<
 *             return '<{} object>'.format(self.__class__.__name__)
 * 
 */
  }

  /* "src/python/grpcio/grpc/_cython/_cygrpc/aio/call.pyx.pxi":78
 *             return '<{} object>'.format(self.__class__.__name__)
 * 
 *         if self._status.code() is StatusCode.ok:             # <<<<<<<<<<<<<<
 *             return _OK_CALL_REPRESENTATION.format(
 *                 self.__class__.__name__,
 */
  __pyx_t_2 = __Pyx_PyInt_From_grpc_status_code(((struct __pyx_vtabstruct_4grpc_7_cython_6cygrpc_AioRpcStatus *)__pyx_v_self->_status->__pyx_vtab)->code(__pyx_v_self->_status, 0)); if (unlikely(!__pyx_t_2)) __PYX_ERR(33, 78, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __Pyx_GetModuleGlobalName(__pyx_t_1, __pyx_n_s_StatusCode); if (unlikely(!__pyx_t_1)) __PYX_ERR(33, 78, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_t_6 = __Pyx_PyObject_GetAttrStr(__pyx_t_1, __pyx_n_s_ok); if (unlikely(!__pyx_t_6)) __PYX_ERR(33, 78, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_6);
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  __pyx_t_5 = (__pyx_t_2 == __pyx_t_6);
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
  __pyx_t_4 = (__pyx_t_5 != 0);
  if (__pyx_t_4) {

    /* "src/python/grpcio/grpc/_cython/_cygrpc/aio/call.pyx.pxi":79
 * 
 *         if self._status.code() is StatusCode.ok:
 *             return _OK_CALL_REPRESENTATION.format(             # <<<<<<<<<<<<<<
 *                 self.__class__.__name__,
 *                 _common.CYGRPC_STATUS_CODE_TO_STATUS_CODE[self._status.code()],
 */
    __Pyx_XDECREF(__pyx_r);
    __Pyx_GetModuleGlobalName(__pyx_t_2, __pyx_n_s_OK_CALL_REPRESENTATION); if (unlikely(!__pyx_t_2)) __PYX_ERR(33, 79, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_2);
    __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_t_2, __pyx_n_s_format); if (unlikely(!__pyx_t_1)) __PYX_ERR(33, 79, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_1);
    __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;

    /* "src/python/grpcio/grpc/_cython/_cygrpc/aio/call.pyx.pxi":80
 *         if self._status.code() is StatusCode.ok:
 *             return _OK_CALL_REPRESENTATION.format(
 *                 self.__class__.__name__,             # <<<<<<<<<<<<<<
 *                 _common.CYGRPC_STATUS_CODE_TO_STATUS_CODE[self._status.code()],
 *                 self._status.details())
 */
    __pyx_t_2 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_class); if (unlikely(!__pyx_t_2)) __PYX_ERR(33, 80, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_2);
    __pyx_t_3 = __Pyx_PyObject_GetAttrStr(__pyx_t_2, __pyx_n_s_name_2); if (unlikely(!__pyx_t_3)) __PYX_ERR(33, 80, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_3);
    __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;

    /* "src/python/grpcio/grpc/_cython/_cygrpc/aio/call.pyx.pxi":81
 *             return _OK_CALL_REPRESENTATION.format(
 *                 self.__class__.__name__,
 *                 _common.CYGRPC_STATUS_CODE_TO_STATUS_CODE[self._status.code()],             # <<<<<<<<<<<<<<
 *                 self._status.details())
 *         else:
 */
    __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_v__common, __pyx_n_s_CYGRPC_STATUS_CODE_TO_STATUS_COD); if (unlikely(!__pyx_t_2)) __PYX_ERR(33, 81, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_2);
    __pyx_t_7 = __Pyx_PyInt_From_grpc_status_code(((struct __pyx_vtabstruct_4grpc_7_cython_6cygrpc_AioRpcStatus *)__pyx_v_self->_status->__pyx_vtab)->code(__pyx_v_self->_status, 0)); if (unlikely(!__pyx_t_7)) __PYX_ERR(33, 81, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_7);
    __pyx_t_8 = __Pyx_PyObject_GetItem(__pyx_t_2, __pyx_t_7); if (unlikely(!__pyx_t_8)) __PYX_ERR(33, 81, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_8);
    __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
    __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;

    /* "src/python/grpcio/grpc/_cython/_cygrpc/aio/call.pyx.pxi":82
 *                 self.__class__.__name__,
 *                 _common.CYGRPC_STATUS_CODE_TO_STATUS_CODE[self._status.code()],
 *                 self._status.details())             # <<<<<<<<<<<<<<
 *         else:
 *             return _NON_OK_CALL_REPRESENTATION.format(
 */
    __pyx_t_7 = ((struct __pyx_vtabstruct_4grpc_7_cython_6cygrpc_AioRpcStatus *)__pyx_v_self->_status->__pyx_vtab)->details(__pyx_v_self->_status, 0); if (unlikely(!__pyx_t_7)) __PYX_ERR(33, 82, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_7);
    __pyx_t_2 = NULL;
    __pyx_t_9 = 0;
    if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_1))) {
      __pyx_t_2 = PyMethod_GET_SELF(__pyx_t_1);
      if (likely(__pyx_t_2)) {
        PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_1);
        __Pyx_INCREF(__pyx_t_2);
        __Pyx_INCREF(function);
        __Pyx_DECREF_SET(__pyx_t_1, function);
        __pyx_t_9 = 1;
      }
    }
    #if CYTHON_FAST_PYCALL
    if (PyFunction_Check(__pyx_t_1)) {
      PyObject *__pyx_temp[4] = {__pyx_t_2, __pyx_t_3, __pyx_t_8, __pyx_t_7};
      __pyx_t_6 = __Pyx_PyFunction_FastCall(__pyx_t_1, __pyx_temp+1-__pyx_t_9, 3+__pyx_t_9); if (unlikely(!__pyx_t_6)) __PYX_ERR(33, 79, __pyx_L1_error)
      __Pyx_XDECREF(__pyx_t_2); __pyx_t_2 = 0;
      __Pyx_GOTREF(__pyx_t_6);
      __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
      __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
      __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
    } else
    #endif
    #if CYTHON_FAST_PYCCALL
    if (__Pyx_PyFastCFunction_Check(__pyx_t_1)) {
      PyObject *__pyx_temp[4] = {__pyx_t_2, __pyx_t_3, __pyx_t_8, __pyx_t_7};
      __pyx_t_6 = __Pyx_PyCFunction_FastCall(__pyx_t_1, __pyx_temp+1-__pyx_t_9, 3+__pyx_t_9); if (unlikely(!__pyx_t_6)) __PYX_ERR(33, 79, __pyx_L1_error)
      __Pyx_XDECREF(__pyx_t_2); __pyx_t_2 = 0;
      __Pyx_GOTREF(__pyx_t_6);
      __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
      __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
      __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
    } else
    #endif
    {
      __pyx_t_10 = PyTuple_New(3+__pyx_t_9); if (unlikely(!__pyx_t_10)) __PYX_ERR(33, 79, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_10);
      if (__pyx_t_2) {
        __Pyx_GIVEREF(__pyx_t_2); PyTuple_SET_ITEM(__pyx_t_10, 0, __pyx_t_2); __pyx_t_2 = NULL;
      }
      __Pyx_GIVEREF(__pyx_t_3);
      PyTuple_SET_ITEM(__pyx_t_10, 0+__pyx_t_9, __pyx_t_3);
      __Pyx_GIVEREF(__pyx_t_8);
      PyTuple_SET_ITEM(__pyx_t_10, 1+__pyx_t_9, __pyx_t_8);
      __Pyx_GIVEREF(__pyx_t_7);
      PyTuple_SET_ITEM(__pyx_t_10, 2+__pyx_t_9, __pyx_t_7);
      __pyx_t_3 = 0;
      __pyx_t_8 = 0;
      __pyx_t_7 = 0;
      __pyx_t_6 = __Pyx_PyObject_Call(__pyx_t_1, __pyx_t_10, NULL); if (unlikely(!__pyx_t_6)) __PYX_ERR(33, 79, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_6);
      __Pyx_DECREF(__pyx_t_10); __pyx_t_10 = 0;
    }
    __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;

    /* "src/python/grpcio/grpc/_cython/_cygrpc/aio/call.pyx.pxi":79
 * 
 *         if self._status.code() is StatusCode.ok:
 *             return _OK_CALL_REPRESENTATION.format(             # <<<<<<<<<<<<<<
 *                 self.__class__.__name__,
 *                 _common.CYGRPC_STATUS_CODE_TO_STATUS_CODE[self._status.code()],
 */
    if (!(likely(PyString_CheckExact(__pyx_t_6))||((__pyx_t_6) == Py_None)||(PyErr_Format(PyExc_TypeError, "Expected %.16s, got %.200s", "str", Py_TYPE(__pyx_t_6)->tp_name), 0))) __PYX_ERR(33, 79, __pyx_L1_error)
    __pyx_r = ((PyObject*)__pyx_t_6);
    __pyx_t_6 = 0;
    goto __pyx_L0;

    /* "src/python/grpcio/grpc/_cython/_cygrpc/aio/call.pyx.pxi":78
 *             return '<{} object>'.format(self.__class__.__name__)
 * 
 *         if self._status.code() is StatusCode.ok:             # <<<<<<<<<<<<<<
 *             return _OK_CALL_REPRESENTATION.format(
 *                 self.__class__.__name__,
 */
  }

  /* "src/python/grpcio/grpc/_cython/_cygrpc/aio/call.pyx.pxi":84
 *                 self._status.details())
 *         else:
 *             return _NON_OK_CALL_REPRESENTATION.format(             # <<<<<<<<<<<<<<
 *                 self.__class__.__name__,
 *                 self._status.details(),
 */
  /*else*/ {
    __Pyx_XDECREF(__pyx_r);
    __Pyx_GetModuleGlobalName(__pyx_t_1, __pyx_n_s_NON_OK_CALL_REPRESENTATION); if (unlikely(!__pyx_t_1)) __PYX_ERR(33, 84, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_1);
    __pyx_t_10 = __Pyx_PyObject_GetAttrStr(__pyx_t_1, __pyx_n_s_format); if (unlikely(!__pyx_t_10)) __PYX_ERR(33, 84, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_10);
    __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;

    /* "src/python/grpcio/grpc/_cython/_cygrpc/aio/call.pyx.pxi":85
 *         else:
 *             return _NON_OK_CALL_REPRESENTATION.format(
 *                 self.__class__.__name__,             # <<<<<<<<<<<<<<
 *                 self._status.details(),
 *                 _common.CYGRPC_STATUS_CODE_TO_STATUS_CODE[self._status.code()],
 */
    __pyx_t_1 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_class); if (unlikely(!__pyx_t_1)) __PYX_ERR(33, 85, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_1);
    __pyx_t_7 = __Pyx_PyObject_GetAttrStr(__pyx_t_1, __pyx_n_s_name_2); if (unlikely(!__pyx_t_7)) __PYX_ERR(33, 85, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_7);
    __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;

    /* "src/python/grpcio/grpc/_cython/_cygrpc/aio/call.pyx.pxi":86
 *             return _NON_OK_CALL_REPRESENTATION.format(
 *                 self.__class__.__name__,
 *                 self._status.details(),             # <<<<<<<<<<<<<<
 *                 _common.CYGRPC_STATUS_CODE_TO_STATUS_CODE[self._status.code()],
 *                 self._status.debug_error_string())
 */
    __pyx_t_1 = ((struct __pyx_vtabstruct_4grpc_7_cython_6cygrpc_AioRpcStatus *)__pyx_v_self->_status->__pyx_vtab)->details(__pyx_v_self->_status, 0); if (unlikely(!__pyx_t_1)) __PYX_ERR(33, 86, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_1);

    /* "src/python/grpcio/grpc/_cython/_cygrpc/aio/call.pyx.pxi":87
 *                 self.__class__.__name__,
 *                 self._status.details(),
 *                 _common.CYGRPC_STATUS_CODE_TO_STATUS_CODE[self._status.code()],             # <<<<<<<<<<<<<<
 *                 self._status.debug_error_string())
 * 
 */
    __pyx_t_8 = __Pyx_PyObject_GetAttrStr(__pyx_v__common, __pyx_n_s_CYGRPC_STATUS_CODE_TO_STATUS_COD); if (unlikely(!__pyx_t_8)) __PYX_ERR(33, 87, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_8);
    __pyx_t_3 = __Pyx_PyInt_From_grpc_status_code(((struct __pyx_vtabstruct_4grpc_7_cython_6cygrpc_AioRpcStatus *)__pyx_v_self->_status->__pyx_vtab)->code(__pyx_v_self->_status, 0)); if (unlikely(!__pyx_t_3)) __PYX_ERR(33, 87, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_3);
    __pyx_t_2 = __Pyx_PyObject_GetItem(__pyx_t_8, __pyx_t_3); if (unlikely(!__pyx_t_2)) __PYX_ERR(33, 87, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_2);
    __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
    __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;

    /* "src/python/grpcio/grpc/_cython/_cygrpc/aio/call.pyx.pxi":88
 *                 self._status.details(),
 *                 _common.CYGRPC_STATUS_CODE_TO_STATUS_CODE[self._status.code()],
 *                 self._status.debug_error_string())             # <<<<<<<<<<<<<<
 * 
 *     def __repr__(self) -> str:
 */
    __pyx_t_3 = ((struct __pyx_vtabstruct_4grpc_7_cython_6cygrpc_AioRpcStatus *)__pyx_v_self->_status->__pyx_vtab)->debug_error_string(__pyx_v_self->_status, 0); if (unlikely(!__pyx_t_3)) __PYX_ERR(33, 88, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_3);
    __pyx_t_8 = NULL;
    __pyx_t_9 = 0;
    if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_10))) {
      __pyx_t_8 = PyMethod_GET_SELF(__pyx_t_10);
      if (likely(__pyx_t_8)) {
        PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_10);
        __Pyx_INCREF(__pyx_t_8);
        __Pyx_INCREF(function);
        __Pyx_DECREF_SET(__pyx_t_10, function);
        __pyx_t_9 = 1;
      }
    }
    #if CYTHON_FAST_PYCALL
    if (PyFunction_Check(__pyx_t_10)) {
      PyObject *__pyx_temp[5] = {__pyx_t_8, __pyx_t_7, __pyx_t_1, __pyx_t_2, __pyx_t_3};
      __pyx_t_6 = __Pyx_PyFunction_FastCall(__pyx_t_10, __pyx_temp+1-__pyx_t_9, 4+__pyx_t_9); if (unlikely(!__pyx_t_6)) __PYX_ERR(33, 84, __pyx_L1_error)
      __Pyx_XDECREF(__pyx_t_8); __pyx_t_8 = 0;
      __Pyx_GOTREF(__pyx_t_6);
      __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
      __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
      __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
      __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
    } else
    #endif
    #if CYTHON_FAST_PYCCALL
    if (__Pyx_PyFastCFunction_Check(__pyx_t_10)) {
      PyObject *__pyx_temp[5] = {__pyx_t_8, __pyx_t_7, __pyx_t_1, __pyx_t_2, __pyx_t_3};
      __pyx_t_6 = __Pyx_PyCFunction_FastCall(__pyx_t_10, __pyx_temp+1-__pyx_t_9, 4+__pyx_t_9); if (unlikely(!__pyx_t_6)) __PYX_ERR(33, 84, __pyx_L1_error)
      __Pyx_XDECREF(__pyx_t_8); __pyx_t_8 = 0;
      __Pyx_GOTREF(__pyx_t_6);
      __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
      __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
      __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
      __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
    } else
    #endif
    {
      __pyx_t_11 = PyTuple_New(4+__pyx_t_9); if (unlikely(!__pyx_t_11)) __PYX_ERR(33, 84, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_11);
      if (__pyx_t_8) {
        __Pyx_GIVEREF(__pyx_t_8); PyTuple_SET_ITEM(__pyx_t_11, 0, __pyx_t_8); __pyx_t_8 = NULL;
      }
      __Pyx_GIVEREF(__pyx_t_7);
      PyTuple_SET_ITEM(__pyx_t_11, 0+__pyx_t_9, __pyx_t_7);
      __Pyx_GIVEREF(__pyx_t_1);
      PyTuple_SET_ITEM(__pyx_t_11, 1+__pyx_t_9, __pyx_t_1);
      __Pyx_GIVEREF(__pyx_t_2);
      PyTuple_SET_ITEM(__pyx_t_11, 2+__pyx_t_9, __pyx_t_2);
      __Pyx_GIVEREF(__pyx_t_3);
      PyTuple_SET_ITEM(__pyx_t_11, 3+__pyx_t_9, __pyx_t_3);
      __pyx_t_7 = 0;
      __pyx_t_1 = 0;
      __pyx_t_2 = 0;
      __pyx_t_3 = 0;
      __pyx_t_6 = __Pyx_PyObject_Call(__pyx_t_10, __pyx_t_11, NULL); if (unlikely(!__pyx_t_6)) __PYX_ERR(33, 84, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_6);
      __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0;
    }
    __Pyx_DECREF(__pyx_t_10); __pyx_t_10 = 0;

    /* "src/python/grpcio/grpc/_cython/_cygrpc/aio/call.pyx.pxi":84
 *                 self._status.details())
 *         else:
 *             return _NON_OK_CALL_REPRESENTATION.format(             # <<<<<<<<<<<<<<
 *                 self.__class__.__name__,
 *                 self._status.details(),
 */
    if (!(likely(PyString_CheckExact(__pyx_t_6))||((__pyx_t_6) == Py_None)||(PyErr_Format(PyExc_TypeError, "Expected %.16s, got %.200s", "str", Py_TYPE(__pyx_t_6)->tp_name), 0))) __PYX_ERR(33, 84, __pyx_L1_error)
    __pyx_r = ((PyObject*)__pyx_t_6);
    __pyx_t_6 = 0;
    goto __pyx_L0;
  }

  /* "src/python/grpcio/grpc/_cython/_cygrpc/aio/call.pyx.pxi":69
 *         shutdown_grpc_aio()
 * 
 *     def _repr(self) -> str:             # <<<<<<<<<<<<<<
 *         """Assembles the RPC representation string."""
 *         # This needs to be loaded at run time once everything
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_XDECREF(__pyx_t_3);
  __Pyx_XDECREF(__pyx_t_6);
  __Pyx_XDECREF(__pyx_t_7);
  __Pyx_XDECREF(__pyx_t_8);
  __Pyx_XDECREF(__pyx_t_10);
  __Pyx_XDECREF(__pyx_t_11);
  __Pyx_AddTraceback("grpc._cython.cygrpc._AioCall._repr", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XDECREF(__pyx_v__common);
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "src/python/grpcio/grpc/_cython/_cygrpc/aio/call.pyx.pxi":90
 *                 self._status.debug_error_string())
 * 
 *     def __repr__(self) -> str:             # <<<<<<<<<<<<<<
 *         return self._repr()
 * 
 */

/* Python wrapper */
static PyObject *__pyx_pw_4grpc_7_cython_6cygrpc_8_AioCall_7__repr__(PyObject *__pyx_v_self); /*proto*/
static PyObject *__pyx_pw_4grpc_7_cython_6cygrpc_8_AioCall_7__repr__(PyObject *__pyx_v_self) {
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__repr__ (wrapper)", 0);
  __pyx_r = __pyx_pf_4grpc_7_cython_6cygrpc_8_AioCall_6__repr__(((struct __pyx_obj_4grpc_7_cython_6cygrpc__AioCall *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_4grpc_7_cython_6cygrpc_8_AioCall_6__repr__(struct __pyx_obj_4grpc_7_cython_6cygrpc__AioCall *__pyx_v_self) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  PyObject *__pyx_t_2 = NULL;
  PyObject *__pyx_t_3 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("__repr__", 0);

  /* "src/python/grpcio/grpc/_cython/_cygrpc/aio/call.pyx.pxi":91
 * 
 *     def __repr__(self) -> str:
 *         return self._repr()             # <<<<<<<<<<<<<<
 * 
 *     def __str__(self) -> str:
 */
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_2 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_repr); if (unlikely(!__pyx_t_2)) __PYX_ERR(33, 91, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __pyx_t_3 = NULL;
  if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_2))) {
    __pyx_t_3 = PyMethod_GET_SELF(__pyx_t_2);
    if (likely(__pyx_t_3)) {
      PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_2);
      __Pyx_INCREF(__pyx_t_3);
      __Pyx_INCREF(function);
      __Pyx_DECREF_SET(__pyx_t_2, function);
    }
  }
  __pyx_t_1 = (__pyx_t_3) ? __Pyx_PyObject_CallOneArg(__pyx_t_2, __pyx_t_3) : __Pyx_PyObject_CallNoArg(__pyx_t_2);
  __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0;
  if (unlikely(!__pyx_t_1)) __PYX_ERR(33, 91, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  __pyx_r = __pyx_t_1;
  __pyx_t_1 = 0;
  goto __pyx_L0;

  /* "src/python/grpcio/grpc/_cython/_cygrpc/aio/call.pyx.pxi":90
 *                 self._status.debug_error_string())
 * 
 *     def __repr__(self) -> str:             # <<<<<<<<<<<<<<
 *         return self._repr()
 * 
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_XDECREF(__pyx_t_3);
  __Pyx_AddTraceback("grpc._cython.cygrpc._AioCall.__repr__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "src/python/grpcio/grpc/_cython/_cygrpc/aio/call.pyx.pxi":93
 *         return self._repr()
 * 
 *     def __str__(self) -> str:             # <<<<<<<<<<<<<<
 *         return self._repr()
 * 
 */

/* Python wrapper */
static PyObject *__pyx_pw_4grpc_7_cython_6cygrpc_8_AioCall_9__str__(PyObject *__pyx_v_self); /*proto*/
static PyObject *__pyx_pw_4grpc_7_cython_6cygrpc_8_AioCall_9__str__(PyObject *__pyx_v_self) {
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__str__ (wrapper)", 0);
  __pyx_r = __pyx_pf_4grpc_7_cython_6cygrpc_8_AioCall_8__str__(((struct __pyx_obj_4grpc_7_cython_6cygrpc__AioCall *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_4grpc_7_cython_6cygrpc_8_AioCall_8__str__(struct __pyx_obj_4grpc_7_cython_6cygrpc__AioCall *__pyx_v_self) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  PyObject *__pyx_t_2 = NULL;
  PyObject *__pyx_t_3 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("__str__", 0);

  /* "src/python/grpcio/grpc/_cython/_cygrpc/aio/call.pyx.pxi":94
 * 
 *     def __str__(self) -> str:
 *         return self._repr()             # <<<<<<<<<<<<<<
 * 
 *     cdef void _create_grpc_call(self,
 */
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_2 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_repr); if (unlikely(!__pyx_t_2)) __PYX_ERR(33, 94, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __pyx_t_3 = NULL;
  if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_2))) {
    __pyx_t_3 = PyMethod_GET_SELF(__pyx_t_2);
    if (likely(__pyx_t_3)) {
      PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_2);
      __Pyx_INCREF(__pyx_t_3);
      __Pyx_INCREF(function);
      __Pyx_DECREF_SET(__pyx_t_2, function);
    }
  }
  __pyx_t_1 = (__pyx_t_3) ? __Pyx_PyObject_CallOneArg(__pyx_t_2, __pyx_t_3) : __Pyx_PyObject_CallNoArg(__pyx_t_2);
  __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0;
  if (unlikely(!__pyx_t_1)) __PYX_ERR(33, 94, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  __pyx_r = __pyx_t_1;
  __pyx_t_1 = 0;
  goto __pyx_L0;

  /* "src/python/grpcio/grpc/_cython/_cygrpc/aio/call.pyx.pxi":93
 *         return self._repr()
 * 
 *     def __str__(self) -> str:             # <<<<<<<<<<<<<<
 *         return self._repr()
 * 
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_XDECREF(__pyx_t_3);
  __Pyx_AddTraceback("grpc._cython.cygrpc._AioCall.__str__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "src/python/grpcio/grpc/_cython/_cygrpc/aio/call.pyx.pxi":96
 *         return self._repr()
 * 
 *     cdef void _create_grpc_call(self,             # <<<<<<<<<<<<<<
 *                                 object deadline,
 *                                 bytes method,
 */

static void __pyx_f_4grpc_7_cython_6cygrpc_8_AioCall__create_grpc_call(struct __pyx_obj_4grpc_7_cython_6cygrpc__AioCall *__pyx_v_self, PyObject *__pyx_v_deadline, PyObject *__pyx_v_method, struct __pyx_obj_4grpc_7_cython_6cygrpc_CallCredentials *__pyx_v_credentials) {
  grpc_slice __pyx_v_method_slice;
  gpr_timespec __pyx_v_c_deadline;
  grpc_call_error __pyx_v_set_credentials_error;
  __Pyx_RefNannyDeclarations
  gpr_timespec __pyx_t_1;
  char const *__pyx_t_2;
  Py_ssize_t __pyx_t_3;
  PyObject *__pyx_t_4 = NULL;
  __pyx_t_4grpc_7_cython_6cygrpc_uint32_t __pyx_t_5;
  int __pyx_t_6;
  int __pyx_t_7;
  grpc_call_credentials *__pyx_t_8;
  PyObject *__pyx_t_9 = NULL;
  PyObject *__pyx_t_10 = NULL;
  PyObject *__pyx_t_11 = NULL;
  PyObject *__pyx_t_12 = NULL;
  PyObject *__pyx_t_13 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("_create_grpc_call", 0);

  /* "src/python/grpcio/grpc/_cython/_cygrpc/aio/call.pyx.pxi":109
 *         """
 *         cdef grpc_slice method_slice
 *         cdef gpr_timespec c_deadline = _timespec_from_time(deadline)             # <<<<<<<<<<<<<<
 *         cdef grpc_call_error set_credentials_error
 * 
 */
  __pyx_t_1 = __pyx_f_4grpc_7_cython_6cygrpc__timespec_from_time(__pyx_v_deadline); if (unlikely(PyErr_Occurred())) __PYX_ERR(33, 109, __pyx_L1_error)
  __pyx_v_c_deadline = __pyx_t_1;

  /* "src/python/grpcio/grpc/_cython/_cygrpc/aio/call.pyx.pxi":113
 * 
 *         method_slice = grpc_slice_from_copied_buffer(
 *             <const char *> method,             # <<<<<<<<<<<<<<
 *             <size_t> len(method)
 *         )
 */
  if (unlikely(__pyx_v_method == Py_None)) {
    PyErr_SetString(PyExc_TypeError, "expected bytes, NoneType found");
    __PYX_ERR(33, 113, __pyx_L1_error)
  }
  __pyx_t_2 = __Pyx_PyBytes_AsString(__pyx_v_method); if (unlikely((!__pyx_t_2) && PyErr_Occurred())) __PYX_ERR(33, 113, __pyx_L1_error)

  /* "src/python/grpcio/grpc/_cython/_cygrpc/aio/call.pyx.pxi":114
 *         method_slice = grpc_slice_from_copied_buffer(
 *             <const char *> method,
 *             <size_t> len(method)             # <<<<<<<<<<<<<<
 *         )
 *         self.call = grpc_channel_create_call(
 */
  if (unlikely(__pyx_v_method == Py_None)) {
    PyErr_SetString(PyExc_TypeError, "object of type 'NoneType' has no len()");
    __PYX_ERR(33, 114, __pyx_L1_error)
  }
  __pyx_t_3 = PyBytes_GET_SIZE(__pyx_v_method); if (unlikely(__pyx_t_3 == ((Py_ssize_t)-1))) __PYX_ERR(33, 114, __pyx_L1_error)

  /* "src/python/grpcio/grpc/_cython/_cygrpc/aio/call.pyx.pxi":112
 *         cdef grpc_call_error set_credentials_error
 * 
 *         method_slice = grpc_slice_from_copied_buffer(             # <<<<<<<<<<<<<<
 *             <const char *> method,
 *             <size_t> len(method)
 */
  __pyx_v_method_slice = grpc_slice_from_copied_buffer(((char const *)__pyx_t_2), ((size_t)__pyx_t_3));

  /* "src/python/grpcio/grpc/_cython/_cygrpc/aio/call.pyx.pxi":119
 *             self._channel.channel,
 *             NULL,
 *             _EMPTY_MASK,             # <<<<<<<<<<<<<<
 *             global_completion_queue(),
 *             method_slice,
 */
  __Pyx_GetModuleGlobalName(__pyx_t_4, __pyx_n_s_EMPTY_MASK); if (unlikely(!__pyx_t_4)) __PYX_ERR(33, 119, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_4);
  __pyx_t_5 = __Pyx_PyInt_As_unsigned_int(__pyx_t_4); if (unlikely((__pyx_t_5 == (unsigned int)-1) && PyErr_Occurred())) __PYX_ERR(33, 119, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;

  /* "src/python/grpcio/grpc/_cython/_cygrpc/aio/call.pyx.pxi":116
 *             <size_t> len(method)
 *         )
 *         self.call = grpc_channel_create_call(             # <<<<<<<<<<<<<<
 *             self._channel.channel,
 *             NULL,
 */
  __pyx_v_self->__pyx_base.call = grpc_channel_create_call(__pyx_v_self->_channel->channel, NULL, __pyx_t_5, __pyx_f_4grpc_7_cython_6cygrpc_global_completion_queue(), __pyx_v_method_slice, NULL, __pyx_v_c_deadline, NULL);

  /* "src/python/grpcio/grpc/_cython/_cygrpc/aio/call.pyx.pxi":127
 *         )
 * 
 *         if credentials is not None:             # <<<<<<<<<<<<<<
 *             set_credentials_error = grpc_call_set_credentials(self.call, credentials.c())
 *             if set_credentials_error != GRPC_CALL_OK:
 */
  __pyx_t_6 = (((PyObject *)__pyx_v_credentials) != Py_None);
  __pyx_t_7 = (__pyx_t_6 != 0);
  if (__pyx_t_7) {

    /* "src/python/grpcio/grpc/_cython/_cygrpc/aio/call.pyx.pxi":128
 * 
 *         if credentials is not None:
 *             set_credentials_error = grpc_call_set_credentials(self.call, credentials.c())             # <<<<<<<<<<<<<<
 *             if set_credentials_error != GRPC_CALL_OK:
 *                 raise InternalError("Credentials couldn't have been set: {0}".format(set_credentials_error))
 */
    __pyx_t_8 = ((struct __pyx_vtabstruct_4grpc_7_cython_6cygrpc_CallCredentials *)__pyx_v_credentials->__pyx_vtab)->c(__pyx_v_credentials); if (unlikely(PyErr_Occurred())) __PYX_ERR(33, 128, __pyx_L1_error)
    __pyx_v_set_credentials_error = grpc_call_set_credentials(__pyx_v_self->__pyx_base.call, __pyx_t_8);

    /* "src/python/grpcio/grpc/_cython/_cygrpc/aio/call.pyx.pxi":129
 *         if credentials is not None:
 *             set_credentials_error = grpc_call_set_credentials(self.call, credentials.c())
 *             if set_credentials_error != GRPC_CALL_OK:             # <<<<<<<<<<<<<<
 *                 raise InternalError("Credentials couldn't have been set: {0}".format(set_credentials_error))
 * 
 */
    __pyx_t_7 = ((__pyx_v_set_credentials_error != GRPC_CALL_OK) != 0);
    if (unlikely(__pyx_t_7)) {

      /* "src/python/grpcio/grpc/_cython/_cygrpc/aio/call.pyx.pxi":130
 *             set_credentials_error = grpc_call_set_credentials(self.call, credentials.c())
 *             if set_credentials_error != GRPC_CALL_OK:
 *                 raise InternalError("Credentials couldn't have been set: {0}".format(set_credentials_error))             # <<<<<<<<<<<<<<
 * 
 *         grpc_slice_unref(method_slice)
 */
      __Pyx_GetModuleGlobalName(__pyx_t_9, __pyx_n_s_InternalError); if (unlikely(!__pyx_t_9)) __PYX_ERR(33, 130, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_9);
      __pyx_t_11 = __Pyx_PyObject_GetAttrStr(__pyx_kp_s_Credentials_couldn_t_have_been_s, __pyx_n_s_format); if (unlikely(!__pyx_t_11)) __PYX_ERR(33, 130, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_11);
      __pyx_t_12 = __Pyx_PyInt_From_grpc_call_error(__pyx_v_set_credentials_error); if (unlikely(!__pyx_t_12)) __PYX_ERR(33, 130, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_12);
      __pyx_t_13 = NULL;
      if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_11))) {
        __pyx_t_13 = PyMethod_GET_SELF(__pyx_t_11);
        if (likely(__pyx_t_13)) {
          PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_11);
          __Pyx_INCREF(__pyx_t_13);
          __Pyx_INCREF(function);
          __Pyx_DECREF_SET(__pyx_t_11, function);
        }
      }
      __pyx_t_10 = (__pyx_t_13) ? __Pyx_PyObject_Call2Args(__pyx_t_11, __pyx_t_13, __pyx_t_12) : __Pyx_PyObject_CallOneArg(__pyx_t_11, __pyx_t_12);
      __Pyx_XDECREF(__pyx_t_13); __pyx_t_13 = 0;
      __Pyx_DECREF(__pyx_t_12); __pyx_t_12 = 0;
      if (unlikely(!__pyx_t_10)) __PYX_ERR(33, 130, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_10);
      __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0;
      __pyx_t_11 = NULL;
      if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_9))) {
        __pyx_t_11 = PyMethod_GET_SELF(__pyx_t_9);
        if (likely(__pyx_t_11)) {
          PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_9);
          __Pyx_INCREF(__pyx_t_11);
          __Pyx_INCREF(function);
          __Pyx_DECREF_SET(__pyx_t_9, function);
        }
      }
      __pyx_t_4 = (__pyx_t_11) ? __Pyx_PyObject_Call2Args(__pyx_t_9, __pyx_t_11, __pyx_t_10) : __Pyx_PyObject_CallOneArg(__pyx_t_9, __pyx_t_10);
      __Pyx_XDECREF(__pyx_t_11); __pyx_t_11 = 0;
      __Pyx_DECREF(__pyx_t_10); __pyx_t_10 = 0;
      if (unlikely(!__pyx_t_4)) __PYX_ERR(33, 130, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_4);
      __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0;
      __Pyx_Raise(__pyx_t_4, 0, 0, 0);
      __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
      __PYX_ERR(33, 130, __pyx_L1_error)

      /* "src/python/grpcio/grpc/_cython/_cygrpc/aio/call.pyx.pxi":129
 *         if credentials is not None:
 *             set_credentials_error = grpc_call_set_credentials(self.call, credentials.c())
 *             if set_credentials_error != GRPC_CALL_OK:             # <<<<<<<<<<<<<<
 *                 raise InternalError("Credentials couldn't have been set: {0}".format(set_credentials_error))
 * 
 */
    }

    /* "src/python/grpcio/grpc/_cython/_cygrpc/aio/call.pyx.pxi":127
 *         )
 * 
 *         if credentials is not None:             # <<<<<<<<<<<<<<
 *             set_credentials_error = grpc_call_set_credentials(self.call, credentials.c())
 *             if set_credentials_error != GRPC_CALL_OK:
 */
  }

  /* "src/python/grpcio/grpc/_cython/_cygrpc/aio/call.pyx.pxi":132
 *                 raise InternalError("Credentials couldn't have been set: {0}".format(set_credentials_error))
 * 
 *         grpc_slice_unref(method_slice)             # <<<<<<<<<<<<<<
 * 
 *     cdef void _set_status(self, AioRpcStatus status) except *:
 */
  grpc_slice_unref(__pyx_v_method_slice);

  /* "src/python/grpcio/grpc/_cython/_cygrpc/aio/call.pyx.pxi":96
 *         return self._repr()
 * 
 *     cdef void _create_grpc_call(self,             # <<<<<<<<<<<<<<
 *                                 object deadline,
 *                                 bytes method,
 */

  /* function exit code */
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_4);
  __Pyx_XDECREF(__pyx_t_9);
  __Pyx_XDECREF(__pyx_t_10);
  __Pyx_XDECREF(__pyx_t_11);
  __Pyx_XDECREF(__pyx_t_12);
  __Pyx_XDECREF(__pyx_t_13);
  __Pyx_AddTraceback("grpc._cython.cygrpc._AioCall._create_grpc_call", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_L0:;
  __Pyx_RefNannyFinishContext();
}

/* "src/python/grpcio/grpc/_cython/_cygrpc/aio/call.pyx.pxi":134
 *         grpc_slice_unref(method_slice)
 * 
 *     cdef void _set_status(self, AioRpcStatus status) except *:             # <<<<<<<<<<<<<<
 *         cdef list waiters
 * 
 */

static void __pyx_f_4grpc_7_cython_6cygrpc_8_AioCall__set_status(struct __pyx_obj_4grpc_7_cython_6cygrpc__AioCall *__pyx_v_self, struct __pyx_obj_4grpc_7_cython_6cygrpc_AioRpcStatus *__pyx_v_status) {
  PyObject *__pyx_v_waiter = NULL;
  PyObject *__pyx_v_callback = NULL;
  __Pyx_RefNannyDeclarations
  int __pyx_t_1;
  int __pyx_t_2;
  PyObject *__pyx_t_3 = NULL;
  Py_ssize_t __pyx_t_4;
  PyObject *__pyx_t_5 = NULL;
  PyObject *__pyx_t_6 = NULL;
  PyObject *__pyx_t_7 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("_set_status", 0);

  /* "src/python/grpcio/grpc/_cython/_cygrpc/aio/call.pyx.pxi":138
 * 
 *         # No more waiters should be expected since status has been set.
 *         self._status = status             # <<<<<<<<<<<<<<
 * 
 *         if self._initial_metadata is None:
 */
  __Pyx_INCREF(((PyObject *)__pyx_v_status));
  __Pyx_GIVEREF(((PyObject *)__pyx_v_status));
  __Pyx_GOTREF(__pyx_v_self->_status);
  __Pyx_DECREF(((PyObject *)__pyx_v_self->_status));
  __pyx_v_self->_status = __pyx_v_status;

  /* "src/python/grpcio/grpc/_cython/_cygrpc/aio/call.pyx.pxi":140
 *         self._status = status
 * 
 *         if self._initial_metadata is None:             # <<<<<<<<<<<<<<
 *             self._set_initial_metadata(_IMMUTABLE_EMPTY_METADATA)
 * 
 */
  __pyx_t_1 = (__pyx_v_self->_initial_metadata == ((PyObject*)Py_None));
  __pyx_t_2 = (__pyx_t_1 != 0);
  if (__pyx_t_2) {

    /* "src/python/grpcio/grpc/_cython/_cygrpc/aio/call.pyx.pxi":141
 * 
 *         if self._initial_metadata is None:
 *             self._set_initial_metadata(_IMMUTABLE_EMPTY_METADATA)             # <<<<<<<<<<<<<<
 * 
 *         for waiter in self._waiters_status:
 */
    __Pyx_GetModuleGlobalName(__pyx_t_3, __pyx_n_s_IMMUTABLE_EMPTY_METADATA); if (unlikely(!__pyx_t_3)) __PYX_ERR(33, 141, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_3);
    if (!(likely(PyTuple_CheckExact(__pyx_t_3))||((__pyx_t_3) == Py_None)||(PyErr_Format(PyExc_TypeError, "Expected %.16s, got %.200s", "tuple", Py_TYPE(__pyx_t_3)->tp_name), 0))) __PYX_ERR(33, 141, __pyx_L1_error)
    ((struct __pyx_vtabstruct_4grpc_7_cython_6cygrpc__AioCall *)__pyx_v_self->__pyx_vtab)->_set_initial_metadata(__pyx_v_self, ((PyObject*)__pyx_t_3)); if (unlikely(PyErr_Occurred())) __PYX_ERR(33, 141, __pyx_L1_error)
    __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;

    /* "src/python/grpcio/grpc/_cython/_cygrpc/aio/call.pyx.pxi":140
 *         self._status = status
 * 
 *         if self._initial_metadata is None:             # <<<<<<<<<<<<<<
 *             self._set_initial_metadata(_IMMUTABLE_EMPTY_METADATA)
 * 
 */
  }

  /* "src/python/grpcio/grpc/_cython/_cygrpc/aio/call.pyx.pxi":143
 *             self._set_initial_metadata(_IMMUTABLE_EMPTY_METADATA)
 * 
 *         for waiter in self._waiters_status:             # <<<<<<<<<<<<<<
 *             if not waiter.done():
 *                 waiter.set_result(None)
 */
  if (unlikely(__pyx_v_self->_waiters_status == Py_None)) {
    PyErr_SetString(PyExc_TypeError, "'NoneType' object is not iterable");
    __PYX_ERR(33, 143, __pyx_L1_error)
  }
  __pyx_t_3 = __pyx_v_self->_waiters_status; __Pyx_INCREF(__pyx_t_3); __pyx_t_4 = 0;
  for (;;) {
    if (__pyx_t_4 >= PyList_GET_SIZE(__pyx_t_3)) break;
    #if CYTHON_ASSUME_SAFE_MACROS && !CYTHON_AVOID_BORROWED_REFS
    __pyx_t_5 = PyList_GET_ITEM(__pyx_t_3, __pyx_t_4); __Pyx_INCREF(__pyx_t_5); __pyx_t_4++; if (unlikely(0 < 0)) __PYX_ERR(33, 143, __pyx_L1_error)
    #else
    __pyx_t_5 = PySequence_ITEM(__pyx_t_3, __pyx_t_4); __pyx_t_4++; if (unlikely(!__pyx_t_5)) __PYX_ERR(33, 143, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_5);
    #endif
    __Pyx_XDECREF_SET(__pyx_v_waiter, __pyx_t_5);
    __pyx_t_5 = 0;

    /* "src/python/grpcio/grpc/_cython/_cygrpc/aio/call.pyx.pxi":144
 * 
 *         for waiter in self._waiters_status:
 *             if not waiter.done():             # <<<<<<<<<<<<<<
 *                 waiter.set_result(None)
 *         self._waiters_status = []
 */
    __pyx_t_6 = __Pyx_PyObject_GetAttrStr(__pyx_v_waiter, __pyx_n_s_done); if (unlikely(!__pyx_t_6)) __PYX_ERR(33, 144, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_6);
    __pyx_t_7 = NULL;
    if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_6))) {
      __pyx_t_7 = PyMethod_GET_SELF(__pyx_t_6);
      if (likely(__pyx_t_7)) {
        PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_6);
        __Pyx_INCREF(__pyx_t_7);
        __Pyx_INCREF(function);
        __Pyx_DECREF_SET(__pyx_t_6, function);
      }
    }
    __pyx_t_5 = (__pyx_t_7) ? __Pyx_PyObject_CallOneArg(__pyx_t_6, __pyx_t_7) : __Pyx_PyObject_CallNoArg(__pyx_t_6);
    __Pyx_XDECREF(__pyx_t_7); __pyx_t_7 = 0;
    if (unlikely(!__pyx_t_5)) __PYX_ERR(33, 144, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_5);
    __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
    __pyx_t_2 = __Pyx_PyObject_IsTrue(__pyx_t_5); if (unlikely(__pyx_t_2 < 0)) __PYX_ERR(33, 144, __pyx_L1_error)
    __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
    __pyx_t_1 = ((!__pyx_t_2) != 0);
    if (__pyx_t_1) {

      /* "src/python/grpcio/grpc/_cython/_cygrpc/aio/call.pyx.pxi":145
 *         for waiter in self._waiters_status:
 *             if not waiter.done():
 *                 waiter.set_result(None)             # <<<<<<<<<<<<<<
 *         self._waiters_status = []
 * 
 */
      __pyx_t_6 = __Pyx_PyObject_GetAttrStr(__pyx_v_waiter, __pyx_n_s_set_result); if (unlikely(!__pyx_t_6)) __PYX_ERR(33, 145, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_6);
      __pyx_t_7 = NULL;
      if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_6))) {
        __pyx_t_7 = PyMethod_GET_SELF(__pyx_t_6);
        if (likely(__pyx_t_7)) {
          PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_6);
          __Pyx_INCREF(__pyx_t_7);
          __Pyx_INCREF(function);
          __Pyx_DECREF_SET(__pyx_t_6, function);
        }
      }
      __pyx_t_5 = (__pyx_t_7) ? __Pyx_PyObject_Call2Args(__pyx_t_6, __pyx_t_7, Py_None) : __Pyx_PyObject_CallOneArg(__pyx_t_6, Py_None);
      __Pyx_XDECREF(__pyx_t_7); __pyx_t_7 = 0;
      if (unlikely(!__pyx_t_5)) __PYX_ERR(33, 145, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_5);
      __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
      __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;

      /* "src/python/grpcio/grpc/_cython/_cygrpc/aio/call.pyx.pxi":144
 * 
 *         for waiter in self._waiters_status:
 *             if not waiter.done():             # <<<<<<<<<<<<<<
 *                 waiter.set_result(None)
 *         self._waiters_status = []
 */
    }

    /* "src/python/grpcio/grpc/_cython/_cygrpc/aio/call.pyx.pxi":143
 *             self._set_initial_metadata(_IMMUTABLE_EMPTY_METADATA)
 * 
 *         for waiter in self._waiters_status:             # <<<<<<<<<<<<<<
 *             if not waiter.done():
 *                 waiter.set_result(None)
 */
  }
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;

  /* "src/python/grpcio/grpc/_cython/_cygrpc/aio/call.pyx.pxi":146
 *             if not waiter.done():
 *                 waiter.set_result(None)
 *         self._waiters_status = []             # <<<<<<<<<<<<<<
 * 
 *         for callback in self._done_callbacks:
 */
  __pyx_t_3 = PyList_New(0); if (unlikely(!__pyx_t_3)) __PYX_ERR(33, 146, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  __Pyx_GIVEREF(__pyx_t_3);
  __Pyx_GOTREF(__pyx_v_self->_waiters_status);
  __Pyx_DECREF(__pyx_v_self->_waiters_status);
  __pyx_v_self->_waiters_status = ((PyObject*)__pyx_t_3);
  __pyx_t_3 = 0;

  /* "src/python/grpcio/grpc/_cython/_cygrpc/aio/call.pyx.pxi":148
 *         self._waiters_status = []
 * 
 *         for callback in self._done_callbacks:             # <<<<<<<<<<<<<<
 *             callback()
 * 
 */
  if (unlikely(__pyx_v_self->_done_callbacks == Py_None)) {
    PyErr_SetString(PyExc_TypeError, "'NoneType' object is not iterable");
    __PYX_ERR(33, 148, __pyx_L1_error)
  }
  __pyx_t_3 = __pyx_v_self->_done_callbacks; __Pyx_INCREF(__pyx_t_3); __pyx_t_4 = 0;
  for (;;) {
    if (__pyx_t_4 >= PyList_GET_SIZE(__pyx_t_3)) break;
    #if CYTHON_ASSUME_SAFE_MACROS && !CYTHON_AVOID_BORROWED_REFS
    __pyx_t_5 = PyList_GET_ITEM(__pyx_t_3, __pyx_t_4); __Pyx_INCREF(__pyx_t_5); __pyx_t_4++; if (unlikely(0 < 0)) __PYX_ERR(33, 148, __pyx_L1_error)
    #else
    __pyx_t_5 = PySequence_ITEM(__pyx_t_3, __pyx_t_4); __pyx_t_4++; if (unlikely(!__pyx_t_5)) __PYX_ERR(33, 148, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_5);
    #endif
    __Pyx_XDECREF_SET(__pyx_v_callback, __pyx_t_5);
    __pyx_t_5 = 0;

    /* "src/python/grpcio/grpc/_cython/_cygrpc/aio/call.pyx.pxi":149
 * 
 *         for callback in self._done_callbacks:
 *             callback()             # <<<<<<<<<<<<<<
 * 
 *     cdef void _set_initial_metadata(self, tuple initial_metadata) except *:
 */
    __Pyx_INCREF(__pyx_v_callback);
    __pyx_t_6 = __pyx_v_callback; __pyx_t_7 = NULL;
    if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_6))) {
      __pyx_t_7 = PyMethod_GET_SELF(__pyx_t_6);
      if (likely(__pyx_t_7)) {
        PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_6);
        __Pyx_INCREF(__pyx_t_7);
        __Pyx_INCREF(function);
        __Pyx_DECREF_SET(__pyx_t_6, function);
      }
    }
    __pyx_t_5 = (__pyx_t_7) ? __Pyx_PyObject_CallOneArg(__pyx_t_6, __pyx_t_7) : __Pyx_PyObject_CallNoArg(__pyx_t_6);
    __Pyx_XDECREF(__pyx_t_7); __pyx_t_7 = 0;
    if (unlikely(!__pyx_t_5)) __PYX_ERR(33, 149, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_5);
    __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
    __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;

    /* "src/python/grpcio/grpc/_cython/_cygrpc/aio/call.pyx.pxi":148
 *         self._waiters_status = []
 * 
 *         for callback in self._done_callbacks:             # <<<<<<<<<<<<<<
 *             callback()
 * 
 */
  }
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;

  /* "src/python/grpcio/grpc/_cython/_cygrpc/aio/call.pyx.pxi":134
 *         grpc_slice_unref(method_slice)
 * 
 *     cdef void _set_status(self, AioRpcStatus status) except *:             # <<<<<<<<<<<<<<
 *         cdef list waiters
 * 
 */

  /* function exit code */
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_3);
  __Pyx_XDECREF(__pyx_t_5);
  __Pyx_XDECREF(__pyx_t_6);
  __Pyx_XDECREF(__pyx_t_7);
  __Pyx_AddTraceback("grpc._cython.cygrpc._AioCall._set_status", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_L0:;
  __Pyx_XDECREF(__pyx_v_waiter);
  __Pyx_XDECREF(__pyx_v_callback);
  __Pyx_RefNannyFinishContext();
}

/* "src/python/grpcio/grpc/_cython/_cygrpc/aio/call.pyx.pxi":151
 *             callback()
 * 
 *     cdef void _set_initial_metadata(self, tuple initial_metadata) except *:             # <<<<<<<<<<<<<<
 *         if self._initial_metadata is not None:
 *             # Some gRPC calls might end before the initial metadata arrived in
 */

static void __pyx_f_4grpc_7_cython_6cygrpc_8_AioCall__set_initial_metadata(struct __pyx_obj_4grpc_7_cython_6cygrpc__AioCall *__pyx_v_self, PyObject *__pyx_v_initial_metadata) {
  PyObject *__pyx_v_waiter = NULL;
  __Pyx_RefNannyDeclarations
  int __pyx_t_1;
  int __pyx_t_2;
  PyObject *__pyx_t_3 = NULL;
  Py_ssize_t __pyx_t_4;
  PyObject *__pyx_t_5 = NULL;
  PyObject *__pyx_t_6 = NULL;
  PyObject *__pyx_t_7 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("_set_initial_metadata", 0);

  /* "src/python/grpcio/grpc/_cython/_cygrpc/aio/call.pyx.pxi":152
 * 
 *     cdef void _set_initial_metadata(self, tuple initial_metadata) except *:
 *         if self._initial_metadata is not None:             # <<<<<<<<<<<<<<
 *             # Some gRPC calls might end before the initial metadata arrived in
 *             # the Call object. That causes this method to be invoked twice: 1.
 */
  __pyx_t_1 = (__pyx_v_self->_initial_metadata != ((PyObject*)Py_None));
  __pyx_t_2 = (__pyx_t_1 != 0);
  if (__pyx_t_2) {

    /* "src/python/grpcio/grpc/_cython/_cygrpc/aio/call.pyx.pxi":157
 *             # filled with an empty metadata; 2. updated with the actual user
 *             # provided metadata.
 *             return             # <<<<<<<<<<<<<<
 * 
 *         cdef list waiters
 */
    goto __pyx_L0;

    /* "src/python/grpcio/grpc/_cython/_cygrpc/aio/call.pyx.pxi":152
 * 
 *     cdef void _set_initial_metadata(self, tuple initial_metadata) except *:
 *         if self._initial_metadata is not None:             # <<<<<<<<<<<<<<
 *             # Some gRPC calls might end before the initial metadata arrived in
 *             # the Call object. That causes this method to be invoked twice: 1.
 */
  }

  /* "src/python/grpcio/grpc/_cython/_cygrpc/aio/call.pyx.pxi":163
 *         # No more waiters should be expected since initial metadata has been
 *         # set.
 *         self._initial_metadata = initial_metadata             # <<<<<<<<<<<<<<
 * 
 *         for waiter in self._waiters_initial_metadata:
 */
  __Pyx_INCREF(__pyx_v_initial_metadata);
  __Pyx_GIVEREF(__pyx_v_initial_metadata);
  __Pyx_GOTREF(__pyx_v_self->_initial_metadata);
  __Pyx_DECREF(__pyx_v_self->_initial_metadata);
  __pyx_v_self->_initial_metadata = __pyx_v_initial_metadata;

  /* "src/python/grpcio/grpc/_cython/_cygrpc/aio/call.pyx.pxi":165
 *         self._initial_metadata = initial_metadata
 * 
 *         for waiter in self._waiters_initial_metadata:             # <<<<<<<<<<<<<<
 *             if not waiter.done():
 *                 waiter.set_result(None)
 */
  if (unlikely(__pyx_v_self->_waiters_initial_metadata == Py_None)) {
    PyErr_SetString(PyExc_TypeError, "'NoneType' object is not iterable");
    __PYX_ERR(33, 165, __pyx_L1_error)
  }
  __pyx_t_3 = __pyx_v_self->_waiters_initial_metadata; __Pyx_INCREF(__pyx_t_3); __pyx_t_4 = 0;
  for (;;) {
    if (__pyx_t_4 >= PyList_GET_SIZE(__pyx_t_3)) break;
    #if CYTHON_ASSUME_SAFE_MACROS && !CYTHON_AVOID_BORROWED_REFS
    __pyx_t_5 = PyList_GET_ITEM(__pyx_t_3, __pyx_t_4); __Pyx_INCREF(__pyx_t_5); __pyx_t_4++; if (unlikely(0 < 0)) __PYX_ERR(33, 165, __pyx_L1_error)
    #else
    __pyx_t_5 = PySequence_ITEM(__pyx_t_3, __pyx_t_4); __pyx_t_4++; if (unlikely(!__pyx_t_5)) __PYX_ERR(33, 165, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_5);
    #endif
    __Pyx_XDECREF_SET(__pyx_v_waiter, __pyx_t_5);
    __pyx_t_5 = 0;

    /* "src/python/grpcio/grpc/_cython/_cygrpc/aio/call.pyx.pxi":166
 * 
 *         for waiter in self._waiters_initial_metadata:
 *             if not waiter.done():             # <<<<<<<<<<<<<<
 *                 waiter.set_result(None)
 *         self._waiters_initial_metadata = []
 */
    __pyx_t_6 = __Pyx_PyObject_GetAttrStr(__pyx_v_waiter, __pyx_n_s_done); if (unlikely(!__pyx_t_6)) __PYX_ERR(33, 166, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_6);
    __pyx_t_7 = NULL;
    if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_6))) {
      __pyx_t_7 = PyMethod_GET_SELF(__pyx_t_6);
      if (likely(__pyx_t_7)) {
        PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_6);
        __Pyx_INCREF(__pyx_t_7);
        __Pyx_INCREF(function);
        __Pyx_DECREF_SET(__pyx_t_6, function);
      }
    }
    __pyx_t_5 = (__pyx_t_7) ? __Pyx_PyObject_CallOneArg(__pyx_t_6, __pyx_t_7) : __Pyx_PyObject_CallNoArg(__pyx_t_6);
    __Pyx_XDECREF(__pyx_t_7); __pyx_t_7 = 0;
    if (unlikely(!__pyx_t_5)) __PYX_ERR(33, 166, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_5);
    __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
    __pyx_t_2 = __Pyx_PyObject_IsTrue(__pyx_t_5); if (unlikely(__pyx_t_2 < 0)) __PYX_ERR(33, 166, __pyx_L1_error)
    __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
    __pyx_t_1 = ((!__pyx_t_2) != 0);
    if (__pyx_t_1) {

      /* "src/python/grpcio/grpc/_cython/_cygrpc/aio/call.pyx.pxi":167
 *         for waiter in self._waiters_initial_metadata:
 *             if not waiter.done():
 *                 waiter.set_result(None)             # <<<<<<<<<<<<<<
 *         self._waiters_initial_metadata = []
 * 
 */
      __pyx_t_6 = __Pyx_PyObject_GetAttrStr(__pyx_v_waiter, __pyx_n_s_set_result); if (unlikely(!__pyx_t_6)) __PYX_ERR(33, 167, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_6);
      __pyx_t_7 = NULL;
      if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_6))) {
        __pyx_t_7 = PyMethod_GET_SELF(__pyx_t_6);
        if (likely(__pyx_t_7)) {
          PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_6);
          __Pyx_INCREF(__pyx_t_7);
          __Pyx_INCREF(function);
          __Pyx_DECREF_SET(__pyx_t_6, function);
        }
      }
      __pyx_t_5 = (__pyx_t_7) ? __Pyx_PyObject_Call2Args(__pyx_t_6, __pyx_t_7, Py_None) : __Pyx_PyObject_CallOneArg(__pyx_t_6, Py_None);
      __Pyx_XDECREF(__pyx_t_7); __pyx_t_7 = 0;
      if (unlikely(!__pyx_t_5)) __PYX_ERR(33, 167, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_5);
      __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
      __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;

      /* "src/python/grpcio/grpc/_cython/_cygrpc/aio/call.pyx.pxi":166
 * 
 *         for waiter in self._waiters_initial_metadata:
 *             if not waiter.done():             # <<<<<<<<<<<<<<
 *                 waiter.set_result(None)
 *         self._waiters_initial_metadata = []
 */
    }

    /* "src/python/grpcio/grpc/_cython/_cygrpc/aio/call.pyx.pxi":165
 *         self._initial_metadata = initial_metadata
 * 
 *         for waiter in self._waiters_initial_metadata:             # <<<<<<<<<<<<<<
 *             if not waiter.done():
 *                 waiter.set_result(None)
 */
  }
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;

  /* "src/python/grpcio/grpc/_cython/_cygrpc/aio/call.pyx.pxi":168
 *             if not waiter.done():
 *                 waiter.set_result(None)
 *         self._waiters_initial_metadata = []             # <<<<<<<<<<<<<<
 * 
 *     def add_done_callback(self, callback):
 */
  __pyx_t_3 = PyList_New(0); if (unlikely(!__pyx_t_3)) __PYX_ERR(33, 168, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  __Pyx_GIVEREF(__pyx_t_3);
  __Pyx_GOTREF(__pyx_v_self->_waiters_initial_metadata);
  __Pyx_DECREF(__pyx_v_self->_waiters_initial_metadata);
  __pyx_v_self->_waiters_initial_metadata = ((PyObject*)__pyx_t_3);
  __pyx_t_3 = 0;

  /* "src/python/grpcio/grpc/_cython/_cygrpc/aio/call.pyx.pxi":151
 *             callback()
 * 
 *     cdef void _set_initial_metadata(self, tuple initial_metadata) except *:             # <<<<<<<<<<<<<<
 *         if self._initial_metadata is not None:
 *             # Some gRPC calls might end before the initial metadata arrived in
 */

  /* function exit code */
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_3);
  __Pyx_XDECREF(__pyx_t_5);
  __Pyx_XDECREF(__pyx_t_6);
  __Pyx_XDECREF(__pyx_t_7);
  __Pyx_AddTraceback("grpc._cython.cygrpc._AioCall._set_initial_metadata", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_L0:;
  __Pyx_XDECREF(__pyx_v_waiter);
  __Pyx_RefNannyFinishContext();
}

/* "src/python/grpcio/grpc/_cython/_cygrpc/aio/call.pyx.pxi":170
 *         self._waiters_initial_metadata = []
 * 
 *     def add_done_callback(self, callback):             # <<<<<<<<<<<<<<
 *         if self.done():
 *             callback()
 */

/* Python wrapper */
static PyObject *__pyx_pw_4grpc_7_cython_6cygrpc_8_AioCall_11add_done_callback(PyObject *__pyx_v_self, PyObject *__pyx_v_callback); /*proto*/
static PyObject *__pyx_pw_4grpc_7_cython_6cygrpc_8_AioCall_11add_done_callback(PyObject *__pyx_v_self, PyObject *__pyx_v_callback) {
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("add_done_callback (wrapper)", 0);
  __pyx_r = __pyx_pf_4grpc_7_cython_6cygrpc_8_AioCall_10add_done_callback(((struct __pyx_obj_4grpc_7_cython_6cygrpc__AioCall *)__pyx_v_self), ((PyObject *)__pyx_v_callback));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_4grpc_7_cython_6cygrpc_8_AioCall_10add_done_callback(struct __pyx_obj_4grpc_7_cython_6cygrpc__AioCall *__pyx_v_self, PyObject *__pyx_v_callback) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  PyObject *__pyx_t_2 = NULL;
  PyObject *__pyx_t_3 = NULL;
  int __pyx_t_4;
  int __pyx_t_5;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("add_done_callback", 0);

  /* "src/python/grpcio/grpc/_cython/_cygrpc/aio/call.pyx.pxi":171
 * 
 *     def add_done_callback(self, callback):
 *         if self.done():             # <<<<<<<<<<<<<<
 *             callback()
 *         else:
 */
  __pyx_t_2 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_done); if (unlikely(!__pyx_t_2)) __PYX_ERR(33, 171, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __pyx_t_3 = NULL;
  if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_2))) {
    __pyx_t_3 = PyMethod_GET_SELF(__pyx_t_2);
    if (likely(__pyx_t_3)) {
      PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_2);
      __Pyx_INCREF(__pyx_t_3);
      __Pyx_INCREF(function);
      __Pyx_DECREF_SET(__pyx_t_2, function);
    }
  }
  __pyx_t_1 = (__pyx_t_3) ? __Pyx_PyObject_CallOneArg(__pyx_t_2, __pyx_t_3) : __Pyx_PyObject_CallNoArg(__pyx_t_2);
  __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0;
  if (unlikely(!__pyx_t_1)) __PYX_ERR(33, 171, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  __pyx_t_4 = __Pyx_PyObject_IsTrue(__pyx_t_1); if (unlikely(__pyx_t_4 < 0)) __PYX_ERR(33, 171, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  if (__pyx_t_4) {

    /* "src/python/grpcio/grpc/_cython/_cygrpc/aio/call.pyx.pxi":172
 *     def add_done_callback(self, callback):
 *         if self.done():
 *             callback()             # <<<<<<<<<<<<<<
 *         else:
 *             self._done_callbacks.append(callback)
 */
    __Pyx_INCREF(__pyx_v_callback);
    __pyx_t_2 = __pyx_v_callback; __pyx_t_3 = NULL;
    if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_2))) {
      __pyx_t_3 = PyMethod_GET_SELF(__pyx_t_2);
      if (likely(__pyx_t_3)) {
        PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_2);
        __Pyx_INCREF(__pyx_t_3);
        __Pyx_INCREF(function);
        __Pyx_DECREF_SET(__pyx_t_2, function);
      }
    }
    __pyx_t_1 = (__pyx_t_3) ? __Pyx_PyObject_CallOneArg(__pyx_t_2, __pyx_t_3) : __Pyx_PyObject_CallNoArg(__pyx_t_2);
    __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0;
    if (unlikely(!__pyx_t_1)) __PYX_ERR(33, 172, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_1);
    __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
    __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;

    /* "src/python/grpcio/grpc/_cython/_cygrpc/aio/call.pyx.pxi":171
 * 
 *     def add_done_callback(self, callback):
 *         if self.done():             # <<<<<<<<<<<<<<
 *             callback()
 *         else:
 */
    goto __pyx_L3;
  }

  /* "src/python/grpcio/grpc/_cython/_cygrpc/aio/call.pyx.pxi":174
 *             callback()
 *         else:
 *             self._done_callbacks.append(callback)             # <<<<<<<<<<<<<<
 * 
 *     def time_remaining(self):
 */
  /*else*/ {
    if (unlikely(__pyx_v_self->_done_callbacks == Py_None)) {
      PyErr_Format(PyExc_AttributeError, "'NoneType' object has no attribute '%.30s'", "append");
      __PYX_ERR(33, 174, __pyx_L1_error)
    }
    __pyx_t_5 = __Pyx_PyList_Append(__pyx_v_self->_done_callbacks, __pyx_v_callback); if (unlikely(__pyx_t_5 == ((int)-1))) __PYX_ERR(33, 174, __pyx_L1_error)
  }
  __pyx_L3:;

  /* "src/python/grpcio/grpc/_cython/_cygrpc/aio/call.pyx.pxi":170
 *         self._waiters_initial_metadata = []
 * 
 *     def add_done_callback(self, callback):             # <<<<<<<<<<<<<<
 *         if self.done():
 *             callback()
 */

  /* function exit code */
  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_XDECREF(__pyx_t_3);
  __Pyx_AddTraceback("grpc._cython.cygrpc._AioCall.add_done_callback", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "src/python/grpcio/grpc/_cython/_cygrpc/aio/call.pyx.pxi":176
 *             self._done_callbacks.append(callback)
 * 
 *     def time_remaining(self):             # <<<<<<<<<<<<<<
 *         if self._deadline is None:
 *             return None
 */

/* Python wrapper */
static PyObject *__pyx_pw_4grpc_7_cython_6cygrpc_8_AioCall_13time_remaining(PyObject *__pyx_v_self, CYTHON_UNUSED PyObject *unused); /*proto*/
static PyObject *__pyx_pw_4grpc_7_cython_6cygrpc_8_AioCall_13time_remaining(PyObject *__pyx_v_self, CYTHON_UNUSED PyObject *unused) {
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("time_remaining (wrapper)", 0);
  __pyx_r = __pyx_pf_4grpc_7_cython_6cygrpc_8_AioCall_12time_remaining(((struct __pyx_obj_4grpc_7_cython_6cygrpc__AioCall *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_4grpc_7_cython_6cygrpc_8_AioCall_12time_remaining(struct __pyx_obj_4grpc_7_cython_6cygrpc__AioCall *__pyx_v_self) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  int __pyx_t_1;
  int __pyx_t_2;
  PyObject *__pyx_t_3 = NULL;
  PyObject *__pyx_t_4 = NULL;
  PyObject *__pyx_t_5 = NULL;
  long __pyx_t_6;
  PyObject *__pyx_t_7 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("time_remaining", 0);

  /* "src/python/grpcio/grpc/_cython/_cygrpc/aio/call.pyx.pxi":177
 * 
 *     def time_remaining(self):
 *         if self._deadline is None:             # <<<<<<<<<<<<<<
 *             return None
 *         else:
 */
  __pyx_t_1 = (__pyx_v_self->_deadline == Py_None);
  __pyx_t_2 = (__pyx_t_1 != 0);
  if (__pyx_t_2) {

    /* "src/python/grpcio/grpc/_cython/_cygrpc/aio/call.pyx.pxi":178
 *     def time_remaining(self):
 *         if self._deadline is None:
 *             return None             # <<<<<<<<<<<<<<
 *         else:
 *             return max(0, self._deadline - time.time())
 */
    __Pyx_XDECREF(__pyx_r);
    __pyx_r = Py_None; __Pyx_INCREF(Py_None);
    goto __pyx_L0;

    /* "src/python/grpcio/grpc/_cython/_cygrpc/aio/call.pyx.pxi":177
 * 
 *     def time_remaining(self):
 *         if self._deadline is None:             # <<<<<<<<<<<<<<
 *             return None
 *         else:
 */
  }

  /* "src/python/grpcio/grpc/_cython/_cygrpc/aio/call.pyx.pxi":180
 *             return None
 *         else:
 *             return max(0, self._deadline - time.time())             # <<<<<<<<<<<<<<
 * 
 *     def cancel(self, str details):
 */
  /*else*/ {
    __Pyx_XDECREF(__pyx_r);
    __Pyx_GetModuleGlobalName(__pyx_t_4, __pyx_n_s_time); if (unlikely(!__pyx_t_4)) __PYX_ERR(33, 180, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_4);
    __pyx_t_5 = __Pyx_PyObject_GetAttrStr(__pyx_t_4, __pyx_n_s_time); if (unlikely(!__pyx_t_5)) __PYX_ERR(33, 180, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_5);
    __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
    __pyx_t_4 = NULL;
    if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_5))) {
      __pyx_t_4 = PyMethod_GET_SELF(__pyx_t_5);
      if (likely(__pyx_t_4)) {
        PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_5);
        __Pyx_INCREF(__pyx_t_4);
        __Pyx_INCREF(function);
        __Pyx_DECREF_SET(__pyx_t_5, function);
      }
    }
    __pyx_t_3 = (__pyx_t_4) ? __Pyx_PyObject_CallOneArg(__pyx_t_5, __pyx_t_4) : __Pyx_PyObject_CallNoArg(__pyx_t_5);
    __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0;
    if (unlikely(!__pyx_t_3)) __PYX_ERR(33, 180, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_3);
    __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
    __pyx_t_5 = PyNumber_Subtract(__pyx_v_self->_deadline, __pyx_t_3); if (unlikely(!__pyx_t_5)) __PYX_ERR(33, 180, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_5);
    __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
    __pyx_t_6 = 0;
    __pyx_t_4 = __Pyx_PyInt_From_long(__pyx_t_6); if (unlikely(!__pyx_t_4)) __PYX_ERR(33, 180, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_4);
    __pyx_t_7 = PyObject_RichCompare(__pyx_t_5, __pyx_t_4, Py_GT); __Pyx_XGOTREF(__pyx_t_7); if (unlikely(!__pyx_t_7)) __PYX_ERR(33, 180, __pyx_L1_error)
    __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
    __pyx_t_2 = __Pyx_PyObject_IsTrue(__pyx_t_7); if (unlikely(__pyx_t_2 < 0)) __PYX_ERR(33, 180, __pyx_L1_error)
    __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
    if (__pyx_t_2) {
      __Pyx_INCREF(__pyx_t_5);
      __pyx_t_3 = __pyx_t_5;
    } else {
      __pyx_t_7 = __Pyx_PyInt_From_long(__pyx_t_6); if (unlikely(!__pyx_t_7)) __PYX_ERR(33, 180, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_7);
      __pyx_t_3 = __pyx_t_7;
      __pyx_t_7 = 0;
    }
    __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
    __Pyx_INCREF(__pyx_t_3);
    __pyx_r = __pyx_t_3;
    __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
    goto __pyx_L0;
  }

  /* "src/python/grpcio/grpc/_cython/_cygrpc/aio/call.pyx.pxi":176
 *             self._done_callbacks.append(callback)
 * 
 *     def time_remaining(self):             # <<<<<<<<<<<<<<
 *         if self._deadline is None:
 *             return None
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_3);
  __Pyx_XDECREF(__pyx_t_4);
  __Pyx_XDECREF(__pyx_t_5);
  __Pyx_XDECREF(__pyx_t_7);
  __Pyx_AddTraceback("grpc._cython.cygrpc._AioCall.time_remaining", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "src/python/grpcio/grpc/_cython/_cygrpc/aio/call.pyx.pxi":182
 *             return max(0, self._deadline - time.time())
 * 
 *     def cancel(self, str details):             # <<<<<<<<<<<<<<
 *         """Cancels the RPC in Core with given RPC status.
 * 
 */

/* Python wrapper */
static PyObject *__pyx_pw_4grpc_7_cython_6cygrpc_8_AioCall_15cancel(PyObject *__pyx_v_self, PyObject *__pyx_v_details); /*proto*/
static char __pyx_doc_4grpc_7_cython_6cygrpc_8_AioCall_14cancel[] = "Cancels the RPC in Core with given RPC status.\n\n        Above abstractions must invoke this method to set Core objects into\n        proper state.\n        ";
static PyObject *__pyx_pw_4grpc_7_cython_6cygrpc_8_AioCall_15cancel(PyObject *__pyx_v_self, PyObject *__pyx_v_details) {
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("cancel (wrapper)", 0);
  if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_details), (&PyString_Type), 1, "details", 1))) __PYX_ERR(33, 182, __pyx_L1_error)
  __pyx_r = __pyx_pf_4grpc_7_cython_6cygrpc_8_AioCall_14cancel(((struct __pyx_obj_4grpc_7_cython_6cygrpc__AioCall *)__pyx_v_self), ((PyObject*)__pyx_v_details));

  /* function exit code */
  goto __pyx_L0;
  __pyx_L1_error:;
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_4grpc_7_cython_6cygrpc_8_AioCall_14cancel(struct __pyx_obj_4grpc_7_cython_6cygrpc__AioCall *__pyx_v_self, PyObject *__pyx_v_details) {
  PyObject *__pyx_v_details_bytes = 0;
  char *__pyx_v_c_details;
  grpc_call_error __pyx_v_error;
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  PyObject *__pyx_t_2 = NULL;
  int __pyx_t_3;
  char *__pyx_t_4;
  grpc_status_code __pyx_t_5;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("cancel", 0);

  /* "src/python/grpcio/grpc/_cython/_cygrpc/aio/call.pyx.pxi":188
 *         proper state.
 *         """
 *         self._is_locally_cancelled = True             # <<<<<<<<<<<<<<
 * 
 *         cdef object details_bytes
 */
  __pyx_v_self->_is_locally_cancelled = 1;

  /* "src/python/grpcio/grpc/_cython/_cygrpc/aio/call.pyx.pxi":195
 * 
 *         self._set_status(AioRpcStatus(
 *             StatusCode.cancelled,             # <<<<<<<<<<<<<<
 *             details,
 *             None,
 */
  __Pyx_GetModuleGlobalName(__pyx_t_1, __pyx_n_s_StatusCode); if (unlikely(!__pyx_t_1)) __PYX_ERR(33, 195, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_t_1, __pyx_n_s_cancelled); if (unlikely(!__pyx_t_2)) __PYX_ERR(33, 195, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;

  /* "src/python/grpcio/grpc/_cython/_cygrpc/aio/call.pyx.pxi":194
 *         cdef grpc_call_error error
 * 
 *         self._set_status(AioRpcStatus(             # <<<<<<<<<<<<<<
 *             StatusCode.cancelled,
 *             details,
 */
  __pyx_t_1 = PyTuple_New(4); if (unlikely(!__pyx_t_1)) __PYX_ERR(33, 194, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_GIVEREF(__pyx_t_2);
  PyTuple_SET_ITEM(__pyx_t_1, 0, __pyx_t_2);
  __Pyx_INCREF(__pyx_v_details);
  __Pyx_GIVEREF(__pyx_v_details);
  PyTuple_SET_ITEM(__pyx_t_1, 1, __pyx_v_details);
  __Pyx_INCREF(Py_None);
  __Pyx_GIVEREF(Py_None);
  PyTuple_SET_ITEM(__pyx_t_1, 2, Py_None);
  __Pyx_INCREF(Py_None);
  __Pyx_GIVEREF(Py_None);
  PyTuple_SET_ITEM(__pyx_t_1, 3, Py_None);
  __pyx_t_2 = 0;
  __pyx_t_2 = __Pyx_PyObject_Call(((PyObject *)__pyx_ptype_4grpc_7_cython_6cygrpc_AioRpcStatus), __pyx_t_1, NULL); if (unlikely(!__pyx_t_2)) __PYX_ERR(33, 194, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  ((struct __pyx_vtabstruct_4grpc_7_cython_6cygrpc__AioCall *)__pyx_v_self->__pyx_vtab)->_set_status(__pyx_v_self, ((struct __pyx_obj_4grpc_7_cython_6cygrpc_AioRpcStatus *)__pyx_t_2)); if (unlikely(PyErr_Occurred())) __PYX_ERR(33, 194, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;

  /* "src/python/grpcio/grpc/_cython/_cygrpc/aio/call.pyx.pxi":201
 *         ))
 * 
 *         details_bytes = str_to_bytes(details)             # <<<<<<<<<<<<<<
 *         self._references.append(details_bytes)
 *         c_details = <char *>details_bytes
 */
  __pyx_t_2 = __pyx_f_4grpc_7_cython_6cygrpc_str_to_bytes(__pyx_v_details); if (unlikely(!__pyx_t_2)) __PYX_ERR(33, 201, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __pyx_v_details_bytes = __pyx_t_2;
  __pyx_t_2 = 0;

  /* "src/python/grpcio/grpc/_cython/_cygrpc/aio/call.pyx.pxi":202
 * 
 *         details_bytes = str_to_bytes(details)
 *         self._references.append(details_bytes)             # <<<<<<<<<<<<<<
 *         c_details = <char *>details_bytes
 *         # By implementation, grpc_call_cancel_with_status always return OK
 */
  if (unlikely(__pyx_v_self->_references == Py_None)) {
    PyErr_Format(PyExc_AttributeError, "'NoneType' object has no attribute '%.30s'", "append");
    __PYX_ERR(33, 202, __pyx_L1_error)
  }
  __pyx_t_3 = __Pyx_PyList_Append(__pyx_v_self->_references, __pyx_v_details_bytes); if (unlikely(__pyx_t_3 == ((int)-1))) __PYX_ERR(33, 202, __pyx_L1_error)

  /* "src/python/grpcio/grpc/_cython/_cygrpc/aio/call.pyx.pxi":203
 *         details_bytes = str_to_bytes(details)
 *         self._references.append(details_bytes)
 *         c_details = <char *>details_bytes             # <<<<<<<<<<<<<<
 *         # By implementation, grpc_call_cancel_with_status always return OK
 *         error = grpc_call_cancel_with_status(
 */
  __pyx_t_4 = __Pyx_PyObject_AsWritableString(__pyx_v_details_bytes); if (unlikely((!__pyx_t_4) && PyErr_Occurred())) __PYX_ERR(33, 203, __pyx_L1_error)
  __pyx_v_c_details = ((char *)__pyx_t_4);

  /* "src/python/grpcio/grpc/_cython/_cygrpc/aio/call.pyx.pxi":207
 *         error = grpc_call_cancel_with_status(
 *             self.call,
 *             StatusCode.cancelled,             # <<<<<<<<<<<<<<
 *             c_details,
 *             NULL,
 */
  __Pyx_GetModuleGlobalName(__pyx_t_2, __pyx_n_s_StatusCode); if (unlikely(!__pyx_t_2)) __PYX_ERR(33, 207, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_t_2, __pyx_n_s_cancelled); if (unlikely(!__pyx_t_1)) __PYX_ERR(33, 207, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  __pyx_t_5 = ((grpc_status_code)__Pyx_PyInt_As_grpc_status_code(__pyx_t_1)); if (unlikely(PyErr_Occurred())) __PYX_ERR(33, 207, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;

  /* "src/python/grpcio/grpc/_cython/_cygrpc/aio/call.pyx.pxi":205
 *         c_details = <char *>details_bytes
 *         # By implementation, grpc_call_cancel_with_status always return OK
 *         error = grpc_call_cancel_with_status(             # <<<<<<<<<<<<<<
 *             self.call,
 *             StatusCode.cancelled,
 */
  __pyx_v_error = grpc_call_cancel_with_status(__pyx_v_self->__pyx_base.call, __pyx_t_5, __pyx_v_c_details, NULL);

  /* "src/python/grpcio/grpc/_cython/_cygrpc/aio/call.pyx.pxi":211
 *             NULL,
 *         )
 *         assert error == GRPC_CALL_OK             # <<<<<<<<<<<<<<
 * 
 *     def done(self):
 */
  #ifndef CYTHON_WITHOUT_ASSERTIONS
  if (unlikely(!Py_OptimizeFlag)) {
    if (unlikely(!((__pyx_v_error == GRPC_CALL_OK) != 0))) {
      PyErr_SetNone(PyExc_AssertionError);
      __PYX_ERR(33, 211, __pyx_L1_error)
    }
  }
  #endif

  /* "src/python/grpcio/grpc/_cython/_cygrpc/aio/call.pyx.pxi":182
 *             return max(0, self._deadline - time.time())
 * 
 *     def cancel(self, str details):             # <<<<<<<<<<<<<<
 *         """Cancels the RPC in Core with given RPC status.
 * 
 */

  /* function exit code */
  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_AddTraceback("grpc._cython.cygrpc._AioCall.cancel", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XDECREF(__pyx_v_details_bytes);
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "src/python/grpcio/grpc/_cython/_cygrpc/aio/call.pyx.pxi":213
 *         assert error == GRPC_CALL_OK
 * 
 *     def done(self):             # <<<<<<<<<<<<<<
 *         """Returns if the RPC call has finished.
 * 
 */

/* Python wrapper */
static PyObject *__pyx_pw_4grpc_7_cython_6cygrpc_8_AioCall_17done(PyObject *__pyx_v_self, CYTHON_UNUSED PyObject *unused); /*proto*/
static char __pyx_doc_4grpc_7_cython_6cygrpc_8_AioCall_16done[] = "Returns if the RPC call has finished.\n\n        Checks if the status has been provided, either\n        because the RPC finished or because was cancelled..\n\n        Returns:\n            True if the RPC can be considered finished.\n        ";
static PyObject *__pyx_pw_4grpc_7_cython_6cygrpc_8_AioCall_17done(PyObject *__pyx_v_self, CYTHON_UNUSED PyObject *unused) {
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("done (wrapper)", 0);
  __pyx_r = __pyx_pf_4grpc_7_cython_6cygrpc_8_AioCall_16done(((struct __pyx_obj_4grpc_7_cython_6cygrpc__AioCall *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_4grpc_7_cython_6cygrpc_8_AioCall_16done(struct __pyx_obj_4grpc_7_cython_6cygrpc__AioCall *__pyx_v_self) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  int __pyx_t_1;
  PyObject *__pyx_t_2 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("done", 0);

  /* "src/python/grpcio/grpc/_cython/_cygrpc/aio/call.pyx.pxi":222
 *             True if the RPC can be considered finished.
 *         """
 *         return self._status is not None             # <<<<<<<<<<<<<<
 * 
 *     def cancelled(self):
 */
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_1 = (((PyObject *)__pyx_v_self->_status) != Py_None);
  __pyx_t_2 = __Pyx_PyBool_FromLong(__pyx_t_1); if (unlikely(!__pyx_t_2)) __PYX_ERR(33, 222, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __pyx_r = __pyx_t_2;
  __pyx_t_2 = 0;
  goto __pyx_L0;

  /* "src/python/grpcio/grpc/_cython/_cygrpc/aio/call.pyx.pxi":213
 *         assert error == GRPC_CALL_OK
 * 
 *     def done(self):             # <<<<<<<<<<<<<<
 *         """Returns if the RPC call has finished.
 * 
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_AddTraceback("grpc._cython.cygrpc._AioCall.done", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "src/python/grpcio/grpc/_cython/_cygrpc/aio/call.pyx.pxi":224
 *         return self._status is not None
 * 
 *     def cancelled(self):             # <<<<<<<<<<<<<<
 *         """Returns if the RPC was cancelled.
 * 
 */

/* Python wrapper */
static PyObject *__pyx_pw_4grpc_7_cython_6cygrpc_8_AioCall_19cancelled(PyObject *__pyx_v_self, CYTHON_UNUSED PyObject *unused); /*proto*/
static char __pyx_doc_4grpc_7_cython_6cygrpc_8_AioCall_18cancelled[] = "Returns if the RPC was cancelled.\n\n        Returns:\n            True if the RPC was cancelled.\n        ";
static PyObject *__pyx_pw_4grpc_7_cython_6cygrpc_8_AioCall_19cancelled(PyObject *__pyx_v_self, CYTHON_UNUSED PyObject *unused) {
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("cancelled (wrapper)", 0);
  __pyx_r = __pyx_pf_4grpc_7_cython_6cygrpc_8_AioCall_18cancelled(((struct __pyx_obj_4grpc_7_cython_6cygrpc__AioCall *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_4grpc_7_cython_6cygrpc_8_AioCall_18cancelled(struct __pyx_obj_4grpc_7_cython_6cygrpc__AioCall *__pyx_v_self) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  PyObject *__pyx_t_2 = NULL;
  PyObject *__pyx_t_3 = NULL;
  int __pyx_t_4;
  int __pyx_t_5;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("cancelled", 0);

  /* "src/python/grpcio/grpc/_cython/_cygrpc/aio/call.pyx.pxi":230
 *             True if the RPC was cancelled.
 *         """
 *         if not self.done():             # <<<<<<<<<<<<<<
 *             return False
 * 
 */
  __pyx_t_2 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_done); if (unlikely(!__pyx_t_2)) __PYX_ERR(33, 230, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __pyx_t_3 = NULL;
  if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_2))) {
    __pyx_t_3 = PyMethod_GET_SELF(__pyx_t_2);
    if (likely(__pyx_t_3)) {
      PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_2);
      __Pyx_INCREF(__pyx_t_3);
      __Pyx_INCREF(function);
      __Pyx_DECREF_SET(__pyx_t_2, function);
    }
  }
  __pyx_t_1 = (__pyx_t_3) ? __Pyx_PyObject_CallOneArg(__pyx_t_2, __pyx_t_3) : __Pyx_PyObject_CallNoArg(__pyx_t_2);
  __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0;
  if (unlikely(!__pyx_t_1)) __PYX_ERR(33, 230, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  __pyx_t_4 = __Pyx_PyObject_IsTrue(__pyx_t_1); if (unlikely(__pyx_t_4 < 0)) __PYX_ERR(33, 230, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  __pyx_t_5 = ((!__pyx_t_4) != 0);
  if (__pyx_t_5) {

    /* "src/python/grpcio/grpc/_cython/_cygrpc/aio/call.pyx.pxi":231
 *         """
 *         if not self.done():
 *             return False             # <<<<<<<<<<<<<<
 * 
 *         return self._status.code() == StatusCode.cancelled
 */
    __Pyx_XDECREF(__pyx_r);
    __Pyx_INCREF(Py_False);
    __pyx_r = Py_False;
    goto __pyx_L0;

    /* "src/python/grpcio/grpc/_cython/_cygrpc/aio/call.pyx.pxi":230
 *             True if the RPC was cancelled.
 *         """
 *         if not self.done():             # <<<<<<<<<<<<<<
 *             return False
 * 
 */
  }

  /* "src/python/grpcio/grpc/_cython/_cygrpc/aio/call.pyx.pxi":233
 *             return False
 * 
 *         return self._status.code() == StatusCode.cancelled             # <<<<<<<<<<<<<<
 * 
 *     async def status(self):
 */
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_1 = __Pyx_PyInt_From_grpc_status_code(((struct __pyx_vtabstruct_4grpc_7_cython_6cygrpc_AioRpcStatus *)__pyx_v_self->_status->__pyx_vtab)->code(__pyx_v_self->_status, 0)); if (unlikely(!__pyx_t_1)) __PYX_ERR(33, 233, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_GetModuleGlobalName(__pyx_t_2, __pyx_n_s_StatusCode); if (unlikely(!__pyx_t_2)) __PYX_ERR(33, 233, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __pyx_t_3 = __Pyx_PyObject_GetAttrStr(__pyx_t_2, __pyx_n_s_cancelled); if (unlikely(!__pyx_t_3)) __PYX_ERR(33, 233, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  __pyx_t_2 = PyObject_RichCompare(__pyx_t_1, __pyx_t_3, Py_EQ); __Pyx_XGOTREF(__pyx_t_2); if (unlikely(!__pyx_t_2)) __PYX_ERR(33, 233, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
  __pyx_r = __pyx_t_2;
  __pyx_t_2 = 0;
  goto __pyx_L0;

  /* "src/python/grpcio/grpc/_cython/_cygrpc/aio/call.pyx.pxi":224
 *         return self._status is not None
 * 
 *     def cancelled(self):             # <<<<<<<<<<<<<<
 *         """Returns if the RPC was cancelled.
 * 
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_XDECREF(__pyx_t_3);
  __Pyx_AddTraceback("grpc._cython.cygrpc._AioCall.cancelled", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}
static PyObject *__pyx_gb_4grpc_7_cython_6cygrpc_8_AioCall_22generator8(__pyx_CoroutineObject *__pyx_generator, CYTHON_UNUSED PyThreadState *__pyx_tstate, PyObject *__pyx_sent_value); /* proto */

/* "src/python/grpcio/grpc/_cython/_cygrpc/aio/call.pyx.pxi":235
 *         return self._status.code() == StatusCode.cancelled
 * 
 *     async def status(self):             # <<<<<<<<<<<<<<
 *         """Returns the status of the RPC call.
 * 
 */

/* Python wrapper */
static PyObject *__pyx_pw_4grpc_7_cython_6cygrpc_8_AioCall_21status(PyObject *__pyx_v_self, CYTHON_UNUSED PyObject *unused); /*proto*/
static char __pyx_doc_4grpc_7_cython_6cygrpc_8_AioCall_20status[] = "Returns the status of the RPC call.\n\n        It returns the finshed status of the RPC. If the RPC\n        has not finished yet this function will wait until the RPC\n        gets finished.\n\n        Returns:\n            Finished status of the RPC as an AioRpcStatus object.\n        ";
static PyObject *__pyx_pw_4grpc_7_cython_6cygrpc_8_AioCall_21status(PyObject *__pyx_v_self, CYTHON_UNUSED PyObject *unused) {
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("status (wrapper)", 0);
  __pyx_r = __pyx_pf_4grpc_7_cython_6cygrpc_8_AioCall_20status(((struct __pyx_obj_4grpc_7_cython_6cygrpc__AioCall *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_4grpc_7_cython_6cygrpc_8_AioCall_20status(struct __pyx_obj_4grpc_7_cython_6cygrpc__AioCall *__pyx_v_self) {
  struct __pyx_obj_4grpc_7_cython_6cygrpc___pyx_scope_struct_20_status *__pyx_cur_scope;
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("status", 0);
  __pyx_cur_scope = (struct __pyx_obj_4grpc_7_cython_6cygrpc___pyx_scope_struct_20_status *)__pyx_tp_new_4grpc_7_cython_6cygrpc___pyx_scope_struct_20_status(__pyx_ptype_4grpc_7_cython_6cygrpc___pyx_scope_struct_20_status, __pyx_empty_tuple, NULL);
  if (unlikely(!__pyx_cur_scope)) {
    __pyx_cur_scope = ((struct __pyx_obj_4grpc_7_cython_6cygrpc___pyx_scope_struct_20_status *)Py_None);
    __Pyx_INCREF(Py_None);
    __PYX_ERR(33, 235, __pyx_L1_error)
  } else {
    __Pyx_GOTREF(__pyx_cur_scope);
  }
  __pyx_cur_scope->__pyx_v_self = __pyx_v_self;
  __Pyx_INCREF((PyObject *)__pyx_cur_scope->__pyx_v_self);
  __Pyx_GIVEREF((PyObject *)__pyx_cur_scope->__pyx_v_self);
  {
    __pyx_CoroutineObject *gen = __Pyx_Coroutine_New((__pyx_coroutine_body_t) __pyx_gb_4grpc_7_cython_6cygrpc_8_AioCall_22generator8, NULL, (PyObject *) __pyx_cur_scope, __pyx_n_s_status, __pyx_n_s_AioCall_status, __pyx_n_s_grpc__cython_cygrpc); if (unlikely(!gen)) __PYX_ERR(33, 235, __pyx_L1_error)
    __Pyx_DECREF(__pyx_cur_scope);
    __Pyx_RefNannyFinishContext();
    return (PyObject *) gen;
  }

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_AddTraceback("grpc._cython.cygrpc._AioCall.status", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __Pyx_DECREF(((PyObject *)__pyx_cur_scope));
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_gb_4grpc_7_cython_6cygrpc_8_AioCall_22generator8(__pyx_CoroutineObject *__pyx_generator, CYTHON_UNUSED PyThreadState *__pyx_tstate, PyObject *__pyx_sent_value) /* generator body */
{
  struct __pyx_obj_4grpc_7_cython_6cygrpc___pyx_scope_struct_20_status *__pyx_cur_scope = ((struct __pyx_obj_4grpc_7_cython_6cygrpc___pyx_scope_struct_20_status *)__pyx_generator->closure);
  PyObject *__pyx_r = NULL;
  int __pyx_t_1;
  int __pyx_t_2;
  PyObject *__pyx_t_3 = NULL;
  PyObject *__pyx_t_4 = NULL;
  PyObject *__pyx_t_5 = NULL;
  int __pyx_t_6;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("status", 0);
  switch (__pyx_generator->resume_label) {
    case 0: goto __pyx_L3_first_run;
    case 1: goto __pyx_L5_resume_from_await;
    default: /* CPython raises the right error here */
    __Pyx_RefNannyFinishContext();
    return NULL;
  }
  __pyx_L3_first_run:;
  if (unlikely(!__pyx_sent_value)) __PYX_ERR(33, 235, __pyx_L1_error)

  /* "src/python/grpcio/grpc/_cython/_cygrpc/aio/call.pyx.pxi":245
 *             Finished status of the RPC as an AioRpcStatus object.
 *         """
 *         if self._status is not None:             # <<<<<<<<<<<<<<
 *             return self._status
 * 
 */
  __pyx_t_1 = (((PyObject *)__pyx_cur_scope->__pyx_v_self->_status) != Py_None);
  __pyx_t_2 = (__pyx_t_1 != 0);
  if (__pyx_t_2) {

    /* "src/python/grpcio/grpc/_cython/_cygrpc/aio/call.pyx.pxi":246
 *         """
 *         if self._status is not None:
 *             return self._status             # <<<<<<<<<<<<<<
 * 
 *         future = self._loop.create_future()
 */
    __Pyx_XDECREF(__pyx_r);
    __pyx_r = NULL; __Pyx_ReturnWithStopIteration(((PyObject *)__pyx_cur_scope->__pyx_v_self->_status));
    goto __pyx_L0;

    /* "src/python/grpcio/grpc/_cython/_cygrpc/aio/call.pyx.pxi":245
 *             Finished status of the RPC as an AioRpcStatus object.
 *         """
 *         if self._status is not None:             # <<<<<<<<<<<<<<
 *             return self._status
 * 
 */
  }

  /* "src/python/grpcio/grpc/_cython/_cygrpc/aio/call.pyx.pxi":248
 *             return self._status
 * 
 *         future = self._loop.create_future()             # <<<<<<<<<<<<<<
 *         self._waiters_status.append(future)
 *         await future
 */
  __pyx_t_4 = __Pyx_PyObject_GetAttrStr(__pyx_cur_scope->__pyx_v_self->_loop, __pyx_n_s_create_future); if (unlikely(!__pyx_t_4)) __PYX_ERR(33, 248, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_4);
  __pyx_t_5 = NULL;
  if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_4))) {
    __pyx_t_5 = PyMethod_GET_SELF(__pyx_t_4);
    if (likely(__pyx_t_5)) {
      PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_4);
      __Pyx_INCREF(__pyx_t_5);
      __Pyx_INCREF(function);
      __Pyx_DECREF_SET(__pyx_t_4, function);
    }
  }
  __pyx_t_3 = (__pyx_t_5) ? __Pyx_PyObject_CallOneArg(__pyx_t_4, __pyx_t_5) : __Pyx_PyObject_CallNoArg(__pyx_t_4);
  __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0;
  if (unlikely(!__pyx_t_3)) __PYX_ERR(33, 248, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
  __Pyx_GIVEREF(__pyx_t_3);
  __pyx_cur_scope->__pyx_v_future = __pyx_t_3;
  __pyx_t_3 = 0;

  /* "src/python/grpcio/grpc/_cython/_cygrpc/aio/call.pyx.pxi":249
 * 
 *         future = self._loop.create_future()
 *         self._waiters_status.append(future)             # <<<<<<<<<<<<<<
 *         await future
 * 
 */
  if (unlikely(__pyx_cur_scope->__pyx_v_self->_waiters_status == Py_None)) {
    PyErr_Format(PyExc_AttributeError, "'NoneType' object has no attribute '%.30s'", "append");
    __PYX_ERR(33, 249, __pyx_L1_error)
  }
  __pyx_t_6 = __Pyx_PyList_Append(__pyx_cur_scope->__pyx_v_self->_waiters_status, __pyx_cur_scope->__pyx_v_future); if (unlikely(__pyx_t_6 == ((int)-1))) __PYX_ERR(33, 249, __pyx_L1_error)

  /* "src/python/grpcio/grpc/_cython/_cygrpc/aio/call.pyx.pxi":250
 *         future = self._loop.create_future()
 *         self._waiters_status.append(future)
 *         await future             # <<<<<<<<<<<<<<
 * 
 *         return self._status
 */
  __pyx_r = __Pyx_Coroutine_Yield_From(__pyx_generator, __pyx_cur_scope->__pyx_v_future);
  __Pyx_XGOTREF(__pyx_r);
  if (likely(__pyx_r)) {
    __Pyx_XGIVEREF(__pyx_r);
    __Pyx_RefNannyFinishContext();
    __Pyx_Coroutine_ResetAndClearException(__pyx_generator);
    /* return from generator, awaiting value */
    __pyx_generator->resume_label = 1;
    return __pyx_r;
    __pyx_L5_resume_from_await:;
    if (unlikely(!__pyx_sent_value)) __PYX_ERR(33, 250, __pyx_L1_error)
  } else {
    PyObject* exc_type = __Pyx_PyErr_Occurred();
    if (exc_type) {
      if (likely(exc_type == PyExc_StopIteration || (exc_type != PyExc_GeneratorExit && __Pyx_PyErr_GivenExceptionMatches(exc_type, PyExc_StopIteration)))) PyErr_Clear();
      else __PYX_ERR(33, 250, __pyx_L1_error)
    }
  }

  /* "src/python/grpcio/grpc/_cython/_cygrpc/aio/call.pyx.pxi":252
 *         await future
 * 
 *         return self._status             # <<<<<<<<<<<<<<
 * 
 *     def is_ok(self):
 */
  __Pyx_XDECREF(__pyx_r);
  __pyx_r = NULL; __Pyx_ReturnWithStopIteration(((PyObject *)__pyx_cur_scope->__pyx_v_self->_status));
  goto __pyx_L0;
  CYTHON_MAYBE_UNUSED_VAR(__pyx_cur_scope);

  /* "src/python/grpcio/grpc/_cython/_cygrpc/aio/call.pyx.pxi":235
 *         return self._status.code() == StatusCode.cancelled
 * 
 *     async def status(self):             # <<<<<<<<<<<<<<
 *         """Returns the status of the RPC call.
 * 
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_3);
  __Pyx_XDECREF(__pyx_t_4);
  __Pyx_XDECREF(__pyx_t_5);
  __Pyx_AddTraceback("status", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_L0:;
  __Pyx_XDECREF(__pyx_r); __pyx_r = 0;
  #if !CYTHON_USE_EXC_INFO_STACK
  __Pyx_Coroutine_ResetAndClearException(__pyx_generator);
  #endif
  __pyx_generator->resume_label = -1;
  __Pyx_Coroutine_clear((PyObject*)__pyx_generator);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "src/python/grpcio/grpc/_cython/_cygrpc/aio/call.pyx.pxi":254
 *         return self._status
 * 
 *     def is_ok(self):             # <<<<<<<<<<<<<<
 *         """Returns if the RPC is ended with ok."""
 *         return self.done() and self._status.code() == StatusCode.ok
 */

/* Python wrapper */
static PyObject *__pyx_pw_4grpc_7_cython_6cygrpc_8_AioCall_24is_ok(PyObject *__pyx_v_self, CYTHON_UNUSED PyObject *unused); /*proto*/
static char __pyx_doc_4grpc_7_cython_6cygrpc_8_AioCall_23is_ok[] = "Returns if the RPC is ended with ok.";
static PyObject *__pyx_pw_4grpc_7_cython_6cygrpc_8_AioCall_24is_ok(PyObject *__pyx_v_self, CYTHON_UNUSED PyObject *unused) {
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("is_ok (wrapper)", 0);
  __pyx_r = __pyx_pf_4grpc_7_cython_6cygrpc_8_AioCall_23is_ok(((struct __pyx_obj_4grpc_7_cython_6cygrpc__AioCall *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_4grpc_7_cython_6cygrpc_8_AioCall_23is_ok(struct __pyx_obj_4grpc_7_cython_6cygrpc__AioCall *__pyx_v_self) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  PyObject *__pyx_t_2 = NULL;
  PyObject *__pyx_t_3 = NULL;
  PyObject *__pyx_t_4 = NULL;
  int __pyx_t_5;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("is_ok", 0);

  /* "src/python/grpcio/grpc/_cython/_cygrpc/aio/call.pyx.pxi":256
 *     def is_ok(self):
 *         """Returns if the RPC is ended with ok."""
 *         return self.done() and self._status.code() == StatusCode.ok             # <<<<<<<<<<<<<<
 * 
 *     async def initial_metadata(self):
 */
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_3 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_done); if (unlikely(!__pyx_t_3)) __PYX_ERR(33, 256, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  __pyx_t_4 = NULL;
  if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_3))) {
    __pyx_t_4 = PyMethod_GET_SELF(__pyx_t_3);
    if (likely(__pyx_t_4)) {
      PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_3);
      __Pyx_INCREF(__pyx_t_4);
      __Pyx_INCREF(function);
      __Pyx_DECREF_SET(__pyx_t_3, function);
    }
  }
  __pyx_t_2 = (__pyx_t_4) ? __Pyx_PyObject_CallOneArg(__pyx_t_3, __pyx_t_4) : __Pyx_PyObject_CallNoArg(__pyx_t_3);
  __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0;
  if (unlikely(!__pyx_t_2)) __PYX_ERR(33, 256, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
  __pyx_t_5 = __Pyx_PyObject_IsTrue(__pyx_t_2); if (unlikely(__pyx_t_5 < 0)) __PYX_ERR(33, 256, __pyx_L1_error)
  if (__pyx_t_5) {
    __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  } else {
    __Pyx_INCREF(__pyx_t_2);
    __pyx_t_1 = __pyx_t_2;
    __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
    goto __pyx_L3_bool_binop_done;
  }
  __pyx_t_2 = __Pyx_PyInt_From_grpc_status_code(((struct __pyx_vtabstruct_4grpc_7_cython_6cygrpc_AioRpcStatus *)__pyx_v_self->_status->__pyx_vtab)->code(__pyx_v_self->_status, 0)); if (unlikely(!__pyx_t_2)) __PYX_ERR(33, 256, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __Pyx_GetModuleGlobalName(__pyx_t_3, __pyx_n_s_StatusCode); if (unlikely(!__pyx_t_3)) __PYX_ERR(33, 256, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  __pyx_t_4 = __Pyx_PyObject_GetAttrStr(__pyx_t_3, __pyx_n_s_ok); if (unlikely(!__pyx_t_4)) __PYX_ERR(33, 256, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_4);
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
  __pyx_t_3 = PyObject_RichCompare(__pyx_t_2, __pyx_t_4, Py_EQ); __Pyx_XGOTREF(__pyx_t_3); if (unlikely(!__pyx_t_3)) __PYX_ERR(33, 256, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
  __Pyx_INCREF(__pyx_t_3);
  __pyx_t_1 = __pyx_t_3;
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
  __pyx_L3_bool_binop_done:;
  __pyx_r = __pyx_t_1;
  __pyx_t_1 = 0;
  goto __pyx_L0;

  /* "src/python/grpcio/grpc/_cython/_cygrpc/aio/call.pyx.pxi":254
 *         return self._status
 * 
 *     def is_ok(self):             # <<<<<<<<<<<<<<
 *         """Returns if the RPC is ended with ok."""
 *         return self.done() and self._status.code() == StatusCode.ok
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_XDECREF(__pyx_t_3);
  __Pyx_XDECREF(__pyx_t_4);
  __Pyx_AddTraceback("grpc._cython.cygrpc._AioCall.is_ok", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}
static PyObject *__pyx_gb_4grpc_7_cython_6cygrpc_8_AioCall_27generator9(__pyx_CoroutineObject *__pyx_generator, CYTHON_UNUSED PyThreadState *__pyx_tstate, PyObject *__pyx_sent_value); /* proto */

/* "src/python/grpcio/grpc/_cython/_cygrpc/aio/call.pyx.pxi":258
 *         return self.done() and self._status.code() == StatusCode.ok
 * 
 *     async def initial_metadata(self):             # <<<<<<<<<<<<<<
 *         """Returns the initial metadata of the RPC call.
 * 
 */

/* Python wrapper */
static PyObject *__pyx_pw_4grpc_7_cython_6cygrpc_8_AioCall_26initial_metadata(PyObject *__pyx_v_self, CYTHON_UNUSED PyObject *unused); /*proto*/
static char __pyx_doc_4grpc_7_cython_6cygrpc_8_AioCall_25initial_metadata[] = "Returns the initial metadata of the RPC call.\n\n        If the initial metadata has not been received yet this function will\n        wait until the RPC gets finished.\n\n        Returns:\n            The tuple object with the initial metadata.\n        ";
static PyObject *__pyx_pw_4grpc_7_cython_6cygrpc_8_AioCall_26initial_metadata(PyObject *__pyx_v_self, CYTHON_UNUSED PyObject *unused) {
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("initial_metadata (wrapper)", 0);
  __pyx_r = __pyx_pf_4grpc_7_cython_6cygrpc_8_AioCall_25initial_metadata(((struct __pyx_obj_4grpc_7_cython_6cygrpc__AioCall *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_4grpc_7_cython_6cygrpc_8_AioCall_25initial_metadata(struct __pyx_obj_4grpc_7_cython_6cygrpc__AioCall *__pyx_v_self) {
  struct __pyx_obj_4grpc_7_cython_6cygrpc___pyx_scope_struct_21_initial_metadata *__pyx_cur_scope;
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("initial_metadata", 0);
  __pyx_cur_scope = (struct __pyx_obj_4grpc_7_cython_6cygrpc___pyx_scope_struct_21_initial_metadata *)__pyx_tp_new_4grpc_7_cython_6cygrpc___pyx_scope_struct_21_initial_metadata(__pyx_ptype_4grpc_7_cython_6cygrpc___pyx_scope_struct_21_initial_metadata, __pyx_empty_tuple, NULL);
  if (unlikely(!__pyx_cur_scope)) {
    __pyx_cur_scope = ((struct __pyx_obj_4grpc_7_cython_6cygrpc___pyx_scope_struct_21_initial_metadata *)Py_None);
    __Pyx_INCREF(Py_None);
    __PYX_ERR(33, 258, __pyx_L1_error)
  } else {
    __Pyx_GOTREF(__pyx_cur_scope);
  }
  __pyx_cur_scope->__pyx_v_self = __pyx_v_self;
  __Pyx_INCREF((PyObject *)__pyx_cur_scope->__pyx_v_self);
  __Pyx_GIVEREF((PyObject *)__pyx_cur_scope->__pyx_v_self);
  {
    __pyx_CoroutineObject *gen = __Pyx_Coroutine_New((__pyx_coroutine_body_t) __pyx_gb_4grpc_7_cython_6cygrpc_8_AioCall_27generator9, NULL, (PyObject *) __pyx_cur_scope, __pyx_n_s_initial_metadata, __pyx_n_s_AioCall_initial_metadata, __pyx_n_s_grpc__cython_cygrpc); if (unlikely(!gen)) __PYX_ERR(33, 258, __pyx_L1_error)
    __Pyx_DECREF(__pyx_cur_scope);
    __Pyx_RefNannyFinishContext();
    return (PyObject *) gen;
  }

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_AddTraceback("grpc._cython.cygrpc._AioCall.initial_metadata", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __Pyx_DECREF(((PyObject *)__pyx_cur_scope));
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_gb_4grpc_7_cython_6cygrpc_8_AioCall_27generator9(__pyx_CoroutineObject *__pyx_generator, CYTHON_UNUSED PyThreadState *__pyx_tstate, PyObject *__pyx_sent_value) /* generator body */
{
  struct __pyx_obj_4grpc_7_cython_6cygrpc___pyx_scope_struct_21_initial_metadata *__pyx_cur_scope = ((struct __pyx_obj_4grpc_7_cython_6cygrpc___pyx_scope_struct_21_initial_metadata *)__pyx_generator->closure);
  PyObject *__pyx_r = NULL;
  int __pyx_t_1;
  int __pyx_t_2;
  PyObject *__pyx_t_3 = NULL;
  PyObject *__pyx_t_4 = NULL;
  PyObject *__pyx_t_5 = NULL;
  int __pyx_t_6;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("initial_metadata", 0);
  switch (__pyx_generator->resume_label) {
    case 0: goto __pyx_L3_first_run;
    case 1: goto __pyx_L5_resume_from_await;
    default: /* CPython raises the right error here */
    __Pyx_RefNannyFinishContext();
    return NULL;
  }
  __pyx_L3_first_run:;
  if (unlikely(!__pyx_sent_value)) __PYX_ERR(33, 258, __pyx_L1_error)

  /* "src/python/grpcio/grpc/_cython/_cygrpc/aio/call.pyx.pxi":267
 *             The tuple object with the initial metadata.
 *         """
 *         if self._initial_metadata is not None:             # <<<<<<<<<<<<<<
 *             return self._initial_metadata
 * 
 */
  __pyx_t_1 = (__pyx_cur_scope->__pyx_v_self->_initial_metadata != ((PyObject*)Py_None));
  __pyx_t_2 = (__pyx_t_1 != 0);
  if (__pyx_t_2) {

    /* "src/python/grpcio/grpc/_cython/_cygrpc/aio/call.pyx.pxi":268
 *         """
 *         if self._initial_metadata is not None:
 *             return self._initial_metadata             # <<<<<<<<<<<<<<
 * 
 *         future = self._loop.create_future()
 */
    __Pyx_XDECREF(__pyx_r);
    __pyx_r = NULL; __Pyx_ReturnWithStopIteration(__pyx_cur_scope->__pyx_v_self->_initial_metadata);
    goto __pyx_L0;

    /* "src/python/grpcio/grpc/_cython/_cygrpc/aio/call.pyx.pxi":267
 *             The tuple object with the initial metadata.
 *         """
 *         if self._initial_metadata is not None:             # <<<<<<<<<<<<<<
 *             return self._initial_metadata
 * 
 */
  }

  /* "src/python/grpcio/grpc/_cython/_cygrpc/aio/call.pyx.pxi":270
 *             return self._initial_metadata
 * 
 *         future = self._loop.create_future()             # <<<<<<<<<<<<<<
 *         self._waiters_initial_metadata.append(future)
 *         await future
 */
  __pyx_t_4 = __Pyx_PyObject_GetAttrStr(__pyx_cur_scope->__pyx_v_self->_loop, __pyx_n_s_create_future); if (unlikely(!__pyx_t_4)) __PYX_ERR(33, 270, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_4);
  __pyx_t_5 = NULL;
  if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_4))) {
    __pyx_t_5 = PyMethod_GET_SELF(__pyx_t_4);
    if (likely(__pyx_t_5)) {
      PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_4);
      __Pyx_INCREF(__pyx_t_5);
      __Pyx_INCREF(function);
      __Pyx_DECREF_SET(__pyx_t_4, function);
    }
  }
  __pyx_t_3 = (__pyx_t_5) ? __Pyx_PyObject_CallOneArg(__pyx_t_4, __pyx_t_5) : __Pyx_PyObject_CallNoArg(__pyx_t_4);
  __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0;
  if (unlikely(!__pyx_t_3)) __PYX_ERR(33, 270, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
  __Pyx_GIVEREF(__pyx_t_3);
  __pyx_cur_scope->__pyx_v_future = __pyx_t_3;
  __pyx_t_3 = 0;

  /* "src/python/grpcio/grpc/_cython/_cygrpc/aio/call.pyx.pxi":271
 * 
 *         future = self._loop.create_future()
 *         self._waiters_initial_metadata.append(future)             # <<<<<<<<<<<<<<
 *         await future
 * 
 */
  if (unlikely(__pyx_cur_scope->__pyx_v_self->_waiters_initial_metadata == Py_None)) {
    PyErr_Format(PyExc_AttributeError, "'NoneType' object has no attribute '%.30s'", "append");
    __PYX_ERR(33, 271, __pyx_L1_error)
  }
  __pyx_t_6 = __Pyx_PyList_Append(__pyx_cur_scope->__pyx_v_self->_waiters_initial_metadata, __pyx_cur_scope->__pyx_v_future); if (unlikely(__pyx_t_6 == ((int)-1))) __PYX_ERR(33, 271, __pyx_L1_error)

  /* "src/python/grpcio/grpc/_cython/_cygrpc/aio/call.pyx.pxi":272
 *         future = self._loop.create_future()
 *         self._waiters_initial_metadata.append(future)
 *         await future             # <<<<<<<<<<<<<<
 * 
 *         return self._initial_metadata
 */
  __pyx_r = __Pyx_Coroutine_Yield_From(__pyx_generator, __pyx_cur_scope->__pyx_v_future);
  __Pyx_XGOTREF(__pyx_r);
  if (likely(__pyx_r)) {
    __Pyx_XGIVEREF(__pyx_r);
    __Pyx_RefNannyFinishContext();
    __Pyx_Coroutine_ResetAndClearException(__pyx_generator);
    /* return from generator, awaiting value */
    __pyx_generator->resume_label = 1;
    return __pyx_r;
    __pyx_L5_resume_from_await:;
    if (unlikely(!__pyx_sent_value)) __PYX_ERR(33, 272, __pyx_L1_error)
  } else {
    PyObject* exc_type = __Pyx_PyErr_Occurred();
    if (exc_type) {
      if (likely(exc_type == PyExc_StopIteration || (exc_type != PyExc_GeneratorExit && __Pyx_PyErr_GivenExceptionMatches(exc_type, PyExc_StopIteration)))) PyErr_Clear();
      else __PYX_ERR(33, 272, __pyx_L1_error)
    }
  }

  /* "src/python/grpcio/grpc/_cython/_cygrpc/aio/call.pyx.pxi":274
 *         await future
 * 
 *         return self._initial_metadata             # <<<<<<<<<<<<<<
 * 
 *     def is_locally_cancelled(self):
 */
  __Pyx_XDECREF(__pyx_r);
  __pyx_r = NULL; __Pyx_ReturnWithStopIteration(__pyx_cur_scope->__pyx_v_self->_initial_metadata);
  goto __pyx_L0;
  CYTHON_MAYBE_UNUSED_VAR(__pyx_cur_scope);

  /* "src/python/grpcio/grpc/_cython/_cygrpc/aio/call.pyx.pxi":258
 *         return self.done() and self._status.code() == StatusCode.ok
 * 
 *     async def initial_metadata(self):             # <<<<<<<<<<<<<<
 *         """Returns the initial metadata of the RPC call.
 * 
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_3);
  __Pyx_XDECREF(__pyx_t_4);
  __Pyx_XDECREF(__pyx_t_5);
  __Pyx_AddTraceback("initial_metadata", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_L0:;
  __Pyx_XDECREF(__pyx_r); __pyx_r = 0;
  #if !CYTHON_USE_EXC_INFO_STACK
  __Pyx_Coroutine_ResetAndClearException(__pyx_generator);
  #endif
  __pyx_generator->resume_label = -1;
  __Pyx_Coroutine_clear((PyObject*)__pyx_generator);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "src/python/grpcio/grpc/_cython/_cygrpc/aio/call.pyx.pxi":276
 *         return self._initial_metadata
 * 
 *     def is_locally_cancelled(self):             # <<<<<<<<<<<<<<
 *         """Returns if the RPC was cancelled locally.
 * 
 */

/* Python wrapper */
static PyObject *__pyx_pw_4grpc_7_cython_6cygrpc_8_AioCall_29is_locally_cancelled(PyObject *__pyx_v_self, CYTHON_UNUSED PyObject *unused); /*proto*/
static char __pyx_doc_4grpc_7_cython_6cygrpc_8_AioCall_28is_locally_cancelled[] = "Returns if the RPC was cancelled locally.\n\n        Returns:\n            True when was cancelled locally, False when was cancelled remotelly or\n            is still ongoing.\n        ";
static PyObject *__pyx_pw_4grpc_7_cython_6cygrpc_8_AioCall_29is_locally_cancelled(PyObject *__pyx_v_self, CYTHON_UNUSED PyObject *unused) {
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("is_locally_cancelled (wrapper)", 0);
  __pyx_r = __pyx_pf_4grpc_7_cython_6cygrpc_8_AioCall_28is_locally_cancelled(((struct __pyx_obj_4grpc_7_cython_6cygrpc__AioCall *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_4grpc_7_cython_6cygrpc_8_AioCall_28is_locally_cancelled(struct __pyx_obj_4grpc_7_cython_6cygrpc__AioCall *__pyx_v_self) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  int __pyx_t_1;
  __Pyx_RefNannySetupContext("is_locally_cancelled", 0);

  /* "src/python/grpcio/grpc/_cython/_cygrpc/aio/call.pyx.pxi":283
 *             is still ongoing.
 *         """
 *         if self._is_locally_cancelled:             # <<<<<<<<<<<<<<
 *             return True
 * 
 */
  __pyx_t_1 = (__pyx_v_self->_is_locally_cancelled != 0);
  if (__pyx_t_1) {

    /* "src/python/grpcio/grpc/_cython/_cygrpc/aio/call.pyx.pxi":284
 *         """
 *         if self._is_locally_cancelled:
 *             return True             # <<<<<<<<<<<<<<
 * 
 *         return False
 */
    __Pyx_XDECREF(__pyx_r);
    __Pyx_INCREF(Py_True);
    __pyx_r = Py_True;
    goto __pyx_L0;

    /* "src/python/grpcio/grpc/_cython/_cygrpc/aio/call.pyx.pxi":283
 *             is still ongoing.
 *         """
 *         if self._is_locally_cancelled:             # <<<<<<<<<<<<<<
 *             return True
 * 
 */
  }

  /* "src/python/grpcio/grpc/_cython/_cygrpc/aio/call.pyx.pxi":286
 *             return True
 * 
 *         return False             # <<<<<<<<<<<<<<
 * 
 *     async def unary_unary(self,
 */
  __Pyx_XDECREF(__pyx_r);
  __Pyx_INCREF(Py_False);
  __pyx_r = Py_False;
  goto __pyx_L0;

  /* "src/python/grpcio/grpc/_cython/_cygrpc/aio/call.pyx.pxi":276
 *         return self._initial_metadata
 * 
 *     def is_locally_cancelled(self):             # <<<<<<<<<<<<<<
 *         """Returns if the RPC was cancelled locally.
 * 
 */

  /* function exit code */
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}
static PyObject *__pyx_gb_4grpc_7_cython_6cygrpc_8_AioCall_32generator10(__pyx_CoroutineObject *__pyx_generator, CYTHON_UNUSED PyThreadState *__pyx_tstate, PyObject *__pyx_sent_value); /* proto */

/* "src/python/grpcio/grpc/_cython/_cygrpc/aio/call.pyx.pxi":288
 *         return False
 * 
 *     async def unary_unary(self,             # <<<<<<<<<<<<<<
 *                           bytes request,
 *                           tuple outbound_initial_metadata):
 */

/* Python wrapper */
static PyObject *__pyx_pw_4grpc_7_cython_6cygrpc_8_AioCall_31unary_unary(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
static char __pyx_doc_4grpc_7_cython_6cygrpc_8_AioCall_30unary_unary[] = "Performs a unary unary RPC.\n\n        Args:\n          request: the serialized requests in bytes.\n          outbound_initial_metadata: optional outbound metadata.\n        ";
static PyObject *__pyx_pw_4grpc_7_cython_6cygrpc_8_AioCall_31unary_unary(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
  PyObject *__pyx_v_request = 0;
  PyObject *__pyx_v_outbound_initial_metadata = 0;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("unary_unary (wrapper)", 0);
  {
    static PyObject **__pyx_pyargnames[] = {&__pyx_n_s_request,&__pyx_n_s_outbound_initial_metadata,0};
    PyObject* values[2] = {0,0};
    if (unlikely(__pyx_kwds)) {
      Py_ssize_t kw_args;
      const Py_ssize_t pos_args = PyTuple_GET_SIZE(__pyx_args);
      switch (pos_args) {
        case  2: values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
        CYTHON_FALLTHROUGH;
        case  1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
        CYTHON_FALLTHROUGH;
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      kw_args = PyDict_Size(__pyx_kwds);
      switch (pos_args) {
        case  0:
        if (likely((values[0] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_request)) != 0)) kw_args--;
        else goto __pyx_L5_argtuple_error;
        CYTHON_FALLTHROUGH;
        case  1:
        if (likely((values[1] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_outbound_initial_metadata)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("unary_unary", 1, 2, 2, 1); __PYX_ERR(33, 288, __pyx_L3_error)
        }
      }
      if (unlikely(kw_args > 0)) {
        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "unary_unary") < 0)) __PYX_ERR(33, 288, __pyx_L3_error)
      }
    } else if (PyTuple_GET_SIZE(__pyx_args) != 2) {
      goto __pyx_L5_argtuple_error;
    } else {
      values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
      values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
    }
    __pyx_v_request = ((PyObject*)values[0]);
    __pyx_v_outbound_initial_metadata = ((PyObject*)values[1]);
  }
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("unary_unary", 1, 2, 2, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(33, 288, __pyx_L3_error)
  __pyx_L3_error:;
  __Pyx_AddTraceback("grpc._cython.cygrpc._AioCall.unary_unary", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_request), (&PyBytes_Type), 1, "request", 1))) __PYX_ERR(33, 289, __pyx_L1_error)
  if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_outbound_initial_metadata), (&PyTuple_Type), 1, "outbound_initial_metadata", 1))) __PYX_ERR(33, 290, __pyx_L1_error)
  __pyx_r = __pyx_pf_4grpc_7_cython_6cygrpc_8_AioCall_30unary_unary(((struct __pyx_obj_4grpc_7_cython_6cygrpc__AioCall *)__pyx_v_self), __pyx_v_request, __pyx_v_outbound_initial_metadata);

  /* function exit code */
  goto __pyx_L0;
  __pyx_L1_error:;
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_4grpc_7_cython_6cygrpc_8_AioCall_30unary_unary(struct __pyx_obj_4grpc_7_cython_6cygrpc__AioCall *__pyx_v_self, PyObject *__pyx_v_request, PyObject *__pyx_v_outbound_initial_metadata) {
  struct __pyx_obj_4grpc_7_cython_6cygrpc___pyx_scope_struct_22_unary_unary *__pyx_cur_scope;
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("unary_unary", 0);
  __pyx_cur_scope = (struct __pyx_obj_4grpc_7_cython_6cygrpc___pyx_scope_struct_22_unary_unary *)__pyx_tp_new_4grpc_7_cython_6cygrpc___pyx_scope_struct_22_unary_unary(__pyx_ptype_4grpc_7_cython_6cygrpc___pyx_scope_struct_22_unary_unary, __pyx_empty_tuple, NULL);
  if (unlikely(!__pyx_cur_scope)) {
    __pyx_cur_scope = ((struct __pyx_obj_4grpc_7_cython_6cygrpc___pyx_scope_struct_22_unary_unary *)Py_None);
    __Pyx_INCREF(Py_None);
    __PYX_ERR(33, 288, __pyx_L1_error)
  } else {
    __Pyx_GOTREF(__pyx_cur_scope);
  }
  __pyx_cur_scope->__pyx_v_self = __pyx_v_self;
  __Pyx_INCREF((PyObject *)__pyx_cur_scope->__pyx_v_self);
  __Pyx_GIVEREF((PyObject *)__pyx_cur_scope->__pyx_v_self);
  __pyx_cur_scope->__pyx_v_request = __pyx_v_request;
  __Pyx_INCREF(__pyx_cur_scope->__pyx_v_request);
  __Pyx_GIVEREF(__pyx_cur_scope->__pyx_v_request);
  __pyx_cur_scope->__pyx_v_outbound_initial_metadata = __pyx_v_outbound_initial_metadata;
  __Pyx_INCREF(__pyx_cur_scope->__pyx_v_outbound_initial_metadata);
  __Pyx_GIVEREF(__pyx_cur_scope->__pyx_v_outbound_initial_metadata);
  {
    __pyx_CoroutineObject *gen = __Pyx_Coroutine_New((__pyx_coroutine_body_t) __pyx_gb_4grpc_7_cython_6cygrpc_8_AioCall_32generator10, NULL, (PyObject *) __pyx_cur_scope, __pyx_n_s_unary_unary, __pyx_n_s_AioCall_unary_unary, __pyx_n_s_grpc__cython_cygrpc); if (unlikely(!gen)) __PYX_ERR(33, 288, __pyx_L1_error)
    __Pyx_DECREF(__pyx_cur_scope);
    __Pyx_RefNannyFinishContext();
    return (PyObject *) gen;
  }

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_AddTraceback("grpc._cython.cygrpc._AioCall.unary_unary", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __Pyx_DECREF(((PyObject *)__pyx_cur_scope));
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_gb_4grpc_7_cython_6cygrpc_8_AioCall_32generator10(__pyx_CoroutineObject *__pyx_generator, CYTHON_UNUSED PyThreadState *__pyx_tstate, PyObject *__pyx_sent_value) /* generator body */
{
  struct __pyx_obj_4grpc_7_cython_6cygrpc___pyx_scope_struct_22_unary_unary *__pyx_cur_scope = ((struct __pyx_obj_4grpc_7_cython_6cygrpc___pyx_scope_struct_22_unary_unary *)__pyx_generator->closure);
  PyObject *__pyx_r = NULL;
  PyObject *__pyx_t_1 = NULL;
  PyObject *__pyx_t_2 = NULL;
  PyObject *__pyx_t_3 = NULL;
  int __pyx_t_4;
  PyObject *__pyx_t_5 = NULL;
  grpc_status_code __pyx_t_6;
  PyObject *__pyx_t_7 = NULL;
  PyObject *__pyx_t_8 = NULL;
  int __pyx_t_9;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("unary_unary", 0);
  switch (__pyx_generator->resume_label) {
    case 0: goto __pyx_L3_first_run;
    case 1: goto __pyx_L4_resume_from_await;
    default: /* CPython raises the right error here */
    __Pyx_RefNannyFinishContext();
    return NULL;
  }
  __pyx_L3_first_run:;
  if (unlikely(!__pyx_sent_value)) __PYX_ERR(33, 288, __pyx_L1_error)

  /* "src/python/grpcio/grpc/_cython/_cygrpc/aio/call.pyx.pxi":301
 *         cdef SendInitialMetadataOperation initial_metadata_op = SendInitialMetadataOperation(
 *             outbound_initial_metadata,
 *             self._send_initial_metadata_flags)             # <<<<<<<<<<<<<<
 *         cdef SendMessageOperation send_message_op = SendMessageOperation(request, _EMPTY_FLAGS)
 *         cdef SendCloseFromClientOperation send_close_op = SendCloseFromClientOperation(_EMPTY_FLAGS)
 */
  __pyx_t_1 = __Pyx_PyInt_From_int(__pyx_cur_scope->__pyx_v_self->_send_initial_metadata_flags); if (unlikely(!__pyx_t_1)) __PYX_ERR(33, 301, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);

  /* "src/python/grpcio/grpc/_cython/_cygrpc/aio/call.pyx.pxi":299
 *         cdef tuple ops
 * 
 *         cdef SendInitialMetadataOperation initial_metadata_op = SendInitialMetadataOperation(             # <<<<<<<<<<<<<<
 *             outbound_initial_metadata,
 *             self._send_initial_metadata_flags)
 */
  __pyx_t_2 = PyTuple_New(2); if (unlikely(!__pyx_t_2)) __PYX_ERR(33, 299, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __Pyx_INCREF(__pyx_cur_scope->__pyx_v_outbound_initial_metadata);
  __Pyx_GIVEREF(__pyx_cur_scope->__pyx_v_outbound_initial_metadata);
  PyTuple_SET_ITEM(__pyx_t_2, 0, __pyx_cur_scope->__pyx_v_outbound_initial_metadata);
  __Pyx_GIVEREF(__pyx_t_1);
  PyTuple_SET_ITEM(__pyx_t_2, 1, __pyx_t_1);
  __pyx_t_1 = 0;
  __pyx_t_1 = __Pyx_PyObject_Call(((PyObject *)__pyx_ptype_4grpc_7_cython_6cygrpc_SendInitialMetadataOperation), __pyx_t_2, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(33, 299, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  __Pyx_GIVEREF(__pyx_t_1);
  __pyx_cur_scope->__pyx_v_initial_metadata_op = ((struct __pyx_obj_4grpc_7_cython_6cygrpc_SendInitialMetadataOperation *)__pyx_t_1);
  __pyx_t_1 = 0;

  /* "src/python/grpcio/grpc/_cython/_cygrpc/aio/call.pyx.pxi":302
 *             outbound_initial_metadata,
 *             self._send_initial_metadata_flags)
 *         cdef SendMessageOperation send_message_op = SendMessageOperation(request, _EMPTY_FLAGS)             # <<<<<<<<<<<<<<
 *         cdef SendCloseFromClientOperation send_close_op = SendCloseFromClientOperation(_EMPTY_FLAGS)
 *         cdef ReceiveInitialMetadataOperation receive_initial_metadata_op = ReceiveInitialMetadataOperation(_EMPTY_FLAGS)
 */
  __Pyx_GetModuleGlobalName(__pyx_t_1, __pyx_n_s_EMPTY_FLAGS); if (unlikely(!__pyx_t_1)) __PYX_ERR(33, 302, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_t_2 = PyTuple_New(2); if (unlikely(!__pyx_t_2)) __PYX_ERR(33, 302, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __Pyx_INCREF(__pyx_cur_scope->__pyx_v_request);
  __Pyx_GIVEREF(__pyx_cur_scope->__pyx_v_request);
  PyTuple_SET_ITEM(__pyx_t_2, 0, __pyx_cur_scope->__pyx_v_request);
  __Pyx_GIVEREF(__pyx_t_1);
  PyTuple_SET_ITEM(__pyx_t_2, 1, __pyx_t_1);
  __pyx_t_1 = 0;
  __pyx_t_1 = __Pyx_PyObject_Call(((PyObject *)__pyx_ptype_4grpc_7_cython_6cygrpc_SendMessageOperation), __pyx_t_2, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(33, 302, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  __Pyx_GIVEREF(__pyx_t_1);
  __pyx_cur_scope->__pyx_v_send_message_op = ((struct __pyx_obj_4grpc_7_cython_6cygrpc_SendMessageOperation *)__pyx_t_1);
  __pyx_t_1 = 0;

  /* "src/python/grpcio/grpc/_cython/_cygrpc/aio/call.pyx.pxi":303
 *             self._send_initial_metadata_flags)
 *         cdef SendMessageOperation send_message_op = SendMessageOperation(request, _EMPTY_FLAGS)
 *         cdef SendCloseFromClientOperation send_close_op = SendCloseFromClientOperation(_EMPTY_FLAGS)             # <<<<<<<<<<<<<<
 *         cdef ReceiveInitialMetadataOperation receive_initial_metadata_op = ReceiveInitialMetadataOperation(_EMPTY_FLAGS)
 *         cdef ReceiveMessageOperation receive_message_op = ReceiveMessageOperation(_EMPTY_FLAGS)
 */
  __Pyx_GetModuleGlobalName(__pyx_t_1, __pyx_n_s_EMPTY_FLAGS); if (unlikely(!__pyx_t_1)) __PYX_ERR(33, 303, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_t_2 = __Pyx_PyObject_CallOneArg(((PyObject *)__pyx_ptype_4grpc_7_cython_6cygrpc_SendCloseFromClientOperation), __pyx_t_1); if (unlikely(!__pyx_t_2)) __PYX_ERR(33, 303, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  __Pyx_GIVEREF(__pyx_t_2);
  __pyx_cur_scope->__pyx_v_send_close_op = ((struct __pyx_obj_4grpc_7_cython_6cygrpc_SendCloseFromClientOperation *)__pyx_t_2);
  __pyx_t_2 = 0;

  /* "src/python/grpcio/grpc/_cython/_cygrpc/aio/call.pyx.pxi":304
 *         cdef SendMessageOperation send_message_op = SendMessageOperation(request, _EMPTY_FLAGS)
 *         cdef SendCloseFromClientOperation send_close_op = SendCloseFromClientOperation(_EMPTY_FLAGS)
 *         cdef ReceiveInitialMetadataOperation receive_initial_metadata_op = ReceiveInitialMetadataOperation(_EMPTY_FLAGS)             # <<<<<<<<<<<<<<
 *         cdef ReceiveMessageOperation receive_message_op = ReceiveMessageOperation(_EMPTY_FLAGS)
 *         cdef ReceiveStatusOnClientOperation receive_status_on_client_op = ReceiveStatusOnClientOperation(_EMPTY_FLAGS)
 */
  __Pyx_GetModuleGlobalName(__pyx_t_2, __pyx_n_s_EMPTY_FLAGS); if (unlikely(!__pyx_t_2)) __PYX_ERR(33, 304, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __pyx_t_1 = __Pyx_PyObject_CallOneArg(((PyObject *)__pyx_ptype_4grpc_7_cython_6cygrpc_ReceiveInitialMetadataOperation), __pyx_t_2); if (unlikely(!__pyx_t_1)) __PYX_ERR(33, 304, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  __Pyx_GIVEREF(__pyx_t_1);
  __pyx_cur_scope->__pyx_v_receive_initial_metadata_op = ((struct __pyx_obj_4grpc_7_cython_6cygrpc_ReceiveInitialMetadataOperation *)__pyx_t_1);
  __pyx_t_1 = 0;

  /* "src/python/grpcio/grpc/_cython/_cygrpc/aio/call.pyx.pxi":305
 *         cdef SendCloseFromClientOperation send_close_op = SendCloseFromClientOperation(_EMPTY_FLAGS)
 *         cdef ReceiveInitialMetadataOperation receive_initial_metadata_op = ReceiveInitialMetadataOperation(_EMPTY_FLAGS)
 *         cdef ReceiveMessageOperation receive_message_op = ReceiveMessageOperation(_EMPTY_FLAGS)             # <<<<<<<<<<<<<<
 *         cdef ReceiveStatusOnClientOperation receive_status_on_client_op = ReceiveStatusOnClientOperation(_EMPTY_FLAGS)
 * 
 */
  __Pyx_GetModuleGlobalName(__pyx_t_1, __pyx_n_s_EMPTY_FLAGS); if (unlikely(!__pyx_t_1)) __PYX_ERR(33, 305, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_t_2 = __Pyx_PyObject_CallOneArg(((PyObject *)__pyx_ptype_4grpc_7_cython_6cygrpc_ReceiveMessageOperation), __pyx_t_1); if (unlikely(!__pyx_t_2)) __PYX_ERR(33, 305, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  __Pyx_GIVEREF(__pyx_t_2);
  __pyx_cur_scope->__pyx_v_receive_message_op = ((struct __pyx_obj_4grpc_7_cython_6cygrpc_ReceiveMessageOperation *)__pyx_t_2);
  __pyx_t_2 = 0;

  /* "src/python/grpcio/grpc/_cython/_cygrpc/aio/call.pyx.pxi":306
 *         cdef ReceiveInitialMetadataOperation receive_initial_metadata_op = ReceiveInitialMetadataOperation(_EMPTY_FLAGS)
 *         cdef ReceiveMessageOperation receive_message_op = ReceiveMessageOperation(_EMPTY_FLAGS)
 *         cdef ReceiveStatusOnClientOperation receive_status_on_client_op = ReceiveStatusOnClientOperation(_EMPTY_FLAGS)             # <<<<<<<<<<<<<<
 * 
 *         ops = (initial_metadata_op, send_message_op, send_close_op,
 */
  __Pyx_GetModuleGlobalName(__pyx_t_2, __pyx_n_s_EMPTY_FLAGS); if (unlikely(!__pyx_t_2)) __PYX_ERR(33, 306, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __pyx_t_1 = __Pyx_PyObject_CallOneArg(((PyObject *)__pyx_ptype_4grpc_7_cython_6cygrpc_ReceiveStatusOnClientOperation), __pyx_t_2); if (unlikely(!__pyx_t_1)) __PYX_ERR(33, 306, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  __Pyx_GIVEREF(__pyx_t_1);
  __pyx_cur_scope->__pyx_v_receive_status_on_client_op = ((struct __pyx_obj_4grpc_7_cython_6cygrpc_ReceiveStatusOnClientOperation *)__pyx_t_1);
  __pyx_t_1 = 0;

  /* "src/python/grpcio/grpc/_cython/_cygrpc/aio/call.pyx.pxi":308
 *         cdef ReceiveStatusOnClientOperation receive_status_on_client_op = ReceiveStatusOnClientOperation(_EMPTY_FLAGS)
 * 
 *         ops = (initial_metadata_op, send_message_op, send_close_op,             # <<<<<<<<<<<<<<
 *                receive_initial_metadata_op, receive_message_op,
 *                receive_status_on_client_op)
 */
  __pyx_t_1 = PyTuple_New(6); if (unlikely(!__pyx_t_1)) __PYX_ERR(33, 308, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_INCREF(((PyObject *)__pyx_cur_scope->__pyx_v_initial_metadata_op));
  __Pyx_GIVEREF(((PyObject *)__pyx_cur_scope->__pyx_v_initial_metadata_op));
  PyTuple_SET_ITEM(__pyx_t_1, 0, ((PyObject *)__pyx_cur_scope->__pyx_v_initial_metadata_op));
  __Pyx_INCREF(((PyObject *)__pyx_cur_scope->__pyx_v_send_message_op));
  __Pyx_GIVEREF(((PyObject *)__pyx_cur_scope->__pyx_v_send_message_op));
  PyTuple_SET_ITEM(__pyx_t_1, 1, ((PyObject *)__pyx_cur_scope->__pyx_v_send_message_op));
  __Pyx_INCREF(((PyObject *)__pyx_cur_scope->__pyx_v_send_close_op));
  __Pyx_GIVEREF(((PyObject *)__pyx_cur_scope->__pyx_v_send_close_op));
  PyTuple_SET_ITEM(__pyx_t_1, 2, ((PyObject *)__pyx_cur_scope->__pyx_v_send_close_op));
  __Pyx_INCREF(((PyObject *)__pyx_cur_scope->__pyx_v_receive_initial_metadata_op));
  __Pyx_GIVEREF(((PyObject *)__pyx_cur_scope->__pyx_v_receive_initial_metadata_op));
  PyTuple_SET_ITEM(__pyx_t_1, 3, ((PyObject *)__pyx_cur_scope->__pyx_v_receive_initial_metadata_op));
  __Pyx_INCREF(((PyObject *)__pyx_cur_scope->__pyx_v_receive_message_op));
  __Pyx_GIVEREF(((PyObject *)__pyx_cur_scope->__pyx_v_receive_message_op));
  PyTuple_SET_ITEM(__pyx_t_1, 4, ((PyObject *)__pyx_cur_scope->__pyx_v_receive_message_op));
  __Pyx_INCREF(((PyObject *)__pyx_cur_scope->__pyx_v_receive_status_on_client_op));
  __Pyx_GIVEREF(((PyObject *)__pyx_cur_scope->__pyx_v_receive_status_on_client_op));
  PyTuple_SET_ITEM(__pyx_t_1, 5, ((PyObject *)__pyx_cur_scope->__pyx_v_receive_status_on_client_op));
  __Pyx_GIVEREF(__pyx_t_1);
  __pyx_cur_scope->__pyx_v_ops = ((PyObject*)__pyx_t_1);
  __pyx_t_1 = 0;

  /* "src/python/grpcio/grpc/_cython/_cygrpc/aio/call.pyx.pxi":314
 *         # Executes all operations in one batch.
 *         # Might raise CancelledError, handling it in Python UnaryUnaryCall.
 *         await execute_batch(self,             # <<<<<<<<<<<<<<
 *                             ops,
 *                             self._loop)
 */
  __Pyx_GetModuleGlobalName(__pyx_t_2, __pyx_n_s_execute_batch); if (unlikely(!__pyx_t_2)) __PYX_ERR(33, 314, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);

  /* "src/python/grpcio/grpc/_cython/_cygrpc/aio/call.pyx.pxi":316
 *         await execute_batch(self,
 *                             ops,
 *                             self._loop)             # <<<<<<<<<<<<<<
 * 
 *         self._set_initial_metadata(receive_initial_metadata_op.initial_metadata())
 */
  __pyx_t_3 = NULL;
  __pyx_t_4 = 0;
  if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_2))) {
    __pyx_t_3 = PyMethod_GET_SELF(__pyx_t_2);
    if (likely(__pyx_t_3)) {
      PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_2);
      __Pyx_INCREF(__pyx_t_3);
      __Pyx_INCREF(function);
      __Pyx_DECREF_SET(__pyx_t_2, function);
      __pyx_t_4 = 1;
    }
  }
  #if CYTHON_FAST_PYCALL
  if (PyFunction_Check(__pyx_t_2)) {
    PyObject *__pyx_temp[4] = {__pyx_t_3, ((PyObject *)__pyx_cur_scope->__pyx_v_self), __pyx_cur_scope->__pyx_v_ops, __pyx_cur_scope->__pyx_v_self->_loop};
    __pyx_t_1 = __Pyx_PyFunction_FastCall(__pyx_t_2, __pyx_temp+1-__pyx_t_4, 3+__pyx_t_4); if (unlikely(!__pyx_t_1)) __PYX_ERR(33, 314, __pyx_L1_error)
    __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0;
    __Pyx_GOTREF(__pyx_t_1);
  } else
  #endif
  #if CYTHON_FAST_PYCCALL
  if (__Pyx_PyFastCFunction_Check(__pyx_t_2)) {
    PyObject *__pyx_temp[4] = {__pyx_t_3, ((PyObject *)__pyx_cur_scope->__pyx_v_self), __pyx_cur_scope->__pyx_v_ops, __pyx_cur_scope->__pyx_v_self->_loop};
    __pyx_t_1 = __Pyx_PyCFunction_FastCall(__pyx_t_2, __pyx_temp+1-__pyx_t_4, 3+__pyx_t_4); if (unlikely(!__pyx_t_1)) __PYX_ERR(33, 314, __pyx_L1_error)
    __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0;
    __Pyx_GOTREF(__pyx_t_1);
  } else
  #endif
  {
    __pyx_t_5 = PyTuple_New(3+__pyx_t_4); if (unlikely(!__pyx_t_5)) __PYX_ERR(33, 314, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_5);
    if (__pyx_t_3) {
      __Pyx_GIVEREF(__pyx_t_3); PyTuple_SET_ITEM(__pyx_t_5, 0, __pyx_t_3); __pyx_t_3 = NULL;
    }
    __Pyx_INCREF(((PyObject *)__pyx_cur_scope->__pyx_v_self));
    __Pyx_GIVEREF(((PyObject *)__pyx_cur_scope->__pyx_v_self));
    PyTuple_SET_ITEM(__pyx_t_5, 0+__pyx_t_4, ((PyObject *)__pyx_cur_scope->__pyx_v_self));
    __Pyx_INCREF(__pyx_cur_scope->__pyx_v_ops);
    __Pyx_GIVEREF(__pyx_cur_scope->__pyx_v_ops);
    PyTuple_SET_ITEM(__pyx_t_5, 1+__pyx_t_4, __pyx_cur_scope->__pyx_v_ops);
    __Pyx_INCREF(__pyx_cur_scope->__pyx_v_self->_loop);
    __Pyx_GIVEREF(__pyx_cur_scope->__pyx_v_self->_loop);
    PyTuple_SET_ITEM(__pyx_t_5, 2+__pyx_t_4, __pyx_cur_scope->__pyx_v_self->_loop);
    __pyx_t_1 = __Pyx_PyObject_Call(__pyx_t_2, __pyx_t_5, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(33, 314, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_1);
    __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
  }
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  __pyx_r = __Pyx_Coroutine_Yield_From(__pyx_generator, __pyx_t_1);
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  __Pyx_XGOTREF(__pyx_r);
  if (likely(__pyx_r)) {
    __Pyx_XGIVEREF(__pyx_r);
    __Pyx_RefNannyFinishContext();
    __Pyx_Coroutine_ResetAndClearException(__pyx_generator);
    /* return from generator, awaiting value */
    __pyx_generator->resume_label = 1;
    return __pyx_r;
    __pyx_L4_resume_from_await:;
    if (unlikely(!__pyx_sent_value)) __PYX_ERR(33, 314, __pyx_L1_error)
  } else {
    PyObject* exc_type = __Pyx_PyErr_Occurred();
    if (exc_type) {
      if (likely(exc_type == PyExc_StopIteration || (exc_type != PyExc_GeneratorExit && __Pyx_PyErr_GivenExceptionMatches(exc_type, PyExc_StopIteration)))) PyErr_Clear();
      else __PYX_ERR(33, 314, __pyx_L1_error)
    }
  }

  /* "src/python/grpcio/grpc/_cython/_cygrpc/aio/call.pyx.pxi":318
 *                             self._loop)
 * 
 *         self._set_initial_metadata(receive_initial_metadata_op.initial_metadata())             # <<<<<<<<<<<<<<
 * 
 *         cdef grpc_status_code code
 */
  __pyx_t_2 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_cur_scope->__pyx_v_receive_initial_metadata_op), __pyx_n_s_initial_metadata); if (unlikely(!__pyx_t_2)) __PYX_ERR(33, 318, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __pyx_t_5 = NULL;
  if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_2))) {
    __pyx_t_5 = PyMethod_GET_SELF(__pyx_t_2);
    if (likely(__pyx_t_5)) {
      PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_2);
      __Pyx_INCREF(__pyx_t_5);
      __Pyx_INCREF(function);
      __Pyx_DECREF_SET(__pyx_t_2, function);
    }
  }
  __pyx_t_1 = (__pyx_t_5) ? __Pyx_PyObject_CallOneArg(__pyx_t_2, __pyx_t_5) : __Pyx_PyObject_CallNoArg(__pyx_t_2);
  __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0;
  if (unlikely(!__pyx_t_1)) __PYX_ERR(33, 318, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  if (!(likely(PyTuple_CheckExact(__pyx_t_1))||((__pyx_t_1) == Py_None)||(PyErr_Format(PyExc_TypeError, "Expected %.16s, got %.200s", "tuple", Py_TYPE(__pyx_t_1)->tp_name), 0))) __PYX_ERR(33, 318, __pyx_L1_error)
  ((struct __pyx_vtabstruct_4grpc_7_cython_6cygrpc__AioCall *)__pyx_cur_scope->__pyx_v_self->__pyx_vtab)->_set_initial_metadata(__pyx_cur_scope->__pyx_v_self, ((PyObject*)__pyx_t_1)); if (unlikely(PyErr_Occurred())) __PYX_ERR(33, 318, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;

  /* "src/python/grpcio/grpc/_cython/_cygrpc/aio/call.pyx.pxi":321
 * 
 *         cdef grpc_status_code code
 *         code = receive_status_on_client_op.code()             # <<<<<<<<<<<<<<
 * 
 *         self._set_status(AioRpcStatus(
 */
  __pyx_t_2 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_cur_scope->__pyx_v_receive_status_on_client_op), __pyx_n_s_code); if (unlikely(!__pyx_t_2)) __PYX_ERR(33, 321, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __pyx_t_5 = NULL;
  if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_2))) {
    __pyx_t_5 = PyMethod_GET_SELF(__pyx_t_2);
    if (likely(__pyx_t_5)) {
      PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_2);
      __Pyx_INCREF(__pyx_t_5);
      __Pyx_INCREF(function);
      __Pyx_DECREF_SET(__pyx_t_2, function);
    }
  }
  __pyx_t_1 = (__pyx_t_5) ? __Pyx_PyObject_CallOneArg(__pyx_t_2, __pyx_t_5) : __Pyx_PyObject_CallNoArg(__pyx_t_2);
  __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0;
  if (unlikely(!__pyx_t_1)) __PYX_ERR(33, 321, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  __pyx_t_6 = ((grpc_status_code)__Pyx_PyInt_As_grpc_status_code(__pyx_t_1)); if (unlikely(PyErr_Occurred())) __PYX_ERR(33, 321, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  __pyx_cur_scope->__pyx_v_code = __pyx_t_6;

  /* "src/python/grpcio/grpc/_cython/_cygrpc/aio/call.pyx.pxi":324
 * 
 *         self._set_status(AioRpcStatus(
 *             code,             # <<<<<<<<<<<<<<
 *             receive_status_on_client_op.details(),
 *             receive_status_on_client_op.trailing_metadata(),
 */
  __pyx_t_1 = __Pyx_PyInt_From_grpc_status_code(__pyx_cur_scope->__pyx_v_code); if (unlikely(!__pyx_t_1)) __PYX_ERR(33, 324, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);

  /* "src/python/grpcio/grpc/_cython/_cygrpc/aio/call.pyx.pxi":325
 *         self._set_status(AioRpcStatus(
 *             code,
 *             receive_status_on_client_op.details(),             # <<<<<<<<<<<<<<
 *             receive_status_on_client_op.trailing_metadata(),
 *             receive_status_on_client_op.error_string(),
 */
  __pyx_t_5 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_cur_scope->__pyx_v_receive_status_on_client_op), __pyx_n_s_details); if (unlikely(!__pyx_t_5)) __PYX_ERR(33, 325, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_5);
  __pyx_t_3 = NULL;
  if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_5))) {
    __pyx_t_3 = PyMethod_GET_SELF(__pyx_t_5);
    if (likely(__pyx_t_3)) {
      PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_5);
      __Pyx_INCREF(__pyx_t_3);
      __Pyx_INCREF(function);
      __Pyx_DECREF_SET(__pyx_t_5, function);
    }
  }
  __pyx_t_2 = (__pyx_t_3) ? __Pyx_PyObject_CallOneArg(__pyx_t_5, __pyx_t_3) : __Pyx_PyObject_CallNoArg(__pyx_t_5);
  __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0;
  if (unlikely(!__pyx_t_2)) __PYX_ERR(33, 325, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;

  /* "src/python/grpcio/grpc/_cython/_cygrpc/aio/call.pyx.pxi":326
 *             code,
 *             receive_status_on_client_op.details(),
 *             receive_status_on_client_op.trailing_metadata(),             # <<<<<<<<<<<<<<
 *             receive_status_on_client_op.error_string(),
 *         ))
 */
  __pyx_t_3 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_cur_scope->__pyx_v_receive_status_on_client_op), __pyx_n_s_trailing_metadata); if (unlikely(!__pyx_t_3)) __PYX_ERR(33, 326, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  __pyx_t_7 = NULL;
  if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_3))) {
    __pyx_t_7 = PyMethod_GET_SELF(__pyx_t_3);
    if (likely(__pyx_t_7)) {
      PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_3);
      __Pyx_INCREF(__pyx_t_7);
      __Pyx_INCREF(function);
      __Pyx_DECREF_SET(__pyx_t_3, function);
    }
  }
  __pyx_t_5 = (__pyx_t_7) ? __Pyx_PyObject_CallOneArg(__pyx_t_3, __pyx_t_7) : __Pyx_PyObject_CallNoArg(__pyx_t_3);
  __Pyx_XDECREF(__pyx_t_7); __pyx_t_7 = 0;
  if (unlikely(!__pyx_t_5)) __PYX_ERR(33, 326, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_5);
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;

  /* "src/python/grpcio/grpc/_cython/_cygrpc/aio/call.pyx.pxi":327
 *             receive_status_on_client_op.details(),
 *             receive_status_on_client_op.trailing_metadata(),
 *             receive_status_on_client_op.error_string(),             # <<<<<<<<<<<<<<
 *         ))
 * 
 */
  __pyx_t_7 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_cur_scope->__pyx_v_receive_status_on_client_op), __pyx_n_s_error_string); if (unlikely(!__pyx_t_7)) __PYX_ERR(33, 327, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_7);
  __pyx_t_8 = NULL;
  if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_7))) {
    __pyx_t_8 = PyMethod_GET_SELF(__pyx_t_7);
    if (likely(__pyx_t_8)) {
      PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_7);
      __Pyx_INCREF(__pyx_t_8);
      __Pyx_INCREF(function);
      __Pyx_DECREF_SET(__pyx_t_7, function);
    }
  }
  __pyx_t_3 = (__pyx_t_8) ? __Pyx_PyObject_CallOneArg(__pyx_t_7, __pyx_t_8) : __Pyx_PyObject_CallNoArg(__pyx_t_7);
  __Pyx_XDECREF(__pyx_t_8); __pyx_t_8 = 0;
  if (unlikely(!__pyx_t_3)) __PYX_ERR(33, 327, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;

  /* "src/python/grpcio/grpc/_cython/_cygrpc/aio/call.pyx.pxi":323
 *         code = receive_status_on_client_op.code()
 * 
 *         self._set_status(AioRpcStatus(             # <<<<<<<<<<<<<<
 *             code,
 *             receive_status_on_client_op.details(),
 */
  __pyx_t_7 = PyTuple_New(4); if (unlikely(!__pyx_t_7)) __PYX_ERR(33, 323, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_7);
  __Pyx_GIVEREF(__pyx_t_1);
  PyTuple_SET_ITEM(__pyx_t_7, 0, __pyx_t_1);
  __Pyx_GIVEREF(__pyx_t_2);
  PyTuple_SET_ITEM(__pyx_t_7, 1, __pyx_t_2);
  __Pyx_GIVEREF(__pyx_t_5);
  PyTuple_SET_ITEM(__pyx_t_7, 2, __pyx_t_5);
  __Pyx_GIVEREF(__pyx_t_3);
  PyTuple_SET_ITEM(__pyx_t_7, 3, __pyx_t_3);
  __pyx_t_1 = 0;
  __pyx_t_2 = 0;
  __pyx_t_5 = 0;
  __pyx_t_3 = 0;
  __pyx_t_3 = __Pyx_PyObject_Call(((PyObject *)__pyx_ptype_4grpc_7_cython_6cygrpc_AioRpcStatus), __pyx_t_7, NULL); if (unlikely(!__pyx_t_3)) __PYX_ERR(33, 323, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
  ((struct __pyx_vtabstruct_4grpc_7_cython_6cygrpc__AioCall *)__pyx_cur_scope->__pyx_v_self->__pyx_vtab)->_set_status(__pyx_cur_scope->__pyx_v_self, ((struct __pyx_obj_4grpc_7_cython_6cygrpc_AioRpcStatus *)__pyx_t_3)); if (unlikely(PyErr_Occurred())) __PYX_ERR(33, 323, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;

  /* "src/python/grpcio/grpc/_cython/_cygrpc/aio/call.pyx.pxi":330
 *         ))
 * 
 *         if code == StatusCode.ok:             # <<<<<<<<<<<<<<
 *             return receive_message_op.message()
 *         else:
 */
  __pyx_t_3 = __Pyx_PyInt_From_grpc_status_code(__pyx_cur_scope->__pyx_v_code); if (unlikely(!__pyx_t_3)) __PYX_ERR(33, 330, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  __Pyx_GetModuleGlobalName(__pyx_t_7, __pyx_n_s_StatusCode); if (unlikely(!__pyx_t_7)) __PYX_ERR(33, 330, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_7);
  __pyx_t_5 = __Pyx_PyObject_GetAttrStr(__pyx_t_7, __pyx_n_s_ok); if (unlikely(!__pyx_t_5)) __PYX_ERR(33, 330, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_5);
  __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
  __pyx_t_7 = PyObject_RichCompare(__pyx_t_3, __pyx_t_5, Py_EQ); __Pyx_XGOTREF(__pyx_t_7); if (unlikely(!__pyx_t_7)) __PYX_ERR(33, 330, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
  __pyx_t_9 = __Pyx_PyObject_IsTrue(__pyx_t_7); if (unlikely(__pyx_t_9 < 0)) __PYX_ERR(33, 330, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
  if (__pyx_t_9) {

    /* "src/python/grpcio/grpc/_cython/_cygrpc/aio/call.pyx.pxi":331
 * 
 *         if code == StatusCode.ok:
 *             return receive_message_op.message()             # <<<<<<<<<<<<<<
 *         else:
 *             return None
 */
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_5 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_cur_scope->__pyx_v_receive_message_op), __pyx_n_s_message); if (unlikely(!__pyx_t_5)) __PYX_ERR(33, 331, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_5);
    __pyx_t_3 = NULL;
    if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_5))) {
      __pyx_t_3 = PyMethod_GET_SELF(__pyx_t_5);
      if (likely(__pyx_t_3)) {
        PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_5);
        __Pyx_INCREF(__pyx_t_3);
        __Pyx_INCREF(function);
        __Pyx_DECREF_SET(__pyx_t_5, function);
      }
    }
    __pyx_t_7 = (__pyx_t_3) ? __Pyx_PyObject_CallOneArg(__pyx_t_5, __pyx_t_3) : __Pyx_PyObject_CallNoArg(__pyx_t_5);
    __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0;
    if (unlikely(!__pyx_t_7)) __PYX_ERR(33, 331, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_7);
    __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
    __pyx_r = NULL; __Pyx_ReturnWithStopIteration(__pyx_t_7);
    __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
    goto __pyx_L0;

    /* "src/python/grpcio/grpc/_cython/_cygrpc/aio/call.pyx.pxi":330
 *         ))
 * 
 *         if code == StatusCode.ok:             # <<<<<<<<<<<<<<
 *             return receive_message_op.message()
 *         else:
 */
  }

  /* "src/python/grpcio/grpc/_cython/_cygrpc/aio/call.pyx.pxi":333
 *             return receive_message_op.message()
 *         else:
 *             return None             # <<<<<<<<<<<<<<
 * 
 *     async def _handle_status_once_received(self):
 */
  /*else*/ {
    __Pyx_XDECREF(__pyx_r);
    __pyx_r = NULL;
    goto __pyx_L0;
  }
  CYTHON_MAYBE_UNUSED_VAR(__pyx_cur_scope);

  /* "src/python/grpcio/grpc/_cython/_cygrpc/aio/call.pyx.pxi":288
 *         return False
 * 
 *     async def unary_unary(self,             # <<<<<<<<<<<<<<
 *                           bytes request,
 *                           tuple outbound_initial_metadata):
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_XDECREF(__pyx_t_3);
  __Pyx_XDECREF(__pyx_t_5);
  __Pyx_XDECREF(__pyx_t_7);
  __Pyx_XDECREF(__pyx_t_8);
  __Pyx_AddTraceback("unary_unary", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_L0:;
  __Pyx_XDECREF(__pyx_r); __pyx_r = 0;
  #if !CYTHON_USE_EXC_INFO_STACK
  __Pyx_Coroutine_ResetAndClearException(__pyx_generator);
  #endif
  __pyx_generator->resume_label = -1;
  __Pyx_Coroutine_clear((PyObject*)__pyx_generator);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}
static PyObject *__pyx_gb_4grpc_7_cython_6cygrpc_8_AioCall_35generator11(__pyx_CoroutineObject *__pyx_generator, CYTHON_UNUSED PyThreadState *__pyx_tstate, PyObject *__pyx_sent_value); /* proto */

/* "src/python/grpcio/grpc/_cython/_cygrpc/aio/call.pyx.pxi":335
 *             return None
 * 
 *     async def _handle_status_once_received(self):             # <<<<<<<<<<<<<<
 *         """Handles the status sent by peer once received."""
 *         cdef ReceiveStatusOnClientOperation op = ReceiveStatusOnClientOperation(_EMPTY_FLAGS)
 */

/* Python wrapper */
static PyObject *__pyx_pw_4grpc_7_cython_6cygrpc_8_AioCall_34_handle_status_once_received(PyObject *__pyx_v_self, CYTHON_UNUSED PyObject *unused); /*proto*/
static char __pyx_doc_4grpc_7_cython_6cygrpc_8_AioCall_33_handle_status_once_received[] = "Handles the status sent by peer once received.";
static PyObject *__pyx_pw_4grpc_7_cython_6cygrpc_8_AioCall_34_handle_status_once_received(PyObject *__pyx_v_self, CYTHON_UNUSED PyObject *unused) {
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("_handle_status_once_received (wrapper)", 0);
  __pyx_r = __pyx_pf_4grpc_7_cython_6cygrpc_8_AioCall_33_handle_status_once_received(((struct __pyx_obj_4grpc_7_cython_6cygrpc__AioCall *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_4grpc_7_cython_6cygrpc_8_AioCall_33_handle_status_once_received(struct __pyx_obj_4grpc_7_cython_6cygrpc__AioCall *__pyx_v_self) {
  struct __pyx_obj_4grpc_7_cython_6cygrpc___pyx_scope_struct_23__handle_status_once_received *__pyx_cur_scope;
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("_handle_status_once_received", 0);
  __pyx_cur_scope = (struct __pyx_obj_4grpc_7_cython_6cygrpc___pyx_scope_struct_23__handle_status_once_received *)__pyx_tp_new_4grpc_7_cython_6cygrpc___pyx_scope_struct_23__handle_status_once_received(__pyx_ptype_4grpc_7_cython_6cygrpc___pyx_scope_struct_23__handle_status_once_received, __pyx_empty_tuple, NULL);
  if (unlikely(!__pyx_cur_scope)) {
    __pyx_cur_scope = ((struct __pyx_obj_4grpc_7_cython_6cygrpc___pyx_scope_struct_23__handle_status_once_received *)Py_None);
    __Pyx_INCREF(Py_None);
    __PYX_ERR(33, 335, __pyx_L1_error)
  } else {
    __Pyx_GOTREF(__pyx_cur_scope);
  }
  __pyx_cur_scope->__pyx_v_self = __pyx_v_self;
  __Pyx_INCREF((PyObject *)__pyx_cur_scope->__pyx_v_self);
  __Pyx_GIVEREF((PyObject *)__pyx_cur_scope->__pyx_v_self);
  {
    __pyx_CoroutineObject *gen = __Pyx_Coroutine_New((__pyx_coroutine_body_t) __pyx_gb_4grpc_7_cython_6cygrpc_8_AioCall_35generator11, NULL, (PyObject *) __pyx_cur_scope, __pyx_n_s_handle_status_once_received, __pyx_n_s_AioCall__handle_status_once_rec, __pyx_n_s_grpc__cython_cygrpc); if (unlikely(!gen)) __PYX_ERR(33, 335, __pyx_L1_error)
    __Pyx_DECREF(__pyx_cur_scope);
    __Pyx_RefNannyFinishContext();
    return (PyObject *) gen;
  }

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_AddTraceback("grpc._cython.cygrpc._AioCall._handle_status_once_received", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __Pyx_DECREF(((PyObject *)__pyx_cur_scope));
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_gb_4grpc_7_cython_6cygrpc_8_AioCall_35generator11(__pyx_CoroutineObject *__pyx_generator, CYTHON_UNUSED PyThreadState *__pyx_tstate, PyObject *__pyx_sent_value) /* generator body */
{
  struct __pyx_obj_4grpc_7_cython_6cygrpc___pyx_scope_struct_23__handle_status_once_received *__pyx_cur_scope = ((struct __pyx_obj_4grpc_7_cython_6cygrpc___pyx_scope_struct_23__handle_status_once_received *)__pyx_generator->closure);
  PyObject *__pyx_r = NULL;
  PyObject *__pyx_t_1 = NULL;
  PyObject *__pyx_t_2 = NULL;
  PyObject *__pyx_t_3 = NULL;
  int __pyx_t_4;
  PyObject *__pyx_t_5 = NULL;
  int __pyx_t_6;
  PyObject *__pyx_t_7 = NULL;
  PyObject *__pyx_t_8 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("_handle_status_once_received", 0);
  switch (__pyx_generator->resume_label) {
    case 0: goto __pyx_L3_first_run;
    case 1: goto __pyx_L4_resume_from_await;
    default: /* CPython raises the right error here */
    __Pyx_RefNannyFinishContext();
    return NULL;
  }
  __pyx_L3_first_run:;
  if (unlikely(!__pyx_sent_value)) __PYX_ERR(33, 335, __pyx_L1_error)

  /* "src/python/grpcio/grpc/_cython/_cygrpc/aio/call.pyx.pxi":337
 *     async def _handle_status_once_received(self):
 *         """Handles the status sent by peer once received."""
 *         cdef ReceiveStatusOnClientOperation op = ReceiveStatusOnClientOperation(_EMPTY_FLAGS)             # <<<<<<<<<<<<<<
 *         cdef tuple ops = (op,)
 *         await execute_batch(self, ops, self._loop)
 */
  __Pyx_GetModuleGlobalName(__pyx_t_1, __pyx_n_s_EMPTY_FLAGS); if (unlikely(!__pyx_t_1)) __PYX_ERR(33, 337, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_t_2 = __Pyx_PyObject_CallOneArg(((PyObject *)__pyx_ptype_4grpc_7_cython_6cygrpc_ReceiveStatusOnClientOperation), __pyx_t_1); if (unlikely(!__pyx_t_2)) __PYX_ERR(33, 337, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  __Pyx_GIVEREF(__pyx_t_2);
  __pyx_cur_scope->__pyx_v_op = ((struct __pyx_obj_4grpc_7_cython_6cygrpc_ReceiveStatusOnClientOperation *)__pyx_t_2);
  __pyx_t_2 = 0;

  /* "src/python/grpcio/grpc/_cython/_cygrpc/aio/call.pyx.pxi":338
 *         """Handles the status sent by peer once received."""
 *         cdef ReceiveStatusOnClientOperation op = ReceiveStatusOnClientOperation(_EMPTY_FLAGS)
 *         cdef tuple ops = (op,)             # <<<<<<<<<<<<<<
 *         await execute_batch(self, ops, self._loop)
 * 
 */
  __pyx_t_2 = PyTuple_New(1); if (unlikely(!__pyx_t_2)) __PYX_ERR(33, 338, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __Pyx_INCREF(((PyObject *)__pyx_cur_scope->__pyx_v_op));
  __Pyx_GIVEREF(((PyObject *)__pyx_cur_scope->__pyx_v_op));
  PyTuple_SET_ITEM(__pyx_t_2, 0, ((PyObject *)__pyx_cur_scope->__pyx_v_op));
  __Pyx_GIVEREF(__pyx_t_2);
  __pyx_cur_scope->__pyx_v_ops = ((PyObject*)__pyx_t_2);
  __pyx_t_2 = 0;

  /* "src/python/grpcio/grpc/_cython/_cygrpc/aio/call.pyx.pxi":339
 *         cdef ReceiveStatusOnClientOperation op = ReceiveStatusOnClientOperation(_EMPTY_FLAGS)
 *         cdef tuple ops = (op,)
 *         await execute_batch(self, ops, self._loop)             # <<<<<<<<<<<<<<
 * 
 *         # Halts if the RPC is locally cancelled
 */
  __Pyx_GetModuleGlobalName(__pyx_t_1, __pyx_n_s_execute_batch); if (unlikely(!__pyx_t_1)) __PYX_ERR(33, 339, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_t_3 = NULL;
  __pyx_t_4 = 0;
  if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_1))) {
    __pyx_t_3 = PyMethod_GET_SELF(__pyx_t_1);
    if (likely(__pyx_t_3)) {
      PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_1);
      __Pyx_INCREF(__pyx_t_3);
      __Pyx_INCREF(function);
      __Pyx_DECREF_SET(__pyx_t_1, function);
      __pyx_t_4 = 1;
    }
  }
  #if CYTHON_FAST_PYCALL
  if (PyFunction_Check(__pyx_t_1)) {
    PyObject *__pyx_temp[4] = {__pyx_t_3, ((PyObject *)__pyx_cur_scope->__pyx_v_self), __pyx_cur_scope->__pyx_v_ops, __pyx_cur_scope->__pyx_v_self->_loop};
    __pyx_t_2 = __Pyx_PyFunction_FastCall(__pyx_t_1, __pyx_temp+1-__pyx_t_4, 3+__pyx_t_4); if (unlikely(!__pyx_t_2)) __PYX_ERR(33, 339, __pyx_L1_error)
    __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0;
    __Pyx_GOTREF(__pyx_t_2);
  } else
  #endif
  #if CYTHON_FAST_PYCCALL
  if (__Pyx_PyFastCFunction_Check(__pyx_t_1)) {
    PyObject *__pyx_temp[4] = {__pyx_t_3, ((PyObject *)__pyx_cur_scope->__pyx_v_self), __pyx_cur_scope->__pyx_v_ops, __pyx_cur_scope->__pyx_v_self->_loop};
    __pyx_t_2 = __Pyx_PyCFunction_FastCall(__pyx_t_1, __pyx_temp+1-__pyx_t_4, 3+__pyx_t_4); if (unlikely(!__pyx_t_2)) __PYX_ERR(33, 339, __pyx_L1_error)
    __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0;
    __Pyx_GOTREF(__pyx_t_2);
  } else
  #endif
  {
    __pyx_t_5 = PyTuple_New(3+__pyx_t_4); if (unlikely(!__pyx_t_5)) __PYX_ERR(33, 339, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_5);
    if (__pyx_t_3) {
      __Pyx_GIVEREF(__pyx_t_3); PyTuple_SET_ITEM(__pyx_t_5, 0, __pyx_t_3); __pyx_t_3 = NULL;
    }
    __Pyx_INCREF(((PyObject *)__pyx_cur_scope->__pyx_v_self));
    __Pyx_GIVEREF(((PyObject *)__pyx_cur_scope->__pyx_v_self));
    PyTuple_SET_ITEM(__pyx_t_5, 0+__pyx_t_4, ((PyObject *)__pyx_cur_scope->__pyx_v_self));
    __Pyx_INCREF(__pyx_cur_scope->__pyx_v_ops);
    __Pyx_GIVEREF(__pyx_cur_scope->__pyx_v_ops);
    PyTuple_SET_ITEM(__pyx_t_5, 1+__pyx_t_4, __pyx_cur_scope->__pyx_v_ops);
    __Pyx_INCREF(__pyx_cur_scope->__pyx_v_self->_loop);
    __Pyx_GIVEREF(__pyx_cur_scope->__pyx_v_self->_loop);
    PyTuple_SET_ITEM(__pyx_t_5, 2+__pyx_t_4, __pyx_cur_scope->__pyx_v_self->_loop);
    __pyx_t_2 = __Pyx_PyObject_Call(__pyx_t_1, __pyx_t_5, NULL); if (unlikely(!__pyx_t_2)) __PYX_ERR(33, 339, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_2);
    __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
  }
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  __pyx_r = __Pyx_Coroutine_Yield_From(__pyx_generator, __pyx_t_2);
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  __Pyx_XGOTREF(__pyx_r);
  if (likely(__pyx_r)) {
    __Pyx_XGIVEREF(__pyx_r);
    __Pyx_RefNannyFinishContext();
    __Pyx_Coroutine_ResetAndClearException(__pyx_generator);
    /* return from generator, awaiting value */
    __pyx_generator->resume_label = 1;
    return __pyx_r;
    __pyx_L4_resume_from_await:;
    if (unlikely(!__pyx_sent_value)) __PYX_ERR(33, 339, __pyx_L1_error)
  } else {
    PyObject* exc_type = __Pyx_PyErr_Occurred();
    if (exc_type) {
      if (likely(exc_type == PyExc_StopIteration || (exc_type != PyExc_GeneratorExit && __Pyx_PyErr_GivenExceptionMatches(exc_type, PyExc_StopIteration)))) PyErr_Clear();
      else __PYX_ERR(33, 339, __pyx_L1_error)
    }
  }

  /* "src/python/grpcio/grpc/_cython/_cygrpc/aio/call.pyx.pxi":342
 * 
 *         # Halts if the RPC is locally cancelled
 *         if self._is_locally_cancelled:             # <<<<<<<<<<<<<<
 *             return
 * 
 */
  __pyx_t_6 = (__pyx_cur_scope->__pyx_v_self->_is_locally_cancelled != 0);
  if (__pyx_t_6) {

    /* "src/python/grpcio/grpc/_cython/_cygrpc/aio/call.pyx.pxi":343
 *         # Halts if the RPC is locally cancelled
 *         if self._is_locally_cancelled:
 *             return             # <<<<<<<<<<<<<<
 * 
 *         self._set_status(AioRpcStatus(
 */
    __Pyx_XDECREF(__pyx_r);
    __pyx_r = NULL;
    goto __pyx_L0;

    /* "src/python/grpcio/grpc/_cython/_cygrpc/aio/call.pyx.pxi":342
 * 
 *         # Halts if the RPC is locally cancelled
 *         if self._is_locally_cancelled:             # <<<<<<<<<<<<<<
 *             return
 * 
 */
  }

  /* "src/python/grpcio/grpc/_cython/_cygrpc/aio/call.pyx.pxi":346
 * 
 *         self._set_status(AioRpcStatus(
 *             op.code(),             # <<<<<<<<<<<<<<
 *             op.details(),
 *             op.trailing_metadata(),
 */
  __pyx_t_1 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_cur_scope->__pyx_v_op), __pyx_n_s_code); if (unlikely(!__pyx_t_1)) __PYX_ERR(33, 346, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_t_5 = NULL;
  if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_1))) {
    __pyx_t_5 = PyMethod_GET_SELF(__pyx_t_1);
    if (likely(__pyx_t_5)) {
      PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_1);
      __Pyx_INCREF(__pyx_t_5);
      __Pyx_INCREF(function);
      __Pyx_DECREF_SET(__pyx_t_1, function);
    }
  }
  __pyx_t_2 = (__pyx_t_5) ? __Pyx_PyObject_CallOneArg(__pyx_t_1, __pyx_t_5) : __Pyx_PyObject_CallNoArg(__pyx_t_1);
  __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0;
  if (unlikely(!__pyx_t_2)) __PYX_ERR(33, 346, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;

  /* "src/python/grpcio/grpc/_cython/_cygrpc/aio/call.pyx.pxi":347
 *         self._set_status(AioRpcStatus(
 *             op.code(),
 *             op.details(),             # <<<<<<<<<<<<<<
 *             op.trailing_metadata(),
 *             op.error_string(),
 */
  __pyx_t_5 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_cur_scope->__pyx_v_op), __pyx_n_s_details); if (unlikely(!__pyx_t_5)) __PYX_ERR(33, 347, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_5);
  __pyx_t_3 = NULL;
  if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_5))) {
    __pyx_t_3 = PyMethod_GET_SELF(__pyx_t_5);
    if (likely(__pyx_t_3)) {
      PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_5);
      __Pyx_INCREF(__pyx_t_3);
      __Pyx_INCREF(function);
      __Pyx_DECREF_SET(__pyx_t_5, function);
    }
  }
  __pyx_t_1 = (__pyx_t_3) ? __Pyx_PyObject_CallOneArg(__pyx_t_5, __pyx_t_3) : __Pyx_PyObject_CallNoArg(__pyx_t_5);
  __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0;
  if (unlikely(!__pyx_t_1)) __PYX_ERR(33, 347, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;

  /* "src/python/grpcio/grpc/_cython/_cygrpc/aio/call.pyx.pxi":348
 *             op.code(),
 *             op.details(),
 *             op.trailing_metadata(),             # <<<<<<<<<<<<<<
 *             op.error_string(),
 *         ))
 */
  __pyx_t_3 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_cur_scope->__pyx_v_op), __pyx_n_s_trailing_metadata); if (unlikely(!__pyx_t_3)) __PYX_ERR(33, 348, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  __pyx_t_7 = NULL;
  if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_3))) {
    __pyx_t_7 = PyMethod_GET_SELF(__pyx_t_3);
    if (likely(__pyx_t_7)) {
      PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_3);
      __Pyx_INCREF(__pyx_t_7);
      __Pyx_INCREF(function);
      __Pyx_DECREF_SET(__pyx_t_3, function);
    }
  }
  __pyx_t_5 = (__pyx_t_7) ? __Pyx_PyObject_CallOneArg(__pyx_t_3, __pyx_t_7) : __Pyx_PyObject_CallNoArg(__pyx_t_3);
  __Pyx_XDECREF(__pyx_t_7); __pyx_t_7 = 0;
  if (unlikely(!__pyx_t_5)) __PYX_ERR(33, 348, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_5);
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;

  /* "src/python/grpcio/grpc/_cython/_cygrpc/aio/call.pyx.pxi":349
 *             op.details(),
 *             op.trailing_metadata(),
 *             op.error_string(),             # <<<<<<<<<<<<<<
 *         ))
 * 
 */
  __pyx_t_7 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_cur_scope->__pyx_v_op), __pyx_n_s_error_string); if (unlikely(!__pyx_t_7)) __PYX_ERR(33, 349, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_7);
  __pyx_t_8 = NULL;
  if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_7))) {
    __pyx_t_8 = PyMethod_GET_SELF(__pyx_t_7);
    if (likely(__pyx_t_8)) {
      PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_7);
      __Pyx_INCREF(__pyx_t_8);
      __Pyx_INCREF(function);
      __Pyx_DECREF_SET(__pyx_t_7, function);
    }
  }
  __pyx_t_3 = (__pyx_t_8) ? __Pyx_PyObject_CallOneArg(__pyx_t_7, __pyx_t_8) : __Pyx_PyObject_CallNoArg(__pyx_t_7);
  __Pyx_XDECREF(__pyx_t_8); __pyx_t_8 = 0;
  if (unlikely(!__pyx_t_3)) __PYX_ERR(33, 349, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;

  /* "src/python/grpcio/grpc/_cython/_cygrpc/aio/call.pyx.pxi":345
 *             return
 * 
 *         self._set_status(AioRpcStatus(             # <<<<<<<<<<<<<<
 *             op.code(),
 *             op.details(),
 */
  __pyx_t_7 = PyTuple_New(4); if (unlikely(!__pyx_t_7)) __PYX_ERR(33, 345, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_7);
  __Pyx_GIVEREF(__pyx_t_2);
  PyTuple_SET_ITEM(__pyx_t_7, 0, __pyx_t_2);
  __Pyx_GIVEREF(__pyx_t_1);
  PyTuple_SET_ITEM(__pyx_t_7, 1, __pyx_t_1);
  __Pyx_GIVEREF(__pyx_t_5);
  PyTuple_SET_ITEM(__pyx_t_7, 2, __pyx_t_5);
  __Pyx_GIVEREF(__pyx_t_3);
  PyTuple_SET_ITEM(__pyx_t_7, 3, __pyx_t_3);
  __pyx_t_2 = 0;
  __pyx_t_1 = 0;
  __pyx_t_5 = 0;
  __pyx_t_3 = 0;
  __pyx_t_3 = __Pyx_PyObject_Call(((PyObject *)__pyx_ptype_4grpc_7_cython_6cygrpc_AioRpcStatus), __pyx_t_7, NULL); if (unlikely(!__pyx_t_3)) __PYX_ERR(33, 345, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
  ((struct __pyx_vtabstruct_4grpc_7_cython_6cygrpc__AioCall *)__pyx_cur_scope->__pyx_v_self->__pyx_vtab)->_set_status(__pyx_cur_scope->__pyx_v_self, ((struct __pyx_obj_4grpc_7_cython_6cygrpc_AioRpcStatus *)__pyx_t_3)); if (unlikely(PyErr_Occurred())) __PYX_ERR(33, 345, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
  CYTHON_MAYBE_UNUSED_VAR(__pyx_cur_scope);

  /* "src/python/grpcio/grpc/_cython/_cygrpc/aio/call.pyx.pxi":335
 *             return None
 * 
 *     async def _handle_status_once_received(self):             # <<<<<<<<<<<<<<
 *         """Handles the status sent by peer once received."""
 *         cdef ReceiveStatusOnClientOperation op = ReceiveStatusOnClientOperation(_EMPTY_FLAGS)
 */

  /* function exit code */
  PyErr_SetNone(PyExc_StopIteration);
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_XDECREF(__pyx_t_3);
  __Pyx_XDECREF(__pyx_t_5);
  __Pyx_XDECREF(__pyx_t_7);
  __Pyx_XDECREF(__pyx_t_8);
  __Pyx_AddTraceback("_handle_status_once_received", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_L0:;
  __Pyx_XDECREF(__pyx_r); __pyx_r = 0;
  #if !CYTHON_USE_EXC_INFO_STACK
  __Pyx_Coroutine_ResetAndClearException(__pyx_generator);
  #endif
  __pyx_generator->resume_label = -1;
  __Pyx_Coroutine_clear((PyObject*)__pyx_generator);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}
static PyObject *__pyx_gb_4grpc_7_cython_6cygrpc_8_AioCall_38generator12(__pyx_CoroutineObject *__pyx_generator, CYTHON_UNUSED PyThreadState *__pyx_tstate, PyObject *__pyx_sent_value); /* proto */

/* "src/python/grpcio/grpc/_cython/_cygrpc/aio/call.pyx.pxi":352
 *         ))
 * 
 *     async def receive_serialized_message(self):             # <<<<<<<<<<<<<<
 *         """Receives one single raw message in bytes."""
 *         cdef bytes received_message
 */

/* Python wrapper */
static PyObject *__pyx_pw_4grpc_7_cython_6cygrpc_8_AioCall_37receive_serialized_message(PyObject *__pyx_v_self, CYTHON_UNUSED PyObject *unused); /*proto*/
static char __pyx_doc_4grpc_7_cython_6cygrpc_8_AioCall_36receive_serialized_message[] = "Receives one single raw message in bytes.";
static PyObject *__pyx_pw_4grpc_7_cython_6cygrpc_8_AioCall_37receive_serialized_message(PyObject *__pyx_v_self, CYTHON_UNUSED PyObject *unused) {
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("receive_serialized_message (wrapper)", 0);
  __pyx_r = __pyx_pf_4grpc_7_cython_6cygrpc_8_AioCall_36receive_serialized_message(((struct __pyx_obj_4grpc_7_cython_6cygrpc__AioCall *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_4grpc_7_cython_6cygrpc_8_AioCall_36receive_serialized_message(struct __pyx_obj_4grpc_7_cython_6cygrpc__AioCall *__pyx_v_self) {
  struct __pyx_obj_4grpc_7_cython_6cygrpc___pyx_scope_struct_24_receive_serialized_message *__pyx_cur_scope;
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("receive_serialized_message", 0);
  __pyx_cur_scope = (struct __pyx_obj_4grpc_7_cython_6cygrpc___pyx_scope_struct_24_receive_serialized_message *)__pyx_tp_new_4grpc_7_cython_6cygrpc___pyx_scope_struct_24_receive_serialized_message(__pyx_ptype_4grpc_7_cython_6cygrpc___pyx_scope_struct_24_receive_serialized_message, __pyx_empty_tuple, NULL);
  if (unlikely(!__pyx_cur_scope)) {
    __pyx_cur_scope = ((struct __pyx_obj_4grpc_7_cython_6cygrpc___pyx_scope_struct_24_receive_serialized_message *)Py_None);
    __Pyx_INCREF(Py_None);
    __PYX_ERR(33, 352, __pyx_L1_error)
  } else {
    __Pyx_GOTREF(__pyx_cur_scope);
  }
  __pyx_cur_scope->__pyx_v_self = __pyx_v_self;
  __Pyx_INCREF((PyObject *)__pyx_cur_scope->__pyx_v_self);
  __Pyx_GIVEREF((PyObject *)__pyx_cur_scope->__pyx_v_self);
  {
    __pyx_CoroutineObject *gen = __Pyx_Coroutine_New((__pyx_coroutine_body_t) __pyx_gb_4grpc_7_cython_6cygrpc_8_AioCall_38generator12, NULL, (PyObject *) __pyx_cur_scope, __pyx_n_s_receive_serialized_message, __pyx_n_s_AioCall_receive_serialized_mess, __pyx_n_s_grpc__cython_cygrpc); if (unlikely(!gen)) __PYX_ERR(33, 352, __pyx_L1_error)
    __Pyx_DECREF(__pyx_cur_scope);
    __Pyx_RefNannyFinishContext();
    return (PyObject *) gen;
  }

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_AddTraceback("grpc._cython.cygrpc._AioCall.receive_serialized_message", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __Pyx_DECREF(((PyObject *)__pyx_cur_scope));
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_gb_4grpc_7_cython_6cygrpc_8_AioCall_38generator12(__pyx_CoroutineObject *__pyx_generator, CYTHON_UNUSED PyThreadState *__pyx_tstate, PyObject *__pyx_sent_value) /* generator body */
{
  struct __pyx_obj_4grpc_7_cython_6cygrpc___pyx_scope_struct_24_receive_serialized_message *__pyx_cur_scope = ((struct __pyx_obj_4grpc_7_cython_6cygrpc___pyx_scope_struct_24_receive_serialized_message *)__pyx_generator->closure);
  PyObject *__pyx_r = NULL;
  PyObject *__pyx_t_1 = NULL;
  PyObject *__pyx_t_2 = NULL;
  PyObject *__pyx_t_3 = NULL;
  int __pyx_t_4;
  PyObject *__pyx_t_5 = NULL;
  int __pyx_t_6;
  int __pyx_t_7;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("receive_serialized_message", 0);
  switch (__pyx_generator->resume_label) {
    case 0: goto __pyx_L3_first_run;
    case 1: goto __pyx_L4_resume_from_await;
    default: /* CPython raises the right error here */
    __Pyx_RefNannyFinishContext();
    return NULL;
  }
  __pyx_L3_first_run:;
  if (unlikely(!__pyx_sent_value)) __PYX_ERR(33, 352, __pyx_L1_error)

  /* "src/python/grpcio/grpc/_cython/_cygrpc/aio/call.pyx.pxi":360
 *         # * The client application cancels;
 *         # * The server sends final status.
 *         received_message = await _receive_message(             # <<<<<<<<<<<<<<
 *             self,
 *             self._loop
 */
  __Pyx_GetModuleGlobalName(__pyx_t_2, __pyx_n_s_receive_message); if (unlikely(!__pyx_t_2)) __PYX_ERR(33, 360, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);

  /* "src/python/grpcio/grpc/_cython/_cygrpc/aio/call.pyx.pxi":362
 *         received_message = await _receive_message(
 *             self,
 *             self._loop             # <<<<<<<<<<<<<<
 *         )
 *         if received_message is not None:
 */
  __pyx_t_3 = NULL;
  __pyx_t_4 = 0;
  if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_2))) {
    __pyx_t_3 = PyMethod_GET_SELF(__pyx_t_2);
    if (likely(__pyx_t_3)) {
      PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_2);
      __Pyx_INCREF(__pyx_t_3);
      __Pyx_INCREF(function);
      __Pyx_DECREF_SET(__pyx_t_2, function);
      __pyx_t_4 = 1;
    }
  }
  #if CYTHON_FAST_PYCALL
  if (PyFunction_Check(__pyx_t_2)) {
    PyObject *__pyx_temp[3] = {__pyx_t_3, ((PyObject *)__pyx_cur_scope->__pyx_v_self), __pyx_cur_scope->__pyx_v_self->_loop};
    __pyx_t_1 = __Pyx_PyFunction_FastCall(__pyx_t_2, __pyx_temp+1-__pyx_t_4, 2+__pyx_t_4); if (unlikely(!__pyx_t_1)) __PYX_ERR(33, 360, __pyx_L1_error)
    __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0;
    __Pyx_GOTREF(__pyx_t_1);
  } else
  #endif
  #if CYTHON_FAST_PYCCALL
  if (__Pyx_PyFastCFunction_Check(__pyx_t_2)) {
    PyObject *__pyx_temp[3] = {__pyx_t_3, ((PyObject *)__pyx_cur_scope->__pyx_v_self), __pyx_cur_scope->__pyx_v_self->_loop};
    __pyx_t_1 = __Pyx_PyCFunction_FastCall(__pyx_t_2, __pyx_temp+1-__pyx_t_4, 2+__pyx_t_4); if (unlikely(!__pyx_t_1)) __PYX_ERR(33, 360, __pyx_L1_error)
    __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0;
    __Pyx_GOTREF(__pyx_t_1);
  } else
  #endif
  {
    __pyx_t_5 = PyTuple_New(2+__pyx_t_4); if (unlikely(!__pyx_t_5)) __PYX_ERR(33, 360, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_5);
    if (__pyx_t_3) {
      __Pyx_GIVEREF(__pyx_t_3); PyTuple_SET_ITEM(__pyx_t_5, 0, __pyx_t_3); __pyx_t_3 = NULL;
    }
    __Pyx_INCREF(((PyObject *)__pyx_cur_scope->__pyx_v_self));
    __Pyx_GIVEREF(((PyObject *)__pyx_cur_scope->__pyx_v_self));
    PyTuple_SET_ITEM(__pyx_t_5, 0+__pyx_t_4, ((PyObject *)__pyx_cur_scope->__pyx_v_self));
    __Pyx_INCREF(__pyx_cur_scope->__pyx_v_self->_loop);
    __Pyx_GIVEREF(__pyx_cur_scope->__pyx_v_self->_loop);
    PyTuple_SET_ITEM(__pyx_t_5, 1+__pyx_t_4, __pyx_cur_scope->__pyx_v_self->_loop);
    __pyx_t_1 = __Pyx_PyObject_Call(__pyx_t_2, __pyx_t_5, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(33, 360, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_1);
    __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
  }
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  __pyx_r = __Pyx_Coroutine_Yield_From(__pyx_generator, __pyx_t_1);
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  __Pyx_XGOTREF(__pyx_r);
  if (likely(__pyx_r)) {
    __Pyx_XGIVEREF(__pyx_r);
    __Pyx_RefNannyFinishContext();
    __Pyx_Coroutine_ResetAndClearException(__pyx_generator);
    /* return from generator, awaiting value */
    __pyx_generator->resume_label = 1;
    return __pyx_r;
    __pyx_L4_resume_from_await:;
    if (unlikely(!__pyx_sent_value)) __PYX_ERR(33, 360, __pyx_L1_error)
    __pyx_t_1 = __pyx_sent_value; __Pyx_INCREF(__pyx_t_1);
  } else {
    __pyx_t_1 = NULL;
    if (__Pyx_PyGen_FetchStopIterationValue(&__pyx_t_1) < 0) __PYX_ERR(33, 360, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_1);
  }

  /* "src/python/grpcio/grpc/_cython/_cygrpc/aio/call.pyx.pxi":360
 *         # * The client application cancels;
 *         # * The server sends final status.
 *         received_message = await _receive_message(             # <<<<<<<<<<<<<<
 *             self,
 *             self._loop
 */
  if (!(likely(PyBytes_CheckExact(__pyx_t_1))||((__pyx_t_1) == Py_None)||(PyErr_Format(PyExc_TypeError, "Expected %.16s, got %.200s", "bytes", Py_TYPE(__pyx_t_1)->tp_name), 0))) __PYX_ERR(33, 360, __pyx_L1_error)
  __Pyx_GIVEREF(__pyx_t_1);
  __pyx_cur_scope->__pyx_v_received_message = ((PyObject*)__pyx_t_1);
  __pyx_t_1 = 0;

  /* "src/python/grpcio/grpc/_cython/_cygrpc/aio/call.pyx.pxi":364
 *             self._loop
 *         )
 *         if received_message is not None:             # <<<<<<<<<<<<<<
 *             return received_message
 *         else:
 */
  __pyx_t_6 = (__pyx_cur_scope->__pyx_v_received_message != ((PyObject*)Py_None));
  __pyx_t_7 = (__pyx_t_6 != 0);
  if (__pyx_t_7) {

    /* "src/python/grpcio/grpc/_cython/_cygrpc/aio/call.pyx.pxi":365
 *         )
 *         if received_message is not None:
 *             return received_message             # <<<<<<<<<<<<<<
 *         else:
 *             return EOF
 */
    __Pyx_XDECREF(__pyx_r);
    __pyx_r = NULL; __Pyx_ReturnWithStopIteration(__pyx_cur_scope->__pyx_v_received_message);
    goto __pyx_L0;

    /* "src/python/grpcio/grpc/_cython/_cygrpc/aio/call.pyx.pxi":364
 *             self._loop
 *         )
 *         if received_message is not None:             # <<<<<<<<<<<<<<
 *             return received_message
 *         else:
 */
  }

  /* "src/python/grpcio/grpc/_cython/_cygrpc/aio/call.pyx.pxi":367
 *             return received_message
 *         else:
 *             return EOF             # <<<<<<<<<<<<<<
 * 
 *     async def send_serialized_message(self, bytes message):
 */
  /*else*/ {
    __Pyx_XDECREF(__pyx_r);
    __Pyx_GetModuleGlobalName(__pyx_t_1, __pyx_n_s_EOF); if (unlikely(!__pyx_t_1)) __PYX_ERR(33, 367, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_1);
    __pyx_r = NULL; __Pyx_ReturnWithStopIteration(__pyx_t_1);
    __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
    goto __pyx_L0;
  }
  CYTHON_MAYBE_UNUSED_VAR(__pyx_cur_scope);

  /* "src/python/grpcio/grpc/_cython/_cygrpc/aio/call.pyx.pxi":352
 *         ))
 * 
 *     async def receive_serialized_message(self):             # <<<<<<<<<<<<<<
 *         """Receives one single raw message in bytes."""
 *         cdef bytes received_message
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_XDECREF(__pyx_t_3);
  __Pyx_XDECREF(__pyx_t_5);
  __Pyx_AddTraceback("receive_serialized_message", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_L0:;
  __Pyx_XDECREF(__pyx_r); __pyx_r = 0;
  #if !CYTHON_USE_EXC_INFO_STACK
  __Pyx_Coroutine_ResetAndClearException(__pyx_generator);
  #endif
  __pyx_generator->resume_label = -1;
  __Pyx_Coroutine_clear((PyObject*)__pyx_generator);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}
static PyObject *__pyx_gb_4grpc_7_cython_6cygrpc_8_AioCall_41generator13(__pyx_CoroutineObject *__pyx_generator, CYTHON_UNUSED PyThreadState *__pyx_tstate, PyObject *__pyx_sent_value); /* proto */

/* "src/python/grpcio/grpc/_cython/_cygrpc/aio/call.pyx.pxi":369
 *             return EOF
 * 
 *     async def send_serialized_message(self, bytes message):             # <<<<<<<<<<<<<<
 *         """Sends one single raw message in bytes."""
 *         await _send_message(self,
 */

/* Python wrapper */
static PyObject *__pyx_pw_4grpc_7_cython_6cygrpc_8_AioCall_40send_serialized_message(PyObject *__pyx_v_self, PyObject *__pyx_v_message); /*proto*/
static char __pyx_doc_4grpc_7_cython_6cygrpc_8_AioCall_39send_serialized_message[] = "Sends one single raw message in bytes.";
static PyObject *__pyx_pw_4grpc_7_cython_6cygrpc_8_AioCall_40send_serialized_message(PyObject *__pyx_v_self, PyObject *__pyx_v_message) {
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("send_serialized_message (wrapper)", 0);
  if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_message), (&PyBytes_Type), 1, "message", 1))) __PYX_ERR(33, 369, __pyx_L1_error)
  __pyx_r = __pyx_pf_4grpc_7_cython_6cygrpc_8_AioCall_39send_serialized_message(((struct __pyx_obj_4grpc_7_cython_6cygrpc__AioCall *)__pyx_v_self), ((PyObject*)__pyx_v_message));

  /* function exit code */
  goto __pyx_L0;
  __pyx_L1_error:;
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_4grpc_7_cython_6cygrpc_8_AioCall_39send_serialized_message(struct __pyx_obj_4grpc_7_cython_6cygrpc__AioCall *__pyx_v_self, PyObject *__pyx_v_message) {
  struct __pyx_obj_4grpc_7_cython_6cygrpc___pyx_scope_struct_25_send_serialized_message *__pyx_cur_scope;
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("send_serialized_message", 0);
  __pyx_cur_scope = (struct __pyx_obj_4grpc_7_cython_6cygrpc___pyx_scope_struct_25_send_serialized_message *)__pyx_tp_new_4grpc_7_cython_6cygrpc___pyx_scope_struct_25_send_serialized_message(__pyx_ptype_4grpc_7_cython_6cygrpc___pyx_scope_struct_25_send_serialized_message, __pyx_empty_tuple, NULL);
  if (unlikely(!__pyx_cur_scope)) {
    __pyx_cur_scope = ((struct __pyx_obj_4grpc_7_cython_6cygrpc___pyx_scope_struct_25_send_serialized_message *)Py_None);
    __Pyx_INCREF(Py_None);
    __PYX_ERR(33, 369, __pyx_L1_error)
  } else {
    __Pyx_GOTREF(__pyx_cur_scope);
  }
  __pyx_cur_scope->__pyx_v_self = __pyx_v_self;
  __Pyx_INCREF((PyObject *)__pyx_cur_scope->__pyx_v_self);
  __Pyx_GIVEREF((PyObject *)__pyx_cur_scope->__pyx_v_self);
  __pyx_cur_scope->__pyx_v_message = __pyx_v_message;
  __Pyx_INCREF(__pyx_cur_scope->__pyx_v_message);
  __Pyx_GIVEREF(__pyx_cur_scope->__pyx_v_message);
  {
    __pyx_CoroutineObject *gen = __Pyx_Coroutine_New((__pyx_coroutine_body_t) __pyx_gb_4grpc_7_cython_6cygrpc_8_AioCall_41generator13, NULL, (PyObject *) __pyx_cur_scope, __pyx_n_s_send_serialized_message, __pyx_n_s_AioCall_send_serialized_message, __pyx_n_s_grpc__cython_cygrpc); if (unlikely(!gen)) __PYX_ERR(33, 369, __pyx_L1_error)
    __Pyx_DECREF(__pyx_cur_scope);
    __Pyx_RefNannyFinishContext();
    return (PyObject *) gen;
  }

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_AddTraceback("grpc._cython.cygrpc._AioCall.send_serialized_message", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __Pyx_DECREF(((PyObject *)__pyx_cur_scope));
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_gb_4grpc_7_cython_6cygrpc_8_AioCall_41generator13(__pyx_CoroutineObject *__pyx_generator, CYTHON_UNUSED PyThreadState *__pyx_tstate, PyObject *__pyx_sent_value) /* generator body */
{
  struct __pyx_obj_4grpc_7_cython_6cygrpc___pyx_scope_struct_25_send_serialized_message *__pyx_cur_scope = ((struct __pyx_obj_4grpc_7_cython_6cygrpc___pyx_scope_struct_25_send_serialized_message *)__pyx_generator->closure);
  PyObject *__pyx_r = NULL;
  PyObject *__pyx_t_1 = NULL;
  PyObject *__pyx_t_2 = NULL;
  PyObject *__pyx_t_3 = NULL;
  int __pyx_t_4;
  PyObject *__pyx_t_5 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("send_serialized_message", 0);
  switch (__pyx_generator->resume_label) {
    case 0: goto __pyx_L3_first_run;
    case 1: goto __pyx_L4_resume_from_await;
    default: /* CPython raises the right error here */
    __Pyx_RefNannyFinishContext();
    return NULL;
  }
  __pyx_L3_first_run:;
  if (unlikely(!__pyx_sent_value)) __PYX_ERR(33, 369, __pyx_L1_error)

  /* "src/python/grpcio/grpc/_cython/_cygrpc/aio/call.pyx.pxi":371
 *     async def send_serialized_message(self, bytes message):
 *         """Sends one single raw message in bytes."""
 *         await _send_message(self,             # <<<<<<<<<<<<<<
 *                             message,
 *                             None,
 */
  __Pyx_GetModuleGlobalName(__pyx_t_2, __pyx_n_s_send_message); if (unlikely(!__pyx_t_2)) __PYX_ERR(33, 371, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);

  /* "src/python/grpcio/grpc/_cython/_cygrpc/aio/call.pyx.pxi":375
 *                             None,
 *                             False,
 *                             self._loop)             # <<<<<<<<<<<<<<
 * 
 *     async def send_receive_close(self):
 */
  __pyx_t_3 = NULL;
  __pyx_t_4 = 0;
  if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_2))) {
    __pyx_t_3 = PyMethod_GET_SELF(__pyx_t_2);
    if (likely(__pyx_t_3)) {
      PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_2);
      __Pyx_INCREF(__pyx_t_3);
      __Pyx_INCREF(function);
      __Pyx_DECREF_SET(__pyx_t_2, function);
      __pyx_t_4 = 1;
    }
  }
  #if CYTHON_FAST_PYCALL
  if (PyFunction_Check(__pyx_t_2)) {
    PyObject *__pyx_temp[6] = {__pyx_t_3, ((PyObject *)__pyx_cur_scope->__pyx_v_self), __pyx_cur_scope->__pyx_v_message, Py_None, Py_False, __pyx_cur_scope->__pyx_v_self->_loop};
    __pyx_t_1 = __Pyx_PyFunction_FastCall(__pyx_t_2, __pyx_temp+1-__pyx_t_4, 5+__pyx_t_4); if (unlikely(!__pyx_t_1)) __PYX_ERR(33, 371, __pyx_L1_error)
    __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0;
    __Pyx_GOTREF(__pyx_t_1);
  } else
  #endif
  #if CYTHON_FAST_PYCCALL
  if (__Pyx_PyFastCFunction_Check(__pyx_t_2)) {
    PyObject *__pyx_temp[6] = {__pyx_t_3, ((PyObject *)__pyx_cur_scope->__pyx_v_self), __pyx_cur_scope->__pyx_v_message, Py_None, Py_False, __pyx_cur_scope->__pyx_v_self->_loop};
    __pyx_t_1 = __Pyx_PyCFunction_FastCall(__pyx_t_2, __pyx_temp+1-__pyx_t_4, 5+__pyx_t_4); if (unlikely(!__pyx_t_1)) __PYX_ERR(33, 371, __pyx_L1_error)
    __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0;
    __Pyx_GOTREF(__pyx_t_1);
  } else
  #endif
  {
    __pyx_t_5 = PyTuple_New(5+__pyx_t_4); if (unlikely(!__pyx_t_5)) __PYX_ERR(33, 371, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_5);
    if (__pyx_t_3) {
      __Pyx_GIVEREF(__pyx_t_3); PyTuple_SET_ITEM(__pyx_t_5, 0, __pyx_t_3); __pyx_t_3 = NULL;
    }
    __Pyx_INCREF(((PyObject *)__pyx_cur_scope->__pyx_v_self));
    __Pyx_GIVEREF(((PyObject *)__pyx_cur_scope->__pyx_v_self));
    PyTuple_SET_ITEM(__pyx_t_5, 0+__pyx_t_4, ((PyObject *)__pyx_cur_scope->__pyx_v_self));
    __Pyx_INCREF(__pyx_cur_scope->__pyx_v_message);
    __Pyx_GIVEREF(__pyx_cur_scope->__pyx_v_message);
    PyTuple_SET_ITEM(__pyx_t_5, 1+__pyx_t_4, __pyx_cur_scope->__pyx_v_message);
    __Pyx_INCREF(Py_None);
    __Pyx_GIVEREF(Py_None);
    PyTuple_SET_ITEM(__pyx_t_5, 2+__pyx_t_4, Py_None);
    __Pyx_INCREF(Py_False);
    __Pyx_GIVEREF(Py_False);
    PyTuple_SET_ITEM(__pyx_t_5, 3+__pyx_t_4, Py_False);
    __Pyx_INCREF(__pyx_cur_scope->__pyx_v_self->_loop);
    __Pyx_GIVEREF(__pyx_cur_scope->__pyx_v_self->_loop);
    PyTuple_SET_ITEM(__pyx_t_5, 4+__pyx_t_4, __pyx_cur_scope->__pyx_v_self->_loop);
    __pyx_t_1 = __Pyx_PyObject_Call(__pyx_t_2, __pyx_t_5, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(33, 371, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_1);
    __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
  }
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  __pyx_r = __Pyx_Coroutine_Yield_From(__pyx_generator, __pyx_t_1);
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  __Pyx_XGOTREF(__pyx_r);
  if (likely(__pyx_r)) {
    __Pyx_XGIVEREF(__pyx_r);
    __Pyx_RefNannyFinishContext();
    __Pyx_Coroutine_ResetAndClearException(__pyx_generator);
    /* return from generator, awaiting value */
    __pyx_generator->resume_label = 1;
    return __pyx_r;
    __pyx_L4_resume_from_await:;
    if (unlikely(!__pyx_sent_value)) __PYX_ERR(33, 371, __pyx_L1_error)
  } else {
    PyObject* exc_type = __Pyx_PyErr_Occurred();
    if (exc_type) {
      if (likely(exc_type == PyExc_StopIteration || (exc_type != PyExc_GeneratorExit && __Pyx_PyErr_GivenExceptionMatches(exc_type, PyExc_StopIteration)))) PyErr_Clear();
      else __PYX_ERR(33, 371, __pyx_L1_error)
    }
  }
  CYTHON_MAYBE_UNUSED_VAR(__pyx_cur_scope);

  /* "src/python/grpcio/grpc/_cython/_cygrpc/aio/call.pyx.pxi":369
 *             return EOF
 * 
 *     async def send_serialized_message(self, bytes message):             # <<<<<<<<<<<<<<
 *         """Sends one single raw message in bytes."""
 *         await _send_message(self,
 */

  /* function exit code */
  PyErr_SetNone(PyExc_StopIteration);
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_XDECREF(__pyx_t_3);
  __Pyx_XDECREF(__pyx_t_5);
  __Pyx_AddTraceback("send_serialized_message", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_L0:;
  __Pyx_XDECREF(__pyx_r); __pyx_r = 0;
  #if !CYTHON_USE_EXC_INFO_STACK
  __Pyx_Coroutine_ResetAndClearException(__pyx_generator);
  #endif
  __pyx_generator->resume_label = -1;
  __Pyx_Coroutine_clear((PyObject*)__pyx_generator);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}
static PyObject *__pyx_gb_4grpc_7_cython_6cygrpc_8_AioCall_44generator14(__pyx_CoroutineObject *__pyx_generator, CYTHON_UNUSED PyThreadState *__pyx_tstate, PyObject *__pyx_sent_value); /* proto */

/* "src/python/grpcio/grpc/_cython/_cygrpc/aio/call.pyx.pxi":377
 *                             self._loop)
 * 
 *     async def send_receive_close(self):             # <<<<<<<<<<<<<<
 *         """Half close the RPC on the client-side."""
 *         cdef SendCloseFromClientOperation op = SendCloseFromClientOperation(_EMPTY_FLAGS)
 */

/* Python wrapper */
static PyObject *__pyx_pw_4grpc_7_cython_6cygrpc_8_AioCall_43send_receive_close(PyObject *__pyx_v_self, CYTHON_UNUSED PyObject *unused); /*proto*/
static char __pyx_doc_4grpc_7_cython_6cygrpc_8_AioCall_42send_receive_close[] = "Half close the RPC on the client-side.";
static PyObject *__pyx_pw_4grpc_7_cython_6cygrpc_8_AioCall_43send_receive_close(PyObject *__pyx_v_self, CYTHON_UNUSED PyObject *unused) {
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("send_receive_close (wrapper)", 0);
  __pyx_r = __pyx_pf_4grpc_7_cython_6cygrpc_8_AioCall_42send_receive_close(((struct __pyx_obj_4grpc_7_cython_6cygrpc__AioCall *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_4grpc_7_cython_6cygrpc_8_AioCall_42send_receive_close(struct __pyx_obj_4grpc_7_cython_6cygrpc__AioCall *__pyx_v_self) {
  struct __pyx_obj_4grpc_7_cython_6cygrpc___pyx_scope_struct_26_send_receive_close *__pyx_cur_scope;
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("send_receive_close", 0);
  __pyx_cur_scope = (struct __pyx_obj_4grpc_7_cython_6cygrpc___pyx_scope_struct_26_send_receive_close *)__pyx_tp_new_4grpc_7_cython_6cygrpc___pyx_scope_struct_26_send_receive_close(__pyx_ptype_4grpc_7_cython_6cygrpc___pyx_scope_struct_26_send_receive_close, __pyx_empty_tuple, NULL);
  if (unlikely(!__pyx_cur_scope)) {
    __pyx_cur_scope = ((struct __pyx_obj_4grpc_7_cython_6cygrpc___pyx_scope_struct_26_send_receive_close *)Py_None);
    __Pyx_INCREF(Py_None);
    __PYX_ERR(33, 377, __pyx_L1_error)
  } else {
    __Pyx_GOTREF(__pyx_cur_scope);
  }
  __pyx_cur_scope->__pyx_v_self = __pyx_v_self;
  __Pyx_INCREF((PyObject *)__pyx_cur_scope->__pyx_v_self);
  __Pyx_GIVEREF((PyObject *)__pyx_cur_scope->__pyx_v_self);
  {
    __pyx_CoroutineObject *gen = __Pyx_Coroutine_New((__pyx_coroutine_body_t) __pyx_gb_4grpc_7_cython_6cygrpc_8_AioCall_44generator14, NULL, (PyObject *) __pyx_cur_scope, __pyx_n_s_send_receive_close, __pyx_n_s_AioCall_send_receive_close, __pyx_n_s_grpc__cython_cygrpc); if (unlikely(!gen)) __PYX_ERR(33, 377, __pyx_L1_error)
    __Pyx_DECREF(__pyx_cur_scope);
    __Pyx_RefNannyFinishContext();
    return (PyObject *) gen;
  }

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_AddTraceback("grpc._cython.cygrpc._AioCall.send_receive_close", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __Pyx_DECREF(((PyObject *)__pyx_cur_scope));
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_gb_4grpc_7_cython_6cygrpc_8_AioCall_44generator14(__pyx_CoroutineObject *__pyx_generator, CYTHON_UNUSED PyThreadState *__pyx_tstate, PyObject *__pyx_sent_value) /* generator body */
{
  struct __pyx_obj_4grpc_7_cython_6cygrpc___pyx_scope_struct_26_send_receive_close *__pyx_cur_scope = ((struct __pyx_obj_4grpc_7_cython_6cygrpc___pyx_scope_struct_26_send_receive_close *)__pyx_generator->closure);
  PyObject *__pyx_r = NULL;
  PyObject *__pyx_t_1 = NULL;
  PyObject *__pyx_t_2 = NULL;
  PyObject *__pyx_t_3 = NULL;
  int __pyx_t_4;
  PyObject *__pyx_t_5 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("send_receive_close", 0);
  switch (__pyx_generator->resume_label) {
    case 0: goto __pyx_L3_first_run;
    case 1: goto __pyx_L4_resume_from_await;
    default: /* CPython raises the right error here */
    __Pyx_RefNannyFinishContext();
    return NULL;
  }
  __pyx_L3_first_run:;
  if (unlikely(!__pyx_sent_value)) __PYX_ERR(33, 377, __pyx_L1_error)

  /* "src/python/grpcio/grpc/_cython/_cygrpc/aio/call.pyx.pxi":379
 *     async def send_receive_close(self):
 *         """Half close the RPC on the client-side."""
 *         cdef SendCloseFromClientOperation op = SendCloseFromClientOperation(_EMPTY_FLAGS)             # <<<<<<<<<<<<<<
 *         cdef tuple ops = (op,)
 *         await execute_batch(self, ops, self._loop)
 */
  __Pyx_GetModuleGlobalName(__pyx_t_1, __pyx_n_s_EMPTY_FLAGS); if (unlikely(!__pyx_t_1)) __PYX_ERR(33, 379, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_t_2 = __Pyx_PyObject_CallOneArg(((PyObject *)__pyx_ptype_4grpc_7_cython_6cygrpc_SendCloseFromClientOperation), __pyx_t_1); if (unlikely(!__pyx_t_2)) __PYX_ERR(33, 379, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  __Pyx_GIVEREF(__pyx_t_2);
  __pyx_cur_scope->__pyx_v_op = ((struct __pyx_obj_4grpc_7_cython_6cygrpc_SendCloseFromClientOperation *)__pyx_t_2);
  __pyx_t_2 = 0;

  /* "src/python/grpcio/grpc/_cython/_cygrpc/aio/call.pyx.pxi":380
 *         """Half close the RPC on the client-side."""
 *         cdef SendCloseFromClientOperation op = SendCloseFromClientOperation(_EMPTY_FLAGS)
 *         cdef tuple ops = (op,)             # <<<<<<<<<<<<<<
 *         await execute_batch(self, ops, self._loop)
 * 
 */
  __pyx_t_2 = PyTuple_New(1); if (unlikely(!__pyx_t_2)) __PYX_ERR(33, 380, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __Pyx_INCREF(((PyObject *)__pyx_cur_scope->__pyx_v_op));
  __Pyx_GIVEREF(((PyObject *)__pyx_cur_scope->__pyx_v_op));
  PyTuple_SET_ITEM(__pyx_t_2, 0, ((PyObject *)__pyx_cur_scope->__pyx_v_op));
  __Pyx_GIVEREF(__pyx_t_2);
  __pyx_cur_scope->__pyx_v_ops = ((PyObject*)__pyx_t_2);
  __pyx_t_2 = 0;

  /* "src/python/grpcio/grpc/_cython/_cygrpc/aio/call.pyx.pxi":381
 *         cdef SendCloseFromClientOperation op = SendCloseFromClientOperation(_EMPTY_FLAGS)
 *         cdef tuple ops = (op,)
 *         await execute_batch(self, ops, self._loop)             # <<<<<<<<<<<<<<
 * 
 *     async def initiate_unary_stream(self,
 */
  __Pyx_GetModuleGlobalName(__pyx_t_1, __pyx_n_s_execute_batch); if (unlikely(!__pyx_t_1)) __PYX_ERR(33, 381, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_t_3 = NULL;
  __pyx_t_4 = 0;
  if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_1))) {
    __pyx_t_3 = PyMethod_GET_SELF(__pyx_t_1);
    if (likely(__pyx_t_3)) {
      PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_1);
      __Pyx_INCREF(__pyx_t_3);
      __Pyx_INCREF(function);
      __Pyx_DECREF_SET(__pyx_t_1, function);
      __pyx_t_4 = 1;
    }
  }
  #if CYTHON_FAST_PYCALL
  if (PyFunction_Check(__pyx_t_1)) {
    PyObject *__pyx_temp[4] = {__pyx_t_3, ((PyObject *)__pyx_cur_scope->__pyx_v_self), __pyx_cur_scope->__pyx_v_ops, __pyx_cur_scope->__pyx_v_self->_loop};
    __pyx_t_2 = __Pyx_PyFunction_FastCall(__pyx_t_1, __pyx_temp+1-__pyx_t_4, 3+__pyx_t_4); if (unlikely(!__pyx_t_2)) __PYX_ERR(33, 381, __pyx_L1_error)
    __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0;
    __Pyx_GOTREF(__pyx_t_2);
  } else
  #endif
  #if CYTHON_FAST_PYCCALL
  if (__Pyx_PyFastCFunction_Check(__pyx_t_1)) {
    PyObject *__pyx_temp[4] = {__pyx_t_3, ((PyObject *)__pyx_cur_scope->__pyx_v_self), __pyx_cur_scope->__pyx_v_ops, __pyx_cur_scope->__pyx_v_self->_loop};
    __pyx_t_2 = __Pyx_PyCFunction_FastCall(__pyx_t_1, __pyx_temp+1-__pyx_t_4, 3+__pyx_t_4); if (unlikely(!__pyx_t_2)) __PYX_ERR(33, 381, __pyx_L1_error)
    __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0;
    __Pyx_GOTREF(__pyx_t_2);
  } else
  #endif
  {
    __pyx_t_5 = PyTuple_New(3+__pyx_t_4); if (unlikely(!__pyx_t_5)) __PYX_ERR(33, 381, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_5);
    if (__pyx_t_3) {
      __Pyx_GIVEREF(__pyx_t_3); PyTuple_SET_ITEM(__pyx_t_5, 0, __pyx_t_3); __pyx_t_3 = NULL;
    }
    __Pyx_INCREF(((PyObject *)__pyx_cur_scope->__pyx_v_self));
    __Pyx_GIVEREF(((PyObject *)__pyx_cur_scope->__pyx_v_self));
    PyTuple_SET_ITEM(__pyx_t_5, 0+__pyx_t_4, ((PyObject *)__pyx_cur_scope->__pyx_v_self));
    __Pyx_INCREF(__pyx_cur_scope->__pyx_v_ops);
    __Pyx_GIVEREF(__pyx_cur_scope->__pyx_v_ops);
    PyTuple_SET_ITEM(__pyx_t_5, 1+__pyx_t_4, __pyx_cur_scope->__pyx_v_ops);
    __Pyx_INCREF(__pyx_cur_scope->__pyx_v_self->_loop);
    __Pyx_GIVEREF(__pyx_cur_scope->__pyx_v_self->_loop);
    PyTuple_SET_ITEM(__pyx_t_5, 2+__pyx_t_4, __pyx_cur_scope->__pyx_v_self->_loop);
    __pyx_t_2 = __Pyx_PyObject_Call(__pyx_t_1, __pyx_t_5, NULL); if (unlikely(!__pyx_t_2)) __PYX_ERR(33, 381, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_2);
    __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
  }
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  __pyx_r = __Pyx_Coroutine_Yield_From(__pyx_generator, __pyx_t_2);
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  __Pyx_XGOTREF(__pyx_r);
  if (likely(__pyx_r)) {
    __Pyx_XGIVEREF(__pyx_r);
    __Pyx_RefNannyFinishContext();
    __Pyx_Coroutine_ResetAndClearException(__pyx_generator);
    /* return from generator, awaiting value */
    __pyx_generator->resume_label = 1;
    return __pyx_r;
    __pyx_L4_resume_from_await:;
    if (unlikely(!__pyx_sent_value)) __PYX_ERR(33, 381, __pyx_L1_error)
  } else {
    PyObject* exc_type = __Pyx_PyErr_Occurred();
    if (exc_type) {
      if (likely(exc_type == PyExc_StopIteration || (exc_type != PyExc_GeneratorExit && __Pyx_PyErr_GivenExceptionMatches(exc_type, PyExc_StopIteration)))) PyErr_Clear();
      else __PYX_ERR(33, 381, __pyx_L1_error)
    }
  }
  CYTHON_MAYBE_UNUSED_VAR(__pyx_cur_scope);

  /* "src/python/grpcio/grpc/_cython/_cygrpc/aio/call.pyx.pxi":377
 *                             self._loop)
 * 
 *     async def send_receive_close(self):             # <<<<<<<<<<<<<<
 *         """Half close the RPC on the client-side."""
 *         cdef SendCloseFromClientOperation op = SendCloseFromClientOperation(_EMPTY_FLAGS)
 */

  /* function exit code */
  PyErr_SetNone(PyExc_StopIteration);
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_XDECREF(__pyx_t_3);
  __Pyx_XDECREF(__pyx_t_5);
  __Pyx_AddTraceback("send_receive_close", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_L0:;
  __Pyx_XDECREF(__pyx_r); __pyx_r = 0;
  #if !CYTHON_USE_EXC_INFO_STACK
  __Pyx_Coroutine_ResetAndClearException(__pyx_generator);
  #endif
  __pyx_generator->resume_label = -1;
  __Pyx_Coroutine_clear((PyObject*)__pyx_generator);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}
static PyObject *__pyx_gb_4grpc_7_cython_6cygrpc_8_AioCall_47generator15(__pyx_CoroutineObject *__pyx_generator, CYTHON_UNUSED PyThreadState *__pyx_tstate, PyObject *__pyx_sent_value); /* proto */

/* "src/python/grpcio/grpc/_cython/_cygrpc/aio/call.pyx.pxi":383
 *         await execute_batch(self, ops, self._loop)
 * 
 *     async def initiate_unary_stream(self,             # <<<<<<<<<<<<<<
 *                            bytes request,
 *                            tuple outbound_initial_metadata):
 */

/* Python wrapper */
static PyObject *__pyx_pw_4grpc_7_cython_6cygrpc_8_AioCall_46initiate_unary_stream(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
static char __pyx_doc_4grpc_7_cython_6cygrpc_8_AioCall_45initiate_unary_stream[] = "Implementation of the start of a unary-stream call.";
static PyObject *__pyx_pw_4grpc_7_cython_6cygrpc_8_AioCall_46initiate_unary_stream(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
  PyObject *__pyx_v_request = 0;
  PyObject *__pyx_v_outbound_initial_metadata = 0;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("initiate_unary_stream (wrapper)", 0);
  {
    static PyObject **__pyx_pyargnames[] = {&__pyx_n_s_request,&__pyx_n_s_outbound_initial_metadata,0};
    PyObject* values[2] = {0,0};
    if (unlikely(__pyx_kwds)) {
      Py_ssize_t kw_args;
      const Py_ssize_t pos_args = PyTuple_GET_SIZE(__pyx_args);
      switch (pos_args) {
        case  2: values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
        CYTHON_FALLTHROUGH;
        case  1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
        CYTHON_FALLTHROUGH;
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      kw_args = PyDict_Size(__pyx_kwds);
      switch (pos_args) {
        case  0:
        if (likely((values[0] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_request)) != 0)) kw_args--;
        else goto __pyx_L5_argtuple_error;
        CYTHON_FALLTHROUGH;
        case  1:
        if (likely((values[1] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_outbound_initial_metadata)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("initiate_unary_stream", 1, 2, 2, 1); __PYX_ERR(33, 383, __pyx_L3_error)
        }
      }
      if (unlikely(kw_args > 0)) {
        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "initiate_unary_stream") < 0)) __PYX_ERR(33, 383, __pyx_L3_error)
      }
    } else if (PyTuple_GET_SIZE(__pyx_args) != 2) {
      goto __pyx_L5_argtuple_error;
    } else {
      values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
      values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
    }
    __pyx_v_request = ((PyObject*)values[0]);
    __pyx_v_outbound_initial_metadata = ((PyObject*)values[1]);
  }
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("initiate_unary_stream", 1, 2, 2, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(33, 383, __pyx_L3_error)
  __pyx_L3_error:;
  __Pyx_AddTraceback("grpc._cython.cygrpc._AioCall.initiate_unary_stream", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_request), (&PyBytes_Type), 1, "request", 1))) __PYX_ERR(33, 384, __pyx_L1_error)
  if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_outbound_initial_metadata), (&PyTuple_Type), 1, "outbound_initial_metadata", 1))) __PYX_ERR(33, 385, __pyx_L1_error)
  __pyx_r = __pyx_pf_4grpc_7_cython_6cygrpc_8_AioCall_45initiate_unary_stream(((struct __pyx_obj_4grpc_7_cython_6cygrpc__AioCall *)__pyx_v_self), __pyx_v_request, __pyx_v_outbound_initial_metadata);

  /* function exit code */
  goto __pyx_L0;
  __pyx_L1_error:;
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_4grpc_7_cython_6cygrpc_8_AioCall_45initiate_unary_stream(struct __pyx_obj_4grpc_7_cython_6cygrpc__AioCall *__pyx_v_self, PyObject *__pyx_v_request, PyObject *__pyx_v_outbound_initial_metadata) {
  struct __pyx_obj_4grpc_7_cython_6cygrpc___pyx_scope_struct_27_initiate_unary_stream *__pyx_cur_scope;
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("initiate_unary_stream", 0);
  __pyx_cur_scope = (struct __pyx_obj_4grpc_7_cython_6cygrpc___pyx_scope_struct_27_initiate_unary_stream *)__pyx_tp_new_4grpc_7_cython_6cygrpc___pyx_scope_struct_27_initiate_unary_stream(__pyx_ptype_4grpc_7_cython_6cygrpc___pyx_scope_struct_27_initiate_unary_stream, __pyx_empty_tuple, NULL);
  if (unlikely(!__pyx_cur_scope)) {
    __pyx_cur_scope = ((struct __pyx_obj_4grpc_7_cython_6cygrpc___pyx_scope_struct_27_initiate_unary_stream *)Py_None);
    __Pyx_INCREF(Py_None);
    __PYX_ERR(33, 383, __pyx_L1_error)
  } else {
    __Pyx_GOTREF(__pyx_cur_scope);
  }
  __pyx_cur_scope->__pyx_v_self = __pyx_v_self;
  __Pyx_INCREF((PyObject *)__pyx_cur_scope->__pyx_v_self);
  __Pyx_GIVEREF((PyObject *)__pyx_cur_scope->__pyx_v_self);
  __pyx_cur_scope->__pyx_v_request = __pyx_v_request;
  __Pyx_INCREF(__pyx_cur_scope->__pyx_v_request);
  __Pyx_GIVEREF(__pyx_cur_scope->__pyx_v_request);
  __pyx_cur_scope->__pyx_v_outbound_initial_metadata = __pyx_v_outbound_initial_metadata;
  __Pyx_INCREF(__pyx_cur_scope->__pyx_v_outbound_initial_metadata);
  __Pyx_GIVEREF(__pyx_cur_scope->__pyx_v_outbound_initial_metadata);
  {
    __pyx_CoroutineObject *gen = __Pyx_Coroutine_New((__pyx_coroutine_body_t) __pyx_gb_4grpc_7_cython_6cygrpc_8_AioCall_47generator15, NULL, (PyObject *) __pyx_cur_scope, __pyx_n_s_initiate_unary_stream, __pyx_n_s_AioCall_initiate_unary_stream, __pyx_n_s_grpc__cython_cygrpc); if (unlikely(!gen)) __PYX_ERR(33, 383, __pyx_L1_error)
    __Pyx_DECREF(__pyx_cur_scope);
    __Pyx_RefNannyFinishContext();
    return (PyObject *) gen;
  }

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_AddTraceback("grpc._cython.cygrpc._AioCall.initiate_unary_stream", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __Pyx_DECREF(((PyObject *)__pyx_cur_scope));
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_gb_4grpc_7_cython_6cygrpc_8_AioCall_47generator15(__pyx_CoroutineObject *__pyx_generator, CYTHON_UNUSED PyThreadState *__pyx_tstate, PyObject *__pyx_sent_value) /* generator body */
{
  struct __pyx_obj_4grpc_7_cython_6cygrpc___pyx_scope_struct_27_initiate_unary_stream *__pyx_cur_scope = ((struct __pyx_obj_4grpc_7_cython_6cygrpc___pyx_scope_struct_27_initiate_unary_stream *)__pyx_generator->closure);
  PyObject *__pyx_r = NULL;
  PyObject *__pyx_t_1 = NULL;
  PyObject *__pyx_t_2 = NULL;
  PyObject *__pyx_t_3 = NULL;
  PyObject *__pyx_t_4 = NULL;
  PyObject *__pyx_t_5 = NULL;
  PyObject *__pyx_t_6 = NULL;
  PyObject *__pyx_t_7 = NULL;
  PyObject *__pyx_t_8 = NULL;
  int __pyx_t_9;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("initiate_unary_stream", 0);
  switch (__pyx_generator->resume_label) {
    case 0: goto __pyx_L3_first_run;
    case 1: goto __pyx_L10_resume_from_await;
    case 2: goto __pyx_L11_resume_from_await;
    case 3: goto __pyx_L14_resume_from_await;
    default: /* CPython raises the right error here */
    __Pyx_RefNannyFinishContext();
    return NULL;
  }
  __pyx_L3_first_run:;
  if (unlikely(!__pyx_sent_value)) __PYX_ERR(33, 383, __pyx_L1_error)

  /* "src/python/grpcio/grpc/_cython/_cygrpc/aio/call.pyx.pxi":389
 *         # Peer may prematurely end this RPC at any point. We need a corutine
 *         # that watches if the server sends the final status.
 *         status_task = self._loop.create_task(self._handle_status_once_received())             # <<<<<<<<<<<<<<
 * 
 *         cdef tuple outbound_ops
 */
  __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_cur_scope->__pyx_v_self->_loop, __pyx_n_s_create_task); if (unlikely(!__pyx_t_2)) __PYX_ERR(33, 389, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __pyx_t_4 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_cur_scope->__pyx_v_self), __pyx_n_s_handle_status_once_received); if (unlikely(!__pyx_t_4)) __PYX_ERR(33, 389, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_4);
  __pyx_t_5 = NULL;
  if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_4))) {
    __pyx_t_5 = PyMethod_GET_SELF(__pyx_t_4);
    if (likely(__pyx_t_5)) {
      PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_4);
      __Pyx_INCREF(__pyx_t_5);
      __Pyx_INCREF(function);
      __Pyx_DECREF_SET(__pyx_t_4, function);
    }
  }
  __pyx_t_3 = (__pyx_t_5) ? __Pyx_PyObject_CallOneArg(__pyx_t_4, __pyx_t_5) : __Pyx_PyObject_CallNoArg(__pyx_t_4);
  __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0;
  if (unlikely(!__pyx_t_3)) __PYX_ERR(33, 389, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
  __pyx_t_4 = NULL;
  if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_2))) {
    __pyx_t_4 = PyMethod_GET_SELF(__pyx_t_2);
    if (likely(__pyx_t_4)) {
      PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_2);
      __Pyx_INCREF(__pyx_t_4);
      __Pyx_INCREF(function);
      __Pyx_DECREF_SET(__pyx_t_2, function);
    }
  }
  __pyx_t_1 = (__pyx_t_4) ? __Pyx_PyObject_Call2Args(__pyx_t_2, __pyx_t_4, __pyx_t_3) : __Pyx_PyObject_CallOneArg(__pyx_t_2, __pyx_t_3);
  __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0;
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
  if (unlikely(!__pyx_t_1)) __PYX_ERR(33, 389, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  __Pyx_GIVEREF(__pyx_t_1);
  __pyx_cur_scope->__pyx_v_status_task = __pyx_t_1;
  __pyx_t_1 = 0;

  /* "src/python/grpcio/grpc/_cython/_cygrpc/aio/call.pyx.pxi":394
 *         cdef Operation initial_metadata_op = SendInitialMetadataOperation(
 *             outbound_initial_metadata,
 *             self._send_initial_metadata_flags)             # <<<<<<<<<<<<<<
 *         cdef Operation send_message_op = SendMessageOperation(
 *             request,
 */
  __pyx_t_1 = __Pyx_PyInt_From_int(__pyx_cur_scope->__pyx_v_self->_send_initial_metadata_flags); if (unlikely(!__pyx_t_1)) __PYX_ERR(33, 394, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);

  /* "src/python/grpcio/grpc/_cython/_cygrpc/aio/call.pyx.pxi":392
 * 
 *         cdef tuple outbound_ops
 *         cdef Operation initial_metadata_op = SendInitialMetadataOperation(             # <<<<<<<<<<<<<<
 *             outbound_initial_metadata,
 *             self._send_initial_metadata_flags)
 */
  __pyx_t_2 = PyTuple_New(2); if (unlikely(!__pyx_t_2)) __PYX_ERR(33, 392, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __Pyx_INCREF(__pyx_cur_scope->__pyx_v_outbound_initial_metadata);
  __Pyx_GIVEREF(__pyx_cur_scope->__pyx_v_outbound_initial_metadata);
  PyTuple_SET_ITEM(__pyx_t_2, 0, __pyx_cur_scope->__pyx_v_outbound_initial_metadata);
  __Pyx_GIVEREF(__pyx_t_1);
  PyTuple_SET_ITEM(__pyx_t_2, 1, __pyx_t_1);
  __pyx_t_1 = 0;
  __pyx_t_1 = __Pyx_PyObject_Call(((PyObject *)__pyx_ptype_4grpc_7_cython_6cygrpc_SendInitialMetadataOperation), __pyx_t_2, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(33, 392, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  __Pyx_GIVEREF(__pyx_t_1);
  __pyx_cur_scope->__pyx_v_initial_metadata_op = ((struct __pyx_obj_4grpc_7_cython_6cygrpc_Operation *)__pyx_t_1);
  __pyx_t_1 = 0;

  /* "src/python/grpcio/grpc/_cython/_cygrpc/aio/call.pyx.pxi":397
 *         cdef Operation send_message_op = SendMessageOperation(
 *             request,
 *             _EMPTY_FLAGS)             # <<<<<<<<<<<<<<
 *         cdef Operation send_close_op = SendCloseFromClientOperation(
 *             _EMPTY_FLAGS)
 */
  __Pyx_GetModuleGlobalName(__pyx_t_1, __pyx_n_s_EMPTY_FLAGS); if (unlikely(!__pyx_t_1)) __PYX_ERR(33, 397, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);

  /* "src/python/grpcio/grpc/_cython/_cygrpc/aio/call.pyx.pxi":395
 *             outbound_initial_metadata,
 *             self._send_initial_metadata_flags)
 *         cdef Operation send_message_op = SendMessageOperation(             # <<<<<<<<<<<<<<
 *             request,
 *             _EMPTY_FLAGS)
 */
  __pyx_t_2 = PyTuple_New(2); if (unlikely(!__pyx_t_2)) __PYX_ERR(33, 395, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __Pyx_INCREF(__pyx_cur_scope->__pyx_v_request);
  __Pyx_GIVEREF(__pyx_cur_scope->__pyx_v_request);
  PyTuple_SET_ITEM(__pyx_t_2, 0, __pyx_cur_scope->__pyx_v_request);
  __Pyx_GIVEREF(__pyx_t_1);
  PyTuple_SET_ITEM(__pyx_t_2, 1, __pyx_t_1);
  __pyx_t_1 = 0;
  __pyx_t_1 = __Pyx_PyObject_Call(((PyObject *)__pyx_ptype_4grpc_7_cython_6cygrpc_SendMessageOperation), __pyx_t_2, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(33, 395, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  __Pyx_GIVEREF(__pyx_t_1);
  __pyx_cur_scope->__pyx_v_send_message_op = ((struct __pyx_obj_4grpc_7_cython_6cygrpc_Operation *)__pyx_t_1);
  __pyx_t_1 = 0;

  /* "src/python/grpcio/grpc/_cython/_cygrpc/aio/call.pyx.pxi":399
 *             _EMPTY_FLAGS)
 *         cdef Operation send_close_op = SendCloseFromClientOperation(
 *             _EMPTY_FLAGS)             # <<<<<<<<<<<<<<
 * 
 *         outbound_ops = (
 */
  __Pyx_GetModuleGlobalName(__pyx_t_1, __pyx_n_s_EMPTY_FLAGS); if (unlikely(!__pyx_t_1)) __PYX_ERR(33, 399, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);

  /* "src/python/grpcio/grpc/_cython/_cygrpc/aio/call.pyx.pxi":398
 *             request,
 *             _EMPTY_FLAGS)
 *         cdef Operation send_close_op = SendCloseFromClientOperation(             # <<<<<<<<<<<<<<
 *             _EMPTY_FLAGS)
 * 
 */
  __pyx_t_2 = __Pyx_PyObject_CallOneArg(((PyObject *)__pyx_ptype_4grpc_7_cython_6cygrpc_SendCloseFromClientOperation), __pyx_t_1); if (unlikely(!__pyx_t_2)) __PYX_ERR(33, 398, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  __Pyx_GIVEREF(__pyx_t_2);
  __pyx_cur_scope->__pyx_v_send_close_op = ((struct __pyx_obj_4grpc_7_cython_6cygrpc_Operation *)__pyx_t_2);
  __pyx_t_2 = 0;

  /* "src/python/grpcio/grpc/_cython/_cygrpc/aio/call.pyx.pxi":402
 * 
 *         outbound_ops = (
 *             initial_metadata_op,             # <<<<<<<<<<<<<<
 *             send_message_op,
 *             send_close_op,
 */
  __pyx_t_2 = PyTuple_New(3); if (unlikely(!__pyx_t_2)) __PYX_ERR(33, 402, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __Pyx_INCREF(((PyObject *)__pyx_cur_scope->__pyx_v_initial_metadata_op));
  __Pyx_GIVEREF(((PyObject *)__pyx_cur_scope->__pyx_v_initial_metadata_op));
  PyTuple_SET_ITEM(__pyx_t_2, 0, ((PyObject *)__pyx_cur_scope->__pyx_v_initial_metadata_op));
  __Pyx_INCREF(((PyObject *)__pyx_cur_scope->__pyx_v_send_message_op));
  __Pyx_GIVEREF(((PyObject *)__pyx_cur_scope->__pyx_v_send_message_op));
  PyTuple_SET_ITEM(__pyx_t_2, 1, ((PyObject *)__pyx_cur_scope->__pyx_v_send_message_op));
  __Pyx_INCREF(((PyObject *)__pyx_cur_scope->__pyx_v_send_close_op));
  __Pyx_GIVEREF(((PyObject *)__pyx_cur_scope->__pyx_v_send_close_op));
  PyTuple_SET_ITEM(__pyx_t_2, 2, ((PyObject *)__pyx_cur_scope->__pyx_v_send_close_op));
  __Pyx_GIVEREF(__pyx_t_2);
  __pyx_cur_scope->__pyx_v_outbound_ops = ((PyObject*)__pyx_t_2);
  __pyx_t_2 = 0;

  /* "src/python/grpcio/grpc/_cython/_cygrpc/aio/call.pyx.pxi":407
 *         )
 * 
 *         try:             # <<<<<<<<<<<<<<
 *             # Sends out the request message.
 *             await execute_batch(self,
 */
  {
    __Pyx_ExceptionSave(&__pyx_t_6, &__pyx_t_7, &__pyx_t_8);
    __Pyx_XGOTREF(__pyx_t_6);
    __Pyx_XGOTREF(__pyx_t_7);
    __Pyx_XGOTREF(__pyx_t_8);
    /*try:*/ {

      /* "src/python/grpcio/grpc/_cython/_cygrpc/aio/call.pyx.pxi":409
 *         try:
 *             # Sends out the request message.
 *             await execute_batch(self,             # <<<<<<<<<<<<<<
 *                                 outbound_ops,
 *                                 self._loop)
 */
      __Pyx_GetModuleGlobalName(__pyx_t_1, __pyx_n_s_execute_batch); if (unlikely(!__pyx_t_1)) __PYX_ERR(33, 409, __pyx_L4_error)
      __Pyx_GOTREF(__pyx_t_1);

      /* "src/python/grpcio/grpc/_cython/_cygrpc/aio/call.pyx.pxi":411
 *             await execute_batch(self,
 *                                 outbound_ops,
 *                                 self._loop)             # <<<<<<<<<<<<<<
 * 
 *             # Receives initial metadata.
 */
      __pyx_t_3 = NULL;
      __pyx_t_9 = 0;
      if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_1))) {
        __pyx_t_3 = PyMethod_GET_SELF(__pyx_t_1);
        if (likely(__pyx_t_3)) {
          PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_1);
          __Pyx_INCREF(__pyx_t_3);
          __Pyx_INCREF(function);
          __Pyx_DECREF_SET(__pyx_t_1, function);
          __pyx_t_9 = 1;
        }
      }
      #if CYTHON_FAST_PYCALL
      if (PyFunction_Check(__pyx_t_1)) {
        PyObject *__pyx_temp[4] = {__pyx_t_3, ((PyObject *)__pyx_cur_scope->__pyx_v_self), __pyx_cur_scope->__pyx_v_outbound_ops, __pyx_cur_scope->__pyx_v_self->_loop};
        __pyx_t_2 = __Pyx_PyFunction_FastCall(__pyx_t_1, __pyx_temp+1-__pyx_t_9, 3+__pyx_t_9); if (unlikely(!__pyx_t_2)) __PYX_ERR(33, 409, __pyx_L4_error)
        __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0;
        __Pyx_GOTREF(__pyx_t_2);
      } else
      #endif
      #if CYTHON_FAST_PYCCALL
      if (__Pyx_PyFastCFunction_Check(__pyx_t_1)) {
        PyObject *__pyx_temp[4] = {__pyx_t_3, ((PyObject *)__pyx_cur_scope->__pyx_v_self), __pyx_cur_scope->__pyx_v_outbound_ops, __pyx_cur_scope->__pyx_v_self->_loop};
        __pyx_t_2 = __Pyx_PyCFunction_FastCall(__pyx_t_1, __pyx_temp+1-__pyx_t_9, 3+__pyx_t_9); if (unlikely(!__pyx_t_2)) __PYX_ERR(33, 409, __pyx_L4_error)
        __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0;
        __Pyx_GOTREF(__pyx_t_2);
      } else
      #endif
      {
        __pyx_t_4 = PyTuple_New(3+__pyx_t_9); if (unlikely(!__pyx_t_4)) __PYX_ERR(33, 409, __pyx_L4_error)
        __Pyx_GOTREF(__pyx_t_4);
        if (__pyx_t_3) {
          __Pyx_GIVEREF(__pyx_t_3); PyTuple_SET_ITEM(__pyx_t_4, 0, __pyx_t_3); __pyx_t_3 = NULL;
        }
        __Pyx_INCREF(((PyObject *)__pyx_cur_scope->__pyx_v_self));
        __Pyx_GIVEREF(((PyObject *)__pyx_cur_scope->__pyx_v_self));
        PyTuple_SET_ITEM(__pyx_t_4, 0+__pyx_t_9, ((PyObject *)__pyx_cur_scope->__pyx_v_self));
        __Pyx_INCREF(__pyx_cur_scope->__pyx_v_outbound_ops);
        __Pyx_GIVEREF(__pyx_cur_scope->__pyx_v_outbound_ops);
        PyTuple_SET_ITEM(__pyx_t_4, 1+__pyx_t_9, __pyx_cur_scope->__pyx_v_outbound_ops);
        __Pyx_INCREF(__pyx_cur_scope->__pyx_v_self->_loop);
        __Pyx_GIVEREF(__pyx_cur_scope->__pyx_v_self->_loop);
        PyTuple_SET_ITEM(__pyx_t_4, 2+__pyx_t_9, __pyx_cur_scope->__pyx_v_self->_loop);
        __pyx_t_2 = __Pyx_PyObject_Call(__pyx_t_1, __pyx_t_4, NULL); if (unlikely(!__pyx_t_2)) __PYX_ERR(33, 409, __pyx_L4_error)
        __Pyx_GOTREF(__pyx_t_2);
        __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
      }
      __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
      __pyx_r = __Pyx_Coroutine_Yield_From(__pyx_generator, __pyx_t_2);
      __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
      __Pyx_XGOTREF(__pyx_r);
      if (likely(__pyx_r)) {
        __Pyx_XGIVEREF(__pyx_t_6);
        __pyx_cur_scope->__pyx_t_0 = __pyx_t_6;
        __Pyx_XGIVEREF(__pyx_t_7);
        __pyx_cur_scope->__pyx_t_1 = __pyx_t_7;
        __Pyx_XGIVEREF(__pyx_t_8);
        __pyx_cur_scope->__pyx_t_2 = __pyx_t_8;
        __Pyx_XGIVEREF(__pyx_r);
        __Pyx_RefNannyFinishContext();
        __Pyx_Coroutine_ResetAndClearException(__pyx_generator);
        /* return from generator, awaiting value */
        __pyx_generator->resume_label = 1;
        return __pyx_r;
        __pyx_L10_resume_from_await:;
        __pyx_t_6 = __pyx_cur_scope->__pyx_t_0;
        __pyx_cur_scope->__pyx_t_0 = 0;
        __Pyx_XGOTREF(__pyx_t_6);
        __pyx_t_7 = __pyx_cur_scope->__pyx_t_1;
        __pyx_cur_scope->__pyx_t_1 = 0;
        __Pyx_XGOTREF(__pyx_t_7);
        __pyx_t_8 = __pyx_cur_scope->__pyx_t_2;
        __pyx_cur_scope->__pyx_t_2 = 0;
        __Pyx_XGOTREF(__pyx_t_8);
        if (unlikely(!__pyx_sent_value)) __PYX_ERR(33, 409, __pyx_L4_error)
      } else {
        PyObject* exc_type = __Pyx_PyErr_Occurred();
        if (exc_type) {
          if (likely(exc_type == PyExc_StopIteration || (exc_type != PyExc_GeneratorExit && __Pyx_PyErr_GivenExceptionMatches(exc_type, PyExc_StopIteration)))) PyErr_Clear();
          else __PYX_ERR(33, 409, __pyx_L4_error)
        }
      }

      /* "src/python/grpcio/grpc/_cython/_cygrpc/aio/call.pyx.pxi":415
 *             # Receives initial metadata.
 *             self._set_initial_metadata(
 *                 await _receive_initial_metadata(self,             # <<<<<<<<<<<<<<
 *                                                 self._loop),
 *             )
 */
      __Pyx_GetModuleGlobalName(__pyx_t_1, __pyx_n_s_receive_initial_metadata); if (unlikely(!__pyx_t_1)) __PYX_ERR(33, 415, __pyx_L4_error)
      __Pyx_GOTREF(__pyx_t_1);

      /* "src/python/grpcio/grpc/_cython/_cygrpc/aio/call.pyx.pxi":416
 *             self._set_initial_metadata(
 *                 await _receive_initial_metadata(self,
 *                                                 self._loop),             # <<<<<<<<<<<<<<
 *             )
 *         except ExecuteBatchError as batch_error:
 */
      __pyx_t_4 = NULL;
      __pyx_t_9 = 0;
      if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_1))) {
        __pyx_t_4 = PyMethod_GET_SELF(__pyx_t_1);
        if (likely(__pyx_t_4)) {
          PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_1);
          __Pyx_INCREF(__pyx_t_4);
          __Pyx_INCREF(function);
          __Pyx_DECREF_SET(__pyx_t_1, function);
          __pyx_t_9 = 1;
        }
      }
      #if CYTHON_FAST_PYCALL
      if (PyFunction_Check(__pyx_t_1)) {
        PyObject *__pyx_temp[3] = {__pyx_t_4, ((PyObject *)__pyx_cur_scope->__pyx_v_self), __pyx_cur_scope->__pyx_v_self->_loop};
        __pyx_t_2 = __Pyx_PyFunction_FastCall(__pyx_t_1, __pyx_temp+1-__pyx_t_9, 2+__pyx_t_9); if (unlikely(!__pyx_t_2)) __PYX_ERR(33, 415, __pyx_L4_error)
        __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0;
        __Pyx_GOTREF(__pyx_t_2);
      } else
      #endif
      #if CYTHON_FAST_PYCCALL
      if (__Pyx_PyFastCFunction_Check(__pyx_t_1)) {
        PyObject *__pyx_temp[3] = {__pyx_t_4, ((PyObject *)__pyx_cur_scope->__pyx_v_self), __pyx_cur_scope->__pyx_v_self->_loop};
        __pyx_t_2 = __Pyx_PyCFunction_FastCall(__pyx_t_1, __pyx_temp+1-__pyx_t_9, 2+__pyx_t_9); if (unlikely(!__pyx_t_2)) __PYX_ERR(33, 415, __pyx_L4_error)
        __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0;
        __Pyx_GOTREF(__pyx_t_2);
      } else
      #endif
      {
        __pyx_t_3 = PyTuple_New(2+__pyx_t_9); if (unlikely(!__pyx_t_3)) __PYX_ERR(33, 415, __pyx_L4_error)
        __Pyx_GOTREF(__pyx_t_3);
        if (__pyx_t_4) {
          __Pyx_GIVEREF(__pyx_t_4); PyTuple_SET_ITEM(__pyx_t_3, 0, __pyx_t_4); __pyx_t_4 = NULL;
        }
        __Pyx_INCREF(((PyObject *)__pyx_cur_scope->__pyx_v_self));
        __Pyx_GIVEREF(((PyObject *)__pyx_cur_scope->__pyx_v_self));
        PyTuple_SET_ITEM(__pyx_t_3, 0+__pyx_t_9, ((PyObject *)__pyx_cur_scope->__pyx_v_self));
        __Pyx_INCREF(__pyx_cur_scope->__pyx_v_self->_loop);
        __Pyx_GIVEREF(__pyx_cur_scope->__pyx_v_self->_loop);
        PyTuple_SET_ITEM(__pyx_t_3, 1+__pyx_t_9, __pyx_cur_scope->__pyx_v_self->_loop);
        __pyx_t_2 = __Pyx_PyObject_Call(__pyx_t_1, __pyx_t_3, NULL); if (unlikely(!__pyx_t_2)) __PYX_ERR(33, 415, __pyx_L4_error)
        __Pyx_GOTREF(__pyx_t_2);
        __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
      }
      __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
      __pyx_r = __Pyx_Coroutine_Yield_From(__pyx_generator, __pyx_t_2);
      __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
      __Pyx_XGOTREF(__pyx_r);
      if (likely(__pyx_r)) {
        __Pyx_XGIVEREF(__pyx_t_6);
        __pyx_cur_scope->__pyx_t_0 = __pyx_t_6;
        __Pyx_XGIVEREF(__pyx_t_7);
        __pyx_cur_scope->__pyx_t_1 = __pyx_t_7;
        __Pyx_XGIVEREF(__pyx_t_8);
        __pyx_cur_scope->__pyx_t_2 = __pyx_t_8;
        __Pyx_XGIVEREF(__pyx_r);
        __Pyx_RefNannyFinishContext();
        __Pyx_Coroutine_ResetAndClearException(__pyx_generator);
        /* return from generator, awaiting value */
        __pyx_generator->resume_label = 2;
        return __pyx_r;
        __pyx_L11_resume_from_await:;
        __pyx_t_6 = __pyx_cur_scope->__pyx_t_0;
        __pyx_cur_scope->__pyx_t_0 = 0;
        __Pyx_XGOTREF(__pyx_t_6);
        __pyx_t_7 = __pyx_cur_scope->__pyx_t_1;
        __pyx_cur_scope->__pyx_t_1 = 0;
        __Pyx_XGOTREF(__pyx_t_7);
        __pyx_t_8 = __pyx_cur_scope->__pyx_t_2;
        __pyx_cur_scope->__pyx_t_2 = 0;
        __Pyx_XGOTREF(__pyx_t_8);
        if (unlikely(!__pyx_sent_value)) __PYX_ERR(33, 415, __pyx_L4_error)
        __pyx_t_2 = __pyx_sent_value; __Pyx_INCREF(__pyx_t_2);
      } else {
        __pyx_t_2 = NULL;
        if (__Pyx_PyGen_FetchStopIterationValue(&__pyx_t_2) < 0) __PYX_ERR(33, 415, __pyx_L4_error)
        __Pyx_GOTREF(__pyx_t_2);
      }

      /* "src/python/grpcio/grpc/_cython/_cygrpc/aio/call.pyx.pxi":415
 *             # Receives initial metadata.
 *             self._set_initial_metadata(
 *                 await _receive_initial_metadata(self,             # <<<<<<<<<<<<<<
 *                                                 self._loop),
 *             )
 */
      if (!(likely(PyTuple_CheckExact(__pyx_t_2))||((__pyx_t_2) == Py_None)||(PyErr_Format(PyExc_TypeError, "Expected %.16s, got %.200s", "tuple", Py_TYPE(__pyx_t_2)->tp_name), 0))) __PYX_ERR(33, 415, __pyx_L4_error)

      /* "src/python/grpcio/grpc/_cython/_cygrpc/aio/call.pyx.pxi":414
 * 
 *             # Receives initial metadata.
 *             self._set_initial_metadata(             # <<<<<<<<<<<<<<
 *                 await _receive_initial_metadata(self,
 *                                                 self._loop),
 */
      ((struct __pyx_vtabstruct_4grpc_7_cython_6cygrpc__AioCall *)__pyx_cur_scope->__pyx_v_self->__pyx_vtab)->_set_initial_metadata(__pyx_cur_scope->__pyx_v_self, ((PyObject*)__pyx_t_2)); if (unlikely(PyErr_Occurred())) __PYX_ERR(33, 414, __pyx_L4_error)
      __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;

      /* "src/python/grpcio/grpc/_cython/_cygrpc/aio/call.pyx.pxi":407
 *         )
 * 
 *         try:             # <<<<<<<<<<<<<<
 *             # Sends out the request message.
 *             await execute_batch(self,
 */
    }
    __Pyx_XDECREF(__pyx_t_6); __pyx_t_6 = 0;
    __Pyx_XDECREF(__pyx_t_7); __pyx_t_7 = 0;
    __Pyx_XDECREF(__pyx_t_8); __pyx_t_8 = 0;
    goto __pyx_L9_try_end;
    __pyx_L4_error:;
    __Pyx_XDECREF(__pyx_t_1); __pyx_t_1 = 0;
    __Pyx_XDECREF(__pyx_t_2); __pyx_t_2 = 0;
    __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0;
    __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0;
    __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0;

    /* "src/python/grpcio/grpc/_cython/_cygrpc/aio/call.pyx.pxi":418
 *                                                 self._loop),
 *             )
 *         except ExecuteBatchError as batch_error:             # <<<<<<<<<<<<<<
 *             # Core should explain why this batch failed
 *             await status_task
 */
    __Pyx_ErrFetch(&__pyx_t_2, &__pyx_t_1, &__pyx_t_3);
    __Pyx_GetModuleGlobalName(__pyx_t_4, __pyx_n_s_ExecuteBatchError); if (unlikely(!__pyx_t_4)) __PYX_ERR(33, 418, __pyx_L6_except_error)
    __Pyx_GOTREF(__pyx_t_4);
    __pyx_t_9 = __Pyx_PyErr_GivenExceptionMatches(__pyx_t_2, __pyx_t_4);
    __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
    __Pyx_ErrRestore(__pyx_t_2, __pyx_t_1, __pyx_t_3);
    __pyx_t_2 = 0; __pyx_t_1 = 0; __pyx_t_3 = 0;
    if (__pyx_t_9) {
      __Pyx_AddTraceback("grpc._cython.cygrpc._AioCall.initiate_unary_stream", __pyx_clineno, __pyx_lineno, __pyx_filename);
      if (__Pyx_GetException(&__pyx_t_3, &__pyx_t_1, &__pyx_t_2) < 0) __PYX_ERR(33, 418, __pyx_L6_except_error)
      __Pyx_GOTREF(__pyx_t_3);
      __Pyx_GOTREF(__pyx_t_1);
      __Pyx_GOTREF(__pyx_t_2);
      __Pyx_INCREF(__pyx_t_1);
      __Pyx_GIVEREF(__pyx_t_1);
      __pyx_cur_scope->__pyx_v_batch_error = __pyx_t_1;

      /* "src/python/grpcio/grpc/_cython/_cygrpc/aio/call.pyx.pxi":420
 *         except ExecuteBatchError as batch_error:
 *             # Core should explain why this batch failed
 *             await status_task             # <<<<<<<<<<<<<<
 * 
 *     async def stream_unary(self,
 */
      __pyx_r = __Pyx_Coroutine_Yield_From(__pyx_generator, __pyx_cur_scope->__pyx_v_status_task);
      __Pyx_XGOTREF(__pyx_r);
      if (likely(__pyx_r)) {
        __Pyx_XGIVEREF(__pyx_t_1);
        __pyx_cur_scope->__pyx_t_0 = __pyx_t_1;
        __Pyx_XGIVEREF(__pyx_t_2);
        __pyx_cur_scope->__pyx_t_1 = __pyx_t_2;
        __Pyx_XGIVEREF(__pyx_t_3);
        __pyx_cur_scope->__pyx_t_2 = __pyx_t_3;
        __Pyx_XGIVEREF(__pyx_t_6);
        __pyx_cur_scope->__pyx_t_3 = __pyx_t_6;
        __Pyx_XGIVEREF(__pyx_t_7);
        __pyx_cur_scope->__pyx_t_4 = __pyx_t_7;
        __Pyx_XGIVEREF(__pyx_t_8);
        __pyx_cur_scope->__pyx_t_5 = __pyx_t_8;
        __Pyx_XGIVEREF(__pyx_r);
        __Pyx_RefNannyFinishContext();
        __Pyx_Coroutine_SwapException(__pyx_generator);
        /* return from generator, awaiting value */
        __pyx_generator->resume_label = 3;
        return __pyx_r;
        __pyx_L14_resume_from_await:;
        __pyx_t_1 = __pyx_cur_scope->__pyx_t_0;
        __pyx_cur_scope->__pyx_t_0 = 0;
        __Pyx_XGOTREF(__pyx_t_1);
        __pyx_t_2 = __pyx_cur_scope->__pyx_t_1;
        __pyx_cur_scope->__pyx_t_1 = 0;
        __Pyx_XGOTREF(__pyx_t_2);
        __pyx_t_3 = __pyx_cur_scope->__pyx_t_2;
        __pyx_cur_scope->__pyx_t_2 = 0;
        __Pyx_XGOTREF(__pyx_t_3);
        __pyx_t_6 = __pyx_cur_scope->__pyx_t_3;
        __pyx_cur_scope->__pyx_t_3 = 0;
        __Pyx_XGOTREF(__pyx_t_6);
        __pyx_t_7 = __pyx_cur_scope->__pyx_t_4;
        __pyx_cur_scope->__pyx_t_4 = 0;
        __Pyx_XGOTREF(__pyx_t_7);
        __pyx_t_8 = __pyx_cur_scope->__pyx_t_5;
        __pyx_cur_scope->__pyx_t_5 = 0;
        __Pyx_XGOTREF(__pyx_t_8);
        if (unlikely(!__pyx_sent_value)) __PYX_ERR(33, 420, __pyx_L6_except_error)
      } else {
        PyObject* exc_type = __Pyx_PyErr_Occurred();
        if (exc_type) {
          if (likely(exc_type == PyExc_StopIteration || (exc_type != PyExc_GeneratorExit && __Pyx_PyErr_GivenExceptionMatches(exc_type, PyExc_StopIteration)))) PyErr_Clear();
          else __PYX_ERR(33, 420, __pyx_L6_except_error)
        }
      }
      __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0;
      __Pyx_XDECREF(__pyx_t_1); __pyx_t_1 = 0;
      __Pyx_XDECREF(__pyx_t_2); __pyx_t_2 = 0;
      goto __pyx_L5_exception_handled;
    }
    goto __pyx_L6_except_error;
    __pyx_L6_except_error:;

    /* "src/python/grpcio/grpc/_cython/_cygrpc/aio/call.pyx.pxi":407
 *         )
 * 
 *         try:             # <<<<<<<<<<<<<<
 *             # Sends out the request message.
 *             await execute_batch(self,
 */
    __Pyx_XGIVEREF(__pyx_t_6);
    __Pyx_XGIVEREF(__pyx_t_7);
    __Pyx_XGIVEREF(__pyx_t_8);
    __Pyx_ExceptionReset(__pyx_t_6, __pyx_t_7, __pyx_t_8);
    goto __pyx_L1_error;
    __pyx_L5_exception_handled:;
    __Pyx_XGIVEREF(__pyx_t_6);
    __Pyx_XGIVEREF(__pyx_t_7);
    __Pyx_XGIVEREF(__pyx_t_8);
    __Pyx_ExceptionReset(__pyx_t_6, __pyx_t_7, __pyx_t_8);
    __pyx_L9_try_end:;
  }
  CYTHON_MAYBE_UNUSED_VAR(__pyx_cur_scope);

  /* "src/python/grpcio/grpc/_cython/_cygrpc/aio/call.pyx.pxi":383
 *         await execute_batch(self, ops, self._loop)
 * 
 *     async def initiate_unary_stream(self,             # <<<<<<<<<<<<<<
 *                            bytes request,
 *                            tuple outbound_initial_metadata):
 */

  /* function exit code */
  PyErr_SetNone(PyExc_StopIteration);
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_XDECREF(__pyx_t_3);
  __Pyx_XDECREF(__pyx_t_4);
  __Pyx_XDECREF(__pyx_t_5);
  __Pyx_AddTraceback("initiate_unary_stream", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_L0:;
  __Pyx_XDECREF(__pyx_r); __pyx_r = 0;
  #if !CYTHON_USE_EXC_INFO_STACK
  __Pyx_Coroutine_ResetAndClearException(__pyx_generator);
  #endif
  __pyx_generator->resume_label = -1;
  __Pyx_Coroutine_clear((PyObject*)__pyx_generator);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}
static PyObject *__pyx_gb_4grpc_7_cython_6cygrpc_8_AioCall_50generator16(__pyx_CoroutineObject *__pyx_generator, CYTHON_UNUSED PyThreadState *__pyx_tstate, PyObject *__pyx_sent_value); /* proto */

/* "src/python/grpcio/grpc/_cython/_cygrpc/aio/call.pyx.pxi":422
 *             await status_task
 * 
 *     async def stream_unary(self,             # <<<<<<<<<<<<<<
 *                            tuple outbound_initial_metadata,
 *                            object metadata_sent_observer):
 */

/* Python wrapper */
static PyObject *__pyx_pw_4grpc_7_cython_6cygrpc_8_AioCall_49stream_unary(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
static char __pyx_doc_4grpc_7_cython_6cygrpc_8_AioCall_48stream_unary[] = "Actual implementation of the complete unary-stream call.\n\n        Needs to pay extra attention to the raise mechanism. If we want to\n        propagate the final status exception, then we have to raise it.\n        Othersize, it would end normally and raise `StopAsyncIteration()`.\n        ";
static PyObject *__pyx_pw_4grpc_7_cython_6cygrpc_8_AioCall_49stream_unary(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
  PyObject *__pyx_v_outbound_initial_metadata = 0;
  PyObject *__pyx_v_metadata_sent_observer = 0;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("stream_unary (wrapper)", 0);
  {
    static PyObject **__pyx_pyargnames[] = {&__pyx_n_s_outbound_initial_metadata,&__pyx_n_s_metadata_sent_observer,0};
    PyObject* values[2] = {0,0};
    if (unlikely(__pyx_kwds)) {
      Py_ssize_t kw_args;
      const Py_ssize_t pos_args = PyTuple_GET_SIZE(__pyx_args);
      switch (pos_args) {
        case  2: values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
        CYTHON_FALLTHROUGH;
        case  1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
        CYTHON_FALLTHROUGH;
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      kw_args = PyDict_Size(__pyx_kwds);
      switch (pos_args) {
        case  0:
        if (likely((values[0] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_outbound_initial_metadata)) != 0)) kw_args--;
        else goto __pyx_L5_argtuple_error;
        CYTHON_FALLTHROUGH;
        case  1:
        if (likely((values[1] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_metadata_sent_observer)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("stream_unary", 1, 2, 2, 1); __PYX_ERR(33, 422, __pyx_L3_error)
        }
      }
      if (unlikely(kw_args > 0)) {
        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "stream_unary") < 0)) __PYX_ERR(33, 422, __pyx_L3_error)
      }
    } else if (PyTuple_GET_SIZE(__pyx_args) != 2) {
      goto __pyx_L5_argtuple_error;
    } else {
      values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
      values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
    }
    __pyx_v_outbound_initial_metadata = ((PyObject*)values[0]);
    __pyx_v_metadata_sent_observer = values[1];
  }
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("stream_unary", 1, 2, 2, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(33, 422, __pyx_L3_error)
  __pyx_L3_error:;
  __Pyx_AddTraceback("grpc._cython.cygrpc._AioCall.stream_unary", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_outbound_initial_metadata), (&PyTuple_Type), 1, "outbound_initial_metadata", 1))) __PYX_ERR(33, 423, __pyx_L1_error)
  __pyx_r = __pyx_pf_4grpc_7_cython_6cygrpc_8_AioCall_48stream_unary(((struct __pyx_obj_4grpc_7_cython_6cygrpc__AioCall *)__pyx_v_self), __pyx_v_outbound_initial_metadata, __pyx_v_metadata_sent_observer);

  /* function exit code */
  goto __pyx_L0;
  __pyx_L1_error:;
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_4grpc_7_cython_6cygrpc_8_AioCall_48stream_unary(struct __pyx_obj_4grpc_7_cython_6cygrpc__AioCall *__pyx_v_self, PyObject *__pyx_v_outbound_initial_metadata, PyObject *__pyx_v_metadata_sent_observer) {
  struct __pyx_obj_4grpc_7_cython_6cygrpc___pyx_scope_struct_28_stream_unary *__pyx_cur_scope;
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("stream_unary", 0);
  __pyx_cur_scope = (struct __pyx_obj_4grpc_7_cython_6cygrpc___pyx_scope_struct_28_stream_unary *)__pyx_tp_new_4grpc_7_cython_6cygrpc___pyx_scope_struct_28_stream_unary(__pyx_ptype_4grpc_7_cython_6cygrpc___pyx_scope_struct_28_stream_unary, __pyx_empty_tuple, NULL);
  if (unlikely(!__pyx_cur_scope)) {
    __pyx_cur_scope = ((struct __pyx_obj_4grpc_7_cython_6cygrpc___pyx_scope_struct_28_stream_unary *)Py_None);
    __Pyx_INCREF(Py_None);
    __PYX_ERR(33, 422, __pyx_L1_error)
  } else {
    __Pyx_GOTREF(__pyx_cur_scope);
  }
  __pyx_cur_scope->__pyx_v_self = __pyx_v_self;
  __Pyx_INCREF((PyObject *)__pyx_cur_scope->__pyx_v_self);
  __Pyx_GIVEREF((PyObject *)__pyx_cur_scope->__pyx_v_self);
  __pyx_cur_scope->__pyx_v_outbound_initial_metadata = __pyx_v_outbound_initial_metadata;
  __Pyx_INCREF(__pyx_cur_scope->__pyx_v_outbound_initial_metadata);
  __Pyx_GIVEREF(__pyx_cur_scope->__pyx_v_outbound_initial_metadata);
  __pyx_cur_scope->__pyx_v_metadata_sent_observer = __pyx_v_metadata_sent_observer;
  __Pyx_INCREF(__pyx_cur_scope->__pyx_v_metadata_sent_observer);
  __Pyx_GIVEREF(__pyx_cur_scope->__pyx_v_metadata_sent_observer);
  {
    __pyx_CoroutineObject *gen = __Pyx_Coroutine_New((__pyx_coroutine_body_t) __pyx_gb_4grpc_7_cython_6cygrpc_8_AioCall_50generator16, NULL, (PyObject *) __pyx_cur_scope, __pyx_n_s_stream_unary, __pyx_n_s_AioCall_stream_unary, __pyx_n_s_grpc__cython_cygrpc); if (unlikely(!gen)) __PYX_ERR(33, 422, __pyx_L1_error)
    __Pyx_DECREF(__pyx_cur_scope);
    __Pyx_RefNannyFinishContext();
    return (PyObject *) gen;
  }

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_AddTraceback("grpc._cython.cygrpc._AioCall.stream_unary", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __Pyx_DECREF(((PyObject *)__pyx_cur_scope));
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_gb_4grpc_7_cython_6cygrpc_8_AioCall_50generator16(__pyx_CoroutineObject *__pyx_generator, CYTHON_UNUSED PyThreadState *__pyx_tstate, PyObject *__pyx_sent_value) /* generator body */
{
  struct __pyx_obj_4grpc_7_cython_6cygrpc___pyx_scope_struct_28_stream_unary *__pyx_cur_scope = ((struct __pyx_obj_4grpc_7_cython_6cygrpc___pyx_scope_struct_28_stream_unary *)__pyx_generator->closure);
  PyObject *__pyx_r = NULL;
  PyObject *__pyx_t_1 = NULL;
  PyObject *__pyx_t_2 = NULL;
  PyObject *__pyx_t_3 = NULL;
  PyObject *__pyx_t_4 = NULL;
  PyObject *__pyx_t_5 = NULL;
  PyObject *__pyx_t_6 = NULL;
  PyObject *__pyx_t_7 = NULL;
  int __pyx_t_8;
  PyObject *__pyx_t_9 = NULL;
  PyObject *__pyx_t_10 = NULL;
  grpc_status_code __pyx_t_11;
  int __pyx_t_12;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("stream_unary", 0);
  switch (__pyx_generator->resume_label) {
    case 0: goto __pyx_L3_first_run;
    case 1: goto __pyx_L10_resume_from_await;
    case 2: goto __pyx_L11_resume_from_await;
    case 3: goto __pyx_L14_resume_from_await;
    case 4: goto __pyx_L15_resume_from_await;
    default: /* CPython raises the right error here */
    __Pyx_RefNannyFinishContext();
    return NULL;
  }
  __pyx_L3_first_run:;
  if (unlikely(!__pyx_sent_value)) __PYX_ERR(33, 422, __pyx_L1_error)

  /* "src/python/grpcio/grpc/_cython/_cygrpc/aio/call.pyx.pxi":431
 *         Othersize, it would end normally and raise `StopAsyncIteration()`.
 *         """
 *         try:             # <<<<<<<<<<<<<<
 *             # Sends out initial_metadata ASAP.
 *             await _send_initial_metadata(self,
 */
  {
    __Pyx_ExceptionSave(&__pyx_t_1, &__pyx_t_2, &__pyx_t_3);
    __Pyx_XGOTREF(__pyx_t_1);
    __Pyx_XGOTREF(__pyx_t_2);
    __Pyx_XGOTREF(__pyx_t_3);
    /*try:*/ {

      /* "src/python/grpcio/grpc/_cython/_cygrpc/aio/call.pyx.pxi":433
 *         try:
 *             # Sends out initial_metadata ASAP.
 *             await _send_initial_metadata(self,             # <<<<<<<<<<<<<<
 *                                         outbound_initial_metadata,
 *                                         self._send_initial_metadata_flags,
 */
      __Pyx_GetModuleGlobalName(__pyx_t_5, __pyx_n_s_send_initial_metadata); if (unlikely(!__pyx_t_5)) __PYX_ERR(33, 433, __pyx_L4_error)
      __Pyx_GOTREF(__pyx_t_5);

      /* "src/python/grpcio/grpc/_cython/_cygrpc/aio/call.pyx.pxi":435
 *             await _send_initial_metadata(self,
 *                                         outbound_initial_metadata,
 *                                         self._send_initial_metadata_flags,             # <<<<<<<<<<<<<<
 *                                         self._loop)
 *             # Notify upper level that sending messages are allowed now.
 */
      __pyx_t_6 = __Pyx_PyInt_From_int(__pyx_cur_scope->__pyx_v_self->_send_initial_metadata_flags); if (unlikely(!__pyx_t_6)) __PYX_ERR(33, 435, __pyx_L4_error)
      __Pyx_GOTREF(__pyx_t_6);

      /* "src/python/grpcio/grpc/_cython/_cygrpc/aio/call.pyx.pxi":436
 *                                         outbound_initial_metadata,
 *                                         self._send_initial_metadata_flags,
 *                                         self._loop)             # <<<<<<<<<<<<<<
 *             # Notify upper level that sending messages are allowed now.
 *             metadata_sent_observer()
 */
      __pyx_t_7 = NULL;
      __pyx_t_8 = 0;
      if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_5))) {
        __pyx_t_7 = PyMethod_GET_SELF(__pyx_t_5);
        if (likely(__pyx_t_7)) {
          PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_5);
          __Pyx_INCREF(__pyx_t_7);
          __Pyx_INCREF(function);
          __Pyx_DECREF_SET(__pyx_t_5, function);
          __pyx_t_8 = 1;
        }
      }
      #if CYTHON_FAST_PYCALL
      if (PyFunction_Check(__pyx_t_5)) {
        PyObject *__pyx_temp[5] = {__pyx_t_7, ((PyObject *)__pyx_cur_scope->__pyx_v_self), __pyx_cur_scope->__pyx_v_outbound_initial_metadata, __pyx_t_6, __pyx_cur_scope->__pyx_v_self->_loop};
        __pyx_t_4 = __Pyx_PyFunction_FastCall(__pyx_t_5, __pyx_temp+1-__pyx_t_8, 4+__pyx_t_8); if (unlikely(!__pyx_t_4)) __PYX_ERR(33, 433, __pyx_L4_error)
        __Pyx_XDECREF(__pyx_t_7); __pyx_t_7 = 0;
        __Pyx_GOTREF(__pyx_t_4);
        __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
      } else
      #endif
      #if CYTHON_FAST_PYCCALL
      if (__Pyx_PyFastCFunction_Check(__pyx_t_5)) {
        PyObject *__pyx_temp[5] = {__pyx_t_7, ((PyObject *)__pyx_cur_scope->__pyx_v_self), __pyx_cur_scope->__pyx_v_outbound_initial_metadata, __pyx_t_6, __pyx_cur_scope->__pyx_v_self->_loop};
        __pyx_t_4 = __Pyx_PyCFunction_FastCall(__pyx_t_5, __pyx_temp+1-__pyx_t_8, 4+__pyx_t_8); if (unlikely(!__pyx_t_4)) __PYX_ERR(33, 433, __pyx_L4_error)
        __Pyx_XDECREF(__pyx_t_7); __pyx_t_7 = 0;
        __Pyx_GOTREF(__pyx_t_4);
        __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
      } else
      #endif
      {
        __pyx_t_9 = PyTuple_New(4+__pyx_t_8); if (unlikely(!__pyx_t_9)) __PYX_ERR(33, 433, __pyx_L4_error)
        __Pyx_GOTREF(__pyx_t_9);
        if (__pyx_t_7) {
          __Pyx_GIVEREF(__pyx_t_7); PyTuple_SET_ITEM(__pyx_t_9, 0, __pyx_t_7); __pyx_t_7 = NULL;
        }
        __Pyx_INCREF(((PyObject *)__pyx_cur_scope->__pyx_v_self));
        __Pyx_GIVEREF(((PyObject *)__pyx_cur_scope->__pyx_v_self));
        PyTuple_SET_ITEM(__pyx_t_9, 0+__pyx_t_8, ((PyObject *)__pyx_cur_scope->__pyx_v_self));
        __Pyx_INCREF(__pyx_cur_scope->__pyx_v_outbound_initial_metadata);
        __Pyx_GIVEREF(__pyx_cur_scope->__pyx_v_outbound_initial_metadata);
        PyTuple_SET_ITEM(__pyx_t_9, 1+__pyx_t_8, __pyx_cur_scope->__pyx_v_outbound_initial_metadata);
        __Pyx_GIVEREF(__pyx_t_6);
        PyTuple_SET_ITEM(__pyx_t_9, 2+__pyx_t_8, __pyx_t_6);
        __Pyx_INCREF(__pyx_cur_scope->__pyx_v_self->_loop);
        __Pyx_GIVEREF(__pyx_cur_scope->__pyx_v_self->_loop);
        PyTuple_SET_ITEM(__pyx_t_9, 3+__pyx_t_8, __pyx_cur_scope->__pyx_v_self->_loop);
        __pyx_t_6 = 0;
        __pyx_t_4 = __Pyx_PyObject_Call(__pyx_t_5, __pyx_t_9, NULL); if (unlikely(!__pyx_t_4)) __PYX_ERR(33, 433, __pyx_L4_error)
        __Pyx_GOTREF(__pyx_t_4);
        __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0;
      }
      __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
      __pyx_r = __Pyx_Coroutine_Yield_From(__pyx_generator, __pyx_t_4);
      __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
      __Pyx_XGOTREF(__pyx_r);
      if (likely(__pyx_r)) {
        __Pyx_XGIVEREF(__pyx_t_1);
        __pyx_cur_scope->__pyx_t_0 = __pyx_t_1;
        __Pyx_XGIVEREF(__pyx_t_2);
        __pyx_cur_scope->__pyx_t_1 = __pyx_t_2;
        __Pyx_XGIVEREF(__pyx_t_3);
        __pyx_cur_scope->__pyx_t_2 = __pyx_t_3;
        __Pyx_XGIVEREF(__pyx_r);
        __Pyx_RefNannyFinishContext();
        __Pyx_Coroutine_ResetAndClearException(__pyx_generator);
        /* return from generator, awaiting value */
        __pyx_generator->resume_label = 1;
        return __pyx_r;
        __pyx_L10_resume_from_await:;
        __pyx_t_1 = __pyx_cur_scope->__pyx_t_0;
        __pyx_cur_scope->__pyx_t_0 = 0;
        __Pyx_XGOTREF(__pyx_t_1);
        __pyx_t_2 = __pyx_cur_scope->__pyx_t_1;
        __pyx_cur_scope->__pyx_t_1 = 0;
        __Pyx_XGOTREF(__pyx_t_2);
        __pyx_t_3 = __pyx_cur_scope->__pyx_t_2;
        __pyx_cur_scope->__pyx_t_2 = 0;
        __Pyx_XGOTREF(__pyx_t_3);
        if (unlikely(!__pyx_sent_value)) __PYX_ERR(33, 433, __pyx_L4_error)
      } else {
        PyObject* exc_type = __Pyx_PyErr_Occurred();
        if (exc_type) {
          if (likely(exc_type == PyExc_StopIteration || (exc_type != PyExc_GeneratorExit && __Pyx_PyErr_GivenExceptionMatches(exc_type, PyExc_StopIteration)))) PyErr_Clear();
          else __PYX_ERR(33, 433, __pyx_L4_error)
        }
      }

      /* "src/python/grpcio/grpc/_cython/_cygrpc/aio/call.pyx.pxi":438
 *                                         self._loop)
 *             # Notify upper level that sending messages are allowed now.
 *             metadata_sent_observer()             # <<<<<<<<<<<<<<
 * 
 *             # Receives initial metadata.
 */
      __Pyx_INCREF(__pyx_cur_scope->__pyx_v_metadata_sent_observer);
      __pyx_t_5 = __pyx_cur_scope->__pyx_v_metadata_sent_observer; __pyx_t_9 = NULL;
      if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_5))) {
        __pyx_t_9 = PyMethod_GET_SELF(__pyx_t_5);
        if (likely(__pyx_t_9)) {
          PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_5);
          __Pyx_INCREF(__pyx_t_9);
          __Pyx_INCREF(function);
          __Pyx_DECREF_SET(__pyx_t_5, function);
        }
      }
      __pyx_t_4 = (__pyx_t_9) ? __Pyx_PyObject_CallOneArg(__pyx_t_5, __pyx_t_9) : __Pyx_PyObject_CallNoArg(__pyx_t_5);
      __Pyx_XDECREF(__pyx_t_9); __pyx_t_9 = 0;
      if (unlikely(!__pyx_t_4)) __PYX_ERR(33, 438, __pyx_L4_error)
      __Pyx_GOTREF(__pyx_t_4);
      __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
      __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;

      /* "src/python/grpcio/grpc/_cython/_cygrpc/aio/call.pyx.pxi":442
 *             # Receives initial metadata.
 *             self._set_initial_metadata(
 *                 await _receive_initial_metadata(self, self._loop)             # <<<<<<<<<<<<<<
 *             )
 *         except ExecuteBatchError:
 */
      __Pyx_GetModuleGlobalName(__pyx_t_5, __pyx_n_s_receive_initial_metadata); if (unlikely(!__pyx_t_5)) __PYX_ERR(33, 442, __pyx_L4_error)
      __Pyx_GOTREF(__pyx_t_5);
      __pyx_t_9 = NULL;
      __pyx_t_8 = 0;
      if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_5))) {
        __pyx_t_9 = PyMethod_GET_SELF(__pyx_t_5);
        if (likely(__pyx_t_9)) {
          PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_5);
          __Pyx_INCREF(__pyx_t_9);
          __Pyx_INCREF(function);
          __Pyx_DECREF_SET(__pyx_t_5, function);
          __pyx_t_8 = 1;
        }
      }
      #if CYTHON_FAST_PYCALL
      if (PyFunction_Check(__pyx_t_5)) {
        PyObject *__pyx_temp[3] = {__pyx_t_9, ((PyObject *)__pyx_cur_scope->__pyx_v_self), __pyx_cur_scope->__pyx_v_self->_loop};
        __pyx_t_4 = __Pyx_PyFunction_FastCall(__pyx_t_5, __pyx_temp+1-__pyx_t_8, 2+__pyx_t_8); if (unlikely(!__pyx_t_4)) __PYX_ERR(33, 442, __pyx_L4_error)
        __Pyx_XDECREF(__pyx_t_9); __pyx_t_9 = 0;
        __Pyx_GOTREF(__pyx_t_4);
      } else
      #endif
      #if CYTHON_FAST_PYCCALL
      if (__Pyx_PyFastCFunction_Check(__pyx_t_5)) {
        PyObject *__pyx_temp[3] = {__pyx_t_9, ((PyObject *)__pyx_cur_scope->__pyx_v_self), __pyx_cur_scope->__pyx_v_self->_loop};
        __pyx_t_4 = __Pyx_PyCFunction_FastCall(__pyx_t_5, __pyx_temp+1-__pyx_t_8, 2+__pyx_t_8); if (unlikely(!__pyx_t_4)) __PYX_ERR(33, 442, __pyx_L4_error)
        __Pyx_XDECREF(__pyx_t_9); __pyx_t_9 = 0;
        __Pyx_GOTREF(__pyx_t_4);
      } else
      #endif
      {
        __pyx_t_6 = PyTuple_New(2+__pyx_t_8); if (unlikely(!__pyx_t_6)) __PYX_ERR(33, 442, __pyx_L4_error)
        __Pyx_GOTREF(__pyx_t_6);
        if (__pyx_t_9) {
          __Pyx_GIVEREF(__pyx_t_9); PyTuple_SET_ITEM(__pyx_t_6, 0, __pyx_t_9); __pyx_t_9 = NULL;
        }
        __Pyx_INCREF(((PyObject *)__pyx_cur_scope->__pyx_v_self));
        __Pyx_GIVEREF(((PyObject *)__pyx_cur_scope->__pyx_v_self));
        PyTuple_SET_ITEM(__pyx_t_6, 0+__pyx_t_8, ((PyObject *)__pyx_cur_scope->__pyx_v_self));
        __Pyx_INCREF(__pyx_cur_scope->__pyx_v_self->_loop);
        __Pyx_GIVEREF(__pyx_cur_scope->__pyx_v_self->_loop);
        PyTuple_SET_ITEM(__pyx_t_6, 1+__pyx_t_8, __pyx_cur_scope->__pyx_v_self->_loop);
        __pyx_t_4 = __Pyx_PyObject_Call(__pyx_t_5, __pyx_t_6, NULL); if (unlikely(!__pyx_t_4)) __PYX_ERR(33, 442, __pyx_L4_error)
        __Pyx_GOTREF(__pyx_t_4);
        __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
      }
      __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
      __pyx_r = __Pyx_Coroutine_Yield_From(__pyx_generator, __pyx_t_4);
      __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
      __Pyx_XGOTREF(__pyx_r);
      if (likely(__pyx_r)) {
        __Pyx_XGIVEREF(__pyx_t_1);
        __pyx_cur_scope->__pyx_t_0 = __pyx_t_1;
        __Pyx_XGIVEREF(__pyx_t_2);
        __pyx_cur_scope->__pyx_t_1 = __pyx_t_2;
        __Pyx_XGIVEREF(__pyx_t_3);
        __pyx_cur_scope->__pyx_t_2 = __pyx_t_3;
        __Pyx_XGIVEREF(__pyx_r);
        __Pyx_RefNannyFinishContext();
        __Pyx_Coroutine_ResetAndClearException(__pyx_generator);
        /* return from generator, awaiting value */
        __pyx_generator->resume_label = 2;
        return __pyx_r;
        __pyx_L11_resume_from_await:;
        __pyx_t_1 = __pyx_cur_scope->__pyx_t_0;
        __pyx_cur_scope->__pyx_t_0 = 0;
        __Pyx_XGOTREF(__pyx_t_1);
        __pyx_t_2 = __pyx_cur_scope->__pyx_t_1;
        __pyx_cur_scope->__pyx_t_1 = 0;
        __Pyx_XGOTREF(__pyx_t_2);
        __pyx_t_3 = __pyx_cur_scope->__pyx_t_2;
        __pyx_cur_scope->__pyx_t_2 = 0;
        __Pyx_XGOTREF(__pyx_t_3);
        if (unlikely(!__pyx_sent_value)) __PYX_ERR(33, 442, __pyx_L4_error)
        __pyx_t_4 = __pyx_sent_value; __Pyx_INCREF(__pyx_t_4);
      } else {
        __pyx_t_4 = NULL;
        if (__Pyx_PyGen_FetchStopIterationValue(&__pyx_t_4) < 0) __PYX_ERR(33, 442, __pyx_L4_error)
        __Pyx_GOTREF(__pyx_t_4);
      }
      if (!(likely(PyTuple_CheckExact(__pyx_t_4))||((__pyx_t_4) == Py_None)||(PyErr_Format(PyExc_TypeError, "Expected %.16s, got %.200s", "tuple", Py_TYPE(__pyx_t_4)->tp_name), 0))) __PYX_ERR(33, 442, __pyx_L4_error)

      /* "src/python/grpcio/grpc/_cython/_cygrpc/aio/call.pyx.pxi":441
 * 
 *             # Receives initial metadata.
 *             self._set_initial_metadata(             # <<<<<<<<<<<<<<
 *                 await _receive_initial_metadata(self, self._loop)
 *             )
 */
      ((struct __pyx_vtabstruct_4grpc_7_cython_6cygrpc__AioCall *)__pyx_cur_scope->__pyx_v_self->__pyx_vtab)->_set_initial_metadata(__pyx_cur_scope->__pyx_v_self, ((PyObject*)__pyx_t_4)); if (unlikely(PyErr_Occurred())) __PYX_ERR(33, 441, __pyx_L4_error)
      __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;

      /* "src/python/grpcio/grpc/_cython/_cygrpc/aio/call.pyx.pxi":431
 *         Othersize, it would end normally and raise `StopAsyncIteration()`.
 *         """
 *         try:             # <<<<<<<<<<<<<<
 *             # Sends out initial_metadata ASAP.
 *             await _send_initial_metadata(self,
 */
    }
    __Pyx_XDECREF(__pyx_t_1); __pyx_t_1 = 0;
    __Pyx_XDECREF(__pyx_t_2); __pyx_t_2 = 0;
    __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0;
    goto __pyx_L9_try_end;
    __pyx_L4_error:;
    __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0;
    __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0;
    __Pyx_XDECREF(__pyx_t_6); __pyx_t_6 = 0;
    __Pyx_XDECREF(__pyx_t_7); __pyx_t_7 = 0;
    __Pyx_XDECREF(__pyx_t_9); __pyx_t_9 = 0;

    /* "src/python/grpcio/grpc/_cython/_cygrpc/aio/call.pyx.pxi":444
 *                 await _receive_initial_metadata(self, self._loop)
 *             )
 *         except ExecuteBatchError:             # <<<<<<<<<<<<<<
 *             # Core should explain why this batch failed
 *             await self._handle_status_once_received()
 */
    __Pyx_ErrFetch(&__pyx_t_4, &__pyx_t_5, &__pyx_t_6);
    __Pyx_GetModuleGlobalName(__pyx_t_9, __pyx_n_s_ExecuteBatchError); if (unlikely(!__pyx_t_9)) __PYX_ERR(33, 444, __pyx_L6_except_error)
    __Pyx_GOTREF(__pyx_t_9);
    __pyx_t_8 = __Pyx_PyErr_GivenExceptionMatches(__pyx_t_4, __pyx_t_9);
    __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0;
    __Pyx_ErrRestore(__pyx_t_4, __pyx_t_5, __pyx_t_6);
    __pyx_t_4 = 0; __pyx_t_5 = 0; __pyx_t_6 = 0;
    if (__pyx_t_8) {
      __Pyx_AddTraceback("grpc._cython.cygrpc._AioCall.stream_unary", __pyx_clineno, __pyx_lineno, __pyx_filename);
      if (__Pyx_GetException(&__pyx_t_6, &__pyx_t_5, &__pyx_t_4) < 0) __PYX_ERR(33, 444, __pyx_L6_except_error)
      __Pyx_GOTREF(__pyx_t_6);
      __Pyx_GOTREF(__pyx_t_5);
      __Pyx_GOTREF(__pyx_t_4);

      /* "src/python/grpcio/grpc/_cython/_cygrpc/aio/call.pyx.pxi":446
 *         except ExecuteBatchError:
 *             # Core should explain why this batch failed
 *             await self._handle_status_once_received()             # <<<<<<<<<<<<<<
 * 
 *             # Allow upper layer to proceed only if the status is set
 */
      __pyx_t_7 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_cur_scope->__pyx_v_self), __pyx_n_s_handle_status_once_received); if (unlikely(!__pyx_t_7)) __PYX_ERR(33, 446, __pyx_L6_except_error)
      __Pyx_GOTREF(__pyx_t_7);
      __pyx_t_10 = NULL;
      if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_7))) {
        __pyx_t_10 = PyMethod_GET_SELF(__pyx_t_7);
        if (likely(__pyx_t_10)) {
          PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_7);
          __Pyx_INCREF(__pyx_t_10);
          __Pyx_INCREF(function);
          __Pyx_DECREF_SET(__pyx_t_7, function);
        }
      }
      __pyx_t_9 = (__pyx_t_10) ? __Pyx_PyObject_CallOneArg(__pyx_t_7, __pyx_t_10) : __Pyx_PyObject_CallNoArg(__pyx_t_7);
      __Pyx_XDECREF(__pyx_t_10); __pyx_t_10 = 0;
      if (unlikely(!__pyx_t_9)) __PYX_ERR(33, 446, __pyx_L6_except_error)
      __Pyx_GOTREF(__pyx_t_9);
      __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
      __pyx_r = __Pyx_Coroutine_Yield_From(__pyx_generator, __pyx_t_9);
      __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0;
      __Pyx_XGOTREF(__pyx_r);
      if (likely(__pyx_r)) {
        __Pyx_XGIVEREF(__pyx_t_1);
        __pyx_cur_scope->__pyx_t_0 = __pyx_t_1;
        __Pyx_XGIVEREF(__pyx_t_2);
        __pyx_cur_scope->__pyx_t_1 = __pyx_t_2;
        __Pyx_XGIVEREF(__pyx_t_3);
        __pyx_cur_scope->__pyx_t_2 = __pyx_t_3;
        __Pyx_XGIVEREF(__pyx_t_4);
        __pyx_cur_scope->__pyx_t_3 = __pyx_t_4;
        __Pyx_XGIVEREF(__pyx_t_5);
        __pyx_cur_scope->__pyx_t_4 = __pyx_t_5;
        __Pyx_XGIVEREF(__pyx_t_6);
        __pyx_cur_scope->__pyx_t_5 = __pyx_t_6;
        __Pyx_XGIVEREF(__pyx_r);
        __Pyx_RefNannyFinishContext();
        __Pyx_Coroutine_SwapException(__pyx_generator);
        /* return from generator, awaiting value */
        __pyx_generator->resume_label = 3;
        return __pyx_r;
        __pyx_L14_resume_from_await:;
        __pyx_t_1 = __pyx_cur_scope->__pyx_t_0;
        __pyx_cur_scope->__pyx_t_0 = 0;
        __Pyx_XGOTREF(__pyx_t_1);
        __pyx_t_2 = __pyx_cur_scope->__pyx_t_1;
        __pyx_cur_scope->__pyx_t_1 = 0;
        __Pyx_XGOTREF(__pyx_t_2);
        __pyx_t_3 = __pyx_cur_scope->__pyx_t_2;
        __pyx_cur_scope->__pyx_t_2 = 0;
        __Pyx_XGOTREF(__pyx_t_3);
        __pyx_t_4 = __pyx_cur_scope->__pyx_t_3;
        __pyx_cur_scope->__pyx_t_3 = 0;
        __Pyx_XGOTREF(__pyx_t_4);
        __pyx_t_5 = __pyx_cur_scope->__pyx_t_4;
        __pyx_cur_scope->__pyx_t_4 = 0;
        __Pyx_XGOTREF(__pyx_t_5);
        __pyx_t_6 = __pyx_cur_scope->__pyx_t_5;
        __pyx_cur_scope->__pyx_t_5 = 0;
        __Pyx_XGOTREF(__pyx_t_6);
        if (unlikely(!__pyx_sent_value)) __PYX_ERR(33, 446, __pyx_L6_except_error)
      } else {
        PyObject* exc_type = __Pyx_PyErr_Occurred();
        if (exc_type) {
          if (likely(exc_type == PyExc_StopIteration || (exc_type != PyExc_GeneratorExit && __Pyx_PyErr_GivenExceptionMatches(exc_type, PyExc_StopIteration)))) PyErr_Clear();
          else __PYX_ERR(33, 446, __pyx_L6_except_error)
        }
      }

      /* "src/python/grpcio/grpc/_cython/_cygrpc/aio/call.pyx.pxi":449
 * 
 *             # Allow upper layer to proceed only if the status is set
 *             metadata_sent_observer()             # <<<<<<<<<<<<<<
 *             return None
 * 
 */
      __Pyx_INCREF(__pyx_cur_scope->__pyx_v_metadata_sent_observer);
      __pyx_t_7 = __pyx_cur_scope->__pyx_v_metadata_sent_observer; __pyx_t_10 = NULL;
      if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_7))) {
        __pyx_t_10 = PyMethod_GET_SELF(__pyx_t_7);
        if (likely(__pyx_t_10)) {
          PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_7);
          __Pyx_INCREF(__pyx_t_10);
          __Pyx_INCREF(function);
          __Pyx_DECREF_SET(__pyx_t_7, function);
        }
      }
      __pyx_t_9 = (__pyx_t_10) ? __Pyx_PyObject_CallOneArg(__pyx_t_7, __pyx_t_10) : __Pyx_PyObject_CallNoArg(__pyx_t_7);
      __Pyx_XDECREF(__pyx_t_10); __pyx_t_10 = 0;
      if (unlikely(!__pyx_t_9)) __PYX_ERR(33, 449, __pyx_L6_except_error)
      __Pyx_GOTREF(__pyx_t_9);
      __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
      __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0;

      /* "src/python/grpcio/grpc/_cython/_cygrpc/aio/call.pyx.pxi":450
 *             # Allow upper layer to proceed only if the status is set
 *             metadata_sent_observer()
 *             return None             # <<<<<<<<<<<<<<
 * 
 *         cdef tuple inbound_ops
 */
      __Pyx_XDECREF(__pyx_r);
      __pyx_r = NULL;
      __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
      __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
      __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
      goto __pyx_L7_except_return;
    }
    goto __pyx_L6_except_error;
    __pyx_L6_except_error:;

    /* "src/python/grpcio/grpc/_cython/_cygrpc/aio/call.pyx.pxi":431
 *         Othersize, it would end normally and raise `StopAsyncIteration()`.
 *         """
 *         try:             # <<<<<<<<<<<<<<
 *             # Sends out initial_metadata ASAP.
 *             await _send_initial_metadata(self,
 */
    __Pyx_XGIVEREF(__pyx_t_1);
    __Pyx_XGIVEREF(__pyx_t_2);
    __Pyx_XGIVEREF(__pyx_t_3);
    __Pyx_ExceptionReset(__pyx_t_1, __pyx_t_2, __pyx_t_3);
    goto __pyx_L1_error;
    __pyx_L7_except_return:;
    __Pyx_XGIVEREF(__pyx_t_1);
    __Pyx_XGIVEREF(__pyx_t_2);
    __Pyx_XGIVEREF(__pyx_t_3);
    __Pyx_ExceptionReset(__pyx_t_1, __pyx_t_2, __pyx_t_3);
    goto __pyx_L0;
    __pyx_L9_try_end:;
  }

  /* "src/python/grpcio/grpc/_cython/_cygrpc/aio/call.pyx.pxi":453
 * 
 *         cdef tuple inbound_ops
 *         cdef ReceiveMessageOperation receive_message_op = ReceiveMessageOperation(_EMPTY_FLAGS)             # <<<<<<<<<<<<<<
 *         cdef ReceiveStatusOnClientOperation receive_status_on_client_op = ReceiveStatusOnClientOperation(_EMPTY_FLAGS)
 *         inbound_ops = (receive_message_op, receive_status_on_client_op)
 */
  __Pyx_GetModuleGlobalName(__pyx_t_4, __pyx_n_s_EMPTY_FLAGS); if (unlikely(!__pyx_t_4)) __PYX_ERR(33, 453, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_4);
  __pyx_t_5 = __Pyx_PyObject_CallOneArg(((PyObject *)__pyx_ptype_4grpc_7_cython_6cygrpc_ReceiveMessageOperation), __pyx_t_4); if (unlikely(!__pyx_t_5)) __PYX_ERR(33, 453, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_5);
  __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
  __Pyx_GIVEREF(__pyx_t_5);
  __pyx_cur_scope->__pyx_v_receive_message_op = ((struct __pyx_obj_4grpc_7_cython_6cygrpc_ReceiveMessageOperation *)__pyx_t_5);
  __pyx_t_5 = 0;

  /* "src/python/grpcio/grpc/_cython/_cygrpc/aio/call.pyx.pxi":454
 *         cdef tuple inbound_ops
 *         cdef ReceiveMessageOperation receive_message_op = ReceiveMessageOperation(_EMPTY_FLAGS)
 *         cdef ReceiveStatusOnClientOperation receive_status_on_client_op = ReceiveStatusOnClientOperation(_EMPTY_FLAGS)             # <<<<<<<<<<<<<<
 *         inbound_ops = (receive_message_op, receive_status_on_client_op)
 * 
 */
  __Pyx_GetModuleGlobalName(__pyx_t_5, __pyx_n_s_EMPTY_FLAGS); if (unlikely(!__pyx_t_5)) __PYX_ERR(33, 454, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_5);
  __pyx_t_4 = __Pyx_PyObject_CallOneArg(((PyObject *)__pyx_ptype_4grpc_7_cython_6cygrpc_ReceiveStatusOnClientOperation), __pyx_t_5); if (unlikely(!__pyx_t_4)) __PYX_ERR(33, 454, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_4);
  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
  __Pyx_GIVEREF(__pyx_t_4);
  __pyx_cur_scope->__pyx_v_receive_status_on_client_op = ((struct __pyx_obj_4grpc_7_cython_6cygrpc_ReceiveStatusOnClientOperation *)__pyx_t_4);
  __pyx_t_4 = 0;

  /* "src/python/grpcio/grpc/_cython/_cygrpc/aio/call.pyx.pxi":455
 *         cdef ReceiveMessageOperation receive_message_op = ReceiveMessageOperation(_EMPTY_FLAGS)
 *         cdef ReceiveStatusOnClientOperation receive_status_on_client_op = ReceiveStatusOnClientOperation(_EMPTY_FLAGS)
 *         inbound_ops = (receive_message_op, receive_status_on_client_op)             # <<<<<<<<<<<<<<
 * 
 *         # Executes all operations in one batch.
 */
  __pyx_t_4 = PyTuple_New(2); if (unlikely(!__pyx_t_4)) __PYX_ERR(33, 455, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_4);
  __Pyx_INCREF(((PyObject *)__pyx_cur_scope->__pyx_v_receive_message_op));
  __Pyx_GIVEREF(((PyObject *)__pyx_cur_scope->__pyx_v_receive_message_op));
  PyTuple_SET_ITEM(__pyx_t_4, 0, ((PyObject *)__pyx_cur_scope->__pyx_v_receive_message_op));
  __Pyx_INCREF(((PyObject *)__pyx_cur_scope->__pyx_v_receive_status_on_client_op));
  __Pyx_GIVEREF(((PyObject *)__pyx_cur_scope->__pyx_v_receive_status_on_client_op));
  PyTuple_SET_ITEM(__pyx_t_4, 1, ((PyObject *)__pyx_cur_scope->__pyx_v_receive_status_on_client_op));
  __Pyx_GIVEREF(__pyx_t_4);
  __pyx_cur_scope->__pyx_v_inbound_ops = ((PyObject*)__pyx_t_4);
  __pyx_t_4 = 0;

  /* "src/python/grpcio/grpc/_cython/_cygrpc/aio/call.pyx.pxi":458
 * 
 *         # Executes all operations in one batch.
 *         await execute_batch(self,             # <<<<<<<<<<<<<<
 *                             inbound_ops,
 *                             self._loop)
 */
  __Pyx_GetModuleGlobalName(__pyx_t_5, __pyx_n_s_execute_batch); if (unlikely(!__pyx_t_5)) __PYX_ERR(33, 458, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_5);

  /* "src/python/grpcio/grpc/_cython/_cygrpc/aio/call.pyx.pxi":460
 *         await execute_batch(self,
 *                             inbound_ops,
 *                             self._loop)             # <<<<<<<<<<<<<<
 * 
 *         cdef grpc_status_code code
 */
  __pyx_t_6 = NULL;
  __pyx_t_8 = 0;
  if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_5))) {
    __pyx_t_6 = PyMethod_GET_SELF(__pyx_t_5);
    if (likely(__pyx_t_6)) {
      PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_5);
      __Pyx_INCREF(__pyx_t_6);
      __Pyx_INCREF(function);
      __Pyx_DECREF_SET(__pyx_t_5, function);
      __pyx_t_8 = 1;
    }
  }
  #if CYTHON_FAST_PYCALL
  if (PyFunction_Check(__pyx_t_5)) {
    PyObject *__pyx_temp[4] = {__pyx_t_6, ((PyObject *)__pyx_cur_scope->__pyx_v_self), __pyx_cur_scope->__pyx_v_inbound_ops, __pyx_cur_scope->__pyx_v_self->_loop};
    __pyx_t_4 = __Pyx_PyFunction_FastCall(__pyx_t_5, __pyx_temp+1-__pyx_t_8, 3+__pyx_t_8); if (unlikely(!__pyx_t_4)) __PYX_ERR(33, 458, __pyx_L1_error)
    __Pyx_XDECREF(__pyx_t_6); __pyx_t_6 = 0;
    __Pyx_GOTREF(__pyx_t_4);
  } else
  #endif
  #if CYTHON_FAST_PYCCALL
  if (__Pyx_PyFastCFunction_Check(__pyx_t_5)) {
    PyObject *__pyx_temp[4] = {__pyx_t_6, ((PyObject *)__pyx_cur_scope->__pyx_v_self), __pyx_cur_scope->__pyx_v_inbound_ops, __pyx_cur_scope->__pyx_v_self->_loop};
    __pyx_t_4 = __Pyx_PyCFunction_FastCall(__pyx_t_5, __pyx_temp+1-__pyx_t_8, 3+__pyx_t_8); if (unlikely(!__pyx_t_4)) __PYX_ERR(33, 458, __pyx_L1_error)
    __Pyx_XDECREF(__pyx_t_6); __pyx_t_6 = 0;
    __Pyx_GOTREF(__pyx_t_4);
  } else
  #endif
  {
    __pyx_t_9 = PyTuple_New(3+__pyx_t_8); if (unlikely(!__pyx_t_9)) __PYX_ERR(33, 458, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_9);
    if (__pyx_t_6) {
      __Pyx_GIVEREF(__pyx_t_6); PyTuple_SET_ITEM(__pyx_t_9, 0, __pyx_t_6); __pyx_t_6 = NULL;
    }
    __Pyx_INCREF(((PyObject *)__pyx_cur_scope->__pyx_v_self));
    __Pyx_GIVEREF(((PyObject *)__pyx_cur_scope->__pyx_v_self));
    PyTuple_SET_ITEM(__pyx_t_9, 0+__pyx_t_8, ((PyObject *)__pyx_cur_scope->__pyx_v_self));
    __Pyx_INCREF(__pyx_cur_scope->__pyx_v_inbound_ops);
    __Pyx_GIVEREF(__pyx_cur_scope->__pyx_v_inbound_ops);
    PyTuple_SET_ITEM(__pyx_t_9, 1+__pyx_t_8, __pyx_cur_scope->__pyx_v_inbound_ops);
    __Pyx_INCREF(__pyx_cur_scope->__pyx_v_self->_loop);
    __Pyx_GIVEREF(__pyx_cur_scope->__pyx_v_self->_loop);
    PyTuple_SET_ITEM(__pyx_t_9, 2+__pyx_t_8, __pyx_cur_scope->__pyx_v_self->_loop);
    __pyx_t_4 = __Pyx_PyObject_Call(__pyx_t_5, __pyx_t_9, NULL); if (unlikely(!__pyx_t_4)) __PYX_ERR(33, 458, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_4);
    __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0;
  }
  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
  __pyx_r = __Pyx_Coroutine_Yield_From(__pyx_generator, __pyx_t_4);
  __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
  __Pyx_XGOTREF(__pyx_r);
  if (likely(__pyx_r)) {
    __Pyx_XGIVEREF(__pyx_r);
    __Pyx_RefNannyFinishContext();
    __Pyx_Coroutine_ResetAndClearException(__pyx_generator);
    /* return from generator, awaiting value */
    __pyx_generator->resume_label = 4;
    return __pyx_r;
    __pyx_L15_resume_from_await:;
    if (unlikely(!__pyx_sent_value)) __PYX_ERR(33, 458, __pyx_L1_error)
  } else {
    PyObject* exc_type = __Pyx_PyErr_Occurred();
    if (exc_type) {
      if (likely(exc_type == PyExc_StopIteration || (exc_type != PyExc_GeneratorExit && __Pyx_PyErr_GivenExceptionMatches(exc_type, PyExc_StopIteration)))) PyErr_Clear();
      else __PYX_ERR(33, 458, __pyx_L1_error)
    }
  }

  /* "src/python/grpcio/grpc/_cython/_cygrpc/aio/call.pyx.pxi":463
 * 
 *         cdef grpc_status_code code
 *         code = receive_status_on_client_op.code()             # <<<<<<<<<<<<<<
 * 
 *         self._set_status(AioRpcStatus(
 */
  __pyx_t_5 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_cur_scope->__pyx_v_receive_status_on_client_op), __pyx_n_s_code); if (unlikely(!__pyx_t_5)) __PYX_ERR(33, 463, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_5);
  __pyx_t_9 = NULL;
  if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_5))) {
    __pyx_t_9 = PyMethod_GET_SELF(__pyx_t_5);
    if (likely(__pyx_t_9)) {
      PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_5);
      __Pyx_INCREF(__pyx_t_9);
      __Pyx_INCREF(function);
      __Pyx_DECREF_SET(__pyx_t_5, function);
    }
  }
  __pyx_t_4 = (__pyx_t_9) ? __Pyx_PyObject_CallOneArg(__pyx_t_5, __pyx_t_9) : __Pyx_PyObject_CallNoArg(__pyx_t_5);
  __Pyx_XDECREF(__pyx_t_9); __pyx_t_9 = 0;
  if (unlikely(!__pyx_t_4)) __PYX_ERR(33, 463, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_4);
  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
  __pyx_t_11 = ((grpc_status_code)__Pyx_PyInt_As_grpc_status_code(__pyx_t_4)); if (unlikely(PyErr_Occurred())) __PYX_ERR(33, 463, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
  __pyx_cur_scope->__pyx_v_code = __pyx_t_11;

  /* "src/python/grpcio/grpc/_cython/_cygrpc/aio/call.pyx.pxi":466
 * 
 *         self._set_status(AioRpcStatus(
 *             code,             # <<<<<<<<<<<<<<
 *             receive_status_on_client_op.details(),
 *             receive_status_on_client_op.trailing_metadata(),
 */
  __pyx_t_4 = __Pyx_PyInt_From_grpc_status_code(__pyx_cur_scope->__pyx_v_code); if (unlikely(!__pyx_t_4)) __PYX_ERR(33, 466, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_4);

  /* "src/python/grpcio/grpc/_cython/_cygrpc/aio/call.pyx.pxi":467
 *         self._set_status(AioRpcStatus(
 *             code,
 *             receive_status_on_client_op.details(),             # <<<<<<<<<<<<<<
 *             receive_status_on_client_op.trailing_metadata(),
 *             receive_status_on_client_op.error_string(),
 */
  __pyx_t_9 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_cur_scope->__pyx_v_receive_status_on_client_op), __pyx_n_s_details); if (unlikely(!__pyx_t_9)) __PYX_ERR(33, 467, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_9);
  __pyx_t_6 = NULL;
  if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_9))) {
    __pyx_t_6 = PyMethod_GET_SELF(__pyx_t_9);
    if (likely(__pyx_t_6)) {
      PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_9);
      __Pyx_INCREF(__pyx_t_6);
      __Pyx_INCREF(function);
      __Pyx_DECREF_SET(__pyx_t_9, function);
    }
  }
  __pyx_t_5 = (__pyx_t_6) ? __Pyx_PyObject_CallOneArg(__pyx_t_9, __pyx_t_6) : __Pyx_PyObject_CallNoArg(__pyx_t_9);
  __Pyx_XDECREF(__pyx_t_6); __pyx_t_6 = 0;
  if (unlikely(!__pyx_t_5)) __PYX_ERR(33, 467, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_5);
  __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0;

  /* "src/python/grpcio/grpc/_cython/_cygrpc/aio/call.pyx.pxi":468
 *             code,
 *             receive_status_on_client_op.details(),
 *             receive_status_on_client_op.trailing_metadata(),             # <<<<<<<<<<<<<<
 *             receive_status_on_client_op.error_string(),
 *         ))
 */
  __pyx_t_6 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_cur_scope->__pyx_v_receive_status_on_client_op), __pyx_n_s_trailing_metadata); if (unlikely(!__pyx_t_6)) __PYX_ERR(33, 468, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_6);
  __pyx_t_7 = NULL;
  if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_6))) {
    __pyx_t_7 = PyMethod_GET_SELF(__pyx_t_6);
    if (likely(__pyx_t_7)) {
      PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_6);
      __Pyx_INCREF(__pyx_t_7);
      __Pyx_INCREF(function);
      __Pyx_DECREF_SET(__pyx_t_6, function);
    }
  }
  __pyx_t_9 = (__pyx_t_7) ? __Pyx_PyObject_CallOneArg(__pyx_t_6, __pyx_t_7) : __Pyx_PyObject_CallNoArg(__pyx_t_6);
  __Pyx_XDECREF(__pyx_t_7); __pyx_t_7 = 0;
  if (unlikely(!__pyx_t_9)) __PYX_ERR(33, 468, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_9);
  __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;

  /* "src/python/grpcio/grpc/_cython/_cygrpc/aio/call.pyx.pxi":469
 *             receive_status_on_client_op.details(),
 *             receive_status_on_client_op.trailing_metadata(),
 *             receive_status_on_client_op.error_string(),             # <<<<<<<<<<<<<<
 *         ))
 * 
 */
  __pyx_t_7 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_cur_scope->__pyx_v_receive_status_on_client_op), __pyx_n_s_error_string); if (unlikely(!__pyx_t_7)) __PYX_ERR(33, 469, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_7);
  __pyx_t_10 = NULL;
  if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_7))) {
    __pyx_t_10 = PyMethod_GET_SELF(__pyx_t_7);
    if (likely(__pyx_t_10)) {
      PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_7);
      __Pyx_INCREF(__pyx_t_10);
      __Pyx_INCREF(function);
      __Pyx_DECREF_SET(__pyx_t_7, function);
    }
  }
  __pyx_t_6 = (__pyx_t_10) ? __Pyx_PyObject_CallOneArg(__pyx_t_7, __pyx_t_10) : __Pyx_PyObject_CallNoArg(__pyx_t_7);
  __Pyx_XDECREF(__pyx_t_10); __pyx_t_10 = 0;
  if (unlikely(!__pyx_t_6)) __PYX_ERR(33, 469, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_6);
  __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;

  /* "src/python/grpcio/grpc/_cython/_cygrpc/aio/call.pyx.pxi":465
 *         code = receive_status_on_client_op.code()
 * 
 *         self._set_status(AioRpcStatus(             # <<<<<<<<<<<<<<
 *             code,
 *             receive_status_on_client_op.details(),
 */
  __pyx_t_7 = PyTuple_New(4); if (unlikely(!__pyx_t_7)) __PYX_ERR(33, 465, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_7);
  __Pyx_GIVEREF(__pyx_t_4);
  PyTuple_SET_ITEM(__pyx_t_7, 0, __pyx_t_4);
  __Pyx_GIVEREF(__pyx_t_5);
  PyTuple_SET_ITEM(__pyx_t_7, 1, __pyx_t_5);
  __Pyx_GIVEREF(__pyx_t_9);
  PyTuple_SET_ITEM(__pyx_t_7, 2, __pyx_t_9);
  __Pyx_GIVEREF(__pyx_t_6);
  PyTuple_SET_ITEM(__pyx_t_7, 3, __pyx_t_6);
  __pyx_t_4 = 0;
  __pyx_t_5 = 0;
  __pyx_t_9 = 0;
  __pyx_t_6 = 0;
  __pyx_t_6 = __Pyx_PyObject_Call(((PyObject *)__pyx_ptype_4grpc_7_cython_6cygrpc_AioRpcStatus), __pyx_t_7, NULL); if (unlikely(!__pyx_t_6)) __PYX_ERR(33, 465, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_6);
  __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
  ((struct __pyx_vtabstruct_4grpc_7_cython_6cygrpc__AioCall *)__pyx_cur_scope->__pyx_v_self->__pyx_vtab)->_set_status(__pyx_cur_scope->__pyx_v_self, ((struct __pyx_obj_4grpc_7_cython_6cygrpc_AioRpcStatus *)__pyx_t_6)); if (unlikely(PyErr_Occurred())) __PYX_ERR(33, 465, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;

  /* "src/python/grpcio/grpc/_cython/_cygrpc/aio/call.pyx.pxi":472
 *         ))
 * 
 *         if code == StatusCode.ok:             # <<<<<<<<<<<<<<
 *             return receive_message_op.message()
 *         else:
 */
  __pyx_t_6 = __Pyx_PyInt_From_grpc_status_code(__pyx_cur_scope->__pyx_v_code); if (unlikely(!__pyx_t_6)) __PYX_ERR(33, 472, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_6);
  __Pyx_GetModuleGlobalName(__pyx_t_7, __pyx_n_s_StatusCode); if (unlikely(!__pyx_t_7)) __PYX_ERR(33, 472, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_7);
  __pyx_t_9 = __Pyx_PyObject_GetAttrStr(__pyx_t_7, __pyx_n_s_ok); if (unlikely(!__pyx_t_9)) __PYX_ERR(33, 472, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_9);
  __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
  __pyx_t_7 = PyObject_RichCompare(__pyx_t_6, __pyx_t_9, Py_EQ); __Pyx_XGOTREF(__pyx_t_7); if (unlikely(!__pyx_t_7)) __PYX_ERR(33, 472, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
  __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0;
  __pyx_t_12 = __Pyx_PyObject_IsTrue(__pyx_t_7); if (unlikely(__pyx_t_12 < 0)) __PYX_ERR(33, 472, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
  if (__pyx_t_12) {

    /* "src/python/grpcio/grpc/_cython/_cygrpc/aio/call.pyx.pxi":473
 * 
 *         if code == StatusCode.ok:
 *             return receive_message_op.message()             # <<<<<<<<<<<<<<
 *         else:
 *             return None
 */
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_9 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_cur_scope->__pyx_v_receive_message_op), __pyx_n_s_message); if (unlikely(!__pyx_t_9)) __PYX_ERR(33, 473, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_9);
    __pyx_t_6 = NULL;
    if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_9))) {
      __pyx_t_6 = PyMethod_GET_SELF(__pyx_t_9);
      if (likely(__pyx_t_6)) {
        PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_9);
        __Pyx_INCREF(__pyx_t_6);
        __Pyx_INCREF(function);
        __Pyx_DECREF_SET(__pyx_t_9, function);
      }
    }
    __pyx_t_7 = (__pyx_t_6) ? __Pyx_PyObject_CallOneArg(__pyx_t_9, __pyx_t_6) : __Pyx_PyObject_CallNoArg(__pyx_t_9);
    __Pyx_XDECREF(__pyx_t_6); __pyx_t_6 = 0;
    if (unlikely(!__pyx_t_7)) __PYX_ERR(33, 473, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_7);
    __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0;
    __pyx_r = NULL; __Pyx_ReturnWithStopIteration(__pyx_t_7);
    __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
    goto __pyx_L0;

    /* "src/python/grpcio/grpc/_cython/_cygrpc/aio/call.pyx.pxi":472
 *         ))
 * 
 *         if code == StatusCode.ok:             # <<<<<<<<<<<<<<
 *             return receive_message_op.message()
 *         else:
 */
  }

  /* "src/python/grpcio/grpc/_cython/_cygrpc/aio/call.pyx.pxi":475
 *             return receive_message_op.message()
 *         else:
 *             return None             # <<<<<<<<<<<<<<
 * 
 *     async def initiate_stream_stream(self,
 */
  /*else*/ {
    __Pyx_XDECREF(__pyx_r);
    __pyx_r = NULL;
    goto __pyx_L0;
  }
  CYTHON_MAYBE_UNUSED_VAR(__pyx_cur_scope);

  /* "src/python/grpcio/grpc/_cython/_cygrpc/aio/call.pyx.pxi":422
 *             await status_task
 * 
 *     async def stream_unary(self,             # <<<<<<<<<<<<<<
 *                            tuple outbound_initial_metadata,
 *                            object metadata_sent_observer):
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_4);
  __Pyx_XDECREF(__pyx_t_5);
  __Pyx_XDECREF(__pyx_t_6);
  __Pyx_XDECREF(__pyx_t_7);
  __Pyx_XDECREF(__pyx_t_9);
  __Pyx_XDECREF(__pyx_t_10);
  __Pyx_AddTraceback("stream_unary", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_L0:;
  __Pyx_XDECREF(__pyx_r); __pyx_r = 0;
  #if !CYTHON_USE_EXC_INFO_STACK
  __Pyx_Coroutine_ResetAndClearException(__pyx_generator);
  #endif
  __pyx_generator->resume_label = -1;
  __Pyx_Coroutine_clear((PyObject*)__pyx_generator);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}
static PyObject *__pyx_gb_4grpc_7_cython_6cygrpc_8_AioCall_53generator17(__pyx_CoroutineObject *__pyx_generator, CYTHON_UNUSED PyThreadState *__pyx_tstate, PyObject *__pyx_sent_value); /* proto */

/* "src/python/grpcio/grpc/_cython/_cygrpc/aio/call.pyx.pxi":477
 *             return None
 * 
 *     async def initiate_stream_stream(self,             # <<<<<<<<<<<<<<
 *                            tuple outbound_initial_metadata,
 *                            object metadata_sent_observer):
 */

/* Python wrapper */
static PyObject *__pyx_pw_4grpc_7_cython_6cygrpc_8_AioCall_52initiate_stream_stream(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
static char __pyx_doc_4grpc_7_cython_6cygrpc_8_AioCall_51initiate_stream_stream[] = "Actual implementation of the complete stream-stream call.\n\n        Needs to pay extra attention to the raise mechanism. If we want to\n        propagate the final status exception, then we have to raise it.\n        Othersize, it would end normally and raise `StopAsyncIteration()`.\n        ";
static PyObject *__pyx_pw_4grpc_7_cython_6cygrpc_8_AioCall_52initiate_stream_stream(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
  PyObject *__pyx_v_outbound_initial_metadata = 0;
  PyObject *__pyx_v_metadata_sent_observer = 0;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("initiate_stream_stream (wrapper)", 0);
  {
    static PyObject **__pyx_pyargnames[] = {&__pyx_n_s_outbound_initial_metadata,&__pyx_n_s_metadata_sent_observer,0};
    PyObject* values[2] = {0,0};
    if (unlikely(__pyx_kwds)) {
      Py_ssize_t kw_args;
      const Py_ssize_t pos_args = PyTuple_GET_SIZE(__pyx_args);
      switch (pos_args) {
        case  2: values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
        CYTHON_FALLTHROUGH;
        case  1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
        CYTHON_FALLTHROUGH;
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      kw_args = PyDict_Size(__pyx_kwds);
      switch (pos_args) {
        case  0:
        if (likely((values[0] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_outbound_initial_metadata)) != 0)) kw_args--;
        else goto __pyx_L5_argtuple_error;
        CYTHON_FALLTHROUGH;
        case  1:
        if (likely((values[1] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_metadata_sent_observer)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("initiate_stream_stream", 1, 2, 2, 1); __PYX_ERR(33, 477, __pyx_L3_error)
        }
      }
      if (unlikely(kw_args > 0)) {
        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "initiate_stream_stream") < 0)) __PYX_ERR(33, 477, __pyx_L3_error)
      }
    } else if (PyTuple_GET_SIZE(__pyx_args) != 2) {
      goto __pyx_L5_argtuple_error;
    } else {
      values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
      values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
    }
    __pyx_v_outbound_initial_metadata = ((PyObject*)values[0]);
    __pyx_v_metadata_sent_observer = values[1];
  }
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("initiate_stream_stream", 1, 2, 2, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(33, 477, __pyx_L3_error)
  __pyx_L3_error:;
  __Pyx_AddTraceback("grpc._cython.cygrpc._AioCall.initiate_stream_stream", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_outbound_initial_metadata), (&PyTuple_Type), 1, "outbound_initial_metadata", 1))) __PYX_ERR(33, 478, __pyx_L1_error)
  __pyx_r = __pyx_pf_4grpc_7_cython_6cygrpc_8_AioCall_51initiate_stream_stream(((struct __pyx_obj_4grpc_7_cython_6cygrpc__AioCall *)__pyx_v_self), __pyx_v_outbound_initial_metadata, __pyx_v_metadata_sent_observer);

  /* function exit code */
  goto __pyx_L0;
  __pyx_L1_error:;
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_4grpc_7_cython_6cygrpc_8_AioCall_51initiate_stream_stream(struct __pyx_obj_4grpc_7_cython_6cygrpc__AioCall *__pyx_v_self, PyObject *__pyx_v_outbound_initial_metadata, PyObject *__pyx_v_metadata_sent_observer) {
  struct __pyx_obj_4grpc_7_cython_6cygrpc___pyx_scope_struct_29_initiate_stream_stream *__pyx_cur_scope;
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("initiate_stream_stream", 0);
  __pyx_cur_scope = (struct __pyx_obj_4grpc_7_cython_6cygrpc___pyx_scope_struct_29_initiate_stream_stream *)__pyx_tp_new_4grpc_7_cython_6cygrpc___pyx_scope_struct_29_initiate_stream_stream(__pyx_ptype_4grpc_7_cython_6cygrpc___pyx_scope_struct_29_initiate_stream_stream, __pyx_empty_tuple, NULL);
  if (unlikely(!__pyx_cur_scope)) {
    __pyx_cur_scope = ((struct __pyx_obj_4grpc_7_cython_6cygrpc___pyx_scope_struct_29_initiate_stream_stream *)Py_None);
    __Pyx_INCREF(Py_None);
    __PYX_ERR(33, 477, __pyx_L1_error)
  } else {
    __Pyx_GOTREF(__pyx_cur_scope);
  }
  __pyx_cur_scope->__pyx_v_self = __pyx_v_self;
  __Pyx_INCREF((PyObject *)__pyx_cur_scope->__pyx_v_self);
  __Pyx_GIVEREF((PyObject *)__pyx_cur_scope->__pyx_v_self);
  __pyx_cur_scope->__pyx_v_outbound_initial_metadata = __pyx_v_outbound_initial_metadata;
  __Pyx_INCREF(__pyx_cur_scope->__pyx_v_outbound_initial_metadata);
  __Pyx_GIVEREF(__pyx_cur_scope->__pyx_v_outbound_initial_metadata);
  __pyx_cur_scope->__pyx_v_metadata_sent_observer = __pyx_v_metadata_sent_observer;
  __Pyx_INCREF(__pyx_cur_scope->__pyx_v_metadata_sent_observer);
  __Pyx_GIVEREF(__pyx_cur_scope->__pyx_v_metadata_sent_observer);
  {
    __pyx_CoroutineObject *gen = __Pyx_Coroutine_New((__pyx_coroutine_body_t) __pyx_gb_4grpc_7_cython_6cygrpc_8_AioCall_53generator17, NULL, (PyObject *) __pyx_cur_scope, __pyx_n_s_initiate_stream_stream, __pyx_n_s_AioCall_initiate_stream_stream, __pyx_n_s_grpc__cython_cygrpc); if (unlikely(!gen)) __PYX_ERR(33, 477, __pyx_L1_error)
    __Pyx_DECREF(__pyx_cur_scope);
    __Pyx_RefNannyFinishContext();
    return (PyObject *) gen;
  }

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_AddTraceback("grpc._cython.cygrpc._AioCall.initiate_stream_stream", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __Pyx_DECREF(((PyObject *)__pyx_cur_scope));
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_gb_4grpc_7_cython_6cygrpc_8_AioCall_53generator17(__pyx_CoroutineObject *__pyx_generator, CYTHON_UNUSED PyThreadState *__pyx_tstate, PyObject *__pyx_sent_value) /* generator body */
{
  struct __pyx_obj_4grpc_7_cython_6cygrpc___pyx_scope_struct_29_initiate_stream_stream *__pyx_cur_scope = ((struct __pyx_obj_4grpc_7_cython_6cygrpc___pyx_scope_struct_29_initiate_stream_stream *)__pyx_generator->closure);
  PyObject *__pyx_r = NULL;
  PyObject *__pyx_t_1 = NULL;
  PyObject *__pyx_t_2 = NULL;
  PyObject *__pyx_t_3 = NULL;
  PyObject *__pyx_t_4 = NULL;
  PyObject *__pyx_t_5 = NULL;
  PyObject *__pyx_t_6 = NULL;
  PyObject *__pyx_t_7 = NULL;
  PyObject *__pyx_t_8 = NULL;
  int __pyx_t_9;
  PyObject *__pyx_t_10 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("initiate_stream_stream", 0);
  switch (__pyx_generator->resume_label) {
    case 0: goto __pyx_L3_first_run;
    case 1: goto __pyx_L10_resume_from_await;
    case 2: goto __pyx_L11_resume_from_await;
    case 3: goto __pyx_L14_resume_from_await;
    default: /* CPython raises the right error here */
    __Pyx_RefNannyFinishContext();
    return NULL;
  }
  __pyx_L3_first_run:;
  if (unlikely(!__pyx_sent_value)) __PYX_ERR(33, 477, __pyx_L1_error)

  /* "src/python/grpcio/grpc/_cython/_cygrpc/aio/call.pyx.pxi":488
 *         # Peer may prematurely end this RPC at any point. We need a corutine
 *         # that watches if the server sends the final status.
 *         status_task = self._loop.create_task(self._handle_status_once_received())             # <<<<<<<<<<<<<<
 * 
 *         try:
 */
  __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_cur_scope->__pyx_v_self->_loop, __pyx_n_s_create_task); if (unlikely(!__pyx_t_2)) __PYX_ERR(33, 488, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __pyx_t_4 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_cur_scope->__pyx_v_self), __pyx_n_s_handle_status_once_received); if (unlikely(!__pyx_t_4)) __PYX_ERR(33, 488, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_4);
  __pyx_t_5 = NULL;
  if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_4))) {
    __pyx_t_5 = PyMethod_GET_SELF(__pyx_t_4);
    if (likely(__pyx_t_5)) {
      PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_4);
      __Pyx_INCREF(__pyx_t_5);
      __Pyx_INCREF(function);
      __Pyx_DECREF_SET(__pyx_t_4, function);
    }
  }
  __pyx_t_3 = (__pyx_t_5) ? __Pyx_PyObject_CallOneArg(__pyx_t_4, __pyx_t_5) : __Pyx_PyObject_CallNoArg(__pyx_t_4);
  __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0;
  if (unlikely(!__pyx_t_3)) __PYX_ERR(33, 488, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
  __pyx_t_4 = NULL;
  if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_2))) {
    __pyx_t_4 = PyMethod_GET_SELF(__pyx_t_2);
    if (likely(__pyx_t_4)) {
      PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_2);
      __Pyx_INCREF(__pyx_t_4);
      __Pyx_INCREF(function);
      __Pyx_DECREF_SET(__pyx_t_2, function);
    }
  }
  __pyx_t_1 = (__pyx_t_4) ? __Pyx_PyObject_Call2Args(__pyx_t_2, __pyx_t_4, __pyx_t_3) : __Pyx_PyObject_CallOneArg(__pyx_t_2, __pyx_t_3);
  __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0;
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
  if (unlikely(!__pyx_t_1)) __PYX_ERR(33, 488, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  __Pyx_GIVEREF(__pyx_t_1);
  __pyx_cur_scope->__pyx_v_status_task = __pyx_t_1;
  __pyx_t_1 = 0;

  /* "src/python/grpcio/grpc/_cython/_cygrpc/aio/call.pyx.pxi":490
 *         status_task = self._loop.create_task(self._handle_status_once_received())
 * 
 *         try:             # <<<<<<<<<<<<<<
 *             # Sends out initial_metadata ASAP.
 *             await _send_initial_metadata(self,
 */
  {
    __Pyx_ExceptionSave(&__pyx_t_6, &__pyx_t_7, &__pyx_t_8);
    __Pyx_XGOTREF(__pyx_t_6);
    __Pyx_XGOTREF(__pyx_t_7);
    __Pyx_XGOTREF(__pyx_t_8);
    /*try:*/ {

      /* "src/python/grpcio/grpc/_cython/_cygrpc/aio/call.pyx.pxi":492
 *         try:
 *             # Sends out initial_metadata ASAP.
 *             await _send_initial_metadata(self,             # <<<<<<<<<<<<<<
 *                                         outbound_initial_metadata,
 *                                         self._send_initial_metadata_flags,
 */
      __Pyx_GetModuleGlobalName(__pyx_t_2, __pyx_n_s_send_initial_metadata); if (unlikely(!__pyx_t_2)) __PYX_ERR(33, 492, __pyx_L4_error)
      __Pyx_GOTREF(__pyx_t_2);

      /* "src/python/grpcio/grpc/_cython/_cygrpc/aio/call.pyx.pxi":494
 *             await _send_initial_metadata(self,
 *                                         outbound_initial_metadata,
 *                                         self._send_initial_metadata_flags,             # <<<<<<<<<<<<<<
 *                                         self._loop)
 *             # Notify upper level that sending messages are allowed now.
 */
      __pyx_t_3 = __Pyx_PyInt_From_int(__pyx_cur_scope->__pyx_v_self->_send_initial_metadata_flags); if (unlikely(!__pyx_t_3)) __PYX_ERR(33, 494, __pyx_L4_error)
      __Pyx_GOTREF(__pyx_t_3);

      /* "src/python/grpcio/grpc/_cython/_cygrpc/aio/call.pyx.pxi":495
 *                                         outbound_initial_metadata,
 *                                         self._send_initial_metadata_flags,
 *                                         self._loop)             # <<<<<<<<<<<<<<
 *             # Notify upper level that sending messages are allowed now.
 *             metadata_sent_observer()
 */
      __pyx_t_4 = NULL;
      __pyx_t_9 = 0;
      if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_2))) {
        __pyx_t_4 = PyMethod_GET_SELF(__pyx_t_2);
        if (likely(__pyx_t_4)) {
          PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_2);
          __Pyx_INCREF(__pyx_t_4);
          __Pyx_INCREF(function);
          __Pyx_DECREF_SET(__pyx_t_2, function);
          __pyx_t_9 = 1;
        }
      }
      #if CYTHON_FAST_PYCALL
      if (PyFunction_Check(__pyx_t_2)) {
        PyObject *__pyx_temp[5] = {__pyx_t_4, ((PyObject *)__pyx_cur_scope->__pyx_v_self), __pyx_cur_scope->__pyx_v_outbound_initial_metadata, __pyx_t_3, __pyx_cur_scope->__pyx_v_self->_loop};
        __pyx_t_1 = __Pyx_PyFunction_FastCall(__pyx_t_2, __pyx_temp+1-__pyx_t_9, 4+__pyx_t_9); if (unlikely(!__pyx_t_1)) __PYX_ERR(33, 492, __pyx_L4_error)
        __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0;
        __Pyx_GOTREF(__pyx_t_1);
        __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
      } else
      #endif
      #if CYTHON_FAST_PYCCALL
      if (__Pyx_PyFastCFunction_Check(__pyx_t_2)) {
        PyObject *__pyx_temp[5] = {__pyx_t_4, ((PyObject *)__pyx_cur_scope->__pyx_v_self), __pyx_cur_scope->__pyx_v_outbound_initial_metadata, __pyx_t_3, __pyx_cur_scope->__pyx_v_self->_loop};
        __pyx_t_1 = __Pyx_PyCFunction_FastCall(__pyx_t_2, __pyx_temp+1-__pyx_t_9, 4+__pyx_t_9); if (unlikely(!__pyx_t_1)) __PYX_ERR(33, 492, __pyx_L4_error)
        __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0;
        __Pyx_GOTREF(__pyx_t_1);
        __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
      } else
      #endif
      {
        __pyx_t_5 = PyTuple_New(4+__pyx_t_9); if (unlikely(!__pyx_t_5)) __PYX_ERR(33, 492, __pyx_L4_error)
        __Pyx_GOTREF(__pyx_t_5);
        if (__pyx_t_4) {
          __Pyx_GIVEREF(__pyx_t_4); PyTuple_SET_ITEM(__pyx_t_5, 0, __pyx_t_4); __pyx_t_4 = NULL;
        }
        __Pyx_INCREF(((PyObject *)__pyx_cur_scope->__pyx_v_self));
        __Pyx_GIVEREF(((PyObject *)__pyx_cur_scope->__pyx_v_self));
        PyTuple_SET_ITEM(__pyx_t_5, 0+__pyx_t_9, ((PyObject *)__pyx_cur_scope->__pyx_v_self));
        __Pyx_INCREF(__pyx_cur_scope->__pyx_v_outbound_initial_metadata);
        __Pyx_GIVEREF(__pyx_cur_scope->__pyx_v_outbound_initial_metadata);
        PyTuple_SET_ITEM(__pyx_t_5, 1+__pyx_t_9, __pyx_cur_scope->__pyx_v_outbound_initial_metadata);
        __Pyx_GIVEREF(__pyx_t_3);
        PyTuple_SET_ITEM(__pyx_t_5, 2+__pyx_t_9, __pyx_t_3);
        __Pyx_INCREF(__pyx_cur_scope->__pyx_v_self->_loop);
        __Pyx_GIVEREF(__pyx_cur_scope->__pyx_v_self->_loop);
        PyTuple_SET_ITEM(__pyx_t_5, 3+__pyx_t_9, __pyx_cur_scope->__pyx_v_self->_loop);
        __pyx_t_3 = 0;
        __pyx_t_1 = __Pyx_PyObject_Call(__pyx_t_2, __pyx_t_5, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(33, 492, __pyx_L4_error)
        __Pyx_GOTREF(__pyx_t_1);
        __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
      }
      __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
      __pyx_r = __Pyx_Coroutine_Yield_From(__pyx_generator, __pyx_t_1);
      __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
      __Pyx_XGOTREF(__pyx_r);
      if (likely(__pyx_r)) {
        __Pyx_XGIVEREF(__pyx_t_6);
        __pyx_cur_scope->__pyx_t_0 = __pyx_t_6;
        __Pyx_XGIVEREF(__pyx_t_7);
        __pyx_cur_scope->__pyx_t_1 = __pyx_t_7;
        __Pyx_XGIVEREF(__pyx_t_8);
        __pyx_cur_scope->__pyx_t_2 = __pyx_t_8;
        __Pyx_XGIVEREF(__pyx_r);
        __Pyx_RefNannyFinishContext();
        __Pyx_Coroutine_ResetAndClearException(__pyx_generator);
        /* return from generator, awaiting value */
        __pyx_generator->resume_label = 1;
        return __pyx_r;
        __pyx_L10_resume_from_await:;
        __pyx_t_6 = __pyx_cur_scope->__pyx_t_0;
        __pyx_cur_scope->__pyx_t_0 = 0;
        __Pyx_XGOTREF(__pyx_t_6);
        __pyx_t_7 = __pyx_cur_scope->__pyx_t_1;
        __pyx_cur_scope->__pyx_t_1 = 0;
        __Pyx_XGOTREF(__pyx_t_7);
        __pyx_t_8 = __pyx_cur_scope->__pyx_t_2;
        __pyx_cur_scope->__pyx_t_2 = 0;
        __Pyx_XGOTREF(__pyx_t_8);
        if (unlikely(!__pyx_sent_value)) __PYX_ERR(33, 492, __pyx_L4_error)
      } else {
        PyObject* exc_type = __Pyx_PyErr_Occurred();
        if (exc_type) {
          if (likely(exc_type == PyExc_StopIteration || (exc_type != PyExc_GeneratorExit && __Pyx_PyErr_GivenExceptionMatches(exc_type, PyExc_StopIteration)))) PyErr_Clear();
          else __PYX_ERR(33, 492, __pyx_L4_error)
        }
      }

      /* "src/python/grpcio/grpc/_cython/_cygrpc/aio/call.pyx.pxi":497
 *                                         self._loop)
 *             # Notify upper level that sending messages are allowed now.
 *             metadata_sent_observer()             # <<<<<<<<<<<<<<
 * 
 *             # Receives initial metadata.
 */
      __Pyx_INCREF(__pyx_cur_scope->__pyx_v_metadata_sent_observer);
      __pyx_t_2 = __pyx_cur_scope->__pyx_v_metadata_sent_observer; __pyx_t_5 = NULL;
      if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_2))) {
        __pyx_t_5 = PyMethod_GET_SELF(__pyx_t_2);
        if (likely(__pyx_t_5)) {
          PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_2);
          __Pyx_INCREF(__pyx_t_5);
          __Pyx_INCREF(function);
          __Pyx_DECREF_SET(__pyx_t_2, function);
        }
      }
      __pyx_t_1 = (__pyx_t_5) ? __Pyx_PyObject_CallOneArg(__pyx_t_2, __pyx_t_5) : __Pyx_PyObject_CallNoArg(__pyx_t_2);
      __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0;
      if (unlikely(!__pyx_t_1)) __PYX_ERR(33, 497, __pyx_L4_error)
      __Pyx_GOTREF(__pyx_t_1);
      __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
      __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;

      /* "src/python/grpcio/grpc/_cython/_cygrpc/aio/call.pyx.pxi":501
 *             # Receives initial metadata.
 *             self._set_initial_metadata(
 *                 await _receive_initial_metadata(self, self._loop)             # <<<<<<<<<<<<<<
 *             )
 *         except ExecuteBatchError as batch_error:
 */
      __Pyx_GetModuleGlobalName(__pyx_t_2, __pyx_n_s_receive_initial_metadata); if (unlikely(!__pyx_t_2)) __PYX_ERR(33, 501, __pyx_L4_error)
      __Pyx_GOTREF(__pyx_t_2);
      __pyx_t_5 = NULL;
      __pyx_t_9 = 0;
      if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_2))) {
        __pyx_t_5 = PyMethod_GET_SELF(__pyx_t_2);
        if (likely(__pyx_t_5)) {
          PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_2);
          __Pyx_INCREF(__pyx_t_5);
          __Pyx_INCREF(function);
          __Pyx_DECREF_SET(__pyx_t_2, function);
          __pyx_t_9 = 1;
        }
      }
      #if CYTHON_FAST_PYCALL
      if (PyFunction_Check(__pyx_t_2)) {
        PyObject *__pyx_temp[3] = {__pyx_t_5, ((PyObject *)__pyx_cur_scope->__pyx_v_self), __pyx_cur_scope->__pyx_v_self->_loop};
        __pyx_t_1 = __Pyx_PyFunction_FastCall(__pyx_t_2, __pyx_temp+1-__pyx_t_9, 2+__pyx_t_9); if (unlikely(!__pyx_t_1)) __PYX_ERR(33, 501, __pyx_L4_error)
        __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0;
        __Pyx_GOTREF(__pyx_t_1);
      } else
      #endif
      #if CYTHON_FAST_PYCCALL
      if (__Pyx_PyFastCFunction_Check(__pyx_t_2)) {
        PyObject *__pyx_temp[3] = {__pyx_t_5, ((PyObject *)__pyx_cur_scope->__pyx_v_self), __pyx_cur_scope->__pyx_v_self->_loop};
        __pyx_t_1 = __Pyx_PyCFunction_FastCall(__pyx_t_2, __pyx_temp+1-__pyx_t_9, 2+__pyx_t_9); if (unlikely(!__pyx_t_1)) __PYX_ERR(33, 501, __pyx_L4_error)
        __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0;
        __Pyx_GOTREF(__pyx_t_1);
      } else
      #endif
      {
        __pyx_t_3 = PyTuple_New(2+__pyx_t_9); if (unlikely(!__pyx_t_3)) __PYX_ERR(33, 501, __pyx_L4_error)
        __Pyx_GOTREF(__pyx_t_3);
        if (__pyx_t_5) {
          __Pyx_GIVEREF(__pyx_t_5); PyTuple_SET_ITEM(__pyx_t_3, 0, __pyx_t_5); __pyx_t_5 = NULL;
        }
        __Pyx_INCREF(((PyObject *)__pyx_cur_scope->__pyx_v_self));
        __Pyx_GIVEREF(((PyObject *)__pyx_cur_scope->__pyx_v_self));
        PyTuple_SET_ITEM(__pyx_t_3, 0+__pyx_t_9, ((PyObject *)__pyx_cur_scope->__pyx_v_self));
        __Pyx_INCREF(__pyx_cur_scope->__pyx_v_self->_loop);
        __Pyx_GIVEREF(__pyx_cur_scope->__pyx_v_self->_loop);
        PyTuple_SET_ITEM(__pyx_t_3, 1+__pyx_t_9, __pyx_cur_scope->__pyx_v_self->_loop);
        __pyx_t_1 = __Pyx_PyObject_Call(__pyx_t_2, __pyx_t_3, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(33, 501, __pyx_L4_error)
        __Pyx_GOTREF(__pyx_t_1);
        __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
      }
      __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
      __pyx_r = __Pyx_Coroutine_Yield_From(__pyx_generator, __pyx_t_1);
      __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
      __Pyx_XGOTREF(__pyx_r);
      if (likely(__pyx_r)) {
        __Pyx_XGIVEREF(__pyx_t_6);
        __pyx_cur_scope->__pyx_t_0 = __pyx_t_6;
        __Pyx_XGIVEREF(__pyx_t_7);
        __pyx_cur_scope->__pyx_t_1 = __pyx_t_7;
        __Pyx_XGIVEREF(__pyx_t_8);
        __pyx_cur_scope->__pyx_t_2 = __pyx_t_8;
        __Pyx_XGIVEREF(__pyx_r);
        __Pyx_RefNannyFinishContext();
        __Pyx_Coroutine_ResetAndClearException(__pyx_generator);
        /* return from generator, awaiting value */
        __pyx_generator->resume_label = 2;
        return __pyx_r;
        __pyx_L11_resume_from_await:;
        __pyx_t_6 = __pyx_cur_scope->__pyx_t_0;
        __pyx_cur_scope->__pyx_t_0 = 0;
        __Pyx_XGOTREF(__pyx_t_6);
        __pyx_t_7 = __pyx_cur_scope->__pyx_t_1;
        __pyx_cur_scope->__pyx_t_1 = 0;
        __Pyx_XGOTREF(__pyx_t_7);
        __pyx_t_8 = __pyx_cur_scope->__pyx_t_2;
        __pyx_cur_scope->__pyx_t_2 = 0;
        __Pyx_XGOTREF(__pyx_t_8);
        if (unlikely(!__pyx_sent_value)) __PYX_ERR(33, 501, __pyx_L4_error)
        __pyx_t_1 = __pyx_sent_value; __Pyx_INCREF(__pyx_t_1);
      } else {
        __pyx_t_1 = NULL;
        if (__Pyx_PyGen_FetchStopIterationValue(&__pyx_t_1) < 0) __PYX_ERR(33, 501, __pyx_L4_error)
        __Pyx_GOTREF(__pyx_t_1);
      }
      if (!(likely(PyTuple_CheckExact(__pyx_t_1))||((__pyx_t_1) == Py_None)||(PyErr_Format(PyExc_TypeError, "Expected %.16s, got %.200s", "tuple", Py_TYPE(__pyx_t_1)->tp_name), 0))) __PYX_ERR(33, 501, __pyx_L4_error)

      /* "src/python/grpcio/grpc/_cython/_cygrpc/aio/call.pyx.pxi":500
 * 
 *             # Receives initial metadata.
 *             self._set_initial_metadata(             # <<<<<<<<<<<<<<
 *                 await _receive_initial_metadata(self, self._loop)
 *             )
 */
      ((struct __pyx_vtabstruct_4grpc_7_cython_6cygrpc__AioCall *)__pyx_cur_scope->__pyx_v_self->__pyx_vtab)->_set_initial_metadata(__pyx_cur_scope->__pyx_v_self, ((PyObject*)__pyx_t_1)); if (unlikely(PyErr_Occurred())) __PYX_ERR(33, 500, __pyx_L4_error)
      __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;

      /* "src/python/grpcio/grpc/_cython/_cygrpc/aio/call.pyx.pxi":490
 *         status_task = self._loop.create_task(self._handle_status_once_received())
 * 
 *         try:             # <<<<<<<<<<<<<<
 *             # Sends out initial_metadata ASAP.
 *             await _send_initial_metadata(self,
 */
    }
    __Pyx_XDECREF(__pyx_t_6); __pyx_t_6 = 0;
    __Pyx_XDECREF(__pyx_t_7); __pyx_t_7 = 0;
    __Pyx_XDECREF(__pyx_t_8); __pyx_t_8 = 0;
    goto __pyx_L9_try_end;
    __pyx_L4_error:;
    __Pyx_XDECREF(__pyx_t_1); __pyx_t_1 = 0;
    __Pyx_XDECREF(__pyx_t_2); __pyx_t_2 = 0;
    __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0;
    __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0;
    __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0;

    /* "src/python/grpcio/grpc/_cython/_cygrpc/aio/call.pyx.pxi":503
 *                 await _receive_initial_metadata(self, self._loop)
 *             )
 *         except ExecuteBatchError as batch_error:             # <<<<<<<<<<<<<<
 *             # Core should explain why this batch failed
 *             await status_task
 */
    __Pyx_ErrFetch(&__pyx_t_1, &__pyx_t_2, &__pyx_t_3);
    __Pyx_GetModuleGlobalName(__pyx_t_5, __pyx_n_s_ExecuteBatchError); if (unlikely(!__pyx_t_5)) __PYX_ERR(33, 503, __pyx_L6_except_error)
    __Pyx_GOTREF(__pyx_t_5);
    __pyx_t_9 = __Pyx_PyErr_GivenExceptionMatches(__pyx_t_1, __pyx_t_5);
    __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
    __Pyx_ErrRestore(__pyx_t_1, __pyx_t_2, __pyx_t_3);
    __pyx_t_1 = 0; __pyx_t_2 = 0; __pyx_t_3 = 0;
    if (__pyx_t_9) {
      __Pyx_AddTraceback("grpc._cython.cygrpc._AioCall.initiate_stream_stream", __pyx_clineno, __pyx_lineno, __pyx_filename);
      if (__Pyx_GetException(&__pyx_t_3, &__pyx_t_2, &__pyx_t_1) < 0) __PYX_ERR(33, 503, __pyx_L6_except_error)
      __Pyx_GOTREF(__pyx_t_3);
      __Pyx_GOTREF(__pyx_t_2);
      __Pyx_GOTREF(__pyx_t_1);
      __Pyx_INCREF(__pyx_t_2);
      __Pyx_GIVEREF(__pyx_t_2);
      __pyx_cur_scope->__pyx_v_batch_error = __pyx_t_2;

      /* "src/python/grpcio/grpc/_cython/_cygrpc/aio/call.pyx.pxi":505
 *         except ExecuteBatchError as batch_error:
 *             # Core should explain why this batch failed
 *             await status_task             # <<<<<<<<<<<<<<
 * 
 *             # Allow upper layer to proceed only if the status is set
 */
      __pyx_r = __Pyx_Coroutine_Yield_From(__pyx_generator, __pyx_cur_scope->__pyx_v_status_task);
      __Pyx_XGOTREF(__pyx_r);
      if (likely(__pyx_r)) {
        __Pyx_XGIVEREF(__pyx_t_1);
        __pyx_cur_scope->__pyx_t_0 = __pyx_t_1;
        __Pyx_XGIVEREF(__pyx_t_2);
        __pyx_cur_scope->__pyx_t_1 = __pyx_t_2;
        __Pyx_XGIVEREF(__pyx_t_3);
        __pyx_cur_scope->__pyx_t_2 = __pyx_t_3;
        __Pyx_XGIVEREF(__pyx_t_6);
        __pyx_cur_scope->__pyx_t_3 = __pyx_t_6;
        __Pyx_XGIVEREF(__pyx_t_7);
        __pyx_cur_scope->__pyx_t_4 = __pyx_t_7;
        __Pyx_XGIVEREF(__pyx_t_8);
        __pyx_cur_scope->__pyx_t_5 = __pyx_t_8;
        __Pyx_XGIVEREF(__pyx_r);
        __Pyx_RefNannyFinishContext();
        __Pyx_Coroutine_SwapException(__pyx_generator);
        /* return from generator, awaiting value */
        __pyx_generator->resume_label = 3;
        return __pyx_r;
        __pyx_L14_resume_from_await:;
        __pyx_t_1 = __pyx_cur_scope->__pyx_t_0;
        __pyx_cur_scope->__pyx_t_0 = 0;
        __Pyx_XGOTREF(__pyx_t_1);
        __pyx_t_2 = __pyx_cur_scope->__pyx_t_1;
        __pyx_cur_scope->__pyx_t_1 = 0;
        __Pyx_XGOTREF(__pyx_t_2);
        __pyx_t_3 = __pyx_cur_scope->__pyx_t_2;
        __pyx_cur_scope->__pyx_t_2 = 0;
        __Pyx_XGOTREF(__pyx_t_3);
        __pyx_t_6 = __pyx_cur_scope->__pyx_t_3;
        __pyx_cur_scope->__pyx_t_3 = 0;
        __Pyx_XGOTREF(__pyx_t_6);
        __pyx_t_7 = __pyx_cur_scope->__pyx_t_4;
        __pyx_cur_scope->__pyx_t_4 = 0;
        __Pyx_XGOTREF(__pyx_t_7);
        __pyx_t_8 = __pyx_cur_scope->__pyx_t_5;
        __pyx_cur_scope->__pyx_t_5 = 0;
        __Pyx_XGOTREF(__pyx_t_8);
        if (unlikely(!__pyx_sent_value)) __PYX_ERR(33, 505, __pyx_L6_except_error)
      } else {
        PyObject* exc_type = __Pyx_PyErr_Occurred();
        if (exc_type) {
          if (likely(exc_type == PyExc_StopIteration || (exc_type != PyExc_GeneratorExit && __Pyx_PyErr_GivenExceptionMatches(exc_type, PyExc_StopIteration)))) PyErr_Clear();
          else __PYX_ERR(33, 505, __pyx_L6_except_error)
        }
      }

      /* "src/python/grpcio/grpc/_cython/_cygrpc/aio/call.pyx.pxi":508
 * 
 *             # Allow upper layer to proceed only if the status is set
 *             metadata_sent_observer()             # <<<<<<<<<<<<<<
 */
      __Pyx_INCREF(__pyx_cur_scope->__pyx_v_metadata_sent_observer);
      __pyx_t_4 = __pyx_cur_scope->__pyx_v_metadata_sent_observer; __pyx_t_10 = NULL;
      if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_4))) {
        __pyx_t_10 = PyMethod_GET_SELF(__pyx_t_4);
        if (likely(__pyx_t_10)) {
          PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_4);
          __Pyx_INCREF(__pyx_t_10);
          __Pyx_INCREF(function);
          __Pyx_DECREF_SET(__pyx_t_4, function);
        }
      }
      __pyx_t_5 = (__pyx_t_10) ? __Pyx_PyObject_CallOneArg(__pyx_t_4, __pyx_t_10) : __Pyx_PyObject_CallNoArg(__pyx_t_4);
      __Pyx_XDECREF(__pyx_t_10); __pyx_t_10 = 0;
      if (unlikely(!__pyx_t_5)) __PYX_ERR(33, 508, __pyx_L6_except_error)
      __Pyx_GOTREF(__pyx_t_5);
      __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
      __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
      __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0;
      __Pyx_XDECREF(__pyx_t_2); __pyx_t_2 = 0;
      __Pyx_XDECREF(__pyx_t_1); __pyx_t_1 = 0;
      goto __pyx_L5_exception_handled;
    }
    goto __pyx_L6_except_error;
    __pyx_L6_except_error:;

    /* "src/python/grpcio/grpc/_cython/_cygrpc/aio/call.pyx.pxi":490
 *         status_task = self._loop.create_task(self._handle_status_once_received())
 * 
 *         try:             # <<<<<<<<<<<<<<
 *             # Sends out initial_metadata ASAP.
 *             await _send_initial_metadata(self,
 */
    __Pyx_XGIVEREF(__pyx_t_6);
    __Pyx_XGIVEREF(__pyx_t_7);
    __Pyx_XGIVEREF(__pyx_t_8);
    __Pyx_ExceptionReset(__pyx_t_6, __pyx_t_7, __pyx_t_8);
    goto __pyx_L1_error;
    __pyx_L5_exception_handled:;
    __Pyx_XGIVEREF(__pyx_t_6);
    __Pyx_XGIVEREF(__pyx_t_7);
    __Pyx_XGIVEREF(__pyx_t_8);
    __Pyx_ExceptionReset(__pyx_t_6, __pyx_t_7, __pyx_t_8);
    __pyx_L9_try_end:;
  }
  CYTHON_MAYBE_UNUSED_VAR(__pyx_cur_scope);

  /* "src/python/grpcio/grpc/_cython/_cygrpc/aio/call.pyx.pxi":477
 *             return None
 * 
 *     async def initiate_stream_stream(self,             # <<<<<<<<<<<<<<
 *                            tuple outbound_initial_metadata,
 *                            object metadata_sent_observer):
 */

  /* function exit code */
  PyErr_SetNone(PyExc_StopIteration);
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_XDECREF(__pyx_t_3);
  __Pyx_XDECREF(__pyx_t_4);
  __Pyx_XDECREF(__pyx_t_5);
  __Pyx_XDECREF(__pyx_t_10);
  __Pyx_AddTraceback("initiate_stream_stream", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_L0:;
  __Pyx_XDECREF(__pyx_r); __pyx_r = 0;
  #if !CYTHON_USE_EXC_INFO_STACK
  __Pyx_Coroutine_ResetAndClearException(__pyx_generator);
  #endif
  __pyx_generator->resume_label = -1;
  __Pyx_Coroutine_clear((PyObject*)__pyx_generator);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "src/python/grpcio/grpc/_cython/_cygrpc/aio/call.pxd.pxi":18
 * cdef class _AioCall(GrpcCallWrapper):
 *     cdef:
 *         readonly AioChannel _channel             # <<<<<<<<<<<<<<
 *         list _references
 *         object _deadline
 */

/* Python wrapper */
static PyObject *__pyx_pw_4grpc_7_cython_6cygrpc_8_AioCall_8_channel_1__get__(PyObject *__pyx_v_self); /*proto*/
static PyObject *__pyx_pw_4grpc_7_cython_6cygrpc_8_AioCall_8_channel_1__get__(PyObject *__pyx_v_self) {
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__get__ (wrapper)", 0);
  __pyx_r = __pyx_pf_4grpc_7_cython_6cygrpc_8_AioCall_8_channel___get__(((struct __pyx_obj_4grpc_7_cython_6cygrpc__AioCall *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_4grpc_7_cython_6cygrpc_8_AioCall_8_channel___get__(struct __pyx_obj_4grpc_7_cython_6cygrpc__AioCall *__pyx_v_self) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__get__", 0);
  __Pyx_XDECREF(__pyx_r);
  __Pyx_INCREF(((PyObject *)__pyx_v_self->_channel));
  __pyx_r = ((PyObject *)__pyx_v_self->_channel);
  goto __pyx_L0;

  /* function exit code */
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "src/python/grpcio/grpc/_cython/_cygrpc/aio/call.pxd.pxi":38
 *         # tasks that are asking for one of the field when they are not yet
 *         # available.
 *         readonly AioRpcStatus _status             # <<<<<<<<<<<<<<
 *         readonly tuple _initial_metadata
 *         list _waiters_status
 */

/* Python wrapper */
static PyObject *__pyx_pw_4grpc_7_cython_6cygrpc_8_AioCall_7_status_1__get__(PyObject *__pyx_v_self); /*proto*/
static PyObject *__pyx_pw_4grpc_7_cython_6cygrpc_8_AioCall_7_status_1__get__(PyObject *__pyx_v_self) {
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__get__ (wrapper)", 0);
  __pyx_r = __pyx_pf_4grpc_7_cython_6cygrpc_8_AioCall_7_status___get__(((struct __pyx_obj_4grpc_7_cython_6cygrpc__AioCall *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_4grpc_7_cython_6cygrpc_8_AioCall_7_status___get__(struct __pyx_obj_4grpc_7_cython_6cygrpc__AioCall *__pyx_v_self) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__get__", 0);
  __Pyx_XDECREF(__pyx_r);
  __Pyx_INCREF(((PyObject *)__pyx_v_self->_status));
  __pyx_r = ((PyObject *)__pyx_v_self->_status);
  goto __pyx_L0;

  /* function exit code */
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "src/python/grpcio/grpc/_cython/_cygrpc/aio/call.pxd.pxi":39
 *         # available.
 *         readonly AioRpcStatus _status
 *         readonly tuple _initial_metadata             # <<<<<<<<<<<<<<
 *         list _waiters_status
 *         list _waiters_initial_metadata
 */

/* Python wrapper */
static PyObject *__pyx_pw_4grpc_7_cython_6cygrpc_8_AioCall_17_initial_metadata_1__get__(PyObject *__pyx_v_self); /*proto*/
static PyObject *__pyx_pw_4grpc_7_cython_6cygrpc_8_AioCall_17_initial_metadata_1__get__(PyObject *__pyx_v_self) {
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__get__ (wrapper)", 0);
  __pyx_r = __pyx_pf_4grpc_7_cython_6cygrpc_8_AioCall_17_initial_metadata___get__(((struct __pyx_obj_4grpc_7_cython_6cygrpc__AioCall *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_4grpc_7_cython_6cygrpc_8_AioCall_17_initial_metadata___get__(struct __pyx_obj_4grpc_7_cython_6cygrpc__AioCall *__pyx_v_self) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__get__", 0);
  __Pyx_XDECREF(__pyx_r);
  __Pyx_INCREF(__pyx_v_self->_initial_metadata);
  __pyx_r = __pyx_v_self->_initial_metadata;
  goto __pyx_L0;

  /* function exit code */
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "(tree fragment)":1
 * def __reduce_cython__(self):             # <<<<<<<<<<<<<<
 *     raise TypeError("no default __reduce__ due to non-trivial __cinit__")
 * def __setstate_cython__(self, __pyx_state):
 */

/* Python wrapper */
static PyObject *__pyx_pw_4grpc_7_cython_6cygrpc_8_AioCall_55__reduce_cython__(PyObject *__pyx_v_self, CYTHON_UNUSED PyObject *unused); /*proto*/
static PyObject *__pyx_pw_4grpc_7_cython_6cygrpc_8_AioCall_55__reduce_cython__(PyObject *__pyx_v_self, CYTHON_UNUSED PyObject *unused) {
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__reduce_cython__ (wrapper)", 0);
  __pyx_r = __pyx_pf_4grpc_7_cython_6cygrpc_8_AioCall_54__reduce_cython__(((struct __pyx_obj_4grpc_7_cython_6cygrpc__AioCall *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_4grpc_7_cython_6cygrpc_8_AioCall_54__reduce_cython__(CYTHON_UNUSED struct __pyx_obj_4grpc_7_cython_6cygrpc__AioCall *__pyx_v_self) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("__reduce_cython__", 0);

  /* "(tree fragment)":2
 * def __reduce_cython__(self):
 *     raise TypeError("no default __reduce__ due to non-trivial __cinit__")             # <<<<<<<<<<<<<<
 * def __setstate_cython__(self, __pyx_state):
 *     raise TypeError("no default __reduce__ due to non-trivial __cinit__")
 */
  __pyx_t_1 = __Pyx_PyObject_Call(__pyx_builtin_TypeError, __pyx_tuple__163, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(11, 2, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_Raise(__pyx_t_1, 0, 0, 0);
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  __PYX_ERR(11, 2, __pyx_L1_error)

  /* "(tree fragment)":1
 * def __reduce_cython__(self):             # <<<<<<<<<<<<<<
 *     raise TypeError("no default __reduce__ due to non-trivial __cinit__")
 * def __setstate_cython__(self, __pyx_state):
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_AddTraceback("grpc._cython.cygrpc._AioCall.__reduce_cython__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "(tree fragment)":3
 * def __reduce_cython__(self):
 *     raise TypeError("no default __reduce__ due to non-trivial __cinit__")
 * def __setstate_cython__(self, __pyx_state):             # <<<<<<<<<<<<<<
 *     raise TypeError("no default __reduce__ due to non-trivial __cinit__")
 */

/* Python wrapper */
static PyObject *__pyx_pw_4grpc_7_cython_6cygrpc_8_AioCall_57__setstate_cython__(PyObject *__pyx_v_self, PyObject *__pyx_v___pyx_state); /*proto*/
static PyObject *__pyx_pw_4grpc_7_cython_6cygrpc_8_AioCall_57__setstate_cython__(PyObject *__pyx_v_self, PyObject *__pyx_v___pyx_state) {
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__setstate_cython__ (wrapper)", 0);
  __pyx_r = __pyx_pf_4grpc_7_cython_6cygrpc_8_AioCall_56__setstate_cython__(((struct __pyx_obj_4grpc_7_cython_6cygrpc__AioCall *)__pyx_v_self), ((PyObject *)__pyx_v___pyx_state));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_4grpc_7_cython_6cygrpc_8_AioCall_56__setstate_cython__(CYTHON_UNUSED struct __pyx_obj_4grpc_7_cython_6cygrpc__AioCall *__pyx_v_self, CYTHON_UNUSED PyObject *__pyx_v___pyx_state) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("__setstate_cython__", 0);

  /* "(tree fragment)":4
 *     raise TypeError("no default __reduce__ due to non-trivial __cinit__")
 * def __setstate_cython__(self, __pyx_state):
 *     raise TypeError("no default __reduce__ due to non-trivial __cinit__")             # <<<<<<<<<<<<<<
 */
  __pyx_t_1 = __Pyx_PyObject_Call(__pyx_builtin_TypeError, __pyx_tuple__164, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(11, 4, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_Raise(__pyx_t_1, 0, 0, 0);
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  __PYX_ERR(11, 4, __pyx_L1_error)

  /* "(tree fragment)":3
 * def __reduce_cython__(self):
 *     raise TypeError("no default __reduce__ due to non-trivial __cinit__")
 * def __setstate_cython__(self, __pyx_state):             # <<<<<<<<<<<<<<
 *     raise TypeError("no default __reduce__ due to non-trivial __cinit__")
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_AddTraceback("grpc._cython.cygrpc._AioCall.__setstate_cython__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "src/python/grpcio/grpc/_cython/_cygrpc/aio/channel.pyx.pxi":29
 * 
 * cdef class AioChannel:
 *     def __cinit__(self, bytes target, tuple options, ChannelCredentials credentials, object loop):             # <<<<<<<<<<<<<<
 *         init_grpc_aio()
 *         if options is None:
 */

/* Python wrapper */
static int __pyx_pw_4grpc_7_cython_6cygrpc_10AioChannel_1__cinit__(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
static int __pyx_pw_4grpc_7_cython_6cygrpc_10AioChannel_1__cinit__(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
  PyObject *__pyx_v_target = 0;
  PyObject *__pyx_v_options = 0;
  struct __pyx_obj_4grpc_7_cython_6cygrpc_ChannelCredentials *__pyx_v_credentials = 0;
  PyObject *__pyx_v_loop = 0;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  int __pyx_r;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__cinit__ (wrapper)", 0);
  {
    static PyObject **__pyx_pyargnames[] = {&__pyx_n_s_target,&__pyx_n_s_options,&__pyx_n_s_credentials,&__pyx_n_s_loop,0};
    PyObject* values[4] = {0,0,0,0};
    if (unlikely(__pyx_kwds)) {
      Py_ssize_t kw_args;
      const Py_ssize_t pos_args = PyTuple_GET_SIZE(__pyx_args);
      switch (pos_args) {
        case  4: values[3] = PyTuple_GET_ITEM(__pyx_args, 3);
        CYTHON_FALLTHROUGH;
        case  3: values[2] = PyTuple_GET_ITEM(__pyx_args, 2);
        CYTHON_FALLTHROUGH;
        case  2: values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
        CYTHON_FALLTHROUGH;
        case  1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
        CYTHON_FALLTHROUGH;
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      kw_args = PyDict_Size(__pyx_kwds);
      switch (pos_args) {
        case  0:
        if (likely((values[0] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_target)) != 0)) kw_args--;
        else goto __pyx_L5_argtuple_error;
        CYTHON_FALLTHROUGH;
        case  1:
        if (likely((values[1] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_options)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("__cinit__", 1, 4, 4, 1); __PYX_ERR(9, 29, __pyx_L3_error)
        }
        CYTHON_FALLTHROUGH;
        case  2:
        if (likely((values[2] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_credentials)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("__cinit__", 1, 4, 4, 2); __PYX_ERR(9, 29, __pyx_L3_error)
        }
        CYTHON_FALLTHROUGH;
        case  3:
        if (likely((values[3] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_loop)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("__cinit__", 1, 4, 4, 3); __PYX_ERR(9, 29, __pyx_L3_error)
        }
      }
      if (unlikely(kw_args > 0)) {
        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "__cinit__") < 0)) __PYX_ERR(9, 29, __pyx_L3_error)
      }
    } else if (PyTuple_GET_SIZE(__pyx_args) != 4) {
      goto __pyx_L5_argtuple_error;
    } else {
      values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
      values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
      values[2] = PyTuple_GET_ITEM(__pyx_args, 2);
      values[3] = PyTuple_GET_ITEM(__pyx_args, 3);
    }
    __pyx_v_target = ((PyObject*)values[0]);
    __pyx_v_options = ((PyObject*)values[1]);
    __pyx_v_credentials = ((struct __pyx_obj_4grpc_7_cython_6cygrpc_ChannelCredentials *)values[2]);
    __pyx_v_loop = values[3];
  }
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("__cinit__", 1, 4, 4, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(9, 29, __pyx_L3_error)
  __pyx_L3_error:;
  __Pyx_AddTraceback("grpc._cython.cygrpc.AioChannel.__cinit__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return -1;
  __pyx_L4_argument_unpacking_done:;
  if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_target), (&PyBytes_Type), 1, "target", 1))) __PYX_ERR(9, 29, __pyx_L1_error)
  if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_options), (&PyTuple_Type), 1, "options", 1))) __PYX_ERR(9, 29, __pyx_L1_error)
  if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_credentials), __pyx_ptype_4grpc_7_cython_6cygrpc_ChannelCredentials, 1, "credentials", 0))) __PYX_ERR(9, 29, __pyx_L1_error)
  __pyx_r = __pyx_pf_4grpc_7_cython_6cygrpc_10AioChannel___cinit__(((struct __pyx_obj_4grpc_7_cython_6cygrpc_AioChannel *)__pyx_v_self), __pyx_v_target, __pyx_v_options, __pyx_v_credentials, __pyx_v_loop);

  /* function exit code */
  goto __pyx_L0;
  __pyx_L1_error:;
  __pyx_r = -1;
  __pyx_L0:;
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static int __pyx_pf_4grpc_7_cython_6cygrpc_10AioChannel___cinit__(struct __pyx_obj_4grpc_7_cython_6cygrpc_AioChannel *__pyx_v_self, PyObject *__pyx_v_target, PyObject *__pyx_v_options, struct __pyx_obj_4grpc_7_cython_6cygrpc_ChannelCredentials *__pyx_v_credentials, PyObject *__pyx_v_loop) {
  struct __pyx_obj_4grpc_7_cython_6cygrpc__ChannelArgs *__pyx_v_channel_args = 0;
  int __pyx_r;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  int __pyx_t_2;
  int __pyx_t_3;
  char *__pyx_t_4;
  grpc_channel_args *__pyx_t_5;
  grpc_channel_credentials *__pyx_t_6;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("__cinit__", 0);
  __Pyx_INCREF(__pyx_v_options);

  /* "src/python/grpcio/grpc/_cython/_cygrpc/aio/channel.pyx.pxi":30
 * cdef class AioChannel:
 *     def __cinit__(self, bytes target, tuple options, ChannelCredentials credentials, object loop):
 *         init_grpc_aio()             # <<<<<<<<<<<<<<
 *         if options is None:
 *             options = ()
 */
  __pyx_t_1 = __pyx_f_4grpc_7_cython_6cygrpc_init_grpc_aio(0); if (unlikely(!__pyx_t_1)) __PYX_ERR(9, 30, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;

  /* "src/python/grpcio/grpc/_cython/_cygrpc/aio/channel.pyx.pxi":31
 *     def __cinit__(self, bytes target, tuple options, ChannelCredentials credentials, object loop):
 *         init_grpc_aio()
 *         if options is None:             # <<<<<<<<<<<<<<
 *             options = ()
 *         cdef _ChannelArgs channel_args = _ChannelArgs(options)
 */
  __pyx_t_2 = (__pyx_v_options == ((PyObject*)Py_None));
  __pyx_t_3 = (__pyx_t_2 != 0);
  if (__pyx_t_3) {

    /* "src/python/grpcio/grpc/_cython/_cygrpc/aio/channel.pyx.pxi":32
 *         init_grpc_aio()
 *         if options is None:
 *             options = ()             # <<<<<<<<<<<<<<
 *         cdef _ChannelArgs channel_args = _ChannelArgs(options)
 *         self._target = target
 */
    __Pyx_INCREF(__pyx_empty_tuple);
    __Pyx_DECREF_SET(__pyx_v_options, __pyx_empty_tuple);

    /* "src/python/grpcio/grpc/_cython/_cygrpc/aio/channel.pyx.pxi":31
 *     def __cinit__(self, bytes target, tuple options, ChannelCredentials credentials, object loop):
 *         init_grpc_aio()
 *         if options is None:             # <<<<<<<<<<<<<<
 *             options = ()
 *         cdef _ChannelArgs channel_args = _ChannelArgs(options)
 */
  }

  /* "src/python/grpcio/grpc/_cython/_cygrpc/aio/channel.pyx.pxi":33
 *         if options is None:
 *             options = ()
 *         cdef _ChannelArgs channel_args = _ChannelArgs(options)             # <<<<<<<<<<<<<<
 *         self._target = target
 *         self.loop = loop
 */
  __pyx_t_1 = __Pyx_PyObject_CallOneArg(((PyObject *)__pyx_ptype_4grpc_7_cython_6cygrpc__ChannelArgs), __pyx_v_options); if (unlikely(!__pyx_t_1)) __PYX_ERR(9, 33, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_v_channel_args = ((struct __pyx_obj_4grpc_7_cython_6cygrpc__ChannelArgs *)__pyx_t_1);
  __pyx_t_1 = 0;

  /* "src/python/grpcio/grpc/_cython/_cygrpc/aio/channel.pyx.pxi":34
 *             options = ()
 *         cdef _ChannelArgs channel_args = _ChannelArgs(options)
 *         self._target = target             # <<<<<<<<<<<<<<
 *         self.loop = loop
 *         self._status = AIO_CHANNEL_STATUS_READY
 */
  __Pyx_INCREF(__pyx_v_target);
  __Pyx_GIVEREF(__pyx_v_target);
  __Pyx_GOTREF(__pyx_v_self->_target);
  __Pyx_DECREF(__pyx_v_self->_target);
  __pyx_v_self->_target = __pyx_v_target;

  /* "src/python/grpcio/grpc/_cython/_cygrpc/aio/channel.pyx.pxi":35
 *         cdef _ChannelArgs channel_args = _ChannelArgs(options)
 *         self._target = target
 *         self.loop = loop             # <<<<<<<<<<<<<<
 *         self._status = AIO_CHANNEL_STATUS_READY
 * 
 */
  __Pyx_INCREF(__pyx_v_loop);
  __Pyx_GIVEREF(__pyx_v_loop);
  __Pyx_GOTREF(__pyx_v_self->loop);
  __Pyx_DECREF(__pyx_v_self->loop);
  __pyx_v_self->loop = __pyx_v_loop;

  /* "src/python/grpcio/grpc/_cython/_cygrpc/aio/channel.pyx.pxi":36
 *         self._target = target
 *         self.loop = loop
 *         self._status = AIO_CHANNEL_STATUS_READY             # <<<<<<<<<<<<<<
 * 
 *         if credentials is None:
 */
  __pyx_v_self->_status = __pyx_e_4grpc_7_cython_6cygrpc_AIO_CHANNEL_STATUS_READY;

  /* "src/python/grpcio/grpc/_cython/_cygrpc/aio/channel.pyx.pxi":38
 *         self._status = AIO_CHANNEL_STATUS_READY
 * 
 *         if credentials is None:             # <<<<<<<<<<<<<<
 *             self._is_secure = False
 *             self.channel = grpc_insecure_channel_create(
 */
  __pyx_t_3 = (((PyObject *)__pyx_v_credentials) == Py_None);
  __pyx_t_2 = (__pyx_t_3 != 0);
  if (__pyx_t_2) {

    /* "src/python/grpcio/grpc/_cython/_cygrpc/aio/channel.pyx.pxi":39
 * 
 *         if credentials is None:
 *             self._is_secure = False             # <<<<<<<<<<<<<<
 *             self.channel = grpc_insecure_channel_create(
 *                 <char *>target,
 */
    __pyx_v_self->_is_secure = 0;

    /* "src/python/grpcio/grpc/_cython/_cygrpc/aio/channel.pyx.pxi":41
 *             self._is_secure = False
 *             self.channel = grpc_insecure_channel_create(
 *                 <char *>target,             # <<<<<<<<<<<<<<
 *                 channel_args.c_args(),
 *                 NULL)
 */
    if (unlikely(__pyx_v_target == Py_None)) {
      PyErr_SetString(PyExc_TypeError, "expected bytes, NoneType found");
      __PYX_ERR(9, 41, __pyx_L1_error)
    }
    __pyx_t_4 = __Pyx_PyBytes_AsWritableString(__pyx_v_target); if (unlikely((!__pyx_t_4) && PyErr_Occurred())) __PYX_ERR(9, 41, __pyx_L1_error)

    /* "src/python/grpcio/grpc/_cython/_cygrpc/aio/channel.pyx.pxi":42
 *             self.channel = grpc_insecure_channel_create(
 *                 <char *>target,
 *                 channel_args.c_args(),             # <<<<<<<<<<<<<<
 *                 NULL)
 *         else:
 */
    __pyx_t_5 = ((struct __pyx_vtabstruct_4grpc_7_cython_6cygrpc__ChannelArgs *)__pyx_v_channel_args->__pyx_vtab)->c_args(__pyx_v_channel_args); if (unlikely(PyErr_Occurred())) __PYX_ERR(9, 42, __pyx_L1_error)

    /* "src/python/grpcio/grpc/_cython/_cygrpc/aio/channel.pyx.pxi":40
 *         if credentials is None:
 *             self._is_secure = False
 *             self.channel = grpc_insecure_channel_create(             # <<<<<<<<<<<<<<
 *                 <char *>target,
 *                 channel_args.c_args(),
 */
    __pyx_v_self->channel = grpc_insecure_channel_create(((char *)__pyx_t_4), __pyx_t_5, NULL);

    /* "src/python/grpcio/grpc/_cython/_cygrpc/aio/channel.pyx.pxi":38
 *         self._status = AIO_CHANNEL_STATUS_READY
 * 
 *         if credentials is None:             # <<<<<<<<<<<<<<
 *             self._is_secure = False
 *             self.channel = grpc_insecure_channel_create(
 */
    goto __pyx_L4;
  }

  /* "src/python/grpcio/grpc/_cython/_cygrpc/aio/channel.pyx.pxi":45
 *                 NULL)
 *         else:
 *             self._is_secure = True             # <<<<<<<<<<<<<<
 *             self.channel = grpc_secure_channel_create(
 *                 <grpc_channel_credentials *> credentials.c(),
 */
  /*else*/ {
    __pyx_v_self->_is_secure = 1;

    /* "src/python/grpcio/grpc/_cython/_cygrpc/aio/channel.pyx.pxi":47
 *             self._is_secure = True
 *             self.channel = grpc_secure_channel_create(
 *                 <grpc_channel_credentials *> credentials.c(),             # <<<<<<<<<<<<<<
 *                 <char *>target,
 *                 channel_args.c_args(),
 */
    __pyx_t_6 = ((struct __pyx_vtabstruct_4grpc_7_cython_6cygrpc_ChannelCredentials *)__pyx_v_credentials->__pyx_vtab)->c(__pyx_v_credentials); if (unlikely(PyErr_Occurred())) __PYX_ERR(9, 47, __pyx_L1_error)

    /* "src/python/grpcio/grpc/_cython/_cygrpc/aio/channel.pyx.pxi":48
 *             self.channel = grpc_secure_channel_create(
 *                 <grpc_channel_credentials *> credentials.c(),
 *                 <char *>target,             # <<<<<<<<<<<<<<
 *                 channel_args.c_args(),
 *                 NULL)
 */
    if (unlikely(__pyx_v_target == Py_None)) {
      PyErr_SetString(PyExc_TypeError, "expected bytes, NoneType found");
      __PYX_ERR(9, 48, __pyx_L1_error)
    }
    __pyx_t_4 = __Pyx_PyBytes_AsWritableString(__pyx_v_target); if (unlikely((!__pyx_t_4) && PyErr_Occurred())) __PYX_ERR(9, 48, __pyx_L1_error)

    /* "src/python/grpcio/grpc/_cython/_cygrpc/aio/channel.pyx.pxi":49
 *                 <grpc_channel_credentials *> credentials.c(),
 *                 <char *>target,
 *                 channel_args.c_args(),             # <<<<<<<<<<<<<<
 *                 NULL)
 * 
 */
    __pyx_t_5 = ((struct __pyx_vtabstruct_4grpc_7_cython_6cygrpc__ChannelArgs *)__pyx_v_channel_args->__pyx_vtab)->c_args(__pyx_v_channel_args); if (unlikely(PyErr_Occurred())) __PYX_ERR(9, 49, __pyx_L1_error)

    /* "src/python/grpcio/grpc/_cython/_cygrpc/aio/channel.pyx.pxi":46
 *         else:
 *             self._is_secure = True
 *             self.channel = grpc_secure_channel_create(             # <<<<<<<<<<<<<<
 *                 <grpc_channel_credentials *> credentials.c(),
 *                 <char *>target,
 */
    __pyx_v_self->channel = grpc_secure_channel_create(((grpc_channel_credentials *)__pyx_t_6), ((char *)__pyx_t_4), __pyx_t_5, NULL);
  }
  __pyx_L4:;

  /* "src/python/grpcio/grpc/_cython/_cygrpc/aio/channel.pyx.pxi":29
 * 
 * cdef class AioChannel:
 *     def __cinit__(self, bytes target, tuple options, ChannelCredentials credentials, object loop):             # <<<<<<<<<<<<<<
 *         init_grpc_aio()
 *         if options is None:
 */

  /* function exit code */
  __pyx_r = 0;
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_AddTraceback("grpc._cython.cygrpc.AioChannel.__cinit__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = -1;
  __pyx_L0:;
  __Pyx_XDECREF((PyObject *)__pyx_v_channel_args);
  __Pyx_XDECREF(__pyx_v_options);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "src/python/grpcio/grpc/_cython/_cygrpc/aio/channel.pyx.pxi":52
 *                 NULL)
 * 
 *     def __dealloc__(self):             # <<<<<<<<<<<<<<
 *         shutdown_grpc_aio()
 * 
 */

/* Python wrapper */
static void __pyx_pw_4grpc_7_cython_6cygrpc_10AioChannel_3__dealloc__(PyObject *__pyx_v_self); /*proto*/
static void __pyx_pw_4grpc_7_cython_6cygrpc_10AioChannel_3__dealloc__(PyObject *__pyx_v_self) {
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__dealloc__ (wrapper)", 0);
  __pyx_pf_4grpc_7_cython_6cygrpc_10AioChannel_2__dealloc__(((struct __pyx_obj_4grpc_7_cython_6cygrpc_AioChannel *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
}

static void __pyx_pf_4grpc_7_cython_6cygrpc_10AioChannel_2__dealloc__(CYTHON_UNUSED struct __pyx_obj_4grpc_7_cython_6cygrpc_AioChannel *__pyx_v_self) {
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("__dealloc__", 0);

  /* "src/python/grpcio/grpc/_cython/_cygrpc/aio/channel.pyx.pxi":53
 * 
 *     def __dealloc__(self):
 *         shutdown_grpc_aio()             # <<<<<<<<<<<<<<
 * 
 *     def __repr__(self):
 */
  __pyx_t_1 = __pyx_f_4grpc_7_cython_6cygrpc_shutdown_grpc_aio(0); if (unlikely(!__pyx_t_1)) __PYX_ERR(9, 53, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;

  /* "src/python/grpcio/grpc/_cython/_cygrpc/aio/channel.pyx.pxi":52
 *                 NULL)
 * 
 *     def __dealloc__(self):             # <<<<<<<<<<<<<<
 *         shutdown_grpc_aio()
 * 
 */

  /* function exit code */
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_WriteUnraisable("grpc._cython.cygrpc.AioChannel.__dealloc__", __pyx_clineno, __pyx_lineno, __pyx_filename, 1, 0);
  __pyx_L0:;
  __Pyx_RefNannyFinishContext();
}

/* "src/python/grpcio/grpc/_cython/_cygrpc/aio/channel.pyx.pxi":55
 *         shutdown_grpc_aio()
 * 
 *     def __repr__(self):             # <<<<<<<<<<<<<<
 *         class_name = self.__class__.__name__
 *         id_ = id(self)
 */

/* Python wrapper */
static PyObject *__pyx_pw_4grpc_7_cython_6cygrpc_10AioChannel_5__repr__(PyObject *__pyx_v_self); /*proto*/
static PyObject *__pyx_pw_4grpc_7_cython_6cygrpc_10AioChannel_5__repr__(PyObject *__pyx_v_self) {
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__repr__ (wrapper)", 0);
  __pyx_r = __pyx_pf_4grpc_7_cython_6cygrpc_10AioChannel_4__repr__(((struct __pyx_obj_4grpc_7_cython_6cygrpc_AioChannel *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_4grpc_7_cython_6cygrpc_10AioChannel_4__repr__(struct __pyx_obj_4grpc_7_cython_6cygrpc_AioChannel *__pyx_v_self) {
  PyObject *__pyx_v_class_name = NULL;
  PyObject *__pyx_v_id_ = NULL;
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  PyObject *__pyx_t_2 = NULL;
  Py_ssize_t __pyx_t_3;
  Py_UCS4 __pyx_t_4;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("__repr__", 0);

  /* "src/python/grpcio/grpc/_cython/_cygrpc/aio/channel.pyx.pxi":56
 * 
 *     def __repr__(self):
 *         class_name = self.__class__.__name__             # <<<<<<<<<<<<<<
 *         id_ = id(self)
 *         return f"<{class_name} {id_}>"
 */
  __pyx_t_1 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_class); if (unlikely(!__pyx_t_1)) __PYX_ERR(9, 56, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_t_1, __pyx_n_s_name_2); if (unlikely(!__pyx_t_2)) __PYX_ERR(9, 56, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  __pyx_v_class_name = __pyx_t_2;
  __pyx_t_2 = 0;

  /* "src/python/grpcio/grpc/_cython/_cygrpc/aio/channel.pyx.pxi":57
 *     def __repr__(self):
 *         class_name = self.__class__.__name__
 *         id_ = id(self)             # <<<<<<<<<<<<<<
 *         return f"<{class_name} {id_}>"
 * 
 */
  __pyx_t_2 = __Pyx_PyObject_CallOneArg(__pyx_builtin_id, ((PyObject *)__pyx_v_self)); if (unlikely(!__pyx_t_2)) __PYX_ERR(9, 57, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __pyx_v_id_ = __pyx_t_2;
  __pyx_t_2 = 0;

  /* "src/python/grpcio/grpc/_cython/_cygrpc/aio/channel.pyx.pxi":58
 *         class_name = self.__class__.__name__
 *         id_ = id(self)
 *         return f"<{class_name} {id_}>"             # <<<<<<<<<<<<<<
 * 
 *     def check_connectivity_state(self, bint try_to_connect):
 */
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_2 = PyTuple_New(5); if (unlikely(!__pyx_t_2)) __PYX_ERR(9, 58, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __pyx_t_3 = 0;
  __pyx_t_4 = 127;
  __Pyx_INCREF(__pyx_kp_u__165);
  __pyx_t_3 += 1;
  __Pyx_GIVEREF(__pyx_kp_u__165);
  PyTuple_SET_ITEM(__pyx_t_2, 0, __pyx_kp_u__165);
  __pyx_t_1 = __Pyx_PyObject_FormatSimple(__pyx_v_class_name, __pyx_empty_unicode); if (unlikely(!__pyx_t_1)) __PYX_ERR(9, 58, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_t_4 = (__Pyx_PyUnicode_MAX_CHAR_VALUE(__pyx_t_1) > __pyx_t_4) ? __Pyx_PyUnicode_MAX_CHAR_VALUE(__pyx_t_1) : __pyx_t_4;
  __pyx_t_3 += __Pyx_PyUnicode_GET_LENGTH(__pyx_t_1);
  __Pyx_GIVEREF(__pyx_t_1);
  PyTuple_SET_ITEM(__pyx_t_2, 1, __pyx_t_1);
  __pyx_t_1 = 0;
  __Pyx_INCREF(__pyx_kp_u__166);
  __pyx_t_3 += 1;
  __Pyx_GIVEREF(__pyx_kp_u__166);
  PyTuple_SET_ITEM(__pyx_t_2, 2, __pyx_kp_u__166);
  __pyx_t_1 = __Pyx_PyObject_FormatSimple(__pyx_v_id_, __pyx_empty_unicode); if (unlikely(!__pyx_t_1)) __PYX_ERR(9, 58, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_t_4 = (__Pyx_PyUnicode_MAX_CHAR_VALUE(__pyx_t_1) > __pyx_t_4) ? __Pyx_PyUnicode_MAX_CHAR_VALUE(__pyx_t_1) : __pyx_t_4;
  __pyx_t_3 += __Pyx_PyUnicode_GET_LENGTH(__pyx_t_1);
  __Pyx_GIVEREF(__pyx_t_1);
  PyTuple_SET_ITEM(__pyx_t_2, 3, __pyx_t_1);
  __pyx_t_1 = 0;
  __Pyx_INCREF(__pyx_kp_u__167);
  __pyx_t_3 += 1;
  __Pyx_GIVEREF(__pyx_kp_u__167);
  PyTuple_SET_ITEM(__pyx_t_2, 4, __pyx_kp_u__167);
  __pyx_t_1 = __Pyx_PyUnicode_Join(__pyx_t_2, 5, __pyx_t_3, __pyx_t_4); if (unlikely(!__pyx_t_1)) __PYX_ERR(9, 58, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  __pyx_r = __pyx_t_1;
  __pyx_t_1 = 0;
  goto __pyx_L0;

  /* "src/python/grpcio/grpc/_cython/_cygrpc/aio/channel.pyx.pxi":55
 *         shutdown_grpc_aio()
 * 
 *     def __repr__(self):             # <<<<<<<<<<<<<<
 *         class_name = self.__class__.__name__
 *         id_ = id(self)
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_AddTraceback("grpc._cython.cygrpc.AioChannel.__repr__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XDECREF(__pyx_v_class_name);
  __Pyx_XDECREF(__pyx_v_id_);
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "src/python/grpcio/grpc/_cython/_cygrpc/aio/channel.pyx.pxi":60
 *         return f"<{class_name} {id_}>"
 * 
 *     def check_connectivity_state(self, bint try_to_connect):             # <<<<<<<<<<<<<<
 *         """A Cython wrapper for Core's check connectivity state API."""
 *         if self._status == AIO_CHANNEL_STATUS_DESTROYED:
 */

/* Python wrapper */
static PyObject *__pyx_pw_4grpc_7_cython_6cygrpc_10AioChannel_7check_connectivity_state(PyObject *__pyx_v_self, PyObject *__pyx_arg_try_to_connect); /*proto*/
static char __pyx_doc_4grpc_7_cython_6cygrpc_10AioChannel_6check_connectivity_state[] = "A Cython wrapper for Core's check connectivity state API.";
static PyObject *__pyx_pw_4grpc_7_cython_6cygrpc_10AioChannel_7check_connectivity_state(PyObject *__pyx_v_self, PyObject *__pyx_arg_try_to_connect) {
  int __pyx_v_try_to_connect;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("check_connectivity_state (wrapper)", 0);
  assert(__pyx_arg_try_to_connect); {
    __pyx_v_try_to_connect = __Pyx_PyObject_IsTrue(__pyx_arg_try_to_connect); if (unlikely((__pyx_v_try_to_connect == (int)-1) && PyErr_Occurred())) __PYX_ERR(9, 60, __pyx_L3_error)
  }
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L3_error:;
  __Pyx_AddTraceback("grpc._cython.cygrpc.AioChannel.check_connectivity_state", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  __pyx_r = __pyx_pf_4grpc_7_cython_6cygrpc_10AioChannel_6check_connectivity_state(((struct __pyx_obj_4grpc_7_cython_6cygrpc_AioChannel *)__pyx_v_self), ((int)__pyx_v_try_to_connect));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_4grpc_7_cython_6cygrpc_10AioChannel_6check_connectivity_state(struct __pyx_obj_4grpc_7_cython_6cygrpc_AioChannel *__pyx_v_self, int __pyx_v_try_to_connect) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  int __pyx_t_1;
  PyObject *__pyx_t_2 = NULL;
  PyObject *__pyx_t_3 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("check_connectivity_state", 0);

  /* "src/python/grpcio/grpc/_cython/_cygrpc/aio/channel.pyx.pxi":62
 *     def check_connectivity_state(self, bint try_to_connect):
 *         """A Cython wrapper for Core's check connectivity state API."""
 *         if self._status == AIO_CHANNEL_STATUS_DESTROYED:             # <<<<<<<<<<<<<<
 *             return ConnectivityState.shutdown
 *         else:
 */
  __pyx_t_1 = ((__pyx_v_self->_status == __pyx_e_4grpc_7_cython_6cygrpc_AIO_CHANNEL_STATUS_DESTROYED) != 0);
  if (__pyx_t_1) {

    /* "src/python/grpcio/grpc/_cython/_cygrpc/aio/channel.pyx.pxi":63
 *         """A Cython wrapper for Core's check connectivity state API."""
 *         if self._status == AIO_CHANNEL_STATUS_DESTROYED:
 *             return ConnectivityState.shutdown             # <<<<<<<<<<<<<<
 *         else:
 *             return grpc_channel_check_connectivity_state(
 */
    __Pyx_XDECREF(__pyx_r);
    __Pyx_GetModuleGlobalName(__pyx_t_2, __pyx_n_s_ConnectivityState); if (unlikely(!__pyx_t_2)) __PYX_ERR(9, 63, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_2);
    __pyx_t_3 = __Pyx_PyObject_GetAttrStr(__pyx_t_2, __pyx_n_s_shutdown); if (unlikely(!__pyx_t_3)) __PYX_ERR(9, 63, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_3);
    __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
    __pyx_r = __pyx_t_3;
    __pyx_t_3 = 0;
    goto __pyx_L0;

    /* "src/python/grpcio/grpc/_cython/_cygrpc/aio/channel.pyx.pxi":62
 *     def check_connectivity_state(self, bint try_to_connect):
 *         """A Cython wrapper for Core's check connectivity state API."""
 *         if self._status == AIO_CHANNEL_STATUS_DESTROYED:             # <<<<<<<<<<<<<<
 *             return ConnectivityState.shutdown
 *         else:
 */
  }

  /* "src/python/grpcio/grpc/_cython/_cygrpc/aio/channel.pyx.pxi":65
 *             return ConnectivityState.shutdown
 *         else:
 *             return grpc_channel_check_connectivity_state(             # <<<<<<<<<<<<<<
 *                 self.channel,
 *                 try_to_connect,
 */
  /*else*/ {
    __Pyx_XDECREF(__pyx_r);

    /* "src/python/grpcio/grpc/_cython/_cygrpc/aio/channel.pyx.pxi":67
 *             return grpc_channel_check_connectivity_state(
 *                 self.channel,
 *                 try_to_connect,             # <<<<<<<<<<<<<<
 *             )
 * 
 */
    __pyx_t_3 = __Pyx_PyInt_From_grpc_connectivity_state(grpc_channel_check_connectivity_state(__pyx_v_self->channel, __pyx_v_try_to_connect)); if (unlikely(!__pyx_t_3)) __PYX_ERR(9, 65, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_3);
    __pyx_r = __pyx_t_3;
    __pyx_t_3 = 0;
    goto __pyx_L0;
  }

  /* "src/python/grpcio/grpc/_cython/_cygrpc/aio/channel.pyx.pxi":60
 *         return f"<{class_name} {id_}>"
 * 
 *     def check_connectivity_state(self, bint try_to_connect):             # <<<<<<<<<<<<<<
 *         """A Cython wrapper for Core's check connectivity state API."""
 *         if self._status == AIO_CHANNEL_STATUS_DESTROYED:
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_XDECREF(__pyx_t_3);
  __Pyx_AddTraceback("grpc._cython.cygrpc.AioChannel.check_connectivity_state", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}
static PyObject *__pyx_gb_4grpc_7_cython_6cygrpc_10AioChannel_10generator18(__pyx_CoroutineObject *__pyx_generator, CYTHON_UNUSED PyThreadState *__pyx_tstate, PyObject *__pyx_sent_value); /* proto */

/* "src/python/grpcio/grpc/_cython/_cygrpc/aio/channel.pyx.pxi":70
 *             )
 * 
 *     async def watch_connectivity_state(self,             # <<<<<<<<<<<<<<
 *                                        grpc_connectivity_state last_observed_state,
 *                                        object deadline):
 */

/* Python wrapper */
static PyObject *__pyx_pw_4grpc_7_cython_6cygrpc_10AioChannel_9watch_connectivity_state(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
static char __pyx_doc_4grpc_7_cython_6cygrpc_10AioChannel_8watch_connectivity_state[] = "Watch for one connectivity state change.\n\n        Keeps mirroring the behavior from Core, so we can easily switch to\n        other design of API if necessary.\n        ";
static PyObject *__pyx_pw_4grpc_7_cython_6cygrpc_10AioChannel_9watch_connectivity_state(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
  grpc_connectivity_state __pyx_v_last_observed_state;
  PyObject *__pyx_v_deadline = 0;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("watch_connectivity_state (wrapper)", 0);
  {
    static PyObject **__pyx_pyargnames[] = {&__pyx_n_s_last_observed_state,&__pyx_n_s_deadline,0};
    PyObject* values[2] = {0,0};
    if (unlikely(__pyx_kwds)) {
      Py_ssize_t kw_args;
      const Py_ssize_t pos_args = PyTuple_GET_SIZE(__pyx_args);
      switch (pos_args) {
        case  2: values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
        CYTHON_FALLTHROUGH;
        case  1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
        CYTHON_FALLTHROUGH;
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      kw_args = PyDict_Size(__pyx_kwds);
      switch (pos_args) {
        case  0:
        if (likely((values[0] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_last_observed_state)) != 0)) kw_args--;
        else goto __pyx_L5_argtuple_error;
        CYTHON_FALLTHROUGH;
        case  1:
        if (likely((values[1] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_deadline)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("watch_connectivity_state", 1, 2, 2, 1); __PYX_ERR(9, 70, __pyx_L3_error)
        }
      }
      if (unlikely(kw_args > 0)) {
        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "watch_connectivity_state") < 0)) __PYX_ERR(9, 70, __pyx_L3_error)
      }
    } else if (PyTuple_GET_SIZE(__pyx_args) != 2) {
      goto __pyx_L5_argtuple_error;
    } else {
      values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
      values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
    }
    __pyx_v_last_observed_state = ((grpc_connectivity_state)__Pyx_PyInt_As_grpc_connectivity_state(values[0])); if (unlikely(PyErr_Occurred())) __PYX_ERR(9, 71, __pyx_L3_error)
    __pyx_v_deadline = values[1];
  }
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("watch_connectivity_state", 1, 2, 2, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(9, 70, __pyx_L3_error)
  __pyx_L3_error:;
  __Pyx_AddTraceback("grpc._cython.cygrpc.AioChannel.watch_connectivity_state", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  __pyx_r = __pyx_pf_4grpc_7_cython_6cygrpc_10AioChannel_8watch_connectivity_state(((struct __pyx_obj_4grpc_7_cython_6cygrpc_AioChannel *)__pyx_v_self), __pyx_v_last_observed_state, __pyx_v_deadline);

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_4grpc_7_cython_6cygrpc_10AioChannel_8watch_connectivity_state(struct __pyx_obj_4grpc_7_cython_6cygrpc_AioChannel *__pyx_v_self, grpc_connectivity_state __pyx_v_last_observed_state, PyObject *__pyx_v_deadline) {
  struct __pyx_obj_4grpc_7_cython_6cygrpc___pyx_scope_struct_30_watch_connectivity_state *__pyx_cur_scope;
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("watch_connectivity_state", 0);
  __pyx_cur_scope = (struct __pyx_obj_4grpc_7_cython_6cygrpc___pyx_scope_struct_30_watch_connectivity_state *)__pyx_tp_new_4grpc_7_cython_6cygrpc___pyx_scope_struct_30_watch_connectivity_state(__pyx_ptype_4grpc_7_cython_6cygrpc___pyx_scope_struct_30_watch_connectivity_state, __pyx_empty_tuple, NULL);
  if (unlikely(!__pyx_cur_scope)) {
    __pyx_cur_scope = ((struct __pyx_obj_4grpc_7_cython_6cygrpc___pyx_scope_struct_30_watch_connectivity_state *)Py_None);
    __Pyx_INCREF(Py_None);
    __PYX_ERR(9, 70, __pyx_L1_error)
  } else {
    __Pyx_GOTREF(__pyx_cur_scope);
  }
  __pyx_cur_scope->__pyx_v_self = __pyx_v_self;
  __Pyx_INCREF((PyObject *)__pyx_cur_scope->__pyx_v_self);
  __Pyx_GIVEREF((PyObject *)__pyx_cur_scope->__pyx_v_self);
  __pyx_cur_scope->__pyx_v_last_observed_state = __pyx_v_last_observed_state;
  __pyx_cur_scope->__pyx_v_deadline = __pyx_v_deadline;
  __Pyx_INCREF(__pyx_cur_scope->__pyx_v_deadline);
  __Pyx_GIVEREF(__pyx_cur_scope->__pyx_v_deadline);
  {
    __pyx_CoroutineObject *gen = __Pyx_Coroutine_New((__pyx_coroutine_body_t) __pyx_gb_4grpc_7_cython_6cygrpc_10AioChannel_10generator18, NULL, (PyObject *) __pyx_cur_scope, __pyx_n_s_watch_connectivity_state, __pyx_n_s_AioChannel_watch_connectivity_st, __pyx_n_s_grpc__cython_cygrpc); if (unlikely(!gen)) __PYX_ERR(9, 70, __pyx_L1_error)
    __Pyx_DECREF(__pyx_cur_scope);
    __Pyx_RefNannyFinishContext();
    return (PyObject *) gen;
  }

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_AddTraceback("grpc._cython.cygrpc.AioChannel.watch_connectivity_state", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __Pyx_DECREF(((PyObject *)__pyx_cur_scope));
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_gb_4grpc_7_cython_6cygrpc_10AioChannel_10generator18(__pyx_CoroutineObject *__pyx_generator, CYTHON_UNUSED PyThreadState *__pyx_tstate, PyObject *__pyx_sent_value) /* generator body */
{
  struct __pyx_obj_4grpc_7_cython_6cygrpc___pyx_scope_struct_30_watch_connectivity_state *__pyx_cur_scope = ((struct __pyx_obj_4grpc_7_cython_6cygrpc___pyx_scope_struct_30_watch_connectivity_state *)__pyx_generator->closure);
  PyObject *__pyx_r = NULL;
  PyObject *__pyx_t_1 = NULL;
  PyObject *__pyx_t_2 = NULL;
  PyObject *__pyx_t_3 = NULL;
  gpr_timespec __pyx_t_4;
  PyObject *__pyx_t_5 = NULL;
  PyObject *__pyx_t_6 = NULL;
  PyObject *__pyx_t_7 = NULL;
  PyObject *__pyx_t_8 = NULL;
  int __pyx_t_9;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("watch_connectivity_state", 0);
  switch (__pyx_generator->resume_label) {
    case 0: goto __pyx_L3_first_run;
    case 1: goto __pyx_L10_resume_from_await;
    default: /* CPython raises the right error here */
    __Pyx_RefNannyFinishContext();
    return NULL;
  }
  __pyx_L3_first_run:;
  if (unlikely(!__pyx_sent_value)) __PYX_ERR(9, 70, __pyx_L1_error)

  /* "src/python/grpcio/grpc/_cython/_cygrpc/aio/channel.pyx.pxi":78
 *         other design of API if necessary.
 *         """
 *         if self._status in (AIO_CHANNEL_STATUS_DESTROYED, AIO_CHANNEL_STATUS_CLOSING):             # <<<<<<<<<<<<<<
 *             raise UsageError('Channel is closed.')
 * 
 */
  switch (__pyx_cur_scope->__pyx_v_self->_status) {
    case __pyx_e_4grpc_7_cython_6cygrpc_AIO_CHANNEL_STATUS_DESTROYED:
    case __pyx_e_4grpc_7_cython_6cygrpc_AIO_CHANNEL_STATUS_CLOSING:

    /* "src/python/grpcio/grpc/_cython/_cygrpc/aio/channel.pyx.pxi":79
 *         """
 *         if self._status in (AIO_CHANNEL_STATUS_DESTROYED, AIO_CHANNEL_STATUS_CLOSING):
 *             raise UsageError('Channel is closed.')             # <<<<<<<<<<<<<<
 * 
 *         cdef gpr_timespec c_deadline = _timespec_from_time(deadline)
 */
    __Pyx_GetModuleGlobalName(__pyx_t_2, __pyx_n_s_UsageError); if (unlikely(!__pyx_t_2)) __PYX_ERR(9, 79, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_2);
    __pyx_t_3 = NULL;
    if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_2))) {
      __pyx_t_3 = PyMethod_GET_SELF(__pyx_t_2);
      if (likely(__pyx_t_3)) {
        PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_2);
        __Pyx_INCREF(__pyx_t_3);
        __Pyx_INCREF(function);
        __Pyx_DECREF_SET(__pyx_t_2, function);
      }
    }
    __pyx_t_1 = (__pyx_t_3) ? __Pyx_PyObject_Call2Args(__pyx_t_2, __pyx_t_3, __pyx_kp_s_Channel_is_closed) : __Pyx_PyObject_CallOneArg(__pyx_t_2, __pyx_kp_s_Channel_is_closed);
    __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0;
    if (unlikely(!__pyx_t_1)) __PYX_ERR(9, 79, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_1);
    __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
    __Pyx_Raise(__pyx_t_1, 0, 0, 0);
    __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
    __PYX_ERR(9, 79, __pyx_L1_error)

    /* "src/python/grpcio/grpc/_cython/_cygrpc/aio/channel.pyx.pxi":78
 *         other design of API if necessary.
 *         """
 *         if self._status in (AIO_CHANNEL_STATUS_DESTROYED, AIO_CHANNEL_STATUS_CLOSING):             # <<<<<<<<<<<<<<
 *             raise UsageError('Channel is closed.')
 * 
 */
    break;
    default: break;
  }

  /* "src/python/grpcio/grpc/_cython/_cygrpc/aio/channel.pyx.pxi":81
 *             raise UsageError('Channel is closed.')
 * 
 *         cdef gpr_timespec c_deadline = _timespec_from_time(deadline)             # <<<<<<<<<<<<<<
 * 
 *         cdef object future = self.loop.create_future()
 */
  __pyx_t_4 = __pyx_f_4grpc_7_cython_6cygrpc__timespec_from_time(__pyx_cur_scope->__pyx_v_deadline); if (unlikely(PyErr_Occurred())) __PYX_ERR(9, 81, __pyx_L1_error)
  __pyx_cur_scope->__pyx_v_c_deadline = __pyx_t_4;

  /* "src/python/grpcio/grpc/_cython/_cygrpc/aio/channel.pyx.pxi":83
 *         cdef gpr_timespec c_deadline = _timespec_from_time(deadline)
 * 
 *         cdef object future = self.loop.create_future()             # <<<<<<<<<<<<<<
 *         cdef CallbackWrapper wrapper = CallbackWrapper(
 *             future,
 */
  __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_cur_scope->__pyx_v_self->loop, __pyx_n_s_create_future); if (unlikely(!__pyx_t_2)) __PYX_ERR(9, 83, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __pyx_t_3 = NULL;
  if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_2))) {
    __pyx_t_3 = PyMethod_GET_SELF(__pyx_t_2);
    if (likely(__pyx_t_3)) {
      PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_2);
      __Pyx_INCREF(__pyx_t_3);
      __Pyx_INCREF(function);
      __Pyx_DECREF_SET(__pyx_t_2, function);
    }
  }
  __pyx_t_1 = (__pyx_t_3) ? __Pyx_PyObject_CallOneArg(__pyx_t_2, __pyx_t_3) : __Pyx_PyObject_CallNoArg(__pyx_t_2);
  __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0;
  if (unlikely(!__pyx_t_1)) __PYX_ERR(9, 83, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  __Pyx_GIVEREF(__pyx_t_1);
  __pyx_cur_scope->__pyx_v_future = __pyx_t_1;
  __pyx_t_1 = 0;

  /* "src/python/grpcio/grpc/_cython/_cygrpc/aio/channel.pyx.pxi":84
 * 
 *         cdef object future = self.loop.create_future()
 *         cdef CallbackWrapper wrapper = CallbackWrapper(             # <<<<<<<<<<<<<<
 *             future,
 *             self.loop,
 */
  __pyx_t_1 = PyTuple_New(3); if (unlikely(!__pyx_t_1)) __PYX_ERR(9, 84, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_INCREF(__pyx_cur_scope->__pyx_v_future);
  __Pyx_GIVEREF(__pyx_cur_scope->__pyx_v_future);
  PyTuple_SET_ITEM(__pyx_t_1, 0, __pyx_cur_scope->__pyx_v_future);
  __Pyx_INCREF(__pyx_cur_scope->__pyx_v_self->loop);
  __Pyx_GIVEREF(__pyx_cur_scope->__pyx_v_self->loop);
  PyTuple_SET_ITEM(__pyx_t_1, 1, __pyx_cur_scope->__pyx_v_self->loop);
  __Pyx_INCREF(((PyObject *)__pyx_v_4grpc_7_cython_6cygrpc__WATCH_CONNECTIVITY_FAILURE_HANDLER));
  __Pyx_GIVEREF(((PyObject *)__pyx_v_4grpc_7_cython_6cygrpc__WATCH_CONNECTIVITY_FAILURE_HANDLER));
  PyTuple_SET_ITEM(__pyx_t_1, 2, ((PyObject *)__pyx_v_4grpc_7_cython_6cygrpc__WATCH_CONNECTIVITY_FAILURE_HANDLER));
  __pyx_t_2 = __Pyx_PyObject_Call(((PyObject *)__pyx_ptype_4grpc_7_cython_6cygrpc_CallbackWrapper), __pyx_t_1, NULL); if (unlikely(!__pyx_t_2)) __PYX_ERR(9, 84, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  __Pyx_GIVEREF(__pyx_t_2);
  __pyx_cur_scope->__pyx_v_wrapper = ((struct __pyx_obj_4grpc_7_cython_6cygrpc_CallbackWrapper *)__pyx_t_2);
  __pyx_t_2 = 0;

  /* "src/python/grpcio/grpc/_cython/_cygrpc/aio/channel.pyx.pxi":88
 *             self.loop,
 *             _WATCH_CONNECTIVITY_FAILURE_HANDLER)
 *         grpc_channel_watch_connectivity_state(             # <<<<<<<<<<<<<<
 *             self.channel,
 *             last_observed_state,
 */
  grpc_channel_watch_connectivity_state(__pyx_cur_scope->__pyx_v_self->channel, __pyx_cur_scope->__pyx_v_last_observed_state, __pyx_cur_scope->__pyx_v_c_deadline, __pyx_f_4grpc_7_cython_6cygrpc_global_completion_queue(), ((struct __pyx_vtabstruct_4grpc_7_cython_6cygrpc_CallbackWrapper *)__pyx_cur_scope->__pyx_v_wrapper->__pyx_vtab)->c_functor(__pyx_cur_scope->__pyx_v_wrapper));

  /* "src/python/grpcio/grpc/_cython/_cygrpc/aio/channel.pyx.pxi":95
 *             wrapper.c_functor())
 * 
 *         try:             # <<<<<<<<<<<<<<
 *             await future
 *         except _WatchConnectivityFailed:
 */
  {
    __Pyx_ExceptionSave(&__pyx_t_5, &__pyx_t_6, &__pyx_t_7);
    __Pyx_XGOTREF(__pyx_t_5);
    __Pyx_XGOTREF(__pyx_t_6);
    __Pyx_XGOTREF(__pyx_t_7);
    /*try:*/ {

      /* "src/python/grpcio/grpc/_cython/_cygrpc/aio/channel.pyx.pxi":96
 * 
 *         try:
 *             await future             # <<<<<<<<<<<<<<
 *         except _WatchConnectivityFailed:
 *             return False
 */
      __pyx_r = __Pyx_Coroutine_Yield_From(__pyx_generator, __pyx_cur_scope->__pyx_v_future);
      __Pyx_XGOTREF(__pyx_r);
      if (likely(__pyx_r)) {
        __Pyx_XGIVEREF(__pyx_t_5);
        __pyx_cur_scope->__pyx_t_0 = __pyx_t_5;
        __Pyx_XGIVEREF(__pyx_t_6);
        __pyx_cur_scope->__pyx_t_1 = __pyx_t_6;
        __Pyx_XGIVEREF(__pyx_t_7);
        __pyx_cur_scope->__pyx_t_2 = __pyx_t_7;
        __Pyx_XGIVEREF(__pyx_r);
        __Pyx_RefNannyFinishContext();
        __Pyx_Coroutine_ResetAndClearException(__pyx_generator);
        /* return from generator, awaiting value */
        __pyx_generator->resume_label = 1;
        return __pyx_r;
        __pyx_L10_resume_from_await:;
        __pyx_t_5 = __pyx_cur_scope->__pyx_t_0;
        __pyx_cur_scope->__pyx_t_0 = 0;
        __Pyx_XGOTREF(__pyx_t_5);
        __pyx_t_6 = __pyx_cur_scope->__pyx_t_1;
        __pyx_cur_scope->__pyx_t_1 = 0;
        __Pyx_XGOTREF(__pyx_t_6);
        __pyx_t_7 = __pyx_cur_scope->__pyx_t_2;
        __pyx_cur_scope->__pyx_t_2 = 0;
        __Pyx_XGOTREF(__pyx_t_7);
        if (unlikely(!__pyx_sent_value)) __PYX_ERR(9, 96, __pyx_L4_error)
      } else {
        PyObject* exc_type = __Pyx_PyErr_Occurred();
        if (exc_type) {
          if (likely(exc_type == PyExc_StopIteration || (exc_type != PyExc_GeneratorExit && __Pyx_PyErr_GivenExceptionMatches(exc_type, PyExc_StopIteration)))) PyErr_Clear();
          else __PYX_ERR(9, 96, __pyx_L4_error)
        }
      }

      /* "src/python/grpcio/grpc/_cython/_cygrpc/aio/channel.pyx.pxi":95
 *             wrapper.c_functor())
 * 
 *         try:             # <<<<<<<<<<<<<<
 *             await future
 *         except _WatchConnectivityFailed:
 */
    }

    /* "src/python/grpcio/grpc/_cython/_cygrpc/aio/channel.pyx.pxi":100
 *             return False
 *         else:
 *             return True             # <<<<<<<<<<<<<<
 * 
 *     def closing(self):
 */
    /*else:*/ {
      __Pyx_XDECREF(__pyx_r);
      __pyx_r = NULL; __Pyx_ReturnWithStopIteration(Py_True);
      goto __pyx_L7_except_return;
    }
    __pyx_L4_error:;
    __Pyx_XDECREF(__pyx_t_1); __pyx_t_1 = 0;
    __Pyx_XDECREF(__pyx_t_2); __pyx_t_2 = 0;
    __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0;

    /* "src/python/grpcio/grpc/_cython/_cygrpc/aio/channel.pyx.pxi":97
 *         try:
 *             await future
 *         except _WatchConnectivityFailed:             # <<<<<<<<<<<<<<
 *             return False
 *         else:
 */
    __Pyx_ErrFetch(&__pyx_t_2, &__pyx_t_1, &__pyx_t_3);
    __Pyx_GetModuleGlobalName(__pyx_t_8, __pyx_n_s_WatchConnectivityFailed); if (unlikely(!__pyx_t_8)) __PYX_ERR(9, 97, __pyx_L6_except_error)
    __Pyx_GOTREF(__pyx_t_8);
    __pyx_t_9 = __Pyx_PyErr_GivenExceptionMatches(__pyx_t_2, __pyx_t_8);
    __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
    __Pyx_ErrRestore(__pyx_t_2, __pyx_t_1, __pyx_t_3);
    __pyx_t_2 = 0; __pyx_t_1 = 0; __pyx_t_3 = 0;
    if (__pyx_t_9) {
      __Pyx_AddTraceback("grpc._cython.cygrpc.AioChannel.watch_connectivity_state", __pyx_clineno, __pyx_lineno, __pyx_filename);
      if (__Pyx_GetException(&__pyx_t_3, &__pyx_t_1, &__pyx_t_2) < 0) __PYX_ERR(9, 97, __pyx_L6_except_error)
      __Pyx_GOTREF(__pyx_t_3);
      __Pyx_GOTREF(__pyx_t_1);
      __Pyx_GOTREF(__pyx_t_2);

      /* "src/python/grpcio/grpc/_cython/_cygrpc/aio/channel.pyx.pxi":98
 *             await future
 *         except _WatchConnectivityFailed:
 *             return False             # <<<<<<<<<<<<<<
 *         else:
 *             return True
 */
      __Pyx_XDECREF(__pyx_r);
      __pyx_r = NULL; __Pyx_ReturnWithStopIteration(Py_False);
      __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
      __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
      __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
      goto __pyx_L7_except_return;
    }
    goto __pyx_L6_except_error;
    __pyx_L6_except_error:;

    /* "src/python/grpcio/grpc/_cython/_cygrpc/aio/channel.pyx.pxi":95
 *             wrapper.c_functor())
 * 
 *         try:             # <<<<<<<<<<<<<<
 *             await future
 *         except _WatchConnectivityFailed:
 */
    __Pyx_XGIVEREF(__pyx_t_5);
    __Pyx_XGIVEREF(__pyx_t_6);
    __Pyx_XGIVEREF(__pyx_t_7);
    __Pyx_ExceptionReset(__pyx_t_5, __pyx_t_6, __pyx_t_7);
    goto __pyx_L1_error;
    __pyx_L7_except_return:;
    __Pyx_XGIVEREF(__pyx_t_5);
    __Pyx_XGIVEREF(__pyx_t_6);
    __Pyx_XGIVEREF(__pyx_t_7);
    __Pyx_ExceptionReset(__pyx_t_5, __pyx_t_6, __pyx_t_7);
    goto __pyx_L0;
  }
  CYTHON_MAYBE_UNUSED_VAR(__pyx_cur_scope);

  /* "src/python/grpcio/grpc/_cython/_cygrpc/aio/channel.pyx.pxi":70
 *             )
 * 
 *     async def watch_connectivity_state(self,             # <<<<<<<<<<<<<<
 *                                        grpc_connectivity_state last_observed_state,
 *                                        object deadline):
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_XDECREF(__pyx_t_3);
  __Pyx_XDECREF(__pyx_t_8);
  __Pyx_AddTraceback("watch_connectivity_state", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_L0:;
  __Pyx_XDECREF(__pyx_r); __pyx_r = 0;
  #if !CYTHON_USE_EXC_INFO_STACK
  __Pyx_Coroutine_ResetAndClearException(__pyx_generator);
  #endif
  __pyx_generator->resume_label = -1;
  __Pyx_Coroutine_clear((PyObject*)__pyx_generator);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "src/python/grpcio/grpc/_cython/_cygrpc/aio/channel.pyx.pxi":102
 *             return True
 * 
 *     def closing(self):             # <<<<<<<<<<<<<<
 *         self._status = AIO_CHANNEL_STATUS_CLOSING
 * 
 */

/* Python wrapper */
static PyObject *__pyx_pw_4grpc_7_cython_6cygrpc_10AioChannel_12closing(PyObject *__pyx_v_self, CYTHON_UNUSED PyObject *unused); /*proto*/
static PyObject *__pyx_pw_4grpc_7_cython_6cygrpc_10AioChannel_12closing(PyObject *__pyx_v_self, CYTHON_UNUSED PyObject *unused) {
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("closing (wrapper)", 0);
  __pyx_r = __pyx_pf_4grpc_7_cython_6cygrpc_10AioChannel_11closing(((struct __pyx_obj_4grpc_7_cython_6cygrpc_AioChannel *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_4grpc_7_cython_6cygrpc_10AioChannel_11closing(struct __pyx_obj_4grpc_7_cython_6cygrpc_AioChannel *__pyx_v_self) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("closing", 0);

  /* "src/python/grpcio/grpc/_cython/_cygrpc/aio/channel.pyx.pxi":103
 * 
 *     def closing(self):
 *         self._status = AIO_CHANNEL_STATUS_CLOSING             # <<<<<<<<<<<<<<
 * 
 *     def close(self):
 */
  __pyx_v_self->_status = __pyx_e_4grpc_7_cython_6cygrpc_AIO_CHANNEL_STATUS_CLOSING;

  /* "src/python/grpcio/grpc/_cython/_cygrpc/aio/channel.pyx.pxi":102
 *             return True
 * 
 *     def closing(self):             # <<<<<<<<<<<<<<
 *         self._status = AIO_CHANNEL_STATUS_CLOSING
 * 
 */

  /* function exit code */
  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "src/python/grpcio/grpc/_cython/_cygrpc/aio/channel.pyx.pxi":105
 *         self._status = AIO_CHANNEL_STATUS_CLOSING
 * 
 *     def close(self):             # <<<<<<<<<<<<<<
 *         self._status = AIO_CHANNEL_STATUS_DESTROYED
 *         grpc_channel_destroy(self.channel)
 */

/* Python wrapper */
static PyObject *__pyx_pw_4grpc_7_cython_6cygrpc_10AioChannel_14close(PyObject *__pyx_v_self, CYTHON_UNUSED PyObject *unused); /*proto*/
static PyObject *__pyx_pw_4grpc_7_cython_6cygrpc_10AioChannel_14close(PyObject *__pyx_v_self, CYTHON_UNUSED PyObject *unused) {
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("close (wrapper)", 0);
  __pyx_r = __pyx_pf_4grpc_7_cython_6cygrpc_10AioChannel_13close(((struct __pyx_obj_4grpc_7_cython_6cygrpc_AioChannel *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_4grpc_7_cython_6cygrpc_10AioChannel_13close(struct __pyx_obj_4grpc_7_cython_6cygrpc_AioChannel *__pyx_v_self) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("close", 0);

  /* "src/python/grpcio/grpc/_cython/_cygrpc/aio/channel.pyx.pxi":106
 * 
 *     def close(self):
 *         self._status = AIO_CHANNEL_STATUS_DESTROYED             # <<<<<<<<<<<<<<
 *         grpc_channel_destroy(self.channel)
 * 
 */
  __pyx_v_self->_status = __pyx_e_4grpc_7_cython_6cygrpc_AIO_CHANNEL_STATUS_DESTROYED;

  /* "src/python/grpcio/grpc/_cython/_cygrpc/aio/channel.pyx.pxi":107
 *     def close(self):
 *         self._status = AIO_CHANNEL_STATUS_DESTROYED
 *         grpc_channel_destroy(self.channel)             # <<<<<<<<<<<<<<
 * 
 *     def closed(self):
 */
  grpc_channel_destroy(__pyx_v_self->channel);

  /* "src/python/grpcio/grpc/_cython/_cygrpc/aio/channel.pyx.pxi":105
 *         self._status = AIO_CHANNEL_STATUS_CLOSING
 * 
 *     def close(self):             # <<<<<<<<<<<<<<
 *         self._status = AIO_CHANNEL_STATUS_DESTROYED
 *         grpc_channel_destroy(self.channel)
 */

  /* function exit code */
  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "src/python/grpcio/grpc/_cython/_cygrpc/aio/channel.pyx.pxi":109
 *         grpc_channel_destroy(self.channel)
 * 
 *     def closed(self):             # <<<<<<<<<<<<<<
 *         return self._status in (AIO_CHANNEL_STATUS_CLOSING, AIO_CHANNEL_STATUS_DESTROYED)
 * 
 */

/* Python wrapper */
static PyObject *__pyx_pw_4grpc_7_cython_6cygrpc_10AioChannel_16closed(PyObject *__pyx_v_self, CYTHON_UNUSED PyObject *unused); /*proto*/
static PyObject *__pyx_pw_4grpc_7_cython_6cygrpc_10AioChannel_16closed(PyObject *__pyx_v_self, CYTHON_UNUSED PyObject *unused) {
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("closed (wrapper)", 0);
  __pyx_r = __pyx_pf_4grpc_7_cython_6cygrpc_10AioChannel_15closed(((struct __pyx_obj_4grpc_7_cython_6cygrpc_AioChannel *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_4grpc_7_cython_6cygrpc_10AioChannel_15closed(struct __pyx_obj_4grpc_7_cython_6cygrpc_AioChannel *__pyx_v_self) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  int __pyx_t_1;
  PyObject *__pyx_t_2 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("closed", 0);

  /* "src/python/grpcio/grpc/_cython/_cygrpc/aio/channel.pyx.pxi":110
 * 
 *     def closed(self):
 *         return self._status in (AIO_CHANNEL_STATUS_CLOSING, AIO_CHANNEL_STATUS_DESTROYED)             # <<<<<<<<<<<<<<
 * 
 *     def call(self,
 */
  __Pyx_XDECREF(__pyx_r);
  switch (__pyx_v_self->_status) {
    case __pyx_e_4grpc_7_cython_6cygrpc_AIO_CHANNEL_STATUS_CLOSING:
    case __pyx_e_4grpc_7_cython_6cygrpc_AIO_CHANNEL_STATUS_DESTROYED:
    __pyx_t_1 = 1;
    break;
    default:
    __pyx_t_1 = 0;
    break;
  }
  __pyx_t_2 = __Pyx_PyBool_FromLong(__pyx_t_1); if (unlikely(!__pyx_t_2)) __PYX_ERR(9, 110, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __pyx_r = __pyx_t_2;
  __pyx_t_2 = 0;
  goto __pyx_L0;

  /* "src/python/grpcio/grpc/_cython/_cygrpc/aio/channel.pyx.pxi":109
 *         grpc_channel_destroy(self.channel)
 * 
 *     def closed(self):             # <<<<<<<<<<<<<<
 *         return self._status in (AIO_CHANNEL_STATUS_CLOSING, AIO_CHANNEL_STATUS_DESTROYED)
 * 
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_AddTraceback("grpc._cython.cygrpc.AioChannel.closed", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "src/python/grpcio/grpc/_cython/_cygrpc/aio/channel.pyx.pxi":112
 *         return self._status in (AIO_CHANNEL_STATUS_CLOSING, AIO_CHANNEL_STATUS_DESTROYED)
 * 
 *     def call(self,             # <<<<<<<<<<<<<<
 *              bytes method,
 *              object deadline,
 */

/* Python wrapper */
static PyObject *__pyx_pw_4grpc_7_cython_6cygrpc_10AioChannel_18call(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
static char __pyx_doc_4grpc_7_cython_6cygrpc_10AioChannel_17call[] = "Assembles a Cython Call object.\n\n        Returns:\n          An _AioCall object.\n        ";
static PyObject *__pyx_pw_4grpc_7_cython_6cygrpc_10AioChannel_18call(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
  PyObject *__pyx_v_method = 0;
  PyObject *__pyx_v_deadline = 0;
  PyObject *__pyx_v_python_call_credentials = 0;
  PyObject *__pyx_v_wait_for_ready = 0;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("call (wrapper)", 0);
  {
    static PyObject **__pyx_pyargnames[] = {&__pyx_n_s_method,&__pyx_n_s_deadline,&__pyx_n_s_python_call_credentials,&__pyx_n_s_wait_for_ready,0};
    PyObject* values[4] = {0,0,0,0};
    if (unlikely(__pyx_kwds)) {
      Py_ssize_t kw_args;
      const Py_ssize_t pos_args = PyTuple_GET_SIZE(__pyx_args);
      switch (pos_args) {
        case  4: values[3] = PyTuple_GET_ITEM(__pyx_args, 3);
        CYTHON_FALLTHROUGH;
        case  3: values[2] = PyTuple_GET_ITEM(__pyx_args, 2);
        CYTHON_FALLTHROUGH;
        case  2: values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
        CYTHON_FALLTHROUGH;
        case  1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
        CYTHON_FALLTHROUGH;
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      kw_args = PyDict_Size(__pyx_kwds);
      switch (pos_args) {
        case  0:
        if (likely((values[0] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_method)) != 0)) kw_args--;
        else goto __pyx_L5_argtuple_error;
        CYTHON_FALLTHROUGH;
        case  1:
        if (likely((values[1] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_deadline)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("call", 1, 4, 4, 1); __PYX_ERR(9, 112, __pyx_L3_error)
        }
        CYTHON_FALLTHROUGH;
        case  2:
        if (likely((values[2] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_python_call_credentials)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("call", 1, 4, 4, 2); __PYX_ERR(9, 112, __pyx_L3_error)
        }
        CYTHON_FALLTHROUGH;
        case  3:
        if (likely((values[3] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_wait_for_ready)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("call", 1, 4, 4, 3); __PYX_ERR(9, 112, __pyx_L3_error)
        }
      }
      if (unlikely(kw_args > 0)) {
        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "call") < 0)) __PYX_ERR(9, 112, __pyx_L3_error)
      }
    } else if (PyTuple_GET_SIZE(__pyx_args) != 4) {
      goto __pyx_L5_argtuple_error;
    } else {
      values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
      values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
      values[2] = PyTuple_GET_ITEM(__pyx_args, 2);
      values[3] = PyTuple_GET_ITEM(__pyx_args, 3);
    }
    __pyx_v_method = ((PyObject*)values[0]);
    __pyx_v_deadline = values[1];
    __pyx_v_python_call_credentials = values[2];
    __pyx_v_wait_for_ready = values[3];
  }
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("call", 1, 4, 4, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(9, 112, __pyx_L3_error)
  __pyx_L3_error:;
  __Pyx_AddTraceback("grpc._cython.cygrpc.AioChannel.call", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_method), (&PyBytes_Type), 1, "method", 1))) __PYX_ERR(9, 113, __pyx_L1_error)
  __pyx_r = __pyx_pf_4grpc_7_cython_6cygrpc_10AioChannel_17call(((struct __pyx_obj_4grpc_7_cython_6cygrpc_AioChannel *)__pyx_v_self), __pyx_v_method, __pyx_v_deadline, __pyx_v_python_call_credentials, __pyx_v_wait_for_ready);

  /* function exit code */
  goto __pyx_L0;
  __pyx_L1_error:;
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_4grpc_7_cython_6cygrpc_10AioChannel_17call(struct __pyx_obj_4grpc_7_cython_6cygrpc_AioChannel *__pyx_v_self, PyObject *__pyx_v_method, PyObject *__pyx_v_deadline, PyObject *__pyx_v_python_call_credentials, PyObject *__pyx_v_wait_for_ready) {
  struct __pyx_obj_4grpc_7_cython_6cygrpc_CallCredentials *__pyx_v_cython_call_credentials = 0;
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  PyObject *__pyx_t_2 = NULL;
  PyObject *__pyx_t_3 = NULL;
  int __pyx_t_4;
  int __pyx_t_5;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("call", 0);

  /* "src/python/grpcio/grpc/_cython/_cygrpc/aio/channel.pyx.pxi":122
 *           An _AioCall object.
 *         """
 *         if self.closed():             # <<<<<<<<<<<<<<
 *             raise UsageError('Channel is closed.')
 * 
 */
  __pyx_t_2 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_closed); if (unlikely(!__pyx_t_2)) __PYX_ERR(9, 122, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __pyx_t_3 = NULL;
  if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_2))) {
    __pyx_t_3 = PyMethod_GET_SELF(__pyx_t_2);
    if (likely(__pyx_t_3)) {
      PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_2);
      __Pyx_INCREF(__pyx_t_3);
      __Pyx_INCREF(function);
      __Pyx_DECREF_SET(__pyx_t_2, function);
    }
  }
  __pyx_t_1 = (__pyx_t_3) ? __Pyx_PyObject_CallOneArg(__pyx_t_2, __pyx_t_3) : __Pyx_PyObject_CallNoArg(__pyx_t_2);
  __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0;
  if (unlikely(!__pyx_t_1)) __PYX_ERR(9, 122, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  __pyx_t_4 = __Pyx_PyObject_IsTrue(__pyx_t_1); if (unlikely(__pyx_t_4 < 0)) __PYX_ERR(9, 122, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  if (unlikely(__pyx_t_4)) {

    /* "src/python/grpcio/grpc/_cython/_cygrpc/aio/channel.pyx.pxi":123
 *         """
 *         if self.closed():
 *             raise UsageError('Channel is closed.')             # <<<<<<<<<<<<<<
 * 
 *         cdef CallCredentials cython_call_credentials
 */
    __Pyx_GetModuleGlobalName(__pyx_t_2, __pyx_n_s_UsageError); if (unlikely(!__pyx_t_2)) __PYX_ERR(9, 123, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_2);
    __pyx_t_3 = NULL;
    if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_2))) {
      __pyx_t_3 = PyMethod_GET_SELF(__pyx_t_2);
      if (likely(__pyx_t_3)) {
        PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_2);
        __Pyx_INCREF(__pyx_t_3);
        __Pyx_INCREF(function);
        __Pyx_DECREF_SET(__pyx_t_2, function);
      }
    }
    __pyx_t_1 = (__pyx_t_3) ? __Pyx_PyObject_Call2Args(__pyx_t_2, __pyx_t_3, __pyx_kp_s_Channel_is_closed) : __Pyx_PyObject_CallOneArg(__pyx_t_2, __pyx_kp_s_Channel_is_closed);
    __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0;
    if (unlikely(!__pyx_t_1)) __PYX_ERR(9, 123, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_1);
    __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
    __Pyx_Raise(__pyx_t_1, 0, 0, 0);
    __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
    __PYX_ERR(9, 123, __pyx_L1_error)

    /* "src/python/grpcio/grpc/_cython/_cygrpc/aio/channel.pyx.pxi":122
 *           An _AioCall object.
 *         """
 *         if self.closed():             # <<<<<<<<<<<<<<
 *             raise UsageError('Channel is closed.')
 * 
 */
  }

  /* "src/python/grpcio/grpc/_cython/_cygrpc/aio/channel.pyx.pxi":126
 * 
 *         cdef CallCredentials cython_call_credentials
 *         if python_call_credentials is not None:             # <<<<<<<<<<<<<<
 *             if not self._is_secure:
 *                 raise UsageError("Call credentials are only valid on secure channels")
 */
  __pyx_t_4 = (__pyx_v_python_call_credentials != Py_None);
  __pyx_t_5 = (__pyx_t_4 != 0);
  if (__pyx_t_5) {

    /* "src/python/grpcio/grpc/_cython/_cygrpc/aio/channel.pyx.pxi":127
 *         cdef CallCredentials cython_call_credentials
 *         if python_call_credentials is not None:
 *             if not self._is_secure:             # <<<<<<<<<<<<<<
 *                 raise UsageError("Call credentials are only valid on secure channels")
 * 
 */
    __pyx_t_5 = ((!(__pyx_v_self->_is_secure != 0)) != 0);
    if (unlikely(__pyx_t_5)) {

      /* "src/python/grpcio/grpc/_cython/_cygrpc/aio/channel.pyx.pxi":128
 *         if python_call_credentials is not None:
 *             if not self._is_secure:
 *                 raise UsageError("Call credentials are only valid on secure channels")             # <<<<<<<<<<<<<<
 * 
 *             cython_call_credentials = python_call_credentials._credentials
 */
      __Pyx_GetModuleGlobalName(__pyx_t_2, __pyx_n_s_UsageError); if (unlikely(!__pyx_t_2)) __PYX_ERR(9, 128, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_2);
      __pyx_t_3 = NULL;
      if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_2))) {
        __pyx_t_3 = PyMethod_GET_SELF(__pyx_t_2);
        if (likely(__pyx_t_3)) {
          PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_2);
          __Pyx_INCREF(__pyx_t_3);
          __Pyx_INCREF(function);
          __Pyx_DECREF_SET(__pyx_t_2, function);
        }
      }
      __pyx_t_1 = (__pyx_t_3) ? __Pyx_PyObject_Call2Args(__pyx_t_2, __pyx_t_3, __pyx_kp_s_Call_credentials_are_only_valid) : __Pyx_PyObject_CallOneArg(__pyx_t_2, __pyx_kp_s_Call_credentials_are_only_valid);
      __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0;
      if (unlikely(!__pyx_t_1)) __PYX_ERR(9, 128, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_1);
      __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
      __Pyx_Raise(__pyx_t_1, 0, 0, 0);
      __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
      __PYX_ERR(9, 128, __pyx_L1_error)

      /* "src/python/grpcio/grpc/_cython/_cygrpc/aio/channel.pyx.pxi":127
 *         cdef CallCredentials cython_call_credentials
 *         if python_call_credentials is not None:
 *             if not self._is_secure:             # <<<<<<<<<<<<<<
 *                 raise UsageError("Call credentials are only valid on secure channels")
 * 
 */
    }

    /* "src/python/grpcio/grpc/_cython/_cygrpc/aio/channel.pyx.pxi":130
 *                 raise UsageError("Call credentials are only valid on secure channels")
 * 
 *             cython_call_credentials = python_call_credentials._credentials             # <<<<<<<<<<<<<<
 *         else:
 *             cython_call_credentials = None
 */
    __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_v_python_call_credentials, __pyx_n_s_credentials_2); if (unlikely(!__pyx_t_1)) __PYX_ERR(9, 130, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_1);
    if (!(likely(((__pyx_t_1) == Py_None) || likely(__Pyx_TypeTest(__pyx_t_1, __pyx_ptype_4grpc_7_cython_6cygrpc_CallCredentials))))) __PYX_ERR(9, 130, __pyx_L1_error)
    __pyx_v_cython_call_credentials = ((struct __pyx_obj_4grpc_7_cython_6cygrpc_CallCredentials *)__pyx_t_1);
    __pyx_t_1 = 0;

    /* "src/python/grpcio/grpc/_cython/_cygrpc/aio/channel.pyx.pxi":126
 * 
 *         cdef CallCredentials cython_call_credentials
 *         if python_call_credentials is not None:             # <<<<<<<<<<<<<<
 *             if not self._is_secure:
 *                 raise UsageError("Call credentials are only valid on secure channels")
 */
    goto __pyx_L4;
  }

  /* "src/python/grpcio/grpc/_cython/_cygrpc/aio/channel.pyx.pxi":132
 *             cython_call_credentials = python_call_credentials._credentials
 *         else:
 *             cython_call_credentials = None             # <<<<<<<<<<<<<<
 * 
 *         return _AioCall(self, deadline, method, cython_call_credentials, wait_for_ready)
 */
  /*else*/ {
    __Pyx_INCREF(Py_None);
    __pyx_v_cython_call_credentials = ((struct __pyx_obj_4grpc_7_cython_6cygrpc_CallCredentials *)Py_None);
  }
  __pyx_L4:;

  /* "src/python/grpcio/grpc/_cython/_cygrpc/aio/channel.pyx.pxi":134
 *             cython_call_credentials = None
 * 
 *         return _AioCall(self, deadline, method, cython_call_credentials, wait_for_ready)             # <<<<<<<<<<<<<<
 */
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_1 = PyTuple_New(5); if (unlikely(!__pyx_t_1)) __PYX_ERR(9, 134, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_INCREF(((PyObject *)__pyx_v_self));
  __Pyx_GIVEREF(((PyObject *)__pyx_v_self));
  PyTuple_SET_ITEM(__pyx_t_1, 0, ((PyObject *)__pyx_v_self));
  __Pyx_INCREF(__pyx_v_deadline);
  __Pyx_GIVEREF(__pyx_v_deadline);
  PyTuple_SET_ITEM(__pyx_t_1, 1, __pyx_v_deadline);
  __Pyx_INCREF(__pyx_v_method);
  __Pyx_GIVEREF(__pyx_v_method);
  PyTuple_SET_ITEM(__pyx_t_1, 2, __pyx_v_method);
  __Pyx_INCREF(((PyObject *)__pyx_v_cython_call_credentials));
  __Pyx_GIVEREF(((PyObject *)__pyx_v_cython_call_credentials));
  PyTuple_SET_ITEM(__pyx_t_1, 3, ((PyObject *)__pyx_v_cython_call_credentials));
  __Pyx_INCREF(__pyx_v_wait_for_ready);
  __Pyx_GIVEREF(__pyx_v_wait_for_ready);
  PyTuple_SET_ITEM(__pyx_t_1, 4, __pyx_v_wait_for_ready);
  __pyx_t_2 = __Pyx_PyObject_Call(((PyObject *)__pyx_ptype_4grpc_7_cython_6cygrpc__AioCall), __pyx_t_1, NULL); if (unlikely(!__pyx_t_2)) __PYX_ERR(9, 134, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  __pyx_r = __pyx_t_2;
  __pyx_t_2 = 0;
  goto __pyx_L0;

  /* "src/python/grpcio/grpc/_cython/_cygrpc/aio/channel.pyx.pxi":112
 *         return self._status in (AIO_CHANNEL_STATUS_CLOSING, AIO_CHANNEL_STATUS_DESTROYED)
 * 
 *     def call(self,             # <<<<<<<<<<<<<<
 *              bytes method,
 *              object deadline,
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_XDECREF(__pyx_t_3);
  __Pyx_AddTraceback("grpc._cython.cygrpc.AioChannel.call", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XDECREF((PyObject *)__pyx_v_cython_call_credentials);
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "(tree fragment)":1
 * def __reduce_cython__(self):             # <<<<<<<<<<<<<<
 *     raise TypeError("no default __reduce__ due to non-trivial __cinit__")
 * def __setstate_cython__(self, __pyx_state):
 */

/* Python wrapper */
static PyObject *__pyx_pw_4grpc_7_cython_6cygrpc_10AioChannel_20__reduce_cython__(PyObject *__pyx_v_self, CYTHON_UNUSED PyObject *unused); /*proto*/
static PyObject *__pyx_pw_4grpc_7_cython_6cygrpc_10AioChannel_20__reduce_cython__(PyObject *__pyx_v_self, CYTHON_UNUSED PyObject *unused) {
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__reduce_cython__ (wrapper)", 0);
  __pyx_r = __pyx_pf_4grpc_7_cython_6cygrpc_10AioChannel_19__reduce_cython__(((struct __pyx_obj_4grpc_7_cython_6cygrpc_AioChannel *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_4grpc_7_cython_6cygrpc_10AioChannel_19__reduce_cython__(CYTHON_UNUSED struct __pyx_obj_4grpc_7_cython_6cygrpc_AioChannel *__pyx_v_self) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("__reduce_cython__", 0);

  /* "(tree fragment)":2
 * def __reduce_cython__(self):
 *     raise TypeError("no default __reduce__ due to non-trivial __cinit__")             # <<<<<<<<<<<<<<
 * def __setstate_cython__(self, __pyx_state):
 *     raise TypeError("no default __reduce__ due to non-trivial __cinit__")
 */
  __pyx_t_1 = __Pyx_PyObject_Call(__pyx_builtin_TypeError, __pyx_tuple__168, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(11, 2, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_Raise(__pyx_t_1, 0, 0, 0);
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  __PYX_ERR(11, 2, __pyx_L1_error)

  /* "(tree fragment)":1
 * def __reduce_cython__(self):             # <<<<<<<<<<<<<<
 *     raise TypeError("no default __reduce__ due to non-trivial __cinit__")
 * def __setstate_cython__(self, __pyx_state):
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_AddTraceback("grpc._cython.cygrpc.AioChannel.__reduce_cython__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "(tree fragment)":3
 * def __reduce_cython__(self):
 *     raise TypeError("no default __reduce__ due to non-trivial __cinit__")
 * def __setstate_cython__(self, __pyx_state):             # <<<<<<<<<<<<<<
 *     raise TypeError("no default __reduce__ due to non-trivial __cinit__")
 */

/* Python wrapper */
static PyObject *__pyx_pw_4grpc_7_cython_6cygrpc_10AioChannel_22__setstate_cython__(PyObject *__pyx_v_self, PyObject *__pyx_v___pyx_state); /*proto*/
static PyObject *__pyx_pw_4grpc_7_cython_6cygrpc_10AioChannel_22__setstate_cython__(PyObject *__pyx_v_self, PyObject *__pyx_v___pyx_state) {
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__setstate_cython__ (wrapper)", 0);
  __pyx_r = __pyx_pf_4grpc_7_cython_6cygrpc_10AioChannel_21__setstate_cython__(((struct __pyx_obj_4grpc_7_cython_6cygrpc_AioChannel *)__pyx_v_self), ((PyObject *)__pyx_v___pyx_state));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_4grpc_7_cython_6cygrpc_10AioChannel_21__setstate_cython__(CYTHON_UNUSED struct __pyx_obj_4grpc_7_cython_6cygrpc_AioChannel *__pyx_v_self, CYTHON_UNUSED PyObject *__pyx_v___pyx_state) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("__setstate_cython__", 0);

  /* "(tree fragment)":4
 *     raise TypeError("no default __reduce__ due to non-trivial __cinit__")
 * def __setstate_cython__(self, __pyx_state):
 *     raise TypeError("no default __reduce__ due to non-trivial __cinit__")             # <<<<<<<<<<<<<<
 */
  __pyx_t_1 = __Pyx_PyObject_Call(__pyx_builtin_TypeError, __pyx_tuple__169, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(11, 4, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_Raise(__pyx_t_1, 0, 0, 0);
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  __PYX_ERR(11, 4, __pyx_L1_error)

  /* "(tree fragment)":3
 * def __reduce_cython__(self):
 *     raise TypeError("no default __reduce__ due to non-trivial __cinit__")
 * def __setstate_cython__(self, __pyx_state):             # <<<<<<<<<<<<<<
 *     raise TypeError("no default __reduce__ due to non-trivial __cinit__")
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_AddTraceback("grpc._cython.cygrpc.AioChannel.__setstate_cython__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "src/python/grpcio/grpc/_cython/_cygrpc/aio/server.pyx.pxi":25
 * cdef str _SERVER_STOPPED_DETAILS = 'Server already stopped.'
 * 
 * cdef _augment_metadata(tuple metadata, object compression):             # <<<<<<<<<<<<<<
 *     if compression is None:
 *         return metadata
 */

static PyObject *__pyx_f_4grpc_7_cython_6cygrpc__augment_metadata(PyObject *__pyx_v_metadata, PyObject *__pyx_v_compression) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  int __pyx_t_1;
  int __pyx_t_2;
  PyObject *__pyx_t_3 = NULL;
  PyObject *__pyx_t_4 = NULL;
  PyObject *__pyx_t_5 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("_augment_metadata", 0);

  /* "src/python/grpcio/grpc/_cython/_cygrpc/aio/server.pyx.pxi":26
 * 
 * cdef _augment_metadata(tuple metadata, object compression):
 *     if compression is None:             # <<<<<<<<<<<<<<
 *         return metadata
 *     else:
 */
  __pyx_t_1 = (__pyx_v_compression == Py_None);
  __pyx_t_2 = (__pyx_t_1 != 0);
  if (__pyx_t_2) {

    /* "src/python/grpcio/grpc/_cython/_cygrpc/aio/server.pyx.pxi":27
 * cdef _augment_metadata(tuple metadata, object compression):
 *     if compression is None:
 *         return metadata             # <<<<<<<<<<<<<<
 *     else:
 *         return ((
 */
    __Pyx_XDECREF(__pyx_r);
    __Pyx_INCREF(__pyx_v_metadata);
    __pyx_r = __pyx_v_metadata;
    goto __pyx_L0;

    /* "src/python/grpcio/grpc/_cython/_cygrpc/aio/server.pyx.pxi":26
 * 
 * cdef _augment_metadata(tuple metadata, object compression):
 *     if compression is None:             # <<<<<<<<<<<<<<
 *         return metadata
 *     else:
 */
  }

  /* "src/python/grpcio/grpc/_cython/_cygrpc/aio/server.pyx.pxi":29
 *         return metadata
 *     else:
 *         return ((             # <<<<<<<<<<<<<<
 *             GRPC_COMPRESSION_REQUEST_ALGORITHM_MD_KEY,
 *             _COMPRESSION_METADATA_STRING_MAPPING[compression]
 */
  /*else*/ {
    __Pyx_XDECREF(__pyx_r);

    /* "src/python/grpcio/grpc/_cython/_cygrpc/aio/server.pyx.pxi":30
 *     else:
 *         return ((
 *             GRPC_COMPRESSION_REQUEST_ALGORITHM_MD_KEY,             # <<<<<<<<<<<<<<
 *             _COMPRESSION_METADATA_STRING_MAPPING[compression]
 *         ),) + metadata
 */
    __Pyx_GetModuleGlobalName(__pyx_t_3, __pyx_n_s_GRPC_COMPRESSION_REQUEST_ALGORIT); if (unlikely(!__pyx_t_3)) __PYX_ERR(10, 30, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_3);

    /* "src/python/grpcio/grpc/_cython/_cygrpc/aio/server.pyx.pxi":31
 *         return ((
 *             GRPC_COMPRESSION_REQUEST_ALGORITHM_MD_KEY,
 *             _COMPRESSION_METADATA_STRING_MAPPING[compression]             # <<<<<<<<<<<<<<
 *         ),) + metadata
 * 
 */
    __Pyx_GetModuleGlobalName(__pyx_t_4, __pyx_n_s_COMPRESSION_METADATA_STRING_MAP); if (unlikely(!__pyx_t_4)) __PYX_ERR(10, 31, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_4);
    __pyx_t_5 = __Pyx_PyObject_GetItem(__pyx_t_4, __pyx_v_compression); if (unlikely(!__pyx_t_5)) __PYX_ERR(10, 31, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_5);
    __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;

    /* "src/python/grpcio/grpc/_cython/_cygrpc/aio/server.pyx.pxi":30
 *     else:
 *         return ((
 *             GRPC_COMPRESSION_REQUEST_ALGORITHM_MD_KEY,             # <<<<<<<<<<<<<<
 *             _COMPRESSION_METADATA_STRING_MAPPING[compression]
 *         ),) + metadata
 */
    __pyx_t_4 = PyTuple_New(2); if (unlikely(!__pyx_t_4)) __PYX_ERR(10, 30, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_4);
    __Pyx_GIVEREF(__pyx_t_3);
    PyTuple_SET_ITEM(__pyx_t_4, 0, __pyx_t_3);
    __Pyx_GIVEREF(__pyx_t_5);
    PyTuple_SET_ITEM(__pyx_t_4, 1, __pyx_t_5);
    __pyx_t_3 = 0;
    __pyx_t_5 = 0;

    /* "src/python/grpcio/grpc/_cython/_cygrpc/aio/server.pyx.pxi":29
 *         return metadata
 *     else:
 *         return ((             # <<<<<<<<<<<<<<
 *             GRPC_COMPRESSION_REQUEST_ALGORITHM_MD_KEY,
 *             _COMPRESSION_METADATA_STRING_MAPPING[compression]
 */
    __pyx_t_5 = PyTuple_New(1); if (unlikely(!__pyx_t_5)) __PYX_ERR(10, 29, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_5);
    __Pyx_GIVEREF(__pyx_t_4);
    PyTuple_SET_ITEM(__pyx_t_5, 0, __pyx_t_4);
    __pyx_t_4 = 0;

    /* "src/python/grpcio/grpc/_cython/_cygrpc/aio/server.pyx.pxi":32
 *             GRPC_COMPRESSION_REQUEST_ALGORITHM_MD_KEY,
 *             _COMPRESSION_METADATA_STRING_MAPPING[compression]
 *         ),) + metadata             # <<<<<<<<<<<<<<
 * 
 * 
 */
    __pyx_t_4 = PyNumber_Add(__pyx_t_5, __pyx_v_metadata); if (unlikely(!__pyx_t_4)) __PYX_ERR(10, 32, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_4);
    __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
    __pyx_r = __pyx_t_4;
    __pyx_t_4 = 0;
    goto __pyx_L0;
  }

  /* "src/python/grpcio/grpc/_cython/_cygrpc/aio/server.pyx.pxi":25
 * cdef str _SERVER_STOPPED_DETAILS = 'Server already stopped.'
 * 
 * cdef _augment_metadata(tuple metadata, object compression):             # <<<<<<<<<<<<<<
 *     if compression is None:
 *         return metadata
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_3);
  __Pyx_XDECREF(__pyx_t_4);
  __Pyx_XDECREF(__pyx_t_5);
  __Pyx_AddTraceback("grpc._cython.cygrpc._augment_metadata", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = 0;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "src/python/grpcio/grpc/_cython/_cygrpc/aio/server.pyx.pxi":36
 * 
 * cdef class _HandlerCallDetails:
 *     def __cinit__(self, str method, tuple invocation_metadata):             # <<<<<<<<<<<<<<
 *         self.method = method
 *         self.invocation_metadata = invocation_metadata
 */

/* Python wrapper */
static int __pyx_pw_4grpc_7_cython_6cygrpc_19_HandlerCallDetails_1__cinit__(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
static int __pyx_pw_4grpc_7_cython_6cygrpc_19_HandlerCallDetails_1__cinit__(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
  PyObject *__pyx_v_method = 0;
  PyObject *__pyx_v_invocation_metadata = 0;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  int __pyx_r;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__cinit__ (wrapper)", 0);
  {
    static PyObject **__pyx_pyargnames[] = {&__pyx_n_s_method,&__pyx_n_s_invocation_metadata,0};
    PyObject* values[2] = {0,0};
    if (unlikely(__pyx_kwds)) {
      Py_ssize_t kw_args;
      const Py_ssize_t pos_args = PyTuple_GET_SIZE(__pyx_args);
      switch (pos_args) {
        case  2: values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
        CYTHON_FALLTHROUGH;
        case  1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
        CYTHON_FALLTHROUGH;
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      kw_args = PyDict_Size(__pyx_kwds);
      switch (pos_args) {
        case  0:
        if (likely((values[0] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_method)) != 0)) kw_args--;
        else goto __pyx_L5_argtuple_error;
        CYTHON_FALLTHROUGH;
        case  1:
        if (likely((values[1] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_invocation_metadata)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("__cinit__", 1, 2, 2, 1); __PYX_ERR(10, 36, __pyx_L3_error)
        }
      }
      if (unlikely(kw_args > 0)) {
        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "__cinit__") < 0)) __PYX_ERR(10, 36, __pyx_L3_error)
      }
    } else if (PyTuple_GET_SIZE(__pyx_args) != 2) {
      goto __pyx_L5_argtuple_error;
    } else {
      values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
      values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
    }
    __pyx_v_method = ((PyObject*)values[0]);
    __pyx_v_invocation_metadata = ((PyObject*)values[1]);
  }
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("__cinit__", 1, 2, 2, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(10, 36, __pyx_L3_error)
  __pyx_L3_error:;
  __Pyx_AddTraceback("grpc._cython.cygrpc._HandlerCallDetails.__cinit__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return -1;
  __pyx_L4_argument_unpacking_done:;
  if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_method), (&PyString_Type), 1, "method", 1))) __PYX_ERR(10, 36, __pyx_L1_error)
  if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_invocation_metadata), (&PyTuple_Type), 1, "invocation_metadata", 1))) __PYX_ERR(10, 36, __pyx_L1_error)
  __pyx_r = __pyx_pf_4grpc_7_cython_6cygrpc_19_HandlerCallDetails___cinit__(((struct __pyx_obj_4grpc_7_cython_6cygrpc__HandlerCallDetails *)__pyx_v_self), __pyx_v_method, __pyx_v_invocation_metadata);

  /* function exit code */
  goto __pyx_L0;
  __pyx_L1_error:;
  __pyx_r = -1;
  __pyx_L0:;
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static int __pyx_pf_4grpc_7_cython_6cygrpc_19_HandlerCallDetails___cinit__(struct __pyx_obj_4grpc_7_cython_6cygrpc__HandlerCallDetails *__pyx_v_self, PyObject *__pyx_v_method, PyObject *__pyx_v_invocation_metadata) {
  int __pyx_r;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__cinit__", 0);

  /* "src/python/grpcio/grpc/_cython/_cygrpc/aio/server.pyx.pxi":37
 * cdef class _HandlerCallDetails:
 *     def __cinit__(self, str method, tuple invocation_metadata):
 *         self.method = method             # <<<<<<<<<<<<<<
 *         self.invocation_metadata = invocation_metadata
 * 
 */
  __Pyx_INCREF(__pyx_v_method);
  __Pyx_GIVEREF(__pyx_v_method);
  __Pyx_GOTREF(__pyx_v_self->method);
  __Pyx_DECREF(__pyx_v_self->method);
  __pyx_v_self->method = __pyx_v_method;

  /* "src/python/grpcio/grpc/_cython/_cygrpc/aio/server.pyx.pxi":38
 *     def __cinit__(self, str method, tuple invocation_metadata):
 *         self.method = method
 *         self.invocation_metadata = invocation_metadata             # <<<<<<<<<<<<<<
 * 
 * 
 */
  __Pyx_INCREF(__pyx_v_invocation_metadata);
  __Pyx_GIVEREF(__pyx_v_invocation_metadata);
  __Pyx_GOTREF(__pyx_v_self->invocation_metadata);
  __Pyx_DECREF(__pyx_v_self->invocation_metadata);
  __pyx_v_self->invocation_metadata = __pyx_v_invocation_metadata;

  /* "src/python/grpcio/grpc/_cython/_cygrpc/aio/server.pyx.pxi":36
 * 
 * cdef class _HandlerCallDetails:
 *     def __cinit__(self, str method, tuple invocation_metadata):             # <<<<<<<<<<<<<<
 *         self.method = method
 *         self.invocation_metadata = invocation_metadata
 */

  /* function exit code */
  __pyx_r = 0;
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "src/python/grpcio/grpc/_cython/_cygrpc/aio/server.pxd.pxi":16
 * 
 * cdef class _HandlerCallDetails:
 *     cdef readonly str method             # <<<<<<<<<<<<<<
 *     cdef readonly tuple invocation_metadata
 * 
 */

/* Python wrapper */
static PyObject *__pyx_pw_4grpc_7_cython_6cygrpc_19_HandlerCallDetails_6method_1__get__(PyObject *__pyx_v_self); /*proto*/
static PyObject *__pyx_pw_4grpc_7_cython_6cygrpc_19_HandlerCallDetails_6method_1__get__(PyObject *__pyx_v_self) {
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__get__ (wrapper)", 0);
  __pyx_r = __pyx_pf_4grpc_7_cython_6cygrpc_19_HandlerCallDetails_6method___get__(((struct __pyx_obj_4grpc_7_cython_6cygrpc__HandlerCallDetails *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_4grpc_7_cython_6cygrpc_19_HandlerCallDetails_6method___get__(struct __pyx_obj_4grpc_7_cython_6cygrpc__HandlerCallDetails *__pyx_v_self) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__get__", 0);
  __Pyx_XDECREF(__pyx_r);
  __Pyx_INCREF(__pyx_v_self->method);
  __pyx_r = __pyx_v_self->method;
  goto __pyx_L0;

  /* function exit code */
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "src/python/grpcio/grpc/_cython/_cygrpc/aio/server.pxd.pxi":17
 * cdef class _HandlerCallDetails:
 *     cdef readonly str method
 *     cdef readonly tuple invocation_metadata             # <<<<<<<<<<<<<<
 * 
 * 
 */

/* Python wrapper */
static PyObject *__pyx_pw_4grpc_7_cython_6cygrpc_19_HandlerCallDetails_19invocation_metadata_1__get__(PyObject *__pyx_v_self); /*proto*/
static PyObject *__pyx_pw_4grpc_7_cython_6cygrpc_19_HandlerCallDetails_19invocation_metadata_1__get__(PyObject *__pyx_v_self) {
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__get__ (wrapper)", 0);
  __pyx_r = __pyx_pf_4grpc_7_cython_6cygrpc_19_HandlerCallDetails_19invocation_metadata___get__(((struct __pyx_obj_4grpc_7_cython_6cygrpc__HandlerCallDetails *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_4grpc_7_cython_6cygrpc_19_HandlerCallDetails_19invocation_metadata___get__(struct __pyx_obj_4grpc_7_cython_6cygrpc__HandlerCallDetails *__pyx_v_self) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__get__", 0);
  __Pyx_XDECREF(__pyx_r);
  __Pyx_INCREF(__pyx_v_self->invocation_metadata);
  __pyx_r = __pyx_v_self->invocation_metadata;
  goto __pyx_L0;

  /* function exit code */
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "(tree fragment)":1
 * def __reduce_cython__(self):             # <<<<<<<<<<<<<<
 *     raise TypeError("no default __reduce__ due to non-trivial __cinit__")
 * def __setstate_cython__(self, __pyx_state):
 */

/* Python wrapper */
static PyObject *__pyx_pw_4grpc_7_cython_6cygrpc_19_HandlerCallDetails_3__reduce_cython__(PyObject *__pyx_v_self, CYTHON_UNUSED PyObject *unused); /*proto*/
static PyObject *__pyx_pw_4grpc_7_cython_6cygrpc_19_HandlerCallDetails_3__reduce_cython__(PyObject *__pyx_v_self, CYTHON_UNUSED PyObject *unused) {
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__reduce_cython__ (wrapper)", 0);
  __pyx_r = __pyx_pf_4grpc_7_cython_6cygrpc_19_HandlerCallDetails_2__reduce_cython__(((struct __pyx_obj_4grpc_7_cython_6cygrpc__HandlerCallDetails *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_4grpc_7_cython_6cygrpc_19_HandlerCallDetails_2__reduce_cython__(CYTHON_UNUSED struct __pyx_obj_4grpc_7_cython_6cygrpc__HandlerCallDetails *__pyx_v_self) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("__reduce_cython__", 0);

  /* "(tree fragment)":2
 * def __reduce_cython__(self):
 *     raise TypeError("no default __reduce__ due to non-trivial __cinit__")             # <<<<<<<<<<<<<<
 * def __setstate_cython__(self, __pyx_state):
 *     raise TypeError("no default __reduce__ due to non-trivial __cinit__")
 */
  __pyx_t_1 = __Pyx_PyObject_Call(__pyx_builtin_TypeError, __pyx_tuple__170, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(11, 2, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_Raise(__pyx_t_1, 0, 0, 0);
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  __PYX_ERR(11, 2, __pyx_L1_error)

  /* "(tree fragment)":1
 * def __reduce_cython__(self):             # <<<<<<<<<<<<<<
 *     raise TypeError("no default __reduce__ due to non-trivial __cinit__")
 * def __setstate_cython__(self, __pyx_state):
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_AddTraceback("grpc._cython.cygrpc._HandlerCallDetails.__reduce_cython__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "(tree fragment)":3
 * def __reduce_cython__(self):
 *     raise TypeError("no default __reduce__ due to non-trivial __cinit__")
 * def __setstate_cython__(self, __pyx_state):             # <<<<<<<<<<<<<<
 *     raise TypeError("no default __reduce__ due to non-trivial __cinit__")
 */

/* Python wrapper */
static PyObject *__pyx_pw_4grpc_7_cython_6cygrpc_19_HandlerCallDetails_5__setstate_cython__(PyObject *__pyx_v_self, PyObject *__pyx_v___pyx_state); /*proto*/
static PyObject *__pyx_pw_4grpc_7_cython_6cygrpc_19_HandlerCallDetails_5__setstate_cython__(PyObject *__pyx_v_self, PyObject *__pyx_v___pyx_state) {
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__setstate_cython__ (wrapper)", 0);
  __pyx_r = __pyx_pf_4grpc_7_cython_6cygrpc_19_HandlerCallDetails_4__setstate_cython__(((struct __pyx_obj_4grpc_7_cython_6cygrpc__HandlerCallDetails *)__pyx_v_self), ((PyObject *)__pyx_v___pyx_state));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_4grpc_7_cython_6cygrpc_19_HandlerCallDetails_4__setstate_cython__(CYTHON_UNUSED struct __pyx_obj_4grpc_7_cython_6cygrpc__HandlerCallDetails *__pyx_v_self, CYTHON_UNUSED PyObject *__pyx_v___pyx_state) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("__setstate_cython__", 0);

  /* "(tree fragment)":4
 *     raise TypeError("no default __reduce__ due to non-trivial __cinit__")
 * def __setstate_cython__(self, __pyx_state):
 *     raise TypeError("no default __reduce__ due to non-trivial __cinit__")             # <<<<<<<<<<<<<<
 */
  __pyx_t_1 = __Pyx_PyObject_Call(__pyx_builtin_TypeError, __pyx_tuple__171, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(11, 4, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_Raise(__pyx_t_1, 0, 0, 0);
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  __PYX_ERR(11, 4, __pyx_L1_error)

  /* "(tree fragment)":3
 * def __reduce_cython__(self):
 *     raise TypeError("no default __reduce__ due to non-trivial __cinit__")
 * def __setstate_cython__(self, __pyx_state):             # <<<<<<<<<<<<<<
 *     raise TypeError("no default __reduce__ due to non-trivial __cinit__")
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_AddTraceback("grpc._cython.cygrpc._HandlerCallDetails.__setstate_cython__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "src/python/grpcio/grpc/_cython/_cygrpc/aio/server.pyx.pxi":47
 * cdef class RPCState:
 * 
 *     def __cinit__(self, AioServer server):             # <<<<<<<<<<<<<<
 *         init_grpc_aio()
 *         self.call = NULL
 */

/* Python wrapper */
static int __pyx_pw_4grpc_7_cython_6cygrpc_8RPCState_1__cinit__(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
static int __pyx_pw_4grpc_7_cython_6cygrpc_8RPCState_1__cinit__(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
  struct __pyx_obj_4grpc_7_cython_6cygrpc_AioServer *__pyx_v_server = 0;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  int __pyx_r;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__cinit__ (wrapper)", 0);
  {
    static PyObject **__pyx_pyargnames[] = {&__pyx_n_s_server,0};
    PyObject* values[1] = {0};
    if (unlikely(__pyx_kwds)) {
      Py_ssize_t kw_args;
      const Py_ssize_t pos_args = PyTuple_GET_SIZE(__pyx_args);
      switch (pos_args) {
        case  1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
        CYTHON_FALLTHROUGH;
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      kw_args = PyDict_Size(__pyx_kwds);
      switch (pos_args) {
        case  0:
        if (likely((values[0] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_server)) != 0)) kw_args--;
        else goto __pyx_L5_argtuple_error;
      }
      if (unlikely(kw_args > 0)) {
        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "__cinit__") < 0)) __PYX_ERR(10, 47, __pyx_L3_error)
      }
    } else if (PyTuple_GET_SIZE(__pyx_args) != 1) {
      goto __pyx_L5_argtuple_error;
    } else {
      values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
    }
    __pyx_v_server = ((struct __pyx_obj_4grpc_7_cython_6cygrpc_AioServer *)values[0]);
  }
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("__cinit__", 1, 1, 1, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(10, 47, __pyx_L3_error)
  __pyx_L3_error:;
  __Pyx_AddTraceback("grpc._cython.cygrpc.RPCState.__cinit__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return -1;
  __pyx_L4_argument_unpacking_done:;
  if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_server), __pyx_ptype_4grpc_7_cython_6cygrpc_AioServer, 1, "server", 0))) __PYX_ERR(10, 47, __pyx_L1_error)
  __pyx_r = __pyx_pf_4grpc_7_cython_6cygrpc_8RPCState___cinit__(((struct __pyx_obj_4grpc_7_cython_6cygrpc_RPCState *)__pyx_v_self), __pyx_v_server);

  /* function exit code */
  goto __pyx_L0;
  __pyx_L1_error:;
  __pyx_r = -1;
  __pyx_L0:;
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static int __pyx_pf_4grpc_7_cython_6cygrpc_8RPCState___cinit__(struct __pyx_obj_4grpc_7_cython_6cygrpc_RPCState *__pyx_v_self, struct __pyx_obj_4grpc_7_cython_6cygrpc_AioServer *__pyx_v_server) {
  int __pyx_r;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  PyObject *__pyx_t_2 = NULL;
  grpc_status_code __pyx_t_3;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("__cinit__", 0);

  /* "src/python/grpcio/grpc/_cython/_cygrpc/aio/server.pyx.pxi":48
 * 
 *     def __cinit__(self, AioServer server):
 *         init_grpc_aio()             # <<<<<<<<<<<<<<
 *         self.call = NULL
 *         self.server = server
 */
  __pyx_t_1 = __pyx_f_4grpc_7_cython_6cygrpc_init_grpc_aio(0); if (unlikely(!__pyx_t_1)) __PYX_ERR(10, 48, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;

  /* "src/python/grpcio/grpc/_cython/_cygrpc/aio/server.pyx.pxi":49
 *     def __cinit__(self, AioServer server):
 *         init_grpc_aio()
 *         self.call = NULL             # <<<<<<<<<<<<<<
 *         self.server = server
 *         grpc_metadata_array_init(&self.request_metadata)
 */
  __pyx_v_self->__pyx_base.call = NULL;

  /* "src/python/grpcio/grpc/_cython/_cygrpc/aio/server.pyx.pxi":50
 *         init_grpc_aio()
 *         self.call = NULL
 *         self.server = server             # <<<<<<<<<<<<<<
 *         grpc_metadata_array_init(&self.request_metadata)
 *         grpc_call_details_init(&self.details)
 */
  __Pyx_INCREF(((PyObject *)__pyx_v_server));
  __Pyx_GIVEREF(((PyObject *)__pyx_v_server));
  __Pyx_GOTREF(__pyx_v_self->server);
  __Pyx_DECREF(((PyObject *)__pyx_v_self->server));
  __pyx_v_self->server = __pyx_v_server;

  /* "src/python/grpcio/grpc/_cython/_cygrpc/aio/server.pyx.pxi":51
 *         self.call = NULL
 *         self.server = server
 *         grpc_metadata_array_init(&self.request_metadata)             # <<<<<<<<<<<<<<
 *         grpc_call_details_init(&self.details)
 *         self.client_closed = False
 */
  grpc_metadata_array_init((&__pyx_v_self->request_metadata));

  /* "src/python/grpcio/grpc/_cython/_cygrpc/aio/server.pyx.pxi":52
 *         self.server = server
 *         grpc_metadata_array_init(&self.request_metadata)
 *         grpc_call_details_init(&self.details)             # <<<<<<<<<<<<<<
 *         self.client_closed = False
 *         self.abort_exception = None
 */
  grpc_call_details_init((&__pyx_v_self->details));

  /* "src/python/grpcio/grpc/_cython/_cygrpc/aio/server.pyx.pxi":53
 *         grpc_metadata_array_init(&self.request_metadata)
 *         grpc_call_details_init(&self.details)
 *         self.client_closed = False             # <<<<<<<<<<<<<<
 *         self.abort_exception = None
 *         self.metadata_sent = False
 */
  __pyx_v_self->client_closed = 0;

  /* "src/python/grpcio/grpc/_cython/_cygrpc/aio/server.pyx.pxi":54
 *         grpc_call_details_init(&self.details)
 *         self.client_closed = False
 *         self.abort_exception = None             # <<<<<<<<<<<<<<
 *         self.metadata_sent = False
 *         self.status_sent = False
 */
  __Pyx_INCREF(Py_None);
  __Pyx_GIVEREF(Py_None);
  __Pyx_GOTREF(__pyx_v_self->abort_exception);
  __Pyx_DECREF(__pyx_v_self->abort_exception);
  __pyx_v_self->abort_exception = Py_None;

  /* "src/python/grpcio/grpc/_cython/_cygrpc/aio/server.pyx.pxi":55
 *         self.client_closed = False
 *         self.abort_exception = None
 *         self.metadata_sent = False             # <<<<<<<<<<<<<<
 *         self.status_sent = False
 *         self.status_code = StatusCode.ok
 */
  __pyx_v_self->metadata_sent = 0;

  /* "src/python/grpcio/grpc/_cython/_cygrpc/aio/server.pyx.pxi":56
 *         self.abort_exception = None
 *         self.metadata_sent = False
 *         self.status_sent = False             # <<<<<<<<<<<<<<
 *         self.status_code = StatusCode.ok
 *         self.status_details = ''
 */
  __pyx_v_self->status_sent = 0;

  /* "src/python/grpcio/grpc/_cython/_cygrpc/aio/server.pyx.pxi":57
 *         self.metadata_sent = False
 *         self.status_sent = False
 *         self.status_code = StatusCode.ok             # <<<<<<<<<<<<<<
 *         self.status_details = ''
 *         self.trailing_metadata = _IMMUTABLE_EMPTY_METADATA
 */
  __Pyx_GetModuleGlobalName(__pyx_t_1, __pyx_n_s_StatusCode); if (unlikely(!__pyx_t_1)) __PYX_ERR(10, 57, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_t_1, __pyx_n_s_ok); if (unlikely(!__pyx_t_2)) __PYX_ERR(10, 57, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  __pyx_t_3 = ((grpc_status_code)__Pyx_PyInt_As_grpc_status_code(__pyx_t_2)); if (unlikely(PyErr_Occurred())) __PYX_ERR(10, 57, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  __pyx_v_self->status_code = __pyx_t_3;

  /* "src/python/grpcio/grpc/_cython/_cygrpc/aio/server.pyx.pxi":58
 *         self.status_sent = False
 *         self.status_code = StatusCode.ok
 *         self.status_details = ''             # <<<<<<<<<<<<<<
 *         self.trailing_metadata = _IMMUTABLE_EMPTY_METADATA
 *         self.compression_algorithm = None
 */
  __Pyx_INCREF(__pyx_kp_s_);
  __Pyx_GIVEREF(__pyx_kp_s_);
  __Pyx_GOTREF(__pyx_v_self->status_details);
  __Pyx_DECREF(__pyx_v_self->status_details);
  __pyx_v_self->status_details = __pyx_kp_s_;

  /* "src/python/grpcio/grpc/_cython/_cygrpc/aio/server.pyx.pxi":59
 *         self.status_code = StatusCode.ok
 *         self.status_details = ''
 *         self.trailing_metadata = _IMMUTABLE_EMPTY_METADATA             # <<<<<<<<<<<<<<
 *         self.compression_algorithm = None
 *         self.disable_next_compression = False
 */
  __Pyx_GetModuleGlobalName(__pyx_t_2, __pyx_n_s_IMMUTABLE_EMPTY_METADATA); if (unlikely(!__pyx_t_2)) __PYX_ERR(10, 59, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  if (!(likely(PyTuple_CheckExact(__pyx_t_2))||((__pyx_t_2) == Py_None)||(PyErr_Format(PyExc_TypeError, "Expected %.16s, got %.200s", "tuple", Py_TYPE(__pyx_t_2)->tp_name), 0))) __PYX_ERR(10, 59, __pyx_L1_error)
  __Pyx_GIVEREF(__pyx_t_2);
  __Pyx_GOTREF(__pyx_v_self->trailing_metadata);
  __Pyx_DECREF(__pyx_v_self->trailing_metadata);
  __pyx_v_self->trailing_metadata = ((PyObject*)__pyx_t_2);
  __pyx_t_2 = 0;

  /* "src/python/grpcio/grpc/_cython/_cygrpc/aio/server.pyx.pxi":60
 *         self.status_details = ''
 *         self.trailing_metadata = _IMMUTABLE_EMPTY_METADATA
 *         self.compression_algorithm = None             # <<<<<<<<<<<<<<
 *         self.disable_next_compression = False
 * 
 */
  __Pyx_INCREF(Py_None);
  __Pyx_GIVEREF(Py_None);
  __Pyx_GOTREF(__pyx_v_self->compression_algorithm);
  __Pyx_DECREF(__pyx_v_self->compression_algorithm);
  __pyx_v_self->compression_algorithm = Py_None;

  /* "src/python/grpcio/grpc/_cython/_cygrpc/aio/server.pyx.pxi":61
 *         self.trailing_metadata = _IMMUTABLE_EMPTY_METADATA
 *         self.compression_algorithm = None
 *         self.disable_next_compression = False             # <<<<<<<<<<<<<<
 * 
 *     cdef bytes method(self):
 */
  __pyx_v_self->disable_next_compression = 0;

  /* "src/python/grpcio/grpc/_cython/_cygrpc/aio/server.pyx.pxi":47
 * cdef class RPCState:
 * 
 *     def __cinit__(self, AioServer server):             # <<<<<<<<<<<<<<
 *         init_grpc_aio()
 *         self.call = NULL
 */

  /* function exit code */
  __pyx_r = 0;
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_AddTraceback("grpc._cython.cygrpc.RPCState.__cinit__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = -1;
  __pyx_L0:;
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "src/python/grpcio/grpc/_cython/_cygrpc/aio/server.pyx.pxi":63
 *         self.disable_next_compression = False
 * 
 *     cdef bytes method(self):             # <<<<<<<<<<<<<<
 *         return _slice_bytes(self.details.method)
 * 
 */

static PyObject *__pyx_f_4grpc_7_cython_6cygrpc_8RPCState_method(struct __pyx_obj_4grpc_7_cython_6cygrpc_RPCState *__pyx_v_self) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("method", 0);

  /* "src/python/grpcio/grpc/_cython/_cygrpc/aio/server.pyx.pxi":64
 * 
 *     cdef bytes method(self):
 *         return _slice_bytes(self.details.method)             # <<<<<<<<<<<<<<
 * 
 *     cdef tuple invocation_metadata(self):
 */
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_1 = __pyx_f_4grpc_7_cython_6cygrpc__slice_bytes(__pyx_v_self->details.method); if (unlikely(!__pyx_t_1)) __PYX_ERR(10, 64, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_r = ((PyObject*)__pyx_t_1);
  __pyx_t_1 = 0;
  goto __pyx_L0;

  /* "src/python/grpcio/grpc/_cython/_cygrpc/aio/server.pyx.pxi":63
 *         self.disable_next_compression = False
 * 
 *     cdef bytes method(self):             # <<<<<<<<<<<<<<
 *         return _slice_bytes(self.details.method)
 * 
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_AddTraceback("grpc._cython.cygrpc.RPCState.method", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = 0;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "src/python/grpcio/grpc/_cython/_cygrpc/aio/server.pyx.pxi":66
 *         return _slice_bytes(self.details.method)
 * 
 *     cdef tuple invocation_metadata(self):             # <<<<<<<<<<<<<<
 *         return _metadata(&self.request_metadata)
 * 
 */

static PyObject *__pyx_f_4grpc_7_cython_6cygrpc_8RPCState_invocation_metadata(struct __pyx_obj_4grpc_7_cython_6cygrpc_RPCState *__pyx_v_self) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("invocation_metadata", 0);

  /* "src/python/grpcio/grpc/_cython/_cygrpc/aio/server.pyx.pxi":67
 * 
 *     cdef tuple invocation_metadata(self):
 *         return _metadata(&self.request_metadata)             # <<<<<<<<<<<<<<
 * 
 *     cdef void raise_for_termination(self) except *:
 */
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_1 = __pyx_f_4grpc_7_cython_6cygrpc__metadata((&__pyx_v_self->request_metadata)); if (unlikely(!__pyx_t_1)) __PYX_ERR(10, 67, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_r = ((PyObject*)__pyx_t_1);
  __pyx_t_1 = 0;
  goto __pyx_L0;

  /* "src/python/grpcio/grpc/_cython/_cygrpc/aio/server.pyx.pxi":66
 *         return _slice_bytes(self.details.method)
 * 
 *     cdef tuple invocation_metadata(self):             # <<<<<<<<<<<<<<
 *         return _metadata(&self.request_metadata)
 * 
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_AddTraceback("grpc._cython.cygrpc.RPCState.invocation_metadata", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = 0;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "src/python/grpcio/grpc/_cython/_cygrpc/aio/server.pyx.pxi":69
 *         return _metadata(&self.request_metadata)
 * 
 *     cdef void raise_for_termination(self) except *:             # <<<<<<<<<<<<<<
 *         """Raise exceptions if RPC is not running.
 * 
 */

static void __pyx_f_4grpc_7_cython_6cygrpc_8RPCState_raise_for_termination(struct __pyx_obj_4grpc_7_cython_6cygrpc_RPCState *__pyx_v_self) {
  __Pyx_RefNannyDeclarations
  int __pyx_t_1;
  int __pyx_t_2;
  PyObject *__pyx_t_3 = NULL;
  PyObject *__pyx_t_4 = NULL;
  PyObject *__pyx_t_5 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("raise_for_termination", 0);

  /* "src/python/grpcio/grpc/_cython/_cygrpc/aio/server.pyx.pxi":79
 *         into Core functions, otherwise, segfault.
 *         """
 *         if self.abort_exception is not None:             # <<<<<<<<<<<<<<
 *             raise self.abort_exception
 *         if self.status_sent:
 */
  __pyx_t_1 = (__pyx_v_self->abort_exception != Py_None);
  __pyx_t_2 = (__pyx_t_1 != 0);
  if (unlikely(__pyx_t_2)) {

    /* "src/python/grpcio/grpc/_cython/_cygrpc/aio/server.pyx.pxi":80
 *         """
 *         if self.abort_exception is not None:
 *             raise self.abort_exception             # <<<<<<<<<<<<<<
 *         if self.status_sent:
 *             raise UsageError(_RPC_FINISHED_DETAILS)
 */
    __Pyx_Raise(__pyx_v_self->abort_exception, 0, 0, 0);
    __PYX_ERR(10, 80, __pyx_L1_error)

    /* "src/python/grpcio/grpc/_cython/_cygrpc/aio/server.pyx.pxi":79
 *         into Core functions, otherwise, segfault.
 *         """
 *         if self.abort_exception is not None:             # <<<<<<<<<<<<<<
 *             raise self.abort_exception
 *         if self.status_sent:
 */
  }

  /* "src/python/grpcio/grpc/_cython/_cygrpc/aio/server.pyx.pxi":81
 *         if self.abort_exception is not None:
 *             raise self.abort_exception
 *         if self.status_sent:             # <<<<<<<<<<<<<<
 *             raise UsageError(_RPC_FINISHED_DETAILS)
 *         if self.server._status == AIO_SERVER_STATUS_STOPPED:
 */
  __pyx_t_2 = (__pyx_v_self->status_sent != 0);
  if (unlikely(__pyx_t_2)) {

    /* "src/python/grpcio/grpc/_cython/_cygrpc/aio/server.pyx.pxi":82
 *             raise self.abort_exception
 *         if self.status_sent:
 *             raise UsageError(_RPC_FINISHED_DETAILS)             # <<<<<<<<<<<<<<
 *         if self.server._status == AIO_SERVER_STATUS_STOPPED:
 *             raise _ServerStoppedError(_SERVER_STOPPED_DETAILS)
 */
    __Pyx_GetModuleGlobalName(__pyx_t_4, __pyx_n_s_UsageError); if (unlikely(!__pyx_t_4)) __PYX_ERR(10, 82, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_4);
    __pyx_t_5 = NULL;
    if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_4))) {
      __pyx_t_5 = PyMethod_GET_SELF(__pyx_t_4);
      if (likely(__pyx_t_5)) {
        PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_4);
        __Pyx_INCREF(__pyx_t_5);
        __Pyx_INCREF(function);
        __Pyx_DECREF_SET(__pyx_t_4, function);
      }
    }
    __pyx_t_3 = (__pyx_t_5) ? __Pyx_PyObject_Call2Args(__pyx_t_4, __pyx_t_5, __pyx_v_4grpc_7_cython_6cygrpc__RPC_FINISHED_DETAILS) : __Pyx_PyObject_CallOneArg(__pyx_t_4, __pyx_v_4grpc_7_cython_6cygrpc__RPC_FINISHED_DETAILS);
    __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0;
    if (unlikely(!__pyx_t_3)) __PYX_ERR(10, 82, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_3);
    __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
    __Pyx_Raise(__pyx_t_3, 0, 0, 0);
    __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
    __PYX_ERR(10, 82, __pyx_L1_error)

    /* "src/python/grpcio/grpc/_cython/_cygrpc/aio/server.pyx.pxi":81
 *         if self.abort_exception is not None:
 *             raise self.abort_exception
 *         if self.status_sent:             # <<<<<<<<<<<<<<
 *             raise UsageError(_RPC_FINISHED_DETAILS)
 *         if self.server._status == AIO_SERVER_STATUS_STOPPED:
 */
  }

  /* "src/python/grpcio/grpc/_cython/_cygrpc/aio/server.pyx.pxi":83
 *         if self.status_sent:
 *             raise UsageError(_RPC_FINISHED_DETAILS)
 *         if self.server._status == AIO_SERVER_STATUS_STOPPED:             # <<<<<<<<<<<<<<
 *             raise _ServerStoppedError(_SERVER_STOPPED_DETAILS)
 * 
 */
  __pyx_t_2 = ((__pyx_v_self->server->_status == __pyx_e_4grpc_7_cython_6cygrpc_AIO_SERVER_STATUS_STOPPED) != 0);
  if (unlikely(__pyx_t_2)) {

    /* "src/python/grpcio/grpc/_cython/_cygrpc/aio/server.pyx.pxi":84
 *             raise UsageError(_RPC_FINISHED_DETAILS)
 *         if self.server._status == AIO_SERVER_STATUS_STOPPED:
 *             raise _ServerStoppedError(_SERVER_STOPPED_DETAILS)             # <<<<<<<<<<<<<<
 * 
 *     cdef int get_write_flag(self):
 */
    __Pyx_GetModuleGlobalName(__pyx_t_4, __pyx_n_s_ServerStoppedError); if (unlikely(!__pyx_t_4)) __PYX_ERR(10, 84, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_4);
    __pyx_t_5 = NULL;
    if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_4))) {
      __pyx_t_5 = PyMethod_GET_SELF(__pyx_t_4);
      if (likely(__pyx_t_5)) {
        PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_4);
        __Pyx_INCREF(__pyx_t_5);
        __Pyx_INCREF(function);
        __Pyx_DECREF_SET(__pyx_t_4, function);
      }
    }
    __pyx_t_3 = (__pyx_t_5) ? __Pyx_PyObject_Call2Args(__pyx_t_4, __pyx_t_5, __pyx_v_4grpc_7_cython_6cygrpc__SERVER_STOPPED_DETAILS) : __Pyx_PyObject_CallOneArg(__pyx_t_4, __pyx_v_4grpc_7_cython_6cygrpc__SERVER_STOPPED_DETAILS);
    __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0;
    if (unlikely(!__pyx_t_3)) __PYX_ERR(10, 84, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_3);
    __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
    __Pyx_Raise(__pyx_t_3, 0, 0, 0);
    __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
    __PYX_ERR(10, 84, __pyx_L1_error)

    /* "src/python/grpcio/grpc/_cython/_cygrpc/aio/server.pyx.pxi":83
 *         if self.status_sent:
 *             raise UsageError(_RPC_FINISHED_DETAILS)
 *         if self.server._status == AIO_SERVER_STATUS_STOPPED:             # <<<<<<<<<<<<<<
 *             raise _ServerStoppedError(_SERVER_STOPPED_DETAILS)
 * 
 */
  }

  /* "src/python/grpcio/grpc/_cython/_cygrpc/aio/server.pyx.pxi":69
 *         return _metadata(&self.request_metadata)
 * 
 *     cdef void raise_for_termination(self) except *:             # <<<<<<<<<<<<<<
 *         """Raise exceptions if RPC is not running.
 * 
 */

  /* function exit code */
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_3);
  __Pyx_XDECREF(__pyx_t_4);
  __Pyx_XDECREF(__pyx_t_5);
  __Pyx_AddTraceback("grpc._cython.cygrpc.RPCState.raise_for_termination", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_L0:;
  __Pyx_RefNannyFinishContext();
}

/* "src/python/grpcio/grpc/_cython/_cygrpc/aio/server.pyx.pxi":86
 *             raise _ServerStoppedError(_SERVER_STOPPED_DETAILS)
 * 
 *     cdef int get_write_flag(self):             # <<<<<<<<<<<<<<
 *         if self.disable_next_compression:
 *             self.disable_next_compression = False
 */

static int __pyx_f_4grpc_7_cython_6cygrpc_8RPCState_get_write_flag(struct __pyx_obj_4grpc_7_cython_6cygrpc_RPCState *__pyx_v_self) {
  int __pyx_r;
  __Pyx_RefNannyDeclarations
  int __pyx_t_1;
  PyObject *__pyx_t_2 = NULL;
  PyObject *__pyx_t_3 = NULL;
  int __pyx_t_4;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("get_write_flag", 0);

  /* "src/python/grpcio/grpc/_cython/_cygrpc/aio/server.pyx.pxi":87
 * 
 *     cdef int get_write_flag(self):
 *         if self.disable_next_compression:             # <<<<<<<<<<<<<<
 *             self.disable_next_compression = False
 *             return WriteFlag.no_compress
 */
  __pyx_t_1 = (__pyx_v_self->disable_next_compression != 0);
  if (__pyx_t_1) {

    /* "src/python/grpcio/grpc/_cython/_cygrpc/aio/server.pyx.pxi":88
 *     cdef int get_write_flag(self):
 *         if self.disable_next_compression:
 *             self.disable_next_compression = False             # <<<<<<<<<<<<<<
 *             return WriteFlag.no_compress
 *         else:
 */
    __pyx_v_self->disable_next_compression = 0;

    /* "src/python/grpcio/grpc/_cython/_cygrpc/aio/server.pyx.pxi":89
 *         if self.disable_next_compression:
 *             self.disable_next_compression = False
 *             return WriteFlag.no_compress             # <<<<<<<<<<<<<<
 *         else:
 *             return _EMPTY_FLAG
 */
    __Pyx_GetModuleGlobalName(__pyx_t_2, __pyx_n_s_WriteFlag); if (unlikely(!__pyx_t_2)) __PYX_ERR(10, 89, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_2);
    __pyx_t_3 = __Pyx_PyObject_GetAttrStr(__pyx_t_2, __pyx_n_s_no_compress); if (unlikely(!__pyx_t_3)) __PYX_ERR(10, 89, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_3);
    __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
    __pyx_t_4 = __Pyx_PyInt_As_int(__pyx_t_3); if (unlikely((__pyx_t_4 == (int)-1) && PyErr_Occurred())) __PYX_ERR(10, 89, __pyx_L1_error)
    __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
    __pyx_r = __pyx_t_4;
    goto __pyx_L0;

    /* "src/python/grpcio/grpc/_cython/_cygrpc/aio/server.pyx.pxi":87
 * 
 *     cdef int get_write_flag(self):
 *         if self.disable_next_compression:             # <<<<<<<<<<<<<<
 *             self.disable_next_compression = False
 *             return WriteFlag.no_compress
 */
  }

  /* "src/python/grpcio/grpc/_cython/_cygrpc/aio/server.pyx.pxi":91
 *             return WriteFlag.no_compress
 *         else:
 *             return _EMPTY_FLAG             # <<<<<<<<<<<<<<
 * 
 *     cdef Operation create_send_initial_metadata_op_if_not_sent(self):
 */
  /*else*/ {
    __pyx_r = __pyx_v_4grpc_7_cython_6cygrpc__EMPTY_FLAG;
    goto __pyx_L0;
  }

  /* "src/python/grpcio/grpc/_cython/_cygrpc/aio/server.pyx.pxi":86
 *             raise _ServerStoppedError(_SERVER_STOPPED_DETAILS)
 * 
 *     cdef int get_write_flag(self):             # <<<<<<<<<<<<<<
 *         if self.disable_next_compression:
 *             self.disable_next_compression = False
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_XDECREF(__pyx_t_3);
  __Pyx_WriteUnraisable("grpc._cython.cygrpc.RPCState.get_write_flag", __pyx_clineno, __pyx_lineno, __pyx_filename, 1, 0);
  __pyx_r = 0;
  __pyx_L0:;
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "src/python/grpcio/grpc/_cython/_cygrpc/aio/server.pyx.pxi":93
 *             return _EMPTY_FLAG
 * 
 *     cdef Operation create_send_initial_metadata_op_if_not_sent(self):             # <<<<<<<<<<<<<<
 *         cdef SendInitialMetadataOperation op
 *         if self.metadata_sent:
 */

static struct __pyx_obj_4grpc_7_cython_6cygrpc_Operation *__pyx_f_4grpc_7_cython_6cygrpc_8RPCState_create_send_initial_metadata_op_if_not_sent(struct __pyx_obj_4grpc_7_cython_6cygrpc_RPCState *__pyx_v_self) {
  struct __pyx_obj_4grpc_7_cython_6cygrpc_SendInitialMetadataOperation *__pyx_v_op = 0;
  struct __pyx_obj_4grpc_7_cython_6cygrpc_Operation *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  int __pyx_t_1;
  PyObject *__pyx_t_2 = NULL;
  PyObject *__pyx_t_3 = NULL;
  PyObject *__pyx_t_4 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("create_send_initial_metadata_op_if_not_sent", 0);

  /* "src/python/grpcio/grpc/_cython/_cygrpc/aio/server.pyx.pxi":95
 *     cdef Operation create_send_initial_metadata_op_if_not_sent(self):
 *         cdef SendInitialMetadataOperation op
 *         if self.metadata_sent:             # <<<<<<<<<<<<<<
 *             return None
 *         else:
 */
  __pyx_t_1 = (__pyx_v_self->metadata_sent != 0);
  if (__pyx_t_1) {

    /* "src/python/grpcio/grpc/_cython/_cygrpc/aio/server.pyx.pxi":96
 *         cdef SendInitialMetadataOperation op
 *         if self.metadata_sent:
 *             return None             # <<<<<<<<<<<<<<
 *         else:
 *             op = SendInitialMetadataOperation(
 */
    __Pyx_XDECREF(((PyObject *)__pyx_r));
    __pyx_r = ((struct __pyx_obj_4grpc_7_cython_6cygrpc_Operation *)Py_None); __Pyx_INCREF(Py_None);
    goto __pyx_L0;

    /* "src/python/grpcio/grpc/_cython/_cygrpc/aio/server.pyx.pxi":95
 *     cdef Operation create_send_initial_metadata_op_if_not_sent(self):
 *         cdef SendInitialMetadataOperation op
 *         if self.metadata_sent:             # <<<<<<<<<<<<<<
 *             return None
 *         else:
 */
  }

  /* "src/python/grpcio/grpc/_cython/_cygrpc/aio/server.pyx.pxi":98
 *             return None
 *         else:
 *             op = SendInitialMetadataOperation(             # <<<<<<<<<<<<<<
 *                 _augment_metadata(_IMMUTABLE_EMPTY_METADATA, self.compression_algorithm),
 *                 _EMPTY_FLAG
 */
  /*else*/ {

    /* "src/python/grpcio/grpc/_cython/_cygrpc/aio/server.pyx.pxi":99
 *         else:
 *             op = SendInitialMetadataOperation(
 *                 _augment_metadata(_IMMUTABLE_EMPTY_METADATA, self.compression_algorithm),             # <<<<<<<<<<<<<<
 *                 _EMPTY_FLAG
 *             )
 */
    __Pyx_GetModuleGlobalName(__pyx_t_2, __pyx_n_s_IMMUTABLE_EMPTY_METADATA); if (unlikely(!__pyx_t_2)) __PYX_ERR(10, 99, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_2);
    if (!(likely(PyTuple_CheckExact(__pyx_t_2))||((__pyx_t_2) == Py_None)||(PyErr_Format(PyExc_TypeError, "Expected %.16s, got %.200s", "tuple", Py_TYPE(__pyx_t_2)->tp_name), 0))) __PYX_ERR(10, 99, __pyx_L1_error)
    __pyx_t_3 = __pyx_v_self->compression_algorithm;
    __Pyx_INCREF(__pyx_t_3);
    __pyx_t_4 = __pyx_f_4grpc_7_cython_6cygrpc__augment_metadata(((PyObject*)__pyx_t_2), __pyx_t_3); if (unlikely(!__pyx_t_4)) __PYX_ERR(10, 99, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_4);
    __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
    __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;

    /* "src/python/grpcio/grpc/_cython/_cygrpc/aio/server.pyx.pxi":100
 *             op = SendInitialMetadataOperation(
 *                 _augment_metadata(_IMMUTABLE_EMPTY_METADATA, self.compression_algorithm),
 *                 _EMPTY_FLAG             # <<<<<<<<<<<<<<
 *             )
 *             return op
 */
    __pyx_t_3 = __Pyx_PyInt_From_int(__pyx_v_4grpc_7_cython_6cygrpc__EMPTY_FLAG); if (unlikely(!__pyx_t_3)) __PYX_ERR(10, 100, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_3);

    /* "src/python/grpcio/grpc/_cython/_cygrpc/aio/server.pyx.pxi":98
 *             return None
 *         else:
 *             op = SendInitialMetadataOperation(             # <<<<<<<<<<<<<<
 *                 _augment_metadata(_IMMUTABLE_EMPTY_METADATA, self.compression_algorithm),
 *                 _EMPTY_FLAG
 */
    __pyx_t_2 = PyTuple_New(2); if (unlikely(!__pyx_t_2)) __PYX_ERR(10, 98, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_2);
    __Pyx_GIVEREF(__pyx_t_4);
    PyTuple_SET_ITEM(__pyx_t_2, 0, __pyx_t_4);
    __Pyx_GIVEREF(__pyx_t_3);
    PyTuple_SET_ITEM(__pyx_t_2, 1, __pyx_t_3);
    __pyx_t_4 = 0;
    __pyx_t_3 = 0;
    __pyx_t_3 = __Pyx_PyObject_Call(((PyObject *)__pyx_ptype_4grpc_7_cython_6cygrpc_SendInitialMetadataOperation), __pyx_t_2, NULL); if (unlikely(!__pyx_t_3)) __PYX_ERR(10, 98, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_3);
    __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
    __pyx_v_op = ((struct __pyx_obj_4grpc_7_cython_6cygrpc_SendInitialMetadataOperation *)__pyx_t_3);
    __pyx_t_3 = 0;

    /* "src/python/grpcio/grpc/_cython/_cygrpc/aio/server.pyx.pxi":102
 *                 _EMPTY_FLAG
 *             )
 *             return op             # <<<<<<<<<<<<<<
 * 
 *     def __dealloc__(self):
 */
    __Pyx_XDECREF(((PyObject *)__pyx_r));
    __Pyx_INCREF(((PyObject *)__pyx_v_op));
    __pyx_r = ((struct __pyx_obj_4grpc_7_cython_6cygrpc_Operation *)__pyx_v_op);
    goto __pyx_L0;
  }

  /* "src/python/grpcio/grpc/_cython/_cygrpc/aio/server.pyx.pxi":93
 *             return _EMPTY_FLAG
 * 
 *     cdef Operation create_send_initial_metadata_op_if_not_sent(self):             # <<<<<<<<<<<<<<
 *         cdef SendInitialMetadataOperation op
 *         if self.metadata_sent:
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_XDECREF(__pyx_t_3);
  __Pyx_XDECREF(__pyx_t_4);
  __Pyx_AddTraceback("grpc._cython.cygrpc.RPCState.create_send_initial_metadata_op_if_not_sent", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = 0;
  __pyx_L0:;
  __Pyx_XDECREF((PyObject *)__pyx_v_op);
  __Pyx_XGIVEREF((PyObject *)__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "src/python/grpcio/grpc/_cython/_cygrpc/aio/server.pyx.pxi":104
 *             return op
 * 
 *     def __dealloc__(self):             # <<<<<<<<<<<<<<
 *         """Cleans the Core objects."""
 *         grpc_call_details_destroy(&self.details)
 */

/* Python wrapper */
static void __pyx_pw_4grpc_7_cython_6cygrpc_8RPCState_3__dealloc__(PyObject *__pyx_v_self); /*proto*/
static void __pyx_pw_4grpc_7_cython_6cygrpc_8RPCState_3__dealloc__(PyObject *__pyx_v_self) {
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__dealloc__ (wrapper)", 0);
  __pyx_pf_4grpc_7_cython_6cygrpc_8RPCState_2__dealloc__(((struct __pyx_obj_4grpc_7_cython_6cygrpc_RPCState *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
}

static void __pyx_pf_4grpc_7_cython_6cygrpc_8RPCState_2__dealloc__(struct __pyx_obj_4grpc_7_cython_6cygrpc_RPCState *__pyx_v_self) {
  __Pyx_RefNannyDeclarations
  int __pyx_t_1;
  PyObject *__pyx_t_2 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("__dealloc__", 0);

  /* "src/python/grpcio/grpc/_cython/_cygrpc/aio/server.pyx.pxi":106
 *     def __dealloc__(self):
 *         """Cleans the Core objects."""
 *         grpc_call_details_destroy(&self.details)             # <<<<<<<<<<<<<<
 *         grpc_metadata_array_destroy(&self.request_metadata)
 *         if self.call:
 */
  grpc_call_details_destroy((&__pyx_v_self->details));

  /* "src/python/grpcio/grpc/_cython/_cygrpc/aio/server.pyx.pxi":107
 *         """Cleans the Core objects."""
 *         grpc_call_details_destroy(&self.details)
 *         grpc_metadata_array_destroy(&self.request_metadata)             # <<<<<<<<<<<<<<
 *         if self.call:
 *             grpc_call_unref(self.call)
 */
  grpc_metadata_array_destroy((&__pyx_v_self->request_metadata));

  /* "src/python/grpcio/grpc/_cython/_cygrpc/aio/server.pyx.pxi":108
 *         grpc_call_details_destroy(&self.details)
 *         grpc_metadata_array_destroy(&self.request_metadata)
 *         if self.call:             # <<<<<<<<<<<<<<
 *             grpc_call_unref(self.call)
 *         shutdown_grpc_aio()
 */
  __pyx_t_1 = (__pyx_v_self->__pyx_base.call != 0);
  if (__pyx_t_1) {

    /* "src/python/grpcio/grpc/_cython/_cygrpc/aio/server.pyx.pxi":109
 *         grpc_metadata_array_destroy(&self.request_metadata)
 *         if self.call:
 *             grpc_call_unref(self.call)             # <<<<<<<<<<<<<<
 *         shutdown_grpc_aio()
 * 
 */
    grpc_call_unref(__pyx_v_self->__pyx_base.call);

    /* "src/python/grpcio/grpc/_cython/_cygrpc/aio/server.pyx.pxi":108
 *         grpc_call_details_destroy(&self.details)
 *         grpc_metadata_array_destroy(&self.request_metadata)
 *         if self.call:             # <<<<<<<<<<<<<<
 *             grpc_call_unref(self.call)
 *         shutdown_grpc_aio()
 */
  }

  /* "src/python/grpcio/grpc/_cython/_cygrpc/aio/server.pyx.pxi":110
 *         if self.call:
 *             grpc_call_unref(self.call)
 *         shutdown_grpc_aio()             # <<<<<<<<<<<<<<
 * 
 * 
 */
  __pyx_t_2 = __pyx_f_4grpc_7_cython_6cygrpc_shutdown_grpc_aio(0); if (unlikely(!__pyx_t_2)) __PYX_ERR(10, 110, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;

  /* "src/python/grpcio/grpc/_cython/_cygrpc/aio/server.pyx.pxi":104
 *             return op
 * 
 *     def __dealloc__(self):             # <<<<<<<<<<<<<<
 *         """Cleans the Core objects."""
 *         grpc_call_details_destroy(&self.details)
 */

  /* function exit code */
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_WriteUnraisable("grpc._cython.cygrpc.RPCState.__dealloc__", __pyx_clineno, __pyx_lineno, __pyx_filename, 1, 0);
  __pyx_L0:;
  __Pyx_RefNannyFinishContext();
}

/* "(tree fragment)":1
 * def __reduce_cython__(self):             # <<<<<<<<<<<<<<
 *     raise TypeError("no default __reduce__ due to non-trivial __cinit__")
 * def __setstate_cython__(self, __pyx_state):
 */

/* Python wrapper */
static PyObject *__pyx_pw_4grpc_7_cython_6cygrpc_8RPCState_5__reduce_cython__(PyObject *__pyx_v_self, CYTHON_UNUSED PyObject *unused); /*proto*/
static PyObject *__pyx_pw_4grpc_7_cython_6cygrpc_8RPCState_5__reduce_cython__(PyObject *__pyx_v_self, CYTHON_UNUSED PyObject *unused) {
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__reduce_cython__ (wrapper)", 0);
  __pyx_r = __pyx_pf_4grpc_7_cython_6cygrpc_8RPCState_4__reduce_cython__(((struct __pyx_obj_4grpc_7_cython_6cygrpc_RPCState *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_4grpc_7_cython_6cygrpc_8RPCState_4__reduce_cython__(CYTHON_UNUSED struct __pyx_obj_4grpc_7_cython_6cygrpc_RPCState *__pyx_v_self) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("__reduce_cython__", 0);

  /* "(tree fragment)":2
 * def __reduce_cython__(self):
 *     raise TypeError("no default __reduce__ due to non-trivial __cinit__")             # <<<<<<<<<<<<<<
 * def __setstate_cython__(self, __pyx_state):
 *     raise TypeError("no default __reduce__ due to non-trivial __cinit__")
 */
  __pyx_t_1 = __Pyx_PyObject_Call(__pyx_builtin_TypeError, __pyx_tuple__172, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(11, 2, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_Raise(__pyx_t_1, 0, 0, 0);
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  __PYX_ERR(11, 2, __pyx_L1_error)

  /* "(tree fragment)":1
 * def __reduce_cython__(self):             # <<<<<<<<<<<<<<
 *     raise TypeError("no default __reduce__ due to non-trivial __cinit__")
 * def __setstate_cython__(self, __pyx_state):
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_AddTraceback("grpc._cython.cygrpc.RPCState.__reduce_cython__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "(tree fragment)":3
 * def __reduce_cython__(self):
 *     raise TypeError("no default __reduce__ due to non-trivial __cinit__")
 * def __setstate_cython__(self, __pyx_state):             # <<<<<<<<<<<<<<
 *     raise TypeError("no default __reduce__ due to non-trivial __cinit__")
 */

/* Python wrapper */
static PyObject *__pyx_pw_4grpc_7_cython_6cygrpc_8RPCState_7__setstate_cython__(PyObject *__pyx_v_self, PyObject *__pyx_v___pyx_state); /*proto*/
static PyObject *__pyx_pw_4grpc_7_cython_6cygrpc_8RPCState_7__setstate_cython__(PyObject *__pyx_v_self, PyObject *__pyx_v___pyx_state) {
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__setstate_cython__ (wrapper)", 0);
  __pyx_r = __pyx_pf_4grpc_7_cython_6cygrpc_8RPCState_6__setstate_cython__(((struct __pyx_obj_4grpc_7_cython_6cygrpc_RPCState *)__pyx_v_self), ((PyObject *)__pyx_v___pyx_state));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_4grpc_7_cython_6cygrpc_8RPCState_6__setstate_cython__(CYTHON_UNUSED struct __pyx_obj_4grpc_7_cython_6cygrpc_RPCState *__pyx_v_self, CYTHON_UNUSED PyObject *__pyx_v___pyx_state) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("__setstate_cython__", 0);

  /* "(tree fragment)":4
 *     raise TypeError("no default __reduce__ due to non-trivial __cinit__")
 * def __setstate_cython__(self, __pyx_state):
 *     raise TypeError("no default __reduce__ due to non-trivial __cinit__")             # <<<<<<<<<<<<<<
 */
  __pyx_t_1 = __Pyx_PyObject_Call(__pyx_builtin_TypeError, __pyx_tuple__173, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(11, 4, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_Raise(__pyx_t_1, 0, 0, 0);
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  __PYX_ERR(11, 4, __pyx_L1_error)

  /* "(tree fragment)":3
 * def __reduce_cython__(self):
 *     raise TypeError("no default __reduce__ due to non-trivial __cinit__")
 * def __setstate_cython__(self, __pyx_state):             # <<<<<<<<<<<<<<
 *     raise TypeError("no default __reduce__ due to non-trivial __cinit__")
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_AddTraceback("grpc._cython.cygrpc.RPCState.__setstate_cython__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "src/python/grpcio/grpc/_cython/_cygrpc/aio/server.pyx.pxi":115
 * cdef class _ServicerContext:
 * 
 *     def __cinit__(self,             # <<<<<<<<<<<<<<
 *                   RPCState rpc_state,
 *                   object request_deserializer,
 */

/* Python wrapper */
static int __pyx_pw_4grpc_7_cython_6cygrpc_16_ServicerContext_1__cinit__(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
static int __pyx_pw_4grpc_7_cython_6cygrpc_16_ServicerContext_1__cinit__(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
  struct __pyx_obj_4grpc_7_cython_6cygrpc_RPCState *__pyx_v_rpc_state = 0;
  PyObject *__pyx_v_request_deserializer = 0;
  PyObject *__pyx_v_response_serializer = 0;
  PyObject *__pyx_v_loop = 0;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  int __pyx_r;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__cinit__ (wrapper)", 0);
  {
    static PyObject **__pyx_pyargnames[] = {&__pyx_n_s_rpc_state,&__pyx_n_s_request_deserializer,&__pyx_n_s_response_serializer,&__pyx_n_s_loop,0};
    PyObject* values[4] = {0,0,0,0};
    if (unlikely(__pyx_kwds)) {
      Py_ssize_t kw_args;
      const Py_ssize_t pos_args = PyTuple_GET_SIZE(__pyx_args);
      switch (pos_args) {
        case  4: values[3] = PyTuple_GET_ITEM(__pyx_args, 3);
        CYTHON_FALLTHROUGH;
        case  3: values[2] = PyTuple_GET_ITEM(__pyx_args, 2);
        CYTHON_FALLTHROUGH;
        case  2: values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
        CYTHON_FALLTHROUGH;
        case  1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
        CYTHON_FALLTHROUGH;
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      kw_args = PyDict_Size(__pyx_kwds);
      switch (pos_args) {
        case  0:
        if (likely((values[0] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_rpc_state)) != 0)) kw_args--;
        else goto __pyx_L5_argtuple_error;
        CYTHON_FALLTHROUGH;
        case  1:
        if (likely((values[1] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_request_deserializer)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("__cinit__", 1, 4, 4, 1); __PYX_ERR(10, 115, __pyx_L3_error)
        }
        CYTHON_FALLTHROUGH;
        case  2:
        if (likely((values[2] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_response_serializer)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("__cinit__", 1, 4, 4, 2); __PYX_ERR(10, 115, __pyx_L3_error)
        }
        CYTHON_FALLTHROUGH;
        case  3:
        if (likely((values[3] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_loop)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("__cinit__", 1, 4, 4, 3); __PYX_ERR(10, 115, __pyx_L3_error)
        }
      }
      if (unlikely(kw_args > 0)) {
        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "__cinit__") < 0)) __PYX_ERR(10, 115, __pyx_L3_error)
      }
    } else if (PyTuple_GET_SIZE(__pyx_args) != 4) {
      goto __pyx_L5_argtuple_error;
    } else {
      values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
      values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
      values[2] = PyTuple_GET_ITEM(__pyx_args, 2);
      values[3] = PyTuple_GET_ITEM(__pyx_args, 3);
    }
    __pyx_v_rpc_state = ((struct __pyx_obj_4grpc_7_cython_6cygrpc_RPCState *)values[0]);
    __pyx_v_request_deserializer = values[1];
    __pyx_v_response_serializer = values[2];
    __pyx_v_loop = values[3];
  }
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("__cinit__", 1, 4, 4, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(10, 115, __pyx_L3_error)
  __pyx_L3_error:;
  __Pyx_AddTraceback("grpc._cython.cygrpc._ServicerContext.__cinit__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return -1;
  __pyx_L4_argument_unpacking_done:;
  if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_rpc_state), __pyx_ptype_4grpc_7_cython_6cygrpc_RPCState, 1, "rpc_state", 0))) __PYX_ERR(10, 116, __pyx_L1_error)
  __pyx_r = __pyx_pf_4grpc_7_cython_6cygrpc_16_ServicerContext___cinit__(((struct __pyx_obj_4grpc_7_cython_6cygrpc__ServicerContext *)__pyx_v_self), __pyx_v_rpc_state, __pyx_v_request_deserializer, __pyx_v_response_serializer, __pyx_v_loop);

  /* function exit code */
  goto __pyx_L0;
  __pyx_L1_error:;
  __pyx_r = -1;
  __pyx_L0:;
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static int __pyx_pf_4grpc_7_cython_6cygrpc_16_ServicerContext___cinit__(struct __pyx_obj_4grpc_7_cython_6cygrpc__ServicerContext *__pyx_v_self, struct __pyx_obj_4grpc_7_cython_6cygrpc_RPCState *__pyx_v_rpc_state, PyObject *__pyx_v_request_deserializer, PyObject *__pyx_v_response_serializer, PyObject *__pyx_v_loop) {
  int __pyx_r;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__cinit__", 0);

  /* "src/python/grpcio/grpc/_cython/_cygrpc/aio/server.pyx.pxi":120
 *                   object response_serializer,
 *                   object loop):
 *         self._rpc_state = rpc_state             # <<<<<<<<<<<<<<
 *         self._request_deserializer = request_deserializer
 *         self._response_serializer = response_serializer
 */
  __Pyx_INCREF(((PyObject *)__pyx_v_rpc_state));
  __Pyx_GIVEREF(((PyObject *)__pyx_v_rpc_state));
  __Pyx_GOTREF(__pyx_v_self->_rpc_state);
  __Pyx_DECREF(((PyObject *)__pyx_v_self->_rpc_state));
  __pyx_v_self->_rpc_state = __pyx_v_rpc_state;

  /* "src/python/grpcio/grpc/_cython/_cygrpc/aio/server.pyx.pxi":121
 *                   object loop):
 *         self._rpc_state = rpc_state
 *         self._request_deserializer = request_deserializer             # <<<<<<<<<<<<<<
 *         self._response_serializer = response_serializer
 *         self._loop = loop
 */
  __Pyx_INCREF(__pyx_v_request_deserializer);
  __Pyx_GIVEREF(__pyx_v_request_deserializer);
  __Pyx_GOTREF(__pyx_v_self->_request_deserializer);
  __Pyx_DECREF(__pyx_v_self->_request_deserializer);
  __pyx_v_self->_request_deserializer = __pyx_v_request_deserializer;

  /* "src/python/grpcio/grpc/_cython/_cygrpc/aio/server.pyx.pxi":122
 *         self._rpc_state = rpc_state
 *         self._request_deserializer = request_deserializer
 *         self._response_serializer = response_serializer             # <<<<<<<<<<<<<<
 *         self._loop = loop
 * 
 */
  __Pyx_INCREF(__pyx_v_response_serializer);
  __Pyx_GIVEREF(__pyx_v_response_serializer);
  __Pyx_GOTREF(__pyx_v_self->_response_serializer);
  __Pyx_DECREF(__pyx_v_self->_response_serializer);
  __pyx_v_self->_response_serializer = __pyx_v_response_serializer;

  /* "src/python/grpcio/grpc/_cython/_cygrpc/aio/server.pyx.pxi":123
 *         self._request_deserializer = request_deserializer
 *         self._response_serializer = response_serializer
 *         self._loop = loop             # <<<<<<<<<<<<<<
 * 
 *     async def read(self):
 */
  __Pyx_INCREF(__pyx_v_loop);
  __Pyx_GIVEREF(__pyx_v_loop);
  __Pyx_GOTREF(__pyx_v_self->_loop);
  __Pyx_DECREF(__pyx_v_self->_loop);
  __pyx_v_self->_loop = __pyx_v_loop;

  /* "src/python/grpcio/grpc/_cython/_cygrpc/aio/server.pyx.pxi":115
 * cdef class _ServicerContext:
 * 
 *     def __cinit__(self,             # <<<<<<<<<<<<<<
 *                   RPCState rpc_state,
 *                   object request_deserializer,
 */

  /* function exit code */
  __pyx_r = 0;
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}
static PyObject *__pyx_gb_4grpc_7_cython_6cygrpc_16_ServicerContext_4generator19(__pyx_CoroutineObject *__pyx_generator, CYTHON_UNUSED PyThreadState *__pyx_tstate, PyObject *__pyx_sent_value); /* proto */

/* "src/python/grpcio/grpc/_cython/_cygrpc/aio/server.pyx.pxi":125
 *         self._loop = loop
 * 
 *     async def read(self):             # <<<<<<<<<<<<<<
 *         cdef bytes raw_message
 *         self._rpc_state.raise_for_termination()
 */

/* Python wrapper */
static PyObject *__pyx_pw_4grpc_7_cython_6cygrpc_16_ServicerContext_3read(PyObject *__pyx_v_self, CYTHON_UNUSED PyObject *unused); /*proto*/
static PyObject *__pyx_pw_4grpc_7_cython_6cygrpc_16_ServicerContext_3read(PyObject *__pyx_v_self, CYTHON_UNUSED PyObject *unused) {
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("read (wrapper)", 0);
  __pyx_r = __pyx_pf_4grpc_7_cython_6cygrpc_16_ServicerContext_2read(((struct __pyx_obj_4grpc_7_cython_6cygrpc__ServicerContext *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_4grpc_7_cython_6cygrpc_16_ServicerContext_2read(struct __pyx_obj_4grpc_7_cython_6cygrpc__ServicerContext *__pyx_v_self) {
  struct __pyx_obj_4grpc_7_cython_6cygrpc___pyx_scope_struct_31_read *__pyx_cur_scope;
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("read", 0);
  __pyx_cur_scope = (struct __pyx_obj_4grpc_7_cython_6cygrpc___pyx_scope_struct_31_read *)__pyx_tp_new_4grpc_7_cython_6cygrpc___pyx_scope_struct_31_read(__pyx_ptype_4grpc_7_cython_6cygrpc___pyx_scope_struct_31_read, __pyx_empty_tuple, NULL);
  if (unlikely(!__pyx_cur_scope)) {
    __pyx_cur_scope = ((struct __pyx_obj_4grpc_7_cython_6cygrpc___pyx_scope_struct_31_read *)Py_None);
    __Pyx_INCREF(Py_None);
    __PYX_ERR(10, 125, __pyx_L1_error)
  } else {
    __Pyx_GOTREF(__pyx_cur_scope);
  }
  __pyx_cur_scope->__pyx_v_self = __pyx_v_self;
  __Pyx_INCREF((PyObject *)__pyx_cur_scope->__pyx_v_self);
  __Pyx_GIVEREF((PyObject *)__pyx_cur_scope->__pyx_v_self);
  {
    __pyx_CoroutineObject *gen = __Pyx_Coroutine_New((__pyx_coroutine_body_t) __pyx_gb_4grpc_7_cython_6cygrpc_16_ServicerContext_4generator19, NULL, (PyObject *) __pyx_cur_scope, __pyx_n_s_read, __pyx_n_s_ServicerContext_read, __pyx_n_s_grpc__cython_cygrpc); if (unlikely(!gen)) __PYX_ERR(10, 125, __pyx_L1_error)
    __Pyx_DECREF(__pyx_cur_scope);
    __Pyx_RefNannyFinishContext();
    return (PyObject *) gen;
  }

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_AddTraceback("grpc._cython.cygrpc._ServicerContext.read", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __Pyx_DECREF(((PyObject *)__pyx_cur_scope));
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_gb_4grpc_7_cython_6cygrpc_16_ServicerContext_4generator19(__pyx_CoroutineObject *__pyx_generator, CYTHON_UNUSED PyThreadState *__pyx_tstate, PyObject *__pyx_sent_value) /* generator body */
{
  struct __pyx_obj_4grpc_7_cython_6cygrpc___pyx_scope_struct_31_read *__pyx_cur_scope = ((struct __pyx_obj_4grpc_7_cython_6cygrpc___pyx_scope_struct_31_read *)__pyx_generator->closure);
  PyObject *__pyx_r = NULL;
  PyObject *__pyx_t_1 = NULL;
  PyObject *__pyx_t_2 = NULL;
  PyObject *__pyx_t_3 = NULL;
  int __pyx_t_4;
  PyObject *__pyx_t_5 = NULL;
  int __pyx_t_6;
  int __pyx_t_7;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("read", 0);
  switch (__pyx_generator->resume_label) {
    case 0: goto __pyx_L3_first_run;
    case 1: goto __pyx_L4_resume_from_await;
    default: /* CPython raises the right error here */
    __Pyx_RefNannyFinishContext();
    return NULL;
  }
  __pyx_L3_first_run:;
  if (unlikely(!__pyx_sent_value)) __PYX_ERR(10, 125, __pyx_L1_error)

  /* "src/python/grpcio/grpc/_cython/_cygrpc/aio/server.pyx.pxi":127
 *     async def read(self):
 *         cdef bytes raw_message
 *         self._rpc_state.raise_for_termination()             # <<<<<<<<<<<<<<
 * 
 *         raw_message = await _receive_message(self._rpc_state, self._loop)
 */
  ((struct __pyx_vtabstruct_4grpc_7_cython_6cygrpc_RPCState *)__pyx_cur_scope->__pyx_v_self->_rpc_state->__pyx_vtab)->raise_for_termination(__pyx_cur_scope->__pyx_v_self->_rpc_state); if (unlikely(PyErr_Occurred())) __PYX_ERR(10, 127, __pyx_L1_error)

  /* "src/python/grpcio/grpc/_cython/_cygrpc/aio/server.pyx.pxi":129
 *         self._rpc_state.raise_for_termination()
 * 
 *         raw_message = await _receive_message(self._rpc_state, self._loop)             # <<<<<<<<<<<<<<
 *         self._rpc_state.raise_for_termination()
 * 
 */
  __Pyx_GetModuleGlobalName(__pyx_t_2, __pyx_n_s_receive_message); if (unlikely(!__pyx_t_2)) __PYX_ERR(10, 129, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __pyx_t_3 = NULL;
  __pyx_t_4 = 0;
  if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_2))) {
    __pyx_t_3 = PyMethod_GET_SELF(__pyx_t_2);
    if (likely(__pyx_t_3)) {
      PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_2);
      __Pyx_INCREF(__pyx_t_3);
      __Pyx_INCREF(function);
      __Pyx_DECREF_SET(__pyx_t_2, function);
      __pyx_t_4 = 1;
    }
  }
  #if CYTHON_FAST_PYCALL
  if (PyFunction_Check(__pyx_t_2)) {
    PyObject *__pyx_temp[3] = {__pyx_t_3, ((PyObject *)__pyx_cur_scope->__pyx_v_self->_rpc_state), __pyx_cur_scope->__pyx_v_self->_loop};
    __pyx_t_1 = __Pyx_PyFunction_FastCall(__pyx_t_2, __pyx_temp+1-__pyx_t_4, 2+__pyx_t_4); if (unlikely(!__pyx_t_1)) __PYX_ERR(10, 129, __pyx_L1_error)
    __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0;
    __Pyx_GOTREF(__pyx_t_1);
  } else
  #endif
  #if CYTHON_FAST_PYCCALL
  if (__Pyx_PyFastCFunction_Check(__pyx_t_2)) {
    PyObject *__pyx_temp[3] = {__pyx_t_3, ((PyObject *)__pyx_cur_scope->__pyx_v_self->_rpc_state), __pyx_cur_scope->__pyx_v_self->_loop};
    __pyx_t_1 = __Pyx_PyCFunction_FastCall(__pyx_t_2, __pyx_temp+1-__pyx_t_4, 2+__pyx_t_4); if (unlikely(!__pyx_t_1)) __PYX_ERR(10, 129, __pyx_L1_error)
    __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0;
    __Pyx_GOTREF(__pyx_t_1);
  } else
  #endif
  {
    __pyx_t_5 = PyTuple_New(2+__pyx_t_4); if (unlikely(!__pyx_t_5)) __PYX_ERR(10, 129, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_5);
    if (__pyx_t_3) {
      __Pyx_GIVEREF(__pyx_t_3); PyTuple_SET_ITEM(__pyx_t_5, 0, __pyx_t_3); __pyx_t_3 = NULL;
    }
    __Pyx_INCREF(((PyObject *)__pyx_cur_scope->__pyx_v_self->_rpc_state));
    __Pyx_GIVEREF(((PyObject *)__pyx_cur_scope->__pyx_v_self->_rpc_state));
    PyTuple_SET_ITEM(__pyx_t_5, 0+__pyx_t_4, ((PyObject *)__pyx_cur_scope->__pyx_v_self->_rpc_state));
    __Pyx_INCREF(__pyx_cur_scope->__pyx_v_self->_loop);
    __Pyx_GIVEREF(__pyx_cur_scope->__pyx_v_self->_loop);
    PyTuple_SET_ITEM(__pyx_t_5, 1+__pyx_t_4, __pyx_cur_scope->__pyx_v_self->_loop);
    __pyx_t_1 = __Pyx_PyObject_Call(__pyx_t_2, __pyx_t_5, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(10, 129, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_1);
    __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
  }
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  __pyx_r = __Pyx_Coroutine_Yield_From(__pyx_generator, __pyx_t_1);
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  __Pyx_XGOTREF(__pyx_r);
  if (likely(__pyx_r)) {
    __Pyx_XGIVEREF(__pyx_r);
    __Pyx_RefNannyFinishContext();
    __Pyx_Coroutine_ResetAndClearException(__pyx_generator);
    /* return from generator, awaiting value */
    __pyx_generator->resume_label = 1;
    return __pyx_r;
    __pyx_L4_resume_from_await:;
    if (unlikely(!__pyx_sent_value)) __PYX_ERR(10, 129, __pyx_L1_error)
    __pyx_t_1 = __pyx_sent_value; __Pyx_INCREF(__pyx_t_1);
  } else {
    __pyx_t_1 = NULL;
    if (__Pyx_PyGen_FetchStopIterationValue(&__pyx_t_1) < 0) __PYX_ERR(10, 129, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_1);
  }
  if (!(likely(PyBytes_CheckExact(__pyx_t_1))||((__pyx_t_1) == Py_None)||(PyErr_Format(PyExc_TypeError, "Expected %.16s, got %.200s", "bytes", Py_TYPE(__pyx_t_1)->tp_name), 0))) __PYX_ERR(10, 129, __pyx_L1_error)
  __Pyx_GIVEREF(__pyx_t_1);
  __pyx_cur_scope->__pyx_v_raw_message = ((PyObject*)__pyx_t_1);
  __pyx_t_1 = 0;

  /* "src/python/grpcio/grpc/_cython/_cygrpc/aio/server.pyx.pxi":130
 * 
 *         raw_message = await _receive_message(self._rpc_state, self._loop)
 *         self._rpc_state.raise_for_termination()             # <<<<<<<<<<<<<<
 * 
 *         if raw_message is None:
 */
  ((struct __pyx_vtabstruct_4grpc_7_cython_6cygrpc_RPCState *)__pyx_cur_scope->__pyx_v_self->_rpc_state->__pyx_vtab)->raise_for_termination(__pyx_cur_scope->__pyx_v_self->_rpc_state); if (unlikely(PyErr_Occurred())) __PYX_ERR(10, 130, __pyx_L1_error)

  /* "src/python/grpcio/grpc/_cython/_cygrpc/aio/server.pyx.pxi":132
 *         self._rpc_state.raise_for_termination()
 * 
 *         if raw_message is None:             # <<<<<<<<<<<<<<
 *             return EOF
 *         else:
 */
  __pyx_t_6 = (__pyx_cur_scope->__pyx_v_raw_message == ((PyObject*)Py_None));
  __pyx_t_7 = (__pyx_t_6 != 0);
  if (__pyx_t_7) {

    /* "src/python/grpcio/grpc/_cython/_cygrpc/aio/server.pyx.pxi":133
 * 
 *         if raw_message is None:
 *             return EOF             # <<<<<<<<<<<<<<
 *         else:
 *             return deserialize(self._request_deserializer,
 */
    __Pyx_XDECREF(__pyx_r);
    __Pyx_GetModuleGlobalName(__pyx_t_1, __pyx_n_s_EOF); if (unlikely(!__pyx_t_1)) __PYX_ERR(10, 133, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_1);
    __pyx_r = NULL; __Pyx_ReturnWithStopIteration(__pyx_t_1);
    __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
    goto __pyx_L0;

    /* "src/python/grpcio/grpc/_cython/_cygrpc/aio/server.pyx.pxi":132
 *         self._rpc_state.raise_for_termination()
 * 
 *         if raw_message is None:             # <<<<<<<<<<<<<<
 *             return EOF
 *         else:
 */
  }

  /* "src/python/grpcio/grpc/_cython/_cygrpc/aio/server.pyx.pxi":135
 *             return EOF
 *         else:
 *             return deserialize(self._request_deserializer,             # <<<<<<<<<<<<<<
 *                             raw_message)
 * 
 */
  /*else*/ {
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_1 = __pyx_cur_scope->__pyx_v_self->_request_deserializer;
    __Pyx_INCREF(__pyx_t_1);

    /* "src/python/grpcio/grpc/_cython/_cygrpc/aio/server.pyx.pxi":136
 *         else:
 *             return deserialize(self._request_deserializer,
 *                             raw_message)             # <<<<<<<<<<<<<<
 * 
 *     async def write(self, object message):
 */
    __pyx_t_2 = __pyx_f_4grpc_7_cython_6cygrpc_deserialize(__pyx_t_1, __pyx_cur_scope->__pyx_v_raw_message); if (unlikely(!__pyx_t_2)) __PYX_ERR(10, 135, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_2);
    __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
    __pyx_r = NULL; __Pyx_ReturnWithStopIteration(__pyx_t_2);
    __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
    goto __pyx_L0;
  }
  CYTHON_MAYBE_UNUSED_VAR(__pyx_cur_scope);

  /* "src/python/grpcio/grpc/_cython/_cygrpc/aio/server.pyx.pxi":125
 *         self._loop = loop
 * 
 *     async def read(self):             # <<<<<<<<<<<<<<
 *         cdef bytes raw_message
 *         self._rpc_state.raise_for_termination()
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_XDECREF(__pyx_t_3);
  __Pyx_XDECREF(__pyx_t_5);
  __Pyx_AddTraceback("read", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_L0:;
  __Pyx_XDECREF(__pyx_r); __pyx_r = 0;
  #if !CYTHON_USE_EXC_INFO_STACK
  __Pyx_Coroutine_ResetAndClearException(__pyx_generator);
  #endif
  __pyx_generator->resume_label = -1;
  __Pyx_Coroutine_clear((PyObject*)__pyx_generator);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}
static PyObject *__pyx_gb_4grpc_7_cython_6cygrpc_16_ServicerContext_7generator20(__pyx_CoroutineObject *__pyx_generator, CYTHON_UNUSED PyThreadState *__pyx_tstate, PyObject *__pyx_sent_value); /* proto */

/* "src/python/grpcio/grpc/_cython/_cygrpc/aio/server.pyx.pxi":138
 *                             raw_message)
 * 
 *     async def write(self, object message):             # <<<<<<<<<<<<<<
 *         self._rpc_state.raise_for_termination()
 * 
 */

/* Python wrapper */
static PyObject *__pyx_pw_4grpc_7_cython_6cygrpc_16_ServicerContext_6write(PyObject *__pyx_v_self, PyObject *__pyx_v_message); /*proto*/
static PyObject *__pyx_pw_4grpc_7_cython_6cygrpc_16_ServicerContext_6write(PyObject *__pyx_v_self, PyObject *__pyx_v_message) {
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("write (wrapper)", 0);
  __pyx_r = __pyx_pf_4grpc_7_cython_6cygrpc_16_ServicerContext_5write(((struct __pyx_obj_4grpc_7_cython_6cygrpc__ServicerContext *)__pyx_v_self), ((PyObject *)__pyx_v_message));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_4grpc_7_cython_6cygrpc_16_ServicerContext_5write(struct __pyx_obj_4grpc_7_cython_6cygrpc__ServicerContext *__pyx_v_self, PyObject *__pyx_v_message) {
  struct __pyx_obj_4grpc_7_cython_6cygrpc___pyx_scope_struct_32_write *__pyx_cur_scope;
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("write", 0);
  __pyx_cur_scope = (struct __pyx_obj_4grpc_7_cython_6cygrpc___pyx_scope_struct_32_write *)__pyx_tp_new_4grpc_7_cython_6cygrpc___pyx_scope_struct_32_write(__pyx_ptype_4grpc_7_cython_6cygrpc___pyx_scope_struct_32_write, __pyx_empty_tuple, NULL);
  if (unlikely(!__pyx_cur_scope)) {
    __pyx_cur_scope = ((struct __pyx_obj_4grpc_7_cython_6cygrpc___pyx_scope_struct_32_write *)Py_None);
    __Pyx_INCREF(Py_None);
    __PYX_ERR(10, 138, __pyx_L1_error)
  } else {
    __Pyx_GOTREF(__pyx_cur_scope);
  }
  __pyx_cur_scope->__pyx_v_self = __pyx_v_self;
  __Pyx_INCREF((PyObject *)__pyx_cur_scope->__pyx_v_self);
  __Pyx_GIVEREF((PyObject *)__pyx_cur_scope->__pyx_v_self);
  __pyx_cur_scope->__pyx_v_message = __pyx_v_message;
  __Pyx_INCREF(__pyx_cur_scope->__pyx_v_message);
  __Pyx_GIVEREF(__pyx_cur_scope->__pyx_v_message);
  {
    __pyx_CoroutineObject *gen = __Pyx_Coroutine_New((__pyx_coroutine_body_t) __pyx_gb_4grpc_7_cython_6cygrpc_16_ServicerContext_7generator20, NULL, (PyObject *) __pyx_cur_scope, __pyx_n_s_write, __pyx_n_s_ServicerContext_write, __pyx_n_s_grpc__cython_cygrpc); if (unlikely(!gen)) __PYX_ERR(10, 138, __pyx_L1_error)
    __Pyx_DECREF(__pyx_cur_scope);
    __Pyx_RefNannyFinishContext();
    return (PyObject *) gen;
  }

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_AddTraceback("grpc._cython.cygrpc._ServicerContext.write", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __Pyx_DECREF(((PyObject *)__pyx_cur_scope));
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_gb_4grpc_7_cython_6cygrpc_16_ServicerContext_7generator20(__pyx_CoroutineObject *__pyx_generator, CYTHON_UNUSED PyThreadState *__pyx_tstate, PyObject *__pyx_sent_value) /* generator body */
{
  struct __pyx_obj_4grpc_7_cython_6cygrpc___pyx_scope_struct_32_write *__pyx_cur_scope = ((struct __pyx_obj_4grpc_7_cython_6cygrpc___pyx_scope_struct_32_write *)__pyx_generator->closure);
  PyObject *__pyx_r = NULL;
  PyObject *__pyx_t_1 = NULL;
  PyObject *__pyx_t_2 = NULL;
  PyObject *__pyx_t_3 = NULL;
  PyObject *__pyx_t_4 = NULL;
  PyObject *__pyx_t_5 = NULL;
  PyObject *__pyx_t_6 = NULL;
  int __pyx_t_7;
  PyObject *__pyx_t_8 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("write", 0);
  switch (__pyx_generator->resume_label) {
    case 0: goto __pyx_L3_first_run;
    case 1: goto __pyx_L4_resume_from_await;
    default: /* CPython raises the right error here */
    __Pyx_RefNannyFinishContext();
    return NULL;
  }
  __pyx_L3_first_run:;
  if (unlikely(!__pyx_sent_value)) __PYX_ERR(10, 138, __pyx_L1_error)

  /* "src/python/grpcio/grpc/_cython/_cygrpc/aio/server.pyx.pxi":139
 * 
 *     async def write(self, object message):
 *         self._rpc_state.raise_for_termination()             # <<<<<<<<<<<<<<
 * 
 *         await _send_message(self._rpc_state,
 */
  ((struct __pyx_vtabstruct_4grpc_7_cython_6cygrpc_RPCState *)__pyx_cur_scope->__pyx_v_self->_rpc_state->__pyx_vtab)->raise_for_termination(__pyx_cur_scope->__pyx_v_self->_rpc_state); if (unlikely(PyErr_Occurred())) __PYX_ERR(10, 139, __pyx_L1_error)

  /* "src/python/grpcio/grpc/_cython/_cygrpc/aio/server.pyx.pxi":141
 *         self._rpc_state.raise_for_termination()
 * 
 *         await _send_message(self._rpc_state,             # <<<<<<<<<<<<<<
 *                             serialize(self._response_serializer, message),
 *                             self._rpc_state.create_send_initial_metadata_op_if_not_sent(),
 */
  __Pyx_GetModuleGlobalName(__pyx_t_2, __pyx_n_s_send_message); if (unlikely(!__pyx_t_2)) __PYX_ERR(10, 141, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);

  /* "src/python/grpcio/grpc/_cython/_cygrpc/aio/server.pyx.pxi":142
 * 
 *         await _send_message(self._rpc_state,
 *                             serialize(self._response_serializer, message),             # <<<<<<<<<<<<<<
 *                             self._rpc_state.create_send_initial_metadata_op_if_not_sent(),
 *                             self._rpc_state.get_write_flag(),
 */
  __pyx_t_3 = __pyx_cur_scope->__pyx_v_self->_response_serializer;
  __Pyx_INCREF(__pyx_t_3);
  __pyx_t_4 = __pyx_f_4grpc_7_cython_6cygrpc_serialize(__pyx_t_3, __pyx_cur_scope->__pyx_v_message); if (unlikely(!__pyx_t_4)) __PYX_ERR(10, 142, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_4);
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;

  /* "src/python/grpcio/grpc/_cython/_cygrpc/aio/server.pyx.pxi":143
 *         await _send_message(self._rpc_state,
 *                             serialize(self._response_serializer, message),
 *                             self._rpc_state.create_send_initial_metadata_op_if_not_sent(),             # <<<<<<<<<<<<<<
 *                             self._rpc_state.get_write_flag(),
 *                             self._loop)
 */
  __pyx_t_3 = ((PyObject *)((struct __pyx_vtabstruct_4grpc_7_cython_6cygrpc_RPCState *)__pyx_cur_scope->__pyx_v_self->_rpc_state->__pyx_vtab)->create_send_initial_metadata_op_if_not_sent(__pyx_cur_scope->__pyx_v_self->_rpc_state)); if (unlikely(!__pyx_t_3)) __PYX_ERR(10, 143, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);

  /* "src/python/grpcio/grpc/_cython/_cygrpc/aio/server.pyx.pxi":144
 *                             serialize(self._response_serializer, message),
 *                             self._rpc_state.create_send_initial_metadata_op_if_not_sent(),
 *                             self._rpc_state.get_write_flag(),             # <<<<<<<<<<<<<<
 *                             self._loop)
 *         self._rpc_state.metadata_sent = True
 */
  __pyx_t_5 = __Pyx_PyInt_From_int(((struct __pyx_vtabstruct_4grpc_7_cython_6cygrpc_RPCState *)__pyx_cur_scope->__pyx_v_self->_rpc_state->__pyx_vtab)->get_write_flag(__pyx_cur_scope->__pyx_v_self->_rpc_state)); if (unlikely(!__pyx_t_5)) __PYX_ERR(10, 144, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_5);

  /* "src/python/grpcio/grpc/_cython/_cygrpc/aio/server.pyx.pxi":145
 *                             self._rpc_state.create_send_initial_metadata_op_if_not_sent(),
 *                             self._rpc_state.get_write_flag(),
 *                             self._loop)             # <<<<<<<<<<<<<<
 *         self._rpc_state.metadata_sent = True
 * 
 */
  __pyx_t_6 = NULL;
  __pyx_t_7 = 0;
  if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_2))) {
    __pyx_t_6 = PyMethod_GET_SELF(__pyx_t_2);
    if (likely(__pyx_t_6)) {
      PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_2);
      __Pyx_INCREF(__pyx_t_6);
      __Pyx_INCREF(function);
      __Pyx_DECREF_SET(__pyx_t_2, function);
      __pyx_t_7 = 1;
    }
  }
  #if CYTHON_FAST_PYCALL
  if (PyFunction_Check(__pyx_t_2)) {
    PyObject *__pyx_temp[6] = {__pyx_t_6, ((PyObject *)__pyx_cur_scope->__pyx_v_self->_rpc_state), __pyx_t_4, __pyx_t_3, __pyx_t_5, __pyx_cur_scope->__pyx_v_self->_loop};
    __pyx_t_1 = __Pyx_PyFunction_FastCall(__pyx_t_2, __pyx_temp+1-__pyx_t_7, 5+__pyx_t_7); if (unlikely(!__pyx_t_1)) __PYX_ERR(10, 141, __pyx_L1_error)
    __Pyx_XDECREF(__pyx_t_6); __pyx_t_6 = 0;
    __Pyx_GOTREF(__pyx_t_1);
    __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
    __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
    __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
  } else
  #endif
  #if CYTHON_FAST_PYCCALL
  if (__Pyx_PyFastCFunction_Check(__pyx_t_2)) {
    PyObject *__pyx_temp[6] = {__pyx_t_6, ((PyObject *)__pyx_cur_scope->__pyx_v_self->_rpc_state), __pyx_t_4, __pyx_t_3, __pyx_t_5, __pyx_cur_scope->__pyx_v_self->_loop};
    __pyx_t_1 = __Pyx_PyCFunction_FastCall(__pyx_t_2, __pyx_temp+1-__pyx_t_7, 5+__pyx_t_7); if (unlikely(!__pyx_t_1)) __PYX_ERR(10, 141, __pyx_L1_error)
    __Pyx_XDECREF(__pyx_t_6); __pyx_t_6 = 0;
    __Pyx_GOTREF(__pyx_t_1);
    __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
    __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
    __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
  } else
  #endif
  {
    __pyx_t_8 = PyTuple_New(5+__pyx_t_7); if (unlikely(!__pyx_t_8)) __PYX_ERR(10, 141, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_8);
    if (__pyx_t_6) {
      __Pyx_GIVEREF(__pyx_t_6); PyTuple_SET_ITEM(__pyx_t_8, 0, __pyx_t_6); __pyx_t_6 = NULL;
    }
    __Pyx_INCREF(((PyObject *)__pyx_cur_scope->__pyx_v_self->_rpc_state));
    __Pyx_GIVEREF(((PyObject *)__pyx_cur_scope->__pyx_v_self->_rpc_state));
    PyTuple_SET_ITEM(__pyx_t_8, 0+__pyx_t_7, ((PyObject *)__pyx_cur_scope->__pyx_v_self->_rpc_state));
    __Pyx_GIVEREF(__pyx_t_4);
    PyTuple_SET_ITEM(__pyx_t_8, 1+__pyx_t_7, __pyx_t_4);
    __Pyx_GIVEREF(__pyx_t_3);
    PyTuple_SET_ITEM(__pyx_t_8, 2+__pyx_t_7, __pyx_t_3);
    __Pyx_GIVEREF(__pyx_t_5);
    PyTuple_SET_ITEM(__pyx_t_8, 3+__pyx_t_7, __pyx_t_5);
    __Pyx_INCREF(__pyx_cur_scope->__pyx_v_self->_loop);
    __Pyx_GIVEREF(__pyx_cur_scope->__pyx_v_self->_loop);
    PyTuple_SET_ITEM(__pyx_t_8, 4+__pyx_t_7, __pyx_cur_scope->__pyx_v_self->_loop);
    __pyx_t_4 = 0;
    __pyx_t_3 = 0;
    __pyx_t_5 = 0;
    __pyx_t_1 = __Pyx_PyObject_Call(__pyx_t_2, __pyx_t_8, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(10, 141, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_1);
    __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
  }
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  __pyx_r = __Pyx_Coroutine_Yield_From(__pyx_generator, __pyx_t_1);
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  __Pyx_XGOTREF(__pyx_r);
  if (likely(__pyx_r)) {
    __Pyx_XGIVEREF(__pyx_r);
    __Pyx_RefNannyFinishContext();
    __Pyx_Coroutine_ResetAndClearException(__pyx_generator);
    /* return from generator, awaiting value */
    __pyx_generator->resume_label = 1;
    return __pyx_r;
    __pyx_L4_resume_from_await:;
    if (unlikely(!__pyx_sent_value)) __PYX_ERR(10, 141, __pyx_L1_error)
  } else {
    PyObject* exc_type = __Pyx_PyErr_Occurred();
    if (exc_type) {
      if (likely(exc_type == PyExc_StopIteration || (exc_type != PyExc_GeneratorExit && __Pyx_PyErr_GivenExceptionMatches(exc_type, PyExc_StopIteration)))) PyErr_Clear();
      else __PYX_ERR(10, 141, __pyx_L1_error)
    }
  }

  /* "src/python/grpcio/grpc/_cython/_cygrpc/aio/server.pyx.pxi":146
 *                             self._rpc_state.get_write_flag(),
 *                             self._loop)
 *         self._rpc_state.metadata_sent = True             # <<<<<<<<<<<<<<
 * 
 *     async def send_initial_metadata(self, object metadata):
 */
  __pyx_cur_scope->__pyx_v_self->_rpc_state->metadata_sent = 1;
  CYTHON_MAYBE_UNUSED_VAR(__pyx_cur_scope);

  /* "src/python/grpcio/grpc/_cython/_cygrpc/aio/server.pyx.pxi":138
 *                             raw_message)
 * 
 *     async def write(self, object message):             # <<<<<<<<<<<<<<
 *         self._rpc_state.raise_for_termination()
 * 
 */

  /* function exit code */
  PyErr_SetNone(PyExc_StopIteration);
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_XDECREF(__pyx_t_3);
  __Pyx_XDECREF(__pyx_t_4);
  __Pyx_XDECREF(__pyx_t_5);
  __Pyx_XDECREF(__pyx_t_6);
  __Pyx_XDECREF(__pyx_t_8);
  __Pyx_AddTraceback("write", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_L0:;
  __Pyx_XDECREF(__pyx_r); __pyx_r = 0;
  #if !CYTHON_USE_EXC_INFO_STACK
  __Pyx_Coroutine_ResetAndClearException(__pyx_generator);
  #endif
  __pyx_generator->resume_label = -1;
  __Pyx_Coroutine_clear((PyObject*)__pyx_generator);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}
static PyObject *__pyx_gb_4grpc_7_cython_6cygrpc_16_ServicerContext_10generator21(__pyx_CoroutineObject *__pyx_generator, CYTHON_UNUSED PyThreadState *__pyx_tstate, PyObject *__pyx_sent_value); /* proto */

/* "src/python/grpcio/grpc/_cython/_cygrpc/aio/server.pyx.pxi":148
 *         self._rpc_state.metadata_sent = True
 * 
 *     async def send_initial_metadata(self, object metadata):             # <<<<<<<<<<<<<<
 *         self._rpc_state.raise_for_termination()
 * 
 */

/* Python wrapper */
static PyObject *__pyx_pw_4grpc_7_cython_6cygrpc_16_ServicerContext_9send_initial_metadata(PyObject *__pyx_v_self, PyObject *__pyx_v_metadata); /*proto*/
static PyObject *__pyx_pw_4grpc_7_cython_6cygrpc_16_ServicerContext_9send_initial_metadata(PyObject *__pyx_v_self, PyObject *__pyx_v_metadata) {
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("send_initial_metadata (wrapper)", 0);
  __pyx_r = __pyx_pf_4grpc_7_cython_6cygrpc_16_ServicerContext_8send_initial_metadata(((struct __pyx_obj_4grpc_7_cython_6cygrpc__ServicerContext *)__pyx_v_self), ((PyObject *)__pyx_v_metadata));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_4grpc_7_cython_6cygrpc_16_ServicerContext_8send_initial_metadata(struct __pyx_obj_4grpc_7_cython_6cygrpc__ServicerContext *__pyx_v_self, PyObject *__pyx_v_metadata) {
  struct __pyx_obj_4grpc_7_cython_6cygrpc___pyx_scope_struct_33_send_initial_metadata *__pyx_cur_scope;
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("send_initial_metadata", 0);
  __pyx_cur_scope = (struct __pyx_obj_4grpc_7_cython_6cygrpc___pyx_scope_struct_33_send_initial_metadata *)__pyx_tp_new_4grpc_7_cython_6cygrpc___pyx_scope_struct_33_send_initial_metadata(__pyx_ptype_4grpc_7_cython_6cygrpc___pyx_scope_struct_33_send_initial_metadata, __pyx_empty_tuple, NULL);
  if (unlikely(!__pyx_cur_scope)) {
    __pyx_cur_scope = ((struct __pyx_obj_4grpc_7_cython_6cygrpc___pyx_scope_struct_33_send_initial_metadata *)Py_None);
    __Pyx_INCREF(Py_None);
    __PYX_ERR(10, 148, __pyx_L1_error)
  } else {
    __Pyx_GOTREF(__pyx_cur_scope);
  }
  __pyx_cur_scope->__pyx_v_self = __pyx_v_self;
  __Pyx_INCREF((PyObject *)__pyx_cur_scope->__pyx_v_self);
  __Pyx_GIVEREF((PyObject *)__pyx_cur_scope->__pyx_v_self);
  __pyx_cur_scope->__pyx_v_metadata = __pyx_v_metadata;
  __Pyx_INCREF(__pyx_cur_scope->__pyx_v_metadata);
  __Pyx_GIVEREF(__pyx_cur_scope->__pyx_v_metadata);
  {
    __pyx_CoroutineObject *gen = __Pyx_Coroutine_New((__pyx_coroutine_body_t) __pyx_gb_4grpc_7_cython_6cygrpc_16_ServicerContext_10generator21, NULL, (PyObject *) __pyx_cur_scope, __pyx_n_s_send_initial_metadata_2, __pyx_n_s_ServicerContext_send_initial_me, __pyx_n_s_grpc__cython_cygrpc); if (unlikely(!gen)) __PYX_ERR(10, 148, __pyx_L1_error)
    __Pyx_DECREF(__pyx_cur_scope);
    __Pyx_RefNannyFinishContext();
    return (PyObject *) gen;
  }

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_AddTraceback("grpc._cython.cygrpc._ServicerContext.send_initial_metadata", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __Pyx_DECREF(((PyObject *)__pyx_cur_scope));
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_gb_4grpc_7_cython_6cygrpc_16_ServicerContext_10generator21(__pyx_CoroutineObject *__pyx_generator, CYTHON_UNUSED PyThreadState *__pyx_tstate, PyObject *__pyx_sent_value) /* generator body */
{
  struct __pyx_obj_4grpc_7_cython_6cygrpc___pyx_scope_struct_33_send_initial_metadata *__pyx_cur_scope = ((struct __pyx_obj_4grpc_7_cython_6cygrpc___pyx_scope_struct_33_send_initial_metadata *)__pyx_generator->closure);
  PyObject *__pyx_r = NULL;
  int __pyx_t_1;
  PyObject *__pyx_t_2 = NULL;
  PyObject *__pyx_t_3 = NULL;
  PyObject *__pyx_t_4 = NULL;
  PyObject *__pyx_t_5 = NULL;
  PyObject *__pyx_t_6 = NULL;
  int __pyx_t_7;
  PyObject *__pyx_t_8 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("send_initial_metadata", 0);
  switch (__pyx_generator->resume_label) {
    case 0: goto __pyx_L3_first_run;
    case 1: goto __pyx_L5_resume_from_await;
    default: /* CPython raises the right error here */
    __Pyx_RefNannyFinishContext();
    return NULL;
  }
  __pyx_L3_first_run:;
  if (unlikely(!__pyx_sent_value)) __PYX_ERR(10, 148, __pyx_L1_error)

  /* "src/python/grpcio/grpc/_cython/_cygrpc/aio/server.pyx.pxi":149
 * 
 *     async def send_initial_metadata(self, object metadata):
 *         self._rpc_state.raise_for_termination()             # <<<<<<<<<<<<<<
 * 
 *         if self._rpc_state.metadata_sent:
 */
  ((struct __pyx_vtabstruct_4grpc_7_cython_6cygrpc_RPCState *)__pyx_cur_scope->__pyx_v_self->_rpc_state->__pyx_vtab)->raise_for_termination(__pyx_cur_scope->__pyx_v_self->_rpc_state); if (unlikely(PyErr_Occurred())) __PYX_ERR(10, 149, __pyx_L1_error)

  /* "src/python/grpcio/grpc/_cython/_cygrpc/aio/server.pyx.pxi":151
 *         self._rpc_state.raise_for_termination()
 * 
 *         if self._rpc_state.metadata_sent:             # <<<<<<<<<<<<<<
 *             raise UsageError('Send initial metadata failed: already sent')
 *         else:
 */
  __pyx_t_1 = (__pyx_cur_scope->__pyx_v_self->_rpc_state->metadata_sent != 0);
  if (unlikely(__pyx_t_1)) {

    /* "src/python/grpcio/grpc/_cython/_cygrpc/aio/server.pyx.pxi":152
 * 
 *         if self._rpc_state.metadata_sent:
 *             raise UsageError('Send initial metadata failed: already sent')             # <<<<<<<<<<<<<<
 *         else:
 *             await _send_initial_metadata(
 */
    __Pyx_GetModuleGlobalName(__pyx_t_3, __pyx_n_s_UsageError); if (unlikely(!__pyx_t_3)) __PYX_ERR(10, 152, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_3);
    __pyx_t_4 = NULL;
    if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_3))) {
      __pyx_t_4 = PyMethod_GET_SELF(__pyx_t_3);
      if (likely(__pyx_t_4)) {
        PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_3);
        __Pyx_INCREF(__pyx_t_4);
        __Pyx_INCREF(function);
        __Pyx_DECREF_SET(__pyx_t_3, function);
      }
    }
    __pyx_t_2 = (__pyx_t_4) ? __Pyx_PyObject_Call2Args(__pyx_t_3, __pyx_t_4, __pyx_kp_s_Send_initial_metadata_failed_alr) : __Pyx_PyObject_CallOneArg(__pyx_t_3, __pyx_kp_s_Send_initial_metadata_failed_alr);
    __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0;
    if (unlikely(!__pyx_t_2)) __PYX_ERR(10, 152, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_2);
    __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
    __Pyx_Raise(__pyx_t_2, 0, 0, 0);
    __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
    __PYX_ERR(10, 152, __pyx_L1_error)

    /* "src/python/grpcio/grpc/_cython/_cygrpc/aio/server.pyx.pxi":151
 *         self._rpc_state.raise_for_termination()
 * 
 *         if self._rpc_state.metadata_sent:             # <<<<<<<<<<<<<<
 *             raise UsageError('Send initial metadata failed: already sent')
 *         else:
 */
  }

  /* "src/python/grpcio/grpc/_cython/_cygrpc/aio/server.pyx.pxi":154
 *             raise UsageError('Send initial metadata failed: already sent')
 *         else:
 *             await _send_initial_metadata(             # <<<<<<<<<<<<<<
 *                 self._rpc_state,
 *                 _augment_metadata(tuple(metadata), self._rpc_state.compression_algorithm),
 */
  /*else*/ {
    __Pyx_GetModuleGlobalName(__pyx_t_3, __pyx_n_s_send_initial_metadata); if (unlikely(!__pyx_t_3)) __PYX_ERR(10, 154, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_3);

    /* "src/python/grpcio/grpc/_cython/_cygrpc/aio/server.pyx.pxi":156
 *             await _send_initial_metadata(
 *                 self._rpc_state,
 *                 _augment_metadata(tuple(metadata), self._rpc_state.compression_algorithm),             # <<<<<<<<<<<<<<
 *                 _EMPTY_FLAG,
 *                 self._loop
 */
    __pyx_t_4 = __Pyx_PySequence_Tuple(__pyx_cur_scope->__pyx_v_metadata); if (unlikely(!__pyx_t_4)) __PYX_ERR(10, 156, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_4);
    __pyx_t_5 = __pyx_cur_scope->__pyx_v_self->_rpc_state->compression_algorithm;
    __Pyx_INCREF(__pyx_t_5);
    __pyx_t_6 = __pyx_f_4grpc_7_cython_6cygrpc__augment_metadata(((PyObject*)__pyx_t_4), __pyx_t_5); if (unlikely(!__pyx_t_6)) __PYX_ERR(10, 156, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_6);
    __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
    __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;

    /* "src/python/grpcio/grpc/_cython/_cygrpc/aio/server.pyx.pxi":157
 *                 self._rpc_state,
 *                 _augment_metadata(tuple(metadata), self._rpc_state.compression_algorithm),
 *                 _EMPTY_FLAG,             # <<<<<<<<<<<<<<
 *                 self._loop
 *             )
 */
    __pyx_t_5 = __Pyx_PyInt_From_int(__pyx_v_4grpc_7_cython_6cygrpc__EMPTY_FLAG); if (unlikely(!__pyx_t_5)) __PYX_ERR(10, 157, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_5);

    /* "src/python/grpcio/grpc/_cython/_cygrpc/aio/server.pyx.pxi":158
 *                 _augment_metadata(tuple(metadata), self._rpc_state.compression_algorithm),
 *                 _EMPTY_FLAG,
 *                 self._loop             # <<<<<<<<<<<<<<
 *             )
 *             self._rpc_state.metadata_sent = True
 */
    __pyx_t_4 = NULL;
    __pyx_t_7 = 0;
    if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_3))) {
      __pyx_t_4 = PyMethod_GET_SELF(__pyx_t_3);
      if (likely(__pyx_t_4)) {
        PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_3);
        __Pyx_INCREF(__pyx_t_4);
        __Pyx_INCREF(function);
        __Pyx_DECREF_SET(__pyx_t_3, function);
        __pyx_t_7 = 1;
      }
    }
    #if CYTHON_FAST_PYCALL
    if (PyFunction_Check(__pyx_t_3)) {
      PyObject *__pyx_temp[5] = {__pyx_t_4, ((PyObject *)__pyx_cur_scope->__pyx_v_self->_rpc_state), __pyx_t_6, __pyx_t_5, __pyx_cur_scope->__pyx_v_self->_loop};
      __pyx_t_2 = __Pyx_PyFunction_FastCall(__pyx_t_3, __pyx_temp+1-__pyx_t_7, 4+__pyx_t_7); if (unlikely(!__pyx_t_2)) __PYX_ERR(10, 154, __pyx_L1_error)
      __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0;
      __Pyx_GOTREF(__pyx_t_2);
      __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
      __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
    } else
    #endif
    #if CYTHON_FAST_PYCCALL
    if (__Pyx_PyFastCFunction_Check(__pyx_t_3)) {
      PyObject *__pyx_temp[5] = {__pyx_t_4, ((PyObject *)__pyx_cur_scope->__pyx_v_self->_rpc_state), __pyx_t_6, __pyx_t_5, __pyx_cur_scope->__pyx_v_self->_loop};
      __pyx_t_2 = __Pyx_PyCFunction_FastCall(__pyx_t_3, __pyx_temp+1-__pyx_t_7, 4+__pyx_t_7); if (unlikely(!__pyx_t_2)) __PYX_ERR(10, 154, __pyx_L1_error)
      __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0;
      __Pyx_GOTREF(__pyx_t_2);
      __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
      __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
    } else
    #endif
    {
      __pyx_t_8 = PyTuple_New(4+__pyx_t_7); if (unlikely(!__pyx_t_8)) __PYX_ERR(10, 154, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_8);
      if (__pyx_t_4) {
        __Pyx_GIVEREF(__pyx_t_4); PyTuple_SET_ITEM(__pyx_t_8, 0, __pyx_t_4); __pyx_t_4 = NULL;
      }
      __Pyx_INCREF(((PyObject *)__pyx_cur_scope->__pyx_v_self->_rpc_state));
      __Pyx_GIVEREF(((PyObject *)__pyx_cur_scope->__pyx_v_self->_rpc_state));
      PyTuple_SET_ITEM(__pyx_t_8, 0+__pyx_t_7, ((PyObject *)__pyx_cur_scope->__pyx_v_self->_rpc_state));
      __Pyx_GIVEREF(__pyx_t_6);
      PyTuple_SET_ITEM(__pyx_t_8, 1+__pyx_t_7, __pyx_t_6);
      __Pyx_GIVEREF(__pyx_t_5);
      PyTuple_SET_ITEM(__pyx_t_8, 2+__pyx_t_7, __pyx_t_5);
      __Pyx_INCREF(__pyx_cur_scope->__pyx_v_self->_loop);
      __Pyx_GIVEREF(__pyx_cur_scope->__pyx_v_self->_loop);
      PyTuple_SET_ITEM(__pyx_t_8, 3+__pyx_t_7, __pyx_cur_scope->__pyx_v_self->_loop);
      __pyx_t_6 = 0;
      __pyx_t_5 = 0;
      __pyx_t_2 = __Pyx_PyObject_Call(__pyx_t_3, __pyx_t_8, NULL); if (unlikely(!__pyx_t_2)) __PYX_ERR(10, 154, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_2);
      __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
    }
    __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
    __pyx_r = __Pyx_Coroutine_Yield_From(__pyx_generator, __pyx_t_2);
    __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
    __Pyx_XGOTREF(__pyx_r);
    if (likely(__pyx_r)) {
      __Pyx_XGIVEREF(__pyx_r);
      __Pyx_RefNannyFinishContext();
      __Pyx_Coroutine_ResetAndClearException(__pyx_generator);
      /* return from generator, awaiting value */
      __pyx_generator->resume_label = 1;
      return __pyx_r;
      __pyx_L5_resume_from_await:;
      if (unlikely(!__pyx_sent_value)) __PYX_ERR(10, 154, __pyx_L1_error)
    } else {
      PyObject* exc_type = __Pyx_PyErr_Occurred();
      if (exc_type) {
        if (likely(exc_type == PyExc_StopIteration || (exc_type != PyExc_GeneratorExit && __Pyx_PyErr_GivenExceptionMatches(exc_type, PyExc_StopIteration)))) PyErr_Clear();
        else __PYX_ERR(10, 154, __pyx_L1_error)
      }
    }

    /* "src/python/grpcio/grpc/_cython/_cygrpc/aio/server.pyx.pxi":160
 *                 self._loop
 *             )
 *             self._rpc_state.metadata_sent = True             # <<<<<<<<<<<<<<
 * 
 *     async def abort(self,
 */
    __pyx_cur_scope->__pyx_v_self->_rpc_state->metadata_sent = 1;
  }
  CYTHON_MAYBE_UNUSED_VAR(__pyx_cur_scope);

  /* "src/python/grpcio/grpc/_cython/_cygrpc/aio/server.pyx.pxi":148
 *         self._rpc_state.metadata_sent = True
 * 
 *     async def send_initial_metadata(self, object metadata):             # <<<<<<<<<<<<<<
 *         self._rpc_state.raise_for_termination()
 * 
 */

  /* function exit code */
  PyErr_SetNone(PyExc_StopIteration);
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_XDECREF(__pyx_t_3);
  __Pyx_XDECREF(__pyx_t_4);
  __Pyx_XDECREF(__pyx_t_5);
  __Pyx_XDECREF(__pyx_t_6);
  __Pyx_XDECREF(__pyx_t_8);
  __Pyx_AddTraceback("send_initial_metadata", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_L0:;
  __Pyx_XDECREF(__pyx_r); __pyx_r = 0;
  #if !CYTHON_USE_EXC_INFO_STACK
  __Pyx_Coroutine_ResetAndClearException(__pyx_generator);
  #endif
  __pyx_generator->resume_label = -1;
  __Pyx_Coroutine_clear((PyObject*)__pyx_generator);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}
static PyObject *__pyx_gb_4grpc_7_cython_6cygrpc_16_ServicerContext_13generator22(__pyx_CoroutineObject *__pyx_generator, CYTHON_UNUSED PyThreadState *__pyx_tstate, PyObject *__pyx_sent_value); /* proto */

/* "src/python/grpcio/grpc/_cython/_cygrpc/aio/server.pyx.pxi":162
 *             self._rpc_state.metadata_sent = True
 * 
 *     async def abort(self,             # <<<<<<<<<<<<<<
 *               object code,
 *               str details='',
 */

/* Python wrapper */
static PyObject *__pyx_pw_4grpc_7_cython_6cygrpc_16_ServicerContext_12abort(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
static PyObject *__pyx_pw_4grpc_7_cython_6cygrpc_16_ServicerContext_12abort(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
  PyObject *__pyx_v_code = 0;
  PyObject *__pyx_v_details = 0;
  PyObject *__pyx_v_trailing_metadata = 0;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("abort (wrapper)", 0);
  {
    static PyObject **__pyx_pyargnames[] = {&__pyx_n_s_code,&__pyx_n_s_details,&__pyx_n_s_trailing_metadata,0};
    PyObject* values[3] = {0,0,0};
    values[1] = ((PyObject*)__pyx_kp_s_);
    values[2] = __pyx_k__174;
    if (unlikely(__pyx_kwds)) {
      Py_ssize_t kw_args;
      const Py_ssize_t pos_args = PyTuple_GET_SIZE(__pyx_args);
      switch (pos_args) {
        case  3: values[2] = PyTuple_GET_ITEM(__pyx_args, 2);
        CYTHON_FALLTHROUGH;
        case  2: values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
        CYTHON_FALLTHROUGH;
        case  1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
        CYTHON_FALLTHROUGH;
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      kw_args = PyDict_Size(__pyx_kwds);
      switch (pos_args) {
        case  0:
        if (likely((values[0] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_code)) != 0)) kw_args--;
        else goto __pyx_L5_argtuple_error;
        CYTHON_FALLTHROUGH;
        case  1:
        if (kw_args > 0) {
          PyObject* value = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_details);
          if (value) { values[1] = value; kw_args--; }
        }
        CYTHON_FALLTHROUGH;
        case  2:
        if (kw_args > 0) {
          PyObject* value = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_trailing_metadata);
          if (value) { values[2] = value; kw_args--; }
        }
      }
      if (unlikely(kw_args > 0)) {
        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "abort") < 0)) __PYX_ERR(10, 162, __pyx_L3_error)
      }
    } else {
      switch (PyTuple_GET_SIZE(__pyx_args)) {
        case  3: values[2] = PyTuple_GET_ITEM(__pyx_args, 2);
        CYTHON_FALLTHROUGH;
        case  2: values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
        CYTHON_FALLTHROUGH;
        case  1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
        break;
        default: goto __pyx_L5_argtuple_error;
      }
    }
    __pyx_v_code = values[0];
    __pyx_v_details = ((PyObject*)values[1]);
    __pyx_v_trailing_metadata = ((PyObject*)values[2]);
  }
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("abort", 0, 1, 3, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(10, 162, __pyx_L3_error)
  __pyx_L3_error:;
  __Pyx_AddTraceback("grpc._cython.cygrpc._ServicerContext.abort", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_details), (&PyString_Type), 1, "details", 1))) __PYX_ERR(10, 164, __pyx_L1_error)
  if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_trailing_metadata), (&PyTuple_Type), 1, "trailing_metadata", 1))) __PYX_ERR(10, 165, __pyx_L1_error)
  __pyx_r = __pyx_pf_4grpc_7_cython_6cygrpc_16_ServicerContext_11abort(((struct __pyx_obj_4grpc_7_cython_6cygrpc__ServicerContext *)__pyx_v_self), __pyx_v_code, __pyx_v_details, __pyx_v_trailing_metadata);

  /* function exit code */
  goto __pyx_L0;
  __pyx_L1_error:;
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_4grpc_7_cython_6cygrpc_16_ServicerContext_11abort(struct __pyx_obj_4grpc_7_cython_6cygrpc__ServicerContext *__pyx_v_self, PyObject *__pyx_v_code, PyObject *__pyx_v_details, PyObject *__pyx_v_trailing_metadata) {
  struct __pyx_obj_4grpc_7_cython_6cygrpc___pyx_scope_struct_34_abort *__pyx_cur_scope;
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("abort", 0);
  __pyx_cur_scope = (struct __pyx_obj_4grpc_7_cython_6cygrpc___pyx_scope_struct_34_abort *)__pyx_tp_new_4grpc_7_cython_6cygrpc___pyx_scope_struct_34_abort(__pyx_ptype_4grpc_7_cython_6cygrpc___pyx_scope_struct_34_abort, __pyx_empty_tuple, NULL);
  if (unlikely(!__pyx_cur_scope)) {
    __pyx_cur_scope = ((struct __pyx_obj_4grpc_7_cython_6cygrpc___pyx_scope_struct_34_abort *)Py_None);
    __Pyx_INCREF(Py_None);
    __PYX_ERR(10, 162, __pyx_L1_error)
  } else {
    __Pyx_GOTREF(__pyx_cur_scope);
  }
  __pyx_cur_scope->__pyx_v_self = __pyx_v_self;
  __Pyx_INCREF((PyObject *)__pyx_cur_scope->__pyx_v_self);
  __Pyx_GIVEREF((PyObject *)__pyx_cur_scope->__pyx_v_self);
  __pyx_cur_scope->__pyx_v_code = __pyx_v_code;
  __Pyx_INCREF(__pyx_cur_scope->__pyx_v_code);
  __Pyx_GIVEREF(__pyx_cur_scope->__pyx_v_code);
  __pyx_cur_scope->__pyx_v_details = __pyx_v_details;
  __Pyx_INCREF(__pyx_cur_scope->__pyx_v_details);
  __Pyx_GIVEREF(__pyx_cur_scope->__pyx_v_details);
  __pyx_cur_scope->__pyx_v_trailing_metadata = __pyx_v_trailing_metadata;
  __Pyx_INCREF(__pyx_cur_scope->__pyx_v_trailing_metadata);
  __Pyx_GIVEREF(__pyx_cur_scope->__pyx_v_trailing_metadata);
  {
    __pyx_CoroutineObject *gen = __Pyx_Coroutine_New((__pyx_coroutine_body_t) __pyx_gb_4grpc_7_cython_6cygrpc_16_ServicerContext_13generator22, NULL, (PyObject *) __pyx_cur_scope, __pyx_n_s_abort, __pyx_n_s_ServicerContext_abort, __pyx_n_s_grpc__cython_cygrpc); if (unlikely(!gen)) __PYX_ERR(10, 162, __pyx_L1_error)
    __Pyx_DECREF(__pyx_cur_scope);
    __Pyx_RefNannyFinishContext();
    return (PyObject *) gen;
  }

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_AddTraceback("grpc._cython.cygrpc._ServicerContext.abort", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __Pyx_DECREF(((PyObject *)__pyx_cur_scope));
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_gb_4grpc_7_cython_6cygrpc_16_ServicerContext_13generator22(__pyx_CoroutineObject *__pyx_generator, CYTHON_UNUSED PyThreadState *__pyx_tstate, PyObject *__pyx_sent_value) /* generator body */
{
  struct __pyx_obj_4grpc_7_cython_6cygrpc___pyx_scope_struct_34_abort *__pyx_cur_scope = ((struct __pyx_obj_4grpc_7_cython_6cygrpc___pyx_scope_struct_34_abort *)__pyx_generator->closure);
  PyObject *__pyx_r = NULL;
  int __pyx_t_1;
  int __pyx_t_2;
  PyObject *__pyx_t_3 = NULL;
  PyObject *__pyx_t_4 = NULL;
  PyObject *__pyx_t_5 = NULL;
  int __pyx_t_6;
  grpc_status_code __pyx_t_7;
  PyObject *__pyx_t_8 = NULL;
  PyObject *__pyx_t_9 = NULL;
  int __pyx_t_10;
  PyObject *__pyx_t_11 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("abort", 0);
  switch (__pyx_generator->resume_label) {
    case 0: goto __pyx_L3_first_run;
    case 1: goto __pyx_L11_resume_from_await;
    default: /* CPython raises the right error here */
    __Pyx_RefNannyFinishContext();
    return NULL;
  }
  __pyx_L3_first_run:;
  if (unlikely(!__pyx_sent_value)) __PYX_ERR(10, 162, __pyx_L1_error)

  /* "src/python/grpcio/grpc/_cython/_cygrpc/aio/server.pyx.pxi":166
 *               str details='',
 *               tuple trailing_metadata=_IMMUTABLE_EMPTY_METADATA):
 *         if self._rpc_state.abort_exception is not None:             # <<<<<<<<<<<<<<
 *             raise UsageError('Abort already called!')
 *         else:
 */
  __pyx_t_1 = (__pyx_cur_scope->__pyx_v_self->_rpc_state->abort_exception != Py_None);
  __pyx_t_2 = (__pyx_t_1 != 0);
  if (unlikely(__pyx_t_2)) {

    /* "src/python/grpcio/grpc/_cython/_cygrpc/aio/server.pyx.pxi":167
 *               tuple trailing_metadata=_IMMUTABLE_EMPTY_METADATA):
 *         if self._rpc_state.abort_exception is not None:
 *             raise UsageError('Abort already called!')             # <<<<<<<<<<<<<<
 *         else:
 *             # Keeps track of the exception object. After abort happen, the RPC
 */
    __Pyx_GetModuleGlobalName(__pyx_t_4, __pyx_n_s_UsageError); if (unlikely(!__pyx_t_4)) __PYX_ERR(10, 167, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_4);
    __pyx_t_5 = NULL;
    if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_4))) {
      __pyx_t_5 = PyMethod_GET_SELF(__pyx_t_4);
      if (likely(__pyx_t_5)) {
        PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_4);
        __Pyx_INCREF(__pyx_t_5);
        __Pyx_INCREF(function);
        __Pyx_DECREF_SET(__pyx_t_4, function);
      }
    }
    __pyx_t_3 = (__pyx_t_5) ? __Pyx_PyObject_Call2Args(__pyx_t_4, __pyx_t_5, __pyx_kp_s_Abort_already_called) : __Pyx_PyObject_CallOneArg(__pyx_t_4, __pyx_kp_s_Abort_already_called);
    __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0;
    if (unlikely(!__pyx_t_3)) __PYX_ERR(10, 167, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_3);
    __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
    __Pyx_Raise(__pyx_t_3, 0, 0, 0);
    __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
    __PYX_ERR(10, 167, __pyx_L1_error)

    /* "src/python/grpcio/grpc/_cython/_cygrpc/aio/server.pyx.pxi":166
 *               str details='',
 *               tuple trailing_metadata=_IMMUTABLE_EMPTY_METADATA):
 *         if self._rpc_state.abort_exception is not None:             # <<<<<<<<<<<<<<
 *             raise UsageError('Abort already called!')
 *         else:
 */
  }

  /* "src/python/grpcio/grpc/_cython/_cygrpc/aio/server.pyx.pxi":172
 *             # should stop execution. However, if users decided to suppress it, it
 *             # could lead to undefined behavior.
 *             self._rpc_state.abort_exception = AbortError('Locally aborted.')             # <<<<<<<<<<<<<<
 * 
 *             if trailing_metadata == _IMMUTABLE_EMPTY_METADATA and self._rpc_state.trailing_metadata:
 */
  /*else*/ {
    __Pyx_GetModuleGlobalName(__pyx_t_4, __pyx_n_s_AbortError); if (unlikely(!__pyx_t_4)) __PYX_ERR(10, 172, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_4);
    __pyx_t_5 = NULL;
    if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_4))) {
      __pyx_t_5 = PyMethod_GET_SELF(__pyx_t_4);
      if (likely(__pyx_t_5)) {
        PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_4);
        __Pyx_INCREF(__pyx_t_5);
        __Pyx_INCREF(function);
        __Pyx_DECREF_SET(__pyx_t_4, function);
      }
    }
    __pyx_t_3 = (__pyx_t_5) ? __Pyx_PyObject_Call2Args(__pyx_t_4, __pyx_t_5, __pyx_kp_s_Locally_aborted) : __Pyx_PyObject_CallOneArg(__pyx_t_4, __pyx_kp_s_Locally_aborted);
    __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0;
    if (unlikely(!__pyx_t_3)) __PYX_ERR(10, 172, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_3);
    __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
    __Pyx_GIVEREF(__pyx_t_3);
    __Pyx_GOTREF(__pyx_cur_scope->__pyx_v_self->_rpc_state->abort_exception);
    __Pyx_DECREF(__pyx_cur_scope->__pyx_v_self->_rpc_state->abort_exception);
    __pyx_cur_scope->__pyx_v_self->_rpc_state->abort_exception = __pyx_t_3;
    __pyx_t_3 = 0;

    /* "src/python/grpcio/grpc/_cython/_cygrpc/aio/server.pyx.pxi":174
 *             self._rpc_state.abort_exception = AbortError('Locally aborted.')
 * 
 *             if trailing_metadata == _IMMUTABLE_EMPTY_METADATA and self._rpc_state.trailing_metadata:             # <<<<<<<<<<<<<<
 *                 trailing_metadata = self._rpc_state.trailing_metadata
 * 
 */
    __Pyx_GetModuleGlobalName(__pyx_t_3, __pyx_n_s_IMMUTABLE_EMPTY_METADATA); if (unlikely(!__pyx_t_3)) __PYX_ERR(10, 174, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_3);
    __pyx_t_4 = PyObject_RichCompare(__pyx_cur_scope->__pyx_v_trailing_metadata, __pyx_t_3, Py_EQ); __Pyx_XGOTREF(__pyx_t_4); if (unlikely(!__pyx_t_4)) __PYX_ERR(10, 174, __pyx_L1_error)
    __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
    __pyx_t_1 = __Pyx_PyObject_IsTrue(__pyx_t_4); if (unlikely(__pyx_t_1 < 0)) __PYX_ERR(10, 174, __pyx_L1_error)
    __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
    if (__pyx_t_1) {
    } else {
      __pyx_t_2 = __pyx_t_1;
      goto __pyx_L6_bool_binop_done;
    }
    __pyx_t_1 = (__pyx_cur_scope->__pyx_v_self->_rpc_state->trailing_metadata != Py_None)&&(PyTuple_GET_SIZE(__pyx_cur_scope->__pyx_v_self->_rpc_state->trailing_metadata) != 0);
    __pyx_t_2 = __pyx_t_1;
    __pyx_L6_bool_binop_done:;
    if (__pyx_t_2) {

      /* "src/python/grpcio/grpc/_cython/_cygrpc/aio/server.pyx.pxi":175
 * 
 *             if trailing_metadata == _IMMUTABLE_EMPTY_METADATA and self._rpc_state.trailing_metadata:
 *                 trailing_metadata = self._rpc_state.trailing_metadata             # <<<<<<<<<<<<<<
 * 
 *             if details == '' and self._rpc_state.status_details:
 */
      __pyx_t_4 = __pyx_cur_scope->__pyx_v_self->_rpc_state->trailing_metadata;
      __Pyx_INCREF(__pyx_t_4);
      __Pyx_GOTREF(__pyx_cur_scope->__pyx_v_trailing_metadata);
      __Pyx_DECREF_SET(__pyx_cur_scope->__pyx_v_trailing_metadata, ((PyObject*)__pyx_t_4));
      __Pyx_GIVEREF(__pyx_t_4);
      __pyx_t_4 = 0;

      /* "src/python/grpcio/grpc/_cython/_cygrpc/aio/server.pyx.pxi":174
 *             self._rpc_state.abort_exception = AbortError('Locally aborted.')
 * 
 *             if trailing_metadata == _IMMUTABLE_EMPTY_METADATA and self._rpc_state.trailing_metadata:             # <<<<<<<<<<<<<<
 *                 trailing_metadata = self._rpc_state.trailing_metadata
 * 
 */
    }

    /* "src/python/grpcio/grpc/_cython/_cygrpc/aio/server.pyx.pxi":177
 *                 trailing_metadata = self._rpc_state.trailing_metadata
 * 
 *             if details == '' and self._rpc_state.status_details:             # <<<<<<<<<<<<<<
 *                 details = self._rpc_state.status_details
 * 
 */
    __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_cur_scope->__pyx_v_details, __pyx_kp_s_, Py_EQ)); if (unlikely(__pyx_t_1 < 0)) __PYX_ERR(10, 177, __pyx_L1_error)
    __pyx_t_6 = (__pyx_t_1 != 0);
    if (__pyx_t_6) {
    } else {
      __pyx_t_2 = __pyx_t_6;
      goto __pyx_L9_bool_binop_done;
    }
    __pyx_t_6 = __Pyx_PyObject_IsTrue(__pyx_cur_scope->__pyx_v_self->_rpc_state->status_details); if (unlikely(__pyx_t_6 < 0)) __PYX_ERR(10, 177, __pyx_L1_error)
    __pyx_t_2 = __pyx_t_6;
    __pyx_L9_bool_binop_done:;
    if (__pyx_t_2) {

      /* "src/python/grpcio/grpc/_cython/_cygrpc/aio/server.pyx.pxi":178
 * 
 *             if details == '' and self._rpc_state.status_details:
 *                 details = self._rpc_state.status_details             # <<<<<<<<<<<<<<
 * 
 *             actual_code = get_status_code(code)
 */
      __pyx_t_4 = __pyx_cur_scope->__pyx_v_self->_rpc_state->status_details;
      __Pyx_INCREF(__pyx_t_4);
      __Pyx_GOTREF(__pyx_cur_scope->__pyx_v_details);
      __Pyx_DECREF_SET(__pyx_cur_scope->__pyx_v_details, ((PyObject*)__pyx_t_4));
      __Pyx_GIVEREF(__pyx_t_4);
      __pyx_t_4 = 0;

      /* "src/python/grpcio/grpc/_cython/_cygrpc/aio/server.pyx.pxi":177
 *                 trailing_metadata = self._rpc_state.trailing_metadata
 * 
 *             if details == '' and self._rpc_state.status_details:             # <<<<<<<<<<<<<<
 *                 details = self._rpc_state.status_details
 * 
 */
    }

    /* "src/python/grpcio/grpc/_cython/_cygrpc/aio/server.pyx.pxi":180
 *                 details = self._rpc_state.status_details
 * 
 *             actual_code = get_status_code(code)             # <<<<<<<<<<<<<<
 * 
 *             self._rpc_state.status_sent = True
 */
    __pyx_t_7 = __pyx_f_4grpc_7_cython_6cygrpc_get_status_code(__pyx_cur_scope->__pyx_v_code); if (unlikely(PyErr_Occurred())) __PYX_ERR(10, 180, __pyx_L1_error)
    __pyx_cur_scope->__pyx_v_actual_code = __pyx_t_7;

    /* "src/python/grpcio/grpc/_cython/_cygrpc/aio/server.pyx.pxi":182
 *             actual_code = get_status_code(code)
 * 
 *             self._rpc_state.status_sent = True             # <<<<<<<<<<<<<<
 *             await _send_error_status_from_server(
 *                 self._rpc_state,
 */
    __pyx_cur_scope->__pyx_v_self->_rpc_state->status_sent = 1;

    /* "src/python/grpcio/grpc/_cython/_cygrpc/aio/server.pyx.pxi":183
 * 
 *             self._rpc_state.status_sent = True
 *             await _send_error_status_from_server(             # <<<<<<<<<<<<<<
 *                 self._rpc_state,
 *                 actual_code,
 */
    __Pyx_GetModuleGlobalName(__pyx_t_3, __pyx_n_s_send_error_status_from_server); if (unlikely(!__pyx_t_3)) __PYX_ERR(10, 183, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_3);

    /* "src/python/grpcio/grpc/_cython/_cygrpc/aio/server.pyx.pxi":185
 *             await _send_error_status_from_server(
 *                 self._rpc_state,
 *                 actual_code,             # <<<<<<<<<<<<<<
 *                 details,
 *                 trailing_metadata,
 */
    __pyx_t_5 = __Pyx_PyInt_From_grpc_status_code(__pyx_cur_scope->__pyx_v_actual_code); if (unlikely(!__pyx_t_5)) __PYX_ERR(10, 185, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_5);

    /* "src/python/grpcio/grpc/_cython/_cygrpc/aio/server.pyx.pxi":188
 *                 details,
 *                 trailing_metadata,
 *                 self._rpc_state.create_send_initial_metadata_op_if_not_sent(),             # <<<<<<<<<<<<<<
 *                 self._loop
 *             )
 */
    __pyx_t_8 = ((PyObject *)((struct __pyx_vtabstruct_4grpc_7_cython_6cygrpc_RPCState *)__pyx_cur_scope->__pyx_v_self->_rpc_state->__pyx_vtab)->create_send_initial_metadata_op_if_not_sent(__pyx_cur_scope->__pyx_v_self->_rpc_state)); if (unlikely(!__pyx_t_8)) __PYX_ERR(10, 188, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_8);

    /* "src/python/grpcio/grpc/_cython/_cygrpc/aio/server.pyx.pxi":189
 *                 trailing_metadata,
 *                 self._rpc_state.create_send_initial_metadata_op_if_not_sent(),
 *                 self._loop             # <<<<<<<<<<<<<<
 *             )
 * 
 */
    __pyx_t_9 = NULL;
    __pyx_t_10 = 0;
    if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_3))) {
      __pyx_t_9 = PyMethod_GET_SELF(__pyx_t_3);
      if (likely(__pyx_t_9)) {
        PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_3);
        __Pyx_INCREF(__pyx_t_9);
        __Pyx_INCREF(function);
        __Pyx_DECREF_SET(__pyx_t_3, function);
        __pyx_t_10 = 1;
      }
    }
    #if CYTHON_FAST_PYCALL
    if (PyFunction_Check(__pyx_t_3)) {
      PyObject *__pyx_temp[7] = {__pyx_t_9, ((PyObject *)__pyx_cur_scope->__pyx_v_self->_rpc_state), __pyx_t_5, __pyx_cur_scope->__pyx_v_details, __pyx_cur_scope->__pyx_v_trailing_metadata, __pyx_t_8, __pyx_cur_scope->__pyx_v_self->_loop};
      __pyx_t_4 = __Pyx_PyFunction_FastCall(__pyx_t_3, __pyx_temp+1-__pyx_t_10, 6+__pyx_t_10); if (unlikely(!__pyx_t_4)) __PYX_ERR(10, 183, __pyx_L1_error)
      __Pyx_XDECREF(__pyx_t_9); __pyx_t_9 = 0;
      __Pyx_GOTREF(__pyx_t_4);
      __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
      __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
    } else
    #endif
    #if CYTHON_FAST_PYCCALL
    if (__Pyx_PyFastCFunction_Check(__pyx_t_3)) {
      PyObject *__pyx_temp[7] = {__pyx_t_9, ((PyObject *)__pyx_cur_scope->__pyx_v_self->_rpc_state), __pyx_t_5, __pyx_cur_scope->__pyx_v_details, __pyx_cur_scope->__pyx_v_trailing_metadata, __pyx_t_8, __pyx_cur_scope->__pyx_v_self->_loop};
      __pyx_t_4 = __Pyx_PyCFunction_FastCall(__pyx_t_3, __pyx_temp+1-__pyx_t_10, 6+__pyx_t_10); if (unlikely(!__pyx_t_4)) __PYX_ERR(10, 183, __pyx_L1_error)
      __Pyx_XDECREF(__pyx_t_9); __pyx_t_9 = 0;
      __Pyx_GOTREF(__pyx_t_4);
      __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
      __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
    } else
    #endif
    {
      __pyx_t_11 = PyTuple_New(6+__pyx_t_10); if (unlikely(!__pyx_t_11)) __PYX_ERR(10, 183, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_11);
      if (__pyx_t_9) {
        __Pyx_GIVEREF(__pyx_t_9); PyTuple_SET_ITEM(__pyx_t_11, 0, __pyx_t_9); __pyx_t_9 = NULL;
      }
      __Pyx_INCREF(((PyObject *)__pyx_cur_scope->__pyx_v_self->_rpc_state));
      __Pyx_GIVEREF(((PyObject *)__pyx_cur_scope->__pyx_v_self->_rpc_state));
      PyTuple_SET_ITEM(__pyx_t_11, 0+__pyx_t_10, ((PyObject *)__pyx_cur_scope->__pyx_v_self->_rpc_state));
      __Pyx_GIVEREF(__pyx_t_5);
      PyTuple_SET_ITEM(__pyx_t_11, 1+__pyx_t_10, __pyx_t_5);
      __Pyx_INCREF(__pyx_cur_scope->__pyx_v_details);
      __Pyx_GIVEREF(__pyx_cur_scope->__pyx_v_details);
      PyTuple_SET_ITEM(__pyx_t_11, 2+__pyx_t_10, __pyx_cur_scope->__pyx_v_details);
      __Pyx_INCREF(__pyx_cur_scope->__pyx_v_trailing_metadata);
      __Pyx_GIVEREF(__pyx_cur_scope->__pyx_v_trailing_metadata);
      PyTuple_SET_ITEM(__pyx_t_11, 3+__pyx_t_10, __pyx_cur_scope->__pyx_v_trailing_metadata);
      __Pyx_GIVEREF(__pyx_t_8);
      PyTuple_SET_ITEM(__pyx_t_11, 4+__pyx_t_10, __pyx_t_8);
      __Pyx_INCREF(__pyx_cur_scope->__pyx_v_self->_loop);
      __Pyx_GIVEREF(__pyx_cur_scope->__pyx_v_self->_loop);
      PyTuple_SET_ITEM(__pyx_t_11, 5+__pyx_t_10, __pyx_cur_scope->__pyx_v_self->_loop);
      __pyx_t_5 = 0;
      __pyx_t_8 = 0;
      __pyx_t_4 = __Pyx_PyObject_Call(__pyx_t_3, __pyx_t_11, NULL); if (unlikely(!__pyx_t_4)) __PYX_ERR(10, 183, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_4);
      __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0;
    }
    __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
    __pyx_r = __Pyx_Coroutine_Yield_From(__pyx_generator, __pyx_t_4);
    __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
    __Pyx_XGOTREF(__pyx_r);
    if (likely(__pyx_r)) {
      __Pyx_XGIVEREF(__pyx_r);
      __Pyx_RefNannyFinishContext();
      __Pyx_Coroutine_ResetAndClearException(__pyx_generator);
      /* return from generator, awaiting value */
      __pyx_generator->resume_label = 1;
      return __pyx_r;
      __pyx_L11_resume_from_await:;
      if (unlikely(!__pyx_sent_value)) __PYX_ERR(10, 183, __pyx_L1_error)
    } else {
      PyObject* exc_type = __Pyx_PyErr_Occurred();
      if (exc_type) {
        if (likely(exc_type == PyExc_StopIteration || (exc_type != PyExc_GeneratorExit && __Pyx_PyErr_GivenExceptionMatches(exc_type, PyExc_StopIteration)))) PyErr_Clear();
        else __PYX_ERR(10, 183, __pyx_L1_error)
      }
    }

    /* "src/python/grpcio/grpc/_cython/_cygrpc/aio/server.pyx.pxi":192
 *             )
 * 
 *             raise self._rpc_state.abort_exception             # <<<<<<<<<<<<<<
 * 
 *     async def abort_with_status(self, object status):
 */
    __Pyx_Raise(__pyx_cur_scope->__pyx_v_self->_rpc_state->abort_exception, 0, 0, 0);
    __PYX_ERR(10, 192, __pyx_L1_error)
  }
  CYTHON_MAYBE_UNUSED_VAR(__pyx_cur_scope);

  /* "src/python/grpcio/grpc/_cython/_cygrpc/aio/server.pyx.pxi":162
 *             self._rpc_state.metadata_sent = True
 * 
 *     async def abort(self,             # <<<<<<<<<<<<<<
 *               object code,
 *               str details='',
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_3);
  __Pyx_XDECREF(__pyx_t_4);
  __Pyx_XDECREF(__pyx_t_5);
  __Pyx_XDECREF(__pyx_t_8);
  __Pyx_XDECREF(__pyx_t_9);
  __Pyx_XDECREF(__pyx_t_11);
  __Pyx_AddTraceback("abort", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_XDECREF(__pyx_r); __pyx_r = 0;
  #if !CYTHON_USE_EXC_INFO_STACK
  __Pyx_Coroutine_ResetAndClearException(__pyx_generator);
  #endif
  __pyx_generator->resume_label = -1;
  __Pyx_Coroutine_clear((PyObject*)__pyx_generator);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}
static PyObject *__pyx_gb_4grpc_7_cython_6cygrpc_16_ServicerContext_16generator23(__pyx_CoroutineObject *__pyx_generator, CYTHON_UNUSED PyThreadState *__pyx_tstate, PyObject *__pyx_sent_value); /* proto */

/* "src/python/grpcio/grpc/_cython/_cygrpc/aio/server.pyx.pxi":194
 *             raise self._rpc_state.abort_exception
 * 
 *     async def abort_with_status(self, object status):             # <<<<<<<<<<<<<<
 *         await self.abort(status.code, status.details, status.trailing_metadata)
 * 
 */

/* Python wrapper */
static PyObject *__pyx_pw_4grpc_7_cython_6cygrpc_16_ServicerContext_15abort_with_status(PyObject *__pyx_v_self, PyObject *__pyx_v_status); /*proto*/
static PyObject *__pyx_pw_4grpc_7_cython_6cygrpc_16_ServicerContext_15abort_with_status(PyObject *__pyx_v_self, PyObject *__pyx_v_status) {
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("abort_with_status (wrapper)", 0);
  __pyx_r = __pyx_pf_4grpc_7_cython_6cygrpc_16_ServicerContext_14abort_with_status(((struct __pyx_obj_4grpc_7_cython_6cygrpc__ServicerContext *)__pyx_v_self), ((PyObject *)__pyx_v_status));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_4grpc_7_cython_6cygrpc_16_ServicerContext_14abort_with_status(struct __pyx_obj_4grpc_7_cython_6cygrpc__ServicerContext *__pyx_v_self, PyObject *__pyx_v_status) {
  struct __pyx_obj_4grpc_7_cython_6cygrpc___pyx_scope_struct_35_abort_with_status *__pyx_cur_scope;
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("abort_with_status", 0);
  __pyx_cur_scope = (struct __pyx_obj_4grpc_7_cython_6cygrpc___pyx_scope_struct_35_abort_with_status *)__pyx_tp_new_4grpc_7_cython_6cygrpc___pyx_scope_struct_35_abort_with_status(__pyx_ptype_4grpc_7_cython_6cygrpc___pyx_scope_struct_35_abort_with_status, __pyx_empty_tuple, NULL);
  if (unlikely(!__pyx_cur_scope)) {
    __pyx_cur_scope = ((struct __pyx_obj_4grpc_7_cython_6cygrpc___pyx_scope_struct_35_abort_with_status *)Py_None);
    __Pyx_INCREF(Py_None);
    __PYX_ERR(10, 194, __pyx_L1_error)
  } else {
    __Pyx_GOTREF(__pyx_cur_scope);
  }
  __pyx_cur_scope->__pyx_v_self = __pyx_v_self;
  __Pyx_INCREF((PyObject *)__pyx_cur_scope->__pyx_v_self);
  __Pyx_GIVEREF((PyObject *)__pyx_cur_scope->__pyx_v_self);
  __pyx_cur_scope->__pyx_v_status = __pyx_v_status;
  __Pyx_INCREF(__pyx_cur_scope->__pyx_v_status);
  __Pyx_GIVEREF(__pyx_cur_scope->__pyx_v_status);
  {
    __pyx_CoroutineObject *gen = __Pyx_Coroutine_New((__pyx_coroutine_body_t) __pyx_gb_4grpc_7_cython_6cygrpc_16_ServicerContext_16generator23, NULL, (PyObject *) __pyx_cur_scope, __pyx_n_s_abort_with_status, __pyx_n_s_ServicerContext_abort_with_stat, __pyx_n_s_grpc__cython_cygrpc); if (unlikely(!gen)) __PYX_ERR(10, 194, __pyx_L1_error)
    __Pyx_DECREF(__pyx_cur_scope);
    __Pyx_RefNannyFinishContext();
    return (PyObject *) gen;
  }

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_AddTraceback("grpc._cython.cygrpc._ServicerContext.abort_with_status", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __Pyx_DECREF(((PyObject *)__pyx_cur_scope));
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_gb_4grpc_7_cython_6cygrpc_16_ServicerContext_16generator23(__pyx_CoroutineObject *__pyx_generator, CYTHON_UNUSED PyThreadState *__pyx_tstate, PyObject *__pyx_sent_value) /* generator body */
{
  struct __pyx_obj_4grpc_7_cython_6cygrpc___pyx_scope_struct_35_abort_with_status *__pyx_cur_scope = ((struct __pyx_obj_4grpc_7_cython_6cygrpc___pyx_scope_struct_35_abort_with_status *)__pyx_generator->closure);
  PyObject *__pyx_r = NULL;
  PyObject *__pyx_t_1 = NULL;
  PyObject *__pyx_t_2 = NULL;
  PyObject *__pyx_t_3 = NULL;
  PyObject *__pyx_t_4 = NULL;
  PyObject *__pyx_t_5 = NULL;
  PyObject *__pyx_t_6 = NULL;
  int __pyx_t_7;
  PyObject *__pyx_t_8 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("abort_with_status", 0);
  switch (__pyx_generator->resume_label) {
    case 0: goto __pyx_L3_first_run;
    case 1: goto __pyx_L4_resume_from_await;
    default: /* CPython raises the right error here */
    __Pyx_RefNannyFinishContext();
    return NULL;
  }
  __pyx_L3_first_run:;
  if (unlikely(!__pyx_sent_value)) __PYX_ERR(10, 194, __pyx_L1_error)

  /* "src/python/grpcio/grpc/_cython/_cygrpc/aio/server.pyx.pxi":195
 * 
 *     async def abort_with_status(self, object status):
 *         await self.abort(status.code, status.details, status.trailing_metadata)             # <<<<<<<<<<<<<<
 * 
 *     def set_trailing_metadata(self, object metadata):
 */
  __pyx_t_2 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_cur_scope->__pyx_v_self), __pyx_n_s_abort); if (unlikely(!__pyx_t_2)) __PYX_ERR(10, 195, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __pyx_t_3 = __Pyx_PyObject_GetAttrStr(__pyx_cur_scope->__pyx_v_status, __pyx_n_s_code); if (unlikely(!__pyx_t_3)) __PYX_ERR(10, 195, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  __pyx_t_4 = __Pyx_PyObject_GetAttrStr(__pyx_cur_scope->__pyx_v_status, __pyx_n_s_details); if (unlikely(!__pyx_t_4)) __PYX_ERR(10, 195, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_4);
  __pyx_t_5 = __Pyx_PyObject_GetAttrStr(__pyx_cur_scope->__pyx_v_status, __pyx_n_s_trailing_metadata); if (unlikely(!__pyx_t_5)) __PYX_ERR(10, 195, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_5);
  __pyx_t_6 = NULL;
  __pyx_t_7 = 0;
  if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_2))) {
    __pyx_t_6 = PyMethod_GET_SELF(__pyx_t_2);
    if (likely(__pyx_t_6)) {
      PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_2);
      __Pyx_INCREF(__pyx_t_6);
      __Pyx_INCREF(function);
      __Pyx_DECREF_SET(__pyx_t_2, function);
      __pyx_t_7 = 1;
    }
  }
  #if CYTHON_FAST_PYCALL
  if (PyFunction_Check(__pyx_t_2)) {
    PyObject *__pyx_temp[4] = {__pyx_t_6, __pyx_t_3, __pyx_t_4, __pyx_t_5};
    __pyx_t_1 = __Pyx_PyFunction_FastCall(__pyx_t_2, __pyx_temp+1-__pyx_t_7, 3+__pyx_t_7); if (unlikely(!__pyx_t_1)) __PYX_ERR(10, 195, __pyx_L1_error)
    __Pyx_XDECREF(__pyx_t_6); __pyx_t_6 = 0;
    __Pyx_GOTREF(__pyx_t_1);
    __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
    __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
    __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
  } else
  #endif
  #if CYTHON_FAST_PYCCALL
  if (__Pyx_PyFastCFunction_Check(__pyx_t_2)) {
    PyObject *__pyx_temp[4] = {__pyx_t_6, __pyx_t_3, __pyx_t_4, __pyx_t_5};
    __pyx_t_1 = __Pyx_PyCFunction_FastCall(__pyx_t_2, __pyx_temp+1-__pyx_t_7, 3+__pyx_t_7); if (unlikely(!__pyx_t_1)) __PYX_ERR(10, 195, __pyx_L1_error)
    __Pyx_XDECREF(__pyx_t_6); __pyx_t_6 = 0;
    __Pyx_GOTREF(__pyx_t_1);
    __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
    __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
    __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
  } else
  #endif
  {
    __pyx_t_8 = PyTuple_New(3+__pyx_t_7); if (unlikely(!__pyx_t_8)) __PYX_ERR(10, 195, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_8);
    if (__pyx_t_6) {
      __Pyx_GIVEREF(__pyx_t_6); PyTuple_SET_ITEM(__pyx_t_8, 0, __pyx_t_6); __pyx_t_6 = NULL;
    }
    __Pyx_GIVEREF(__pyx_t_3);
    PyTuple_SET_ITEM(__pyx_t_8, 0+__pyx_t_7, __pyx_t_3);
    __Pyx_GIVEREF(__pyx_t_4);
    PyTuple_SET_ITEM(__pyx_t_8, 1+__pyx_t_7, __pyx_t_4);
    __Pyx_GIVEREF(__pyx_t_5);
    PyTuple_SET_ITEM(__pyx_t_8, 2+__pyx_t_7, __pyx_t_5);
    __pyx_t_3 = 0;
    __pyx_t_4 = 0;
    __pyx_t_5 = 0;
    __pyx_t_1 = __Pyx_PyObject_Call(__pyx_t_2, __pyx_t_8, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(10, 195, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_1);
    __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
  }
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  __pyx_r = __Pyx_Coroutine_Yield_From(__pyx_generator, __pyx_t_1);
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  __Pyx_XGOTREF(__pyx_r);
  if (likely(__pyx_r)) {
    __Pyx_XGIVEREF(__pyx_r);
    __Pyx_RefNannyFinishContext();
    __Pyx_Coroutine_ResetAndClearException(__pyx_generator);
    /* return from generator, awaiting value */
    __pyx_generator->resume_label = 1;
    return __pyx_r;
    __pyx_L4_resume_from_await:;
    if (unlikely(!__pyx_sent_value)) __PYX_ERR(10, 195, __pyx_L1_error)
  } else {
    PyObject* exc_type = __Pyx_PyErr_Occurred();
    if (exc_type) {
      if (likely(exc_type == PyExc_StopIteration || (exc_type != PyExc_GeneratorExit && __Pyx_PyErr_GivenExceptionMatches(exc_type, PyExc_StopIteration)))) PyErr_Clear();
      else __PYX_ERR(10, 195, __pyx_L1_error)
    }
  }
  CYTHON_MAYBE_UNUSED_VAR(__pyx_cur_scope);

  /* "src/python/grpcio/grpc/_cython/_cygrpc/aio/server.pyx.pxi":194
 *             raise self._rpc_state.abort_exception
 * 
 *     async def abort_with_status(self, object status):             # <<<<<<<<<<<<<<
 *         await self.abort(status.code, status.details, status.trailing_metadata)
 * 
 */

  /* function exit code */
  PyErr_SetNone(PyExc_StopIteration);
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_XDECREF(__pyx_t_3);
  __Pyx_XDECREF(__pyx_t_4);
  __Pyx_XDECREF(__pyx_t_5);
  __Pyx_XDECREF(__pyx_t_6);
  __Pyx_XDECREF(__pyx_t_8);
  __Pyx_AddTraceback("abort_with_status", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_L0:;
  __Pyx_XDECREF(__pyx_r); __pyx_r = 0;
  #if !CYTHON_USE_EXC_INFO_STACK
  __Pyx_Coroutine_ResetAndClearException(__pyx_generator);
  #endif
  __pyx_generator->resume_label = -1;
  __Pyx_Coroutine_clear((PyObject*)__pyx_generator);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "src/python/grpcio/grpc/_cython/_cygrpc/aio/server.pyx.pxi":197
 *         await self.abort(status.code, status.details, status.trailing_metadata)
 * 
 *     def set_trailing_metadata(self, object metadata):             # <<<<<<<<<<<<<<
 *         self._rpc_state.trailing_metadata = tuple(metadata)
 * 
 */

/* Python wrapper */
static PyObject *__pyx_pw_4grpc_7_cython_6cygrpc_16_ServicerContext_18set_trailing_metadata(PyObject *__pyx_v_self, PyObject *__pyx_v_metadata); /*proto*/
static PyObject *__pyx_pw_4grpc_7_cython_6cygrpc_16_ServicerContext_18set_trailing_metadata(PyObject *__pyx_v_self, PyObject *__pyx_v_metadata) {
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("set_trailing_metadata (wrapper)", 0);
  __pyx_r = __pyx_pf_4grpc_7_cython_6cygrpc_16_ServicerContext_17set_trailing_metadata(((struct __pyx_obj_4grpc_7_cython_6cygrpc__ServicerContext *)__pyx_v_self), ((PyObject *)__pyx_v_metadata));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_4grpc_7_cython_6cygrpc_16_ServicerContext_17set_trailing_metadata(struct __pyx_obj_4grpc_7_cython_6cygrpc__ServicerContext *__pyx_v_self, PyObject *__pyx_v_metadata) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("set_trailing_metadata", 0);

  /* "src/python/grpcio/grpc/_cython/_cygrpc/aio/server.pyx.pxi":198
 * 
 *     def set_trailing_metadata(self, object metadata):
 *         self._rpc_state.trailing_metadata = tuple(metadata)             # <<<<<<<<<<<<<<
 * 
 *     def trailing_metadata(self):
 */
  __pyx_t_1 = __Pyx_PySequence_Tuple(__pyx_v_metadata); if (unlikely(!__pyx_t_1)) __PYX_ERR(10, 198, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_GIVEREF(__pyx_t_1);
  __Pyx_GOTREF(__pyx_v_self->_rpc_state->trailing_metadata);
  __Pyx_DECREF(__pyx_v_self->_rpc_state->trailing_metadata);
  __pyx_v_self->_rpc_state->trailing_metadata = ((PyObject*)__pyx_t_1);
  __pyx_t_1 = 0;

  /* "src/python/grpcio/grpc/_cython/_cygrpc/aio/server.pyx.pxi":197
 *         await self.abort(status.code, status.details, status.trailing_metadata)
 * 
 *     def set_trailing_metadata(self, object metadata):             # <<<<<<<<<<<<<<
 *         self._rpc_state.trailing_metadata = tuple(metadata)
 * 
 */

  /* function exit code */
  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_AddTraceback("grpc._cython.cygrpc._ServicerContext.set_trailing_metadata", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "src/python/grpcio/grpc/_cython/_cygrpc/aio/server.pyx.pxi":200
 *         self._rpc_state.trailing_metadata = tuple(metadata)
 * 
 *     def trailing_metadata(self):             # <<<<<<<<<<<<<<
 *         return self._rpc_state.trailing_metadata
 * 
 */

/* Python wrapper */
static PyObject *__pyx_pw_4grpc_7_cython_6cygrpc_16_ServicerContext_20trailing_metadata(PyObject *__pyx_v_self, CYTHON_UNUSED PyObject *unused); /*proto*/
static PyObject *__pyx_pw_4grpc_7_cython_6cygrpc_16_ServicerContext_20trailing_metadata(PyObject *__pyx_v_self, CYTHON_UNUSED PyObject *unused) {
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("trailing_metadata (wrapper)", 0);
  __pyx_r = __pyx_pf_4grpc_7_cython_6cygrpc_16_ServicerContext_19trailing_metadata(((struct __pyx_obj_4grpc_7_cython_6cygrpc__ServicerContext *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_4grpc_7_cython_6cygrpc_16_ServicerContext_19trailing_metadata(struct __pyx_obj_4grpc_7_cython_6cygrpc__ServicerContext *__pyx_v_self) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("trailing_metadata", 0);

  /* "src/python/grpcio/grpc/_cython/_cygrpc/aio/server.pyx.pxi":201
 * 
 *     def trailing_metadata(self):
 *         return self._rpc_state.trailing_metadata             # <<<<<<<<<<<<<<
 * 
 *     def invocation_metadata(self):
 */
  __Pyx_XDECREF(__pyx_r);
  __Pyx_INCREF(__pyx_v_self->_rpc_state->trailing_metadata);
  __pyx_r = __pyx_v_self->_rpc_state->trailing_metadata;
  goto __pyx_L0;

  /* "src/python/grpcio/grpc/_cython/_cygrpc/aio/server.pyx.pxi":200
 *         self._rpc_state.trailing_metadata = tuple(metadata)
 * 
 *     def trailing_metadata(self):             # <<<<<<<<<<<<<<
 *         return self._rpc_state.trailing_metadata
 * 
 */

  /* function exit code */
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "src/python/grpcio/grpc/_cython/_cygrpc/aio/server.pyx.pxi":203
 *         return self._rpc_state.trailing_metadata
 * 
 *     def invocation_metadata(self):             # <<<<<<<<<<<<<<
 *         return self._rpc_state.invocation_metadata()
 * 
 */

/* Python wrapper */
static PyObject *__pyx_pw_4grpc_7_cython_6cygrpc_16_ServicerContext_22invocation_metadata(PyObject *__pyx_v_self, CYTHON_UNUSED PyObject *unused); /*proto*/
static PyObject *__pyx_pw_4grpc_7_cython_6cygrpc_16_ServicerContext_22invocation_metadata(PyObject *__pyx_v_self, CYTHON_UNUSED PyObject *unused) {
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("invocation_metadata (wrapper)", 0);
  __pyx_r = __pyx_pf_4grpc_7_cython_6cygrpc_16_ServicerContext_21invocation_metadata(((struct __pyx_obj_4grpc_7_cython_6cygrpc__ServicerContext *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_4grpc_7_cython_6cygrpc_16_ServicerContext_21invocation_metadata(struct __pyx_obj_4grpc_7_cython_6cygrpc__ServicerContext *__pyx_v_self) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("invocation_metadata", 0);

  /* "src/python/grpcio/grpc/_cython/_cygrpc/aio/server.pyx.pxi":204
 * 
 *     def invocation_metadata(self):
 *         return self._rpc_state.invocation_metadata()             # <<<<<<<<<<<<<<
 * 
 *     def set_code(self, object code):
 */
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_1 = ((struct __pyx_vtabstruct_4grpc_7_cython_6cygrpc_RPCState *)__pyx_v_self->_rpc_state->__pyx_vtab)->invocation_metadata(__pyx_v_self->_rpc_state); if (unlikely(!__pyx_t_1)) __PYX_ERR(10, 204, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_r = __pyx_t_1;
  __pyx_t_1 = 0;
  goto __pyx_L0;

  /* "src/python/grpcio/grpc/_cython/_cygrpc/aio/server.pyx.pxi":203
 *         return self._rpc_state.trailing_metadata
 * 
 *     def invocation_metadata(self):             # <<<<<<<<<<<<<<
 *         return self._rpc_state.invocation_metadata()
 * 
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_AddTraceback("grpc._cython.cygrpc._ServicerContext.invocation_metadata", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "src/python/grpcio/grpc/_cython/_cygrpc/aio/server.pyx.pxi":206
 *         return self._rpc_state.invocation_metadata()
 * 
 *     def set_code(self, object code):             # <<<<<<<<<<<<<<
 *         self._rpc_state.status_code = get_status_code(code)
 * 
 */

/* Python wrapper */
static PyObject *__pyx_pw_4grpc_7_cython_6cygrpc_16_ServicerContext_24set_code(PyObject *__pyx_v_self, PyObject *__pyx_v_code); /*proto*/
static PyObject *__pyx_pw_4grpc_7_cython_6cygrpc_16_ServicerContext_24set_code(PyObject *__pyx_v_self, PyObject *__pyx_v_code) {
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("set_code (wrapper)", 0);
  __pyx_r = __pyx_pf_4grpc_7_cython_6cygrpc_16_ServicerContext_23set_code(((struct __pyx_obj_4grpc_7_cython_6cygrpc__ServicerContext *)__pyx_v_self), ((PyObject *)__pyx_v_code));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_4grpc_7_cython_6cygrpc_16_ServicerContext_23set_code(struct __pyx_obj_4grpc_7_cython_6cygrpc__ServicerContext *__pyx_v_self, PyObject *__pyx_v_code) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  grpc_status_code __pyx_t_1;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("set_code", 0);

  /* "src/python/grpcio/grpc/_cython/_cygrpc/aio/server.pyx.pxi":207
 * 
 *     def set_code(self, object code):
 *         self._rpc_state.status_code = get_status_code(code)             # <<<<<<<<<<<<<<
 * 
 *     def code(self):
 */
  __pyx_t_1 = __pyx_f_4grpc_7_cython_6cygrpc_get_status_code(__pyx_v_code); if (unlikely(PyErr_Occurred())) __PYX_ERR(10, 207, __pyx_L1_error)
  __pyx_v_self->_rpc_state->status_code = __pyx_t_1;

  /* "src/python/grpcio/grpc/_cython/_cygrpc/aio/server.pyx.pxi":206
 *         return self._rpc_state.invocation_metadata()
 * 
 *     def set_code(self, object code):             # <<<<<<<<<<<<<<
 *         self._rpc_state.status_code = get_status_code(code)
 * 
 */

  /* function exit code */
  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_AddTraceback("grpc._cython.cygrpc._ServicerContext.set_code", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "src/python/grpcio/grpc/_cython/_cygrpc/aio/server.pyx.pxi":209
 *         self._rpc_state.status_code = get_status_code(code)
 * 
 *     def code(self):             # <<<<<<<<<<<<<<
 *         return self._rpc_state.status_code
 * 
 */

/* Python wrapper */
static PyObject *__pyx_pw_4grpc_7_cython_6cygrpc_16_ServicerContext_26code(PyObject *__pyx_v_self, CYTHON_UNUSED PyObject *unused); /*proto*/
static PyObject *__pyx_pw_4grpc_7_cython_6cygrpc_16_ServicerContext_26code(PyObject *__pyx_v_self, CYTHON_UNUSED PyObject *unused) {
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("code (wrapper)", 0);
  __pyx_r = __pyx_pf_4grpc_7_cython_6cygrpc_16_ServicerContext_25code(((struct __pyx_obj_4grpc_7_cython_6cygrpc__ServicerContext *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_4grpc_7_cython_6cygrpc_16_ServicerContext_25code(struct __pyx_obj_4grpc_7_cython_6cygrpc__ServicerContext *__pyx_v_self) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("code", 0);

  /* "src/python/grpcio/grpc/_cython/_cygrpc/aio/server.pyx.pxi":210
 * 
 *     def code(self):
 *         return self._rpc_state.status_code             # <<<<<<<<<<<<<<
 * 
 *     def set_details(self, str details):
 */
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_1 = __Pyx_PyInt_From_grpc_status_code(__pyx_v_self->_rpc_state->status_code); if (unlikely(!__pyx_t_1)) __PYX_ERR(10, 210, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_r = __pyx_t_1;
  __pyx_t_1 = 0;
  goto __pyx_L0;

  /* "src/python/grpcio/grpc/_cython/_cygrpc/aio/server.pyx.pxi":209
 *         self._rpc_state.status_code = get_status_code(code)
 * 
 *     def code(self):             # <<<<<<<<<<<<<<
 *         return self._rpc_state.status_code
 * 
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_AddTraceback("grpc._cython.cygrpc._ServicerContext.code", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "src/python/grpcio/grpc/_cython/_cygrpc/aio/server.pyx.pxi":212
 *         return self._rpc_state.status_code
 * 
 *     def set_details(self, str details):             # <<<<<<<<<<<<<<
 *         self._rpc_state.status_details = details
 * 
 */

/* Python wrapper */
static PyObject *__pyx_pw_4grpc_7_cython_6cygrpc_16_ServicerContext_28set_details(PyObject *__pyx_v_self, PyObject *__pyx_v_details); /*proto*/
static PyObject *__pyx_pw_4grpc_7_cython_6cygrpc_16_ServicerContext_28set_details(PyObject *__pyx_v_self, PyObject *__pyx_v_details) {
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("set_details (wrapper)", 0);
  if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_details), (&PyString_Type), 1, "details", 1))) __PYX_ERR(10, 212, __pyx_L1_error)
  __pyx_r = __pyx_pf_4grpc_7_cython_6cygrpc_16_ServicerContext_27set_details(((struct __pyx_obj_4grpc_7_cython_6cygrpc__ServicerContext *)__pyx_v_self), ((PyObject*)__pyx_v_details));

  /* function exit code */
  goto __pyx_L0;
  __pyx_L1_error:;
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_4grpc_7_cython_6cygrpc_16_ServicerContext_27set_details(struct __pyx_obj_4grpc_7_cython_6cygrpc__ServicerContext *__pyx_v_self, PyObject *__pyx_v_details) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("set_details", 0);

  /* "src/python/grpcio/grpc/_cython/_cygrpc/aio/server.pyx.pxi":213
 * 
 *     def set_details(self, str details):
 *         self._rpc_state.status_details = details             # <<<<<<<<<<<<<<
 * 
 *     def details(self):
 */
  __Pyx_INCREF(__pyx_v_details);
  __Pyx_GIVEREF(__pyx_v_details);
  __Pyx_GOTREF(__pyx_v_self->_rpc_state->status_details);
  __Pyx_DECREF(__pyx_v_self->_rpc_state->status_details);
  __pyx_v_self->_rpc_state->status_details = __pyx_v_details;

  /* "src/python/grpcio/grpc/_cython/_cygrpc/aio/server.pyx.pxi":212
 *         return self._rpc_state.status_code
 * 
 *     def set_details(self, str details):             # <<<<<<<<<<<<<<
 *         self._rpc_state.status_details = details
 * 
 */

  /* function exit code */
  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "src/python/grpcio/grpc/_cython/_cygrpc/aio/server.pyx.pxi":215
 *         self._rpc_state.status_details = details
 * 
 *     def details(self):             # <<<<<<<<<<<<<<
 *         return self._rpc_state.status_details
 * 
 */

/* Python wrapper */
static PyObject *__pyx_pw_4grpc_7_cython_6cygrpc_16_ServicerContext_30details(PyObject *__pyx_v_self, CYTHON_UNUSED PyObject *unused); /*proto*/
static PyObject *__pyx_pw_4grpc_7_cython_6cygrpc_16_ServicerContext_30details(PyObject *__pyx_v_self, CYTHON_UNUSED PyObject *unused) {
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("details (wrapper)", 0);
  __pyx_r = __pyx_pf_4grpc_7_cython_6cygrpc_16_ServicerContext_29details(((struct __pyx_obj_4grpc_7_cython_6cygrpc__ServicerContext *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_4grpc_7_cython_6cygrpc_16_ServicerContext_29details(struct __pyx_obj_4grpc_7_cython_6cygrpc__ServicerContext *__pyx_v_self) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("details", 0);

  /* "src/python/grpcio/grpc/_cython/_cygrpc/aio/server.pyx.pxi":216
 * 
 *     def details(self):
 *         return self._rpc_state.status_details             # <<<<<<<<<<<<<<
 * 
 *     def set_compression(self, object compression):
 */
  __Pyx_XDECREF(__pyx_r);
  __Pyx_INCREF(__pyx_v_self->_rpc_state->status_details);
  __pyx_r = __pyx_v_self->_rpc_state->status_details;
  goto __pyx_L0;

  /* "src/python/grpcio/grpc/_cython/_cygrpc/aio/server.pyx.pxi":215
 *         self._rpc_state.status_details = details
 * 
 *     def details(self):             # <<<<<<<<<<<<<<
 *         return self._rpc_state.status_details
 * 
 */

  /* function exit code */
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "src/python/grpcio/grpc/_cython/_cygrpc/aio/server.pyx.pxi":218
 *         return self._rpc_state.status_details
 * 
 *     def set_compression(self, object compression):             # <<<<<<<<<<<<<<
 *         if self._rpc_state.metadata_sent:
 *             raise RuntimeError('Compression setting must be specified before sending initial metadata')
 */

/* Python wrapper */
static PyObject *__pyx_pw_4grpc_7_cython_6cygrpc_16_ServicerContext_32set_compression(PyObject *__pyx_v_self, PyObject *__pyx_v_compression); /*proto*/
static PyObject *__pyx_pw_4grpc_7_cython_6cygrpc_16_ServicerContext_32set_compression(PyObject *__pyx_v_self, PyObject *__pyx_v_compression) {
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("set_compression (wrapper)", 0);
  __pyx_r = __pyx_pf_4grpc_7_cython_6cygrpc_16_ServicerContext_31set_compression(((struct __pyx_obj_4grpc_7_cython_6cygrpc__ServicerContext *)__pyx_v_self), ((PyObject *)__pyx_v_compression));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_4grpc_7_cython_6cygrpc_16_ServicerContext_31set_compression(struct __pyx_obj_4grpc_7_cython_6cygrpc__ServicerContext *__pyx_v_self, PyObject *__pyx_v_compression) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  int __pyx_t_1;
  PyObject *__pyx_t_2 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("set_compression", 0);

  /* "src/python/grpcio/grpc/_cython/_cygrpc/aio/server.pyx.pxi":219
 * 
 *     def set_compression(self, object compression):
 *         if self._rpc_state.metadata_sent:             # <<<<<<<<<<<<<<
 *             raise RuntimeError('Compression setting must be specified before sending initial metadata')
 *         else:
 */
  __pyx_t_1 = (__pyx_v_self->_rpc_state->metadata_sent != 0);
  if (unlikely(__pyx_t_1)) {

    /* "src/python/grpcio/grpc/_cython/_cygrpc/aio/server.pyx.pxi":220
 *     def set_compression(self, object compression):
 *         if self._rpc_state.metadata_sent:
 *             raise RuntimeError('Compression setting must be specified before sending initial metadata')             # <<<<<<<<<<<<<<
 *         else:
 *             self._rpc_state.compression_algorithm = compression
 */
    __pyx_t_2 = __Pyx_PyObject_Call(__pyx_builtin_RuntimeError, __pyx_tuple__175, NULL); if (unlikely(!__pyx_t_2)) __PYX_ERR(10, 220, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_2);
    __Pyx_Raise(__pyx_t_2, 0, 0, 0);
    __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
    __PYX_ERR(10, 220, __pyx_L1_error)

    /* "src/python/grpcio/grpc/_cython/_cygrpc/aio/server.pyx.pxi":219
 * 
 *     def set_compression(self, object compression):
 *         if self._rpc_state.metadata_sent:             # <<<<<<<<<<<<<<
 *             raise RuntimeError('Compression setting must be specified before sending initial metadata')
 *         else:
 */
  }

  /* "src/python/grpcio/grpc/_cython/_cygrpc/aio/server.pyx.pxi":222
 *             raise RuntimeError('Compression setting must be specified before sending initial metadata')
 *         else:
 *             self._rpc_state.compression_algorithm = compression             # <<<<<<<<<<<<<<
 * 
 *     def disable_next_message_compression(self):
 */
  /*else*/ {
    __Pyx_INCREF(__pyx_v_compression);
    __Pyx_GIVEREF(__pyx_v_compression);
    __Pyx_GOTREF(__pyx_v_self->_rpc_state->compression_algorithm);
    __Pyx_DECREF(__pyx_v_self->_rpc_state->compression_algorithm);
    __pyx_v_self->_rpc_state->compression_algorithm = __pyx_v_compression;
  }

  /* "src/python/grpcio/grpc/_cython/_cygrpc/aio/server.pyx.pxi":218
 *         return self._rpc_state.status_details
 * 
 *     def set_compression(self, object compression):             # <<<<<<<<<<<<<<
 *         if self._rpc_state.metadata_sent:
 *             raise RuntimeError('Compression setting must be specified before sending initial metadata')
 */

  /* function exit code */
  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_AddTraceback("grpc._cython.cygrpc._ServicerContext.set_compression", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "src/python/grpcio/grpc/_cython/_cygrpc/aio/server.pyx.pxi":224
 *             self._rpc_state.compression_algorithm = compression
 * 
 *     def disable_next_message_compression(self):             # <<<<<<<<<<<<<<
 *         self._rpc_state.disable_next_compression = True
 * 
 */

/* Python wrapper */
static PyObject *__pyx_pw_4grpc_7_cython_6cygrpc_16_ServicerContext_34disable_next_message_compression(PyObject *__pyx_v_self, CYTHON_UNUSED PyObject *unused); /*proto*/
static PyObject *__pyx_pw_4grpc_7_cython_6cygrpc_16_ServicerContext_34disable_next_message_compression(PyObject *__pyx_v_self, CYTHON_UNUSED PyObject *unused) {
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("disable_next_message_compression (wrapper)", 0);
  __pyx_r = __pyx_pf_4grpc_7_cython_6cygrpc_16_ServicerContext_33disable_next_message_compression(((struct __pyx_obj_4grpc_7_cython_6cygrpc__ServicerContext *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_4grpc_7_cython_6cygrpc_16_ServicerContext_33disable_next_message_compression(struct __pyx_obj_4grpc_7_cython_6cygrpc__ServicerContext *__pyx_v_self) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("disable_next_message_compression", 0);

  /* "src/python/grpcio/grpc/_cython/_cygrpc/aio/server.pyx.pxi":225
 * 
 *     def disable_next_message_compression(self):
 *         self._rpc_state.disable_next_compression = True             # <<<<<<<<<<<<<<
 * 
 *     def peer(self):
 */
  __pyx_v_self->_rpc_state->disable_next_compression = 1;

  /* "src/python/grpcio/grpc/_cython/_cygrpc/aio/server.pyx.pxi":224
 *             self._rpc_state.compression_algorithm = compression
 * 
 *     def disable_next_message_compression(self):             # <<<<<<<<<<<<<<
 *         self._rpc_state.disable_next_compression = True
 * 
 */

  /* function exit code */
  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "src/python/grpcio/grpc/_cython/_cygrpc/aio/server.pyx.pxi":227
 *         self._rpc_state.disable_next_compression = True
 * 
 *     def peer(self):             # <<<<<<<<<<<<<<
 *         cdef char *c_peer = NULL
 *         c_peer = grpc_call_get_peer(self._rpc_state.call)
 */

/* Python wrapper */
static PyObject *__pyx_pw_4grpc_7_cython_6cygrpc_16_ServicerContext_36peer(PyObject *__pyx_v_self, CYTHON_UNUSED PyObject *unused); /*proto*/
static PyObject *__pyx_pw_4grpc_7_cython_6cygrpc_16_ServicerContext_36peer(PyObject *__pyx_v_self, CYTHON_UNUSED PyObject *unused) {
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("peer (wrapper)", 0);
  __pyx_r = __pyx_pf_4grpc_7_cython_6cygrpc_16_ServicerContext_35peer(((struct __pyx_obj_4grpc_7_cython_6cygrpc__ServicerContext *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_4grpc_7_cython_6cygrpc_16_ServicerContext_35peer(struct __pyx_obj_4grpc_7_cython_6cygrpc__ServicerContext *__pyx_v_self) {
  char *__pyx_v_c_peer;
  PyObject *__pyx_v_peer = NULL;
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  PyObject *__pyx_t_2 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("peer", 0);

  /* "src/python/grpcio/grpc/_cython/_cygrpc/aio/server.pyx.pxi":228
 * 
 *     def peer(self):
 *         cdef char *c_peer = NULL             # <<<<<<<<<<<<<<
 *         c_peer = grpc_call_get_peer(self._rpc_state.call)
 *         peer = (<bytes>c_peer).decode('utf8')
 */
  __pyx_v_c_peer = NULL;

  /* "src/python/grpcio/grpc/_cython/_cygrpc/aio/server.pyx.pxi":229
 *     def peer(self):
 *         cdef char *c_peer = NULL
 *         c_peer = grpc_call_get_peer(self._rpc_state.call)             # <<<<<<<<<<<<<<
 *         peer = (<bytes>c_peer).decode('utf8')
 *         gpr_free(c_peer)
 */
  __pyx_v_c_peer = grpc_call_get_peer(__pyx_v_self->_rpc_state->__pyx_base.call);

  /* "src/python/grpcio/grpc/_cython/_cygrpc/aio/server.pyx.pxi":230
 *         cdef char *c_peer = NULL
 *         c_peer = grpc_call_get_peer(self._rpc_state.call)
 *         peer = (<bytes>c_peer).decode('utf8')             # <<<<<<<<<<<<<<
 *         gpr_free(c_peer)
 *         return peer
 */
  __pyx_t_1 = __Pyx_PyBytes_FromString(__pyx_v_c_peer); if (unlikely(!__pyx_t_1)) __PYX_ERR(10, 230, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  if (unlikely(__pyx_t_1 == Py_None)) {
    PyErr_Format(PyExc_AttributeError, "'NoneType' object has no attribute '%.30s'", "decode");
    __PYX_ERR(10, 230, __pyx_L1_error)
  }
  __pyx_t_2 = __Pyx_decode_bytes(((PyObject*)__pyx_t_1), 0, PY_SSIZE_T_MAX, NULL, NULL, PyUnicode_DecodeUTF8); if (unlikely(!__pyx_t_2)) __PYX_ERR(10, 230, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  __pyx_v_peer = __pyx_t_2;
  __pyx_t_2 = 0;

  /* "src/python/grpcio/grpc/_cython/_cygrpc/aio/server.pyx.pxi":231
 *         c_peer = grpc_call_get_peer(self._rpc_state.call)
 *         peer = (<bytes>c_peer).decode('utf8')
 *         gpr_free(c_peer)             # <<<<<<<<<<<<<<
 *         return peer
 * 
 */
  gpr_free(__pyx_v_c_peer);

  /* "src/python/grpcio/grpc/_cython/_cygrpc/aio/server.pyx.pxi":232
 *         peer = (<bytes>c_peer).decode('utf8')
 *         gpr_free(c_peer)
 *         return peer             # <<<<<<<<<<<<<<
 * 
 *     def peer_identities(self):
 */
  __Pyx_XDECREF(__pyx_r);
  __Pyx_INCREF(__pyx_v_peer);
  __pyx_r = __pyx_v_peer;
  goto __pyx_L0;

  /* "src/python/grpcio/grpc/_cython/_cygrpc/aio/server.pyx.pxi":227
 *         self._rpc_state.disable_next_compression = True
 * 
 *     def peer(self):             # <<<<<<<<<<<<<<
 *         cdef char *c_peer = NULL
 *         c_peer = grpc_call_get_peer(self._rpc_state.call)
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_AddTraceback("grpc._cython.cygrpc._ServicerContext.peer", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XDECREF(__pyx_v_peer);
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "src/python/grpcio/grpc/_cython/_cygrpc/aio/server.pyx.pxi":234
 *         return peer
 * 
 *     def peer_identities(self):             # <<<<<<<<<<<<<<
 *         cdef Call query_call = Call()
 *         query_call.c_call = self._rpc_state.call
 */

/* Python wrapper */
static PyObject *__pyx_pw_4grpc_7_cython_6cygrpc_16_ServicerContext_38peer_identities(PyObject *__pyx_v_self, CYTHON_UNUSED PyObject *unused); /*proto*/
static PyObject *__pyx_pw_4grpc_7_cython_6cygrpc_16_ServicerContext_38peer_identities(PyObject *__pyx_v_self, CYTHON_UNUSED PyObject *unused) {
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("peer_identities (wrapper)", 0);
  __pyx_r = __pyx_pf_4grpc_7_cython_6cygrpc_16_ServicerContext_37peer_identities(((struct __pyx_obj_4grpc_7_cython_6cygrpc__ServicerContext *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_4grpc_7_cython_6cygrpc_16_ServicerContext_37peer_identities(struct __pyx_obj_4grpc_7_cython_6cygrpc__ServicerContext *__pyx_v_self) {
  struct __pyx_obj_4grpc_7_cython_6cygrpc_Call *__pyx_v_query_call = 0;
  PyObject *__pyx_v_identities = NULL;
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  grpc_call *__pyx_t_2;
  PyObject *__pyx_t_3 = NULL;
  PyObject *__pyx_t_4 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("peer_identities", 0);

  /* "src/python/grpcio/grpc/_cython/_cygrpc/aio/server.pyx.pxi":235
 * 
 *     def peer_identities(self):
 *         cdef Call query_call = Call()             # <<<<<<<<<<<<<<
 *         query_call.c_call = self._rpc_state.call
 *         identities = peer_identities(query_call)
 */
  __pyx_t_1 = __Pyx_PyObject_CallNoArg(((PyObject *)__pyx_ptype_4grpc_7_cython_6cygrpc_Call)); if (unlikely(!__pyx_t_1)) __PYX_ERR(10, 235, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_v_query_call = ((struct __pyx_obj_4grpc_7_cython_6cygrpc_Call *)__pyx_t_1);
  __pyx_t_1 = 0;

  /* "src/python/grpcio/grpc/_cython/_cygrpc/aio/server.pyx.pxi":236
 *     def peer_identities(self):
 *         cdef Call query_call = Call()
 *         query_call.c_call = self._rpc_state.call             # <<<<<<<<<<<<<<
 *         identities = peer_identities(query_call)
 *         query_call.c_call = NULL
 */
  __pyx_t_2 = __pyx_v_self->_rpc_state->__pyx_base.call;
  __pyx_v_query_call->c_call = __pyx_t_2;

  /* "src/python/grpcio/grpc/_cython/_cygrpc/aio/server.pyx.pxi":237
 *         cdef Call query_call = Call()
 *         query_call.c_call = self._rpc_state.call
 *         identities = peer_identities(query_call)             # <<<<<<<<<<<<<<
 *         query_call.c_call = NULL
 *         return identities
 */
  __Pyx_GetModuleGlobalName(__pyx_t_3, __pyx_n_s_peer_identities); if (unlikely(!__pyx_t_3)) __PYX_ERR(10, 237, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  __pyx_t_4 = NULL;
  if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_3))) {
    __pyx_t_4 = PyMethod_GET_SELF(__pyx_t_3);
    if (likely(__pyx_t_4)) {
      PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_3);
      __Pyx_INCREF(__pyx_t_4);
      __Pyx_INCREF(function);
      __Pyx_DECREF_SET(__pyx_t_3, function);
    }
  }
  __pyx_t_1 = (__pyx_t_4) ? __Pyx_PyObject_Call2Args(__pyx_t_3, __pyx_t_4, ((PyObject *)__pyx_v_query_call)) : __Pyx_PyObject_CallOneArg(__pyx_t_3, ((PyObject *)__pyx_v_query_call));
  __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0;
  if (unlikely(!__pyx_t_1)) __PYX_ERR(10, 237, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
  __pyx_v_identities = __pyx_t_1;
  __pyx_t_1 = 0;

  /* "src/python/grpcio/grpc/_cython/_cygrpc/aio/server.pyx.pxi":238
 *         query_call.c_call = self._rpc_state.call
 *         identities = peer_identities(query_call)
 *         query_call.c_call = NULL             # <<<<<<<<<<<<<<
 *         return identities
 * 
 */
  __pyx_v_query_call->c_call = NULL;

  /* "src/python/grpcio/grpc/_cython/_cygrpc/aio/server.pyx.pxi":239
 *         identities = peer_identities(query_call)
 *         query_call.c_call = NULL
 *         return identities             # <<<<<<<<<<<<<<
 * 
 *     def peer_identity_key(self):
 */
  __Pyx_XDECREF(__pyx_r);
  __Pyx_INCREF(__pyx_v_identities);
  __pyx_r = __pyx_v_identities;
  goto __pyx_L0;

  /* "src/python/grpcio/grpc/_cython/_cygrpc/aio/server.pyx.pxi":234
 *         return peer
 * 
 *     def peer_identities(self):             # <<<<<<<<<<<<<<
 *         cdef Call query_call = Call()
 *         query_call.c_call = self._rpc_state.call
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_XDECREF(__pyx_t_3);
  __Pyx_XDECREF(__pyx_t_4);
  __Pyx_AddTraceback("grpc._cython.cygrpc._ServicerContext.peer_identities", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XDECREF((PyObject *)__pyx_v_query_call);
  __Pyx_XDECREF(__pyx_v_identities);
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "src/python/grpcio/grpc/_cython/_cygrpc/aio/server.pyx.pxi":241
 *         return identities
 * 
 *     def peer_identity_key(self):             # <<<<<<<<<<<<<<
 *         cdef Call query_call = Call()
 *         query_call.c_call = self._rpc_state.call
 */

/* Python wrapper */
static PyObject *__pyx_pw_4grpc_7_cython_6cygrpc_16_ServicerContext_40peer_identity_key(PyObject *__pyx_v_self, CYTHON_UNUSED PyObject *unused); /*proto*/
static PyObject *__pyx_pw_4grpc_7_cython_6cygrpc_16_ServicerContext_40peer_identity_key(PyObject *__pyx_v_self, CYTHON_UNUSED PyObject *unused) {
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("peer_identity_key (wrapper)", 0);
  __pyx_r = __pyx_pf_4grpc_7_cython_6cygrpc_16_ServicerContext_39peer_identity_key(((struct __pyx_obj_4grpc_7_cython_6cygrpc__ServicerContext *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_4grpc_7_cython_6cygrpc_16_ServicerContext_39peer_identity_key(struct __pyx_obj_4grpc_7_cython_6cygrpc__ServicerContext *__pyx_v_self) {
  struct __pyx_obj_4grpc_7_cython_6cygrpc_Call *__pyx_v_query_call = 0;
  PyObject *__pyx_v_identity_key = NULL;
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  grpc_call *__pyx_t_2;
  PyObject *__pyx_t_3 = NULL;
  PyObject *__pyx_t_4 = NULL;
  int __pyx_t_5;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("peer_identity_key", 0);

  /* "src/python/grpcio/grpc/_cython/_cygrpc/aio/server.pyx.pxi":242
 * 
 *     def peer_identity_key(self):
 *         cdef Call query_call = Call()             # <<<<<<<<<<<<<<
 *         query_call.c_call = self._rpc_state.call
 *         identity_key = peer_identity_key(query_call)
 */
  __pyx_t_1 = __Pyx_PyObject_CallNoArg(((PyObject *)__pyx_ptype_4grpc_7_cython_6cygrpc_Call)); if (unlikely(!__pyx_t_1)) __PYX_ERR(10, 242, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_v_query_call = ((struct __pyx_obj_4grpc_7_cython_6cygrpc_Call *)__pyx_t_1);
  __pyx_t_1 = 0;

  /* "src/python/grpcio/grpc/_cython/_cygrpc/aio/server.pyx.pxi":243
 *     def peer_identity_key(self):
 *         cdef Call query_call = Call()
 *         query_call.c_call = self._rpc_state.call             # <<<<<<<<<<<<<<
 *         identity_key = peer_identity_key(query_call)
 *         query_call.c_call = NULL
 */
  __pyx_t_2 = __pyx_v_self->_rpc_state->__pyx_base.call;
  __pyx_v_query_call->c_call = __pyx_t_2;

  /* "src/python/grpcio/grpc/_cython/_cygrpc/aio/server.pyx.pxi":244
 *         cdef Call query_call = Call()
 *         query_call.c_call = self._rpc_state.call
 *         identity_key = peer_identity_key(query_call)             # <<<<<<<<<<<<<<
 *         query_call.c_call = NULL
 *         if identity_key:
 */
  __Pyx_GetModuleGlobalName(__pyx_t_3, __pyx_n_s_peer_identity_key); if (unlikely(!__pyx_t_3)) __PYX_ERR(10, 244, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  __pyx_t_4 = NULL;
  if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_3))) {
    __pyx_t_4 = PyMethod_GET_SELF(__pyx_t_3);
    if (likely(__pyx_t_4)) {
      PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_3);
      __Pyx_INCREF(__pyx_t_4);
      __Pyx_INCREF(function);
      __Pyx_DECREF_SET(__pyx_t_3, function);
    }
  }
  __pyx_t_1 = (__pyx_t_4) ? __Pyx_PyObject_Call2Args(__pyx_t_3, __pyx_t_4, ((PyObject *)__pyx_v_query_call)) : __Pyx_PyObject_CallOneArg(__pyx_t_3, ((PyObject *)__pyx_v_query_call));
  __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0;
  if (unlikely(!__pyx_t_1)) __PYX_ERR(10, 244, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
  __pyx_v_identity_key = __pyx_t_1;
  __pyx_t_1 = 0;

  /* "src/python/grpcio/grpc/_cython/_cygrpc/aio/server.pyx.pxi":245
 *         query_call.c_call = self._rpc_state.call
 *         identity_key = peer_identity_key(query_call)
 *         query_call.c_call = NULL             # <<<<<<<<<<<<<<
 *         if identity_key:
 *             return identity_key.decode('utf8')
 */
  __pyx_v_query_call->c_call = NULL;

  /* "src/python/grpcio/grpc/_cython/_cygrpc/aio/server.pyx.pxi":246
 *         identity_key = peer_identity_key(query_call)
 *         query_call.c_call = NULL
 *         if identity_key:             # <<<<<<<<<<<<<<
 *             return identity_key.decode('utf8')
 *         else:
 */
  __pyx_t_5 = __Pyx_PyObject_IsTrue(__pyx_v_identity_key); if (unlikely(__pyx_t_5 < 0)) __PYX_ERR(10, 246, __pyx_L1_error)
  if (__pyx_t_5) {

    /* "src/python/grpcio/grpc/_cython/_cygrpc/aio/server.pyx.pxi":247
 *         query_call.c_call = NULL
 *         if identity_key:
 *             return identity_key.decode('utf8')             # <<<<<<<<<<<<<<
 *         else:
 *             return None
 */
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_3 = __Pyx_PyObject_GetAttrStr(__pyx_v_identity_key, __pyx_n_s_decode); if (unlikely(!__pyx_t_3)) __PYX_ERR(10, 247, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_3);
    __pyx_t_4 = NULL;
    if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_3))) {
      __pyx_t_4 = PyMethod_GET_SELF(__pyx_t_3);
      if (likely(__pyx_t_4)) {
        PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_3);
        __Pyx_INCREF(__pyx_t_4);
        __Pyx_INCREF(function);
        __Pyx_DECREF_SET(__pyx_t_3, function);
      }
    }
    __pyx_t_1 = (__pyx_t_4) ? __Pyx_PyObject_Call2Args(__pyx_t_3, __pyx_t_4, __pyx_n_s_utf8) : __Pyx_PyObject_CallOneArg(__pyx_t_3, __pyx_n_s_utf8);
    __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0;
    if (unlikely(!__pyx_t_1)) __PYX_ERR(10, 247, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_1);
    __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
    __pyx_r = __pyx_t_1;
    __pyx_t_1 = 0;
    goto __pyx_L0;

    /* "src/python/grpcio/grpc/_cython/_cygrpc/aio/server.pyx.pxi":246
 *         identity_key = peer_identity_key(query_call)
 *         query_call.c_call = NULL
 *         if identity_key:             # <<<<<<<<<<<<<<
 *             return identity_key.decode('utf8')
 *         else:
 */
  }

  /* "src/python/grpcio/grpc/_cython/_cygrpc/aio/server.pyx.pxi":249
 *             return identity_key.decode('utf8')
 *         else:
 *             return None             # <<<<<<<<<<<<<<
 * 
 *     def auth_context(self):
 */
  /*else*/ {
    __Pyx_XDECREF(__pyx_r);
    __pyx_r = Py_None; __Pyx_INCREF(Py_None);
    goto __pyx_L0;
  }

  /* "src/python/grpcio/grpc/_cython/_cygrpc/aio/server.pyx.pxi":241
 *         return identities
 * 
 *     def peer_identity_key(self):             # <<<<<<<<<<<<<<
 *         cdef Call query_call = Call()
 *         query_call.c_call = self._rpc_state.call
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_XDECREF(__pyx_t_3);
  __Pyx_XDECREF(__pyx_t_4);
  __Pyx_AddTraceback("grpc._cython.cygrpc._ServicerContext.peer_identity_key", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XDECREF((PyObject *)__pyx_v_query_call);
  __Pyx_XDECREF(__pyx_v_identity_key);
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "src/python/grpcio/grpc/_cython/_cygrpc/aio/server.pyx.pxi":251
 *             return None
 * 
 *     def auth_context(self):             # <<<<<<<<<<<<<<
 *         cdef Call query_call = Call()
 *         query_call.c_call = self._rpc_state.call
 */

/* Python wrapper */
static PyObject *__pyx_pw_4grpc_7_cython_6cygrpc_16_ServicerContext_42auth_context(PyObject *__pyx_v_self, CYTHON_UNUSED PyObject *unused); /*proto*/
static PyObject *__pyx_pw_4grpc_7_cython_6cygrpc_16_ServicerContext_42auth_context(PyObject *__pyx_v_self, CYTHON_UNUSED PyObject *unused) {
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("auth_context (wrapper)", 0);
  __pyx_r = __pyx_pf_4grpc_7_cython_6cygrpc_16_ServicerContext_41auth_context(((struct __pyx_obj_4grpc_7_cython_6cygrpc__ServicerContext *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_4grpc_7_cython_6cygrpc_16_ServicerContext_41auth_context(struct __pyx_obj_4grpc_7_cython_6cygrpc__ServicerContext *__pyx_v_self) {
  struct __pyx_obj_4grpc_7_cython_6cygrpc_Call *__pyx_v_query_call = 0;
  PyObject *__pyx_v_bytes_ctx = NULL;
  PyObject *__pyx_v_ctx = NULL;
  PyObject *__pyx_v_key = NULL;
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  grpc_call *__pyx_t_2;
  PyObject *__pyx_t_3 = NULL;
  PyObject *__pyx_t_4 = NULL;
  int __pyx_t_5;
  Py_ssize_t __pyx_t_6;
  PyObject *(*__pyx_t_7)(PyObject *);
  PyObject *__pyx_t_8 = NULL;
  PyObject *__pyx_t_9 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("auth_context", 0);

  /* "src/python/grpcio/grpc/_cython/_cygrpc/aio/server.pyx.pxi":252
 * 
 *     def auth_context(self):
 *         cdef Call query_call = Call()             # <<<<<<<<<<<<<<
 *         query_call.c_call = self._rpc_state.call
 *         bytes_ctx = auth_context(query_call)
 */
  __pyx_t_1 = __Pyx_PyObject_CallNoArg(((PyObject *)__pyx_ptype_4grpc_7_cython_6cygrpc_Call)); if (unlikely(!__pyx_t_1)) __PYX_ERR(10, 252, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_v_query_call = ((struct __pyx_obj_4grpc_7_cython_6cygrpc_Call *)__pyx_t_1);
  __pyx_t_1 = 0;

  /* "src/python/grpcio/grpc/_cython/_cygrpc/aio/server.pyx.pxi":253
 *     def auth_context(self):
 *         cdef Call query_call = Call()
 *         query_call.c_call = self._rpc_state.call             # <<<<<<<<<<<<<<
 *         bytes_ctx = auth_context(query_call)
 *         query_call.c_call = NULL
 */
  __pyx_t_2 = __pyx_v_self->_rpc_state->__pyx_base.call;
  __pyx_v_query_call->c_call = __pyx_t_2;

  /* "src/python/grpcio/grpc/_cython/_cygrpc/aio/server.pyx.pxi":254
 *         cdef Call query_call = Call()
 *         query_call.c_call = self._rpc_state.call
 *         bytes_ctx = auth_context(query_call)             # <<<<<<<<<<<<<<
 *         query_call.c_call = NULL
 *         if bytes_ctx:
 */
  __Pyx_GetModuleGlobalName(__pyx_t_3, __pyx_n_s_auth_context); if (unlikely(!__pyx_t_3)) __PYX_ERR(10, 254, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  __pyx_t_4 = NULL;
  if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_3))) {
    __pyx_t_4 = PyMethod_GET_SELF(__pyx_t_3);
    if (likely(__pyx_t_4)) {
      PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_3);
      __Pyx_INCREF(__pyx_t_4);
      __Pyx_INCREF(function);
      __Pyx_DECREF_SET(__pyx_t_3, function);
    }
  }
  __pyx_t_1 = (__pyx_t_4) ? __Pyx_PyObject_Call2Args(__pyx_t_3, __pyx_t_4, ((PyObject *)__pyx_v_query_call)) : __Pyx_PyObject_CallOneArg(__pyx_t_3, ((PyObject *)__pyx_v_query_call));
  __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0;
  if (unlikely(!__pyx_t_1)) __PYX_ERR(10, 254, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
  __pyx_v_bytes_ctx = __pyx_t_1;
  __pyx_t_1 = 0;

  /* "src/python/grpcio/grpc/_cython/_cygrpc/aio/server.pyx.pxi":255
 *         query_call.c_call = self._rpc_state.call
 *         bytes_ctx = auth_context(query_call)
 *         query_call.c_call = NULL             # <<<<<<<<<<<<<<
 *         if bytes_ctx:
 *             ctx = {}
 */
  __pyx_v_query_call->c_call = NULL;

  /* "src/python/grpcio/grpc/_cython/_cygrpc/aio/server.pyx.pxi":256
 *         bytes_ctx = auth_context(query_call)
 *         query_call.c_call = NULL
 *         if bytes_ctx:             # <<<<<<<<<<<<<<
 *             ctx = {}
 *             for key in bytes_ctx:
 */
  __pyx_t_5 = __Pyx_PyObject_IsTrue(__pyx_v_bytes_ctx); if (unlikely(__pyx_t_5 < 0)) __PYX_ERR(10, 256, __pyx_L1_error)
  if (__pyx_t_5) {

    /* "src/python/grpcio/grpc/_cython/_cygrpc/aio/server.pyx.pxi":257
 *         query_call.c_call = NULL
 *         if bytes_ctx:
 *             ctx = {}             # <<<<<<<<<<<<<<
 *             for key in bytes_ctx:
 *                 ctx[key.decode('utf8')] = bytes_ctx[key]
 */
    __pyx_t_1 = __Pyx_PyDict_NewPresized(0); if (unlikely(!__pyx_t_1)) __PYX_ERR(10, 257, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_1);
    __pyx_v_ctx = ((PyObject*)__pyx_t_1);
    __pyx_t_1 = 0;

    /* "src/python/grpcio/grpc/_cython/_cygrpc/aio/server.pyx.pxi":258
 *         if bytes_ctx:
 *             ctx = {}
 *             for key in bytes_ctx:             # <<<<<<<<<<<<<<
 *                 ctx[key.decode('utf8')] = bytes_ctx[key]
 *             return ctx
 */
    if (likely(PyList_CheckExact(__pyx_v_bytes_ctx)) || PyTuple_CheckExact(__pyx_v_bytes_ctx)) {
      __pyx_t_1 = __pyx_v_bytes_ctx; __Pyx_INCREF(__pyx_t_1); __pyx_t_6 = 0;
      __pyx_t_7 = NULL;
    } else {
      __pyx_t_6 = -1; __pyx_t_1 = PyObject_GetIter(__pyx_v_bytes_ctx); if (unlikely(!__pyx_t_1)) __PYX_ERR(10, 258, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_1);
      __pyx_t_7 = Py_TYPE(__pyx_t_1)->tp_iternext; if (unlikely(!__pyx_t_7)) __PYX_ERR(10, 258, __pyx_L1_error)
    }
    for (;;) {
      if (likely(!__pyx_t_7)) {
        if (likely(PyList_CheckExact(__pyx_t_1))) {
          if (__pyx_t_6 >= PyList_GET_SIZE(__pyx_t_1)) break;
          #if CYTHON_ASSUME_SAFE_MACROS && !CYTHON_AVOID_BORROWED_REFS
          __pyx_t_3 = PyList_GET_ITEM(__pyx_t_1, __pyx_t_6); __Pyx_INCREF(__pyx_t_3); __pyx_t_6++; if (unlikely(0 < 0)) __PYX_ERR(10, 258, __pyx_L1_error)
          #else
          __pyx_t_3 = PySequence_ITEM(__pyx_t_1, __pyx_t_6); __pyx_t_6++; if (unlikely(!__pyx_t_3)) __PYX_ERR(10, 258, __pyx_L1_error)
          __Pyx_GOTREF(__pyx_t_3);
          #endif
        } else {
          if (__pyx_t_6 >= PyTuple_GET_SIZE(__pyx_t_1)) break;
          #if CYTHON_ASSUME_SAFE_MACROS && !CYTHON_AVOID_BORROWED_REFS
          __pyx_t_3 = PyTuple_GET_ITEM(__pyx_t_1, __pyx_t_6); __Pyx_INCREF(__pyx_t_3); __pyx_t_6++; if (unlikely(0 < 0)) __PYX_ERR(10, 258, __pyx_L1_error)
          #else
          __pyx_t_3 = PySequence_ITEM(__pyx_t_1, __pyx_t_6); __pyx_t_6++; if (unlikely(!__pyx_t_3)) __PYX_ERR(10, 258, __pyx_L1_error)
          __Pyx_GOTREF(__pyx_t_3);
          #endif
        }
      } else {
        __pyx_t_3 = __pyx_t_7(__pyx_t_1);
        if (unlikely(!__pyx_t_3)) {
          PyObject* exc_type = PyErr_Occurred();
          if (exc_type) {
            if (likely(__Pyx_PyErr_GivenExceptionMatches(exc_type, PyExc_StopIteration))) PyErr_Clear();
            else __PYX_ERR(10, 258, __pyx_L1_error)
          }
          break;
        }
        __Pyx_GOTREF(__pyx_t_3);
      }
      __Pyx_XDECREF_SET(__pyx_v_key, __pyx_t_3);
      __pyx_t_3 = 0;

      /* "src/python/grpcio/grpc/_cython/_cygrpc/aio/server.pyx.pxi":259
 *             ctx = {}
 *             for key in bytes_ctx:
 *                 ctx[key.decode('utf8')] = bytes_ctx[key]             # <<<<<<<<<<<<<<
 *             return ctx
 *         else:
 */
      __pyx_t_3 = __Pyx_PyObject_GetItem(__pyx_v_bytes_ctx, __pyx_v_key); if (unlikely(!__pyx_t_3)) __PYX_ERR(10, 259, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_3);
      __pyx_t_8 = __Pyx_PyObject_GetAttrStr(__pyx_v_key, __pyx_n_s_decode); if (unlikely(!__pyx_t_8)) __PYX_ERR(10, 259, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_8);
      __pyx_t_9 = NULL;
      if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_8))) {
        __pyx_t_9 = PyMethod_GET_SELF(__pyx_t_8);
        if (likely(__pyx_t_9)) {
          PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_8);
          __Pyx_INCREF(__pyx_t_9);
          __Pyx_INCREF(function);
          __Pyx_DECREF_SET(__pyx_t_8, function);
        }
      }
      __pyx_t_4 = (__pyx_t_9) ? __Pyx_PyObject_Call2Args(__pyx_t_8, __pyx_t_9, __pyx_n_s_utf8) : __Pyx_PyObject_CallOneArg(__pyx_t_8, __pyx_n_s_utf8);
      __Pyx_XDECREF(__pyx_t_9); __pyx_t_9 = 0;
      if (unlikely(!__pyx_t_4)) __PYX_ERR(10, 259, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_4);
      __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
      if (unlikely(PyDict_SetItem(__pyx_v_ctx, __pyx_t_4, __pyx_t_3) < 0)) __PYX_ERR(10, 259, __pyx_L1_error)
      __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
      __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;

      /* "src/python/grpcio/grpc/_cython/_cygrpc/aio/server.pyx.pxi":258
 *         if bytes_ctx:
 *             ctx = {}
 *             for key in bytes_ctx:             # <<<<<<<<<<<<<<
 *                 ctx[key.decode('utf8')] = bytes_ctx[key]
 *             return ctx
 */
    }
    __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;

    /* "src/python/grpcio/grpc/_cython/_cygrpc/aio/server.pyx.pxi":260
 *             for key in bytes_ctx:
 *                 ctx[key.decode('utf8')] = bytes_ctx[key]
 *             return ctx             # <<<<<<<<<<<<<<
 *         else:
 *             return {}
 */
    __Pyx_XDECREF(__pyx_r);
    __Pyx_INCREF(__pyx_v_ctx);
    __pyx_r = __pyx_v_ctx;
    goto __pyx_L0;

    /* "src/python/grpcio/grpc/_cython/_cygrpc/aio/server.pyx.pxi":256
 *         bytes_ctx = auth_context(query_call)
 *         query_call.c_call = NULL
 *         if bytes_ctx:             # <<<<<<<<<<<<<<
 *             ctx = {}
 *             for key in bytes_ctx:
 */
  }

  /* "src/python/grpcio/grpc/_cython/_cygrpc/aio/server.pyx.pxi":262
 *             return ctx
 *         else:
 *             return {}             # <<<<<<<<<<<<<<
 * 
 *     def time_remaining(self):
 */
  /*else*/ {
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_1 = __Pyx_PyDict_NewPresized(0); if (unlikely(!__pyx_t_1)) __PYX_ERR(10, 262, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_1);
    __pyx_r = __pyx_t_1;
    __pyx_t_1 = 0;
    goto __pyx_L0;
  }

  /* "src/python/grpcio/grpc/_cython/_cygrpc/aio/server.pyx.pxi":251
 *             return None
 * 
 *     def auth_context(self):             # <<<<<<<<<<<<<<
 *         cdef Call query_call = Call()
 *         query_call.c_call = self._rpc_state.call
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_XDECREF(__pyx_t_3);
  __Pyx_XDECREF(__pyx_t_4);
  __Pyx_XDECREF(__pyx_t_8);
  __Pyx_XDECREF(__pyx_t_9);
  __Pyx_AddTraceback("grpc._cython.cygrpc._ServicerContext.auth_context", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XDECREF((PyObject *)__pyx_v_query_call);
  __Pyx_XDECREF(__pyx_v_bytes_ctx);
  __Pyx_XDECREF(__pyx_v_ctx);
  __Pyx_XDECREF(__pyx_v_key);
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "src/python/grpcio/grpc/_cython/_cygrpc/aio/server.pyx.pxi":264
 *             return {}
 * 
 *     def time_remaining(self):             # <<<<<<<<<<<<<<
 *         if self._rpc_state.details.deadline.seconds == _GPR_INF_FUTURE.seconds:
 *             return None
 */

/* Python wrapper */
static PyObject *__pyx_pw_4grpc_7_cython_6cygrpc_16_ServicerContext_44time_remaining(PyObject *__pyx_v_self, CYTHON_UNUSED PyObject *unused); /*proto*/
static PyObject *__pyx_pw_4grpc_7_cython_6cygrpc_16_ServicerContext_44time_remaining(PyObject *__pyx_v_self, CYTHON_UNUSED PyObject *unused) {
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("time_remaining (wrapper)", 0);
  __pyx_r = __pyx_pf_4grpc_7_cython_6cygrpc_16_ServicerContext_43time_remaining(((struct __pyx_obj_4grpc_7_cython_6cygrpc__ServicerContext *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_4grpc_7_cython_6cygrpc_16_ServicerContext_43time_remaining(struct __pyx_obj_4grpc_7_cython_6cygrpc__ServicerContext *__pyx_v_self) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  int __pyx_t_1;
  long __pyx_t_2;
  double __pyx_t_3;
  PyObject *__pyx_t_4 = NULL;
  PyObject *__pyx_t_5 = NULL;
  PyObject *__pyx_t_6 = NULL;
  PyObject *__pyx_t_7 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("time_remaining", 0);

  /* "src/python/grpcio/grpc/_cython/_cygrpc/aio/server.pyx.pxi":265
 * 
 *     def time_remaining(self):
 *         if self._rpc_state.details.deadline.seconds == _GPR_INF_FUTURE.seconds:             # <<<<<<<<<<<<<<
 *             return None
 *         else:
 */
  __pyx_t_1 = ((__pyx_v_self->_rpc_state->details.deadline.tv_sec == __pyx_v_4grpc_7_cython_6cygrpc__GPR_INF_FUTURE.tv_sec) != 0);
  if (__pyx_t_1) {

    /* "src/python/grpcio/grpc/_cython/_cygrpc/aio/server.pyx.pxi":266
 *     def time_remaining(self):
 *         if self._rpc_state.details.deadline.seconds == _GPR_INF_FUTURE.seconds:
 *             return None             # <<<<<<<<<<<<<<
 *         else:
 *             return max(_time_from_timespec(self._rpc_state.details.deadline) - time.time(), 0)
 */
    __Pyx_XDECREF(__pyx_r);
    __pyx_r = Py_None; __Pyx_INCREF(Py_None);
    goto __pyx_L0;

    /* "src/python/grpcio/grpc/_cython/_cygrpc/aio/server.pyx.pxi":265
 * 
 *     def time_remaining(self):
 *         if self._rpc_state.details.deadline.seconds == _GPR_INF_FUTURE.seconds:             # <<<<<<<<<<<<<<
 *             return None
 *         else:
 */
  }

  /* "src/python/grpcio/grpc/_cython/_cygrpc/aio/server.pyx.pxi":268
 *             return None
 *         else:
 *             return max(_time_from_timespec(self._rpc_state.details.deadline) - time.time(), 0)             # <<<<<<<<<<<<<<
 * 
 * 
 */
  /*else*/ {
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_2 = 0;
    __pyx_t_3 = __pyx_f_4grpc_7_cython_6cygrpc__time_from_timespec(__pyx_v_self->_rpc_state->details.deadline); if (unlikely(__pyx_t_3 == ((double)-1) && PyErr_Occurred())) __PYX_ERR(10, 268, __pyx_L1_error)
    __pyx_t_4 = PyFloat_FromDouble(__pyx_t_3); if (unlikely(!__pyx_t_4)) __PYX_ERR(10, 268, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_4);
    __Pyx_GetModuleGlobalName(__pyx_t_6, __pyx_n_s_time); if (unlikely(!__pyx_t_6)) __PYX_ERR(10, 268, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_6);
    __pyx_t_7 = __Pyx_PyObject_GetAttrStr(__pyx_t_6, __pyx_n_s_time); if (unlikely(!__pyx_t_7)) __PYX_ERR(10, 268, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_7);
    __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
    __pyx_t_6 = NULL;
    if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_7))) {
      __pyx_t_6 = PyMethod_GET_SELF(__pyx_t_7);
      if (likely(__pyx_t_6)) {
        PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_7);
        __Pyx_INCREF(__pyx_t_6);
        __Pyx_INCREF(function);
        __Pyx_DECREF_SET(__pyx_t_7, function);
      }
    }
    __pyx_t_5 = (__pyx_t_6) ? __Pyx_PyObject_CallOneArg(__pyx_t_7, __pyx_t_6) : __Pyx_PyObject_CallNoArg(__pyx_t_7);
    __Pyx_XDECREF(__pyx_t_6); __pyx_t_6 = 0;
    if (unlikely(!__pyx_t_5)) __PYX_ERR(10, 268, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_5);
    __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
    __pyx_t_7 = PyNumber_Subtract(__pyx_t_4, __pyx_t_5); if (unlikely(!__pyx_t_7)) __PYX_ERR(10, 268, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_7);
    __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
    __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
    __pyx_t_4 = __Pyx_PyInt_From_long(__pyx_t_2); if (unlikely(!__pyx_t_4)) __PYX_ERR(10, 268, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_4);
    __pyx_t_6 = PyObject_RichCompare(__pyx_t_4, __pyx_t_7, Py_GT); __Pyx_XGOTREF(__pyx_t_6); if (unlikely(!__pyx_t_6)) __PYX_ERR(10, 268, __pyx_L1_error)
    __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
    __pyx_t_1 = __Pyx_PyObject_IsTrue(__pyx_t_6); if (unlikely(__pyx_t_1 < 0)) __PYX_ERR(10, 268, __pyx_L1_error)
    __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
    if (__pyx_t_1) {
      __pyx_t_6 = __Pyx_PyInt_From_long(__pyx_t_2); if (unlikely(!__pyx_t_6)) __PYX_ERR(10, 268, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_6);
      __pyx_t_5 = __pyx_t_6;
      __pyx_t_6 = 0;
    } else {
      __Pyx_INCREF(__pyx_t_7);
      __pyx_t_5 = __pyx_t_7;
    }
    __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
    __Pyx_INCREF(__pyx_t_5);
    __pyx_r = __pyx_t_5;
    __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
    goto __pyx_L0;
  }

  /* "src/python/grpcio/grpc/_cython/_cygrpc/aio/server.pyx.pxi":264
 *             return {}
 * 
 *     def time_remaining(self):             # <<<<<<<<<<<<<<
 *         if self._rpc_state.details.deadline.seconds == _GPR_INF_FUTURE.seconds:
 *             return None
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_4);
  __Pyx_XDECREF(__pyx_t_5);
  __Pyx_XDECREF(__pyx_t_6);
  __Pyx_XDECREF(__pyx_t_7);
  __Pyx_AddTraceback("grpc._cython.cygrpc._ServicerContext.time_remaining", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "(tree fragment)":1
 * def __reduce_cython__(self):             # <<<<<<<<<<<<<<
 *     raise TypeError("no default __reduce__ due to non-trivial __cinit__")
 * def __setstate_cython__(self, __pyx_state):
 */

/* Python wrapper */
static PyObject *__pyx_pw_4grpc_7_cython_6cygrpc_16_ServicerContext_46__reduce_cython__(PyObject *__pyx_v_self, CYTHON_UNUSED PyObject *unused); /*proto*/
static PyObject *__pyx_pw_4grpc_7_cython_6cygrpc_16_ServicerContext_46__reduce_cython__(PyObject *__pyx_v_self, CYTHON_UNUSED PyObject *unused) {
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__reduce_cython__ (wrapper)", 0);
  __pyx_r = __pyx_pf_4grpc_7_cython_6cygrpc_16_ServicerContext_45__reduce_cython__(((struct __pyx_obj_4grpc_7_cython_6cygrpc__ServicerContext *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_4grpc_7_cython_6cygrpc_16_ServicerContext_45__reduce_cython__(CYTHON_UNUSED struct __pyx_obj_4grpc_7_cython_6cygrpc__ServicerContext *__pyx_v_self) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("__reduce_cython__", 0);

  /* "(tree fragment)":2
 * def __reduce_cython__(self):
 *     raise TypeError("no default __reduce__ due to non-trivial __cinit__")             # <<<<<<<<<<<<<<
 * def __setstate_cython__(self, __pyx_state):
 *     raise TypeError("no default __reduce__ due to non-trivial __cinit__")
 */
  __pyx_t_1 = __Pyx_PyObject_Call(__pyx_builtin_TypeError, __pyx_tuple__176, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(11, 2, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_Raise(__pyx_t_1, 0, 0, 0);
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  __PYX_ERR(11, 2, __pyx_L1_error)

  /* "(tree fragment)":1
 * def __reduce_cython__(self):             # <<<<<<<<<<<<<<
 *     raise TypeError("no default __reduce__ due to non-trivial __cinit__")
 * def __setstate_cython__(self, __pyx_state):
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_AddTraceback("grpc._cython.cygrpc._ServicerContext.__reduce_cython__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "(tree fragment)":3
 * def __reduce_cython__(self):
 *     raise TypeError("no default __reduce__ due to non-trivial __cinit__")
 * def __setstate_cython__(self, __pyx_state):             # <<<<<<<<<<<<<<
 *     raise TypeError("no default __reduce__ due to non-trivial __cinit__")
 */

/* Python wrapper */
static PyObject *__pyx_pw_4grpc_7_cython_6cygrpc_16_ServicerContext_48__setstate_cython__(PyObject *__pyx_v_self, PyObject *__pyx_v___pyx_state); /*proto*/
static PyObject *__pyx_pw_4grpc_7_cython_6cygrpc_16_ServicerContext_48__setstate_cython__(PyObject *__pyx_v_self, PyObject *__pyx_v___pyx_state) {
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__setstate_cython__ (wrapper)", 0);
  __pyx_r = __pyx_pf_4grpc_7_cython_6cygrpc_16_ServicerContext_47__setstate_cython__(((struct __pyx_obj_4grpc_7_cython_6cygrpc__ServicerContext *)__pyx_v_self), ((PyObject *)__pyx_v___pyx_state));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_4grpc_7_cython_6cygrpc_16_ServicerContext_47__setstate_cython__(CYTHON_UNUSED struct __pyx_obj_4grpc_7_cython_6cygrpc__ServicerContext *__pyx_v_self, CYTHON_UNUSED PyObject *__pyx_v___pyx_state) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("__setstate_cython__", 0);

  /* "(tree fragment)":4
 *     raise TypeError("no default __reduce__ due to non-trivial __cinit__")
 * def __setstate_cython__(self, __pyx_state):
 *     raise TypeError("no default __reduce__ due to non-trivial __cinit__")             # <<<<<<<<<<<<<<
 */
  __pyx_t_1 = __Pyx_PyObject_Call(__pyx_builtin_TypeError, __pyx_tuple__177, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(11, 4, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_Raise(__pyx_t_1, 0, 0, 0);
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  __PYX_ERR(11, 4, __pyx_L1_error)

  /* "(tree fragment)":3
 * def __reduce_cython__(self):
 *     raise TypeError("no default __reduce__ due to non-trivial __cinit__")
 * def __setstate_cython__(self, __pyx_state):             # <<<<<<<<<<<<<<
 *     raise TypeError("no default __reduce__ due to non-trivial __cinit__")
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_AddTraceback("grpc._cython.cygrpc._ServicerContext.__setstate_cython__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "src/python/grpcio/grpc/_cython/_cygrpc/aio/server.pyx.pxi":274
 *     """Sync servicer context for sync handler compatibility."""
 * 
 *     def __cinit__(self,             # <<<<<<<<<<<<<<
 *                   _ServicerContext context):
 *         self._context = context
 */

/* Python wrapper */
static int __pyx_pw_4grpc_7_cython_6cygrpc_20_SyncServicerContext_1__cinit__(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
static int __pyx_pw_4grpc_7_cython_6cygrpc_20_SyncServicerContext_1__cinit__(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
  struct __pyx_obj_4grpc_7_cython_6cygrpc__ServicerContext *__pyx_v_context = 0;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  int __pyx_r;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__cinit__ (wrapper)", 0);
  {
    static PyObject **__pyx_pyargnames[] = {&__pyx_n_s_context,0};
    PyObject* values[1] = {0};
    if (unlikely(__pyx_kwds)) {
      Py_ssize_t kw_args;
      const Py_ssize_t pos_args = PyTuple_GET_SIZE(__pyx_args);
      switch (pos_args) {
        case  1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
        CYTHON_FALLTHROUGH;
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      kw_args = PyDict_Size(__pyx_kwds);
      switch (pos_args) {
        case  0:
        if (likely((values[0] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_context)) != 0)) kw_args--;
        else goto __pyx_L5_argtuple_error;
      }
      if (unlikely(kw_args > 0)) {
        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "__cinit__") < 0)) __PYX_ERR(10, 274, __pyx_L3_error)
      }
    } else if (PyTuple_GET_SIZE(__pyx_args) != 1) {
      goto __pyx_L5_argtuple_error;
    } else {
      values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
    }
    __pyx_v_context = ((struct __pyx_obj_4grpc_7_cython_6cygrpc__ServicerContext *)values[0]);
  }
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("__cinit__", 1, 1, 1, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(10, 274, __pyx_L3_error)
  __pyx_L3_error:;
  __Pyx_AddTraceback("grpc._cython.cygrpc._SyncServicerContext.__cinit__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return -1;
  __pyx_L4_argument_unpacking_done:;
  if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_context), __pyx_ptype_4grpc_7_cython_6cygrpc__ServicerContext, 1, "context", 0))) __PYX_ERR(10, 275, __pyx_L1_error)
  __pyx_r = __pyx_pf_4grpc_7_cython_6cygrpc_20_SyncServicerContext___cinit__(((struct __pyx_obj_4grpc_7_cython_6cygrpc__SyncServicerContext *)__pyx_v_self), __pyx_v_context);

  /* function exit code */
  goto __pyx_L0;
  __pyx_L1_error:;
  __pyx_r = -1;
  __pyx_L0:;
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static int __pyx_pf_4grpc_7_cython_6cygrpc_20_SyncServicerContext___cinit__(struct __pyx_obj_4grpc_7_cython_6cygrpc__SyncServicerContext *__pyx_v_self, struct __pyx_obj_4grpc_7_cython_6cygrpc__ServicerContext *__pyx_v_context) {
  int __pyx_r;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("__cinit__", 0);

  /* "src/python/grpcio/grpc/_cython/_cygrpc/aio/server.pyx.pxi":276
 *     def __cinit__(self,
 *                   _ServicerContext context):
 *         self._context = context             # <<<<<<<<<<<<<<
 *         self._callbacks = []
 *         self._loop = context._loop
 */
  __Pyx_INCREF(((PyObject *)__pyx_v_context));
  __Pyx_GIVEREF(((PyObject *)__pyx_v_context));
  __Pyx_GOTREF(__pyx_v_self->_context);
  __Pyx_DECREF(((PyObject *)__pyx_v_self->_context));
  __pyx_v_self->_context = __pyx_v_context;

  /* "src/python/grpcio/grpc/_cython/_cygrpc/aio/server.pyx.pxi":277
 *                   _ServicerContext context):
 *         self._context = context
 *         self._callbacks = []             # <<<<<<<<<<<<<<
 *         self._loop = context._loop
 * 
 */
  __pyx_t_1 = PyList_New(0); if (unlikely(!__pyx_t_1)) __PYX_ERR(10, 277, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_GIVEREF(__pyx_t_1);
  __Pyx_GOTREF(__pyx_v_self->_callbacks);
  __Pyx_DECREF(__pyx_v_self->_callbacks);
  __pyx_v_self->_callbacks = ((PyObject*)__pyx_t_1);
  __pyx_t_1 = 0;

  /* "src/python/grpcio/grpc/_cython/_cygrpc/aio/server.pyx.pxi":278
 *         self._context = context
 *         self._callbacks = []
 *         self._loop = context._loop             # <<<<<<<<<<<<<<
 * 
 *     def abort(self,
 */
  __pyx_t_1 = __pyx_v_context->_loop;
  __Pyx_INCREF(__pyx_t_1);
  __Pyx_GIVEREF(__pyx_t_1);
  __Pyx_GOTREF(__pyx_v_self->_loop);
  __Pyx_DECREF(__pyx_v_self->_loop);
  __pyx_v_self->_loop = __pyx_t_1;
  __pyx_t_1 = 0;

  /* "src/python/grpcio/grpc/_cython/_cygrpc/aio/server.pyx.pxi":274
 *     """Sync servicer context for sync handler compatibility."""
 * 
 *     def __cinit__(self,             # <<<<<<<<<<<<<<
 *                   _ServicerContext context):
 *         self._context = context
 */

  /* function exit code */
  __pyx_r = 0;
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_AddTraceback("grpc._cython.cygrpc._SyncServicerContext.__cinit__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = -1;
  __pyx_L0:;
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "src/python/grpcio/grpc/_cython/_cygrpc/aio/server.pyx.pxi":280
 *         self._loop = context._loop
 * 
 *     def abort(self,             # <<<<<<<<<<<<<<
 *               object code,
 *               str details='',
 */

/* Python wrapper */
static PyObject *__pyx_pw_4grpc_7_cython_6cygrpc_20_SyncServicerContext_3abort(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
static PyObject *__pyx_pw_4grpc_7_cython_6cygrpc_20_SyncServicerContext_3abort(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
  PyObject *__pyx_v_code = 0;
  PyObject *__pyx_v_details = 0;
  PyObject *__pyx_v_trailing_metadata = 0;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("abort (wrapper)", 0);
  {
    static PyObject **__pyx_pyargnames[] = {&__pyx_n_s_code,&__pyx_n_s_details,&__pyx_n_s_trailing_metadata,0};
    PyObject* values[3] = {0,0,0};
    values[1] = ((PyObject*)__pyx_kp_s_);
    values[2] = __pyx_k__178;
    if (unlikely(__pyx_kwds)) {
      Py_ssize_t kw_args;
      const Py_ssize_t pos_args = PyTuple_GET_SIZE(__pyx_args);
      switch (pos_args) {
        case  3: values[2] = PyTuple_GET_ITEM(__pyx_args, 2);
        CYTHON_FALLTHROUGH;
        case  2: values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
        CYTHON_FALLTHROUGH;
        case  1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
        CYTHON_FALLTHROUGH;
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      kw_args = PyDict_Size(__pyx_kwds);
      switch (pos_args) {
        case  0:
        if (likely((values[0] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_code)) != 0)) kw_args--;
        else goto __pyx_L5_argtuple_error;
        CYTHON_FALLTHROUGH;
        case  1:
        if (kw_args > 0) {
          PyObject* value = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_details);
          if (value) { values[1] = value; kw_args--; }
        }
        CYTHON_FALLTHROUGH;
        case  2:
        if (kw_args > 0) {
          PyObject* value = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_trailing_metadata);
          if (value) { values[2] = value; kw_args--; }
        }
      }
      if (unlikely(kw_args > 0)) {
        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "abort") < 0)) __PYX_ERR(10, 280, __pyx_L3_error)
      }
    } else {
      switch (PyTuple_GET_SIZE(__pyx_args)) {
        case  3: values[2] = PyTuple_GET_ITEM(__pyx_args, 2);
        CYTHON_FALLTHROUGH;
        case  2: values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
        CYTHON_FALLTHROUGH;
        case  1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
        break;
        default: goto __pyx_L5_argtuple_error;
      }
    }
    __pyx_v_code = values[0];
    __pyx_v_details = ((PyObject*)values[1]);
    __pyx_v_trailing_metadata = ((PyObject*)values[2]);
  }
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("abort", 0, 1, 3, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(10, 280, __pyx_L3_error)
  __pyx_L3_error:;
  __Pyx_AddTraceback("grpc._cython.cygrpc._SyncServicerContext.abort", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_details), (&PyString_Type), 1, "details", 1))) __PYX_ERR(10, 282, __pyx_L1_error)
  if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_trailing_metadata), (&PyTuple_Type), 1, "trailing_metadata", 1))) __PYX_ERR(10, 283, __pyx_L1_error)
  __pyx_r = __pyx_pf_4grpc_7_cython_6cygrpc_20_SyncServicerContext_2abort(((struct __pyx_obj_4grpc_7_cython_6cygrpc__SyncServicerContext *)__pyx_v_self), __pyx_v_code, __pyx_v_details, __pyx_v_trailing_metadata);

  /* function exit code */
  goto __pyx_L0;
  __pyx_L1_error:;
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_4grpc_7_cython_6cygrpc_20_SyncServicerContext_2abort(struct __pyx_obj_4grpc_7_cython_6cygrpc__SyncServicerContext *__pyx_v_self, PyObject *__pyx_v_code, PyObject *__pyx_v_details, PyObject *__pyx_v_trailing_metadata) {
  PyObject *__pyx_v_future = NULL;
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  PyObject *__pyx_t_2 = NULL;
  PyObject *__pyx_t_3 = NULL;
  PyObject *__pyx_t_4 = NULL;
  PyObject *__pyx_t_5 = NULL;
  int __pyx_t_6;
  PyObject *__pyx_t_7 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("abort", 0);

  /* "src/python/grpcio/grpc/_cython/_cygrpc/aio/server.pyx.pxi":284
 *               str details='',
 *               tuple trailing_metadata=_IMMUTABLE_EMPTY_METADATA):
 *         future = asyncio.run_coroutine_threadsafe(             # <<<<<<<<<<<<<<
 *             self._context.abort(code, details, trailing_metadata),
 *             self._loop)
 */
  __Pyx_GetModuleGlobalName(__pyx_t_2, __pyx_n_s_asyncio); if (unlikely(!__pyx_t_2)) __PYX_ERR(10, 284, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __pyx_t_3 = __Pyx_PyObject_GetAttrStr(__pyx_t_2, __pyx_n_s_run_coroutine_threadsafe); if (unlikely(!__pyx_t_3)) __PYX_ERR(10, 284, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;

  /* "src/python/grpcio/grpc/_cython/_cygrpc/aio/server.pyx.pxi":285
 *               tuple trailing_metadata=_IMMUTABLE_EMPTY_METADATA):
 *         future = asyncio.run_coroutine_threadsafe(
 *             self._context.abort(code, details, trailing_metadata),             # <<<<<<<<<<<<<<
 *             self._loop)
 *         # Abort should raise an AbortError
 */
  __pyx_t_4 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self->_context), __pyx_n_s_abort); if (unlikely(!__pyx_t_4)) __PYX_ERR(10, 285, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_4);
  __pyx_t_5 = NULL;
  __pyx_t_6 = 0;
  if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_4))) {
    __pyx_t_5 = PyMethod_GET_SELF(__pyx_t_4);
    if (likely(__pyx_t_5)) {
      PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_4);
      __Pyx_INCREF(__pyx_t_5);
      __Pyx_INCREF(function);
      __Pyx_DECREF_SET(__pyx_t_4, function);
      __pyx_t_6 = 1;
    }
  }
  #if CYTHON_FAST_PYCALL
  if (PyFunction_Check(__pyx_t_4)) {
    PyObject *__pyx_temp[4] = {__pyx_t_5, __pyx_v_code, __pyx_v_details, __pyx_v_trailing_metadata};
    __pyx_t_2 = __Pyx_PyFunction_FastCall(__pyx_t_4, __pyx_temp+1-__pyx_t_6, 3+__pyx_t_6); if (unlikely(!__pyx_t_2)) __PYX_ERR(10, 285, __pyx_L1_error)
    __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0;
    __Pyx_GOTREF(__pyx_t_2);
  } else
  #endif
  #if CYTHON_FAST_PYCCALL
  if (__Pyx_PyFastCFunction_Check(__pyx_t_4)) {
    PyObject *__pyx_temp[4] = {__pyx_t_5, __pyx_v_code, __pyx_v_details, __pyx_v_trailing_metadata};
    __pyx_t_2 = __Pyx_PyCFunction_FastCall(__pyx_t_4, __pyx_temp+1-__pyx_t_6, 3+__pyx_t_6); if (unlikely(!__pyx_t_2)) __PYX_ERR(10, 285, __pyx_L1_error)
    __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0;
    __Pyx_GOTREF(__pyx_t_2);
  } else
  #endif
  {
    __pyx_t_7 = PyTuple_New(3+__pyx_t_6); if (unlikely(!__pyx_t_7)) __PYX_ERR(10, 285, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_7);
    if (__pyx_t_5) {
      __Pyx_GIVEREF(__pyx_t_5); PyTuple_SET_ITEM(__pyx_t_7, 0, __pyx_t_5); __pyx_t_5 = NULL;
    }
    __Pyx_INCREF(__pyx_v_code);
    __Pyx_GIVEREF(__pyx_v_code);
    PyTuple_SET_ITEM(__pyx_t_7, 0+__pyx_t_6, __pyx_v_code);
    __Pyx_INCREF(__pyx_v_details);
    __Pyx_GIVEREF(__pyx_v_details);
    PyTuple_SET_ITEM(__pyx_t_7, 1+__pyx_t_6, __pyx_v_details);
    __Pyx_INCREF(__pyx_v_trailing_metadata);
    __Pyx_GIVEREF(__pyx_v_trailing_metadata);
    PyTuple_SET_ITEM(__pyx_t_7, 2+__pyx_t_6, __pyx_v_trailing_metadata);
    __pyx_t_2 = __Pyx_PyObject_Call(__pyx_t_4, __pyx_t_7, NULL); if (unlikely(!__pyx_t_2)) __PYX_ERR(10, 285, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_2);
    __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
  }
  __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;

  /* "src/python/grpcio/grpc/_cython/_cygrpc/aio/server.pyx.pxi":286
 *         future = asyncio.run_coroutine_threadsafe(
 *             self._context.abort(code, details, trailing_metadata),
 *             self._loop)             # <<<<<<<<<<<<<<
 *         # Abort should raise an AbortError
 *         future.exception()
 */
  __pyx_t_4 = NULL;
  __pyx_t_6 = 0;
  if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_3))) {
    __pyx_t_4 = PyMethod_GET_SELF(__pyx_t_3);
    if (likely(__pyx_t_4)) {
      PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_3);
      __Pyx_INCREF(__pyx_t_4);
      __Pyx_INCREF(function);
      __Pyx_DECREF_SET(__pyx_t_3, function);
      __pyx_t_6 = 1;
    }
  }
  #if CYTHON_FAST_PYCALL
  if (PyFunction_Check(__pyx_t_3)) {
    PyObject *__pyx_temp[3] = {__pyx_t_4, __pyx_t_2, __pyx_v_self->_loop};
    __pyx_t_1 = __Pyx_PyFunction_FastCall(__pyx_t_3, __pyx_temp+1-__pyx_t_6, 2+__pyx_t_6); if (unlikely(!__pyx_t_1)) __PYX_ERR(10, 284, __pyx_L1_error)
    __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0;
    __Pyx_GOTREF(__pyx_t_1);
    __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  } else
  #endif
  #if CYTHON_FAST_PYCCALL
  if (__Pyx_PyFastCFunction_Check(__pyx_t_3)) {
    PyObject *__pyx_temp[3] = {__pyx_t_4, __pyx_t_2, __pyx_v_self->_loop};
    __pyx_t_1 = __Pyx_PyCFunction_FastCall(__pyx_t_3, __pyx_temp+1-__pyx_t_6, 2+__pyx_t_6); if (unlikely(!__pyx_t_1)) __PYX_ERR(10, 284, __pyx_L1_error)
    __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0;
    __Pyx_GOTREF(__pyx_t_1);
    __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  } else
  #endif
  {
    __pyx_t_7 = PyTuple_New(2+__pyx_t_6); if (unlikely(!__pyx_t_7)) __PYX_ERR(10, 284, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_7);
    if (__pyx_t_4) {
      __Pyx_GIVEREF(__pyx_t_4); PyTuple_SET_ITEM(__pyx_t_7, 0, __pyx_t_4); __pyx_t_4 = NULL;
    }
    __Pyx_GIVEREF(__pyx_t_2);
    PyTuple_SET_ITEM(__pyx_t_7, 0+__pyx_t_6, __pyx_t_2);
    __Pyx_INCREF(__pyx_v_self->_loop);
    __Pyx_GIVEREF(__pyx_v_self->_loop);
    PyTuple_SET_ITEM(__pyx_t_7, 1+__pyx_t_6, __pyx_v_self->_loop);
    __pyx_t_2 = 0;
    __pyx_t_1 = __Pyx_PyObject_Call(__pyx_t_3, __pyx_t_7, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(10, 284, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_1);
    __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
  }
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
  __pyx_v_future = __pyx_t_1;
  __pyx_t_1 = 0;

  /* "src/python/grpcio/grpc/_cython/_cygrpc/aio/server.pyx.pxi":288
 *             self._loop)
 *         # Abort should raise an AbortError
 *         future.exception()             # <<<<<<<<<<<<<<
 * 
 *     def send_initial_metadata(self, object metadata):
 */
  __pyx_t_3 = __Pyx_PyObject_GetAttrStr(__pyx_v_future, __pyx_n_s_exception); if (unlikely(!__pyx_t_3)) __PYX_ERR(10, 288, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  __pyx_t_7 = NULL;
  if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_3))) {
    __pyx_t_7 = PyMethod_GET_SELF(__pyx_t_3);
    if (likely(__pyx_t_7)) {
      PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_3);
      __Pyx_INCREF(__pyx_t_7);
      __Pyx_INCREF(function);
      __Pyx_DECREF_SET(__pyx_t_3, function);
    }
  }
  __pyx_t_1 = (__pyx_t_7) ? __Pyx_PyObject_CallOneArg(__pyx_t_3, __pyx_t_7) : __Pyx_PyObject_CallNoArg(__pyx_t_3);
  __Pyx_XDECREF(__pyx_t_7); __pyx_t_7 = 0;
  if (unlikely(!__pyx_t_1)) __PYX_ERR(10, 288, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;

  /* "src/python/grpcio/grpc/_cython/_cygrpc/aio/server.pyx.pxi":280
 *         self._loop = context._loop
 * 
 *     def abort(self,             # <<<<<<<<<<<<<<
 *               object code,
 *               str details='',
 */

  /* function exit code */
  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_XDECREF(__pyx_t_3);
  __Pyx_XDECREF(__pyx_t_4);
  __Pyx_XDECREF(__pyx_t_5);
  __Pyx_XDECREF(__pyx_t_7);
  __Pyx_AddTraceback("grpc._cython.cygrpc._SyncServicerContext.abort", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XDECREF(__pyx_v_future);
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "src/python/grpcio/grpc/_cython/_cygrpc/aio/server.pyx.pxi":290
 *         future.exception()
 * 
 *     def send_initial_metadata(self, object metadata):             # <<<<<<<<<<<<<<
 *         future = asyncio.run_coroutine_threadsafe(
 *             self._context.send_initial_metadata(metadata),
 */

/* Python wrapper */
static PyObject *__pyx_pw_4grpc_7_cython_6cygrpc_20_SyncServicerContext_5send_initial_metadata(PyObject *__pyx_v_self, PyObject *__pyx_v_metadata); /*proto*/
static PyObject *__pyx_pw_4grpc_7_cython_6cygrpc_20_SyncServicerContext_5send_initial_metadata(PyObject *__pyx_v_self, PyObject *__pyx_v_metadata) {
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("send_initial_metadata (wrapper)", 0);
  __pyx_r = __pyx_pf_4grpc_7_cython_6cygrpc_20_SyncServicerContext_4send_initial_metadata(((struct __pyx_obj_4grpc_7_cython_6cygrpc__SyncServicerContext *)__pyx_v_self), ((PyObject *)__pyx_v_metadata));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_4grpc_7_cython_6cygrpc_20_SyncServicerContext_4send_initial_metadata(struct __pyx_obj_4grpc_7_cython_6cygrpc__SyncServicerContext *__pyx_v_self, PyObject *__pyx_v_metadata) {
  PyObject *__pyx_v_future = NULL;
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  PyObject *__pyx_t_2 = NULL;
  PyObject *__pyx_t_3 = NULL;
  PyObject *__pyx_t_4 = NULL;
  PyObject *__pyx_t_5 = NULL;
  int __pyx_t_6;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("send_initial_metadata", 0);

  /* "src/python/grpcio/grpc/_cython/_cygrpc/aio/server.pyx.pxi":291
 * 
 *     def send_initial_metadata(self, object metadata):
 *         future = asyncio.run_coroutine_threadsafe(             # <<<<<<<<<<<<<<
 *             self._context.send_initial_metadata(metadata),
 *             self._loop)
 */
  __Pyx_GetModuleGlobalName(__pyx_t_2, __pyx_n_s_asyncio); if (unlikely(!__pyx_t_2)) __PYX_ERR(10, 291, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __pyx_t_3 = __Pyx_PyObject_GetAttrStr(__pyx_t_2, __pyx_n_s_run_coroutine_threadsafe); if (unlikely(!__pyx_t_3)) __PYX_ERR(10, 291, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;

  /* "src/python/grpcio/grpc/_cython/_cygrpc/aio/server.pyx.pxi":292
 *     def send_initial_metadata(self, object metadata):
 *         future = asyncio.run_coroutine_threadsafe(
 *             self._context.send_initial_metadata(metadata),             # <<<<<<<<<<<<<<
 *             self._loop)
 *         future.result()
 */
  __pyx_t_4 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self->_context), __pyx_n_s_send_initial_metadata_2); if (unlikely(!__pyx_t_4)) __PYX_ERR(10, 292, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_4);
  __pyx_t_5 = NULL;
  if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_4))) {
    __pyx_t_5 = PyMethod_GET_SELF(__pyx_t_4);
    if (likely(__pyx_t_5)) {
      PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_4);
      __Pyx_INCREF(__pyx_t_5);
      __Pyx_INCREF(function);
      __Pyx_DECREF_SET(__pyx_t_4, function);
    }
  }
  __pyx_t_2 = (__pyx_t_5) ? __Pyx_PyObject_Call2Args(__pyx_t_4, __pyx_t_5, __pyx_v_metadata) : __Pyx_PyObject_CallOneArg(__pyx_t_4, __pyx_v_metadata);
  __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0;
  if (unlikely(!__pyx_t_2)) __PYX_ERR(10, 292, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;

  /* "src/python/grpcio/grpc/_cython/_cygrpc/aio/server.pyx.pxi":293
 *         future = asyncio.run_coroutine_threadsafe(
 *             self._context.send_initial_metadata(metadata),
 *             self._loop)             # <<<<<<<<<<<<<<
 *         future.result()
 * 
 */
  __pyx_t_4 = NULL;
  __pyx_t_6 = 0;
  if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_3))) {
    __pyx_t_4 = PyMethod_GET_SELF(__pyx_t_3);
    if (likely(__pyx_t_4)) {
      PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_3);
      __Pyx_INCREF(__pyx_t_4);
      __Pyx_INCREF(function);
      __Pyx_DECREF_SET(__pyx_t_3, function);
      __pyx_t_6 = 1;
    }
  }
  #if CYTHON_FAST_PYCALL
  if (PyFunction_Check(__pyx_t_3)) {
    PyObject *__pyx_temp[3] = {__pyx_t_4, __pyx_t_2, __pyx_v_self->_loop};
    __pyx_t_1 = __Pyx_PyFunction_FastCall(__pyx_t_3, __pyx_temp+1-__pyx_t_6, 2+__pyx_t_6); if (unlikely(!__pyx_t_1)) __PYX_ERR(10, 291, __pyx_L1_error)
    __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0;
    __Pyx_GOTREF(__pyx_t_1);
    __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  } else
  #endif
  #if CYTHON_FAST_PYCCALL
  if (__Pyx_PyFastCFunction_Check(__pyx_t_3)) {
    PyObject *__pyx_temp[3] = {__pyx_t_4, __pyx_t_2, __pyx_v_self->_loop};
    __pyx_t_1 = __Pyx_PyCFunction_FastCall(__pyx_t_3, __pyx_temp+1-__pyx_t_6, 2+__pyx_t_6); if (unlikely(!__pyx_t_1)) __PYX_ERR(10, 291, __pyx_L1_error)
    __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0;
    __Pyx_GOTREF(__pyx_t_1);
    __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  } else
  #endif
  {
    __pyx_t_5 = PyTuple_New(2+__pyx_t_6); if (unlikely(!__pyx_t_5)) __PYX_ERR(10, 291, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_5);
    if (__pyx_t_4) {
      __Pyx_GIVEREF(__pyx_t_4); PyTuple_SET_ITEM(__pyx_t_5, 0, __pyx_t_4); __pyx_t_4 = NULL;
    }
    __Pyx_GIVEREF(__pyx_t_2);
    PyTuple_SET_ITEM(__pyx_t_5, 0+__pyx_t_6, __pyx_t_2);
    __Pyx_INCREF(__pyx_v_self->_loop);
    __Pyx_GIVEREF(__pyx_v_self->_loop);
    PyTuple_SET_ITEM(__pyx_t_5, 1+__pyx_t_6, __pyx_v_self->_loop);
    __pyx_t_2 = 0;
    __pyx_t_1 = __Pyx_PyObject_Call(__pyx_t_3, __pyx_t_5, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(10, 291, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_1);
    __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
  }
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
  __pyx_v_future = __pyx_t_1;
  __pyx_t_1 = 0;

  /* "src/python/grpcio/grpc/_cython/_cygrpc/aio/server.pyx.pxi":294
 *             self._context.send_initial_metadata(metadata),
 *             self._loop)
 *         future.result()             # <<<<<<<<<<<<<<
 * 
 *     def set_trailing_metadata(self, object metadata):
 */
  __pyx_t_3 = __Pyx_PyObject_GetAttrStr(__pyx_v_future, __pyx_n_s_result); if (unlikely(!__pyx_t_3)) __PYX_ERR(10, 294, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  __pyx_t_5 = NULL;
  if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_3))) {
    __pyx_t_5 = PyMethod_GET_SELF(__pyx_t_3);
    if (likely(__pyx_t_5)) {
      PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_3);
      __Pyx_INCREF(__pyx_t_5);
      __Pyx_INCREF(function);
      __Pyx_DECREF_SET(__pyx_t_3, function);
    }
  }
  __pyx_t_1 = (__pyx_t_5) ? __Pyx_PyObject_CallOneArg(__pyx_t_3, __pyx_t_5) : __Pyx_PyObject_CallNoArg(__pyx_t_3);
  __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0;
  if (unlikely(!__pyx_t_1)) __PYX_ERR(10, 294, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;

  /* "src/python/grpcio/grpc/_cython/_cygrpc/aio/server.pyx.pxi":290
 *         future.exception()
 * 
 *     def send_initial_metadata(self, object metadata):             # <<<<<<<<<<<<<<
 *         future = asyncio.run_coroutine_threadsafe(
 *             self._context.send_initial_metadata(metadata),
 */

  /* function exit code */
  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_XDECREF(__pyx_t_3);
  __Pyx_XDECREF(__pyx_t_4);
  __Pyx_XDECREF(__pyx_t_5);
  __Pyx_AddTraceback("grpc._cython.cygrpc._SyncServicerContext.send_initial_metadata", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XDECREF(__pyx_v_future);
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "src/python/grpcio/grpc/_cython/_cygrpc/aio/server.pyx.pxi":296
 *         future.result()
 * 
 *     def set_trailing_metadata(self, object metadata):             # <<<<<<<<<<<<<<
 *         self._context.set_trailing_metadata(metadata)
 * 
 */

/* Python wrapper */
static PyObject *__pyx_pw_4grpc_7_cython_6cygrpc_20_SyncServicerContext_7set_trailing_metadata(PyObject *__pyx_v_self, PyObject *__pyx_v_metadata); /*proto*/
static PyObject *__pyx_pw_4grpc_7_cython_6cygrpc_20_SyncServicerContext_7set_trailing_metadata(PyObject *__pyx_v_self, PyObject *__pyx_v_metadata) {
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("set_trailing_metadata (wrapper)", 0);
  __pyx_r = __pyx_pf_4grpc_7_cython_6cygrpc_20_SyncServicerContext_6set_trailing_metadata(((struct __pyx_obj_4grpc_7_cython_6cygrpc__SyncServicerContext *)__pyx_v_self), ((PyObject *)__pyx_v_metadata));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_4grpc_7_cython_6cygrpc_20_SyncServicerContext_6set_trailing_metadata(struct __pyx_obj_4grpc_7_cython_6cygrpc__SyncServicerContext *__pyx_v_self, PyObject *__pyx_v_metadata) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  PyObject *__pyx_t_2 = NULL;
  PyObject *__pyx_t_3 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("set_trailing_metadata", 0);

  /* "src/python/grpcio/grpc/_cython/_cygrpc/aio/server.pyx.pxi":297
 * 
 *     def set_trailing_metadata(self, object metadata):
 *         self._context.set_trailing_metadata(metadata)             # <<<<<<<<<<<<<<
 * 
 *     def invocation_metadata(self):
 */
  __pyx_t_2 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self->_context), __pyx_n_s_set_trailing_metadata); if (unlikely(!__pyx_t_2)) __PYX_ERR(10, 297, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __pyx_t_3 = NULL;
  if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_2))) {
    __pyx_t_3 = PyMethod_GET_SELF(__pyx_t_2);
    if (likely(__pyx_t_3)) {
      PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_2);
      __Pyx_INCREF(__pyx_t_3);
      __Pyx_INCREF(function);
      __Pyx_DECREF_SET(__pyx_t_2, function);
    }
  }
  __pyx_t_1 = (__pyx_t_3) ? __Pyx_PyObject_Call2Args(__pyx_t_2, __pyx_t_3, __pyx_v_metadata) : __Pyx_PyObject_CallOneArg(__pyx_t_2, __pyx_v_metadata);
  __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0;
  if (unlikely(!__pyx_t_1)) __PYX_ERR(10, 297, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;

  /* "src/python/grpcio/grpc/_cython/_cygrpc/aio/server.pyx.pxi":296
 *         future.result()
 * 
 *     def set_trailing_metadata(self, object metadata):             # <<<<<<<<<<<<<<
 *         self._context.set_trailing_metadata(metadata)
 * 
 */

  /* function exit code */
  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_XDECREF(__pyx_t_3);
  __Pyx_AddTraceback("grpc._cython.cygrpc._SyncServicerContext.set_trailing_metadata", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "src/python/grpcio/grpc/_cython/_cygrpc/aio/server.pyx.pxi":299
 *         self._context.set_trailing_metadata(metadata)
 * 
 *     def invocation_metadata(self):             # <<<<<<<<<<<<<<
 *         return self._context.invocation_metadata()
 * 
 */

/* Python wrapper */
static PyObject *__pyx_pw_4grpc_7_cython_6cygrpc_20_SyncServicerContext_9invocation_metadata(PyObject *__pyx_v_self, CYTHON_UNUSED PyObject *unused); /*proto*/
static PyObject *__pyx_pw_4grpc_7_cython_6cygrpc_20_SyncServicerContext_9invocation_metadata(PyObject *__pyx_v_self, CYTHON_UNUSED PyObject *unused) {
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("invocation_metadata (wrapper)", 0);
  __pyx_r = __pyx_pf_4grpc_7_cython_6cygrpc_20_SyncServicerContext_8invocation_metadata(((struct __pyx_obj_4grpc_7_cython_6cygrpc__SyncServicerContext *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_4grpc_7_cython_6cygrpc_20_SyncServicerContext_8invocation_metadata(struct __pyx_obj_4grpc_7_cython_6cygrpc__SyncServicerContext *__pyx_v_self) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  PyObject *__pyx_t_2 = NULL;
  PyObject *__pyx_t_3 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("invocation_metadata", 0);

  /* "src/python/grpcio/grpc/_cython/_cygrpc/aio/server.pyx.pxi":300
 * 
 *     def invocation_metadata(self):
 *         return self._context.invocation_metadata()             # <<<<<<<<<<<<<<
 * 
 *     def set_code(self, object code):
 */
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_2 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self->_context), __pyx_n_s_invocation_metadata); if (unlikely(!__pyx_t_2)) __PYX_ERR(10, 300, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __pyx_t_3 = NULL;
  if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_2))) {
    __pyx_t_3 = PyMethod_GET_SELF(__pyx_t_2);
    if (likely(__pyx_t_3)) {
      PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_2);
      __Pyx_INCREF(__pyx_t_3);
      __Pyx_INCREF(function);
      __Pyx_DECREF_SET(__pyx_t_2, function);
    }
  }
  __pyx_t_1 = (__pyx_t_3) ? __Pyx_PyObject_CallOneArg(__pyx_t_2, __pyx_t_3) : __Pyx_PyObject_CallNoArg(__pyx_t_2);
  __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0;
  if (unlikely(!__pyx_t_1)) __PYX_ERR(10, 300, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  __pyx_r = __pyx_t_1;
  __pyx_t_1 = 0;
  goto __pyx_L0;

  /* "src/python/grpcio/grpc/_cython/_cygrpc/aio/server.pyx.pxi":299
 *         self._context.set_trailing_metadata(metadata)
 * 
 *     def invocation_metadata(self):             # <<<<<<<<<<<<<<
 *         return self._context.invocation_metadata()
 * 
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_XDECREF(__pyx_t_3);
  __Pyx_AddTraceback("grpc._cython.cygrpc._SyncServicerContext.invocation_metadata", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "src/python/grpcio/grpc/_cython/_cygrpc/aio/server.pyx.pxi":302
 *         return self._context.invocation_metadata()
 * 
 *     def set_code(self, object code):             # <<<<<<<<<<<<<<
 *         self._context.set_code(code)
 * 
 */

/* Python wrapper */
static PyObject *__pyx_pw_4grpc_7_cython_6cygrpc_20_SyncServicerContext_11set_code(PyObject *__pyx_v_self, PyObject *__pyx_v_code); /*proto*/
static PyObject *__pyx_pw_4grpc_7_cython_6cygrpc_20_SyncServicerContext_11set_code(PyObject *__pyx_v_self, PyObject *__pyx_v_code) {
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("set_code (wrapper)", 0);
  __pyx_r = __pyx_pf_4grpc_7_cython_6cygrpc_20_SyncServicerContext_10set_code(((struct __pyx_obj_4grpc_7_cython_6cygrpc__SyncServicerContext *)__pyx_v_self), ((PyObject *)__pyx_v_code));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_4grpc_7_cython_6cygrpc_20_SyncServicerContext_10set_code(struct __pyx_obj_4grpc_7_cython_6cygrpc__SyncServicerContext *__pyx_v_self, PyObject *__pyx_v_code) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  PyObject *__pyx_t_2 = NULL;
  PyObject *__pyx_t_3 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("set_code", 0);

  /* "src/python/grpcio/grpc/_cython/_cygrpc/aio/server.pyx.pxi":303
 * 
 *     def set_code(self, object code):
 *         self._context.set_code(code)             # <<<<<<<<<<<<<<
 * 
 *     def set_details(self, str details):
 */
  __pyx_t_2 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self->_context), __pyx_n_s_set_code); if (unlikely(!__pyx_t_2)) __PYX_ERR(10, 303, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __pyx_t_3 = NULL;
  if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_2))) {
    __pyx_t_3 = PyMethod_GET_SELF(__pyx_t_2);
    if (likely(__pyx_t_3)) {
      PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_2);
      __Pyx_INCREF(__pyx_t_3);
      __Pyx_INCREF(function);
      __Pyx_DECREF_SET(__pyx_t_2, function);
    }
  }
  __pyx_t_1 = (__pyx_t_3) ? __Pyx_PyObject_Call2Args(__pyx_t_2, __pyx_t_3, __pyx_v_code) : __Pyx_PyObject_CallOneArg(__pyx_t_2, __pyx_v_code);
  __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0;
  if (unlikely(!__pyx_t_1)) __PYX_ERR(10, 303, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;

  /* "src/python/grpcio/grpc/_cython/_cygrpc/aio/server.pyx.pxi":302
 *         return self._context.invocation_metadata()
 * 
 *     def set_code(self, object code):             # <<<<<<<<<<<<<<
 *         self._context.set_code(code)
 * 
 */

  /* function exit code */
  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_XDECREF(__pyx_t_3);
  __Pyx_AddTraceback("grpc._cython.cygrpc._SyncServicerContext.set_code", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "src/python/grpcio/grpc/_cython/_cygrpc/aio/server.pyx.pxi":305
 *         self._context.set_code(code)
 * 
 *     def set_details(self, str details):             # <<<<<<<<<<<<<<
 *         self._context.set_details(details)
 * 
 */

/* Python wrapper */
static PyObject *__pyx_pw_4grpc_7_cython_6cygrpc_20_SyncServicerContext_13set_details(PyObject *__pyx_v_self, PyObject *__pyx_v_details); /*proto*/
static PyObject *__pyx_pw_4grpc_7_cython_6cygrpc_20_SyncServicerContext_13set_details(PyObject *__pyx_v_self, PyObject *__pyx_v_details) {
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("set_details (wrapper)", 0);
  if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_details), (&PyString_Type), 1, "details", 1))) __PYX_ERR(10, 305, __pyx_L1_error)
  __pyx_r = __pyx_pf_4grpc_7_cython_6cygrpc_20_SyncServicerContext_12set_details(((struct __pyx_obj_4grpc_7_cython_6cygrpc__SyncServicerContext *)__pyx_v_self), ((PyObject*)__pyx_v_details));

  /* function exit code */
  goto __pyx_L0;
  __pyx_L1_error:;
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_4grpc_7_cython_6cygrpc_20_SyncServicerContext_12set_details(struct __pyx_obj_4grpc_7_cython_6cygrpc__SyncServicerContext *__pyx_v_self, PyObject *__pyx_v_details) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  PyObject *__pyx_t_2 = NULL;
  PyObject *__pyx_t_3 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("set_details", 0);

  /* "src/python/grpcio/grpc/_cython/_cygrpc/aio/server.pyx.pxi":306
 * 
 *     def set_details(self, str details):
 *         self._context.set_details(details)             # <<<<<<<<<<<<<<
 * 
 *     def set_compression(self, object compression):
 */
  __pyx_t_2 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self->_context), __pyx_n_s_set_details); if (unlikely(!__pyx_t_2)) __PYX_ERR(10, 306, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __pyx_t_3 = NULL;
  if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_2))) {
    __pyx_t_3 = PyMethod_GET_SELF(__pyx_t_2);
    if (likely(__pyx_t_3)) {
      PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_2);
      __Pyx_INCREF(__pyx_t_3);
      __Pyx_INCREF(function);
      __Pyx_DECREF_SET(__pyx_t_2, function);
    }
  }
  __pyx_t_1 = (__pyx_t_3) ? __Pyx_PyObject_Call2Args(__pyx_t_2, __pyx_t_3, __pyx_v_details) : __Pyx_PyObject_CallOneArg(__pyx_t_2, __pyx_v_details);
  __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0;
  if (unlikely(!__pyx_t_1)) __PYX_ERR(10, 306, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;

  /* "src/python/grpcio/grpc/_cython/_cygrpc/aio/server.pyx.pxi":305
 *         self._context.set_code(code)
 * 
 *     def set_details(self, str details):             # <<<<<<<<<<<<<<
 *         self._context.set_details(details)
 * 
 */

  /* function exit code */
  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_XDECREF(__pyx_t_3);
  __Pyx_AddTraceback("grpc._cython.cygrpc._SyncServicerContext.set_details", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "src/python/grpcio/grpc/_cython/_cygrpc/aio/server.pyx.pxi":308
 *         self._context.set_details(details)
 * 
 *     def set_compression(self, object compression):             # <<<<<<<<<<<<<<
 *         self._context.set_compression(compression)
 * 
 */

/* Python wrapper */
static PyObject *__pyx_pw_4grpc_7_cython_6cygrpc_20_SyncServicerContext_15set_compression(PyObject *__pyx_v_self, PyObject *__pyx_v_compression); /*proto*/
static PyObject *__pyx_pw_4grpc_7_cython_6cygrpc_20_SyncServicerContext_15set_compression(PyObject *__pyx_v_self, PyObject *__pyx_v_compression) {
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("set_compression (wrapper)", 0);
  __pyx_r = __pyx_pf_4grpc_7_cython_6cygrpc_20_SyncServicerContext_14set_compression(((struct __pyx_obj_4grpc_7_cython_6cygrpc__SyncServicerContext *)__pyx_v_self), ((PyObject *)__pyx_v_compression));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_4grpc_7_cython_6cygrpc_20_SyncServicerContext_14set_compression(struct __pyx_obj_4grpc_7_cython_6cygrpc__SyncServicerContext *__pyx_v_self, PyObject *__pyx_v_compression) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  PyObject *__pyx_t_2 = NULL;
  PyObject *__pyx_t_3 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("set_compression", 0);

  /* "src/python/grpcio/grpc/_cython/_cygrpc/aio/server.pyx.pxi":309
 * 
 *     def set_compression(self, object compression):
 *         self._context.set_compression(compression)             # <<<<<<<<<<<<<<
 * 
 *     def disable_next_message_compression(self):
 */
  __pyx_t_2 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self->_context), __pyx_n_s_set_compression); if (unlikely(!__pyx_t_2)) __PYX_ERR(10, 309, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __pyx_t_3 = NULL;
  if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_2))) {
    __pyx_t_3 = PyMethod_GET_SELF(__pyx_t_2);
    if (likely(__pyx_t_3)) {
      PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_2);
      __Pyx_INCREF(__pyx_t_3);
      __Pyx_INCREF(function);
      __Pyx_DECREF_SET(__pyx_t_2, function);
    }
  }
  __pyx_t_1 = (__pyx_t_3) ? __Pyx_PyObject_Call2Args(__pyx_t_2, __pyx_t_3, __pyx_v_compression) : __Pyx_PyObject_CallOneArg(__pyx_t_2, __pyx_v_compression);
  __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0;
  if (unlikely(!__pyx_t_1)) __PYX_ERR(10, 309, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;

  /* "src/python/grpcio/grpc/_cython/_cygrpc/aio/server.pyx.pxi":308
 *         self._context.set_details(details)
 * 
 *     def set_compression(self, object compression):             # <<<<<<<<<<<<<<
 *         self._context.set_compression(compression)
 * 
 */

  /* function exit code */
  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_XDECREF(__pyx_t_3);
  __Pyx_AddTraceback("grpc._cython.cygrpc._SyncServicerContext.set_compression", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "src/python/grpcio/grpc/_cython/_cygrpc/aio/server.pyx.pxi":311
 *         self._context.set_compression(compression)
 * 
 *     def disable_next_message_compression(self):             # <<<<<<<<<<<<<<
 *         self._context.disable_next_message_compression()
 * 
 */

/* Python wrapper */
static PyObject *__pyx_pw_4grpc_7_cython_6cygrpc_20_SyncServicerContext_17disable_next_message_compression(PyObject *__pyx_v_self, CYTHON_UNUSED PyObject *unused); /*proto*/
static PyObject *__pyx_pw_4grpc_7_cython_6cygrpc_20_SyncServicerContext_17disable_next_message_compression(PyObject *__pyx_v_self, CYTHON_UNUSED PyObject *unused) {
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("disable_next_message_compression (wrapper)", 0);
  __pyx_r = __pyx_pf_4grpc_7_cython_6cygrpc_20_SyncServicerContext_16disable_next_message_compression(((struct __pyx_obj_4grpc_7_cython_6cygrpc__SyncServicerContext *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_4grpc_7_cython_6cygrpc_20_SyncServicerContext_16disable_next_message_compression(struct __pyx_obj_4grpc_7_cython_6cygrpc__SyncServicerContext *__pyx_v_self) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  PyObject *__pyx_t_2 = NULL;
  PyObject *__pyx_t_3 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("disable_next_message_compression", 0);

  /* "src/python/grpcio/grpc/_cython/_cygrpc/aio/server.pyx.pxi":312
 * 
 *     def disable_next_message_compression(self):
 *         self._context.disable_next_message_compression()             # <<<<<<<<<<<<<<
 * 
 *     def add_callback(self, object callback):
 */
  __pyx_t_2 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self->_context), __pyx_n_s_disable_next_message_compression); if (unlikely(!__pyx_t_2)) __PYX_ERR(10, 312, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __pyx_t_3 = NULL;
  if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_2))) {
    __pyx_t_3 = PyMethod_GET_SELF(__pyx_t_2);
    if (likely(__pyx_t_3)) {
      PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_2);
      __Pyx_INCREF(__pyx_t_3);
      __Pyx_INCREF(function);
      __Pyx_DECREF_SET(__pyx_t_2, function);
    }
  }
  __pyx_t_1 = (__pyx_t_3) ? __Pyx_PyObject_CallOneArg(__pyx_t_2, __pyx_t_3) : __Pyx_PyObject_CallNoArg(__pyx_t_2);
  __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0;
  if (unlikely(!__pyx_t_1)) __PYX_ERR(10, 312, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;

  /* "src/python/grpcio/grpc/_cython/_cygrpc/aio/server.pyx.pxi":311
 *         self._context.set_compression(compression)
 * 
 *     def disable_next_message_compression(self):             # <<<<<<<<<<<<<<
 *         self._context.disable_next_message_compression()
 * 
 */

  /* function exit code */
  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_XDECREF(__pyx_t_3);
  __Pyx_AddTraceback("grpc._cython.cygrpc._SyncServicerContext.disable_next_message_compression", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "src/python/grpcio/grpc/_cython/_cygrpc/aio/server.pyx.pxi":314
 *         self._context.disable_next_message_compression()
 * 
 *     def add_callback(self, object callback):             # <<<<<<<<<<<<<<
 *         self._callbacks.append(callback)
 * 
 */

/* Python wrapper */
static PyObject *__pyx_pw_4grpc_7_cython_6cygrpc_20_SyncServicerContext_19add_callback(PyObject *__pyx_v_self, PyObject *__pyx_v_callback); /*proto*/
static PyObject *__pyx_pw_4grpc_7_cython_6cygrpc_20_SyncServicerContext_19add_callback(PyObject *__pyx_v_self, PyObject *__pyx_v_callback) {
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("add_callback (wrapper)", 0);
  __pyx_r = __pyx_pf_4grpc_7_cython_6cygrpc_20_SyncServicerContext_18add_callback(((struct __pyx_obj_4grpc_7_cython_6cygrpc__SyncServicerContext *)__pyx_v_self), ((PyObject *)__pyx_v_callback));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_4grpc_7_cython_6cygrpc_20_SyncServicerContext_18add_callback(struct __pyx_obj_4grpc_7_cython_6cygrpc__SyncServicerContext *__pyx_v_self, PyObject *__pyx_v_callback) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  int __pyx_t_1;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("add_callback", 0);

  /* "src/python/grpcio/grpc/_cython/_cygrpc/aio/server.pyx.pxi":315
 * 
 *     def add_callback(self, object callback):
 *         self._callbacks.append(callback)             # <<<<<<<<<<<<<<
 * 
 *     def peer(self):
 */
  if (unlikely(__pyx_v_self->_callbacks == Py_None)) {
    PyErr_Format(PyExc_AttributeError, "'NoneType' object has no attribute '%.30s'", "append");
    __PYX_ERR(10, 315, __pyx_L1_error)
  }
  __pyx_t_1 = __Pyx_PyList_Append(__pyx_v_self->_callbacks, __pyx_v_callback); if (unlikely(__pyx_t_1 == ((int)-1))) __PYX_ERR(10, 315, __pyx_L1_error)

  /* "src/python/grpcio/grpc/_cython/_cygrpc/aio/server.pyx.pxi":314
 *         self._context.disable_next_message_compression()
 * 
 *     def add_callback(self, object callback):             # <<<<<<<<<<<<<<
 *         self._callbacks.append(callback)
 * 
 */

  /* function exit code */
  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_AddTraceback("grpc._cython.cygrpc._SyncServicerContext.add_callback", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "src/python/grpcio/grpc/_cython/_cygrpc/aio/server.pyx.pxi":317
 *         self._callbacks.append(callback)
 * 
 *     def peer(self):             # <<<<<<<<<<<<<<
 *         return self._context.peer()
 * 
 */

/* Python wrapper */
static PyObject *__pyx_pw_4grpc_7_cython_6cygrpc_20_SyncServicerContext_21peer(PyObject *__pyx_v_self, CYTHON_UNUSED PyObject *unused); /*proto*/
static PyObject *__pyx_pw_4grpc_7_cython_6cygrpc_20_SyncServicerContext_21peer(PyObject *__pyx_v_self, CYTHON_UNUSED PyObject *unused) {
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("peer (wrapper)", 0);
  __pyx_r = __pyx_pf_4grpc_7_cython_6cygrpc_20_SyncServicerContext_20peer(((struct __pyx_obj_4grpc_7_cython_6cygrpc__SyncServicerContext *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_4grpc_7_cython_6cygrpc_20_SyncServicerContext_20peer(struct __pyx_obj_4grpc_7_cython_6cygrpc__SyncServicerContext *__pyx_v_self) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  PyObject *__pyx_t_2 = NULL;
  PyObject *__pyx_t_3 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("peer", 0);

  /* "src/python/grpcio/grpc/_cython/_cygrpc/aio/server.pyx.pxi":318
 * 
 *     def peer(self):
 *         return self._context.peer()             # <<<<<<<<<<<<<<
 * 
 *     def peer_identities(self):
 */
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_2 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self->_context), __pyx_n_s_peer); if (unlikely(!__pyx_t_2)) __PYX_ERR(10, 318, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __pyx_t_3 = NULL;
  if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_2))) {
    __pyx_t_3 = PyMethod_GET_SELF(__pyx_t_2);
    if (likely(__pyx_t_3)) {
      PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_2);
      __Pyx_INCREF(__pyx_t_3);
      __Pyx_INCREF(function);
      __Pyx_DECREF_SET(__pyx_t_2, function);
    }
  }
  __pyx_t_1 = (__pyx_t_3) ? __Pyx_PyObject_CallOneArg(__pyx_t_2, __pyx_t_3) : __Pyx_PyObject_CallNoArg(__pyx_t_2);
  __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0;
  if (unlikely(!__pyx_t_1)) __PYX_ERR(10, 318, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  __pyx_r = __pyx_t_1;
  __pyx_t_1 = 0;
  goto __pyx_L0;

  /* "src/python/grpcio/grpc/_cython/_cygrpc/aio/server.pyx.pxi":317
 *         self._callbacks.append(callback)
 * 
 *     def peer(self):             # <<<<<<<<<<<<<<
 *         return self._context.peer()
 * 
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_XDECREF(__pyx_t_3);
  __Pyx_AddTraceback("grpc._cython.cygrpc._SyncServicerContext.peer", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "src/python/grpcio/grpc/_cython/_cygrpc/aio/server.pyx.pxi":320
 *         return self._context.peer()
 * 
 *     def peer_identities(self):             # <<<<<<<<<<<<<<
 *         return self._context.peer_identities()
 * 
 */

/* Python wrapper */
static PyObject *__pyx_pw_4grpc_7_cython_6cygrpc_20_SyncServicerContext_23peer_identities(PyObject *__pyx_v_self, CYTHON_UNUSED PyObject *unused); /*proto*/
static PyObject *__pyx_pw_4grpc_7_cython_6cygrpc_20_SyncServicerContext_23peer_identities(PyObject *__pyx_v_self, CYTHON_UNUSED PyObject *unused) {
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("peer_identities (wrapper)", 0);
  __pyx_r = __pyx_pf_4grpc_7_cython_6cygrpc_20_SyncServicerContext_22peer_identities(((struct __pyx_obj_4grpc_7_cython_6cygrpc__SyncServicerContext *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_4grpc_7_cython_6cygrpc_20_SyncServicerContext_22peer_identities(struct __pyx_obj_4grpc_7_cython_6cygrpc__SyncServicerContext *__pyx_v_self) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  PyObject *__pyx_t_2 = NULL;
  PyObject *__pyx_t_3 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("peer_identities", 0);

  /* "src/python/grpcio/grpc/_cython/_cygrpc/aio/server.pyx.pxi":321
 * 
 *     def peer_identities(self):
 *         return self._context.peer_identities()             # <<<<<<<<<<<<<<
 * 
 *     def peer_identity_key(self):
 */
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_2 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self->_context), __pyx_n_s_peer_identities); if (unlikely(!__pyx_t_2)) __PYX_ERR(10, 321, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __pyx_t_3 = NULL;
  if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_2))) {
    __pyx_t_3 = PyMethod_GET_SELF(__pyx_t_2);
    if (likely(__pyx_t_3)) {
      PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_2);
      __Pyx_INCREF(__pyx_t_3);
      __Pyx_INCREF(function);
      __Pyx_DECREF_SET(__pyx_t_2, function);
    }
  }
  __pyx_t_1 = (__pyx_t_3) ? __Pyx_PyObject_CallOneArg(__pyx_t_2, __pyx_t_3) : __Pyx_PyObject_CallNoArg(__pyx_t_2);
  __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0;
  if (unlikely(!__pyx_t_1)) __PYX_ERR(10, 321, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  __pyx_r = __pyx_t_1;
  __pyx_t_1 = 0;
  goto __pyx_L0;

  /* "src/python/grpcio/grpc/_cython/_cygrpc/aio/server.pyx.pxi":320
 *         return self._context.peer()
 * 
 *     def peer_identities(self):             # <<<<<<<<<<<<<<
 *         return self._context.peer_identities()
 * 
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_XDECREF(__pyx_t_3);
  __Pyx_AddTraceback("grpc._cython.cygrpc._SyncServicerContext.peer_identities", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "src/python/grpcio/grpc/_cython/_cygrpc/aio/server.pyx.pxi":323
 *         return self._context.peer_identities()
 * 
 *     def peer_identity_key(self):             # <<<<<<<<<<<<<<
 *         return self._context.peer_identity_key()
 * 
 */

/* Python wrapper */
static PyObject *__pyx_pw_4grpc_7_cython_6cygrpc_20_SyncServicerContext_25peer_identity_key(PyObject *__pyx_v_self, CYTHON_UNUSED PyObject *unused); /*proto*/
static PyObject *__pyx_pw_4grpc_7_cython_6cygrpc_20_SyncServicerContext_25peer_identity_key(PyObject *__pyx_v_self, CYTHON_UNUSED PyObject *unused) {
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("peer_identity_key (wrapper)", 0);
  __pyx_r = __pyx_pf_4grpc_7_cython_6cygrpc_20_SyncServicerContext_24peer_identity_key(((struct __pyx_obj_4grpc_7_cython_6cygrpc__SyncServicerContext *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_4grpc_7_cython_6cygrpc_20_SyncServicerContext_24peer_identity_key(struct __pyx_obj_4grpc_7_cython_6cygrpc__SyncServicerContext *__pyx_v_self) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  PyObject *__pyx_t_2 = NULL;
  PyObject *__pyx_t_3 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("peer_identity_key", 0);

  /* "src/python/grpcio/grpc/_cython/_cygrpc/aio/server.pyx.pxi":324
 * 
 *     def peer_identity_key(self):
 *         return self._context.peer_identity_key()             # <<<<<<<<<<<<<<
 * 
 *     def auth_context(self):
 */
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_2 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self->_context), __pyx_n_s_peer_identity_key); if (unlikely(!__pyx_t_2)) __PYX_ERR(10, 324, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __pyx_t_3 = NULL;
  if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_2))) {
    __pyx_t_3 = PyMethod_GET_SELF(__pyx_t_2);
    if (likely(__pyx_t_3)) {
      PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_2);
      __Pyx_INCREF(__pyx_t_3);
      __Pyx_INCREF(function);
      __Pyx_DECREF_SET(__pyx_t_2, function);
    }
  }
  __pyx_t_1 = (__pyx_t_3) ? __Pyx_PyObject_CallOneArg(__pyx_t_2, __pyx_t_3) : __Pyx_PyObject_CallNoArg(__pyx_t_2);
  __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0;
  if (unlikely(!__pyx_t_1)) __PYX_ERR(10, 324, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  __pyx_r = __pyx_t_1;
  __pyx_t_1 = 0;
  goto __pyx_L0;

  /* "src/python/grpcio/grpc/_cython/_cygrpc/aio/server.pyx.pxi":323
 *         return self._context.peer_identities()
 * 
 *     def peer_identity_key(self):             # <<<<<<<<<<<<<<
 *         return self._context.peer_identity_key()
 * 
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_XDECREF(__pyx_t_3);
  __Pyx_AddTraceback("grpc._cython.cygrpc._SyncServicerContext.peer_identity_key", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "src/python/grpcio/grpc/_cython/_cygrpc/aio/server.pyx.pxi":326
 *         return self._context.peer_identity_key()
 * 
 *     def auth_context(self):             # <<<<<<<<<<<<<<
 *         return self._context.auth_context()
 * 
 */

/* Python wrapper */
static PyObject *__pyx_pw_4grpc_7_cython_6cygrpc_20_SyncServicerContext_27auth_context(PyObject *__pyx_v_self, CYTHON_UNUSED PyObject *unused); /*proto*/
static PyObject *__pyx_pw_4grpc_7_cython_6cygrpc_20_SyncServicerContext_27auth_context(PyObject *__pyx_v_self, CYTHON_UNUSED PyObject *unused) {
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("auth_context (wrapper)", 0);
  __pyx_r = __pyx_pf_4grpc_7_cython_6cygrpc_20_SyncServicerContext_26auth_context(((struct __pyx_obj_4grpc_7_cython_6cygrpc__SyncServicerContext *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_4grpc_7_cython_6cygrpc_20_SyncServicerContext_26auth_context(struct __pyx_obj_4grpc_7_cython_6cygrpc__SyncServicerContext *__pyx_v_self) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  PyObject *__pyx_t_2 = NULL;
  PyObject *__pyx_t_3 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("auth_context", 0);

  /* "src/python/grpcio/grpc/_cython/_cygrpc/aio/server.pyx.pxi":327
 * 
 *     def auth_context(self):
 *         return self._context.auth_context()             # <<<<<<<<<<<<<<
 * 
 *     def time_remaining(self):
 */
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_2 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self->_context), __pyx_n_s_auth_context); if (unlikely(!__pyx_t_2)) __PYX_ERR(10, 327, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __pyx_t_3 = NULL;
  if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_2))) {
    __pyx_t_3 = PyMethod_GET_SELF(__pyx_t_2);
    if (likely(__pyx_t_3)) {
      PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_2);
      __Pyx_INCREF(__pyx_t_3);
      __Pyx_INCREF(function);
      __Pyx_DECREF_SET(__pyx_t_2, function);
    }
  }
  __pyx_t_1 = (__pyx_t_3) ? __Pyx_PyObject_CallOneArg(__pyx_t_2, __pyx_t_3) : __Pyx_PyObject_CallNoArg(__pyx_t_2);
  __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0;
  if (unlikely(!__pyx_t_1)) __PYX_ERR(10, 327, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  __pyx_r = __pyx_t_1;
  __pyx_t_1 = 0;
  goto __pyx_L0;

  /* "src/python/grpcio/grpc/_cython/_cygrpc/aio/server.pyx.pxi":326
 *         return self._context.peer_identity_key()
 * 
 *     def auth_context(self):             # <<<<<<<<<<<<<<
 *         return self._context.auth_context()
 * 
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_XDECREF(__pyx_t_3);
  __Pyx_AddTraceback("grpc._cython.cygrpc._SyncServicerContext.auth_context", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "src/python/grpcio/grpc/_cython/_cygrpc/aio/server.pyx.pxi":329
 *         return self._context.auth_context()
 * 
 *     def time_remaining(self):             # <<<<<<<<<<<<<<
 *         return self._context.time_remaining()
 * 
 */

/* Python wrapper */
static PyObject *__pyx_pw_4grpc_7_cython_6cygrpc_20_SyncServicerContext_29time_remaining(PyObject *__pyx_v_self, CYTHON_UNUSED PyObject *unused); /*proto*/
static PyObject *__pyx_pw_4grpc_7_cython_6cygrpc_20_SyncServicerContext_29time_remaining(PyObject *__pyx_v_self, CYTHON_UNUSED PyObject *unused) {
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("time_remaining (wrapper)", 0);
  __pyx_r = __pyx_pf_4grpc_7_cython_6cygrpc_20_SyncServicerContext_28time_remaining(((struct __pyx_obj_4grpc_7_cython_6cygrpc__SyncServicerContext *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_4grpc_7_cython_6cygrpc_20_SyncServicerContext_28time_remaining(struct __pyx_obj_4grpc_7_cython_6cygrpc__SyncServicerContext *__pyx_v_self) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  PyObject *__pyx_t_2 = NULL;
  PyObject *__pyx_t_3 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("time_remaining", 0);

  /* "src/python/grpcio/grpc/_cython/_cygrpc/aio/server.pyx.pxi":330
 * 
 *     def time_remaining(self):
 *         return self._context.time_remaining()             # <<<<<<<<<<<<<<
 * 
 * 
 */
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_2 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self->_context), __pyx_n_s_time_remaining); if (unlikely(!__pyx_t_2)) __PYX_ERR(10, 330, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __pyx_t_3 = NULL;
  if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_2))) {
    __pyx_t_3 = PyMethod_GET_SELF(__pyx_t_2);
    if (likely(__pyx_t_3)) {
      PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_2);
      __Pyx_INCREF(__pyx_t_3);
      __Pyx_INCREF(function);
      __Pyx_DECREF_SET(__pyx_t_2, function);
    }
  }
  __pyx_t_1 = (__pyx_t_3) ? __Pyx_PyObject_CallOneArg(__pyx_t_2, __pyx_t_3) : __Pyx_PyObject_CallNoArg(__pyx_t_2);
  __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0;
  if (unlikely(!__pyx_t_1)) __PYX_ERR(10, 330, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  __pyx_r = __pyx_t_1;
  __pyx_t_1 = 0;
  goto __pyx_L0;

  /* "src/python/grpcio/grpc/_cython/_cygrpc/aio/server.pyx.pxi":329
 *         return self._context.auth_context()
 * 
 *     def time_remaining(self):             # <<<<<<<<<<<<<<
 *         return self._context.time_remaining()
 * 
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_XDECREF(__pyx_t_3);
  __Pyx_AddTraceback("grpc._cython.cygrpc._SyncServicerContext.time_remaining", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "(tree fragment)":1
 * def __reduce_cython__(self):             # <<<<<<<<<<<<<<
 *     raise TypeError("no default __reduce__ due to non-trivial __cinit__")
 * def __setstate_cython__(self, __pyx_state):
 */

/* Python wrapper */
static PyObject *__pyx_pw_4grpc_7_cython_6cygrpc_20_SyncServicerContext_31__reduce_cython__(PyObject *__pyx_v_self, CYTHON_UNUSED PyObject *unused); /*proto*/
static PyObject *__pyx_pw_4grpc_7_cython_6cygrpc_20_SyncServicerContext_31__reduce_cython__(PyObject *__pyx_v_self, CYTHON_UNUSED PyObject *unused) {
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__reduce_cython__ (wrapper)", 0);
  __pyx_r = __pyx_pf_4grpc_7_cython_6cygrpc_20_SyncServicerContext_30__reduce_cython__(((struct __pyx_obj_4grpc_7_cython_6cygrpc__SyncServicerContext *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_4grpc_7_cython_6cygrpc_20_SyncServicerContext_30__reduce_cython__(CYTHON_UNUSED struct __pyx_obj_4grpc_7_cython_6cygrpc__SyncServicerContext *__pyx_v_self) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("__reduce_cython__", 0);

  /* "(tree fragment)":2
 * def __reduce_cython__(self):
 *     raise TypeError("no default __reduce__ due to non-trivial __cinit__")             # <<<<<<<<<<<<<<
 * def __setstate_cython__(self, __pyx_state):
 *     raise TypeError("no default __reduce__ due to non-trivial __cinit__")
 */
  __pyx_t_1 = __Pyx_PyObject_Call(__pyx_builtin_TypeError, __pyx_tuple__179, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(11, 2, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_Raise(__pyx_t_1, 0, 0, 0);
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  __PYX_ERR(11, 2, __pyx_L1_error)

  /* "(tree fragment)":1
 * def __reduce_cython__(self):             # <<<<<<<<<<<<<<
 *     raise TypeError("no default __reduce__ due to non-trivial __cinit__")
 * def __setstate_cython__(self, __pyx_state):
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_AddTraceback("grpc._cython.cygrpc._SyncServicerContext.__reduce_cython__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "(tree fragment)":3
 * def __reduce_cython__(self):
 *     raise TypeError("no default __reduce__ due to non-trivial __cinit__")
 * def __setstate_cython__(self, __pyx_state):             # <<<<<<<<<<<<<<
 *     raise TypeError("no default __reduce__ due to non-trivial __cinit__")
 */

/* Python wrapper */
static PyObject *__pyx_pw_4grpc_7_cython_6cygrpc_20_SyncServicerContext_33__setstate_cython__(PyObject *__pyx_v_self, PyObject *__pyx_v___pyx_state); /*proto*/
static PyObject *__pyx_pw_4grpc_7_cython_6cygrpc_20_SyncServicerContext_33__setstate_cython__(PyObject *__pyx_v_self, PyObject *__pyx_v___pyx_state) {
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__setstate_cython__ (wrapper)", 0);
  __pyx_r = __pyx_pf_4grpc_7_cython_6cygrpc_20_SyncServicerContext_32__setstate_cython__(((struct __pyx_obj_4grpc_7_cython_6cygrpc__SyncServicerContext *)__pyx_v_self), ((PyObject *)__pyx_v___pyx_state));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_4grpc_7_cython_6cygrpc_20_SyncServicerContext_32__setstate_cython__(CYTHON_UNUSED struct __pyx_obj_4grpc_7_cython_6cygrpc__SyncServicerContext *__pyx_v_self, CYTHON_UNUSED PyObject *__pyx_v___pyx_state) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("__setstate_cython__", 0);

  /* "(tree fragment)":4
 *     raise TypeError("no default __reduce__ due to non-trivial __cinit__")
 * def __setstate_cython__(self, __pyx_state):
 *     raise TypeError("no default __reduce__ due to non-trivial __cinit__")             # <<<<<<<<<<<<<<
 */
  __pyx_t_1 = __Pyx_PyObject_Call(__pyx_builtin_TypeError, __pyx_tuple__180, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(11, 4, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_Raise(__pyx_t_1, 0, 0, 0);
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  __PYX_ERR(11, 4, __pyx_L1_error)

  /* "(tree fragment)":3
 * def __reduce_cython__(self):
 *     raise TypeError("no default __reduce__ due to non-trivial __cinit__")
 * def __setstate_cython__(self, __pyx_state):             # <<<<<<<<<<<<<<
 *     raise TypeError("no default __reduce__ due to non-trivial __cinit__")
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_AddTraceback("grpc._cython.cygrpc._SyncServicerContext.__setstate_cython__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}
static PyObject *__pyx_gb_4grpc_7_cython_6cygrpc_146generator24(__pyx_CoroutineObject *__pyx_generator, CYTHON_UNUSED PyThreadState *__pyx_tstate, PyObject *__pyx_sent_value); /* proto */

/* "src/python/grpcio/grpc/_cython/_cygrpc/aio/server.pyx.pxi":333
 * 
 * 
 * async def _run_interceptor(object interceptors, object query_handler,             # <<<<<<<<<<<<<<
 *                            object handler_call_details):
 *     interceptor = next(interceptors, None)
 */

/* Python wrapper */
static PyObject *__pyx_pw_4grpc_7_cython_6cygrpc_145_run_interceptor(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
static PyMethodDef __pyx_mdef_4grpc_7_cython_6cygrpc_145_run_interceptor = {"_run_interceptor", (PyCFunction)(void*)(PyCFunctionWithKeywords)__pyx_pw_4grpc_7_cython_6cygrpc_145_run_interceptor, METH_VARARGS|METH_KEYWORDS, 0};
static PyObject *__pyx_pw_4grpc_7_cython_6cygrpc_145_run_interceptor(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
  PyObject *__pyx_v_interceptors = 0;
  PyObject *__pyx_v_query_handler = 0;
  PyObject *__pyx_v_handler_call_details = 0;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("_run_interceptor (wrapper)", 0);
  {
    static PyObject **__pyx_pyargnames[] = {&__pyx_n_s_interceptors,&__pyx_n_s_query_handler,&__pyx_n_s_handler_call_details,0};
    PyObject* values[3] = {0,0,0};
    if (unlikely(__pyx_kwds)) {
      Py_ssize_t kw_args;
      const Py_ssize_t pos_args = PyTuple_GET_SIZE(__pyx_args);
      switch (pos_args) {
        case  3: values[2] = PyTuple_GET_ITEM(__pyx_args, 2);
        CYTHON_FALLTHROUGH;
        case  2: values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
        CYTHON_FALLTHROUGH;
        case  1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
        CYTHON_FALLTHROUGH;
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      kw_args = PyDict_Size(__pyx_kwds);
      switch (pos_args) {
        case  0:
        if (likely((values[0] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_interceptors)) != 0)) kw_args--;
        else goto __pyx_L5_argtuple_error;
        CYTHON_FALLTHROUGH;
        case  1:
        if (likely((values[1] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_query_handler)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("_run_interceptor", 1, 3, 3, 1); __PYX_ERR(10, 333, __pyx_L3_error)
        }
        CYTHON_FALLTHROUGH;
        case  2:
        if (likely((values[2] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_handler_call_details)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("_run_interceptor", 1, 3, 3, 2); __PYX_ERR(10, 333, __pyx_L3_error)
        }
      }
      if (unlikely(kw_args > 0)) {
        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "_run_interceptor") < 0)) __PYX_ERR(10, 333, __pyx_L3_error)
      }
    } else if (PyTuple_GET_SIZE(__pyx_args) != 3) {
      goto __pyx_L5_argtuple_error;
    } else {
      values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
      values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
      values[2] = PyTuple_GET_ITEM(__pyx_args, 2);
    }
    __pyx_v_interceptors = values[0];
    __pyx_v_query_handler = values[1];
    __pyx_v_handler_call_details = values[2];
  }
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("_run_interceptor", 1, 3, 3, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(10, 333, __pyx_L3_error)
  __pyx_L3_error:;
  __Pyx_AddTraceback("grpc._cython.cygrpc._run_interceptor", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  __pyx_r = __pyx_pf_4grpc_7_cython_6cygrpc_144_run_interceptor(__pyx_self, __pyx_v_interceptors, __pyx_v_query_handler, __pyx_v_handler_call_details);

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_4grpc_7_cython_6cygrpc_144_run_interceptor(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__pyx_v_interceptors, PyObject *__pyx_v_query_handler, PyObject *__pyx_v_handler_call_details) {
  struct __pyx_obj_4grpc_7_cython_6cygrpc___pyx_scope_struct_36__run_interceptor *__pyx_cur_scope;
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("_run_interceptor", 0);
  __pyx_cur_scope = (struct __pyx_obj_4grpc_7_cython_6cygrpc___pyx_scope_struct_36__run_interceptor *)__pyx_tp_new_4grpc_7_cython_6cygrpc___pyx_scope_struct_36__run_interceptor(__pyx_ptype_4grpc_7_cython_6cygrpc___pyx_scope_struct_36__run_interceptor, __pyx_empty_tuple, NULL);
  if (unlikely(!__pyx_cur_scope)) {
    __pyx_cur_scope = ((struct __pyx_obj_4grpc_7_cython_6cygrpc___pyx_scope_struct_36__run_interceptor *)Py_None);
    __Pyx_INCREF(Py_None);
    __PYX_ERR(10, 333, __pyx_L1_error)
  } else {
    __Pyx_GOTREF(__pyx_cur_scope);
  }
  __pyx_cur_scope->__pyx_v_interceptors = __pyx_v_interceptors;
  __Pyx_INCREF(__pyx_cur_scope->__pyx_v_interceptors);
  __Pyx_GIVEREF(__pyx_cur_scope->__pyx_v_interceptors);
  __pyx_cur_scope->__pyx_v_query_handler = __pyx_v_query_handler;
  __Pyx_INCREF(__pyx_cur_scope->__pyx_v_query_handler);
  __Pyx_GIVEREF(__pyx_cur_scope->__pyx_v_query_handler);
  __pyx_cur_scope->__pyx_v_handler_call_details = __pyx_v_handler_call_details;
  __Pyx_INCREF(__pyx_cur_scope->__pyx_v_handler_call_details);
  __Pyx_GIVEREF(__pyx_cur_scope->__pyx_v_handler_call_details);
  {
    __pyx_CoroutineObject *gen = __Pyx_Coroutine_New((__pyx_coroutine_body_t) __pyx_gb_4grpc_7_cython_6cygrpc_146generator24, __pyx_codeobj__181, (PyObject *) __pyx_cur_scope, __pyx_n_s_run_interceptor, __pyx_n_s_run_interceptor, __pyx_n_s_grpc__cython_cygrpc); if (unlikely(!gen)) __PYX_ERR(10, 333, __pyx_L1_error)
    __Pyx_DECREF(__pyx_cur_scope);
    __Pyx_RefNannyFinishContext();
    return (PyObject *) gen;
  }

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_AddTraceback("grpc._cython.cygrpc._run_interceptor", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __Pyx_DECREF(((PyObject *)__pyx_cur_scope));
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_gb_4grpc_7_cython_6cygrpc_146generator24(__pyx_CoroutineObject *__pyx_generator, CYTHON_UNUSED PyThreadState *__pyx_tstate, PyObject *__pyx_sent_value) /* generator body */
{
  struct __pyx_obj_4grpc_7_cython_6cygrpc___pyx_scope_struct_36__run_interceptor *__pyx_cur_scope = ((struct __pyx_obj_4grpc_7_cython_6cygrpc___pyx_scope_struct_36__run_interceptor *)__pyx_generator->closure);
  PyObject *__pyx_r = NULL;
  PyObject *__pyx_t_1 = NULL;
  int __pyx_t_2;
  PyObject *__pyx_t_3 = NULL;
  PyObject *__pyx_t_4 = NULL;
  PyObject *__pyx_t_5 = NULL;
  int __pyx_t_6;
  PyObject *__pyx_t_7 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("_run_interceptor", 0);
  switch (__pyx_generator->resume_label) {
    case 0: goto __pyx_L3_first_run;
    case 1: goto __pyx_L5_resume_from_await;
    default: /* CPython raises the right error here */
    __Pyx_RefNannyFinishContext();
    return NULL;
  }
  __pyx_L3_first_run:;
  if (unlikely(!__pyx_sent_value)) __PYX_ERR(10, 333, __pyx_L1_error)

  /* "src/python/grpcio/grpc/_cython/_cygrpc/aio/server.pyx.pxi":335
 * async def _run_interceptor(object interceptors, object query_handler,
 *                            object handler_call_details):
 *     interceptor = next(interceptors, None)             # <<<<<<<<<<<<<<
 *     if interceptor:
 *         continuation = functools.partial(_run_interceptor, interceptors,
 */
  __pyx_t_1 = __Pyx_PyIter_Next2(__pyx_cur_scope->__pyx_v_interceptors, Py_None); if (unlikely(!__pyx_t_1)) __PYX_ERR(10, 335, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_GIVEREF(__pyx_t_1);
  __pyx_cur_scope->__pyx_v_interceptor = __pyx_t_1;
  __pyx_t_1 = 0;

  /* "src/python/grpcio/grpc/_cython/_cygrpc/aio/server.pyx.pxi":336
 *                            object handler_call_details):
 *     interceptor = next(interceptors, None)
 *     if interceptor:             # <<<<<<<<<<<<<<
 *         continuation = functools.partial(_run_interceptor, interceptors,
 *                                          query_handler)
 */
  __pyx_t_2 = __Pyx_PyObject_IsTrue(__pyx_cur_scope->__pyx_v_interceptor); if (unlikely(__pyx_t_2 < 0)) __PYX_ERR(10, 336, __pyx_L1_error)
  if (__pyx_t_2) {

    /* "src/python/grpcio/grpc/_cython/_cygrpc/aio/server.pyx.pxi":337
 *     interceptor = next(interceptors, None)
 *     if interceptor:
 *         continuation = functools.partial(_run_interceptor, interceptors,             # <<<<<<<<<<<<<<
 *                                          query_handler)
 *         return await interceptor.intercept_service(continuation, handler_call_details)
 */
    __Pyx_GetModuleGlobalName(__pyx_t_3, __pyx_n_s_functools); if (unlikely(!__pyx_t_3)) __PYX_ERR(10, 337, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_3);
    __pyx_t_4 = __Pyx_PyObject_GetAttrStr(__pyx_t_3, __pyx_n_s_partial); if (unlikely(!__pyx_t_4)) __PYX_ERR(10, 337, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_4);
    __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
    __Pyx_GetModuleGlobalName(__pyx_t_3, __pyx_n_s_run_interceptor); if (unlikely(!__pyx_t_3)) __PYX_ERR(10, 337, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_3);

    /* "src/python/grpcio/grpc/_cython/_cygrpc/aio/server.pyx.pxi":338
 *     if interceptor:
 *         continuation = functools.partial(_run_interceptor, interceptors,
 *                                          query_handler)             # <<<<<<<<<<<<<<
 *         return await interceptor.intercept_service(continuation, handler_call_details)
 *     else:
 */
    __pyx_t_5 = NULL;
    __pyx_t_6 = 0;
    if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_4))) {
      __pyx_t_5 = PyMethod_GET_SELF(__pyx_t_4);
      if (likely(__pyx_t_5)) {
        PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_4);
        __Pyx_INCREF(__pyx_t_5);
        __Pyx_INCREF(function);
        __Pyx_DECREF_SET(__pyx_t_4, function);
        __pyx_t_6 = 1;
      }
    }
    #if CYTHON_FAST_PYCALL
    if (PyFunction_Check(__pyx_t_4)) {
      PyObject *__pyx_temp[4] = {__pyx_t_5, __pyx_t_3, __pyx_cur_scope->__pyx_v_interceptors, __pyx_cur_scope->__pyx_v_query_handler};
      __pyx_t_1 = __Pyx_PyFunction_FastCall(__pyx_t_4, __pyx_temp+1-__pyx_t_6, 3+__pyx_t_6); if (unlikely(!__pyx_t_1)) __PYX_ERR(10, 337, __pyx_L1_error)
      __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0;
      __Pyx_GOTREF(__pyx_t_1);
      __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
    } else
    #endif
    #if CYTHON_FAST_PYCCALL
    if (__Pyx_PyFastCFunction_Check(__pyx_t_4)) {
      PyObject *__pyx_temp[4] = {__pyx_t_5, __pyx_t_3, __pyx_cur_scope->__pyx_v_interceptors, __pyx_cur_scope->__pyx_v_query_handler};
      __pyx_t_1 = __Pyx_PyCFunction_FastCall(__pyx_t_4, __pyx_temp+1-__pyx_t_6, 3+__pyx_t_6); if (unlikely(!__pyx_t_1)) __PYX_ERR(10, 337, __pyx_L1_error)
      __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0;
      __Pyx_GOTREF(__pyx_t_1);
      __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
    } else
    #endif
    {
      __pyx_t_7 = PyTuple_New(3+__pyx_t_6); if (unlikely(!__pyx_t_7)) __PYX_ERR(10, 337, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_7);
      if (__pyx_t_5) {
        __Pyx_GIVEREF(__pyx_t_5); PyTuple_SET_ITEM(__pyx_t_7, 0, __pyx_t_5); __pyx_t_5 = NULL;
      }
      __Pyx_GIVEREF(__pyx_t_3);
      PyTuple_SET_ITEM(__pyx_t_7, 0+__pyx_t_6, __pyx_t_3);
      __Pyx_INCREF(__pyx_cur_scope->__pyx_v_interceptors);
      __Pyx_GIVEREF(__pyx_cur_scope->__pyx_v_interceptors);
      PyTuple_SET_ITEM(__pyx_t_7, 1+__pyx_t_6, __pyx_cur_scope->__pyx_v_interceptors);
      __Pyx_INCREF(__pyx_cur_scope->__pyx_v_query_handler);
      __Pyx_GIVEREF(__pyx_cur_scope->__pyx_v_query_handler);
      PyTuple_SET_ITEM(__pyx_t_7, 2+__pyx_t_6, __pyx_cur_scope->__pyx_v_query_handler);
      __pyx_t_3 = 0;
      __pyx_t_1 = __Pyx_PyObject_Call(__pyx_t_4, __pyx_t_7, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(10, 337, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_1);
      __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
    }
    __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
    __Pyx_GIVEREF(__pyx_t_1);
    __pyx_cur_scope->__pyx_v_continuation = __pyx_t_1;
    __pyx_t_1 = 0;

    /* "src/python/grpcio/grpc/_cython/_cygrpc/aio/server.pyx.pxi":339
 *         continuation = functools.partial(_run_interceptor, interceptors,
 *                                          query_handler)
 *         return await interceptor.intercept_service(continuation, handler_call_details)             # <<<<<<<<<<<<<<
 *     else:
 *         return query_handler(handler_call_details)
 */
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_4 = __Pyx_PyObject_GetAttrStr(__pyx_cur_scope->__pyx_v_interceptor, __pyx_n_s_intercept_service); if (unlikely(!__pyx_t_4)) __PYX_ERR(10, 339, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_4);
    __pyx_t_7 = NULL;
    __pyx_t_6 = 0;
    if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_4))) {
      __pyx_t_7 = PyMethod_GET_SELF(__pyx_t_4);
      if (likely(__pyx_t_7)) {
        PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_4);
        __Pyx_INCREF(__pyx_t_7);
        __Pyx_INCREF(function);
        __Pyx_DECREF_SET(__pyx_t_4, function);
        __pyx_t_6 = 1;
      }
    }
    #if CYTHON_FAST_PYCALL
    if (PyFunction_Check(__pyx_t_4)) {
      PyObject *__pyx_temp[3] = {__pyx_t_7, __pyx_cur_scope->__pyx_v_continuation, __pyx_cur_scope->__pyx_v_handler_call_details};
      __pyx_t_1 = __Pyx_PyFunction_FastCall(__pyx_t_4, __pyx_temp+1-__pyx_t_6, 2+__pyx_t_6); if (unlikely(!__pyx_t_1)) __PYX_ERR(10, 339, __pyx_L1_error)
      __Pyx_XDECREF(__pyx_t_7); __pyx_t_7 = 0;
      __Pyx_GOTREF(__pyx_t_1);
    } else
    #endif
    #if CYTHON_FAST_PYCCALL
    if (__Pyx_PyFastCFunction_Check(__pyx_t_4)) {
      PyObject *__pyx_temp[3] = {__pyx_t_7, __pyx_cur_scope->__pyx_v_continuation, __pyx_cur_scope->__pyx_v_handler_call_details};
      __pyx_t_1 = __Pyx_PyCFunction_FastCall(__pyx_t_4, __pyx_temp+1-__pyx_t_6, 2+__pyx_t_6); if (unlikely(!__pyx_t_1)) __PYX_ERR(10, 339, __pyx_L1_error)
      __Pyx_XDECREF(__pyx_t_7); __pyx_t_7 = 0;
      __Pyx_GOTREF(__pyx_t_1);
    } else
    #endif
    {
      __pyx_t_3 = PyTuple_New(2+__pyx_t_6); if (unlikely(!__pyx_t_3)) __PYX_ERR(10, 339, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_3);
      if (__pyx_t_7) {
        __Pyx_GIVEREF(__pyx_t_7); PyTuple_SET_ITEM(__pyx_t_3, 0, __pyx_t_7); __pyx_t_7 = NULL;
      }
      __Pyx_INCREF(__pyx_cur_scope->__pyx_v_continuation);
      __Pyx_GIVEREF(__pyx_cur_scope->__pyx_v_continuation);
      PyTuple_SET_ITEM(__pyx_t_3, 0+__pyx_t_6, __pyx_cur_scope->__pyx_v_continuation);
      __Pyx_INCREF(__pyx_cur_scope->__pyx_v_handler_call_details);
      __Pyx_GIVEREF(__pyx_cur_scope->__pyx_v_handler_call_details);
      PyTuple_SET_ITEM(__pyx_t_3, 1+__pyx_t_6, __pyx_cur_scope->__pyx_v_handler_call_details);
      __pyx_t_1 = __Pyx_PyObject_Call(__pyx_t_4, __pyx_t_3, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(10, 339, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_1);
      __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
    }
    __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
    __pyx_r = __Pyx_Coroutine_Yield_From(__pyx_generator, __pyx_t_1);
    __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
    __Pyx_XGOTREF(__pyx_r);
    if (likely(__pyx_r)) {
      __Pyx_XGIVEREF(__pyx_r);
      __Pyx_RefNannyFinishContext();
      __Pyx_Coroutine_ResetAndClearException(__pyx_generator);
      /* return from generator, awaiting value */
      __pyx_generator->resume_label = 1;
      return __pyx_r;
      __pyx_L5_resume_from_await:;
      if (unlikely(!__pyx_sent_value)) __PYX_ERR(10, 339, __pyx_L1_error)
      __pyx_t_1 = __pyx_sent_value; __Pyx_INCREF(__pyx_t_1);
    } else {
      __pyx_t_1 = NULL;
      if (__Pyx_PyGen_FetchStopIterationValue(&__pyx_t_1) < 0) __PYX_ERR(10, 339, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_1);
    }
    __pyx_r = NULL; __Pyx_ReturnWithStopIteration(__pyx_t_1);
    __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
    goto __pyx_L0;

    /* "src/python/grpcio/grpc/_cython/_cygrpc/aio/server.pyx.pxi":336
 *                            object handler_call_details):
 *     interceptor = next(interceptors, None)
 *     if interceptor:             # <<<<<<<<<<<<<<
 *         continuation = functools.partial(_run_interceptor, interceptors,
 *                                          query_handler)
 */
  }

  /* "src/python/grpcio/grpc/_cython/_cygrpc/aio/server.pyx.pxi":341
 *         return await interceptor.intercept_service(continuation, handler_call_details)
 *     else:
 *         return query_handler(handler_call_details)             # <<<<<<<<<<<<<<
 * 
 * 
 */
  /*else*/ {
    __Pyx_XDECREF(__pyx_r);
    __Pyx_INCREF(__pyx_cur_scope->__pyx_v_query_handler);
    __pyx_t_4 = __pyx_cur_scope->__pyx_v_query_handler; __pyx_t_3 = NULL;
    if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_4))) {
      __pyx_t_3 = PyMethod_GET_SELF(__pyx_t_4);
      if (likely(__pyx_t_3)) {
        PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_4);
        __Pyx_INCREF(__pyx_t_3);
        __Pyx_INCREF(function);
        __Pyx_DECREF_SET(__pyx_t_4, function);
      }
    }
    __pyx_t_1 = (__pyx_t_3) ? __Pyx_PyObject_Call2Args(__pyx_t_4, __pyx_t_3, __pyx_cur_scope->__pyx_v_handler_call_details) : __Pyx_PyObject_CallOneArg(__pyx_t_4, __pyx_cur_scope->__pyx_v_handler_call_details);
    __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0;
    if (unlikely(!__pyx_t_1)) __PYX_ERR(10, 341, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_1);
    __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
    __pyx_r = NULL; __Pyx_ReturnWithStopIteration(__pyx_t_1);
    __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
    goto __pyx_L0;
  }
  CYTHON_MAYBE_UNUSED_VAR(__pyx_cur_scope);

  /* "src/python/grpcio/grpc/_cython/_cygrpc/aio/server.pyx.pxi":333
 * 
 * 
 * async def _run_interceptor(object interceptors, object query_handler,             # <<<<<<<<<<<<<<
 *                            object handler_call_details):
 *     interceptor = next(interceptors, None)
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_XDECREF(__pyx_t_3);
  __Pyx_XDECREF(__pyx_t_4);
  __Pyx_XDECREF(__pyx_t_5);
  __Pyx_XDECREF(__pyx_t_7);
  __Pyx_AddTraceback("_run_interceptor", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_L0:;
  __Pyx_XDECREF(__pyx_r); __pyx_r = 0;
  #if !CYTHON_USE_EXC_INFO_STACK
  __Pyx_Coroutine_ResetAndClearException(__pyx_generator);
  #endif
  __pyx_generator->resume_label = -1;
  __Pyx_Coroutine_clear((PyObject*)__pyx_generator);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "src/python/grpcio/grpc/_cython/_cygrpc/aio/server.pyx.pxi":344
 * 
 * 
 * def _is_async_handler(object handler):             # <<<<<<<<<<<<<<
 *     """Inspect if a method handler is async or sync."""
 *     return inspect.isawaitable(handler) or inspect.iscoroutinefunction(handler) or inspect.isasyncgenfunction(handler)
 */

/* Python wrapper */
static PyObject *__pyx_pw_4grpc_7_cython_6cygrpc_148_is_async_handler(PyObject *__pyx_self, PyObject *__pyx_v_handler); /*proto*/
static char __pyx_doc_4grpc_7_cython_6cygrpc_147_is_async_handler[] = "Inspect if a method handler is async or sync.";
static PyMethodDef __pyx_mdef_4grpc_7_cython_6cygrpc_148_is_async_handler = {"_is_async_handler", (PyCFunction)__pyx_pw_4grpc_7_cython_6cygrpc_148_is_async_handler, METH_O, __pyx_doc_4grpc_7_cython_6cygrpc_147_is_async_handler};
static PyObject *__pyx_pw_4grpc_7_cython_6cygrpc_148_is_async_handler(PyObject *__pyx_self, PyObject *__pyx_v_handler) {
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("_is_async_handler (wrapper)", 0);
  __pyx_r = __pyx_pf_4grpc_7_cython_6cygrpc_147_is_async_handler(__pyx_self, ((PyObject *)__pyx_v_handler));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_4grpc_7_cython_6cygrpc_147_is_async_handler(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__pyx_v_handler) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  PyObject *__pyx_t_2 = NULL;
  PyObject *__pyx_t_3 = NULL;
  PyObject *__pyx_t_4 = NULL;
  int __pyx_t_5;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("_is_async_handler", 0);

  /* "src/python/grpcio/grpc/_cython/_cygrpc/aio/server.pyx.pxi":346
 * def _is_async_handler(object handler):
 *     """Inspect if a method handler is async or sync."""
 *     return inspect.isawaitable(handler) or inspect.iscoroutinefunction(handler) or inspect.isasyncgenfunction(handler)             # <<<<<<<<<<<<<<
 * 
 * 
 */
  __Pyx_XDECREF(__pyx_r);
  __Pyx_GetModuleGlobalName(__pyx_t_3, __pyx_n_s_inspect); if (unlikely(!__pyx_t_3)) __PYX_ERR(10, 346, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  __pyx_t_4 = __Pyx_PyObject_GetAttrStr(__pyx_t_3, __pyx_n_s_isawaitable); if (unlikely(!__pyx_t_4)) __PYX_ERR(10, 346, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_4);
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
  __pyx_t_3 = NULL;
  if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_4))) {
    __pyx_t_3 = PyMethod_GET_SELF(__pyx_t_4);
    if (likely(__pyx_t_3)) {
      PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_4);
      __Pyx_INCREF(__pyx_t_3);
      __Pyx_INCREF(function);
      __Pyx_DECREF_SET(__pyx_t_4, function);
    }
  }
  __pyx_t_2 = (__pyx_t_3) ? __Pyx_PyObject_Call2Args(__pyx_t_4, __pyx_t_3, __pyx_v_handler) : __Pyx_PyObject_CallOneArg(__pyx_t_4, __pyx_v_handler);
  __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0;
  if (unlikely(!__pyx_t_2)) __PYX_ERR(10, 346, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
  __pyx_t_5 = __Pyx_PyObject_IsTrue(__pyx_t_2); if (unlikely(__pyx_t_5 < 0)) __PYX_ERR(10, 346, __pyx_L1_error)
  if (!__pyx_t_5) {
    __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  } else {
    __Pyx_INCREF(__pyx_t_2);
    __pyx_t_1 = __pyx_t_2;
    __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
    goto __pyx_L3_bool_binop_done;
  }
  __Pyx_GetModuleGlobalName(__pyx_t_4, __pyx_n_s_inspect); if (unlikely(!__pyx_t_4)) __PYX_ERR(10, 346, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_4);
  __pyx_t_3 = __Pyx_PyObject_GetAttrStr(__pyx_t_4, __pyx_n_s_iscoroutinefunction); if (unlikely(!__pyx_t_3)) __PYX_ERR(10, 346, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
  __pyx_t_4 = NULL;
  if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_3))) {
    __pyx_t_4 = PyMethod_GET_SELF(__pyx_t_3);
    if (likely(__pyx_t_4)) {
      PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_3);
      __Pyx_INCREF(__pyx_t_4);
      __Pyx_INCREF(function);
      __Pyx_DECREF_SET(__pyx_t_3, function);
    }
  }
  __pyx_t_2 = (__pyx_t_4) ? __Pyx_PyObject_Call2Args(__pyx_t_3, __pyx_t_4, __pyx_v_handler) : __Pyx_PyObject_CallOneArg(__pyx_t_3, __pyx_v_handler);
  __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0;
  if (unlikely(!__pyx_t_2)) __PYX_ERR(10, 346, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
  __pyx_t_5 = __Pyx_PyObject_IsTrue(__pyx_t_2); if (unlikely(__pyx_t_5 < 0)) __PYX_ERR(10, 346, __pyx_L1_error)
  if (!__pyx_t_5) {
    __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  } else {
    __Pyx_INCREF(__pyx_t_2);
    __pyx_t_1 = __pyx_t_2;
    __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
    goto __pyx_L3_bool_binop_done;
  }
  __Pyx_GetModuleGlobalName(__pyx_t_3, __pyx_n_s_inspect); if (unlikely(!__pyx_t_3)) __PYX_ERR(10, 346, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  __pyx_t_4 = __Pyx_PyObject_GetAttrStr(__pyx_t_3, __pyx_n_s_isasyncgenfunction); if (unlikely(!__pyx_t_4)) __PYX_ERR(10, 346, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_4);
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
  __pyx_t_3 = NULL;
  if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_4))) {
    __pyx_t_3 = PyMethod_GET_SELF(__pyx_t_4);
    if (likely(__pyx_t_3)) {
      PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_4);
      __Pyx_INCREF(__pyx_t_3);
      __Pyx_INCREF(function);
      __Pyx_DECREF_SET(__pyx_t_4, function);
    }
  }
  __pyx_t_2 = (__pyx_t_3) ? __Pyx_PyObject_Call2Args(__pyx_t_4, __pyx_t_3, __pyx_v_handler) : __Pyx_PyObject_CallOneArg(__pyx_t_4, __pyx_v_handler);
  __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0;
  if (unlikely(!__pyx_t_2)) __PYX_ERR(10, 346, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
  __Pyx_INCREF(__pyx_t_2);
  __pyx_t_1 = __pyx_t_2;
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  __pyx_L3_bool_binop_done:;
  __pyx_r = __pyx_t_1;
  __pyx_t_1 = 0;
  goto __pyx_L0;

  /* "src/python/grpcio/grpc/_cython/_cygrpc/aio/server.pyx.pxi":344
 * 
 * 
 * def _is_async_handler(object handler):             # <<<<<<<<<<<<<<
 *     """Inspect if a method handler is async or sync."""
 *     return inspect.isawaitable(handler) or inspect.iscoroutinefunction(handler) or inspect.isasyncgenfunction(handler)
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_XDECREF(__pyx_t_3);
  __Pyx_XDECREF(__pyx_t_4);
  __Pyx_AddTraceback("grpc._cython.cygrpc._is_async_handler", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}
static PyObject *__pyx_gb_4grpc_7_cython_6cygrpc_151generator25(__pyx_CoroutineObject *__pyx_generator, CYTHON_UNUSED PyThreadState *__pyx_tstate, PyObject *__pyx_sent_value); /* proto */

/* "src/python/grpcio/grpc/_cython/_cygrpc/aio/server.pyx.pxi":349
 * 
 * 
 * async def _find_method_handler(str method, tuple metadata, list generic_handlers,             # <<<<<<<<<<<<<<
 *                           tuple interceptors):
 *     def query_handlers(handler_call_details):
 */

/* Python wrapper */
static PyObject *__pyx_pw_4grpc_7_cython_6cygrpc_150_find_method_handler(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
static PyMethodDef __pyx_mdef_4grpc_7_cython_6cygrpc_150_find_method_handler = {"_find_method_handler", (PyCFunction)(void*)(PyCFunctionWithKeywords)__pyx_pw_4grpc_7_cython_6cygrpc_150_find_method_handler, METH_VARARGS|METH_KEYWORDS, 0};
static PyObject *__pyx_pw_4grpc_7_cython_6cygrpc_150_find_method_handler(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
  PyObject *__pyx_v_method = 0;
  PyObject *__pyx_v_metadata = 0;
  PyObject *__pyx_v_generic_handlers = 0;
  PyObject *__pyx_v_interceptors = 0;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("_find_method_handler (wrapper)", 0);
  {
    static PyObject **__pyx_pyargnames[] = {&__pyx_n_s_method,&__pyx_n_s_metadata,&__pyx_n_s_generic_handlers,&__pyx_n_s_interceptors,0};
    PyObject* values[4] = {0,0,0,0};
    if (unlikely(__pyx_kwds)) {
      Py_ssize_t kw_args;
      const Py_ssize_t pos_args = PyTuple_GET_SIZE(__pyx_args);
      switch (pos_args) {
        case  4: values[3] = PyTuple_GET_ITEM(__pyx_args, 3);
        CYTHON_FALLTHROUGH;
        case  3: values[2] = PyTuple_GET_ITEM(__pyx_args, 2);
        CYTHON_FALLTHROUGH;
        case  2: values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
        CYTHON_FALLTHROUGH;
        case  1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
        CYTHON_FALLTHROUGH;
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      kw_args = PyDict_Size(__pyx_kwds);
      switch (pos_args) {
        case  0:
        if (likely((values[0] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_method)) != 0)) kw_args--;
        else goto __pyx_L5_argtuple_error;
        CYTHON_FALLTHROUGH;
        case  1:
        if (likely((values[1] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_metadata)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("_find_method_handler", 1, 4, 4, 1); __PYX_ERR(10, 349, __pyx_L3_error)
        }
        CYTHON_FALLTHROUGH;
        case  2:
        if (likely((values[2] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_generic_handlers)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("_find_method_handler", 1, 4, 4, 2); __PYX_ERR(10, 349, __pyx_L3_error)
        }
        CYTHON_FALLTHROUGH;
        case  3:
        if (likely((values[3] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_interceptors)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("_find_method_handler", 1, 4, 4, 3); __PYX_ERR(10, 349, __pyx_L3_error)
        }
      }
      if (unlikely(kw_args > 0)) {
        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "_find_method_handler") < 0)) __PYX_ERR(10, 349, __pyx_L3_error)
      }
    } else if (PyTuple_GET_SIZE(__pyx_args) != 4) {
      goto __pyx_L5_argtuple_error;
    } else {
      values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
      values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
      values[2] = PyTuple_GET_ITEM(__pyx_args, 2);
      values[3] = PyTuple_GET_ITEM(__pyx_args, 3);
    }
    __pyx_v_method = ((PyObject*)values[0]);
    __pyx_v_metadata = ((PyObject*)values[1]);
    __pyx_v_generic_handlers = ((PyObject*)values[2]);
    __pyx_v_interceptors = ((PyObject*)values[3]);
  }
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("_find_method_handler", 1, 4, 4, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(10, 349, __pyx_L3_error)
  __pyx_L3_error:;
  __Pyx_AddTraceback("grpc._cython.cygrpc._find_method_handler", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_method), (&PyString_Type), 1, "method", 1))) __PYX_ERR(10, 349, __pyx_L1_error)
  if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_metadata), (&PyTuple_Type), 1, "metadata", 1))) __PYX_ERR(10, 349, __pyx_L1_error)
  if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_generic_handlers), (&PyList_Type), 1, "generic_handlers", 1))) __PYX_ERR(10, 349, __pyx_L1_error)
  if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_interceptors), (&PyTuple_Type), 1, "interceptors", 1))) __PYX_ERR(10, 350, __pyx_L1_error)
  __pyx_r = __pyx_pf_4grpc_7_cython_6cygrpc_149_find_method_handler(__pyx_self, __pyx_v_method, __pyx_v_metadata, __pyx_v_generic_handlers, __pyx_v_interceptors);

  /* function exit code */
  goto __pyx_L0;
  __pyx_L1_error:;
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_4grpc_7_cython_6cygrpc_149_find_method_handler(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__pyx_v_method, PyObject *__pyx_v_metadata, PyObject *__pyx_v_generic_handlers, PyObject *__pyx_v_interceptors) {
  struct __pyx_obj_4grpc_7_cython_6cygrpc___pyx_scope_struct_37__find_method_handler *__pyx_cur_scope;
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("_find_method_handler", 0);
  __pyx_cur_scope = (struct __pyx_obj_4grpc_7_cython_6cygrpc___pyx_scope_struct_37__find_method_handler *)__pyx_tp_new_4grpc_7_cython_6cygrpc___pyx_scope_struct_37__find_method_handler(__pyx_ptype_4grpc_7_cython_6cygrpc___pyx_scope_struct_37__find_method_handler, __pyx_empty_tuple, NULL);
  if (unlikely(!__pyx_cur_scope)) {
    __pyx_cur_scope = ((struct __pyx_obj_4grpc_7_cython_6cygrpc___pyx_scope_struct_37__find_method_handler *)Py_None);
    __Pyx_INCREF(Py_None);
    __PYX_ERR(10, 349, __pyx_L1_error)
  } else {
    __Pyx_GOTREF(__pyx_cur_scope);
  }
  __pyx_cur_scope->__pyx_v_method = __pyx_v_method;
  __Pyx_INCREF(__pyx_cur_scope->__pyx_v_method);
  __Pyx_GIVEREF(__pyx_cur_scope->__pyx_v_method);
  __pyx_cur_scope->__pyx_v_metadata = __pyx_v_metadata;
  __Pyx_INCREF(__pyx_cur_scope->__pyx_v_metadata);
  __Pyx_GIVEREF(__pyx_cur_scope->__pyx_v_metadata);
  __pyx_cur_scope->__pyx_v_generic_handlers = __pyx_v_generic_handlers;
  __Pyx_INCREF(__pyx_cur_scope->__pyx_v_generic_handlers);
  __Pyx_GIVEREF(__pyx_cur_scope->__pyx_v_generic_handlers);
  __pyx_cur_scope->__pyx_v_interceptors = __pyx_v_interceptors;
  __Pyx_INCREF(__pyx_cur_scope->__pyx_v_interceptors);
  __Pyx_GIVEREF(__pyx_cur_scope->__pyx_v_interceptors);
  {
    __pyx_CoroutineObject *gen = __Pyx_Coroutine_New((__pyx_coroutine_body_t) __pyx_gb_4grpc_7_cython_6cygrpc_151generator25, __pyx_codeobj__182, (PyObject *) __pyx_cur_scope, __pyx_n_s_find_method_handler, __pyx_n_s_find_method_handler, __pyx_n_s_grpc__cython_cygrpc); if (unlikely(!gen)) __PYX_ERR(10, 349, __pyx_L1_error)
    __Pyx_DECREF(__pyx_cur_scope);
    __Pyx_RefNannyFinishContext();
    return (PyObject *) gen;
  }

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_AddTraceback("grpc._cython.cygrpc._find_method_handler", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __Pyx_DECREF(((PyObject *)__pyx_cur_scope));
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "src/python/grpcio/grpc/_cython/_cygrpc/aio/server.pyx.pxi":351
 * async def _find_method_handler(str method, tuple metadata, list generic_handlers,
 *                           tuple interceptors):
 *     def query_handlers(handler_call_details):             # <<<<<<<<<<<<<<
 *         for generic_handler in generic_handlers:
 *             method_handler = generic_handler.service(handler_call_details)
 */

/* Python wrapper */
static PyObject *__pyx_pw_4grpc_7_cython_6cygrpc_20_find_method_handler_1query_handlers(PyObject *__pyx_self, PyObject *__pyx_v_handler_call_details); /*proto*/
static PyMethodDef __pyx_mdef_4grpc_7_cython_6cygrpc_20_find_method_handler_1query_handlers = {"query_handlers", (PyCFunction)__pyx_pw_4grpc_7_cython_6cygrpc_20_find_method_handler_1query_handlers, METH_O, 0};
static PyObject *__pyx_pw_4grpc_7_cython_6cygrpc_20_find_method_handler_1query_handlers(PyObject *__pyx_self, PyObject *__pyx_v_handler_call_details) {
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("query_handlers (wrapper)", 0);
  __pyx_r = __pyx_pf_4grpc_7_cython_6cygrpc_20_find_method_handler_query_handlers(__pyx_self, ((PyObject *)__pyx_v_handler_call_details));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_4grpc_7_cython_6cygrpc_20_find_method_handler_query_handlers(PyObject *__pyx_self, PyObject *__pyx_v_handler_call_details) {
  struct __pyx_obj_4grpc_7_cython_6cygrpc___pyx_scope_struct_37__find_method_handler *__pyx_cur_scope;
  struct __pyx_obj_4grpc_7_cython_6cygrpc___pyx_scope_struct_37__find_method_handler *__pyx_outer_scope;
  PyObject *__pyx_v_generic_handler = NULL;
  PyObject *__pyx_v_method_handler = NULL;
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  Py_ssize_t __pyx_t_2;
  PyObject *__pyx_t_3 = NULL;
  PyObject *__pyx_t_4 = NULL;
  PyObject *__pyx_t_5 = NULL;
  int __pyx_t_6;
  int __pyx_t_7;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("query_handlers", 0);
  __pyx_outer_scope = (struct __pyx_obj_4grpc_7_cython_6cygrpc___pyx_scope_struct_37__find_method_handler *) __Pyx_CyFunction_GetClosure(__pyx_self);
  __pyx_cur_scope = __pyx_outer_scope;

  /* "src/python/grpcio/grpc/_cython/_cygrpc/aio/server.pyx.pxi":352
 *                           tuple interceptors):
 *     def query_handlers(handler_call_details):
 *         for generic_handler in generic_handlers:             # <<<<<<<<<<<<<<
 *             method_handler = generic_handler.service(handler_call_details)
 *             if method_handler is not None:
 */
  if (unlikely(!__pyx_cur_scope->__pyx_v_generic_handlers)) { __Pyx_RaiseClosureNameError("generic_handlers"); __PYX_ERR(10, 352, __pyx_L1_error) }
  if (unlikely(__pyx_cur_scope->__pyx_v_generic_handlers == Py_None)) {
    PyErr_SetString(PyExc_TypeError, "'NoneType' object is not iterable");
    __PYX_ERR(10, 352, __pyx_L1_error)
  }
  __pyx_t_1 = __pyx_cur_scope->__pyx_v_generic_handlers; __Pyx_INCREF(__pyx_t_1); __pyx_t_2 = 0;
  for (;;) {
    if (__pyx_t_2 >= PyList_GET_SIZE(__pyx_t_1)) break;
    #if CYTHON_ASSUME_SAFE_MACROS && !CYTHON_AVOID_BORROWED_REFS
    __pyx_t_3 = PyList_GET_ITEM(__pyx_t_1, __pyx_t_2); __Pyx_INCREF(__pyx_t_3); __pyx_t_2++; if (unlikely(0 < 0)) __PYX_ERR(10, 352, __pyx_L1_error)
    #else
    __pyx_t_3 = PySequence_ITEM(__pyx_t_1, __pyx_t_2); __pyx_t_2++; if (unlikely(!__pyx_t_3)) __PYX_ERR(10, 352, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_3);
    #endif
    __Pyx_XDECREF_SET(__pyx_v_generic_handler, __pyx_t_3);
    __pyx_t_3 = 0;

    /* "src/python/grpcio/grpc/_cython/_cygrpc/aio/server.pyx.pxi":353
 *     def query_handlers(handler_call_details):
 *         for generic_handler in generic_handlers:
 *             method_handler = generic_handler.service(handler_call_details)             # <<<<<<<<<<<<<<
 *             if method_handler is not None:
 *                 return method_handler
 */
    __pyx_t_4 = __Pyx_PyObject_GetAttrStr(__pyx_v_generic_handler, __pyx_n_s_service); if (unlikely(!__pyx_t_4)) __PYX_ERR(10, 353, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_4);
    __pyx_t_5 = NULL;
    if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_4))) {
      __pyx_t_5 = PyMethod_GET_SELF(__pyx_t_4);
      if (likely(__pyx_t_5)) {
        PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_4);
        __Pyx_INCREF(__pyx_t_5);
        __Pyx_INCREF(function);
        __Pyx_DECREF_SET(__pyx_t_4, function);
      }
    }
    __pyx_t_3 = (__pyx_t_5) ? __Pyx_PyObject_Call2Args(__pyx_t_4, __pyx_t_5, __pyx_v_handler_call_details) : __Pyx_PyObject_CallOneArg(__pyx_t_4, __pyx_v_handler_call_details);
    __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0;
    if (unlikely(!__pyx_t_3)) __PYX_ERR(10, 353, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_3);
    __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
    __Pyx_XDECREF_SET(__pyx_v_method_handler, __pyx_t_3);
    __pyx_t_3 = 0;

    /* "src/python/grpcio/grpc/_cython/_cygrpc/aio/server.pyx.pxi":354
 *         for generic_handler in generic_handlers:
 *             method_handler = generic_handler.service(handler_call_details)
 *             if method_handler is not None:             # <<<<<<<<<<<<<<
 *                 return method_handler
 *         return None
 */
    __pyx_t_6 = (__pyx_v_method_handler != Py_None);
    __pyx_t_7 = (__pyx_t_6 != 0);
    if (__pyx_t_7) {

      /* "src/python/grpcio/grpc/_cython/_cygrpc/aio/server.pyx.pxi":355
 *             method_handler = generic_handler.service(handler_call_details)
 *             if method_handler is not None:
 *                 return method_handler             # <<<<<<<<<<<<<<
 *         return None
 * 
 */
      __Pyx_XDECREF(__pyx_r);
      __Pyx_INCREF(__pyx_v_method_handler);
      __pyx_r = __pyx_v_method_handler;
      __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
      goto __pyx_L0;

      /* "src/python/grpcio/grpc/_cython/_cygrpc/aio/server.pyx.pxi":354
 *         for generic_handler in generic_handlers:
 *             method_handler = generic_handler.service(handler_call_details)
 *             if method_handler is not None:             # <<<<<<<<<<<<<<
 *                 return method_handler
 *         return None
 */
    }

    /* "src/python/grpcio/grpc/_cython/_cygrpc/aio/server.pyx.pxi":352
 *                           tuple interceptors):
 *     def query_handlers(handler_call_details):
 *         for generic_handler in generic_handlers:             # <<<<<<<<<<<<<<
 *             method_handler = generic_handler.service(handler_call_details)
 *             if method_handler is not None:
 */
  }
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;

  /* "src/python/grpcio/grpc/_cython/_cygrpc/aio/server.pyx.pxi":356
 *             if method_handler is not None:
 *                 return method_handler
 *         return None             # <<<<<<<<<<<<<<
 * 
 *     cdef _HandlerCallDetails handler_call_details = _HandlerCallDetails(method,
 */
  __Pyx_XDECREF(__pyx_r);
  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
  goto __pyx_L0;

  /* "src/python/grpcio/grpc/_cython/_cygrpc/aio/server.pyx.pxi":351
 * async def _find_method_handler(str method, tuple metadata, list generic_handlers,
 *                           tuple interceptors):
 *     def query_handlers(handler_call_details):             # <<<<<<<<<<<<<<
 *         for generic_handler in generic_handlers:
 *             method_handler = generic_handler.service(handler_call_details)
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_XDECREF(__pyx_t_3);
  __Pyx_XDECREF(__pyx_t_4);
  __Pyx_XDECREF(__pyx_t_5);
  __Pyx_AddTraceback("grpc._cython.cygrpc._find_method_handler.query_handlers", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XDECREF(__pyx_v_generic_handler);
  __Pyx_XDECREF(__pyx_v_method_handler);
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "src/python/grpcio/grpc/_cython/_cygrpc/aio/server.pyx.pxi":349
 * 
 * 
 * async def _find_method_handler(str method, tuple metadata, list generic_handlers,             # <<<<<<<<<<<<<<
 *                           tuple interceptors):
 *     def query_handlers(handler_call_details):
 */

static PyObject *__pyx_gb_4grpc_7_cython_6cygrpc_151generator25(__pyx_CoroutineObject *__pyx_generator, CYTHON_UNUSED PyThreadState *__pyx_tstate, PyObject *__pyx_sent_value) /* generator body */
{
  struct __pyx_obj_4grpc_7_cython_6cygrpc___pyx_scope_struct_37__find_method_handler *__pyx_cur_scope = ((struct __pyx_obj_4grpc_7_cython_6cygrpc___pyx_scope_struct_37__find_method_handler *)__pyx_generator->closure);
  PyObject *__pyx_r = NULL;
  PyObject *__pyx_t_1 = NULL;
  PyObject *__pyx_t_2 = NULL;
  int __pyx_t_3;
  PyObject *__pyx_t_4 = NULL;
  PyObject *__pyx_t_5 = NULL;
  int __pyx_t_6;
  PyObject *__pyx_t_7 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("_find_method_handler", 0);
  switch (__pyx_generator->resume_label) {
    case 0: goto __pyx_L3_first_run;
    case 1: goto __pyx_L5_resume_from_await;
    default: /* CPython raises the right error here */
    __Pyx_RefNannyFinishContext();
    return NULL;
  }
  __pyx_L3_first_run:;
  if (unlikely(!__pyx_sent_value)) __PYX_ERR(10, 349, __pyx_L1_error)

  /* "src/python/grpcio/grpc/_cython/_cygrpc/aio/server.pyx.pxi":351
 * async def _find_method_handler(str method, tuple metadata, list generic_handlers,
 *                           tuple interceptors):
 *     def query_handlers(handler_call_details):             # <<<<<<<<<<<<<<
 *         for generic_handler in generic_handlers:
 *             method_handler = generic_handler.service(handler_call_details)
 */
  __pyx_t_1 = __Pyx_CyFunction_New(&__pyx_mdef_4grpc_7_cython_6cygrpc_20_find_method_handler_1query_handlers, 0, __pyx_n_s_find_method_handler_locals_quer, ((PyObject*)__pyx_cur_scope), __pyx_n_s_grpc__cython_cygrpc, __pyx_d, ((PyObject *)__pyx_codeobj__184)); if (unlikely(!__pyx_t_1)) __PYX_ERR(10, 351, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_GIVEREF(__pyx_t_1);
  __pyx_cur_scope->__pyx_v_query_handlers = __pyx_t_1;
  __pyx_t_1 = 0;

  /* "src/python/grpcio/grpc/_cython/_cygrpc/aio/server.pyx.pxi":358
 *         return None
 * 
 *     cdef _HandlerCallDetails handler_call_details = _HandlerCallDetails(method,             # <<<<<<<<<<<<<<
 *                                                                         metadata)
 *     # interceptor
 */
  __pyx_t_1 = PyTuple_New(2); if (unlikely(!__pyx_t_1)) __PYX_ERR(10, 358, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_INCREF(__pyx_cur_scope->__pyx_v_method);
  __Pyx_GIVEREF(__pyx_cur_scope->__pyx_v_method);
  PyTuple_SET_ITEM(__pyx_t_1, 0, __pyx_cur_scope->__pyx_v_method);
  __Pyx_INCREF(__pyx_cur_scope->__pyx_v_metadata);
  __Pyx_GIVEREF(__pyx_cur_scope->__pyx_v_metadata);
  PyTuple_SET_ITEM(__pyx_t_1, 1, __pyx_cur_scope->__pyx_v_metadata);
  __pyx_t_2 = __Pyx_PyObject_Call(((PyObject *)__pyx_ptype_4grpc_7_cython_6cygrpc__HandlerCallDetails), __pyx_t_1, NULL); if (unlikely(!__pyx_t_2)) __PYX_ERR(10, 358, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  __Pyx_GIVEREF(__pyx_t_2);
  __pyx_cur_scope->__pyx_v_handler_call_details = ((struct __pyx_obj_4grpc_7_cython_6cygrpc__HandlerCallDetails *)__pyx_t_2);
  __pyx_t_2 = 0;

  /* "src/python/grpcio/grpc/_cython/_cygrpc/aio/server.pyx.pxi":361
 *                                                                         metadata)
 *     # interceptor
 *     if interceptors:             # <<<<<<<<<<<<<<
 *         return await _run_interceptor(iter(interceptors), query_handlers,
 *                                       handler_call_details)
 */
  __pyx_t_3 = (__pyx_cur_scope->__pyx_v_interceptors != Py_None)&&(PyTuple_GET_SIZE(__pyx_cur_scope->__pyx_v_interceptors) != 0);
  if (__pyx_t_3) {

    /* "src/python/grpcio/grpc/_cython/_cygrpc/aio/server.pyx.pxi":362
 *     # interceptor
 *     if interceptors:
 *         return await _run_interceptor(iter(interceptors), query_handlers,             # <<<<<<<<<<<<<<
 *                                       handler_call_details)
 *     else:
 */
    __Pyx_XDECREF(__pyx_r);
    __Pyx_GetModuleGlobalName(__pyx_t_1, __pyx_n_s_run_interceptor); if (unlikely(!__pyx_t_1)) __PYX_ERR(10, 362, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_1);
    __pyx_t_4 = PyObject_GetIter(__pyx_cur_scope->__pyx_v_interceptors); if (unlikely(!__pyx_t_4)) __PYX_ERR(10, 362, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_4);

    /* "src/python/grpcio/grpc/_cython/_cygrpc/aio/server.pyx.pxi":363
 *     if interceptors:
 *         return await _run_interceptor(iter(interceptors), query_handlers,
 *                                       handler_call_details)             # <<<<<<<<<<<<<<
 *     else:
 *         return query_handlers(handler_call_details)
 */
    __pyx_t_5 = NULL;
    __pyx_t_6 = 0;
    if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_1))) {
      __pyx_t_5 = PyMethod_GET_SELF(__pyx_t_1);
      if (likely(__pyx_t_5)) {
        PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_1);
        __Pyx_INCREF(__pyx_t_5);
        __Pyx_INCREF(function);
        __Pyx_DECREF_SET(__pyx_t_1, function);
        __pyx_t_6 = 1;
      }
    }
    #if CYTHON_FAST_PYCALL
    if (PyFunction_Check(__pyx_t_1)) {
      PyObject *__pyx_temp[4] = {__pyx_t_5, __pyx_t_4, __pyx_cur_scope->__pyx_v_query_handlers, ((PyObject *)__pyx_cur_scope->__pyx_v_handler_call_details)};
      __pyx_t_2 = __Pyx_PyFunction_FastCall(__pyx_t_1, __pyx_temp+1-__pyx_t_6, 3+__pyx_t_6); if (unlikely(!__pyx_t_2)) __PYX_ERR(10, 362, __pyx_L1_error)
      __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0;
      __Pyx_GOTREF(__pyx_t_2);
      __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
    } else
    #endif
    #if CYTHON_FAST_PYCCALL
    if (__Pyx_PyFastCFunction_Check(__pyx_t_1)) {
      PyObject *__pyx_temp[4] = {__pyx_t_5, __pyx_t_4, __pyx_cur_scope->__pyx_v_query_handlers, ((PyObject *)__pyx_cur_scope->__pyx_v_handler_call_details)};
      __pyx_t_2 = __Pyx_PyCFunction_FastCall(__pyx_t_1, __pyx_temp+1-__pyx_t_6, 3+__pyx_t_6); if (unlikely(!__pyx_t_2)) __PYX_ERR(10, 362, __pyx_L1_error)
      __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0;
      __Pyx_GOTREF(__pyx_t_2);
      __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
    } else
    #endif
    {
      __pyx_t_7 = PyTuple_New(3+__pyx_t_6); if (unlikely(!__pyx_t_7)) __PYX_ERR(10, 362, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_7);
      if (__pyx_t_5) {
        __Pyx_GIVEREF(__pyx_t_5); PyTuple_SET_ITEM(__pyx_t_7, 0, __pyx_t_5); __pyx_t_5 = NULL;
      }
      __Pyx_GIVEREF(__pyx_t_4);
      PyTuple_SET_ITEM(__pyx_t_7, 0+__pyx_t_6, __pyx_t_4);
      __Pyx_INCREF(__pyx_cur_scope->__pyx_v_query_handlers);
      __Pyx_GIVEREF(__pyx_cur_scope->__pyx_v_query_handlers);
      PyTuple_SET_ITEM(__pyx_t_7, 1+__pyx_t_6, __pyx_cur_scope->__pyx_v_query_handlers);
      __Pyx_INCREF(((PyObject *)__pyx_cur_scope->__pyx_v_handler_call_details));
      __Pyx_GIVEREF(((PyObject *)__pyx_cur_scope->__pyx_v_handler_call_details));
      PyTuple_SET_ITEM(__pyx_t_7, 2+__pyx_t_6, ((PyObject *)__pyx_cur_scope->__pyx_v_handler_call_details));
      __pyx_t_4 = 0;
      __pyx_t_2 = __Pyx_PyObject_Call(__pyx_t_1, __pyx_t_7, NULL); if (unlikely(!__pyx_t_2)) __PYX_ERR(10, 362, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_2);
      __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
    }
    __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
    __pyx_r = __Pyx_Coroutine_Yield_From(__pyx_generator, __pyx_t_2);
    __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
    __Pyx_XGOTREF(__pyx_r);
    if (likely(__pyx_r)) {
      __Pyx_XGIVEREF(__pyx_r);
      __Pyx_RefNannyFinishContext();
      __Pyx_Coroutine_ResetAndClearException(__pyx_generator);
      /* return from generator, awaiting value */
      __pyx_generator->resume_label = 1;
      return __pyx_r;
      __pyx_L5_resume_from_await:;
      if (unlikely(!__pyx_sent_value)) __PYX_ERR(10, 362, __pyx_L1_error)
      __pyx_t_2 = __pyx_sent_value; __Pyx_INCREF(__pyx_t_2);
    } else {
      __pyx_t_2 = NULL;
      if (__Pyx_PyGen_FetchStopIterationValue(&__pyx_t_2) < 0) __PYX_ERR(10, 362, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_2);
    }
    __pyx_r = NULL; __Pyx_ReturnWithStopIteration(__pyx_t_2);
    __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
    goto __pyx_L0;

    /* "src/python/grpcio/grpc/_cython/_cygrpc/aio/server.pyx.pxi":361
 *                                                                         metadata)
 *     # interceptor
 *     if interceptors:             # <<<<<<<<<<<<<<
 *         return await _run_interceptor(iter(interceptors), query_handlers,
 *                                       handler_call_details)
 */
  }

  /* "src/python/grpcio/grpc/_cython/_cygrpc/aio/server.pyx.pxi":365
 *                                       handler_call_details)
 *     else:
 *         return query_handlers(handler_call_details)             # <<<<<<<<<<<<<<
 * 
 * 
 */
  /*else*/ {
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_2 = __pyx_pf_4grpc_7_cython_6cygrpc_20_find_method_handler_query_handlers(__pyx_cur_scope->__pyx_v_query_handlers, ((PyObject *)__pyx_cur_scope->__pyx_v_handler_call_details)); if (unlikely(!__pyx_t_2)) __PYX_ERR(10, 365, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_2);
    __pyx_r = NULL; __Pyx_ReturnWithStopIteration(__pyx_t_2);
    __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
    goto __pyx_L0;
  }
  CYTHON_MAYBE_UNUSED_VAR(__pyx_cur_scope);

  /* "src/python/grpcio/grpc/_cython/_cygrpc/aio/server.pyx.pxi":349
 * 
 * 
 * async def _find_method_handler(str method, tuple metadata, list generic_handlers,             # <<<<<<<<<<<<<<
 *                           tuple interceptors):
 *     def query_handlers(handler_call_details):
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_XDECREF(__pyx_t_4);
  __Pyx_XDECREF(__pyx_t_5);
  __Pyx_XDECREF(__pyx_t_7);
  __Pyx_AddTraceback("_find_method_handler", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_L0:;
  __Pyx_XDECREF(__pyx_r); __pyx_r = 0;
  #if !CYTHON_USE_EXC_INFO_STACK
  __Pyx_Coroutine_ResetAndClearException(__pyx_generator);
  #endif
  __pyx_generator->resume_label = -1;
  __Pyx_Coroutine_clear((PyObject*)__pyx_generator);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}
static PyObject *__pyx_gb_4grpc_7_cython_6cygrpc_154generator26(__pyx_CoroutineObject *__pyx_generator, CYTHON_UNUSED PyThreadState *__pyx_tstate, PyObject *__pyx_sent_value); /* proto */

/* "src/python/grpcio/grpc/_cython/_cygrpc/aio/server.pyx.pxi":368
 * 
 * 
 * async def _finish_handler_with_unary_response(RPCState rpc_state,             # <<<<<<<<<<<<<<
 *                                               object unary_handler,
 *                                               object request,
 */

/* Python wrapper */
static PyObject *__pyx_pw_4grpc_7_cython_6cygrpc_153_finish_handler_with_unary_response(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
static char __pyx_doc_4grpc_7_cython_6cygrpc_152_finish_handler_with_unary_response[] = "Finishes server method handler with a single response.\n\n    This function executes the application handler, and handles response\n    sending, as well as errors. It is shared between unary-unary and\n    stream-unary handlers.\n    ";
static PyMethodDef __pyx_mdef_4grpc_7_cython_6cygrpc_153_finish_handler_with_unary_response = {"_finish_handler_with_unary_response", (PyCFunction)(void*)(PyCFunctionWithKeywords)__pyx_pw_4grpc_7_cython_6cygrpc_153_finish_handler_with_unary_response, METH_VARARGS|METH_KEYWORDS, __pyx_doc_4grpc_7_cython_6cygrpc_152_finish_handler_with_unary_response};
static PyObject *__pyx_pw_4grpc_7_cython_6cygrpc_153_finish_handler_with_unary_response(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
  struct __pyx_obj_4grpc_7_cython_6cygrpc_RPCState *__pyx_v_rpc_state = 0;
  PyObject *__pyx_v_unary_handler = 0;
  PyObject *__pyx_v_request = 0;
  struct __pyx_obj_4grpc_7_cython_6cygrpc__ServicerContext *__pyx_v_servicer_context = 0;
  PyObject *__pyx_v_response_serializer = 0;
  PyObject *__pyx_v_loop = 0;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("_finish_handler_with_unary_response (wrapper)", 0);
  {
    static PyObject **__pyx_pyargnames[] = {&__pyx_n_s_rpc_state,&__pyx_n_s_unary_handler,&__pyx_n_s_request,&__pyx_n_s_servicer_context,&__pyx_n_s_response_serializer,&__pyx_n_s_loop,0};
    PyObject* values[6] = {0,0,0,0,0,0};
    if (unlikely(__pyx_kwds)) {
      Py_ssize_t kw_args;
      const Py_ssize_t pos_args = PyTuple_GET_SIZE(__pyx_args);
      switch (pos_args) {
        case  6: values[5] = PyTuple_GET_ITEM(__pyx_args, 5);
        CYTHON_FALLTHROUGH;
        case  5: values[4] = PyTuple_GET_ITEM(__pyx_args, 4);
        CYTHON_FALLTHROUGH;
        case  4: values[3] = PyTuple_GET_ITEM(__pyx_args, 3);
        CYTHON_FALLTHROUGH;
        case  3: values[2] = PyTuple_GET_ITEM(__pyx_args, 2);
        CYTHON_FALLTHROUGH;
        case  2: values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
        CYTHON_FALLTHROUGH;
        case  1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
        CYTHON_FALLTHROUGH;
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      kw_args = PyDict_Size(__pyx_kwds);
      switch (pos_args) {
        case  0:
        if (likely((values[0] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_rpc_state)) != 0)) kw_args--;
        else goto __pyx_L5_argtuple_error;
        CYTHON_FALLTHROUGH;
        case  1:
        if (likely((values[1] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_unary_handler)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("_finish_handler_with_unary_response", 1, 6, 6, 1); __PYX_ERR(10, 368, __pyx_L3_error)
        }
        CYTHON_FALLTHROUGH;
        case  2:
        if (likely((values[2] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_request)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("_finish_handler_with_unary_response", 1, 6, 6, 2); __PYX_ERR(10, 368, __pyx_L3_error)
        }
        CYTHON_FALLTHROUGH;
        case  3:
        if (likely((values[3] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_servicer_context)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("_finish_handler_with_unary_response", 1, 6, 6, 3); __PYX_ERR(10, 368, __pyx_L3_error)
        }
        CYTHON_FALLTHROUGH;
        case  4:
        if (likely((values[4] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_response_serializer)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("_finish_handler_with_unary_response", 1, 6, 6, 4); __PYX_ERR(10, 368, __pyx_L3_error)
        }
        CYTHON_FALLTHROUGH;
        case  5:
        if (likely((values[5] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_loop)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("_finish_handler_with_unary_response", 1, 6, 6, 5); __PYX_ERR(10, 368, __pyx_L3_error)
        }
      }
      if (unlikely(kw_args > 0)) {
        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "_finish_handler_with_unary_response") < 0)) __PYX_ERR(10, 368, __pyx_L3_error)
      }
    } else if (PyTuple_GET_SIZE(__pyx_args) != 6) {
      goto __pyx_L5_argtuple_error;
    } else {
      values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
      values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
      values[2] = PyTuple_GET_ITEM(__pyx_args, 2);
      values[3] = PyTuple_GET_ITEM(__pyx_args, 3);
      values[4] = PyTuple_GET_ITEM(__pyx_args, 4);
      values[5] = PyTuple_GET_ITEM(__pyx_args, 5);
    }
    __pyx_v_rpc_state = ((struct __pyx_obj_4grpc_7_cython_6cygrpc_RPCState *)values[0]);
    __pyx_v_unary_handler = values[1];
    __pyx_v_request = values[2];
    __pyx_v_servicer_context = ((struct __pyx_obj_4grpc_7_cython_6cygrpc__ServicerContext *)values[3]);
    __pyx_v_response_serializer = values[4];
    __pyx_v_loop = values[5];
  }
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("_finish_handler_with_unary_response", 1, 6, 6, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(10, 368, __pyx_L3_error)
  __pyx_L3_error:;
  __Pyx_AddTraceback("grpc._cython.cygrpc._finish_handler_with_unary_response", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_rpc_state), __pyx_ptype_4grpc_7_cython_6cygrpc_RPCState, 1, "rpc_state", 0))) __PYX_ERR(10, 368, __pyx_L1_error)
  if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_servicer_context), __pyx_ptype_4grpc_7_cython_6cygrpc__ServicerContext, 1, "servicer_context", 0))) __PYX_ERR(10, 371, __pyx_L1_error)
  __pyx_r = __pyx_pf_4grpc_7_cython_6cygrpc_152_finish_handler_with_unary_response(__pyx_self, __pyx_v_rpc_state, __pyx_v_unary_handler, __pyx_v_request, __pyx_v_servicer_context, __pyx_v_response_serializer, __pyx_v_loop);

  /* function exit code */
  goto __pyx_L0;
  __pyx_L1_error:;
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_4grpc_7_cython_6cygrpc_152_finish_handler_with_unary_response(CYTHON_UNUSED PyObject *__pyx_self, struct __pyx_obj_4grpc_7_cython_6cygrpc_RPCState *__pyx_v_rpc_state, PyObject *__pyx_v_unary_handler, PyObject *__pyx_v_request, struct __pyx_obj_4grpc_7_cython_6cygrpc__ServicerContext *__pyx_v_servicer_context, PyObject *__pyx_v_response_serializer, PyObject *__pyx_v_loop) {
  struct __pyx_obj_4grpc_7_cython_6cygrpc___pyx_scope_struct_38__finish_handler_with_unary_response *__pyx_cur_scope;
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("_finish_handler_with_unary_response", 0);
  __pyx_cur_scope = (struct __pyx_obj_4grpc_7_cython_6cygrpc___pyx_scope_struct_38__finish_handler_with_unary_response *)__pyx_tp_new_4grpc_7_cython_6cygrpc___pyx_scope_struct_38__finish_handler_with_unary_response(__pyx_ptype_4grpc_7_cython_6cygrpc___pyx_scope_struct_38__finish_handler_with_unary_response, __pyx_empty_tuple, NULL);
  if (unlikely(!__pyx_cur_scope)) {
    __pyx_cur_scope = ((struct __pyx_obj_4grpc_7_cython_6cygrpc___pyx_scope_struct_38__finish_handler_with_unary_response *)Py_None);
    __Pyx_INCREF(Py_None);
    __PYX_ERR(10, 368, __pyx_L1_error)
  } else {
    __Pyx_GOTREF(__pyx_cur_scope);
  }
  __pyx_cur_scope->__pyx_v_rpc_state = __pyx_v_rpc_state;
  __Pyx_INCREF((PyObject *)__pyx_cur_scope->__pyx_v_rpc_state);
  __Pyx_GIVEREF((PyObject *)__pyx_cur_scope->__pyx_v_rpc_state);
  __pyx_cur_scope->__pyx_v_unary_handler = __pyx_v_unary_handler;
  __Pyx_INCREF(__pyx_cur_scope->__pyx_v_unary_handler);
  __Pyx_GIVEREF(__pyx_cur_scope->__pyx_v_unary_handler);
  __pyx_cur_scope->__pyx_v_request = __pyx_v_request;
  __Pyx_INCREF(__pyx_cur_scope->__pyx_v_request);
  __Pyx_GIVEREF(__pyx_cur_scope->__pyx_v_request);
  __pyx_cur_scope->__pyx_v_servicer_context = __pyx_v_servicer_context;
  __Pyx_INCREF((PyObject *)__pyx_cur_scope->__pyx_v_servicer_context);
  __Pyx_GIVEREF((PyObject *)__pyx_cur_scope->__pyx_v_servicer_context);
  __pyx_cur_scope->__pyx_v_response_serializer = __pyx_v_response_serializer;
  __Pyx_INCREF(__pyx_cur_scope->__pyx_v_response_serializer);
  __Pyx_GIVEREF(__pyx_cur_scope->__pyx_v_response_serializer);
  __pyx_cur_scope->__pyx_v_loop = __pyx_v_loop;
  __Pyx_INCREF(__pyx_cur_scope->__pyx_v_loop);
  __Pyx_GIVEREF(__pyx_cur_scope->__pyx_v_loop);
  {
    __pyx_CoroutineObject *gen = __Pyx_Coroutine_New((__pyx_coroutine_body_t) __pyx_gb_4grpc_7_cython_6cygrpc_154generator26, __pyx_codeobj__185, (PyObject *) __pyx_cur_scope, __pyx_n_s_finish_handler_with_unary_respo, __pyx_n_s_finish_handler_with_unary_respo, __pyx_n_s_grpc__cython_cygrpc); if (unlikely(!gen)) __PYX_ERR(10, 368, __pyx_L1_error)
    __Pyx_DECREF(__pyx_cur_scope);
    __Pyx_RefNannyFinishContext();
    return (PyObject *) gen;
  }

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_AddTraceback("grpc._cython.cygrpc._finish_handler_with_unary_response", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __Pyx_DECREF(((PyObject *)__pyx_cur_scope));
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_gb_4grpc_7_cython_6cygrpc_154generator26(__pyx_CoroutineObject *__pyx_generator, CYTHON_UNUSED PyThreadState *__pyx_tstate, PyObject *__pyx_sent_value) /* generator body */
{
  struct __pyx_obj_4grpc_7_cython_6cygrpc___pyx_scope_struct_38__finish_handler_with_unary_response *__pyx_cur_scope = ((struct __pyx_obj_4grpc_7_cython_6cygrpc___pyx_scope_struct_38__finish_handler_with_unary_response *)__pyx_generator->closure);
  PyObject *__pyx_r = NULL;
  PyObject *__pyx_t_1 = NULL;
  PyObject *__pyx_t_2 = NULL;
  PyObject *__pyx_t_3 = NULL;
  int __pyx_t_4;
  int __pyx_t_5;
  PyObject *__pyx_t_6 = NULL;
  PyObject *__pyx_t_7 = NULL;
  Py_ssize_t __pyx_t_8;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("_finish_handler_with_unary_response", 0);
  switch (__pyx_generator->resume_label) {
    case 0: goto __pyx_L3_first_run;
    case 1: goto __pyx_L5_resume_from_await;
    case 2: goto __pyx_L6_resume_from_await;
    case 3: goto __pyx_L11_resume_from_await;
    default: /* CPython raises the right error here */
    __Pyx_RefNannyFinishContext();
    return NULL;
  }
  __pyx_L3_first_run:;
  if (unlikely(!__pyx_sent_value)) __PYX_ERR(10, 368, __pyx_L1_error)

  /* "src/python/grpcio/grpc/_cython/_cygrpc/aio/server.pyx.pxi":384
 *     cdef _SyncServicerContext sync_servicer_context
 * 
 *     if _is_async_handler(unary_handler):             # <<<<<<<<<<<<<<
 *         # Run async method handlers in this coroutine
 *         response_message = await unary_handler(
 */
  __Pyx_GetModuleGlobalName(__pyx_t_2, __pyx_n_s_is_async_handler); if (unlikely(!__pyx_t_2)) __PYX_ERR(10, 384, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __pyx_t_3 = NULL;
  if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_2))) {
    __pyx_t_3 = PyMethod_GET_SELF(__pyx_t_2);
    if (likely(__pyx_t_3)) {
      PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_2);
      __Pyx_INCREF(__pyx_t_3);
      __Pyx_INCREF(function);
      __Pyx_DECREF_SET(__pyx_t_2, function);
    }
  }
  __pyx_t_1 = (__pyx_t_3) ? __Pyx_PyObject_Call2Args(__pyx_t_2, __pyx_t_3, __pyx_cur_scope->__pyx_v_unary_handler) : __Pyx_PyObject_CallOneArg(__pyx_t_2, __pyx_cur_scope->__pyx_v_unary_handler);
  __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0;
  if (unlikely(!__pyx_t_1)) __PYX_ERR(10, 384, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  __pyx_t_4 = __Pyx_PyObject_IsTrue(__pyx_t_1); if (unlikely(__pyx_t_4 < 0)) __PYX_ERR(10, 384, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  if (__pyx_t_4) {

    /* "src/python/grpcio/grpc/_cython/_cygrpc/aio/server.pyx.pxi":388
 *         response_message = await unary_handler(
 *             request,
 *             servicer_context,             # <<<<<<<<<<<<<<
 *         )
 *     else:
 */
    __Pyx_INCREF(__pyx_cur_scope->__pyx_v_unary_handler);
    __pyx_t_2 = __pyx_cur_scope->__pyx_v_unary_handler; __pyx_t_3 = NULL;
    __pyx_t_5 = 0;
    if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_2))) {
      __pyx_t_3 = PyMethod_GET_SELF(__pyx_t_2);
      if (likely(__pyx_t_3)) {
        PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_2);
        __Pyx_INCREF(__pyx_t_3);
        __Pyx_INCREF(function);
        __Pyx_DECREF_SET(__pyx_t_2, function);
        __pyx_t_5 = 1;
      }
    }
    #if CYTHON_FAST_PYCALL
    if (PyFunction_Check(__pyx_t_2)) {
      PyObject *__pyx_temp[3] = {__pyx_t_3, __pyx_cur_scope->__pyx_v_request, ((PyObject *)__pyx_cur_scope->__pyx_v_servicer_context)};
      __pyx_t_1 = __Pyx_PyFunction_FastCall(__pyx_t_2, __pyx_temp+1-__pyx_t_5, 2+__pyx_t_5); if (unlikely(!__pyx_t_1)) __PYX_ERR(10, 386, __pyx_L1_error)
      __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0;
      __Pyx_GOTREF(__pyx_t_1);
    } else
    #endif
    #if CYTHON_FAST_PYCCALL
    if (__Pyx_PyFastCFunction_Check(__pyx_t_2)) {
      PyObject *__pyx_temp[3] = {__pyx_t_3, __pyx_cur_scope->__pyx_v_request, ((PyObject *)__pyx_cur_scope->__pyx_v_servicer_context)};
      __pyx_t_1 = __Pyx_PyCFunction_FastCall(__pyx_t_2, __pyx_temp+1-__pyx_t_5, 2+__pyx_t_5); if (unlikely(!__pyx_t_1)) __PYX_ERR(10, 386, __pyx_L1_error)
      __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0;
      __Pyx_GOTREF(__pyx_t_1);
    } else
    #endif
    {
      __pyx_t_6 = PyTuple_New(2+__pyx_t_5); if (unlikely(!__pyx_t_6)) __PYX_ERR(10, 386, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_6);
      if (__pyx_t_3) {
        __Pyx_GIVEREF(__pyx_t_3); PyTuple_SET_ITEM(__pyx_t_6, 0, __pyx_t_3); __pyx_t_3 = NULL;
      }
      __Pyx_INCREF(__pyx_cur_scope->__pyx_v_request);
      __Pyx_GIVEREF(__pyx_cur_scope->__pyx_v_request);
      PyTuple_SET_ITEM(__pyx_t_6, 0+__pyx_t_5, __pyx_cur_scope->__pyx_v_request);
      __Pyx_INCREF(((PyObject *)__pyx_cur_scope->__pyx_v_servicer_context));
      __Pyx_GIVEREF(((PyObject *)__pyx_cur_scope->__pyx_v_servicer_context));
      PyTuple_SET_ITEM(__pyx_t_6, 1+__pyx_t_5, ((PyObject *)__pyx_cur_scope->__pyx_v_servicer_context));
      __pyx_t_1 = __Pyx_PyObject_Call(__pyx_t_2, __pyx_t_6, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(10, 386, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_1);
      __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
    }
    __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
    __pyx_r = __Pyx_Coroutine_Yield_From(__pyx_generator, __pyx_t_1);
    __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
    __Pyx_XGOTREF(__pyx_r);
    if (likely(__pyx_r)) {
      __Pyx_XGIVEREF(__pyx_r);
      __Pyx_RefNannyFinishContext();
      __Pyx_Coroutine_ResetAndClearException(__pyx_generator);
      /* return from generator, awaiting value */
      __pyx_generator->resume_label = 1;
      return __pyx_r;
      __pyx_L5_resume_from_await:;
      if (unlikely(!__pyx_sent_value)) __PYX_ERR(10, 386, __pyx_L1_error)
      __pyx_t_1 = __pyx_sent_value; __Pyx_INCREF(__pyx_t_1);
    } else {
      __pyx_t_1 = NULL;
      if (__Pyx_PyGen_FetchStopIterationValue(&__pyx_t_1) < 0) __PYX_ERR(10, 386, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_1);
    }
    __Pyx_GIVEREF(__pyx_t_1);
    __pyx_cur_scope->__pyx_v_response_message = __pyx_t_1;
    __pyx_t_1 = 0;

    /* "src/python/grpcio/grpc/_cython/_cygrpc/aio/server.pyx.pxi":384
 *     cdef _SyncServicerContext sync_servicer_context
 * 
 *     if _is_async_handler(unary_handler):             # <<<<<<<<<<<<<<
 *         # Run async method handlers in this coroutine
 *         response_message = await unary_handler(
 */
    goto __pyx_L4;
  }

  /* "src/python/grpcio/grpc/_cython/_cygrpc/aio/server.pyx.pxi":392
 *     else:
 *         # Run sync method handlers in the thread pool
 *         sync_servicer_context = _SyncServicerContext(servicer_context)             # <<<<<<<<<<<<<<
 *         response_message = await loop.run_in_executor(
 *             rpc_state.server.thread_pool(),
 */
  /*else*/ {
    __pyx_t_1 = __Pyx_PyObject_CallOneArg(((PyObject *)__pyx_ptype_4grpc_7_cython_6cygrpc__SyncServicerContext), ((PyObject *)__pyx_cur_scope->__pyx_v_servicer_context)); if (unlikely(!__pyx_t_1)) __PYX_ERR(10, 392, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_1);
    __Pyx_GIVEREF(__pyx_t_1);
    __pyx_cur_scope->__pyx_v_sync_servicer_context = ((struct __pyx_obj_4grpc_7_cython_6cygrpc__SyncServicerContext *)__pyx_t_1);
    __pyx_t_1 = 0;

    /* "src/python/grpcio/grpc/_cython/_cygrpc/aio/server.pyx.pxi":393
 *         # Run sync method handlers in the thread pool
 *         sync_servicer_context = _SyncServicerContext(servicer_context)
 *         response_message = await loop.run_in_executor(             # <<<<<<<<<<<<<<
 *             rpc_state.server.thread_pool(),
 *             unary_handler,
 */
    __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_cur_scope->__pyx_v_loop, __pyx_n_s_run_in_executor); if (unlikely(!__pyx_t_2)) __PYX_ERR(10, 393, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_2);

    /* "src/python/grpcio/grpc/_cython/_cygrpc/aio/server.pyx.pxi":394
 *         sync_servicer_context = _SyncServicerContext(servicer_context)
 *         response_message = await loop.run_in_executor(
 *             rpc_state.server.thread_pool(),             # <<<<<<<<<<<<<<
 *             unary_handler,
 *             request,
 */
    __pyx_t_6 = ((struct __pyx_vtabstruct_4grpc_7_cython_6cygrpc_AioServer *)__pyx_cur_scope->__pyx_v_rpc_state->server->__pyx_vtab)->thread_pool(__pyx_cur_scope->__pyx_v_rpc_state->server); if (unlikely(!__pyx_t_6)) __PYX_ERR(10, 394, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_6);

    /* "src/python/grpcio/grpc/_cython/_cygrpc/aio/server.pyx.pxi":397
 *             unary_handler,
 *             request,
 *             sync_servicer_context,             # <<<<<<<<<<<<<<
 *         )
 *         # Support sync-stack callback
 */
    __pyx_t_3 = NULL;
    __pyx_t_5 = 0;
    if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_2))) {
      __pyx_t_3 = PyMethod_GET_SELF(__pyx_t_2);
      if (likely(__pyx_t_3)) {
        PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_2);
        __Pyx_INCREF(__pyx_t_3);
        __Pyx_INCREF(function);
        __Pyx_DECREF_SET(__pyx_t_2, function);
        __pyx_t_5 = 1;
      }
    }
    #if CYTHON_FAST_PYCALL
    if (PyFunction_Check(__pyx_t_2)) {
      PyObject *__pyx_temp[5] = {__pyx_t_3, __pyx_t_6, __pyx_cur_scope->__pyx_v_unary_handler, __pyx_cur_scope->__pyx_v_request, ((PyObject *)__pyx_cur_scope->__pyx_v_sync_servicer_context)};
      __pyx_t_1 = __Pyx_PyFunction_FastCall(__pyx_t_2, __pyx_temp+1-__pyx_t_5, 4+__pyx_t_5); if (unlikely(!__pyx_t_1)) __PYX_ERR(10, 393, __pyx_L1_error)
      __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0;
      __Pyx_GOTREF(__pyx_t_1);
      __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
    } else
    #endif
    #if CYTHON_FAST_PYCCALL
    if (__Pyx_PyFastCFunction_Check(__pyx_t_2)) {
      PyObject *__pyx_temp[5] = {__pyx_t_3, __pyx_t_6, __pyx_cur_scope->__pyx_v_unary_handler, __pyx_cur_scope->__pyx_v_request, ((PyObject *)__pyx_cur_scope->__pyx_v_sync_servicer_context)};
      __pyx_t_1 = __Pyx_PyCFunction_FastCall(__pyx_t_2, __pyx_temp+1-__pyx_t_5, 4+__pyx_t_5); if (unlikely(!__pyx_t_1)) __PYX_ERR(10, 393, __pyx_L1_error)
      __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0;
      __Pyx_GOTREF(__pyx_t_1);
      __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
    } else
    #endif
    {
      __pyx_t_7 = PyTuple_New(4+__pyx_t_5); if (unlikely(!__pyx_t_7)) __PYX_ERR(10, 393, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_7);
      if (__pyx_t_3) {
        __Pyx_GIVEREF(__pyx_t_3); PyTuple_SET_ITEM(__pyx_t_7, 0, __pyx_t_3); __pyx_t_3 = NULL;
      }
      __Pyx_GIVEREF(__pyx_t_6);
      PyTuple_SET_ITEM(__pyx_t_7, 0+__pyx_t_5, __pyx_t_6);
      __Pyx_INCREF(__pyx_cur_scope->__pyx_v_unary_handler);
      __Pyx_GIVEREF(__pyx_cur_scope->__pyx_v_unary_handler);
      PyTuple_SET_ITEM(__pyx_t_7, 1+__pyx_t_5, __pyx_cur_scope->__pyx_v_unary_handler);
      __Pyx_INCREF(__pyx_cur_scope->__pyx_v_request);
      __Pyx_GIVEREF(__pyx_cur_scope->__pyx_v_request);
      PyTuple_SET_ITEM(__pyx_t_7, 2+__pyx_t_5, __pyx_cur_scope->__pyx_v_request);
      __Pyx_INCREF(((PyObject *)__pyx_cur_scope->__pyx_v_sync_servicer_context));
      __Pyx_GIVEREF(((PyObject *)__pyx_cur_scope->__pyx_v_sync_servicer_context));
      PyTuple_SET_ITEM(__pyx_t_7, 3+__pyx_t_5, ((PyObject *)__pyx_cur_scope->__pyx_v_sync_servicer_context));
      __pyx_t_6 = 0;
      __pyx_t_1 = __Pyx_PyObject_Call(__pyx_t_2, __pyx_t_7, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(10, 393, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_1);
      __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
    }
    __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
    __pyx_r = __Pyx_Coroutine_Yield_From(__pyx_generator, __pyx_t_1);
    __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
    __Pyx_XGOTREF(__pyx_r);
    if (likely(__pyx_r)) {
      __Pyx_XGIVEREF(__pyx_r);
      __Pyx_RefNannyFinishContext();
      __Pyx_Coroutine_ResetAndClearException(__pyx_generator);
      /* return from generator, awaiting value */
      __pyx_generator->resume_label = 2;
      return __pyx_r;
      __pyx_L6_resume_from_await:;
      if (unlikely(!__pyx_sent_value)) __PYX_ERR(10, 393, __pyx_L1_error)
      __pyx_t_1 = __pyx_sent_value; __Pyx_INCREF(__pyx_t_1);
    } else {
      __pyx_t_1 = NULL;
      if (__Pyx_PyGen_FetchStopIterationValue(&__pyx_t_1) < 0) __PYX_ERR(10, 393, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_1);
    }
    __Pyx_GIVEREF(__pyx_t_1);
    __pyx_cur_scope->__pyx_v_response_message = __pyx_t_1;
    __pyx_t_1 = 0;

    /* "src/python/grpcio/grpc/_cython/_cygrpc/aio/server.pyx.pxi":400
 *         )
 *         # Support sync-stack callback
 *         for callback in sync_servicer_context._callbacks:             # <<<<<<<<<<<<<<
 *             callback()
 * 
 */
    if (unlikely(__pyx_cur_scope->__pyx_v_sync_servicer_context->_callbacks == Py_None)) {
      PyErr_SetString(PyExc_TypeError, "'NoneType' object is not iterable");
      __PYX_ERR(10, 400, __pyx_L1_error)
    }
    __pyx_t_1 = __pyx_cur_scope->__pyx_v_sync_servicer_context->_callbacks; __Pyx_INCREF(__pyx_t_1); __pyx_t_8 = 0;
    for (;;) {
      if (__pyx_t_8 >= PyList_GET_SIZE(__pyx_t_1)) break;
      #if CYTHON_ASSUME_SAFE_MACROS && !CYTHON_AVOID_BORROWED_REFS
      __pyx_t_2 = PyList_GET_ITEM(__pyx_t_1, __pyx_t_8); __Pyx_INCREF(__pyx_t_2); __pyx_t_8++; if (unlikely(0 < 0)) __PYX_ERR(10, 400, __pyx_L1_error)
      #else
      __pyx_t_2 = PySequence_ITEM(__pyx_t_1, __pyx_t_8); __pyx_t_8++; if (unlikely(!__pyx_t_2)) __PYX_ERR(10, 400, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_2);
      #endif
      __Pyx_XGOTREF(__pyx_cur_scope->__pyx_v_callback);
      __Pyx_XDECREF_SET(__pyx_cur_scope->__pyx_v_callback, __pyx_t_2);
      __Pyx_GIVEREF(__pyx_t_2);
      __pyx_t_2 = 0;

      /* "src/python/grpcio/grpc/_cython/_cygrpc/aio/server.pyx.pxi":401
 *         # Support sync-stack callback
 *         for callback in sync_servicer_context._callbacks:
 *             callback()             # <<<<<<<<<<<<<<
 * 
 *     # Raises exception if aborted
 */
      __Pyx_INCREF(__pyx_cur_scope->__pyx_v_callback);
      __pyx_t_7 = __pyx_cur_scope->__pyx_v_callback; __pyx_t_6 = NULL;
      if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_7))) {
        __pyx_t_6 = PyMethod_GET_SELF(__pyx_t_7);
        if (likely(__pyx_t_6)) {
          PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_7);
          __Pyx_INCREF(__pyx_t_6);
          __Pyx_INCREF(function);
          __Pyx_DECREF_SET(__pyx_t_7, function);
        }
      }
      __pyx_t_2 = (__pyx_t_6) ? __Pyx_PyObject_CallOneArg(__pyx_t_7, __pyx_t_6) : __Pyx_PyObject_CallNoArg(__pyx_t_7);
      __Pyx_XDECREF(__pyx_t_6); __pyx_t_6 = 0;
      if (unlikely(!__pyx_t_2)) __PYX_ERR(10, 401, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_2);
      __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
      __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;

      /* "src/python/grpcio/grpc/_cython/_cygrpc/aio/server.pyx.pxi":400
 *         )
 *         # Support sync-stack callback
 *         for callback in sync_servicer_context._callbacks:             # <<<<<<<<<<<<<<
 *             callback()
 * 
 */
    }
    __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  }
  __pyx_L4:;

  /* "src/python/grpcio/grpc/_cython/_cygrpc/aio/server.pyx.pxi":404
 * 
 *     # Raises exception if aborted
 *     rpc_state.raise_for_termination()             # <<<<<<<<<<<<<<
 * 
 *     # Serializes the response message
 */
  ((struct __pyx_vtabstruct_4grpc_7_cython_6cygrpc_RPCState *)__pyx_cur_scope->__pyx_v_rpc_state->__pyx_vtab)->raise_for_termination(__pyx_cur_scope->__pyx_v_rpc_state); if (unlikely(PyErr_Occurred())) __PYX_ERR(10, 404, __pyx_L1_error)

  /* "src/python/grpcio/grpc/_cython/_cygrpc/aio/server.pyx.pxi":408
 *     # Serializes the response message
 *     cdef bytes response_raw
 *     if rpc_state.status_code == StatusCode.ok:             # <<<<<<<<<<<<<<
 *         response_raw = serialize(
 *             response_serializer,
 */
  __pyx_t_1 = __Pyx_PyInt_From_grpc_status_code(__pyx_cur_scope->__pyx_v_rpc_state->status_code); if (unlikely(!__pyx_t_1)) __PYX_ERR(10, 408, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_GetModuleGlobalName(__pyx_t_2, __pyx_n_s_StatusCode); if (unlikely(!__pyx_t_2)) __PYX_ERR(10, 408, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __pyx_t_7 = __Pyx_PyObject_GetAttrStr(__pyx_t_2, __pyx_n_s_ok); if (unlikely(!__pyx_t_7)) __PYX_ERR(10, 408, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_7);
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  __pyx_t_2 = PyObject_RichCompare(__pyx_t_1, __pyx_t_7, Py_EQ); __Pyx_XGOTREF(__pyx_t_2); if (unlikely(!__pyx_t_2)) __PYX_ERR(10, 408, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
  __pyx_t_4 = __Pyx_PyObject_IsTrue(__pyx_t_2); if (unlikely(__pyx_t_4 < 0)) __PYX_ERR(10, 408, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  if (__pyx_t_4) {

    /* "src/python/grpcio/grpc/_cython/_cygrpc/aio/server.pyx.pxi":409
 *     cdef bytes response_raw
 *     if rpc_state.status_code == StatusCode.ok:
 *         response_raw = serialize(             # <<<<<<<<<<<<<<
 *             response_serializer,
 *             response_message,
 */
    __pyx_t_2 = __pyx_f_4grpc_7_cython_6cygrpc_serialize(__pyx_cur_scope->__pyx_v_response_serializer, __pyx_cur_scope->__pyx_v_response_message); if (unlikely(!__pyx_t_2)) __PYX_ERR(10, 409, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_2);
    __Pyx_GIVEREF(__pyx_t_2);
    __pyx_cur_scope->__pyx_v_response_raw = ((PyObject*)__pyx_t_2);
    __pyx_t_2 = 0;

    /* "src/python/grpcio/grpc/_cython/_cygrpc/aio/server.pyx.pxi":408
 *     # Serializes the response message
 *     cdef bytes response_raw
 *     if rpc_state.status_code == StatusCode.ok:             # <<<<<<<<<<<<<<
 *         response_raw = serialize(
 *             response_serializer,
 */
    goto __pyx_L9;
  }

  /* "src/python/grpcio/grpc/_cython/_cygrpc/aio/server.pyx.pxi":415
 *     else:
 *         # Discards the response message if the status code is non-OK.
 *         response_raw = b''             # <<<<<<<<<<<<<<
 * 
 *     # Assembles the batch operations
 */
  /*else*/ {
    __Pyx_INCREF(__pyx_kp_b_);
    __Pyx_GIVEREF(__pyx_kp_b_);
    __pyx_cur_scope->__pyx_v_response_raw = __pyx_kp_b_;
  }
  __pyx_L9:;

  /* "src/python/grpcio/grpc/_cython/_cygrpc/aio/server.pyx.pxi":420
 *     cdef tuple finish_ops
 *     finish_ops = (
 *         SendMessageOperation(response_raw, rpc_state.get_write_flag()),             # <<<<<<<<<<<<<<
 *         SendStatusFromServerOperation(
 *             rpc_state.trailing_metadata,
 */
  __pyx_t_2 = __Pyx_PyInt_From_int(((struct __pyx_vtabstruct_4grpc_7_cython_6cygrpc_RPCState *)__pyx_cur_scope->__pyx_v_rpc_state->__pyx_vtab)->get_write_flag(__pyx_cur_scope->__pyx_v_rpc_state)); if (unlikely(!__pyx_t_2)) __PYX_ERR(10, 420, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __pyx_t_7 = PyTuple_New(2); if (unlikely(!__pyx_t_7)) __PYX_ERR(10, 420, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_7);
  __Pyx_INCREF(__pyx_cur_scope->__pyx_v_response_raw);
  __Pyx_GIVEREF(__pyx_cur_scope->__pyx_v_response_raw);
  PyTuple_SET_ITEM(__pyx_t_7, 0, __pyx_cur_scope->__pyx_v_response_raw);
  __Pyx_GIVEREF(__pyx_t_2);
  PyTuple_SET_ITEM(__pyx_t_7, 1, __pyx_t_2);
  __pyx_t_2 = 0;
  __pyx_t_2 = __Pyx_PyObject_Call(((PyObject *)__pyx_ptype_4grpc_7_cython_6cygrpc_SendMessageOperation), __pyx_t_7, NULL); if (unlikely(!__pyx_t_2)) __PYX_ERR(10, 420, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;

  /* "src/python/grpcio/grpc/_cython/_cygrpc/aio/server.pyx.pxi":423
 *         SendStatusFromServerOperation(
 *             rpc_state.trailing_metadata,
 *             rpc_state.status_code,             # <<<<<<<<<<<<<<
 *             rpc_state.status_details,
 *             _EMPTY_FLAGS,
 */
  __pyx_t_7 = __Pyx_PyInt_From_grpc_status_code(__pyx_cur_scope->__pyx_v_rpc_state->status_code); if (unlikely(!__pyx_t_7)) __PYX_ERR(10, 423, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_7);

  /* "src/python/grpcio/grpc/_cython/_cygrpc/aio/server.pyx.pxi":425
 *             rpc_state.status_code,
 *             rpc_state.status_details,
 *             _EMPTY_FLAGS,             # <<<<<<<<<<<<<<
 *         ),
 *     )
 */
  __Pyx_GetModuleGlobalName(__pyx_t_1, __pyx_n_s_EMPTY_FLAGS); if (unlikely(!__pyx_t_1)) __PYX_ERR(10, 425, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);

  /* "src/python/grpcio/grpc/_cython/_cygrpc/aio/server.pyx.pxi":421
 *     finish_ops = (
 *         SendMessageOperation(response_raw, rpc_state.get_write_flag()),
 *         SendStatusFromServerOperation(             # <<<<<<<<<<<<<<
 *             rpc_state.trailing_metadata,
 *             rpc_state.status_code,
 */
  __pyx_t_6 = PyTuple_New(4); if (unlikely(!__pyx_t_6)) __PYX_ERR(10, 421, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_6);
  __Pyx_INCREF(__pyx_cur_scope->__pyx_v_rpc_state->trailing_metadata);
  __Pyx_GIVEREF(__pyx_cur_scope->__pyx_v_rpc_state->trailing_metadata);
  PyTuple_SET_ITEM(__pyx_t_6, 0, __pyx_cur_scope->__pyx_v_rpc_state->trailing_metadata);
  __Pyx_GIVEREF(__pyx_t_7);
  PyTuple_SET_ITEM(__pyx_t_6, 1, __pyx_t_7);
  __Pyx_INCREF(__pyx_cur_scope->__pyx_v_rpc_state->status_details);
  __Pyx_GIVEREF(__pyx_cur_scope->__pyx_v_rpc_state->status_details);
  PyTuple_SET_ITEM(__pyx_t_6, 2, __pyx_cur_scope->__pyx_v_rpc_state->status_details);
  __Pyx_GIVEREF(__pyx_t_1);
  PyTuple_SET_ITEM(__pyx_t_6, 3, __pyx_t_1);
  __pyx_t_7 = 0;
  __pyx_t_1 = 0;
  __pyx_t_1 = __Pyx_PyObject_Call(((PyObject *)__pyx_ptype_4grpc_7_cython_6cygrpc_SendStatusFromServerOperation), __pyx_t_6, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(10, 421, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;

  /* "src/python/grpcio/grpc/_cython/_cygrpc/aio/server.pyx.pxi":420
 *     cdef tuple finish_ops
 *     finish_ops = (
 *         SendMessageOperation(response_raw, rpc_state.get_write_flag()),             # <<<<<<<<<<<<<<
 *         SendStatusFromServerOperation(
 *             rpc_state.trailing_metadata,
 */
  __pyx_t_6 = PyTuple_New(2); if (unlikely(!__pyx_t_6)) __PYX_ERR(10, 420, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_6);
  __Pyx_GIVEREF(__pyx_t_2);
  PyTuple_SET_ITEM(__pyx_t_6, 0, __pyx_t_2);
  __Pyx_GIVEREF(__pyx_t_1);
  PyTuple_SET_ITEM(__pyx_t_6, 1, __pyx_t_1);
  __pyx_t_2 = 0;
  __pyx_t_1 = 0;
  __Pyx_GIVEREF(__pyx_t_6);
  __pyx_cur_scope->__pyx_v_finish_ops = ((PyObject*)__pyx_t_6);
  __pyx_t_6 = 0;

  /* "src/python/grpcio/grpc/_cython/_cygrpc/aio/server.pyx.pxi":428
 *         ),
 *     )
 *     if not rpc_state.metadata_sent:             # <<<<<<<<<<<<<<
 *         finish_ops = prepend_send_initial_metadata_op(
 *             finish_ops,
 */
  __pyx_t_4 = ((!(__pyx_cur_scope->__pyx_v_rpc_state->metadata_sent != 0)) != 0);
  if (__pyx_t_4) {

    /* "src/python/grpcio/grpc/_cython/_cygrpc/aio/server.pyx.pxi":429
 *     )
 *     if not rpc_state.metadata_sent:
 *         finish_ops = prepend_send_initial_metadata_op(             # <<<<<<<<<<<<<<
 *             finish_ops,
 *             None)
 */
    __pyx_t_6 = __pyx_f_4grpc_7_cython_6cygrpc_prepend_send_initial_metadata_op(__pyx_cur_scope->__pyx_v_finish_ops, ((PyObject*)Py_None)); if (unlikely(!__pyx_t_6)) __PYX_ERR(10, 429, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_6);
    if (!(likely(PyTuple_CheckExact(__pyx_t_6))||((__pyx_t_6) == Py_None)||(PyErr_Format(PyExc_TypeError, "Expected %.16s, got %.200s", "tuple", Py_TYPE(__pyx_t_6)->tp_name), 0))) __PYX_ERR(10, 429, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_cur_scope->__pyx_v_finish_ops);
    __Pyx_DECREF_SET(__pyx_cur_scope->__pyx_v_finish_ops, ((PyObject*)__pyx_t_6));
    __Pyx_GIVEREF(__pyx_t_6);
    __pyx_t_6 = 0;

    /* "src/python/grpcio/grpc/_cython/_cygrpc/aio/server.pyx.pxi":428
 *         ),
 *     )
 *     if not rpc_state.metadata_sent:             # <<<<<<<<<<<<<<
 *         finish_ops = prepend_send_initial_metadata_op(
 *             finish_ops,
 */
  }

  /* "src/python/grpcio/grpc/_cython/_cygrpc/aio/server.pyx.pxi":432
 *             finish_ops,
 *             None)
 *     rpc_state.metadata_sent = True             # <<<<<<<<<<<<<<
 *     rpc_state.status_sent = True
 *     await execute_batch(rpc_state, finish_ops, loop)
 */
  __pyx_cur_scope->__pyx_v_rpc_state->metadata_sent = 1;

  /* "src/python/grpcio/grpc/_cython/_cygrpc/aio/server.pyx.pxi":433
 *             None)
 *     rpc_state.metadata_sent = True
 *     rpc_state.status_sent = True             # <<<<<<<<<<<<<<
 *     await execute_batch(rpc_state, finish_ops, loop)
 * 
 */
  __pyx_cur_scope->__pyx_v_rpc_state->status_sent = 1;

  /* "src/python/grpcio/grpc/_cython/_cygrpc/aio/server.pyx.pxi":434
 *     rpc_state.metadata_sent = True
 *     rpc_state.status_sent = True
 *     await execute_batch(rpc_state, finish_ops, loop)             # <<<<<<<<<<<<<<
 * 
 * 
 */
  __Pyx_GetModuleGlobalName(__pyx_t_1, __pyx_n_s_execute_batch); if (unlikely(!__pyx_t_1)) __PYX_ERR(10, 434, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_t_2 = NULL;
  __pyx_t_5 = 0;
  if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_1))) {
    __pyx_t_2 = PyMethod_GET_SELF(__pyx_t_1);
    if (likely(__pyx_t_2)) {
      PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_1);
      __Pyx_INCREF(__pyx_t_2);
      __Pyx_INCREF(function);
      __Pyx_DECREF_SET(__pyx_t_1, function);
      __pyx_t_5 = 1;
    }
  }
  #if CYTHON_FAST_PYCALL
  if (PyFunction_Check(__pyx_t_1)) {
    PyObject *__pyx_temp[4] = {__pyx_t_2, ((PyObject *)__pyx_cur_scope->__pyx_v_rpc_state), __pyx_cur_scope->__pyx_v_finish_ops, __pyx_cur_scope->__pyx_v_loop};
    __pyx_t_6 = __Pyx_PyFunction_FastCall(__pyx_t_1, __pyx_temp+1-__pyx_t_5, 3+__pyx_t_5); if (unlikely(!__pyx_t_6)) __PYX_ERR(10, 434, __pyx_L1_error)
    __Pyx_XDECREF(__pyx_t_2); __pyx_t_2 = 0;
    __Pyx_GOTREF(__pyx_t_6);
  } else
  #endif
  #if CYTHON_FAST_PYCCALL
  if (__Pyx_PyFastCFunction_Check(__pyx_t_1)) {
    PyObject *__pyx_temp[4] = {__pyx_t_2, ((PyObject *)__pyx_cur_scope->__pyx_v_rpc_state), __pyx_cur_scope->__pyx_v_finish_ops, __pyx_cur_scope->__pyx_v_loop};
    __pyx_t_6 = __Pyx_PyCFunction_FastCall(__pyx_t_1, __pyx_temp+1-__pyx_t_5, 3+__pyx_t_5); if (unlikely(!__pyx_t_6)) __PYX_ERR(10, 434, __pyx_L1_error)
    __Pyx_XDECREF(__pyx_t_2); __pyx_t_2 = 0;
    __Pyx_GOTREF(__pyx_t_6);
  } else
  #endif
  {
    __pyx_t_7 = PyTuple_New(3+__pyx_t_5); if (unlikely(!__pyx_t_7)) __PYX_ERR(10, 434, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_7);
    if (__pyx_t_2) {
      __Pyx_GIVEREF(__pyx_t_2); PyTuple_SET_ITEM(__pyx_t_7, 0, __pyx_t_2); __pyx_t_2 = NULL;
    }
    __Pyx_INCREF(((PyObject *)__pyx_cur_scope->__pyx_v_rpc_state));
    __Pyx_GIVEREF(((PyObject *)__pyx_cur_scope->__pyx_v_rpc_state));
    PyTuple_SET_ITEM(__pyx_t_7, 0+__pyx_t_5, ((PyObject *)__pyx_cur_scope->__pyx_v_rpc_state));
    __Pyx_INCREF(__pyx_cur_scope->__pyx_v_finish_ops);
    __Pyx_GIVEREF(__pyx_cur_scope->__pyx_v_finish_ops);
    PyTuple_SET_ITEM(__pyx_t_7, 1+__pyx_t_5, __pyx_cur_scope->__pyx_v_finish_ops);
    __Pyx_INCREF(__pyx_cur_scope->__pyx_v_loop);
    __Pyx_GIVEREF(__pyx_cur_scope->__pyx_v_loop);
    PyTuple_SET_ITEM(__pyx_t_7, 2+__pyx_t_5, __pyx_cur_scope->__pyx_v_loop);
    __pyx_t_6 = __Pyx_PyObject_Call(__pyx_t_1, __pyx_t_7, NULL); if (unlikely(!__pyx_t_6)) __PYX_ERR(10, 434, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_6);
    __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
  }
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  __pyx_r = __Pyx_Coroutine_Yield_From(__pyx_generator, __pyx_t_6);
  __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
  __Pyx_XGOTREF(__pyx_r);
  if (likely(__pyx_r)) {
    __Pyx_XGIVEREF(__pyx_r);
    __Pyx_RefNannyFinishContext();
    __Pyx_Coroutine_ResetAndClearException(__pyx_generator);
    /* return from generator, awaiting value */
    __pyx_generator->resume_label = 3;
    return __pyx_r;
    __pyx_L11_resume_from_await:;
    if (unlikely(!__pyx_sent_value)) __PYX_ERR(10, 434, __pyx_L1_error)
  } else {
    PyObject* exc_type = __Pyx_PyErr_Occurred();
    if (exc_type) {
      if (likely(exc_type == PyExc_StopIteration || (exc_type != PyExc_GeneratorExit && __Pyx_PyErr_GivenExceptionMatches(exc_type, PyExc_StopIteration)))) PyErr_Clear();
      else __PYX_ERR(10, 434, __pyx_L1_error)
    }
  }
  CYTHON_MAYBE_UNUSED_VAR(__pyx_cur_scope);

  /* "src/python/grpcio/grpc/_cython/_cygrpc/aio/server.pyx.pxi":368
 * 
 * 
 * async def _finish_handler_with_unary_response(RPCState rpc_state,             # <<<<<<<<<<<<<<
 *                                               object unary_handler,
 *                                               object request,
 */

  /* function exit code */
  PyErr_SetNone(PyExc_StopIteration);
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_XDECREF(__pyx_t_3);
  __Pyx_XDECREF(__pyx_t_6);
  __Pyx_XDECREF(__pyx_t_7);
  __Pyx_AddTraceback("_finish_handler_with_unary_response", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_L0:;
  __Pyx_XDECREF(__pyx_r); __pyx_r = 0;
  #if !CYTHON_USE_EXC_INFO_STACK
  __Pyx_Coroutine_ResetAndClearException(__pyx_generator);
  #endif
  __pyx_generator->resume_label = -1;
  __Pyx_Coroutine_clear((PyObject*)__pyx_generator);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}
static PyObject *__pyx_gb_4grpc_7_cython_6cygrpc_157generator27(__pyx_CoroutineObject *__pyx_generator, CYTHON_UNUSED PyThreadState *__pyx_tstate, PyObject *__pyx_sent_value); /* proto */

/* "src/python/grpcio/grpc/_cython/_cygrpc/aio/server.pyx.pxi":437
 * 
 * 
 * async def _finish_handler_with_stream_responses(RPCState rpc_state,             # <<<<<<<<<<<<<<
 *                                                 object stream_handler,
 *                                                 object request,
 */

/* Python wrapper */
static PyObject *__pyx_pw_4grpc_7_cython_6cygrpc_156_finish_handler_with_stream_responses(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
static char __pyx_doc_4grpc_7_cython_6cygrpc_155_finish_handler_with_stream_responses[] = "Finishes server method handler with multiple responses.\n\n    This function executes the application handler, and handles response\n    sending, as well as errors. It is shared between unary-stream and\n    stream-stream handlers.\n    ";
static PyMethodDef __pyx_mdef_4grpc_7_cython_6cygrpc_156_finish_handler_with_stream_responses = {"_finish_handler_with_stream_responses", (PyCFunction)(void*)(PyCFunctionWithKeywords)__pyx_pw_4grpc_7_cython_6cygrpc_156_finish_handler_with_stream_responses, METH_VARARGS|METH_KEYWORDS, __pyx_doc_4grpc_7_cython_6cygrpc_155_finish_handler_with_stream_responses};
static PyObject *__pyx_pw_4grpc_7_cython_6cygrpc_156_finish_handler_with_stream_responses(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
  struct __pyx_obj_4grpc_7_cython_6cygrpc_RPCState *__pyx_v_rpc_state = 0;
  PyObject *__pyx_v_stream_handler = 0;
  PyObject *__pyx_v_request = 0;
  struct __pyx_obj_4grpc_7_cython_6cygrpc__ServicerContext *__pyx_v_servicer_context = 0;
  PyObject *__pyx_v_loop = 0;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("_finish_handler_with_stream_responses (wrapper)", 0);
  {
    static PyObject **__pyx_pyargnames[] = {&__pyx_n_s_rpc_state,&__pyx_n_s_stream_handler,&__pyx_n_s_request,&__pyx_n_s_servicer_context,&__pyx_n_s_loop,0};
    PyObject* values[5] = {0,0,0,0,0};
    if (unlikely(__pyx_kwds)) {
      Py_ssize_t kw_args;
      const Py_ssize_t pos_args = PyTuple_GET_SIZE(__pyx_args);
      switch (pos_args) {
        case  5: values[4] = PyTuple_GET_ITEM(__pyx_args, 4);
        CYTHON_FALLTHROUGH;
        case  4: values[3] = PyTuple_GET_ITEM(__pyx_args, 3);
        CYTHON_FALLTHROUGH;
        case  3: values[2] = PyTuple_GET_ITEM(__pyx_args, 2);
        CYTHON_FALLTHROUGH;
        case  2: values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
        CYTHON_FALLTHROUGH;
        case  1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
        CYTHON_FALLTHROUGH;
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      kw_args = PyDict_Size(__pyx_kwds);
      switch (pos_args) {
        case  0:
        if (likely((values[0] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_rpc_state)) != 0)) kw_args--;
        else goto __pyx_L5_argtuple_error;
        CYTHON_FALLTHROUGH;
        case  1:
        if (likely((values[1] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_stream_handler)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("_finish_handler_with_stream_responses", 1, 5, 5, 1); __PYX_ERR(10, 437, __pyx_L3_error)
        }
        CYTHON_FALLTHROUGH;
        case  2:
        if (likely((values[2] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_request)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("_finish_handler_with_stream_responses", 1, 5, 5, 2); __PYX_ERR(10, 437, __pyx_L3_error)
        }
        CYTHON_FALLTHROUGH;
        case  3:
        if (likely((values[3] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_servicer_context)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("_finish_handler_with_stream_responses", 1, 5, 5, 3); __PYX_ERR(10, 437, __pyx_L3_error)
        }
        CYTHON_FALLTHROUGH;
        case  4:
        if (likely((values[4] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_loop)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("_finish_handler_with_stream_responses", 1, 5, 5, 4); __PYX_ERR(10, 437, __pyx_L3_error)
        }
      }
      if (unlikely(kw_args > 0)) {
        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "_finish_handler_with_stream_responses") < 0)) __PYX_ERR(10, 437, __pyx_L3_error)
      }
    } else if (PyTuple_GET_SIZE(__pyx_args) != 5) {
      goto __pyx_L5_argtuple_error;
    } else {
      values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
      values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
      values[2] = PyTuple_GET_ITEM(__pyx_args, 2);
      values[3] = PyTuple_GET_ITEM(__pyx_args, 3);
      values[4] = PyTuple_GET_ITEM(__pyx_args, 4);
    }
    __pyx_v_rpc_state = ((struct __pyx_obj_4grpc_7_cython_6cygrpc_RPCState *)values[0]);
    __pyx_v_stream_handler = values[1];
    __pyx_v_request = values[2];
    __pyx_v_servicer_context = ((struct __pyx_obj_4grpc_7_cython_6cygrpc__ServicerContext *)values[3]);
    __pyx_v_loop = values[4];
  }
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("_finish_handler_with_stream_responses", 1, 5, 5, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(10, 437, __pyx_L3_error)
  __pyx_L3_error:;
  __Pyx_AddTraceback("grpc._cython.cygrpc._finish_handler_with_stream_responses", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_rpc_state), __pyx_ptype_4grpc_7_cython_6cygrpc_RPCState, 1, "rpc_state", 0))) __PYX_ERR(10, 437, __pyx_L1_error)
  if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_servicer_context), __pyx_ptype_4grpc_7_cython_6cygrpc__ServicerContext, 1, "servicer_context", 0))) __PYX_ERR(10, 440, __pyx_L1_error)
  __pyx_r = __pyx_pf_4grpc_7_cython_6cygrpc_155_finish_handler_with_stream_responses(__pyx_self, __pyx_v_rpc_state, __pyx_v_stream_handler, __pyx_v_request, __pyx_v_servicer_context, __pyx_v_loop);

  /* function exit code */
  goto __pyx_L0;
  __pyx_L1_error:;
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_4grpc_7_cython_6cygrpc_155_finish_handler_with_stream_responses(CYTHON_UNUSED PyObject *__pyx_self, struct __pyx_obj_4grpc_7_cython_6cygrpc_RPCState *__pyx_v_rpc_state, PyObject *__pyx_v_stream_handler, PyObject *__pyx_v_request, struct __pyx_obj_4grpc_7_cython_6cygrpc__ServicerContext *__pyx_v_servicer_context, PyObject *__pyx_v_loop) {
  struct __pyx_obj_4grpc_7_cython_6cygrpc___pyx_scope_struct_39__finish_handler_with_stream_responses *__pyx_cur_scope;
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("_finish_handler_with_stream_responses", 0);
  __pyx_cur_scope = (struct __pyx_obj_4grpc_7_cython_6cygrpc___pyx_scope_struct_39__finish_handler_with_stream_responses *)__pyx_tp_new_4grpc_7_cython_6cygrpc___pyx_scope_struct_39__finish_handler_with_stream_responses(__pyx_ptype_4grpc_7_cython_6cygrpc___pyx_scope_struct_39__finish_handler_with_stream_responses, __pyx_empty_tuple, NULL);
  if (unlikely(!__pyx_cur_scope)) {
    __pyx_cur_scope = ((struct __pyx_obj_4grpc_7_cython_6cygrpc___pyx_scope_struct_39__finish_handler_with_stream_responses *)Py_None);
    __Pyx_INCREF(Py_None);
    __PYX_ERR(10, 437, __pyx_L1_error)
  } else {
    __Pyx_GOTREF(__pyx_cur_scope);
  }
  __pyx_cur_scope->__pyx_v_rpc_state = __pyx_v_rpc_state;
  __Pyx_INCREF((PyObject *)__pyx_cur_scope->__pyx_v_rpc_state);
  __Pyx_GIVEREF((PyObject *)__pyx_cur_scope->__pyx_v_rpc_state);
  __pyx_cur_scope->__pyx_v_stream_handler = __pyx_v_stream_handler;
  __Pyx_INCREF(__pyx_cur_scope->__pyx_v_stream_handler);
  __Pyx_GIVEREF(__pyx_cur_scope->__pyx_v_stream_handler);
  __pyx_cur_scope->__pyx_v_request = __pyx_v_request;
  __Pyx_INCREF(__pyx_cur_scope->__pyx_v_request);
  __Pyx_GIVEREF(__pyx_cur_scope->__pyx_v_request);
  __pyx_cur_scope->__pyx_v_servicer_context = __pyx_v_servicer_context;
  __Pyx_INCREF((PyObject *)__pyx_cur_scope->__pyx_v_servicer_context);
  __Pyx_GIVEREF((PyObject *)__pyx_cur_scope->__pyx_v_servicer_context);
  __pyx_cur_scope->__pyx_v_loop = __pyx_v_loop;
  __Pyx_INCREF(__pyx_cur_scope->__pyx_v_loop);
  __Pyx_GIVEREF(__pyx_cur_scope->__pyx_v_loop);
  {
    __pyx_CoroutineObject *gen = __Pyx_Coroutine_New((__pyx_coroutine_body_t) __pyx_gb_4grpc_7_cython_6cygrpc_157generator27, __pyx_codeobj__186, (PyObject *) __pyx_cur_scope, __pyx_n_s_finish_handler_with_stream_resp, __pyx_n_s_finish_handler_with_stream_resp, __pyx_n_s_grpc__cython_cygrpc); if (unlikely(!gen)) __PYX_ERR(10, 437, __pyx_L1_error)
    __Pyx_DECREF(__pyx_cur_scope);
    __Pyx_RefNannyFinishContext();
    return (PyObject *) gen;
  }

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_AddTraceback("grpc._cython.cygrpc._finish_handler_with_stream_responses", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __Pyx_DECREF(((PyObject *)__pyx_cur_scope));
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_gb_4grpc_7_cython_6cygrpc_157generator27(__pyx_CoroutineObject *__pyx_generator, CYTHON_UNUSED PyThreadState *__pyx_tstate, PyObject *__pyx_sent_value) /* generator body */
{
  struct __pyx_obj_4grpc_7_cython_6cygrpc___pyx_scope_struct_39__finish_handler_with_stream_responses *__pyx_cur_scope = ((struct __pyx_obj_4grpc_7_cython_6cygrpc___pyx_scope_struct_39__finish_handler_with_stream_responses *)__pyx_generator->closure);
  PyObject *__pyx_r = NULL;
  PyObject *__pyx_t_1 = NULL;
  PyObject *__pyx_t_2 = NULL;
  PyObject *__pyx_t_3 = NULL;
  int __pyx_t_4;
  int __pyx_t_5;
  PyObject *__pyx_t_6 = NULL;
  PyObject *__pyx_t_7 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("_finish_handler_with_stream_responses", 0);
  switch (__pyx_generator->resume_label) {
    case 0: goto __pyx_L3_first_run;
    case 1: goto __pyx_L5_resume_from_await;
    case 2: goto __pyx_L9_resume_from_await;
    case 3: goto __pyx_L10_resume_from_await;
    case 4: goto __pyx_L12_resume_from_await;
    default: /* CPython raises the right error here */
    __Pyx_RefNannyFinishContext();
    return NULL;
  }
  __pyx_L3_first_run:;
  if (unlikely(!__pyx_sent_value)) __PYX_ERR(10, 437, __pyx_L1_error)

  /* "src/python/grpcio/grpc/_cython/_cygrpc/aio/server.pyx.pxi":451
 *     cdef object response_message
 * 
 *     if inspect.iscoroutinefunction(stream_handler):             # <<<<<<<<<<<<<<
 *         # Case 1: Coroutine async handler - using reader-writer API
 *         # The handler uses reader / writer API, returns None.
 */
  __Pyx_GetModuleGlobalName(__pyx_t_2, __pyx_n_s_inspect); if (unlikely(!__pyx_t_2)) __PYX_ERR(10, 451, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __pyx_t_3 = __Pyx_PyObject_GetAttrStr(__pyx_t_2, __pyx_n_s_iscoroutinefunction); if (unlikely(!__pyx_t_3)) __PYX_ERR(10, 451, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  __pyx_t_2 = NULL;
  if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_3))) {
    __pyx_t_2 = PyMethod_GET_SELF(__pyx_t_3);
    if (likely(__pyx_t_2)) {
      PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_3);
      __Pyx_INCREF(__pyx_t_2);
      __Pyx_INCREF(function);
      __Pyx_DECREF_SET(__pyx_t_3, function);
    }
  }
  __pyx_t_1 = (__pyx_t_2) ? __Pyx_PyObject_Call2Args(__pyx_t_3, __pyx_t_2, __pyx_cur_scope->__pyx_v_stream_handler) : __Pyx_PyObject_CallOneArg(__pyx_t_3, __pyx_cur_scope->__pyx_v_stream_handler);
  __Pyx_XDECREF(__pyx_t_2); __pyx_t_2 = 0;
  if (unlikely(!__pyx_t_1)) __PYX_ERR(10, 451, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
  __pyx_t_4 = __Pyx_PyObject_IsTrue(__pyx_t_1); if (unlikely(__pyx_t_4 < 0)) __PYX_ERR(10, 451, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  if (__pyx_t_4) {

    /* "src/python/grpcio/grpc/_cython/_cygrpc/aio/server.pyx.pxi":456
 *         await stream_handler(
 *             request,
 *             servicer_context,             # <<<<<<<<<<<<<<
 *         )
 *     else:
 */
    __Pyx_INCREF(__pyx_cur_scope->__pyx_v_stream_handler);
    __pyx_t_3 = __pyx_cur_scope->__pyx_v_stream_handler; __pyx_t_2 = NULL;
    __pyx_t_5 = 0;
    if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_3))) {
      __pyx_t_2 = PyMethod_GET_SELF(__pyx_t_3);
      if (likely(__pyx_t_2)) {
        PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_3);
        __Pyx_INCREF(__pyx_t_2);
        __Pyx_INCREF(function);
        __Pyx_DECREF_SET(__pyx_t_3, function);
        __pyx_t_5 = 1;
      }
    }
    #if CYTHON_FAST_PYCALL
    if (PyFunction_Check(__pyx_t_3)) {
      PyObject *__pyx_temp[3] = {__pyx_t_2, __pyx_cur_scope->__pyx_v_request, ((PyObject *)__pyx_cur_scope->__pyx_v_servicer_context)};
      __pyx_t_1 = __Pyx_PyFunction_FastCall(__pyx_t_3, __pyx_temp+1-__pyx_t_5, 2+__pyx_t_5); if (unlikely(!__pyx_t_1)) __PYX_ERR(10, 454, __pyx_L1_error)
      __Pyx_XDECREF(__pyx_t_2); __pyx_t_2 = 0;
      __Pyx_GOTREF(__pyx_t_1);
    } else
    #endif
    #if CYTHON_FAST_PYCCALL
    if (__Pyx_PyFastCFunction_Check(__pyx_t_3)) {
      PyObject *__pyx_temp[3] = {__pyx_t_2, __pyx_cur_scope->__pyx_v_request, ((PyObject *)__pyx_cur_scope->__pyx_v_servicer_context)};
      __pyx_t_1 = __Pyx_PyCFunction_FastCall(__pyx_t_3, __pyx_temp+1-__pyx_t_5, 2+__pyx_t_5); if (unlikely(!__pyx_t_1)) __PYX_ERR(10, 454, __pyx_L1_error)
      __Pyx_XDECREF(__pyx_t_2); __pyx_t_2 = 0;
      __Pyx_GOTREF(__pyx_t_1);
    } else
    #endif
    {
      __pyx_t_6 = PyTuple_New(2+__pyx_t_5); if (unlikely(!__pyx_t_6)) __PYX_ERR(10, 454, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_6);
      if (__pyx_t_2) {
        __Pyx_GIVEREF(__pyx_t_2); PyTuple_SET_ITEM(__pyx_t_6, 0, __pyx_t_2); __pyx_t_2 = NULL;
      }
      __Pyx_INCREF(__pyx_cur_scope->__pyx_v_request);
      __Pyx_GIVEREF(__pyx_cur_scope->__pyx_v_request);
      PyTuple_SET_ITEM(__pyx_t_6, 0+__pyx_t_5, __pyx_cur_scope->__pyx_v_request);
      __Pyx_INCREF(((PyObject *)__pyx_cur_scope->__pyx_v_servicer_context));
      __Pyx_GIVEREF(((PyObject *)__pyx_cur_scope->__pyx_v_servicer_context));
      PyTuple_SET_ITEM(__pyx_t_6, 1+__pyx_t_5, ((PyObject *)__pyx_cur_scope->__pyx_v_servicer_context));
      __pyx_t_1 = __Pyx_PyObject_Call(__pyx_t_3, __pyx_t_6, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(10, 454, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_1);
      __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
    }
    __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
    __pyx_r = __Pyx_Coroutine_Yield_From(__pyx_generator, __pyx_t_1);
    __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
    __Pyx_XGOTREF(__pyx_r);
    if (likely(__pyx_r)) {
      __Pyx_XGIVEREF(__pyx_r);
      __Pyx_RefNannyFinishContext();
      __Pyx_Coroutine_ResetAndClearException(__pyx_generator);
      /* return from generator, awaiting value */
      __pyx_generator->resume_label = 1;
      return __pyx_r;
      __pyx_L5_resume_from_await:;
      if (unlikely(!__pyx_sent_value)) __PYX_ERR(10, 454, __pyx_L1_error)
    } else {
      PyObject* exc_type = __Pyx_PyErr_Occurred();
      if (exc_type) {
        if (likely(exc_type == PyExc_StopIteration || (exc_type != PyExc_GeneratorExit && __Pyx_PyErr_GivenExceptionMatches(exc_type, PyExc_StopIteration)))) PyErr_Clear();
        else __PYX_ERR(10, 454, __pyx_L1_error)
      }
    }

    /* "src/python/grpcio/grpc/_cython/_cygrpc/aio/server.pyx.pxi":451
 *     cdef object response_message
 * 
 *     if inspect.iscoroutinefunction(stream_handler):             # <<<<<<<<<<<<<<
 *         # Case 1: Coroutine async handler - using reader-writer API
 *         # The handler uses reader / writer API, returns None.
 */
    goto __pyx_L4;
  }

  /* "src/python/grpcio/grpc/_cython/_cygrpc/aio/server.pyx.pxi":459
 *         )
 *     else:
 *         if inspect.isasyncgenfunction(stream_handler):             # <<<<<<<<<<<<<<
 *             # Case 2: Async handler - async generator
 *             # The handler uses async generator API
 */
  /*else*/ {
    __Pyx_GetModuleGlobalName(__pyx_t_3, __pyx_n_s_inspect); if (unlikely(!__pyx_t_3)) __PYX_ERR(10, 459, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_3);
    __pyx_t_6 = __Pyx_PyObject_GetAttrStr(__pyx_t_3, __pyx_n_s_isasyncgenfunction); if (unlikely(!__pyx_t_6)) __PYX_ERR(10, 459, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_6);
    __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
    __pyx_t_3 = NULL;
    if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_6))) {
      __pyx_t_3 = PyMethod_GET_SELF(__pyx_t_6);
      if (likely(__pyx_t_3)) {
        PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_6);
        __Pyx_INCREF(__pyx_t_3);
        __Pyx_INCREF(function);
        __Pyx_DECREF_SET(__pyx_t_6, function);
      }
    }
    __pyx_t_1 = (__pyx_t_3) ? __Pyx_PyObject_Call2Args(__pyx_t_6, __pyx_t_3, __pyx_cur_scope->__pyx_v_stream_handler) : __Pyx_PyObject_CallOneArg(__pyx_t_6, __pyx_cur_scope->__pyx_v_stream_handler);
    __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0;
    if (unlikely(!__pyx_t_1)) __PYX_ERR(10, 459, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_1);
    __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
    __pyx_t_4 = __Pyx_PyObject_IsTrue(__pyx_t_1); if (unlikely(__pyx_t_4 < 0)) __PYX_ERR(10, 459, __pyx_L1_error)
    __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
    if (__pyx_t_4) {

      /* "src/python/grpcio/grpc/_cython/_cygrpc/aio/server.pyx.pxi":464
 *             async_response_generator = stream_handler(
 *                 request,
 *                 servicer_context,             # <<<<<<<<<<<<<<
 *             )
 *         else:
 */
      __Pyx_INCREF(__pyx_cur_scope->__pyx_v_stream_handler);
      __pyx_t_6 = __pyx_cur_scope->__pyx_v_stream_handler; __pyx_t_3 = NULL;
      __pyx_t_5 = 0;
      if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_6))) {
        __pyx_t_3 = PyMethod_GET_SELF(__pyx_t_6);
        if (likely(__pyx_t_3)) {
          PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_6);
          __Pyx_INCREF(__pyx_t_3);
          __Pyx_INCREF(function);
          __Pyx_DECREF_SET(__pyx_t_6, function);
          __pyx_t_5 = 1;
        }
      }
      #if CYTHON_FAST_PYCALL
      if (PyFunction_Check(__pyx_t_6)) {
        PyObject *__pyx_temp[3] = {__pyx_t_3, __pyx_cur_scope->__pyx_v_request, ((PyObject *)__pyx_cur_scope->__pyx_v_servicer_context)};
        __pyx_t_1 = __Pyx_PyFunction_FastCall(__pyx_t_6, __pyx_temp+1-__pyx_t_5, 2+__pyx_t_5); if (unlikely(!__pyx_t_1)) __PYX_ERR(10, 462, __pyx_L1_error)
        __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0;
        __Pyx_GOTREF(__pyx_t_1);
      } else
      #endif
      #if CYTHON_FAST_PYCCALL
      if (__Pyx_PyFastCFunction_Check(__pyx_t_6)) {
        PyObject *__pyx_temp[3] = {__pyx_t_3, __pyx_cur_scope->__pyx_v_request, ((PyObject *)__pyx_cur_scope->__pyx_v_servicer_context)};
        __pyx_t_1 = __Pyx_PyCFunction_FastCall(__pyx_t_6, __pyx_temp+1-__pyx_t_5, 2+__pyx_t_5); if (unlikely(!__pyx_t_1)) __PYX_ERR(10, 462, __pyx_L1_error)
        __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0;
        __Pyx_GOTREF(__pyx_t_1);
      } else
      #endif
      {
        __pyx_t_2 = PyTuple_New(2+__pyx_t_5); if (unlikely(!__pyx_t_2)) __PYX_ERR(10, 462, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_2);
        if (__pyx_t_3) {
          __Pyx_GIVEREF(__pyx_t_3); PyTuple_SET_ITEM(__pyx_t_2, 0, __pyx_t_3); __pyx_t_3 = NULL;
        }
        __Pyx_INCREF(__pyx_cur_scope->__pyx_v_request);
        __Pyx_GIVEREF(__pyx_cur_scope->__pyx_v_request);
        PyTuple_SET_ITEM(__pyx_t_2, 0+__pyx_t_5, __pyx_cur_scope->__pyx_v_request);
        __Pyx_INCREF(((PyObject *)__pyx_cur_scope->__pyx_v_servicer_context));
        __Pyx_GIVEREF(((PyObject *)__pyx_cur_scope->__pyx_v_servicer_context));
        PyTuple_SET_ITEM(__pyx_t_2, 1+__pyx_t_5, ((PyObject *)__pyx_cur_scope->__pyx_v_servicer_context));
        __pyx_t_1 = __Pyx_PyObject_Call(__pyx_t_6, __pyx_t_2, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(10, 462, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_1);
        __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
      }
      __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
      __Pyx_GIVEREF(__pyx_t_1);
      __pyx_cur_scope->__pyx_v_async_response_generator = __pyx_t_1;
      __pyx_t_1 = 0;

      /* "src/python/grpcio/grpc/_cython/_cygrpc/aio/server.pyx.pxi":459
 *         )
 *     else:
 *         if inspect.isasyncgenfunction(stream_handler):             # <<<<<<<<<<<<<<
 *             # Case 2: Async handler - async generator
 *             # The handler uses async generator API
 */
      goto __pyx_L6;
    }

    /* "src/python/grpcio/grpc/_cython/_cygrpc/aio/server.pyx.pxi":470
 *             # NOTE(lidiz) Streaming handler in sync stack is either a generator
 *             # function or a function returns a generator.
 *             sync_servicer_context = _SyncServicerContext(servicer_context)             # <<<<<<<<<<<<<<
 *             gen = stream_handler(request, sync_servicer_context)
 *             async_response_generator = generator_to_async_generator(gen,
 */
    /*else*/ {
      __pyx_t_1 = __Pyx_PyObject_CallOneArg(((PyObject *)__pyx_ptype_4grpc_7_cython_6cygrpc__SyncServicerContext), ((PyObject *)__pyx_cur_scope->__pyx_v_servicer_context)); if (unlikely(!__pyx_t_1)) __PYX_ERR(10, 470, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_1);
      __Pyx_GIVEREF(__pyx_t_1);
      __pyx_cur_scope->__pyx_v_sync_servicer_context = ((struct __pyx_obj_4grpc_7_cython_6cygrpc__SyncServicerContext *)__pyx_t_1);
      __pyx_t_1 = 0;

      /* "src/python/grpcio/grpc/_cython/_cygrpc/aio/server.pyx.pxi":471
 *             # function or a function returns a generator.
 *             sync_servicer_context = _SyncServicerContext(servicer_context)
 *             gen = stream_handler(request, sync_servicer_context)             # <<<<<<<<<<<<<<
 *             async_response_generator = generator_to_async_generator(gen,
 *                                                                     loop,
 */
      __Pyx_INCREF(__pyx_cur_scope->__pyx_v_stream_handler);
      __pyx_t_6 = __pyx_cur_scope->__pyx_v_stream_handler; __pyx_t_2 = NULL;
      __pyx_t_5 = 0;
      if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_6))) {
        __pyx_t_2 = PyMethod_GET_SELF(__pyx_t_6);
        if (likely(__pyx_t_2)) {
          PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_6);
          __Pyx_INCREF(__pyx_t_2);
          __Pyx_INCREF(function);
          __Pyx_DECREF_SET(__pyx_t_6, function);
          __pyx_t_5 = 1;
        }
      }
      #if CYTHON_FAST_PYCALL
      if (PyFunction_Check(__pyx_t_6)) {
        PyObject *__pyx_temp[3] = {__pyx_t_2, __pyx_cur_scope->__pyx_v_request, ((PyObject *)__pyx_cur_scope->__pyx_v_sync_servicer_context)};
        __pyx_t_1 = __Pyx_PyFunction_FastCall(__pyx_t_6, __pyx_temp+1-__pyx_t_5, 2+__pyx_t_5); if (unlikely(!__pyx_t_1)) __PYX_ERR(10, 471, __pyx_L1_error)
        __Pyx_XDECREF(__pyx_t_2); __pyx_t_2 = 0;
        __Pyx_GOTREF(__pyx_t_1);
      } else
      #endif
      #if CYTHON_FAST_PYCCALL
      if (__Pyx_PyFastCFunction_Check(__pyx_t_6)) {
        PyObject *__pyx_temp[3] = {__pyx_t_2, __pyx_cur_scope->__pyx_v_request, ((PyObject *)__pyx_cur_scope->__pyx_v_sync_servicer_context)};
        __pyx_t_1 = __Pyx_PyCFunction_FastCall(__pyx_t_6, __pyx_temp+1-__pyx_t_5, 2+__pyx_t_5); if (unlikely(!__pyx_t_1)) __PYX_ERR(10, 471, __pyx_L1_error)
        __Pyx_XDECREF(__pyx_t_2); __pyx_t_2 = 0;
        __Pyx_GOTREF(__pyx_t_1);
      } else
      #endif
      {
        __pyx_t_3 = PyTuple_New(2+__pyx_t_5); if (unlikely(!__pyx_t_3)) __PYX_ERR(10, 471, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_3);
        if (__pyx_t_2) {
          __Pyx_GIVEREF(__pyx_t_2); PyTuple_SET_ITEM(__pyx_t_3, 0, __pyx_t_2); __pyx_t_2 = NULL;
        }
        __Pyx_INCREF(__pyx_cur_scope->__pyx_v_request);
        __Pyx_GIVEREF(__pyx_cur_scope->__pyx_v_request);
        PyTuple_SET_ITEM(__pyx_t_3, 0+__pyx_t_5, __pyx_cur_scope->__pyx_v_request);
        __Pyx_INCREF(((PyObject *)__pyx_cur_scope->__pyx_v_sync_servicer_context));
        __Pyx_GIVEREF(((PyObject *)__pyx_cur_scope->__pyx_v_sync_servicer_context));
        PyTuple_SET_ITEM(__pyx_t_3, 1+__pyx_t_5, ((PyObject *)__pyx_cur_scope->__pyx_v_sync_servicer_context));
        __pyx_t_1 = __Pyx_PyObject_Call(__pyx_t_6, __pyx_t_3, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(10, 471, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_1);
        __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
      }
      __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
      __Pyx_GIVEREF(__pyx_t_1);
      __pyx_cur_scope->__pyx_v_gen = __pyx_t_1;
      __pyx_t_1 = 0;

      /* "src/python/grpcio/grpc/_cython/_cygrpc/aio/server.pyx.pxi":472
 *             sync_servicer_context = _SyncServicerContext(servicer_context)
 *             gen = stream_handler(request, sync_servicer_context)
 *             async_response_generator = generator_to_async_generator(gen,             # <<<<<<<<<<<<<<
 *                                                                     loop,
 *                                                                     rpc_state.server.thread_pool())
 */
      __Pyx_GetModuleGlobalName(__pyx_t_6, __pyx_n_s_generator_to_async_generator); if (unlikely(!__pyx_t_6)) __PYX_ERR(10, 472, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_6);

      /* "src/python/grpcio/grpc/_cython/_cygrpc/aio/server.pyx.pxi":474
 *             async_response_generator = generator_to_async_generator(gen,
 *                                                                     loop,
 *                                                                     rpc_state.server.thread_pool())             # <<<<<<<<<<<<<<
 * 
 *         # Consumes messages from the generator
 */
      __pyx_t_3 = ((struct __pyx_vtabstruct_4grpc_7_cython_6cygrpc_AioServer *)__pyx_cur_scope->__pyx_v_rpc_state->server->__pyx_vtab)->thread_pool(__pyx_cur_scope->__pyx_v_rpc_state->server); if (unlikely(!__pyx_t_3)) __PYX_ERR(10, 474, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_3);
      __pyx_t_2 = NULL;
      __pyx_t_5 = 0;
      if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_6))) {
        __pyx_t_2 = PyMethod_GET_SELF(__pyx_t_6);
        if (likely(__pyx_t_2)) {
          PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_6);
          __Pyx_INCREF(__pyx_t_2);
          __Pyx_INCREF(function);
          __Pyx_DECREF_SET(__pyx_t_6, function);
          __pyx_t_5 = 1;
        }
      }
      #if CYTHON_FAST_PYCALL
      if (PyFunction_Check(__pyx_t_6)) {
        PyObject *__pyx_temp[4] = {__pyx_t_2, __pyx_cur_scope->__pyx_v_gen, __pyx_cur_scope->__pyx_v_loop, __pyx_t_3};
        __pyx_t_1 = __Pyx_PyFunction_FastCall(__pyx_t_6, __pyx_temp+1-__pyx_t_5, 3+__pyx_t_5); if (unlikely(!__pyx_t_1)) __PYX_ERR(10, 472, __pyx_L1_error)
        __Pyx_XDECREF(__pyx_t_2); __pyx_t_2 = 0;
        __Pyx_GOTREF(__pyx_t_1);
        __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
      } else
      #endif
      #if CYTHON_FAST_PYCCALL
      if (__Pyx_PyFastCFunction_Check(__pyx_t_6)) {
        PyObject *__pyx_temp[4] = {__pyx_t_2, __pyx_cur_scope->__pyx_v_gen, __pyx_cur_scope->__pyx_v_loop, __pyx_t_3};
        __pyx_t_1 = __Pyx_PyCFunction_FastCall(__pyx_t_6, __pyx_temp+1-__pyx_t_5, 3+__pyx_t_5); if (unlikely(!__pyx_t_1)) __PYX_ERR(10, 472, __pyx_L1_error)
        __Pyx_XDECREF(__pyx_t_2); __pyx_t_2 = 0;
        __Pyx_GOTREF(__pyx_t_1);
        __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
      } else
      #endif
      {
        __pyx_t_7 = PyTuple_New(3+__pyx_t_5); if (unlikely(!__pyx_t_7)) __PYX_ERR(10, 472, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_7);
        if (__pyx_t_2) {
          __Pyx_GIVEREF(__pyx_t_2); PyTuple_SET_ITEM(__pyx_t_7, 0, __pyx_t_2); __pyx_t_2 = NULL;
        }
        __Pyx_INCREF(__pyx_cur_scope->__pyx_v_gen);
        __Pyx_GIVEREF(__pyx_cur_scope->__pyx_v_gen);
        PyTuple_SET_ITEM(__pyx_t_7, 0+__pyx_t_5, __pyx_cur_scope->__pyx_v_gen);
        __Pyx_INCREF(__pyx_cur_scope->__pyx_v_loop);
        __Pyx_GIVEREF(__pyx_cur_scope->__pyx_v_loop);
        PyTuple_SET_ITEM(__pyx_t_7, 1+__pyx_t_5, __pyx_cur_scope->__pyx_v_loop);
        __Pyx_GIVEREF(__pyx_t_3);
        PyTuple_SET_ITEM(__pyx_t_7, 2+__pyx_t_5, __pyx_t_3);
        __pyx_t_3 = 0;
        __pyx_t_1 = __Pyx_PyObject_Call(__pyx_t_6, __pyx_t_7, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(10, 472, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_1);
        __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
      }
      __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
      __Pyx_GIVEREF(__pyx_t_1);
      __pyx_cur_scope->__pyx_v_async_response_generator = __pyx_t_1;
      __pyx_t_1 = 0;
    }
    __pyx_L6:;

    /* "src/python/grpcio/grpc/_cython/_cygrpc/aio/server.pyx.pxi":477
 * 
 *         # Consumes messages from the generator
 *         async for response_message in async_response_generator:             # <<<<<<<<<<<<<<
 *             # Raises exception if aborted
 *             rpc_state.raise_for_termination()
 */
    __pyx_t_1 = __Pyx_Coroutine_GetAsyncIter(__pyx_cur_scope->__pyx_v_async_response_generator); if (unlikely(!__pyx_t_1)) __PYX_ERR(10, 477, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_1);
    for (;;) {
      __pyx_t_6 = __Pyx_Coroutine_AsyncIterNext(__pyx_t_1); if (unlikely(!__pyx_t_6)) __PYX_ERR(10, 477, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_6);
      __pyx_r = __Pyx_Coroutine_Yield_From(__pyx_generator, __pyx_t_6);
      __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
      __Pyx_XGOTREF(__pyx_r);
      if (likely(__pyx_r)) {
        __Pyx_XGIVEREF(__pyx_t_1);
        __pyx_cur_scope->__pyx_t_0 = __pyx_t_1;
        __Pyx_XGIVEREF(__pyx_r);
        __Pyx_RefNannyFinishContext();
        __Pyx_Coroutine_ResetAndClearException(__pyx_generator);
        /* return from generator, awaiting value */
        __pyx_generator->resume_label = 2;
        return __pyx_r;
        __pyx_L9_resume_from_await:;
        __pyx_t_1 = __pyx_cur_scope->__pyx_t_0;
        __pyx_cur_scope->__pyx_t_0 = 0;
        __Pyx_XGOTREF(__pyx_t_1);
        if (unlikely(!__pyx_sent_value)) {
          PyObject* exc_type = __Pyx_PyErr_Occurred();
          if (unlikely(exc_type && (exc_type == __Pyx_PyExc_StopAsyncIteration || ( exc_type != PyExc_StopIteration && exc_type != PyExc_GeneratorExit && __Pyx_PyErr_GivenExceptionMatches(exc_type, __Pyx_PyExc_StopAsyncIteration))))) {
            PyErr_Clear();
            break;
          }
          __PYX_ERR(10, 477, __pyx_L1_error)
        }
        __pyx_t_6 = __pyx_sent_value; __Pyx_INCREF(__pyx_t_6);
      } else {
        PyObject* exc_type = __Pyx_PyErr_Occurred();
        if (unlikely(exc_type && (exc_type == __Pyx_PyExc_StopAsyncIteration || ( exc_type != PyExc_StopIteration && exc_type != PyExc_GeneratorExit && __Pyx_PyErr_GivenExceptionMatches(exc_type, __Pyx_PyExc_StopAsyncIteration))))) {
          PyErr_Clear();
          break;
        }
        __pyx_t_6 = NULL;
        if (__Pyx_PyGen_FetchStopIterationValue(&__pyx_t_6) < 0) __PYX_ERR(10, 477, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_6);
      }
      __Pyx_XGOTREF(__pyx_cur_scope->__pyx_v_response_message);
      __Pyx_XDECREF_SET(__pyx_cur_scope->__pyx_v_response_message, __pyx_t_6);
      __Pyx_GIVEREF(__pyx_t_6);
      __pyx_t_6 = 0;

      /* "src/python/grpcio/grpc/_cython/_cygrpc/aio/server.pyx.pxi":479
 *         async for response_message in async_response_generator:
 *             # Raises exception if aborted
 *             rpc_state.raise_for_termination()             # <<<<<<<<<<<<<<
 * 
 *             await servicer_context.write(response_message)
 */
      ((struct __pyx_vtabstruct_4grpc_7_cython_6cygrpc_RPCState *)__pyx_cur_scope->__pyx_v_rpc_state->__pyx_vtab)->raise_for_termination(__pyx_cur_scope->__pyx_v_rpc_state); if (unlikely(PyErr_Occurred())) __PYX_ERR(10, 479, __pyx_L1_error)

      /* "src/python/grpcio/grpc/_cython/_cygrpc/aio/server.pyx.pxi":481
 *             rpc_state.raise_for_termination()
 * 
 *             await servicer_context.write(response_message)             # <<<<<<<<<<<<<<
 * 
 *     # Raises exception if aborted
 */
      __pyx_t_7 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_cur_scope->__pyx_v_servicer_context), __pyx_n_s_write); if (unlikely(!__pyx_t_7)) __PYX_ERR(10, 481, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_7);
      __pyx_t_3 = NULL;
      if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_7))) {
        __pyx_t_3 = PyMethod_GET_SELF(__pyx_t_7);
        if (likely(__pyx_t_3)) {
          PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_7);
          __Pyx_INCREF(__pyx_t_3);
          __Pyx_INCREF(function);
          __Pyx_DECREF_SET(__pyx_t_7, function);
        }
      }
      __pyx_t_6 = (__pyx_t_3) ? __Pyx_PyObject_Call2Args(__pyx_t_7, __pyx_t_3, __pyx_cur_scope->__pyx_v_response_message) : __Pyx_PyObject_CallOneArg(__pyx_t_7, __pyx_cur_scope->__pyx_v_response_message);
      __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0;
      if (unlikely(!__pyx_t_6)) __PYX_ERR(10, 481, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_6);
      __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
      __pyx_r = __Pyx_Coroutine_Yield_From(__pyx_generator, __pyx_t_6);
      __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
      __Pyx_XGOTREF(__pyx_r);
      if (likely(__pyx_r)) {
        __Pyx_XGIVEREF(__pyx_t_1);
        __pyx_cur_scope->__pyx_t_0 = __pyx_t_1;
        __Pyx_XGIVEREF(__pyx_r);
        __Pyx_RefNannyFinishContext();
        __Pyx_Coroutine_ResetAndClearException(__pyx_generator);
        /* return from generator, awaiting value */
        __pyx_generator->resume_label = 3;
        return __pyx_r;
        __pyx_L10_resume_from_await:;
        __pyx_t_1 = __pyx_cur_scope->__pyx_t_0;
        __pyx_cur_scope->__pyx_t_0 = 0;
        __Pyx_XGOTREF(__pyx_t_1);
        if (unlikely(!__pyx_sent_value)) __PYX_ERR(10, 481, __pyx_L1_error)
      } else {
        PyObject* exc_type = __Pyx_PyErr_Occurred();
        if (exc_type) {
          if (likely(exc_type == PyExc_StopIteration || (exc_type != PyExc_GeneratorExit && __Pyx_PyErr_GivenExceptionMatches(exc_type, PyExc_StopIteration)))) PyErr_Clear();
          else __PYX_ERR(10, 481, __pyx_L1_error)
        }
      }

      /* "src/python/grpcio/grpc/_cython/_cygrpc/aio/server.pyx.pxi":477
 * 
 *         # Consumes messages from the generator
 *         async for response_message in async_response_generator:             # <<<<<<<<<<<<<<
 *             # Raises exception if aborted
 *             rpc_state.raise_for_termination()
 */
    }
    __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  }
  __pyx_L4:;

  /* "src/python/grpcio/grpc/_cython/_cygrpc/aio/server.pyx.pxi":484
 * 
 *     # Raises exception if aborted
 *     rpc_state.raise_for_termination()             # <<<<<<<<<<<<<<
 * 
 *     # Sends the final status of this RPC
 */
  ((struct __pyx_vtabstruct_4grpc_7_cython_6cygrpc_RPCState *)__pyx_cur_scope->__pyx_v_rpc_state->__pyx_vtab)->raise_for_termination(__pyx_cur_scope->__pyx_v_rpc_state); if (unlikely(PyErr_Occurred())) __PYX_ERR(10, 484, __pyx_L1_error)

  /* "src/python/grpcio/grpc/_cython/_cygrpc/aio/server.pyx.pxi":489
 *     cdef SendStatusFromServerOperation op = SendStatusFromServerOperation(
 *         rpc_state.trailing_metadata,
 *         rpc_state.status_code,             # <<<<<<<<<<<<<<
 *         rpc_state.status_details,
 *         _EMPTY_FLAGS,
 */
  __pyx_t_1 = __Pyx_PyInt_From_grpc_status_code(__pyx_cur_scope->__pyx_v_rpc_state->status_code); if (unlikely(!__pyx_t_1)) __PYX_ERR(10, 489, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);

  /* "src/python/grpcio/grpc/_cython/_cygrpc/aio/server.pyx.pxi":491
 *         rpc_state.status_code,
 *         rpc_state.status_details,
 *         _EMPTY_FLAGS,             # <<<<<<<<<<<<<<
 *     )
 * 
 */
  __Pyx_GetModuleGlobalName(__pyx_t_6, __pyx_n_s_EMPTY_FLAGS); if (unlikely(!__pyx_t_6)) __PYX_ERR(10, 491, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_6);

  /* "src/python/grpcio/grpc/_cython/_cygrpc/aio/server.pyx.pxi":487
 * 
 *     # Sends the final status of this RPC
 *     cdef SendStatusFromServerOperation op = SendStatusFromServerOperation(             # <<<<<<<<<<<<<<
 *         rpc_state.trailing_metadata,
 *         rpc_state.status_code,
 */
  __pyx_t_7 = PyTuple_New(4); if (unlikely(!__pyx_t_7)) __PYX_ERR(10, 487, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_7);
  __Pyx_INCREF(__pyx_cur_scope->__pyx_v_rpc_state->trailing_metadata);
  __Pyx_GIVEREF(__pyx_cur_scope->__pyx_v_rpc_state->trailing_metadata);
  PyTuple_SET_ITEM(__pyx_t_7, 0, __pyx_cur_scope->__pyx_v_rpc_state->trailing_metadata);
  __Pyx_GIVEREF(__pyx_t_1);
  PyTuple_SET_ITEM(__pyx_t_7, 1, __pyx_t_1);
  __Pyx_INCREF(__pyx_cur_scope->__pyx_v_rpc_state->status_details);
  __Pyx_GIVEREF(__pyx_cur_scope->__pyx_v_rpc_state->status_details);
  PyTuple_SET_ITEM(__pyx_t_7, 2, __pyx_cur_scope->__pyx_v_rpc_state->status_details);
  __Pyx_GIVEREF(__pyx_t_6);
  PyTuple_SET_ITEM(__pyx_t_7, 3, __pyx_t_6);
  __pyx_t_1 = 0;
  __pyx_t_6 = 0;
  __pyx_t_6 = __Pyx_PyObject_Call(((PyObject *)__pyx_ptype_4grpc_7_cython_6cygrpc_SendStatusFromServerOperation), __pyx_t_7, NULL); if (unlikely(!__pyx_t_6)) __PYX_ERR(10, 487, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_6);
  __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
  __Pyx_GIVEREF(__pyx_t_6);
  __pyx_cur_scope->__pyx_v_op = ((struct __pyx_obj_4grpc_7_cython_6cygrpc_SendStatusFromServerOperation *)__pyx_t_6);
  __pyx_t_6 = 0;

  /* "src/python/grpcio/grpc/_cython/_cygrpc/aio/server.pyx.pxi":494
 *     )
 * 
 *     cdef tuple finish_ops = (op,)             # <<<<<<<<<<<<<<
 *     if not rpc_state.metadata_sent:
 *         finish_ops = prepend_send_initial_metadata_op(
 */
  __pyx_t_6 = PyTuple_New(1); if (unlikely(!__pyx_t_6)) __PYX_ERR(10, 494, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_6);
  __Pyx_INCREF(((PyObject *)__pyx_cur_scope->__pyx_v_op));
  __Pyx_GIVEREF(((PyObject *)__pyx_cur_scope->__pyx_v_op));
  PyTuple_SET_ITEM(__pyx_t_6, 0, ((PyObject *)__pyx_cur_scope->__pyx_v_op));
  __Pyx_GIVEREF(__pyx_t_6);
  __pyx_cur_scope->__pyx_v_finish_ops = ((PyObject*)__pyx_t_6);
  __pyx_t_6 = 0;

  /* "src/python/grpcio/grpc/_cython/_cygrpc/aio/server.pyx.pxi":495
 * 
 *     cdef tuple finish_ops = (op,)
 *     if not rpc_state.metadata_sent:             # <<<<<<<<<<<<<<
 *         finish_ops = prepend_send_initial_metadata_op(
 *             finish_ops,
 */
  __pyx_t_4 = ((!(__pyx_cur_scope->__pyx_v_rpc_state->metadata_sent != 0)) != 0);
  if (__pyx_t_4) {

    /* "src/python/grpcio/grpc/_cython/_cygrpc/aio/server.pyx.pxi":496
 *     cdef tuple finish_ops = (op,)
 *     if not rpc_state.metadata_sent:
 *         finish_ops = prepend_send_initial_metadata_op(             # <<<<<<<<<<<<<<
 *             finish_ops,
 *             None
 */
    __pyx_t_6 = __pyx_f_4grpc_7_cython_6cygrpc_prepend_send_initial_metadata_op(__pyx_cur_scope->__pyx_v_finish_ops, ((PyObject*)Py_None)); if (unlikely(!__pyx_t_6)) __PYX_ERR(10, 496, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_6);
    if (!(likely(PyTuple_CheckExact(__pyx_t_6))||((__pyx_t_6) == Py_None)||(PyErr_Format(PyExc_TypeError, "Expected %.16s, got %.200s", "tuple", Py_TYPE(__pyx_t_6)->tp_name), 0))) __PYX_ERR(10, 496, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_cur_scope->__pyx_v_finish_ops);
    __Pyx_DECREF_SET(__pyx_cur_scope->__pyx_v_finish_ops, ((PyObject*)__pyx_t_6));
    __Pyx_GIVEREF(__pyx_t_6);
    __pyx_t_6 = 0;

    /* "src/python/grpcio/grpc/_cython/_cygrpc/aio/server.pyx.pxi":495
 * 
 *     cdef tuple finish_ops = (op,)
 *     if not rpc_state.metadata_sent:             # <<<<<<<<<<<<<<
 *         finish_ops = prepend_send_initial_metadata_op(
 *             finish_ops,
 */
  }

  /* "src/python/grpcio/grpc/_cython/_cygrpc/aio/server.pyx.pxi":500
 *             None
 *         )
 *     rpc_state.metadata_sent = True             # <<<<<<<<<<<<<<
 *     rpc_state.status_sent = True
 *     await execute_batch(rpc_state, finish_ops, loop)
 */
  __pyx_cur_scope->__pyx_v_rpc_state->metadata_sent = 1;

  /* "src/python/grpcio/grpc/_cython/_cygrpc/aio/server.pyx.pxi":501
 *         )
 *     rpc_state.metadata_sent = True
 *     rpc_state.status_sent = True             # <<<<<<<<<<<<<<
 *     await execute_batch(rpc_state, finish_ops, loop)
 * 
 */
  __pyx_cur_scope->__pyx_v_rpc_state->status_sent = 1;

  /* "src/python/grpcio/grpc/_cython/_cygrpc/aio/server.pyx.pxi":502
 *     rpc_state.metadata_sent = True
 *     rpc_state.status_sent = True
 *     await execute_batch(rpc_state, finish_ops, loop)             # <<<<<<<<<<<<<<
 * 
 * 
 */
  __Pyx_GetModuleGlobalName(__pyx_t_7, __pyx_n_s_execute_batch); if (unlikely(!__pyx_t_7)) __PYX_ERR(10, 502, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_7);
  __pyx_t_1 = NULL;
  __pyx_t_5 = 0;
  if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_7))) {
    __pyx_t_1 = PyMethod_GET_SELF(__pyx_t_7);
    if (likely(__pyx_t_1)) {
      PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_7);
      __Pyx_INCREF(__pyx_t_1);
      __Pyx_INCREF(function);
      __Pyx_DECREF_SET(__pyx_t_7, function);
      __pyx_t_5 = 1;
    }
  }
  #if CYTHON_FAST_PYCALL
  if (PyFunction_Check(__pyx_t_7)) {
    PyObject *__pyx_temp[4] = {__pyx_t_1, ((PyObject *)__pyx_cur_scope->__pyx_v_rpc_state), __pyx_cur_scope->__pyx_v_finish_ops, __pyx_cur_scope->__pyx_v_loop};
    __pyx_t_6 = __Pyx_PyFunction_FastCall(__pyx_t_7, __pyx_temp+1-__pyx_t_5, 3+__pyx_t_5); if (unlikely(!__pyx_t_6)) __PYX_ERR(10, 502, __pyx_L1_error)
    __Pyx_XDECREF(__pyx_t_1); __pyx_t_1 = 0;
    __Pyx_GOTREF(__pyx_t_6);
  } else
  #endif
  #if CYTHON_FAST_PYCCALL
  if (__Pyx_PyFastCFunction_Check(__pyx_t_7)) {
    PyObject *__pyx_temp[4] = {__pyx_t_1, ((PyObject *)__pyx_cur_scope->__pyx_v_rpc_state), __pyx_cur_scope->__pyx_v_finish_ops, __pyx_cur_scope->__pyx_v_loop};
    __pyx_t_6 = __Pyx_PyCFunction_FastCall(__pyx_t_7, __pyx_temp+1-__pyx_t_5, 3+__pyx_t_5); if (unlikely(!__pyx_t_6)) __PYX_ERR(10, 502, __pyx_L1_error)
    __Pyx_XDECREF(__pyx_t_1); __pyx_t_1 = 0;
    __Pyx_GOTREF(__pyx_t_6);
  } else
  #endif
  {
    __pyx_t_3 = PyTuple_New(3+__pyx_t_5); if (unlikely(!__pyx_t_3)) __PYX_ERR(10, 502, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_3);
    if (__pyx_t_1) {
      __Pyx_GIVEREF(__pyx_t_1); PyTuple_SET_ITEM(__pyx_t_3, 0, __pyx_t_1); __pyx_t_1 = NULL;
    }
    __Pyx_INCREF(((PyObject *)__pyx_cur_scope->__pyx_v_rpc_state));
    __Pyx_GIVEREF(((PyObject *)__pyx_cur_scope->__pyx_v_rpc_state));
    PyTuple_SET_ITEM(__pyx_t_3, 0+__pyx_t_5, ((PyObject *)__pyx_cur_scope->__pyx_v_rpc_state));
    __Pyx_INCREF(__pyx_cur_scope->__pyx_v_finish_ops);
    __Pyx_GIVEREF(__pyx_cur_scope->__pyx_v_finish_ops);
    PyTuple_SET_ITEM(__pyx_t_3, 1+__pyx_t_5, __pyx_cur_scope->__pyx_v_finish_ops);
    __Pyx_INCREF(__pyx_cur_scope->__pyx_v_loop);
    __Pyx_GIVEREF(__pyx_cur_scope->__pyx_v_loop);
    PyTuple_SET_ITEM(__pyx_t_3, 2+__pyx_t_5, __pyx_cur_scope->__pyx_v_loop);
    __pyx_t_6 = __Pyx_PyObject_Call(__pyx_t_7, __pyx_t_3, NULL); if (unlikely(!__pyx_t_6)) __PYX_ERR(10, 502, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_6);
    __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
  }
  __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
  __pyx_r = __Pyx_Coroutine_Yield_From(__pyx_generator, __pyx_t_6);
  __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
  __Pyx_XGOTREF(__pyx_r);
  if (likely(__pyx_r)) {
    __Pyx_XGIVEREF(__pyx_r);
    __Pyx_RefNannyFinishContext();
    __Pyx_Coroutine_ResetAndClearException(__pyx_generator);
    /* return from generator, awaiting value */
    __pyx_generator->resume_label = 4;
    return __pyx_r;
    __pyx_L12_resume_from_await:;
    if (unlikely(!__pyx_sent_value)) __PYX_ERR(10, 502, __pyx_L1_error)
  } else {
    PyObject* exc_type = __Pyx_PyErr_Occurred();
    if (exc_type) {
      if (likely(exc_type == PyExc_StopIteration || (exc_type != PyExc_GeneratorExit && __Pyx_PyErr_GivenExceptionMatches(exc_type, PyExc_StopIteration)))) PyErr_Clear();
      else __PYX_ERR(10, 502, __pyx_L1_error)
    }
  }
  CYTHON_MAYBE_UNUSED_VAR(__pyx_cur_scope);

  /* "src/python/grpcio/grpc/_cython/_cygrpc/aio/server.pyx.pxi":437
 * 
 * 
 * async def _finish_handler_with_stream_responses(RPCState rpc_state,             # <<<<<<<<<<<<<<
 *                                                 object stream_handler,
 *                                                 object request,
 */

  /* function exit code */
  PyErr_SetNone(PyExc_StopIteration);
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_XDECREF(__pyx_t_3);
  __Pyx_XDECREF(__pyx_t_6);
  __Pyx_XDECREF(__pyx_t_7);
  __Pyx_AddTraceback("_finish_handler_with_stream_responses", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_L0:;
  __Pyx_XDECREF(__pyx_r); __pyx_r = 0;
  #if !CYTHON_USE_EXC_INFO_STACK
  __Pyx_Coroutine_ResetAndClearException(__pyx_generator);
  #endif
  __pyx_generator->resume_label = -1;
  __Pyx_Coroutine_clear((PyObject*)__pyx_generator);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}
static PyObject *__pyx_gb_4grpc_7_cython_6cygrpc_160generator28(__pyx_CoroutineObject *__pyx_generator, CYTHON_UNUSED PyThreadState *__pyx_tstate, PyObject *__pyx_sent_value); /* proto */

/* "src/python/grpcio/grpc/_cython/_cygrpc/aio/server.pyx.pxi":505
 * 
 * 
 * async def _handle_unary_unary_rpc(object method_handler,             # <<<<<<<<<<<<<<
 *                                   RPCState rpc_state,
 *                                   object loop):
 */

/* Python wrapper */
static PyObject *__pyx_pw_4grpc_7_cython_6cygrpc_159_handle_unary_unary_rpc(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
static PyMethodDef __pyx_mdef_4grpc_7_cython_6cygrpc_159_handle_unary_unary_rpc = {"_handle_unary_unary_rpc", (PyCFunction)(void*)(PyCFunctionWithKeywords)__pyx_pw_4grpc_7_cython_6cygrpc_159_handle_unary_unary_rpc, METH_VARARGS|METH_KEYWORDS, 0};
static PyObject *__pyx_pw_4grpc_7_cython_6cygrpc_159_handle_unary_unary_rpc(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
  PyObject *__pyx_v_method_handler = 0;
  struct __pyx_obj_4grpc_7_cython_6cygrpc_RPCState *__pyx_v_rpc_state = 0;
  PyObject *__pyx_v_loop = 0;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("_handle_unary_unary_rpc (wrapper)", 0);
  {
    static PyObject **__pyx_pyargnames[] = {&__pyx_n_s_method_handler,&__pyx_n_s_rpc_state,&__pyx_n_s_loop,0};
    PyObject* values[3] = {0,0,0};
    if (unlikely(__pyx_kwds)) {
      Py_ssize_t kw_args;
      const Py_ssize_t pos_args = PyTuple_GET_SIZE(__pyx_args);
      switch (pos_args) {
        case  3: values[2] = PyTuple_GET_ITEM(__pyx_args, 2);
        CYTHON_FALLTHROUGH;
        case  2: values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
        CYTHON_FALLTHROUGH;
        case  1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
        CYTHON_FALLTHROUGH;
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      kw_args = PyDict_Size(__pyx_kwds);
      switch (pos_args) {
        case  0:
        if (likely((values[0] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_method_handler)) != 0)) kw_args--;
        else goto __pyx_L5_argtuple_error;
        CYTHON_FALLTHROUGH;
        case  1:
        if (likely((values[1] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_rpc_state)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("_handle_unary_unary_rpc", 1, 3, 3, 1); __PYX_ERR(10, 505, __pyx_L3_error)
        }
        CYTHON_FALLTHROUGH;
        case  2:
        if (likely((values[2] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_loop)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("_handle_unary_unary_rpc", 1, 3, 3, 2); __PYX_ERR(10, 505, __pyx_L3_error)
        }
      }
      if (unlikely(kw_args > 0)) {
        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "_handle_unary_unary_rpc") < 0)) __PYX_ERR(10, 505, __pyx_L3_error)
      }
    } else if (PyTuple_GET_SIZE(__pyx_args) != 3) {
      goto __pyx_L5_argtuple_error;
    } else {
      values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
      values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
      values[2] = PyTuple_GET_ITEM(__pyx_args, 2);
    }
    __pyx_v_method_handler = values[0];
    __pyx_v_rpc_state = ((struct __pyx_obj_4grpc_7_cython_6cygrpc_RPCState *)values[1]);
    __pyx_v_loop = values[2];
  }
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("_handle_unary_unary_rpc", 1, 3, 3, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(10, 505, __pyx_L3_error)
  __pyx_L3_error:;
  __Pyx_AddTraceback("grpc._cython.cygrpc._handle_unary_unary_rpc", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_rpc_state), __pyx_ptype_4grpc_7_cython_6cygrpc_RPCState, 1, "rpc_state", 0))) __PYX_ERR(10, 506, __pyx_L1_error)
  __pyx_r = __pyx_pf_4grpc_7_cython_6cygrpc_158_handle_unary_unary_rpc(__pyx_self, __pyx_v_method_handler, __pyx_v_rpc_state, __pyx_v_loop);

  /* function exit code */
  goto __pyx_L0;
  __pyx_L1_error:;
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_4grpc_7_cython_6cygrpc_158_handle_unary_unary_rpc(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__pyx_v_method_handler, struct __pyx_obj_4grpc_7_cython_6cygrpc_RPCState *__pyx_v_rpc_state, PyObject *__pyx_v_loop) {
  struct __pyx_obj_4grpc_7_cython_6cygrpc___pyx_scope_struct_40__handle_unary_unary_rpc *__pyx_cur_scope;
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("_handle_unary_unary_rpc", 0);
  __pyx_cur_scope = (struct __pyx_obj_4grpc_7_cython_6cygrpc___pyx_scope_struct_40__handle_unary_unary_rpc *)__pyx_tp_new_4grpc_7_cython_6cygrpc___pyx_scope_struct_40__handle_unary_unary_rpc(__pyx_ptype_4grpc_7_cython_6cygrpc___pyx_scope_struct_40__handle_unary_unary_rpc, __pyx_empty_tuple, NULL);
  if (unlikely(!__pyx_cur_scope)) {
    __pyx_cur_scope = ((struct __pyx_obj_4grpc_7_cython_6cygrpc___pyx_scope_struct_40__handle_unary_unary_rpc *)Py_None);
    __Pyx_INCREF(Py_None);
    __PYX_ERR(10, 505, __pyx_L1_error)
  } else {
    __Pyx_GOTREF(__pyx_cur_scope);
  }
  __pyx_cur_scope->__pyx_v_method_handler = __pyx_v_method_handler;
  __Pyx_INCREF(__pyx_cur_scope->__pyx_v_method_handler);
  __Pyx_GIVEREF(__pyx_cur_scope->__pyx_v_method_handler);
  __pyx_cur_scope->__pyx_v_rpc_state = __pyx_v_rpc_state;
  __Pyx_INCREF((PyObject *)__pyx_cur_scope->__pyx_v_rpc_state);
  __Pyx_GIVEREF((PyObject *)__pyx_cur_scope->__pyx_v_rpc_state);
  __pyx_cur_scope->__pyx_v_loop = __pyx_v_loop;
  __Pyx_INCREF(__pyx_cur_scope->__pyx_v_loop);
  __Pyx_GIVEREF(__pyx_cur_scope->__pyx_v_loop);
  {
    __pyx_CoroutineObject *gen = __Pyx_Coroutine_New((__pyx_coroutine_body_t) __pyx_gb_4grpc_7_cython_6cygrpc_160generator28, __pyx_codeobj__187, (PyObject *) __pyx_cur_scope, __pyx_n_s_handle_unary_unary_rpc, __pyx_n_s_handle_unary_unary_rpc, __pyx_n_s_grpc__cython_cygrpc); if (unlikely(!gen)) __PYX_ERR(10, 505, __pyx_L1_error)
    __Pyx_DECREF(__pyx_cur_scope);
    __Pyx_RefNannyFinishContext();
    return (PyObject *) gen;
  }

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_AddTraceback("grpc._cython.cygrpc._handle_unary_unary_rpc", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __Pyx_DECREF(((PyObject *)__pyx_cur_scope));
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_gb_4grpc_7_cython_6cygrpc_160generator28(__pyx_CoroutineObject *__pyx_generator, CYTHON_UNUSED PyThreadState *__pyx_tstate, PyObject *__pyx_sent_value) /* generator body */
{
  struct __pyx_obj_4grpc_7_cython_6cygrpc___pyx_scope_struct_40__handle_unary_unary_rpc *__pyx_cur_scope = ((struct __pyx_obj_4grpc_7_cython_6cygrpc___pyx_scope_struct_40__handle_unary_unary_rpc *)__pyx_generator->closure);
  PyObject *__pyx_r = NULL;
  PyObject *__pyx_t_1 = NULL;
  PyObject *__pyx_t_2 = NULL;
  PyObject *__pyx_t_3 = NULL;
  int __pyx_t_4;
  PyObject *__pyx_t_5 = NULL;
  int __pyx_t_6;
  int __pyx_t_7;
  PyObject *__pyx_t_8 = NULL;
  PyObject *__pyx_t_9 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("_handle_unary_unary_rpc", 0);
  switch (__pyx_generator->resume_label) {
    case 0: goto __pyx_L3_first_run;
    case 1: goto __pyx_L4_resume_from_await;
    case 2: goto __pyx_L6_resume_from_await;
    default: /* CPython raises the right error here */
    __Pyx_RefNannyFinishContext();
    return NULL;
  }
  __pyx_L3_first_run:;
  if (unlikely(!__pyx_sent_value)) __PYX_ERR(10, 505, __pyx_L1_error)

  /* "src/python/grpcio/grpc/_cython/_cygrpc/aio/server.pyx.pxi":509
 *                                   object loop):
 *     # Receives request message
 *     cdef bytes request_raw = await _receive_message(rpc_state, loop)             # <<<<<<<<<<<<<<
 *     if request_raw is None:
 *         # The RPC was cancelled immediately after start on client side.
 */
  __Pyx_GetModuleGlobalName(__pyx_t_2, __pyx_n_s_receive_message); if (unlikely(!__pyx_t_2)) __PYX_ERR(10, 509, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __pyx_t_3 = NULL;
  __pyx_t_4 = 0;
  if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_2))) {
    __pyx_t_3 = PyMethod_GET_SELF(__pyx_t_2);
    if (likely(__pyx_t_3)) {
      PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_2);
      __Pyx_INCREF(__pyx_t_3);
      __Pyx_INCREF(function);
      __Pyx_DECREF_SET(__pyx_t_2, function);
      __pyx_t_4 = 1;
    }
  }
  #if CYTHON_FAST_PYCALL
  if (PyFunction_Check(__pyx_t_2)) {
    PyObject *__pyx_temp[3] = {__pyx_t_3, ((PyObject *)__pyx_cur_scope->__pyx_v_rpc_state), __pyx_cur_scope->__pyx_v_loop};
    __pyx_t_1 = __Pyx_PyFunction_FastCall(__pyx_t_2, __pyx_temp+1-__pyx_t_4, 2+__pyx_t_4); if (unlikely(!__pyx_t_1)) __PYX_ERR(10, 509, __pyx_L1_error)
    __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0;
    __Pyx_GOTREF(__pyx_t_1);
  } else
  #endif
  #if CYTHON_FAST_PYCCALL
  if (__Pyx_PyFastCFunction_Check(__pyx_t_2)) {
    PyObject *__pyx_temp[3] = {__pyx_t_3, ((PyObject *)__pyx_cur_scope->__pyx_v_rpc_state), __pyx_cur_scope->__pyx_v_loop};
    __pyx_t_1 = __Pyx_PyCFunction_FastCall(__pyx_t_2, __pyx_temp+1-__pyx_t_4, 2+__pyx_t_4); if (unlikely(!__pyx_t_1)) __PYX_ERR(10, 509, __pyx_L1_error)
    __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0;
    __Pyx_GOTREF(__pyx_t_1);
  } else
  #endif
  {
    __pyx_t_5 = PyTuple_New(2+__pyx_t_4); if (unlikely(!__pyx_t_5)) __PYX_ERR(10, 509, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_5);
    if (__pyx_t_3) {
      __Pyx_GIVEREF(__pyx_t_3); PyTuple_SET_ITEM(__pyx_t_5, 0, __pyx_t_3); __pyx_t_3 = NULL;
    }
    __Pyx_INCREF(((PyObject *)__pyx_cur_scope->__pyx_v_rpc_state));
    __Pyx_GIVEREF(((PyObject *)__pyx_cur_scope->__pyx_v_rpc_state));
    PyTuple_SET_ITEM(__pyx_t_5, 0+__pyx_t_4, ((PyObject *)__pyx_cur_scope->__pyx_v_rpc_state));
    __Pyx_INCREF(__pyx_cur_scope->__pyx_v_loop);
    __Pyx_GIVEREF(__pyx_cur_scope->__pyx_v_loop);
    PyTuple_SET_ITEM(__pyx_t_5, 1+__pyx_t_4, __pyx_cur_scope->__pyx_v_loop);
    __pyx_t_1 = __Pyx_PyObject_Call(__pyx_t_2, __pyx_t_5, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(10, 509, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_1);
    __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
  }
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  __pyx_r = __Pyx_Coroutine_Yield_From(__pyx_generator, __pyx_t_1);
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  __Pyx_XGOTREF(__pyx_r);
  if (likely(__pyx_r)) {
    __Pyx_XGIVEREF(__pyx_r);
    __Pyx_RefNannyFinishContext();
    __Pyx_Coroutine_ResetAndClearException(__pyx_generator);
    /* return from generator, awaiting value */
    __pyx_generator->resume_label = 1;
    return __pyx_r;
    __pyx_L4_resume_from_await:;
    if (unlikely(!__pyx_sent_value)) __PYX_ERR(10, 509, __pyx_L1_error)
    __pyx_t_1 = __pyx_sent_value; __Pyx_INCREF(__pyx_t_1);
  } else {
    __pyx_t_1 = NULL;
    if (__Pyx_PyGen_FetchStopIterationValue(&__pyx_t_1) < 0) __PYX_ERR(10, 509, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_1);
  }
  if (!(likely(PyBytes_CheckExact(__pyx_t_1))||((__pyx_t_1) == Py_None)||(PyErr_Format(PyExc_TypeError, "Expected %.16s, got %.200s", "bytes", Py_TYPE(__pyx_t_1)->tp_name), 0))) __PYX_ERR(10, 509, __pyx_L1_error)
  __Pyx_GIVEREF(__pyx_t_1);
  __pyx_cur_scope->__pyx_v_request_raw = ((PyObject*)__pyx_t_1);
  __pyx_t_1 = 0;

  /* "src/python/grpcio/grpc/_cython/_cygrpc/aio/server.pyx.pxi":510
 *     # Receives request message
 *     cdef bytes request_raw = await _receive_message(rpc_state, loop)
 *     if request_raw is None:             # <<<<<<<<<<<<<<
 *         # The RPC was cancelled immediately after start on client side.
 *         return
 */
  __pyx_t_6 = (__pyx_cur_scope->__pyx_v_request_raw == ((PyObject*)Py_None));
  __pyx_t_7 = (__pyx_t_6 != 0);
  if (__pyx_t_7) {

    /* "src/python/grpcio/grpc/_cython/_cygrpc/aio/server.pyx.pxi":512
 *     if request_raw is None:
 *         # The RPC was cancelled immediately after start on client side.
 *         return             # <<<<<<<<<<<<<<
 * 
 *     # Deserializes the request message
 */
    __Pyx_XDECREF(__pyx_r);
    __pyx_r = NULL;
    goto __pyx_L0;

    /* "src/python/grpcio/grpc/_cython/_cygrpc/aio/server.pyx.pxi":510
 *     # Receives request message
 *     cdef bytes request_raw = await _receive_message(rpc_state, loop)
 *     if request_raw is None:             # <<<<<<<<<<<<<<
 *         # The RPC was cancelled immediately after start on client side.
 *         return
 */
  }

  /* "src/python/grpcio/grpc/_cython/_cygrpc/aio/server.pyx.pxi":516
 *     # Deserializes the request message
 *     cdef object request_message = deserialize(
 *         method_handler.request_deserializer,             # <<<<<<<<<<<<<<
 *         request_raw,
 *     )
 */
  __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_cur_scope->__pyx_v_method_handler, __pyx_n_s_request_deserializer); if (unlikely(!__pyx_t_1)) __PYX_ERR(10, 516, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);

  /* "src/python/grpcio/grpc/_cython/_cygrpc/aio/server.pyx.pxi":515
 * 
 *     # Deserializes the request message
 *     cdef object request_message = deserialize(             # <<<<<<<<<<<<<<
 *         method_handler.request_deserializer,
 *         request_raw,
 */
  __pyx_t_2 = __pyx_f_4grpc_7_cython_6cygrpc_deserialize(__pyx_t_1, __pyx_cur_scope->__pyx_v_request_raw); if (unlikely(!__pyx_t_2)) __PYX_ERR(10, 515, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  __Pyx_GIVEREF(__pyx_t_2);
  __pyx_cur_scope->__pyx_v_request_message = __pyx_t_2;
  __pyx_t_2 = 0;

  /* "src/python/grpcio/grpc/_cython/_cygrpc/aio/server.pyx.pxi":521
 * 
 *     # Creates a dedecated ServicerContext
 *     cdef _ServicerContext servicer_context = _ServicerContext(             # <<<<<<<<<<<<<<
 *         rpc_state,
 *         None,
 */
  __pyx_t_2 = PyTuple_New(4); if (unlikely(!__pyx_t_2)) __PYX_ERR(10, 521, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __Pyx_INCREF(((PyObject *)__pyx_cur_scope->__pyx_v_rpc_state));
  __Pyx_GIVEREF(((PyObject *)__pyx_cur_scope->__pyx_v_rpc_state));
  PyTuple_SET_ITEM(__pyx_t_2, 0, ((PyObject *)__pyx_cur_scope->__pyx_v_rpc_state));
  __Pyx_INCREF(Py_None);
  __Pyx_GIVEREF(Py_None);
  PyTuple_SET_ITEM(__pyx_t_2, 1, Py_None);
  __Pyx_INCREF(Py_None);
  __Pyx_GIVEREF(Py_None);
  PyTuple_SET_ITEM(__pyx_t_2, 2, Py_None);
  __Pyx_INCREF(__pyx_cur_scope->__pyx_v_loop);
  __Pyx_GIVEREF(__pyx_cur_scope->__pyx_v_loop);
  PyTuple_SET_ITEM(__pyx_t_2, 3, __pyx_cur_scope->__pyx_v_loop);
  __pyx_t_1 = __Pyx_PyObject_Call(((PyObject *)__pyx_ptype_4grpc_7_cython_6cygrpc__ServicerContext), __pyx_t_2, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(10, 521, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  __Pyx_GIVEREF(__pyx_t_1);
  __pyx_cur_scope->__pyx_v_servicer_context = ((struct __pyx_obj_4grpc_7_cython_6cygrpc__ServicerContext *)__pyx_t_1);
  __pyx_t_1 = 0;

  /* "src/python/grpcio/grpc/_cython/_cygrpc/aio/server.pyx.pxi":529
 * 
 *     # Finishes the application handler
 *     await _finish_handler_with_unary_response(             # <<<<<<<<<<<<<<
 *         rpc_state,
 *         method_handler.unary_unary,
 */
  __Pyx_GetModuleGlobalName(__pyx_t_2, __pyx_n_s_finish_handler_with_unary_respo); if (unlikely(!__pyx_t_2)) __PYX_ERR(10, 529, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);

  /* "src/python/grpcio/grpc/_cython/_cygrpc/aio/server.pyx.pxi":531
 *     await _finish_handler_with_unary_response(
 *         rpc_state,
 *         method_handler.unary_unary,             # <<<<<<<<<<<<<<
 *         request_message,
 *         servicer_context,
 */
  __pyx_t_5 = __Pyx_PyObject_GetAttrStr(__pyx_cur_scope->__pyx_v_method_handler, __pyx_n_s_unary_unary); if (unlikely(!__pyx_t_5)) __PYX_ERR(10, 531, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_5);

  /* "src/python/grpcio/grpc/_cython/_cygrpc/aio/server.pyx.pxi":534
 *         request_message,
 *         servicer_context,
 *         method_handler.response_serializer,             # <<<<<<<<<<<<<<
 *         loop
 *     )
 */
  __pyx_t_3 = __Pyx_PyObject_GetAttrStr(__pyx_cur_scope->__pyx_v_method_handler, __pyx_n_s_response_serializer); if (unlikely(!__pyx_t_3)) __PYX_ERR(10, 534, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);

  /* "src/python/grpcio/grpc/_cython/_cygrpc/aio/server.pyx.pxi":535
 *         servicer_context,
 *         method_handler.response_serializer,
 *         loop             # <<<<<<<<<<<<<<
 *     )
 * 
 */
  __pyx_t_8 = NULL;
  __pyx_t_4 = 0;
  if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_2))) {
    __pyx_t_8 = PyMethod_GET_SELF(__pyx_t_2);
    if (likely(__pyx_t_8)) {
      PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_2);
      __Pyx_INCREF(__pyx_t_8);
      __Pyx_INCREF(function);
      __Pyx_DECREF_SET(__pyx_t_2, function);
      __pyx_t_4 = 1;
    }
  }
  #if CYTHON_FAST_PYCALL
  if (PyFunction_Check(__pyx_t_2)) {
    PyObject *__pyx_temp[7] = {__pyx_t_8, ((PyObject *)__pyx_cur_scope->__pyx_v_rpc_state), __pyx_t_5, __pyx_cur_scope->__pyx_v_request_message, ((PyObject *)__pyx_cur_scope->__pyx_v_servicer_context), __pyx_t_3, __pyx_cur_scope->__pyx_v_loop};
    __pyx_t_1 = __Pyx_PyFunction_FastCall(__pyx_t_2, __pyx_temp+1-__pyx_t_4, 6+__pyx_t_4); if (unlikely(!__pyx_t_1)) __PYX_ERR(10, 529, __pyx_L1_error)
    __Pyx_XDECREF(__pyx_t_8); __pyx_t_8 = 0;
    __Pyx_GOTREF(__pyx_t_1);
    __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
    __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
  } else
  #endif
  #if CYTHON_FAST_PYCCALL
  if (__Pyx_PyFastCFunction_Check(__pyx_t_2)) {
    PyObject *__pyx_temp[7] = {__pyx_t_8, ((PyObject *)__pyx_cur_scope->__pyx_v_rpc_state), __pyx_t_5, __pyx_cur_scope->__pyx_v_request_message, ((PyObject *)__pyx_cur_scope->__pyx_v_servicer_context), __pyx_t_3, __pyx_cur_scope->__pyx_v_loop};
    __pyx_t_1 = __Pyx_PyCFunction_FastCall(__pyx_t_2, __pyx_temp+1-__pyx_t_4, 6+__pyx_t_4); if (unlikely(!__pyx_t_1)) __PYX_ERR(10, 529, __pyx_L1_error)
    __Pyx_XDECREF(__pyx_t_8); __pyx_t_8 = 0;
    __Pyx_GOTREF(__pyx_t_1);
    __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
    __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
  } else
  #endif
  {
    __pyx_t_9 = PyTuple_New(6+__pyx_t_4); if (unlikely(!__pyx_t_9)) __PYX_ERR(10, 529, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_9);
    if (__pyx_t_8) {
      __Pyx_GIVEREF(__pyx_t_8); PyTuple_SET_ITEM(__pyx_t_9, 0, __pyx_t_8); __pyx_t_8 = NULL;
    }
    __Pyx_INCREF(((PyObject *)__pyx_cur_scope->__pyx_v_rpc_state));
    __Pyx_GIVEREF(((PyObject *)__pyx_cur_scope->__pyx_v_rpc_state));
    PyTuple_SET_ITEM(__pyx_t_9, 0+__pyx_t_4, ((PyObject *)__pyx_cur_scope->__pyx_v_rpc_state));
    __Pyx_GIVEREF(__pyx_t_5);
    PyTuple_SET_ITEM(__pyx_t_9, 1+__pyx_t_4, __pyx_t_5);
    __Pyx_INCREF(__pyx_cur_scope->__pyx_v_request_message);
    __Pyx_GIVEREF(__pyx_cur_scope->__pyx_v_request_message);
    PyTuple_SET_ITEM(__pyx_t_9, 2+__pyx_t_4, __pyx_cur_scope->__pyx_v_request_message);
    __Pyx_INCREF(((PyObject *)__pyx_cur_scope->__pyx_v_servicer_context));
    __Pyx_GIVEREF(((PyObject *)__pyx_cur_scope->__pyx_v_servicer_context));
    PyTuple_SET_ITEM(__pyx_t_9, 3+__pyx_t_4, ((PyObject *)__pyx_cur_scope->__pyx_v_servicer_context));
    __Pyx_GIVEREF(__pyx_t_3);
    PyTuple_SET_ITEM(__pyx_t_9, 4+__pyx_t_4, __pyx_t_3);
    __Pyx_INCREF(__pyx_cur_scope->__pyx_v_loop);
    __Pyx_GIVEREF(__pyx_cur_scope->__pyx_v_loop);
    PyTuple_SET_ITEM(__pyx_t_9, 5+__pyx_t_4, __pyx_cur_scope->__pyx_v_loop);
    __pyx_t_5 = 0;
    __pyx_t_3 = 0;
    __pyx_t_1 = __Pyx_PyObject_Call(__pyx_t_2, __pyx_t_9, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(10, 529, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_1);
    __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0;
  }
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  __pyx_r = __Pyx_Coroutine_Yield_From(__pyx_generator, __pyx_t_1);
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  __Pyx_XGOTREF(__pyx_r);
  if (likely(__pyx_r)) {
    __Pyx_XGIVEREF(__pyx_r);
    __Pyx_RefNannyFinishContext();
    __Pyx_Coroutine_ResetAndClearException(__pyx_generator);
    /* return from generator, awaiting value */
    __pyx_generator->resume_label = 2;
    return __pyx_r;
    __pyx_L6_resume_from_await:;
    if (unlikely(!__pyx_sent_value)) __PYX_ERR(10, 529, __pyx_L1_error)
  } else {
    PyObject* exc_type = __Pyx_PyErr_Occurred();
    if (exc_type) {
      if (likely(exc_type == PyExc_StopIteration || (exc_type != PyExc_GeneratorExit && __Pyx_PyErr_GivenExceptionMatches(exc_type, PyExc_StopIteration)))) PyErr_Clear();
      else __PYX_ERR(10, 529, __pyx_L1_error)
    }
  }
  CYTHON_MAYBE_UNUSED_VAR(__pyx_cur_scope);

  /* "src/python/grpcio/grpc/_cython/_cygrpc/aio/server.pyx.pxi":505
 * 
 * 
 * async def _handle_unary_unary_rpc(object method_handler,             # <<<<<<<<<<<<<<
 *                                   RPCState rpc_state,
 *                                   object loop):
 */

  /* function exit code */
  PyErr_SetNone(PyExc_StopIteration);
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_XDECREF(__pyx_t_3);
  __Pyx_XDECREF(__pyx_t_5);
  __Pyx_XDECREF(__pyx_t_8);
  __Pyx_XDECREF(__pyx_t_9);
  __Pyx_AddTraceback("_handle_unary_unary_rpc", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_L0:;
  __Pyx_XDECREF(__pyx_r); __pyx_r = 0;
  #if !CYTHON_USE_EXC_INFO_STACK
  __Pyx_Coroutine_ResetAndClearException(__pyx_generator);
  #endif
  __pyx_generator->resume_label = -1;
  __Pyx_Coroutine_clear((PyObject*)__pyx_generator);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}
static PyObject *__pyx_gb_4grpc_7_cython_6cygrpc_163generator29(__pyx_CoroutineObject *__pyx_generator, CYTHON_UNUSED PyThreadState *__pyx_tstate, PyObject *__pyx_sent_value); /* proto */

/* "src/python/grpcio/grpc/_cython/_cygrpc/aio/server.pyx.pxi":539
 * 
 * 
 * async def _handle_unary_stream_rpc(object method_handler,             # <<<<<<<<<<<<<<
 *                                    RPCState rpc_state,
 *                                    object loop):
 */

/* Python wrapper */
static PyObject *__pyx_pw_4grpc_7_cython_6cygrpc_162_handle_unary_stream_rpc(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
static PyMethodDef __pyx_mdef_4grpc_7_cython_6cygrpc_162_handle_unary_stream_rpc = {"_handle_unary_stream_rpc", (PyCFunction)(void*)(PyCFunctionWithKeywords)__pyx_pw_4grpc_7_cython_6cygrpc_162_handle_unary_stream_rpc, METH_VARARGS|METH_KEYWORDS, 0};
static PyObject *__pyx_pw_4grpc_7_cython_6cygrpc_162_handle_unary_stream_rpc(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
  PyObject *__pyx_v_method_handler = 0;
  struct __pyx_obj_4grpc_7_cython_6cygrpc_RPCState *__pyx_v_rpc_state = 0;
  PyObject *__pyx_v_loop = 0;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("_handle_unary_stream_rpc (wrapper)", 0);
  {
    static PyObject **__pyx_pyargnames[] = {&__pyx_n_s_method_handler,&__pyx_n_s_rpc_state,&__pyx_n_s_loop,0};
    PyObject* values[3] = {0,0,0};
    if (unlikely(__pyx_kwds)) {
      Py_ssize_t kw_args;
      const Py_ssize_t pos_args = PyTuple_GET_SIZE(__pyx_args);
      switch (pos_args) {
        case  3: values[2] = PyTuple_GET_ITEM(__pyx_args, 2);
        CYTHON_FALLTHROUGH;
        case  2: values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
        CYTHON_FALLTHROUGH;
        case  1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
        CYTHON_FALLTHROUGH;
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      kw_args = PyDict_Size(__pyx_kwds);
      switch (pos_args) {
        case  0:
        if (likely((values[0] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_method_handler)) != 0)) kw_args--;
        else goto __pyx_L5_argtuple_error;
        CYTHON_FALLTHROUGH;
        case  1:
        if (likely((values[1] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_rpc_state)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("_handle_unary_stream_rpc", 1, 3, 3, 1); __PYX_ERR(10, 539, __pyx_L3_error)
        }
        CYTHON_FALLTHROUGH;
        case  2:
        if (likely((values[2] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_loop)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("_handle_unary_stream_rpc", 1, 3, 3, 2); __PYX_ERR(10, 539, __pyx_L3_error)
        }
      }
      if (unlikely(kw_args > 0)) {
        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "_handle_unary_stream_rpc") < 0)) __PYX_ERR(10, 539, __pyx_L3_error)
      }
    } else if (PyTuple_GET_SIZE(__pyx_args) != 3) {
      goto __pyx_L5_argtuple_error;
    } else {
      values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
      values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
      values[2] = PyTuple_GET_ITEM(__pyx_args, 2);
    }
    __pyx_v_method_handler = values[0];
    __pyx_v_rpc_state = ((struct __pyx_obj_4grpc_7_cython_6cygrpc_RPCState *)values[1]);
    __pyx_v_loop = values[2];
  }
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("_handle_unary_stream_rpc", 1, 3, 3, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(10, 539, __pyx_L3_error)
  __pyx_L3_error:;
  __Pyx_AddTraceback("grpc._cython.cygrpc._handle_unary_stream_rpc", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_rpc_state), __pyx_ptype_4grpc_7_cython_6cygrpc_RPCState, 1, "rpc_state", 0))) __PYX_ERR(10, 540, __pyx_L1_error)
  __pyx_r = __pyx_pf_4grpc_7_cython_6cygrpc_161_handle_unary_stream_rpc(__pyx_self, __pyx_v_method_handler, __pyx_v_rpc_state, __pyx_v_loop);

  /* function exit code */
  goto __pyx_L0;
  __pyx_L1_error:;
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_4grpc_7_cython_6cygrpc_161_handle_unary_stream_rpc(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__pyx_v_method_handler, struct __pyx_obj_4grpc_7_cython_6cygrpc_RPCState *__pyx_v_rpc_state, PyObject *__pyx_v_loop) {
  struct __pyx_obj_4grpc_7_cython_6cygrpc___pyx_scope_struct_41__handle_unary_stream_rpc *__pyx_cur_scope;
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("_handle_unary_stream_rpc", 0);
  __pyx_cur_scope = (struct __pyx_obj_4grpc_7_cython_6cygrpc___pyx_scope_struct_41__handle_unary_stream_rpc *)__pyx_tp_new_4grpc_7_cython_6cygrpc___pyx_scope_struct_41__handle_unary_stream_rpc(__pyx_ptype_4grpc_7_cython_6cygrpc___pyx_scope_struct_41__handle_unary_stream_rpc, __pyx_empty_tuple, NULL);
  if (unlikely(!__pyx_cur_scope)) {
    __pyx_cur_scope = ((struct __pyx_obj_4grpc_7_cython_6cygrpc___pyx_scope_struct_41__handle_unary_stream_rpc *)Py_None);
    __Pyx_INCREF(Py_None);
    __PYX_ERR(10, 539, __pyx_L1_error)
  } else {
    __Pyx_GOTREF(__pyx_cur_scope);
  }
  __pyx_cur_scope->__pyx_v_method_handler = __pyx_v_method_handler;
  __Pyx_INCREF(__pyx_cur_scope->__pyx_v_method_handler);
  __Pyx_GIVEREF(__pyx_cur_scope->__pyx_v_method_handler);
  __pyx_cur_scope->__pyx_v_rpc_state = __pyx_v_rpc_state;
  __Pyx_INCREF((PyObject *)__pyx_cur_scope->__pyx_v_rpc_state);
  __Pyx_GIVEREF((PyObject *)__pyx_cur_scope->__pyx_v_rpc_state);
  __pyx_cur_scope->__pyx_v_loop = __pyx_v_loop;
  __Pyx_INCREF(__pyx_cur_scope->__pyx_v_loop);
  __Pyx_GIVEREF(__pyx_cur_scope->__pyx_v_loop);
  {
    __pyx_CoroutineObject *gen = __Pyx_Coroutine_New((__pyx_coroutine_body_t) __pyx_gb_4grpc_7_cython_6cygrpc_163generator29, __pyx_codeobj__188, (PyObject *) __pyx_cur_scope, __pyx_n_s_handle_unary_stream_rpc, __pyx_n_s_handle_unary_stream_rpc, __pyx_n_s_grpc__cython_cygrpc); if (unlikely(!gen)) __PYX_ERR(10, 539, __pyx_L1_error)
    __Pyx_DECREF(__pyx_cur_scope);
    __Pyx_RefNannyFinishContext();
    return (PyObject *) gen;
  }

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_AddTraceback("grpc._cython.cygrpc._handle_unary_stream_rpc", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __Pyx_DECREF(((PyObject *)__pyx_cur_scope));
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_gb_4grpc_7_cython_6cygrpc_163generator29(__pyx_CoroutineObject *__pyx_generator, CYTHON_UNUSED PyThreadState *__pyx_tstate, PyObject *__pyx_sent_value) /* generator body */
{
  struct __pyx_obj_4grpc_7_cython_6cygrpc___pyx_scope_struct_41__handle_unary_stream_rpc *__pyx_cur_scope = ((struct __pyx_obj_4grpc_7_cython_6cygrpc___pyx_scope_struct_41__handle_unary_stream_rpc *)__pyx_generator->closure);
  PyObject *__pyx_r = NULL;
  PyObject *__pyx_t_1 = NULL;
  PyObject *__pyx_t_2 = NULL;
  PyObject *__pyx_t_3 = NULL;
  int __pyx_t_4;
  PyObject *__pyx_t_5 = NULL;
  int __pyx_t_6;
  int __pyx_t_7;
  PyObject *__pyx_t_8 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("_handle_unary_stream_rpc", 0);
  switch (__pyx_generator->resume_label) {
    case 0: goto __pyx_L3_first_run;
    case 1: goto __pyx_L4_resume_from_await;
    case 2: goto __pyx_L6_resume_from_await;
    default: /* CPython raises the right error here */
    __Pyx_RefNannyFinishContext();
    return NULL;
  }
  __pyx_L3_first_run:;
  if (unlikely(!__pyx_sent_value)) __PYX_ERR(10, 539, __pyx_L1_error)

  /* "src/python/grpcio/grpc/_cython/_cygrpc/aio/server.pyx.pxi":543
 *                                    object loop):
 *     # Receives request message
 *     cdef bytes request_raw = await _receive_message(rpc_state, loop)             # <<<<<<<<<<<<<<
 *     if request_raw is None:
 *         return
 */
  __Pyx_GetModuleGlobalName(__pyx_t_2, __pyx_n_s_receive_message); if (unlikely(!__pyx_t_2)) __PYX_ERR(10, 543, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __pyx_t_3 = NULL;
  __pyx_t_4 = 0;
  if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_2))) {
    __pyx_t_3 = PyMethod_GET_SELF(__pyx_t_2);
    if (likely(__pyx_t_3)) {
      PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_2);
      __Pyx_INCREF(__pyx_t_3);
      __Pyx_INCREF(function);
      __Pyx_DECREF_SET(__pyx_t_2, function);
      __pyx_t_4 = 1;
    }
  }
  #if CYTHON_FAST_PYCALL
  if (PyFunction_Check(__pyx_t_2)) {
    PyObject *__pyx_temp[3] = {__pyx_t_3, ((PyObject *)__pyx_cur_scope->__pyx_v_rpc_state), __pyx_cur_scope->__pyx_v_loop};
    __pyx_t_1 = __Pyx_PyFunction_FastCall(__pyx_t_2, __pyx_temp+1-__pyx_t_4, 2+__pyx_t_4); if (unlikely(!__pyx_t_1)) __PYX_ERR(10, 543, __pyx_L1_error)
    __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0;
    __Pyx_GOTREF(__pyx_t_1);
  } else
  #endif
  #if CYTHON_FAST_PYCCALL
  if (__Pyx_PyFastCFunction_Check(__pyx_t_2)) {
    PyObject *__pyx_temp[3] = {__pyx_t_3, ((PyObject *)__pyx_cur_scope->__pyx_v_rpc_state), __pyx_cur_scope->__pyx_v_loop};
    __pyx_t_1 = __Pyx_PyCFunction_FastCall(__pyx_t_2, __pyx_temp+1-__pyx_t_4, 2+__pyx_t_4); if (unlikely(!__pyx_t_1)) __PYX_ERR(10, 543, __pyx_L1_error)
    __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0;
    __Pyx_GOTREF(__pyx_t_1);
  } else
  #endif
  {
    __pyx_t_5 = PyTuple_New(2+__pyx_t_4); if (unlikely(!__pyx_t_5)) __PYX_ERR(10, 543, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_5);
    if (__pyx_t_3) {
      __Pyx_GIVEREF(__pyx_t_3); PyTuple_SET_ITEM(__pyx_t_5, 0, __pyx_t_3); __pyx_t_3 = NULL;
    }
    __Pyx_INCREF(((PyObject *)__pyx_cur_scope->__pyx_v_rpc_state));
    __Pyx_GIVEREF(((PyObject *)__pyx_cur_scope->__pyx_v_rpc_state));
    PyTuple_SET_ITEM(__pyx_t_5, 0+__pyx_t_4, ((PyObject *)__pyx_cur_scope->__pyx_v_rpc_state));
    __Pyx_INCREF(__pyx_cur_scope->__pyx_v_loop);
    __Pyx_GIVEREF(__pyx_cur_scope->__pyx_v_loop);
    PyTuple_SET_ITEM(__pyx_t_5, 1+__pyx_t_4, __pyx_cur_scope->__pyx_v_loop);
    __pyx_t_1 = __Pyx_PyObject_Call(__pyx_t_2, __pyx_t_5, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(10, 543, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_1);
    __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
  }
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  __pyx_r = __Pyx_Coroutine_Yield_From(__pyx_generator, __pyx_t_1);
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  __Pyx_XGOTREF(__pyx_r);
  if (likely(__pyx_r)) {
    __Pyx_XGIVEREF(__pyx_r);
    __Pyx_RefNannyFinishContext();
    __Pyx_Coroutine_ResetAndClearException(__pyx_generator);
    /* return from generator, awaiting value */
    __pyx_generator->resume_label = 1;
    return __pyx_r;
    __pyx_L4_resume_from_await:;
    if (unlikely(!__pyx_sent_value)) __PYX_ERR(10, 543, __pyx_L1_error)
    __pyx_t_1 = __pyx_sent_value; __Pyx_INCREF(__pyx_t_1);
  } else {
    __pyx_t_1 = NULL;
    if (__Pyx_PyGen_FetchStopIterationValue(&__pyx_t_1) < 0) __PYX_ERR(10, 543, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_1);
  }
  if (!(likely(PyBytes_CheckExact(__pyx_t_1))||((__pyx_t_1) == Py_None)||(PyErr_Format(PyExc_TypeError, "Expected %.16s, got %.200s", "bytes", Py_TYPE(__pyx_t_1)->tp_name), 0))) __PYX_ERR(10, 543, __pyx_L1_error)
  __Pyx_GIVEREF(__pyx_t_1);
  __pyx_cur_scope->__pyx_v_request_raw = ((PyObject*)__pyx_t_1);
  __pyx_t_1 = 0;

  /* "src/python/grpcio/grpc/_cython/_cygrpc/aio/server.pyx.pxi":544
 *     # Receives request message
 *     cdef bytes request_raw = await _receive_message(rpc_state, loop)
 *     if request_raw is None:             # <<<<<<<<<<<<<<
 *         return
 * 
 */
  __pyx_t_6 = (__pyx_cur_scope->__pyx_v_request_raw == ((PyObject*)Py_None));
  __pyx_t_7 = (__pyx_t_6 != 0);
  if (__pyx_t_7) {

    /* "src/python/grpcio/grpc/_cython/_cygrpc/aio/server.pyx.pxi":545
 *     cdef bytes request_raw = await _receive_message(rpc_state, loop)
 *     if request_raw is None:
 *         return             # <<<<<<<<<<<<<<
 * 
 *     # Deserializes the request message
 */
    __Pyx_XDECREF(__pyx_r);
    __pyx_r = NULL;
    goto __pyx_L0;

    /* "src/python/grpcio/grpc/_cython/_cygrpc/aio/server.pyx.pxi":544
 *     # Receives request message
 *     cdef bytes request_raw = await _receive_message(rpc_state, loop)
 *     if request_raw is None:             # <<<<<<<<<<<<<<
 *         return
 * 
 */
  }

  /* "src/python/grpcio/grpc/_cython/_cygrpc/aio/server.pyx.pxi":549
 *     # Deserializes the request message
 *     cdef object request_message = deserialize(
 *         method_handler.request_deserializer,             # <<<<<<<<<<<<<<
 *         request_raw,
 *     )
 */
  __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_cur_scope->__pyx_v_method_handler, __pyx_n_s_request_deserializer); if (unlikely(!__pyx_t_1)) __PYX_ERR(10, 549, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);

  /* "src/python/grpcio/grpc/_cython/_cygrpc/aio/server.pyx.pxi":548
 * 
 *     # Deserializes the request message
 *     cdef object request_message = deserialize(             # <<<<<<<<<<<<<<
 *         method_handler.request_deserializer,
 *         request_raw,
 */
  __pyx_t_2 = __pyx_f_4grpc_7_cython_6cygrpc_deserialize(__pyx_t_1, __pyx_cur_scope->__pyx_v_request_raw); if (unlikely(!__pyx_t_2)) __PYX_ERR(10, 548, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  __Pyx_GIVEREF(__pyx_t_2);
  __pyx_cur_scope->__pyx_v_request_message = __pyx_t_2;
  __pyx_t_2 = 0;

  /* "src/python/grpcio/grpc/_cython/_cygrpc/aio/server.pyx.pxi":556
 *     cdef _ServicerContext servicer_context = _ServicerContext(
 *         rpc_state,
 *         method_handler.request_deserializer,             # <<<<<<<<<<<<<<
 *         method_handler.response_serializer,
 *         loop,
 */
  __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_cur_scope->__pyx_v_method_handler, __pyx_n_s_request_deserializer); if (unlikely(!__pyx_t_2)) __PYX_ERR(10, 556, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);

  /* "src/python/grpcio/grpc/_cython/_cygrpc/aio/server.pyx.pxi":557
 *         rpc_state,
 *         method_handler.request_deserializer,
 *         method_handler.response_serializer,             # <<<<<<<<<<<<<<
 *         loop,
 *     )
 */
  __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_cur_scope->__pyx_v_method_handler, __pyx_n_s_response_serializer); if (unlikely(!__pyx_t_1)) __PYX_ERR(10, 557, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);

  /* "src/python/grpcio/grpc/_cython/_cygrpc/aio/server.pyx.pxi":554
 * 
 *     # Creates a dedecated ServicerContext
 *     cdef _ServicerContext servicer_context = _ServicerContext(             # <<<<<<<<<<<<<<
 *         rpc_state,
 *         method_handler.request_deserializer,
 */
  __pyx_t_5 = PyTuple_New(4); if (unlikely(!__pyx_t_5)) __PYX_ERR(10, 554, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_5);
  __Pyx_INCREF(((PyObject *)__pyx_cur_scope->__pyx_v_rpc_state));
  __Pyx_GIVEREF(((PyObject *)__pyx_cur_scope->__pyx_v_rpc_state));
  PyTuple_SET_ITEM(__pyx_t_5, 0, ((PyObject *)__pyx_cur_scope->__pyx_v_rpc_state));
  __Pyx_GIVEREF(__pyx_t_2);
  PyTuple_SET_ITEM(__pyx_t_5, 1, __pyx_t_2);
  __Pyx_GIVEREF(__pyx_t_1);
  PyTuple_SET_ITEM(__pyx_t_5, 2, __pyx_t_1);
  __Pyx_INCREF(__pyx_cur_scope->__pyx_v_loop);
  __Pyx_GIVEREF(__pyx_cur_scope->__pyx_v_loop);
  PyTuple_SET_ITEM(__pyx_t_5, 3, __pyx_cur_scope->__pyx_v_loop);
  __pyx_t_2 = 0;
  __pyx_t_1 = 0;
  __pyx_t_1 = __Pyx_PyObject_Call(((PyObject *)__pyx_ptype_4grpc_7_cython_6cygrpc__ServicerContext), __pyx_t_5, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(10, 554, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
  __Pyx_GIVEREF(__pyx_t_1);
  __pyx_cur_scope->__pyx_v_servicer_context = ((struct __pyx_obj_4grpc_7_cython_6cygrpc__ServicerContext *)__pyx_t_1);
  __pyx_t_1 = 0;

  /* "src/python/grpcio/grpc/_cython/_cygrpc/aio/server.pyx.pxi":562
 * 
 *     # Finishes the application handler
 *     await _finish_handler_with_stream_responses(             # <<<<<<<<<<<<<<
 *         rpc_state,
 *         method_handler.unary_stream,
 */
  __Pyx_GetModuleGlobalName(__pyx_t_5, __pyx_n_s_finish_handler_with_stream_resp); if (unlikely(!__pyx_t_5)) __PYX_ERR(10, 562, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_5);

  /* "src/python/grpcio/grpc/_cython/_cygrpc/aio/server.pyx.pxi":564
 *     await _finish_handler_with_stream_responses(
 *         rpc_state,
 *         method_handler.unary_stream,             # <<<<<<<<<<<<<<
 *         request_message,
 *         servicer_context,
 */
  __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_cur_scope->__pyx_v_method_handler, __pyx_n_s_unary_stream); if (unlikely(!__pyx_t_2)) __PYX_ERR(10, 564, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);

  /* "src/python/grpcio/grpc/_cython/_cygrpc/aio/server.pyx.pxi":567
 *         request_message,
 *         servicer_context,
 *         loop,             # <<<<<<<<<<<<<<
 *     )
 * 
 */
  __pyx_t_3 = NULL;
  __pyx_t_4 = 0;
  if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_5))) {
    __pyx_t_3 = PyMethod_GET_SELF(__pyx_t_5);
    if (likely(__pyx_t_3)) {
      PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_5);
      __Pyx_INCREF(__pyx_t_3);
      __Pyx_INCREF(function);
      __Pyx_DECREF_SET(__pyx_t_5, function);
      __pyx_t_4 = 1;
    }
  }
  #if CYTHON_FAST_PYCALL
  if (PyFunction_Check(__pyx_t_5)) {
    PyObject *__pyx_temp[6] = {__pyx_t_3, ((PyObject *)__pyx_cur_scope->__pyx_v_rpc_state), __pyx_t_2, __pyx_cur_scope->__pyx_v_request_message, ((PyObject *)__pyx_cur_scope->__pyx_v_servicer_context), __pyx_cur_scope->__pyx_v_loop};
    __pyx_t_1 = __Pyx_PyFunction_FastCall(__pyx_t_5, __pyx_temp+1-__pyx_t_4, 5+__pyx_t_4); if (unlikely(!__pyx_t_1)) __PYX_ERR(10, 562, __pyx_L1_error)
    __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0;
    __Pyx_GOTREF(__pyx_t_1);
    __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  } else
  #endif
  #if CYTHON_FAST_PYCCALL
  if (__Pyx_PyFastCFunction_Check(__pyx_t_5)) {
    PyObject *__pyx_temp[6] = {__pyx_t_3, ((PyObject *)__pyx_cur_scope->__pyx_v_rpc_state), __pyx_t_2, __pyx_cur_scope->__pyx_v_request_message, ((PyObject *)__pyx_cur_scope->__pyx_v_servicer_context), __pyx_cur_scope->__pyx_v_loop};
    __pyx_t_1 = __Pyx_PyCFunction_FastCall(__pyx_t_5, __pyx_temp+1-__pyx_t_4, 5+__pyx_t_4); if (unlikely(!__pyx_t_1)) __PYX_ERR(10, 562, __pyx_L1_error)
    __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0;
    __Pyx_GOTREF(__pyx_t_1);
    __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  } else
  #endif
  {
    __pyx_t_8 = PyTuple_New(5+__pyx_t_4); if (unlikely(!__pyx_t_8)) __PYX_ERR(10, 562, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_8);
    if (__pyx_t_3) {
      __Pyx_GIVEREF(__pyx_t_3); PyTuple_SET_ITEM(__pyx_t_8, 0, __pyx_t_3); __pyx_t_3 = NULL;
    }
    __Pyx_INCREF(((PyObject *)__pyx_cur_scope->__pyx_v_rpc_state));
    __Pyx_GIVEREF(((PyObject *)__pyx_cur_scope->__pyx_v_rpc_state));
    PyTuple_SET_ITEM(__pyx_t_8, 0+__pyx_t_4, ((PyObject *)__pyx_cur_scope->__pyx_v_rpc_state));
    __Pyx_GIVEREF(__pyx_t_2);
    PyTuple_SET_ITEM(__pyx_t_8, 1+__pyx_t_4, __pyx_t_2);
    __Pyx_INCREF(__pyx_cur_scope->__pyx_v_request_message);
    __Pyx_GIVEREF(__pyx_cur_scope->__pyx_v_request_message);
    PyTuple_SET_ITEM(__pyx_t_8, 2+__pyx_t_4, __pyx_cur_scope->__pyx_v_request_message);
    __Pyx_INCREF(((PyObject *)__pyx_cur_scope->__pyx_v_servicer_context));
    __Pyx_GIVEREF(((PyObject *)__pyx_cur_scope->__pyx_v_servicer_context));
    PyTuple_SET_ITEM(__pyx_t_8, 3+__pyx_t_4, ((PyObject *)__pyx_cur_scope->__pyx_v_servicer_context));
    __Pyx_INCREF(__pyx_cur_scope->__pyx_v_loop);
    __Pyx_GIVEREF(__pyx_cur_scope->__pyx_v_loop);
    PyTuple_SET_ITEM(__pyx_t_8, 4+__pyx_t_4, __pyx_cur_scope->__pyx_v_loop);
    __pyx_t_2 = 0;
    __pyx_t_1 = __Pyx_PyObject_Call(__pyx_t_5, __pyx_t_8, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(10, 562, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_1);
    __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
  }
  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
  __pyx_r = __Pyx_Coroutine_Yield_From(__pyx_generator, __pyx_t_1);
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  __Pyx_XGOTREF(__pyx_r);
  if (likely(__pyx_r)) {
    __Pyx_XGIVEREF(__pyx_r);
    __Pyx_RefNannyFinishContext();
    __Pyx_Coroutine_ResetAndClearException(__pyx_generator);
    /* return from generator, awaiting value */
    __pyx_generator->resume_label = 2;
    return __pyx_r;
    __pyx_L6_resume_from_await:;
    if (unlikely(!__pyx_sent_value)) __PYX_ERR(10, 562, __pyx_L1_error)
  } else {
    PyObject* exc_type = __Pyx_PyErr_Occurred();
    if (exc_type) {
      if (likely(exc_type == PyExc_StopIteration || (exc_type != PyExc_GeneratorExit && __Pyx_PyErr_GivenExceptionMatches(exc_type, PyExc_StopIteration)))) PyErr_Clear();
      else __PYX_ERR(10, 562, __pyx_L1_error)
    }
  }
  CYTHON_MAYBE_UNUSED_VAR(__pyx_cur_scope);

  /* "src/python/grpcio/grpc/_cython/_cygrpc/aio/server.pyx.pxi":539
 * 
 * 
 * async def _handle_unary_stream_rpc(object method_handler,             # <<<<<<<<<<<<<<
 *                                    RPCState rpc_state,
 *                                    object loop):
 */

  /* function exit code */
  PyErr_SetNone(PyExc_StopIteration);
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_XDECREF(__pyx_t_3);
  __Pyx_XDECREF(__pyx_t_5);
  __Pyx_XDECREF(__pyx_t_8);
  __Pyx_AddTraceback("_handle_unary_stream_rpc", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_L0:;
  __Pyx_XDECREF(__pyx_r); __pyx_r = 0;
  #if !CYTHON_USE_EXC_INFO_STACK
  __Pyx_Coroutine_ResetAndClearException(__pyx_generator);
  #endif
  __pyx_generator->resume_label = -1;
  __Pyx_Coroutine_clear((PyObject*)__pyx_generator);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "src/python/grpcio/grpc/_cython/_cygrpc/aio/server.pyx.pxi":574
 *     """Bridge between the async generator API and the reader-writer API."""
 * 
 *     def __cinit__(self, _ServicerContext servicer_context):             # <<<<<<<<<<<<<<
 *         self._servicer_context = servicer_context
 *         self._agen = None
 */

/* Python wrapper */
static int __pyx_pw_4grpc_7_cython_6cygrpc_16_MessageReceiver_1__cinit__(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
static int __pyx_pw_4grpc_7_cython_6cygrpc_16_MessageReceiver_1__cinit__(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
  struct __pyx_obj_4grpc_7_cython_6cygrpc__ServicerContext *__pyx_v_servicer_context = 0;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  int __pyx_r;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__cinit__ (wrapper)", 0);
  {
    static PyObject **__pyx_pyargnames[] = {&__pyx_n_s_servicer_context,0};
    PyObject* values[1] = {0};
    if (unlikely(__pyx_kwds)) {
      Py_ssize_t kw_args;
      const Py_ssize_t pos_args = PyTuple_GET_SIZE(__pyx_args);
      switch (pos_args) {
        case  1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
        CYTHON_FALLTHROUGH;
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      kw_args = PyDict_Size(__pyx_kwds);
      switch (pos_args) {
        case  0:
        if (likely((values[0] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_servicer_context)) != 0)) kw_args--;
        else goto __pyx_L5_argtuple_error;
      }
      if (unlikely(kw_args > 0)) {
        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "__cinit__") < 0)) __PYX_ERR(10, 574, __pyx_L3_error)
      }
    } else if (PyTuple_GET_SIZE(__pyx_args) != 1) {
      goto __pyx_L5_argtuple_error;
    } else {
      values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
    }
    __pyx_v_servicer_context = ((struct __pyx_obj_4grpc_7_cython_6cygrpc__ServicerContext *)values[0]);
  }
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("__cinit__", 1, 1, 1, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(10, 574, __pyx_L3_error)
  __pyx_L3_error:;
  __Pyx_AddTraceback("grpc._cython.cygrpc._MessageReceiver.__cinit__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return -1;
  __pyx_L4_argument_unpacking_done:;
  if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_servicer_context), __pyx_ptype_4grpc_7_cython_6cygrpc__ServicerContext, 1, "servicer_context", 0))) __PYX_ERR(10, 574, __pyx_L1_error)
  __pyx_r = __pyx_pf_4grpc_7_cython_6cygrpc_16_MessageReceiver___cinit__(((struct __pyx_obj_4grpc_7_cython_6cygrpc__MessageReceiver *)__pyx_v_self), __pyx_v_servicer_context);

  /* function exit code */
  goto __pyx_L0;
  __pyx_L1_error:;
  __pyx_r = -1;
  __pyx_L0:;
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static int __pyx_pf_4grpc_7_cython_6cygrpc_16_MessageReceiver___cinit__(struct __pyx_obj_4grpc_7_cython_6cygrpc__MessageReceiver *__pyx_v_self, struct __pyx_obj_4grpc_7_cython_6cygrpc__ServicerContext *__pyx_v_servicer_context) {
  int __pyx_r;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__cinit__", 0);

  /* "src/python/grpcio/grpc/_cython/_cygrpc/aio/server.pyx.pxi":575
 * 
 *     def __cinit__(self, _ServicerContext servicer_context):
 *         self._servicer_context = servicer_context             # <<<<<<<<<<<<<<
 *         self._agen = None
 * 
 */
  __Pyx_INCREF(((PyObject *)__pyx_v_servicer_context));
  __Pyx_GIVEREF(((PyObject *)__pyx_v_servicer_context));
  __Pyx_GOTREF(__pyx_v_self->_servicer_context);
  __Pyx_DECREF(((PyObject *)__pyx_v_self->_servicer_context));
  __pyx_v_self->_servicer_context = __pyx_v_servicer_context;

  /* "src/python/grpcio/grpc/_cython/_cygrpc/aio/server.pyx.pxi":576
 *     def __cinit__(self, _ServicerContext servicer_context):
 *         self._servicer_context = servicer_context
 *         self._agen = None             # <<<<<<<<<<<<<<
 * 
 *     async def _async_message_receiver(self):
 */
  __Pyx_INCREF(Py_None);
  __Pyx_GIVEREF(Py_None);
  __Pyx_GOTREF(__pyx_v_self->_agen);
  __Pyx_DECREF(__pyx_v_self->_agen);
  __pyx_v_self->_agen = Py_None;

  /* "src/python/grpcio/grpc/_cython/_cygrpc/aio/server.pyx.pxi":574
 *     """Bridge between the async generator API and the reader-writer API."""
 * 
 *     def __cinit__(self, _ServicerContext servicer_context):             # <<<<<<<<<<<<<<
 *         self._servicer_context = servicer_context
 *         self._agen = None
 */

  /* function exit code */
  __pyx_r = 0;
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}
static PyObject *__pyx_gb_4grpc_7_cython_6cygrpc_16_MessageReceiver_4generator30(__pyx_CoroutineObject *__pyx_generator, CYTHON_UNUSED PyThreadState *__pyx_tstate, PyObject *__pyx_sent_value); /* proto */

/* "src/python/grpcio/grpc/_cython/_cygrpc/aio/server.pyx.pxi":578
 *         self._agen = None
 * 
 *     async def _async_message_receiver(self):             # <<<<<<<<<<<<<<
 *         """An async generator that receives messages."""
 *         cdef object message
 */

/* Python wrapper */
static PyObject *__pyx_pw_4grpc_7_cython_6cygrpc_16_MessageReceiver_3_async_message_receiver(PyObject *__pyx_v_self, CYTHON_UNUSED PyObject *unused); /*proto*/
static char __pyx_doc_4grpc_7_cython_6cygrpc_16_MessageReceiver_2_async_message_receiver[] = "An async generator that receives messages.";
static PyObject *__pyx_pw_4grpc_7_cython_6cygrpc_16_MessageReceiver_3_async_message_receiver(PyObject *__pyx_v_self, CYTHON_UNUSED PyObject *unused) {
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("_async_message_receiver (wrapper)", 0);
  __pyx_r = __pyx_pf_4grpc_7_cython_6cygrpc_16_MessageReceiver_2_async_message_receiver(((struct __pyx_obj_4grpc_7_cython_6cygrpc__MessageReceiver *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_4grpc_7_cython_6cygrpc_16_MessageReceiver_2_async_message_receiver(struct __pyx_obj_4grpc_7_cython_6cygrpc__MessageReceiver *__pyx_v_self) {
  struct __pyx_obj_4grpc_7_cython_6cygrpc___pyx_scope_struct_42__async_message_receiver *__pyx_cur_scope;
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("_async_message_receiver", 0);
  __pyx_cur_scope = (struct __pyx_obj_4grpc_7_cython_6cygrpc___pyx_scope_struct_42__async_message_receiver *)__pyx_tp_new_4grpc_7_cython_6cygrpc___pyx_scope_struct_42__async_message_receiver(__pyx_ptype_4grpc_7_cython_6cygrpc___pyx_scope_struct_42__async_message_receiver, __pyx_empty_tuple, NULL);
  if (unlikely(!__pyx_cur_scope)) {
    __pyx_cur_scope = ((struct __pyx_obj_4grpc_7_cython_6cygrpc___pyx_scope_struct_42__async_message_receiver *)Py_None);
    __Pyx_INCREF(Py_None);
    __PYX_ERR(10, 578, __pyx_L1_error)
  } else {
    __Pyx_GOTREF(__pyx_cur_scope);
  }
  __pyx_cur_scope->__pyx_v_self = __pyx_v_self;
  __Pyx_INCREF((PyObject *)__pyx_cur_scope->__pyx_v_self);
  __Pyx_GIVEREF((PyObject *)__pyx_cur_scope->__pyx_v_self);
  {
    __pyx_CoroutineObject *gen = __Pyx_AsyncGen_New((__pyx_coroutine_body_t) __pyx_gb_4grpc_7_cython_6cygrpc_16_MessageReceiver_4generator30, NULL, (PyObject *) __pyx_cur_scope, __pyx_n_s_async_message_receiver, __pyx_n_s_MessageReceiver__async_message, __pyx_n_s_grpc__cython_cygrpc); if (unlikely(!gen)) __PYX_ERR(10, 578, __pyx_L1_error)
    __Pyx_DECREF(__pyx_cur_scope);
    __Pyx_RefNannyFinishContext();
    return (PyObject *) gen;
  }

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_AddTraceback("grpc._cython.cygrpc._MessageReceiver._async_message_receiver", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __Pyx_DECREF(((PyObject *)__pyx_cur_scope));
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_gb_4grpc_7_cython_6cygrpc_16_MessageReceiver_4generator30(__pyx_CoroutineObject *__pyx_generator, CYTHON_UNUSED PyThreadState *__pyx_tstate, PyObject *__pyx_sent_value) /* generator body */
{
  struct __pyx_obj_4grpc_7_cython_6cygrpc___pyx_scope_struct_42__async_message_receiver *__pyx_cur_scope = ((struct __pyx_obj_4grpc_7_cython_6cygrpc___pyx_scope_struct_42__async_message_receiver *)__pyx_generator->closure);
  PyObject *__pyx_r = NULL;
  PyObject *__pyx_t_1 = NULL;
  PyObject *__pyx_t_2 = NULL;
  PyObject *__pyx_t_3 = NULL;
  int __pyx_t_4;
  int __pyx_t_5;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("_async_message_receiver", 0);
  switch (__pyx_generator->resume_label) {
    case 0: goto __pyx_L3_first_run;
    case 1: goto __pyx_L6_resume_from_await;
    case 2: goto __pyx_L8_resume_from_yield;
    default: /* CPython raises the right error here */
    __Pyx_RefNannyFinishContext();
    return NULL;
  }
  __pyx_L3_first_run:;
  if (unlikely(!__pyx_sent_value)) __PYX_ERR(10, 578, __pyx_L1_error)

  /* "src/python/grpcio/grpc/_cython/_cygrpc/aio/server.pyx.pxi":581
 *         """An async generator that receives messages."""
 *         cdef object message
 *         while True:             # <<<<<<<<<<<<<<
 *             message = await self._servicer_context.read()
 *             if message is not EOF:
 */
  while (1) {

    /* "src/python/grpcio/grpc/_cython/_cygrpc/aio/server.pyx.pxi":582
 *         cdef object message
 *         while True:
 *             message = await self._servicer_context.read()             # <<<<<<<<<<<<<<
 *             if message is not EOF:
 *                 yield message
 */
    __pyx_t_2 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_cur_scope->__pyx_v_self->_servicer_context), __pyx_n_s_read); if (unlikely(!__pyx_t_2)) __PYX_ERR(10, 582, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_2);
    __pyx_t_3 = NULL;
    if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_2))) {
      __pyx_t_3 = PyMethod_GET_SELF(__pyx_t_2);
      if (likely(__pyx_t_3)) {
        PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_2);
        __Pyx_INCREF(__pyx_t_3);
        __Pyx_INCREF(function);
        __Pyx_DECREF_SET(__pyx_t_2, function);
      }
    }
    __pyx_t_1 = (__pyx_t_3) ? __Pyx_PyObject_CallOneArg(__pyx_t_2, __pyx_t_3) : __Pyx_PyObject_CallNoArg(__pyx_t_2);
    __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0;
    if (unlikely(!__pyx_t_1)) __PYX_ERR(10, 582, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_1);
    __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
    __pyx_r = __Pyx_Coroutine_Yield_From(__pyx_generator, __pyx_t_1);
    __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
    __Pyx_XGOTREF(__pyx_r);
    if (likely(__pyx_r)) {
      __Pyx_XGIVEREF(__pyx_r);
      __Pyx_RefNannyFinishContext();
      __Pyx_Coroutine_ResetAndClearException(__pyx_generator);
      /* return from async generator, awaiting value */
      __pyx_generator->resume_label = 1;
      return __pyx_r;
      __pyx_L6_resume_from_await:;
      if (unlikely(!__pyx_sent_value)) __PYX_ERR(10, 582, __pyx_L1_error)
      __pyx_t_1 = __pyx_sent_value; __Pyx_INCREF(__pyx_t_1);
    } else {
      __pyx_t_1 = NULL;
      if (__Pyx_PyGen_FetchStopIterationValue(&__pyx_t_1) < 0) __PYX_ERR(10, 582, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_1);
    }
    __Pyx_XGOTREF(__pyx_cur_scope->__pyx_v_message);
    __Pyx_XDECREF_SET(__pyx_cur_scope->__pyx_v_message, __pyx_t_1);
    __Pyx_GIVEREF(__pyx_t_1);
    __pyx_t_1 = 0;

    /* "src/python/grpcio/grpc/_cython/_cygrpc/aio/server.pyx.pxi":583
 *         while True:
 *             message = await self._servicer_context.read()
 *             if message is not EOF:             # <<<<<<<<<<<<<<
 *                 yield message
 *             else:
 */
    __Pyx_GetModuleGlobalName(__pyx_t_1, __pyx_n_s_EOF); if (unlikely(!__pyx_t_1)) __PYX_ERR(10, 583, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_1);
    __pyx_t_4 = (__pyx_cur_scope->__pyx_v_message != __pyx_t_1);
    __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
    __pyx_t_5 = (__pyx_t_4 != 0);
    if (__pyx_t_5) {

      /* "src/python/grpcio/grpc/_cython/_cygrpc/aio/server.pyx.pxi":584
 *             message = await self._servicer_context.read()
 *             if message is not EOF:
 *                 yield message             # <<<<<<<<<<<<<<
 *             else:
 *                 break
 */
      __Pyx_INCREF(__pyx_cur_scope->__pyx_v_message);
      __pyx_r = __pyx_cur_scope->__pyx_v_message;
      __Pyx_XGIVEREF(__pyx_r);
      __Pyx_RefNannyFinishContext();
      __Pyx_Coroutine_ResetAndClearException(__pyx_generator);
      /* return from async generator, yielding value */
      __pyx_generator->resume_label = 2;
      return __Pyx__PyAsyncGenValueWrapperNew(__pyx_r);
      __pyx_L8_resume_from_yield:;
      if (unlikely(!__pyx_sent_value)) __PYX_ERR(10, 584, __pyx_L1_error)

      /* "src/python/grpcio/grpc/_cython/_cygrpc/aio/server.pyx.pxi":583
 *         while True:
 *             message = await self._servicer_context.read()
 *             if message is not EOF:             # <<<<<<<<<<<<<<
 *                 yield message
 *             else:
 */
      goto __pyx_L7;
    }

    /* "src/python/grpcio/grpc/_cython/_cygrpc/aio/server.pyx.pxi":586
 *                 yield message
 *             else:
 *                 break             # <<<<<<<<<<<<<<
 * 
 *     def __aiter__(self):
 */
    /*else*/ {
      goto __pyx_L5_break;
    }
    __pyx_L7:;
  }
  __pyx_L5_break:;
  CYTHON_MAYBE_UNUSED_VAR(__pyx_cur_scope);

  /* "src/python/grpcio/grpc/_cython/_cygrpc/aio/server.pyx.pxi":578
 *         self._agen = None
 * 
 *     async def _async_message_receiver(self):             # <<<<<<<<<<<<<<
 *         """An async generator that receives messages."""
 *         cdef object message
 */

  /* function exit code */
  PyErr_SetNone(__Pyx_PyExc_StopAsyncIteration);
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_XDECREF(__pyx_t_3);
  __Pyx_AddTraceback("_async_message_receiver", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_L0:;
  __Pyx_XDECREF(__pyx_r); __pyx_r = 0;
  #if !CYTHON_USE_EXC_INFO_STACK
  __Pyx_Coroutine_ResetAndClearException(__pyx_generator);
  #endif
  __pyx_generator->resume_label = -1;
  __Pyx_Coroutine_clear((PyObject*)__pyx_generator);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "src/python/grpcio/grpc/_cython/_cygrpc/aio/server.pyx.pxi":588
 *                 break
 * 
 *     def __aiter__(self):             # <<<<<<<<<<<<<<
 *         # Prevents never awaited warning if application never used the async generator
 *         if self._agen is None:
 */

/* Python wrapper */
static PyObject *__pyx_pw_4grpc_7_cython_6cygrpc_16_MessageReceiver_6__aiter__(PyObject *__pyx_v_self); /*proto*/
static PyObject *__pyx_pw_4grpc_7_cython_6cygrpc_16_MessageReceiver_6__aiter__(PyObject *__pyx_v_self) {
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__aiter__ (wrapper)", 0);
  __pyx_r = __pyx_pf_4grpc_7_cython_6cygrpc_16_MessageReceiver_5__aiter__(((struct __pyx_obj_4grpc_7_cython_6cygrpc__MessageReceiver *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_4grpc_7_cython_6cygrpc_16_MessageReceiver_5__aiter__(struct __pyx_obj_4grpc_7_cython_6cygrpc__MessageReceiver *__pyx_v_self) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  int __pyx_t_1;
  int __pyx_t_2;
  PyObject *__pyx_t_3 = NULL;
  PyObject *__pyx_t_4 = NULL;
  PyObject *__pyx_t_5 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("__aiter__", 0);

  /* "src/python/grpcio/grpc/_cython/_cygrpc/aio/server.pyx.pxi":590
 *     def __aiter__(self):
 *         # Prevents never awaited warning if application never used the async generator
 *         if self._agen is None:             # <<<<<<<<<<<<<<
 *             self._agen = self._async_message_receiver()
 *         return self._agen
 */
  __pyx_t_1 = (__pyx_v_self->_agen == Py_None);
  __pyx_t_2 = (__pyx_t_1 != 0);
  if (__pyx_t_2) {

    /* "src/python/grpcio/grpc/_cython/_cygrpc/aio/server.pyx.pxi":591
 *         # Prevents never awaited warning if application never used the async generator
 *         if self._agen is None:
 *             self._agen = self._async_message_receiver()             # <<<<<<<<<<<<<<
 *         return self._agen
 * 
 */
    __pyx_t_4 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_async_message_receiver); if (unlikely(!__pyx_t_4)) __PYX_ERR(10, 591, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_4);
    __pyx_t_5 = NULL;
    if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_4))) {
      __pyx_t_5 = PyMethod_GET_SELF(__pyx_t_4);
      if (likely(__pyx_t_5)) {
        PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_4);
        __Pyx_INCREF(__pyx_t_5);
        __Pyx_INCREF(function);
        __Pyx_DECREF_SET(__pyx_t_4, function);
      }
    }
    __pyx_t_3 = (__pyx_t_5) ? __Pyx_PyObject_CallOneArg(__pyx_t_4, __pyx_t_5) : __Pyx_PyObject_CallNoArg(__pyx_t_4);
    __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0;
    if (unlikely(!__pyx_t_3)) __PYX_ERR(10, 591, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_3);
    __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
    __Pyx_GIVEREF(__pyx_t_3);
    __Pyx_GOTREF(__pyx_v_self->_agen);
    __Pyx_DECREF(__pyx_v_self->_agen);
    __pyx_v_self->_agen = __pyx_t_3;
    __pyx_t_3 = 0;

    /* "src/python/grpcio/grpc/_cython/_cygrpc/aio/server.pyx.pxi":590
 *     def __aiter__(self):
 *         # Prevents never awaited warning if application never used the async generator
 *         if self._agen is None:             # <<<<<<<<<<<<<<
 *             self._agen = self._async_message_receiver()
 *         return self._agen
 */
  }

  /* "src/python/grpcio/grpc/_cython/_cygrpc/aio/server.pyx.pxi":592
 *         if self._agen is None:
 *             self._agen = self._async_message_receiver()
 *         return self._agen             # <<<<<<<<<<<<<<
 * 
 *     async def __anext__(self):
 */
  __Pyx_XDECREF(__pyx_r);
  __Pyx_INCREF(__pyx_v_self->_agen);
  __pyx_r = __pyx_v_self->_agen;
  goto __pyx_L0;

  /* "src/python/grpcio/grpc/_cython/_cygrpc/aio/server.pyx.pxi":588
 *                 break
 * 
 *     def __aiter__(self):             # <<<<<<<<<<<<<<
 *         # Prevents never awaited warning if application never used the async generator
 *         if self._agen is None:
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_3);
  __Pyx_XDECREF(__pyx_t_4);
  __Pyx_XDECREF(__pyx_t_5);
  __Pyx_AddTraceback("grpc._cython.cygrpc._MessageReceiver.__aiter__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}
static PyObject *__pyx_gb_4grpc_7_cython_6cygrpc_16_MessageReceiver_9generator31(__pyx_CoroutineObject *__pyx_generator, CYTHON_UNUSED PyThreadState *__pyx_tstate, PyObject *__pyx_sent_value); /* proto */

/* "src/python/grpcio/grpc/_cython/_cygrpc/aio/server.pyx.pxi":594
 *         return self._agen
 * 
 *     async def __anext__(self):             # <<<<<<<<<<<<<<
 *         return await self.__aiter__().__anext__()
 * 
 */

/* Python wrapper */
static PyObject *__pyx_pw_4grpc_7_cython_6cygrpc_16_MessageReceiver_8__anext__(PyObject *__pyx_v_self); /*proto*/
static PyObject *__pyx_pw_4grpc_7_cython_6cygrpc_16_MessageReceiver_8__anext__(PyObject *__pyx_v_self) {
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__anext__ (wrapper)", 0);
  __pyx_r = __pyx_pf_4grpc_7_cython_6cygrpc_16_MessageReceiver_7__anext__(((struct __pyx_obj_4grpc_7_cython_6cygrpc__MessageReceiver *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_4grpc_7_cython_6cygrpc_16_MessageReceiver_7__anext__(struct __pyx_obj_4grpc_7_cython_6cygrpc__MessageReceiver *__pyx_v_self) {
  struct __pyx_obj_4grpc_7_cython_6cygrpc___pyx_scope_struct_43___anext__ *__pyx_cur_scope;
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("__anext__", 0);
  __pyx_cur_scope = (struct __pyx_obj_4grpc_7_cython_6cygrpc___pyx_scope_struct_43___anext__ *)__pyx_tp_new_4grpc_7_cython_6cygrpc___pyx_scope_struct_43___anext__(__pyx_ptype_4grpc_7_cython_6cygrpc___pyx_scope_struct_43___anext__, __pyx_empty_tuple, NULL);
  if (unlikely(!__pyx_cur_scope)) {
    __pyx_cur_scope = ((struct __pyx_obj_4grpc_7_cython_6cygrpc___pyx_scope_struct_43___anext__ *)Py_None);
    __Pyx_INCREF(Py_None);
    __PYX_ERR(10, 594, __pyx_L1_error)
  } else {
    __Pyx_GOTREF(__pyx_cur_scope);
  }
  __pyx_cur_scope->__pyx_v_self = __pyx_v_self;
  __Pyx_INCREF((PyObject *)__pyx_cur_scope->__pyx_v_self);
  __Pyx_GIVEREF((PyObject *)__pyx_cur_scope->__pyx_v_self);
  {
    __pyx_CoroutineObject *gen = __Pyx_Coroutine_New((__pyx_coroutine_body_t) __pyx_gb_4grpc_7_cython_6cygrpc_16_MessageReceiver_9generator31, NULL, (PyObject *) __pyx_cur_scope, __pyx_n_s_anext, __pyx_n_s_MessageReceiver___anext, __pyx_n_s_grpc__cython_cygrpc); if (unlikely(!gen)) __PYX_ERR(10, 594, __pyx_L1_error)
    __Pyx_DECREF(__pyx_cur_scope);
    __Pyx_RefNannyFinishContext();
    return (PyObject *) gen;
  }

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_AddTraceback("grpc._cython.cygrpc._MessageReceiver.__anext__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __Pyx_DECREF(((PyObject *)__pyx_cur_scope));
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_gb_4grpc_7_cython_6cygrpc_16_MessageReceiver_9generator31(__pyx_CoroutineObject *__pyx_generator, CYTHON_UNUSED PyThreadState *__pyx_tstate, PyObject *__pyx_sent_value) /* generator body */
{
  struct __pyx_obj_4grpc_7_cython_6cygrpc___pyx_scope_struct_43___anext__ *__pyx_cur_scope = ((struct __pyx_obj_4grpc_7_cython_6cygrpc___pyx_scope_struct_43___anext__ *)__pyx_generator->closure);
  PyObject *__pyx_r = NULL;
  PyObject *__pyx_t_1 = NULL;
  PyObject *__pyx_t_2 = NULL;
  PyObject *__pyx_t_3 = NULL;
  PyObject *__pyx_t_4 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__anext__", 0);
  switch (__pyx_generator->resume_label) {
    case 0: goto __pyx_L3_first_run;
    case 1: goto __pyx_L4_resume_from_await;
    default: /* CPython raises the right error here */
    __Pyx_RefNannyFinishContext();
    return NULL;
  }
  __pyx_L3_first_run:;
  if (unlikely(!__pyx_sent_value)) __PYX_ERR(10, 594, __pyx_L1_error)

  /* "src/python/grpcio/grpc/_cython/_cygrpc/aio/server.pyx.pxi":595
 * 
 *     async def __anext__(self):
 *         return await self.__aiter__().__anext__()             # <<<<<<<<<<<<<<
 * 
 * 
 */
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_3 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_cur_scope->__pyx_v_self), __pyx_n_s_aiter); if (unlikely(!__pyx_t_3)) __PYX_ERR(10, 595, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  __pyx_t_4 = NULL;
  if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_3))) {
    __pyx_t_4 = PyMethod_GET_SELF(__pyx_t_3);
    if (likely(__pyx_t_4)) {
      PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_3);
      __Pyx_INCREF(__pyx_t_4);
      __Pyx_INCREF(function);
      __Pyx_DECREF_SET(__pyx_t_3, function);
    }
  }
  __pyx_t_2 = (__pyx_t_4) ? __Pyx_PyObject_CallOneArg(__pyx_t_3, __pyx_t_4) : __Pyx_PyObject_CallNoArg(__pyx_t_3);
  __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0;
  if (unlikely(!__pyx_t_2)) __PYX_ERR(10, 595, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
  __pyx_t_3 = __Pyx_PyObject_GetAttrStr(__pyx_t_2, __pyx_n_s_anext); if (unlikely(!__pyx_t_3)) __PYX_ERR(10, 595, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  __pyx_t_2 = NULL;
  if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_3))) {
    __pyx_t_2 = PyMethod_GET_SELF(__pyx_t_3);
    if (likely(__pyx_t_2)) {
      PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_3);
      __Pyx_INCREF(__pyx_t_2);
      __Pyx_INCREF(function);
      __Pyx_DECREF_SET(__pyx_t_3, function);
    }
  }
  __pyx_t_1 = (__pyx_t_2) ? __Pyx_PyObject_CallOneArg(__pyx_t_3, __pyx_t_2) : __Pyx_PyObject_CallNoArg(__pyx_t_3);
  __Pyx_XDECREF(__pyx_t_2); __pyx_t_2 = 0;
  if (unlikely(!__pyx_t_1)) __PYX_ERR(10, 595, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
  __pyx_r = __Pyx_Coroutine_Yield_From(__pyx_generator, __pyx_t_1);
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  __Pyx_XGOTREF(__pyx_r);
  if (likely(__pyx_r)) {
    __Pyx_XGIVEREF(__pyx_r);
    __Pyx_RefNannyFinishContext();
    __Pyx_Coroutine_ResetAndClearException(__pyx_generator);
    /* return from generator, awaiting value */
    __pyx_generator->resume_label = 1;
    return __pyx_r;
    __pyx_L4_resume_from_await:;
    if (unlikely(!__pyx_sent_value)) __PYX_ERR(10, 595, __pyx_L1_error)
    __pyx_t_1 = __pyx_sent_value; __Pyx_INCREF(__pyx_t_1);
  } else {
    __pyx_t_1 = NULL;
    if (__Pyx_PyGen_FetchStopIterationValue(&__pyx_t_1) < 0) __PYX_ERR(10, 595, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_1);
  }
  __pyx_r = NULL; __Pyx_ReturnWithStopIteration(__pyx_t_1);
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  goto __pyx_L0;
  CYTHON_MAYBE_UNUSED_VAR(__pyx_cur_scope);

  /* "src/python/grpcio/grpc/_cython/_cygrpc/aio/server.pyx.pxi":594
 *         return self._agen
 * 
 *     async def __anext__(self):             # <<<<<<<<<<<<<<
 *         return await self.__aiter__().__anext__()
 * 
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_XDECREF(__pyx_t_3);
  __Pyx_XDECREF(__pyx_t_4);
  __Pyx_AddTraceback("__anext__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_L0:;
  __Pyx_XDECREF(__pyx_r); __pyx_r = 0;
  #if !CYTHON_USE_EXC_INFO_STACK
  __Pyx_Coroutine_ResetAndClearException(__pyx_generator);
  #endif
  __pyx_generator->resume_label = -1;
  __Pyx_Coroutine_clear((PyObject*)__pyx_generator);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "(tree fragment)":1
 * def __reduce_cython__(self):             # <<<<<<<<<<<<<<
 *     raise TypeError("no default __reduce__ due to non-trivial __cinit__")
 * def __setstate_cython__(self, __pyx_state):
 */

/* Python wrapper */
static PyObject *__pyx_pw_4grpc_7_cython_6cygrpc_16_MessageReceiver_11__reduce_cython__(PyObject *__pyx_v_self, CYTHON_UNUSED PyObject *unused); /*proto*/
static PyObject *__pyx_pw_4grpc_7_cython_6cygrpc_16_MessageReceiver_11__reduce_cython__(PyObject *__pyx_v_self, CYTHON_UNUSED PyObject *unused) {
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__reduce_cython__ (wrapper)", 0);
  __pyx_r = __pyx_pf_4grpc_7_cython_6cygrpc_16_MessageReceiver_10__reduce_cython__(((struct __pyx_obj_4grpc_7_cython_6cygrpc__MessageReceiver *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_4grpc_7_cython_6cygrpc_16_MessageReceiver_10__reduce_cython__(CYTHON_UNUSED struct __pyx_obj_4grpc_7_cython_6cygrpc__MessageReceiver *__pyx_v_self) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("__reduce_cython__", 0);

  /* "(tree fragment)":2
 * def __reduce_cython__(self):
 *     raise TypeError("no default __reduce__ due to non-trivial __cinit__")             # <<<<<<<<<<<<<<
 * def __setstate_cython__(self, __pyx_state):
 *     raise TypeError("no default __reduce__ due to non-trivial __cinit__")
 */
  __pyx_t_1 = __Pyx_PyObject_Call(__pyx_builtin_TypeError, __pyx_tuple__189, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(11, 2, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_Raise(__pyx_t_1, 0, 0, 0);
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  __PYX_ERR(11, 2, __pyx_L1_error)

  /* "(tree fragment)":1
 * def __reduce_cython__(self):             # <<<<<<<<<<<<<<
 *     raise TypeError("no default __reduce__ due to non-trivial __cinit__")
 * def __setstate_cython__(self, __pyx_state):
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_AddTraceback("grpc._cython.cygrpc._MessageReceiver.__reduce_cython__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "(tree fragment)":3
 * def __reduce_cython__(self):
 *     raise TypeError("no default __reduce__ due to non-trivial __cinit__")
 * def __setstate_cython__(self, __pyx_state):             # <<<<<<<<<<<<<<
 *     raise TypeError("no default __reduce__ due to non-trivial __cinit__")
 */

/* Python wrapper */
static PyObject *__pyx_pw_4grpc_7_cython_6cygrpc_16_MessageReceiver_13__setstate_cython__(PyObject *__pyx_v_self, PyObject *__pyx_v___pyx_state); /*proto*/
static PyObject *__pyx_pw_4grpc_7_cython_6cygrpc_16_MessageReceiver_13__setstate_cython__(PyObject *__pyx_v_self, PyObject *__pyx_v___pyx_state) {
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__setstate_cython__ (wrapper)", 0);
  __pyx_r = __pyx_pf_4grpc_7_cython_6cygrpc_16_MessageReceiver_12__setstate_cython__(((struct __pyx_obj_4grpc_7_cython_6cygrpc__MessageReceiver *)__pyx_v_self), ((PyObject *)__pyx_v___pyx_state));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_4grpc_7_cython_6cygrpc_16_MessageReceiver_12__setstate_cython__(CYTHON_UNUSED struct __pyx_obj_4grpc_7_cython_6cygrpc__MessageReceiver *__pyx_v_self, CYTHON_UNUSED PyObject *__pyx_v___pyx_state) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("__setstate_cython__", 0);

  /* "(tree fragment)":4
 *     raise TypeError("no default __reduce__ due to non-trivial __cinit__")
 * def __setstate_cython__(self, __pyx_state):
 *     raise TypeError("no default __reduce__ due to non-trivial __cinit__")             # <<<<<<<<<<<<<<
 */
  __pyx_t_1 = __Pyx_PyObject_Call(__pyx_builtin_TypeError, __pyx_tuple__190, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(11, 4, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_Raise(__pyx_t_1, 0, 0, 0);
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  __PYX_ERR(11, 4, __pyx_L1_error)

  /* "(tree fragment)":3
 * def __reduce_cython__(self):
 *     raise TypeError("no default __reduce__ due to non-trivial __cinit__")
 * def __setstate_cython__(self, __pyx_state):             # <<<<<<<<<<<<<<
 *     raise TypeError("no default __reduce__ due to non-trivial __cinit__")
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_AddTraceback("grpc._cython.cygrpc._MessageReceiver.__setstate_cython__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}
static PyObject *__pyx_gb_4grpc_7_cython_6cygrpc_166generator32(__pyx_CoroutineObject *__pyx_generator, CYTHON_UNUSED PyThreadState *__pyx_tstate, PyObject *__pyx_sent_value); /* proto */

/* "src/python/grpcio/grpc/_cython/_cygrpc/aio/server.pyx.pxi":598
 * 
 * 
 * async def _handle_stream_unary_rpc(object method_handler,             # <<<<<<<<<<<<<<
 *                                    RPCState rpc_state,
 *                                    object loop):
 */

/* Python wrapper */
static PyObject *__pyx_pw_4grpc_7_cython_6cygrpc_165_handle_stream_unary_rpc(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
static PyMethodDef __pyx_mdef_4grpc_7_cython_6cygrpc_165_handle_stream_unary_rpc = {"_handle_stream_unary_rpc", (PyCFunction)(void*)(PyCFunctionWithKeywords)__pyx_pw_4grpc_7_cython_6cygrpc_165_handle_stream_unary_rpc, METH_VARARGS|METH_KEYWORDS, 0};
static PyObject *__pyx_pw_4grpc_7_cython_6cygrpc_165_handle_stream_unary_rpc(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
  PyObject *__pyx_v_method_handler = 0;
  struct __pyx_obj_4grpc_7_cython_6cygrpc_RPCState *__pyx_v_rpc_state = 0;
  PyObject *__pyx_v_loop = 0;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("_handle_stream_unary_rpc (wrapper)", 0);
  {
    static PyObject **__pyx_pyargnames[] = {&__pyx_n_s_method_handler,&__pyx_n_s_rpc_state,&__pyx_n_s_loop,0};
    PyObject* values[3] = {0,0,0};
    if (unlikely(__pyx_kwds)) {
      Py_ssize_t kw_args;
      const Py_ssize_t pos_args = PyTuple_GET_SIZE(__pyx_args);
      switch (pos_args) {
        case  3: values[2] = PyTuple_GET_ITEM(__pyx_args, 2);
        CYTHON_FALLTHROUGH;
        case  2: values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
        CYTHON_FALLTHROUGH;
        case  1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
        CYTHON_FALLTHROUGH;
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      kw_args = PyDict_Size(__pyx_kwds);
      switch (pos_args) {
        case  0:
        if (likely((values[0] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_method_handler)) != 0)) kw_args--;
        else goto __pyx_L5_argtuple_error;
        CYTHON_FALLTHROUGH;
        case  1:
        if (likely((values[1] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_rpc_state)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("_handle_stream_unary_rpc", 1, 3, 3, 1); __PYX_ERR(10, 598, __pyx_L3_error)
        }
        CYTHON_FALLTHROUGH;
        case  2:
        if (likely((values[2] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_loop)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("_handle_stream_unary_rpc", 1, 3, 3, 2); __PYX_ERR(10, 598, __pyx_L3_error)
        }
      }
      if (unlikely(kw_args > 0)) {
        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "_handle_stream_unary_rpc") < 0)) __PYX_ERR(10, 598, __pyx_L3_error)
      }
    } else if (PyTuple_GET_SIZE(__pyx_args) != 3) {
      goto __pyx_L5_argtuple_error;
    } else {
      values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
      values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
      values[2] = PyTuple_GET_ITEM(__pyx_args, 2);
    }
    __pyx_v_method_handler = values[0];
    __pyx_v_rpc_state = ((struct __pyx_obj_4grpc_7_cython_6cygrpc_RPCState *)values[1]);
    __pyx_v_loop = values[2];
  }
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("_handle_stream_unary_rpc", 1, 3, 3, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(10, 598, __pyx_L3_error)
  __pyx_L3_error:;
  __Pyx_AddTraceback("grpc._cython.cygrpc._handle_stream_unary_rpc", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_rpc_state), __pyx_ptype_4grpc_7_cython_6cygrpc_RPCState, 1, "rpc_state", 0))) __PYX_ERR(10, 599, __pyx_L1_error)
  __pyx_r = __pyx_pf_4grpc_7_cython_6cygrpc_164_handle_stream_unary_rpc(__pyx_self, __pyx_v_method_handler, __pyx_v_rpc_state, __pyx_v_loop);

  /* function exit code */
  goto __pyx_L0;
  __pyx_L1_error:;
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_4grpc_7_cython_6cygrpc_164_handle_stream_unary_rpc(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__pyx_v_method_handler, struct __pyx_obj_4grpc_7_cython_6cygrpc_RPCState *__pyx_v_rpc_state, PyObject *__pyx_v_loop) {
  struct __pyx_obj_4grpc_7_cython_6cygrpc___pyx_scope_struct_44__handle_stream_unary_rpc *__pyx_cur_scope;
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("_handle_stream_unary_rpc", 0);
  __pyx_cur_scope = (struct __pyx_obj_4grpc_7_cython_6cygrpc___pyx_scope_struct_44__handle_stream_unary_rpc *)__pyx_tp_new_4grpc_7_cython_6cygrpc___pyx_scope_struct_44__handle_stream_unary_rpc(__pyx_ptype_4grpc_7_cython_6cygrpc___pyx_scope_struct_44__handle_stream_unary_rpc, __pyx_empty_tuple, NULL);
  if (unlikely(!__pyx_cur_scope)) {
    __pyx_cur_scope = ((struct __pyx_obj_4grpc_7_cython_6cygrpc___pyx_scope_struct_44__handle_stream_unary_rpc *)Py_None);
    __Pyx_INCREF(Py_None);
    __PYX_ERR(10, 598, __pyx_L1_error)
  } else {
    __Pyx_GOTREF(__pyx_cur_scope);
  }
  __pyx_cur_scope->__pyx_v_method_handler = __pyx_v_method_handler;
  __Pyx_INCREF(__pyx_cur_scope->__pyx_v_method_handler);
  __Pyx_GIVEREF(__pyx_cur_scope->__pyx_v_method_handler);
  __pyx_cur_scope->__pyx_v_rpc_state = __pyx_v_rpc_state;
  __Pyx_INCREF((PyObject *)__pyx_cur_scope->__pyx_v_rpc_state);
  __Pyx_GIVEREF((PyObject *)__pyx_cur_scope->__pyx_v_rpc_state);
  __pyx_cur_scope->__pyx_v_loop = __pyx_v_loop;
  __Pyx_INCREF(__pyx_cur_scope->__pyx_v_loop);
  __Pyx_GIVEREF(__pyx_cur_scope->__pyx_v_loop);
  {
    __pyx_CoroutineObject *gen = __Pyx_Coroutine_New((__pyx_coroutine_body_t) __pyx_gb_4grpc_7_cython_6cygrpc_166generator32, __pyx_codeobj__191, (PyObject *) __pyx_cur_scope, __pyx_n_s_handle_stream_unary_rpc, __pyx_n_s_handle_stream_unary_rpc, __pyx_n_s_grpc__cython_cygrpc); if (unlikely(!gen)) __PYX_ERR(10, 598, __pyx_L1_error)
    __Pyx_DECREF(__pyx_cur_scope);
    __Pyx_RefNannyFinishContext();
    return (PyObject *) gen;
  }

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_AddTraceback("grpc._cython.cygrpc._handle_stream_unary_rpc", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __Pyx_DECREF(((PyObject *)__pyx_cur_scope));
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_gb_4grpc_7_cython_6cygrpc_166generator32(__pyx_CoroutineObject *__pyx_generator, CYTHON_UNUSED PyThreadState *__pyx_tstate, PyObject *__pyx_sent_value) /* generator body */
{
  struct __pyx_obj_4grpc_7_cython_6cygrpc___pyx_scope_struct_44__handle_stream_unary_rpc *__pyx_cur_scope = ((struct __pyx_obj_4grpc_7_cython_6cygrpc___pyx_scope_struct_44__handle_stream_unary_rpc *)__pyx_generator->closure);
  PyObject *__pyx_r = NULL;
  PyObject *__pyx_t_1 = NULL;
  PyObject *__pyx_t_2 = NULL;
  PyObject *__pyx_t_3 = NULL;
  PyObject *__pyx_t_4 = NULL;
  int __pyx_t_5;
  int __pyx_t_6;
  PyObject *__pyx_t_7 = NULL;
  PyObject *__pyx_t_8 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("_handle_stream_unary_rpc", 0);
  switch (__pyx_generator->resume_label) {
    case 0: goto __pyx_L3_first_run;
    case 1: goto __pyx_L5_resume_from_await;
    default: /* CPython raises the right error here */
    __Pyx_RefNannyFinishContext();
    return NULL;
  }
  __pyx_L3_first_run:;
  if (unlikely(!__pyx_sent_value)) __PYX_ERR(10, 598, __pyx_L1_error)

  /* "src/python/grpcio/grpc/_cython/_cygrpc/aio/server.pyx.pxi":604
 *     cdef _ServicerContext servicer_context = _ServicerContext(
 *         rpc_state,
 *         method_handler.request_deserializer,             # <<<<<<<<<<<<<<
 *         None,
 *         loop,
 */
  __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_cur_scope->__pyx_v_method_handler, __pyx_n_s_request_deserializer); if (unlikely(!__pyx_t_1)) __PYX_ERR(10, 604, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);

  /* "src/python/grpcio/grpc/_cython/_cygrpc/aio/server.pyx.pxi":602
 *                                    object loop):
 *     # Creates a dedecated ServicerContext
 *     cdef _ServicerContext servicer_context = _ServicerContext(             # <<<<<<<<<<<<<<
 *         rpc_state,
 *         method_handler.request_deserializer,
 */
  __pyx_t_2 = PyTuple_New(4); if (unlikely(!__pyx_t_2)) __PYX_ERR(10, 602, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __Pyx_INCREF(((PyObject *)__pyx_cur_scope->__pyx_v_rpc_state));
  __Pyx_GIVEREF(((PyObject *)__pyx_cur_scope->__pyx_v_rpc_state));
  PyTuple_SET_ITEM(__pyx_t_2, 0, ((PyObject *)__pyx_cur_scope->__pyx_v_rpc_state));
  __Pyx_GIVEREF(__pyx_t_1);
  PyTuple_SET_ITEM(__pyx_t_2, 1, __pyx_t_1);
  __Pyx_INCREF(Py_None);
  __Pyx_GIVEREF(Py_None);
  PyTuple_SET_ITEM(__pyx_t_2, 2, Py_None);
  __Pyx_INCREF(__pyx_cur_scope->__pyx_v_loop);
  __Pyx_GIVEREF(__pyx_cur_scope->__pyx_v_loop);
  PyTuple_SET_ITEM(__pyx_t_2, 3, __pyx_cur_scope->__pyx_v_loop);
  __pyx_t_1 = 0;
  __pyx_t_1 = __Pyx_PyObject_Call(((PyObject *)__pyx_ptype_4grpc_7_cython_6cygrpc__ServicerContext), __pyx_t_2, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(10, 602, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  __Pyx_GIVEREF(__pyx_t_1);
  __pyx_cur_scope->__pyx_v_servicer_context = ((struct __pyx_obj_4grpc_7_cython_6cygrpc__ServicerContext *)__pyx_t_1);
  __pyx_t_1 = 0;

  /* "src/python/grpcio/grpc/_cython/_cygrpc/aio/server.pyx.pxi":611
 *     # Prepares the request generator
 *     cdef object request_iterator
 *     if _is_async_handler(method_handler.stream_unary):             # <<<<<<<<<<<<<<
 *         request_iterator = _MessageReceiver(servicer_context)
 *     else:
 */
  __Pyx_GetModuleGlobalName(__pyx_t_2, __pyx_n_s_is_async_handler); if (unlikely(!__pyx_t_2)) __PYX_ERR(10, 611, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __pyx_t_3 = __Pyx_PyObject_GetAttrStr(__pyx_cur_scope->__pyx_v_method_handler, __pyx_n_s_stream_unary); if (unlikely(!__pyx_t_3)) __PYX_ERR(10, 611, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  __pyx_t_4 = NULL;
  if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_2))) {
    __pyx_t_4 = PyMethod_GET_SELF(__pyx_t_2);
    if (likely(__pyx_t_4)) {
      PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_2);
      __Pyx_INCREF(__pyx_t_4);
      __Pyx_INCREF(function);
      __Pyx_DECREF_SET(__pyx_t_2, function);
    }
  }
  __pyx_t_1 = (__pyx_t_4) ? __Pyx_PyObject_Call2Args(__pyx_t_2, __pyx_t_4, __pyx_t_3) : __Pyx_PyObject_CallOneArg(__pyx_t_2, __pyx_t_3);
  __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0;
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
  if (unlikely(!__pyx_t_1)) __PYX_ERR(10, 611, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  __pyx_t_5 = __Pyx_PyObject_IsTrue(__pyx_t_1); if (unlikely(__pyx_t_5 < 0)) __PYX_ERR(10, 611, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  if (__pyx_t_5) {

    /* "src/python/grpcio/grpc/_cython/_cygrpc/aio/server.pyx.pxi":612
 *     cdef object request_iterator
 *     if _is_async_handler(method_handler.stream_unary):
 *         request_iterator = _MessageReceiver(servicer_context)             # <<<<<<<<<<<<<<
 *     else:
 *         request_iterator = async_generator_to_generator(
 */
    __pyx_t_1 = __Pyx_PyObject_CallOneArg(((PyObject *)__pyx_ptype_4grpc_7_cython_6cygrpc__MessageReceiver), ((PyObject *)__pyx_cur_scope->__pyx_v_servicer_context)); if (unlikely(!__pyx_t_1)) __PYX_ERR(10, 612, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_1);
    __Pyx_GIVEREF(__pyx_t_1);
    __pyx_cur_scope->__pyx_v_request_iterator = __pyx_t_1;
    __pyx_t_1 = 0;

    /* "src/python/grpcio/grpc/_cython/_cygrpc/aio/server.pyx.pxi":611
 *     # Prepares the request generator
 *     cdef object request_iterator
 *     if _is_async_handler(method_handler.stream_unary):             # <<<<<<<<<<<<<<
 *         request_iterator = _MessageReceiver(servicer_context)
 *     else:
 */
    goto __pyx_L4;
  }

  /* "src/python/grpcio/grpc/_cython/_cygrpc/aio/server.pyx.pxi":614
 *         request_iterator = _MessageReceiver(servicer_context)
 *     else:
 *         request_iterator = async_generator_to_generator(             # <<<<<<<<<<<<<<
 *             _MessageReceiver(servicer_context),
 *             loop
 */
  /*else*/ {
    __Pyx_GetModuleGlobalName(__pyx_t_2, __pyx_n_s_async_generator_to_generator); if (unlikely(!__pyx_t_2)) __PYX_ERR(10, 614, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_2);

    /* "src/python/grpcio/grpc/_cython/_cygrpc/aio/server.pyx.pxi":615
 *     else:
 *         request_iterator = async_generator_to_generator(
 *             _MessageReceiver(servicer_context),             # <<<<<<<<<<<<<<
 *             loop
 *         )
 */
    __pyx_t_3 = __Pyx_PyObject_CallOneArg(((PyObject *)__pyx_ptype_4grpc_7_cython_6cygrpc__MessageReceiver), ((PyObject *)__pyx_cur_scope->__pyx_v_servicer_context)); if (unlikely(!__pyx_t_3)) __PYX_ERR(10, 615, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_3);

    /* "src/python/grpcio/grpc/_cython/_cygrpc/aio/server.pyx.pxi":616
 *         request_iterator = async_generator_to_generator(
 *             _MessageReceiver(servicer_context),
 *             loop             # <<<<<<<<<<<<<<
 *         )
 * 
 */
    __pyx_t_4 = NULL;
    __pyx_t_6 = 0;
    if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_2))) {
      __pyx_t_4 = PyMethod_GET_SELF(__pyx_t_2);
      if (likely(__pyx_t_4)) {
        PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_2);
        __Pyx_INCREF(__pyx_t_4);
        __Pyx_INCREF(function);
        __Pyx_DECREF_SET(__pyx_t_2, function);
        __pyx_t_6 = 1;
      }
    }
    #if CYTHON_FAST_PYCALL
    if (PyFunction_Check(__pyx_t_2)) {
      PyObject *__pyx_temp[3] = {__pyx_t_4, __pyx_t_3, __pyx_cur_scope->__pyx_v_loop};
      __pyx_t_1 = __Pyx_PyFunction_FastCall(__pyx_t_2, __pyx_temp+1-__pyx_t_6, 2+__pyx_t_6); if (unlikely(!__pyx_t_1)) __PYX_ERR(10, 614, __pyx_L1_error)
      __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0;
      __Pyx_GOTREF(__pyx_t_1);
      __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
    } else
    #endif
    #if CYTHON_FAST_PYCCALL
    if (__Pyx_PyFastCFunction_Check(__pyx_t_2)) {
      PyObject *__pyx_temp[3] = {__pyx_t_4, __pyx_t_3, __pyx_cur_scope->__pyx_v_loop};
      __pyx_t_1 = __Pyx_PyCFunction_FastCall(__pyx_t_2, __pyx_temp+1-__pyx_t_6, 2+__pyx_t_6); if (unlikely(!__pyx_t_1)) __PYX_ERR(10, 614, __pyx_L1_error)
      __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0;
      __Pyx_GOTREF(__pyx_t_1);
      __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
    } else
    #endif
    {
      __pyx_t_7 = PyTuple_New(2+__pyx_t_6); if (unlikely(!__pyx_t_7)) __PYX_ERR(10, 614, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_7);
      if (__pyx_t_4) {
        __Pyx_GIVEREF(__pyx_t_4); PyTuple_SET_ITEM(__pyx_t_7, 0, __pyx_t_4); __pyx_t_4 = NULL;
      }
      __Pyx_GIVEREF(__pyx_t_3);
      PyTuple_SET_ITEM(__pyx_t_7, 0+__pyx_t_6, __pyx_t_3);
      __Pyx_INCREF(__pyx_cur_scope->__pyx_v_loop);
      __Pyx_GIVEREF(__pyx_cur_scope->__pyx_v_loop);
      PyTuple_SET_ITEM(__pyx_t_7, 1+__pyx_t_6, __pyx_cur_scope->__pyx_v_loop);
      __pyx_t_3 = 0;
      __pyx_t_1 = __Pyx_PyObject_Call(__pyx_t_2, __pyx_t_7, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(10, 614, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_1);
      __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
    }
    __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
    __Pyx_GIVEREF(__pyx_t_1);
    __pyx_cur_scope->__pyx_v_request_iterator = __pyx_t_1;
    __pyx_t_1 = 0;
  }
  __pyx_L4:;

  /* "src/python/grpcio/grpc/_cython/_cygrpc/aio/server.pyx.pxi":620
 * 
 *     # Finishes the application handler
 *     await _finish_handler_with_unary_response(             # <<<<<<<<<<<<<<
 *         rpc_state,
 *         method_handler.stream_unary,
 */
  __Pyx_GetModuleGlobalName(__pyx_t_2, __pyx_n_s_finish_handler_with_unary_respo); if (unlikely(!__pyx_t_2)) __PYX_ERR(10, 620, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);

  /* "src/python/grpcio/grpc/_cython/_cygrpc/aio/server.pyx.pxi":622
 *     await _finish_handler_with_unary_response(
 *         rpc_state,
 *         method_handler.stream_unary,             # <<<<<<<<<<<<<<
 *         request_iterator,
 *         servicer_context,
 */
  __pyx_t_7 = __Pyx_PyObject_GetAttrStr(__pyx_cur_scope->__pyx_v_method_handler, __pyx_n_s_stream_unary); if (unlikely(!__pyx_t_7)) __PYX_ERR(10, 622, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_7);

  /* "src/python/grpcio/grpc/_cython/_cygrpc/aio/server.pyx.pxi":625
 *         request_iterator,
 *         servicer_context,
 *         method_handler.response_serializer,             # <<<<<<<<<<<<<<
 *         loop
 *     )
 */
  __pyx_t_3 = __Pyx_PyObject_GetAttrStr(__pyx_cur_scope->__pyx_v_method_handler, __pyx_n_s_response_serializer); if (unlikely(!__pyx_t_3)) __PYX_ERR(10, 625, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);

  /* "src/python/grpcio/grpc/_cython/_cygrpc/aio/server.pyx.pxi":626
 *         servicer_context,
 *         method_handler.response_serializer,
 *         loop             # <<<<<<<<<<<<<<
 *     )
 * 
 */
  __pyx_t_4 = NULL;
  __pyx_t_6 = 0;
  if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_2))) {
    __pyx_t_4 = PyMethod_GET_SELF(__pyx_t_2);
    if (likely(__pyx_t_4)) {
      PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_2);
      __Pyx_INCREF(__pyx_t_4);
      __Pyx_INCREF(function);
      __Pyx_DECREF_SET(__pyx_t_2, function);
      __pyx_t_6 = 1;
    }
  }
  #if CYTHON_FAST_PYCALL
  if (PyFunction_Check(__pyx_t_2)) {
    PyObject *__pyx_temp[7] = {__pyx_t_4, ((PyObject *)__pyx_cur_scope->__pyx_v_rpc_state), __pyx_t_7, __pyx_cur_scope->__pyx_v_request_iterator, ((PyObject *)__pyx_cur_scope->__pyx_v_servicer_context), __pyx_t_3, __pyx_cur_scope->__pyx_v_loop};
    __pyx_t_1 = __Pyx_PyFunction_FastCall(__pyx_t_2, __pyx_temp+1-__pyx_t_6, 6+__pyx_t_6); if (unlikely(!__pyx_t_1)) __PYX_ERR(10, 620, __pyx_L1_error)
    __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0;
    __Pyx_GOTREF(__pyx_t_1);
    __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
    __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
  } else
  #endif
  #if CYTHON_FAST_PYCCALL
  if (__Pyx_PyFastCFunction_Check(__pyx_t_2)) {
    PyObject *__pyx_temp[7] = {__pyx_t_4, ((PyObject *)__pyx_cur_scope->__pyx_v_rpc_state), __pyx_t_7, __pyx_cur_scope->__pyx_v_request_iterator, ((PyObject *)__pyx_cur_scope->__pyx_v_servicer_context), __pyx_t_3, __pyx_cur_scope->__pyx_v_loop};
    __pyx_t_1 = __Pyx_PyCFunction_FastCall(__pyx_t_2, __pyx_temp+1-__pyx_t_6, 6+__pyx_t_6); if (unlikely(!__pyx_t_1)) __PYX_ERR(10, 620, __pyx_L1_error)
    __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0;
    __Pyx_GOTREF(__pyx_t_1);
    __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
    __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
  } else
  #endif
  {
    __pyx_t_8 = PyTuple_New(6+__pyx_t_6); if (unlikely(!__pyx_t_8)) __PYX_ERR(10, 620, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_8);
    if (__pyx_t_4) {
      __Pyx_GIVEREF(__pyx_t_4); PyTuple_SET_ITEM(__pyx_t_8, 0, __pyx_t_4); __pyx_t_4 = NULL;
    }
    __Pyx_INCREF(((PyObject *)__pyx_cur_scope->__pyx_v_rpc_state));
    __Pyx_GIVEREF(((PyObject *)__pyx_cur_scope->__pyx_v_rpc_state));
    PyTuple_SET_ITEM(__pyx_t_8, 0+__pyx_t_6, ((PyObject *)__pyx_cur_scope->__pyx_v_rpc_state));
    __Pyx_GIVEREF(__pyx_t_7);
    PyTuple_SET_ITEM(__pyx_t_8, 1+__pyx_t_6, __pyx_t_7);
    __Pyx_INCREF(__pyx_cur_scope->__pyx_v_request_iterator);
    __Pyx_GIVEREF(__pyx_cur_scope->__pyx_v_request_iterator);
    PyTuple_SET_ITEM(__pyx_t_8, 2+__pyx_t_6, __pyx_cur_scope->__pyx_v_request_iterator);
    __Pyx_INCREF(((PyObject *)__pyx_cur_scope->__pyx_v_servicer_context));
    __Pyx_GIVEREF(((PyObject *)__pyx_cur_scope->__pyx_v_servicer_context));
    PyTuple_SET_ITEM(__pyx_t_8, 3+__pyx_t_6, ((PyObject *)__pyx_cur_scope->__pyx_v_servicer_context));
    __Pyx_GIVEREF(__pyx_t_3);
    PyTuple_SET_ITEM(__pyx_t_8, 4+__pyx_t_6, __pyx_t_3);
    __Pyx_INCREF(__pyx_cur_scope->__pyx_v_loop);
    __Pyx_GIVEREF(__pyx_cur_scope->__pyx_v_loop);
    PyTuple_SET_ITEM(__pyx_t_8, 5+__pyx_t_6, __pyx_cur_scope->__pyx_v_loop);
    __pyx_t_7 = 0;
    __pyx_t_3 = 0;
    __pyx_t_1 = __Pyx_PyObject_Call(__pyx_t_2, __pyx_t_8, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(10, 620, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_1);
    __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
  }
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  __pyx_r = __Pyx_Coroutine_Yield_From(__pyx_generator, __pyx_t_1);
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  __Pyx_XGOTREF(__pyx_r);
  if (likely(__pyx_r)) {
    __Pyx_XGIVEREF(__pyx_r);
    __Pyx_RefNannyFinishContext();
    __Pyx_Coroutine_ResetAndClearException(__pyx_generator);
    /* return from generator, awaiting value */
    __pyx_generator->resume_label = 1;
    return __pyx_r;
    __pyx_L5_resume_from_await:;
    if (unlikely(!__pyx_sent_value)) __PYX_ERR(10, 620, __pyx_L1_error)
  } else {
    PyObject* exc_type = __Pyx_PyErr_Occurred();
    if (exc_type) {
      if (likely(exc_type == PyExc_StopIteration || (exc_type != PyExc_GeneratorExit && __Pyx_PyErr_GivenExceptionMatches(exc_type, PyExc_StopIteration)))) PyErr_Clear();
      else __PYX_ERR(10, 620, __pyx_L1_error)
    }
  }
  CYTHON_MAYBE_UNUSED_VAR(__pyx_cur_scope);

  /* "src/python/grpcio/grpc/_cython/_cygrpc/aio/server.pyx.pxi":598
 * 
 * 
 * async def _handle_stream_unary_rpc(object method_handler,             # <<<<<<<<<<<<<<
 *                                    RPCState rpc_state,
 *                                    object loop):
 */

  /* function exit code */
  PyErr_SetNone(PyExc_StopIteration);
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_XDECREF(__pyx_t_3);
  __Pyx_XDECREF(__pyx_t_4);
  __Pyx_XDECREF(__pyx_t_7);
  __Pyx_XDECREF(__pyx_t_8);
  __Pyx_AddTraceback("_handle_stream_unary_rpc", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_L0:;
  __Pyx_XDECREF(__pyx_r); __pyx_r = 0;
  #if !CYTHON_USE_EXC_INFO_STACK
  __Pyx_Coroutine_ResetAndClearException(__pyx_generator);
  #endif
  __pyx_generator->resume_label = -1;
  __Pyx_Coroutine_clear((PyObject*)__pyx_generator);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}
static PyObject *__pyx_gb_4grpc_7_cython_6cygrpc_169generator33(__pyx_CoroutineObject *__pyx_generator, CYTHON_UNUSED PyThreadState *__pyx_tstate, PyObject *__pyx_sent_value); /* proto */

/* "src/python/grpcio/grpc/_cython/_cygrpc/aio/server.pyx.pxi":630
 * 
 * 
 * async def _handle_stream_stream_rpc(object method_handler,             # <<<<<<<<<<<<<<
 *                                     RPCState rpc_state,
 *                                     object loop):
 */

/* Python wrapper */
static PyObject *__pyx_pw_4grpc_7_cython_6cygrpc_168_handle_stream_stream_rpc(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
static PyMethodDef __pyx_mdef_4grpc_7_cython_6cygrpc_168_handle_stream_stream_rpc = {"_handle_stream_stream_rpc", (PyCFunction)(void*)(PyCFunctionWithKeywords)__pyx_pw_4grpc_7_cython_6cygrpc_168_handle_stream_stream_rpc, METH_VARARGS|METH_KEYWORDS, 0};
static PyObject *__pyx_pw_4grpc_7_cython_6cygrpc_168_handle_stream_stream_rpc(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
  PyObject *__pyx_v_method_handler = 0;
  struct __pyx_obj_4grpc_7_cython_6cygrpc_RPCState *__pyx_v_rpc_state = 0;
  PyObject *__pyx_v_loop = 0;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("_handle_stream_stream_rpc (wrapper)", 0);
  {
    static PyObject **__pyx_pyargnames[] = {&__pyx_n_s_method_handler,&__pyx_n_s_rpc_state,&__pyx_n_s_loop,0};
    PyObject* values[3] = {0,0,0};
    if (unlikely(__pyx_kwds)) {
      Py_ssize_t kw_args;
      const Py_ssize_t pos_args = PyTuple_GET_SIZE(__pyx_args);
      switch (pos_args) {
        case  3: values[2] = PyTuple_GET_ITEM(__pyx_args, 2);
        CYTHON_FALLTHROUGH;
        case  2: values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
        CYTHON_FALLTHROUGH;
        case  1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
        CYTHON_FALLTHROUGH;
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      kw_args = PyDict_Size(__pyx_kwds);
      switch (pos_args) {
        case  0:
        if (likely((values[0] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_method_handler)) != 0)) kw_args--;
        else goto __pyx_L5_argtuple_error;
        CYTHON_FALLTHROUGH;
        case  1:
        if (likely((values[1] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_rpc_state)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("_handle_stream_stream_rpc", 1, 3, 3, 1); __PYX_ERR(10, 630, __pyx_L3_error)
        }
        CYTHON_FALLTHROUGH;
        case  2:
        if (likely((values[2] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_loop)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("_handle_stream_stream_rpc", 1, 3, 3, 2); __PYX_ERR(10, 630, __pyx_L3_error)
        }
      }
      if (unlikely(kw_args > 0)) {
        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "_handle_stream_stream_rpc") < 0)) __PYX_ERR(10, 630, __pyx_L3_error)
      }
    } else if (PyTuple_GET_SIZE(__pyx_args) != 3) {
      goto __pyx_L5_argtuple_error;
    } else {
      values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
      values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
      values[2] = PyTuple_GET_ITEM(__pyx_args, 2);
    }
    __pyx_v_method_handler = values[0];
    __pyx_v_rpc_state = ((struct __pyx_obj_4grpc_7_cython_6cygrpc_RPCState *)values[1]);
    __pyx_v_loop = values[2];
  }
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("_handle_stream_stream_rpc", 1, 3, 3, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(10, 630, __pyx_L3_error)
  __pyx_L3_error:;
  __Pyx_AddTraceback("grpc._cython.cygrpc._handle_stream_stream_rpc", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_rpc_state), __pyx_ptype_4grpc_7_cython_6cygrpc_RPCState, 1, "rpc_state", 0))) __PYX_ERR(10, 631, __pyx_L1_error)
  __pyx_r = __pyx_pf_4grpc_7_cython_6cygrpc_167_handle_stream_stream_rpc(__pyx_self, __pyx_v_method_handler, __pyx_v_rpc_state, __pyx_v_loop);

  /* function exit code */
  goto __pyx_L0;
  __pyx_L1_error:;
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_4grpc_7_cython_6cygrpc_167_handle_stream_stream_rpc(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__pyx_v_method_handler, struct __pyx_obj_4grpc_7_cython_6cygrpc_RPCState *__pyx_v_rpc_state, PyObject *__pyx_v_loop) {
  struct __pyx_obj_4grpc_7_cython_6cygrpc___pyx_scope_struct_45__handle_stream_stream_rpc *__pyx_cur_scope;
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("_handle_stream_stream_rpc", 0);
  __pyx_cur_scope = (struct __pyx_obj_4grpc_7_cython_6cygrpc___pyx_scope_struct_45__handle_stream_stream_rpc *)__pyx_tp_new_4grpc_7_cython_6cygrpc___pyx_scope_struct_45__handle_stream_stream_rpc(__pyx_ptype_4grpc_7_cython_6cygrpc___pyx_scope_struct_45__handle_stream_stream_rpc, __pyx_empty_tuple, NULL);
  if (unlikely(!__pyx_cur_scope)) {
    __pyx_cur_scope = ((struct __pyx_obj_4grpc_7_cython_6cygrpc___pyx_scope_struct_45__handle_stream_stream_rpc *)Py_None);
    __Pyx_INCREF(Py_None);
    __PYX_ERR(10, 630, __pyx_L1_error)
  } else {
    __Pyx_GOTREF(__pyx_cur_scope);
  }
  __pyx_cur_scope->__pyx_v_method_handler = __pyx_v_method_handler;
  __Pyx_INCREF(__pyx_cur_scope->__pyx_v_method_handler);
  __Pyx_GIVEREF(__pyx_cur_scope->__pyx_v_method_handler);
  __pyx_cur_scope->__pyx_v_rpc_state = __pyx_v_rpc_state;
  __Pyx_INCREF((PyObject *)__pyx_cur_scope->__pyx_v_rpc_state);
  __Pyx_GIVEREF((PyObject *)__pyx_cur_scope->__pyx_v_rpc_state);
  __pyx_cur_scope->__pyx_v_loop = __pyx_v_loop;
  __Pyx_INCREF(__pyx_cur_scope->__pyx_v_loop);
  __Pyx_GIVEREF(__pyx_cur_scope->__pyx_v_loop);
  {
    __pyx_CoroutineObject *gen = __Pyx_Coroutine_New((__pyx_coroutine_body_t) __pyx_gb_4grpc_7_cython_6cygrpc_169generator33, __pyx_codeobj__192, (PyObject *) __pyx_cur_scope, __pyx_n_s_handle_stream_stream_rpc, __pyx_n_s_handle_stream_stream_rpc, __pyx_n_s_grpc__cython_cygrpc); if (unlikely(!gen)) __PYX_ERR(10, 630, __pyx_L1_error)
    __Pyx_DECREF(__pyx_cur_scope);
    __Pyx_RefNannyFinishContext();
    return (PyObject *) gen;
  }

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_AddTraceback("grpc._cython.cygrpc._handle_stream_stream_rpc", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __Pyx_DECREF(((PyObject *)__pyx_cur_scope));
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_gb_4grpc_7_cython_6cygrpc_169generator33(__pyx_CoroutineObject *__pyx_generator, CYTHON_UNUSED PyThreadState *__pyx_tstate, PyObject *__pyx_sent_value) /* generator body */
{
  struct __pyx_obj_4grpc_7_cython_6cygrpc___pyx_scope_struct_45__handle_stream_stream_rpc *__pyx_cur_scope = ((struct __pyx_obj_4grpc_7_cython_6cygrpc___pyx_scope_struct_45__handle_stream_stream_rpc *)__pyx_generator->closure);
  PyObject *__pyx_r = NULL;
  PyObject *__pyx_t_1 = NULL;
  PyObject *__pyx_t_2 = NULL;
  PyObject *__pyx_t_3 = NULL;
  PyObject *__pyx_t_4 = NULL;
  int __pyx_t_5;
  int __pyx_t_6;
  PyObject *__pyx_t_7 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("_handle_stream_stream_rpc", 0);
  switch (__pyx_generator->resume_label) {
    case 0: goto __pyx_L3_first_run;
    case 1: goto __pyx_L5_resume_from_await;
    default: /* CPython raises the right error here */
    __Pyx_RefNannyFinishContext();
    return NULL;
  }
  __pyx_L3_first_run:;
  if (unlikely(!__pyx_sent_value)) __PYX_ERR(10, 630, __pyx_L1_error)

  /* "src/python/grpcio/grpc/_cython/_cygrpc/aio/server.pyx.pxi":636
 *     cdef _ServicerContext servicer_context = _ServicerContext(
 *         rpc_state,
 *         method_handler.request_deserializer,             # <<<<<<<<<<<<<<
 *         method_handler.response_serializer,
 *         loop,
 */
  __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_cur_scope->__pyx_v_method_handler, __pyx_n_s_request_deserializer); if (unlikely(!__pyx_t_1)) __PYX_ERR(10, 636, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);

  /* "src/python/grpcio/grpc/_cython/_cygrpc/aio/server.pyx.pxi":637
 *         rpc_state,
 *         method_handler.request_deserializer,
 *         method_handler.response_serializer,             # <<<<<<<<<<<<<<
 *         loop,
 *     )
 */
  __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_cur_scope->__pyx_v_method_handler, __pyx_n_s_response_serializer); if (unlikely(!__pyx_t_2)) __PYX_ERR(10, 637, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);

  /* "src/python/grpcio/grpc/_cython/_cygrpc/aio/server.pyx.pxi":634
 *                                     object loop):
 *     # Creates a dedecated ServicerContext
 *     cdef _ServicerContext servicer_context = _ServicerContext(             # <<<<<<<<<<<<<<
 *         rpc_state,
 *         method_handler.request_deserializer,
 */
  __pyx_t_3 = PyTuple_New(4); if (unlikely(!__pyx_t_3)) __PYX_ERR(10, 634, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  __Pyx_INCREF(((PyObject *)__pyx_cur_scope->__pyx_v_rpc_state));
  __Pyx_GIVEREF(((PyObject *)__pyx_cur_scope->__pyx_v_rpc_state));
  PyTuple_SET_ITEM(__pyx_t_3, 0, ((PyObject *)__pyx_cur_scope->__pyx_v_rpc_state));
  __Pyx_GIVEREF(__pyx_t_1);
  PyTuple_SET_ITEM(__pyx_t_3, 1, __pyx_t_1);
  __Pyx_GIVEREF(__pyx_t_2);
  PyTuple_SET_ITEM(__pyx_t_3, 2, __pyx_t_2);
  __Pyx_INCREF(__pyx_cur_scope->__pyx_v_loop);
  __Pyx_GIVEREF(__pyx_cur_scope->__pyx_v_loop);
  PyTuple_SET_ITEM(__pyx_t_3, 3, __pyx_cur_scope->__pyx_v_loop);
  __pyx_t_1 = 0;
  __pyx_t_2 = 0;
  __pyx_t_2 = __Pyx_PyObject_Call(((PyObject *)__pyx_ptype_4grpc_7_cython_6cygrpc__ServicerContext), __pyx_t_3, NULL); if (unlikely(!__pyx_t_2)) __PYX_ERR(10, 634, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
  __Pyx_GIVEREF(__pyx_t_2);
  __pyx_cur_scope->__pyx_v_servicer_context = ((struct __pyx_obj_4grpc_7_cython_6cygrpc__ServicerContext *)__pyx_t_2);
  __pyx_t_2 = 0;

  /* "src/python/grpcio/grpc/_cython/_cygrpc/aio/server.pyx.pxi":643
 *     # Prepares the request generator
 *     cdef object request_iterator
 *     if _is_async_handler(method_handler.stream_stream):             # <<<<<<<<<<<<<<
 *         request_iterator = _MessageReceiver(servicer_context)
 *     else:
 */
  __Pyx_GetModuleGlobalName(__pyx_t_3, __pyx_n_s_is_async_handler); if (unlikely(!__pyx_t_3)) __PYX_ERR(10, 643, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_cur_scope->__pyx_v_method_handler, __pyx_n_s_stream_stream); if (unlikely(!__pyx_t_1)) __PYX_ERR(10, 643, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_t_4 = NULL;
  if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_3))) {
    __pyx_t_4 = PyMethod_GET_SELF(__pyx_t_3);
    if (likely(__pyx_t_4)) {
      PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_3);
      __Pyx_INCREF(__pyx_t_4);
      __Pyx_INCREF(function);
      __Pyx_DECREF_SET(__pyx_t_3, function);
    }
  }
  __pyx_t_2 = (__pyx_t_4) ? __Pyx_PyObject_Call2Args(__pyx_t_3, __pyx_t_4, __pyx_t_1) : __Pyx_PyObject_CallOneArg(__pyx_t_3, __pyx_t_1);
  __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0;
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  if (unlikely(!__pyx_t_2)) __PYX_ERR(10, 643, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
  __pyx_t_5 = __Pyx_PyObject_IsTrue(__pyx_t_2); if (unlikely(__pyx_t_5 < 0)) __PYX_ERR(10, 643, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  if (__pyx_t_5) {

    /* "src/python/grpcio/grpc/_cython/_cygrpc/aio/server.pyx.pxi":644
 *     cdef object request_iterator
 *     if _is_async_handler(method_handler.stream_stream):
 *         request_iterator = _MessageReceiver(servicer_context)             # <<<<<<<<<<<<<<
 *     else:
 *         request_iterator = async_generator_to_generator(
 */
    __pyx_t_2 = __Pyx_PyObject_CallOneArg(((PyObject *)__pyx_ptype_4grpc_7_cython_6cygrpc__MessageReceiver), ((PyObject *)__pyx_cur_scope->__pyx_v_servicer_context)); if (unlikely(!__pyx_t_2)) __PYX_ERR(10, 644, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_2);
    __Pyx_GIVEREF(__pyx_t_2);
    __pyx_cur_scope->__pyx_v_request_iterator = __pyx_t_2;
    __pyx_t_2 = 0;

    /* "src/python/grpcio/grpc/_cython/_cygrpc/aio/server.pyx.pxi":643
 *     # Prepares the request generator
 *     cdef object request_iterator
 *     if _is_async_handler(method_handler.stream_stream):             # <<<<<<<<<<<<<<
 *         request_iterator = _MessageReceiver(servicer_context)
 *     else:
 */
    goto __pyx_L4;
  }

  /* "src/python/grpcio/grpc/_cython/_cygrpc/aio/server.pyx.pxi":646
 *         request_iterator = _MessageReceiver(servicer_context)
 *     else:
 *         request_iterator = async_generator_to_generator(             # <<<<<<<<<<<<<<
 *             _MessageReceiver(servicer_context),
 *             loop
 */
  /*else*/ {
    __Pyx_GetModuleGlobalName(__pyx_t_3, __pyx_n_s_async_generator_to_generator); if (unlikely(!__pyx_t_3)) __PYX_ERR(10, 646, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_3);

    /* "src/python/grpcio/grpc/_cython/_cygrpc/aio/server.pyx.pxi":647
 *     else:
 *         request_iterator = async_generator_to_generator(
 *             _MessageReceiver(servicer_context),             # <<<<<<<<<<<<<<
 *             loop
 *         )
 */
    __pyx_t_1 = __Pyx_PyObject_CallOneArg(((PyObject *)__pyx_ptype_4grpc_7_cython_6cygrpc__MessageReceiver), ((PyObject *)__pyx_cur_scope->__pyx_v_servicer_context)); if (unlikely(!__pyx_t_1)) __PYX_ERR(10, 647, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_1);

    /* "src/python/grpcio/grpc/_cython/_cygrpc/aio/server.pyx.pxi":648
 *         request_iterator = async_generator_to_generator(
 *             _MessageReceiver(servicer_context),
 *             loop             # <<<<<<<<<<<<<<
 *         )
 * 
 */
    __pyx_t_4 = NULL;
    __pyx_t_6 = 0;
    if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_3))) {
      __pyx_t_4 = PyMethod_GET_SELF(__pyx_t_3);
      if (likely(__pyx_t_4)) {
        PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_3);
        __Pyx_INCREF(__pyx_t_4);
        __Pyx_INCREF(function);
        __Pyx_DECREF_SET(__pyx_t_3, function);
        __pyx_t_6 = 1;
      }
    }
    #if CYTHON_FAST_PYCALL
    if (PyFunction_Check(__pyx_t_3)) {
      PyObject *__pyx_temp[3] = {__pyx_t_4, __pyx_t_1, __pyx_cur_scope->__pyx_v_loop};
      __pyx_t_2 = __Pyx_PyFunction_FastCall(__pyx_t_3, __pyx_temp+1-__pyx_t_6, 2+__pyx_t_6); if (unlikely(!__pyx_t_2)) __PYX_ERR(10, 646, __pyx_L1_error)
      __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0;
      __Pyx_GOTREF(__pyx_t_2);
      __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
    } else
    #endif
    #if CYTHON_FAST_PYCCALL
    if (__Pyx_PyFastCFunction_Check(__pyx_t_3)) {
      PyObject *__pyx_temp[3] = {__pyx_t_4, __pyx_t_1, __pyx_cur_scope->__pyx_v_loop};
      __pyx_t_2 = __Pyx_PyCFunction_FastCall(__pyx_t_3, __pyx_temp+1-__pyx_t_6, 2+__pyx_t_6); if (unlikely(!__pyx_t_2)) __PYX_ERR(10, 646, __pyx_L1_error)
      __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0;
      __Pyx_GOTREF(__pyx_t_2);
      __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
    } else
    #endif
    {
      __pyx_t_7 = PyTuple_New(2+__pyx_t_6); if (unlikely(!__pyx_t_7)) __PYX_ERR(10, 646, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_7);
      if (__pyx_t_4) {
        __Pyx_GIVEREF(__pyx_t_4); PyTuple_SET_ITEM(__pyx_t_7, 0, __pyx_t_4); __pyx_t_4 = NULL;
      }
      __Pyx_GIVEREF(__pyx_t_1);
      PyTuple_SET_ITEM(__pyx_t_7, 0+__pyx_t_6, __pyx_t_1);
      __Pyx_INCREF(__pyx_cur_scope->__pyx_v_loop);
      __Pyx_GIVEREF(__pyx_cur_scope->__pyx_v_loop);
      PyTuple_SET_ITEM(__pyx_t_7, 1+__pyx_t_6, __pyx_cur_scope->__pyx_v_loop);
      __pyx_t_1 = 0;
      __pyx_t_2 = __Pyx_PyObject_Call(__pyx_t_3, __pyx_t_7, NULL); if (unlikely(!__pyx_t_2)) __PYX_ERR(10, 646, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_2);
      __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
    }
    __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
    __Pyx_GIVEREF(__pyx_t_2);
    __pyx_cur_scope->__pyx_v_request_iterator = __pyx_t_2;
    __pyx_t_2 = 0;
  }
  __pyx_L4:;

  /* "src/python/grpcio/grpc/_cython/_cygrpc/aio/server.pyx.pxi":652
 * 
 *     # Finishes the application handler
 *     await _finish_handler_with_stream_responses(             # <<<<<<<<<<<<<<
 *         rpc_state,
 *         method_handler.stream_stream,
 */
  __Pyx_GetModuleGlobalName(__pyx_t_3, __pyx_n_s_finish_handler_with_stream_resp); if (unlikely(!__pyx_t_3)) __PYX_ERR(10, 652, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);

  /* "src/python/grpcio/grpc/_cython/_cygrpc/aio/server.pyx.pxi":654
 *     await _finish_handler_with_stream_responses(
 *         rpc_state,
 *         method_handler.stream_stream,             # <<<<<<<<<<<<<<
 *         request_iterator,
 *         servicer_context,
 */
  __pyx_t_7 = __Pyx_PyObject_GetAttrStr(__pyx_cur_scope->__pyx_v_method_handler, __pyx_n_s_stream_stream); if (unlikely(!__pyx_t_7)) __PYX_ERR(10, 654, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_7);

  /* "src/python/grpcio/grpc/_cython/_cygrpc/aio/server.pyx.pxi":657
 *         request_iterator,
 *         servicer_context,
 *         loop,             # <<<<<<<<<<<<<<
 *     )
 * 
 */
  __pyx_t_1 = NULL;
  __pyx_t_6 = 0;
  if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_3))) {
    __pyx_t_1 = PyMethod_GET_SELF(__pyx_t_3);
    if (likely(__pyx_t_1)) {
      PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_3);
      __Pyx_INCREF(__pyx_t_1);
      __Pyx_INCREF(function);
      __Pyx_DECREF_SET(__pyx_t_3, function);
      __pyx_t_6 = 1;
    }
  }
  #if CYTHON_FAST_PYCALL
  if (PyFunction_Check(__pyx_t_3)) {
    PyObject *__pyx_temp[6] = {__pyx_t_1, ((PyObject *)__pyx_cur_scope->__pyx_v_rpc_state), __pyx_t_7, __pyx_cur_scope->__pyx_v_request_iterator, ((PyObject *)__pyx_cur_scope->__pyx_v_servicer_context), __pyx_cur_scope->__pyx_v_loop};
    __pyx_t_2 = __Pyx_PyFunction_FastCall(__pyx_t_3, __pyx_temp+1-__pyx_t_6, 5+__pyx_t_6); if (unlikely(!__pyx_t_2)) __PYX_ERR(10, 652, __pyx_L1_error)
    __Pyx_XDECREF(__pyx_t_1); __pyx_t_1 = 0;
    __Pyx_GOTREF(__pyx_t_2);
    __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
  } else
  #endif
  #if CYTHON_FAST_PYCCALL
  if (__Pyx_PyFastCFunction_Check(__pyx_t_3)) {
    PyObject *__pyx_temp[6] = {__pyx_t_1, ((PyObject *)__pyx_cur_scope->__pyx_v_rpc_state), __pyx_t_7, __pyx_cur_scope->__pyx_v_request_iterator, ((PyObject *)__pyx_cur_scope->__pyx_v_servicer_context), __pyx_cur_scope->__pyx_v_loop};
    __pyx_t_2 = __Pyx_PyCFunction_FastCall(__pyx_t_3, __pyx_temp+1-__pyx_t_6, 5+__pyx_t_6); if (unlikely(!__pyx_t_2)) __PYX_ERR(10, 652, __pyx_L1_error)
    __Pyx_XDECREF(__pyx_t_1); __pyx_t_1 = 0;
    __Pyx_GOTREF(__pyx_t_2);
    __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
  } else
  #endif
  {
    __pyx_t_4 = PyTuple_New(5+__pyx_t_6); if (unlikely(!__pyx_t_4)) __PYX_ERR(10, 652, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_4);
    if (__pyx_t_1) {
      __Pyx_GIVEREF(__pyx_t_1); PyTuple_SET_ITEM(__pyx_t_4, 0, __pyx_t_1); __pyx_t_1 = NULL;
    }
    __Pyx_INCREF(((PyObject *)__pyx_cur_scope->__pyx_v_rpc_state));
    __Pyx_GIVEREF(((PyObject *)__pyx_cur_scope->__pyx_v_rpc_state));
    PyTuple_SET_ITEM(__pyx_t_4, 0+__pyx_t_6, ((PyObject *)__pyx_cur_scope->__pyx_v_rpc_state));
    __Pyx_GIVEREF(__pyx_t_7);
    PyTuple_SET_ITEM(__pyx_t_4, 1+__pyx_t_6, __pyx_t_7);
    __Pyx_INCREF(__pyx_cur_scope->__pyx_v_request_iterator);
    __Pyx_GIVEREF(__pyx_cur_scope->__pyx_v_request_iterator);
    PyTuple_SET_ITEM(__pyx_t_4, 2+__pyx_t_6, __pyx_cur_scope->__pyx_v_request_iterator);
    __Pyx_INCREF(((PyObject *)__pyx_cur_scope->__pyx_v_servicer_context));
    __Pyx_GIVEREF(((PyObject *)__pyx_cur_scope->__pyx_v_servicer_context));
    PyTuple_SET_ITEM(__pyx_t_4, 3+__pyx_t_6, ((PyObject *)__pyx_cur_scope->__pyx_v_servicer_context));
    __Pyx_INCREF(__pyx_cur_scope->__pyx_v_loop);
    __Pyx_GIVEREF(__pyx_cur_scope->__pyx_v_loop);
    PyTuple_SET_ITEM(__pyx_t_4, 4+__pyx_t_6, __pyx_cur_scope->__pyx_v_loop);
    __pyx_t_7 = 0;
    __pyx_t_2 = __Pyx_PyObject_Call(__pyx_t_3, __pyx_t_4, NULL); if (unlikely(!__pyx_t_2)) __PYX_ERR(10, 652, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_2);
    __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
  }
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
  __pyx_r = __Pyx_Coroutine_Yield_From(__pyx_generator, __pyx_t_2);
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  __Pyx_XGOTREF(__pyx_r);
  if (likely(__pyx_r)) {
    __Pyx_XGIVEREF(__pyx_r);
    __Pyx_RefNannyFinishContext();
    __Pyx_Coroutine_ResetAndClearException(__pyx_generator);
    /* return from generator, awaiting value */
    __pyx_generator->resume_label = 1;
    return __pyx_r;
    __pyx_L5_resume_from_await:;
    if (unlikely(!__pyx_sent_value)) __PYX_ERR(10, 652, __pyx_L1_error)
  } else {
    PyObject* exc_type = __Pyx_PyErr_Occurred();
    if (exc_type) {
      if (likely(exc_type == PyExc_StopIteration || (exc_type != PyExc_GeneratorExit && __Pyx_PyErr_GivenExceptionMatches(exc_type, PyExc_StopIteration)))) PyErr_Clear();
      else __PYX_ERR(10, 652, __pyx_L1_error)
    }
  }
  CYTHON_MAYBE_UNUSED_VAR(__pyx_cur_scope);

  /* "src/python/grpcio/grpc/_cython/_cygrpc/aio/server.pyx.pxi":630
 * 
 * 
 * async def _handle_stream_stream_rpc(object method_handler,             # <<<<<<<<<<<<<<
 *                                     RPCState rpc_state,
 *                                     object loop):
 */

  /* function exit code */
  PyErr_SetNone(PyExc_StopIteration);
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_XDECREF(__pyx_t_3);
  __Pyx_XDECREF(__pyx_t_4);
  __Pyx_XDECREF(__pyx_t_7);
  __Pyx_AddTraceback("_handle_stream_stream_rpc", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_L0:;
  __Pyx_XDECREF(__pyx_r); __pyx_r = 0;
  #if !CYTHON_USE_EXC_INFO_STACK
  __Pyx_Coroutine_ResetAndClearException(__pyx_generator);
  #endif
  __pyx_generator->resume_label = -1;
  __Pyx_Coroutine_clear((PyObject*)__pyx_generator);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}
static PyObject *__pyx_gb_4grpc_7_cython_6cygrpc_172generator34(__pyx_CoroutineObject *__pyx_generator, CYTHON_UNUSED PyThreadState *__pyx_tstate, PyObject *__pyx_sent_value); /* proto */

/* "src/python/grpcio/grpc/_cython/_cygrpc/aio/server.pyx.pxi":661
 * 
 * 
 * async def _handle_exceptions(RPCState rpc_state, object rpc_coro, object loop):             # <<<<<<<<<<<<<<
 *     try:
 *         try:
 */

/* Python wrapper */
static PyObject *__pyx_pw_4grpc_7_cython_6cygrpc_171_handle_exceptions(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
static PyMethodDef __pyx_mdef_4grpc_7_cython_6cygrpc_171_handle_exceptions = {"_handle_exceptions", (PyCFunction)(void*)(PyCFunctionWithKeywords)__pyx_pw_4grpc_7_cython_6cygrpc_171_handle_exceptions, METH_VARARGS|METH_KEYWORDS, 0};
static PyObject *__pyx_pw_4grpc_7_cython_6cygrpc_171_handle_exceptions(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
  struct __pyx_obj_4grpc_7_cython_6cygrpc_RPCState *__pyx_v_rpc_state = 0;
  PyObject *__pyx_v_rpc_coro = 0;
  PyObject *__pyx_v_loop = 0;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("_handle_exceptions (wrapper)", 0);
  {
    static PyObject **__pyx_pyargnames[] = {&__pyx_n_s_rpc_state,&__pyx_n_s_rpc_coro,&__pyx_n_s_loop,0};
    PyObject* values[3] = {0,0,0};
    if (unlikely(__pyx_kwds)) {
      Py_ssize_t kw_args;
      const Py_ssize_t pos_args = PyTuple_GET_SIZE(__pyx_args);
      switch (pos_args) {
        case  3: values[2] = PyTuple_GET_ITEM(__pyx_args, 2);
        CYTHON_FALLTHROUGH;
        case  2: values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
        CYTHON_FALLTHROUGH;
        case  1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
        CYTHON_FALLTHROUGH;
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      kw_args = PyDict_Size(__pyx_kwds);
      switch (pos_args) {
        case  0:
        if (likely((values[0] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_rpc_state)) != 0)) kw_args--;
        else goto __pyx_L5_argtuple_error;
        CYTHON_FALLTHROUGH;
        case  1:
        if (likely((values[1] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_rpc_coro)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("_handle_exceptions", 1, 3, 3, 1); __PYX_ERR(10, 661, __pyx_L3_error)
        }
        CYTHON_FALLTHROUGH;
        case  2:
        if (likely((values[2] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_loop)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("_handle_exceptions", 1, 3, 3, 2); __PYX_ERR(10, 661, __pyx_L3_error)
        }
      }
      if (unlikely(kw_args > 0)) {
        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "_handle_exceptions") < 0)) __PYX_ERR(10, 661, __pyx_L3_error)
      }
    } else if (PyTuple_GET_SIZE(__pyx_args) != 3) {
      goto __pyx_L5_argtuple_error;
    } else {
      values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
      values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
      values[2] = PyTuple_GET_ITEM(__pyx_args, 2);
    }
    __pyx_v_rpc_state = ((struct __pyx_obj_4grpc_7_cython_6cygrpc_RPCState *)values[0]);
    __pyx_v_rpc_coro = values[1];
    __pyx_v_loop = values[2];
  }
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("_handle_exceptions", 1, 3, 3, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(10, 661, __pyx_L3_error)
  __pyx_L3_error:;
  __Pyx_AddTraceback("grpc._cython.cygrpc._handle_exceptions", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_rpc_state), __pyx_ptype_4grpc_7_cython_6cygrpc_RPCState, 1, "rpc_state", 0))) __PYX_ERR(10, 661, __pyx_L1_error)
  __pyx_r = __pyx_pf_4grpc_7_cython_6cygrpc_170_handle_exceptions(__pyx_self, __pyx_v_rpc_state, __pyx_v_rpc_coro, __pyx_v_loop);

  /* function exit code */
  goto __pyx_L0;
  __pyx_L1_error:;
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_4grpc_7_cython_6cygrpc_170_handle_exceptions(CYTHON_UNUSED PyObject *__pyx_self, struct __pyx_obj_4grpc_7_cython_6cygrpc_RPCState *__pyx_v_rpc_state, PyObject *__pyx_v_rpc_coro, PyObject *__pyx_v_loop) {
  struct __pyx_obj_4grpc_7_cython_6cygrpc___pyx_scope_struct_46__handle_exceptions *__pyx_cur_scope;
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("_handle_exceptions", 0);
  __pyx_cur_scope = (struct __pyx_obj_4grpc_7_cython_6cygrpc___pyx_scope_struct_46__handle_exceptions *)__pyx_tp_new_4grpc_7_cython_6cygrpc___pyx_scope_struct_46__handle_exceptions(__pyx_ptype_4grpc_7_cython_6cygrpc___pyx_scope_struct_46__handle_exceptions, __pyx_empty_tuple, NULL);
  if (unlikely(!__pyx_cur_scope)) {
    __pyx_cur_scope = ((struct __pyx_obj_4grpc_7_cython_6cygrpc___pyx_scope_struct_46__handle_exceptions *)Py_None);
    __Pyx_INCREF(Py_None);
    __PYX_ERR(10, 661, __pyx_L1_error)
  } else {
    __Pyx_GOTREF(__pyx_cur_scope);
  }
  __pyx_cur_scope->__pyx_v_rpc_state = __pyx_v_rpc_state;
  __Pyx_INCREF((PyObject *)__pyx_cur_scope->__pyx_v_rpc_state);
  __Pyx_GIVEREF((PyObject *)__pyx_cur_scope->__pyx_v_rpc_state);
  __pyx_cur_scope->__pyx_v_rpc_coro = __pyx_v_rpc_coro;
  __Pyx_INCREF(__pyx_cur_scope->__pyx_v_rpc_coro);
  __Pyx_GIVEREF(__pyx_cur_scope->__pyx_v_rpc_coro);
  __pyx_cur_scope->__pyx_v_loop = __pyx_v_loop;
  __Pyx_INCREF(__pyx_cur_scope->__pyx_v_loop);
  __Pyx_GIVEREF(__pyx_cur_scope->__pyx_v_loop);
  {
    __pyx_CoroutineObject *gen = __Pyx_Coroutine_New((__pyx_coroutine_body_t) __pyx_gb_4grpc_7_cython_6cygrpc_172generator34, __pyx_codeobj__193, (PyObject *) __pyx_cur_scope, __pyx_n_s_handle_exceptions, __pyx_n_s_handle_exceptions, __pyx_n_s_grpc__cython_cygrpc); if (unlikely(!gen)) __PYX_ERR(10, 661, __pyx_L1_error)
    __Pyx_DECREF(__pyx_cur_scope);
    __Pyx_RefNannyFinishContext();
    return (PyObject *) gen;
  }

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_AddTraceback("grpc._cython.cygrpc._handle_exceptions", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __Pyx_DECREF(((PyObject *)__pyx_cur_scope));
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_gb_4grpc_7_cython_6cygrpc_172generator34(__pyx_CoroutineObject *__pyx_generator, CYTHON_UNUSED PyThreadState *__pyx_tstate, PyObject *__pyx_sent_value) /* generator body */
{
  struct __pyx_obj_4grpc_7_cython_6cygrpc___pyx_scope_struct_46__handle_exceptions *__pyx_cur_scope = ((struct __pyx_obj_4grpc_7_cython_6cygrpc___pyx_scope_struct_46__handle_exceptions *)__pyx_generator->closure);
  PyObject *__pyx_r = NULL;
  PyObject *__pyx_t_1 = NULL;
  PyObject *__pyx_t_2 = NULL;
  PyObject *__pyx_t_3 = NULL;
  PyObject *__pyx_t_4 = NULL;
  PyObject *__pyx_t_5 = NULL;
  PyObject *__pyx_t_6 = NULL;
  int __pyx_t_7;
  int __pyx_t_8;
  PyObject *__pyx_t_9 = NULL;
  PyObject *__pyx_t_10 = NULL;
  PyObject *__pyx_t_11 = NULL;
  PyObject *__pyx_t_12 = NULL;
  PyObject *__pyx_t_13 = NULL;
  int __pyx_t_14;
  PyObject *__pyx_t_15 = NULL;
  PyObject *__pyx_t_16 = NULL;
  PyObject *__pyx_t_17 = NULL;
  PyObject *__pyx_t_18 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("_handle_exceptions", 0);
  switch (__pyx_generator->resume_label) {
    case 0: goto __pyx_L3_first_run;
    case 1: goto __pyx_L16_resume_from_await;
    case 2: goto __pyx_L35_resume_from_await;
    default: /* CPython raises the right error here */
    __Pyx_RefNannyFinishContext();
    return NULL;
  }
  __pyx_L3_first_run:;
  if (unlikely(!__pyx_sent_value)) __PYX_ERR(10, 661, __pyx_L1_error)

  /* "src/python/grpcio/grpc/_cython/_cygrpc/aio/server.pyx.pxi":662
 * 
 * async def _handle_exceptions(RPCState rpc_state, object rpc_coro, object loop):
 *     try:             # <<<<<<<<<<<<<<
 *         try:
 *             await rpc_coro
 */
  {
    __Pyx_ExceptionSave(&__pyx_t_1, &__pyx_t_2, &__pyx_t_3);
    __Pyx_XGOTREF(__pyx_t_1);
    __Pyx_XGOTREF(__pyx_t_2);
    __Pyx_XGOTREF(__pyx_t_3);
    /*try:*/ {

      /* "src/python/grpcio/grpc/_cython/_cygrpc/aio/server.pyx.pxi":663
 * async def _handle_exceptions(RPCState rpc_state, object rpc_coro, object loop):
 *     try:
 *         try:             # <<<<<<<<<<<<<<
 *             await rpc_coro
 *         except AbortError as e:
 */
      {
        __Pyx_ExceptionSave(&__pyx_t_4, &__pyx_t_5, &__pyx_t_6);
        __Pyx_XGOTREF(__pyx_t_4);
        __Pyx_XGOTREF(__pyx_t_5);
        __Pyx_XGOTREF(__pyx_t_6);
        /*try:*/ {

          /* "src/python/grpcio/grpc/_cython/_cygrpc/aio/server.pyx.pxi":664
 *     try:
 *         try:
 *             await rpc_coro             # <<<<<<<<<<<<<<
 *         except AbortError as e:
 *             # Caught AbortError check if it is the same one
 */
          __pyx_r = __Pyx_Coroutine_Yield_From(__pyx_generator, __pyx_cur_scope->__pyx_v_rpc_coro);
          __Pyx_XGOTREF(__pyx_r);
          if (likely(__pyx_r)) {
            __Pyx_XGIVEREF(__pyx_t_1);
            __pyx_cur_scope->__pyx_t_0 = __pyx_t_1;
            __Pyx_XGIVEREF(__pyx_t_2);
            __pyx_cur_scope->__pyx_t_1 = __pyx_t_2;
            __Pyx_XGIVEREF(__pyx_t_3);
            __pyx_cur_scope->__pyx_t_2 = __pyx_t_3;
            __Pyx_XGIVEREF(__pyx_t_4);
            __pyx_cur_scope->__pyx_t_3 = __pyx_t_4;
            __Pyx_XGIVEREF(__pyx_t_5);
            __pyx_cur_scope->__pyx_t_4 = __pyx_t_5;
            __Pyx_XGIVEREF(__pyx_t_6);
            __pyx_cur_scope->__pyx_t_5 = __pyx_t_6;
            __Pyx_XGIVEREF(__pyx_r);
            __Pyx_RefNannyFinishContext();
            __Pyx_Coroutine_ResetAndClearException(__pyx_generator);
            /* return from generator, awaiting value */
            __pyx_generator->resume_label = 1;
            return __pyx_r;
            __pyx_L16_resume_from_await:;
            __pyx_t_1 = __pyx_cur_scope->__pyx_t_0;
            __pyx_cur_scope->__pyx_t_0 = 0;
            __Pyx_XGOTREF(__pyx_t_1);
            __pyx_t_2 = __pyx_cur_scope->__pyx_t_1;
            __pyx_cur_scope->__pyx_t_1 = 0;
            __Pyx_XGOTREF(__pyx_t_2);
            __pyx_t_3 = __pyx_cur_scope->__pyx_t_2;
            __pyx_cur_scope->__pyx_t_2 = 0;
            __Pyx_XGOTREF(__pyx_t_3);
            __pyx_t_4 = __pyx_cur_scope->__pyx_t_3;
            __pyx_cur_scope->__pyx_t_3 = 0;
            __Pyx_XGOTREF(__pyx_t_4);
            __pyx_t_5 = __pyx_cur_scope->__pyx_t_4;
            __pyx_cur_scope->__pyx_t_4 = 0;
            __Pyx_XGOTREF(__pyx_t_5);
            __pyx_t_6 = __pyx_cur_scope->__pyx_t_5;
            __pyx_cur_scope->__pyx_t_5 = 0;
            __Pyx_XGOTREF(__pyx_t_6);
            if (unlikely(!__pyx_sent_value)) __PYX_ERR(10, 664, __pyx_L10_error)
          } else {
            PyObject* exc_type = __Pyx_PyErr_Occurred();
            if (exc_type) {
              if (likely(exc_type == PyExc_StopIteration || (exc_type != PyExc_GeneratorExit && __Pyx_PyErr_GivenExceptionMatches(exc_type, PyExc_StopIteration)))) PyErr_Clear();
              else __PYX_ERR(10, 664, __pyx_L10_error)
            }
          }

          /* "src/python/grpcio/grpc/_cython/_cygrpc/aio/server.pyx.pxi":663
 * async def _handle_exceptions(RPCState rpc_state, object rpc_coro, object loop):
 *     try:
 *         try:             # <<<<<<<<<<<<<<
 *             await rpc_coro
 *         except AbortError as e:
 */
        }

        /* "src/python/grpcio/grpc/_cython/_cygrpc/aio/server.pyx.pxi":671
 *         else:
 *             # Check if the abort exception got suppressed
 *             if rpc_state.abort_exception is not None:             # <<<<<<<<<<<<<<
 *                 _LOGGER.error(
 *                     'Abort error unexpectedly suppressed: %s',
 */
        /*else:*/ {
          __pyx_t_7 = (__pyx_cur_scope->__pyx_v_rpc_state->abort_exception != Py_None);
          __pyx_t_8 = (__pyx_t_7 != 0);
          if (__pyx_t_8) {

            /* "src/python/grpcio/grpc/_cython/_cygrpc/aio/server.pyx.pxi":672
 *             # Check if the abort exception got suppressed
 *             if rpc_state.abort_exception is not None:
 *                 _LOGGER.error(             # <<<<<<<<<<<<<<
 *                     'Abort error unexpectedly suppressed: %s',
 *                     traceback.format_exception(rpc_state.abort_exception)
 */
            __Pyx_GetModuleGlobalName(__pyx_t_10, __pyx_n_s_LOGGER); if (unlikely(!__pyx_t_10)) __PYX_ERR(10, 672, __pyx_L12_except_error)
            __Pyx_GOTREF(__pyx_t_10);
            __pyx_t_11 = __Pyx_PyObject_GetAttrStr(__pyx_t_10, __pyx_n_s_error); if (unlikely(!__pyx_t_11)) __PYX_ERR(10, 672, __pyx_L12_except_error)
            __Pyx_GOTREF(__pyx_t_11);
            __Pyx_DECREF(__pyx_t_10); __pyx_t_10 = 0;

            /* "src/python/grpcio/grpc/_cython/_cygrpc/aio/server.pyx.pxi":674
 *                 _LOGGER.error(
 *                     'Abort error unexpectedly suppressed: %s',
 *                     traceback.format_exception(rpc_state.abort_exception)             # <<<<<<<<<<<<<<
 *                 )
 *     except (KeyboardInterrupt, SystemExit):
 */
            __Pyx_GetModuleGlobalName(__pyx_t_12, __pyx_n_s_traceback); if (unlikely(!__pyx_t_12)) __PYX_ERR(10, 674, __pyx_L12_except_error)
            __Pyx_GOTREF(__pyx_t_12);
            __pyx_t_13 = __Pyx_PyObject_GetAttrStr(__pyx_t_12, __pyx_n_s_format_exception); if (unlikely(!__pyx_t_13)) __PYX_ERR(10, 674, __pyx_L12_except_error)
            __Pyx_GOTREF(__pyx_t_13);
            __Pyx_DECREF(__pyx_t_12); __pyx_t_12 = 0;
            __pyx_t_12 = NULL;
            if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_13))) {
              __pyx_t_12 = PyMethod_GET_SELF(__pyx_t_13);
              if (likely(__pyx_t_12)) {
                PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_13);
                __Pyx_INCREF(__pyx_t_12);
                __Pyx_INCREF(function);
                __Pyx_DECREF_SET(__pyx_t_13, function);
              }
            }
            __pyx_t_10 = (__pyx_t_12) ? __Pyx_PyObject_Call2Args(__pyx_t_13, __pyx_t_12, __pyx_cur_scope->__pyx_v_rpc_state->abort_exception) : __Pyx_PyObject_CallOneArg(__pyx_t_13, __pyx_cur_scope->__pyx_v_rpc_state->abort_exception);
            __Pyx_XDECREF(__pyx_t_12); __pyx_t_12 = 0;
            if (unlikely(!__pyx_t_10)) __PYX_ERR(10, 674, __pyx_L12_except_error)
            __Pyx_GOTREF(__pyx_t_10);
            __Pyx_DECREF(__pyx_t_13); __pyx_t_13 = 0;
            __pyx_t_13 = NULL;
            __pyx_t_14 = 0;
            if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_11))) {
              __pyx_t_13 = PyMethod_GET_SELF(__pyx_t_11);
              if (likely(__pyx_t_13)) {
                PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_11);
                __Pyx_INCREF(__pyx_t_13);
                __Pyx_INCREF(function);
                __Pyx_DECREF_SET(__pyx_t_11, function);
                __pyx_t_14 = 1;
              }
            }
            #if CYTHON_FAST_PYCALL
            if (PyFunction_Check(__pyx_t_11)) {
              PyObject *__pyx_temp[3] = {__pyx_t_13, __pyx_kp_s_Abort_error_unexpectedly_suppres, __pyx_t_10};
              __pyx_t_9 = __Pyx_PyFunction_FastCall(__pyx_t_11, __pyx_temp+1-__pyx_t_14, 2+__pyx_t_14); if (unlikely(!__pyx_t_9)) __PYX_ERR(10, 672, __pyx_L12_except_error)
              __Pyx_XDECREF(__pyx_t_13); __pyx_t_13 = 0;
              __Pyx_GOTREF(__pyx_t_9);
              __Pyx_DECREF(__pyx_t_10); __pyx_t_10 = 0;
            } else
            #endif
            #if CYTHON_FAST_PYCCALL
            if (__Pyx_PyFastCFunction_Check(__pyx_t_11)) {
              PyObject *__pyx_temp[3] = {__pyx_t_13, __pyx_kp_s_Abort_error_unexpectedly_suppres, __pyx_t_10};
              __pyx_t_9 = __Pyx_PyCFunction_FastCall(__pyx_t_11, __pyx_temp+1-__pyx_t_14, 2+__pyx_t_14); if (unlikely(!__pyx_t_9)) __PYX_ERR(10, 672, __pyx_L12_except_error)
              __Pyx_XDECREF(__pyx_t_13); __pyx_t_13 = 0;
              __Pyx_GOTREF(__pyx_t_9);
              __Pyx_DECREF(__pyx_t_10); __pyx_t_10 = 0;
            } else
            #endif
            {
              __pyx_t_12 = PyTuple_New(2+__pyx_t_14); if (unlikely(!__pyx_t_12)) __PYX_ERR(10, 672, __pyx_L12_except_error)
              __Pyx_GOTREF(__pyx_t_12);
              if (__pyx_t_13) {
                __Pyx_GIVEREF(__pyx_t_13); PyTuple_SET_ITEM(__pyx_t_12, 0, __pyx_t_13); __pyx_t_13 = NULL;
              }
              __Pyx_INCREF(__pyx_kp_s_Abort_error_unexpectedly_suppres);
              __Pyx_GIVEREF(__pyx_kp_s_Abort_error_unexpectedly_suppres);
              PyTuple_SET_ITEM(__pyx_t_12, 0+__pyx_t_14, __pyx_kp_s_Abort_error_unexpectedly_suppres);
              __Pyx_GIVEREF(__pyx_t_10);
              PyTuple_SET_ITEM(__pyx_t_12, 1+__pyx_t_14, __pyx_t_10);
              __pyx_t_10 = 0;
              __pyx_t_9 = __Pyx_PyObject_Call(__pyx_t_11, __pyx_t_12, NULL); if (unlikely(!__pyx_t_9)) __PYX_ERR(10, 672, __pyx_L12_except_error)
              __Pyx_GOTREF(__pyx_t_9);
              __Pyx_DECREF(__pyx_t_12); __pyx_t_12 = 0;
            }
            __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0;
            __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0;

            /* "src/python/grpcio/grpc/_cython/_cygrpc/aio/server.pyx.pxi":671
 *         else:
 *             # Check if the abort exception got suppressed
 *             if rpc_state.abort_exception is not None:             # <<<<<<<<<<<<<<
 *                 _LOGGER.error(
 *                     'Abort error unexpectedly suppressed: %s',
 */
          }
        }
        __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0;
        __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0;
        __Pyx_XDECREF(__pyx_t_6); __pyx_t_6 = 0;
        goto __pyx_L15_try_end;
        __pyx_L10_error:;

        /* "src/python/grpcio/grpc/_cython/_cygrpc/aio/server.pyx.pxi":665
 *         try:
 *             await rpc_coro
 *         except AbortError as e:             # <<<<<<<<<<<<<<
 *             # Caught AbortError check if it is the same one
 *             assert rpc_state.abort_exception is e, 'Abort error has been replaced!'
 */
        __Pyx_ErrFetch(&__pyx_t_9, &__pyx_t_11, &__pyx_t_12);
        __Pyx_GetModuleGlobalName(__pyx_t_10, __pyx_n_s_AbortError); if (unlikely(!__pyx_t_10)) __PYX_ERR(10, 665, __pyx_L12_except_error)
        __Pyx_GOTREF(__pyx_t_10);
        __pyx_t_14 = __Pyx_PyErr_GivenExceptionMatches(__pyx_t_9, __pyx_t_10);
        __Pyx_DECREF(__pyx_t_10); __pyx_t_10 = 0;
        __Pyx_ErrRestore(__pyx_t_9, __pyx_t_11, __pyx_t_12);
        __pyx_t_9 = 0; __pyx_t_11 = 0; __pyx_t_12 = 0;
        if (__pyx_t_14) {
          __Pyx_AddTraceback("grpc._cython.cygrpc._handle_exceptions", __pyx_clineno, __pyx_lineno, __pyx_filename);
          if (__Pyx_GetException(&__pyx_t_12, &__pyx_t_11, &__pyx_t_9) < 0) __PYX_ERR(10, 665, __pyx_L12_except_error)
          __Pyx_GOTREF(__pyx_t_12);
          __Pyx_GOTREF(__pyx_t_11);
          __Pyx_GOTREF(__pyx_t_9);
          __Pyx_INCREF(__pyx_t_11);
          __Pyx_GIVEREF(__pyx_t_11);
          __pyx_cur_scope->__pyx_v_e = __pyx_t_11;

          /* "src/python/grpcio/grpc/_cython/_cygrpc/aio/server.pyx.pxi":667
 *         except AbortError as e:
 *             # Caught AbortError check if it is the same one
 *             assert rpc_state.abort_exception is e, 'Abort error has been replaced!'             # <<<<<<<<<<<<<<
 *             return
 *         else:
 */
          #ifndef CYTHON_WITHOUT_ASSERTIONS
          if (unlikely(!Py_OptimizeFlag)) {
            __pyx_t_8 = (__pyx_cur_scope->__pyx_v_rpc_state->abort_exception == __pyx_cur_scope->__pyx_v_e);
            if (unlikely(!(__pyx_t_8 != 0))) {
              PyErr_SetObject(PyExc_AssertionError, __pyx_kp_s_Abort_error_has_been_replaced);
              __PYX_ERR(10, 667, __pyx_L12_except_error)
            }
          }
          #endif

          /* "src/python/grpcio/grpc/_cython/_cygrpc/aio/server.pyx.pxi":668
 *             # Caught AbortError check if it is the same one
 *             assert rpc_state.abort_exception is e, 'Abort error has been replaced!'
 *             return             # <<<<<<<<<<<<<<
 *         else:
 *             # Check if the abort exception got suppressed
 */
          __Pyx_XDECREF(__pyx_r);
          __pyx_r = NULL;
          __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0;
          __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0;
          __Pyx_DECREF(__pyx_t_12); __pyx_t_12 = 0;
          goto __pyx_L13_except_return;
        }
        goto __pyx_L12_except_error;
        __pyx_L12_except_error:;

        /* "src/python/grpcio/grpc/_cython/_cygrpc/aio/server.pyx.pxi":663
 * async def _handle_exceptions(RPCState rpc_state, object rpc_coro, object loop):
 *     try:
 *         try:             # <<<<<<<<<<<<<<
 *             await rpc_coro
 *         except AbortError as e:
 */
        __Pyx_XGIVEREF(__pyx_t_4);
        __Pyx_XGIVEREF(__pyx_t_5);
        __Pyx_XGIVEREF(__pyx_t_6);
        __Pyx_ExceptionReset(__pyx_t_4, __pyx_t_5, __pyx_t_6);
        goto __pyx_L4_error;
        __pyx_L13_except_return:;
        __Pyx_XGIVEREF(__pyx_t_4);
        __Pyx_XGIVEREF(__pyx_t_5);
        __Pyx_XGIVEREF(__pyx_t_6);
        __Pyx_ExceptionReset(__pyx_t_4, __pyx_t_5, __pyx_t_6);
        goto __pyx_L8_try_return;
        __pyx_L15_try_end:;
      }

      /* "src/python/grpcio/grpc/_cython/_cygrpc/aio/server.pyx.pxi":662
 * 
 * async def _handle_exceptions(RPCState rpc_state, object rpc_coro, object loop):
 *     try:             # <<<<<<<<<<<<<<
 *         try:
 *             await rpc_coro
 */
    }
    __Pyx_XDECREF(__pyx_t_1); __pyx_t_1 = 0;
    __Pyx_XDECREF(__pyx_t_2); __pyx_t_2 = 0;
    __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0;
    goto __pyx_L9_try_end;
    __pyx_L4_error:;
    __Pyx_XDECREF(__pyx_t_10); __pyx_t_10 = 0;
    __Pyx_XDECREF(__pyx_t_11); __pyx_t_11 = 0;
    __Pyx_XDECREF(__pyx_t_12); __pyx_t_12 = 0;
    __Pyx_XDECREF(__pyx_t_13); __pyx_t_13 = 0;
    __Pyx_XDECREF(__pyx_t_9); __pyx_t_9 = 0;

    /* "src/python/grpcio/grpc/_cython/_cygrpc/aio/server.pyx.pxi":676
 *                     traceback.format_exception(rpc_state.abort_exception)
 *                 )
 *     except (KeyboardInterrupt, SystemExit):             # <<<<<<<<<<<<<<
 *         raise
 *     except asyncio.CancelledError:
 */
    __pyx_t_14 = __Pyx_PyErr_ExceptionMatches(__pyx_builtin_KeyboardInterrupt) || __Pyx_PyErr_ExceptionMatches(__pyx_builtin_SystemExit);
    if (__pyx_t_14) {
      __Pyx_AddTraceback("grpc._cython.cygrpc._handle_exceptions", __pyx_clineno, __pyx_lineno, __pyx_filename);
      if (__Pyx_GetException(&__pyx_t_9, &__pyx_t_11, &__pyx_t_12) < 0) __PYX_ERR(10, 676, __pyx_L6_except_error)
      __Pyx_GOTREF(__pyx_t_9);
      __Pyx_GOTREF(__pyx_t_11);
      __Pyx_GOTREF(__pyx_t_12);

      /* "src/python/grpcio/grpc/_cython/_cygrpc/aio/server.pyx.pxi":677
 *                 )
 *     except (KeyboardInterrupt, SystemExit):
 *         raise             # <<<<<<<<<<<<<<
 *     except asyncio.CancelledError:
 *         _LOGGER.debug('RPC cancelled for servicer method [%s]', _decode(rpc_state.method()))
 */
      __Pyx_GIVEREF(__pyx_t_9);
      __Pyx_GIVEREF(__pyx_t_11);
      __Pyx_XGIVEREF(__pyx_t_12);
      __Pyx_ErrRestoreWithState(__pyx_t_9, __pyx_t_11, __pyx_t_12);
      __pyx_t_9 = 0; __pyx_t_11 = 0; __pyx_t_12 = 0; 
      __PYX_ERR(10, 677, __pyx_L6_except_error)
    }

    /* "src/python/grpcio/grpc/_cython/_cygrpc/aio/server.pyx.pxi":678
 *     except (KeyboardInterrupt, SystemExit):
 *         raise
 *     except asyncio.CancelledError:             # <<<<<<<<<<<<<<
 *         _LOGGER.debug('RPC cancelled for servicer method [%s]', _decode(rpc_state.method()))
 *     except _ServerStoppedError:
 */
    __Pyx_ErrFetch(&__pyx_t_12, &__pyx_t_11, &__pyx_t_9);
    __Pyx_GetModuleGlobalName(__pyx_t_10, __pyx_n_s_asyncio); if (unlikely(!__pyx_t_10)) __PYX_ERR(10, 678, __pyx_L6_except_error)
    __Pyx_GOTREF(__pyx_t_10);
    __pyx_t_13 = __Pyx_PyObject_GetAttrStr(__pyx_t_10, __pyx_n_s_CancelledError); if (unlikely(!__pyx_t_13)) __PYX_ERR(10, 678, __pyx_L6_except_error)
    __Pyx_GOTREF(__pyx_t_13);
    __Pyx_DECREF(__pyx_t_10); __pyx_t_10 = 0;
    __pyx_t_14 = __Pyx_PyErr_GivenExceptionMatches(__pyx_t_12, __pyx_t_13);
    __Pyx_DECREF(__pyx_t_13); __pyx_t_13 = 0;
    __Pyx_ErrRestore(__pyx_t_12, __pyx_t_11, __pyx_t_9);
    __pyx_t_12 = 0; __pyx_t_11 = 0; __pyx_t_9 = 0;
    if (__pyx_t_14) {
      __Pyx_AddTraceback("grpc._cython.cygrpc._handle_exceptions", __pyx_clineno, __pyx_lineno, __pyx_filename);
      if (__Pyx_GetException(&__pyx_t_9, &__pyx_t_11, &__pyx_t_12) < 0) __PYX_ERR(10, 678, __pyx_L6_except_error)
      __Pyx_GOTREF(__pyx_t_9);
      __Pyx_GOTREF(__pyx_t_11);
      __Pyx_GOTREF(__pyx_t_12);

      /* "src/python/grpcio/grpc/_cython/_cygrpc/aio/server.pyx.pxi":679
 *         raise
 *     except asyncio.CancelledError:
 *         _LOGGER.debug('RPC cancelled for servicer method [%s]', _decode(rpc_state.method()))             # <<<<<<<<<<<<<<
 *     except _ServerStoppedError:
 *         _LOGGER.warning('Aborting method [%s] due to server stop.', _decode(rpc_state.method()))
 */
      __Pyx_GetModuleGlobalName(__pyx_t_10, __pyx_n_s_LOGGER); if (unlikely(!__pyx_t_10)) __PYX_ERR(10, 679, __pyx_L6_except_error)
      __Pyx_GOTREF(__pyx_t_10);
      __pyx_t_15 = __Pyx_PyObject_GetAttrStr(__pyx_t_10, __pyx_n_s_debug); if (unlikely(!__pyx_t_15)) __PYX_ERR(10, 679, __pyx_L6_except_error)
      __Pyx_GOTREF(__pyx_t_15);
      __Pyx_DECREF(__pyx_t_10); __pyx_t_10 = 0;
      __pyx_t_10 = ((struct __pyx_vtabstruct_4grpc_7_cython_6cygrpc_RPCState *)__pyx_cur_scope->__pyx_v_rpc_state->__pyx_vtab)->method(__pyx_cur_scope->__pyx_v_rpc_state); if (unlikely(!__pyx_t_10)) __PYX_ERR(10, 679, __pyx_L6_except_error)
      __Pyx_GOTREF(__pyx_t_10);
      __pyx_t_16 = __pyx_f_4grpc_7_cython_6cygrpc__decode(((PyObject*)__pyx_t_10)); if (unlikely(!__pyx_t_16)) __PYX_ERR(10, 679, __pyx_L6_except_error)
      __Pyx_GOTREF(__pyx_t_16);
      __Pyx_DECREF(__pyx_t_10); __pyx_t_10 = 0;
      __pyx_t_10 = NULL;
      __pyx_t_14 = 0;
      if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_15))) {
        __pyx_t_10 = PyMethod_GET_SELF(__pyx_t_15);
        if (likely(__pyx_t_10)) {
          PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_15);
          __Pyx_INCREF(__pyx_t_10);
          __Pyx_INCREF(function);
          __Pyx_DECREF_SET(__pyx_t_15, function);
          __pyx_t_14 = 1;
        }
      }
      #if CYTHON_FAST_PYCALL
      if (PyFunction_Check(__pyx_t_15)) {
        PyObject *__pyx_temp[3] = {__pyx_t_10, __pyx_kp_s_RPC_cancelled_for_servicer_metho, __pyx_t_16};
        __pyx_t_13 = __Pyx_PyFunction_FastCall(__pyx_t_15, __pyx_temp+1-__pyx_t_14, 2+__pyx_t_14); if (unlikely(!__pyx_t_13)) __PYX_ERR(10, 679, __pyx_L6_except_error)
        __Pyx_XDECREF(__pyx_t_10); __pyx_t_10 = 0;
        __Pyx_GOTREF(__pyx_t_13);
        __Pyx_DECREF(__pyx_t_16); __pyx_t_16 = 0;
      } else
      #endif
      #if CYTHON_FAST_PYCCALL
      if (__Pyx_PyFastCFunction_Check(__pyx_t_15)) {
        PyObject *__pyx_temp[3] = {__pyx_t_10, __pyx_kp_s_RPC_cancelled_for_servicer_metho, __pyx_t_16};
        __pyx_t_13 = __Pyx_PyCFunction_FastCall(__pyx_t_15, __pyx_temp+1-__pyx_t_14, 2+__pyx_t_14); if (unlikely(!__pyx_t_13)) __PYX_ERR(10, 679, __pyx_L6_except_error)
        __Pyx_XDECREF(__pyx_t_10); __pyx_t_10 = 0;
        __Pyx_GOTREF(__pyx_t_13);
        __Pyx_DECREF(__pyx_t_16); __pyx_t_16 = 0;
      } else
      #endif
      {
        __pyx_t_17 = PyTuple_New(2+__pyx_t_14); if (unlikely(!__pyx_t_17)) __PYX_ERR(10, 679, __pyx_L6_except_error)
        __Pyx_GOTREF(__pyx_t_17);
        if (__pyx_t_10) {
          __Pyx_GIVEREF(__pyx_t_10); PyTuple_SET_ITEM(__pyx_t_17, 0, __pyx_t_10); __pyx_t_10 = NULL;
        }
        __Pyx_INCREF(__pyx_kp_s_RPC_cancelled_for_servicer_metho);
        __Pyx_GIVEREF(__pyx_kp_s_RPC_cancelled_for_servicer_metho);
        PyTuple_SET_ITEM(__pyx_t_17, 0+__pyx_t_14, __pyx_kp_s_RPC_cancelled_for_servicer_metho);
        __Pyx_GIVEREF(__pyx_t_16);
        PyTuple_SET_ITEM(__pyx_t_17, 1+__pyx_t_14, __pyx_t_16);
        __pyx_t_16 = 0;
        __pyx_t_13 = __Pyx_PyObject_Call(__pyx_t_15, __pyx_t_17, NULL); if (unlikely(!__pyx_t_13)) __PYX_ERR(10, 679, __pyx_L6_except_error)
        __Pyx_GOTREF(__pyx_t_13);
        __Pyx_DECREF(__pyx_t_17); __pyx_t_17 = 0;
      }
      __Pyx_DECREF(__pyx_t_15); __pyx_t_15 = 0;
      __Pyx_DECREF(__pyx_t_13); __pyx_t_13 = 0;
      __Pyx_XDECREF(__pyx_t_9); __pyx_t_9 = 0;
      __Pyx_XDECREF(__pyx_t_11); __pyx_t_11 = 0;
      __Pyx_XDECREF(__pyx_t_12); __pyx_t_12 = 0;
      goto __pyx_L5_exception_handled;
    }

    /* "src/python/grpcio/grpc/_cython/_cygrpc/aio/server.pyx.pxi":680
 *     except asyncio.CancelledError:
 *         _LOGGER.debug('RPC cancelled for servicer method [%s]', _decode(rpc_state.method()))
 *     except _ServerStoppedError:             # <<<<<<<<<<<<<<
 *         _LOGGER.warning('Aborting method [%s] due to server stop.', _decode(rpc_state.method()))
 *     except ExecuteBatchError:
 */
    __Pyx_ErrFetch(&__pyx_t_12, &__pyx_t_11, &__pyx_t_9);
    __Pyx_GetModuleGlobalName(__pyx_t_13, __pyx_n_s_ServerStoppedError); if (unlikely(!__pyx_t_13)) __PYX_ERR(10, 680, __pyx_L6_except_error)
    __Pyx_GOTREF(__pyx_t_13);
    __pyx_t_14 = __Pyx_PyErr_GivenExceptionMatches(__pyx_t_12, __pyx_t_13);
    __Pyx_DECREF(__pyx_t_13); __pyx_t_13 = 0;
    __Pyx_ErrRestore(__pyx_t_12, __pyx_t_11, __pyx_t_9);
    __pyx_t_12 = 0; __pyx_t_11 = 0; __pyx_t_9 = 0;
    if (__pyx_t_14) {
      __Pyx_AddTraceback("grpc._cython.cygrpc._handle_exceptions", __pyx_clineno, __pyx_lineno, __pyx_filename);
      if (__Pyx_GetException(&__pyx_t_9, &__pyx_t_11, &__pyx_t_12) < 0) __PYX_ERR(10, 680, __pyx_L6_except_error)
      __Pyx_GOTREF(__pyx_t_9);
      __Pyx_GOTREF(__pyx_t_11);
      __Pyx_GOTREF(__pyx_t_12);

      /* "src/python/grpcio/grpc/_cython/_cygrpc/aio/server.pyx.pxi":681
 *         _LOGGER.debug('RPC cancelled for servicer method [%s]', _decode(rpc_state.method()))
 *     except _ServerStoppedError:
 *         _LOGGER.warning('Aborting method [%s] due to server stop.', _decode(rpc_state.method()))             # <<<<<<<<<<<<<<
 *     except ExecuteBatchError:
 *         # If client closed (aka. cancelled), ignore the failed batch operations.
 */
      __Pyx_GetModuleGlobalName(__pyx_t_15, __pyx_n_s_LOGGER); if (unlikely(!__pyx_t_15)) __PYX_ERR(10, 681, __pyx_L6_except_error)
      __Pyx_GOTREF(__pyx_t_15);
      __pyx_t_17 = __Pyx_PyObject_GetAttrStr(__pyx_t_15, __pyx_n_s_warning); if (unlikely(!__pyx_t_17)) __PYX_ERR(10, 681, __pyx_L6_except_error)
      __Pyx_GOTREF(__pyx_t_17);
      __Pyx_DECREF(__pyx_t_15); __pyx_t_15 = 0;
      __pyx_t_15 = ((struct __pyx_vtabstruct_4grpc_7_cython_6cygrpc_RPCState *)__pyx_cur_scope->__pyx_v_rpc_state->__pyx_vtab)->method(__pyx_cur_scope->__pyx_v_rpc_state); if (unlikely(!__pyx_t_15)) __PYX_ERR(10, 681, __pyx_L6_except_error)
      __Pyx_GOTREF(__pyx_t_15);
      __pyx_t_16 = __pyx_f_4grpc_7_cython_6cygrpc__decode(((PyObject*)__pyx_t_15)); if (unlikely(!__pyx_t_16)) __PYX_ERR(10, 681, __pyx_L6_except_error)
      __Pyx_GOTREF(__pyx_t_16);
      __Pyx_DECREF(__pyx_t_15); __pyx_t_15 = 0;
      __pyx_t_15 = NULL;
      __pyx_t_14 = 0;
      if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_17))) {
        __pyx_t_15 = PyMethod_GET_SELF(__pyx_t_17);
        if (likely(__pyx_t_15)) {
          PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_17);
          __Pyx_INCREF(__pyx_t_15);
          __Pyx_INCREF(function);
          __Pyx_DECREF_SET(__pyx_t_17, function);
          __pyx_t_14 = 1;
        }
      }
      #if CYTHON_FAST_PYCALL
      if (PyFunction_Check(__pyx_t_17)) {
        PyObject *__pyx_temp[3] = {__pyx_t_15, __pyx_kp_s_Aborting_method_s_due_to_server, __pyx_t_16};
        __pyx_t_13 = __Pyx_PyFunction_FastCall(__pyx_t_17, __pyx_temp+1-__pyx_t_14, 2+__pyx_t_14); if (unlikely(!__pyx_t_13)) __PYX_ERR(10, 681, __pyx_L6_except_error)
        __Pyx_XDECREF(__pyx_t_15); __pyx_t_15 = 0;
        __Pyx_GOTREF(__pyx_t_13);
        __Pyx_DECREF(__pyx_t_16); __pyx_t_16 = 0;
      } else
      #endif
      #if CYTHON_FAST_PYCCALL
      if (__Pyx_PyFastCFunction_Check(__pyx_t_17)) {
        PyObject *__pyx_temp[3] = {__pyx_t_15, __pyx_kp_s_Aborting_method_s_due_to_server, __pyx_t_16};
        __pyx_t_13 = __Pyx_PyCFunction_FastCall(__pyx_t_17, __pyx_temp+1-__pyx_t_14, 2+__pyx_t_14); if (unlikely(!__pyx_t_13)) __PYX_ERR(10, 681, __pyx_L6_except_error)
        __Pyx_XDECREF(__pyx_t_15); __pyx_t_15 = 0;
        __Pyx_GOTREF(__pyx_t_13);
        __Pyx_DECREF(__pyx_t_16); __pyx_t_16 = 0;
      } else
      #endif
      {
        __pyx_t_10 = PyTuple_New(2+__pyx_t_14); if (unlikely(!__pyx_t_10)) __PYX_ERR(10, 681, __pyx_L6_except_error)
        __Pyx_GOTREF(__pyx_t_10);
        if (__pyx_t_15) {
          __Pyx_GIVEREF(__pyx_t_15); PyTuple_SET_ITEM(__pyx_t_10, 0, __pyx_t_15); __pyx_t_15 = NULL;
        }
        __Pyx_INCREF(__pyx_kp_s_Aborting_method_s_due_to_server);
        __Pyx_GIVEREF(__pyx_kp_s_Aborting_method_s_due_to_server);
        PyTuple_SET_ITEM(__pyx_t_10, 0+__pyx_t_14, __pyx_kp_s_Aborting_method_s_due_to_server);
        __Pyx_GIVEREF(__pyx_t_16);
        PyTuple_SET_ITEM(__pyx_t_10, 1+__pyx_t_14, __pyx_t_16);
        __pyx_t_16 = 0;
        __pyx_t_13 = __Pyx_PyObject_Call(__pyx_t_17, __pyx_t_10, NULL); if (unlikely(!__pyx_t_13)) __PYX_ERR(10, 681, __pyx_L6_except_error)
        __Pyx_GOTREF(__pyx_t_13);
        __Pyx_DECREF(__pyx_t_10); __pyx_t_10 = 0;
      }
      __Pyx_DECREF(__pyx_t_17); __pyx_t_17 = 0;
      __Pyx_DECREF(__pyx_t_13); __pyx_t_13 = 0;
      __Pyx_XDECREF(__pyx_t_9); __pyx_t_9 = 0;
      __Pyx_XDECREF(__pyx_t_11); __pyx_t_11 = 0;
      __Pyx_XDECREF(__pyx_t_12); __pyx_t_12 = 0;
      goto __pyx_L5_exception_handled;
    }

    /* "src/python/grpcio/grpc/_cython/_cygrpc/aio/server.pyx.pxi":682
 *     except _ServerStoppedError:
 *         _LOGGER.warning('Aborting method [%s] due to server stop.', _decode(rpc_state.method()))
 *     except ExecuteBatchError:             # <<<<<<<<<<<<<<
 *         # If client closed (aka. cancelled), ignore the failed batch operations.
 *         if rpc_state.client_closed:
 */
    __Pyx_ErrFetch(&__pyx_t_12, &__pyx_t_11, &__pyx_t_9);
    __Pyx_GetModuleGlobalName(__pyx_t_13, __pyx_n_s_ExecuteBatchError); if (unlikely(!__pyx_t_13)) __PYX_ERR(10, 682, __pyx_L6_except_error)
    __Pyx_GOTREF(__pyx_t_13);
    __pyx_t_14 = __Pyx_PyErr_GivenExceptionMatches(__pyx_t_12, __pyx_t_13);
    __Pyx_DECREF(__pyx_t_13); __pyx_t_13 = 0;
    __Pyx_ErrRestore(__pyx_t_12, __pyx_t_11, __pyx_t_9);
    __pyx_t_12 = 0; __pyx_t_11 = 0; __pyx_t_9 = 0;
    if (__pyx_t_14) {
      __Pyx_AddTraceback("grpc._cython.cygrpc._handle_exceptions", __pyx_clineno, __pyx_lineno, __pyx_filename);
      if (__Pyx_GetException(&__pyx_t_9, &__pyx_t_11, &__pyx_t_12) < 0) __PYX_ERR(10, 682, __pyx_L6_except_error)
      __Pyx_GOTREF(__pyx_t_9);
      __Pyx_GOTREF(__pyx_t_11);
      __Pyx_GOTREF(__pyx_t_12);

      /* "src/python/grpcio/grpc/_cython/_cygrpc/aio/server.pyx.pxi":684
 *     except ExecuteBatchError:
 *         # If client closed (aka. cancelled), ignore the failed batch operations.
 *         if rpc_state.client_closed:             # <<<<<<<<<<<<<<
 *             return
 *         else:
 */
      __pyx_t_8 = (__pyx_cur_scope->__pyx_v_rpc_state->client_closed != 0);
      if (likely(__pyx_t_8)) {

        /* "src/python/grpcio/grpc/_cython/_cygrpc/aio/server.pyx.pxi":685
 *         # If client closed (aka. cancelled), ignore the failed batch operations.
 *         if rpc_state.client_closed:
 *             return             # <<<<<<<<<<<<<<
 *         else:
 *             raise
 */
        __Pyx_XDECREF(__pyx_r);
        __pyx_r = NULL;
        __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0;
        __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0;
        __Pyx_DECREF(__pyx_t_12); __pyx_t_12 = 0;
        goto __pyx_L7_except_return;

        /* "src/python/grpcio/grpc/_cython/_cygrpc/aio/server.pyx.pxi":684
 *     except ExecuteBatchError:
 *         # If client closed (aka. cancelled), ignore the failed batch operations.
 *         if rpc_state.client_closed:             # <<<<<<<<<<<<<<
 *             return
 *         else:
 */
      }

      /* "src/python/grpcio/grpc/_cython/_cygrpc/aio/server.pyx.pxi":687
 *             return
 *         else:
 *             raise             # <<<<<<<<<<<<<<
 *     except Exception as e:
 *         _LOGGER.exception('Unexpected [%s] raised by servicer method [%s]' % (
 */
      /*else*/ {
        __Pyx_GIVEREF(__pyx_t_9);
        __Pyx_GIVEREF(__pyx_t_11);
        __Pyx_XGIVEREF(__pyx_t_12);
        __Pyx_ErrRestoreWithState(__pyx_t_9, __pyx_t_11, __pyx_t_12);
        __pyx_t_9 = 0; __pyx_t_11 = 0; __pyx_t_12 = 0; 
        __PYX_ERR(10, 687, __pyx_L6_except_error)
      }
    }

    /* "src/python/grpcio/grpc/_cython/_cygrpc/aio/server.pyx.pxi":688
 *         else:
 *             raise
 *     except Exception as e:             # <<<<<<<<<<<<<<
 *         _LOGGER.exception('Unexpected [%s] raised by servicer method [%s]' % (
 *             type(e).__name__,
 */
    __pyx_t_14 = __Pyx_PyErr_ExceptionMatches(((PyObject *)(&((PyTypeObject*)PyExc_Exception)[0])));
    if (__pyx_t_14) {
      __Pyx_AddTraceback("grpc._cython.cygrpc._handle_exceptions", __pyx_clineno, __pyx_lineno, __pyx_filename);
      if (__Pyx_GetException(&__pyx_t_12, &__pyx_t_11, &__pyx_t_9) < 0) __PYX_ERR(10, 688, __pyx_L6_except_error)
      __Pyx_GOTREF(__pyx_t_12);
      __Pyx_GOTREF(__pyx_t_11);
      __Pyx_GOTREF(__pyx_t_9);
      __Pyx_INCREF(__pyx_t_11);
      __Pyx_XGOTREF(__pyx_cur_scope->__pyx_v_e);
      __Pyx_XDECREF_SET(__pyx_cur_scope->__pyx_v_e, __pyx_t_11);
      __Pyx_GIVEREF(__pyx_t_11);

      /* "src/python/grpcio/grpc/_cython/_cygrpc/aio/server.pyx.pxi":689
 *             raise
 *     except Exception as e:
 *         _LOGGER.exception('Unexpected [%s] raised by servicer method [%s]' % (             # <<<<<<<<<<<<<<
 *             type(e).__name__,
 *             _decode(rpc_state.method()),
 */
      __Pyx_GetModuleGlobalName(__pyx_t_17, __pyx_n_s_LOGGER); if (unlikely(!__pyx_t_17)) __PYX_ERR(10, 689, __pyx_L6_except_error)
      __Pyx_GOTREF(__pyx_t_17);
      __pyx_t_10 = __Pyx_PyObject_GetAttrStr(__pyx_t_17, __pyx_n_s_exception); if (unlikely(!__pyx_t_10)) __PYX_ERR(10, 689, __pyx_L6_except_error)
      __Pyx_GOTREF(__pyx_t_10);
      __Pyx_DECREF(__pyx_t_17); __pyx_t_17 = 0;

      /* "src/python/grpcio/grpc/_cython/_cygrpc/aio/server.pyx.pxi":690
 *     except Exception as e:
 *         _LOGGER.exception('Unexpected [%s] raised by servicer method [%s]' % (
 *             type(e).__name__,             # <<<<<<<<<<<<<<
 *             _decode(rpc_state.method()),
 *         ))
 */
      __pyx_t_17 = __Pyx_PyObject_GetAttrStr(((PyObject *)Py_TYPE(__pyx_cur_scope->__pyx_v_e)), __pyx_n_s_name_2); if (unlikely(!__pyx_t_17)) __PYX_ERR(10, 690, __pyx_L6_except_error)
      __Pyx_GOTREF(__pyx_t_17);

      /* "src/python/grpcio/grpc/_cython/_cygrpc/aio/server.pyx.pxi":691
 *         _LOGGER.exception('Unexpected [%s] raised by servicer method [%s]' % (
 *             type(e).__name__,
 *             _decode(rpc_state.method()),             # <<<<<<<<<<<<<<
 *         ))
 *         if not rpc_state.status_sent and rpc_state.server._status != AIO_SERVER_STATUS_STOPPED:
 */
      __pyx_t_16 = ((struct __pyx_vtabstruct_4grpc_7_cython_6cygrpc_RPCState *)__pyx_cur_scope->__pyx_v_rpc_state->__pyx_vtab)->method(__pyx_cur_scope->__pyx_v_rpc_state); if (unlikely(!__pyx_t_16)) __PYX_ERR(10, 691, __pyx_L6_except_error)
      __Pyx_GOTREF(__pyx_t_16);
      __pyx_t_15 = __pyx_f_4grpc_7_cython_6cygrpc__decode(((PyObject*)__pyx_t_16)); if (unlikely(!__pyx_t_15)) __PYX_ERR(10, 691, __pyx_L6_except_error)
      __Pyx_GOTREF(__pyx_t_15);
      __Pyx_DECREF(__pyx_t_16); __pyx_t_16 = 0;

      /* "src/python/grpcio/grpc/_cython/_cygrpc/aio/server.pyx.pxi":690
 *     except Exception as e:
 *         _LOGGER.exception('Unexpected [%s] raised by servicer method [%s]' % (
 *             type(e).__name__,             # <<<<<<<<<<<<<<
 *             _decode(rpc_state.method()),
 *         ))
 */
      __pyx_t_16 = PyTuple_New(2); if (unlikely(!__pyx_t_16)) __PYX_ERR(10, 690, __pyx_L6_except_error)
      __Pyx_GOTREF(__pyx_t_16);
      __Pyx_GIVEREF(__pyx_t_17);
      PyTuple_SET_ITEM(__pyx_t_16, 0, __pyx_t_17);
      __Pyx_GIVEREF(__pyx_t_15);
      PyTuple_SET_ITEM(__pyx_t_16, 1, __pyx_t_15);
      __pyx_t_17 = 0;
      __pyx_t_15 = 0;

      /* "src/python/grpcio/grpc/_cython/_cygrpc/aio/server.pyx.pxi":689
 *             raise
 *     except Exception as e:
 *         _LOGGER.exception('Unexpected [%s] raised by servicer method [%s]' % (             # <<<<<<<<<<<<<<
 *             type(e).__name__,
 *             _decode(rpc_state.method()),
 */
      __pyx_t_15 = __Pyx_PyString_Format(__pyx_kp_s_Unexpected_s_raised_by_servicer, __pyx_t_16); if (unlikely(!__pyx_t_15)) __PYX_ERR(10, 689, __pyx_L6_except_error)
      __Pyx_GOTREF(__pyx_t_15);
      __Pyx_DECREF(__pyx_t_16); __pyx_t_16 = 0;
      __pyx_t_16 = NULL;
      if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_10))) {
        __pyx_t_16 = PyMethod_GET_SELF(__pyx_t_10);
        if (likely(__pyx_t_16)) {
          PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_10);
          __Pyx_INCREF(__pyx_t_16);
          __Pyx_INCREF(function);
          __Pyx_DECREF_SET(__pyx_t_10, function);
        }
      }
      __pyx_t_13 = (__pyx_t_16) ? __Pyx_PyObject_Call2Args(__pyx_t_10, __pyx_t_16, __pyx_t_15) : __Pyx_PyObject_CallOneArg(__pyx_t_10, __pyx_t_15);
      __Pyx_XDECREF(__pyx_t_16); __pyx_t_16 = 0;
      __Pyx_DECREF(__pyx_t_15); __pyx_t_15 = 0;
      if (unlikely(!__pyx_t_13)) __PYX_ERR(10, 689, __pyx_L6_except_error)
      __Pyx_GOTREF(__pyx_t_13);
      __Pyx_DECREF(__pyx_t_10); __pyx_t_10 = 0;
      __Pyx_DECREF(__pyx_t_13); __pyx_t_13 = 0;

      /* "src/python/grpcio/grpc/_cython/_cygrpc/aio/server.pyx.pxi":693
 *             _decode(rpc_state.method()),
 *         ))
 *         if not rpc_state.status_sent and rpc_state.server._status != AIO_SERVER_STATUS_STOPPED:             # <<<<<<<<<<<<<<
 *             # Allows users to raise other types of exception with specified status code
 *             if rpc_state.status_code == StatusCode.ok:
 */
      __pyx_t_7 = ((!(__pyx_cur_scope->__pyx_v_rpc_state->status_sent != 0)) != 0);
      if (__pyx_t_7) {
      } else {
        __pyx_t_8 = __pyx_t_7;
        goto __pyx_L32_bool_binop_done;
      }
      __pyx_t_7 = ((__pyx_cur_scope->__pyx_v_rpc_state->server->_status != __pyx_e_4grpc_7_cython_6cygrpc_AIO_SERVER_STATUS_STOPPED) != 0);
      __pyx_t_8 = __pyx_t_7;
      __pyx_L32_bool_binop_done:;
      if (__pyx_t_8) {

        /* "src/python/grpcio/grpc/_cython/_cygrpc/aio/server.pyx.pxi":695
 *         if not rpc_state.status_sent and rpc_state.server._status != AIO_SERVER_STATUS_STOPPED:
 *             # Allows users to raise other types of exception with specified status code
 *             if rpc_state.status_code == StatusCode.ok:             # <<<<<<<<<<<<<<
 *                 status_code = StatusCode.unknown
 *             else:
 */
        __pyx_t_13 = __Pyx_PyInt_From_grpc_status_code(__pyx_cur_scope->__pyx_v_rpc_state->status_code); if (unlikely(!__pyx_t_13)) __PYX_ERR(10, 695, __pyx_L6_except_error)
        __Pyx_GOTREF(__pyx_t_13);
        __Pyx_GetModuleGlobalName(__pyx_t_10, __pyx_n_s_StatusCode); if (unlikely(!__pyx_t_10)) __PYX_ERR(10, 695, __pyx_L6_except_error)
        __Pyx_GOTREF(__pyx_t_10);
        __pyx_t_15 = __Pyx_PyObject_GetAttrStr(__pyx_t_10, __pyx_n_s_ok); if (unlikely(!__pyx_t_15)) __PYX_ERR(10, 695, __pyx_L6_except_error)
        __Pyx_GOTREF(__pyx_t_15);
        __Pyx_DECREF(__pyx_t_10); __pyx_t_10 = 0;
        __pyx_t_10 = PyObject_RichCompare(__pyx_t_13, __pyx_t_15, Py_EQ); __Pyx_XGOTREF(__pyx_t_10); if (unlikely(!__pyx_t_10)) __PYX_ERR(10, 695, __pyx_L6_except_error)
        __Pyx_DECREF(__pyx_t_13); __pyx_t_13 = 0;
        __Pyx_DECREF(__pyx_t_15); __pyx_t_15 = 0;
        __pyx_t_8 = __Pyx_PyObject_IsTrue(__pyx_t_10); if (unlikely(__pyx_t_8 < 0)) __PYX_ERR(10, 695, __pyx_L6_except_error)
        __Pyx_DECREF(__pyx_t_10); __pyx_t_10 = 0;
        if (__pyx_t_8) {

          /* "src/python/grpcio/grpc/_cython/_cygrpc/aio/server.pyx.pxi":696
 *             # Allows users to raise other types of exception with specified status code
 *             if rpc_state.status_code == StatusCode.ok:
 *                 status_code = StatusCode.unknown             # <<<<<<<<<<<<<<
 *             else:
 *                 status_code = rpc_state.status_code
 */
          __Pyx_GetModuleGlobalName(__pyx_t_10, __pyx_n_s_StatusCode); if (unlikely(!__pyx_t_10)) __PYX_ERR(10, 696, __pyx_L6_except_error)
          __Pyx_GOTREF(__pyx_t_10);
          __pyx_t_15 = __Pyx_PyObject_GetAttrStr(__pyx_t_10, __pyx_n_s_unknown); if (unlikely(!__pyx_t_15)) __PYX_ERR(10, 696, __pyx_L6_except_error)
          __Pyx_GOTREF(__pyx_t_15);
          __Pyx_DECREF(__pyx_t_10); __pyx_t_10 = 0;
          __Pyx_GIVEREF(__pyx_t_15);
          __pyx_cur_scope->__pyx_v_status_code = __pyx_t_15;
          __pyx_t_15 = 0;

          /* "src/python/grpcio/grpc/_cython/_cygrpc/aio/server.pyx.pxi":695
 *         if not rpc_state.status_sent and rpc_state.server._status != AIO_SERVER_STATUS_STOPPED:
 *             # Allows users to raise other types of exception with specified status code
 *             if rpc_state.status_code == StatusCode.ok:             # <<<<<<<<<<<<<<
 *                 status_code = StatusCode.unknown
 *             else:
 */
          goto __pyx_L34;
        }

        /* "src/python/grpcio/grpc/_cython/_cygrpc/aio/server.pyx.pxi":698
 *                 status_code = StatusCode.unknown
 *             else:
 *                 status_code = rpc_state.status_code             # <<<<<<<<<<<<<<
 * 
 *             await _send_error_status_from_server(
 */
        /*else*/ {
          __pyx_t_15 = __Pyx_PyInt_From_grpc_status_code(__pyx_cur_scope->__pyx_v_rpc_state->status_code); if (unlikely(!__pyx_t_15)) __PYX_ERR(10, 698, __pyx_L6_except_error)
          __Pyx_GOTREF(__pyx_t_15);
          __Pyx_GIVEREF(__pyx_t_15);
          __pyx_cur_scope->__pyx_v_status_code = __pyx_t_15;
          __pyx_t_15 = 0;
        }
        __pyx_L34:;

        /* "src/python/grpcio/grpc/_cython/_cygrpc/aio/server.pyx.pxi":700
 *                 status_code = rpc_state.status_code
 * 
 *             await _send_error_status_from_server(             # <<<<<<<<<<<<<<
 *                 rpc_state,
 *                 status_code,
 */
        __Pyx_GetModuleGlobalName(__pyx_t_10, __pyx_n_s_send_error_status_from_server); if (unlikely(!__pyx_t_10)) __PYX_ERR(10, 700, __pyx_L6_except_error)
        __Pyx_GOTREF(__pyx_t_10);

        /* "src/python/grpcio/grpc/_cython/_cygrpc/aio/server.pyx.pxi":703
 *                 rpc_state,
 *                 status_code,
 *                 'Unexpected %s: %s' % (type(e), e),             # <<<<<<<<<<<<<<
 *                 rpc_state.trailing_metadata,
 *                 rpc_state.create_send_initial_metadata_op_if_not_sent(),
 */
        __pyx_t_13 = PyTuple_New(2); if (unlikely(!__pyx_t_13)) __PYX_ERR(10, 703, __pyx_L6_except_error)
        __Pyx_GOTREF(__pyx_t_13);
        __Pyx_INCREF(((PyObject *)Py_TYPE(__pyx_cur_scope->__pyx_v_e)));
        __Pyx_GIVEREF(((PyObject *)Py_TYPE(__pyx_cur_scope->__pyx_v_e)));
        PyTuple_SET_ITEM(__pyx_t_13, 0, ((PyObject *)Py_TYPE(__pyx_cur_scope->__pyx_v_e)));
        __Pyx_INCREF(__pyx_cur_scope->__pyx_v_e);
        __Pyx_GIVEREF(__pyx_cur_scope->__pyx_v_e);
        PyTuple_SET_ITEM(__pyx_t_13, 1, __pyx_cur_scope->__pyx_v_e);
        __pyx_t_16 = __Pyx_PyString_Format(__pyx_kp_s_Unexpected_s_s, __pyx_t_13); if (unlikely(!__pyx_t_16)) __PYX_ERR(10, 703, __pyx_L6_except_error)
        __Pyx_GOTREF(__pyx_t_16);
        __Pyx_DECREF(__pyx_t_13); __pyx_t_13 = 0;

        /* "src/python/grpcio/grpc/_cython/_cygrpc/aio/server.pyx.pxi":705
 *                 'Unexpected %s: %s' % (type(e), e),
 *                 rpc_state.trailing_metadata,
 *                 rpc_state.create_send_initial_metadata_op_if_not_sent(),             # <<<<<<<<<<<<<<
 *                 loop
 *             )
 */
        __pyx_t_13 = ((PyObject *)((struct __pyx_vtabstruct_4grpc_7_cython_6cygrpc_RPCState *)__pyx_cur_scope->__pyx_v_rpc_state->__pyx_vtab)->create_send_initial_metadata_op_if_not_sent(__pyx_cur_scope->__pyx_v_rpc_state)); if (unlikely(!__pyx_t_13)) __PYX_ERR(10, 705, __pyx_L6_except_error)
        __Pyx_GOTREF(__pyx_t_13);

        /* "src/python/grpcio/grpc/_cython/_cygrpc/aio/server.pyx.pxi":706
 *                 rpc_state.trailing_metadata,
 *                 rpc_state.create_send_initial_metadata_op_if_not_sent(),
 *                 loop             # <<<<<<<<<<<<<<
 *             )
 * 
 */
        __pyx_t_17 = NULL;
        __pyx_t_14 = 0;
        if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_10))) {
          __pyx_t_17 = PyMethod_GET_SELF(__pyx_t_10);
          if (likely(__pyx_t_17)) {
            PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_10);
            __Pyx_INCREF(__pyx_t_17);
            __Pyx_INCREF(function);
            __Pyx_DECREF_SET(__pyx_t_10, function);
            __pyx_t_14 = 1;
          }
        }
        #if CYTHON_FAST_PYCALL
        if (PyFunction_Check(__pyx_t_10)) {
          PyObject *__pyx_temp[7] = {__pyx_t_17, ((PyObject *)__pyx_cur_scope->__pyx_v_rpc_state), __pyx_cur_scope->__pyx_v_status_code, __pyx_t_16, __pyx_cur_scope->__pyx_v_rpc_state->trailing_metadata, __pyx_t_13, __pyx_cur_scope->__pyx_v_loop};
          __pyx_t_15 = __Pyx_PyFunction_FastCall(__pyx_t_10, __pyx_temp+1-__pyx_t_14, 6+__pyx_t_14); if (unlikely(!__pyx_t_15)) __PYX_ERR(10, 700, __pyx_L6_except_error)
          __Pyx_XDECREF(__pyx_t_17); __pyx_t_17 = 0;
          __Pyx_GOTREF(__pyx_t_15);
          __Pyx_DECREF(__pyx_t_16); __pyx_t_16 = 0;
          __Pyx_DECREF(__pyx_t_13); __pyx_t_13 = 0;
        } else
        #endif
        #if CYTHON_FAST_PYCCALL
        if (__Pyx_PyFastCFunction_Check(__pyx_t_10)) {
          PyObject *__pyx_temp[7] = {__pyx_t_17, ((PyObject *)__pyx_cur_scope->__pyx_v_rpc_state), __pyx_cur_scope->__pyx_v_status_code, __pyx_t_16, __pyx_cur_scope->__pyx_v_rpc_state->trailing_metadata, __pyx_t_13, __pyx_cur_scope->__pyx_v_loop};
          __pyx_t_15 = __Pyx_PyCFunction_FastCall(__pyx_t_10, __pyx_temp+1-__pyx_t_14, 6+__pyx_t_14); if (unlikely(!__pyx_t_15)) __PYX_ERR(10, 700, __pyx_L6_except_error)
          __Pyx_XDECREF(__pyx_t_17); __pyx_t_17 = 0;
          __Pyx_GOTREF(__pyx_t_15);
          __Pyx_DECREF(__pyx_t_16); __pyx_t_16 = 0;
          __Pyx_DECREF(__pyx_t_13); __pyx_t_13 = 0;
        } else
        #endif
        {
          __pyx_t_18 = PyTuple_New(6+__pyx_t_14); if (unlikely(!__pyx_t_18)) __PYX_ERR(10, 700, __pyx_L6_except_error)
          __Pyx_GOTREF(__pyx_t_18);
          if (__pyx_t_17) {
            __Pyx_GIVEREF(__pyx_t_17); PyTuple_SET_ITEM(__pyx_t_18, 0, __pyx_t_17); __pyx_t_17 = NULL;
          }
          __Pyx_INCREF(((PyObject *)__pyx_cur_scope->__pyx_v_rpc_state));
          __Pyx_GIVEREF(((PyObject *)__pyx_cur_scope->__pyx_v_rpc_state));
          PyTuple_SET_ITEM(__pyx_t_18, 0+__pyx_t_14, ((PyObject *)__pyx_cur_scope->__pyx_v_rpc_state));
          __Pyx_INCREF(__pyx_cur_scope->__pyx_v_status_code);
          __Pyx_GIVEREF(__pyx_cur_scope->__pyx_v_status_code);
          PyTuple_SET_ITEM(__pyx_t_18, 1+__pyx_t_14, __pyx_cur_scope->__pyx_v_status_code);
          __Pyx_GIVEREF(__pyx_t_16);
          PyTuple_SET_ITEM(__pyx_t_18, 2+__pyx_t_14, __pyx_t_16);
          __Pyx_INCREF(__pyx_cur_scope->__pyx_v_rpc_state->trailing_metadata);
          __Pyx_GIVEREF(__pyx_cur_scope->__pyx_v_rpc_state->trailing_metadata);
          PyTuple_SET_ITEM(__pyx_t_18, 3+__pyx_t_14, __pyx_cur_scope->__pyx_v_rpc_state->trailing_metadata);
          __Pyx_GIVEREF(__pyx_t_13);
          PyTuple_SET_ITEM(__pyx_t_18, 4+__pyx_t_14, __pyx_t_13);
          __Pyx_INCREF(__pyx_cur_scope->__pyx_v_loop);
          __Pyx_GIVEREF(__pyx_cur_scope->__pyx_v_loop);
          PyTuple_SET_ITEM(__pyx_t_18, 5+__pyx_t_14, __pyx_cur_scope->__pyx_v_loop);
          __pyx_t_16 = 0;
          __pyx_t_13 = 0;
          __pyx_t_15 = __Pyx_PyObject_Call(__pyx_t_10, __pyx_t_18, NULL); if (unlikely(!__pyx_t_15)) __PYX_ERR(10, 700, __pyx_L6_except_error)
          __Pyx_GOTREF(__pyx_t_15);
          __Pyx_DECREF(__pyx_t_18); __pyx_t_18 = 0;
        }
        __Pyx_DECREF(__pyx_t_10); __pyx_t_10 = 0;
        __pyx_r = __Pyx_Coroutine_Yield_From(__pyx_generator, __pyx_t_15);
        __Pyx_DECREF(__pyx_t_15); __pyx_t_15 = 0;
        __Pyx_XGOTREF(__pyx_r);
        if (likely(__pyx_r)) {
          __Pyx_XGIVEREF(__pyx_t_1);
          __pyx_cur_scope->__pyx_t_0 = __pyx_t_1;
          __Pyx_XGIVEREF(__pyx_t_2);
          __pyx_cur_scope->__pyx_t_1 = __pyx_t_2;
          __Pyx_XGIVEREF(__pyx_t_3);
          __pyx_cur_scope->__pyx_t_2 = __pyx_t_3;
          __Pyx_XGIVEREF(__pyx_t_9);
          __pyx_cur_scope->__pyx_t_3 = __pyx_t_9;
          __Pyx_XGIVEREF(__pyx_t_11);
          __pyx_cur_scope->__pyx_t_4 = __pyx_t_11;
          __Pyx_XGIVEREF(__pyx_t_12);
          __pyx_cur_scope->__pyx_t_5 = __pyx_t_12;
          __Pyx_XGIVEREF(__pyx_r);
          __Pyx_RefNannyFinishContext();
          __Pyx_Coroutine_SwapException(__pyx_generator);
          /* return from generator, awaiting value */
          __pyx_generator->resume_label = 2;
          return __pyx_r;
          __pyx_L35_resume_from_await:;
          __pyx_t_1 = __pyx_cur_scope->__pyx_t_0;
          __pyx_cur_scope->__pyx_t_0 = 0;
          __Pyx_XGOTREF(__pyx_t_1);
          __pyx_t_2 = __pyx_cur_scope->__pyx_t_1;
          __pyx_cur_scope->__pyx_t_1 = 0;
          __Pyx_XGOTREF(__pyx_t_2);
          __pyx_t_3 = __pyx_cur_scope->__pyx_t_2;
          __pyx_cur_scope->__pyx_t_2 = 0;
          __Pyx_XGOTREF(__pyx_t_3);
          __pyx_t_9 = __pyx_cur_scope->__pyx_t_3;
          __pyx_cur_scope->__pyx_t_3 = 0;
          __Pyx_XGOTREF(__pyx_t_9);
          __pyx_t_11 = __pyx_cur_scope->__pyx_t_4;
          __pyx_cur_scope->__pyx_t_4 = 0;
          __Pyx_XGOTREF(__pyx_t_11);
          __pyx_t_12 = __pyx_cur_scope->__pyx_t_5;
          __pyx_cur_scope->__pyx_t_5 = 0;
          __Pyx_XGOTREF(__pyx_t_12);
          if (unlikely(!__pyx_sent_value)) __PYX_ERR(10, 700, __pyx_L6_except_error)
        } else {
          PyObject* exc_type = __Pyx_PyErr_Occurred();
          if (exc_type) {
            if (likely(exc_type == PyExc_StopIteration || (exc_type != PyExc_GeneratorExit && __Pyx_PyErr_GivenExceptionMatches(exc_type, PyExc_StopIteration)))) PyErr_Clear();
            else __PYX_ERR(10, 700, __pyx_L6_except_error)
          }
        }

        /* "src/python/grpcio/grpc/_cython/_cygrpc/aio/server.pyx.pxi":693
 *             _decode(rpc_state.method()),
 *         ))
 *         if not rpc_state.status_sent and rpc_state.server._status != AIO_SERVER_STATUS_STOPPED:             # <<<<<<<<<<<<<<
 *             # Allows users to raise other types of exception with specified status code
 *             if rpc_state.status_code == StatusCode.ok:
 */
      }
      __Pyx_XDECREF(__pyx_t_12); __pyx_t_12 = 0;
      __Pyx_XDECREF(__pyx_t_11); __pyx_t_11 = 0;
      __Pyx_XDECREF(__pyx_t_9); __pyx_t_9 = 0;
      goto __pyx_L5_exception_handled;
    }
    goto __pyx_L6_except_error;
    __pyx_L6_except_error:;

    /* "src/python/grpcio/grpc/_cython/_cygrpc/aio/server.pyx.pxi":662
 * 
 * async def _handle_exceptions(RPCState rpc_state, object rpc_coro, object loop):
 *     try:             # <<<<<<<<<<<<<<
 *         try:
 *             await rpc_coro
 */
    __Pyx_XGIVEREF(__pyx_t_1);
    __Pyx_XGIVEREF(__pyx_t_2);
    __Pyx_XGIVEREF(__pyx_t_3);
    __Pyx_ExceptionReset(__pyx_t_1, __pyx_t_2, __pyx_t_3);
    goto __pyx_L1_error;
    __pyx_L8_try_return:;
    __Pyx_XGIVEREF(__pyx_t_1);
    __Pyx_XGIVEREF(__pyx_t_2);
    __Pyx_XGIVEREF(__pyx_t_3);
    __Pyx_ExceptionReset(__pyx_t_1, __pyx_t_2, __pyx_t_3);
    goto __pyx_L0;
    __pyx_L7_except_return:;
    __Pyx_XGIVEREF(__pyx_t_1);
    __Pyx_XGIVEREF(__pyx_t_2);
    __Pyx_XGIVEREF(__pyx_t_3);
    __Pyx_ExceptionReset(__pyx_t_1, __pyx_t_2, __pyx_t_3);
    goto __pyx_L0;
    __pyx_L5_exception_handled:;
    __Pyx_XGIVEREF(__pyx_t_1);
    __Pyx_XGIVEREF(__pyx_t_2);
    __Pyx_XGIVEREF(__pyx_t_3);
    __Pyx_ExceptionReset(__pyx_t_1, __pyx_t_2, __pyx_t_3);
    __pyx_L9_try_end:;
  }
  CYTHON_MAYBE_UNUSED_VAR(__pyx_cur_scope);

  /* "src/python/grpcio/grpc/_cython/_cygrpc/aio/server.pyx.pxi":661
 * 
 * 
 * async def _handle_exceptions(RPCState rpc_state, object rpc_coro, object loop):             # <<<<<<<<<<<<<<
 *     try:
 *         try:
 */

  /* function exit code */
  PyErr_SetNone(PyExc_StopIteration);
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_9);
  __Pyx_XDECREF(__pyx_t_10);
  __Pyx_XDECREF(__pyx_t_11);
  __Pyx_XDECREF(__pyx_t_12);
  __Pyx_XDECREF(__pyx_t_13);
  __Pyx_XDECREF(__pyx_t_15);
  __Pyx_XDECREF(__pyx_t_16);
  __Pyx_XDECREF(__pyx_t_17);
  __Pyx_XDECREF(__pyx_t_18);
  __Pyx_AddTraceback("_handle_exceptions", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_L0:;
  __Pyx_XDECREF(__pyx_r); __pyx_r = 0;
  #if !CYTHON_USE_EXC_INFO_STACK
  __Pyx_Coroutine_ResetAndClearException(__pyx_generator);
  #endif
  __pyx_generator->resume_label = -1;
  __Pyx_Coroutine_clear((PyObject*)__pyx_generator);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}
static PyObject *__pyx_gb_4grpc_7_cython_6cygrpc_175generator35(__pyx_CoroutineObject *__pyx_generator, CYTHON_UNUSED PyThreadState *__pyx_tstate, PyObject *__pyx_sent_value); /* proto */

/* "src/python/grpcio/grpc/_cython/_cygrpc/aio/server.pyx.pxi":710
 * 
 * 
 * async def _handle_cancellation_from_core(object rpc_task,             # <<<<<<<<<<<<<<
 *                                          RPCState rpc_state,
 *                                          object loop):
 */

/* Python wrapper */
static PyObject *__pyx_pw_4grpc_7_cython_6cygrpc_174_handle_cancellation_from_core(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
static PyMethodDef __pyx_mdef_4grpc_7_cython_6cygrpc_174_handle_cancellation_from_core = {"_handle_cancellation_from_core", (PyCFunction)(void*)(PyCFunctionWithKeywords)__pyx_pw_4grpc_7_cython_6cygrpc_174_handle_cancellation_from_core, METH_VARARGS|METH_KEYWORDS, 0};
static PyObject *__pyx_pw_4grpc_7_cython_6cygrpc_174_handle_cancellation_from_core(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
  PyObject *__pyx_v_rpc_task = 0;
  struct __pyx_obj_4grpc_7_cython_6cygrpc_RPCState *__pyx_v_rpc_state = 0;
  PyObject *__pyx_v_loop = 0;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("_handle_cancellation_from_core (wrapper)", 0);
  {
    static PyObject **__pyx_pyargnames[] = {&__pyx_n_s_rpc_task,&__pyx_n_s_rpc_state,&__pyx_n_s_loop,0};
    PyObject* values[3] = {0,0,0};
    if (unlikely(__pyx_kwds)) {
      Py_ssize_t kw_args;
      const Py_ssize_t pos_args = PyTuple_GET_SIZE(__pyx_args);
      switch (pos_args) {
        case  3: values[2] = PyTuple_GET_ITEM(__pyx_args, 2);
        CYTHON_FALLTHROUGH;
        case  2: values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
        CYTHON_FALLTHROUGH;
        case  1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
        CYTHON_FALLTHROUGH;
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      kw_args = PyDict_Size(__pyx_kwds);
      switch (pos_args) {
        case  0:
        if (likely((values[0] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_rpc_task)) != 0)) kw_args--;
        else goto __pyx_L5_argtuple_error;
        CYTHON_FALLTHROUGH;
        case  1:
        if (likely((values[1] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_rpc_state)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("_handle_cancellation_from_core", 1, 3, 3, 1); __PYX_ERR(10, 710, __pyx_L3_error)
        }
        CYTHON_FALLTHROUGH;
        case  2:
        if (likely((values[2] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_loop)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("_handle_cancellation_from_core", 1, 3, 3, 2); __PYX_ERR(10, 710, __pyx_L3_error)
        }
      }
      if (unlikely(kw_args > 0)) {
        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "_handle_cancellation_from_core") < 0)) __PYX_ERR(10, 710, __pyx_L3_error)
      }
    } else if (PyTuple_GET_SIZE(__pyx_args) != 3) {
      goto __pyx_L5_argtuple_error;
    } else {
      values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
      values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
      values[2] = PyTuple_GET_ITEM(__pyx_args, 2);
    }
    __pyx_v_rpc_task = values[0];
    __pyx_v_rpc_state = ((struct __pyx_obj_4grpc_7_cython_6cygrpc_RPCState *)values[1]);
    __pyx_v_loop = values[2];
  }
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("_handle_cancellation_from_core", 1, 3, 3, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(10, 710, __pyx_L3_error)
  __pyx_L3_error:;
  __Pyx_AddTraceback("grpc._cython.cygrpc._handle_cancellation_from_core", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_rpc_state), __pyx_ptype_4grpc_7_cython_6cygrpc_RPCState, 1, "rpc_state", 0))) __PYX_ERR(10, 711, __pyx_L1_error)
  __pyx_r = __pyx_pf_4grpc_7_cython_6cygrpc_173_handle_cancellation_from_core(__pyx_self, __pyx_v_rpc_task, __pyx_v_rpc_state, __pyx_v_loop);

  /* function exit code */
  goto __pyx_L0;
  __pyx_L1_error:;
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_4grpc_7_cython_6cygrpc_173_handle_cancellation_from_core(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__pyx_v_rpc_task, struct __pyx_obj_4grpc_7_cython_6cygrpc_RPCState *__pyx_v_rpc_state, PyObject *__pyx_v_loop) {
  struct __pyx_obj_4grpc_7_cython_6cygrpc___pyx_scope_struct_47__handle_cancellation_from_core *__pyx_cur_scope;
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("_handle_cancellation_from_core", 0);
  __pyx_cur_scope = (struct __pyx_obj_4grpc_7_cython_6cygrpc___pyx_scope_struct_47__handle_cancellation_from_core *)__pyx_tp_new_4grpc_7_cython_6cygrpc___pyx_scope_struct_47__handle_cancellation_from_core(__pyx_ptype_4grpc_7_cython_6cygrpc___pyx_scope_struct_47__handle_cancellation_from_core, __pyx_empty_tuple, NULL);
  if (unlikely(!__pyx_cur_scope)) {
    __pyx_cur_scope = ((struct __pyx_obj_4grpc_7_cython_6cygrpc___pyx_scope_struct_47__handle_cancellation_from_core *)Py_None);
    __Pyx_INCREF(Py_None);
    __PYX_ERR(10, 710, __pyx_L1_error)
  } else {
    __Pyx_GOTREF(__pyx_cur_scope);
  }
  __pyx_cur_scope->__pyx_v_rpc_task = __pyx_v_rpc_task;
  __Pyx_INCREF(__pyx_cur_scope->__pyx_v_rpc_task);
  __Pyx_GIVEREF(__pyx_cur_scope->__pyx_v_rpc_task);
  __pyx_cur_scope->__pyx_v_rpc_state = __pyx_v_rpc_state;
  __Pyx_INCREF((PyObject *)__pyx_cur_scope->__pyx_v_rpc_state);
  __Pyx_GIVEREF((PyObject *)__pyx_cur_scope->__pyx_v_rpc_state);
  __pyx_cur_scope->__pyx_v_loop = __pyx_v_loop;
  __Pyx_INCREF(__pyx_cur_scope->__pyx_v_loop);
  __Pyx_GIVEREF(__pyx_cur_scope->__pyx_v_loop);
  {
    __pyx_CoroutineObject *gen = __Pyx_Coroutine_New((__pyx_coroutine_body_t) __pyx_gb_4grpc_7_cython_6cygrpc_175generator35, __pyx_codeobj__194, (PyObject *) __pyx_cur_scope, __pyx_n_s_handle_cancellation_from_core, __pyx_n_s_handle_cancellation_from_core, __pyx_n_s_grpc__cython_cygrpc); if (unlikely(!gen)) __PYX_ERR(10, 710, __pyx_L1_error)
    __Pyx_DECREF(__pyx_cur_scope);
    __Pyx_RefNannyFinishContext();
    return (PyObject *) gen;
  }

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_AddTraceback("grpc._cython.cygrpc._handle_cancellation_from_core", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __Pyx_DECREF(((PyObject *)__pyx_cur_scope));
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_gb_4grpc_7_cython_6cygrpc_175generator35(__pyx_CoroutineObject *__pyx_generator, CYTHON_UNUSED PyThreadState *__pyx_tstate, PyObject *__pyx_sent_value) /* generator body */
{
  struct __pyx_obj_4grpc_7_cython_6cygrpc___pyx_scope_struct_47__handle_cancellation_from_core *__pyx_cur_scope = ((struct __pyx_obj_4grpc_7_cython_6cygrpc___pyx_scope_struct_47__handle_cancellation_from_core *)__pyx_generator->closure);
  PyObject *__pyx_r = NULL;
  PyObject *__pyx_t_1 = NULL;
  PyObject *__pyx_t_2 = NULL;
  PyObject *__pyx_t_3 = NULL;
  int __pyx_t_4;
  PyObject *__pyx_t_5 = NULL;
  int __pyx_t_6;
  int __pyx_t_7;
  int __pyx_t_8;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("_handle_cancellation_from_core", 0);
  switch (__pyx_generator->resume_label) {
    case 0: goto __pyx_L3_first_run;
    case 1: goto __pyx_L4_resume_from_await;
    default: /* CPython raises the right error here */
    __Pyx_RefNannyFinishContext();
    return NULL;
  }
  __pyx_L3_first_run:;
  if (unlikely(!__pyx_sent_value)) __PYX_ERR(10, 710, __pyx_L1_error)

  /* "src/python/grpcio/grpc/_cython/_cygrpc/aio/server.pyx.pxi":713
 *                                          RPCState rpc_state,
 *                                          object loop):
 *     cdef ReceiveCloseOnServerOperation op = ReceiveCloseOnServerOperation(_EMPTY_FLAG)             # <<<<<<<<<<<<<<
 *     cdef tuple ops = (op,)
 * 
 */
  __pyx_t_1 = __Pyx_PyInt_From_int(__pyx_v_4grpc_7_cython_6cygrpc__EMPTY_FLAG); if (unlikely(!__pyx_t_1)) __PYX_ERR(10, 713, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_t_2 = __Pyx_PyObject_CallOneArg(((PyObject *)__pyx_ptype_4grpc_7_cython_6cygrpc_ReceiveCloseOnServerOperation), __pyx_t_1); if (unlikely(!__pyx_t_2)) __PYX_ERR(10, 713, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  __Pyx_GIVEREF(__pyx_t_2);
  __pyx_cur_scope->__pyx_v_op = ((struct __pyx_obj_4grpc_7_cython_6cygrpc_ReceiveCloseOnServerOperation *)__pyx_t_2);
  __pyx_t_2 = 0;

  /* "src/python/grpcio/grpc/_cython/_cygrpc/aio/server.pyx.pxi":714
 *                                          object loop):
 *     cdef ReceiveCloseOnServerOperation op = ReceiveCloseOnServerOperation(_EMPTY_FLAG)
 *     cdef tuple ops = (op,)             # <<<<<<<<<<<<<<
 * 
 *     # Awaits cancellation from peer.
 */
  __pyx_t_2 = PyTuple_New(1); if (unlikely(!__pyx_t_2)) __PYX_ERR(10, 714, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __Pyx_INCREF(((PyObject *)__pyx_cur_scope->__pyx_v_op));
  __Pyx_GIVEREF(((PyObject *)__pyx_cur_scope->__pyx_v_op));
  PyTuple_SET_ITEM(__pyx_t_2, 0, ((PyObject *)__pyx_cur_scope->__pyx_v_op));
  __Pyx_GIVEREF(__pyx_t_2);
  __pyx_cur_scope->__pyx_v_ops = ((PyObject*)__pyx_t_2);
  __pyx_t_2 = 0;

  /* "src/python/grpcio/grpc/_cython/_cygrpc/aio/server.pyx.pxi":717
 * 
 *     # Awaits cancellation from peer.
 *     await execute_batch(rpc_state, ops, loop)             # <<<<<<<<<<<<<<
 *     rpc_state.client_closed = True
 *     # If 1) received cancel signal; 2) the Task is not finished; 3) the server
 */
  __Pyx_GetModuleGlobalName(__pyx_t_1, __pyx_n_s_execute_batch); if (unlikely(!__pyx_t_1)) __PYX_ERR(10, 717, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_t_3 = NULL;
  __pyx_t_4 = 0;
  if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_1))) {
    __pyx_t_3 = PyMethod_GET_SELF(__pyx_t_1);
    if (likely(__pyx_t_3)) {
      PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_1);
      __Pyx_INCREF(__pyx_t_3);
      __Pyx_INCREF(function);
      __Pyx_DECREF_SET(__pyx_t_1, function);
      __pyx_t_4 = 1;
    }
  }
  #if CYTHON_FAST_PYCALL
  if (PyFunction_Check(__pyx_t_1)) {
    PyObject *__pyx_temp[4] = {__pyx_t_3, ((PyObject *)__pyx_cur_scope->__pyx_v_rpc_state), __pyx_cur_scope->__pyx_v_ops, __pyx_cur_scope->__pyx_v_loop};
    __pyx_t_2 = __Pyx_PyFunction_FastCall(__pyx_t_1, __pyx_temp+1-__pyx_t_4, 3+__pyx_t_4); if (unlikely(!__pyx_t_2)) __PYX_ERR(10, 717, __pyx_L1_error)
    __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0;
    __Pyx_GOTREF(__pyx_t_2);
  } else
  #endif
  #if CYTHON_FAST_PYCCALL
  if (__Pyx_PyFastCFunction_Check(__pyx_t_1)) {
    PyObject *__pyx_temp[4] = {__pyx_t_3, ((PyObject *)__pyx_cur_scope->__pyx_v_rpc_state), __pyx_cur_scope->__pyx_v_ops, __pyx_cur_scope->__pyx_v_loop};
    __pyx_t_2 = __Pyx_PyCFunction_FastCall(__pyx_t_1, __pyx_temp+1-__pyx_t_4, 3+__pyx_t_4); if (unlikely(!__pyx_t_2)) __PYX_ERR(10, 717, __pyx_L1_error)
    __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0;
    __Pyx_GOTREF(__pyx_t_2);
  } else
  #endif
  {
    __pyx_t_5 = PyTuple_New(3+__pyx_t_4); if (unlikely(!__pyx_t_5)) __PYX_ERR(10, 717, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_5);
    if (__pyx_t_3) {
      __Pyx_GIVEREF(__pyx_t_3); PyTuple_SET_ITEM(__pyx_t_5, 0, __pyx_t_3); __pyx_t_3 = NULL;
    }
    __Pyx_INCREF(((PyObject *)__pyx_cur_scope->__pyx_v_rpc_state));
    __Pyx_GIVEREF(((PyObject *)__pyx_cur_scope->__pyx_v_rpc_state));
    PyTuple_SET_ITEM(__pyx_t_5, 0+__pyx_t_4, ((PyObject *)__pyx_cur_scope->__pyx_v_rpc_state));
    __Pyx_INCREF(__pyx_cur_scope->__pyx_v_ops);
    __Pyx_GIVEREF(__pyx_cur_scope->__pyx_v_ops);
    PyTuple_SET_ITEM(__pyx_t_5, 1+__pyx_t_4, __pyx_cur_scope->__pyx_v_ops);
    __Pyx_INCREF(__pyx_cur_scope->__pyx_v_loop);
    __Pyx_GIVEREF(__pyx_cur_scope->__pyx_v_loop);
    PyTuple_SET_ITEM(__pyx_t_5, 2+__pyx_t_4, __pyx_cur_scope->__pyx_v_loop);
    __pyx_t_2 = __Pyx_PyObject_Call(__pyx_t_1, __pyx_t_5, NULL); if (unlikely(!__pyx_t_2)) __PYX_ERR(10, 717, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_2);
    __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
  }
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  __pyx_r = __Pyx_Coroutine_Yield_From(__pyx_generator, __pyx_t_2);
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  __Pyx_XGOTREF(__pyx_r);
  if (likely(__pyx_r)) {
    __Pyx_XGIVEREF(__pyx_r);
    __Pyx_RefNannyFinishContext();
    __Pyx_Coroutine_ResetAndClearException(__pyx_generator);
    /* return from generator, awaiting value */
    __pyx_generator->resume_label = 1;
    return __pyx_r;
    __pyx_L4_resume_from_await:;
    if (unlikely(!__pyx_sent_value)) __PYX_ERR(10, 717, __pyx_L1_error)
  } else {
    PyObject* exc_type = __Pyx_PyErr_Occurred();
    if (exc_type) {
      if (likely(exc_type == PyExc_StopIteration || (exc_type != PyExc_GeneratorExit && __Pyx_PyErr_GivenExceptionMatches(exc_type, PyExc_StopIteration)))) PyErr_Clear();
      else __PYX_ERR(10, 717, __pyx_L1_error)
    }
  }

  /* "src/python/grpcio/grpc/_cython/_cygrpc/aio/server.pyx.pxi":718
 *     # Awaits cancellation from peer.
 *     await execute_batch(rpc_state, ops, loop)
 *     rpc_state.client_closed = True             # <<<<<<<<<<<<<<
 *     # If 1) received cancel signal; 2) the Task is not finished; 3) the server
 *     # wasn't replying final status. For condition 3, it might cause inaccurate
 */
  __pyx_cur_scope->__pyx_v_rpc_state->client_closed = 1;

  /* "src/python/grpcio/grpc/_cython/_cygrpc/aio/server.pyx.pxi":722
 *     # wasn't replying final status. For condition 3, it might cause inaccurate
 *     # log that an RPC is both aborted and cancelled.
 *     if op.cancelled() and not rpc_task.done() and not rpc_state.status_sent:             # <<<<<<<<<<<<<<
 *         # Injects `CancelledError` to halt the RPC coroutine
 *         rpc_task.cancel()
 */
  __pyx_t_1 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_cur_scope->__pyx_v_op), __pyx_n_s_cancelled); if (unlikely(!__pyx_t_1)) __PYX_ERR(10, 722, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_t_5 = NULL;
  if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_1))) {
    __pyx_t_5 = PyMethod_GET_SELF(__pyx_t_1);
    if (likely(__pyx_t_5)) {
      PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_1);
      __Pyx_INCREF(__pyx_t_5);
      __Pyx_INCREF(function);
      __Pyx_DECREF_SET(__pyx_t_1, function);
    }
  }
  __pyx_t_2 = (__pyx_t_5) ? __Pyx_PyObject_CallOneArg(__pyx_t_1, __pyx_t_5) : __Pyx_PyObject_CallNoArg(__pyx_t_1);
  __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0;
  if (unlikely(!__pyx_t_2)) __PYX_ERR(10, 722, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  __pyx_t_7 = __Pyx_PyObject_IsTrue(__pyx_t_2); if (unlikely(__pyx_t_7 < 0)) __PYX_ERR(10, 722, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  if (__pyx_t_7) {
  } else {
    __pyx_t_6 = __pyx_t_7;
    goto __pyx_L6_bool_binop_done;
  }
  __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_cur_scope->__pyx_v_rpc_task, __pyx_n_s_done); if (unlikely(!__pyx_t_1)) __PYX_ERR(10, 722, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_t_5 = NULL;
  if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_1))) {
    __pyx_t_5 = PyMethod_GET_SELF(__pyx_t_1);
    if (likely(__pyx_t_5)) {
      PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_1);
      __Pyx_INCREF(__pyx_t_5);
      __Pyx_INCREF(function);
      __Pyx_DECREF_SET(__pyx_t_1, function);
    }
  }
  __pyx_t_2 = (__pyx_t_5) ? __Pyx_PyObject_CallOneArg(__pyx_t_1, __pyx_t_5) : __Pyx_PyObject_CallNoArg(__pyx_t_1);
  __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0;
  if (unlikely(!__pyx_t_2)) __PYX_ERR(10, 722, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  __pyx_t_7 = __Pyx_PyObject_IsTrue(__pyx_t_2); if (unlikely(__pyx_t_7 < 0)) __PYX_ERR(10, 722, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  __pyx_t_8 = ((!__pyx_t_7) != 0);
  if (__pyx_t_8) {
  } else {
    __pyx_t_6 = __pyx_t_8;
    goto __pyx_L6_bool_binop_done;
  }
  __pyx_t_8 = ((!(__pyx_cur_scope->__pyx_v_rpc_state->status_sent != 0)) != 0);
  __pyx_t_6 = __pyx_t_8;
  __pyx_L6_bool_binop_done:;
  if (__pyx_t_6) {

    /* "src/python/grpcio/grpc/_cython/_cygrpc/aio/server.pyx.pxi":724
 *     if op.cancelled() and not rpc_task.done() and not rpc_state.status_sent:
 *         # Injects `CancelledError` to halt the RPC coroutine
 *         rpc_task.cancel()             # <<<<<<<<<<<<<<
 * 
 * 
 */
    __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_cur_scope->__pyx_v_rpc_task, __pyx_n_s_cancel); if (unlikely(!__pyx_t_1)) __PYX_ERR(10, 724, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_1);
    __pyx_t_5 = NULL;
    if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_1))) {
      __pyx_t_5 = PyMethod_GET_SELF(__pyx_t_1);
      if (likely(__pyx_t_5)) {
        PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_1);
        __Pyx_INCREF(__pyx_t_5);
        __Pyx_INCREF(function);
        __Pyx_DECREF_SET(__pyx_t_1, function);
      }
    }
    __pyx_t_2 = (__pyx_t_5) ? __Pyx_PyObject_CallOneArg(__pyx_t_1, __pyx_t_5) : __Pyx_PyObject_CallNoArg(__pyx_t_1);
    __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0;
    if (unlikely(!__pyx_t_2)) __PYX_ERR(10, 724, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_2);
    __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
    __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;

    /* "src/python/grpcio/grpc/_cython/_cygrpc/aio/server.pyx.pxi":722
 *     # wasn't replying final status. For condition 3, it might cause inaccurate
 *     # log that an RPC is both aborted and cancelled.
 *     if op.cancelled() and not rpc_task.done() and not rpc_state.status_sent:             # <<<<<<<<<<<<<<
 *         # Injects `CancelledError` to halt the RPC coroutine
 *         rpc_task.cancel()
 */
  }
  CYTHON_MAYBE_UNUSED_VAR(__pyx_cur_scope);

  /* "src/python/grpcio/grpc/_cython/_cygrpc/aio/server.pyx.pxi":710
 * 
 * 
 * async def _handle_cancellation_from_core(object rpc_task,             # <<<<<<<<<<<<<<
 *                                          RPCState rpc_state,
 *                                          object loop):
 */

  /* function exit code */
  PyErr_SetNone(PyExc_StopIteration);
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_XDECREF(__pyx_t_3);
  __Pyx_XDECREF(__pyx_t_5);
  __Pyx_AddTraceback("_handle_cancellation_from_core", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_L0:;
  __Pyx_XDECREF(__pyx_r); __pyx_r = 0;
  #if !CYTHON_USE_EXC_INFO_STACK
  __Pyx_Coroutine_ResetAndClearException(__pyx_generator);
  #endif
  __pyx_generator->resume_label = -1;
  __Pyx_Coroutine_clear((PyObject*)__pyx_generator);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}
static PyObject *__pyx_gb_4grpc_7_cython_6cygrpc_178generator36(__pyx_CoroutineObject *__pyx_generator, CYTHON_UNUSED PyThreadState *__pyx_tstate, PyObject *__pyx_sent_value); /* proto */

/* "src/python/grpcio/grpc/_cython/_cygrpc/aio/server.pyx.pxi":727
 * 
 * 
 * async def _schedule_rpc_coro(object rpc_coro,             # <<<<<<<<<<<<<<
 *                              RPCState rpc_state,
 *                              object loop):
 */

/* Python wrapper */
static PyObject *__pyx_pw_4grpc_7_cython_6cygrpc_177_schedule_rpc_coro(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
static PyMethodDef __pyx_mdef_4grpc_7_cython_6cygrpc_177_schedule_rpc_coro = {"_schedule_rpc_coro", (PyCFunction)(void*)(PyCFunctionWithKeywords)__pyx_pw_4grpc_7_cython_6cygrpc_177_schedule_rpc_coro, METH_VARARGS|METH_KEYWORDS, 0};
static PyObject *__pyx_pw_4grpc_7_cython_6cygrpc_177_schedule_rpc_coro(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
  PyObject *__pyx_v_rpc_coro = 0;
  struct __pyx_obj_4grpc_7_cython_6cygrpc_RPCState *__pyx_v_rpc_state = 0;
  PyObject *__pyx_v_loop = 0;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("_schedule_rpc_coro (wrapper)", 0);
  {
    static PyObject **__pyx_pyargnames[] = {&__pyx_n_s_rpc_coro,&__pyx_n_s_rpc_state,&__pyx_n_s_loop,0};
    PyObject* values[3] = {0,0,0};
    if (unlikely(__pyx_kwds)) {
      Py_ssize_t kw_args;
      const Py_ssize_t pos_args = PyTuple_GET_SIZE(__pyx_args);
      switch (pos_args) {
        case  3: values[2] = PyTuple_GET_ITEM(__pyx_args, 2);
        CYTHON_FALLTHROUGH;
        case  2: values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
        CYTHON_FALLTHROUGH;
        case  1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
        CYTHON_FALLTHROUGH;
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      kw_args = PyDict_Size(__pyx_kwds);
      switch (pos_args) {
        case  0:
        if (likely((values[0] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_rpc_coro)) != 0)) kw_args--;
        else goto __pyx_L5_argtuple_error;
        CYTHON_FALLTHROUGH;
        case  1:
        if (likely((values[1] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_rpc_state)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("_schedule_rpc_coro", 1, 3, 3, 1); __PYX_ERR(10, 727, __pyx_L3_error)
        }
        CYTHON_FALLTHROUGH;
        case  2:
        if (likely((values[2] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_loop)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("_schedule_rpc_coro", 1, 3, 3, 2); __PYX_ERR(10, 727, __pyx_L3_error)
        }
      }
      if (unlikely(kw_args > 0)) {
        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "_schedule_rpc_coro") < 0)) __PYX_ERR(10, 727, __pyx_L3_error)
      }
    } else if (PyTuple_GET_SIZE(__pyx_args) != 3) {
      goto __pyx_L5_argtuple_error;
    } else {
      values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
      values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
      values[2] = PyTuple_GET_ITEM(__pyx_args, 2);
    }
    __pyx_v_rpc_coro = values[0];
    __pyx_v_rpc_state = ((struct __pyx_obj_4grpc_7_cython_6cygrpc_RPCState *)values[1]);
    __pyx_v_loop = values[2];
  }
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("_schedule_rpc_coro", 1, 3, 3, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(10, 727, __pyx_L3_error)
  __pyx_L3_error:;
  __Pyx_AddTraceback("grpc._cython.cygrpc._schedule_rpc_coro", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_rpc_state), __pyx_ptype_4grpc_7_cython_6cygrpc_RPCState, 1, "rpc_state", 0))) __PYX_ERR(10, 728, __pyx_L1_error)
  __pyx_r = __pyx_pf_4grpc_7_cython_6cygrpc_176_schedule_rpc_coro(__pyx_self, __pyx_v_rpc_coro, __pyx_v_rpc_state, __pyx_v_loop);

  /* function exit code */
  goto __pyx_L0;
  __pyx_L1_error:;
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_4grpc_7_cython_6cygrpc_176_schedule_rpc_coro(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__pyx_v_rpc_coro, struct __pyx_obj_4grpc_7_cython_6cygrpc_RPCState *__pyx_v_rpc_state, PyObject *__pyx_v_loop) {
  struct __pyx_obj_4grpc_7_cython_6cygrpc___pyx_scope_struct_48__schedule_rpc_coro *__pyx_cur_scope;
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("_schedule_rpc_coro", 0);
  __pyx_cur_scope = (struct __pyx_obj_4grpc_7_cython_6cygrpc___pyx_scope_struct_48__schedule_rpc_coro *)__pyx_tp_new_4grpc_7_cython_6cygrpc___pyx_scope_struct_48__schedule_rpc_coro(__pyx_ptype_4grpc_7_cython_6cygrpc___pyx_scope_struct_48__schedule_rpc_coro, __pyx_empty_tuple, NULL);
  if (unlikely(!__pyx_cur_scope)) {
    __pyx_cur_scope = ((struct __pyx_obj_4grpc_7_cython_6cygrpc___pyx_scope_struct_48__schedule_rpc_coro *)Py_None);
    __Pyx_INCREF(Py_None);
    __PYX_ERR(10, 727, __pyx_L1_error)
  } else {
    __Pyx_GOTREF(__pyx_cur_scope);
  }
  __pyx_cur_scope->__pyx_v_rpc_coro = __pyx_v_rpc_coro;
  __Pyx_INCREF(__pyx_cur_scope->__pyx_v_rpc_coro);
  __Pyx_GIVEREF(__pyx_cur_scope->__pyx_v_rpc_coro);
  __pyx_cur_scope->__pyx_v_rpc_state = __pyx_v_rpc_state;
  __Pyx_INCREF((PyObject *)__pyx_cur_scope->__pyx_v_rpc_state);
  __Pyx_GIVEREF((PyObject *)__pyx_cur_scope->__pyx_v_rpc_state);
  __pyx_cur_scope->__pyx_v_loop = __pyx_v_loop;
  __Pyx_INCREF(__pyx_cur_scope->__pyx_v_loop);
  __Pyx_GIVEREF(__pyx_cur_scope->__pyx_v_loop);
  {
    __pyx_CoroutineObject *gen = __Pyx_Coroutine_New((__pyx_coroutine_body_t) __pyx_gb_4grpc_7_cython_6cygrpc_178generator36, __pyx_codeobj__195, (PyObject *) __pyx_cur_scope, __pyx_n_s_schedule_rpc_coro, __pyx_n_s_schedule_rpc_coro, __pyx_n_s_grpc__cython_cygrpc); if (unlikely(!gen)) __PYX_ERR(10, 727, __pyx_L1_error)
    __Pyx_DECREF(__pyx_cur_scope);
    __Pyx_RefNannyFinishContext();
    return (PyObject *) gen;
  }

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_AddTraceback("grpc._cython.cygrpc._schedule_rpc_coro", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __Pyx_DECREF(((PyObject *)__pyx_cur_scope));
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_gb_4grpc_7_cython_6cygrpc_178generator36(__pyx_CoroutineObject *__pyx_generator, CYTHON_UNUSED PyThreadState *__pyx_tstate, PyObject *__pyx_sent_value) /* generator body */
{
  struct __pyx_obj_4grpc_7_cython_6cygrpc___pyx_scope_struct_48__schedule_rpc_coro *__pyx_cur_scope = ((struct __pyx_obj_4grpc_7_cython_6cygrpc___pyx_scope_struct_48__schedule_rpc_coro *)__pyx_generator->closure);
  PyObject *__pyx_r = NULL;
  PyObject *__pyx_t_1 = NULL;
  PyObject *__pyx_t_2 = NULL;
  PyObject *__pyx_t_3 = NULL;
  PyObject *__pyx_t_4 = NULL;
  PyObject *__pyx_t_5 = NULL;
  int __pyx_t_6;
  PyObject *__pyx_t_7 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("_schedule_rpc_coro", 0);
  switch (__pyx_generator->resume_label) {
    case 0: goto __pyx_L3_first_run;
    case 1: goto __pyx_L4_resume_from_await;
    default: /* CPython raises the right error here */
    __Pyx_RefNannyFinishContext();
    return NULL;
  }
  __pyx_L3_first_run:;
  if (unlikely(!__pyx_sent_value)) __PYX_ERR(10, 727, __pyx_L1_error)

  /* "src/python/grpcio/grpc/_cython/_cygrpc/aio/server.pyx.pxi":731
 *                              object loop):
 *     # Schedules the RPC coroutine.
 *     cdef object rpc_task = loop.create_task(_handle_exceptions(             # <<<<<<<<<<<<<<
 *         rpc_state,
 *         rpc_coro,
 */
  __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_cur_scope->__pyx_v_loop, __pyx_n_s_create_task); if (unlikely(!__pyx_t_2)) __PYX_ERR(10, 731, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __Pyx_GetModuleGlobalName(__pyx_t_4, __pyx_n_s_handle_exceptions); if (unlikely(!__pyx_t_4)) __PYX_ERR(10, 731, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_4);

  /* "src/python/grpcio/grpc/_cython/_cygrpc/aio/server.pyx.pxi":734
 *         rpc_state,
 *         rpc_coro,
 *         loop,             # <<<<<<<<<<<<<<
 *     ))
 *     await _handle_cancellation_from_core(rpc_task, rpc_state, loop)
 */
  __pyx_t_5 = NULL;
  __pyx_t_6 = 0;
  if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_4))) {
    __pyx_t_5 = PyMethod_GET_SELF(__pyx_t_4);
    if (likely(__pyx_t_5)) {
      PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_4);
      __Pyx_INCREF(__pyx_t_5);
      __Pyx_INCREF(function);
      __Pyx_DECREF_SET(__pyx_t_4, function);
      __pyx_t_6 = 1;
    }
  }
  #if CYTHON_FAST_PYCALL
  if (PyFunction_Check(__pyx_t_4)) {
    PyObject *__pyx_temp[4] = {__pyx_t_5, ((PyObject *)__pyx_cur_scope->__pyx_v_rpc_state), __pyx_cur_scope->__pyx_v_rpc_coro, __pyx_cur_scope->__pyx_v_loop};
    __pyx_t_3 = __Pyx_PyFunction_FastCall(__pyx_t_4, __pyx_temp+1-__pyx_t_6, 3+__pyx_t_6); if (unlikely(!__pyx_t_3)) __PYX_ERR(10, 731, __pyx_L1_error)
    __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0;
    __Pyx_GOTREF(__pyx_t_3);
  } else
  #endif
  #if CYTHON_FAST_PYCCALL
  if (__Pyx_PyFastCFunction_Check(__pyx_t_4)) {
    PyObject *__pyx_temp[4] = {__pyx_t_5, ((PyObject *)__pyx_cur_scope->__pyx_v_rpc_state), __pyx_cur_scope->__pyx_v_rpc_coro, __pyx_cur_scope->__pyx_v_loop};
    __pyx_t_3 = __Pyx_PyCFunction_FastCall(__pyx_t_4, __pyx_temp+1-__pyx_t_6, 3+__pyx_t_6); if (unlikely(!__pyx_t_3)) __PYX_ERR(10, 731, __pyx_L1_error)
    __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0;
    __Pyx_GOTREF(__pyx_t_3);
  } else
  #endif
  {
    __pyx_t_7 = PyTuple_New(3+__pyx_t_6); if (unlikely(!__pyx_t_7)) __PYX_ERR(10, 731, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_7);
    if (__pyx_t_5) {
      __Pyx_GIVEREF(__pyx_t_5); PyTuple_SET_ITEM(__pyx_t_7, 0, __pyx_t_5); __pyx_t_5 = NULL;
    }
    __Pyx_INCREF(((PyObject *)__pyx_cur_scope->__pyx_v_rpc_state));
    __Pyx_GIVEREF(((PyObject *)__pyx_cur_scope->__pyx_v_rpc_state));
    PyTuple_SET_ITEM(__pyx_t_7, 0+__pyx_t_6, ((PyObject *)__pyx_cur_scope->__pyx_v_rpc_state));
    __Pyx_INCREF(__pyx_cur_scope->__pyx_v_rpc_coro);
    __Pyx_GIVEREF(__pyx_cur_scope->__pyx_v_rpc_coro);
    PyTuple_SET_ITEM(__pyx_t_7, 1+__pyx_t_6, __pyx_cur_scope->__pyx_v_rpc_coro);
    __Pyx_INCREF(__pyx_cur_scope->__pyx_v_loop);
    __Pyx_GIVEREF(__pyx_cur_scope->__pyx_v_loop);
    PyTuple_SET_ITEM(__pyx_t_7, 2+__pyx_t_6, __pyx_cur_scope->__pyx_v_loop);
    __pyx_t_3 = __Pyx_PyObject_Call(__pyx_t_4, __pyx_t_7, NULL); if (unlikely(!__pyx_t_3)) __PYX_ERR(10, 731, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_3);
    __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
  }
  __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
  __pyx_t_4 = NULL;
  if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_2))) {
    __pyx_t_4 = PyMethod_GET_SELF(__pyx_t_2);
    if (likely(__pyx_t_4)) {
      PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_2);
      __Pyx_INCREF(__pyx_t_4);
      __Pyx_INCREF(function);
      __Pyx_DECREF_SET(__pyx_t_2, function);
    }
  }
  __pyx_t_1 = (__pyx_t_4) ? __Pyx_PyObject_Call2Args(__pyx_t_2, __pyx_t_4, __pyx_t_3) : __Pyx_PyObject_CallOneArg(__pyx_t_2, __pyx_t_3);
  __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0;
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
  if (unlikely(!__pyx_t_1)) __PYX_ERR(10, 731, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  __Pyx_GIVEREF(__pyx_t_1);
  __pyx_cur_scope->__pyx_v_rpc_task = __pyx_t_1;
  __pyx_t_1 = 0;

  /* "src/python/grpcio/grpc/_cython/_cygrpc/aio/server.pyx.pxi":736
 *         loop,
 *     ))
 *     await _handle_cancellation_from_core(rpc_task, rpc_state, loop)             # <<<<<<<<<<<<<<
 * 
 * 
 */
  __Pyx_GetModuleGlobalName(__pyx_t_2, __pyx_n_s_handle_cancellation_from_core); if (unlikely(!__pyx_t_2)) __PYX_ERR(10, 736, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __pyx_t_3 = NULL;
  __pyx_t_6 = 0;
  if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_2))) {
    __pyx_t_3 = PyMethod_GET_SELF(__pyx_t_2);
    if (likely(__pyx_t_3)) {
      PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_2);
      __Pyx_INCREF(__pyx_t_3);
      __Pyx_INCREF(function);
      __Pyx_DECREF_SET(__pyx_t_2, function);
      __pyx_t_6 = 1;
    }
  }
  #if CYTHON_FAST_PYCALL
  if (PyFunction_Check(__pyx_t_2)) {
    PyObject *__pyx_temp[4] = {__pyx_t_3, __pyx_cur_scope->__pyx_v_rpc_task, ((PyObject *)__pyx_cur_scope->__pyx_v_rpc_state), __pyx_cur_scope->__pyx_v_loop};
    __pyx_t_1 = __Pyx_PyFunction_FastCall(__pyx_t_2, __pyx_temp+1-__pyx_t_6, 3+__pyx_t_6); if (unlikely(!__pyx_t_1)) __PYX_ERR(10, 736, __pyx_L1_error)
    __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0;
    __Pyx_GOTREF(__pyx_t_1);
  } else
  #endif
  #if CYTHON_FAST_PYCCALL
  if (__Pyx_PyFastCFunction_Check(__pyx_t_2)) {
    PyObject *__pyx_temp[4] = {__pyx_t_3, __pyx_cur_scope->__pyx_v_rpc_task, ((PyObject *)__pyx_cur_scope->__pyx_v_rpc_state), __pyx_cur_scope->__pyx_v_loop};
    __pyx_t_1 = __Pyx_PyCFunction_FastCall(__pyx_t_2, __pyx_temp+1-__pyx_t_6, 3+__pyx_t_6); if (unlikely(!__pyx_t_1)) __PYX_ERR(10, 736, __pyx_L1_error)
    __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0;
    __Pyx_GOTREF(__pyx_t_1);
  } else
  #endif
  {
    __pyx_t_4 = PyTuple_New(3+__pyx_t_6); if (unlikely(!__pyx_t_4)) __PYX_ERR(10, 736, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_4);
    if (__pyx_t_3) {
      __Pyx_GIVEREF(__pyx_t_3); PyTuple_SET_ITEM(__pyx_t_4, 0, __pyx_t_3); __pyx_t_3 = NULL;
    }
    __Pyx_INCREF(__pyx_cur_scope->__pyx_v_rpc_task);
    __Pyx_GIVEREF(__pyx_cur_scope->__pyx_v_rpc_task);
    PyTuple_SET_ITEM(__pyx_t_4, 0+__pyx_t_6, __pyx_cur_scope->__pyx_v_rpc_task);
    __Pyx_INCREF(((PyObject *)__pyx_cur_scope->__pyx_v_rpc_state));
    __Pyx_GIVEREF(((PyObject *)__pyx_cur_scope->__pyx_v_rpc_state));
    PyTuple_SET_ITEM(__pyx_t_4, 1+__pyx_t_6, ((PyObject *)__pyx_cur_scope->__pyx_v_rpc_state));
    __Pyx_INCREF(__pyx_cur_scope->__pyx_v_loop);
    __Pyx_GIVEREF(__pyx_cur_scope->__pyx_v_loop);
    PyTuple_SET_ITEM(__pyx_t_4, 2+__pyx_t_6, __pyx_cur_scope->__pyx_v_loop);
    __pyx_t_1 = __Pyx_PyObject_Call(__pyx_t_2, __pyx_t_4, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(10, 736, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_1);
    __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
  }
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  __pyx_r = __Pyx_Coroutine_Yield_From(__pyx_generator, __pyx_t_1);
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  __Pyx_XGOTREF(__pyx_r);
  if (likely(__pyx_r)) {
    __Pyx_XGIVEREF(__pyx_r);
    __Pyx_RefNannyFinishContext();
    __Pyx_Coroutine_ResetAndClearException(__pyx_generator);
    /* return from generator, awaiting value */
    __pyx_generator->resume_label = 1;
    return __pyx_r;
    __pyx_L4_resume_from_await:;
    if (unlikely(!__pyx_sent_value)) __PYX_ERR(10, 736, __pyx_L1_error)
  } else {
    PyObject* exc_type = __Pyx_PyErr_Occurred();
    if (exc_type) {
      if (likely(exc_type == PyExc_StopIteration || (exc_type != PyExc_GeneratorExit && __Pyx_PyErr_GivenExceptionMatches(exc_type, PyExc_StopIteration)))) PyErr_Clear();
      else __PYX_ERR(10, 736, __pyx_L1_error)
    }
  }
  CYTHON_MAYBE_UNUSED_VAR(__pyx_cur_scope);

  /* "src/python/grpcio/grpc/_cython/_cygrpc/aio/server.pyx.pxi":727
 * 
 * 
 * async def _schedule_rpc_coro(object rpc_coro,             # <<<<<<<<<<<<<<
 *                              RPCState rpc_state,
 *                              object loop):
 */

  /* function exit code */
  PyErr_SetNone(PyExc_StopIteration);
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_XDECREF(__pyx_t_3);
  __Pyx_XDECREF(__pyx_t_4);
  __Pyx_XDECREF(__pyx_t_5);
  __Pyx_XDECREF(__pyx_t_7);
  __Pyx_AddTraceback("_schedule_rpc_coro", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_L0:;
  __Pyx_XDECREF(__pyx_r); __pyx_r = 0;
  #if !CYTHON_USE_EXC_INFO_STACK
  __Pyx_Coroutine_ResetAndClearException(__pyx_generator);
  #endif
  __pyx_generator->resume_label = -1;
  __Pyx_Coroutine_clear((PyObject*)__pyx_generator);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}
static PyObject *__pyx_gb_4grpc_7_cython_6cygrpc_181generator37(__pyx_CoroutineObject *__pyx_generator, CYTHON_UNUSED PyThreadState *__pyx_tstate, PyObject *__pyx_sent_value); /* proto */

/* "src/python/grpcio/grpc/_cython/_cygrpc/aio/server.pyx.pxi":739
 * 
 * 
 * async def _handle_rpc(list generic_handlers, tuple interceptors,             # <<<<<<<<<<<<<<
 *                       RPCState rpc_state, object loop):
 *     cdef object method_handler
 */

/* Python wrapper */
static PyObject *__pyx_pw_4grpc_7_cython_6cygrpc_180_handle_rpc(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
static PyMethodDef __pyx_mdef_4grpc_7_cython_6cygrpc_180_handle_rpc = {"_handle_rpc", (PyCFunction)(void*)(PyCFunctionWithKeywords)__pyx_pw_4grpc_7_cython_6cygrpc_180_handle_rpc, METH_VARARGS|METH_KEYWORDS, 0};
static PyObject *__pyx_pw_4grpc_7_cython_6cygrpc_180_handle_rpc(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
  PyObject *__pyx_v_generic_handlers = 0;
  PyObject *__pyx_v_interceptors = 0;
  struct __pyx_obj_4grpc_7_cython_6cygrpc_RPCState *__pyx_v_rpc_state = 0;
  PyObject *__pyx_v_loop = 0;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("_handle_rpc (wrapper)", 0);
  {
    static PyObject **__pyx_pyargnames[] = {&__pyx_n_s_generic_handlers,&__pyx_n_s_interceptors,&__pyx_n_s_rpc_state,&__pyx_n_s_loop,0};
    PyObject* values[4] = {0,0,0,0};
    if (unlikely(__pyx_kwds)) {
      Py_ssize_t kw_args;
      const Py_ssize_t pos_args = PyTuple_GET_SIZE(__pyx_args);
      switch (pos_args) {
        case  4: values[3] = PyTuple_GET_ITEM(__pyx_args, 3);
        CYTHON_FALLTHROUGH;
        case  3: values[2] = PyTuple_GET_ITEM(__pyx_args, 2);
        CYTHON_FALLTHROUGH;
        case  2: values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
        CYTHON_FALLTHROUGH;
        case  1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
        CYTHON_FALLTHROUGH;
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      kw_args = PyDict_Size(__pyx_kwds);
      switch (pos_args) {
        case  0:
        if (likely((values[0] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_generic_handlers)) != 0)) kw_args--;
        else goto __pyx_L5_argtuple_error;
        CYTHON_FALLTHROUGH;
        case  1:
        if (likely((values[1] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_interceptors)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("_handle_rpc", 1, 4, 4, 1); __PYX_ERR(10, 739, __pyx_L3_error)
        }
        CYTHON_FALLTHROUGH;
        case  2:
        if (likely((values[2] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_rpc_state)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("_handle_rpc", 1, 4, 4, 2); __PYX_ERR(10, 739, __pyx_L3_error)
        }
        CYTHON_FALLTHROUGH;
        case  3:
        if (likely((values[3] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_loop)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("_handle_rpc", 1, 4, 4, 3); __PYX_ERR(10, 739, __pyx_L3_error)
        }
      }
      if (unlikely(kw_args > 0)) {
        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "_handle_rpc") < 0)) __PYX_ERR(10, 739, __pyx_L3_error)
      }
    } else if (PyTuple_GET_SIZE(__pyx_args) != 4) {
      goto __pyx_L5_argtuple_error;
    } else {
      values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
      values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
      values[2] = PyTuple_GET_ITEM(__pyx_args, 2);
      values[3] = PyTuple_GET_ITEM(__pyx_args, 3);
    }
    __pyx_v_generic_handlers = ((PyObject*)values[0]);
    __pyx_v_interceptors = ((PyObject*)values[1]);
    __pyx_v_rpc_state = ((struct __pyx_obj_4grpc_7_cython_6cygrpc_RPCState *)values[2]);
    __pyx_v_loop = values[3];
  }
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("_handle_rpc", 1, 4, 4, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(10, 739, __pyx_L3_error)
  __pyx_L3_error:;
  __Pyx_AddTraceback("grpc._cython.cygrpc._handle_rpc", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_generic_handlers), (&PyList_Type), 1, "generic_handlers", 1))) __PYX_ERR(10, 739, __pyx_L1_error)
  if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_interceptors), (&PyTuple_Type), 1, "interceptors", 1))) __PYX_ERR(10, 739, __pyx_L1_error)
  if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_rpc_state), __pyx_ptype_4grpc_7_cython_6cygrpc_RPCState, 1, "rpc_state", 0))) __PYX_ERR(10, 740, __pyx_L1_error)
  __pyx_r = __pyx_pf_4grpc_7_cython_6cygrpc_179_handle_rpc(__pyx_self, __pyx_v_generic_handlers, __pyx_v_interceptors, __pyx_v_rpc_state, __pyx_v_loop);

  /* function exit code */
  goto __pyx_L0;
  __pyx_L1_error:;
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_4grpc_7_cython_6cygrpc_179_handle_rpc(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__pyx_v_generic_handlers, PyObject *__pyx_v_interceptors, struct __pyx_obj_4grpc_7_cython_6cygrpc_RPCState *__pyx_v_rpc_state, PyObject *__pyx_v_loop) {
  struct __pyx_obj_4grpc_7_cython_6cygrpc___pyx_scope_struct_49__handle_rpc *__pyx_cur_scope;
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("_handle_rpc", 0);
  __pyx_cur_scope = (struct __pyx_obj_4grpc_7_cython_6cygrpc___pyx_scope_struct_49__handle_rpc *)__pyx_tp_new_4grpc_7_cython_6cygrpc___pyx_scope_struct_49__handle_rpc(__pyx_ptype_4grpc_7_cython_6cygrpc___pyx_scope_struct_49__handle_rpc, __pyx_empty_tuple, NULL);
  if (unlikely(!__pyx_cur_scope)) {
    __pyx_cur_scope = ((struct __pyx_obj_4grpc_7_cython_6cygrpc___pyx_scope_struct_49__handle_rpc *)Py_None);
    __Pyx_INCREF(Py_None);
    __PYX_ERR(10, 739, __pyx_L1_error)
  } else {
    __Pyx_GOTREF(__pyx_cur_scope);
  }
  __pyx_cur_scope->__pyx_v_generic_handlers = __pyx_v_generic_handlers;
  __Pyx_INCREF(__pyx_cur_scope->__pyx_v_generic_handlers);
  __Pyx_GIVEREF(__pyx_cur_scope->__pyx_v_generic_handlers);
  __pyx_cur_scope->__pyx_v_interceptors = __pyx_v_interceptors;
  __Pyx_INCREF(__pyx_cur_scope->__pyx_v_interceptors);
  __Pyx_GIVEREF(__pyx_cur_scope->__pyx_v_interceptors);
  __pyx_cur_scope->__pyx_v_rpc_state = __pyx_v_rpc_state;
  __Pyx_INCREF((PyObject *)__pyx_cur_scope->__pyx_v_rpc_state);
  __Pyx_GIVEREF((PyObject *)__pyx_cur_scope->__pyx_v_rpc_state);
  __pyx_cur_scope->__pyx_v_loop = __pyx_v_loop;
  __Pyx_INCREF(__pyx_cur_scope->__pyx_v_loop);
  __Pyx_GIVEREF(__pyx_cur_scope->__pyx_v_loop);
  {
    __pyx_CoroutineObject *gen = __Pyx_Coroutine_New((__pyx_coroutine_body_t) __pyx_gb_4grpc_7_cython_6cygrpc_181generator37, __pyx_codeobj__196, (PyObject *) __pyx_cur_scope, __pyx_n_s_handle_rpc, __pyx_n_s_handle_rpc, __pyx_n_s_grpc__cython_cygrpc); if (unlikely(!gen)) __PYX_ERR(10, 739, __pyx_L1_error)
    __Pyx_DECREF(__pyx_cur_scope);
    __Pyx_RefNannyFinishContext();
    return (PyObject *) gen;
  }

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_AddTraceback("grpc._cython.cygrpc._handle_rpc", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __Pyx_DECREF(((PyObject *)__pyx_cur_scope));
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_gb_4grpc_7_cython_6cygrpc_181generator37(__pyx_CoroutineObject *__pyx_generator, CYTHON_UNUSED PyThreadState *__pyx_tstate, PyObject *__pyx_sent_value) /* generator body */
{
  struct __pyx_obj_4grpc_7_cython_6cygrpc___pyx_scope_struct_49__handle_rpc *__pyx_cur_scope = ((struct __pyx_obj_4grpc_7_cython_6cygrpc___pyx_scope_struct_49__handle_rpc *)__pyx_generator->closure);
  PyObject *__pyx_r = NULL;
  PyObject *__pyx_t_1 = NULL;
  PyObject *__pyx_t_2 = NULL;
  PyObject *__pyx_t_3 = NULL;
  PyObject *__pyx_t_4 = NULL;
  PyObject *__pyx_t_5 = NULL;
  int __pyx_t_6;
  PyObject *__pyx_t_7 = NULL;
  int __pyx_t_8;
  int __pyx_t_9;
  PyObject *__pyx_t_10 = NULL;
  int __pyx_t_11;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("_handle_rpc", 0);
  switch (__pyx_generator->resume_label) {
    case 0: goto __pyx_L3_first_run;
    case 1: goto __pyx_L4_resume_from_await;
    case 2: goto __pyx_L6_resume_from_await;
    case 3: goto __pyx_L10_resume_from_await;
    case 4: goto __pyx_L14_resume_from_await;
    case 5: goto __pyx_L18_resume_from_await;
    case 6: goto __pyx_L22_resume_from_await;
    default: /* CPython raises the right error here */
    __Pyx_RefNannyFinishContext();
    return NULL;
  }
  __pyx_L3_first_run:;
  if (unlikely(!__pyx_sent_value)) __PYX_ERR(10, 739, __pyx_L1_error)

  /* "src/python/grpcio/grpc/_cython/_cygrpc/aio/server.pyx.pxi":743
 *     cdef object method_handler
 *     # Finds the method handler (application logic)
 *     method_handler = await _find_method_handler(             # <<<<<<<<<<<<<<
 *         rpc_state.method().decode(),
 *         rpc_state.invocation_metadata(),
 */
  __Pyx_GetModuleGlobalName(__pyx_t_2, __pyx_n_s_find_method_handler); if (unlikely(!__pyx_t_2)) __PYX_ERR(10, 743, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);

  /* "src/python/grpcio/grpc/_cython/_cygrpc/aio/server.pyx.pxi":744
 *     # Finds the method handler (application logic)
 *     method_handler = await _find_method_handler(
 *         rpc_state.method().decode(),             # <<<<<<<<<<<<<<
 *         rpc_state.invocation_metadata(),
 *         generic_handlers,
 */
  __pyx_t_3 = ((struct __pyx_vtabstruct_4grpc_7_cython_6cygrpc_RPCState *)__pyx_cur_scope->__pyx_v_rpc_state->__pyx_vtab)->method(__pyx_cur_scope->__pyx_v_rpc_state); if (unlikely(!__pyx_t_3)) __PYX_ERR(10, 744, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  if (unlikely(__pyx_t_3 == Py_None)) {
    PyErr_Format(PyExc_AttributeError, "'NoneType' object has no attribute '%.30s'", "decode");
    __PYX_ERR(10, 744, __pyx_L1_error)
  }
  __pyx_t_4 = __Pyx_decode_bytes(__pyx_t_3, 0, PY_SSIZE_T_MAX, NULL, NULL, NULL); if (unlikely(!__pyx_t_4)) __PYX_ERR(10, 744, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_4);
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;

  /* "src/python/grpcio/grpc/_cython/_cygrpc/aio/server.pyx.pxi":745
 *     method_handler = await _find_method_handler(
 *         rpc_state.method().decode(),
 *         rpc_state.invocation_metadata(),             # <<<<<<<<<<<<<<
 *         generic_handlers,
 *         interceptors,
 */
  __pyx_t_3 = ((struct __pyx_vtabstruct_4grpc_7_cython_6cygrpc_RPCState *)__pyx_cur_scope->__pyx_v_rpc_state->__pyx_vtab)->invocation_metadata(__pyx_cur_scope->__pyx_v_rpc_state); if (unlikely(!__pyx_t_3)) __PYX_ERR(10, 745, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);

  /* "src/python/grpcio/grpc/_cython/_cygrpc/aio/server.pyx.pxi":747
 *         rpc_state.invocation_metadata(),
 *         generic_handlers,
 *         interceptors,             # <<<<<<<<<<<<<<
 *     )
 *     if method_handler is None:
 */
  __pyx_t_5 = NULL;
  __pyx_t_6 = 0;
  if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_2))) {
    __pyx_t_5 = PyMethod_GET_SELF(__pyx_t_2);
    if (likely(__pyx_t_5)) {
      PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_2);
      __Pyx_INCREF(__pyx_t_5);
      __Pyx_INCREF(function);
      __Pyx_DECREF_SET(__pyx_t_2, function);
      __pyx_t_6 = 1;
    }
  }
  #if CYTHON_FAST_PYCALL
  if (PyFunction_Check(__pyx_t_2)) {
    PyObject *__pyx_temp[5] = {__pyx_t_5, __pyx_t_4, __pyx_t_3, __pyx_cur_scope->__pyx_v_generic_handlers, __pyx_cur_scope->__pyx_v_interceptors};
    __pyx_t_1 = __Pyx_PyFunction_FastCall(__pyx_t_2, __pyx_temp+1-__pyx_t_6, 4+__pyx_t_6); if (unlikely(!__pyx_t_1)) __PYX_ERR(10, 743, __pyx_L1_error)
    __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0;
    __Pyx_GOTREF(__pyx_t_1);
    __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
    __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
  } else
  #endif
  #if CYTHON_FAST_PYCCALL
  if (__Pyx_PyFastCFunction_Check(__pyx_t_2)) {
    PyObject *__pyx_temp[5] = {__pyx_t_5, __pyx_t_4, __pyx_t_3, __pyx_cur_scope->__pyx_v_generic_handlers, __pyx_cur_scope->__pyx_v_interceptors};
    __pyx_t_1 = __Pyx_PyCFunction_FastCall(__pyx_t_2, __pyx_temp+1-__pyx_t_6, 4+__pyx_t_6); if (unlikely(!__pyx_t_1)) __PYX_ERR(10, 743, __pyx_L1_error)
    __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0;
    __Pyx_GOTREF(__pyx_t_1);
    __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
    __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
  } else
  #endif
  {
    __pyx_t_7 = PyTuple_New(4+__pyx_t_6); if (unlikely(!__pyx_t_7)) __PYX_ERR(10, 743, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_7);
    if (__pyx_t_5) {
      __Pyx_GIVEREF(__pyx_t_5); PyTuple_SET_ITEM(__pyx_t_7, 0, __pyx_t_5); __pyx_t_5 = NULL;
    }
    __Pyx_GIVEREF(__pyx_t_4);
    PyTuple_SET_ITEM(__pyx_t_7, 0+__pyx_t_6, __pyx_t_4);
    __Pyx_GIVEREF(__pyx_t_3);
    PyTuple_SET_ITEM(__pyx_t_7, 1+__pyx_t_6, __pyx_t_3);
    __Pyx_INCREF(__pyx_cur_scope->__pyx_v_generic_handlers);
    __Pyx_GIVEREF(__pyx_cur_scope->__pyx_v_generic_handlers);
    PyTuple_SET_ITEM(__pyx_t_7, 2+__pyx_t_6, __pyx_cur_scope->__pyx_v_generic_handlers);
    __Pyx_INCREF(__pyx_cur_scope->__pyx_v_interceptors);
    __Pyx_GIVEREF(__pyx_cur_scope->__pyx_v_interceptors);
    PyTuple_SET_ITEM(__pyx_t_7, 3+__pyx_t_6, __pyx_cur_scope->__pyx_v_interceptors);
    __pyx_t_4 = 0;
    __pyx_t_3 = 0;
    __pyx_t_1 = __Pyx_PyObject_Call(__pyx_t_2, __pyx_t_7, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(10, 743, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_1);
    __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
  }
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  __pyx_r = __Pyx_Coroutine_Yield_From(__pyx_generator, __pyx_t_1);
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  __Pyx_XGOTREF(__pyx_r);
  if (likely(__pyx_r)) {
    __Pyx_XGIVEREF(__pyx_r);
    __Pyx_RefNannyFinishContext();
    __Pyx_Coroutine_ResetAndClearException(__pyx_generator);
    /* return from generator, awaiting value */
    __pyx_generator->resume_label = 1;
    return __pyx_r;
    __pyx_L4_resume_from_await:;
    if (unlikely(!__pyx_sent_value)) __PYX_ERR(10, 743, __pyx_L1_error)
    __pyx_t_1 = __pyx_sent_value; __Pyx_INCREF(__pyx_t_1);
  } else {
    __pyx_t_1 = NULL;
    if (__Pyx_PyGen_FetchStopIterationValue(&__pyx_t_1) < 0) __PYX_ERR(10, 743, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_1);
  }
  __Pyx_GIVEREF(__pyx_t_1);
  __pyx_cur_scope->__pyx_v_method_handler = __pyx_t_1;
  __pyx_t_1 = 0;

  /* "src/python/grpcio/grpc/_cython/_cygrpc/aio/server.pyx.pxi":749
 *         interceptors,
 *     )
 *     if method_handler is None:             # <<<<<<<<<<<<<<
 *         rpc_state.status_sent = True
 *         await _send_error_status_from_server(
 */
  __pyx_t_8 = (__pyx_cur_scope->__pyx_v_method_handler == Py_None);
  __pyx_t_9 = (__pyx_t_8 != 0);
  if (__pyx_t_9) {

    /* "src/python/grpcio/grpc/_cython/_cygrpc/aio/server.pyx.pxi":750
 *     )
 *     if method_handler is None:
 *         rpc_state.status_sent = True             # <<<<<<<<<<<<<<
 *         await _send_error_status_from_server(
 *             rpc_state,
 */
    __pyx_cur_scope->__pyx_v_rpc_state->status_sent = 1;

    /* "src/python/grpcio/grpc/_cython/_cygrpc/aio/server.pyx.pxi":751
 *     if method_handler is None:
 *         rpc_state.status_sent = True
 *         await _send_error_status_from_server(             # <<<<<<<<<<<<<<
 *             rpc_state,
 *             StatusCode.unimplemented,
 */
    __Pyx_GetModuleGlobalName(__pyx_t_2, __pyx_n_s_send_error_status_from_server); if (unlikely(!__pyx_t_2)) __PYX_ERR(10, 751, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_2);

    /* "src/python/grpcio/grpc/_cython/_cygrpc/aio/server.pyx.pxi":753
 *         await _send_error_status_from_server(
 *             rpc_state,
 *             StatusCode.unimplemented,             # <<<<<<<<<<<<<<
 *             'Method not found!',
 *             _IMMUTABLE_EMPTY_METADATA,
 */
    __Pyx_GetModuleGlobalName(__pyx_t_7, __pyx_n_s_StatusCode); if (unlikely(!__pyx_t_7)) __PYX_ERR(10, 753, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_7);
    __pyx_t_3 = __Pyx_PyObject_GetAttrStr(__pyx_t_7, __pyx_n_s_unimplemented); if (unlikely(!__pyx_t_3)) __PYX_ERR(10, 753, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_3);
    __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;

    /* "src/python/grpcio/grpc/_cython/_cygrpc/aio/server.pyx.pxi":755
 *             StatusCode.unimplemented,
 *             'Method not found!',
 *             _IMMUTABLE_EMPTY_METADATA,             # <<<<<<<<<<<<<<
 *             rpc_state.create_send_initial_metadata_op_if_not_sent(),
 *             loop
 */
    __Pyx_GetModuleGlobalName(__pyx_t_7, __pyx_n_s_IMMUTABLE_EMPTY_METADATA); if (unlikely(!__pyx_t_7)) __PYX_ERR(10, 755, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_7);

    /* "src/python/grpcio/grpc/_cython/_cygrpc/aio/server.pyx.pxi":756
 *             'Method not found!',
 *             _IMMUTABLE_EMPTY_METADATA,
 *             rpc_state.create_send_initial_metadata_op_if_not_sent(),             # <<<<<<<<<<<<<<
 *             loop
 *         )
 */
    __pyx_t_4 = ((PyObject *)((struct __pyx_vtabstruct_4grpc_7_cython_6cygrpc_RPCState *)__pyx_cur_scope->__pyx_v_rpc_state->__pyx_vtab)->create_send_initial_metadata_op_if_not_sent(__pyx_cur_scope->__pyx_v_rpc_state)); if (unlikely(!__pyx_t_4)) __PYX_ERR(10, 756, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_4);

    /* "src/python/grpcio/grpc/_cython/_cygrpc/aio/server.pyx.pxi":757
 *             _IMMUTABLE_EMPTY_METADATA,
 *             rpc_state.create_send_initial_metadata_op_if_not_sent(),
 *             loop             # <<<<<<<<<<<<<<
 *         )
 *         return
 */
    __pyx_t_5 = NULL;
    __pyx_t_6 = 0;
    if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_2))) {
      __pyx_t_5 = PyMethod_GET_SELF(__pyx_t_2);
      if (likely(__pyx_t_5)) {
        PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_2);
        __Pyx_INCREF(__pyx_t_5);
        __Pyx_INCREF(function);
        __Pyx_DECREF_SET(__pyx_t_2, function);
        __pyx_t_6 = 1;
      }
    }
    #if CYTHON_FAST_PYCALL
    if (PyFunction_Check(__pyx_t_2)) {
      PyObject *__pyx_temp[7] = {__pyx_t_5, ((PyObject *)__pyx_cur_scope->__pyx_v_rpc_state), __pyx_t_3, __pyx_kp_s_Method_not_found, __pyx_t_7, __pyx_t_4, __pyx_cur_scope->__pyx_v_loop};
      __pyx_t_1 = __Pyx_PyFunction_FastCall(__pyx_t_2, __pyx_temp+1-__pyx_t_6, 6+__pyx_t_6); if (unlikely(!__pyx_t_1)) __PYX_ERR(10, 751, __pyx_L1_error)
      __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0;
      __Pyx_GOTREF(__pyx_t_1);
      __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
      __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
      __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
    } else
    #endif
    #if CYTHON_FAST_PYCCALL
    if (__Pyx_PyFastCFunction_Check(__pyx_t_2)) {
      PyObject *__pyx_temp[7] = {__pyx_t_5, ((PyObject *)__pyx_cur_scope->__pyx_v_rpc_state), __pyx_t_3, __pyx_kp_s_Method_not_found, __pyx_t_7, __pyx_t_4, __pyx_cur_scope->__pyx_v_loop};
      __pyx_t_1 = __Pyx_PyCFunction_FastCall(__pyx_t_2, __pyx_temp+1-__pyx_t_6, 6+__pyx_t_6); if (unlikely(!__pyx_t_1)) __PYX_ERR(10, 751, __pyx_L1_error)
      __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0;
      __Pyx_GOTREF(__pyx_t_1);
      __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
      __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
      __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
    } else
    #endif
    {
      __pyx_t_10 = PyTuple_New(6+__pyx_t_6); if (unlikely(!__pyx_t_10)) __PYX_ERR(10, 751, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_10);
      if (__pyx_t_5) {
        __Pyx_GIVEREF(__pyx_t_5); PyTuple_SET_ITEM(__pyx_t_10, 0, __pyx_t_5); __pyx_t_5 = NULL;
      }
      __Pyx_INCREF(((PyObject *)__pyx_cur_scope->__pyx_v_rpc_state));
      __Pyx_GIVEREF(((PyObject *)__pyx_cur_scope->__pyx_v_rpc_state));
      PyTuple_SET_ITEM(__pyx_t_10, 0+__pyx_t_6, ((PyObject *)__pyx_cur_scope->__pyx_v_rpc_state));
      __Pyx_GIVEREF(__pyx_t_3);
      PyTuple_SET_ITEM(__pyx_t_10, 1+__pyx_t_6, __pyx_t_3);
      __Pyx_INCREF(__pyx_kp_s_Method_not_found);
      __Pyx_GIVEREF(__pyx_kp_s_Method_not_found);
      PyTuple_SET_ITEM(__pyx_t_10, 2+__pyx_t_6, __pyx_kp_s_Method_not_found);
      __Pyx_GIVEREF(__pyx_t_7);
      PyTuple_SET_ITEM(__pyx_t_10, 3+__pyx_t_6, __pyx_t_7);
      __Pyx_GIVEREF(__pyx_t_4);
      PyTuple_SET_ITEM(__pyx_t_10, 4+__pyx_t_6, __pyx_t_4);
      __Pyx_INCREF(__pyx_cur_scope->__pyx_v_loop);
      __Pyx_GIVEREF(__pyx_cur_scope->__pyx_v_loop);
      PyTuple_SET_ITEM(__pyx_t_10, 5+__pyx_t_6, __pyx_cur_scope->__pyx_v_loop);
      __pyx_t_3 = 0;
      __pyx_t_7 = 0;
      __pyx_t_4 = 0;
      __pyx_t_1 = __Pyx_PyObject_Call(__pyx_t_2, __pyx_t_10, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(10, 751, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_1);
      __Pyx_DECREF(__pyx_t_10); __pyx_t_10 = 0;
    }
    __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
    __pyx_r = __Pyx_Coroutine_Yield_From(__pyx_generator, __pyx_t_1);
    __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
    __Pyx_XGOTREF(__pyx_r);
    if (likely(__pyx_r)) {
      __Pyx_XGIVEREF(__pyx_r);
      __Pyx_RefNannyFinishContext();
      __Pyx_Coroutine_ResetAndClearException(__pyx_generator);
      /* return from generator, awaiting value */
      __pyx_generator->resume_label = 2;
      return __pyx_r;
      __pyx_L6_resume_from_await:;
      if (unlikely(!__pyx_sent_value)) __PYX_ERR(10, 751, __pyx_L1_error)
    } else {
      PyObject* exc_type = __Pyx_PyErr_Occurred();
      if (exc_type) {
        if (likely(exc_type == PyExc_StopIteration || (exc_type != PyExc_GeneratorExit && __Pyx_PyErr_GivenExceptionMatches(exc_type, PyExc_StopIteration)))) PyErr_Clear();
        else __PYX_ERR(10, 751, __pyx_L1_error)
      }
    }

    /* "src/python/grpcio/grpc/_cython/_cygrpc/aio/server.pyx.pxi":759
 *             loop
 *         )
 *         return             # <<<<<<<<<<<<<<
 * 
 *     # Handles unary-unary case
 */
    __Pyx_XDECREF(__pyx_r);
    __pyx_r = NULL;
    goto __pyx_L0;

    /* "src/python/grpcio/grpc/_cython/_cygrpc/aio/server.pyx.pxi":749
 *         interceptors,
 *     )
 *     if method_handler is None:             # <<<<<<<<<<<<<<
 *         rpc_state.status_sent = True
 *         await _send_error_status_from_server(
 */
  }

  /* "src/python/grpcio/grpc/_cython/_cygrpc/aio/server.pyx.pxi":762
 * 
 *     # Handles unary-unary case
 *     if not method_handler.request_streaming and not method_handler.response_streaming:             # <<<<<<<<<<<<<<
 *         await _handle_unary_unary_rpc(method_handler,
 *                                       rpc_state,
 */
  __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_cur_scope->__pyx_v_method_handler, __pyx_n_s_request_streaming); if (unlikely(!__pyx_t_1)) __PYX_ERR(10, 762, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_t_8 = __Pyx_PyObject_IsTrue(__pyx_t_1); if (unlikely(__pyx_t_8 < 0)) __PYX_ERR(10, 762, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  __pyx_t_11 = ((!__pyx_t_8) != 0);
  if (__pyx_t_11) {
  } else {
    __pyx_t_9 = __pyx_t_11;
    goto __pyx_L8_bool_binop_done;
  }
  __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_cur_scope->__pyx_v_method_handler, __pyx_n_s_response_streaming); if (unlikely(!__pyx_t_1)) __PYX_ERR(10, 762, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_t_11 = __Pyx_PyObject_IsTrue(__pyx_t_1); if (unlikely(__pyx_t_11 < 0)) __PYX_ERR(10, 762, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  __pyx_t_8 = ((!__pyx_t_11) != 0);
  __pyx_t_9 = __pyx_t_8;
  __pyx_L8_bool_binop_done:;
  if (__pyx_t_9) {

    /* "src/python/grpcio/grpc/_cython/_cygrpc/aio/server.pyx.pxi":763
 *     # Handles unary-unary case
 *     if not method_handler.request_streaming and not method_handler.response_streaming:
 *         await _handle_unary_unary_rpc(method_handler,             # <<<<<<<<<<<<<<
 *                                       rpc_state,
 *                                       loop)
 */
    __Pyx_GetModuleGlobalName(__pyx_t_2, __pyx_n_s_handle_unary_unary_rpc); if (unlikely(!__pyx_t_2)) __PYX_ERR(10, 763, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_2);

    /* "src/python/grpcio/grpc/_cython/_cygrpc/aio/server.pyx.pxi":765
 *         await _handle_unary_unary_rpc(method_handler,
 *                                       rpc_state,
 *                                       loop)             # <<<<<<<<<<<<<<
 *         return
 * 
 */
    __pyx_t_10 = NULL;
    __pyx_t_6 = 0;
    if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_2))) {
      __pyx_t_10 = PyMethod_GET_SELF(__pyx_t_2);
      if (likely(__pyx_t_10)) {
        PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_2);
        __Pyx_INCREF(__pyx_t_10);
        __Pyx_INCREF(function);
        __Pyx_DECREF_SET(__pyx_t_2, function);
        __pyx_t_6 = 1;
      }
    }
    #if CYTHON_FAST_PYCALL
    if (PyFunction_Check(__pyx_t_2)) {
      PyObject *__pyx_temp[4] = {__pyx_t_10, __pyx_cur_scope->__pyx_v_method_handler, ((PyObject *)__pyx_cur_scope->__pyx_v_rpc_state), __pyx_cur_scope->__pyx_v_loop};
      __pyx_t_1 = __Pyx_PyFunction_FastCall(__pyx_t_2, __pyx_temp+1-__pyx_t_6, 3+__pyx_t_6); if (unlikely(!__pyx_t_1)) __PYX_ERR(10, 763, __pyx_L1_error)
      __Pyx_XDECREF(__pyx_t_10); __pyx_t_10 = 0;
      __Pyx_GOTREF(__pyx_t_1);
    } else
    #endif
    #if CYTHON_FAST_PYCCALL
    if (__Pyx_PyFastCFunction_Check(__pyx_t_2)) {
      PyObject *__pyx_temp[4] = {__pyx_t_10, __pyx_cur_scope->__pyx_v_method_handler, ((PyObject *)__pyx_cur_scope->__pyx_v_rpc_state), __pyx_cur_scope->__pyx_v_loop};
      __pyx_t_1 = __Pyx_PyCFunction_FastCall(__pyx_t_2, __pyx_temp+1-__pyx_t_6, 3+__pyx_t_6); if (unlikely(!__pyx_t_1)) __PYX_ERR(10, 763, __pyx_L1_error)
      __Pyx_XDECREF(__pyx_t_10); __pyx_t_10 = 0;
      __Pyx_GOTREF(__pyx_t_1);
    } else
    #endif
    {
      __pyx_t_4 = PyTuple_New(3+__pyx_t_6); if (unlikely(!__pyx_t_4)) __PYX_ERR(10, 763, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_4);
      if (__pyx_t_10) {
        __Pyx_GIVEREF(__pyx_t_10); PyTuple_SET_ITEM(__pyx_t_4, 0, __pyx_t_10); __pyx_t_10 = NULL;
      }
      __Pyx_INCREF(__pyx_cur_scope->__pyx_v_method_handler);
      __Pyx_GIVEREF(__pyx_cur_scope->__pyx_v_method_handler);
      PyTuple_SET_ITEM(__pyx_t_4, 0+__pyx_t_6, __pyx_cur_scope->__pyx_v_method_handler);
      __Pyx_INCREF(((PyObject *)__pyx_cur_scope->__pyx_v_rpc_state));
      __Pyx_GIVEREF(((PyObject *)__pyx_cur_scope->__pyx_v_rpc_state));
      PyTuple_SET_ITEM(__pyx_t_4, 1+__pyx_t_6, ((PyObject *)__pyx_cur_scope->__pyx_v_rpc_state));
      __Pyx_INCREF(__pyx_cur_scope->__pyx_v_loop);
      __Pyx_GIVEREF(__pyx_cur_scope->__pyx_v_loop);
      PyTuple_SET_ITEM(__pyx_t_4, 2+__pyx_t_6, __pyx_cur_scope->__pyx_v_loop);
      __pyx_t_1 = __Pyx_PyObject_Call(__pyx_t_2, __pyx_t_4, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(10, 763, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_1);
      __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
    }
    __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
    __pyx_r = __Pyx_Coroutine_Yield_From(__pyx_generator, __pyx_t_1);
    __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
    __Pyx_XGOTREF(__pyx_r);
    if (likely(__pyx_r)) {
      __Pyx_XGIVEREF(__pyx_r);
      __Pyx_RefNannyFinishContext();
      __Pyx_Coroutine_ResetAndClearException(__pyx_generator);
      /* return from generator, awaiting value */
      __pyx_generator->resume_label = 3;
      return __pyx_r;
      __pyx_L10_resume_from_await:;
      if (unlikely(!__pyx_sent_value)) __PYX_ERR(10, 763, __pyx_L1_error)
    } else {
      PyObject* exc_type = __Pyx_PyErr_Occurred();
      if (exc_type) {
        if (likely(exc_type == PyExc_StopIteration || (exc_type != PyExc_GeneratorExit && __Pyx_PyErr_GivenExceptionMatches(exc_type, PyExc_StopIteration)))) PyErr_Clear();
        else __PYX_ERR(10, 763, __pyx_L1_error)
      }
    }

    /* "src/python/grpcio/grpc/_cython/_cygrpc/aio/server.pyx.pxi":766
 *                                       rpc_state,
 *                                       loop)
 *         return             # <<<<<<<<<<<<<<
 * 
 *     # Handles unary-stream case
 */
    __Pyx_XDECREF(__pyx_r);
    __pyx_r = NULL;
    goto __pyx_L0;

    /* "src/python/grpcio/grpc/_cython/_cygrpc/aio/server.pyx.pxi":762
 * 
 *     # Handles unary-unary case
 *     if not method_handler.request_streaming and not method_handler.response_streaming:             # <<<<<<<<<<<<<<
 *         await _handle_unary_unary_rpc(method_handler,
 *                                       rpc_state,
 */
  }

  /* "src/python/grpcio/grpc/_cython/_cygrpc/aio/server.pyx.pxi":769
 * 
 *     # Handles unary-stream case
 *     if not method_handler.request_streaming and method_handler.response_streaming:             # <<<<<<<<<<<<<<
 *         await _handle_unary_stream_rpc(method_handler,
 *                                        rpc_state,
 */
  __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_cur_scope->__pyx_v_method_handler, __pyx_n_s_request_streaming); if (unlikely(!__pyx_t_1)) __PYX_ERR(10, 769, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_t_8 = __Pyx_PyObject_IsTrue(__pyx_t_1); if (unlikely(__pyx_t_8 < 0)) __PYX_ERR(10, 769, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  __pyx_t_11 = ((!__pyx_t_8) != 0);
  if (__pyx_t_11) {
  } else {
    __pyx_t_9 = __pyx_t_11;
    goto __pyx_L12_bool_binop_done;
  }
  __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_cur_scope->__pyx_v_method_handler, __pyx_n_s_response_streaming); if (unlikely(!__pyx_t_1)) __PYX_ERR(10, 769, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_t_11 = __Pyx_PyObject_IsTrue(__pyx_t_1); if (unlikely(__pyx_t_11 < 0)) __PYX_ERR(10, 769, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  __pyx_t_9 = __pyx_t_11;
  __pyx_L12_bool_binop_done:;
  if (__pyx_t_9) {

    /* "src/python/grpcio/grpc/_cython/_cygrpc/aio/server.pyx.pxi":770
 *     # Handles unary-stream case
 *     if not method_handler.request_streaming and method_handler.response_streaming:
 *         await _handle_unary_stream_rpc(method_handler,             # <<<<<<<<<<<<<<
 *                                        rpc_state,
 *                                        loop)
 */
    __Pyx_GetModuleGlobalName(__pyx_t_2, __pyx_n_s_handle_unary_stream_rpc); if (unlikely(!__pyx_t_2)) __PYX_ERR(10, 770, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_2);

    /* "src/python/grpcio/grpc/_cython/_cygrpc/aio/server.pyx.pxi":772
 *         await _handle_unary_stream_rpc(method_handler,
 *                                        rpc_state,
 *                                        loop)             # <<<<<<<<<<<<<<
 *         return
 * 
 */
    __pyx_t_4 = NULL;
    __pyx_t_6 = 0;
    if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_2))) {
      __pyx_t_4 = PyMethod_GET_SELF(__pyx_t_2);
      if (likely(__pyx_t_4)) {
        PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_2);
        __Pyx_INCREF(__pyx_t_4);
        __Pyx_INCREF(function);
        __Pyx_DECREF_SET(__pyx_t_2, function);
        __pyx_t_6 = 1;
      }
    }
    #if CYTHON_FAST_PYCALL
    if (PyFunction_Check(__pyx_t_2)) {
      PyObject *__pyx_temp[4] = {__pyx_t_4, __pyx_cur_scope->__pyx_v_method_handler, ((PyObject *)__pyx_cur_scope->__pyx_v_rpc_state), __pyx_cur_scope->__pyx_v_loop};
      __pyx_t_1 = __Pyx_PyFunction_FastCall(__pyx_t_2, __pyx_temp+1-__pyx_t_6, 3+__pyx_t_6); if (unlikely(!__pyx_t_1)) __PYX_ERR(10, 770, __pyx_L1_error)
      __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0;
      __Pyx_GOTREF(__pyx_t_1);
    } else
    #endif
    #if CYTHON_FAST_PYCCALL
    if (__Pyx_PyFastCFunction_Check(__pyx_t_2)) {
      PyObject *__pyx_temp[4] = {__pyx_t_4, __pyx_cur_scope->__pyx_v_method_handler, ((PyObject *)__pyx_cur_scope->__pyx_v_rpc_state), __pyx_cur_scope->__pyx_v_loop};
      __pyx_t_1 = __Pyx_PyCFunction_FastCall(__pyx_t_2, __pyx_temp+1-__pyx_t_6, 3+__pyx_t_6); if (unlikely(!__pyx_t_1)) __PYX_ERR(10, 770, __pyx_L1_error)
      __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0;
      __Pyx_GOTREF(__pyx_t_1);
    } else
    #endif
    {
      __pyx_t_10 = PyTuple_New(3+__pyx_t_6); if (unlikely(!__pyx_t_10)) __PYX_ERR(10, 770, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_10);
      if (__pyx_t_4) {
        __Pyx_GIVEREF(__pyx_t_4); PyTuple_SET_ITEM(__pyx_t_10, 0, __pyx_t_4); __pyx_t_4 = NULL;
      }
      __Pyx_INCREF(__pyx_cur_scope->__pyx_v_method_handler);
      __Pyx_GIVEREF(__pyx_cur_scope->__pyx_v_method_handler);
      PyTuple_SET_ITEM(__pyx_t_10, 0+__pyx_t_6, __pyx_cur_scope->__pyx_v_method_handler);
      __Pyx_INCREF(((PyObject *)__pyx_cur_scope->__pyx_v_rpc_state));
      __Pyx_GIVEREF(((PyObject *)__pyx_cur_scope->__pyx_v_rpc_state));
      PyTuple_SET_ITEM(__pyx_t_10, 1+__pyx_t_6, ((PyObject *)__pyx_cur_scope->__pyx_v_rpc_state));
      __Pyx_INCREF(__pyx_cur_scope->__pyx_v_loop);
      __Pyx_GIVEREF(__pyx_cur_scope->__pyx_v_loop);
      PyTuple_SET_ITEM(__pyx_t_10, 2+__pyx_t_6, __pyx_cur_scope->__pyx_v_loop);
      __pyx_t_1 = __Pyx_PyObject_Call(__pyx_t_2, __pyx_t_10, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(10, 770, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_1);
      __Pyx_DECREF(__pyx_t_10); __pyx_t_10 = 0;
    }
    __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
    __pyx_r = __Pyx_Coroutine_Yield_From(__pyx_generator, __pyx_t_1);
    __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
    __Pyx_XGOTREF(__pyx_r);
    if (likely(__pyx_r)) {
      __Pyx_XGIVEREF(__pyx_r);
      __Pyx_RefNannyFinishContext();
      __Pyx_Coroutine_ResetAndClearException(__pyx_generator);
      /* return from generator, awaiting value */
      __pyx_generator->resume_label = 4;
      return __pyx_r;
      __pyx_L14_resume_from_await:;
      if (unlikely(!__pyx_sent_value)) __PYX_ERR(10, 770, __pyx_L1_error)
    } else {
      PyObject* exc_type = __Pyx_PyErr_Occurred();
      if (exc_type) {
        if (likely(exc_type == PyExc_StopIteration || (exc_type != PyExc_GeneratorExit && __Pyx_PyErr_GivenExceptionMatches(exc_type, PyExc_StopIteration)))) PyErr_Clear();
        else __PYX_ERR(10, 770, __pyx_L1_error)
      }
    }

    /* "src/python/grpcio/grpc/_cython/_cygrpc/aio/server.pyx.pxi":773
 *                                        rpc_state,
 *                                        loop)
 *         return             # <<<<<<<<<<<<<<
 * 
 *     # Handles stream-unary case
 */
    __Pyx_XDECREF(__pyx_r);
    __pyx_r = NULL;
    goto __pyx_L0;

    /* "src/python/grpcio/grpc/_cython/_cygrpc/aio/server.pyx.pxi":769
 * 
 *     # Handles unary-stream case
 *     if not method_handler.request_streaming and method_handler.response_streaming:             # <<<<<<<<<<<<<<
 *         await _handle_unary_stream_rpc(method_handler,
 *                                        rpc_state,
 */
  }

  /* "src/python/grpcio/grpc/_cython/_cygrpc/aio/server.pyx.pxi":776
 * 
 *     # Handles stream-unary case
 *     if method_handler.request_streaming and not method_handler.response_streaming:             # <<<<<<<<<<<<<<
 *         await _handle_stream_unary_rpc(method_handler,
 *                                        rpc_state,
 */
  __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_cur_scope->__pyx_v_method_handler, __pyx_n_s_request_streaming); if (unlikely(!__pyx_t_1)) __PYX_ERR(10, 776, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_t_11 = __Pyx_PyObject_IsTrue(__pyx_t_1); if (unlikely(__pyx_t_11 < 0)) __PYX_ERR(10, 776, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  if (__pyx_t_11) {
  } else {
    __pyx_t_9 = __pyx_t_11;
    goto __pyx_L16_bool_binop_done;
  }
  __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_cur_scope->__pyx_v_method_handler, __pyx_n_s_response_streaming); if (unlikely(!__pyx_t_1)) __PYX_ERR(10, 776, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_t_11 = __Pyx_PyObject_IsTrue(__pyx_t_1); if (unlikely(__pyx_t_11 < 0)) __PYX_ERR(10, 776, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  __pyx_t_8 = ((!__pyx_t_11) != 0);
  __pyx_t_9 = __pyx_t_8;
  __pyx_L16_bool_binop_done:;
  if (__pyx_t_9) {

    /* "src/python/grpcio/grpc/_cython/_cygrpc/aio/server.pyx.pxi":777
 *     # Handles stream-unary case
 *     if method_handler.request_streaming and not method_handler.response_streaming:
 *         await _handle_stream_unary_rpc(method_handler,             # <<<<<<<<<<<<<<
 *                                        rpc_state,
 *                                        loop)
 */
    __Pyx_GetModuleGlobalName(__pyx_t_2, __pyx_n_s_handle_stream_unary_rpc); if (unlikely(!__pyx_t_2)) __PYX_ERR(10, 777, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_2);

    /* "src/python/grpcio/grpc/_cython/_cygrpc/aio/server.pyx.pxi":779
 *         await _handle_stream_unary_rpc(method_handler,
 *                                        rpc_state,
 *                                        loop)             # <<<<<<<<<<<<<<
 *         return
 * 
 */
    __pyx_t_10 = NULL;
    __pyx_t_6 = 0;
    if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_2))) {
      __pyx_t_10 = PyMethod_GET_SELF(__pyx_t_2);
      if (likely(__pyx_t_10)) {
        PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_2);
        __Pyx_INCREF(__pyx_t_10);
        __Pyx_INCREF(function);
        __Pyx_DECREF_SET(__pyx_t_2, function);
        __pyx_t_6 = 1;
      }
    }
    #if CYTHON_FAST_PYCALL
    if (PyFunction_Check(__pyx_t_2)) {
      PyObject *__pyx_temp[4] = {__pyx_t_10, __pyx_cur_scope->__pyx_v_method_handler, ((PyObject *)__pyx_cur_scope->__pyx_v_rpc_state), __pyx_cur_scope->__pyx_v_loop};
      __pyx_t_1 = __Pyx_PyFunction_FastCall(__pyx_t_2, __pyx_temp+1-__pyx_t_6, 3+__pyx_t_6); if (unlikely(!__pyx_t_1)) __PYX_ERR(10, 777, __pyx_L1_error)
      __Pyx_XDECREF(__pyx_t_10); __pyx_t_10 = 0;
      __Pyx_GOTREF(__pyx_t_1);
    } else
    #endif
    #if CYTHON_FAST_PYCCALL
    if (__Pyx_PyFastCFunction_Check(__pyx_t_2)) {
      PyObject *__pyx_temp[4] = {__pyx_t_10, __pyx_cur_scope->__pyx_v_method_handler, ((PyObject *)__pyx_cur_scope->__pyx_v_rpc_state), __pyx_cur_scope->__pyx_v_loop};
      __pyx_t_1 = __Pyx_PyCFunction_FastCall(__pyx_t_2, __pyx_temp+1-__pyx_t_6, 3+__pyx_t_6); if (unlikely(!__pyx_t_1)) __PYX_ERR(10, 777, __pyx_L1_error)
      __Pyx_XDECREF(__pyx_t_10); __pyx_t_10 = 0;
      __Pyx_GOTREF(__pyx_t_1);
    } else
    #endif
    {
      __pyx_t_4 = PyTuple_New(3+__pyx_t_6); if (unlikely(!__pyx_t_4)) __PYX_ERR(10, 777, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_4);
      if (__pyx_t_10) {
        __Pyx_GIVEREF(__pyx_t_10); PyTuple_SET_ITEM(__pyx_t_4, 0, __pyx_t_10); __pyx_t_10 = NULL;
      }
      __Pyx_INCREF(__pyx_cur_scope->__pyx_v_method_handler);
      __Pyx_GIVEREF(__pyx_cur_scope->__pyx_v_method_handler);
      PyTuple_SET_ITEM(__pyx_t_4, 0+__pyx_t_6, __pyx_cur_scope->__pyx_v_method_handler);
      __Pyx_INCREF(((PyObject *)__pyx_cur_scope->__pyx_v_rpc_state));
      __Pyx_GIVEREF(((PyObject *)__pyx_cur_scope->__pyx_v_rpc_state));
      PyTuple_SET_ITEM(__pyx_t_4, 1+__pyx_t_6, ((PyObject *)__pyx_cur_scope->__pyx_v_rpc_state));
      __Pyx_INCREF(__pyx_cur_scope->__pyx_v_loop);
      __Pyx_GIVEREF(__pyx_cur_scope->__pyx_v_loop);
      PyTuple_SET_ITEM(__pyx_t_4, 2+__pyx_t_6, __pyx_cur_scope->__pyx_v_loop);
      __pyx_t_1 = __Pyx_PyObject_Call(__pyx_t_2, __pyx_t_4, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(10, 777, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_1);
      __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
    }
    __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
    __pyx_r = __Pyx_Coroutine_Yield_From(__pyx_generator, __pyx_t_1);
    __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
    __Pyx_XGOTREF(__pyx_r);
    if (likely(__pyx_r)) {
      __Pyx_XGIVEREF(__pyx_r);
      __Pyx_RefNannyFinishContext();
      __Pyx_Coroutine_ResetAndClearException(__pyx_generator);
      /* return from generator, awaiting value */
      __pyx_generator->resume_label = 5;
      return __pyx_r;
      __pyx_L18_resume_from_await:;
      if (unlikely(!__pyx_sent_value)) __PYX_ERR(10, 777, __pyx_L1_error)
    } else {
      PyObject* exc_type = __Pyx_PyErr_Occurred();
      if (exc_type) {
        if (likely(exc_type == PyExc_StopIteration || (exc_type != PyExc_GeneratorExit && __Pyx_PyErr_GivenExceptionMatches(exc_type, PyExc_StopIteration)))) PyErr_Clear();
        else __PYX_ERR(10, 777, __pyx_L1_error)
      }
    }

    /* "src/python/grpcio/grpc/_cython/_cygrpc/aio/server.pyx.pxi":780
 *                                        rpc_state,
 *                                        loop)
 *         return             # <<<<<<<<<<<<<<
 * 
 *     # Handles stream-stream case
 */
    __Pyx_XDECREF(__pyx_r);
    __pyx_r = NULL;
    goto __pyx_L0;

    /* "src/python/grpcio/grpc/_cython/_cygrpc/aio/server.pyx.pxi":776
 * 
 *     # Handles stream-unary case
 *     if method_handler.request_streaming and not method_handler.response_streaming:             # <<<<<<<<<<<<<<
 *         await _handle_stream_unary_rpc(method_handler,
 *                                        rpc_state,
 */
  }

  /* "src/python/grpcio/grpc/_cython/_cygrpc/aio/server.pyx.pxi":783
 * 
 *     # Handles stream-stream case
 *     if method_handler.request_streaming and method_handler.response_streaming:             # <<<<<<<<<<<<<<
 *         await _handle_stream_stream_rpc(method_handler,
 *                                         rpc_state,
 */
  __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_cur_scope->__pyx_v_method_handler, __pyx_n_s_request_streaming); if (unlikely(!__pyx_t_1)) __PYX_ERR(10, 783, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_t_8 = __Pyx_PyObject_IsTrue(__pyx_t_1); if (unlikely(__pyx_t_8 < 0)) __PYX_ERR(10, 783, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  if (__pyx_t_8) {
  } else {
    __pyx_t_9 = __pyx_t_8;
    goto __pyx_L20_bool_binop_done;
  }
  __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_cur_scope->__pyx_v_method_handler, __pyx_n_s_response_streaming); if (unlikely(!__pyx_t_1)) __PYX_ERR(10, 783, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_t_8 = __Pyx_PyObject_IsTrue(__pyx_t_1); if (unlikely(__pyx_t_8 < 0)) __PYX_ERR(10, 783, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  __pyx_t_9 = __pyx_t_8;
  __pyx_L20_bool_binop_done:;
  if (__pyx_t_9) {

    /* "src/python/grpcio/grpc/_cython/_cygrpc/aio/server.pyx.pxi":784
 *     # Handles stream-stream case
 *     if method_handler.request_streaming and method_handler.response_streaming:
 *         await _handle_stream_stream_rpc(method_handler,             # <<<<<<<<<<<<<<
 *                                         rpc_state,
 *                                         loop)
 */
    __Pyx_GetModuleGlobalName(__pyx_t_2, __pyx_n_s_handle_stream_stream_rpc); if (unlikely(!__pyx_t_2)) __PYX_ERR(10, 784, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_2);

    /* "src/python/grpcio/grpc/_cython/_cygrpc/aio/server.pyx.pxi":786
 *         await _handle_stream_stream_rpc(method_handler,
 *                                         rpc_state,
 *                                         loop)             # <<<<<<<<<<<<<<
 *         return
 * 
 */
    __pyx_t_4 = NULL;
    __pyx_t_6 = 0;
    if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_2))) {
      __pyx_t_4 = PyMethod_GET_SELF(__pyx_t_2);
      if (likely(__pyx_t_4)) {
        PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_2);
        __Pyx_INCREF(__pyx_t_4);
        __Pyx_INCREF(function);
        __Pyx_DECREF_SET(__pyx_t_2, function);
        __pyx_t_6 = 1;
      }
    }
    #if CYTHON_FAST_PYCALL
    if (PyFunction_Check(__pyx_t_2)) {
      PyObject *__pyx_temp[4] = {__pyx_t_4, __pyx_cur_scope->__pyx_v_method_handler, ((PyObject *)__pyx_cur_scope->__pyx_v_rpc_state), __pyx_cur_scope->__pyx_v_loop};
      __pyx_t_1 = __Pyx_PyFunction_FastCall(__pyx_t_2, __pyx_temp+1-__pyx_t_6, 3+__pyx_t_6); if (unlikely(!__pyx_t_1)) __PYX_ERR(10, 784, __pyx_L1_error)
      __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0;
      __Pyx_GOTREF(__pyx_t_1);
    } else
    #endif
    #if CYTHON_FAST_PYCCALL
    if (__Pyx_PyFastCFunction_Check(__pyx_t_2)) {
      PyObject *__pyx_temp[4] = {__pyx_t_4, __pyx_cur_scope->__pyx_v_method_handler, ((PyObject *)__pyx_cur_scope->__pyx_v_rpc_state), __pyx_cur_scope->__pyx_v_loop};
      __pyx_t_1 = __Pyx_PyCFunction_FastCall(__pyx_t_2, __pyx_temp+1-__pyx_t_6, 3+__pyx_t_6); if (unlikely(!__pyx_t_1)) __PYX_ERR(10, 784, __pyx_L1_error)
      __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0;
      __Pyx_GOTREF(__pyx_t_1);
    } else
    #endif
    {
      __pyx_t_10 = PyTuple_New(3+__pyx_t_6); if (unlikely(!__pyx_t_10)) __PYX_ERR(10, 784, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_10);
      if (__pyx_t_4) {
        __Pyx_GIVEREF(__pyx_t_4); PyTuple_SET_ITEM(__pyx_t_10, 0, __pyx_t_4); __pyx_t_4 = NULL;
      }
      __Pyx_INCREF(__pyx_cur_scope->__pyx_v_method_handler);
      __Pyx_GIVEREF(__pyx_cur_scope->__pyx_v_method_handler);
      PyTuple_SET_ITEM(__pyx_t_10, 0+__pyx_t_6, __pyx_cur_scope->__pyx_v_method_handler);
      __Pyx_INCREF(((PyObject *)__pyx_cur_scope->__pyx_v_rpc_state));
      __Pyx_GIVEREF(((PyObject *)__pyx_cur_scope->__pyx_v_rpc_state));
      PyTuple_SET_ITEM(__pyx_t_10, 1+__pyx_t_6, ((PyObject *)__pyx_cur_scope->__pyx_v_rpc_state));
      __Pyx_INCREF(__pyx_cur_scope->__pyx_v_loop);
      __Pyx_GIVEREF(__pyx_cur_scope->__pyx_v_loop);
      PyTuple_SET_ITEM(__pyx_t_10, 2+__pyx_t_6, __pyx_cur_scope->__pyx_v_loop);
      __pyx_t_1 = __Pyx_PyObject_Call(__pyx_t_2, __pyx_t_10, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(10, 784, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_1);
      __Pyx_DECREF(__pyx_t_10); __pyx_t_10 = 0;
    }
    __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
    __pyx_r = __Pyx_Coroutine_Yield_From(__pyx_generator, __pyx_t_1);
    __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
    __Pyx_XGOTREF(__pyx_r);
    if (likely(__pyx_r)) {
      __Pyx_XGIVEREF(__pyx_r);
      __Pyx_RefNannyFinishContext();
      __Pyx_Coroutine_ResetAndClearException(__pyx_generator);
      /* return from generator, awaiting value */
      __pyx_generator->resume_label = 6;
      return __pyx_r;
      __pyx_L22_resume_from_await:;
      if (unlikely(!__pyx_sent_value)) __PYX_ERR(10, 784, __pyx_L1_error)
    } else {
      PyObject* exc_type = __Pyx_PyErr_Occurred();
      if (exc_type) {
        if (likely(exc_type == PyExc_StopIteration || (exc_type != PyExc_GeneratorExit && __Pyx_PyErr_GivenExceptionMatches(exc_type, PyExc_StopIteration)))) PyErr_Clear();
        else __PYX_ERR(10, 784, __pyx_L1_error)
      }
    }

    /* "src/python/grpcio/grpc/_cython/_cygrpc/aio/server.pyx.pxi":787
 *                                         rpc_state,
 *                                         loop)
 *         return             # <<<<<<<<<<<<<<
 * 
 * 
 */
    __Pyx_XDECREF(__pyx_r);
    __pyx_r = NULL;
    goto __pyx_L0;

    /* "src/python/grpcio/grpc/_cython/_cygrpc/aio/server.pyx.pxi":783
 * 
 *     # Handles stream-stream case
 *     if method_handler.request_streaming and method_handler.response_streaming:             # <<<<<<<<<<<<<<
 *         await _handle_stream_stream_rpc(method_handler,
 *                                         rpc_state,
 */
  }
  CYTHON_MAYBE_UNUSED_VAR(__pyx_cur_scope);

  /* "src/python/grpcio/grpc/_cython/_cygrpc/aio/server.pyx.pxi":739
 * 
 * 
 * async def _handle_rpc(list generic_handlers, tuple interceptors,             # <<<<<<<<<<<<<<
 *                       RPCState rpc_state, object loop):
 *     cdef object method_handler
 */

  /* function exit code */
  PyErr_SetNone(PyExc_StopIteration);
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_XDECREF(__pyx_t_3);
  __Pyx_XDECREF(__pyx_t_4);
  __Pyx_XDECREF(__pyx_t_5);
  __Pyx_XDECREF(__pyx_t_7);
  __Pyx_XDECREF(__pyx_t_10);
  __Pyx_AddTraceback("_handle_rpc", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_L0:;
  __Pyx_XDECREF(__pyx_r); __pyx_r = 0;
  #if !CYTHON_USE_EXC_INFO_STACK
  __Pyx_Coroutine_ResetAndClearException(__pyx_generator);
  #endif
  __pyx_generator->resume_label = -1;
  __Pyx_Coroutine_clear((PyObject*)__pyx_generator);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "src/python/grpcio/grpc/_cython/_cygrpc/aio/server.pyx.pxi":804
 * cdef class _ConcurrentRpcLimiter:
 * 
 *     def __cinit__(self, int maximum_concurrent_rpcs, object loop):             # <<<<<<<<<<<<<<
 *         if maximum_concurrent_rpcs <= 0:
 *             raise ValueError("maximum_concurrent_rpcs should be a postive integer")
 */

/* Python wrapper */
static int __pyx_pw_4grpc_7_cython_6cygrpc_21_ConcurrentRpcLimiter_1__cinit__(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
static int __pyx_pw_4grpc_7_cython_6cygrpc_21_ConcurrentRpcLimiter_1__cinit__(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
  int __pyx_v_maximum_concurrent_rpcs;
  PyObject *__pyx_v_loop = 0;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  int __pyx_r;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__cinit__ (wrapper)", 0);
  {
    static PyObject **__pyx_pyargnames[] = {&__pyx_n_s_maximum_concurrent_rpcs,&__pyx_n_s_loop,0};
    PyObject* values[2] = {0,0};
    if (unlikely(__pyx_kwds)) {
      Py_ssize_t kw_args;
      const Py_ssize_t pos_args = PyTuple_GET_SIZE(__pyx_args);
      switch (pos_args) {
        case  2: values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
        CYTHON_FALLTHROUGH;
        case  1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
        CYTHON_FALLTHROUGH;
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      kw_args = PyDict_Size(__pyx_kwds);
      switch (pos_args) {
        case  0:
        if (likely((values[0] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_maximum_concurrent_rpcs)) != 0)) kw_args--;
        else goto __pyx_L5_argtuple_error;
        CYTHON_FALLTHROUGH;
        case  1:
        if (likely((values[1] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_loop)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("__cinit__", 1, 2, 2, 1); __PYX_ERR(10, 804, __pyx_L3_error)
        }
      }
      if (unlikely(kw_args > 0)) {
        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "__cinit__") < 0)) __PYX_ERR(10, 804, __pyx_L3_error)
      }
    } else if (PyTuple_GET_SIZE(__pyx_args) != 2) {
      goto __pyx_L5_argtuple_error;
    } else {
      values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
      values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
    }
    __pyx_v_maximum_concurrent_rpcs = __Pyx_PyInt_As_int(values[0]); if (unlikely((__pyx_v_maximum_concurrent_rpcs == (int)-1) && PyErr_Occurred())) __PYX_ERR(10, 804, __pyx_L3_error)
    __pyx_v_loop = values[1];
  }
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("__cinit__", 1, 2, 2, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(10, 804, __pyx_L3_error)
  __pyx_L3_error:;
  __Pyx_AddTraceback("grpc._cython.cygrpc._ConcurrentRpcLimiter.__cinit__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return -1;
  __pyx_L4_argument_unpacking_done:;
  __pyx_r = __pyx_pf_4grpc_7_cython_6cygrpc_21_ConcurrentRpcLimiter___cinit__(((struct __pyx_obj_4grpc_7_cython_6cygrpc__ConcurrentRpcLimiter *)__pyx_v_self), __pyx_v_maximum_concurrent_rpcs, __pyx_v_loop);

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static int __pyx_pf_4grpc_7_cython_6cygrpc_21_ConcurrentRpcLimiter___cinit__(struct __pyx_obj_4grpc_7_cython_6cygrpc__ConcurrentRpcLimiter *__pyx_v_self, int __pyx_v_maximum_concurrent_rpcs, PyObject *__pyx_v_loop) {
  int __pyx_r;
  __Pyx_RefNannyDeclarations
  int __pyx_t_1;
  PyObject *__pyx_t_2 = NULL;
  PyObject *__pyx_t_3 = NULL;
  PyObject *__pyx_t_4 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("__cinit__", 0);

  /* "src/python/grpcio/grpc/_cython/_cygrpc/aio/server.pyx.pxi":805
 * 
 *     def __cinit__(self, int maximum_concurrent_rpcs, object loop):
 *         if maximum_concurrent_rpcs <= 0:             # <<<<<<<<<<<<<<
 *             raise ValueError("maximum_concurrent_rpcs should be a postive integer")
 *         self._maximum_concurrent_rpcs = maximum_concurrent_rpcs
 */
  __pyx_t_1 = ((__pyx_v_maximum_concurrent_rpcs <= 0) != 0);
  if (unlikely(__pyx_t_1)) {

    /* "src/python/grpcio/grpc/_cython/_cygrpc/aio/server.pyx.pxi":806
 *     def __cinit__(self, int maximum_concurrent_rpcs, object loop):
 *         if maximum_concurrent_rpcs <= 0:
 *             raise ValueError("maximum_concurrent_rpcs should be a postive integer")             # <<<<<<<<<<<<<<
 *         self._maximum_concurrent_rpcs = maximum_concurrent_rpcs
 *         self._active_rpcs = 0
 */
    __pyx_t_2 = __Pyx_PyObject_Call(__pyx_builtin_ValueError, __pyx_tuple__197, NULL); if (unlikely(!__pyx_t_2)) __PYX_ERR(10, 806, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_2);
    __Pyx_Raise(__pyx_t_2, 0, 0, 0);
    __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
    __PYX_ERR(10, 806, __pyx_L1_error)

    /* "src/python/grpcio/grpc/_cython/_cygrpc/aio/server.pyx.pxi":805
 * 
 *     def __cinit__(self, int maximum_concurrent_rpcs, object loop):
 *         if maximum_concurrent_rpcs <= 0:             # <<<<<<<<<<<<<<
 *             raise ValueError("maximum_concurrent_rpcs should be a postive integer")
 *         self._maximum_concurrent_rpcs = maximum_concurrent_rpcs
 */
  }

  /* "src/python/grpcio/grpc/_cython/_cygrpc/aio/server.pyx.pxi":807
 *         if maximum_concurrent_rpcs <= 0:
 *             raise ValueError("maximum_concurrent_rpcs should be a postive integer")
 *         self._maximum_concurrent_rpcs = maximum_concurrent_rpcs             # <<<<<<<<<<<<<<
 *         self._active_rpcs = 0
 *         self._active_rpcs_condition = asyncio.Condition()
 */
  __pyx_v_self->_maximum_concurrent_rpcs = __pyx_v_maximum_concurrent_rpcs;

  /* "src/python/grpcio/grpc/_cython/_cygrpc/aio/server.pyx.pxi":808
 *             raise ValueError("maximum_concurrent_rpcs should be a postive integer")
 *         self._maximum_concurrent_rpcs = maximum_concurrent_rpcs
 *         self._active_rpcs = 0             # <<<<<<<<<<<<<<
 *         self._active_rpcs_condition = asyncio.Condition()
 *         self._loop = loop
 */
  __pyx_v_self->_active_rpcs = 0;

  /* "src/python/grpcio/grpc/_cython/_cygrpc/aio/server.pyx.pxi":809
 *         self._maximum_concurrent_rpcs = maximum_concurrent_rpcs
 *         self._active_rpcs = 0
 *         self._active_rpcs_condition = asyncio.Condition()             # <<<<<<<<<<<<<<
 *         self._loop = loop
 * 
 */
  __Pyx_GetModuleGlobalName(__pyx_t_3, __pyx_n_s_asyncio); if (unlikely(!__pyx_t_3)) __PYX_ERR(10, 809, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  __pyx_t_4 = __Pyx_PyObject_GetAttrStr(__pyx_t_3, __pyx_n_s_Condition); if (unlikely(!__pyx_t_4)) __PYX_ERR(10, 809, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_4);
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
  __pyx_t_3 = NULL;
  if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_4))) {
    __pyx_t_3 = PyMethod_GET_SELF(__pyx_t_4);
    if (likely(__pyx_t_3)) {
      PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_4);
      __Pyx_INCREF(__pyx_t_3);
      __Pyx_INCREF(function);
      __Pyx_DECREF_SET(__pyx_t_4, function);
    }
  }
  __pyx_t_2 = (__pyx_t_3) ? __Pyx_PyObject_CallOneArg(__pyx_t_4, __pyx_t_3) : __Pyx_PyObject_CallNoArg(__pyx_t_4);
  __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0;
  if (unlikely(!__pyx_t_2)) __PYX_ERR(10, 809, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
  __Pyx_GIVEREF(__pyx_t_2);
  __Pyx_GOTREF(__pyx_v_self->_active_rpcs_condition);
  __Pyx_DECREF(__pyx_v_self->_active_rpcs_condition);
  __pyx_v_self->_active_rpcs_condition = __pyx_t_2;
  __pyx_t_2 = 0;

  /* "src/python/grpcio/grpc/_cython/_cygrpc/aio/server.pyx.pxi":810
 *         self._active_rpcs = 0
 *         self._active_rpcs_condition = asyncio.Condition()
 *         self._loop = loop             # <<<<<<<<<<<<<<
 * 
 *     async def check_before_request_call(self):
 */
  __Pyx_INCREF(__pyx_v_loop);
  __Pyx_GIVEREF(__pyx_v_loop);
  __Pyx_GOTREF(__pyx_v_self->_loop);
  __Pyx_DECREF(__pyx_v_self->_loop);
  __pyx_v_self->_loop = __pyx_v_loop;

  /* "src/python/grpcio/grpc/_cython/_cygrpc/aio/server.pyx.pxi":804
 * cdef class _ConcurrentRpcLimiter:
 * 
 *     def __cinit__(self, int maximum_concurrent_rpcs, object loop):             # <<<<<<<<<<<<<<
 *         if maximum_concurrent_rpcs <= 0:
 *             raise ValueError("maximum_concurrent_rpcs should be a postive integer")
 */

  /* function exit code */
  __pyx_r = 0;
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_XDECREF(__pyx_t_3);
  __Pyx_XDECREF(__pyx_t_4);
  __Pyx_AddTraceback("grpc._cython.cygrpc._ConcurrentRpcLimiter.__cinit__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = -1;
  __pyx_L0:;
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}
static PyObject *__pyx_gb_4grpc_7_cython_6cygrpc_21_ConcurrentRpcLimiter_4generator38(__pyx_CoroutineObject *__pyx_generator, CYTHON_UNUSED PyThreadState *__pyx_tstate, PyObject *__pyx_sent_value); /* proto */

/* "src/python/grpcio/grpc/_cython/_cygrpc/aio/server.pyx.pxi":812
 *         self._loop = loop
 * 
 *     async def check_before_request_call(self):             # <<<<<<<<<<<<<<
 *         await self._active_rpcs_condition.acquire()
 *         try:
 */

/* Python wrapper */
static PyObject *__pyx_pw_4grpc_7_cython_6cygrpc_21_ConcurrentRpcLimiter_3check_before_request_call(PyObject *__pyx_v_self, CYTHON_UNUSED PyObject *unused); /*proto*/
static PyObject *__pyx_pw_4grpc_7_cython_6cygrpc_21_ConcurrentRpcLimiter_3check_before_request_call(PyObject *__pyx_v_self, CYTHON_UNUSED PyObject *unused) {
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("check_before_request_call (wrapper)", 0);
  __pyx_r = __pyx_pf_4grpc_7_cython_6cygrpc_21_ConcurrentRpcLimiter_2check_before_request_call(((struct __pyx_obj_4grpc_7_cython_6cygrpc__ConcurrentRpcLimiter *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "src/python/grpcio/grpc/_cython/_cygrpc/aio/server.pyx.pxi":815
 *         await self._active_rpcs_condition.acquire()
 *         try:
 *             predicate = lambda: self._active_rpcs < self._maximum_concurrent_rpcs             # <<<<<<<<<<<<<<
 *             await self._active_rpcs_condition.wait_for(predicate)
 *             self._active_rpcs += 1
 */

/* Python wrapper */
static PyObject *__pyx_pw_4grpc_7_cython_6cygrpc_21_ConcurrentRpcLimiter_25check_before_request_call_lambda2(PyObject *__pyx_self, CYTHON_UNUSED PyObject *unused); /*proto*/
static PyMethodDef __pyx_mdef_4grpc_7_cython_6cygrpc_21_ConcurrentRpcLimiter_25check_before_request_call_lambda2 = {"lambda2", (PyCFunction)__pyx_pw_4grpc_7_cython_6cygrpc_21_ConcurrentRpcLimiter_25check_before_request_call_lambda2, METH_NOARGS, 0};
static PyObject *__pyx_pw_4grpc_7_cython_6cygrpc_21_ConcurrentRpcLimiter_25check_before_request_call_lambda2(PyObject *__pyx_self, CYTHON_UNUSED PyObject *unused) {
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("lambda2 (wrapper)", 0);
  __pyx_r = __pyx_lambda_funcdef_lambda2(__pyx_self);

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_lambda_funcdef_lambda2(PyObject *__pyx_self) {
  struct __pyx_obj_4grpc_7_cython_6cygrpc___pyx_scope_struct_50_check_before_request_call *__pyx_cur_scope;
  struct __pyx_obj_4grpc_7_cython_6cygrpc___pyx_scope_struct_50_check_before_request_call *__pyx_outer_scope;
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("lambda2", 0);
  __pyx_outer_scope = (struct __pyx_obj_4grpc_7_cython_6cygrpc___pyx_scope_struct_50_check_before_request_call *) __Pyx_CyFunction_GetClosure(__pyx_self);
  __pyx_cur_scope = __pyx_outer_scope;
  __Pyx_XDECREF(__pyx_r);
  if (unlikely(!__pyx_cur_scope->__pyx_v_self)) { __Pyx_RaiseClosureNameError("self"); __PYX_ERR(10, 815, __pyx_L1_error) }
  if (unlikely(!__pyx_cur_scope->__pyx_v_self)) { __Pyx_RaiseClosureNameError("self"); __PYX_ERR(10, 815, __pyx_L1_error) }
  __pyx_t_1 = __Pyx_PyBool_FromLong((__pyx_cur_scope->__pyx_v_self->_active_rpcs < __pyx_cur_scope->__pyx_v_self->_maximum_concurrent_rpcs)); if (unlikely(!__pyx_t_1)) __PYX_ERR(10, 815, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_r = __pyx_t_1;
  __pyx_t_1 = 0;
  goto __pyx_L0;

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_AddTraceback("grpc._cython.cygrpc._ConcurrentRpcLimiter.check_before_request_call.lambda2", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "src/python/grpcio/grpc/_cython/_cygrpc/aio/server.pyx.pxi":812
 *         self._loop = loop
 * 
 *     async def check_before_request_call(self):             # <<<<<<<<<<<<<<
 *         await self._active_rpcs_condition.acquire()
 *         try:
 */

static PyObject *__pyx_pf_4grpc_7_cython_6cygrpc_21_ConcurrentRpcLimiter_2check_before_request_call(struct __pyx_obj_4grpc_7_cython_6cygrpc__ConcurrentRpcLimiter *__pyx_v_self) {
  struct __pyx_obj_4grpc_7_cython_6cygrpc___pyx_scope_struct_50_check_before_request_call *__pyx_cur_scope;
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("check_before_request_call", 0);
  __pyx_cur_scope = (struct __pyx_obj_4grpc_7_cython_6cygrpc___pyx_scope_struct_50_check_before_request_call *)__pyx_tp_new_4grpc_7_cython_6cygrpc___pyx_scope_struct_50_check_before_request_call(__pyx_ptype_4grpc_7_cython_6cygrpc___pyx_scope_struct_50_check_before_request_call, __pyx_empty_tuple, NULL);
  if (unlikely(!__pyx_cur_scope)) {
    __pyx_cur_scope = ((struct __pyx_obj_4grpc_7_cython_6cygrpc___pyx_scope_struct_50_check_before_request_call *)Py_None);
    __Pyx_INCREF(Py_None);
    __PYX_ERR(10, 812, __pyx_L1_error)
  } else {
    __Pyx_GOTREF(__pyx_cur_scope);
  }
  __pyx_cur_scope->__pyx_v_self = __pyx_v_self;
  __Pyx_INCREF((PyObject *)__pyx_cur_scope->__pyx_v_self);
  __Pyx_GIVEREF((PyObject *)__pyx_cur_scope->__pyx_v_self);
  {
    __pyx_CoroutineObject *gen = __Pyx_Coroutine_New((__pyx_coroutine_body_t) __pyx_gb_4grpc_7_cython_6cygrpc_21_ConcurrentRpcLimiter_4generator38, NULL, (PyObject *) __pyx_cur_scope, __pyx_n_s_check_before_request_call, __pyx_n_s_ConcurrentRpcLimiter_check_befo, __pyx_n_s_grpc__cython_cygrpc); if (unlikely(!gen)) __PYX_ERR(10, 812, __pyx_L1_error)
    __Pyx_DECREF(__pyx_cur_scope);
    __Pyx_RefNannyFinishContext();
    return (PyObject *) gen;
  }

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_AddTraceback("grpc._cython.cygrpc._ConcurrentRpcLimiter.check_before_request_call", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __Pyx_DECREF(((PyObject *)__pyx_cur_scope));
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_gb_4grpc_7_cython_6cygrpc_21_ConcurrentRpcLimiter_4generator38(__pyx_CoroutineObject *__pyx_generator, CYTHON_UNUSED PyThreadState *__pyx_tstate, PyObject *__pyx_sent_value) /* generator body */
{
  struct __pyx_obj_4grpc_7_cython_6cygrpc___pyx_scope_struct_50_check_before_request_call *__pyx_cur_scope = ((struct __pyx_obj_4grpc_7_cython_6cygrpc___pyx_scope_struct_50_check_before_request_call *)__pyx_generator->closure);
  PyObject *__pyx_r = NULL;
  PyObject *__pyx_t_1 = NULL;
  PyObject *__pyx_t_2 = NULL;
  PyObject *__pyx_t_3 = NULL;
  int __pyx_t_4;
  int __pyx_t_5;
  char const *__pyx_t_6;
  PyObject *__pyx_t_7 = NULL;
  PyObject *__pyx_t_8 = NULL;
  PyObject *__pyx_t_9 = NULL;
  PyObject *__pyx_t_10 = NULL;
  PyObject *__pyx_t_11 = NULL;
  PyObject *__pyx_t_12 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("check_before_request_call", 0);
  switch (__pyx_generator->resume_label) {
    case 0: goto __pyx_L3_first_run;
    case 1: goto __pyx_L4_resume_from_await;
    case 2: goto __pyx_L8_resume_from_await;
    default: /* CPython raises the right error here */
    __Pyx_RefNannyFinishContext();
    return NULL;
  }
  __pyx_L3_first_run:;
  if (unlikely(!__pyx_sent_value)) __PYX_ERR(10, 812, __pyx_L1_error)

  /* "src/python/grpcio/grpc/_cython/_cygrpc/aio/server.pyx.pxi":813
 * 
 *     async def check_before_request_call(self):
 *         await self._active_rpcs_condition.acquire()             # <<<<<<<<<<<<<<
 *         try:
 *             predicate = lambda: self._active_rpcs < self._maximum_concurrent_rpcs
 */
  __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_cur_scope->__pyx_v_self->_active_rpcs_condition, __pyx_n_s_acquire); if (unlikely(!__pyx_t_2)) __PYX_ERR(10, 813, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __pyx_t_3 = NULL;
  if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_2))) {
    __pyx_t_3 = PyMethod_GET_SELF(__pyx_t_2);
    if (likely(__pyx_t_3)) {
      PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_2);
      __Pyx_INCREF(__pyx_t_3);
      __Pyx_INCREF(function);
      __Pyx_DECREF_SET(__pyx_t_2, function);
    }
  }
  __pyx_t_1 = (__pyx_t_3) ? __Pyx_PyObject_CallOneArg(__pyx_t_2, __pyx_t_3) : __Pyx_PyObject_CallNoArg(__pyx_t_2);
  __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0;
  if (unlikely(!__pyx_t_1)) __PYX_ERR(10, 813, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  __pyx_r = __Pyx_Coroutine_Yield_From(__pyx_generator, __pyx_t_1);
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  __Pyx_XGOTREF(__pyx_r);
  if (likely(__pyx_r)) {
    __Pyx_XGIVEREF(__pyx_r);
    __Pyx_RefNannyFinishContext();
    __Pyx_Coroutine_ResetAndClearException(__pyx_generator);
    /* return from generator, awaiting value */
    __pyx_generator->resume_label = 1;
    return __pyx_r;
    __pyx_L4_resume_from_await:;
    if (unlikely(!__pyx_sent_value)) __PYX_ERR(10, 813, __pyx_L1_error)
  } else {
    PyObject* exc_type = __Pyx_PyErr_Occurred();
    if (exc_type) {
      if (likely(exc_type == PyExc_StopIteration || (exc_type != PyExc_GeneratorExit && __Pyx_PyErr_GivenExceptionMatches(exc_type, PyExc_StopIteration)))) PyErr_Clear();
      else __PYX_ERR(10, 813, __pyx_L1_error)
    }
  }

  /* "src/python/grpcio/grpc/_cython/_cygrpc/aio/server.pyx.pxi":814
 *     async def check_before_request_call(self):
 *         await self._active_rpcs_condition.acquire()
 *         try:             # <<<<<<<<<<<<<<
 *             predicate = lambda: self._active_rpcs < self._maximum_concurrent_rpcs
 *             await self._active_rpcs_condition.wait_for(predicate)
 */
  /*try:*/ {

    /* "src/python/grpcio/grpc/_cython/_cygrpc/aio/server.pyx.pxi":815
 *         await self._active_rpcs_condition.acquire()
 *         try:
 *             predicate = lambda: self._active_rpcs < self._maximum_concurrent_rpcs             # <<<<<<<<<<<<<<
 *             await self._active_rpcs_condition.wait_for(predicate)
 *             self._active_rpcs += 1
 */
    __pyx_t_1 = __Pyx_CyFunction_New(&__pyx_mdef_4grpc_7_cython_6cygrpc_21_ConcurrentRpcLimiter_25check_before_request_call_lambda2, 0, __pyx_n_s_check_before_request_call_locals, ((PyObject*)__pyx_cur_scope), __pyx_n_s_grpc__cython_cygrpc, __pyx_d, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(10, 815, __pyx_L6_error)
    __Pyx_GOTREF(__pyx_t_1);
    __Pyx_GIVEREF(__pyx_t_1);
    __pyx_cur_scope->__pyx_v_predicate = __pyx_t_1;
    __pyx_t_1 = 0;

    /* "src/python/grpcio/grpc/_cython/_cygrpc/aio/server.pyx.pxi":816
 *         try:
 *             predicate = lambda: self._active_rpcs < self._maximum_concurrent_rpcs
 *             await self._active_rpcs_condition.wait_for(predicate)             # <<<<<<<<<<<<<<
 *             self._active_rpcs += 1
 *         finally:
 */
    __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_cur_scope->__pyx_v_self->_active_rpcs_condition, __pyx_n_s_wait_for); if (unlikely(!__pyx_t_2)) __PYX_ERR(10, 816, __pyx_L6_error)
    __Pyx_GOTREF(__pyx_t_2);
    __pyx_t_3 = NULL;
    if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_2))) {
      __pyx_t_3 = PyMethod_GET_SELF(__pyx_t_2);
      if (likely(__pyx_t_3)) {
        PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_2);
        __Pyx_INCREF(__pyx_t_3);
        __Pyx_INCREF(function);
        __Pyx_DECREF_SET(__pyx_t_2, function);
      }
    }
    __pyx_t_1 = (__pyx_t_3) ? __Pyx_PyObject_Call2Args(__pyx_t_2, __pyx_t_3, __pyx_cur_scope->__pyx_v_predicate) : __Pyx_PyObject_CallOneArg(__pyx_t_2, __pyx_cur_scope->__pyx_v_predicate);
    __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0;
    if (unlikely(!__pyx_t_1)) __PYX_ERR(10, 816, __pyx_L6_error)
    __Pyx_GOTREF(__pyx_t_1);
    __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
    __pyx_r = __Pyx_Coroutine_Yield_From(__pyx_generator, __pyx_t_1);
    __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
    __Pyx_XGOTREF(__pyx_r);
    if (likely(__pyx_r)) {
      __Pyx_XGIVEREF(__pyx_r);
      __Pyx_RefNannyFinishContext();
      __Pyx_Coroutine_ResetAndClearException(__pyx_generator);
      /* return from generator, awaiting value */
      __pyx_generator->resume_label = 2;
      return __pyx_r;
      __pyx_L8_resume_from_await:;
      if (unlikely(!__pyx_sent_value)) __PYX_ERR(10, 816, __pyx_L6_error)
    } else {
      PyObject* exc_type = __Pyx_PyErr_Occurred();
      if (exc_type) {
        if (likely(exc_type == PyExc_StopIteration || (exc_type != PyExc_GeneratorExit && __Pyx_PyErr_GivenExceptionMatches(exc_type, PyExc_StopIteration)))) PyErr_Clear();
        else __PYX_ERR(10, 816, __pyx_L6_error)
      }
    }

    /* "src/python/grpcio/grpc/_cython/_cygrpc/aio/server.pyx.pxi":817
 *             predicate = lambda: self._active_rpcs < self._maximum_concurrent_rpcs
 *             await self._active_rpcs_condition.wait_for(predicate)
 *             self._active_rpcs += 1             # <<<<<<<<<<<<<<
 *         finally:
 *             self._active_rpcs_condition.release()
 */
    __pyx_cur_scope->__pyx_v_self->_active_rpcs = (__pyx_cur_scope->__pyx_v_self->_active_rpcs + 1);
  }

  /* "src/python/grpcio/grpc/_cython/_cygrpc/aio/server.pyx.pxi":819
 *             self._active_rpcs += 1
 *         finally:
 *             self._active_rpcs_condition.release()             # <<<<<<<<<<<<<<
 * 
 *     async def _decrease_active_rpcs_count_with_lock(self):
 */
  /*finally:*/ {
    /*normal exit:*/{
      __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_cur_scope->__pyx_v_self->_active_rpcs_condition, __pyx_n_s_release); if (unlikely(!__pyx_t_2)) __PYX_ERR(10, 819, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_2);
      __pyx_t_3 = NULL;
      if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_2))) {
        __pyx_t_3 = PyMethod_GET_SELF(__pyx_t_2);
        if (likely(__pyx_t_3)) {
          PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_2);
          __Pyx_INCREF(__pyx_t_3);
          __Pyx_INCREF(function);
          __Pyx_DECREF_SET(__pyx_t_2, function);
        }
      }
      __pyx_t_1 = (__pyx_t_3) ? __Pyx_PyObject_CallOneArg(__pyx_t_2, __pyx_t_3) : __Pyx_PyObject_CallNoArg(__pyx_t_2);
      __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0;
      if (unlikely(!__pyx_t_1)) __PYX_ERR(10, 819, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_1);
      __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
      __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
      goto __pyx_L7;
    }
    __pyx_L6_error:;
    /*exception exit:*/{
      __Pyx_PyThreadState_assign
      __pyx_t_7 = 0; __pyx_t_8 = 0; __pyx_t_9 = 0; __pyx_t_10 = 0; __pyx_t_11 = 0; __pyx_t_12 = 0;
      __Pyx_XDECREF(__pyx_t_1); __pyx_t_1 = 0;
      __Pyx_XDECREF(__pyx_t_2); __pyx_t_2 = 0;
      __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0;
      if (PY_MAJOR_VERSION >= 3) __Pyx_ExceptionSwap(&__pyx_t_10, &__pyx_t_11, &__pyx_t_12);
      if ((PY_MAJOR_VERSION < 3) || unlikely(__Pyx_GetException(&__pyx_t_7, &__pyx_t_8, &__pyx_t_9) < 0)) __Pyx_ErrFetch(&__pyx_t_7, &__pyx_t_8, &__pyx_t_9);
      __Pyx_XGOTREF(__pyx_t_7);
      __Pyx_XGOTREF(__pyx_t_8);
      __Pyx_XGOTREF(__pyx_t_9);
      __Pyx_XGOTREF(__pyx_t_10);
      __Pyx_XGOTREF(__pyx_t_11);
      __Pyx_XGOTREF(__pyx_t_12);
      __pyx_t_4 = __pyx_lineno; __pyx_t_5 = __pyx_clineno; __pyx_t_6 = __pyx_filename;
      {
        __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_cur_scope->__pyx_v_self->_active_rpcs_condition, __pyx_n_s_release); if (unlikely(!__pyx_t_2)) __PYX_ERR(10, 819, __pyx_L10_error)
        __Pyx_GOTREF(__pyx_t_2);
        __pyx_t_3 = NULL;
        if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_2))) {
          __pyx_t_3 = PyMethod_GET_SELF(__pyx_t_2);
          if (likely(__pyx_t_3)) {
            PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_2);
            __Pyx_INCREF(__pyx_t_3);
            __Pyx_INCREF(function);
            __Pyx_DECREF_SET(__pyx_t_2, function);
          }
        }
        __pyx_t_1 = (__pyx_t_3) ? __Pyx_PyObject_CallOneArg(__pyx_t_2, __pyx_t_3) : __Pyx_PyObject_CallNoArg(__pyx_t_2);
        __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0;
        if (unlikely(!__pyx_t_1)) __PYX_ERR(10, 819, __pyx_L10_error)
        __Pyx_GOTREF(__pyx_t_1);
        __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
        __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
      }
      if (PY_MAJOR_VERSION >= 3) {
        __Pyx_XGIVEREF(__pyx_t_10);
        __Pyx_XGIVEREF(__pyx_t_11);
        __Pyx_XGIVEREF(__pyx_t_12);
        __Pyx_ExceptionReset(__pyx_t_10, __pyx_t_11, __pyx_t_12);
      }
      __Pyx_XGIVEREF(__pyx_t_7);
      __Pyx_XGIVEREF(__pyx_t_8);
      __Pyx_XGIVEREF(__pyx_t_9);
      __Pyx_ErrRestore(__pyx_t_7, __pyx_t_8, __pyx_t_9);
      __pyx_t_7 = 0; __pyx_t_8 = 0; __pyx_t_9 = 0; __pyx_t_10 = 0; __pyx_t_11 = 0; __pyx_t_12 = 0;
      __pyx_lineno = __pyx_t_4; __pyx_clineno = __pyx_t_5; __pyx_filename = __pyx_t_6;
      goto __pyx_L1_error;
      __pyx_L10_error:;
      if (PY_MAJOR_VERSION >= 3) {
        __Pyx_XGIVEREF(__pyx_t_10);
        __Pyx_XGIVEREF(__pyx_t_11);
        __Pyx_XGIVEREF(__pyx_t_12);
        __Pyx_ExceptionReset(__pyx_t_10, __pyx_t_11, __pyx_t_12);
      }
      __Pyx_XDECREF(__pyx_t_7); __pyx_t_7 = 0;
      __Pyx_XDECREF(__pyx_t_8); __pyx_t_8 = 0;
      __Pyx_XDECREF(__pyx_t_9); __pyx_t_9 = 0;
      __pyx_t_10 = 0; __pyx_t_11 = 0; __pyx_t_12 = 0;
      goto __pyx_L1_error;
    }
    __pyx_L7:;
  }
  CYTHON_MAYBE_UNUSED_VAR(__pyx_cur_scope);

  /* "src/python/grpcio/grpc/_cython/_cygrpc/aio/server.pyx.pxi":812
 *         self._loop = loop
 * 
 *     async def check_before_request_call(self):             # <<<<<<<<<<<<<<
 *         await self._active_rpcs_condition.acquire()
 *         try:
 */

  /* function exit code */
  PyErr_SetNone(PyExc_StopIteration);
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_XDECREF(__pyx_t_3);
  __Pyx_AddTraceback("check_before_request_call", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_L0:;
  __Pyx_XDECREF(__pyx_r); __pyx_r = 0;
  #if !CYTHON_USE_EXC_INFO_STACK
  __Pyx_Coroutine_ResetAndClearException(__pyx_generator);
  #endif
  __pyx_generator->resume_label = -1;
  __Pyx_Coroutine_clear((PyObject*)__pyx_generator);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}
static PyObject *__pyx_gb_4grpc_7_cython_6cygrpc_21_ConcurrentRpcLimiter_7generator39(__pyx_CoroutineObject *__pyx_generator, CYTHON_UNUSED PyThreadState *__pyx_tstate, PyObject *__pyx_sent_value); /* proto */

/* "src/python/grpcio/grpc/_cython/_cygrpc/aio/server.pyx.pxi":821
 *             self._active_rpcs_condition.release()
 * 
 *     async def _decrease_active_rpcs_count_with_lock(self):             # <<<<<<<<<<<<<<
 *         await self._active_rpcs_condition.acquire()
 *         try:
 */

/* Python wrapper */
static PyObject *__pyx_pw_4grpc_7_cython_6cygrpc_21_ConcurrentRpcLimiter_6_decrease_active_rpcs_count_with_lock(PyObject *__pyx_v_self, CYTHON_UNUSED PyObject *unused); /*proto*/
static PyObject *__pyx_pw_4grpc_7_cython_6cygrpc_21_ConcurrentRpcLimiter_6_decrease_active_rpcs_count_with_lock(PyObject *__pyx_v_self, CYTHON_UNUSED PyObject *unused) {
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("_decrease_active_rpcs_count_with_lock (wrapper)", 0);
  __pyx_r = __pyx_pf_4grpc_7_cython_6cygrpc_21_ConcurrentRpcLimiter_5_decrease_active_rpcs_count_with_lock(((struct __pyx_obj_4grpc_7_cython_6cygrpc__ConcurrentRpcLimiter *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_4grpc_7_cython_6cygrpc_21_ConcurrentRpcLimiter_5_decrease_active_rpcs_count_with_lock(struct __pyx_obj_4grpc_7_cython_6cygrpc__ConcurrentRpcLimiter *__pyx_v_self) {
  struct __pyx_obj_4grpc_7_cython_6cygrpc___pyx_scope_struct_51__decrease_active_rpcs_count_with_lock *__pyx_cur_scope;
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("_decrease_active_rpcs_count_with_lock", 0);
  __pyx_cur_scope = (struct __pyx_obj_4grpc_7_cython_6cygrpc___pyx_scope_struct_51__decrease_active_rpcs_count_with_lock *)__pyx_tp_new_4grpc_7_cython_6cygrpc___pyx_scope_struct_51__decrease_active_rpcs_count_with_lock(__pyx_ptype_4grpc_7_cython_6cygrpc___pyx_scope_struct_51__decrease_active_rpcs_count_with_lock, __pyx_empty_tuple, NULL);
  if (unlikely(!__pyx_cur_scope)) {
    __pyx_cur_scope = ((struct __pyx_obj_4grpc_7_cython_6cygrpc___pyx_scope_struct_51__decrease_active_rpcs_count_with_lock *)Py_None);
    __Pyx_INCREF(Py_None);
    __PYX_ERR(10, 821, __pyx_L1_error)
  } else {
    __Pyx_GOTREF(__pyx_cur_scope);
  }
  __pyx_cur_scope->__pyx_v_self = __pyx_v_self;
  __Pyx_INCREF((PyObject *)__pyx_cur_scope->__pyx_v_self);
  __Pyx_GIVEREF((PyObject *)__pyx_cur_scope->__pyx_v_self);
  {
    __pyx_CoroutineObject *gen = __Pyx_Coroutine_New((__pyx_coroutine_body_t) __pyx_gb_4grpc_7_cython_6cygrpc_21_ConcurrentRpcLimiter_7generator39, NULL, (PyObject *) __pyx_cur_scope, __pyx_n_s_decrease_active_rpcs_count_with, __pyx_n_s_ConcurrentRpcLimiter__decrease, __pyx_n_s_grpc__cython_cygrpc); if (unlikely(!gen)) __PYX_ERR(10, 821, __pyx_L1_error)
    __Pyx_DECREF(__pyx_cur_scope);
    __Pyx_RefNannyFinishContext();
    return (PyObject *) gen;
  }

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_AddTraceback("grpc._cython.cygrpc._ConcurrentRpcLimiter._decrease_active_rpcs_count_with_lock", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __Pyx_DECREF(((PyObject *)__pyx_cur_scope));
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_gb_4grpc_7_cython_6cygrpc_21_ConcurrentRpcLimiter_7generator39(__pyx_CoroutineObject *__pyx_generator, CYTHON_UNUSED PyThreadState *__pyx_tstate, PyObject *__pyx_sent_value) /* generator body */
{
  struct __pyx_obj_4grpc_7_cython_6cygrpc___pyx_scope_struct_51__decrease_active_rpcs_count_with_lock *__pyx_cur_scope = ((struct __pyx_obj_4grpc_7_cython_6cygrpc___pyx_scope_struct_51__decrease_active_rpcs_count_with_lock *)__pyx_generator->closure);
  PyObject *__pyx_r = NULL;
  PyObject *__pyx_t_1 = NULL;
  PyObject *__pyx_t_2 = NULL;
  PyObject *__pyx_t_3 = NULL;
  int __pyx_t_4;
  int __pyx_t_5;
  char const *__pyx_t_6;
  PyObject *__pyx_t_7 = NULL;
  PyObject *__pyx_t_8 = NULL;
  PyObject *__pyx_t_9 = NULL;
  PyObject *__pyx_t_10 = NULL;
  PyObject *__pyx_t_11 = NULL;
  PyObject *__pyx_t_12 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("_decrease_active_rpcs_count_with_lock", 0);
  switch (__pyx_generator->resume_label) {
    case 0: goto __pyx_L3_first_run;
    case 1: goto __pyx_L4_resume_from_await;
    default: /* CPython raises the right error here */
    __Pyx_RefNannyFinishContext();
    return NULL;
  }
  __pyx_L3_first_run:;
  if (unlikely(!__pyx_sent_value)) __PYX_ERR(10, 821, __pyx_L1_error)

  /* "src/python/grpcio/grpc/_cython/_cygrpc/aio/server.pyx.pxi":822
 * 
 *     async def _decrease_active_rpcs_count_with_lock(self):
 *         await self._active_rpcs_condition.acquire()             # <<<<<<<<<<<<<<
 *         try:
 *             self._active_rpcs -= 1
 */
  __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_cur_scope->__pyx_v_self->_active_rpcs_condition, __pyx_n_s_acquire); if (unlikely(!__pyx_t_2)) __PYX_ERR(10, 822, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __pyx_t_3 = NULL;
  if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_2))) {
    __pyx_t_3 = PyMethod_GET_SELF(__pyx_t_2);
    if (likely(__pyx_t_3)) {
      PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_2);
      __Pyx_INCREF(__pyx_t_3);
      __Pyx_INCREF(function);
      __Pyx_DECREF_SET(__pyx_t_2, function);
    }
  }
  __pyx_t_1 = (__pyx_t_3) ? __Pyx_PyObject_CallOneArg(__pyx_t_2, __pyx_t_3) : __Pyx_PyObject_CallNoArg(__pyx_t_2);
  __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0;
  if (unlikely(!__pyx_t_1)) __PYX_ERR(10, 822, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  __pyx_r = __Pyx_Coroutine_Yield_From(__pyx_generator, __pyx_t_1);
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  __Pyx_XGOTREF(__pyx_r);
  if (likely(__pyx_r)) {
    __Pyx_XGIVEREF(__pyx_r);
    __Pyx_RefNannyFinishContext();
    __Pyx_Coroutine_ResetAndClearException(__pyx_generator);
    /* return from generator, awaiting value */
    __pyx_generator->resume_label = 1;
    return __pyx_r;
    __pyx_L4_resume_from_await:;
    if (unlikely(!__pyx_sent_value)) __PYX_ERR(10, 822, __pyx_L1_error)
  } else {
    PyObject* exc_type = __Pyx_PyErr_Occurred();
    if (exc_type) {
      if (likely(exc_type == PyExc_StopIteration || (exc_type != PyExc_GeneratorExit && __Pyx_PyErr_GivenExceptionMatches(exc_type, PyExc_StopIteration)))) PyErr_Clear();
      else __PYX_ERR(10, 822, __pyx_L1_error)
    }
  }

  /* "src/python/grpcio/grpc/_cython/_cygrpc/aio/server.pyx.pxi":823
 *     async def _decrease_active_rpcs_count_with_lock(self):
 *         await self._active_rpcs_condition.acquire()
 *         try:             # <<<<<<<<<<<<<<
 *             self._active_rpcs -= 1
 *             self._active_rpcs_condition.notify()
 */
  /*try:*/ {

    /* "src/python/grpcio/grpc/_cython/_cygrpc/aio/server.pyx.pxi":824
 *         await self._active_rpcs_condition.acquire()
 *         try:
 *             self._active_rpcs -= 1             # <<<<<<<<<<<<<<
 *             self._active_rpcs_condition.notify()
 *         finally:
 */
    __pyx_cur_scope->__pyx_v_self->_active_rpcs = (__pyx_cur_scope->__pyx_v_self->_active_rpcs - 1);

    /* "src/python/grpcio/grpc/_cython/_cygrpc/aio/server.pyx.pxi":825
 *         try:
 *             self._active_rpcs -= 1
 *             self._active_rpcs_condition.notify()             # <<<<<<<<<<<<<<
 *         finally:
 *             self._active_rpcs_condition.release()
 */
    __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_cur_scope->__pyx_v_self->_active_rpcs_condition, __pyx_n_s_notify); if (unlikely(!__pyx_t_2)) __PYX_ERR(10, 825, __pyx_L6_error)
    __Pyx_GOTREF(__pyx_t_2);
    __pyx_t_3 = NULL;
    if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_2))) {
      __pyx_t_3 = PyMethod_GET_SELF(__pyx_t_2);
      if (likely(__pyx_t_3)) {
        PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_2);
        __Pyx_INCREF(__pyx_t_3);
        __Pyx_INCREF(function);
        __Pyx_DECREF_SET(__pyx_t_2, function);
      }
    }
    __pyx_t_1 = (__pyx_t_3) ? __Pyx_PyObject_CallOneArg(__pyx_t_2, __pyx_t_3) : __Pyx_PyObject_CallNoArg(__pyx_t_2);
    __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0;
    if (unlikely(!__pyx_t_1)) __PYX_ERR(10, 825, __pyx_L6_error)
    __Pyx_GOTREF(__pyx_t_1);
    __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
    __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  }

  /* "src/python/grpcio/grpc/_cython/_cygrpc/aio/server.pyx.pxi":827
 *             self._active_rpcs_condition.notify()
 *         finally:
 *             self._active_rpcs_condition.release()             # <<<<<<<<<<<<<<
 * 
 *     def _decrease_active_rpcs_count(self, unused_future):
 */
  /*finally:*/ {
    /*normal exit:*/{
      __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_cur_scope->__pyx_v_self->_active_rpcs_condition, __pyx_n_s_release); if (unlikely(!__pyx_t_2)) __PYX_ERR(10, 827, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_2);
      __pyx_t_3 = NULL;
      if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_2))) {
        __pyx_t_3 = PyMethod_GET_SELF(__pyx_t_2);
        if (likely(__pyx_t_3)) {
          PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_2);
          __Pyx_INCREF(__pyx_t_3);
          __Pyx_INCREF(function);
          __Pyx_DECREF_SET(__pyx_t_2, function);
        }
      }
      __pyx_t_1 = (__pyx_t_3) ? __Pyx_PyObject_CallOneArg(__pyx_t_2, __pyx_t_3) : __Pyx_PyObject_CallNoArg(__pyx_t_2);
      __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0;
      if (unlikely(!__pyx_t_1)) __PYX_ERR(10, 827, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_1);
      __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
      __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
      goto __pyx_L7;
    }
    __pyx_L6_error:;
    /*exception exit:*/{
      __Pyx_PyThreadState_assign
      __pyx_t_7 = 0; __pyx_t_8 = 0; __pyx_t_9 = 0; __pyx_t_10 = 0; __pyx_t_11 = 0; __pyx_t_12 = 0;
      __Pyx_XDECREF(__pyx_t_1); __pyx_t_1 = 0;
      __Pyx_XDECREF(__pyx_t_2); __pyx_t_2 = 0;
      __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0;
      if (PY_MAJOR_VERSION >= 3) __Pyx_ExceptionSwap(&__pyx_t_10, &__pyx_t_11, &__pyx_t_12);
      if ((PY_MAJOR_VERSION < 3) || unlikely(__Pyx_GetException(&__pyx_t_7, &__pyx_t_8, &__pyx_t_9) < 0)) __Pyx_ErrFetch(&__pyx_t_7, &__pyx_t_8, &__pyx_t_9);
      __Pyx_XGOTREF(__pyx_t_7);
      __Pyx_XGOTREF(__pyx_t_8);
      __Pyx_XGOTREF(__pyx_t_9);
      __Pyx_XGOTREF(__pyx_t_10);
      __Pyx_XGOTREF(__pyx_t_11);
      __Pyx_XGOTREF(__pyx_t_12);
      __pyx_t_4 = __pyx_lineno; __pyx_t_5 = __pyx_clineno; __pyx_t_6 = __pyx_filename;
      {
        __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_cur_scope->__pyx_v_self->_active_rpcs_condition, __pyx_n_s_release); if (unlikely(!__pyx_t_2)) __PYX_ERR(10, 827, __pyx_L9_error)
        __Pyx_GOTREF(__pyx_t_2);
        __pyx_t_3 = NULL;
        if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_2))) {
          __pyx_t_3 = PyMethod_GET_SELF(__pyx_t_2);
          if (likely(__pyx_t_3)) {
            PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_2);
            __Pyx_INCREF(__pyx_t_3);
            __Pyx_INCREF(function);
            __Pyx_DECREF_SET(__pyx_t_2, function);
          }
        }
        __pyx_t_1 = (__pyx_t_3) ? __Pyx_PyObject_CallOneArg(__pyx_t_2, __pyx_t_3) : __Pyx_PyObject_CallNoArg(__pyx_t_2);
        __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0;
        if (unlikely(!__pyx_t_1)) __PYX_ERR(10, 827, __pyx_L9_error)
        __Pyx_GOTREF(__pyx_t_1);
        __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
        __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
      }
      if (PY_MAJOR_VERSION >= 3) {
        __Pyx_XGIVEREF(__pyx_t_10);
        __Pyx_XGIVEREF(__pyx_t_11);
        __Pyx_XGIVEREF(__pyx_t_12);
        __Pyx_ExceptionReset(__pyx_t_10, __pyx_t_11, __pyx_t_12);
      }
      __Pyx_XGIVEREF(__pyx_t_7);
      __Pyx_XGIVEREF(__pyx_t_8);
      __Pyx_XGIVEREF(__pyx_t_9);
      __Pyx_ErrRestore(__pyx_t_7, __pyx_t_8, __pyx_t_9);
      __pyx_t_7 = 0; __pyx_t_8 = 0; __pyx_t_9 = 0; __pyx_t_10 = 0; __pyx_t_11 = 0; __pyx_t_12 = 0;
      __pyx_lineno = __pyx_t_4; __pyx_clineno = __pyx_t_5; __pyx_filename = __pyx_t_6;
      goto __pyx_L1_error;
      __pyx_L9_error:;
      if (PY_MAJOR_VERSION >= 3) {
        __Pyx_XGIVEREF(__pyx_t_10);
        __Pyx_XGIVEREF(__pyx_t_11);
        __Pyx_XGIVEREF(__pyx_t_12);
        __Pyx_ExceptionReset(__pyx_t_10, __pyx_t_11, __pyx_t_12);
      }
      __Pyx_XDECREF(__pyx_t_7); __pyx_t_7 = 0;
      __Pyx_XDECREF(__pyx_t_8); __pyx_t_8 = 0;
      __Pyx_XDECREF(__pyx_t_9); __pyx_t_9 = 0;
      __pyx_t_10 = 0; __pyx_t_11 = 0; __pyx_t_12 = 0;
      goto __pyx_L1_error;
    }
    __pyx_L7:;
  }
  CYTHON_MAYBE_UNUSED_VAR(__pyx_cur_scope);

  /* "src/python/grpcio/grpc/_cython/_cygrpc/aio/server.pyx.pxi":821
 *             self._active_rpcs_condition.release()
 * 
 *     async def _decrease_active_rpcs_count_with_lock(self):             # <<<<<<<<<<<<<<
 *         await self._active_rpcs_condition.acquire()
 *         try:
 */

  /* function exit code */
  PyErr_SetNone(PyExc_StopIteration);
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_XDECREF(__pyx_t_3);
  __Pyx_AddTraceback("_decrease_active_rpcs_count_with_lock", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_L0:;
  __Pyx_XDECREF(__pyx_r); __pyx_r = 0;
  #if !CYTHON_USE_EXC_INFO_STACK
  __Pyx_Coroutine_ResetAndClearException(__pyx_generator);
  #endif
  __pyx_generator->resume_label = -1;
  __Pyx_Coroutine_clear((PyObject*)__pyx_generator);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "src/python/grpcio/grpc/_cython/_cygrpc/aio/server.pyx.pxi":829
 *             self._active_rpcs_condition.release()
 * 
 *     def _decrease_active_rpcs_count(self, unused_future):             # <<<<<<<<<<<<<<
 *         self._loop.create_task(self._decrease_active_rpcs_count_with_lock())
 * 
 */

/* Python wrapper */
static PyObject *__pyx_pw_4grpc_7_cython_6cygrpc_21_ConcurrentRpcLimiter_9_decrease_active_rpcs_count(PyObject *__pyx_v_self, PyObject *__pyx_v_unused_future); /*proto*/
static PyObject *__pyx_pw_4grpc_7_cython_6cygrpc_21_ConcurrentRpcLimiter_9_decrease_active_rpcs_count(PyObject *__pyx_v_self, PyObject *__pyx_v_unused_future) {
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("_decrease_active_rpcs_count (wrapper)", 0);
  __pyx_r = __pyx_pf_4grpc_7_cython_6cygrpc_21_ConcurrentRpcLimiter_8_decrease_active_rpcs_count(((struct __pyx_obj_4grpc_7_cython_6cygrpc__ConcurrentRpcLimiter *)__pyx_v_self), ((PyObject *)__pyx_v_unused_future));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_4grpc_7_cython_6cygrpc_21_ConcurrentRpcLimiter_8_decrease_active_rpcs_count(struct __pyx_obj_4grpc_7_cython_6cygrpc__ConcurrentRpcLimiter *__pyx_v_self, CYTHON_UNUSED PyObject *__pyx_v_unused_future) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  PyObject *__pyx_t_2 = NULL;
  PyObject *__pyx_t_3 = NULL;
  PyObject *__pyx_t_4 = NULL;
  PyObject *__pyx_t_5 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("_decrease_active_rpcs_count", 0);

  /* "src/python/grpcio/grpc/_cython/_cygrpc/aio/server.pyx.pxi":830
 * 
 *     def _decrease_active_rpcs_count(self, unused_future):
 *         self._loop.create_task(self._decrease_active_rpcs_count_with_lock())             # <<<<<<<<<<<<<<
 * 
 *     def decrease_once_finished(self, object rpc_task):
 */
  __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_v_self->_loop, __pyx_n_s_create_task); if (unlikely(!__pyx_t_2)) __PYX_ERR(10, 830, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __pyx_t_4 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_decrease_active_rpcs_count_with); if (unlikely(!__pyx_t_4)) __PYX_ERR(10, 830, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_4);
  __pyx_t_5 = NULL;
  if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_4))) {
    __pyx_t_5 = PyMethod_GET_SELF(__pyx_t_4);
    if (likely(__pyx_t_5)) {
      PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_4);
      __Pyx_INCREF(__pyx_t_5);
      __Pyx_INCREF(function);
      __Pyx_DECREF_SET(__pyx_t_4, function);
    }
  }
  __pyx_t_3 = (__pyx_t_5) ? __Pyx_PyObject_CallOneArg(__pyx_t_4, __pyx_t_5) : __Pyx_PyObject_CallNoArg(__pyx_t_4);
  __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0;
  if (unlikely(!__pyx_t_3)) __PYX_ERR(10, 830, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
  __pyx_t_4 = NULL;
  if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_2))) {
    __pyx_t_4 = PyMethod_GET_SELF(__pyx_t_2);
    if (likely(__pyx_t_4)) {
      PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_2);
      __Pyx_INCREF(__pyx_t_4);
      __Pyx_INCREF(function);
      __Pyx_DECREF_SET(__pyx_t_2, function);
    }
  }
  __pyx_t_1 = (__pyx_t_4) ? __Pyx_PyObject_Call2Args(__pyx_t_2, __pyx_t_4, __pyx_t_3) : __Pyx_PyObject_CallOneArg(__pyx_t_2, __pyx_t_3);
  __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0;
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
  if (unlikely(!__pyx_t_1)) __PYX_ERR(10, 830, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;

  /* "src/python/grpcio/grpc/_cython/_cygrpc/aio/server.pyx.pxi":829
 *             self._active_rpcs_condition.release()
 * 
 *     def _decrease_active_rpcs_count(self, unused_future):             # <<<<<<<<<<<<<<
 *         self._loop.create_task(self._decrease_active_rpcs_count_with_lock())
 * 
 */

  /* function exit code */
  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_XDECREF(__pyx_t_3);
  __Pyx_XDECREF(__pyx_t_4);
  __Pyx_XDECREF(__pyx_t_5);
  __Pyx_AddTraceback("grpc._cython.cygrpc._ConcurrentRpcLimiter._decrease_active_rpcs_count", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "src/python/grpcio/grpc/_cython/_cygrpc/aio/server.pyx.pxi":832
 *         self._loop.create_task(self._decrease_active_rpcs_count_with_lock())
 * 
 *     def decrease_once_finished(self, object rpc_task):             # <<<<<<<<<<<<<<
 *         rpc_task.add_done_callback(self._decrease_active_rpcs_count)
 * 
 */

/* Python wrapper */
static PyObject *__pyx_pw_4grpc_7_cython_6cygrpc_21_ConcurrentRpcLimiter_11decrease_once_finished(PyObject *__pyx_v_self, PyObject *__pyx_v_rpc_task); /*proto*/
static PyObject *__pyx_pw_4grpc_7_cython_6cygrpc_21_ConcurrentRpcLimiter_11decrease_once_finished(PyObject *__pyx_v_self, PyObject *__pyx_v_rpc_task) {
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("decrease_once_finished (wrapper)", 0);
  __pyx_r = __pyx_pf_4grpc_7_cython_6cygrpc_21_ConcurrentRpcLimiter_10decrease_once_finished(((struct __pyx_obj_4grpc_7_cython_6cygrpc__ConcurrentRpcLimiter *)__pyx_v_self), ((PyObject *)__pyx_v_rpc_task));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_4grpc_7_cython_6cygrpc_21_ConcurrentRpcLimiter_10decrease_once_finished(struct __pyx_obj_4grpc_7_cython_6cygrpc__ConcurrentRpcLimiter *__pyx_v_self, PyObject *__pyx_v_rpc_task) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  PyObject *__pyx_t_2 = NULL;
  PyObject *__pyx_t_3 = NULL;
  PyObject *__pyx_t_4 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("decrease_once_finished", 0);

  /* "src/python/grpcio/grpc/_cython/_cygrpc/aio/server.pyx.pxi":833
 * 
 *     def decrease_once_finished(self, object rpc_task):
 *         rpc_task.add_done_callback(self._decrease_active_rpcs_count)             # <<<<<<<<<<<<<<
 * 
 * 
 */
  __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_v_rpc_task, __pyx_n_s_add_done_callback); if (unlikely(!__pyx_t_2)) __PYX_ERR(10, 833, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __pyx_t_3 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_decrease_active_rpcs_count); if (unlikely(!__pyx_t_3)) __PYX_ERR(10, 833, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  __pyx_t_4 = NULL;
  if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_2))) {
    __pyx_t_4 = PyMethod_GET_SELF(__pyx_t_2);
    if (likely(__pyx_t_4)) {
      PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_2);
      __Pyx_INCREF(__pyx_t_4);
      __Pyx_INCREF(function);
      __Pyx_DECREF_SET(__pyx_t_2, function);
    }
  }
  __pyx_t_1 = (__pyx_t_4) ? __Pyx_PyObject_Call2Args(__pyx_t_2, __pyx_t_4, __pyx_t_3) : __Pyx_PyObject_CallOneArg(__pyx_t_2, __pyx_t_3);
  __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0;
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
  if (unlikely(!__pyx_t_1)) __PYX_ERR(10, 833, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;

  /* "src/python/grpcio/grpc/_cython/_cygrpc/aio/server.pyx.pxi":832
 *         self._loop.create_task(self._decrease_active_rpcs_count_with_lock())
 * 
 *     def decrease_once_finished(self, object rpc_task):             # <<<<<<<<<<<<<<
 *         rpc_task.add_done_callback(self._decrease_active_rpcs_count)
 * 
 */

  /* function exit code */
  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_XDECREF(__pyx_t_3);
  __Pyx_XDECREF(__pyx_t_4);
  __Pyx_AddTraceback("grpc._cython.cygrpc._ConcurrentRpcLimiter.decrease_once_finished", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "(tree fragment)":1
 * def __reduce_cython__(self):             # <<<<<<<<<<<<<<
 *     raise TypeError("no default __reduce__ due to non-trivial __cinit__")
 * def __setstate_cython__(self, __pyx_state):
 */

/* Python wrapper */
static PyObject *__pyx_pw_4grpc_7_cython_6cygrpc_21_ConcurrentRpcLimiter_13__reduce_cython__(PyObject *__pyx_v_self, CYTHON_UNUSED PyObject *unused); /*proto*/
static PyObject *__pyx_pw_4grpc_7_cython_6cygrpc_21_ConcurrentRpcLimiter_13__reduce_cython__(PyObject *__pyx_v_self, CYTHON_UNUSED PyObject *unused) {
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__reduce_cython__ (wrapper)", 0);
  __pyx_r = __pyx_pf_4grpc_7_cython_6cygrpc_21_ConcurrentRpcLimiter_12__reduce_cython__(((struct __pyx_obj_4grpc_7_cython_6cygrpc__ConcurrentRpcLimiter *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_4grpc_7_cython_6cygrpc_21_ConcurrentRpcLimiter_12__reduce_cython__(CYTHON_UNUSED struct __pyx_obj_4grpc_7_cython_6cygrpc__ConcurrentRpcLimiter *__pyx_v_self) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("__reduce_cython__", 0);

  /* "(tree fragment)":2
 * def __reduce_cython__(self):
 *     raise TypeError("no default __reduce__ due to non-trivial __cinit__")             # <<<<<<<<<<<<<<
 * def __setstate_cython__(self, __pyx_state):
 *     raise TypeError("no default __reduce__ due to non-trivial __cinit__")
 */
  __pyx_t_1 = __Pyx_PyObject_Call(__pyx_builtin_TypeError, __pyx_tuple__198, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(11, 2, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_Raise(__pyx_t_1, 0, 0, 0);
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  __PYX_ERR(11, 2, __pyx_L1_error)

  /* "(tree fragment)":1
 * def __reduce_cython__(self):             # <<<<<<<<<<<<<<
 *     raise TypeError("no default __reduce__ due to non-trivial __cinit__")
 * def __setstate_cython__(self, __pyx_state):
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_AddTraceback("grpc._cython.cygrpc._ConcurrentRpcLimiter.__reduce_cython__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "(tree fragment)":3
 * def __reduce_cython__(self):
 *     raise TypeError("no default __reduce__ due to non-trivial __cinit__")
 * def __setstate_cython__(self, __pyx_state):             # <<<<<<<<<<<<<<
 *     raise TypeError("no default __reduce__ due to non-trivial __cinit__")
 */

/* Python wrapper */
static PyObject *__pyx_pw_4grpc_7_cython_6cygrpc_21_ConcurrentRpcLimiter_15__setstate_cython__(PyObject *__pyx_v_self, PyObject *__pyx_v___pyx_state); /*proto*/
static PyObject *__pyx_pw_4grpc_7_cython_6cygrpc_21_ConcurrentRpcLimiter_15__setstate_cython__(PyObject *__pyx_v_self, PyObject *__pyx_v___pyx_state) {
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__setstate_cython__ (wrapper)", 0);
  __pyx_r = __pyx_pf_4grpc_7_cython_6cygrpc_21_ConcurrentRpcLimiter_14__setstate_cython__(((struct __pyx_obj_4grpc_7_cython_6cygrpc__ConcurrentRpcLimiter *)__pyx_v_self), ((PyObject *)__pyx_v___pyx_state));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_4grpc_7_cython_6cygrpc_21_ConcurrentRpcLimiter_14__setstate_cython__(CYTHON_UNUSED struct __pyx_obj_4grpc_7_cython_6cygrpc__ConcurrentRpcLimiter *__pyx_v_self, CYTHON_UNUSED PyObject *__pyx_v___pyx_state) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("__setstate_cython__", 0);

  /* "(tree fragment)":4
 *     raise TypeError("no default __reduce__ due to non-trivial __cinit__")
 * def __setstate_cython__(self, __pyx_state):
 *     raise TypeError("no default __reduce__ due to non-trivial __cinit__")             # <<<<<<<<<<<<<<
 */
  __pyx_t_1 = __Pyx_PyObject_Call(__pyx_builtin_TypeError, __pyx_tuple__199, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(11, 4, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_Raise(__pyx_t_1, 0, 0, 0);
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  __PYX_ERR(11, 4, __pyx_L1_error)

  /* "(tree fragment)":3
 * def __reduce_cython__(self):
 *     raise TypeError("no default __reduce__ due to non-trivial __cinit__")
 * def __setstate_cython__(self, __pyx_state):             # <<<<<<<<<<<<<<
 *     raise TypeError("no default __reduce__ due to non-trivial __cinit__")
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_AddTraceback("grpc._cython.cygrpc._ConcurrentRpcLimiter.__setstate_cython__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "src/python/grpcio/grpc/_cython/_cygrpc/aio/server.pyx.pxi":838
 * cdef class AioServer:
 * 
 *     def __init__(self, loop, thread_pool, generic_handlers, interceptors,             # <<<<<<<<<<<<<<
 *                  options, maximum_concurrent_rpcs):
 *         init_grpc_aio()
 */

/* Python wrapper */
static int __pyx_pw_4grpc_7_cython_6cygrpc_9AioServer_1__init__(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
static int __pyx_pw_4grpc_7_cython_6cygrpc_9AioServer_1__init__(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
  PyObject *__pyx_v_loop = 0;
  PyObject *__pyx_v_thread_pool = 0;
  PyObject *__pyx_v_generic_handlers = 0;
  PyObject *__pyx_v_interceptors = 0;
  PyObject *__pyx_v_options = 0;
  PyObject *__pyx_v_maximum_concurrent_rpcs = 0;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  int __pyx_r;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__init__ (wrapper)", 0);
  {
    static PyObject **__pyx_pyargnames[] = {&__pyx_n_s_loop,&__pyx_n_s_thread_pool,&__pyx_n_s_generic_handlers,&__pyx_n_s_interceptors,&__pyx_n_s_options,&__pyx_n_s_maximum_concurrent_rpcs,0};
    PyObject* values[6] = {0,0,0,0,0,0};
    if (unlikely(__pyx_kwds)) {
      Py_ssize_t kw_args;
      const Py_ssize_t pos_args = PyTuple_GET_SIZE(__pyx_args);
      switch (pos_args) {
        case  6: values[5] = PyTuple_GET_ITEM(__pyx_args, 5);
        CYTHON_FALLTHROUGH;
        case  5: values[4] = PyTuple_GET_ITEM(__pyx_args, 4);
        CYTHON_FALLTHROUGH;
        case  4: values[3] = PyTuple_GET_ITEM(__pyx_args, 3);
        CYTHON_FALLTHROUGH;
        case  3: values[2] = PyTuple_GET_ITEM(__pyx_args, 2);
        CYTHON_FALLTHROUGH;
        case  2: values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
        CYTHON_FALLTHROUGH;
        case  1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
        CYTHON_FALLTHROUGH;
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      kw_args = PyDict_Size(__pyx_kwds);
      switch (pos_args) {
        case  0:
        if (likely((values[0] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_loop)) != 0)) kw_args--;
        else goto __pyx_L5_argtuple_error;
        CYTHON_FALLTHROUGH;
        case  1:
        if (likely((values[1] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_thread_pool)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("__init__", 1, 6, 6, 1); __PYX_ERR(10, 838, __pyx_L3_error)
        }
        CYTHON_FALLTHROUGH;
        case  2:
        if (likely((values[2] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_generic_handlers)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("__init__", 1, 6, 6, 2); __PYX_ERR(10, 838, __pyx_L3_error)
        }
        CYTHON_FALLTHROUGH;
        case  3:
        if (likely((values[3] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_interceptors)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("__init__", 1, 6, 6, 3); __PYX_ERR(10, 838, __pyx_L3_error)
        }
        CYTHON_FALLTHROUGH;
        case  4:
        if (likely((values[4] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_options)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("__init__", 1, 6, 6, 4); __PYX_ERR(10, 838, __pyx_L3_error)
        }
        CYTHON_FALLTHROUGH;
        case  5:
        if (likely((values[5] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_maximum_concurrent_rpcs)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("__init__", 1, 6, 6, 5); __PYX_ERR(10, 838, __pyx_L3_error)
        }
      }
      if (unlikely(kw_args > 0)) {
        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "__init__") < 0)) __PYX_ERR(10, 838, __pyx_L3_error)
      }
    } else if (PyTuple_GET_SIZE(__pyx_args) != 6) {
      goto __pyx_L5_argtuple_error;
    } else {
      values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
      values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
      values[2] = PyTuple_GET_ITEM(__pyx_args, 2);
      values[3] = PyTuple_GET_ITEM(__pyx_args, 3);
      values[4] = PyTuple_GET_ITEM(__pyx_args, 4);
      values[5] = PyTuple_GET_ITEM(__pyx_args, 5);
    }
    __pyx_v_loop = values[0];
    __pyx_v_thread_pool = values[1];
    __pyx_v_generic_handlers = values[2];
    __pyx_v_interceptors = values[3];
    __pyx_v_options = values[4];
    __pyx_v_maximum_concurrent_rpcs = values[5];
  }
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("__init__", 1, 6, 6, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(10, 838, __pyx_L3_error)
  __pyx_L3_error:;
  __Pyx_AddTraceback("grpc._cython.cygrpc.AioServer.__init__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return -1;
  __pyx_L4_argument_unpacking_done:;
  __pyx_r = __pyx_pf_4grpc_7_cython_6cygrpc_9AioServer___init__(((struct __pyx_obj_4grpc_7_cython_6cygrpc_AioServer *)__pyx_v_self), __pyx_v_loop, __pyx_v_thread_pool, __pyx_v_generic_handlers, __pyx_v_interceptors, __pyx_v_options, __pyx_v_maximum_concurrent_rpcs);

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static int __pyx_pf_4grpc_7_cython_6cygrpc_9AioServer___init__(struct __pyx_obj_4grpc_7_cython_6cygrpc_AioServer *__pyx_v_self, PyObject *__pyx_v_loop, PyObject *__pyx_v_thread_pool, PyObject *__pyx_v_generic_handlers, PyObject *__pyx_v_interceptors, PyObject *__pyx_v_options, PyObject *__pyx_v_maximum_concurrent_rpcs) {
  int __pyx_r;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  PyObject *__pyx_t_2 = NULL;
  PyObject *__pyx_t_3 = NULL;
  int __pyx_t_4;
  int __pyx_t_5;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("__init__", 0);

  /* "src/python/grpcio/grpc/_cython/_cygrpc/aio/server.pyx.pxi":840
 *     def __init__(self, loop, thread_pool, generic_handlers, interceptors,
 *                  options, maximum_concurrent_rpcs):
 *         init_grpc_aio()             # <<<<<<<<<<<<<<
 *         # NOTE(lidiz) Core objects won't be deallocated automatically.
 *         # If AioServer.shutdown is not called, those objects will leak.
 */
  __pyx_t_1 = __pyx_f_4grpc_7_cython_6cygrpc_init_grpc_aio(0); if (unlikely(!__pyx_t_1)) __PYX_ERR(10, 840, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;

  /* "src/python/grpcio/grpc/_cython/_cygrpc/aio/server.pyx.pxi":844
 *         # If AioServer.shutdown is not called, those objects will leak.
 *         # TODO(rbellevi): Support xDS in aio server.
 *         self._server = Server(options, False)             # <<<<<<<<<<<<<<
 *         grpc_server_register_completion_queue(
 *             self._server.c_server,
 */
  __pyx_t_1 = PyTuple_New(2); if (unlikely(!__pyx_t_1)) __PYX_ERR(10, 844, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_INCREF(__pyx_v_options);
  __Pyx_GIVEREF(__pyx_v_options);
  PyTuple_SET_ITEM(__pyx_t_1, 0, __pyx_v_options);
  __Pyx_INCREF(Py_False);
  __Pyx_GIVEREF(Py_False);
  PyTuple_SET_ITEM(__pyx_t_1, 1, Py_False);
  __pyx_t_2 = __Pyx_PyObject_Call(((PyObject *)__pyx_ptype_4grpc_7_cython_6cygrpc_Server), __pyx_t_1, NULL); if (unlikely(!__pyx_t_2)) __PYX_ERR(10, 844, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  __Pyx_GIVEREF(__pyx_t_2);
  __Pyx_GOTREF(__pyx_v_self->_server);
  __Pyx_DECREF(((PyObject *)__pyx_v_self->_server));
  __pyx_v_self->_server = ((struct __pyx_obj_4grpc_7_cython_6cygrpc_Server *)__pyx_t_2);
  __pyx_t_2 = 0;

  /* "src/python/grpcio/grpc/_cython/_cygrpc/aio/server.pyx.pxi":845
 *         # TODO(rbellevi): Support xDS in aio server.
 *         self._server = Server(options, False)
 *         grpc_server_register_completion_queue(             # <<<<<<<<<<<<<<
 *             self._server.c_server,
 *             global_completion_queue(),
 */
  grpc_server_register_completion_queue(__pyx_v_self->_server->c_server, __pyx_f_4grpc_7_cython_6cygrpc_global_completion_queue(), NULL);

  /* "src/python/grpcio/grpc/_cython/_cygrpc/aio/server.pyx.pxi":851
 *         )
 * 
 *         self._loop = loop             # <<<<<<<<<<<<<<
 *         self._status = AIO_SERVER_STATUS_READY
 *         self._generic_handlers = []
 */
  __Pyx_INCREF(__pyx_v_loop);
  __Pyx_GIVEREF(__pyx_v_loop);
  __Pyx_GOTREF(__pyx_v_self->_loop);
  __Pyx_DECREF(__pyx_v_self->_loop);
  __pyx_v_self->_loop = __pyx_v_loop;

  /* "src/python/grpcio/grpc/_cython/_cygrpc/aio/server.pyx.pxi":852
 * 
 *         self._loop = loop
 *         self._status = AIO_SERVER_STATUS_READY             # <<<<<<<<<<<<<<
 *         self._generic_handlers = []
 *         self.add_generic_rpc_handlers(generic_handlers)
 */
  __pyx_v_self->_status = __pyx_e_4grpc_7_cython_6cygrpc_AIO_SERVER_STATUS_READY;

  /* "src/python/grpcio/grpc/_cython/_cygrpc/aio/server.pyx.pxi":853
 *         self._loop = loop
 *         self._status = AIO_SERVER_STATUS_READY
 *         self._generic_handlers = []             # <<<<<<<<<<<<<<
 *         self.add_generic_rpc_handlers(generic_handlers)
 *         self._serving_task = None
 */
  __pyx_t_2 = PyList_New(0); if (unlikely(!__pyx_t_2)) __PYX_ERR(10, 853, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __Pyx_GIVEREF(__pyx_t_2);
  __Pyx_GOTREF(__pyx_v_self->_generic_handlers);
  __Pyx_DECREF(__pyx_v_self->_generic_handlers);
  __pyx_v_self->_generic_handlers = ((PyObject*)__pyx_t_2);
  __pyx_t_2 = 0;

  /* "src/python/grpcio/grpc/_cython/_cygrpc/aio/server.pyx.pxi":854
 *         self._status = AIO_SERVER_STATUS_READY
 *         self._generic_handlers = []
 *         self.add_generic_rpc_handlers(generic_handlers)             # <<<<<<<<<<<<<<
 *         self._serving_task = None
 * 
 */
  __pyx_t_1 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_add_generic_rpc_handlers); if (unlikely(!__pyx_t_1)) __PYX_ERR(10, 854, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_t_3 = NULL;
  if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_1))) {
    __pyx_t_3 = PyMethod_GET_SELF(__pyx_t_1);
    if (likely(__pyx_t_3)) {
      PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_1);
      __Pyx_INCREF(__pyx_t_3);
      __Pyx_INCREF(function);
      __Pyx_DECREF_SET(__pyx_t_1, function);
    }
  }
  __pyx_t_2 = (__pyx_t_3) ? __Pyx_PyObject_Call2Args(__pyx_t_1, __pyx_t_3, __pyx_v_generic_handlers) : __Pyx_PyObject_CallOneArg(__pyx_t_1, __pyx_v_generic_handlers);
  __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0;
  if (unlikely(!__pyx_t_2)) __PYX_ERR(10, 854, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;

  /* "src/python/grpcio/grpc/_cython/_cygrpc/aio/server.pyx.pxi":855
 *         self._generic_handlers = []
 *         self.add_generic_rpc_handlers(generic_handlers)
 *         self._serving_task = None             # <<<<<<<<<<<<<<
 * 
 *         self._shutdown_lock = asyncio.Lock(loop=self._loop)
 */
  __Pyx_INCREF(Py_None);
  __Pyx_GIVEREF(Py_None);
  __Pyx_GOTREF(__pyx_v_self->_serving_task);
  __Pyx_DECREF(__pyx_v_self->_serving_task);
  __pyx_v_self->_serving_task = Py_None;

  /* "src/python/grpcio/grpc/_cython/_cygrpc/aio/server.pyx.pxi":857
 *         self._serving_task = None
 * 
 *         self._shutdown_lock = asyncio.Lock(loop=self._loop)             # <<<<<<<<<<<<<<
 *         self._shutdown_completed = self._loop.create_future()
 *         self._shutdown_callback_wrapper = CallbackWrapper(
 */
  __Pyx_GetModuleGlobalName(__pyx_t_2, __pyx_n_s_asyncio); if (unlikely(!__pyx_t_2)) __PYX_ERR(10, 857, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_t_2, __pyx_n_s_Lock); if (unlikely(!__pyx_t_1)) __PYX_ERR(10, 857, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  __pyx_t_2 = __Pyx_PyDict_NewPresized(1); if (unlikely(!__pyx_t_2)) __PYX_ERR(10, 857, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  if (PyDict_SetItem(__pyx_t_2, __pyx_n_s_loop, __pyx_v_self->_loop) < 0) __PYX_ERR(10, 857, __pyx_L1_error)
  __pyx_t_3 = __Pyx_PyObject_Call(__pyx_t_1, __pyx_empty_tuple, __pyx_t_2); if (unlikely(!__pyx_t_3)) __PYX_ERR(10, 857, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  __Pyx_GIVEREF(__pyx_t_3);
  __Pyx_GOTREF(__pyx_v_self->_shutdown_lock);
  __Pyx_DECREF(__pyx_v_self->_shutdown_lock);
  __pyx_v_self->_shutdown_lock = __pyx_t_3;
  __pyx_t_3 = 0;

  /* "src/python/grpcio/grpc/_cython/_cygrpc/aio/server.pyx.pxi":858
 * 
 *         self._shutdown_lock = asyncio.Lock(loop=self._loop)
 *         self._shutdown_completed = self._loop.create_future()             # <<<<<<<<<<<<<<
 *         self._shutdown_callback_wrapper = CallbackWrapper(
 *             self._shutdown_completed,
 */
  __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_v_self->_loop, __pyx_n_s_create_future); if (unlikely(!__pyx_t_2)) __PYX_ERR(10, 858, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __pyx_t_1 = NULL;
  if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_2))) {
    __pyx_t_1 = PyMethod_GET_SELF(__pyx_t_2);
    if (likely(__pyx_t_1)) {
      PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_2);
      __Pyx_INCREF(__pyx_t_1);
      __Pyx_INCREF(function);
      __Pyx_DECREF_SET(__pyx_t_2, function);
    }
  }
  __pyx_t_3 = (__pyx_t_1) ? __Pyx_PyObject_CallOneArg(__pyx_t_2, __pyx_t_1) : __Pyx_PyObject_CallNoArg(__pyx_t_2);
  __Pyx_XDECREF(__pyx_t_1); __pyx_t_1 = 0;
  if (unlikely(!__pyx_t_3)) __PYX_ERR(10, 858, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  __Pyx_GIVEREF(__pyx_t_3);
  __Pyx_GOTREF(__pyx_v_self->_shutdown_completed);
  __Pyx_DECREF(__pyx_v_self->_shutdown_completed);
  __pyx_v_self->_shutdown_completed = __pyx_t_3;
  __pyx_t_3 = 0;

  /* "src/python/grpcio/grpc/_cython/_cygrpc/aio/server.pyx.pxi":859
 *         self._shutdown_lock = asyncio.Lock(loop=self._loop)
 *         self._shutdown_completed = self._loop.create_future()
 *         self._shutdown_callback_wrapper = CallbackWrapper(             # <<<<<<<<<<<<<<
 *             self._shutdown_completed,
 *             self._loop,
 */
  __pyx_t_3 = PyTuple_New(3); if (unlikely(!__pyx_t_3)) __PYX_ERR(10, 859, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  __Pyx_INCREF(__pyx_v_self->_shutdown_completed);
  __Pyx_GIVEREF(__pyx_v_self->_shutdown_completed);
  PyTuple_SET_ITEM(__pyx_t_3, 0, __pyx_v_self->_shutdown_completed);
  __Pyx_INCREF(__pyx_v_self->_loop);
  __Pyx_GIVEREF(__pyx_v_self->_loop);
  PyTuple_SET_ITEM(__pyx_t_3, 1, __pyx_v_self->_loop);
  __Pyx_INCREF(((PyObject *)__pyx_v_4grpc_7_cython_6cygrpc_SERVER_SHUTDOWN_FAILURE_HANDLER));
  __Pyx_GIVEREF(((PyObject *)__pyx_v_4grpc_7_cython_6cygrpc_SERVER_SHUTDOWN_FAILURE_HANDLER));
  PyTuple_SET_ITEM(__pyx_t_3, 2, ((PyObject *)__pyx_v_4grpc_7_cython_6cygrpc_SERVER_SHUTDOWN_FAILURE_HANDLER));
  __pyx_t_2 = __Pyx_PyObject_Call(((PyObject *)__pyx_ptype_4grpc_7_cython_6cygrpc_CallbackWrapper), __pyx_t_3, NULL); if (unlikely(!__pyx_t_2)) __PYX_ERR(10, 859, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
  __Pyx_GIVEREF(__pyx_t_2);
  __Pyx_GOTREF(__pyx_v_self->_shutdown_callback_wrapper);
  __Pyx_DECREF(((PyObject *)__pyx_v_self->_shutdown_callback_wrapper));
  __pyx_v_self->_shutdown_callback_wrapper = ((struct __pyx_obj_4grpc_7_cython_6cygrpc_CallbackWrapper *)__pyx_t_2);
  __pyx_t_2 = 0;

  /* "src/python/grpcio/grpc/_cython/_cygrpc/aio/server.pyx.pxi":863
 *             self._loop,
 *             SERVER_SHUTDOWN_FAILURE_HANDLER)
 *         self._crash_exception = None             # <<<<<<<<<<<<<<
 * 
 *         if interceptors:
 */
  __Pyx_INCREF(Py_None);
  __Pyx_GIVEREF(Py_None);
  __Pyx_GOTREF(__pyx_v_self->_crash_exception);
  __Pyx_DECREF(__pyx_v_self->_crash_exception);
  __pyx_v_self->_crash_exception = Py_None;

  /* "src/python/grpcio/grpc/_cython/_cygrpc/aio/server.pyx.pxi":865
 *         self._crash_exception = None
 * 
 *         if interceptors:             # <<<<<<<<<<<<<<
 *             self._interceptors = interceptors
 *         else:
 */
  __pyx_t_4 = __Pyx_PyObject_IsTrue(__pyx_v_interceptors); if (unlikely(__pyx_t_4 < 0)) __PYX_ERR(10, 865, __pyx_L1_error)
  if (__pyx_t_4) {

    /* "src/python/grpcio/grpc/_cython/_cygrpc/aio/server.pyx.pxi":866
 * 
 *         if interceptors:
 *             self._interceptors = interceptors             # <<<<<<<<<<<<<<
 *         else:
 *             self._interceptors = ()
 */
    if (!(likely(PyTuple_CheckExact(__pyx_v_interceptors))||((__pyx_v_interceptors) == Py_None)||(PyErr_Format(PyExc_TypeError, "Expected %.16s, got %.200s", "tuple", Py_TYPE(__pyx_v_interceptors)->tp_name), 0))) __PYX_ERR(10, 866, __pyx_L1_error)
    __pyx_t_2 = __pyx_v_interceptors;
    __Pyx_INCREF(__pyx_t_2);
    __Pyx_GIVEREF(__pyx_t_2);
    __Pyx_GOTREF(__pyx_v_self->_interceptors);
    __Pyx_DECREF(__pyx_v_self->_interceptors);
    __pyx_v_self->_interceptors = ((PyObject*)__pyx_t_2);
    __pyx_t_2 = 0;

    /* "src/python/grpcio/grpc/_cython/_cygrpc/aio/server.pyx.pxi":865
 *         self._crash_exception = None
 * 
 *         if interceptors:             # <<<<<<<<<<<<<<
 *             self._interceptors = interceptors
 *         else:
 */
    goto __pyx_L3;
  }

  /* "src/python/grpcio/grpc/_cython/_cygrpc/aio/server.pyx.pxi":868
 *             self._interceptors = interceptors
 *         else:
 *             self._interceptors = ()             # <<<<<<<<<<<<<<
 * 
 *         self._thread_pool = thread_pool
 */
  /*else*/ {
    __Pyx_INCREF(__pyx_empty_tuple);
    __Pyx_GIVEREF(__pyx_empty_tuple);
    __Pyx_GOTREF(__pyx_v_self->_interceptors);
    __Pyx_DECREF(__pyx_v_self->_interceptors);
    __pyx_v_self->_interceptors = __pyx_empty_tuple;
  }
  __pyx_L3:;

  /* "src/python/grpcio/grpc/_cython/_cygrpc/aio/server.pyx.pxi":870
 *             self._interceptors = ()
 * 
 *         self._thread_pool = thread_pool             # <<<<<<<<<<<<<<
 *         if maximum_concurrent_rpcs is not None:
 *             self._limiter = _ConcurrentRpcLimiter(maximum_concurrent_rpcs,
 */
  __Pyx_INCREF(__pyx_v_thread_pool);
  __Pyx_GIVEREF(__pyx_v_thread_pool);
  __Pyx_GOTREF(__pyx_v_self->_thread_pool);
  __Pyx_DECREF(__pyx_v_self->_thread_pool);
  __pyx_v_self->_thread_pool = __pyx_v_thread_pool;

  /* "src/python/grpcio/grpc/_cython/_cygrpc/aio/server.pyx.pxi":871
 * 
 *         self._thread_pool = thread_pool
 *         if maximum_concurrent_rpcs is not None:             # <<<<<<<<<<<<<<
 *             self._limiter = _ConcurrentRpcLimiter(maximum_concurrent_rpcs,
 *                                                   loop)
 */
  __pyx_t_4 = (__pyx_v_maximum_concurrent_rpcs != Py_None);
  __pyx_t_5 = (__pyx_t_4 != 0);
  if (__pyx_t_5) {

    /* "src/python/grpcio/grpc/_cython/_cygrpc/aio/server.pyx.pxi":872
 *         self._thread_pool = thread_pool
 *         if maximum_concurrent_rpcs is not None:
 *             self._limiter = _ConcurrentRpcLimiter(maximum_concurrent_rpcs,             # <<<<<<<<<<<<<<
 *                                                   loop)
 * 
 */
    __pyx_t_2 = PyTuple_New(2); if (unlikely(!__pyx_t_2)) __PYX_ERR(10, 872, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_2);
    __Pyx_INCREF(__pyx_v_maximum_concurrent_rpcs);
    __Pyx_GIVEREF(__pyx_v_maximum_concurrent_rpcs);
    PyTuple_SET_ITEM(__pyx_t_2, 0, __pyx_v_maximum_concurrent_rpcs);
    __Pyx_INCREF(__pyx_v_loop);
    __Pyx_GIVEREF(__pyx_v_loop);
    PyTuple_SET_ITEM(__pyx_t_2, 1, __pyx_v_loop);
    __pyx_t_3 = __Pyx_PyObject_Call(((PyObject *)__pyx_ptype_4grpc_7_cython_6cygrpc__ConcurrentRpcLimiter), __pyx_t_2, NULL); if (unlikely(!__pyx_t_3)) __PYX_ERR(10, 872, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_3);
    __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
    __Pyx_GIVEREF(__pyx_t_3);
    __Pyx_GOTREF(__pyx_v_self->_limiter);
    __Pyx_DECREF(((PyObject *)__pyx_v_self->_limiter));
    __pyx_v_self->_limiter = ((struct __pyx_obj_4grpc_7_cython_6cygrpc__ConcurrentRpcLimiter *)__pyx_t_3);
    __pyx_t_3 = 0;

    /* "src/python/grpcio/grpc/_cython/_cygrpc/aio/server.pyx.pxi":871
 * 
 *         self._thread_pool = thread_pool
 *         if maximum_concurrent_rpcs is not None:             # <<<<<<<<<<<<<<
 *             self._limiter = _ConcurrentRpcLimiter(maximum_concurrent_rpcs,
 *                                                   loop)
 */
  }

  /* "src/python/grpcio/grpc/_cython/_cygrpc/aio/server.pyx.pxi":838
 * cdef class AioServer:
 * 
 *     def __init__(self, loop, thread_pool, generic_handlers, interceptors,             # <<<<<<<<<<<<<<
 *                  options, maximum_concurrent_rpcs):
 *         init_grpc_aio()
 */

  /* function exit code */
  __pyx_r = 0;
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_XDECREF(__pyx_t_3);
  __Pyx_AddTraceback("grpc._cython.cygrpc.AioServer.__init__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = -1;
  __pyx_L0:;
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "src/python/grpcio/grpc/_cython/_cygrpc/aio/server.pyx.pxi":875
 *                                                   loop)
 * 
 *     def add_generic_rpc_handlers(self, object generic_rpc_handlers):             # <<<<<<<<<<<<<<
 *         self._generic_handlers.extend(generic_rpc_handlers)
 * 
 */

/* Python wrapper */
static PyObject *__pyx_pw_4grpc_7_cython_6cygrpc_9AioServer_3add_generic_rpc_handlers(PyObject *__pyx_v_self, PyObject *__pyx_v_generic_rpc_handlers); /*proto*/
static PyObject *__pyx_pw_4grpc_7_cython_6cygrpc_9AioServer_3add_generic_rpc_handlers(PyObject *__pyx_v_self, PyObject *__pyx_v_generic_rpc_handlers) {
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("add_generic_rpc_handlers (wrapper)", 0);
  __pyx_r = __pyx_pf_4grpc_7_cython_6cygrpc_9AioServer_2add_generic_rpc_handlers(((struct __pyx_obj_4grpc_7_cython_6cygrpc_AioServer *)__pyx_v_self), ((PyObject *)__pyx_v_generic_rpc_handlers));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_4grpc_7_cython_6cygrpc_9AioServer_2add_generic_rpc_handlers(struct __pyx_obj_4grpc_7_cython_6cygrpc_AioServer *__pyx_v_self, PyObject *__pyx_v_generic_rpc_handlers) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  int __pyx_t_1;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("add_generic_rpc_handlers", 0);

  /* "src/python/grpcio/grpc/_cython/_cygrpc/aio/server.pyx.pxi":876
 * 
 *     def add_generic_rpc_handlers(self, object generic_rpc_handlers):
 *         self._generic_handlers.extend(generic_rpc_handlers)             # <<<<<<<<<<<<<<
 * 
 *     def add_insecure_port(self, address):
 */
  if (unlikely(__pyx_v_self->_generic_handlers == Py_None)) {
    PyErr_Format(PyExc_AttributeError, "'NoneType' object has no attribute '%.30s'", "extend");
    __PYX_ERR(10, 876, __pyx_L1_error)
  }
  __pyx_t_1 = __Pyx_PyList_Extend(__pyx_v_self->_generic_handlers, __pyx_v_generic_rpc_handlers); if (unlikely(__pyx_t_1 == ((int)-1))) __PYX_ERR(10, 876, __pyx_L1_error)

  /* "src/python/grpcio/grpc/_cython/_cygrpc/aio/server.pyx.pxi":875
 *                                                   loop)
 * 
 *     def add_generic_rpc_handlers(self, object generic_rpc_handlers):             # <<<<<<<<<<<<<<
 *         self._generic_handlers.extend(generic_rpc_handlers)
 * 
 */

  /* function exit code */
  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_AddTraceback("grpc._cython.cygrpc.AioServer.add_generic_rpc_handlers", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "src/python/grpcio/grpc/_cython/_cygrpc/aio/server.pyx.pxi":878
 *         self._generic_handlers.extend(generic_rpc_handlers)
 * 
 *     def add_insecure_port(self, address):             # <<<<<<<<<<<<<<
 *         return self._server.add_http2_port(address)
 * 
 */

/* Python wrapper */
static PyObject *__pyx_pw_4grpc_7_cython_6cygrpc_9AioServer_5add_insecure_port(PyObject *__pyx_v_self, PyObject *__pyx_v_address); /*proto*/
static PyObject *__pyx_pw_4grpc_7_cython_6cygrpc_9AioServer_5add_insecure_port(PyObject *__pyx_v_self, PyObject *__pyx_v_address) {
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("add_insecure_port (wrapper)", 0);
  __pyx_r = __pyx_pf_4grpc_7_cython_6cygrpc_9AioServer_4add_insecure_port(((struct __pyx_obj_4grpc_7_cython_6cygrpc_AioServer *)__pyx_v_self), ((PyObject *)__pyx_v_address));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_4grpc_7_cython_6cygrpc_9AioServer_4add_insecure_port(struct __pyx_obj_4grpc_7_cython_6cygrpc_AioServer *__pyx_v_self, PyObject *__pyx_v_address) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  PyObject *__pyx_t_2 = NULL;
  PyObject *__pyx_t_3 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("add_insecure_port", 0);

  /* "src/python/grpcio/grpc/_cython/_cygrpc/aio/server.pyx.pxi":879
 * 
 *     def add_insecure_port(self, address):
 *         return self._server.add_http2_port(address)             # <<<<<<<<<<<<<<
 * 
 *     def add_secure_port(self, address, server_credentials):
 */
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_2 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self->_server), __pyx_n_s_add_http2_port); if (unlikely(!__pyx_t_2)) __PYX_ERR(10, 879, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __pyx_t_3 = NULL;
  if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_2))) {
    __pyx_t_3 = PyMethod_GET_SELF(__pyx_t_2);
    if (likely(__pyx_t_3)) {
      PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_2);
      __Pyx_INCREF(__pyx_t_3);
      __Pyx_INCREF(function);
      __Pyx_DECREF_SET(__pyx_t_2, function);
    }
  }
  __pyx_t_1 = (__pyx_t_3) ? __Pyx_PyObject_Call2Args(__pyx_t_2, __pyx_t_3, __pyx_v_address) : __Pyx_PyObject_CallOneArg(__pyx_t_2, __pyx_v_address);
  __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0;
  if (unlikely(!__pyx_t_1)) __PYX_ERR(10, 879, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  __pyx_r = __pyx_t_1;
  __pyx_t_1 = 0;
  goto __pyx_L0;

  /* "src/python/grpcio/grpc/_cython/_cygrpc/aio/server.pyx.pxi":878
 *         self._generic_handlers.extend(generic_rpc_handlers)
 * 
 *     def add_insecure_port(self, address):             # <<<<<<<<<<<<<<
 *         return self._server.add_http2_port(address)
 * 
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_XDECREF(__pyx_t_3);
  __Pyx_AddTraceback("grpc._cython.cygrpc.AioServer.add_insecure_port", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "src/python/grpcio/grpc/_cython/_cygrpc/aio/server.pyx.pxi":881
 *         return self._server.add_http2_port(address)
 * 
 *     def add_secure_port(self, address, server_credentials):             # <<<<<<<<<<<<<<
 *         return self._server.add_http2_port(address,
 *                                            server_credentials._credentials)
 */

/* Python wrapper */
static PyObject *__pyx_pw_4grpc_7_cython_6cygrpc_9AioServer_7add_secure_port(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
static PyObject *__pyx_pw_4grpc_7_cython_6cygrpc_9AioServer_7add_secure_port(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
  PyObject *__pyx_v_address = 0;
  PyObject *__pyx_v_server_credentials = 0;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("add_secure_port (wrapper)", 0);
  {
    static PyObject **__pyx_pyargnames[] = {&__pyx_n_s_address,&__pyx_n_s_server_credentials,0};
    PyObject* values[2] = {0,0};
    if (unlikely(__pyx_kwds)) {
      Py_ssize_t kw_args;
      const Py_ssize_t pos_args = PyTuple_GET_SIZE(__pyx_args);
      switch (pos_args) {
        case  2: values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
        CYTHON_FALLTHROUGH;
        case  1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
        CYTHON_FALLTHROUGH;
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      kw_args = PyDict_Size(__pyx_kwds);
      switch (pos_args) {
        case  0:
        if (likely((values[0] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_address)) != 0)) kw_args--;
        else goto __pyx_L5_argtuple_error;
        CYTHON_FALLTHROUGH;
        case  1:
        if (likely((values[1] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_server_credentials)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("add_secure_port", 1, 2, 2, 1); __PYX_ERR(10, 881, __pyx_L3_error)
        }
      }
      if (unlikely(kw_args > 0)) {
        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "add_secure_port") < 0)) __PYX_ERR(10, 881, __pyx_L3_error)
      }
    } else if (PyTuple_GET_SIZE(__pyx_args) != 2) {
      goto __pyx_L5_argtuple_error;
    } else {
      values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
      values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
    }
    __pyx_v_address = values[0];
    __pyx_v_server_credentials = values[1];
  }
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("add_secure_port", 1, 2, 2, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(10, 881, __pyx_L3_error)
  __pyx_L3_error:;
  __Pyx_AddTraceback("grpc._cython.cygrpc.AioServer.add_secure_port", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  __pyx_r = __pyx_pf_4grpc_7_cython_6cygrpc_9AioServer_6add_secure_port(((struct __pyx_obj_4grpc_7_cython_6cygrpc_AioServer *)__pyx_v_self), __pyx_v_address, __pyx_v_server_credentials);

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_4grpc_7_cython_6cygrpc_9AioServer_6add_secure_port(struct __pyx_obj_4grpc_7_cython_6cygrpc_AioServer *__pyx_v_self, PyObject *__pyx_v_address, PyObject *__pyx_v_server_credentials) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  PyObject *__pyx_t_2 = NULL;
  PyObject *__pyx_t_3 = NULL;
  PyObject *__pyx_t_4 = NULL;
  int __pyx_t_5;
  PyObject *__pyx_t_6 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("add_secure_port", 0);

  /* "src/python/grpcio/grpc/_cython/_cygrpc/aio/server.pyx.pxi":882
 * 
 *     def add_secure_port(self, address, server_credentials):
 *         return self._server.add_http2_port(address,             # <<<<<<<<<<<<<<
 *                                            server_credentials._credentials)
 * 
 */
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_2 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self->_server), __pyx_n_s_add_http2_port); if (unlikely(!__pyx_t_2)) __PYX_ERR(10, 882, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);

  /* "src/python/grpcio/grpc/_cython/_cygrpc/aio/server.pyx.pxi":883
 *     def add_secure_port(self, address, server_credentials):
 *         return self._server.add_http2_port(address,
 *                                            server_credentials._credentials)             # <<<<<<<<<<<<<<
 * 
 *     async def _request_call(self):
 */
  __pyx_t_3 = __Pyx_PyObject_GetAttrStr(__pyx_v_server_credentials, __pyx_n_s_credentials_2); if (unlikely(!__pyx_t_3)) __PYX_ERR(10, 883, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  __pyx_t_4 = NULL;
  __pyx_t_5 = 0;
  if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_2))) {
    __pyx_t_4 = PyMethod_GET_SELF(__pyx_t_2);
    if (likely(__pyx_t_4)) {
      PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_2);
      __Pyx_INCREF(__pyx_t_4);
      __Pyx_INCREF(function);
      __Pyx_DECREF_SET(__pyx_t_2, function);
      __pyx_t_5 = 1;
    }
  }
  #if CYTHON_FAST_PYCALL
  if (PyFunction_Check(__pyx_t_2)) {
    PyObject *__pyx_temp[3] = {__pyx_t_4, __pyx_v_address, __pyx_t_3};
    __pyx_t_1 = __Pyx_PyFunction_FastCall(__pyx_t_2, __pyx_temp+1-__pyx_t_5, 2+__pyx_t_5); if (unlikely(!__pyx_t_1)) __PYX_ERR(10, 882, __pyx_L1_error)
    __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0;
    __Pyx_GOTREF(__pyx_t_1);
    __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
  } else
  #endif
  #if CYTHON_FAST_PYCCALL
  if (__Pyx_PyFastCFunction_Check(__pyx_t_2)) {
    PyObject *__pyx_temp[3] = {__pyx_t_4, __pyx_v_address, __pyx_t_3};
    __pyx_t_1 = __Pyx_PyCFunction_FastCall(__pyx_t_2, __pyx_temp+1-__pyx_t_5, 2+__pyx_t_5); if (unlikely(!__pyx_t_1)) __PYX_ERR(10, 882, __pyx_L1_error)
    __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0;
    __Pyx_GOTREF(__pyx_t_1);
    __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
  } else
  #endif
  {
    __pyx_t_6 = PyTuple_New(2+__pyx_t_5); if (unlikely(!__pyx_t_6)) __PYX_ERR(10, 882, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_6);
    if (__pyx_t_4) {
      __Pyx_GIVEREF(__pyx_t_4); PyTuple_SET_ITEM(__pyx_t_6, 0, __pyx_t_4); __pyx_t_4 = NULL;
    }
    __Pyx_INCREF(__pyx_v_address);
    __Pyx_GIVEREF(__pyx_v_address);
    PyTuple_SET_ITEM(__pyx_t_6, 0+__pyx_t_5, __pyx_v_address);
    __Pyx_GIVEREF(__pyx_t_3);
    PyTuple_SET_ITEM(__pyx_t_6, 1+__pyx_t_5, __pyx_t_3);
    __pyx_t_3 = 0;
    __pyx_t_1 = __Pyx_PyObject_Call(__pyx_t_2, __pyx_t_6, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(10, 882, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_1);
    __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
  }
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  __pyx_r = __pyx_t_1;
  __pyx_t_1 = 0;
  goto __pyx_L0;

  /* "src/python/grpcio/grpc/_cython/_cygrpc/aio/server.pyx.pxi":881
 *         return self._server.add_http2_port(address)
 * 
 *     def add_secure_port(self, address, server_credentials):             # <<<<<<<<<<<<<<
 *         return self._server.add_http2_port(address,
 *                                            server_credentials._credentials)
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_XDECREF(__pyx_t_3);
  __Pyx_XDECREF(__pyx_t_4);
  __Pyx_XDECREF(__pyx_t_6);
  __Pyx_AddTraceback("grpc._cython.cygrpc.AioServer.add_secure_port", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}
static PyObject *__pyx_gb_4grpc_7_cython_6cygrpc_9AioServer_10generator40(__pyx_CoroutineObject *__pyx_generator, CYTHON_UNUSED PyThreadState *__pyx_tstate, PyObject *__pyx_sent_value); /* proto */

/* "src/python/grpcio/grpc/_cython/_cygrpc/aio/server.pyx.pxi":885
 *                                            server_credentials._credentials)
 * 
 *     async def _request_call(self):             # <<<<<<<<<<<<<<
 *         cdef grpc_call_error error
 *         cdef RPCState rpc_state = RPCState(self)
 */

/* Python wrapper */
static PyObject *__pyx_pw_4grpc_7_cython_6cygrpc_9AioServer_9_request_call(PyObject *__pyx_v_self, CYTHON_UNUSED PyObject *unused); /*proto*/
static PyObject *__pyx_pw_4grpc_7_cython_6cygrpc_9AioServer_9_request_call(PyObject *__pyx_v_self, CYTHON_UNUSED PyObject *unused) {
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("_request_call (wrapper)", 0);
  __pyx_r = __pyx_pf_4grpc_7_cython_6cygrpc_9AioServer_8_request_call(((struct __pyx_obj_4grpc_7_cython_6cygrpc_AioServer *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_4grpc_7_cython_6cygrpc_9AioServer_8_request_call(struct __pyx_obj_4grpc_7_cython_6cygrpc_AioServer *__pyx_v_self) {
  struct __pyx_obj_4grpc_7_cython_6cygrpc___pyx_scope_struct_52__request_call *__pyx_cur_scope;
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("_request_call", 0);
  __pyx_cur_scope = (struct __pyx_obj_4grpc_7_cython_6cygrpc___pyx_scope_struct_52__request_call *)__pyx_tp_new_4grpc_7_cython_6cygrpc___pyx_scope_struct_52__request_call(__pyx_ptype_4grpc_7_cython_6cygrpc___pyx_scope_struct_52__request_call, __pyx_empty_tuple, NULL);
  if (unlikely(!__pyx_cur_scope)) {
    __pyx_cur_scope = ((struct __pyx_obj_4grpc_7_cython_6cygrpc___pyx_scope_struct_52__request_call *)Py_None);
    __Pyx_INCREF(Py_None);
    __PYX_ERR(10, 885, __pyx_L1_error)
  } else {
    __Pyx_GOTREF(__pyx_cur_scope);
  }
  __pyx_cur_scope->__pyx_v_self = __pyx_v_self;
  __Pyx_INCREF((PyObject *)__pyx_cur_scope->__pyx_v_self);
  __Pyx_GIVEREF((PyObject *)__pyx_cur_scope->__pyx_v_self);
  {
    __pyx_CoroutineObject *gen = __Pyx_Coroutine_New((__pyx_coroutine_body_t) __pyx_gb_4grpc_7_cython_6cygrpc_9AioServer_10generator40, NULL, (PyObject *) __pyx_cur_scope, __pyx_n_s_request_call, __pyx_n_s_AioServer__request_call, __pyx_n_s_grpc__cython_cygrpc); if (unlikely(!gen)) __PYX_ERR(10, 885, __pyx_L1_error)
    __Pyx_DECREF(__pyx_cur_scope);
    __Pyx_RefNannyFinishContext();
    return (PyObject *) gen;
  }

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_AddTraceback("grpc._cython.cygrpc.AioServer._request_call", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __Pyx_DECREF(((PyObject *)__pyx_cur_scope));
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_gb_4grpc_7_cython_6cygrpc_9AioServer_10generator40(__pyx_CoroutineObject *__pyx_generator, CYTHON_UNUSED PyThreadState *__pyx_tstate, PyObject *__pyx_sent_value) /* generator body */
{
  struct __pyx_obj_4grpc_7_cython_6cygrpc___pyx_scope_struct_52__request_call *__pyx_cur_scope = ((struct __pyx_obj_4grpc_7_cython_6cygrpc___pyx_scope_struct_52__request_call *)__pyx_generator->closure);
  PyObject *__pyx_r = NULL;
  PyObject *__pyx_t_1 = NULL;
  PyObject *__pyx_t_2 = NULL;
  PyObject *__pyx_t_3 = NULL;
  int __pyx_t_4;
  PyObject *__pyx_t_5 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("_request_call", 0);
  switch (__pyx_generator->resume_label) {
    case 0: goto __pyx_L3_first_run;
    case 1: goto __pyx_L5_resume_from_await;
    default: /* CPython raises the right error here */
    __Pyx_RefNannyFinishContext();
    return NULL;
  }
  __pyx_L3_first_run:;
  if (unlikely(!__pyx_sent_value)) __PYX_ERR(10, 885, __pyx_L1_error)

  /* "src/python/grpcio/grpc/_cython/_cygrpc/aio/server.pyx.pxi":887
 *     async def _request_call(self):
 *         cdef grpc_call_error error
 *         cdef RPCState rpc_state = RPCState(self)             # <<<<<<<<<<<<<<
 *         cdef object future = self._loop.create_future()
 *         cdef CallbackWrapper wrapper = CallbackWrapper(
 */
  __pyx_t_1 = __Pyx_PyObject_CallOneArg(((PyObject *)__pyx_ptype_4grpc_7_cython_6cygrpc_RPCState), ((PyObject *)__pyx_cur_scope->__pyx_v_self)); if (unlikely(!__pyx_t_1)) __PYX_ERR(10, 887, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_GIVEREF(__pyx_t_1);
  __pyx_cur_scope->__pyx_v_rpc_state = ((struct __pyx_obj_4grpc_7_cython_6cygrpc_RPCState *)__pyx_t_1);
  __pyx_t_1 = 0;

  /* "src/python/grpcio/grpc/_cython/_cygrpc/aio/server.pyx.pxi":888
 *         cdef grpc_call_error error
 *         cdef RPCState rpc_state = RPCState(self)
 *         cdef object future = self._loop.create_future()             # <<<<<<<<<<<<<<
 *         cdef CallbackWrapper wrapper = CallbackWrapper(
 *             future,
 */
  __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_cur_scope->__pyx_v_self->_loop, __pyx_n_s_create_future); if (unlikely(!__pyx_t_2)) __PYX_ERR(10, 888, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __pyx_t_3 = NULL;
  if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_2))) {
    __pyx_t_3 = PyMethod_GET_SELF(__pyx_t_2);
    if (likely(__pyx_t_3)) {
      PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_2);
      __Pyx_INCREF(__pyx_t_3);
      __Pyx_INCREF(function);
      __Pyx_DECREF_SET(__pyx_t_2, function);
    }
  }
  __pyx_t_1 = (__pyx_t_3) ? __Pyx_PyObject_CallOneArg(__pyx_t_2, __pyx_t_3) : __Pyx_PyObject_CallNoArg(__pyx_t_2);
  __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0;
  if (unlikely(!__pyx_t_1)) __PYX_ERR(10, 888, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  __Pyx_GIVEREF(__pyx_t_1);
  __pyx_cur_scope->__pyx_v_future = __pyx_t_1;
  __pyx_t_1 = 0;

  /* "src/python/grpcio/grpc/_cython/_cygrpc/aio/server.pyx.pxi":889
 *         cdef RPCState rpc_state = RPCState(self)
 *         cdef object future = self._loop.create_future()
 *         cdef CallbackWrapper wrapper = CallbackWrapper(             # <<<<<<<<<<<<<<
 *             future,
 *             self._loop,
 */
  __pyx_t_1 = PyTuple_New(3); if (unlikely(!__pyx_t_1)) __PYX_ERR(10, 889, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_INCREF(__pyx_cur_scope->__pyx_v_future);
  __Pyx_GIVEREF(__pyx_cur_scope->__pyx_v_future);
  PyTuple_SET_ITEM(__pyx_t_1, 0, __pyx_cur_scope->__pyx_v_future);
  __Pyx_INCREF(__pyx_cur_scope->__pyx_v_self->_loop);
  __Pyx_GIVEREF(__pyx_cur_scope->__pyx_v_self->_loop);
  PyTuple_SET_ITEM(__pyx_t_1, 1, __pyx_cur_scope->__pyx_v_self->_loop);
  __Pyx_INCREF(((PyObject *)__pyx_v_4grpc_7_cython_6cygrpc_REQUEST_CALL_FAILURE_HANDLER));
  __Pyx_GIVEREF(((PyObject *)__pyx_v_4grpc_7_cython_6cygrpc_REQUEST_CALL_FAILURE_HANDLER));
  PyTuple_SET_ITEM(__pyx_t_1, 2, ((PyObject *)__pyx_v_4grpc_7_cython_6cygrpc_REQUEST_CALL_FAILURE_HANDLER));
  __pyx_t_2 = __Pyx_PyObject_Call(((PyObject *)__pyx_ptype_4grpc_7_cython_6cygrpc_CallbackWrapper), __pyx_t_1, NULL); if (unlikely(!__pyx_t_2)) __PYX_ERR(10, 889, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  __Pyx_GIVEREF(__pyx_t_2);
  __pyx_cur_scope->__pyx_v_wrapper = ((struct __pyx_obj_4grpc_7_cython_6cygrpc_CallbackWrapper *)__pyx_t_2);
  __pyx_t_2 = 0;

  /* "src/python/grpcio/grpc/_cython/_cygrpc/aio/server.pyx.pxi":893
 *             self._loop,
 *             REQUEST_CALL_FAILURE_HANDLER)
 *         error = grpc_server_request_call(             # <<<<<<<<<<<<<<
 *             self._server.c_server, &rpc_state.call, &rpc_state.details,
 *             &rpc_state.request_metadata,
 */
  __pyx_cur_scope->__pyx_v_error = grpc_server_request_call(__pyx_cur_scope->__pyx_v_self->_server->c_server, (&__pyx_cur_scope->__pyx_v_rpc_state->__pyx_base.call), (&__pyx_cur_scope->__pyx_v_rpc_state->details), (&__pyx_cur_scope->__pyx_v_rpc_state->request_metadata), __pyx_f_4grpc_7_cython_6cygrpc_global_completion_queue(), __pyx_f_4grpc_7_cython_6cygrpc_global_completion_queue(), ((struct __pyx_vtabstruct_4grpc_7_cython_6cygrpc_CallbackWrapper *)__pyx_cur_scope->__pyx_v_wrapper->__pyx_vtab)->c_functor(__pyx_cur_scope->__pyx_v_wrapper));

  /* "src/python/grpcio/grpc/_cython/_cygrpc/aio/server.pyx.pxi":899
 *             wrapper.c_functor()
 *         )
 *         if error != GRPC_CALL_OK:             # <<<<<<<<<<<<<<
 *             raise InternalError("Error in grpc_server_request_call: %s" % error)
 * 
 */
  __pyx_t_4 = ((__pyx_cur_scope->__pyx_v_error != GRPC_CALL_OK) != 0);
  if (unlikely(__pyx_t_4)) {

    /* "src/python/grpcio/grpc/_cython/_cygrpc/aio/server.pyx.pxi":900
 *         )
 *         if error != GRPC_CALL_OK:
 *             raise InternalError("Error in grpc_server_request_call: %s" % error)             # <<<<<<<<<<<<<<
 * 
 *         await future
 */
    __Pyx_GetModuleGlobalName(__pyx_t_1, __pyx_n_s_InternalError); if (unlikely(!__pyx_t_1)) __PYX_ERR(10, 900, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_1);
    __pyx_t_3 = __Pyx_PyInt_From_grpc_call_error(__pyx_cur_scope->__pyx_v_error); if (unlikely(!__pyx_t_3)) __PYX_ERR(10, 900, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_3);
    __pyx_t_5 = __Pyx_PyString_Format(__pyx_kp_s_Error_in_grpc_server_request_cal, __pyx_t_3); if (unlikely(!__pyx_t_5)) __PYX_ERR(10, 900, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_5);
    __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
    __pyx_t_3 = NULL;
    if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_1))) {
      __pyx_t_3 = PyMethod_GET_SELF(__pyx_t_1);
      if (likely(__pyx_t_3)) {
        PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_1);
        __Pyx_INCREF(__pyx_t_3);
        __Pyx_INCREF(function);
        __Pyx_DECREF_SET(__pyx_t_1, function);
      }
    }
    __pyx_t_2 = (__pyx_t_3) ? __Pyx_PyObject_Call2Args(__pyx_t_1, __pyx_t_3, __pyx_t_5) : __Pyx_PyObject_CallOneArg(__pyx_t_1, __pyx_t_5);
    __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0;
    __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
    if (unlikely(!__pyx_t_2)) __PYX_ERR(10, 900, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_2);
    __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
    __Pyx_Raise(__pyx_t_2, 0, 0, 0);
    __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
    __PYX_ERR(10, 900, __pyx_L1_error)

    /* "src/python/grpcio/grpc/_cython/_cygrpc/aio/server.pyx.pxi":899
 *             wrapper.c_functor()
 *         )
 *         if error != GRPC_CALL_OK:             # <<<<<<<<<<<<<<
 *             raise InternalError("Error in grpc_server_request_call: %s" % error)
 * 
 */
  }

  /* "src/python/grpcio/grpc/_cython/_cygrpc/aio/server.pyx.pxi":902
 *             raise InternalError("Error in grpc_server_request_call: %s" % error)
 * 
 *         await future             # <<<<<<<<<<<<<<
 *         return rpc_state
 * 
 */
  __pyx_r = __Pyx_Coroutine_Yield_From(__pyx_generator, __pyx_cur_scope->__pyx_v_future);
  __Pyx_XGOTREF(__pyx_r);
  if (likely(__pyx_r)) {
    __Pyx_XGIVEREF(__pyx_r);
    __Pyx_RefNannyFinishContext();
    __Pyx_Coroutine_ResetAndClearException(__pyx_generator);
    /* return from generator, awaiting value */
    __pyx_generator->resume_label = 1;
    return __pyx_r;
    __pyx_L5_resume_from_await:;
    if (unlikely(!__pyx_sent_value)) __PYX_ERR(10, 902, __pyx_L1_error)
  } else {
    PyObject* exc_type = __Pyx_PyErr_Occurred();
    if (exc_type) {
      if (likely(exc_type == PyExc_StopIteration || (exc_type != PyExc_GeneratorExit && __Pyx_PyErr_GivenExceptionMatches(exc_type, PyExc_StopIteration)))) PyErr_Clear();
      else __PYX_ERR(10, 902, __pyx_L1_error)
    }
  }

  /* "src/python/grpcio/grpc/_cython/_cygrpc/aio/server.pyx.pxi":903
 * 
 *         await future
 *         return rpc_state             # <<<<<<<<<<<<<<
 * 
 *     async def _server_main_loop(self,
 */
  __Pyx_XDECREF(__pyx_r);
  __pyx_r = NULL; __Pyx_ReturnWithStopIteration(((PyObject *)__pyx_cur_scope->__pyx_v_rpc_state));
  goto __pyx_L0;
  CYTHON_MAYBE_UNUSED_VAR(__pyx_cur_scope);

  /* "src/python/grpcio/grpc/_cython/_cygrpc/aio/server.pyx.pxi":885
 *                                            server_credentials._credentials)
 * 
 *     async def _request_call(self):             # <<<<<<<<<<<<<<
 *         cdef grpc_call_error error
 *         cdef RPCState rpc_state = RPCState(self)
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_XDECREF(__pyx_t_3);
  __Pyx_XDECREF(__pyx_t_5);
  __Pyx_AddTraceback("_request_call", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_L0:;
  __Pyx_XDECREF(__pyx_r); __pyx_r = 0;
  #if !CYTHON_USE_EXC_INFO_STACK
  __Pyx_Coroutine_ResetAndClearException(__pyx_generator);
  #endif
  __pyx_generator->resume_label = -1;
  __Pyx_Coroutine_clear((PyObject*)__pyx_generator);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}
static PyObject *__pyx_gb_4grpc_7_cython_6cygrpc_9AioServer_13generator41(__pyx_CoroutineObject *__pyx_generator, CYTHON_UNUSED PyThreadState *__pyx_tstate, PyObject *__pyx_sent_value); /* proto */

/* "src/python/grpcio/grpc/_cython/_cygrpc/aio/server.pyx.pxi":905
 *         return rpc_state
 * 
 *     async def _server_main_loop(self,             # <<<<<<<<<<<<<<
 *                                 object server_started):
 *         self._server.start(backup_queue=False)
 */

/* Python wrapper */
static PyObject *__pyx_pw_4grpc_7_cython_6cygrpc_9AioServer_12_server_main_loop(PyObject *__pyx_v_self, PyObject *__pyx_v_server_started); /*proto*/
static PyObject *__pyx_pw_4grpc_7_cython_6cygrpc_9AioServer_12_server_main_loop(PyObject *__pyx_v_self, PyObject *__pyx_v_server_started) {
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("_server_main_loop (wrapper)", 0);
  __pyx_r = __pyx_pf_4grpc_7_cython_6cygrpc_9AioServer_11_server_main_loop(((struct __pyx_obj_4grpc_7_cython_6cygrpc_AioServer *)__pyx_v_self), ((PyObject *)__pyx_v_server_started));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_4grpc_7_cython_6cygrpc_9AioServer_11_server_main_loop(struct __pyx_obj_4grpc_7_cython_6cygrpc_AioServer *__pyx_v_self, PyObject *__pyx_v_server_started) {
  struct __pyx_obj_4grpc_7_cython_6cygrpc___pyx_scope_struct_53__server_main_loop *__pyx_cur_scope;
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("_server_main_loop", 0);
  __pyx_cur_scope = (struct __pyx_obj_4grpc_7_cython_6cygrpc___pyx_scope_struct_53__server_main_loop *)__pyx_tp_new_4grpc_7_cython_6cygrpc___pyx_scope_struct_53__server_main_loop(__pyx_ptype_4grpc_7_cython_6cygrpc___pyx_scope_struct_53__server_main_loop, __pyx_empty_tuple, NULL);
  if (unlikely(!__pyx_cur_scope)) {
    __pyx_cur_scope = ((struct __pyx_obj_4grpc_7_cython_6cygrpc___pyx_scope_struct_53__server_main_loop *)Py_None);
    __Pyx_INCREF(Py_None);
    __PYX_ERR(10, 905, __pyx_L1_error)
  } else {
    __Pyx_GOTREF(__pyx_cur_scope);
  }
  __pyx_cur_scope->__pyx_v_self = __pyx_v_self;
  __Pyx_INCREF((PyObject *)__pyx_cur_scope->__pyx_v_self);
  __Pyx_GIVEREF((PyObject *)__pyx_cur_scope->__pyx_v_self);
  __pyx_cur_scope->__pyx_v_server_started = __pyx_v_server_started;
  __Pyx_INCREF(__pyx_cur_scope->__pyx_v_server_started);
  __Pyx_GIVEREF(__pyx_cur_scope->__pyx_v_server_started);
  {
    __pyx_CoroutineObject *gen = __Pyx_Coroutine_New((__pyx_coroutine_body_t) __pyx_gb_4grpc_7_cython_6cygrpc_9AioServer_13generator41, NULL, (PyObject *) __pyx_cur_scope, __pyx_n_s_server_main_loop, __pyx_n_s_AioServer__server_main_loop, __pyx_n_s_grpc__cython_cygrpc); if (unlikely(!gen)) __PYX_ERR(10, 905, __pyx_L1_error)
    __Pyx_DECREF(__pyx_cur_scope);
    __Pyx_RefNannyFinishContext();
    return (PyObject *) gen;
  }

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_AddTraceback("grpc._cython.cygrpc.AioServer._server_main_loop", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __Pyx_DECREF(((PyObject *)__pyx_cur_scope));
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_gb_4grpc_7_cython_6cygrpc_9AioServer_13generator41(__pyx_CoroutineObject *__pyx_generator, CYTHON_UNUSED PyThreadState *__pyx_tstate, PyObject *__pyx_sent_value) /* generator body */
{
  struct __pyx_obj_4grpc_7_cython_6cygrpc___pyx_scope_struct_53__server_main_loop *__pyx_cur_scope = ((struct __pyx_obj_4grpc_7_cython_6cygrpc___pyx_scope_struct_53__server_main_loop *)__pyx_generator->closure);
  PyObject *__pyx_r = NULL;
  PyObject *__pyx_t_1 = NULL;
  PyObject *__pyx_t_2 = NULL;
  PyObject *__pyx_t_3 = NULL;
  int __pyx_t_4;
  int __pyx_t_5;
  int __pyx_t_6;
  PyObject *__pyx_t_7 = NULL;
  PyObject *__pyx_t_8 = NULL;
  PyObject *__pyx_t_9 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("_server_main_loop", 0);
  switch (__pyx_generator->resume_label) {
    case 0: goto __pyx_L3_first_run;
    case 1: goto __pyx_L8_resume_from_await;
    case 2: goto __pyx_L9_resume_from_await;
    default: /* CPython raises the right error here */
    __Pyx_RefNannyFinishContext();
    return NULL;
  }
  __pyx_L3_first_run:;
  if (unlikely(!__pyx_sent_value)) __PYX_ERR(10, 905, __pyx_L1_error)

  /* "src/python/grpcio/grpc/_cython/_cygrpc/aio/server.pyx.pxi":907
 *     async def _server_main_loop(self,
 *                                 object server_started):
 *         self._server.start(backup_queue=False)             # <<<<<<<<<<<<<<
 *         cdef RPCState rpc_state
 *         server_started.set_result(True)
 */
  __pyx_t_1 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_cur_scope->__pyx_v_self->_server), __pyx_n_s_start); if (unlikely(!__pyx_t_1)) __PYX_ERR(10, 907, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_t_2 = __Pyx_PyDict_NewPresized(1); if (unlikely(!__pyx_t_2)) __PYX_ERR(10, 907, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  if (PyDict_SetItem(__pyx_t_2, __pyx_n_s_backup_queue, Py_False) < 0) __PYX_ERR(10, 907, __pyx_L1_error)
  __pyx_t_3 = __Pyx_PyObject_Call(__pyx_t_1, __pyx_empty_tuple, __pyx_t_2); if (unlikely(!__pyx_t_3)) __PYX_ERR(10, 907, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;

  /* "src/python/grpcio/grpc/_cython/_cygrpc/aio/server.pyx.pxi":909
 *         self._server.start(backup_queue=False)
 *         cdef RPCState rpc_state
 *         server_started.set_result(True)             # <<<<<<<<<<<<<<
 * 
 *         while True:
 */
  __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_cur_scope->__pyx_v_server_started, __pyx_n_s_set_result); if (unlikely(!__pyx_t_2)) __PYX_ERR(10, 909, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __pyx_t_1 = NULL;
  if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_2))) {
    __pyx_t_1 = PyMethod_GET_SELF(__pyx_t_2);
    if (likely(__pyx_t_1)) {
      PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_2);
      __Pyx_INCREF(__pyx_t_1);
      __Pyx_INCREF(function);
      __Pyx_DECREF_SET(__pyx_t_2, function);
    }
  }
  __pyx_t_3 = (__pyx_t_1) ? __Pyx_PyObject_Call2Args(__pyx_t_2, __pyx_t_1, Py_True) : __Pyx_PyObject_CallOneArg(__pyx_t_2, Py_True);
  __Pyx_XDECREF(__pyx_t_1); __pyx_t_1 = 0;
  if (unlikely(!__pyx_t_3)) __PYX_ERR(10, 909, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;

  /* "src/python/grpcio/grpc/_cython/_cygrpc/aio/server.pyx.pxi":911
 *         server_started.set_result(True)
 * 
 *         while True:             # <<<<<<<<<<<<<<
 *             # When shutdown begins, no more new connections.
 *             if self._status != AIO_SERVER_STATUS_RUNNING:
 */
  while (1) {

    /* "src/python/grpcio/grpc/_cython/_cygrpc/aio/server.pyx.pxi":913
 *         while True:
 *             # When shutdown begins, no more new connections.
 *             if self._status != AIO_SERVER_STATUS_RUNNING:             # <<<<<<<<<<<<<<
 *                 break
 * 
 */
    __pyx_t_4 = ((__pyx_cur_scope->__pyx_v_self->_status != __pyx_e_4grpc_7_cython_6cygrpc_AIO_SERVER_STATUS_RUNNING) != 0);
    if (__pyx_t_4) {

      /* "src/python/grpcio/grpc/_cython/_cygrpc/aio/server.pyx.pxi":914
 *             # When shutdown begins, no more new connections.
 *             if self._status != AIO_SERVER_STATUS_RUNNING:
 *                 break             # <<<<<<<<<<<<<<
 * 
 *             if self._limiter is not None:
 */
      goto __pyx_L5_break;

      /* "src/python/grpcio/grpc/_cython/_cygrpc/aio/server.pyx.pxi":913
 *         while True:
 *             # When shutdown begins, no more new connections.
 *             if self._status != AIO_SERVER_STATUS_RUNNING:             # <<<<<<<<<<<<<<
 *                 break
 * 
 */
    }

    /* "src/python/grpcio/grpc/_cython/_cygrpc/aio/server.pyx.pxi":916
 *                 break
 * 
 *             if self._limiter is not None:             # <<<<<<<<<<<<<<
 *                 await self._limiter.check_before_request_call()
 * 
 */
    __pyx_t_4 = (((PyObject *)__pyx_cur_scope->__pyx_v_self->_limiter) != Py_None);
    __pyx_t_5 = (__pyx_t_4 != 0);
    if (__pyx_t_5) {

      /* "src/python/grpcio/grpc/_cython/_cygrpc/aio/server.pyx.pxi":917
 * 
 *             if self._limiter is not None:
 *                 await self._limiter.check_before_request_call()             # <<<<<<<<<<<<<<
 * 
 *             # Accepts new request from Core
 */
      __pyx_t_2 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_cur_scope->__pyx_v_self->_limiter), __pyx_n_s_check_before_request_call); if (unlikely(!__pyx_t_2)) __PYX_ERR(10, 917, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_2);
      __pyx_t_1 = NULL;
      if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_2))) {
        __pyx_t_1 = PyMethod_GET_SELF(__pyx_t_2);
        if (likely(__pyx_t_1)) {
          PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_2);
          __Pyx_INCREF(__pyx_t_1);
          __Pyx_INCREF(function);
          __Pyx_DECREF_SET(__pyx_t_2, function);
        }
      }
      __pyx_t_3 = (__pyx_t_1) ? __Pyx_PyObject_CallOneArg(__pyx_t_2, __pyx_t_1) : __Pyx_PyObject_CallNoArg(__pyx_t_2);
      __Pyx_XDECREF(__pyx_t_1); __pyx_t_1 = 0;
      if (unlikely(!__pyx_t_3)) __PYX_ERR(10, 917, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_3);
      __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
      __pyx_r = __Pyx_Coroutine_Yield_From(__pyx_generator, __pyx_t_3);
      __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
      __Pyx_XGOTREF(__pyx_r);
      if (likely(__pyx_r)) {
        __Pyx_XGIVEREF(__pyx_r);
        __Pyx_RefNannyFinishContext();
        __Pyx_Coroutine_ResetAndClearException(__pyx_generator);
        /* return from generator, awaiting value */
        __pyx_generator->resume_label = 1;
        return __pyx_r;
        __pyx_L8_resume_from_await:;
        if (unlikely(!__pyx_sent_value)) __PYX_ERR(10, 917, __pyx_L1_error)
      } else {
        PyObject* exc_type = __Pyx_PyErr_Occurred();
        if (exc_type) {
          if (likely(exc_type == PyExc_StopIteration || (exc_type != PyExc_GeneratorExit && __Pyx_PyErr_GivenExceptionMatches(exc_type, PyExc_StopIteration)))) PyErr_Clear();
          else __PYX_ERR(10, 917, __pyx_L1_error)
        }
      }

      /* "src/python/grpcio/grpc/_cython/_cygrpc/aio/server.pyx.pxi":916
 *                 break
 * 
 *             if self._limiter is not None:             # <<<<<<<<<<<<<<
 *                 await self._limiter.check_before_request_call()
 * 
 */
    }

    /* "src/python/grpcio/grpc/_cython/_cygrpc/aio/server.pyx.pxi":920
 * 
 *             # Accepts new request from Core
 *             rpc_state = await self._request_call()             # <<<<<<<<<<<<<<
 * 
 *             # Creates the dedicated RPC coroutine. If we schedule it right now,
 */
    __pyx_t_2 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_cur_scope->__pyx_v_self), __pyx_n_s_request_call); if (unlikely(!__pyx_t_2)) __PYX_ERR(10, 920, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_2);
    __pyx_t_1 = NULL;
    if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_2))) {
      __pyx_t_1 = PyMethod_GET_SELF(__pyx_t_2);
      if (likely(__pyx_t_1)) {
        PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_2);
        __Pyx_INCREF(__pyx_t_1);
        __Pyx_INCREF(function);
        __Pyx_DECREF_SET(__pyx_t_2, function);
      }
    }
    __pyx_t_3 = (__pyx_t_1) ? __Pyx_PyObject_CallOneArg(__pyx_t_2, __pyx_t_1) : __Pyx_PyObject_CallNoArg(__pyx_t_2);
    __Pyx_XDECREF(__pyx_t_1); __pyx_t_1 = 0;
    if (unlikely(!__pyx_t_3)) __PYX_ERR(10, 920, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_3);
    __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
    __pyx_r = __Pyx_Coroutine_Yield_From(__pyx_generator, __pyx_t_3);
    __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
    __Pyx_XGOTREF(__pyx_r);
    if (likely(__pyx_r)) {
      __Pyx_XGIVEREF(__pyx_r);
      __Pyx_RefNannyFinishContext();
      __Pyx_Coroutine_ResetAndClearException(__pyx_generator);
      /* return from generator, awaiting value */
      __pyx_generator->resume_label = 2;
      return __pyx_r;
      __pyx_L9_resume_from_await:;
      if (unlikely(!__pyx_sent_value)) __PYX_ERR(10, 920, __pyx_L1_error)
      __pyx_t_3 = __pyx_sent_value; __Pyx_INCREF(__pyx_t_3);
    } else {
      __pyx_t_3 = NULL;
      if (__Pyx_PyGen_FetchStopIterationValue(&__pyx_t_3) < 0) __PYX_ERR(10, 920, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_3);
    }
    if (!(likely(((__pyx_t_3) == Py_None) || likely(__Pyx_TypeTest(__pyx_t_3, __pyx_ptype_4grpc_7_cython_6cygrpc_RPCState))))) __PYX_ERR(10, 920, __pyx_L1_error)
    __Pyx_XGOTREF(((PyObject *)__pyx_cur_scope->__pyx_v_rpc_state));
    __Pyx_XDECREF_SET(__pyx_cur_scope->__pyx_v_rpc_state, ((struct __pyx_obj_4grpc_7_cython_6cygrpc_RPCState *)__pyx_t_3));
    __Pyx_GIVEREF(__pyx_t_3);
    __pyx_t_3 = 0;

    /* "src/python/grpcio/grpc/_cython/_cygrpc/aio/server.pyx.pxi":927
 *             # the coroutine onto event loop inside of the cancellation
 *             # coroutine.
 *             rpc_coro = _handle_rpc(self._generic_handlers,             # <<<<<<<<<<<<<<
 *                                    self._interceptors,
 *                                    rpc_state,
 */
    __Pyx_GetModuleGlobalName(__pyx_t_2, __pyx_n_s_handle_rpc); if (unlikely(!__pyx_t_2)) __PYX_ERR(10, 927, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_2);

    /* "src/python/grpcio/grpc/_cython/_cygrpc/aio/server.pyx.pxi":930
 *                                    self._interceptors,
 *                                    rpc_state,
 *                                    self._loop)             # <<<<<<<<<<<<<<
 * 
 *             # Fires off a task that listens on the cancellation from client.
 */
    __pyx_t_1 = NULL;
    __pyx_t_6 = 0;
    if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_2))) {
      __pyx_t_1 = PyMethod_GET_SELF(__pyx_t_2);
      if (likely(__pyx_t_1)) {
        PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_2);
        __Pyx_INCREF(__pyx_t_1);
        __Pyx_INCREF(function);
        __Pyx_DECREF_SET(__pyx_t_2, function);
        __pyx_t_6 = 1;
      }
    }
    #if CYTHON_FAST_PYCALL
    if (PyFunction_Check(__pyx_t_2)) {
      PyObject *__pyx_temp[5] = {__pyx_t_1, __pyx_cur_scope->__pyx_v_self->_generic_handlers, __pyx_cur_scope->__pyx_v_self->_interceptors, ((PyObject *)__pyx_cur_scope->__pyx_v_rpc_state), __pyx_cur_scope->__pyx_v_self->_loop};
      __pyx_t_3 = __Pyx_PyFunction_FastCall(__pyx_t_2, __pyx_temp+1-__pyx_t_6, 4+__pyx_t_6); if (unlikely(!__pyx_t_3)) __PYX_ERR(10, 927, __pyx_L1_error)
      __Pyx_XDECREF(__pyx_t_1); __pyx_t_1 = 0;
      __Pyx_GOTREF(__pyx_t_3);
    } else
    #endif
    #if CYTHON_FAST_PYCCALL
    if (__Pyx_PyFastCFunction_Check(__pyx_t_2)) {
      PyObject *__pyx_temp[5] = {__pyx_t_1, __pyx_cur_scope->__pyx_v_self->_generic_handlers, __pyx_cur_scope->__pyx_v_self->_interceptors, ((PyObject *)__pyx_cur_scope->__pyx_v_rpc_state), __pyx_cur_scope->__pyx_v_self->_loop};
      __pyx_t_3 = __Pyx_PyCFunction_FastCall(__pyx_t_2, __pyx_temp+1-__pyx_t_6, 4+__pyx_t_6); if (unlikely(!__pyx_t_3)) __PYX_ERR(10, 927, __pyx_L1_error)
      __Pyx_XDECREF(__pyx_t_1); __pyx_t_1 = 0;
      __Pyx_GOTREF(__pyx_t_3);
    } else
    #endif
    {
      __pyx_t_7 = PyTuple_New(4+__pyx_t_6); if (unlikely(!__pyx_t_7)) __PYX_ERR(10, 927, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_7);
      if (__pyx_t_1) {
        __Pyx_GIVEREF(__pyx_t_1); PyTuple_SET_ITEM(__pyx_t_7, 0, __pyx_t_1); __pyx_t_1 = NULL;
      }
      __Pyx_INCREF(__pyx_cur_scope->__pyx_v_self->_generic_handlers);
      __Pyx_GIVEREF(__pyx_cur_scope->__pyx_v_self->_generic_handlers);
      PyTuple_SET_ITEM(__pyx_t_7, 0+__pyx_t_6, __pyx_cur_scope->__pyx_v_self->_generic_handlers);
      __Pyx_INCREF(__pyx_cur_scope->__pyx_v_self->_interceptors);
      __Pyx_GIVEREF(__pyx_cur_scope->__pyx_v_self->_interceptors);
      PyTuple_SET_ITEM(__pyx_t_7, 1+__pyx_t_6, __pyx_cur_scope->__pyx_v_self->_interceptors);
      __Pyx_INCREF(((PyObject *)__pyx_cur_scope->__pyx_v_rpc_state));
      __Pyx_GIVEREF(((PyObject *)__pyx_cur_scope->__pyx_v_rpc_state));
      PyTuple_SET_ITEM(__pyx_t_7, 2+__pyx_t_6, ((PyObject *)__pyx_cur_scope->__pyx_v_rpc_state));
      __Pyx_INCREF(__pyx_cur_scope->__pyx_v_self->_loop);
      __Pyx_GIVEREF(__pyx_cur_scope->__pyx_v_self->_loop);
      PyTuple_SET_ITEM(__pyx_t_7, 3+__pyx_t_6, __pyx_cur_scope->__pyx_v_self->_loop);
      __pyx_t_3 = __Pyx_PyObject_Call(__pyx_t_2, __pyx_t_7, NULL); if (unlikely(!__pyx_t_3)) __PYX_ERR(10, 927, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_3);
      __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
    }
    __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
    __Pyx_XGOTREF(__pyx_cur_scope->__pyx_v_rpc_coro);
    __Pyx_XDECREF_SET(__pyx_cur_scope->__pyx_v_rpc_coro, __pyx_t_3);
    __Pyx_GIVEREF(__pyx_t_3);
    __pyx_t_3 = 0;

    /* "src/python/grpcio/grpc/_cython/_cygrpc/aio/server.pyx.pxi":933
 * 
 *             # Fires off a task that listens on the cancellation from client.
 *             rpc_task = self._loop.create_task(             # <<<<<<<<<<<<<<
 *                 _schedule_rpc_coro(
 *                     rpc_coro,
 */
    __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_cur_scope->__pyx_v_self->_loop, __pyx_n_s_create_task); if (unlikely(!__pyx_t_2)) __PYX_ERR(10, 933, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_2);

    /* "src/python/grpcio/grpc/_cython/_cygrpc/aio/server.pyx.pxi":934
 *             # Fires off a task that listens on the cancellation from client.
 *             rpc_task = self._loop.create_task(
 *                 _schedule_rpc_coro(             # <<<<<<<<<<<<<<
 *                     rpc_coro,
 *                     rpc_state,
 */
    __Pyx_GetModuleGlobalName(__pyx_t_1, __pyx_n_s_schedule_rpc_coro); if (unlikely(!__pyx_t_1)) __PYX_ERR(10, 934, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_1);

    /* "src/python/grpcio/grpc/_cython/_cygrpc/aio/server.pyx.pxi":937
 *                     rpc_coro,
 *                     rpc_state,
 *                     self._loop             # <<<<<<<<<<<<<<
 *                 )
 *             )
 */
    __pyx_t_8 = NULL;
    __pyx_t_6 = 0;
    if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_1))) {
      __pyx_t_8 = PyMethod_GET_SELF(__pyx_t_1);
      if (likely(__pyx_t_8)) {
        PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_1);
        __Pyx_INCREF(__pyx_t_8);
        __Pyx_INCREF(function);
        __Pyx_DECREF_SET(__pyx_t_1, function);
        __pyx_t_6 = 1;
      }
    }
    #if CYTHON_FAST_PYCALL
    if (PyFunction_Check(__pyx_t_1)) {
      PyObject *__pyx_temp[4] = {__pyx_t_8, __pyx_cur_scope->__pyx_v_rpc_coro, ((PyObject *)__pyx_cur_scope->__pyx_v_rpc_state), __pyx_cur_scope->__pyx_v_self->_loop};
      __pyx_t_7 = __Pyx_PyFunction_FastCall(__pyx_t_1, __pyx_temp+1-__pyx_t_6, 3+__pyx_t_6); if (unlikely(!__pyx_t_7)) __PYX_ERR(10, 934, __pyx_L1_error)
      __Pyx_XDECREF(__pyx_t_8); __pyx_t_8 = 0;
      __Pyx_GOTREF(__pyx_t_7);
    } else
    #endif
    #if CYTHON_FAST_PYCCALL
    if (__Pyx_PyFastCFunction_Check(__pyx_t_1)) {
      PyObject *__pyx_temp[4] = {__pyx_t_8, __pyx_cur_scope->__pyx_v_rpc_coro, ((PyObject *)__pyx_cur_scope->__pyx_v_rpc_state), __pyx_cur_scope->__pyx_v_self->_loop};
      __pyx_t_7 = __Pyx_PyCFunction_FastCall(__pyx_t_1, __pyx_temp+1-__pyx_t_6, 3+__pyx_t_6); if (unlikely(!__pyx_t_7)) __PYX_ERR(10, 934, __pyx_L1_error)
      __Pyx_XDECREF(__pyx_t_8); __pyx_t_8 = 0;
      __Pyx_GOTREF(__pyx_t_7);
    } else
    #endif
    {
      __pyx_t_9 = PyTuple_New(3+__pyx_t_6); if (unlikely(!__pyx_t_9)) __PYX_ERR(10, 934, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_9);
      if (__pyx_t_8) {
        __Pyx_GIVEREF(__pyx_t_8); PyTuple_SET_ITEM(__pyx_t_9, 0, __pyx_t_8); __pyx_t_8 = NULL;
      }
      __Pyx_INCREF(__pyx_cur_scope->__pyx_v_rpc_coro);
      __Pyx_GIVEREF(__pyx_cur_scope->__pyx_v_rpc_coro);
      PyTuple_SET_ITEM(__pyx_t_9, 0+__pyx_t_6, __pyx_cur_scope->__pyx_v_rpc_coro);
      __Pyx_INCREF(((PyObject *)__pyx_cur_scope->__pyx_v_rpc_state));
      __Pyx_GIVEREF(((PyObject *)__pyx_cur_scope->__pyx_v_rpc_state));
      PyTuple_SET_ITEM(__pyx_t_9, 1+__pyx_t_6, ((PyObject *)__pyx_cur_scope->__pyx_v_rpc_state));
      __Pyx_INCREF(__pyx_cur_scope->__pyx_v_self->_loop);
      __Pyx_GIVEREF(__pyx_cur_scope->__pyx_v_self->_loop);
      PyTuple_SET_ITEM(__pyx_t_9, 2+__pyx_t_6, __pyx_cur_scope->__pyx_v_self->_loop);
      __pyx_t_7 = __Pyx_PyObject_Call(__pyx_t_1, __pyx_t_9, NULL); if (unlikely(!__pyx_t_7)) __PYX_ERR(10, 934, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_7);
      __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0;
    }
    __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
    __pyx_t_1 = NULL;
    if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_2))) {
      __pyx_t_1 = PyMethod_GET_SELF(__pyx_t_2);
      if (likely(__pyx_t_1)) {
        PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_2);
        __Pyx_INCREF(__pyx_t_1);
        __Pyx_INCREF(function);
        __Pyx_DECREF_SET(__pyx_t_2, function);
      }
    }
    __pyx_t_3 = (__pyx_t_1) ? __Pyx_PyObject_Call2Args(__pyx_t_2, __pyx_t_1, __pyx_t_7) : __Pyx_PyObject_CallOneArg(__pyx_t_2, __pyx_t_7);
    __Pyx_XDECREF(__pyx_t_1); __pyx_t_1 = 0;
    __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
    if (unlikely(!__pyx_t_3)) __PYX_ERR(10, 933, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_3);
    __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
    __Pyx_XGOTREF(__pyx_cur_scope->__pyx_v_rpc_task);
    __Pyx_XDECREF_SET(__pyx_cur_scope->__pyx_v_rpc_task, __pyx_t_3);
    __Pyx_GIVEREF(__pyx_t_3);
    __pyx_t_3 = 0;

    /* "src/python/grpcio/grpc/_cython/_cygrpc/aio/server.pyx.pxi":941
 *             )
 * 
 *             if self._limiter is not None:             # <<<<<<<<<<<<<<
 *                 self._limiter.decrease_once_finished(rpc_task)
 * 
 */
    __pyx_t_5 = (((PyObject *)__pyx_cur_scope->__pyx_v_self->_limiter) != Py_None);
    __pyx_t_4 = (__pyx_t_5 != 0);
    if (__pyx_t_4) {

      /* "src/python/grpcio/grpc/_cython/_cygrpc/aio/server.pyx.pxi":942
 * 
 *             if self._limiter is not None:
 *                 self._limiter.decrease_once_finished(rpc_task)             # <<<<<<<<<<<<<<
 * 
 *     def _serving_task_crash_handler(self, object task):
 */
      __pyx_t_2 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_cur_scope->__pyx_v_self->_limiter), __pyx_n_s_decrease_once_finished); if (unlikely(!__pyx_t_2)) __PYX_ERR(10, 942, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_2);
      __pyx_t_7 = NULL;
      if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_2))) {
        __pyx_t_7 = PyMethod_GET_SELF(__pyx_t_2);
        if (likely(__pyx_t_7)) {
          PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_2);
          __Pyx_INCREF(__pyx_t_7);
          __Pyx_INCREF(function);
          __Pyx_DECREF_SET(__pyx_t_2, function);
        }
      }
      __pyx_t_3 = (__pyx_t_7) ? __Pyx_PyObject_Call2Args(__pyx_t_2, __pyx_t_7, __pyx_cur_scope->__pyx_v_rpc_task) : __Pyx_PyObject_CallOneArg(__pyx_t_2, __pyx_cur_scope->__pyx_v_rpc_task);
      __Pyx_XDECREF(__pyx_t_7); __pyx_t_7 = 0;
      if (unlikely(!__pyx_t_3)) __PYX_ERR(10, 942, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_3);
      __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
      __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;

      /* "src/python/grpcio/grpc/_cython/_cygrpc/aio/server.pyx.pxi":941
 *             )
 * 
 *             if self._limiter is not None:             # <<<<<<<<<<<<<<
 *                 self._limiter.decrease_once_finished(rpc_task)
 * 
 */
    }
  }
  __pyx_L5_break:;
  CYTHON_MAYBE_UNUSED_VAR(__pyx_cur_scope);

  /* "src/python/grpcio/grpc/_cython/_cygrpc/aio/server.pyx.pxi":905
 *         return rpc_state
 * 
 *     async def _server_main_loop(self,             # <<<<<<<<<<<<<<
 *                                 object server_started):
 *         self._server.start(backup_queue=False)
 */

  /* function exit code */
  PyErr_SetNone(PyExc_StopIteration);
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_XDECREF(__pyx_t_3);
  __Pyx_XDECREF(__pyx_t_7);
  __Pyx_XDECREF(__pyx_t_8);
  __Pyx_XDECREF(__pyx_t_9);
  __Pyx_AddTraceback("_server_main_loop", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_L0:;
  __Pyx_XDECREF(__pyx_r); __pyx_r = 0;
  #if !CYTHON_USE_EXC_INFO_STACK
  __Pyx_Coroutine_ResetAndClearException(__pyx_generator);
  #endif
  __pyx_generator->resume_label = -1;
  __Pyx_Coroutine_clear((PyObject*)__pyx_generator);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "src/python/grpcio/grpc/_cython/_cygrpc/aio/server.pyx.pxi":944
 *                 self._limiter.decrease_once_finished(rpc_task)
 * 
 *     def _serving_task_crash_handler(self, object task):             # <<<<<<<<<<<<<<
 *         """Shutdown the server immediately if unexpectedly exited."""
 *         if task.cancelled():
 */

/* Python wrapper */
static PyObject *__pyx_pw_4grpc_7_cython_6cygrpc_9AioServer_15_serving_task_crash_handler(PyObject *__pyx_v_self, PyObject *__pyx_v_task); /*proto*/
static char __pyx_doc_4grpc_7_cython_6cygrpc_9AioServer_14_serving_task_crash_handler[] = "Shutdown the server immediately if unexpectedly exited.";
static PyObject *__pyx_pw_4grpc_7_cython_6cygrpc_9AioServer_15_serving_task_crash_handler(PyObject *__pyx_v_self, PyObject *__pyx_v_task) {
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("_serving_task_crash_handler (wrapper)", 0);
  __pyx_r = __pyx_pf_4grpc_7_cython_6cygrpc_9AioServer_14_serving_task_crash_handler(((struct __pyx_obj_4grpc_7_cython_6cygrpc_AioServer *)__pyx_v_self), ((PyObject *)__pyx_v_task));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_4grpc_7_cython_6cygrpc_9AioServer_14_serving_task_crash_handler(struct __pyx_obj_4grpc_7_cython_6cygrpc_AioServer *__pyx_v_self, PyObject *__pyx_v_task) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  PyObject *__pyx_t_2 = NULL;
  PyObject *__pyx_t_3 = NULL;
  int __pyx_t_4;
  int __pyx_t_5;
  PyObject *__pyx_t_6 = NULL;
  PyObject *__pyx_t_7 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("_serving_task_crash_handler", 0);

  /* "src/python/grpcio/grpc/_cython/_cygrpc/aio/server.pyx.pxi":946
 *     def _serving_task_crash_handler(self, object task):
 *         """Shutdown the server immediately if unexpectedly exited."""
 *         if task.cancelled():             # <<<<<<<<<<<<<<
 *             return
 *         if task.exception() is None:
 */
  __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_v_task, __pyx_n_s_cancelled); if (unlikely(!__pyx_t_2)) __PYX_ERR(10, 946, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __pyx_t_3 = NULL;
  if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_2))) {
    __pyx_t_3 = PyMethod_GET_SELF(__pyx_t_2);
    if (likely(__pyx_t_3)) {
      PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_2);
      __Pyx_INCREF(__pyx_t_3);
      __Pyx_INCREF(function);
      __Pyx_DECREF_SET(__pyx_t_2, function);
    }
  }
  __pyx_t_1 = (__pyx_t_3) ? __Pyx_PyObject_CallOneArg(__pyx_t_2, __pyx_t_3) : __Pyx_PyObject_CallNoArg(__pyx_t_2);
  __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0;
  if (unlikely(!__pyx_t_1)) __PYX_ERR(10, 946, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  __pyx_t_4 = __Pyx_PyObject_IsTrue(__pyx_t_1); if (unlikely(__pyx_t_4 < 0)) __PYX_ERR(10, 946, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  if (__pyx_t_4) {

    /* "src/python/grpcio/grpc/_cython/_cygrpc/aio/server.pyx.pxi":947
 *         """Shutdown the server immediately if unexpectedly exited."""
 *         if task.cancelled():
 *             return             # <<<<<<<<<<<<<<
 *         if task.exception() is None:
 *             return
 */
    __Pyx_XDECREF(__pyx_r);
    __pyx_r = Py_None; __Pyx_INCREF(Py_None);
    goto __pyx_L0;

    /* "src/python/grpcio/grpc/_cython/_cygrpc/aio/server.pyx.pxi":946
 *     def _serving_task_crash_handler(self, object task):
 *         """Shutdown the server immediately if unexpectedly exited."""
 *         if task.cancelled():             # <<<<<<<<<<<<<<
 *             return
 *         if task.exception() is None:
 */
  }

  /* "src/python/grpcio/grpc/_cython/_cygrpc/aio/server.pyx.pxi":948
 *         if task.cancelled():
 *             return
 *         if task.exception() is None:             # <<<<<<<<<<<<<<
 *             return
 *         if self._status != AIO_SERVER_STATUS_STOPPING:
 */
  __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_v_task, __pyx_n_s_exception); if (unlikely(!__pyx_t_2)) __PYX_ERR(10, 948, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __pyx_t_3 = NULL;
  if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_2))) {
    __pyx_t_3 = PyMethod_GET_SELF(__pyx_t_2);
    if (likely(__pyx_t_3)) {
      PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_2);
      __Pyx_INCREF(__pyx_t_3);
      __Pyx_INCREF(function);
      __Pyx_DECREF_SET(__pyx_t_2, function);
    }
  }
  __pyx_t_1 = (__pyx_t_3) ? __Pyx_PyObject_CallOneArg(__pyx_t_2, __pyx_t_3) : __Pyx_PyObject_CallNoArg(__pyx_t_2);
  __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0;
  if (unlikely(!__pyx_t_1)) __PYX_ERR(10, 948, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  __pyx_t_4 = (__pyx_t_1 == Py_None);
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  __pyx_t_5 = (__pyx_t_4 != 0);
  if (__pyx_t_5) {

    /* "src/python/grpcio/grpc/_cython/_cygrpc/aio/server.pyx.pxi":949
 *             return
 *         if task.exception() is None:
 *             return             # <<<<<<<<<<<<<<
 *         if self._status != AIO_SERVER_STATUS_STOPPING:
 *             self._crash_exception = task.exception()
 */
    __Pyx_XDECREF(__pyx_r);
    __pyx_r = Py_None; __Pyx_INCREF(Py_None);
    goto __pyx_L0;

    /* "src/python/grpcio/grpc/_cython/_cygrpc/aio/server.pyx.pxi":948
 *         if task.cancelled():
 *             return
 *         if task.exception() is None:             # <<<<<<<<<<<<<<
 *             return
 *         if self._status != AIO_SERVER_STATUS_STOPPING:
 */
  }

  /* "src/python/grpcio/grpc/_cython/_cygrpc/aio/server.pyx.pxi":950
 *         if task.exception() is None:
 *             return
 *         if self._status != AIO_SERVER_STATUS_STOPPING:             # <<<<<<<<<<<<<<
 *             self._crash_exception = task.exception()
 *             _LOGGER.exception(self._crash_exception)
 */
  __pyx_t_5 = ((__pyx_v_self->_status != __pyx_e_4grpc_7_cython_6cygrpc_AIO_SERVER_STATUS_STOPPING) != 0);
  if (__pyx_t_5) {

    /* "src/python/grpcio/grpc/_cython/_cygrpc/aio/server.pyx.pxi":951
 *             return
 *         if self._status != AIO_SERVER_STATUS_STOPPING:
 *             self._crash_exception = task.exception()             # <<<<<<<<<<<<<<
 *             _LOGGER.exception(self._crash_exception)
 *             self._loop.create_task(self.shutdown(None))
 */
    __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_v_task, __pyx_n_s_exception); if (unlikely(!__pyx_t_2)) __PYX_ERR(10, 951, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_2);
    __pyx_t_3 = NULL;
    if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_2))) {
      __pyx_t_3 = PyMethod_GET_SELF(__pyx_t_2);
      if (likely(__pyx_t_3)) {
        PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_2);
        __Pyx_INCREF(__pyx_t_3);
        __Pyx_INCREF(function);
        __Pyx_DECREF_SET(__pyx_t_2, function);
      }
    }
    __pyx_t_1 = (__pyx_t_3) ? __Pyx_PyObject_CallOneArg(__pyx_t_2, __pyx_t_3) : __Pyx_PyObject_CallNoArg(__pyx_t_2);
    __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0;
    if (unlikely(!__pyx_t_1)) __PYX_ERR(10, 951, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_1);
    __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
    __Pyx_GIVEREF(__pyx_t_1);
    __Pyx_GOTREF(__pyx_v_self->_crash_exception);
    __Pyx_DECREF(__pyx_v_self->_crash_exception);
    __pyx_v_self->_crash_exception = __pyx_t_1;
    __pyx_t_1 = 0;

    /* "src/python/grpcio/grpc/_cython/_cygrpc/aio/server.pyx.pxi":952
 *         if self._status != AIO_SERVER_STATUS_STOPPING:
 *             self._crash_exception = task.exception()
 *             _LOGGER.exception(self._crash_exception)             # <<<<<<<<<<<<<<
 *             self._loop.create_task(self.shutdown(None))
 * 
 */
    __Pyx_GetModuleGlobalName(__pyx_t_2, __pyx_n_s_LOGGER); if (unlikely(!__pyx_t_2)) __PYX_ERR(10, 952, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_2);
    __pyx_t_3 = __Pyx_PyObject_GetAttrStr(__pyx_t_2, __pyx_n_s_exception); if (unlikely(!__pyx_t_3)) __PYX_ERR(10, 952, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_3);
    __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
    __pyx_t_2 = NULL;
    if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_3))) {
      __pyx_t_2 = PyMethod_GET_SELF(__pyx_t_3);
      if (likely(__pyx_t_2)) {
        PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_3);
        __Pyx_INCREF(__pyx_t_2);
        __Pyx_INCREF(function);
        __Pyx_DECREF_SET(__pyx_t_3, function);
      }
    }
    __pyx_t_1 = (__pyx_t_2) ? __Pyx_PyObject_Call2Args(__pyx_t_3, __pyx_t_2, __pyx_v_self->_crash_exception) : __Pyx_PyObject_CallOneArg(__pyx_t_3, __pyx_v_self->_crash_exception);
    __Pyx_XDECREF(__pyx_t_2); __pyx_t_2 = 0;
    if (unlikely(!__pyx_t_1)) __PYX_ERR(10, 952, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_1);
    __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
    __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;

    /* "src/python/grpcio/grpc/_cython/_cygrpc/aio/server.pyx.pxi":953
 *             self._crash_exception = task.exception()
 *             _LOGGER.exception(self._crash_exception)
 *             self._loop.create_task(self.shutdown(None))             # <<<<<<<<<<<<<<
 * 
 *     async def start(self):
 */
    __pyx_t_3 = __Pyx_PyObject_GetAttrStr(__pyx_v_self->_loop, __pyx_n_s_create_task); if (unlikely(!__pyx_t_3)) __PYX_ERR(10, 953, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_3);
    __pyx_t_6 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_shutdown); if (unlikely(!__pyx_t_6)) __PYX_ERR(10, 953, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_6);
    __pyx_t_7 = NULL;
    if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_6))) {
      __pyx_t_7 = PyMethod_GET_SELF(__pyx_t_6);
      if (likely(__pyx_t_7)) {
        PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_6);
        __Pyx_INCREF(__pyx_t_7);
        __Pyx_INCREF(function);
        __Pyx_DECREF_SET(__pyx_t_6, function);
      }
    }
    __pyx_t_2 = (__pyx_t_7) ? __Pyx_PyObject_Call2Args(__pyx_t_6, __pyx_t_7, Py_None) : __Pyx_PyObject_CallOneArg(__pyx_t_6, Py_None);
    __Pyx_XDECREF(__pyx_t_7); __pyx_t_7 = 0;
    if (unlikely(!__pyx_t_2)) __PYX_ERR(10, 953, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_2);
    __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
    __pyx_t_6 = NULL;
    if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_3))) {
      __pyx_t_6 = PyMethod_GET_SELF(__pyx_t_3);
      if (likely(__pyx_t_6)) {
        PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_3);
        __Pyx_INCREF(__pyx_t_6);
        __Pyx_INCREF(function);
        __Pyx_DECREF_SET(__pyx_t_3, function);
      }
    }
    __pyx_t_1 = (__pyx_t_6) ? __Pyx_PyObject_Call2Args(__pyx_t_3, __pyx_t_6, __pyx_t_2) : __Pyx_PyObject_CallOneArg(__pyx_t_3, __pyx_t_2);
    __Pyx_XDECREF(__pyx_t_6); __pyx_t_6 = 0;
    __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
    if (unlikely(!__pyx_t_1)) __PYX_ERR(10, 953, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_1);
    __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
    __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;

    /* "src/python/grpcio/grpc/_cython/_cygrpc/aio/server.pyx.pxi":950
 *         if task.exception() is None:
 *             return
 *         if self._status != AIO_SERVER_STATUS_STOPPING:             # <<<<<<<<<<<<<<
 *             self._crash_exception = task.exception()
 *             _LOGGER.exception(self._crash_exception)
 */
  }

  /* "src/python/grpcio/grpc/_cython/_cygrpc/aio/server.pyx.pxi":944
 *                 self._limiter.decrease_once_finished(rpc_task)
 * 
 *     def _serving_task_crash_handler(self, object task):             # <<<<<<<<<<<<<<
 *         """Shutdown the server immediately if unexpectedly exited."""
 *         if task.cancelled():
 */

  /* function exit code */
  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_XDECREF(__pyx_t_3);
  __Pyx_XDECREF(__pyx_t_6);
  __Pyx_XDECREF(__pyx_t_7);
  __Pyx_AddTraceback("grpc._cython.cygrpc.AioServer._serving_task_crash_handler", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}
static PyObject *__pyx_gb_4grpc_7_cython_6cygrpc_9AioServer_18generator42(__pyx_CoroutineObject *__pyx_generator, CYTHON_UNUSED PyThreadState *__pyx_tstate, PyObject *__pyx_sent_value); /* proto */

/* "src/python/grpcio/grpc/_cython/_cygrpc/aio/server.pyx.pxi":955
 *             self._loop.create_task(self.shutdown(None))
 * 
 *     async def start(self):             # <<<<<<<<<<<<<<
 *         if self._status == AIO_SERVER_STATUS_RUNNING:
 *             return
 */

/* Python wrapper */
static PyObject *__pyx_pw_4grpc_7_cython_6cygrpc_9AioServer_17start(PyObject *__pyx_v_self, CYTHON_UNUSED PyObject *unused); /*proto*/
static PyObject *__pyx_pw_4grpc_7_cython_6cygrpc_9AioServer_17start(PyObject *__pyx_v_self, CYTHON_UNUSED PyObject *unused) {
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("start (wrapper)", 0);
  __pyx_r = __pyx_pf_4grpc_7_cython_6cygrpc_9AioServer_16start(((struct __pyx_obj_4grpc_7_cython_6cygrpc_AioServer *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_4grpc_7_cython_6cygrpc_9AioServer_16start(struct __pyx_obj_4grpc_7_cython_6cygrpc_AioServer *__pyx_v_self) {
  struct __pyx_obj_4grpc_7_cython_6cygrpc___pyx_scope_struct_54_start *__pyx_cur_scope;
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("start", 0);
  __pyx_cur_scope = (struct __pyx_obj_4grpc_7_cython_6cygrpc___pyx_scope_struct_54_start *)__pyx_tp_new_4grpc_7_cython_6cygrpc___pyx_scope_struct_54_start(__pyx_ptype_4grpc_7_cython_6cygrpc___pyx_scope_struct_54_start, __pyx_empty_tuple, NULL);
  if (unlikely(!__pyx_cur_scope)) {
    __pyx_cur_scope = ((struct __pyx_obj_4grpc_7_cython_6cygrpc___pyx_scope_struct_54_start *)Py_None);
    __Pyx_INCREF(Py_None);
    __PYX_ERR(10, 955, __pyx_L1_error)
  } else {
    __Pyx_GOTREF(__pyx_cur_scope);
  }
  __pyx_cur_scope->__pyx_v_self = __pyx_v_self;
  __Pyx_INCREF((PyObject *)__pyx_cur_scope->__pyx_v_self);
  __Pyx_GIVEREF((PyObject *)__pyx_cur_scope->__pyx_v_self);
  {
    __pyx_CoroutineObject *gen = __Pyx_Coroutine_New((__pyx_coroutine_body_t) __pyx_gb_4grpc_7_cython_6cygrpc_9AioServer_18generator42, NULL, (PyObject *) __pyx_cur_scope, __pyx_n_s_start, __pyx_n_s_AioServer_start, __pyx_n_s_grpc__cython_cygrpc); if (unlikely(!gen)) __PYX_ERR(10, 955, __pyx_L1_error)
    __Pyx_DECREF(__pyx_cur_scope);
    __Pyx_RefNannyFinishContext();
    return (PyObject *) gen;
  }

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_AddTraceback("grpc._cython.cygrpc.AioServer.start", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __Pyx_DECREF(((PyObject *)__pyx_cur_scope));
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_gb_4grpc_7_cython_6cygrpc_9AioServer_18generator42(__pyx_CoroutineObject *__pyx_generator, CYTHON_UNUSED PyThreadState *__pyx_tstate, PyObject *__pyx_sent_value) /* generator body */
{
  struct __pyx_obj_4grpc_7_cython_6cygrpc___pyx_scope_struct_54_start *__pyx_cur_scope = ((struct __pyx_obj_4grpc_7_cython_6cygrpc___pyx_scope_struct_54_start *)__pyx_generator->closure);
  PyObject *__pyx_r = NULL;
  int __pyx_t_1;
  PyObject *__pyx_t_2 = NULL;
  PyObject *__pyx_t_3 = NULL;
  PyObject *__pyx_t_4 = NULL;
  PyObject *__pyx_t_5 = NULL;
  PyObject *__pyx_t_6 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("start", 0);
  switch (__pyx_generator->resume_label) {
    case 0: goto __pyx_L3_first_run;
    case 1: goto __pyx_L5_resume_from_await;
    default: /* CPython raises the right error here */
    __Pyx_RefNannyFinishContext();
    return NULL;
  }
  __pyx_L3_first_run:;
  if (unlikely(!__pyx_sent_value)) __PYX_ERR(10, 955, __pyx_L1_error)

  /* "src/python/grpcio/grpc/_cython/_cygrpc/aio/server.pyx.pxi":956
 * 
 *     async def start(self):
 *         if self._status == AIO_SERVER_STATUS_RUNNING:             # <<<<<<<<<<<<<<
 *             return
 *         elif self._status != AIO_SERVER_STATUS_READY:
 */
  __pyx_t_1 = ((__pyx_cur_scope->__pyx_v_self->_status == __pyx_e_4grpc_7_cython_6cygrpc_AIO_SERVER_STATUS_RUNNING) != 0);
  if (__pyx_t_1) {

    /* "src/python/grpcio/grpc/_cython/_cygrpc/aio/server.pyx.pxi":957
 *     async def start(self):
 *         if self._status == AIO_SERVER_STATUS_RUNNING:
 *             return             # <<<<<<<<<<<<<<
 *         elif self._status != AIO_SERVER_STATUS_READY:
 *             raise UsageError('Server not in ready state')
 */
    __Pyx_XDECREF(__pyx_r);
    __pyx_r = NULL;
    goto __pyx_L0;

    /* "src/python/grpcio/grpc/_cython/_cygrpc/aio/server.pyx.pxi":956
 * 
 *     async def start(self):
 *         if self._status == AIO_SERVER_STATUS_RUNNING:             # <<<<<<<<<<<<<<
 *             return
 *         elif self._status != AIO_SERVER_STATUS_READY:
 */
  }

  /* "src/python/grpcio/grpc/_cython/_cygrpc/aio/server.pyx.pxi":958
 *         if self._status == AIO_SERVER_STATUS_RUNNING:
 *             return
 *         elif self._status != AIO_SERVER_STATUS_READY:             # <<<<<<<<<<<<<<
 *             raise UsageError('Server not in ready state')
 * 
 */
  __pyx_t_1 = ((__pyx_cur_scope->__pyx_v_self->_status != __pyx_e_4grpc_7_cython_6cygrpc_AIO_SERVER_STATUS_READY) != 0);
  if (unlikely(__pyx_t_1)) {

    /* "src/python/grpcio/grpc/_cython/_cygrpc/aio/server.pyx.pxi":959
 *             return
 *         elif self._status != AIO_SERVER_STATUS_READY:
 *             raise UsageError('Server not in ready state')             # <<<<<<<<<<<<<<
 * 
 *         self._status = AIO_SERVER_STATUS_RUNNING
 */
    __Pyx_GetModuleGlobalName(__pyx_t_3, __pyx_n_s_UsageError); if (unlikely(!__pyx_t_3)) __PYX_ERR(10, 959, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_3);
    __pyx_t_4 = NULL;
    if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_3))) {
      __pyx_t_4 = PyMethod_GET_SELF(__pyx_t_3);
      if (likely(__pyx_t_4)) {
        PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_3);
        __Pyx_INCREF(__pyx_t_4);
        __Pyx_INCREF(function);
        __Pyx_DECREF_SET(__pyx_t_3, function);
      }
    }
    __pyx_t_2 = (__pyx_t_4) ? __Pyx_PyObject_Call2Args(__pyx_t_3, __pyx_t_4, __pyx_kp_s_Server_not_in_ready_state) : __Pyx_PyObject_CallOneArg(__pyx_t_3, __pyx_kp_s_Server_not_in_ready_state);
    __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0;
    if (unlikely(!__pyx_t_2)) __PYX_ERR(10, 959, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_2);
    __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
    __Pyx_Raise(__pyx_t_2, 0, 0, 0);
    __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
    __PYX_ERR(10, 959, __pyx_L1_error)

    /* "src/python/grpcio/grpc/_cython/_cygrpc/aio/server.pyx.pxi":958
 *         if self._status == AIO_SERVER_STATUS_RUNNING:
 *             return
 *         elif self._status != AIO_SERVER_STATUS_READY:             # <<<<<<<<<<<<<<
 *             raise UsageError('Server not in ready state')
 * 
 */
  }

  /* "src/python/grpcio/grpc/_cython/_cygrpc/aio/server.pyx.pxi":961
 *             raise UsageError('Server not in ready state')
 * 
 *         self._status = AIO_SERVER_STATUS_RUNNING             # <<<<<<<<<<<<<<
 *         cdef object server_started = self._loop.create_future()
 *         self._serving_task = self._loop.create_task(self._server_main_loop(server_started))
 */
  __pyx_cur_scope->__pyx_v_self->_status = __pyx_e_4grpc_7_cython_6cygrpc_AIO_SERVER_STATUS_RUNNING;

  /* "src/python/grpcio/grpc/_cython/_cygrpc/aio/server.pyx.pxi":962
 * 
 *         self._status = AIO_SERVER_STATUS_RUNNING
 *         cdef object server_started = self._loop.create_future()             # <<<<<<<<<<<<<<
 *         self._serving_task = self._loop.create_task(self._server_main_loop(server_started))
 *         self._serving_task.add_done_callback(self._serving_task_crash_handler)
 */
  __pyx_t_3 = __Pyx_PyObject_GetAttrStr(__pyx_cur_scope->__pyx_v_self->_loop, __pyx_n_s_create_future); if (unlikely(!__pyx_t_3)) __PYX_ERR(10, 962, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  __pyx_t_4 = NULL;
  if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_3))) {
    __pyx_t_4 = PyMethod_GET_SELF(__pyx_t_3);
    if (likely(__pyx_t_4)) {
      PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_3);
      __Pyx_INCREF(__pyx_t_4);
      __Pyx_INCREF(function);
      __Pyx_DECREF_SET(__pyx_t_3, function);
    }
  }
  __pyx_t_2 = (__pyx_t_4) ? __Pyx_PyObject_CallOneArg(__pyx_t_3, __pyx_t_4) : __Pyx_PyObject_CallNoArg(__pyx_t_3);
  __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0;
  if (unlikely(!__pyx_t_2)) __PYX_ERR(10, 962, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
  __Pyx_GIVEREF(__pyx_t_2);
  __pyx_cur_scope->__pyx_v_server_started = __pyx_t_2;
  __pyx_t_2 = 0;

  /* "src/python/grpcio/grpc/_cython/_cygrpc/aio/server.pyx.pxi":963
 *         self._status = AIO_SERVER_STATUS_RUNNING
 *         cdef object server_started = self._loop.create_future()
 *         self._serving_task = self._loop.create_task(self._server_main_loop(server_started))             # <<<<<<<<<<<<<<
 *         self._serving_task.add_done_callback(self._serving_task_crash_handler)
 *         # Needs to explicitly wait for the server to start up.
 */
  __pyx_t_3 = __Pyx_PyObject_GetAttrStr(__pyx_cur_scope->__pyx_v_self->_loop, __pyx_n_s_create_task); if (unlikely(!__pyx_t_3)) __PYX_ERR(10, 963, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  __pyx_t_5 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_cur_scope->__pyx_v_self), __pyx_n_s_server_main_loop); if (unlikely(!__pyx_t_5)) __PYX_ERR(10, 963, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_5);
  __pyx_t_6 = NULL;
  if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_5))) {
    __pyx_t_6 = PyMethod_GET_SELF(__pyx_t_5);
    if (likely(__pyx_t_6)) {
      PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_5);
      __Pyx_INCREF(__pyx_t_6);
      __Pyx_INCREF(function);
      __Pyx_DECREF_SET(__pyx_t_5, function);
    }
  }
  __pyx_t_4 = (__pyx_t_6) ? __Pyx_PyObject_Call2Args(__pyx_t_5, __pyx_t_6, __pyx_cur_scope->__pyx_v_server_started) : __Pyx_PyObject_CallOneArg(__pyx_t_5, __pyx_cur_scope->__pyx_v_server_started);
  __Pyx_XDECREF(__pyx_t_6); __pyx_t_6 = 0;
  if (unlikely(!__pyx_t_4)) __PYX_ERR(10, 963, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_4);
  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
  __pyx_t_5 = NULL;
  if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_3))) {
    __pyx_t_5 = PyMethod_GET_SELF(__pyx_t_3);
    if (likely(__pyx_t_5)) {
      PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_3);
      __Pyx_INCREF(__pyx_t_5);
      __Pyx_INCREF(function);
      __Pyx_DECREF_SET(__pyx_t_3, function);
    }
  }
  __pyx_t_2 = (__pyx_t_5) ? __Pyx_PyObject_Call2Args(__pyx_t_3, __pyx_t_5, __pyx_t_4) : __Pyx_PyObject_CallOneArg(__pyx_t_3, __pyx_t_4);
  __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0;
  __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
  if (unlikely(!__pyx_t_2)) __PYX_ERR(10, 963, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
  __Pyx_GIVEREF(__pyx_t_2);
  __Pyx_GOTREF(__pyx_cur_scope->__pyx_v_self->_serving_task);
  __Pyx_DECREF(__pyx_cur_scope->__pyx_v_self->_serving_task);
  __pyx_cur_scope->__pyx_v_self->_serving_task = __pyx_t_2;
  __pyx_t_2 = 0;

  /* "src/python/grpcio/grpc/_cython/_cygrpc/aio/server.pyx.pxi":964
 *         cdef object server_started = self._loop.create_future()
 *         self._serving_task = self._loop.create_task(self._server_main_loop(server_started))
 *         self._serving_task.add_done_callback(self._serving_task_crash_handler)             # <<<<<<<<<<<<<<
 *         # Needs to explicitly wait for the server to start up.
 *         # Otherwise, the actual start time of the server is un-controllable.
 */
  __pyx_t_3 = __Pyx_PyObject_GetAttrStr(__pyx_cur_scope->__pyx_v_self->_serving_task, __pyx_n_s_add_done_callback); if (unlikely(!__pyx_t_3)) __PYX_ERR(10, 964, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  __pyx_t_4 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_cur_scope->__pyx_v_self), __pyx_n_s_serving_task_crash_handler); if (unlikely(!__pyx_t_4)) __PYX_ERR(10, 964, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_4);
  __pyx_t_5 = NULL;
  if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_3))) {
    __pyx_t_5 = PyMethod_GET_SELF(__pyx_t_3);
    if (likely(__pyx_t_5)) {
      PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_3);
      __Pyx_INCREF(__pyx_t_5);
      __Pyx_INCREF(function);
      __Pyx_DECREF_SET(__pyx_t_3, function);
    }
  }
  __pyx_t_2 = (__pyx_t_5) ? __Pyx_PyObject_Call2Args(__pyx_t_3, __pyx_t_5, __pyx_t_4) : __Pyx_PyObject_CallOneArg(__pyx_t_3, __pyx_t_4);
  __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0;
  __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
  if (unlikely(!__pyx_t_2)) __PYX_ERR(10, 964, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;

  /* "src/python/grpcio/grpc/_cython/_cygrpc/aio/server.pyx.pxi":967
 *         # Needs to explicitly wait for the server to start up.
 *         # Otherwise, the actual start time of the server is un-controllable.
 *         await server_started             # <<<<<<<<<<<<<<
 * 
 *     async def _start_shutting_down(self):
 */
  __pyx_r = __Pyx_Coroutine_Yield_From(__pyx_generator, __pyx_cur_scope->__pyx_v_server_started);
  __Pyx_XGOTREF(__pyx_r);
  if (likely(__pyx_r)) {
    __Pyx_XGIVEREF(__pyx_r);
    __Pyx_RefNannyFinishContext();
    __Pyx_Coroutine_ResetAndClearException(__pyx_generator);
    /* return from generator, awaiting value */
    __pyx_generator->resume_label = 1;
    return __pyx_r;
    __pyx_L5_resume_from_await:;
    if (unlikely(!__pyx_sent_value)) __PYX_ERR(10, 967, __pyx_L1_error)
  } else {
    PyObject* exc_type = __Pyx_PyErr_Occurred();
    if (exc_type) {
      if (likely(exc_type == PyExc_StopIteration || (exc_type != PyExc_GeneratorExit && __Pyx_PyErr_GivenExceptionMatches(exc_type, PyExc_StopIteration)))) PyErr_Clear();
      else __PYX_ERR(10, 967, __pyx_L1_error)
    }
  }
  CYTHON_MAYBE_UNUSED_VAR(__pyx_cur_scope);

  /* "src/python/grpcio/grpc/_cython/_cygrpc/aio/server.pyx.pxi":955
 *             self._loop.create_task(self.shutdown(None))
 * 
 *     async def start(self):             # <<<<<<<<<<<<<<
 *         if self._status == AIO_SERVER_STATUS_RUNNING:
 *             return
 */

  /* function exit code */
  PyErr_SetNone(PyExc_StopIteration);
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_XDECREF(__pyx_t_3);
  __Pyx_XDECREF(__pyx_t_4);
  __Pyx_XDECREF(__pyx_t_5);
  __Pyx_XDECREF(__pyx_t_6);
  __Pyx_AddTraceback("start", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_L0:;
  __Pyx_XDECREF(__pyx_r); __pyx_r = 0;
  #if !CYTHON_USE_EXC_INFO_STACK
  __Pyx_Coroutine_ResetAndClearException(__pyx_generator);
  #endif
  __pyx_generator->resume_label = -1;
  __Pyx_Coroutine_clear((PyObject*)__pyx_generator);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}
static PyObject *__pyx_gb_4grpc_7_cython_6cygrpc_9AioServer_21generator43(__pyx_CoroutineObject *__pyx_generator, CYTHON_UNUSED PyThreadState *__pyx_tstate, PyObject *__pyx_sent_value); /* proto */

/* "src/python/grpcio/grpc/_cython/_cygrpc/aio/server.pyx.pxi":969
 *         await server_started
 * 
 *     async def _start_shutting_down(self):             # <<<<<<<<<<<<<<
 *         """Prepares the server to shutting down.
 * 
 */

/* Python wrapper */
static PyObject *__pyx_pw_4grpc_7_cython_6cygrpc_9AioServer_20_start_shutting_down(PyObject *__pyx_v_self, CYTHON_UNUSED PyObject *unused); /*proto*/
static char __pyx_doc_4grpc_7_cython_6cygrpc_9AioServer_19_start_shutting_down[] = "Prepares the server to shutting down.\n\n        This coroutine function is NOT coroutine-safe.\n        ";
static PyObject *__pyx_pw_4grpc_7_cython_6cygrpc_9AioServer_20_start_shutting_down(PyObject *__pyx_v_self, CYTHON_UNUSED PyObject *unused) {
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("_start_shutting_down (wrapper)", 0);
  __pyx_r = __pyx_pf_4grpc_7_cython_6cygrpc_9AioServer_19_start_shutting_down(((struct __pyx_obj_4grpc_7_cython_6cygrpc_AioServer *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_4grpc_7_cython_6cygrpc_9AioServer_19_start_shutting_down(struct __pyx_obj_4grpc_7_cython_6cygrpc_AioServer *__pyx_v_self) {
  struct __pyx_obj_4grpc_7_cython_6cygrpc___pyx_scope_struct_55__start_shutting_down *__pyx_cur_scope;
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("_start_shutting_down", 0);
  __pyx_cur_scope = (struct __pyx_obj_4grpc_7_cython_6cygrpc___pyx_scope_struct_55__start_shutting_down *)__pyx_tp_new_4grpc_7_cython_6cygrpc___pyx_scope_struct_55__start_shutting_down(__pyx_ptype_4grpc_7_cython_6cygrpc___pyx_scope_struct_55__start_shutting_down, __pyx_empty_tuple, NULL);
  if (unlikely(!__pyx_cur_scope)) {
    __pyx_cur_scope = ((struct __pyx_obj_4grpc_7_cython_6cygrpc___pyx_scope_struct_55__start_shutting_down *)Py_None);
    __Pyx_INCREF(Py_None);
    __PYX_ERR(10, 969, __pyx_L1_error)
  } else {
    __Pyx_GOTREF(__pyx_cur_scope);
  }
  __pyx_cur_scope->__pyx_v_self = __pyx_v_self;
  __Pyx_INCREF((PyObject *)__pyx_cur_scope->__pyx_v_self);
  __Pyx_GIVEREF((PyObject *)__pyx_cur_scope->__pyx_v_self);
  {
    __pyx_CoroutineObject *gen = __Pyx_Coroutine_New((__pyx_coroutine_body_t) __pyx_gb_4grpc_7_cython_6cygrpc_9AioServer_21generator43, NULL, (PyObject *) __pyx_cur_scope, __pyx_n_s_start_shutting_down, __pyx_n_s_AioServer__start_shutting_down, __pyx_n_s_grpc__cython_cygrpc); if (unlikely(!gen)) __PYX_ERR(10, 969, __pyx_L1_error)
    __Pyx_DECREF(__pyx_cur_scope);
    __Pyx_RefNannyFinishContext();
    return (PyObject *) gen;
  }

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_AddTraceback("grpc._cython.cygrpc.AioServer._start_shutting_down", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __Pyx_DECREF(((PyObject *)__pyx_cur_scope));
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_gb_4grpc_7_cython_6cygrpc_9AioServer_21generator43(__pyx_CoroutineObject *__pyx_generator, CYTHON_UNUSED PyThreadState *__pyx_tstate, PyObject *__pyx_sent_value) /* generator body */
{
  struct __pyx_obj_4grpc_7_cython_6cygrpc___pyx_scope_struct_55__start_shutting_down *__pyx_cur_scope = ((struct __pyx_obj_4grpc_7_cython_6cygrpc___pyx_scope_struct_55__start_shutting_down *)__pyx_generator->closure);
  PyObject *__pyx_r = NULL;
  PyObject *__pyx_t_1 = NULL;
  PyObject *__pyx_t_2 = NULL;
  PyObject *__pyx_t_3 = NULL;
  PyObject *__pyx_t_4 = NULL;
  PyObject *__pyx_t_5 = NULL;
  PyObject *__pyx_t_6 = NULL;
  PyObject *__pyx_t_7 = NULL;
  int __pyx_t_8;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("_start_shutting_down", 0);
  switch (__pyx_generator->resume_label) {
    case 0: goto __pyx_L3_first_run;
    case 1: goto __pyx_L10_resume_from_await;
    default: /* CPython raises the right error here */
    __Pyx_RefNannyFinishContext();
    return NULL;
  }
  __pyx_L3_first_run:;
  if (unlikely(!__pyx_sent_value)) __PYX_ERR(10, 969, __pyx_L1_error)

  /* "src/python/grpcio/grpc/_cython/_cygrpc/aio/server.pyx.pxi":975
 *         """
 *         # The shutdown callback won't be called until there is no live RPC.
 *         grpc_server_shutdown_and_notify(             # <<<<<<<<<<<<<<
 *             self._server.c_server,
 *             global_completion_queue(),
 */
  grpc_server_shutdown_and_notify(__pyx_cur_scope->__pyx_v_self->_server->c_server, __pyx_f_4grpc_7_cython_6cygrpc_global_completion_queue(), ((struct __pyx_vtabstruct_4grpc_7_cython_6cygrpc_CallbackWrapper *)__pyx_cur_scope->__pyx_v_self->_shutdown_callback_wrapper->__pyx_vtab)->c_functor(__pyx_cur_scope->__pyx_v_self->_shutdown_callback_wrapper));

  /* "src/python/grpcio/grpc/_cython/_cygrpc/aio/server.pyx.pxi":981
 * 
 *         # Ensures the serving task (coroutine) exits.
 *         try:             # <<<<<<<<<<<<<<
 *             await self._serving_task
 *         except _RequestCallError:
 */
  {
    __Pyx_ExceptionSave(&__pyx_t_1, &__pyx_t_2, &__pyx_t_3);
    __Pyx_XGOTREF(__pyx_t_1);
    __Pyx_XGOTREF(__pyx_t_2);
    __Pyx_XGOTREF(__pyx_t_3);
    /*try:*/ {

      /* "src/python/grpcio/grpc/_cython/_cygrpc/aio/server.pyx.pxi":982
 *         # Ensures the serving task (coroutine) exits.
 *         try:
 *             await self._serving_task             # <<<<<<<<<<<<<<
 *         except _RequestCallError:
 *             pass
 */
      __pyx_r = __Pyx_Coroutine_Yield_From(__pyx_generator, __pyx_cur_scope->__pyx_v_self->_serving_task);
      __Pyx_XGOTREF(__pyx_r);
      if (likely(__pyx_r)) {
        __Pyx_XGIVEREF(__pyx_t_1);
        __pyx_cur_scope->__pyx_t_0 = __pyx_t_1;
        __Pyx_XGIVEREF(__pyx_t_2);
        __pyx_cur_scope->__pyx_t_1 = __pyx_t_2;
        __Pyx_XGIVEREF(__pyx_t_3);
        __pyx_cur_scope->__pyx_t_2 = __pyx_t_3;
        __Pyx_XGIVEREF(__pyx_r);
        __Pyx_RefNannyFinishContext();
        __Pyx_Coroutine_ResetAndClearException(__pyx_generator);
        /* return from generator, awaiting value */
        __pyx_generator->resume_label = 1;
        return __pyx_r;
        __pyx_L10_resume_from_await:;
        __pyx_t_1 = __pyx_cur_scope->__pyx_t_0;
        __pyx_cur_scope->__pyx_t_0 = 0;
        __Pyx_XGOTREF(__pyx_t_1);
        __pyx_t_2 = __pyx_cur_scope->__pyx_t_1;
        __pyx_cur_scope->__pyx_t_1 = 0;
        __Pyx_XGOTREF(__pyx_t_2);
        __pyx_t_3 = __pyx_cur_scope->__pyx_t_2;
        __pyx_cur_scope->__pyx_t_2 = 0;
        __Pyx_XGOTREF(__pyx_t_3);
        if (unlikely(!__pyx_sent_value)) __PYX_ERR(10, 982, __pyx_L4_error)
      } else {
        PyObject* exc_type = __Pyx_PyErr_Occurred();
        if (exc_type) {
          if (likely(exc_type == PyExc_StopIteration || (exc_type != PyExc_GeneratorExit && __Pyx_PyErr_GivenExceptionMatches(exc_type, PyExc_StopIteration)))) PyErr_Clear();
          else __PYX_ERR(10, 982, __pyx_L4_error)
        }
      }

      /* "src/python/grpcio/grpc/_cython/_cygrpc/aio/server.pyx.pxi":981
 * 
 *         # Ensures the serving task (coroutine) exits.
 *         try:             # <<<<<<<<<<<<<<
 *             await self._serving_task
 *         except _RequestCallError:
 */
    }
    __Pyx_XDECREF(__pyx_t_1); __pyx_t_1 = 0;
    __Pyx_XDECREF(__pyx_t_2); __pyx_t_2 = 0;
    __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0;
    goto __pyx_L9_try_end;
    __pyx_L4_error:;

    /* "src/python/grpcio/grpc/_cython/_cygrpc/aio/server.pyx.pxi":983
 *         try:
 *             await self._serving_task
 *         except _RequestCallError:             # <<<<<<<<<<<<<<
 *             pass
 * 
 */
    __Pyx_ErrFetch(&__pyx_t_4, &__pyx_t_5, &__pyx_t_6);
    __Pyx_GetModuleGlobalName(__pyx_t_7, __pyx_n_s_RequestCallError); if (unlikely(!__pyx_t_7)) __PYX_ERR(10, 983, __pyx_L6_except_error)
    __Pyx_GOTREF(__pyx_t_7);
    __pyx_t_8 = __Pyx_PyErr_GivenExceptionMatches(__pyx_t_4, __pyx_t_7);
    __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
    __Pyx_ErrRestore(__pyx_t_4, __pyx_t_5, __pyx_t_6);
    __pyx_t_4 = 0; __pyx_t_5 = 0; __pyx_t_6 = 0;
    if (__pyx_t_8) {
      __Pyx_ErrRestore(0,0,0);
      goto __pyx_L5_exception_handled;
    }
    goto __pyx_L6_except_error;
    __pyx_L6_except_error:;

    /* "src/python/grpcio/grpc/_cython/_cygrpc/aio/server.pyx.pxi":981
 * 
 *         # Ensures the serving task (coroutine) exits.
 *         try:             # <<<<<<<<<<<<<<
 *             await self._serving_task
 *         except _RequestCallError:
 */
    __Pyx_XGIVEREF(__pyx_t_1);
    __Pyx_XGIVEREF(__pyx_t_2);
    __Pyx_XGIVEREF(__pyx_t_3);
    __Pyx_ExceptionReset(__pyx_t_1, __pyx_t_2, __pyx_t_3);
    goto __pyx_L1_error;
    __pyx_L5_exception_handled:;
    __Pyx_XGIVEREF(__pyx_t_1);
    __Pyx_XGIVEREF(__pyx_t_2);
    __Pyx_XGIVEREF(__pyx_t_3);
    __Pyx_ExceptionReset(__pyx_t_1, __pyx_t_2, __pyx_t_3);
    __pyx_L9_try_end:;
  }
  CYTHON_MAYBE_UNUSED_VAR(__pyx_cur_scope);

  /* "src/python/grpcio/grpc/_cython/_cygrpc/aio/server.pyx.pxi":969
 *         await server_started
 * 
 *     async def _start_shutting_down(self):             # <<<<<<<<<<<<<<
 *         """Prepares the server to shutting down.
 * 
 */

  /* function exit code */
  PyErr_SetNone(PyExc_StopIteration);
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_4);
  __Pyx_XDECREF(__pyx_t_5);
  __Pyx_XDECREF(__pyx_t_6);
  __Pyx_XDECREF(__pyx_t_7);
  __Pyx_AddTraceback("_start_shutting_down", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_L0:;
  __Pyx_XDECREF(__pyx_r); __pyx_r = 0;
  #if !CYTHON_USE_EXC_INFO_STACK
  __Pyx_Coroutine_ResetAndClearException(__pyx_generator);
  #endif
  __pyx_generator->resume_label = -1;
  __Pyx_Coroutine_clear((PyObject*)__pyx_generator);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}
static PyObject *__pyx_gb_4grpc_7_cython_6cygrpc_9AioServer_24generator44(__pyx_CoroutineObject *__pyx_generator, CYTHON_UNUSED PyThreadState *__pyx_tstate, PyObject *__pyx_sent_value); /* proto */

/* "src/python/grpcio/grpc/_cython/_cygrpc/aio/server.pyx.pxi":986
 *             pass
 * 
 *     async def shutdown(self, grace):             # <<<<<<<<<<<<<<
 *         """Gracefully shutdown the Core server.
 * 
 */

/* Python wrapper */
static PyObject *__pyx_pw_4grpc_7_cython_6cygrpc_9AioServer_23shutdown(PyObject *__pyx_v_self, PyObject *__pyx_v_grace); /*proto*/
static char __pyx_doc_4grpc_7_cython_6cygrpc_9AioServer_22shutdown[] = "Gracefully shutdown the Core server.\n\n        Application should only call shutdown once.\n\n        Args:\n          grace: An optional float indicating the length of grace period in\n            seconds.\n        ";
static PyObject *__pyx_pw_4grpc_7_cython_6cygrpc_9AioServer_23shutdown(PyObject *__pyx_v_self, PyObject *__pyx_v_grace) {
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("shutdown (wrapper)", 0);
  __pyx_r = __pyx_pf_4grpc_7_cython_6cygrpc_9AioServer_22shutdown(((struct __pyx_obj_4grpc_7_cython_6cygrpc_AioServer *)__pyx_v_self), ((PyObject *)__pyx_v_grace));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_4grpc_7_cython_6cygrpc_9AioServer_22shutdown(struct __pyx_obj_4grpc_7_cython_6cygrpc_AioServer *__pyx_v_self, PyObject *__pyx_v_grace) {
  struct __pyx_obj_4grpc_7_cython_6cygrpc___pyx_scope_struct_56_shutdown *__pyx_cur_scope;
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("shutdown", 0);
  __pyx_cur_scope = (struct __pyx_obj_4grpc_7_cython_6cygrpc___pyx_scope_struct_56_shutdown *)__pyx_tp_new_4grpc_7_cython_6cygrpc___pyx_scope_struct_56_shutdown(__pyx_ptype_4grpc_7_cython_6cygrpc___pyx_scope_struct_56_shutdown, __pyx_empty_tuple, NULL);
  if (unlikely(!__pyx_cur_scope)) {
    __pyx_cur_scope = ((struct __pyx_obj_4grpc_7_cython_6cygrpc___pyx_scope_struct_56_shutdown *)Py_None);
    __Pyx_INCREF(Py_None);
    __PYX_ERR(10, 986, __pyx_L1_error)
  } else {
    __Pyx_GOTREF(__pyx_cur_scope);
  }
  __pyx_cur_scope->__pyx_v_self = __pyx_v_self;
  __Pyx_INCREF((PyObject *)__pyx_cur_scope->__pyx_v_self);
  __Pyx_GIVEREF((PyObject *)__pyx_cur_scope->__pyx_v_self);
  __pyx_cur_scope->__pyx_v_grace = __pyx_v_grace;
  __Pyx_INCREF(__pyx_cur_scope->__pyx_v_grace);
  __Pyx_GIVEREF(__pyx_cur_scope->__pyx_v_grace);
  {
    __pyx_CoroutineObject *gen = __Pyx_Coroutine_New((__pyx_coroutine_body_t) __pyx_gb_4grpc_7_cython_6cygrpc_9AioServer_24generator44, NULL, (PyObject *) __pyx_cur_scope, __pyx_n_s_shutdown, __pyx_n_s_AioServer_shutdown, __pyx_n_s_grpc__cython_cygrpc); if (unlikely(!gen)) __PYX_ERR(10, 986, __pyx_L1_error)
    __Pyx_DECREF(__pyx_cur_scope);
    __Pyx_RefNannyFinishContext();
    return (PyObject *) gen;
  }

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_AddTraceback("grpc._cython.cygrpc.AioServer.shutdown", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __Pyx_DECREF(((PyObject *)__pyx_cur_scope));
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_gb_4grpc_7_cython_6cygrpc_9AioServer_24generator44(__pyx_CoroutineObject *__pyx_generator, CYTHON_UNUSED PyThreadState *__pyx_tstate, PyObject *__pyx_sent_value) /* generator body */
{
  struct __pyx_obj_4grpc_7_cython_6cygrpc___pyx_scope_struct_56_shutdown *__pyx_cur_scope = ((struct __pyx_obj_4grpc_7_cython_6cygrpc___pyx_scope_struct_56_shutdown *)__pyx_generator->closure);
  PyObject *__pyx_r = NULL;
  PyObject *__pyx_t_1 = NULL;
  PyObject *__pyx_t_2 = NULL;
  PyObject *__pyx_t_3 = NULL;
  PyObject *__pyx_t_4 = NULL;
  PyObject *__pyx_t_5 = NULL;
  PyObject *__pyx_t_6 = NULL;
  PyObject *__pyx_t_7 = NULL;
  int __pyx_t_8;
  PyObject *__pyx_t_9 = NULL;
  PyObject *__pyx_t_10 = NULL;
  int __pyx_t_11;
  PyObject *__pyx_t_12 = NULL;
  int __pyx_t_13;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("shutdown", 0);
  switch (__pyx_generator->resume_label) {
    case 0: goto __pyx_L3_first_run;
    case 1: goto __pyx_L5_resume_from_await;
    case 2: goto __pyx_L16_resume_from_await;
    case 3: goto __pyx_L20_resume_from_await;
    case 4: goto __pyx_L21_resume_from_await;
    case 5: goto __pyx_L24_resume_from_await;
    case 6: goto __pyx_L31_resume_from_await;
    case 7: goto __pyx_L34_resume_from_await;
    case 8: goto __pyx_L36_resume_from_await;
    case 9: goto __pyx_L47_resume_from_await;
    default: /* CPython raises the right error here */
    __Pyx_RefNannyFinishContext();
    return NULL;
  }
  __pyx_L3_first_run:;
  if (unlikely(!__pyx_sent_value)) __PYX_ERR(10, 986, __pyx_L1_error)

  /* "src/python/grpcio/grpc/_cython/_cygrpc/aio/server.pyx.pxi":995
 *             seconds.
 *         """
 *         if self._status == AIO_SERVER_STATUS_READY or self._status == AIO_SERVER_STATUS_STOPPED:             # <<<<<<<<<<<<<<
 *             return
 * 
 */
  switch (__pyx_cur_scope->__pyx_v_self->_status) {
    case __pyx_e_4grpc_7_cython_6cygrpc_AIO_SERVER_STATUS_READY:
    case __pyx_e_4grpc_7_cython_6cygrpc_AIO_SERVER_STATUS_STOPPED:

    /* "src/python/grpcio/grpc/_cython/_cygrpc/aio/server.pyx.pxi":996
 *         """
 *         if self._status == AIO_SERVER_STATUS_READY or self._status == AIO_SERVER_STATUS_STOPPED:
 *             return             # <<<<<<<<<<<<<<
 * 
 *         async with self._shutdown_lock:
 */
    __Pyx_XDECREF(__pyx_r);
    __pyx_r = NULL;
    goto __pyx_L0;

    /* "src/python/grpcio/grpc/_cython/_cygrpc/aio/server.pyx.pxi":995
 *             seconds.
 *         """
 *         if self._status == AIO_SERVER_STATUS_READY or self._status == AIO_SERVER_STATUS_STOPPED:             # <<<<<<<<<<<<<<
 *             return
 * 
 */
    break;
    default: break;
  }

  /* "src/python/grpcio/grpc/_cython/_cygrpc/aio/server.pyx.pxi":998
 *             return
 * 
 *         async with self._shutdown_lock:             # <<<<<<<<<<<<<<
 *             if self._status == AIO_SERVER_STATUS_RUNNING:
 *                 self._server.is_shutting_down = True
 */
  /*with:*/ {
    __pyx_t_1 = __Pyx_PyObject_LookupSpecial(__pyx_cur_scope->__pyx_v_self->_shutdown_lock, __pyx_n_s_aexit); if (unlikely(!__pyx_t_1)) __PYX_ERR(10, 998, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_1);
    __pyx_t_3 = __Pyx_PyObject_LookupSpecial(__pyx_cur_scope->__pyx_v_self->_shutdown_lock, __pyx_n_s_aenter); if (unlikely(!__pyx_t_3)) __PYX_ERR(10, 998, __pyx_L4_error)
    __Pyx_GOTREF(__pyx_t_3);
    __pyx_t_4 = NULL;
    if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_3))) {
      __pyx_t_4 = PyMethod_GET_SELF(__pyx_t_3);
      if (likely(__pyx_t_4)) {
        PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_3);
        __Pyx_INCREF(__pyx_t_4);
        __Pyx_INCREF(function);
        __Pyx_DECREF_SET(__pyx_t_3, function);
      }
    }
    __pyx_t_2 = (__pyx_t_4) ? __Pyx_PyObject_CallOneArg(__pyx_t_3, __pyx_t_4) : __Pyx_PyObject_CallNoArg(__pyx_t_3);
    __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0;
    if (unlikely(!__pyx_t_2)) __PYX_ERR(10, 998, __pyx_L4_error)
    __Pyx_GOTREF(__pyx_t_2);
    __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
    __pyx_r = __Pyx_Coroutine_Yield_From(__pyx_generator, __pyx_t_2);
    __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
    __Pyx_XGOTREF(__pyx_r);
    if (likely(__pyx_r)) {
      __Pyx_XGIVEREF(__pyx_t_1);
      __pyx_cur_scope->__pyx_t_0 = __pyx_t_1;
      __Pyx_XGIVEREF(__pyx_r);
      __Pyx_RefNannyFinishContext();
      __Pyx_Coroutine_ResetAndClearException(__pyx_generator);
      /* return from generator, awaiting value */
      __pyx_generator->resume_label = 1;
      return __pyx_r;
      __pyx_L5_resume_from_await:;
      __pyx_t_1 = __pyx_cur_scope->__pyx_t_0;
      __pyx_cur_scope->__pyx_t_0 = 0;
      __Pyx_XGOTREF(__pyx_t_1);
      if (unlikely(!__pyx_sent_value)) __PYX_ERR(10, 998, __pyx_L4_error)
      __pyx_t_2 = __pyx_sent_value; __Pyx_INCREF(__pyx_t_2);
    } else {
      __pyx_t_2 = NULL;
      if (__Pyx_PyGen_FetchStopIterationValue(&__pyx_t_2) < 0) __PYX_ERR(10, 998, __pyx_L4_error)
      __Pyx_GOTREF(__pyx_t_2);
    }
    __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
    /*try:*/ {
      {
        __Pyx_ExceptionSave(&__pyx_t_5, &__pyx_t_6, &__pyx_t_7);
        __Pyx_XGOTREF(__pyx_t_5);
        __Pyx_XGOTREF(__pyx_t_6);
        __Pyx_XGOTREF(__pyx_t_7);
        /*try:*/ {

          /* "src/python/grpcio/grpc/_cython/_cygrpc/aio/server.pyx.pxi":999
 * 
 *         async with self._shutdown_lock:
 *             if self._status == AIO_SERVER_STATUS_RUNNING:             # <<<<<<<<<<<<<<
 *                 self._server.is_shutting_down = True
 *                 self._status = AIO_SERVER_STATUS_STOPPING
 */
          __pyx_t_8 = ((__pyx_cur_scope->__pyx_v_self->_status == __pyx_e_4grpc_7_cython_6cygrpc_AIO_SERVER_STATUS_RUNNING) != 0);
          if (__pyx_t_8) {

            /* "src/python/grpcio/grpc/_cython/_cygrpc/aio/server.pyx.pxi":1000
 *         async with self._shutdown_lock:
 *             if self._status == AIO_SERVER_STATUS_RUNNING:
 *                 self._server.is_shutting_down = True             # <<<<<<<<<<<<<<
 *                 self._status = AIO_SERVER_STATUS_STOPPING
 *                 await self._start_shutting_down()
 */
            __pyx_cur_scope->__pyx_v_self->_server->is_shutting_down = 1;

            /* "src/python/grpcio/grpc/_cython/_cygrpc/aio/server.pyx.pxi":1001
 *             if self._status == AIO_SERVER_STATUS_RUNNING:
 *                 self._server.is_shutting_down = True
 *                 self._status = AIO_SERVER_STATUS_STOPPING             # <<<<<<<<<<<<<<
 *                 await self._start_shutting_down()
 * 
 */
            __pyx_cur_scope->__pyx_v_self->_status = __pyx_e_4grpc_7_cython_6cygrpc_AIO_SERVER_STATUS_STOPPING;

            /* "src/python/grpcio/grpc/_cython/_cygrpc/aio/server.pyx.pxi":1002
 *                 self._server.is_shutting_down = True
 *                 self._status = AIO_SERVER_STATUS_STOPPING
 *                 await self._start_shutting_down()             # <<<<<<<<<<<<<<
 * 
 *         if grace is None:
 */
            __pyx_t_3 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_cur_scope->__pyx_v_self), __pyx_n_s_start_shutting_down); if (unlikely(!__pyx_t_3)) __PYX_ERR(10, 1002, __pyx_L9_error)
            __Pyx_GOTREF(__pyx_t_3);
            __pyx_t_4 = NULL;
            if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_3))) {
              __pyx_t_4 = PyMethod_GET_SELF(__pyx_t_3);
              if (likely(__pyx_t_4)) {
                PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_3);
                __Pyx_INCREF(__pyx_t_4);
                __Pyx_INCREF(function);
                __Pyx_DECREF_SET(__pyx_t_3, function);
              }
            }
            __pyx_t_2 = (__pyx_t_4) ? __Pyx_PyObject_CallOneArg(__pyx_t_3, __pyx_t_4) : __Pyx_PyObject_CallNoArg(__pyx_t_3);
            __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0;
            if (unlikely(!__pyx_t_2)) __PYX_ERR(10, 1002, __pyx_L9_error)
            __Pyx_GOTREF(__pyx_t_2);
            __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
            __pyx_r = __Pyx_Coroutine_Yield_From(__pyx_generator, __pyx_t_2);
            __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
            __Pyx_XGOTREF(__pyx_r);
            if (likely(__pyx_r)) {
              __Pyx_XGIVEREF(__pyx_t_1);
              __pyx_cur_scope->__pyx_t_0 = __pyx_t_1;
              __Pyx_XGIVEREF(__pyx_t_5);
              __pyx_cur_scope->__pyx_t_1 = __pyx_t_5;
              __Pyx_XGIVEREF(__pyx_t_6);
              __pyx_cur_scope->__pyx_t_2 = __pyx_t_6;
              __Pyx_XGIVEREF(__pyx_t_7);
              __pyx_cur_scope->__pyx_t_3 = __pyx_t_7;
              __Pyx_XGIVEREF(__pyx_r);
              __Pyx_RefNannyFinishContext();
              __Pyx_Coroutine_ResetAndClearException(__pyx_generator);
              /* return from generator, awaiting value */
              __pyx_generator->resume_label = 2;
              return __pyx_r;
              __pyx_L16_resume_from_await:;
              __pyx_t_1 = __pyx_cur_scope->__pyx_t_0;
              __pyx_cur_scope->__pyx_t_0 = 0;
              __Pyx_XGOTREF(__pyx_t_1);
              __pyx_t_5 = __pyx_cur_scope->__pyx_t_1;
              __pyx_cur_scope->__pyx_t_1 = 0;
              __Pyx_XGOTREF(__pyx_t_5);
              __pyx_t_6 = __pyx_cur_scope->__pyx_t_2;
              __pyx_cur_scope->__pyx_t_2 = 0;
              __Pyx_XGOTREF(__pyx_t_6);
              __pyx_t_7 = __pyx_cur_scope->__pyx_t_3;
              __pyx_cur_scope->__pyx_t_3 = 0;
              __Pyx_XGOTREF(__pyx_t_7);
              if (unlikely(!__pyx_sent_value)) __PYX_ERR(10, 1002, __pyx_L9_error)
            } else {
              PyObject* exc_type = __Pyx_PyErr_Occurred();
              if (exc_type) {
                if (likely(exc_type == PyExc_StopIteration || (exc_type != PyExc_GeneratorExit && __Pyx_PyErr_GivenExceptionMatches(exc_type, PyExc_StopIteration)))) PyErr_Clear();
                else __PYX_ERR(10, 1002, __pyx_L9_error)
              }
            }

            /* "src/python/grpcio/grpc/_cython/_cygrpc/aio/server.pyx.pxi":999
 * 
 *         async with self._shutdown_lock:
 *             if self._status == AIO_SERVER_STATUS_RUNNING:             # <<<<<<<<<<<<<<
 *                 self._server.is_shutting_down = True
 *                 self._status = AIO_SERVER_STATUS_STOPPING
 */
          }

          /* "src/python/grpcio/grpc/_cython/_cygrpc/aio/server.pyx.pxi":998
 *             return
 * 
 *         async with self._shutdown_lock:             # <<<<<<<<<<<<<<
 *             if self._status == AIO_SERVER_STATUS_RUNNING:
 *                 self._server.is_shutting_down = True
 */
        }
        __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0;
        __Pyx_XDECREF(__pyx_t_6); __pyx_t_6 = 0;
        __Pyx_XDECREF(__pyx_t_7); __pyx_t_7 = 0;
        goto __pyx_L14_try_end;
        __pyx_L9_error:;
        __Pyx_XDECREF(__pyx_t_2); __pyx_t_2 = 0;
        __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0;
        __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0;
        /*except:*/ {
          __Pyx_AddTraceback("grpc._cython.cygrpc.AioServer.shutdown", __pyx_clineno, __pyx_lineno, __pyx_filename);
          if (__Pyx_GetException(&__pyx_t_2, &__pyx_t_3, &__pyx_t_4) < 0) __PYX_ERR(10, 998, __pyx_L11_except_error)
          __Pyx_GOTREF(__pyx_t_2);
          __Pyx_GOTREF(__pyx_t_3);
          __Pyx_GOTREF(__pyx_t_4);
          __pyx_t_9 = PyTuple_Pack(3, __pyx_t_2, __pyx_t_3, __pyx_t_4); if (unlikely(!__pyx_t_9)) __PYX_ERR(10, 998, __pyx_L11_except_error)
          __Pyx_GOTREF(__pyx_t_9);
          __pyx_t_10 = __Pyx_PyObject_Call(__pyx_t_1, __pyx_t_9, NULL);
          __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
          __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0;
          if (unlikely(!__pyx_t_10)) __PYX_ERR(10, 998, __pyx_L11_except_error)
          __Pyx_GOTREF(__pyx_t_10);
          __pyx_r = __Pyx_Coroutine_Yield_From(__pyx_generator, __pyx_t_10);
          __Pyx_DECREF(__pyx_t_10); __pyx_t_10 = 0;
          __Pyx_XGOTREF(__pyx_r);
          if (likely(__pyx_r)) {
            __Pyx_XGIVEREF(__pyx_t_1);
            __pyx_cur_scope->__pyx_t_0 = __pyx_t_1;
            __Pyx_XGIVEREF(__pyx_t_2);
            __pyx_cur_scope->__pyx_t_1 = __pyx_t_2;
            __Pyx_XGIVEREF(__pyx_t_3);
            __pyx_cur_scope->__pyx_t_2 = __pyx_t_3;
            __Pyx_XGIVEREF(__pyx_t_4);
            __pyx_cur_scope->__pyx_t_3 = __pyx_t_4;
            __Pyx_XGIVEREF(__pyx_t_5);
            __pyx_cur_scope->__pyx_t_4 = __pyx_t_5;
            __Pyx_XGIVEREF(__pyx_t_6);
            __pyx_cur_scope->__pyx_t_5 = __pyx_t_6;
            __Pyx_XGIVEREF(__pyx_t_7);
            __pyx_cur_scope->__pyx_t_6 = __pyx_t_7;
            __Pyx_XGIVEREF(__pyx_t_10);
            __pyx_cur_scope->__pyx_t_7 = __pyx_t_10;
            __Pyx_XGIVEREF(__pyx_r);
            __Pyx_RefNannyFinishContext();
            __Pyx_Coroutine_SwapException(__pyx_generator);
            /* return from generator, awaiting value */
            __pyx_generator->resume_label = 3;
            return __pyx_r;
            __pyx_L20_resume_from_await:;
            __pyx_t_1 = __pyx_cur_scope->__pyx_t_0;
            __pyx_cur_scope->__pyx_t_0 = 0;
            __Pyx_XGOTREF(__pyx_t_1);
            __pyx_t_2 = __pyx_cur_scope->__pyx_t_1;
            __pyx_cur_scope->__pyx_t_1 = 0;
            __Pyx_XGOTREF(__pyx_t_2);
            __pyx_t_3 = __pyx_cur_scope->__pyx_t_2;
            __pyx_cur_scope->__pyx_t_2 = 0;
            __Pyx_XGOTREF(__pyx_t_3);
            __pyx_t_4 = __pyx_cur_scope->__pyx_t_3;
            __pyx_cur_scope->__pyx_t_3 = 0;
            __Pyx_XGOTREF(__pyx_t_4);
            __pyx_t_5 = __pyx_cur_scope->__pyx_t_4;
            __pyx_cur_scope->__pyx_t_4 = 0;
            __Pyx_XGOTREF(__pyx_t_5);
            __pyx_t_6 = __pyx_cur_scope->__pyx_t_5;
            __pyx_cur_scope->__pyx_t_5 = 0;
            __Pyx_XGOTREF(__pyx_t_6);
            __pyx_t_7 = __pyx_cur_scope->__pyx_t_6;
            __pyx_cur_scope->__pyx_t_6 = 0;
            __Pyx_XGOTREF(__pyx_t_7);
            __pyx_t_10 = __pyx_cur_scope->__pyx_t_7;
            __pyx_cur_scope->__pyx_t_7 = 0;
            __Pyx_XGOTREF(__pyx_t_10);
            if (unlikely(!__pyx_sent_value)) __PYX_ERR(10, 998, __pyx_L11_except_error)
            __pyx_t_9 = __pyx_sent_value; __Pyx_INCREF(__pyx_t_9);
          } else {
            __pyx_t_9 = NULL;
            if (__Pyx_PyGen_FetchStopIterationValue(&__pyx_t_9) < 0) __PYX_ERR(10, 998, __pyx_L11_except_error)
            __Pyx_GOTREF(__pyx_t_9);
          }
          __pyx_t_10 = __pyx_t_9;
          __pyx_t_9 = 0;
          __pyx_t_8 = __Pyx_PyObject_IsTrue(__pyx_t_10);
          __Pyx_DECREF(__pyx_t_10); __pyx_t_10 = 0;
          if (__pyx_t_8 < 0) __PYX_ERR(10, 998, __pyx_L11_except_error)
          __pyx_t_11 = ((!(__pyx_t_8 != 0)) != 0);
          if (__pyx_t_11) {
            __Pyx_GIVEREF(__pyx_t_2);
            __Pyx_GIVEREF(__pyx_t_3);
            __Pyx_XGIVEREF(__pyx_t_4);
            __Pyx_ErrRestoreWithState(__pyx_t_2, __pyx_t_3, __pyx_t_4);
            __pyx_t_2 = 0; __pyx_t_3 = 0; __pyx_t_4 = 0; 
            __PYX_ERR(10, 998, __pyx_L11_except_error)
          }
          __Pyx_XDECREF(__pyx_t_2); __pyx_t_2 = 0;
          __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0;
          __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0;
          goto __pyx_L10_exception_handled;
        }
        __pyx_L11_except_error:;
        __Pyx_XGIVEREF(__pyx_t_5);
        __Pyx_XGIVEREF(__pyx_t_6);
        __Pyx_XGIVEREF(__pyx_t_7);
        __Pyx_ExceptionReset(__pyx_t_5, __pyx_t_6, __pyx_t_7);
        goto __pyx_L1_error;
        __pyx_L10_exception_handled:;
        __Pyx_XGIVEREF(__pyx_t_5);
        __Pyx_XGIVEREF(__pyx_t_6);
        __Pyx_XGIVEREF(__pyx_t_7);
        __Pyx_ExceptionReset(__pyx_t_5, __pyx_t_6, __pyx_t_7);
        __pyx_L14_try_end:;
      }
    }
    /*finally:*/ {
      /*normal exit:*/{
        if (__pyx_t_1) {
          __pyx_t_7 = __Pyx_PyObject_Call(__pyx_t_1, __pyx_tuple__17, NULL);
          __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
          if (unlikely(!__pyx_t_7)) __PYX_ERR(10, 998, __pyx_L1_error)
          __Pyx_GOTREF(__pyx_t_7);
          __pyx_r = __Pyx_Coroutine_Yield_From(__pyx_generator, __pyx_t_7);
          __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
          __Pyx_XGOTREF(__pyx_r);
          if (likely(__pyx_r)) {
            __Pyx_XGIVEREF(__pyx_t_1);
            __pyx_cur_scope->__pyx_t_0 = __pyx_t_1;
            __Pyx_XGIVEREF(__pyx_t_7);
            __pyx_cur_scope->__pyx_t_1 = __pyx_t_7;
            __Pyx_XGIVEREF(__pyx_r);
            __Pyx_RefNannyFinishContext();
            __Pyx_Coroutine_ResetAndClearException(__pyx_generator);
            /* return from generator, awaiting value */
            __pyx_generator->resume_label = 4;
            return __pyx_r;
            __pyx_L21_resume_from_await:;
            __pyx_t_1 = __pyx_cur_scope->__pyx_t_0;
            __pyx_cur_scope->__pyx_t_0 = 0;
            __Pyx_XGOTREF(__pyx_t_1);
            __pyx_t_7 = __pyx_cur_scope->__pyx_t_1;
            __pyx_cur_scope->__pyx_t_1 = 0;
            __Pyx_XGOTREF(__pyx_t_7);
            if (unlikely(!__pyx_sent_value)) __PYX_ERR(10, 998, __pyx_L1_error)
            __pyx_t_4 = __pyx_sent_value; __Pyx_INCREF(__pyx_t_4);
          } else {
            __pyx_t_4 = NULL;
            if (__Pyx_PyGen_FetchStopIterationValue(&__pyx_t_4) < 0) __PYX_ERR(10, 998, __pyx_L1_error)
            __Pyx_GOTREF(__pyx_t_4);
          }
          __pyx_t_7 = __pyx_t_4;
          __pyx_t_4 = 0;
          __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
        }
        goto __pyx_L8;
      }
      __pyx_L8:;
    }
    goto __pyx_L22;
    __pyx_L4_error:;
    __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
    goto __pyx_L1_error;
    __pyx_L22:;
  }

  /* "src/python/grpcio/grpc/_cython/_cygrpc/aio/server.pyx.pxi":1004
 *                 await self._start_shutting_down()
 * 
 *         if grace is None:             # <<<<<<<<<<<<<<
 *             # Directly cancels all calls
 *             grpc_server_cancel_all_calls(self._server.c_server)
 */
  __pyx_t_11 = (__pyx_cur_scope->__pyx_v_grace == Py_None);
  __pyx_t_8 = (__pyx_t_11 != 0);
  if (__pyx_t_8) {

    /* "src/python/grpcio/grpc/_cython/_cygrpc/aio/server.pyx.pxi":1006
 *         if grace is None:
 *             # Directly cancels all calls
 *             grpc_server_cancel_all_calls(self._server.c_server)             # <<<<<<<<<<<<<<
 *             await self._shutdown_completed
 *         else:
 */
    grpc_server_cancel_all_calls(__pyx_cur_scope->__pyx_v_self->_server->c_server);

    /* "src/python/grpcio/grpc/_cython/_cygrpc/aio/server.pyx.pxi":1007
 *             # Directly cancels all calls
 *             grpc_server_cancel_all_calls(self._server.c_server)
 *             await self._shutdown_completed             # <<<<<<<<<<<<<<
 *         else:
 *             try:
 */
    __pyx_r = __Pyx_Coroutine_Yield_From(__pyx_generator, __pyx_cur_scope->__pyx_v_self->_shutdown_completed);
    __Pyx_XGOTREF(__pyx_r);
    if (likely(__pyx_r)) {
      __Pyx_XGIVEREF(__pyx_r);
      __Pyx_RefNannyFinishContext();
      __Pyx_Coroutine_ResetAndClearException(__pyx_generator);
      /* return from generator, awaiting value */
      __pyx_generator->resume_label = 5;
      return __pyx_r;
      __pyx_L24_resume_from_await:;
      if (unlikely(!__pyx_sent_value)) __PYX_ERR(10, 1007, __pyx_L1_error)
    } else {
      PyObject* exc_type = __Pyx_PyErr_Occurred();
      if (exc_type) {
        if (likely(exc_type == PyExc_StopIteration || (exc_type != PyExc_GeneratorExit && __Pyx_PyErr_GivenExceptionMatches(exc_type, PyExc_StopIteration)))) PyErr_Clear();
        else __PYX_ERR(10, 1007, __pyx_L1_error)
      }
    }

    /* "src/python/grpcio/grpc/_cython/_cygrpc/aio/server.pyx.pxi":1004
 *                 await self._start_shutting_down()
 * 
 *         if grace is None:             # <<<<<<<<<<<<<<
 *             # Directly cancels all calls
 *             grpc_server_cancel_all_calls(self._server.c_server)
 */
    goto __pyx_L23;
  }

  /* "src/python/grpcio/grpc/_cython/_cygrpc/aio/server.pyx.pxi":1009
 *             await self._shutdown_completed
 *         else:
 *             try:             # <<<<<<<<<<<<<<
 *                 await asyncio.wait_for(
 *                     asyncio.shield(
 */
  /*else*/ {
    {
      __Pyx_ExceptionSave(&__pyx_t_1, &__pyx_t_7, &__pyx_t_6);
      __Pyx_XGOTREF(__pyx_t_1);
      __Pyx_XGOTREF(__pyx_t_7);
      __Pyx_XGOTREF(__pyx_t_6);
      /*try:*/ {

        /* "src/python/grpcio/grpc/_cython/_cygrpc/aio/server.pyx.pxi":1010
 *         else:
 *             try:
 *                 await asyncio.wait_for(             # <<<<<<<<<<<<<<
 *                     asyncio.shield(
 *                         self._shutdown_completed,
 */
        __Pyx_GetModuleGlobalName(__pyx_t_4, __pyx_n_s_asyncio); if (unlikely(!__pyx_t_4)) __PYX_ERR(10, 1010, __pyx_L25_error)
        __Pyx_GOTREF(__pyx_t_4);
        __pyx_t_3 = __Pyx_PyObject_GetAttrStr(__pyx_t_4, __pyx_n_s_wait_for); if (unlikely(!__pyx_t_3)) __PYX_ERR(10, 1010, __pyx_L25_error)
        __Pyx_GOTREF(__pyx_t_3);
        __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;

        /* "src/python/grpcio/grpc/_cython/_cygrpc/aio/server.pyx.pxi":1011
 *             try:
 *                 await asyncio.wait_for(
 *                     asyncio.shield(             # <<<<<<<<<<<<<<
 *                         self._shutdown_completed,
 *                         loop=self._loop
 */
        __Pyx_GetModuleGlobalName(__pyx_t_4, __pyx_n_s_asyncio); if (unlikely(!__pyx_t_4)) __PYX_ERR(10, 1011, __pyx_L25_error)
        __Pyx_GOTREF(__pyx_t_4);
        __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_t_4, __pyx_n_s_shield); if (unlikely(!__pyx_t_2)) __PYX_ERR(10, 1011, __pyx_L25_error)
        __Pyx_GOTREF(__pyx_t_2);
        __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;

        /* "src/python/grpcio/grpc/_cython/_cygrpc/aio/server.pyx.pxi":1012
 *                 await asyncio.wait_for(
 *                     asyncio.shield(
 *                         self._shutdown_completed,             # <<<<<<<<<<<<<<
 *                         loop=self._loop
 *                     ),
 */
        __pyx_t_4 = PyTuple_New(1); if (unlikely(!__pyx_t_4)) __PYX_ERR(10, 1011, __pyx_L25_error)
        __Pyx_GOTREF(__pyx_t_4);
        __Pyx_INCREF(__pyx_cur_scope->__pyx_v_self->_shutdown_completed);
        __Pyx_GIVEREF(__pyx_cur_scope->__pyx_v_self->_shutdown_completed);
        PyTuple_SET_ITEM(__pyx_t_4, 0, __pyx_cur_scope->__pyx_v_self->_shutdown_completed);

        /* "src/python/grpcio/grpc/_cython/_cygrpc/aio/server.pyx.pxi":1013
 *                     asyncio.shield(
 *                         self._shutdown_completed,
 *                         loop=self._loop             # <<<<<<<<<<<<<<
 *                     ),
 *                     grace,
 */
        __pyx_t_9 = __Pyx_PyDict_NewPresized(1); if (unlikely(!__pyx_t_9)) __PYX_ERR(10, 1013, __pyx_L25_error)
        __Pyx_GOTREF(__pyx_t_9);
        if (PyDict_SetItem(__pyx_t_9, __pyx_n_s_loop, __pyx_cur_scope->__pyx_v_self->_loop) < 0) __PYX_ERR(10, 1013, __pyx_L25_error)

        /* "src/python/grpcio/grpc/_cython/_cygrpc/aio/server.pyx.pxi":1011
 *             try:
 *                 await asyncio.wait_for(
 *                     asyncio.shield(             # <<<<<<<<<<<<<<
 *                         self._shutdown_completed,
 *                         loop=self._loop
 */
        __pyx_t_12 = __Pyx_PyObject_Call(__pyx_t_2, __pyx_t_4, __pyx_t_9); if (unlikely(!__pyx_t_12)) __PYX_ERR(10, 1011, __pyx_L25_error)
        __Pyx_GOTREF(__pyx_t_12);
        __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
        __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
        __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0;

        /* "src/python/grpcio/grpc/_cython/_cygrpc/aio/server.pyx.pxi":1010
 *         else:
 *             try:
 *                 await asyncio.wait_for(             # <<<<<<<<<<<<<<
 *                     asyncio.shield(
 *                         self._shutdown_completed,
 */
        __pyx_t_9 = PyTuple_New(2); if (unlikely(!__pyx_t_9)) __PYX_ERR(10, 1010, __pyx_L25_error)
        __Pyx_GOTREF(__pyx_t_9);
        __Pyx_GIVEREF(__pyx_t_12);
        PyTuple_SET_ITEM(__pyx_t_9, 0, __pyx_t_12);
        __Pyx_INCREF(__pyx_cur_scope->__pyx_v_grace);
        __Pyx_GIVEREF(__pyx_cur_scope->__pyx_v_grace);
        PyTuple_SET_ITEM(__pyx_t_9, 1, __pyx_cur_scope->__pyx_v_grace);
        __pyx_t_12 = 0;

        /* "src/python/grpcio/grpc/_cython/_cygrpc/aio/server.pyx.pxi":1016
 *                     ),
 *                     grace,
 *                     loop=self._loop,             # <<<<<<<<<<<<<<
 *                 )
 *             except asyncio.TimeoutError:
 */
        __pyx_t_12 = __Pyx_PyDict_NewPresized(1); if (unlikely(!__pyx_t_12)) __PYX_ERR(10, 1016, __pyx_L25_error)
        __Pyx_GOTREF(__pyx_t_12);
        if (PyDict_SetItem(__pyx_t_12, __pyx_n_s_loop, __pyx_cur_scope->__pyx_v_self->_loop) < 0) __PYX_ERR(10, 1016, __pyx_L25_error)

        /* "src/python/grpcio/grpc/_cython/_cygrpc/aio/server.pyx.pxi":1010
 *         else:
 *             try:
 *                 await asyncio.wait_for(             # <<<<<<<<<<<<<<
 *                     asyncio.shield(
 *                         self._shutdown_completed,
 */
        __pyx_t_4 = __Pyx_PyObject_Call(__pyx_t_3, __pyx_t_9, __pyx_t_12); if (unlikely(!__pyx_t_4)) __PYX_ERR(10, 1010, __pyx_L25_error)
        __Pyx_GOTREF(__pyx_t_4);
        __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
        __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0;
        __Pyx_DECREF(__pyx_t_12); __pyx_t_12 = 0;
        __pyx_r = __Pyx_Coroutine_Yield_From(__pyx_generator, __pyx_t_4);
        __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
        __Pyx_XGOTREF(__pyx_r);
        if (likely(__pyx_r)) {
          __Pyx_XGIVEREF(__pyx_t_1);
          __pyx_cur_scope->__pyx_t_0 = __pyx_t_1;
          __Pyx_XGIVEREF(__pyx_t_6);
          __pyx_cur_scope->__pyx_t_1 = __pyx_t_6;
          __Pyx_XGIVEREF(__pyx_t_7);
          __pyx_cur_scope->__pyx_t_2 = __pyx_t_7;
          __Pyx_XGIVEREF(__pyx_r);
          __Pyx_RefNannyFinishContext();
          __Pyx_Coroutine_ResetAndClearException(__pyx_generator);
          /* return from generator, awaiting value */
          __pyx_generator->resume_label = 6;
          return __pyx_r;
          __pyx_L31_resume_from_await:;
          __pyx_t_1 = __pyx_cur_scope->__pyx_t_0;
          __pyx_cur_scope->__pyx_t_0 = 0;
          __Pyx_XGOTREF(__pyx_t_1);
          __pyx_t_6 = __pyx_cur_scope->__pyx_t_1;
          __pyx_cur_scope->__pyx_t_1 = 0;
          __Pyx_XGOTREF(__pyx_t_6);
          __pyx_t_7 = __pyx_cur_scope->__pyx_t_2;
          __pyx_cur_scope->__pyx_t_2 = 0;
          __Pyx_XGOTREF(__pyx_t_7);
          if (unlikely(!__pyx_sent_value)) __PYX_ERR(10, 1010, __pyx_L25_error)
        } else {
          PyObject* exc_type = __Pyx_PyErr_Occurred();
          if (exc_type) {
            if (likely(exc_type == PyExc_StopIteration || (exc_type != PyExc_GeneratorExit && __Pyx_PyErr_GivenExceptionMatches(exc_type, PyExc_StopIteration)))) PyErr_Clear();
            else __PYX_ERR(10, 1010, __pyx_L25_error)
          }
        }

        /* "src/python/grpcio/grpc/_cython/_cygrpc/aio/server.pyx.pxi":1009
 *             await self._shutdown_completed
 *         else:
 *             try:             # <<<<<<<<<<<<<<
 *                 await asyncio.wait_for(
 *                     asyncio.shield(
 */
      }
      __Pyx_XDECREF(__pyx_t_1); __pyx_t_1 = 0;
      __Pyx_XDECREF(__pyx_t_7); __pyx_t_7 = 0;
      __Pyx_XDECREF(__pyx_t_6); __pyx_t_6 = 0;
      goto __pyx_L30_try_end;
      __pyx_L25_error:;
      __Pyx_XDECREF(__pyx_t_12); __pyx_t_12 = 0;
      __Pyx_XDECREF(__pyx_t_2); __pyx_t_2 = 0;
      __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0;
      __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0;
      __Pyx_XDECREF(__pyx_t_9); __pyx_t_9 = 0;

      /* "src/python/grpcio/grpc/_cython/_cygrpc/aio/server.pyx.pxi":1018
 *                     loop=self._loop,
 *                 )
 *             except asyncio.TimeoutError:             # <<<<<<<<<<<<<<
 *                 # Cancels all ongoing calls by the end of grace period.
 *                 grpc_server_cancel_all_calls(self._server.c_server)
 */
      __Pyx_ErrFetch(&__pyx_t_4, &__pyx_t_12, &__pyx_t_9);
      __Pyx_GetModuleGlobalName(__pyx_t_3, __pyx_n_s_asyncio); if (unlikely(!__pyx_t_3)) __PYX_ERR(10, 1018, __pyx_L27_except_error)
      __Pyx_GOTREF(__pyx_t_3);
      __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_t_3, __pyx_n_s_TimeoutError); if (unlikely(!__pyx_t_2)) __PYX_ERR(10, 1018, __pyx_L27_except_error)
      __Pyx_GOTREF(__pyx_t_2);
      __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
      __pyx_t_13 = __Pyx_PyErr_GivenExceptionMatches(__pyx_t_4, __pyx_t_2);
      __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
      __Pyx_ErrRestore(__pyx_t_4, __pyx_t_12, __pyx_t_9);
      __pyx_t_4 = 0; __pyx_t_12 = 0; __pyx_t_9 = 0;
      if (__pyx_t_13) {
        __Pyx_AddTraceback("grpc._cython.cygrpc.AioServer.shutdown", __pyx_clineno, __pyx_lineno, __pyx_filename);
        if (__Pyx_GetException(&__pyx_t_9, &__pyx_t_12, &__pyx_t_4) < 0) __PYX_ERR(10, 1018, __pyx_L27_except_error)
        __Pyx_GOTREF(__pyx_t_9);
        __Pyx_GOTREF(__pyx_t_12);
        __Pyx_GOTREF(__pyx_t_4);

        /* "src/python/grpcio/grpc/_cython/_cygrpc/aio/server.pyx.pxi":1020
 *             except asyncio.TimeoutError:
 *                 # Cancels all ongoing calls by the end of grace period.
 *                 grpc_server_cancel_all_calls(self._server.c_server)             # <<<<<<<<<<<<<<
 *                 await self._shutdown_completed
 * 
 */
        grpc_server_cancel_all_calls(__pyx_cur_scope->__pyx_v_self->_server->c_server);

        /* "src/python/grpcio/grpc/_cython/_cygrpc/aio/server.pyx.pxi":1021
 *                 # Cancels all ongoing calls by the end of grace period.
 *                 grpc_server_cancel_all_calls(self._server.c_server)
 *                 await self._shutdown_completed             # <<<<<<<<<<<<<<
 * 
 *         async with self._shutdown_lock:
 */
        __pyx_r = __Pyx_Coroutine_Yield_From(__pyx_generator, __pyx_cur_scope->__pyx_v_self->_shutdown_completed);
        __Pyx_XGOTREF(__pyx_r);
        if (likely(__pyx_r)) {
          __Pyx_XGIVEREF(__pyx_t_1);
          __pyx_cur_scope->__pyx_t_0 = __pyx_t_1;
          __Pyx_XGIVEREF(__pyx_t_4);
          __pyx_cur_scope->__pyx_t_1 = __pyx_t_4;
          __Pyx_XGIVEREF(__pyx_t_6);
          __pyx_cur_scope->__pyx_t_2 = __pyx_t_6;
          __Pyx_XGIVEREF(__pyx_t_7);
          __pyx_cur_scope->__pyx_t_3 = __pyx_t_7;
          __Pyx_XGIVEREF(__pyx_t_9);
          __pyx_cur_scope->__pyx_t_4 = __pyx_t_9;
          __Pyx_XGIVEREF(__pyx_t_12);
          __pyx_cur_scope->__pyx_t_5 = __pyx_t_12;
          __Pyx_XGIVEREF(__pyx_r);
          __Pyx_RefNannyFinishContext();
          __Pyx_Coroutine_SwapException(__pyx_generator);
          /* return from generator, awaiting value */
          __pyx_generator->resume_label = 7;
          return __pyx_r;
          __pyx_L34_resume_from_await:;
          __pyx_t_1 = __pyx_cur_scope->__pyx_t_0;
          __pyx_cur_scope->__pyx_t_0 = 0;
          __Pyx_XGOTREF(__pyx_t_1);
          __pyx_t_4 = __pyx_cur_scope->__pyx_t_1;
          __pyx_cur_scope->__pyx_t_1 = 0;
          __Pyx_XGOTREF(__pyx_t_4);
          __pyx_t_6 = __pyx_cur_scope->__pyx_t_2;
          __pyx_cur_scope->__pyx_t_2 = 0;
          __Pyx_XGOTREF(__pyx_t_6);
          __pyx_t_7 = __pyx_cur_scope->__pyx_t_3;
          __pyx_cur_scope->__pyx_t_3 = 0;
          __Pyx_XGOTREF(__pyx_t_7);
          __pyx_t_9 = __pyx_cur_scope->__pyx_t_4;
          __pyx_cur_scope->__pyx_t_4 = 0;
          __Pyx_XGOTREF(__pyx_t_9);
          __pyx_t_12 = __pyx_cur_scope->__pyx_t_5;
          __pyx_cur_scope->__pyx_t_5 = 0;
          __Pyx_XGOTREF(__pyx_t_12);
          if (unlikely(!__pyx_sent_value)) __PYX_ERR(10, 1021, __pyx_L27_except_error)
        } else {
          PyObject* exc_type = __Pyx_PyErr_Occurred();
          if (exc_type) {
            if (likely(exc_type == PyExc_StopIteration || (exc_type != PyExc_GeneratorExit && __Pyx_PyErr_GivenExceptionMatches(exc_type, PyExc_StopIteration)))) PyErr_Clear();
            else __PYX_ERR(10, 1021, __pyx_L27_except_error)
          }
        }
        __Pyx_XDECREF(__pyx_t_9); __pyx_t_9 = 0;
        __Pyx_XDECREF(__pyx_t_12); __pyx_t_12 = 0;
        __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0;
        goto __pyx_L26_exception_handled;
      }
      goto __pyx_L27_except_error;
      __pyx_L27_except_error:;

      /* "src/python/grpcio/grpc/_cython/_cygrpc/aio/server.pyx.pxi":1009
 *             await self._shutdown_completed
 *         else:
 *             try:             # <<<<<<<<<<<<<<
 *                 await asyncio.wait_for(
 *                     asyncio.shield(
 */
      __Pyx_XGIVEREF(__pyx_t_1);
      __Pyx_XGIVEREF(__pyx_t_7);
      __Pyx_XGIVEREF(__pyx_t_6);
      __Pyx_ExceptionReset(__pyx_t_1, __pyx_t_7, __pyx_t_6);
      goto __pyx_L1_error;
      __pyx_L26_exception_handled:;
      __Pyx_XGIVEREF(__pyx_t_1);
      __Pyx_XGIVEREF(__pyx_t_7);
      __Pyx_XGIVEREF(__pyx_t_6);
      __Pyx_ExceptionReset(__pyx_t_1, __pyx_t_7, __pyx_t_6);
      __pyx_L30_try_end:;
    }
  }
  __pyx_L23:;

  /* "src/python/grpcio/grpc/_cython/_cygrpc/aio/server.pyx.pxi":1023
 *                 await self._shutdown_completed
 * 
 *         async with self._shutdown_lock:             # <<<<<<<<<<<<<<
 *             if self._status == AIO_SERVER_STATUS_STOPPING:
 *                 grpc_server_destroy(self._server.c_server)
 */
  /*with:*/ {
    __pyx_t_6 = __Pyx_PyObject_LookupSpecial(__pyx_cur_scope->__pyx_v_self->_shutdown_lock, __pyx_n_s_aexit); if (unlikely(!__pyx_t_6)) __PYX_ERR(10, 1023, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_6);
    __pyx_t_12 = __Pyx_PyObject_LookupSpecial(__pyx_cur_scope->__pyx_v_self->_shutdown_lock, __pyx_n_s_aenter); if (unlikely(!__pyx_t_12)) __PYX_ERR(10, 1023, __pyx_L35_error)
    __Pyx_GOTREF(__pyx_t_12);
    __pyx_t_9 = NULL;
    if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_12))) {
      __pyx_t_9 = PyMethod_GET_SELF(__pyx_t_12);
      if (likely(__pyx_t_9)) {
        PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_12);
        __Pyx_INCREF(__pyx_t_9);
        __Pyx_INCREF(function);
        __Pyx_DECREF_SET(__pyx_t_12, function);
      }
    }
    __pyx_t_4 = (__pyx_t_9) ? __Pyx_PyObject_CallOneArg(__pyx_t_12, __pyx_t_9) : __Pyx_PyObject_CallNoArg(__pyx_t_12);
    __Pyx_XDECREF(__pyx_t_9); __pyx_t_9 = 0;
    if (unlikely(!__pyx_t_4)) __PYX_ERR(10, 1023, __pyx_L35_error)
    __Pyx_GOTREF(__pyx_t_4);
    __Pyx_DECREF(__pyx_t_12); __pyx_t_12 = 0;
    __pyx_r = __Pyx_Coroutine_Yield_From(__pyx_generator, __pyx_t_4);
    __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
    __Pyx_XGOTREF(__pyx_r);
    if (likely(__pyx_r)) {
      __Pyx_XGIVEREF(__pyx_t_6);
      __pyx_cur_scope->__pyx_t_0 = __pyx_t_6;
      __Pyx_XGIVEREF(__pyx_r);
      __Pyx_RefNannyFinishContext();
      __Pyx_Coroutine_ResetAndClearException(__pyx_generator);
      /* return from generator, awaiting value */
      __pyx_generator->resume_label = 8;
      return __pyx_r;
      __pyx_L36_resume_from_await:;
      __pyx_t_6 = __pyx_cur_scope->__pyx_t_0;
      __pyx_cur_scope->__pyx_t_0 = 0;
      __Pyx_XGOTREF(__pyx_t_6);
      if (unlikely(!__pyx_sent_value)) __PYX_ERR(10, 1023, __pyx_L35_error)
      __pyx_t_4 = __pyx_sent_value; __Pyx_INCREF(__pyx_t_4);
    } else {
      __pyx_t_4 = NULL;
      if (__Pyx_PyGen_FetchStopIterationValue(&__pyx_t_4) < 0) __PYX_ERR(10, 1023, __pyx_L35_error)
      __Pyx_GOTREF(__pyx_t_4);
    }
    __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
    /*try:*/ {
      {
        (void)__pyx_t_7; (void)__pyx_t_1; (void)__pyx_t_5; /* mark used */
        /*try:*/ {

          /* "src/python/grpcio/grpc/_cython/_cygrpc/aio/server.pyx.pxi":1024
 * 
 *         async with self._shutdown_lock:
 *             if self._status == AIO_SERVER_STATUS_STOPPING:             # <<<<<<<<<<<<<<
 *                 grpc_server_destroy(self._server.c_server)
 *                 self._server.c_server = NULL
 */
          __pyx_t_8 = ((__pyx_cur_scope->__pyx_v_self->_status == __pyx_e_4grpc_7_cython_6cygrpc_AIO_SERVER_STATUS_STOPPING) != 0);
          if (__pyx_t_8) {

            /* "src/python/grpcio/grpc/_cython/_cygrpc/aio/server.pyx.pxi":1025
 *         async with self._shutdown_lock:
 *             if self._status == AIO_SERVER_STATUS_STOPPING:
 *                 grpc_server_destroy(self._server.c_server)             # <<<<<<<<<<<<<<
 *                 self._server.c_server = NULL
 *                 self._server.is_shutdown = True
 */
            grpc_server_destroy(__pyx_cur_scope->__pyx_v_self->_server->c_server);

            /* "src/python/grpcio/grpc/_cython/_cygrpc/aio/server.pyx.pxi":1026
 *             if self._status == AIO_SERVER_STATUS_STOPPING:
 *                 grpc_server_destroy(self._server.c_server)
 *                 self._server.c_server = NULL             # <<<<<<<<<<<<<<
 *                 self._server.is_shutdown = True
 *                 self._status = AIO_SERVER_STATUS_STOPPED
 */
            __pyx_cur_scope->__pyx_v_self->_server->c_server = NULL;

            /* "src/python/grpcio/grpc/_cython/_cygrpc/aio/server.pyx.pxi":1027
 *                 grpc_server_destroy(self._server.c_server)
 *                 self._server.c_server = NULL
 *                 self._server.is_shutdown = True             # <<<<<<<<<<<<<<
 *                 self._status = AIO_SERVER_STATUS_STOPPED
 * 
 */
            __pyx_cur_scope->__pyx_v_self->_server->is_shutdown = 1;

            /* "src/python/grpcio/grpc/_cython/_cygrpc/aio/server.pyx.pxi":1028
 *                 self._server.c_server = NULL
 *                 self._server.is_shutdown = True
 *                 self._status = AIO_SERVER_STATUS_STOPPED             # <<<<<<<<<<<<<<
 * 
 *     async def wait_for_termination(self, object timeout):
 */
            __pyx_cur_scope->__pyx_v_self->_status = __pyx_e_4grpc_7_cython_6cygrpc_AIO_SERVER_STATUS_STOPPED;

            /* "src/python/grpcio/grpc/_cython/_cygrpc/aio/server.pyx.pxi":1024
 * 
 *         async with self._shutdown_lock:
 *             if self._status == AIO_SERVER_STATUS_STOPPING:             # <<<<<<<<<<<<<<
 *                 grpc_server_destroy(self._server.c_server)
 *                 self._server.c_server = NULL
 */
          }

          /* "src/python/grpcio/grpc/_cython/_cygrpc/aio/server.pyx.pxi":1023
 *                 await self._shutdown_completed
 * 
 *         async with self._shutdown_lock:             # <<<<<<<<<<<<<<
 *             if self._status == AIO_SERVER_STATUS_STOPPING:
 *                 grpc_server_destroy(self._server.c_server)
 */
        }
      }
    }
    /*finally:*/ {
      /*normal exit:*/{
        if (__pyx_t_6) {
          __pyx_t_5 = __Pyx_PyObject_Call(__pyx_t_6, __pyx_tuple__17, NULL);
          __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
          if (unlikely(!__pyx_t_5)) __PYX_ERR(10, 1023, __pyx_L1_error)
          __Pyx_GOTREF(__pyx_t_5);
          __pyx_r = __Pyx_Coroutine_Yield_From(__pyx_generator, __pyx_t_5);
          __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
          __Pyx_XGOTREF(__pyx_r);
          if (likely(__pyx_r)) {
            __Pyx_XGIVEREF(__pyx_t_5);
            __pyx_cur_scope->__pyx_t_0 = __pyx_t_5;
            __Pyx_XGIVEREF(__pyx_t_6);
            __pyx_cur_scope->__pyx_t_1 = __pyx_t_6;
            __Pyx_XGIVEREF(__pyx_r);
            __Pyx_RefNannyFinishContext();
            __Pyx_Coroutine_ResetAndClearException(__pyx_generator);
            /* return from generator, awaiting value */
            __pyx_generator->resume_label = 9;
            return __pyx_r;
            __pyx_L47_resume_from_await:;
            __pyx_t_5 = __pyx_cur_scope->__pyx_t_0;
            __pyx_cur_scope->__pyx_t_0 = 0;
            __Pyx_XGOTREF(__pyx_t_5);
            __pyx_t_6 = __pyx_cur_scope->__pyx_t_1;
            __pyx_cur_scope->__pyx_t_1 = 0;
            __Pyx_XGOTREF(__pyx_t_6);
            if (unlikely(!__pyx_sent_value)) __PYX_ERR(10, 1023, __pyx_L1_error)
            __pyx_t_4 = __pyx_sent_value; __Pyx_INCREF(__pyx_t_4);
          } else {
            __pyx_t_4 = NULL;
            if (__Pyx_PyGen_FetchStopIterationValue(&__pyx_t_4) < 0) __PYX_ERR(10, 1023, __pyx_L1_error)
            __Pyx_GOTREF(__pyx_t_4);
          }
          __pyx_t_5 = __pyx_t_4;
          __pyx_t_4 = 0;
          __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
        }
        goto __pyx_L39;
      }
      __pyx_L39:;
    }
    goto __pyx_L48;
    __pyx_L35_error:;
    __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
    goto __pyx_L1_error;
    __pyx_L48:;
  }
  CYTHON_MAYBE_UNUSED_VAR(__pyx_cur_scope);

  /* "src/python/grpcio/grpc/_cython/_cygrpc/aio/server.pyx.pxi":986
 *             pass
 * 
 *     async def shutdown(self, grace):             # <<<<<<<<<<<<<<
 *         """Gracefully shutdown the Core server.
 * 
 */

  /* function exit code */
  PyErr_SetNone(PyExc_StopIteration);
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_XDECREF(__pyx_t_3);
  __Pyx_XDECREF(__pyx_t_4);
  __Pyx_XDECREF(__pyx_t_9);
  __Pyx_XDECREF(__pyx_t_12);
  __Pyx_AddTraceback("shutdown", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_L0:;
  __Pyx_XDECREF(__pyx_r); __pyx_r = 0;
  #if !CYTHON_USE_EXC_INFO_STACK
  __Pyx_Coroutine_ResetAndClearException(__pyx_generator);
  #endif
  __pyx_generator->resume_label = -1;
  __Pyx_Coroutine_clear((PyObject*)__pyx_generator);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}
static PyObject *__pyx_gb_4grpc_7_cython_6cygrpc_9AioServer_27generator45(__pyx_CoroutineObject *__pyx_generator, CYTHON_UNUSED PyThreadState *__pyx_tstate, PyObject *__pyx_sent_value); /* proto */

/* "src/python/grpcio/grpc/_cython/_cygrpc/aio/server.pyx.pxi":1030
 *                 self._status = AIO_SERVER_STATUS_STOPPED
 * 
 *     async def wait_for_termination(self, object timeout):             # <<<<<<<<<<<<<<
 *         if timeout is None:
 *             await self._shutdown_completed
 */

/* Python wrapper */
static PyObject *__pyx_pw_4grpc_7_cython_6cygrpc_9AioServer_26wait_for_termination(PyObject *__pyx_v_self, PyObject *__pyx_v_timeout); /*proto*/
static PyObject *__pyx_pw_4grpc_7_cython_6cygrpc_9AioServer_26wait_for_termination(PyObject *__pyx_v_self, PyObject *__pyx_v_timeout) {
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("wait_for_termination (wrapper)", 0);
  __pyx_r = __pyx_pf_4grpc_7_cython_6cygrpc_9AioServer_25wait_for_termination(((struct __pyx_obj_4grpc_7_cython_6cygrpc_AioServer *)__pyx_v_self), ((PyObject *)__pyx_v_timeout));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_4grpc_7_cython_6cygrpc_9AioServer_25wait_for_termination(struct __pyx_obj_4grpc_7_cython_6cygrpc_AioServer *__pyx_v_self, PyObject *__pyx_v_timeout) {
  struct __pyx_obj_4grpc_7_cython_6cygrpc___pyx_scope_struct_57_wait_for_termination *__pyx_cur_scope;
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("wait_for_termination", 0);
  __pyx_cur_scope = (struct __pyx_obj_4grpc_7_cython_6cygrpc___pyx_scope_struct_57_wait_for_termination *)__pyx_tp_new_4grpc_7_cython_6cygrpc___pyx_scope_struct_57_wait_for_termination(__pyx_ptype_4grpc_7_cython_6cygrpc___pyx_scope_struct_57_wait_for_termination, __pyx_empty_tuple, NULL);
  if (unlikely(!__pyx_cur_scope)) {
    __pyx_cur_scope = ((struct __pyx_obj_4grpc_7_cython_6cygrpc___pyx_scope_struct_57_wait_for_termination *)Py_None);
    __Pyx_INCREF(Py_None);
    __PYX_ERR(10, 1030, __pyx_L1_error)
  } else {
    __Pyx_GOTREF(__pyx_cur_scope);
  }
  __pyx_cur_scope->__pyx_v_self = __pyx_v_self;
  __Pyx_INCREF((PyObject *)__pyx_cur_scope->__pyx_v_self);
  __Pyx_GIVEREF((PyObject *)__pyx_cur_scope->__pyx_v_self);
  __pyx_cur_scope->__pyx_v_timeout = __pyx_v_timeout;
  __Pyx_INCREF(__pyx_cur_scope->__pyx_v_timeout);
  __Pyx_GIVEREF(__pyx_cur_scope->__pyx_v_timeout);
  {
    __pyx_CoroutineObject *gen = __Pyx_Coroutine_New((__pyx_coroutine_body_t) __pyx_gb_4grpc_7_cython_6cygrpc_9AioServer_27generator45, NULL, (PyObject *) __pyx_cur_scope, __pyx_n_s_wait_for_termination, __pyx_n_s_AioServer_wait_for_termination, __pyx_n_s_grpc__cython_cygrpc); if (unlikely(!gen)) __PYX_ERR(10, 1030, __pyx_L1_error)
    __Pyx_DECREF(__pyx_cur_scope);
    __Pyx_RefNannyFinishContext();
    return (PyObject *) gen;
  }

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_AddTraceback("grpc._cython.cygrpc.AioServer.wait_for_termination", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __Pyx_DECREF(((PyObject *)__pyx_cur_scope));
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_gb_4grpc_7_cython_6cygrpc_9AioServer_27generator45(__pyx_CoroutineObject *__pyx_generator, CYTHON_UNUSED PyThreadState *__pyx_tstate, PyObject *__pyx_sent_value) /* generator body */
{
  struct __pyx_obj_4grpc_7_cython_6cygrpc___pyx_scope_struct_57_wait_for_termination *__pyx_cur_scope = ((struct __pyx_obj_4grpc_7_cython_6cygrpc___pyx_scope_struct_57_wait_for_termination *)__pyx_generator->closure);
  PyObject *__pyx_r = NULL;
  int __pyx_t_1;
  int __pyx_t_2;
  PyObject *__pyx_t_3 = NULL;
  PyObject *__pyx_t_4 = NULL;
  PyObject *__pyx_t_5 = NULL;
  PyObject *__pyx_t_6 = NULL;
  PyObject *__pyx_t_7 = NULL;
  PyObject *__pyx_t_8 = NULL;
  PyObject *__pyx_t_9 = NULL;
  PyObject *__pyx_t_10 = NULL;
  int __pyx_t_11;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("wait_for_termination", 0);
  switch (__pyx_generator->resume_label) {
    case 0: goto __pyx_L3_first_run;
    case 1: goto __pyx_L5_resume_from_await;
    case 2: goto __pyx_L12_resume_from_await;
    default: /* CPython raises the right error here */
    __Pyx_RefNannyFinishContext();
    return NULL;
  }
  __pyx_L3_first_run:;
  if (unlikely(!__pyx_sent_value)) __PYX_ERR(10, 1030, __pyx_L1_error)

  /* "src/python/grpcio/grpc/_cython/_cygrpc/aio/server.pyx.pxi":1031
 * 
 *     async def wait_for_termination(self, object timeout):
 *         if timeout is None:             # <<<<<<<<<<<<<<
 *             await self._shutdown_completed
 *         else:
 */
  __pyx_t_1 = (__pyx_cur_scope->__pyx_v_timeout == Py_None);
  __pyx_t_2 = (__pyx_t_1 != 0);
  if (__pyx_t_2) {

    /* "src/python/grpcio/grpc/_cython/_cygrpc/aio/server.pyx.pxi":1032
 *     async def wait_for_termination(self, object timeout):
 *         if timeout is None:
 *             await self._shutdown_completed             # <<<<<<<<<<<<<<
 *         else:
 *             try:
 */
    __pyx_r = __Pyx_Coroutine_Yield_From(__pyx_generator, __pyx_cur_scope->__pyx_v_self->_shutdown_completed);
    __Pyx_XGOTREF(__pyx_r);
    if (likely(__pyx_r)) {
      __Pyx_XGIVEREF(__pyx_r);
      __Pyx_RefNannyFinishContext();
      __Pyx_Coroutine_ResetAndClearException(__pyx_generator);
      /* return from generator, awaiting value */
      __pyx_generator->resume_label = 1;
      return __pyx_r;
      __pyx_L5_resume_from_await:;
      if (unlikely(!__pyx_sent_value)) __PYX_ERR(10, 1032, __pyx_L1_error)
    } else {
      PyObject* exc_type = __Pyx_PyErr_Occurred();
      if (exc_type) {
        if (likely(exc_type == PyExc_StopIteration || (exc_type != PyExc_GeneratorExit && __Pyx_PyErr_GivenExceptionMatches(exc_type, PyExc_StopIteration)))) PyErr_Clear();
        else __PYX_ERR(10, 1032, __pyx_L1_error)
      }
    }

    /* "src/python/grpcio/grpc/_cython/_cygrpc/aio/server.pyx.pxi":1031
 * 
 *     async def wait_for_termination(self, object timeout):
 *         if timeout is None:             # <<<<<<<<<<<<<<
 *             await self._shutdown_completed
 *         else:
 */
    goto __pyx_L4;
  }

  /* "src/python/grpcio/grpc/_cython/_cygrpc/aio/server.pyx.pxi":1034
 *             await self._shutdown_completed
 *         else:
 *             try:             # <<<<<<<<<<<<<<
 *                 await asyncio.wait_for(
 *                     asyncio.shield(
 */
  /*else*/ {
    {
      __Pyx_ExceptionSave(&__pyx_t_3, &__pyx_t_4, &__pyx_t_5);
      __Pyx_XGOTREF(__pyx_t_3);
      __Pyx_XGOTREF(__pyx_t_4);
      __Pyx_XGOTREF(__pyx_t_5);
      /*try:*/ {

        /* "src/python/grpcio/grpc/_cython/_cygrpc/aio/server.pyx.pxi":1035
 *         else:
 *             try:
 *                 await asyncio.wait_for(             # <<<<<<<<<<<<<<
 *                     asyncio.shield(
 *                         self._shutdown_completed,
 */
        __Pyx_GetModuleGlobalName(__pyx_t_6, __pyx_n_s_asyncio); if (unlikely(!__pyx_t_6)) __PYX_ERR(10, 1035, __pyx_L6_error)
        __Pyx_GOTREF(__pyx_t_6);
        __pyx_t_7 = __Pyx_PyObject_GetAttrStr(__pyx_t_6, __pyx_n_s_wait_for); if (unlikely(!__pyx_t_7)) __PYX_ERR(10, 1035, __pyx_L6_error)
        __Pyx_GOTREF(__pyx_t_7);
        __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;

        /* "src/python/grpcio/grpc/_cython/_cygrpc/aio/server.pyx.pxi":1036
 *             try:
 *                 await asyncio.wait_for(
 *                     asyncio.shield(             # <<<<<<<<<<<<<<
 *                         self._shutdown_completed,
 *                         loop=self._loop,
 */
        __Pyx_GetModuleGlobalName(__pyx_t_6, __pyx_n_s_asyncio); if (unlikely(!__pyx_t_6)) __PYX_ERR(10, 1036, __pyx_L6_error)
        __Pyx_GOTREF(__pyx_t_6);
        __pyx_t_8 = __Pyx_PyObject_GetAttrStr(__pyx_t_6, __pyx_n_s_shield); if (unlikely(!__pyx_t_8)) __PYX_ERR(10, 1036, __pyx_L6_error)
        __Pyx_GOTREF(__pyx_t_8);
        __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;

        /* "src/python/grpcio/grpc/_cython/_cygrpc/aio/server.pyx.pxi":1037
 *                 await asyncio.wait_for(
 *                     asyncio.shield(
 *                         self._shutdown_completed,             # <<<<<<<<<<<<<<
 *                         loop=self._loop,
 *                     ),
 */
        __pyx_t_6 = PyTuple_New(1); if (unlikely(!__pyx_t_6)) __PYX_ERR(10, 1036, __pyx_L6_error)
        __Pyx_GOTREF(__pyx_t_6);
        __Pyx_INCREF(__pyx_cur_scope->__pyx_v_self->_shutdown_completed);
        __Pyx_GIVEREF(__pyx_cur_scope->__pyx_v_self->_shutdown_completed);
        PyTuple_SET_ITEM(__pyx_t_6, 0, __pyx_cur_scope->__pyx_v_self->_shutdown_completed);

        /* "src/python/grpcio/grpc/_cython/_cygrpc/aio/server.pyx.pxi":1038
 *                     asyncio.shield(
 *                         self._shutdown_completed,
 *                         loop=self._loop,             # <<<<<<<<<<<<<<
 *                     ),
 *                     timeout,
 */
        __pyx_t_9 = __Pyx_PyDict_NewPresized(1); if (unlikely(!__pyx_t_9)) __PYX_ERR(10, 1038, __pyx_L6_error)
        __Pyx_GOTREF(__pyx_t_9);
        if (PyDict_SetItem(__pyx_t_9, __pyx_n_s_loop, __pyx_cur_scope->__pyx_v_self->_loop) < 0) __PYX_ERR(10, 1038, __pyx_L6_error)

        /* "src/python/grpcio/grpc/_cython/_cygrpc/aio/server.pyx.pxi":1036
 *             try:
 *                 await asyncio.wait_for(
 *                     asyncio.shield(             # <<<<<<<<<<<<<<
 *                         self._shutdown_completed,
 *                         loop=self._loop,
 */
        __pyx_t_10 = __Pyx_PyObject_Call(__pyx_t_8, __pyx_t_6, __pyx_t_9); if (unlikely(!__pyx_t_10)) __PYX_ERR(10, 1036, __pyx_L6_error)
        __Pyx_GOTREF(__pyx_t_10);
        __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
        __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
        __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0;

        /* "src/python/grpcio/grpc/_cython/_cygrpc/aio/server.pyx.pxi":1035
 *         else:
 *             try:
 *                 await asyncio.wait_for(             # <<<<<<<<<<<<<<
 *                     asyncio.shield(
 *                         self._shutdown_completed,
 */
        __pyx_t_9 = PyTuple_New(2); if (unlikely(!__pyx_t_9)) __PYX_ERR(10, 1035, __pyx_L6_error)
        __Pyx_GOTREF(__pyx_t_9);
        __Pyx_GIVEREF(__pyx_t_10);
        PyTuple_SET_ITEM(__pyx_t_9, 0, __pyx_t_10);
        __Pyx_INCREF(__pyx_cur_scope->__pyx_v_timeout);
        __Pyx_GIVEREF(__pyx_cur_scope->__pyx_v_timeout);
        PyTuple_SET_ITEM(__pyx_t_9, 1, __pyx_cur_scope->__pyx_v_timeout);
        __pyx_t_10 = 0;

        /* "src/python/grpcio/grpc/_cython/_cygrpc/aio/server.pyx.pxi":1041
 *                     ),
 *                     timeout,
 *                     loop=self._loop,             # <<<<<<<<<<<<<<
 *                 )
 *             except asyncio.TimeoutError:
 */
        __pyx_t_10 = __Pyx_PyDict_NewPresized(1); if (unlikely(!__pyx_t_10)) __PYX_ERR(10, 1041, __pyx_L6_error)
        __Pyx_GOTREF(__pyx_t_10);
        if (PyDict_SetItem(__pyx_t_10, __pyx_n_s_loop, __pyx_cur_scope->__pyx_v_self->_loop) < 0) __PYX_ERR(10, 1041, __pyx_L6_error)

        /* "src/python/grpcio/grpc/_cython/_cygrpc/aio/server.pyx.pxi":1035
 *         else:
 *             try:
 *                 await asyncio.wait_for(             # <<<<<<<<<<<<<<
 *                     asyncio.shield(
 *                         self._shutdown_completed,
 */
        __pyx_t_6 = __Pyx_PyObject_Call(__pyx_t_7, __pyx_t_9, __pyx_t_10); if (unlikely(!__pyx_t_6)) __PYX_ERR(10, 1035, __pyx_L6_error)
        __Pyx_GOTREF(__pyx_t_6);
        __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
        __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0;
        __Pyx_DECREF(__pyx_t_10); __pyx_t_10 = 0;
        __pyx_r = __Pyx_Coroutine_Yield_From(__pyx_generator, __pyx_t_6);
        __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
        __Pyx_XGOTREF(__pyx_r);
        if (likely(__pyx_r)) {
          __Pyx_XGIVEREF(__pyx_t_3);
          __pyx_cur_scope->__pyx_t_0 = __pyx_t_3;
          __Pyx_XGIVEREF(__pyx_t_4);
          __pyx_cur_scope->__pyx_t_1 = __pyx_t_4;
          __Pyx_XGIVEREF(__pyx_t_5);
          __pyx_cur_scope->__pyx_t_2 = __pyx_t_5;
          __Pyx_XGIVEREF(__pyx_r);
          __Pyx_RefNannyFinishContext();
          __Pyx_Coroutine_ResetAndClearException(__pyx_generator);
          /* return from generator, awaiting value */
          __pyx_generator->resume_label = 2;
          return __pyx_r;
          __pyx_L12_resume_from_await:;
          __pyx_t_3 = __pyx_cur_scope->__pyx_t_0;
          __pyx_cur_scope->__pyx_t_0 = 0;
          __Pyx_XGOTREF(__pyx_t_3);
          __pyx_t_4 = __pyx_cur_scope->__pyx_t_1;
          __pyx_cur_scope->__pyx_t_1 = 0;
          __Pyx_XGOTREF(__pyx_t_4);
          __pyx_t_5 = __pyx_cur_scope->__pyx_t_2;
          __pyx_cur_scope->__pyx_t_2 = 0;
          __Pyx_XGOTREF(__pyx_t_5);
          if (unlikely(!__pyx_sent_value)) __PYX_ERR(10, 1035, __pyx_L6_error)
        } else {
          PyObject* exc_type = __Pyx_PyErr_Occurred();
          if (exc_type) {
            if (likely(exc_type == PyExc_StopIteration || (exc_type != PyExc_GeneratorExit && __Pyx_PyErr_GivenExceptionMatches(exc_type, PyExc_StopIteration)))) PyErr_Clear();
            else __PYX_ERR(10, 1035, __pyx_L6_error)
          }
        }

        /* "src/python/grpcio/grpc/_cython/_cygrpc/aio/server.pyx.pxi":1034
 *             await self._shutdown_completed
 *         else:
 *             try:             # <<<<<<<<<<<<<<
 *                 await asyncio.wait_for(
 *                     asyncio.shield(
 */
      }
      __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0;
      __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0;
      __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0;
      goto __pyx_L11_try_end;
      __pyx_L6_error:;
      __Pyx_XDECREF(__pyx_t_10); __pyx_t_10 = 0;
      __Pyx_XDECREF(__pyx_t_6); __pyx_t_6 = 0;
      __Pyx_XDECREF(__pyx_t_7); __pyx_t_7 = 0;
      __Pyx_XDECREF(__pyx_t_8); __pyx_t_8 = 0;
      __Pyx_XDECREF(__pyx_t_9); __pyx_t_9 = 0;

      /* "src/python/grpcio/grpc/_cython/_cygrpc/aio/server.pyx.pxi":1043
 *                     loop=self._loop,
 *                 )
 *             except asyncio.TimeoutError:             # <<<<<<<<<<<<<<
 *                 if self._crash_exception is not None:
 *                     raise self._crash_exception
 */
      __Pyx_ErrFetch(&__pyx_t_6, &__pyx_t_10, &__pyx_t_9);
      __Pyx_GetModuleGlobalName(__pyx_t_7, __pyx_n_s_asyncio); if (unlikely(!__pyx_t_7)) __PYX_ERR(10, 1043, __pyx_L8_except_error)
      __Pyx_GOTREF(__pyx_t_7);
      __pyx_t_8 = __Pyx_PyObject_GetAttrStr(__pyx_t_7, __pyx_n_s_TimeoutError); if (unlikely(!__pyx_t_8)) __PYX_ERR(10, 1043, __pyx_L8_except_error)
      __Pyx_GOTREF(__pyx_t_8);
      __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
      __pyx_t_11 = __Pyx_PyErr_GivenExceptionMatches(__pyx_t_6, __pyx_t_8);
      __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
      __Pyx_ErrRestore(__pyx_t_6, __pyx_t_10, __pyx_t_9);
      __pyx_t_6 = 0; __pyx_t_10 = 0; __pyx_t_9 = 0;
      if (__pyx_t_11) {
        __Pyx_AddTraceback("grpc._cython.cygrpc.AioServer.wait_for_termination", __pyx_clineno, __pyx_lineno, __pyx_filename);
        if (__Pyx_GetException(&__pyx_t_9, &__pyx_t_10, &__pyx_t_6) < 0) __PYX_ERR(10, 1043, __pyx_L8_except_error)
        __Pyx_GOTREF(__pyx_t_9);
        __Pyx_GOTREF(__pyx_t_10);
        __Pyx_GOTREF(__pyx_t_6);

        /* "src/python/grpcio/grpc/_cython/_cygrpc/aio/server.pyx.pxi":1044
 *                 )
 *             except asyncio.TimeoutError:
 *                 if self._crash_exception is not None:             # <<<<<<<<<<<<<<
 *                     raise self._crash_exception
 *                 return False
 */
        __pyx_t_2 = (__pyx_cur_scope->__pyx_v_self->_crash_exception != Py_None);
        __pyx_t_1 = (__pyx_t_2 != 0);
        if (unlikely(__pyx_t_1)) {

          /* "src/python/grpcio/grpc/_cython/_cygrpc/aio/server.pyx.pxi":1045
 *             except asyncio.TimeoutError:
 *                 if self._crash_exception is not None:
 *                     raise self._crash_exception             # <<<<<<<<<<<<<<
 *                 return False
 *         if self._crash_exception is not None:
 */
          __Pyx_Raise(__pyx_cur_scope->__pyx_v_self->_crash_exception, 0, 0, 0);
          __PYX_ERR(10, 1045, __pyx_L8_except_error)

          /* "src/python/grpcio/grpc/_cython/_cygrpc/aio/server.pyx.pxi":1044
 *                 )
 *             except asyncio.TimeoutError:
 *                 if self._crash_exception is not None:             # <<<<<<<<<<<<<<
 *                     raise self._crash_exception
 *                 return False
 */
        }

        /* "src/python/grpcio/grpc/_cython/_cygrpc/aio/server.pyx.pxi":1046
 *                 if self._crash_exception is not None:
 *                     raise self._crash_exception
 *                 return False             # <<<<<<<<<<<<<<
 *         if self._crash_exception is not None:
 *             raise self._crash_exception
 */
        __Pyx_XDECREF(__pyx_r);
        __pyx_r = NULL; __Pyx_ReturnWithStopIteration(Py_False);
        __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
        __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0;
        __Pyx_DECREF(__pyx_t_10); __pyx_t_10 = 0;
        goto __pyx_L9_except_return;
      }
      goto __pyx_L8_except_error;
      __pyx_L8_except_error:;

      /* "src/python/grpcio/grpc/_cython/_cygrpc/aio/server.pyx.pxi":1034
 *             await self._shutdown_completed
 *         else:
 *             try:             # <<<<<<<<<<<<<<
 *                 await asyncio.wait_for(
 *                     asyncio.shield(
 */
      __Pyx_XGIVEREF(__pyx_t_3);
      __Pyx_XGIVEREF(__pyx_t_4);
      __Pyx_XGIVEREF(__pyx_t_5);
      __Pyx_ExceptionReset(__pyx_t_3, __pyx_t_4, __pyx_t_5);
      goto __pyx_L1_error;
      __pyx_L9_except_return:;
      __Pyx_XGIVEREF(__pyx_t_3);
      __Pyx_XGIVEREF(__pyx_t_4);
      __Pyx_XGIVEREF(__pyx_t_5);
      __Pyx_ExceptionReset(__pyx_t_3, __pyx_t_4, __pyx_t_5);
      goto __pyx_L0;
      __pyx_L11_try_end:;
    }
  }
  __pyx_L4:;

  /* "src/python/grpcio/grpc/_cython/_cygrpc/aio/server.pyx.pxi":1047
 *                     raise self._crash_exception
 *                 return False
 *         if self._crash_exception is not None:             # <<<<<<<<<<<<<<
 *             raise self._crash_exception
 *         return True
 */
  __pyx_t_1 = (__pyx_cur_scope->__pyx_v_self->_crash_exception != Py_None);
  __pyx_t_2 = (__pyx_t_1 != 0);
  if (unlikely(__pyx_t_2)) {

    /* "src/python/grpcio/grpc/_cython/_cygrpc/aio/server.pyx.pxi":1048
 *                 return False
 *         if self._crash_exception is not None:
 *             raise self._crash_exception             # <<<<<<<<<<<<<<
 *         return True
 * 
 */
    __Pyx_Raise(__pyx_cur_scope->__pyx_v_self->_crash_exception, 0, 0, 0);
    __PYX_ERR(10, 1048, __pyx_L1_error)

    /* "src/python/grpcio/grpc/_cython/_cygrpc/aio/server.pyx.pxi":1047
 *                     raise self._crash_exception
 *                 return False
 *         if self._crash_exception is not None:             # <<<<<<<<<<<<<<
 *             raise self._crash_exception
 *         return True
 */
  }

  /* "src/python/grpcio/grpc/_cython/_cygrpc/aio/server.pyx.pxi":1049
 *         if self._crash_exception is not None:
 *             raise self._crash_exception
 *         return True             # <<<<<<<<<<<<<<
 * 
 *     def __dealloc__(self):
 */
  __Pyx_XDECREF(__pyx_r);
  __pyx_r = NULL; __Pyx_ReturnWithStopIteration(Py_True);
  goto __pyx_L0;
  CYTHON_MAYBE_UNUSED_VAR(__pyx_cur_scope);

  /* "src/python/grpcio/grpc/_cython/_cygrpc/aio/server.pyx.pxi":1030
 *                 self._status = AIO_SERVER_STATUS_STOPPED
 * 
 *     async def wait_for_termination(self, object timeout):             # <<<<<<<<<<<<<<
 *         if timeout is None:
 *             await self._shutdown_completed
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_6);
  __Pyx_XDECREF(__pyx_t_7);
  __Pyx_XDECREF(__pyx_t_8);
  __Pyx_XDECREF(__pyx_t_9);
  __Pyx_XDECREF(__pyx_t_10);
  __Pyx_AddTraceback("wait_for_termination", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_L0:;
  __Pyx_XDECREF(__pyx_r); __pyx_r = 0;
  #if !CYTHON_USE_EXC_INFO_STACK
  __Pyx_Coroutine_ResetAndClearException(__pyx_generator);
  #endif
  __pyx_generator->resume_label = -1;
  __Pyx_Coroutine_clear((PyObject*)__pyx_generator);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "src/python/grpcio/grpc/_cython/_cygrpc/aio/server.pyx.pxi":1051
 *         return True
 * 
 *     def __dealloc__(self):             # <<<<<<<<<<<<<<
 *         """Deallocation of Core objects are ensured by Python layer."""
 *         # TODO(lidiz) if users create server, and then dealloc it immediately.
 */

/* Python wrapper */
static void __pyx_pw_4grpc_7_cython_6cygrpc_9AioServer_29__dealloc__(PyObject *__pyx_v_self); /*proto*/
static void __pyx_pw_4grpc_7_cython_6cygrpc_9AioServer_29__dealloc__(PyObject *__pyx_v_self) {
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__dealloc__ (wrapper)", 0);
  __pyx_pf_4grpc_7_cython_6cygrpc_9AioServer_28__dealloc__(((struct __pyx_obj_4grpc_7_cython_6cygrpc_AioServer *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
}

static void __pyx_pf_4grpc_7_cython_6cygrpc_9AioServer_28__dealloc__(struct __pyx_obj_4grpc_7_cython_6cygrpc_AioServer *__pyx_v_self) {
  __Pyx_RefNannyDeclarations
  int __pyx_t_1;
  PyObject *__pyx_t_2 = NULL;
  PyObject *__pyx_t_3 = NULL;
  PyObject *__pyx_t_4 = NULL;
  PyObject *__pyx_t_5 = NULL;
  int __pyx_t_6;
  PyObject *__pyx_t_7 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("__dealloc__", 0);

  /* "src/python/grpcio/grpc/_cython/_cygrpc/aio/server.pyx.pxi":1055
 *         # TODO(lidiz) if users create server, and then dealloc it immediately.
 *         # There is a potential memory leak of created Core server.
 *         if self._status != AIO_SERVER_STATUS_STOPPED:             # <<<<<<<<<<<<<<
 *             _LOGGER.debug(
 *                 '__dealloc__ called on running server %s with status %d',
 */
  __pyx_t_1 = ((__pyx_v_self->_status != __pyx_e_4grpc_7_cython_6cygrpc_AIO_SERVER_STATUS_STOPPED) != 0);
  if (__pyx_t_1) {

    /* "src/python/grpcio/grpc/_cython/_cygrpc/aio/server.pyx.pxi":1056
 *         # There is a potential memory leak of created Core server.
 *         if self._status != AIO_SERVER_STATUS_STOPPED:
 *             _LOGGER.debug(             # <<<<<<<<<<<<<<
 *                 '__dealloc__ called on running server %s with status %d',
 *                 self,
 */
    __Pyx_GetModuleGlobalName(__pyx_t_3, __pyx_n_s_LOGGER); if (unlikely(!__pyx_t_3)) __PYX_ERR(10, 1056, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_3);
    __pyx_t_4 = __Pyx_PyObject_GetAttrStr(__pyx_t_3, __pyx_n_s_debug); if (unlikely(!__pyx_t_4)) __PYX_ERR(10, 1056, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_4);
    __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;

    /* "src/python/grpcio/grpc/_cython/_cygrpc/aio/server.pyx.pxi":1059
 *                 '__dealloc__ called on running server %s with status %d',
 *                 self,
 *                 self._status             # <<<<<<<<<<<<<<
 *             )
 *         shutdown_grpc_aio()
 */
    __pyx_t_3 = __Pyx_PyInt_From_enum____pyx_t_4grpc_7_cython_6cygrpc_AioServerStatus(__pyx_v_self->_status); if (unlikely(!__pyx_t_3)) __PYX_ERR(10, 1059, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_3);
    __pyx_t_5 = NULL;
    __pyx_t_6 = 0;
    if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_4))) {
      __pyx_t_5 = PyMethod_GET_SELF(__pyx_t_4);
      if (likely(__pyx_t_5)) {
        PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_4);
        __Pyx_INCREF(__pyx_t_5);
        __Pyx_INCREF(function);
        __Pyx_DECREF_SET(__pyx_t_4, function);
        __pyx_t_6 = 1;
      }
    }
    #if CYTHON_FAST_PYCALL
    if (PyFunction_Check(__pyx_t_4)) {
      PyObject *__pyx_temp[4] = {__pyx_t_5, __pyx_kp_s_dealloc___called_on_running_se, ((PyObject *)__pyx_v_self), __pyx_t_3};
      __pyx_t_2 = __Pyx_PyFunction_FastCall(__pyx_t_4, __pyx_temp+1-__pyx_t_6, 3+__pyx_t_6); if (unlikely(!__pyx_t_2)) __PYX_ERR(10, 1056, __pyx_L1_error)
      __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0;
      __Pyx_GOTREF(__pyx_t_2);
      __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
    } else
    #endif
    #if CYTHON_FAST_PYCCALL
    if (__Pyx_PyFastCFunction_Check(__pyx_t_4)) {
      PyObject *__pyx_temp[4] = {__pyx_t_5, __pyx_kp_s_dealloc___called_on_running_se, ((PyObject *)__pyx_v_self), __pyx_t_3};
      __pyx_t_2 = __Pyx_PyCFunction_FastCall(__pyx_t_4, __pyx_temp+1-__pyx_t_6, 3+__pyx_t_6); if (unlikely(!__pyx_t_2)) __PYX_ERR(10, 1056, __pyx_L1_error)
      __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0;
      __Pyx_GOTREF(__pyx_t_2);
      __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
    } else
    #endif
    {
      __pyx_t_7 = PyTuple_New(3+__pyx_t_6); if (unlikely(!__pyx_t_7)) __PYX_ERR(10, 1056, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_7);
      if (__pyx_t_5) {
        __Pyx_GIVEREF(__pyx_t_5); PyTuple_SET_ITEM(__pyx_t_7, 0, __pyx_t_5); __pyx_t_5 = NULL;
      }
      __Pyx_INCREF(__pyx_kp_s_dealloc___called_on_running_se);
      __Pyx_GIVEREF(__pyx_kp_s_dealloc___called_on_running_se);
      PyTuple_SET_ITEM(__pyx_t_7, 0+__pyx_t_6, __pyx_kp_s_dealloc___called_on_running_se);
      __Pyx_INCREF(((PyObject *)__pyx_v_self));
      __Pyx_GIVEREF(((PyObject *)__pyx_v_self));
      PyTuple_SET_ITEM(__pyx_t_7, 1+__pyx_t_6, ((PyObject *)__pyx_v_self));
      __Pyx_GIVEREF(__pyx_t_3);
      PyTuple_SET_ITEM(__pyx_t_7, 2+__pyx_t_6, __pyx_t_3);
      __pyx_t_3 = 0;
      __pyx_t_2 = __Pyx_PyObject_Call(__pyx_t_4, __pyx_t_7, NULL); if (unlikely(!__pyx_t_2)) __PYX_ERR(10, 1056, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_2);
      __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
    }
    __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
    __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;

    /* "src/python/grpcio/grpc/_cython/_cygrpc/aio/server.pyx.pxi":1055
 *         # TODO(lidiz) if users create server, and then dealloc it immediately.
 *         # There is a potential memory leak of created Core server.
 *         if self._status != AIO_SERVER_STATUS_STOPPED:             # <<<<<<<<<<<<<<
 *             _LOGGER.debug(
 *                 '__dealloc__ called on running server %s with status %d',
 */
  }

  /* "src/python/grpcio/grpc/_cython/_cygrpc/aio/server.pyx.pxi":1061
 *                 self._status
 *             )
 *         shutdown_grpc_aio()             # <<<<<<<<<<<<<<
 * 
 *     cdef thread_pool(self):
 */
  __pyx_t_2 = __pyx_f_4grpc_7_cython_6cygrpc_shutdown_grpc_aio(0); if (unlikely(!__pyx_t_2)) __PYX_ERR(10, 1061, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;

  /* "src/python/grpcio/grpc/_cython/_cygrpc/aio/server.pyx.pxi":1051
 *         return True
 * 
 *     def __dealloc__(self):             # <<<<<<<<<<<<<<
 *         """Deallocation of Core objects are ensured by Python layer."""
 *         # TODO(lidiz) if users create server, and then dealloc it immediately.
 */

  /* function exit code */
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_XDECREF(__pyx_t_3);
  __Pyx_XDECREF(__pyx_t_4);
  __Pyx_XDECREF(__pyx_t_5);
  __Pyx_XDECREF(__pyx_t_7);
  __Pyx_WriteUnraisable("grpc._cython.cygrpc.AioServer.__dealloc__", __pyx_clineno, __pyx_lineno, __pyx_filename, 1, 0);
  __pyx_L0:;
  __Pyx_RefNannyFinishContext();
}

/* "src/python/grpcio/grpc/_cython/_cygrpc/aio/server.pyx.pxi":1063
 *         shutdown_grpc_aio()
 * 
 *     cdef thread_pool(self):             # <<<<<<<<<<<<<<
 *         """Access the thread pool instance."""
 *         return self._thread_pool
 */

static PyObject *__pyx_f_4grpc_7_cython_6cygrpc_9AioServer_thread_pool(struct __pyx_obj_4grpc_7_cython_6cygrpc_AioServer *__pyx_v_self) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("thread_pool", 0);

  /* "src/python/grpcio/grpc/_cython/_cygrpc/aio/server.pyx.pxi":1065
 *     cdef thread_pool(self):
 *         """Access the thread pool instance."""
 *         return self._thread_pool             # <<<<<<<<<<<<<<
 * 
 *     def is_running(self):
 */
  __Pyx_XDECREF(__pyx_r);
  __Pyx_INCREF(__pyx_v_self->_thread_pool);
  __pyx_r = __pyx_v_self->_thread_pool;
  goto __pyx_L0;

  /* "src/python/grpcio/grpc/_cython/_cygrpc/aio/server.pyx.pxi":1063
 *         shutdown_grpc_aio()
 * 
 *     cdef thread_pool(self):             # <<<<<<<<<<<<<<
 *         """Access the thread pool instance."""
 *         return self._thread_pool
 */

  /* function exit code */
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "src/python/grpcio/grpc/_cython/_cygrpc/aio/server.pyx.pxi":1067
 *         return self._thread_pool
 * 
 *     def is_running(self):             # <<<<<<<<<<<<<<
 *         return self._status == AIO_SERVER_STATUS_RUNNING
 */

/* Python wrapper */
static PyObject *__pyx_pw_4grpc_7_cython_6cygrpc_9AioServer_31is_running(PyObject *__pyx_v_self, CYTHON_UNUSED PyObject *unused); /*proto*/
static PyObject *__pyx_pw_4grpc_7_cython_6cygrpc_9AioServer_31is_running(PyObject *__pyx_v_self, CYTHON_UNUSED PyObject *unused) {
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("is_running (wrapper)", 0);
  __pyx_r = __pyx_pf_4grpc_7_cython_6cygrpc_9AioServer_30is_running(((struct __pyx_obj_4grpc_7_cython_6cygrpc_AioServer *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_4grpc_7_cython_6cygrpc_9AioServer_30is_running(struct __pyx_obj_4grpc_7_cython_6cygrpc_AioServer *__pyx_v_self) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("is_running", 0);

  /* "src/python/grpcio/grpc/_cython/_cygrpc/aio/server.pyx.pxi":1068
 * 
 *     def is_running(self):
 *         return self._status == AIO_SERVER_STATUS_RUNNING             # <<<<<<<<<<<<<<
 */
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_1 = __Pyx_PyBool_FromLong((__pyx_v_self->_status == __pyx_e_4grpc_7_cython_6cygrpc_AIO_SERVER_STATUS_RUNNING)); if (unlikely(!__pyx_t_1)) __PYX_ERR(10, 1068, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_r = __pyx_t_1;
  __pyx_t_1 = 0;
  goto __pyx_L0;

  /* "src/python/grpcio/grpc/_cython/_cygrpc/aio/server.pyx.pxi":1067
 *         return self._thread_pool
 * 
 *     def is_running(self):             # <<<<<<<<<<<<<<
 *         return self._status == AIO_SERVER_STATUS_RUNNING
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_AddTraceback("grpc._cython.cygrpc.AioServer.is_running", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "(tree fragment)":1
 * def __reduce_cython__(self):             # <<<<<<<<<<<<<<
 *     cdef tuple state
 *     cdef object _dict
 */

/* Python wrapper */
static PyObject *__pyx_pw_4grpc_7_cython_6cygrpc_9AioServer_33__reduce_cython__(PyObject *__pyx_v_self, CYTHON_UNUSED PyObject *unused); /*proto*/
static PyObject *__pyx_pw_4grpc_7_cython_6cygrpc_9AioServer_33__reduce_cython__(PyObject *__pyx_v_self, CYTHON_UNUSED PyObject *unused) {
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__reduce_cython__ (wrapper)", 0);
  __pyx_r = __pyx_pf_4grpc_7_cython_6cygrpc_9AioServer_32__reduce_cython__(((struct __pyx_obj_4grpc_7_cython_6cygrpc_AioServer *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_4grpc_7_cython_6cygrpc_9AioServer_32__reduce_cython__(struct __pyx_obj_4grpc_7_cython_6cygrpc_AioServer *__pyx_v_self) {
  PyObject *__pyx_v_state = 0;
  PyObject *__pyx_v__dict = 0;
  int __pyx_v_use_setstate;
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  PyObject *__pyx_t_2 = NULL;
  int __pyx_t_3;
  int __pyx_t_4;
  int __pyx_t_5;
  PyObject *__pyx_t_6 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("__reduce_cython__", 0);

  /* "(tree fragment)":5
 *     cdef object _dict
 *     cdef bint use_setstate
 *     state = (self._crash_exception, self._generic_handlers, self._interceptors, self._limiter, self._loop, self._server, self._serving_task, self._shutdown_callback_wrapper, self._shutdown_completed, self._shutdown_lock, self._status, self._thread_pool)             # <<<<<<<<<<<<<<
 *     _dict = getattr(self, '__dict__', None)
 *     if _dict is not None:
 */
  __pyx_t_1 = __Pyx_PyInt_From_enum____pyx_t_4grpc_7_cython_6cygrpc_AioServerStatus(__pyx_v_self->_status); if (unlikely(!__pyx_t_1)) __PYX_ERR(11, 5, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_t_2 = PyTuple_New(12); if (unlikely(!__pyx_t_2)) __PYX_ERR(11, 5, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __Pyx_INCREF(__pyx_v_self->_crash_exception);
  __Pyx_GIVEREF(__pyx_v_self->_crash_exception);
  PyTuple_SET_ITEM(__pyx_t_2, 0, __pyx_v_self->_crash_exception);
  __Pyx_INCREF(__pyx_v_self->_generic_handlers);
  __Pyx_GIVEREF(__pyx_v_self->_generic_handlers);
  PyTuple_SET_ITEM(__pyx_t_2, 1, __pyx_v_self->_generic_handlers);
  __Pyx_INCREF(__pyx_v_self->_interceptors);
  __Pyx_GIVEREF(__pyx_v_self->_interceptors);
  PyTuple_SET_ITEM(__pyx_t_2, 2, __pyx_v_self->_interceptors);
  __Pyx_INCREF(((PyObject *)__pyx_v_self->_limiter));
  __Pyx_GIVEREF(((PyObject *)__pyx_v_self->_limiter));
  PyTuple_SET_ITEM(__pyx_t_2, 3, ((PyObject *)__pyx_v_self->_limiter));
  __Pyx_INCREF(__pyx_v_self->_loop);
  __Pyx_GIVEREF(__pyx_v_self->_loop);
  PyTuple_SET_ITEM(__pyx_t_2, 4, __pyx_v_self->_loop);
  __Pyx_INCREF(((PyObject *)__pyx_v_self->_server));
  __Pyx_GIVEREF(((PyObject *)__pyx_v_self->_server));
  PyTuple_SET_ITEM(__pyx_t_2, 5, ((PyObject *)__pyx_v_self->_server));
  __Pyx_INCREF(__pyx_v_self->_serving_task);
  __Pyx_GIVEREF(__pyx_v_self->_serving_task);
  PyTuple_SET_ITEM(__pyx_t_2, 6, __pyx_v_self->_serving_task);
  __Pyx_INCREF(((PyObject *)__pyx_v_self->_shutdown_callback_wrapper));
  __Pyx_GIVEREF(((PyObject *)__pyx_v_self->_shutdown_callback_wrapper));
  PyTuple_SET_ITEM(__pyx_t_2, 7, ((PyObject *)__pyx_v_self->_shutdown_callback_wrapper));
  __Pyx_INCREF(__pyx_v_self->_shutdown_completed);
  __Pyx_GIVEREF(__pyx_v_self->_shutdown_completed);
  PyTuple_SET_ITEM(__pyx_t_2, 8, __pyx_v_self->_shutdown_completed);
  __Pyx_INCREF(__pyx_v_self->_shutdown_lock);
  __Pyx_GIVEREF(__pyx_v_self->_shutdown_lock);
  PyTuple_SET_ITEM(__pyx_t_2, 9, __pyx_v_self->_shutdown_lock);
  __Pyx_GIVEREF(__pyx_t_1);
  PyTuple_SET_ITEM(__pyx_t_2, 10, __pyx_t_1);
  __Pyx_INCREF(__pyx_v_self->_thread_pool);
  __Pyx_GIVEREF(__pyx_v_self->_thread_pool);
  PyTuple_SET_ITEM(__pyx_t_2, 11, __pyx_v_self->_thread_pool);
  __pyx_t_1 = 0;
  __pyx_v_state = ((PyObject*)__pyx_t_2);
  __pyx_t_2 = 0;

  /* "(tree fragment)":6
 *     cdef bint use_setstate
 *     state = (self._crash_exception, self._generic_handlers, self._interceptors, self._limiter, self._loop, self._server, self._serving_task, self._shutdown_callback_wrapper, self._shutdown_completed, self._shutdown_lock, self._status, self._thread_pool)
 *     _dict = getattr(self, '__dict__', None)             # <<<<<<<<<<<<<<
 *     if _dict is not None:
 *         state += (_dict,)
 */
  __pyx_t_2 = __Pyx_GetAttr3(((PyObject *)__pyx_v_self), __pyx_n_s_dict, Py_None); if (unlikely(!__pyx_t_2)) __PYX_ERR(11, 6, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __pyx_v__dict = __pyx_t_2;
  __pyx_t_2 = 0;

  /* "(tree fragment)":7
 *     state = (self._crash_exception, self._generic_handlers, self._interceptors, self._limiter, self._loop, self._server, self._serving_task, self._shutdown_callback_wrapper, self._shutdown_completed, self._shutdown_lock, self._status, self._thread_pool)
 *     _dict = getattr(self, '__dict__', None)
 *     if _dict is not None:             # <<<<<<<<<<<<<<
 *         state += (_dict,)
 *         use_setstate = True
 */
  __pyx_t_3 = (__pyx_v__dict != Py_None);
  __pyx_t_4 = (__pyx_t_3 != 0);
  if (__pyx_t_4) {

    /* "(tree fragment)":8
 *     _dict = getattr(self, '__dict__', None)
 *     if _dict is not None:
 *         state += (_dict,)             # <<<<<<<<<<<<<<
 *         use_setstate = True
 *     else:
 */
    __pyx_t_2 = PyTuple_New(1); if (unlikely(!__pyx_t_2)) __PYX_ERR(11, 8, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_2);
    __Pyx_INCREF(__pyx_v__dict);
    __Pyx_GIVEREF(__pyx_v__dict);
    PyTuple_SET_ITEM(__pyx_t_2, 0, __pyx_v__dict);
    __pyx_t_1 = PyNumber_InPlaceAdd(__pyx_v_state, __pyx_t_2); if (unlikely(!__pyx_t_1)) __PYX_ERR(11, 8, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_1);
    __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
    __Pyx_DECREF_SET(__pyx_v_state, ((PyObject*)__pyx_t_1));
    __pyx_t_1 = 0;

    /* "(tree fragment)":9
 *     if _dict is not None:
 *         state += (_dict,)
 *         use_setstate = True             # <<<<<<<<<<<<<<
 *     else:
 *         use_setstate = self._crash_exception is not None or self._generic_handlers is not None or self._interceptors is not None or self._limiter is not None or self._loop is not None or self._server is not None or self._serving_task is not None or self._shutdown_callback_wrapper is not None or self._shutdown_completed is not None or self._shutdown_lock is not None or self._thread_pool is not None
 */
    __pyx_v_use_setstate = 1;

    /* "(tree fragment)":7
 *     state = (self._crash_exception, self._generic_handlers, self._interceptors, self._limiter, self._loop, self._server, self._serving_task, self._shutdown_callback_wrapper, self._shutdown_completed, self._shutdown_lock, self._status, self._thread_pool)
 *     _dict = getattr(self, '__dict__', None)
 *     if _dict is not None:             # <<<<<<<<<<<<<<
 *         state += (_dict,)
 *         use_setstate = True
 */
    goto __pyx_L3;
  }

  /* "(tree fragment)":11
 *         use_setstate = True
 *     else:
 *         use_setstate = self._crash_exception is not None or self._generic_handlers is not None or self._interceptors is not None or self._limiter is not None or self._loop is not None or self._server is not None or self._serving_task is not None or self._shutdown_callback_wrapper is not None or self._shutdown_completed is not None or self._shutdown_lock is not None or self._thread_pool is not None             # <<<<<<<<<<<<<<
 *     if use_setstate:
 *         return __pyx_unpickle_AioServer, (type(self), 0xa3714dd, None), state
 */
  /*else*/ {
    __pyx_t_3 = (__pyx_v_self->_crash_exception != Py_None);
    __pyx_t_5 = (__pyx_t_3 != 0);
    if (!__pyx_t_5) {
    } else {
      __pyx_t_4 = __pyx_t_5;
      goto __pyx_L4_bool_binop_done;
    }
    __pyx_t_5 = (__pyx_v_self->_generic_handlers != ((PyObject*)Py_None));
    __pyx_t_3 = (__pyx_t_5 != 0);
    if (!__pyx_t_3) {
    } else {
      __pyx_t_4 = __pyx_t_3;
      goto __pyx_L4_bool_binop_done;
    }
    __pyx_t_3 = (__pyx_v_self->_interceptors != ((PyObject*)Py_None));
    __pyx_t_5 = (__pyx_t_3 != 0);
    if (!__pyx_t_5) {
    } else {
      __pyx_t_4 = __pyx_t_5;
      goto __pyx_L4_bool_binop_done;
    }
    __pyx_t_5 = (((PyObject *)__pyx_v_self->_limiter) != Py_None);
    __pyx_t_3 = (__pyx_t_5 != 0);
    if (!__pyx_t_3) {
    } else {
      __pyx_t_4 = __pyx_t_3;
      goto __pyx_L4_bool_binop_done;
    }
    __pyx_t_3 = (__pyx_v_self->_loop != Py_None);
    __pyx_t_5 = (__pyx_t_3 != 0);
    if (!__pyx_t_5) {
    } else {
      __pyx_t_4 = __pyx_t_5;
      goto __pyx_L4_bool_binop_done;
    }
    __pyx_t_5 = (((PyObject *)__pyx_v_self->_server) != Py_None);
    __pyx_t_3 = (__pyx_t_5 != 0);
    if (!__pyx_t_3) {
    } else {
      __pyx_t_4 = __pyx_t_3;
      goto __pyx_L4_bool_binop_done;
    }
    __pyx_t_3 = (__pyx_v_self->_serving_task != Py_None);
    __pyx_t_5 = (__pyx_t_3 != 0);
    if (!__pyx_t_5) {
    } else {
      __pyx_t_4 = __pyx_t_5;
      goto __pyx_L4_bool_binop_done;
    }
    __pyx_t_5 = (((PyObject *)__pyx_v_self->_shutdown_callback_wrapper) != Py_None);
    __pyx_t_3 = (__pyx_t_5 != 0);
    if (!__pyx_t_3) {
    } else {
      __pyx_t_4 = __pyx_t_3;
      goto __pyx_L4_bool_binop_done;
    }
    __pyx_t_3 = (__pyx_v_self->_shutdown_completed != Py_None);
    __pyx_t_5 = (__pyx_t_3 != 0);
    if (!__pyx_t_5) {
    } else {
      __pyx_t_4 = __pyx_t_5;
      goto __pyx_L4_bool_binop_done;
    }
    __pyx_t_5 = (__pyx_v_self->_shutdown_lock != Py_None);
    __pyx_t_3 = (__pyx_t_5 != 0);
    if (!__pyx_t_3) {
    } else {
      __pyx_t_4 = __pyx_t_3;
      goto __pyx_L4_bool_binop_done;
    }
    __pyx_t_3 = (__pyx_v_self->_thread_pool != Py_None);
    __pyx_t_5 = (__pyx_t_3 != 0);
    __pyx_t_4 = __pyx_t_5;
    __pyx_L4_bool_binop_done:;
    __pyx_v_use_setstate = __pyx_t_4;
  }
  __pyx_L3:;

  /* "(tree fragment)":12
 *     else:
 *         use_setstate = self._crash_exception is not None or self._generic_handlers is not None or self._interceptors is not None or self._limiter is not None or self._loop is not None or self._server is not None or self._serving_task is not None or self._shutdown_callback_wrapper is not None or self._shutdown_completed is not None or self._shutdown_lock is not None or self._thread_pool is not None
 *     if use_setstate:             # <<<<<<<<<<<<<<
 *         return __pyx_unpickle_AioServer, (type(self), 0xa3714dd, None), state
 *     else:
 */
  __pyx_t_4 = (__pyx_v_use_setstate != 0);
  if (__pyx_t_4) {

    /* "(tree fragment)":13
 *         use_setstate = self._crash_exception is not None or self._generic_handlers is not None or self._interceptors is not None or self._limiter is not None or self._loop is not None or self._server is not None or self._serving_task is not None or self._shutdown_callback_wrapper is not None or self._shutdown_completed is not None or self._shutdown_lock is not None or self._thread_pool is not None
 *     if use_setstate:
 *         return __pyx_unpickle_AioServer, (type(self), 0xa3714dd, None), state             # <<<<<<<<<<<<<<
 *     else:
 *         return __pyx_unpickle_AioServer, (type(self), 0xa3714dd, state)
 */
    __Pyx_XDECREF(__pyx_r);
    __Pyx_GetModuleGlobalName(__pyx_t_1, __pyx_n_s_pyx_unpickle_AioServer); if (unlikely(!__pyx_t_1)) __PYX_ERR(11, 13, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_1);
    __pyx_t_2 = PyTuple_New(3); if (unlikely(!__pyx_t_2)) __PYX_ERR(11, 13, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_2);
    __Pyx_INCREF(((PyObject *)Py_TYPE(((PyObject *)__pyx_v_self))));
    __Pyx_GIVEREF(((PyObject *)Py_TYPE(((PyObject *)__pyx_v_self))));
    PyTuple_SET_ITEM(__pyx_t_2, 0, ((PyObject *)Py_TYPE(((PyObject *)__pyx_v_self))));
    __Pyx_INCREF(__pyx_int_171381981);
    __Pyx_GIVEREF(__pyx_int_171381981);
    PyTuple_SET_ITEM(__pyx_t_2, 1, __pyx_int_171381981);
    __Pyx_INCREF(Py_None);
    __Pyx_GIVEREF(Py_None);
    PyTuple_SET_ITEM(__pyx_t_2, 2, Py_None);
    __pyx_t_6 = PyTuple_New(3); if (unlikely(!__pyx_t_6)) __PYX_ERR(11, 13, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_6);
    __Pyx_GIVEREF(__pyx_t_1);
    PyTuple_SET_ITEM(__pyx_t_6, 0, __pyx_t_1);
    __Pyx_GIVEREF(__pyx_t_2);
    PyTuple_SET_ITEM(__pyx_t_6, 1, __pyx_t_2);
    __Pyx_INCREF(__pyx_v_state);
    __Pyx_GIVEREF(__pyx_v_state);
    PyTuple_SET_ITEM(__pyx_t_6, 2, __pyx_v_state);
    __pyx_t_1 = 0;
    __pyx_t_2 = 0;
    __pyx_r = __pyx_t_6;
    __pyx_t_6 = 0;
    goto __pyx_L0;

    /* "(tree fragment)":12
 *     else:
 *         use_setstate = self._crash_exception is not None or self._generic_handlers is not None or self._interceptors is not None or self._limiter is not None or self._loop is not None or self._server is not None or self._serving_task is not None or self._shutdown_callback_wrapper is not None or self._shutdown_completed is not None or self._shutdown_lock is not None or self._thread_pool is not None
 *     if use_setstate:             # <<<<<<<<<<<<<<
 *         return __pyx_unpickle_AioServer, (type(self), 0xa3714dd, None), state
 *     else:
 */
  }

  /* "(tree fragment)":15
 *         return __pyx_unpickle_AioServer, (type(self), 0xa3714dd, None), state
 *     else:
 *         return __pyx_unpickle_AioServer, (type(self), 0xa3714dd, state)             # <<<<<<<<<<<<<<
 * def __setstate_cython__(self, __pyx_state):
 *     __pyx_unpickle_AioServer__set_state(self, __pyx_state)
 */
  /*else*/ {
    __Pyx_XDECREF(__pyx_r);
    __Pyx_GetModuleGlobalName(__pyx_t_6, __pyx_n_s_pyx_unpickle_AioServer); if (unlikely(!__pyx_t_6)) __PYX_ERR(11, 15, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_6);
    __pyx_t_2 = PyTuple_New(3); if (unlikely(!__pyx_t_2)) __PYX_ERR(11, 15, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_2);
    __Pyx_INCREF(((PyObject *)Py_TYPE(((PyObject *)__pyx_v_self))));
    __Pyx_GIVEREF(((PyObject *)Py_TYPE(((PyObject *)__pyx_v_self))));
    PyTuple_SET_ITEM(__pyx_t_2, 0, ((PyObject *)Py_TYPE(((PyObject *)__pyx_v_self))));
    __Pyx_INCREF(__pyx_int_171381981);
    __Pyx_GIVEREF(__pyx_int_171381981);
    PyTuple_SET_ITEM(__pyx_t_2, 1, __pyx_int_171381981);
    __Pyx_INCREF(__pyx_v_state);
    __Pyx_GIVEREF(__pyx_v_state);
    PyTuple_SET_ITEM(__pyx_t_2, 2, __pyx_v_state);
    __pyx_t_1 = PyTuple_New(2); if (unlikely(!__pyx_t_1)) __PYX_ERR(11, 15, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_1);
    __Pyx_GIVEREF(__pyx_t_6);
    PyTuple_SET_ITEM(__pyx_t_1, 0, __pyx_t_6);
    __Pyx_GIVEREF(__pyx_t_2);
    PyTuple_SET_ITEM(__pyx_t_1, 1, __pyx_t_2);
    __pyx_t_6 = 0;
    __pyx_t_2 = 0;
    __pyx_r = __pyx_t_1;
    __pyx_t_1 = 0;
    goto __pyx_L0;
  }

  /* "(tree fragment)":1
 * def __reduce_cython__(self):             # <<<<<<<<<<<<<<
 *     cdef tuple state
 *     cdef object _dict
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_XDECREF(__pyx_t_6);
  __Pyx_AddTraceback("grpc._cython.cygrpc.AioServer.__reduce_cython__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XDECREF(__pyx_v_state);
  __Pyx_XDECREF(__pyx_v__dict);
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "(tree fragment)":16
 *     else:
 *         return __pyx_unpickle_AioServer, (type(self), 0xa3714dd, state)
 * def __setstate_cython__(self, __pyx_state):             # <<<<<<<<<<<<<<
 *     __pyx_unpickle_AioServer__set_state(self, __pyx_state)
 */

/* Python wrapper */
static PyObject *__pyx_pw_4grpc_7_cython_6cygrpc_9AioServer_35__setstate_cython__(PyObject *__pyx_v_self, PyObject *__pyx_v___pyx_state); /*proto*/
static PyObject *__pyx_pw_4grpc_7_cython_6cygrpc_9AioServer_35__setstate_cython__(PyObject *__pyx_v_self, PyObject *__pyx_v___pyx_state) {
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__setstate_cython__ (wrapper)", 0);
  __pyx_r = __pyx_pf_4grpc_7_cython_6cygrpc_9AioServer_34__setstate_cython__(((struct __pyx_obj_4grpc_7_cython_6cygrpc_AioServer *)__pyx_v_self), ((PyObject *)__pyx_v___pyx_state));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_4grpc_7_cython_6cygrpc_9AioServer_34__setstate_cython__(struct __pyx_obj_4grpc_7_cython_6cygrpc_AioServer *__pyx_v_self, PyObject *__pyx_v___pyx_state) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("__setstate_cython__", 0);

  /* "(tree fragment)":17
 *         return __pyx_unpickle_AioServer, (type(self), 0xa3714dd, state)
 * def __setstate_cython__(self, __pyx_state):
 *     __pyx_unpickle_AioServer__set_state(self, __pyx_state)             # <<<<<<<<<<<<<<
 */
  if (!(likely(PyTuple_CheckExact(__pyx_v___pyx_state))||((__pyx_v___pyx_state) == Py_None)||(PyErr_Format(PyExc_TypeError, "Expected %.16s, got %.200s", "tuple", Py_TYPE(__pyx_v___pyx_state)->tp_name), 0))) __PYX_ERR(11, 17, __pyx_L1_error)
  __pyx_t_1 = __pyx_f_4grpc_7_cython_6cygrpc___pyx_unpickle_AioServer__set_state(__pyx_v_self, ((PyObject*)__pyx_v___pyx_state)); if (unlikely(!__pyx_t_1)) __PYX_ERR(11, 17, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;

  /* "(tree fragment)":16
 *     else:
 *         return __pyx_unpickle_AioServer, (type(self), 0xa3714dd, state)
 * def __setstate_cython__(self, __pyx_state):             # <<<<<<<<<<<<<<
 *     __pyx_unpickle_AioServer__set_state(self, __pyx_state)
 */

  /* function exit code */
  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_AddTraceback("grpc._cython.cygrpc.AioServer.__setstate_cython__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "grpc/_cython/cygrpc.pyx":88
 *   int PyEval_InitThreads()
 * 
 * cdef _initialize():             # <<<<<<<<<<<<<<
 *   # We have Python callbacks called by c-core threads, this ensures the GIL
 *   # is initialized.
 */

static PyObject *__pyx_f_4grpc_7_cython_6cygrpc__initialize(void) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("_initialize", 0);

  /* "grpc/_cython/cygrpc.pyx":91
 *   # We have Python callbacks called by c-core threads, this ensures the GIL
 *   # is initialized.
 *   PyEval_InitThreads()             # <<<<<<<<<<<<<<
 *   grpc_set_ssl_roots_override_callback(
 *           <grpc_ssl_roots_override_callback>ssl_roots_override_callback)
 */
  (void)(PyEval_InitThreads());

  /* "grpc/_cython/cygrpc.pyx":92
 *   # is initialized.
 *   PyEval_InitThreads()
 *   grpc_set_ssl_roots_override_callback(             # <<<<<<<<<<<<<<
 *           <grpc_ssl_roots_override_callback>ssl_roots_override_callback)
 * 
 */
  grpc_set_ssl_roots_override_callback(((grpc_ssl_roots_override_callback)__pyx_f_4grpc_7_cython_6cygrpc_ssl_roots_override_callback));

  /* "grpc/_cython/cygrpc.pyx":88
 *   int PyEval_InitThreads()
 * 
 * cdef _initialize():             # <<<<<<<<<<<<<<
 *   # We have Python callbacks called by c-core threads, this ensures the GIL
 *   # is initialized.
 */

  /* function exit code */
  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "(tree fragment)":1
 * def __pyx_unpickle_ChannelCredentials(__pyx_type, long __pyx_checksum, __pyx_state):             # <<<<<<<<<<<<<<
 *     cdef object __pyx_PickleError
 *     cdef object __pyx_result
 */

/* Python wrapper */
static PyObject *__pyx_pw_4grpc_7_cython_6cygrpc_183__pyx_unpickle_ChannelCredentials(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
static PyMethodDef __pyx_mdef_4grpc_7_cython_6cygrpc_183__pyx_unpickle_ChannelCredentials = {"__pyx_unpickle_ChannelCredentials", (PyCFunction)(void*)(PyCFunctionWithKeywords)__pyx_pw_4grpc_7_cython_6cygrpc_183__pyx_unpickle_ChannelCredentials, METH_VARARGS|METH_KEYWORDS, 0};
static PyObject *__pyx_pw_4grpc_7_cython_6cygrpc_183__pyx_unpickle_ChannelCredentials(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
  PyObject *__pyx_v___pyx_type = 0;
  long __pyx_v___pyx_checksum;
  PyObject *__pyx_v___pyx_state = 0;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__pyx_unpickle_ChannelCredentials (wrapper)", 0);
  {
    static PyObject **__pyx_pyargnames[] = {&__pyx_n_s_pyx_type,&__pyx_n_s_pyx_checksum,&__pyx_n_s_pyx_state,0};
    PyObject* values[3] = {0,0,0};
    if (unlikely(__pyx_kwds)) {
      Py_ssize_t kw_args;
      const Py_ssize_t pos_args = PyTuple_GET_SIZE(__pyx_args);
      switch (pos_args) {
        case  3: values[2] = PyTuple_GET_ITEM(__pyx_args, 2);
        CYTHON_FALLTHROUGH;
        case  2: values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
        CYTHON_FALLTHROUGH;
        case  1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
        CYTHON_FALLTHROUGH;
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      kw_args = PyDict_Size(__pyx_kwds);
      switch (pos_args) {
        case  0:
        if (likely((values[0] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_pyx_type)) != 0)) kw_args--;
        else goto __pyx_L5_argtuple_error;
        CYTHON_FALLTHROUGH;
        case  1:
        if (likely((values[1] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_pyx_checksum)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("__pyx_unpickle_ChannelCredentials", 1, 3, 3, 1); __PYX_ERR(11, 1, __pyx_L3_error)
        }
        CYTHON_FALLTHROUGH;
        case  2:
        if (likely((values[2] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_pyx_state)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("__pyx_unpickle_ChannelCredentials", 1, 3, 3, 2); __PYX_ERR(11, 1, __pyx_L3_error)
        }
      }
      if (unlikely(kw_args > 0)) {
        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "__pyx_unpickle_ChannelCredentials") < 0)) __PYX_ERR(11, 1, __pyx_L3_error)
      }
    } else if (PyTuple_GET_SIZE(__pyx_args) != 3) {
      goto __pyx_L5_argtuple_error;
    } else {
      values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
      values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
      values[2] = PyTuple_GET_ITEM(__pyx_args, 2);
    }
    __pyx_v___pyx_type = values[0];
    __pyx_v___pyx_checksum = __Pyx_PyInt_As_long(values[1]); if (unlikely((__pyx_v___pyx_checksum == (long)-1) && PyErr_Occurred())) __PYX_ERR(11, 1, __pyx_L3_error)
    __pyx_v___pyx_state = values[2];
  }
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("__pyx_unpickle_ChannelCredentials", 1, 3, 3, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(11, 1, __pyx_L3_error)
  __pyx_L3_error:;
  __Pyx_AddTraceback("grpc._cython.cygrpc.__pyx_unpickle_ChannelCredentials", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  __pyx_r = __pyx_pf_4grpc_7_cython_6cygrpc_182__pyx_unpickle_ChannelCredentials(__pyx_self, __pyx_v___pyx_type, __pyx_v___pyx_checksum, __pyx_v___pyx_state);

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_4grpc_7_cython_6cygrpc_182__pyx_unpickle_ChannelCredentials(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__pyx_v___pyx_type, long __pyx_v___pyx_checksum, PyObject *__pyx_v___pyx_state) {
  PyObject *__pyx_v___pyx_PickleError = 0;
  PyObject *__pyx_v___pyx_result = 0;
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  int __pyx_t_1;
  PyObject *__pyx_t_2 = NULL;
  PyObject *__pyx_t_3 = NULL;
  PyObject *__pyx_t_4 = NULL;
  PyObject *__pyx_t_5 = NULL;
  int __pyx_t_6;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("__pyx_unpickle_ChannelCredentials", 0);

  /* "(tree fragment)":4
 *     cdef object __pyx_PickleError
 *     cdef object __pyx_result
 *     if __pyx_checksum != 0xd41d8cd:             # <<<<<<<<<<<<<<
 *         from pickle import PickleError as __pyx_PickleError
 *         raise __pyx_PickleError("Incompatible checksums (%s vs 0xd41d8cd = ())" % __pyx_checksum)
 */
  __pyx_t_1 = ((__pyx_v___pyx_checksum != 0xd41d8cd) != 0);
  if (__pyx_t_1) {

    /* "(tree fragment)":5
 *     cdef object __pyx_result
 *     if __pyx_checksum != 0xd41d8cd:
 *         from pickle import PickleError as __pyx_PickleError             # <<<<<<<<<<<<<<
 *         raise __pyx_PickleError("Incompatible checksums (%s vs 0xd41d8cd = ())" % __pyx_checksum)
 *     __pyx_result = ChannelCredentials.__new__(__pyx_type)
 */
    __pyx_t_2 = PyList_New(1); if (unlikely(!__pyx_t_2)) __PYX_ERR(11, 5, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_2);
    __Pyx_INCREF(__pyx_n_s_PickleError);
    __Pyx_GIVEREF(__pyx_n_s_PickleError);
    PyList_SET_ITEM(__pyx_t_2, 0, __pyx_n_s_PickleError);
    __pyx_t_3 = __Pyx_Import(__pyx_n_s_pickle, __pyx_t_2, -1); if (unlikely(!__pyx_t_3)) __PYX_ERR(11, 5, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_3);
    __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
    __pyx_t_2 = __Pyx_ImportFrom(__pyx_t_3, __pyx_n_s_PickleError); if (unlikely(!__pyx_t_2)) __PYX_ERR(11, 5, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_2);
    __Pyx_INCREF(__pyx_t_2);
    __pyx_v___pyx_PickleError = __pyx_t_2;
    __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
    __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;

    /* "(tree fragment)":6
 *     if __pyx_checksum != 0xd41d8cd:
 *         from pickle import PickleError as __pyx_PickleError
 *         raise __pyx_PickleError("Incompatible checksums (%s vs 0xd41d8cd = ())" % __pyx_checksum)             # <<<<<<<<<<<<<<
 *     __pyx_result = ChannelCredentials.__new__(__pyx_type)
 *     if __pyx_state is not None:
 */
    __pyx_t_2 = __Pyx_PyInt_From_long(__pyx_v___pyx_checksum); if (unlikely(!__pyx_t_2)) __PYX_ERR(11, 6, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_2);
    __pyx_t_4 = __Pyx_PyString_Format(__pyx_kp_s_Incompatible_checksums_s_vs_0xd4, __pyx_t_2); if (unlikely(!__pyx_t_4)) __PYX_ERR(11, 6, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_4);
    __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
    __Pyx_INCREF(__pyx_v___pyx_PickleError);
    __pyx_t_2 = __pyx_v___pyx_PickleError; __pyx_t_5 = NULL;
    if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_2))) {
      __pyx_t_5 = PyMethod_GET_SELF(__pyx_t_2);
      if (likely(__pyx_t_5)) {
        PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_2);
        __Pyx_INCREF(__pyx_t_5);
        __Pyx_INCREF(function);
        __Pyx_DECREF_SET(__pyx_t_2, function);
      }
    }
    __pyx_t_3 = (__pyx_t_5) ? __Pyx_PyObject_Call2Args(__pyx_t_2, __pyx_t_5, __pyx_t_4) : __Pyx_PyObject_CallOneArg(__pyx_t_2, __pyx_t_4);
    __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0;
    __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
    if (unlikely(!__pyx_t_3)) __PYX_ERR(11, 6, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_3);
    __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
    __Pyx_Raise(__pyx_t_3, 0, 0, 0);
    __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
    __PYX_ERR(11, 6, __pyx_L1_error)

    /* "(tree fragment)":4
 *     cdef object __pyx_PickleError
 *     cdef object __pyx_result
 *     if __pyx_checksum != 0xd41d8cd:             # <<<<<<<<<<<<<<
 *         from pickle import PickleError as __pyx_PickleError
 *         raise __pyx_PickleError("Incompatible checksums (%s vs 0xd41d8cd = ())" % __pyx_checksum)
 */
  }

  /* "(tree fragment)":7
 *         from pickle import PickleError as __pyx_PickleError
 *         raise __pyx_PickleError("Incompatible checksums (%s vs 0xd41d8cd = ())" % __pyx_checksum)
 *     __pyx_result = ChannelCredentials.__new__(__pyx_type)             # <<<<<<<<<<<<<<
 *     if __pyx_state is not None:
 *         __pyx_unpickle_ChannelCredentials__set_state(<ChannelCredentials> __pyx_result, __pyx_state)
 */
  __pyx_t_2 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_ptype_4grpc_7_cython_6cygrpc_ChannelCredentials), __pyx_n_s_new); if (unlikely(!__pyx_t_2)) __PYX_ERR(11, 7, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __pyx_t_4 = NULL;
  if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_2))) {
    __pyx_t_4 = PyMethod_GET_SELF(__pyx_t_2);
    if (likely(__pyx_t_4)) {
      PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_2);
      __Pyx_INCREF(__pyx_t_4);
      __Pyx_INCREF(function);
      __Pyx_DECREF_SET(__pyx_t_2, function);
    }
  }
  __pyx_t_3 = (__pyx_t_4) ? __Pyx_PyObject_Call2Args(__pyx_t_2, __pyx_t_4, __pyx_v___pyx_type) : __Pyx_PyObject_CallOneArg(__pyx_t_2, __pyx_v___pyx_type);
  __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0;
  if (unlikely(!__pyx_t_3)) __PYX_ERR(11, 7, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  __pyx_v___pyx_result = __pyx_t_3;
  __pyx_t_3 = 0;

  /* "(tree fragment)":8
 *         raise __pyx_PickleError("Incompatible checksums (%s vs 0xd41d8cd = ())" % __pyx_checksum)
 *     __pyx_result = ChannelCredentials.__new__(__pyx_type)
 *     if __pyx_state is not None:             # <<<<<<<<<<<<<<
 *         __pyx_unpickle_ChannelCredentials__set_state(<ChannelCredentials> __pyx_result, __pyx_state)
 *     return __pyx_result
 */
  __pyx_t_1 = (__pyx_v___pyx_state != Py_None);
  __pyx_t_6 = (__pyx_t_1 != 0);
  if (__pyx_t_6) {

    /* "(tree fragment)":9
 *     __pyx_result = ChannelCredentials.__new__(__pyx_type)
 *     if __pyx_state is not None:
 *         __pyx_unpickle_ChannelCredentials__set_state(<ChannelCredentials> __pyx_result, __pyx_state)             # <<<<<<<<<<<<<<
 *     return __pyx_result
 * cdef __pyx_unpickle_ChannelCredentials__set_state(ChannelCredentials __pyx_result, tuple __pyx_state):
 */
    if (!(likely(PyTuple_CheckExact(__pyx_v___pyx_state))||((__pyx_v___pyx_state) == Py_None)||(PyErr_Format(PyExc_TypeError, "Expected %.16s, got %.200s", "tuple", Py_TYPE(__pyx_v___pyx_state)->tp_name), 0))) __PYX_ERR(11, 9, __pyx_L1_error)
    __pyx_t_3 = __pyx_f_4grpc_7_cython_6cygrpc___pyx_unpickle_ChannelCredentials__set_state(((struct __pyx_obj_4grpc_7_cython_6cygrpc_ChannelCredentials *)__pyx_v___pyx_result), ((PyObject*)__pyx_v___pyx_state)); if (unlikely(!__pyx_t_3)) __PYX_ERR(11, 9, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_3);
    __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;

    /* "(tree fragment)":8
 *         raise __pyx_PickleError("Incompatible checksums (%s vs 0xd41d8cd = ())" % __pyx_checksum)
 *     __pyx_result = ChannelCredentials.__new__(__pyx_type)
 *     if __pyx_state is not None:             # <<<<<<<<<<<<<<
 *         __pyx_unpickle_ChannelCredentials__set_state(<ChannelCredentials> __pyx_result, __pyx_state)
 *     return __pyx_result
 */
  }

  /* "(tree fragment)":10
 *     if __pyx_state is not None:
 *         __pyx_unpickle_ChannelCredentials__set_state(<ChannelCredentials> __pyx_result, __pyx_state)
 *     return __pyx_result             # <<<<<<<<<<<<<<
 * cdef __pyx_unpickle_ChannelCredentials__set_state(ChannelCredentials __pyx_result, tuple __pyx_state):
 *     if len(__pyx_state) > 0 and hasattr(__pyx_result, '__dict__'):
 */
  __Pyx_XDECREF(__pyx_r);
  __Pyx_INCREF(__pyx_v___pyx_result);
  __pyx_r = __pyx_v___pyx_result;
  goto __pyx_L0;

  /* "(tree fragment)":1
 * def __pyx_unpickle_ChannelCredentials(__pyx_type, long __pyx_checksum, __pyx_state):             # <<<<<<<<<<<<<<
 *     cdef object __pyx_PickleError
 *     cdef object __pyx_result
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_XDECREF(__pyx_t_3);
  __Pyx_XDECREF(__pyx_t_4);
  __Pyx_XDECREF(__pyx_t_5);
  __Pyx_AddTraceback("grpc._cython.cygrpc.__pyx_unpickle_ChannelCredentials", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XDECREF(__pyx_v___pyx_PickleError);
  __Pyx_XDECREF(__pyx_v___pyx_result);
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "(tree fragment)":11
 *         __pyx_unpickle_ChannelCredentials__set_state(<ChannelCredentials> __pyx_result, __pyx_state)
 *     return __pyx_result
 * cdef __pyx_unpickle_ChannelCredentials__set_state(ChannelCredentials __pyx_result, tuple __pyx_state):             # <<<<<<<<<<<<<<
 *     if len(__pyx_state) > 0 and hasattr(__pyx_result, '__dict__'):
 *         __pyx_result.__dict__.update(__pyx_state[0])
 */

static PyObject *__pyx_f_4grpc_7_cython_6cygrpc___pyx_unpickle_ChannelCredentials__set_state(struct __pyx_obj_4grpc_7_cython_6cygrpc_ChannelCredentials *__pyx_v___pyx_result, PyObject *__pyx_v___pyx_state) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  int __pyx_t_1;
  Py_ssize_t __pyx_t_2;
  int __pyx_t_3;
  int __pyx_t_4;
  PyObject *__pyx_t_5 = NULL;
  PyObject *__pyx_t_6 = NULL;
  PyObject *__pyx_t_7 = NULL;
  PyObject *__pyx_t_8 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("__pyx_unpickle_ChannelCredentials__set_state", 0);

  /* "(tree fragment)":12
 *     return __pyx_result
 * cdef __pyx_unpickle_ChannelCredentials__set_state(ChannelCredentials __pyx_result, tuple __pyx_state):
 *     if len(__pyx_state) > 0 and hasattr(__pyx_result, '__dict__'):             # <<<<<<<<<<<<<<
 *         __pyx_result.__dict__.update(__pyx_state[0])
 */
  if (unlikely(__pyx_v___pyx_state == Py_None)) {
    PyErr_SetString(PyExc_TypeError, "object of type 'NoneType' has no len()");
    __PYX_ERR(11, 12, __pyx_L1_error)
  }
  __pyx_t_2 = PyTuple_GET_SIZE(__pyx_v___pyx_state); if (unlikely(__pyx_t_2 == ((Py_ssize_t)-1))) __PYX_ERR(11, 12, __pyx_L1_error)
  __pyx_t_3 = ((__pyx_t_2 > 0) != 0);
  if (__pyx_t_3) {
  } else {
    __pyx_t_1 = __pyx_t_3;
    goto __pyx_L4_bool_binop_done;
  }
  __pyx_t_3 = __Pyx_HasAttr(((PyObject *)__pyx_v___pyx_result), __pyx_n_s_dict); if (unlikely(__pyx_t_3 == ((int)-1))) __PYX_ERR(11, 12, __pyx_L1_error)
  __pyx_t_4 = (__pyx_t_3 != 0);
  __pyx_t_1 = __pyx_t_4;
  __pyx_L4_bool_binop_done:;
  if (__pyx_t_1) {

    /* "(tree fragment)":13
 * cdef __pyx_unpickle_ChannelCredentials__set_state(ChannelCredentials __pyx_result, tuple __pyx_state):
 *     if len(__pyx_state) > 0 and hasattr(__pyx_result, '__dict__'):
 *         __pyx_result.__dict__.update(__pyx_state[0])             # <<<<<<<<<<<<<<
 */
    __pyx_t_6 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v___pyx_result), __pyx_n_s_dict); if (unlikely(!__pyx_t_6)) __PYX_ERR(11, 13, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_6);
    __pyx_t_7 = __Pyx_PyObject_GetAttrStr(__pyx_t_6, __pyx_n_s_update); if (unlikely(!__pyx_t_7)) __PYX_ERR(11, 13, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_7);
    __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
    if (unlikely(__pyx_v___pyx_state == Py_None)) {
      PyErr_SetString(PyExc_TypeError, "'NoneType' object is not subscriptable");
      __PYX_ERR(11, 13, __pyx_L1_error)
    }
    __pyx_t_6 = __Pyx_GetItemInt_Tuple(__pyx_v___pyx_state, 0, long, 1, __Pyx_PyInt_From_long, 0, 0, 1); if (unlikely(!__pyx_t_6)) __PYX_ERR(11, 13, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_6);
    __pyx_t_8 = NULL;
    if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_7))) {
      __pyx_t_8 = PyMethod_GET_SELF(__pyx_t_7);
      if (likely(__pyx_t_8)) {
        PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_7);
        __Pyx_INCREF(__pyx_t_8);
        __Pyx_INCREF(function);
        __Pyx_DECREF_SET(__pyx_t_7, function);
      }
    }
    __pyx_t_5 = (__pyx_t_8) ? __Pyx_PyObject_Call2Args(__pyx_t_7, __pyx_t_8, __pyx_t_6) : __Pyx_PyObject_CallOneArg(__pyx_t_7, __pyx_t_6);
    __Pyx_XDECREF(__pyx_t_8); __pyx_t_8 = 0;
    __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
    if (unlikely(!__pyx_t_5)) __PYX_ERR(11, 13, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_5);
    __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
    __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;

    /* "(tree fragment)":12
 *     return __pyx_result
 * cdef __pyx_unpickle_ChannelCredentials__set_state(ChannelCredentials __pyx_result, tuple __pyx_state):
 *     if len(__pyx_state) > 0 and hasattr(__pyx_result, '__dict__'):             # <<<<<<<<<<<<<<
 *         __pyx_result.__dict__.update(__pyx_state[0])
 */
  }

  /* "(tree fragment)":11
 *         __pyx_unpickle_ChannelCredentials__set_state(<ChannelCredentials> __pyx_result, __pyx_state)
 *     return __pyx_result
 * cdef __pyx_unpickle_ChannelCredentials__set_state(ChannelCredentials __pyx_result, tuple __pyx_state):             # <<<<<<<<<<<<<<
 *     if len(__pyx_state) > 0 and hasattr(__pyx_result, '__dict__'):
 *         __pyx_result.__dict__.update(__pyx_state[0])
 */

  /* function exit code */
  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_5);
  __Pyx_XDECREF(__pyx_t_6);
  __Pyx_XDECREF(__pyx_t_7);
  __Pyx_XDECREF(__pyx_t_8);
  __Pyx_AddTraceback("grpc._cython.cygrpc.__pyx_unpickle_ChannelCredentials__set_state", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = 0;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "(tree fragment)":1
 * def __pyx_unpickle_InsecureChannelCredentials(__pyx_type, long __pyx_checksum, __pyx_state):             # <<<<<<<<<<<<<<
 *     cdef object __pyx_PickleError
 *     cdef object __pyx_result
 */

/* Python wrapper */
static PyObject *__pyx_pw_4grpc_7_cython_6cygrpc_185__pyx_unpickle_InsecureChannelCredentials(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
static PyMethodDef __pyx_mdef_4grpc_7_cython_6cygrpc_185__pyx_unpickle_InsecureChannelCredentials = {"__pyx_unpickle_InsecureChannelCredentials", (PyCFunction)(void*)(PyCFunctionWithKeywords)__pyx_pw_4grpc_7_cython_6cygrpc_185__pyx_unpickle_InsecureChannelCredentials, METH_VARARGS|METH_KEYWORDS, 0};
static PyObject *__pyx_pw_4grpc_7_cython_6cygrpc_185__pyx_unpickle_InsecureChannelCredentials(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
  PyObject *__pyx_v___pyx_type = 0;
  long __pyx_v___pyx_checksum;
  PyObject *__pyx_v___pyx_state = 0;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__pyx_unpickle_InsecureChannelCredentials (wrapper)", 0);
  {
    static PyObject **__pyx_pyargnames[] = {&__pyx_n_s_pyx_type,&__pyx_n_s_pyx_checksum,&__pyx_n_s_pyx_state,0};
    PyObject* values[3] = {0,0,0};
    if (unlikely(__pyx_kwds)) {
      Py_ssize_t kw_args;
      const Py_ssize_t pos_args = PyTuple_GET_SIZE(__pyx_args);
      switch (pos_args) {
        case  3: values[2] = PyTuple_GET_ITEM(__pyx_args, 2);
        CYTHON_FALLTHROUGH;
        case  2: values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
        CYTHON_FALLTHROUGH;
        case  1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
        CYTHON_FALLTHROUGH;
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      kw_args = PyDict_Size(__pyx_kwds);
      switch (pos_args) {
        case  0:
        if (likely((values[0] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_pyx_type)) != 0)) kw_args--;
        else goto __pyx_L5_argtuple_error;
        CYTHON_FALLTHROUGH;
        case  1:
        if (likely((values[1] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_pyx_checksum)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("__pyx_unpickle_InsecureChannelCredentials", 1, 3, 3, 1); __PYX_ERR(11, 1, __pyx_L3_error)
        }
        CYTHON_FALLTHROUGH;
        case  2:
        if (likely((values[2] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_pyx_state)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("__pyx_unpickle_InsecureChannelCredentials", 1, 3, 3, 2); __PYX_ERR(11, 1, __pyx_L3_error)
        }
      }
      if (unlikely(kw_args > 0)) {
        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "__pyx_unpickle_InsecureChannelCredentials") < 0)) __PYX_ERR(11, 1, __pyx_L3_error)
      }
    } else if (PyTuple_GET_SIZE(__pyx_args) != 3) {
      goto __pyx_L5_argtuple_error;
    } else {
      values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
      values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
      values[2] = PyTuple_GET_ITEM(__pyx_args, 2);
    }
    __pyx_v___pyx_type = values[0];
    __pyx_v___pyx_checksum = __Pyx_PyInt_As_long(values[1]); if (unlikely((__pyx_v___pyx_checksum == (long)-1) && PyErr_Occurred())) __PYX_ERR(11, 1, __pyx_L3_error)
    __pyx_v___pyx_state = values[2];
  }
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("__pyx_unpickle_InsecureChannelCredentials", 1, 3, 3, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(11, 1, __pyx_L3_error)
  __pyx_L3_error:;
  __Pyx_AddTraceback("grpc._cython.cygrpc.__pyx_unpickle_InsecureChannelCredentials", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  __pyx_r = __pyx_pf_4grpc_7_cython_6cygrpc_184__pyx_unpickle_InsecureChannelCredentials(__pyx_self, __pyx_v___pyx_type, __pyx_v___pyx_checksum, __pyx_v___pyx_state);

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_4grpc_7_cython_6cygrpc_184__pyx_unpickle_InsecureChannelCredentials(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__pyx_v___pyx_type, long __pyx_v___pyx_checksum, PyObject *__pyx_v___pyx_state) {
  PyObject *__pyx_v___pyx_PickleError = 0;
  PyObject *__pyx_v___pyx_result = 0;
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  int __pyx_t_1;
  PyObject *__pyx_t_2 = NULL;
  PyObject *__pyx_t_3 = NULL;
  PyObject *__pyx_t_4 = NULL;
  PyObject *__pyx_t_5 = NULL;
  int __pyx_t_6;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("__pyx_unpickle_InsecureChannelCredentials", 0);

  /* "(tree fragment)":4
 *     cdef object __pyx_PickleError
 *     cdef object __pyx_result
 *     if __pyx_checksum != 0xd41d8cd:             # <<<<<<<<<<<<<<
 *         from pickle import PickleError as __pyx_PickleError
 *         raise __pyx_PickleError("Incompatible checksums (%s vs 0xd41d8cd = ())" % __pyx_checksum)
 */
  __pyx_t_1 = ((__pyx_v___pyx_checksum != 0xd41d8cd) != 0);
  if (__pyx_t_1) {

    /* "(tree fragment)":5
 *     cdef object __pyx_result
 *     if __pyx_checksum != 0xd41d8cd:
 *         from pickle import PickleError as __pyx_PickleError             # <<<<<<<<<<<<<<
 *         raise __pyx_PickleError("Incompatible checksums (%s vs 0xd41d8cd = ())" % __pyx_checksum)
 *     __pyx_result = InsecureChannelCredentials.__new__(__pyx_type)
 */
    __pyx_t_2 = PyList_New(1); if (unlikely(!__pyx_t_2)) __PYX_ERR(11, 5, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_2);
    __Pyx_INCREF(__pyx_n_s_PickleError);
    __Pyx_GIVEREF(__pyx_n_s_PickleError);
    PyList_SET_ITEM(__pyx_t_2, 0, __pyx_n_s_PickleError);
    __pyx_t_3 = __Pyx_Import(__pyx_n_s_pickle, __pyx_t_2, -1); if (unlikely(!__pyx_t_3)) __PYX_ERR(11, 5, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_3);
    __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
    __pyx_t_2 = __Pyx_ImportFrom(__pyx_t_3, __pyx_n_s_PickleError); if (unlikely(!__pyx_t_2)) __PYX_ERR(11, 5, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_2);
    __Pyx_INCREF(__pyx_t_2);
    __pyx_v___pyx_PickleError = __pyx_t_2;
    __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
    __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;

    /* "(tree fragment)":6
 *     if __pyx_checksum != 0xd41d8cd:
 *         from pickle import PickleError as __pyx_PickleError
 *         raise __pyx_PickleError("Incompatible checksums (%s vs 0xd41d8cd = ())" % __pyx_checksum)             # <<<<<<<<<<<<<<
 *     __pyx_result = InsecureChannelCredentials.__new__(__pyx_type)
 *     if __pyx_state is not None:
 */
    __pyx_t_2 = __Pyx_PyInt_From_long(__pyx_v___pyx_checksum); if (unlikely(!__pyx_t_2)) __PYX_ERR(11, 6, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_2);
    __pyx_t_4 = __Pyx_PyString_Format(__pyx_kp_s_Incompatible_checksums_s_vs_0xd4, __pyx_t_2); if (unlikely(!__pyx_t_4)) __PYX_ERR(11, 6, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_4);
    __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
    __Pyx_INCREF(__pyx_v___pyx_PickleError);
    __pyx_t_2 = __pyx_v___pyx_PickleError; __pyx_t_5 = NULL;
    if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_2))) {
      __pyx_t_5 = PyMethod_GET_SELF(__pyx_t_2);
      if (likely(__pyx_t_5)) {
        PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_2);
        __Pyx_INCREF(__pyx_t_5);
        __Pyx_INCREF(function);
        __Pyx_DECREF_SET(__pyx_t_2, function);
      }
    }
    __pyx_t_3 = (__pyx_t_5) ? __Pyx_PyObject_Call2Args(__pyx_t_2, __pyx_t_5, __pyx_t_4) : __Pyx_PyObject_CallOneArg(__pyx_t_2, __pyx_t_4);
    __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0;
    __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
    if (unlikely(!__pyx_t_3)) __PYX_ERR(11, 6, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_3);
    __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
    __Pyx_Raise(__pyx_t_3, 0, 0, 0);
    __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
    __PYX_ERR(11, 6, __pyx_L1_error)

    /* "(tree fragment)":4
 *     cdef object __pyx_PickleError
 *     cdef object __pyx_result
 *     if __pyx_checksum != 0xd41d8cd:             # <<<<<<<<<<<<<<
 *         from pickle import PickleError as __pyx_PickleError
 *         raise __pyx_PickleError("Incompatible checksums (%s vs 0xd41d8cd = ())" % __pyx_checksum)
 */
  }

  /* "(tree fragment)":7
 *         from pickle import PickleError as __pyx_PickleError
 *         raise __pyx_PickleError("Incompatible checksums (%s vs 0xd41d8cd = ())" % __pyx_checksum)
 *     __pyx_result = InsecureChannelCredentials.__new__(__pyx_type)             # <<<<<<<<<<<<<<
 *     if __pyx_state is not None:
 *         __pyx_unpickle_InsecureChannelCredentials__set_state(<InsecureChannelCredentials> __pyx_result, __pyx_state)
 */
  __pyx_t_2 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_ptype_4grpc_7_cython_6cygrpc_InsecureChannelCredentials), __pyx_n_s_new); if (unlikely(!__pyx_t_2)) __PYX_ERR(11, 7, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __pyx_t_4 = NULL;
  if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_2))) {
    __pyx_t_4 = PyMethod_GET_SELF(__pyx_t_2);
    if (likely(__pyx_t_4)) {
      PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_2);
      __Pyx_INCREF(__pyx_t_4);
      __Pyx_INCREF(function);
      __Pyx_DECREF_SET(__pyx_t_2, function);
    }
  }
  __pyx_t_3 = (__pyx_t_4) ? __Pyx_PyObject_Call2Args(__pyx_t_2, __pyx_t_4, __pyx_v___pyx_type) : __Pyx_PyObject_CallOneArg(__pyx_t_2, __pyx_v___pyx_type);
  __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0;
  if (unlikely(!__pyx_t_3)) __PYX_ERR(11, 7, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  __pyx_v___pyx_result = __pyx_t_3;
  __pyx_t_3 = 0;

  /* "(tree fragment)":8
 *         raise __pyx_PickleError("Incompatible checksums (%s vs 0xd41d8cd = ())" % __pyx_checksum)
 *     __pyx_result = InsecureChannelCredentials.__new__(__pyx_type)
 *     if __pyx_state is not None:             # <<<<<<<<<<<<<<
 *         __pyx_unpickle_InsecureChannelCredentials__set_state(<InsecureChannelCredentials> __pyx_result, __pyx_state)
 *     return __pyx_result
 */
  __pyx_t_1 = (__pyx_v___pyx_state != Py_None);
  __pyx_t_6 = (__pyx_t_1 != 0);
  if (__pyx_t_6) {

    /* "(tree fragment)":9
 *     __pyx_result = InsecureChannelCredentials.__new__(__pyx_type)
 *     if __pyx_state is not None:
 *         __pyx_unpickle_InsecureChannelCredentials__set_state(<InsecureChannelCredentials> __pyx_result, __pyx_state)             # <<<<<<<<<<<<<<
 *     return __pyx_result
 * cdef __pyx_unpickle_InsecureChannelCredentials__set_state(InsecureChannelCredentials __pyx_result, tuple __pyx_state):
 */
    if (!(likely(PyTuple_CheckExact(__pyx_v___pyx_state))||((__pyx_v___pyx_state) == Py_None)||(PyErr_Format(PyExc_TypeError, "Expected %.16s, got %.200s", "tuple", Py_TYPE(__pyx_v___pyx_state)->tp_name), 0))) __PYX_ERR(11, 9, __pyx_L1_error)
    __pyx_t_3 = __pyx_f_4grpc_7_cython_6cygrpc___pyx_unpickle_InsecureChannelCredentials__set_state(((struct __pyx_obj_4grpc_7_cython_6cygrpc_InsecureChannelCredentials *)__pyx_v___pyx_result), ((PyObject*)__pyx_v___pyx_state)); if (unlikely(!__pyx_t_3)) __PYX_ERR(11, 9, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_3);
    __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;

    /* "(tree fragment)":8
 *         raise __pyx_PickleError("Incompatible checksums (%s vs 0xd41d8cd = ())" % __pyx_checksum)
 *     __pyx_result = InsecureChannelCredentials.__new__(__pyx_type)
 *     if __pyx_state is not None:             # <<<<<<<<<<<<<<
 *         __pyx_unpickle_InsecureChannelCredentials__set_state(<InsecureChannelCredentials> __pyx_result, __pyx_state)
 *     return __pyx_result
 */
  }

  /* "(tree fragment)":10
 *     if __pyx_state is not None:
 *         __pyx_unpickle_InsecureChannelCredentials__set_state(<InsecureChannelCredentials> __pyx_result, __pyx_state)
 *     return __pyx_result             # <<<<<<<<<<<<<<
 * cdef __pyx_unpickle_InsecureChannelCredentials__set_state(InsecureChannelCredentials __pyx_result, tuple __pyx_state):
 *     if len(__pyx_state) > 0 and hasattr(__pyx_result, '__dict__'):
 */
  __Pyx_XDECREF(__pyx_r);
  __Pyx_INCREF(__pyx_v___pyx_result);
  __pyx_r = __pyx_v___pyx_result;
  goto __pyx_L0;

  /* "(tree fragment)":1
 * def __pyx_unpickle_InsecureChannelCredentials(__pyx_type, long __pyx_checksum, __pyx_state):             # <<<<<<<<<<<<<<
 *     cdef object __pyx_PickleError
 *     cdef object __pyx_result
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_XDECREF(__pyx_t_3);
  __Pyx_XDECREF(__pyx_t_4);
  __Pyx_XDECREF(__pyx_t_5);
  __Pyx_AddTraceback("grpc._cython.cygrpc.__pyx_unpickle_InsecureChannelCredentials", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XDECREF(__pyx_v___pyx_PickleError);
  __Pyx_XDECREF(__pyx_v___pyx_result);
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "(tree fragment)":11
 *         __pyx_unpickle_InsecureChannelCredentials__set_state(<InsecureChannelCredentials> __pyx_result, __pyx_state)
 *     return __pyx_result
 * cdef __pyx_unpickle_InsecureChannelCredentials__set_state(InsecureChannelCredentials __pyx_result, tuple __pyx_state):             # <<<<<<<<<<<<<<
 *     if len(__pyx_state) > 0 and hasattr(__pyx_result, '__dict__'):
 *         __pyx_result.__dict__.update(__pyx_state[0])
 */

static PyObject *__pyx_f_4grpc_7_cython_6cygrpc___pyx_unpickle_InsecureChannelCredentials__set_state(struct __pyx_obj_4grpc_7_cython_6cygrpc_InsecureChannelCredentials *__pyx_v___pyx_result, PyObject *__pyx_v___pyx_state) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  int __pyx_t_1;
  Py_ssize_t __pyx_t_2;
  int __pyx_t_3;
  int __pyx_t_4;
  PyObject *__pyx_t_5 = NULL;
  PyObject *__pyx_t_6 = NULL;
  PyObject *__pyx_t_7 = NULL;
  PyObject *__pyx_t_8 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("__pyx_unpickle_InsecureChannelCredentials__set_state", 0);

  /* "(tree fragment)":12
 *     return __pyx_result
 * cdef __pyx_unpickle_InsecureChannelCredentials__set_state(InsecureChannelCredentials __pyx_result, tuple __pyx_state):
 *     if len(__pyx_state) > 0 and hasattr(__pyx_result, '__dict__'):             # <<<<<<<<<<<<<<
 *         __pyx_result.__dict__.update(__pyx_state[0])
 */
  if (unlikely(__pyx_v___pyx_state == Py_None)) {
    PyErr_SetString(PyExc_TypeError, "object of type 'NoneType' has no len()");
    __PYX_ERR(11, 12, __pyx_L1_error)
  }
  __pyx_t_2 = PyTuple_GET_SIZE(__pyx_v___pyx_state); if (unlikely(__pyx_t_2 == ((Py_ssize_t)-1))) __PYX_ERR(11, 12, __pyx_L1_error)
  __pyx_t_3 = ((__pyx_t_2 > 0) != 0);
  if (__pyx_t_3) {
  } else {
    __pyx_t_1 = __pyx_t_3;
    goto __pyx_L4_bool_binop_done;
  }
  __pyx_t_3 = __Pyx_HasAttr(((PyObject *)__pyx_v___pyx_result), __pyx_n_s_dict); if (unlikely(__pyx_t_3 == ((int)-1))) __PYX_ERR(11, 12, __pyx_L1_error)
  __pyx_t_4 = (__pyx_t_3 != 0);
  __pyx_t_1 = __pyx_t_4;
  __pyx_L4_bool_binop_done:;
  if (__pyx_t_1) {

    /* "(tree fragment)":13
 * cdef __pyx_unpickle_InsecureChannelCredentials__set_state(InsecureChannelCredentials __pyx_result, tuple __pyx_state):
 *     if len(__pyx_state) > 0 and hasattr(__pyx_result, '__dict__'):
 *         __pyx_result.__dict__.update(__pyx_state[0])             # <<<<<<<<<<<<<<
 */
    __pyx_t_6 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v___pyx_result), __pyx_n_s_dict); if (unlikely(!__pyx_t_6)) __PYX_ERR(11, 13, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_6);
    __pyx_t_7 = __Pyx_PyObject_GetAttrStr(__pyx_t_6, __pyx_n_s_update); if (unlikely(!__pyx_t_7)) __PYX_ERR(11, 13, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_7);
    __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
    if (unlikely(__pyx_v___pyx_state == Py_None)) {
      PyErr_SetString(PyExc_TypeError, "'NoneType' object is not subscriptable");
      __PYX_ERR(11, 13, __pyx_L1_error)
    }
    __pyx_t_6 = __Pyx_GetItemInt_Tuple(__pyx_v___pyx_state, 0, long, 1, __Pyx_PyInt_From_long, 0, 0, 1); if (unlikely(!__pyx_t_6)) __PYX_ERR(11, 13, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_6);
    __pyx_t_8 = NULL;
    if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_7))) {
      __pyx_t_8 = PyMethod_GET_SELF(__pyx_t_7);
      if (likely(__pyx_t_8)) {
        PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_7);
        __Pyx_INCREF(__pyx_t_8);
        __Pyx_INCREF(function);
        __Pyx_DECREF_SET(__pyx_t_7, function);
      }
    }
    __pyx_t_5 = (__pyx_t_8) ? __Pyx_PyObject_Call2Args(__pyx_t_7, __pyx_t_8, __pyx_t_6) : __Pyx_PyObject_CallOneArg(__pyx_t_7, __pyx_t_6);
    __Pyx_XDECREF(__pyx_t_8); __pyx_t_8 = 0;
    __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
    if (unlikely(!__pyx_t_5)) __PYX_ERR(11, 13, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_5);
    __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
    __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;

    /* "(tree fragment)":12
 *     return __pyx_result
 * cdef __pyx_unpickle_InsecureChannelCredentials__set_state(InsecureChannelCredentials __pyx_result, tuple __pyx_state):
 *     if len(__pyx_state) > 0 and hasattr(__pyx_result, '__dict__'):             # <<<<<<<<<<<<<<
 *         __pyx_result.__dict__.update(__pyx_state[0])
 */
  }

  /* "(tree fragment)":11
 *         __pyx_unpickle_InsecureChannelCredentials__set_state(<InsecureChannelCredentials> __pyx_result, __pyx_state)
 *     return __pyx_result
 * cdef __pyx_unpickle_InsecureChannelCredentials__set_state(InsecureChannelCredentials __pyx_result, tuple __pyx_state):             # <<<<<<<<<<<<<<
 *     if len(__pyx_state) > 0 and hasattr(__pyx_result, '__dict__'):
 *         __pyx_result.__dict__.update(__pyx_state[0])
 */

  /* function exit code */
  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_5);
  __Pyx_XDECREF(__pyx_t_6);
  __Pyx_XDECREF(__pyx_t_7);
  __Pyx_XDECREF(__pyx_t_8);
  __Pyx_AddTraceback("grpc._cython.cygrpc.__pyx_unpickle_InsecureChannelCredentials__set_state", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = 0;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "(tree fragment)":1
 * def __pyx_unpickle__Tag(__pyx_type, long __pyx_checksum, __pyx_state):             # <<<<<<<<<<<<<<
 *     cdef object __pyx_PickleError
 *     cdef object __pyx_result
 */

/* Python wrapper */
static PyObject *__pyx_pw_4grpc_7_cython_6cygrpc_187__pyx_unpickle__Tag(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
static PyMethodDef __pyx_mdef_4grpc_7_cython_6cygrpc_187__pyx_unpickle__Tag = {"__pyx_unpickle__Tag", (PyCFunction)(void*)(PyCFunctionWithKeywords)__pyx_pw_4grpc_7_cython_6cygrpc_187__pyx_unpickle__Tag, METH_VARARGS|METH_KEYWORDS, 0};
static PyObject *__pyx_pw_4grpc_7_cython_6cygrpc_187__pyx_unpickle__Tag(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
  PyObject *__pyx_v___pyx_type = 0;
  long __pyx_v___pyx_checksum;
  PyObject *__pyx_v___pyx_state = 0;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__pyx_unpickle__Tag (wrapper)", 0);
  {
    static PyObject **__pyx_pyargnames[] = {&__pyx_n_s_pyx_type,&__pyx_n_s_pyx_checksum,&__pyx_n_s_pyx_state,0};
    PyObject* values[3] = {0,0,0};
    if (unlikely(__pyx_kwds)) {
      Py_ssize_t kw_args;
      const Py_ssize_t pos_args = PyTuple_GET_SIZE(__pyx_args);
      switch (pos_args) {
        case  3: values[2] = PyTuple_GET_ITEM(__pyx_args, 2);
        CYTHON_FALLTHROUGH;
        case  2: values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
        CYTHON_FALLTHROUGH;
        case  1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
        CYTHON_FALLTHROUGH;
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      kw_args = PyDict_Size(__pyx_kwds);
      switch (pos_args) {
        case  0:
        if (likely((values[0] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_pyx_type)) != 0)) kw_args--;
        else goto __pyx_L5_argtuple_error;
        CYTHON_FALLTHROUGH;
        case  1:
        if (likely((values[1] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_pyx_checksum)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("__pyx_unpickle__Tag", 1, 3, 3, 1); __PYX_ERR(11, 1, __pyx_L3_error)
        }
        CYTHON_FALLTHROUGH;
        case  2:
        if (likely((values[2] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_pyx_state)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("__pyx_unpickle__Tag", 1, 3, 3, 2); __PYX_ERR(11, 1, __pyx_L3_error)
        }
      }
      if (unlikely(kw_args > 0)) {
        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "__pyx_unpickle__Tag") < 0)) __PYX_ERR(11, 1, __pyx_L3_error)
      }
    } else if (PyTuple_GET_SIZE(__pyx_args) != 3) {
      goto __pyx_L5_argtuple_error;
    } else {
      values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
      values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
      values[2] = PyTuple_GET_ITEM(__pyx_args, 2);
    }
    __pyx_v___pyx_type = values[0];
    __pyx_v___pyx_checksum = __Pyx_PyInt_As_long(values[1]); if (unlikely((__pyx_v___pyx_checksum == (long)-1) && PyErr_Occurred())) __PYX_ERR(11, 1, __pyx_L3_error)
    __pyx_v___pyx_state = values[2];
  }
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("__pyx_unpickle__Tag", 1, 3, 3, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(11, 1, __pyx_L3_error)
  __pyx_L3_error:;
  __Pyx_AddTraceback("grpc._cython.cygrpc.__pyx_unpickle__Tag", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  __pyx_r = __pyx_pf_4grpc_7_cython_6cygrpc_186__pyx_unpickle__Tag(__pyx_self, __pyx_v___pyx_type, __pyx_v___pyx_checksum, __pyx_v___pyx_state);

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_4grpc_7_cython_6cygrpc_186__pyx_unpickle__Tag(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__pyx_v___pyx_type, long __pyx_v___pyx_checksum, PyObject *__pyx_v___pyx_state) {
  PyObject *__pyx_v___pyx_PickleError = 0;
  PyObject *__pyx_v___pyx_result = 0;
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  int __pyx_t_1;
  PyObject *__pyx_t_2 = NULL;
  PyObject *__pyx_t_3 = NULL;
  PyObject *__pyx_t_4 = NULL;
  PyObject *__pyx_t_5 = NULL;
  int __pyx_t_6;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("__pyx_unpickle__Tag", 0);

  /* "(tree fragment)":4
 *     cdef object __pyx_PickleError
 *     cdef object __pyx_result
 *     if __pyx_checksum != 0xd41d8cd:             # <<<<<<<<<<<<<<
 *         from pickle import PickleError as __pyx_PickleError
 *         raise __pyx_PickleError("Incompatible checksums (%s vs 0xd41d8cd = ())" % __pyx_checksum)
 */
  __pyx_t_1 = ((__pyx_v___pyx_checksum != 0xd41d8cd) != 0);
  if (__pyx_t_1) {

    /* "(tree fragment)":5
 *     cdef object __pyx_result
 *     if __pyx_checksum != 0xd41d8cd:
 *         from pickle import PickleError as __pyx_PickleError             # <<<<<<<<<<<<<<
 *         raise __pyx_PickleError("Incompatible checksums (%s vs 0xd41d8cd = ())" % __pyx_checksum)
 *     __pyx_result = _Tag.__new__(__pyx_type)
 */
    __pyx_t_2 = PyList_New(1); if (unlikely(!__pyx_t_2)) __PYX_ERR(11, 5, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_2);
    __Pyx_INCREF(__pyx_n_s_PickleError);
    __Pyx_GIVEREF(__pyx_n_s_PickleError);
    PyList_SET_ITEM(__pyx_t_2, 0, __pyx_n_s_PickleError);
    __pyx_t_3 = __Pyx_Import(__pyx_n_s_pickle, __pyx_t_2, -1); if (unlikely(!__pyx_t_3)) __PYX_ERR(11, 5, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_3);
    __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
    __pyx_t_2 = __Pyx_ImportFrom(__pyx_t_3, __pyx_n_s_PickleError); if (unlikely(!__pyx_t_2)) __PYX_ERR(11, 5, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_2);
    __Pyx_INCREF(__pyx_t_2);
    __pyx_v___pyx_PickleError = __pyx_t_2;
    __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
    __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;

    /* "(tree fragment)":6
 *     if __pyx_checksum != 0xd41d8cd:
 *         from pickle import PickleError as __pyx_PickleError
 *         raise __pyx_PickleError("Incompatible checksums (%s vs 0xd41d8cd = ())" % __pyx_checksum)             # <<<<<<<<<<<<<<
 *     __pyx_result = _Tag.__new__(__pyx_type)
 *     if __pyx_state is not None:
 */
    __pyx_t_2 = __Pyx_PyInt_From_long(__pyx_v___pyx_checksum); if (unlikely(!__pyx_t_2)) __PYX_ERR(11, 6, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_2);
    __pyx_t_4 = __Pyx_PyString_Format(__pyx_kp_s_Incompatible_checksums_s_vs_0xd4, __pyx_t_2); if (unlikely(!__pyx_t_4)) __PYX_ERR(11, 6, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_4);
    __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
    __Pyx_INCREF(__pyx_v___pyx_PickleError);
    __pyx_t_2 = __pyx_v___pyx_PickleError; __pyx_t_5 = NULL;
    if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_2))) {
      __pyx_t_5 = PyMethod_GET_SELF(__pyx_t_2);
      if (likely(__pyx_t_5)) {
        PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_2);
        __Pyx_INCREF(__pyx_t_5);
        __Pyx_INCREF(function);
        __Pyx_DECREF_SET(__pyx_t_2, function);
      }
    }
    __pyx_t_3 = (__pyx_t_5) ? __Pyx_PyObject_Call2Args(__pyx_t_2, __pyx_t_5, __pyx_t_4) : __Pyx_PyObject_CallOneArg(__pyx_t_2, __pyx_t_4);
    __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0;
    __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
    if (unlikely(!__pyx_t_3)) __PYX_ERR(11, 6, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_3);
    __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
    __Pyx_Raise(__pyx_t_3, 0, 0, 0);
    __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
    __PYX_ERR(11, 6, __pyx_L1_error)

    /* "(tree fragment)":4
 *     cdef object __pyx_PickleError
 *     cdef object __pyx_result
 *     if __pyx_checksum != 0xd41d8cd:             # <<<<<<<<<<<<<<
 *         from pickle import PickleError as __pyx_PickleError
 *         raise __pyx_PickleError("Incompatible checksums (%s vs 0xd41d8cd = ())" % __pyx_checksum)
 */
  }

  /* "(tree fragment)":7
 *         from pickle import PickleError as __pyx_PickleError
 *         raise __pyx_PickleError("Incompatible checksums (%s vs 0xd41d8cd = ())" % __pyx_checksum)
 *     __pyx_result = _Tag.__new__(__pyx_type)             # <<<<<<<<<<<<<<
 *     if __pyx_state is not None:
 *         __pyx_unpickle__Tag__set_state(<_Tag> __pyx_result, __pyx_state)
 */
  __pyx_t_2 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_ptype_4grpc_7_cython_6cygrpc__Tag), __pyx_n_s_new); if (unlikely(!__pyx_t_2)) __PYX_ERR(11, 7, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __pyx_t_4 = NULL;
  if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_2))) {
    __pyx_t_4 = PyMethod_GET_SELF(__pyx_t_2);
    if (likely(__pyx_t_4)) {
      PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_2);
      __Pyx_INCREF(__pyx_t_4);
      __Pyx_INCREF(function);
      __Pyx_DECREF_SET(__pyx_t_2, function);
    }
  }
  __pyx_t_3 = (__pyx_t_4) ? __Pyx_PyObject_Call2Args(__pyx_t_2, __pyx_t_4, __pyx_v___pyx_type) : __Pyx_PyObject_CallOneArg(__pyx_t_2, __pyx_v___pyx_type);
  __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0;
  if (unlikely(!__pyx_t_3)) __PYX_ERR(11, 7, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  __pyx_v___pyx_result = __pyx_t_3;
  __pyx_t_3 = 0;

  /* "(tree fragment)":8
 *         raise __pyx_PickleError("Incompatible checksums (%s vs 0xd41d8cd = ())" % __pyx_checksum)
 *     __pyx_result = _Tag.__new__(__pyx_type)
 *     if __pyx_state is not None:             # <<<<<<<<<<<<<<
 *         __pyx_unpickle__Tag__set_state(<_Tag> __pyx_result, __pyx_state)
 *     return __pyx_result
 */
  __pyx_t_1 = (__pyx_v___pyx_state != Py_None);
  __pyx_t_6 = (__pyx_t_1 != 0);
  if (__pyx_t_6) {

    /* "(tree fragment)":9
 *     __pyx_result = _Tag.__new__(__pyx_type)
 *     if __pyx_state is not None:
 *         __pyx_unpickle__Tag__set_state(<_Tag> __pyx_result, __pyx_state)             # <<<<<<<<<<<<<<
 *     return __pyx_result
 * cdef __pyx_unpickle__Tag__set_state(_Tag __pyx_result, tuple __pyx_state):
 */
    if (!(likely(PyTuple_CheckExact(__pyx_v___pyx_state))||((__pyx_v___pyx_state) == Py_None)||(PyErr_Format(PyExc_TypeError, "Expected %.16s, got %.200s", "tuple", Py_TYPE(__pyx_v___pyx_state)->tp_name), 0))) __PYX_ERR(11, 9, __pyx_L1_error)
    __pyx_t_3 = __pyx_f_4grpc_7_cython_6cygrpc___pyx_unpickle__Tag__set_state(((struct __pyx_obj_4grpc_7_cython_6cygrpc__Tag *)__pyx_v___pyx_result), ((PyObject*)__pyx_v___pyx_state)); if (unlikely(!__pyx_t_3)) __PYX_ERR(11, 9, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_3);
    __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;

    /* "(tree fragment)":8
 *         raise __pyx_PickleError("Incompatible checksums (%s vs 0xd41d8cd = ())" % __pyx_checksum)
 *     __pyx_result = _Tag.__new__(__pyx_type)
 *     if __pyx_state is not None:             # <<<<<<<<<<<<<<
 *         __pyx_unpickle__Tag__set_state(<_Tag> __pyx_result, __pyx_state)
 *     return __pyx_result
 */
  }

  /* "(tree fragment)":10
 *     if __pyx_state is not None:
 *         __pyx_unpickle__Tag__set_state(<_Tag> __pyx_result, __pyx_state)
 *     return __pyx_result             # <<<<<<<<<<<<<<
 * cdef __pyx_unpickle__Tag__set_state(_Tag __pyx_result, tuple __pyx_state):
 *     if len(__pyx_state) > 0 and hasattr(__pyx_result, '__dict__'):
 */
  __Pyx_XDECREF(__pyx_r);
  __Pyx_INCREF(__pyx_v___pyx_result);
  __pyx_r = __pyx_v___pyx_result;
  goto __pyx_L0;

  /* "(tree fragment)":1
 * def __pyx_unpickle__Tag(__pyx_type, long __pyx_checksum, __pyx_state):             # <<<<<<<<<<<<<<
 *     cdef object __pyx_PickleError
 *     cdef object __pyx_result
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_XDECREF(__pyx_t_3);
  __Pyx_XDECREF(__pyx_t_4);
  __Pyx_XDECREF(__pyx_t_5);
  __Pyx_AddTraceback("grpc._cython.cygrpc.__pyx_unpickle__Tag", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XDECREF(__pyx_v___pyx_PickleError);
  __Pyx_XDECREF(__pyx_v___pyx_result);
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "(tree fragment)":11
 *         __pyx_unpickle__Tag__set_state(<_Tag> __pyx_result, __pyx_state)
 *     return __pyx_result
 * cdef __pyx_unpickle__Tag__set_state(_Tag __pyx_result, tuple __pyx_state):             # <<<<<<<<<<<<<<
 *     if len(__pyx_state) > 0 and hasattr(__pyx_result, '__dict__'):
 *         __pyx_result.__dict__.update(__pyx_state[0])
 */

static PyObject *__pyx_f_4grpc_7_cython_6cygrpc___pyx_unpickle__Tag__set_state(struct __pyx_obj_4grpc_7_cython_6cygrpc__Tag *__pyx_v___pyx_result, PyObject *__pyx_v___pyx_state) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  int __pyx_t_1;
  Py_ssize_t __pyx_t_2;
  int __pyx_t_3;
  int __pyx_t_4;
  PyObject *__pyx_t_5 = NULL;
  PyObject *__pyx_t_6 = NULL;
  PyObject *__pyx_t_7 = NULL;
  PyObject *__pyx_t_8 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("__pyx_unpickle__Tag__set_state", 0);

  /* "(tree fragment)":12
 *     return __pyx_result
 * cdef __pyx_unpickle__Tag__set_state(_Tag __pyx_result, tuple __pyx_state):
 *     if len(__pyx_state) > 0 and hasattr(__pyx_result, '__dict__'):             # <<<<<<<<<<<<<<
 *         __pyx_result.__dict__.update(__pyx_state[0])
 */
  if (unlikely(__pyx_v___pyx_state == Py_None)) {
    PyErr_SetString(PyExc_TypeError, "object of type 'NoneType' has no len()");
    __PYX_ERR(11, 12, __pyx_L1_error)
  }
  __pyx_t_2 = PyTuple_GET_SIZE(__pyx_v___pyx_state); if (unlikely(__pyx_t_2 == ((Py_ssize_t)-1))) __PYX_ERR(11, 12, __pyx_L1_error)
  __pyx_t_3 = ((__pyx_t_2 > 0) != 0);
  if (__pyx_t_3) {
  } else {
    __pyx_t_1 = __pyx_t_3;
    goto __pyx_L4_bool_binop_done;
  }
  __pyx_t_3 = __Pyx_HasAttr(((PyObject *)__pyx_v___pyx_result), __pyx_n_s_dict); if (unlikely(__pyx_t_3 == ((int)-1))) __PYX_ERR(11, 12, __pyx_L1_error)
  __pyx_t_4 = (__pyx_t_3 != 0);
  __pyx_t_1 = __pyx_t_4;
  __pyx_L4_bool_binop_done:;
  if (__pyx_t_1) {

    /* "(tree fragment)":13
 * cdef __pyx_unpickle__Tag__set_state(_Tag __pyx_result, tuple __pyx_state):
 *     if len(__pyx_state) > 0 and hasattr(__pyx_result, '__dict__'):
 *         __pyx_result.__dict__.update(__pyx_state[0])             # <<<<<<<<<<<<<<
 */
    __pyx_t_6 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v___pyx_result), __pyx_n_s_dict); if (unlikely(!__pyx_t_6)) __PYX_ERR(11, 13, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_6);
    __pyx_t_7 = __Pyx_PyObject_GetAttrStr(__pyx_t_6, __pyx_n_s_update); if (unlikely(!__pyx_t_7)) __PYX_ERR(11, 13, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_7);
    __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
    if (unlikely(__pyx_v___pyx_state == Py_None)) {
      PyErr_SetString(PyExc_TypeError, "'NoneType' object is not subscriptable");
      __PYX_ERR(11, 13, __pyx_L1_error)
    }
    __pyx_t_6 = __Pyx_GetItemInt_Tuple(__pyx_v___pyx_state, 0, long, 1, __Pyx_PyInt_From_long, 0, 0, 1); if (unlikely(!__pyx_t_6)) __PYX_ERR(11, 13, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_6);
    __pyx_t_8 = NULL;
    if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_7))) {
      __pyx_t_8 = PyMethod_GET_SELF(__pyx_t_7);
      if (likely(__pyx_t_8)) {
        PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_7);
        __Pyx_INCREF(__pyx_t_8);
        __Pyx_INCREF(function);
        __Pyx_DECREF_SET(__pyx_t_7, function);
      }
    }
    __pyx_t_5 = (__pyx_t_8) ? __Pyx_PyObject_Call2Args(__pyx_t_7, __pyx_t_8, __pyx_t_6) : __Pyx_PyObject_CallOneArg(__pyx_t_7, __pyx_t_6);
    __Pyx_XDECREF(__pyx_t_8); __pyx_t_8 = 0;
    __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
    if (unlikely(!__pyx_t_5)) __PYX_ERR(11, 13, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_5);
    __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
    __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;

    /* "(tree fragment)":12
 *     return __pyx_result
 * cdef __pyx_unpickle__Tag__set_state(_Tag __pyx_result, tuple __pyx_state):
 *     if len(__pyx_state) > 0 and hasattr(__pyx_result, '__dict__'):             # <<<<<<<<<<<<<<
 *         __pyx_result.__dict__.update(__pyx_state[0])
 */
  }

  /* "(tree fragment)":11
 *         __pyx_unpickle__Tag__set_state(<_Tag> __pyx_result, __pyx_state)
 *     return __pyx_result
 * cdef __pyx_unpickle__Tag__set_state(_Tag __pyx_result, tuple __pyx_state):             # <<<<<<<<<<<<<<
 *     if len(__pyx_state) > 0 and hasattr(__pyx_result, '__dict__'):
 *         __pyx_result.__dict__.update(__pyx_state[0])
 */

  /* function exit code */
  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_5);
  __Pyx_XDECREF(__pyx_t_6);
  __Pyx_XDECREF(__pyx_t_7);
  __Pyx_XDECREF(__pyx_t_8);
  __Pyx_AddTraceback("grpc._cython.cygrpc.__pyx_unpickle__Tag__set_state", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = 0;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "(tree fragment)":1
 * def __pyx_unpickle_CensusContext(__pyx_type, long __pyx_checksum, __pyx_state):             # <<<<<<<<<<<<<<
 *     cdef object __pyx_PickleError
 *     cdef object __pyx_result
 */

/* Python wrapper */
static PyObject *__pyx_pw_4grpc_7_cython_6cygrpc_189__pyx_unpickle_CensusContext(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
static PyMethodDef __pyx_mdef_4grpc_7_cython_6cygrpc_189__pyx_unpickle_CensusContext = {"__pyx_unpickle_CensusContext", (PyCFunction)(void*)(PyCFunctionWithKeywords)__pyx_pw_4grpc_7_cython_6cygrpc_189__pyx_unpickle_CensusContext, METH_VARARGS|METH_KEYWORDS, 0};
static PyObject *__pyx_pw_4grpc_7_cython_6cygrpc_189__pyx_unpickle_CensusContext(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
  PyObject *__pyx_v___pyx_type = 0;
  long __pyx_v___pyx_checksum;
  PyObject *__pyx_v___pyx_state = 0;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__pyx_unpickle_CensusContext (wrapper)", 0);
  {
    static PyObject **__pyx_pyargnames[] = {&__pyx_n_s_pyx_type,&__pyx_n_s_pyx_checksum,&__pyx_n_s_pyx_state,0};
    PyObject* values[3] = {0,0,0};
    if (unlikely(__pyx_kwds)) {
      Py_ssize_t kw_args;
      const Py_ssize_t pos_args = PyTuple_GET_SIZE(__pyx_args);
      switch (pos_args) {
        case  3: values[2] = PyTuple_GET_ITEM(__pyx_args, 2);
        CYTHON_FALLTHROUGH;
        case  2: values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
        CYTHON_FALLTHROUGH;
        case  1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
        CYTHON_FALLTHROUGH;
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      kw_args = PyDict_Size(__pyx_kwds);
      switch (pos_args) {
        case  0:
        if (likely((values[0] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_pyx_type)) != 0)) kw_args--;
        else goto __pyx_L5_argtuple_error;
        CYTHON_FALLTHROUGH;
        case  1:
        if (likely((values[1] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_pyx_checksum)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("__pyx_unpickle_CensusContext", 1, 3, 3, 1); __PYX_ERR(11, 1, __pyx_L3_error)
        }
        CYTHON_FALLTHROUGH;
        case  2:
        if (likely((values[2] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_pyx_state)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("__pyx_unpickle_CensusContext", 1, 3, 3, 2); __PYX_ERR(11, 1, __pyx_L3_error)
        }
      }
      if (unlikely(kw_args > 0)) {
        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "__pyx_unpickle_CensusContext") < 0)) __PYX_ERR(11, 1, __pyx_L3_error)
      }
    } else if (PyTuple_GET_SIZE(__pyx_args) != 3) {
      goto __pyx_L5_argtuple_error;
    } else {
      values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
      values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
      values[2] = PyTuple_GET_ITEM(__pyx_args, 2);
    }
    __pyx_v___pyx_type = values[0];
    __pyx_v___pyx_checksum = __Pyx_PyInt_As_long(values[1]); if (unlikely((__pyx_v___pyx_checksum == (long)-1) && PyErr_Occurred())) __PYX_ERR(11, 1, __pyx_L3_error)
    __pyx_v___pyx_state = values[2];
  }
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("__pyx_unpickle_CensusContext", 1, 3, 3, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(11, 1, __pyx_L3_error)
  __pyx_L3_error:;
  __Pyx_AddTraceback("grpc._cython.cygrpc.__pyx_unpickle_CensusContext", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  __pyx_r = __pyx_pf_4grpc_7_cython_6cygrpc_188__pyx_unpickle_CensusContext(__pyx_self, __pyx_v___pyx_type, __pyx_v___pyx_checksum, __pyx_v___pyx_state);

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_4grpc_7_cython_6cygrpc_188__pyx_unpickle_CensusContext(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__pyx_v___pyx_type, long __pyx_v___pyx_checksum, PyObject *__pyx_v___pyx_state) {
  PyObject *__pyx_v___pyx_PickleError = 0;
  PyObject *__pyx_v___pyx_result = 0;
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  int __pyx_t_1;
  PyObject *__pyx_t_2 = NULL;
  PyObject *__pyx_t_3 = NULL;
  PyObject *__pyx_t_4 = NULL;
  PyObject *__pyx_t_5 = NULL;
  int __pyx_t_6;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("__pyx_unpickle_CensusContext", 0);

  /* "(tree fragment)":4
 *     cdef object __pyx_PickleError
 *     cdef object __pyx_result
 *     if __pyx_checksum != 0xd41d8cd:             # <<<<<<<<<<<<<<
 *         from pickle import PickleError as __pyx_PickleError
 *         raise __pyx_PickleError("Incompatible checksums (%s vs 0xd41d8cd = ())" % __pyx_checksum)
 */
  __pyx_t_1 = ((__pyx_v___pyx_checksum != 0xd41d8cd) != 0);
  if (__pyx_t_1) {

    /* "(tree fragment)":5
 *     cdef object __pyx_result
 *     if __pyx_checksum != 0xd41d8cd:
 *         from pickle import PickleError as __pyx_PickleError             # <<<<<<<<<<<<<<
 *         raise __pyx_PickleError("Incompatible checksums (%s vs 0xd41d8cd = ())" % __pyx_checksum)
 *     __pyx_result = CensusContext.__new__(__pyx_type)
 */
    __pyx_t_2 = PyList_New(1); if (unlikely(!__pyx_t_2)) __PYX_ERR(11, 5, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_2);
    __Pyx_INCREF(__pyx_n_s_PickleError);
    __Pyx_GIVEREF(__pyx_n_s_PickleError);
    PyList_SET_ITEM(__pyx_t_2, 0, __pyx_n_s_PickleError);
    __pyx_t_3 = __Pyx_Import(__pyx_n_s_pickle, __pyx_t_2, -1); if (unlikely(!__pyx_t_3)) __PYX_ERR(11, 5, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_3);
    __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
    __pyx_t_2 = __Pyx_ImportFrom(__pyx_t_3, __pyx_n_s_PickleError); if (unlikely(!__pyx_t_2)) __PYX_ERR(11, 5, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_2);
    __Pyx_INCREF(__pyx_t_2);
    __pyx_v___pyx_PickleError = __pyx_t_2;
    __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
    __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;

    /* "(tree fragment)":6
 *     if __pyx_checksum != 0xd41d8cd:
 *         from pickle import PickleError as __pyx_PickleError
 *         raise __pyx_PickleError("Incompatible checksums (%s vs 0xd41d8cd = ())" % __pyx_checksum)             # <<<<<<<<<<<<<<
 *     __pyx_result = CensusContext.__new__(__pyx_type)
 *     if __pyx_state is not None:
 */
    __pyx_t_2 = __Pyx_PyInt_From_long(__pyx_v___pyx_checksum); if (unlikely(!__pyx_t_2)) __PYX_ERR(11, 6, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_2);
    __pyx_t_4 = __Pyx_PyString_Format(__pyx_kp_s_Incompatible_checksums_s_vs_0xd4, __pyx_t_2); if (unlikely(!__pyx_t_4)) __PYX_ERR(11, 6, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_4);
    __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
    __Pyx_INCREF(__pyx_v___pyx_PickleError);
    __pyx_t_2 = __pyx_v___pyx_PickleError; __pyx_t_5 = NULL;
    if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_2))) {
      __pyx_t_5 = PyMethod_GET_SELF(__pyx_t_2);
      if (likely(__pyx_t_5)) {
        PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_2);
        __Pyx_INCREF(__pyx_t_5);
        __Pyx_INCREF(function);
        __Pyx_DECREF_SET(__pyx_t_2, function);
      }
    }
    __pyx_t_3 = (__pyx_t_5) ? __Pyx_PyObject_Call2Args(__pyx_t_2, __pyx_t_5, __pyx_t_4) : __Pyx_PyObject_CallOneArg(__pyx_t_2, __pyx_t_4);
    __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0;
    __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
    if (unlikely(!__pyx_t_3)) __PYX_ERR(11, 6, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_3);
    __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
    __Pyx_Raise(__pyx_t_3, 0, 0, 0);
    __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
    __PYX_ERR(11, 6, __pyx_L1_error)

    /* "(tree fragment)":4
 *     cdef object __pyx_PickleError
 *     cdef object __pyx_result
 *     if __pyx_checksum != 0xd41d8cd:             # <<<<<<<<<<<<<<
 *         from pickle import PickleError as __pyx_PickleError
 *         raise __pyx_PickleError("Incompatible checksums (%s vs 0xd41d8cd = ())" % __pyx_checksum)
 */
  }

  /* "(tree fragment)":7
 *         from pickle import PickleError as __pyx_PickleError
 *         raise __pyx_PickleError("Incompatible checksums (%s vs 0xd41d8cd = ())" % __pyx_checksum)
 *     __pyx_result = CensusContext.__new__(__pyx_type)             # <<<<<<<<<<<<<<
 *     if __pyx_state is not None:
 *         __pyx_unpickle_CensusContext__set_state(<CensusContext> __pyx_result, __pyx_state)
 */
  __pyx_t_2 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_ptype_4grpc_7_cython_6cygrpc_CensusContext), __pyx_n_s_new); if (unlikely(!__pyx_t_2)) __PYX_ERR(11, 7, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __pyx_t_4 = NULL;
  if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_2))) {
    __pyx_t_4 = PyMethod_GET_SELF(__pyx_t_2);
    if (likely(__pyx_t_4)) {
      PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_2);
      __Pyx_INCREF(__pyx_t_4);
      __Pyx_INCREF(function);
      __Pyx_DECREF_SET(__pyx_t_2, function);
    }
  }
  __pyx_t_3 = (__pyx_t_4) ? __Pyx_PyObject_Call2Args(__pyx_t_2, __pyx_t_4, __pyx_v___pyx_type) : __Pyx_PyObject_CallOneArg(__pyx_t_2, __pyx_v___pyx_type);
  __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0;
  if (unlikely(!__pyx_t_3)) __PYX_ERR(11, 7, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  __pyx_v___pyx_result = __pyx_t_3;
  __pyx_t_3 = 0;

  /* "(tree fragment)":8
 *         raise __pyx_PickleError("Incompatible checksums (%s vs 0xd41d8cd = ())" % __pyx_checksum)
 *     __pyx_result = CensusContext.__new__(__pyx_type)
 *     if __pyx_state is not None:             # <<<<<<<<<<<<<<
 *         __pyx_unpickle_CensusContext__set_state(<CensusContext> __pyx_result, __pyx_state)
 *     return __pyx_result
 */
  __pyx_t_1 = (__pyx_v___pyx_state != Py_None);
  __pyx_t_6 = (__pyx_t_1 != 0);
  if (__pyx_t_6) {

    /* "(tree fragment)":9
 *     __pyx_result = CensusContext.__new__(__pyx_type)
 *     if __pyx_state is not None:
 *         __pyx_unpickle_CensusContext__set_state(<CensusContext> __pyx_result, __pyx_state)             # <<<<<<<<<<<<<<
 *     return __pyx_result
 * cdef __pyx_unpickle_CensusContext__set_state(CensusContext __pyx_result, tuple __pyx_state):
 */
    if (!(likely(PyTuple_CheckExact(__pyx_v___pyx_state))||((__pyx_v___pyx_state) == Py_None)||(PyErr_Format(PyExc_TypeError, "Expected %.16s, got %.200s", "tuple", Py_TYPE(__pyx_v___pyx_state)->tp_name), 0))) __PYX_ERR(11, 9, __pyx_L1_error)
    __pyx_t_3 = __pyx_f_4grpc_7_cython_6cygrpc___pyx_unpickle_CensusContext__set_state(((struct __pyx_obj_4grpc_7_cython_6cygrpc_CensusContext *)__pyx_v___pyx_result), ((PyObject*)__pyx_v___pyx_state)); if (unlikely(!__pyx_t_3)) __PYX_ERR(11, 9, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_3);
    __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;

    /* "(tree fragment)":8
 *         raise __pyx_PickleError("Incompatible checksums (%s vs 0xd41d8cd = ())" % __pyx_checksum)
 *     __pyx_result = CensusContext.__new__(__pyx_type)
 *     if __pyx_state is not None:             # <<<<<<<<<<<<<<
 *         __pyx_unpickle_CensusContext__set_state(<CensusContext> __pyx_result, __pyx_state)
 *     return __pyx_result
 */
  }

  /* "(tree fragment)":10
 *     if __pyx_state is not None:
 *         __pyx_unpickle_CensusContext__set_state(<CensusContext> __pyx_result, __pyx_state)
 *     return __pyx_result             # <<<<<<<<<<<<<<
 * cdef __pyx_unpickle_CensusContext__set_state(CensusContext __pyx_result, tuple __pyx_state):
 *     if len(__pyx_state) > 0 and hasattr(__pyx_result, '__dict__'):
 */
  __Pyx_XDECREF(__pyx_r);
  __Pyx_INCREF(__pyx_v___pyx_result);
  __pyx_r = __pyx_v___pyx_result;
  goto __pyx_L0;

  /* "(tree fragment)":1
 * def __pyx_unpickle_CensusContext(__pyx_type, long __pyx_checksum, __pyx_state):             # <<<<<<<<<<<<<<
 *     cdef object __pyx_PickleError
 *     cdef object __pyx_result
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_XDECREF(__pyx_t_3);
  __Pyx_XDECREF(__pyx_t_4);
  __Pyx_XDECREF(__pyx_t_5);
  __Pyx_AddTraceback("grpc._cython.cygrpc.__pyx_unpickle_CensusContext", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XDECREF(__pyx_v___pyx_PickleError);
  __Pyx_XDECREF(__pyx_v___pyx_result);
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "(tree fragment)":11
 *         __pyx_unpickle_CensusContext__set_state(<CensusContext> __pyx_result, __pyx_state)
 *     return __pyx_result
 * cdef __pyx_unpickle_CensusContext__set_state(CensusContext __pyx_result, tuple __pyx_state):             # <<<<<<<<<<<<<<
 *     if len(__pyx_state) > 0 and hasattr(__pyx_result, '__dict__'):
 *         __pyx_result.__dict__.update(__pyx_state[0])
 */

static PyObject *__pyx_f_4grpc_7_cython_6cygrpc___pyx_unpickle_CensusContext__set_state(struct __pyx_obj_4grpc_7_cython_6cygrpc_CensusContext *__pyx_v___pyx_result, PyObject *__pyx_v___pyx_state) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  int __pyx_t_1;
  Py_ssize_t __pyx_t_2;
  int __pyx_t_3;
  int __pyx_t_4;
  PyObject *__pyx_t_5 = NULL;
  PyObject *__pyx_t_6 = NULL;
  PyObject *__pyx_t_7 = NULL;
  PyObject *__pyx_t_8 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("__pyx_unpickle_CensusContext__set_state", 0);

  /* "(tree fragment)":12
 *     return __pyx_result
 * cdef __pyx_unpickle_CensusContext__set_state(CensusContext __pyx_result, tuple __pyx_state):
 *     if len(__pyx_state) > 0 and hasattr(__pyx_result, '__dict__'):             # <<<<<<<<<<<<<<
 *         __pyx_result.__dict__.update(__pyx_state[0])
 */
  if (unlikely(__pyx_v___pyx_state == Py_None)) {
    PyErr_SetString(PyExc_TypeError, "object of type 'NoneType' has no len()");
    __PYX_ERR(11, 12, __pyx_L1_error)
  }
  __pyx_t_2 = PyTuple_GET_SIZE(__pyx_v___pyx_state); if (unlikely(__pyx_t_2 == ((Py_ssize_t)-1))) __PYX_ERR(11, 12, __pyx_L1_error)
  __pyx_t_3 = ((__pyx_t_2 > 0) != 0);
  if (__pyx_t_3) {
  } else {
    __pyx_t_1 = __pyx_t_3;
    goto __pyx_L4_bool_binop_done;
  }
  __pyx_t_3 = __Pyx_HasAttr(((PyObject *)__pyx_v___pyx_result), __pyx_n_s_dict); if (unlikely(__pyx_t_3 == ((int)-1))) __PYX_ERR(11, 12, __pyx_L1_error)
  __pyx_t_4 = (__pyx_t_3 != 0);
  __pyx_t_1 = __pyx_t_4;
  __pyx_L4_bool_binop_done:;
  if (__pyx_t_1) {

    /* "(tree fragment)":13
 * cdef __pyx_unpickle_CensusContext__set_state(CensusContext __pyx_result, tuple __pyx_state):
 *     if len(__pyx_state) > 0 and hasattr(__pyx_result, '__dict__'):
 *         __pyx_result.__dict__.update(__pyx_state[0])             # <<<<<<<<<<<<<<
 */
    __pyx_t_6 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v___pyx_result), __pyx_n_s_dict); if (unlikely(!__pyx_t_6)) __PYX_ERR(11, 13, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_6);
    __pyx_t_7 = __Pyx_PyObject_GetAttrStr(__pyx_t_6, __pyx_n_s_update); if (unlikely(!__pyx_t_7)) __PYX_ERR(11, 13, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_7);
    __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
    if (unlikely(__pyx_v___pyx_state == Py_None)) {
      PyErr_SetString(PyExc_TypeError, "'NoneType' object is not subscriptable");
      __PYX_ERR(11, 13, __pyx_L1_error)
    }
    __pyx_t_6 = __Pyx_GetItemInt_Tuple(__pyx_v___pyx_state, 0, long, 1, __Pyx_PyInt_From_long, 0, 0, 1); if (unlikely(!__pyx_t_6)) __PYX_ERR(11, 13, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_6);
    __pyx_t_8 = NULL;
    if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_7))) {
      __pyx_t_8 = PyMethod_GET_SELF(__pyx_t_7);
      if (likely(__pyx_t_8)) {
        PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_7);
        __Pyx_INCREF(__pyx_t_8);
        __Pyx_INCREF(function);
        __Pyx_DECREF_SET(__pyx_t_7, function);
      }
    }
    __pyx_t_5 = (__pyx_t_8) ? __Pyx_PyObject_Call2Args(__pyx_t_7, __pyx_t_8, __pyx_t_6) : __Pyx_PyObject_CallOneArg(__pyx_t_7, __pyx_t_6);
    __Pyx_XDECREF(__pyx_t_8); __pyx_t_8 = 0;
    __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
    if (unlikely(!__pyx_t_5)) __PYX_ERR(11, 13, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_5);
    __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
    __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;

    /* "(tree fragment)":12
 *     return __pyx_result
 * cdef __pyx_unpickle_CensusContext__set_state(CensusContext __pyx_result, tuple __pyx_state):
 *     if len(__pyx_state) > 0 and hasattr(__pyx_result, '__dict__'):             # <<<<<<<<<<<<<<
 *         __pyx_result.__dict__.update(__pyx_state[0])
 */
  }

  /* "(tree fragment)":11
 *         __pyx_unpickle_CensusContext__set_state(<CensusContext> __pyx_result, __pyx_state)
 *     return __pyx_result
 * cdef __pyx_unpickle_CensusContext__set_state(CensusContext __pyx_result, tuple __pyx_state):             # <<<<<<<<<<<<<<
 *     if len(__pyx_state) > 0 and hasattr(__pyx_result, '__dict__'):
 *         __pyx_result.__dict__.update(__pyx_state[0])
 */

  /* function exit code */
  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_5);
  __Pyx_XDECREF(__pyx_t_6);
  __Pyx_XDECREF(__pyx_t_7);
  __Pyx_XDECREF(__pyx_t_8);
  __Pyx_AddTraceback("grpc._cython.cygrpc.__pyx_unpickle_CensusContext__set_state", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = 0;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "(tree fragment)":1
 * def __pyx_unpickle_AioServer(__pyx_type, long __pyx_checksum, __pyx_state):             # <<<<<<<<<<<<<<
 *     cdef object __pyx_PickleError
 *     cdef object __pyx_result
 */

/* Python wrapper */
static PyObject *__pyx_pw_4grpc_7_cython_6cygrpc_191__pyx_unpickle_AioServer(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
static PyMethodDef __pyx_mdef_4grpc_7_cython_6cygrpc_191__pyx_unpickle_AioServer = {"__pyx_unpickle_AioServer", (PyCFunction)(void*)(PyCFunctionWithKeywords)__pyx_pw_4grpc_7_cython_6cygrpc_191__pyx_unpickle_AioServer, METH_VARARGS|METH_KEYWORDS, 0};
static PyObject *__pyx_pw_4grpc_7_cython_6cygrpc_191__pyx_unpickle_AioServer(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
  PyObject *__pyx_v___pyx_type = 0;
  long __pyx_v___pyx_checksum;
  PyObject *__pyx_v___pyx_state = 0;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__pyx_unpickle_AioServer (wrapper)", 0);
  {
    static PyObject **__pyx_pyargnames[] = {&__pyx_n_s_pyx_type,&__pyx_n_s_pyx_checksum,&__pyx_n_s_pyx_state,0};
    PyObject* values[3] = {0,0,0};
    if (unlikely(__pyx_kwds)) {
      Py_ssize_t kw_args;
      const Py_ssize_t pos_args = PyTuple_GET_SIZE(__pyx_args);
      switch (pos_args) {
        case  3: values[2] = PyTuple_GET_ITEM(__pyx_args, 2);
        CYTHON_FALLTHROUGH;
        case  2: values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
        CYTHON_FALLTHROUGH;
        case  1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
        CYTHON_FALLTHROUGH;
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      kw_args = PyDict_Size(__pyx_kwds);
      switch (pos_args) {
        case  0:
        if (likely((values[0] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_pyx_type)) != 0)) kw_args--;
        else goto __pyx_L5_argtuple_error;
        CYTHON_FALLTHROUGH;
        case  1:
        if (likely((values[1] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_pyx_checksum)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("__pyx_unpickle_AioServer", 1, 3, 3, 1); __PYX_ERR(11, 1, __pyx_L3_error)
        }
        CYTHON_FALLTHROUGH;
        case  2:
        if (likely((values[2] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_pyx_state)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("__pyx_unpickle_AioServer", 1, 3, 3, 2); __PYX_ERR(11, 1, __pyx_L3_error)
        }
      }
      if (unlikely(kw_args > 0)) {
        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "__pyx_unpickle_AioServer") < 0)) __PYX_ERR(11, 1, __pyx_L3_error)
      }
    } else if (PyTuple_GET_SIZE(__pyx_args) != 3) {
      goto __pyx_L5_argtuple_error;
    } else {
      values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
      values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
      values[2] = PyTuple_GET_ITEM(__pyx_args, 2);
    }
    __pyx_v___pyx_type = values[0];
    __pyx_v___pyx_checksum = __Pyx_PyInt_As_long(values[1]); if (unlikely((__pyx_v___pyx_checksum == (long)-1) && PyErr_Occurred())) __PYX_ERR(11, 1, __pyx_L3_error)
    __pyx_v___pyx_state = values[2];
  }
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("__pyx_unpickle_AioServer", 1, 3, 3, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(11, 1, __pyx_L3_error)
  __pyx_L3_error:;
  __Pyx_AddTraceback("grpc._cython.cygrpc.__pyx_unpickle_AioServer", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  __pyx_r = __pyx_pf_4grpc_7_cython_6cygrpc_190__pyx_unpickle_AioServer(__pyx_self, __pyx_v___pyx_type, __pyx_v___pyx_checksum, __pyx_v___pyx_state);

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_4grpc_7_cython_6cygrpc_190__pyx_unpickle_AioServer(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__pyx_v___pyx_type, long __pyx_v___pyx_checksum, PyObject *__pyx_v___pyx_state) {
  PyObject *__pyx_v___pyx_PickleError = 0;
  PyObject *__pyx_v___pyx_result = 0;
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  int __pyx_t_1;
  PyObject *__pyx_t_2 = NULL;
  PyObject *__pyx_t_3 = NULL;
  PyObject *__pyx_t_4 = NULL;
  PyObject *__pyx_t_5 = NULL;
  int __pyx_t_6;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("__pyx_unpickle_AioServer", 0);

  /* "(tree fragment)":4
 *     cdef object __pyx_PickleError
 *     cdef object __pyx_result
 *     if __pyx_checksum != 0xa3714dd:             # <<<<<<<<<<<<<<
 *         from pickle import PickleError as __pyx_PickleError
 *         raise __pyx_PickleError("Incompatible checksums (%s vs 0xa3714dd = (_crash_exception, _generic_handlers, _interceptors, _limiter, _loop, _server, _serving_task, _shutdown_callback_wrapper, _shutdown_completed, _shutdown_lock, _status, _thread_pool))" % __pyx_checksum)
 */
  __pyx_t_1 = ((__pyx_v___pyx_checksum != 0xa3714dd) != 0);
  if (__pyx_t_1) {

    /* "(tree fragment)":5
 *     cdef object __pyx_result
 *     if __pyx_checksum != 0xa3714dd:
 *         from pickle import PickleError as __pyx_PickleError             # <<<<<<<<<<<<<<
 *         raise __pyx_PickleError("Incompatible checksums (%s vs 0xa3714dd = (_crash_exception, _generic_handlers, _interceptors, _limiter, _loop, _server, _serving_task, _shutdown_callback_wrapper, _shutdown_completed, _shutdown_lock, _status, _thread_pool))" % __pyx_checksum)
 *     __pyx_result = AioServer.__new__(__pyx_type)
 */
    __pyx_t_2 = PyList_New(1); if (unlikely(!__pyx_t_2)) __PYX_ERR(11, 5, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_2);
    __Pyx_INCREF(__pyx_n_s_PickleError);
    __Pyx_GIVEREF(__pyx_n_s_PickleError);
    PyList_SET_ITEM(__pyx_t_2, 0, __pyx_n_s_PickleError);
    __pyx_t_3 = __Pyx_Import(__pyx_n_s_pickle, __pyx_t_2, -1); if (unlikely(!__pyx_t_3)) __PYX_ERR(11, 5, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_3);
    __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
    __pyx_t_2 = __Pyx_ImportFrom(__pyx_t_3, __pyx_n_s_PickleError); if (unlikely(!__pyx_t_2)) __PYX_ERR(11, 5, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_2);
    __Pyx_INCREF(__pyx_t_2);
    __pyx_v___pyx_PickleError = __pyx_t_2;
    __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
    __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;

    /* "(tree fragment)":6
 *     if __pyx_checksum != 0xa3714dd:
 *         from pickle import PickleError as __pyx_PickleError
 *         raise __pyx_PickleError("Incompatible checksums (%s vs 0xa3714dd = (_crash_exception, _generic_handlers, _interceptors, _limiter, _loop, _server, _serving_task, _shutdown_callback_wrapper, _shutdown_completed, _shutdown_lock, _status, _thread_pool))" % __pyx_checksum)             # <<<<<<<<<<<<<<
 *     __pyx_result = AioServer.__new__(__pyx_type)
 *     if __pyx_state is not None:
 */
    __pyx_t_2 = __Pyx_PyInt_From_long(__pyx_v___pyx_checksum); if (unlikely(!__pyx_t_2)) __PYX_ERR(11, 6, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_2);
    __pyx_t_4 = __Pyx_PyString_Format(__pyx_kp_s_Incompatible_checksums_s_vs_0xa3, __pyx_t_2); if (unlikely(!__pyx_t_4)) __PYX_ERR(11, 6, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_4);
    __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
    __Pyx_INCREF(__pyx_v___pyx_PickleError);
    __pyx_t_2 = __pyx_v___pyx_PickleError; __pyx_t_5 = NULL;
    if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_2))) {
      __pyx_t_5 = PyMethod_GET_SELF(__pyx_t_2);
      if (likely(__pyx_t_5)) {
        PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_2);
        __Pyx_INCREF(__pyx_t_5);
        __Pyx_INCREF(function);
        __Pyx_DECREF_SET(__pyx_t_2, function);
      }
    }
    __pyx_t_3 = (__pyx_t_5) ? __Pyx_PyObject_Call2Args(__pyx_t_2, __pyx_t_5, __pyx_t_4) : __Pyx_PyObject_CallOneArg(__pyx_t_2, __pyx_t_4);
    __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0;
    __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
    if (unlikely(!__pyx_t_3)) __PYX_ERR(11, 6, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_3);
    __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
    __Pyx_Raise(__pyx_t_3, 0, 0, 0);
    __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
    __PYX_ERR(11, 6, __pyx_L1_error)

    /* "(tree fragment)":4
 *     cdef object __pyx_PickleError
 *     cdef object __pyx_result
 *     if __pyx_checksum != 0xa3714dd:             # <<<<<<<<<<<<<<
 *         from pickle import PickleError as __pyx_PickleError
 *         raise __pyx_PickleError("Incompatible checksums (%s vs 0xa3714dd = (_crash_exception, _generic_handlers, _interceptors, _limiter, _loop, _server, _serving_task, _shutdown_callback_wrapper, _shutdown_completed, _shutdown_lock, _status, _thread_pool))" % __pyx_checksum)
 */
  }

  /* "(tree fragment)":7
 *         from pickle import PickleError as __pyx_PickleError
 *         raise __pyx_PickleError("Incompatible checksums (%s vs 0xa3714dd = (_crash_exception, _generic_handlers, _interceptors, _limiter, _loop, _server, _serving_task, _shutdown_callback_wrapper, _shutdown_completed, _shutdown_lock, _status, _thread_pool))" % __pyx_checksum)
 *     __pyx_result = AioServer.__new__(__pyx_type)             # <<<<<<<<<<<<<<
 *     if __pyx_state is not None:
 *         __pyx_unpickle_AioServer__set_state(<AioServer> __pyx_result, __pyx_state)
 */
  __pyx_t_2 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_ptype_4grpc_7_cython_6cygrpc_AioServer), __pyx_n_s_new); if (unlikely(!__pyx_t_2)) __PYX_ERR(11, 7, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __pyx_t_4 = NULL;
  if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_2))) {
    __pyx_t_4 = PyMethod_GET_SELF(__pyx_t_2);
    if (likely(__pyx_t_4)) {
      PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_2);
      __Pyx_INCREF(__pyx_t_4);
      __Pyx_INCREF(function);
      __Pyx_DECREF_SET(__pyx_t_2, function);
    }
  }
  __pyx_t_3 = (__pyx_t_4) ? __Pyx_PyObject_Call2Args(__pyx_t_2, __pyx_t_4, __pyx_v___pyx_type) : __Pyx_PyObject_CallOneArg(__pyx_t_2, __pyx_v___pyx_type);
  __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0;
  if (unlikely(!__pyx_t_3)) __PYX_ERR(11, 7, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  __pyx_v___pyx_result = __pyx_t_3;
  __pyx_t_3 = 0;

  /* "(tree fragment)":8
 *         raise __pyx_PickleError("Incompatible checksums (%s vs 0xa3714dd = (_crash_exception, _generic_handlers, _interceptors, _limiter, _loop, _server, _serving_task, _shutdown_callback_wrapper, _shutdown_completed, _shutdown_lock, _status, _thread_pool))" % __pyx_checksum)
 *     __pyx_result = AioServer.__new__(__pyx_type)
 *     if __pyx_state is not None:             # <<<<<<<<<<<<<<
 *         __pyx_unpickle_AioServer__set_state(<AioServer> __pyx_result, __pyx_state)
 *     return __pyx_result
 */
  __pyx_t_1 = (__pyx_v___pyx_state != Py_None);
  __pyx_t_6 = (__pyx_t_1 != 0);
  if (__pyx_t_6) {

    /* "(tree fragment)":9
 *     __pyx_result = AioServer.__new__(__pyx_type)
 *     if __pyx_state is not None:
 *         __pyx_unpickle_AioServer__set_state(<AioServer> __pyx_result, __pyx_state)             # <<<<<<<<<<<<<<
 *     return __pyx_result
 * cdef __pyx_unpickle_AioServer__set_state(AioServer __pyx_result, tuple __pyx_state):
 */
    if (!(likely(PyTuple_CheckExact(__pyx_v___pyx_state))||((__pyx_v___pyx_state) == Py_None)||(PyErr_Format(PyExc_TypeError, "Expected %.16s, got %.200s", "tuple", Py_TYPE(__pyx_v___pyx_state)->tp_name), 0))) __PYX_ERR(11, 9, __pyx_L1_error)
    __pyx_t_3 = __pyx_f_4grpc_7_cython_6cygrpc___pyx_unpickle_AioServer__set_state(((struct __pyx_obj_4grpc_7_cython_6cygrpc_AioServer *)__pyx_v___pyx_result), ((PyObject*)__pyx_v___pyx_state)); if (unlikely(!__pyx_t_3)) __PYX_ERR(11, 9, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_3);
    __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;

    /* "(tree fragment)":8
 *         raise __pyx_PickleError("Incompatible checksums (%s vs 0xa3714dd = (_crash_exception, _generic_handlers, _interceptors, _limiter, _loop, _server, _serving_task, _shutdown_callback_wrapper, _shutdown_completed, _shutdown_lock, _status, _thread_pool))" % __pyx_checksum)
 *     __pyx_result = AioServer.__new__(__pyx_type)
 *     if __pyx_state is not None:             # <<<<<<<<<<<<<<
 *         __pyx_unpickle_AioServer__set_state(<AioServer> __pyx_result, __pyx_state)
 *     return __pyx_result
 */
  }

  /* "(tree fragment)":10
 *     if __pyx_state is not None:
 *         __pyx_unpickle_AioServer__set_state(<AioServer> __pyx_result, __pyx_state)
 *     return __pyx_result             # <<<<<<<<<<<<<<
 * cdef __pyx_unpickle_AioServer__set_state(AioServer __pyx_result, tuple __pyx_state):
 *     __pyx_result._crash_exception = __pyx_state[0]; __pyx_result._generic_handlers = __pyx_state[1]; __pyx_result._interceptors = __pyx_state[2]; __pyx_result._limiter = __pyx_state[3]; __pyx_result._loop = __pyx_state[4]; __pyx_result._server = __pyx_state[5]; __pyx_result._serving_task = __pyx_state[6]; __pyx_result._shutdown_callback_wrapper = __pyx_state[7]; __pyx_result._shutdown_completed = __pyx_state[8]; __pyx_result._shutdown_lock = __pyx_state[9]; __pyx_result._status = __pyx_state[10]; __pyx_result._thread_pool = __pyx_state[11]
 */
  __Pyx_XDECREF(__pyx_r);
  __Pyx_INCREF(__pyx_v___pyx_result);
  __pyx_r = __pyx_v___pyx_result;
  goto __pyx_L0;

  /* "(tree fragment)":1
 * def __pyx_unpickle_AioServer(__pyx_type, long __pyx_checksum, __pyx_state):             # <<<<<<<<<<<<<<
 *     cdef object __pyx_PickleError
 *     cdef object __pyx_result
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_XDECREF(__pyx_t_3);
  __Pyx_XDECREF(__pyx_t_4);
  __Pyx_XDECREF(__pyx_t_5);
  __Pyx_AddTraceback("grpc._cython.cygrpc.__pyx_unpickle_AioServer", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XDECREF(__pyx_v___pyx_PickleError);
  __Pyx_XDECREF(__pyx_v___pyx_result);
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "(tree fragment)":11
 *         __pyx_unpickle_AioServer__set_state(<AioServer> __pyx_result, __pyx_state)
 *     return __pyx_result
 * cdef __pyx_unpickle_AioServer__set_state(AioServer __pyx_result, tuple __pyx_state):             # <<<<<<<<<<<<<<
 *     __pyx_result._crash_exception = __pyx_state[0]; __pyx_result._generic_handlers = __pyx_state[1]; __pyx_result._interceptors = __pyx_state[2]; __pyx_result._limiter = __pyx_state[3]; __pyx_result._loop = __pyx_state[4]; __pyx_result._server = __pyx_state[5]; __pyx_result._serving_task = __pyx_state[6]; __pyx_result._shutdown_callback_wrapper = __pyx_state[7]; __pyx_result._shutdown_completed = __pyx_state[8]; __pyx_result._shutdown_lock = __pyx_state[9]; __pyx_result._status = __pyx_state[10]; __pyx_result._thread_pool = __pyx_state[11]
 *     if len(__pyx_state) > 12 and hasattr(__pyx_result, '__dict__'):
 */

static PyObject *__pyx_f_4grpc_7_cython_6cygrpc___pyx_unpickle_AioServer__set_state(struct __pyx_obj_4grpc_7_cython_6cygrpc_AioServer *__pyx_v___pyx_result, PyObject *__pyx_v___pyx_state) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  enum __pyx_t_4grpc_7_cython_6cygrpc_AioServerStatus __pyx_t_2;
  int __pyx_t_3;
  Py_ssize_t __pyx_t_4;
  int __pyx_t_5;
  int __pyx_t_6;
  PyObject *__pyx_t_7 = NULL;
  PyObject *__pyx_t_8 = NULL;
  PyObject *__pyx_t_9 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("__pyx_unpickle_AioServer__set_state", 0);

  /* "(tree fragment)":12
 *     return __pyx_result
 * cdef __pyx_unpickle_AioServer__set_state(AioServer __pyx_result, tuple __pyx_state):
 *     __pyx_result._crash_exception = __pyx_state[0]; __pyx_result._generic_handlers = __pyx_state[1]; __pyx_result._interceptors = __pyx_state[2]; __pyx_result._limiter = __pyx_state[3]; __pyx_result._loop = __pyx_state[4]; __pyx_result._server = __pyx_state[5]; __pyx_result._serving_task = __pyx_state[6]; __pyx_result._shutdown_callback_wrapper = __pyx_state[7]; __pyx_result._shutdown_completed = __pyx_state[8]; __pyx_result._shutdown_lock = __pyx_state[9]; __pyx_result._status = __pyx_state[10]; __pyx_result._thread_pool = __pyx_state[11]             # <<<<<<<<<<<<<<
 *     if len(__pyx_state) > 12 and hasattr(__pyx_result, '__dict__'):
 *         __pyx_result.__dict__.update(__pyx_state[12])
 */
  if (unlikely(__pyx_v___pyx_state == Py_None)) {
    PyErr_SetString(PyExc_TypeError, "'NoneType' object is not subscriptable");
    __PYX_ERR(11, 12, __pyx_L1_error)
  }
  __pyx_t_1 = __Pyx_GetItemInt_Tuple(__pyx_v___pyx_state, 0, long, 1, __Pyx_PyInt_From_long, 0, 0, 1); if (unlikely(!__pyx_t_1)) __PYX_ERR(11, 12, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_GIVEREF(__pyx_t_1);
  __Pyx_GOTREF(__pyx_v___pyx_result->_crash_exception);
  __Pyx_DECREF(__pyx_v___pyx_result->_crash_exception);
  __pyx_v___pyx_result->_crash_exception = __pyx_t_1;
  __pyx_t_1 = 0;
  if (unlikely(__pyx_v___pyx_state == Py_None)) {
    PyErr_SetString(PyExc_TypeError, "'NoneType' object is not subscriptable");
    __PYX_ERR(11, 12, __pyx_L1_error)
  }
  __pyx_t_1 = __Pyx_GetItemInt_Tuple(__pyx_v___pyx_state, 1, long, 1, __Pyx_PyInt_From_long, 0, 0, 1); if (unlikely(!__pyx_t_1)) __PYX_ERR(11, 12, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  if (!(likely(PyList_CheckExact(__pyx_t_1))||((__pyx_t_1) == Py_None)||(PyErr_Format(PyExc_TypeError, "Expected %.16s, got %.200s", "list", Py_TYPE(__pyx_t_1)->tp_name), 0))) __PYX_ERR(11, 12, __pyx_L1_error)
  __Pyx_GIVEREF(__pyx_t_1);
  __Pyx_GOTREF(__pyx_v___pyx_result->_generic_handlers);
  __Pyx_DECREF(__pyx_v___pyx_result->_generic_handlers);
  __pyx_v___pyx_result->_generic_handlers = ((PyObject*)__pyx_t_1);
  __pyx_t_1 = 0;
  if (unlikely(__pyx_v___pyx_state == Py_None)) {
    PyErr_SetString(PyExc_TypeError, "'NoneType' object is not subscriptable");
    __PYX_ERR(11, 12, __pyx_L1_error)
  }
  __pyx_t_1 = __Pyx_GetItemInt_Tuple(__pyx_v___pyx_state, 2, long, 1, __Pyx_PyInt_From_long, 0, 0, 1); if (unlikely(!__pyx_t_1)) __PYX_ERR(11, 12, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  if (!(likely(PyTuple_CheckExact(__pyx_t_1))||((__pyx_t_1) == Py_None)||(PyErr_Format(PyExc_TypeError, "Expected %.16s, got %.200s", "tuple", Py_TYPE(__pyx_t_1)->tp_name), 0))) __PYX_ERR(11, 12, __pyx_L1_error)
  __Pyx_GIVEREF(__pyx_t_1);
  __Pyx_GOTREF(__pyx_v___pyx_result->_interceptors);
  __Pyx_DECREF(__pyx_v___pyx_result->_interceptors);
  __pyx_v___pyx_result->_interceptors = ((PyObject*)__pyx_t_1);
  __pyx_t_1 = 0;
  if (unlikely(__pyx_v___pyx_state == Py_None)) {
    PyErr_SetString(PyExc_TypeError, "'NoneType' object is not subscriptable");
    __PYX_ERR(11, 12, __pyx_L1_error)
  }
  __pyx_t_1 = __Pyx_GetItemInt_Tuple(__pyx_v___pyx_state, 3, long, 1, __Pyx_PyInt_From_long, 0, 0, 1); if (unlikely(!__pyx_t_1)) __PYX_ERR(11, 12, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  if (!(likely(((__pyx_t_1) == Py_None) || likely(__Pyx_TypeTest(__pyx_t_1, __pyx_ptype_4grpc_7_cython_6cygrpc__ConcurrentRpcLimiter))))) __PYX_ERR(11, 12, __pyx_L1_error)
  __Pyx_GIVEREF(__pyx_t_1);
  __Pyx_GOTREF(__pyx_v___pyx_result->_limiter);
  __Pyx_DECREF(((PyObject *)__pyx_v___pyx_result->_limiter));
  __pyx_v___pyx_result->_limiter = ((struct __pyx_obj_4grpc_7_cython_6cygrpc__ConcurrentRpcLimiter *)__pyx_t_1);
  __pyx_t_1 = 0;
  if (unlikely(__pyx_v___pyx_state == Py_None)) {
    PyErr_SetString(PyExc_TypeError, "'NoneType' object is not subscriptable");
    __PYX_ERR(11, 12, __pyx_L1_error)
  }
  __pyx_t_1 = __Pyx_GetItemInt_Tuple(__pyx_v___pyx_state, 4, long, 1, __Pyx_PyInt_From_long, 0, 0, 1); if (unlikely(!__pyx_t_1)) __PYX_ERR(11, 12, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_GIVEREF(__pyx_t_1);
  __Pyx_GOTREF(__pyx_v___pyx_result->_loop);
  __Pyx_DECREF(__pyx_v___pyx_result->_loop);
  __pyx_v___pyx_result->_loop = __pyx_t_1;
  __pyx_t_1 = 0;
  if (unlikely(__pyx_v___pyx_state == Py_None)) {
    PyErr_SetString(PyExc_TypeError, "'NoneType' object is not subscriptable");
    __PYX_ERR(11, 12, __pyx_L1_error)
  }
  __pyx_t_1 = __Pyx_GetItemInt_Tuple(__pyx_v___pyx_state, 5, long, 1, __Pyx_PyInt_From_long, 0, 0, 1); if (unlikely(!__pyx_t_1)) __PYX_ERR(11, 12, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  if (!(likely(((__pyx_t_1) == Py_None) || likely(__Pyx_TypeTest(__pyx_t_1, __pyx_ptype_4grpc_7_cython_6cygrpc_Server))))) __PYX_ERR(11, 12, __pyx_L1_error)
  __Pyx_GIVEREF(__pyx_t_1);
  __Pyx_GOTREF(__pyx_v___pyx_result->_server);
  __Pyx_DECREF(((PyObject *)__pyx_v___pyx_result->_server));
  __pyx_v___pyx_result->_server = ((struct __pyx_obj_4grpc_7_cython_6cygrpc_Server *)__pyx_t_1);
  __pyx_t_1 = 0;
  if (unlikely(__pyx_v___pyx_state == Py_None)) {
    PyErr_SetString(PyExc_TypeError, "'NoneType' object is not subscriptable");
    __PYX_ERR(11, 12, __pyx_L1_error)
  }
  __pyx_t_1 = __Pyx_GetItemInt_Tuple(__pyx_v___pyx_state, 6, long, 1, __Pyx_PyInt_From_long, 0, 0, 1); if (unlikely(!__pyx_t_1)) __PYX_ERR(11, 12, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_GIVEREF(__pyx_t_1);
  __Pyx_GOTREF(__pyx_v___pyx_result->_serving_task);
  __Pyx_DECREF(__pyx_v___pyx_result->_serving_task);
  __pyx_v___pyx_result->_serving_task = __pyx_t_1;
  __pyx_t_1 = 0;
  if (unlikely(__pyx_v___pyx_state == Py_None)) {
    PyErr_SetString(PyExc_TypeError, "'NoneType' object is not subscriptable");
    __PYX_ERR(11, 12, __pyx_L1_error)
  }
  __pyx_t_1 = __Pyx_GetItemInt_Tuple(__pyx_v___pyx_state, 7, long, 1, __Pyx_PyInt_From_long, 0, 0, 1); if (unlikely(!__pyx_t_1)) __PYX_ERR(11, 12, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  if (!(likely(((__pyx_t_1) == Py_None) || likely(__Pyx_TypeTest(__pyx_t_1, __pyx_ptype_4grpc_7_cython_6cygrpc_CallbackWrapper))))) __PYX_ERR(11, 12, __pyx_L1_error)
  __Pyx_GIVEREF(__pyx_t_1);
  __Pyx_GOTREF(__pyx_v___pyx_result->_shutdown_callback_wrapper);
  __Pyx_DECREF(((PyObject *)__pyx_v___pyx_result->_shutdown_callback_wrapper));
  __pyx_v___pyx_result->_shutdown_callback_wrapper = ((struct __pyx_obj_4grpc_7_cython_6cygrpc_CallbackWrapper *)__pyx_t_1);
  __pyx_t_1 = 0;
  if (unlikely(__pyx_v___pyx_state == Py_None)) {
    PyErr_SetString(PyExc_TypeError, "'NoneType' object is not subscriptable");
    __PYX_ERR(11, 12, __pyx_L1_error)
  }
  __pyx_t_1 = __Pyx_GetItemInt_Tuple(__pyx_v___pyx_state, 8, long, 1, __Pyx_PyInt_From_long, 0, 0, 1); if (unlikely(!__pyx_t_1)) __PYX_ERR(11, 12, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_GIVEREF(__pyx_t_1);
  __Pyx_GOTREF(__pyx_v___pyx_result->_shutdown_completed);
  __Pyx_DECREF(__pyx_v___pyx_result->_shutdown_completed);
  __pyx_v___pyx_result->_shutdown_completed = __pyx_t_1;
  __pyx_t_1 = 0;
  if (unlikely(__pyx_v___pyx_state == Py_None)) {
    PyErr_SetString(PyExc_TypeError, "'NoneType' object is not subscriptable");
    __PYX_ERR(11, 12, __pyx_L1_error)
  }
  __pyx_t_1 = __Pyx_GetItemInt_Tuple(__pyx_v___pyx_state, 9, long, 1, __Pyx_PyInt_From_long, 0, 0, 1); if (unlikely(!__pyx_t_1)) __PYX_ERR(11, 12, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_GIVEREF(__pyx_t_1);
  __Pyx_GOTREF(__pyx_v___pyx_result->_shutdown_lock);
  __Pyx_DECREF(__pyx_v___pyx_result->_shutdown_lock);
  __pyx_v___pyx_result->_shutdown_lock = __pyx_t_1;
  __pyx_t_1 = 0;
  if (unlikely(__pyx_v___pyx_state == Py_None)) {
    PyErr_SetString(PyExc_TypeError, "'NoneType' object is not subscriptable");
    __PYX_ERR(11, 12, __pyx_L1_error)
  }
  __pyx_t_1 = __Pyx_GetItemInt_Tuple(__pyx_v___pyx_state, 10, long, 1, __Pyx_PyInt_From_long, 0, 0, 1); if (unlikely(!__pyx_t_1)) __PYX_ERR(11, 12, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_t_2 = ((enum __pyx_t_4grpc_7_cython_6cygrpc_AioServerStatus)__Pyx_PyInt_As_enum____pyx_t_4grpc_7_cython_6cygrpc_AioServerStatus(__pyx_t_1)); if (unlikely(PyErr_Occurred())) __PYX_ERR(11, 12, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  __pyx_v___pyx_result->_status = __pyx_t_2;
  if (unlikely(__pyx_v___pyx_state == Py_None)) {
    PyErr_SetString(PyExc_TypeError, "'NoneType' object is not subscriptable");
    __PYX_ERR(11, 12, __pyx_L1_error)
  }
  __pyx_t_1 = __Pyx_GetItemInt_Tuple(__pyx_v___pyx_state, 11, long, 1, __Pyx_PyInt_From_long, 0, 0, 1); if (unlikely(!__pyx_t_1)) __PYX_ERR(11, 12, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_GIVEREF(__pyx_t_1);
  __Pyx_GOTREF(__pyx_v___pyx_result->_thread_pool);
  __Pyx_DECREF(__pyx_v___pyx_result->_thread_pool);
  __pyx_v___pyx_result->_thread_pool = __pyx_t_1;
  __pyx_t_1 = 0;

  /* "(tree fragment)":13
 * cdef __pyx_unpickle_AioServer__set_state(AioServer __pyx_result, tuple __pyx_state):
 *     __pyx_result._crash_exception = __pyx_state[0]; __pyx_result._generic_handlers = __pyx_state[1]; __pyx_result._interceptors = __pyx_state[2]; __pyx_result._limiter = __pyx_state[3]; __pyx_result._loop = __pyx_state[4]; __pyx_result._server = __pyx_state[5]; __pyx_result._serving_task = __pyx_state[6]; __pyx_result._shutdown_callback_wrapper = __pyx_state[7]; __pyx_result._shutdown_completed = __pyx_state[8]; __pyx_result._shutdown_lock = __pyx_state[9]; __pyx_result._status = __pyx_state[10]; __pyx_result._thread_pool = __pyx_state[11]
 *     if len(__pyx_state) > 12 and hasattr(__pyx_result, '__dict__'):             # <<<<<<<<<<<<<<
 *         __pyx_result.__dict__.update(__pyx_state[12])
 */
  if (unlikely(__pyx_v___pyx_state == Py_None)) {
    PyErr_SetString(PyExc_TypeError, "object of type 'NoneType' has no len()");
    __PYX_ERR(11, 13, __pyx_L1_error)
  }
  __pyx_t_4 = PyTuple_GET_SIZE(__pyx_v___pyx_state); if (unlikely(__pyx_t_4 == ((Py_ssize_t)-1))) __PYX_ERR(11, 13, __pyx_L1_error)
  __pyx_t_5 = ((__pyx_t_4 > 12) != 0);
  if (__pyx_t_5) {
  } else {
    __pyx_t_3 = __pyx_t_5;
    goto __pyx_L4_bool_binop_done;
  }
  __pyx_t_5 = __Pyx_HasAttr(((PyObject *)__pyx_v___pyx_result), __pyx_n_s_dict); if (unlikely(__pyx_t_5 == ((int)-1))) __PYX_ERR(11, 13, __pyx_L1_error)
  __pyx_t_6 = (__pyx_t_5 != 0);
  __pyx_t_3 = __pyx_t_6;
  __pyx_L4_bool_binop_done:;
  if (__pyx_t_3) {

    /* "(tree fragment)":14
 *     __pyx_result._crash_exception = __pyx_state[0]; __pyx_result._generic_handlers = __pyx_state[1]; __pyx_result._interceptors = __pyx_state[2]; __pyx_result._limiter = __pyx_state[3]; __pyx_result._loop = __pyx_state[4]; __pyx_result._server = __pyx_state[5]; __pyx_result._serving_task = __pyx_state[6]; __pyx_result._shutdown_callback_wrapper = __pyx_state[7]; __pyx_result._shutdown_completed = __pyx_state[8]; __pyx_result._shutdown_lock = __pyx_state[9]; __pyx_result._status = __pyx_state[10]; __pyx_result._thread_pool = __pyx_state[11]
 *     if len(__pyx_state) > 12 and hasattr(__pyx_result, '__dict__'):
 *         __pyx_result.__dict__.update(__pyx_state[12])             # <<<<<<<<<<<<<<
 */
    __pyx_t_7 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v___pyx_result), __pyx_n_s_dict); if (unlikely(!__pyx_t_7)) __PYX_ERR(11, 14, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_7);
    __pyx_t_8 = __Pyx_PyObject_GetAttrStr(__pyx_t_7, __pyx_n_s_update); if (unlikely(!__pyx_t_8)) __PYX_ERR(11, 14, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_8);
    __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
    if (unlikely(__pyx_v___pyx_state == Py_None)) {
      PyErr_SetString(PyExc_TypeError, "'NoneType' object is not subscriptable");
      __PYX_ERR(11, 14, __pyx_L1_error)
    }
    __pyx_t_7 = __Pyx_GetItemInt_Tuple(__pyx_v___pyx_state, 12, long, 1, __Pyx_PyInt_From_long, 0, 0, 1); if (unlikely(!__pyx_t_7)) __PYX_ERR(11, 14, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_7);
    __pyx_t_9 = NULL;
    if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_8))) {
      __pyx_t_9 = PyMethod_GET_SELF(__pyx_t_8);
      if (likely(__pyx_t_9)) {
        PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_8);
        __Pyx_INCREF(__pyx_t_9);
        __Pyx_INCREF(function);
        __Pyx_DECREF_SET(__pyx_t_8, function);
      }
    }
    __pyx_t_1 = (__pyx_t_9) ? __Pyx_PyObject_Call2Args(__pyx_t_8, __pyx_t_9, __pyx_t_7) : __Pyx_PyObject_CallOneArg(__pyx_t_8, __pyx_t_7);
    __Pyx_XDECREF(__pyx_t_9); __pyx_t_9 = 0;
    __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
    if (unlikely(!__pyx_t_1)) __PYX_ERR(11, 14, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_1);
    __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
    __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;

    /* "(tree fragment)":13
 * cdef __pyx_unpickle_AioServer__set_state(AioServer __pyx_result, tuple __pyx_state):
 *     __pyx_result._crash_exception = __pyx_state[0]; __pyx_result._generic_handlers = __pyx_state[1]; __pyx_result._interceptors = __pyx_state[2]; __pyx_result._limiter = __pyx_state[3]; __pyx_result._loop = __pyx_state[4]; __pyx_result._server = __pyx_state[5]; __pyx_result._serving_task = __pyx_state[6]; __pyx_result._shutdown_callback_wrapper = __pyx_state[7]; __pyx_result._shutdown_completed = __pyx_state[8]; __pyx_result._shutdown_lock = __pyx_state[9]; __pyx_result._status = __pyx_state[10]; __pyx_result._thread_pool = __pyx_state[11]
 *     if len(__pyx_state) > 12 and hasattr(__pyx_result, '__dict__'):             # <<<<<<<<<<<<<<
 *         __pyx_result.__dict__.update(__pyx_state[12])
 */
  }

  /* "(tree fragment)":11
 *         __pyx_unpickle_AioServer__set_state(<AioServer> __pyx_result, __pyx_state)
 *     return __pyx_result
 * cdef __pyx_unpickle_AioServer__set_state(AioServer __pyx_result, tuple __pyx_state):             # <<<<<<<<<<<<<<
 *     __pyx_result._crash_exception = __pyx_state[0]; __pyx_result._generic_handlers = __pyx_state[1]; __pyx_result._interceptors = __pyx_state[2]; __pyx_result._limiter = __pyx_state[3]; __pyx_result._loop = __pyx_state[4]; __pyx_result._server = __pyx_state[5]; __pyx_result._serving_task = __pyx_state[6]; __pyx_result._shutdown_callback_wrapper = __pyx_state[7]; __pyx_result._shutdown_completed = __pyx_state[8]; __pyx_result._shutdown_lock = __pyx_state[9]; __pyx_result._status = __pyx_state[10]; __pyx_result._thread_pool = __pyx_state[11]
 *     if len(__pyx_state) > 12 and hasattr(__pyx_result, '__dict__'):
 */

  /* function exit code */
  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_XDECREF(__pyx_t_7);
  __Pyx_XDECREF(__pyx_t_8);
  __Pyx_XDECREF(__pyx_t_9);
  __Pyx_AddTraceback("grpc._cython.cygrpc.__pyx_unpickle_AioServer__set_state", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = 0;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "string.to_py":31
 * 
 * @cname("__pyx_convert_PyObject_string_to_py_std__in_string")
 * cdef inline object __pyx_convert_PyObject_string_to_py_std__in_string(const string& s):             # <<<<<<<<<<<<<<
 *     return __Pyx_PyObject_FromStringAndSize(s.data(), s.size())
 * cdef extern from *:
 */

static CYTHON_INLINE PyObject *__pyx_convert_PyObject_string_to_py_std__in_string(std::string const &__pyx_v_s) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("__pyx_convert_PyObject_string_to_py_std__in_string", 0);

  /* "string.to_py":32
 * @cname("__pyx_convert_PyObject_string_to_py_std__in_string")
 * cdef inline object __pyx_convert_PyObject_string_to_py_std__in_string(const string& s):
 *     return __Pyx_PyObject_FromStringAndSize(s.data(), s.size())             # <<<<<<<<<<<<<<
 * cdef extern from *:
 *     cdef object __Pyx_PyUnicode_FromStringAndSize(const char*, size_t)
 */
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_1 = __Pyx_PyObject_FromStringAndSize(__pyx_v_s.data(), __pyx_v_s.size()); if (unlikely(!__pyx_t_1)) __PYX_ERR(11, 32, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_r = __pyx_t_1;
  __pyx_t_1 = 0;
  goto __pyx_L0;

  /* "string.to_py":31
 * 
 * @cname("__pyx_convert_PyObject_string_to_py_std__in_string")
 * cdef inline object __pyx_convert_PyObject_string_to_py_std__in_string(const string& s):             # <<<<<<<<<<<<<<
 *     return __Pyx_PyObject_FromStringAndSize(s.data(), s.size())
 * cdef extern from *:
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_AddTraceback("string.to_py.__pyx_convert_PyObject_string_to_py_std__in_string", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = 0;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "string.to_py":37
 * 
 * @cname("__pyx_convert_PyUnicode_string_to_py_std__in_string")
 * cdef inline object __pyx_convert_PyUnicode_string_to_py_std__in_string(const string& s):             # <<<<<<<<<<<<<<
 *     return __Pyx_PyUnicode_FromStringAndSize(s.data(), s.size())
 * cdef extern from *:
 */

static CYTHON_INLINE PyObject *__pyx_convert_PyUnicode_string_to_py_std__in_string(std::string const &__pyx_v_s) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("__pyx_convert_PyUnicode_string_to_py_std__in_string", 0);

  /* "string.to_py":38
 * @cname("__pyx_convert_PyUnicode_string_to_py_std__in_string")
 * cdef inline object __pyx_convert_PyUnicode_string_to_py_std__in_string(const string& s):
 *     return __Pyx_PyUnicode_FromStringAndSize(s.data(), s.size())             # <<<<<<<<<<<<<<
 * cdef extern from *:
 *     cdef object __Pyx_PyStr_FromStringAndSize(const char*, size_t)
 */
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_1 = __Pyx_PyUnicode_FromStringAndSize(__pyx_v_s.data(), __pyx_v_s.size()); if (unlikely(!__pyx_t_1)) __PYX_ERR(11, 38, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_r = __pyx_t_1;
  __pyx_t_1 = 0;
  goto __pyx_L0;

  /* "string.to_py":37
 * 
 * @cname("__pyx_convert_PyUnicode_string_to_py_std__in_string")
 * cdef inline object __pyx_convert_PyUnicode_string_to_py_std__in_string(const string& s):             # <<<<<<<<<<<<<<
 *     return __Pyx_PyUnicode_FromStringAndSize(s.data(), s.size())
 * cdef extern from *:
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_AddTraceback("string.to_py.__pyx_convert_PyUnicode_string_to_py_std__in_string", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = 0;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "string.to_py":43
 * 
 * @cname("__pyx_convert_PyStr_string_to_py_std__in_string")
 * cdef inline object __pyx_convert_PyStr_string_to_py_std__in_string(const string& s):             # <<<<<<<<<<<<<<
 *     return __Pyx_PyStr_FromStringAndSize(s.data(), s.size())
 * cdef extern from *:
 */

static CYTHON_INLINE PyObject *__pyx_convert_PyStr_string_to_py_std__in_string(std::string const &__pyx_v_s) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("__pyx_convert_PyStr_string_to_py_std__in_string", 0);

  /* "string.to_py":44
 * @cname("__pyx_convert_PyStr_string_to_py_std__in_string")
 * cdef inline object __pyx_convert_PyStr_string_to_py_std__in_string(const string& s):
 *     return __Pyx_PyStr_FromStringAndSize(s.data(), s.size())             # <<<<<<<<<<<<<<
 * cdef extern from *:
 *     cdef object __Pyx_PyBytes_FromStringAndSize(const char*, size_t)
 */
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_1 = __Pyx_PyStr_FromStringAndSize(__pyx_v_s.data(), __pyx_v_s.size()); if (unlikely(!__pyx_t_1)) __PYX_ERR(11, 44, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_r = __pyx_t_1;
  __pyx_t_1 = 0;
  goto __pyx_L0;

  /* "string.to_py":43
 * 
 * @cname("__pyx_convert_PyStr_string_to_py_std__in_string")
 * cdef inline object __pyx_convert_PyStr_string_to_py_std__in_string(const string& s):             # <<<<<<<<<<<<<<
 *     return __Pyx_PyStr_FromStringAndSize(s.data(), s.size())
 * cdef extern from *:
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_AddTraceback("string.to_py.__pyx_convert_PyStr_string_to_py_std__in_string", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = 0;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "string.to_py":49
 * 
 * @cname("__pyx_convert_PyBytes_string_to_py_std__in_string")
 * cdef inline object __pyx_convert_PyBytes_string_to_py_std__in_string(const string& s):             # <<<<<<<<<<<<<<
 *     return __Pyx_PyBytes_FromStringAndSize(s.data(), s.size())
 * cdef extern from *:
 */

static CYTHON_INLINE PyObject *__pyx_convert_PyBytes_string_to_py_std__in_string(std::string const &__pyx_v_s) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("__pyx_convert_PyBytes_string_to_py_std__in_string", 0);

  /* "string.to_py":50
 * @cname("__pyx_convert_PyBytes_string_to_py_std__in_string")
 * cdef inline object __pyx_convert_PyBytes_string_to_py_std__in_string(const string& s):
 *     return __Pyx_PyBytes_FromStringAndSize(s.data(), s.size())             # <<<<<<<<<<<<<<
 * cdef extern from *:
 *     cdef object __Pyx_PyByteArray_FromStringAndSize(const char*, size_t)
 */
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_1 = __Pyx_PyBytes_FromStringAndSize(__pyx_v_s.data(), __pyx_v_s.size()); if (unlikely(!__pyx_t_1)) __PYX_ERR(11, 50, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_r = __pyx_t_1;
  __pyx_t_1 = 0;
  goto __pyx_L0;

  /* "string.to_py":49
 * 
 * @cname("__pyx_convert_PyBytes_string_to_py_std__in_string")
 * cdef inline object __pyx_convert_PyBytes_string_to_py_std__in_string(const string& s):             # <<<<<<<<<<<<<<
 *     return __Pyx_PyBytes_FromStringAndSize(s.data(), s.size())
 * cdef extern from *:
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_AddTraceback("string.to_py.__pyx_convert_PyBytes_string_to_py_std__in_string", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = 0;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "string.to_py":55
 * 
 * @cname("__pyx_convert_PyByteArray_string_to_py_std__in_string")
 * cdef inline object __pyx_convert_PyByteArray_string_to_py_std__in_string(const string& s):             # <<<<<<<<<<<<<<
 *     return __Pyx_PyByteArray_FromStringAndSize(s.data(), s.size())
 * 
 */

static CYTHON_INLINE PyObject *__pyx_convert_PyByteArray_string_to_py_std__in_string(std::string const &__pyx_v_s) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("__pyx_convert_PyByteArray_string_to_py_std__in_string", 0);

  /* "string.to_py":56
 * @cname("__pyx_convert_PyByteArray_string_to_py_std__in_string")
 * cdef inline object __pyx_convert_PyByteArray_string_to_py_std__in_string(const string& s):
 *     return __Pyx_PyByteArray_FromStringAndSize(s.data(), s.size())             # <<<<<<<<<<<<<<
 * 
 */
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_1 = __Pyx_PyByteArray_FromStringAndSize(__pyx_v_s.data(), __pyx_v_s.size()); if (unlikely(!__pyx_t_1)) __PYX_ERR(11, 56, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_r = __pyx_t_1;
  __pyx_t_1 = 0;
  goto __pyx_L0;

  /* "string.to_py":55
 * 
 * @cname("__pyx_convert_PyByteArray_string_to_py_std__in_string")
 * cdef inline object __pyx_convert_PyByteArray_string_to_py_std__in_string(const string& s):             # <<<<<<<<<<<<<<
 *     return __Pyx_PyByteArray_FromStringAndSize(s.data(), s.size())
 * 
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_AddTraceback("string.to_py.__pyx_convert_PyByteArray_string_to_py_std__in_string", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = 0;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}
static struct __pyx_vtabstruct_4grpc_7_cython_6cygrpc__ChannelArg __pyx_vtable_4grpc_7_cython_6cygrpc__ChannelArg;

static PyObject *__pyx_tp_new_4grpc_7_cython_6cygrpc__ChannelArg(PyTypeObject *t, CYTHON_UNUSED PyObject *a, CYTHON_UNUSED PyObject *k) {
  struct __pyx_obj_4grpc_7_cython_6cygrpc__ChannelArg *p;
  PyObject *o;
  if (likely((t->tp_flags & Py_TPFLAGS_IS_ABSTRACT) == 0)) {
    o = (*t->tp_alloc)(t, 0);
  } else {
    o = (PyObject *) PyBaseObject_Type.tp_new(t, __pyx_empty_tuple, 0);
  }
  if (unlikely(!o)) return 0;
  p = ((struct __pyx_obj_4grpc_7_cython_6cygrpc__ChannelArg *)o);
  p->__pyx_vtab = __pyx_vtabptr_4grpc_7_cython_6cygrpc__ChannelArg;
  return o;
}

static void __pyx_tp_dealloc_4grpc_7_cython_6cygrpc__ChannelArg(PyObject *o) {
  #if CYTHON_USE_TP_FINALIZE
  if (unlikely(PyType_HasFeature(Py_TYPE(o), Py_TPFLAGS_HAVE_FINALIZE) && Py_TYPE(o)->tp_finalize) && (!PyType_IS_GC(Py_TYPE(o)) || !_PyGC_FINALIZED(o))) {
    if (PyObject_CallFinalizerFromDealloc(o)) return;
  }
  #endif
  (*Py_TYPE(o)->tp_free)(o);
}

static PyMethodDef __pyx_methods_4grpc_7_cython_6cygrpc__ChannelArg[] = {
  {"__reduce_cython__", (PyCFunction)__pyx_pw_4grpc_7_cython_6cygrpc_11_ChannelArg_1__reduce_cython__, METH_NOARGS, 0},
  {"__setstate_cython__", (PyCFunction)__pyx_pw_4grpc_7_cython_6cygrpc_11_ChannelArg_3__setstate_cython__, METH_O, 0},
  {0, 0, 0, 0}
};

static PyTypeObject __pyx_type_4grpc_7_cython_6cygrpc__ChannelArg = {
  PyVarObject_HEAD_INIT(0, 0)
  "grpc._cython.cygrpc._ChannelArg", /*tp_name*/
  sizeof(struct __pyx_obj_4grpc_7_cython_6cygrpc__ChannelArg), /*tp_basicsize*/
  0, /*tp_itemsize*/
  __pyx_tp_dealloc_4grpc_7_cython_6cygrpc__ChannelArg, /*tp_dealloc*/
  #if PY_VERSION_HEX < 0x030800b4
  0, /*tp_print*/
  #endif
  #if PY_VERSION_HEX >= 0x030800b4
  0, /*tp_vectorcall_offset*/
  #endif
  0, /*tp_getattr*/
  0, /*tp_setattr*/
  #if PY_MAJOR_VERSION < 3
  0, /*tp_compare*/
  #endif
  #if PY_MAJOR_VERSION >= 3
  0, /*tp_as_async*/
  #endif
  0, /*tp_repr*/
  0, /*tp_as_number*/
  0, /*tp_as_sequence*/
  0, /*tp_as_mapping*/
  0, /*tp_hash*/
  0, /*tp_call*/
  0, /*tp_str*/
  0, /*tp_getattro*/
  0, /*tp_setattro*/
  0, /*tp_as_buffer*/
  Py_TPFLAGS_DEFAULT|Py_TPFLAGS_HAVE_VERSION_TAG|Py_TPFLAGS_CHECKTYPES|Py_TPFLAGS_HAVE_NEWBUFFER|Py_TPFLAGS_BASETYPE, /*tp_flags*/
  0, /*tp_doc*/
  0, /*tp_traverse*/
  0, /*tp_clear*/
  0, /*tp_richcompare*/
  0, /*tp_weaklistoffset*/
  0, /*tp_iter*/
  0, /*tp_iternext*/
  __pyx_methods_4grpc_7_cython_6cygrpc__ChannelArg, /*tp_methods*/
  0, /*tp_members*/
  0, /*tp_getset*/
  0, /*tp_base*/
  0, /*tp_dict*/
  0, /*tp_descr_get*/
  0, /*tp_descr_set*/
  0, /*tp_dictoffset*/
  0, /*tp_init*/
  0, /*tp_alloc*/
  __pyx_tp_new_4grpc_7_cython_6cygrpc__ChannelArg, /*tp_new*/
  0, /*tp_free*/
  0, /*tp_is_gc*/
  0, /*tp_bases*/
  0, /*tp_mro*/
  0, /*tp_cache*/
  0, /*tp_subclasses*/
  0, /*tp_weaklist*/
  0, /*tp_del*/
  0, /*tp_version_tag*/
  #if PY_VERSION_HEX >= 0x030400a1
  0, /*tp_finalize*/
  #endif
  #if PY_VERSION_HEX >= 0x030800b1
  0, /*tp_vectorcall*/
  #endif
  #if PY_VERSION_HEX >= 0x030800b4 && PY_VERSION_HEX < 0x03090000
  0, /*tp_print*/
  #endif
};
static struct __pyx_vtabstruct_4grpc_7_cython_6cygrpc__ChannelArgs __pyx_vtable_4grpc_7_cython_6cygrpc__ChannelArgs;

static PyObject *__pyx_tp_new_4grpc_7_cython_6cygrpc__ChannelArgs(PyTypeObject *t, PyObject *a, PyObject *k) {
  struct __pyx_obj_4grpc_7_cython_6cygrpc__ChannelArgs *p;
  PyObject *o;
  if (likely((t->tp_flags & Py_TPFLAGS_IS_ABSTRACT) == 0)) {
    o = (*t->tp_alloc)(t, 0);
  } else {
    o = (PyObject *) PyBaseObject_Type.tp_new(t, __pyx_empty_tuple, 0);
  }
  if (unlikely(!o)) return 0;
  p = ((struct __pyx_obj_4grpc_7_cython_6cygrpc__ChannelArgs *)o);
  p->__pyx_vtab = __pyx_vtabptr_4grpc_7_cython_6cygrpc__ChannelArgs;
  p->_arguments = ((PyObject*)Py_None); Py_INCREF(Py_None);
  p->_channel_args = ((PyObject*)Py_None); Py_INCREF(Py_None);
  p->_references = ((PyObject*)Py_None); Py_INCREF(Py_None);
  if (unlikely(__pyx_pw_4grpc_7_cython_6cygrpc_12_ChannelArgs_1__cinit__(o, a, k) < 0)) goto bad;
  return o;
  bad:
  Py_DECREF(o); o = 0;
  return NULL;
}

static void __pyx_tp_dealloc_4grpc_7_cython_6cygrpc__ChannelArgs(PyObject *o) {
  struct __pyx_obj_4grpc_7_cython_6cygrpc__ChannelArgs *p = (struct __pyx_obj_4grpc_7_cython_6cygrpc__ChannelArgs *)o;
  #if CYTHON_USE_TP_FINALIZE
  if (unlikely(PyType_HasFeature(Py_TYPE(o), Py_TPFLAGS_HAVE_FINALIZE) && Py_TYPE(o)->tp_finalize) && !_PyGC_FINALIZED(o)) {
    if (PyObject_CallFinalizerFromDealloc(o)) return;
  }
  #endif
  PyObject_GC_UnTrack(o);
  {
    PyObject *etype, *eval, *etb;
    PyErr_Fetch(&etype, &eval, &etb);
    __Pyx_SET_REFCNT(o, Py_REFCNT(o) + 1);
    __pyx_pw_4grpc_7_cython_6cygrpc_12_ChannelArgs_3__dealloc__(o);
    __Pyx_SET_REFCNT(o, Py_REFCNT(o) - 1);
    PyErr_Restore(etype, eval, etb);
  }
  Py_CLEAR(p->_arguments);
  Py_CLEAR(p->_channel_args);
  Py_CLEAR(p->_references);
  (*Py_TYPE(o)->tp_free)(o);
}

static int __pyx_tp_traverse_4grpc_7_cython_6cygrpc__ChannelArgs(PyObject *o, visitproc v, void *a) {
  int e;
  struct __pyx_obj_4grpc_7_cython_6cygrpc__ChannelArgs *p = (struct __pyx_obj_4grpc_7_cython_6cygrpc__ChannelArgs *)o;
  if (p->_arguments) {
    e = (*v)(p->_arguments, a); if (e) return e;
  }
  if (p->_channel_args) {
    e = (*v)(p->_channel_args, a); if (e) return e;
  }
  if (p->_references) {
    e = (*v)(p->_references, a); if (e) return e;
  }
  return 0;
}

static int __pyx_tp_clear_4grpc_7_cython_6cygrpc__ChannelArgs(PyObject *o) {
  PyObject* tmp;
  struct __pyx_obj_4grpc_7_cython_6cygrpc__ChannelArgs *p = (struct __pyx_obj_4grpc_7_cython_6cygrpc__ChannelArgs *)o;
  tmp = ((PyObject*)p->_arguments);
  p->_arguments = ((PyObject*)Py_None); Py_INCREF(Py_None);
  Py_XDECREF(tmp);
  tmp = ((PyObject*)p->_channel_args);
  p->_channel_args = ((PyObject*)Py_None); Py_INCREF(Py_None);
  Py_XDECREF(tmp);
  tmp = ((PyObject*)p->_references);
  p->_references = ((PyObject*)Py_None); Py_INCREF(Py_None);
  Py_XDECREF(tmp);
  return 0;
}

static PyObject *__pyx_getprop_4grpc_7_cython_6cygrpc_12_ChannelArgs__arguments(PyObject *o, CYTHON_UNUSED void *x) {
  return __pyx_pw_4grpc_7_cython_6cygrpc_12_ChannelArgs_10_arguments_1__get__(o);
}

static PyObject *__pyx_getprop_4grpc_7_cython_6cygrpc_12_ChannelArgs__references(PyObject *o, CYTHON_UNUSED void *x) {
  return __pyx_pw_4grpc_7_cython_6cygrpc_12_ChannelArgs_11_references_1__get__(o);
}

static PyMethodDef __pyx_methods_4grpc_7_cython_6cygrpc__ChannelArgs[] = {
  {"__reduce_cython__", (PyCFunction)__pyx_pw_4grpc_7_cython_6cygrpc_12_ChannelArgs_5__reduce_cython__, METH_NOARGS, 0},
  {"__setstate_cython__", (PyCFunction)__pyx_pw_4grpc_7_cython_6cygrpc_12_ChannelArgs_7__setstate_cython__, METH_O, 0},
  {0, 0, 0, 0}
};

static struct PyGetSetDef __pyx_getsets_4grpc_7_cython_6cygrpc__ChannelArgs[] = {
  {(char *)"_arguments", __pyx_getprop_4grpc_7_cython_6cygrpc_12_ChannelArgs__arguments, 0, (char *)0, 0},
  {(char *)"_references", __pyx_getprop_4grpc_7_cython_6cygrpc_12_ChannelArgs__references, 0, (char *)0, 0},
  {0, 0, 0, 0, 0}
};

static PyTypeObject __pyx_type_4grpc_7_cython_6cygrpc__ChannelArgs = {
  PyVarObject_HEAD_INIT(0, 0)
  "grpc._cython.cygrpc._ChannelArgs", /*tp_name*/
  sizeof(struct __pyx_obj_4grpc_7_cython_6cygrpc__ChannelArgs), /*tp_basicsize*/
  0, /*tp_itemsize*/
  __pyx_tp_dealloc_4grpc_7_cython_6cygrpc__ChannelArgs, /*tp_dealloc*/
  #if PY_VERSION_HEX < 0x030800b4
  0, /*tp_print*/
  #endif
  #if PY_VERSION_HEX >= 0x030800b4
  0, /*tp_vectorcall_offset*/
  #endif
  0, /*tp_getattr*/
  0, /*tp_setattr*/
  #if PY_MAJOR_VERSION < 3
  0, /*tp_compare*/
  #endif
  #if PY_MAJOR_VERSION >= 3
  0, /*tp_as_async*/
  #endif
  0, /*tp_repr*/
  0, /*tp_as_number*/
  0, /*tp_as_sequence*/
  0, /*tp_as_mapping*/
  0, /*tp_hash*/
  0, /*tp_call*/
  0, /*tp_str*/
  0, /*tp_getattro*/
  0, /*tp_setattro*/
  0, /*tp_as_buffer*/
  Py_TPFLAGS_DEFAULT|Py_TPFLAGS_HAVE_VERSION_TAG|Py_TPFLAGS_CHECKTYPES|Py_TPFLAGS_HAVE_NEWBUFFER|Py_TPFLAGS_BASETYPE|Py_TPFLAGS_HAVE_GC, /*tp_flags*/
  0, /*tp_doc*/
  __pyx_tp_traverse_4grpc_7_cython_6cygrpc__ChannelArgs, /*tp_traverse*/
  __pyx_tp_clear_4grpc_7_cython_6cygrpc__ChannelArgs, /*tp_clear*/
  0, /*tp_richcompare*/
  0, /*tp_weaklistoffset*/
  0, /*tp_iter*/
  0, /*tp_iternext*/
  __pyx_methods_4grpc_7_cython_6cygrpc__ChannelArgs, /*tp_methods*/
  0, /*tp_members*/
  __pyx_getsets_4grpc_7_cython_6cygrpc__ChannelArgs, /*tp_getset*/
  0, /*tp_base*/
  0, /*tp_dict*/
  0, /*tp_descr_get*/
  0, /*tp_descr_set*/
  0, /*tp_dictoffset*/
  0, /*tp_init*/
  0, /*tp_alloc*/
  __pyx_tp_new_4grpc_7_cython_6cygrpc__ChannelArgs, /*tp_new*/
  0, /*tp_free*/
  0, /*tp_is_gc*/
  0, /*tp_bases*/
  0, /*tp_mro*/
  0, /*tp_cache*/
  0, /*tp_subclasses*/
  0, /*tp_weaklist*/
  0, /*tp_del*/
  0, /*tp_version_tag*/
  #if PY_VERSION_HEX >= 0x030400a1
  0, /*tp_finalize*/
  #endif
  #if PY_VERSION_HEX >= 0x030800b1
  0, /*tp_vectorcall*/
  #endif
  #if PY_VERSION_HEX >= 0x030800b4 && PY_VERSION_HEX < 0x03090000
  0, /*tp_print*/
  #endif
};

static PyObject *__pyx_tp_new_4grpc_7_cython_6cygrpc_Call(PyTypeObject *t, CYTHON_UNUSED PyObject *a, CYTHON_UNUSED PyObject *k) {
  struct __pyx_obj_4grpc_7_cython_6cygrpc_Call *p;
  PyObject *o;
  if (likely((t->tp_flags & Py_TPFLAGS_IS_ABSTRACT) == 0)) {
    o = (*t->tp_alloc)(t, 0);
  } else {
    o = (PyObject *) PyBaseObject_Type.tp_new(t, __pyx_empty_tuple, 0);
  }
  if (unlikely(!o)) return 0;
  p = ((struct __pyx_obj_4grpc_7_cython_6cygrpc_Call *)o);
  p->references = ((PyObject*)Py_None); Py_INCREF(Py_None);
  if (unlikely(__pyx_pw_4grpc_7_cython_6cygrpc_4Call_1__cinit__(o, __pyx_empty_tuple, NULL) < 0)) goto bad;
  return o;
  bad:
  Py_DECREF(o); o = 0;
  return NULL;
}

static void __pyx_tp_dealloc_4grpc_7_cython_6cygrpc_Call(PyObject *o) {
  struct __pyx_obj_4grpc_7_cython_6cygrpc_Call *p = (struct __pyx_obj_4grpc_7_cython_6cygrpc_Call *)o;
  #if CYTHON_USE_TP_FINALIZE
  if (unlikely(PyType_HasFeature(Py_TYPE(o), Py_TPFLAGS_HAVE_FINALIZE) && Py_TYPE(o)->tp_finalize) && !_PyGC_FINALIZED(o)) {
    if (PyObject_CallFinalizerFromDealloc(o)) return;
  }
  #endif
  PyObject_GC_UnTrack(o);
  {
    PyObject *etype, *eval, *etb;
    PyErr_Fetch(&etype, &eval, &etb);
    __Pyx_SET_REFCNT(o, Py_REFCNT(o) + 1);
    __pyx_pw_4grpc_7_cython_6cygrpc_4Call_15__dealloc__(o);
    __Pyx_SET_REFCNT(o, Py_REFCNT(o) - 1);
    PyErr_Restore(etype, eval, etb);
  }
  Py_CLEAR(p->references);
  (*Py_TYPE(o)->tp_free)(o);
}

static int __pyx_tp_traverse_4grpc_7_cython_6cygrpc_Call(PyObject *o, visitproc v, void *a) {
  int e;
  struct __pyx_obj_4grpc_7_cython_6cygrpc_Call *p = (struct __pyx_obj_4grpc_7_cython_6cygrpc_Call *)o;
  if (p->references) {
    e = (*v)(p->references, a); if (e) return e;
  }
  return 0;
}

static int __pyx_tp_clear_4grpc_7_cython_6cygrpc_Call(PyObject *o) {
  PyObject* tmp;
  struct __pyx_obj_4grpc_7_cython_6cygrpc_Call *p = (struct __pyx_obj_4grpc_7_cython_6cygrpc_Call *)o;
  tmp = ((PyObject*)p->references);
  p->references = ((PyObject*)Py_None); Py_INCREF(Py_None);
  Py_XDECREF(tmp);
  return 0;
}

static PyObject *__pyx_getprop_4grpc_7_cython_6cygrpc_4Call_is_valid(PyObject *o, CYTHON_UNUSED void *x) {
  return __pyx_pw_4grpc_7_cython_6cygrpc_4Call_8is_valid_1__get__(o);
}

static PyMethodDef __pyx_methods_4grpc_7_cython_6cygrpc_Call[] = {
  {"_start_batch", (PyCFunction)(void*)(PyCFunctionWithKeywords)__pyx_pw_4grpc_7_cython_6cygrpc_4Call_3_start_batch, METH_VARARGS|METH_KEYWORDS, 0},
  {"start_client_batch", (PyCFunction)(void*)(PyCFunctionWithKeywords)__pyx_pw_4grpc_7_cython_6cygrpc_4Call_5start_client_batch, METH_VARARGS|METH_KEYWORDS, 0},
  {"start_server_batch", (PyCFunction)(void*)(PyCFunctionWithKeywords)__pyx_pw_4grpc_7_cython_6cygrpc_4Call_7start_server_batch, METH_VARARGS|METH_KEYWORDS, 0},
  {"cancel", (PyCFunction)(void*)(PyCFunctionWithKeywords)__pyx_pw_4grpc_7_cython_6cygrpc_4Call_9cancel, METH_VARARGS|METH_KEYWORDS, 0},
  {"set_credentials", (PyCFunction)__pyx_pw_4grpc_7_cython_6cygrpc_4Call_11set_credentials, METH_O, 0},
  {"peer", (PyCFunction)__pyx_pw_4grpc_7_cython_6cygrpc_4Call_13peer, METH_NOARGS, 0},
  {"_custom_op_on_c_call", (PyCFunction)__pyx_pw_4grpc_7_cython_6cygrpc_4Call_17_custom_op_on_c_call, METH_O, 0},
  {"__reduce_cython__", (PyCFunction)__pyx_pw_4grpc_7_cython_6cygrpc_4Call_19__reduce_cython__, METH_NOARGS, 0},
  {"__setstate_cython__", (PyCFunction)__pyx_pw_4grpc_7_cython_6cygrpc_4Call_21__setstate_cython__, METH_O, 0},
  {0, 0, 0, 0}
};

static struct PyGetSetDef __pyx_getsets_4grpc_7_cython_6cygrpc_Call[] = {
  {(char *)"is_valid", __pyx_getprop_4grpc_7_cython_6cygrpc_4Call_is_valid, 0, (char *)0, 0},
  {0, 0, 0, 0, 0}
};

static PyTypeObject __pyx_type_4grpc_7_cython_6cygrpc_Call = {
  PyVarObject_HEAD_INIT(0, 0)
  "grpc._cython.cygrpc.Call", /*tp_name*/
  sizeof(struct __pyx_obj_4grpc_7_cython_6cygrpc_Call), /*tp_basicsize*/
  0, /*tp_itemsize*/
  __pyx_tp_dealloc_4grpc_7_cython_6cygrpc_Call, /*tp_dealloc*/
  #if PY_VERSION_HEX < 0x030800b4
  0, /*tp_print*/
  #endif
  #if PY_VERSION_HEX >= 0x030800b4
  0, /*tp_vectorcall_offset*/
  #endif
  0, /*tp_getattr*/
  0, /*tp_setattr*/
  #if PY_MAJOR_VERSION < 3
  0, /*tp_compare*/
  #endif
  #if PY_MAJOR_VERSION >= 3
  0, /*tp_as_async*/
  #endif
  0, /*tp_repr*/
  0, /*tp_as_number*/
  0, /*tp_as_sequence*/
  0, /*tp_as_mapping*/
  0, /*tp_hash*/
  0, /*tp_call*/
  0, /*tp_str*/
  0, /*tp_getattro*/
  0, /*tp_setattro*/
  0, /*tp_as_buffer*/
  Py_TPFLAGS_DEFAULT|Py_TPFLAGS_HAVE_VERSION_TAG|Py_TPFLAGS_CHECKTYPES|Py_TPFLAGS_HAVE_NEWBUFFER|Py_TPFLAGS_BASETYPE|Py_TPFLAGS_HAVE_GC, /*tp_flags*/
  0, /*tp_doc*/
  __pyx_tp_traverse_4grpc_7_cython_6cygrpc_Call, /*tp_traverse*/
  __pyx_tp_clear_4grpc_7_cython_6cygrpc_Call, /*tp_clear*/
  0, /*tp_richcompare*/
  0, /*tp_weaklistoffset*/
  0, /*tp_iter*/
  0, /*tp_iternext*/
  __pyx_methods_4grpc_7_cython_6cygrpc_Call, /*tp_methods*/
  0, /*tp_members*/
  __pyx_getsets_4grpc_7_cython_6cygrpc_Call, /*tp_getset*/
  0, /*tp_base*/
  0, /*tp_dict*/
  0, /*tp_descr_get*/
  0, /*tp_descr_set*/
  0, /*tp_dictoffset*/
  0, /*tp_init*/
  0, /*tp_alloc*/
  __pyx_tp_new_4grpc_7_cython_6cygrpc_Call, /*tp_new*/
  0, /*tp_free*/
  0, /*tp_is_gc*/
  0, /*tp_bases*/
  0, /*tp_mro*/
  0, /*tp_cache*/
  0, /*tp_subclasses*/
  0, /*tp_weaklist*/
  0, /*tp_del*/
  0, /*tp_version_tag*/
  #if PY_VERSION_HEX >= 0x030400a1
  0, /*tp_finalize*/
  #endif
  #if PY_VERSION_HEX >= 0x030800b1
  0, /*tp_vectorcall*/
  #endif
  #if PY_VERSION_HEX >= 0x030800b4 && PY_VERSION_HEX < 0x03090000
  0, /*tp_print*/
  #endif
};

static PyObject *__pyx_tp_new_4grpc_7_cython_6cygrpc__CallState(PyTypeObject *t, CYTHON_UNUSED PyObject *a, CYTHON_UNUSED PyObject *k) {
  struct __pyx_obj_4grpc_7_cython_6cygrpc__CallState *p;
  PyObject *o;
  if (likely((t->tp_flags & Py_TPFLAGS_IS_ABSTRACT) == 0)) {
    o = (*t->tp_alloc)(t, 0);
  } else {
    o = (PyObject *) PyBaseObject_Type.tp_new(t, __pyx_empty_tuple, 0);
  }
  if (unlikely(!o)) return 0;
  p = ((struct __pyx_obj_4grpc_7_cython_6cygrpc__CallState *)o);
  p->due = ((PyObject*)Py_None); Py_INCREF(Py_None);
  if (unlikely(__pyx_pw_4grpc_7_cython_6cygrpc_10_CallState_1__cinit__(o, __pyx_empty_tuple, NULL) < 0)) goto bad;
  return o;
  bad:
  Py_DECREF(o); o = 0;
  return NULL;
}

static void __pyx_tp_dealloc_4grpc_7_cython_6cygrpc__CallState(PyObject *o) {
  struct __pyx_obj_4grpc_7_cython_6cygrpc__CallState *p = (struct __pyx_obj_4grpc_7_cython_6cygrpc__CallState *)o;
  #if CYTHON_USE_TP_FINALIZE
  if (unlikely(PyType_HasFeature(Py_TYPE(o), Py_TPFLAGS_HAVE_FINALIZE) && Py_TYPE(o)->tp_finalize) && !_PyGC_FINALIZED(o)) {
    if (PyObject_CallFinalizerFromDealloc(o)) return;
  }
  #endif
  PyObject_GC_UnTrack(o);
  Py_CLEAR(p->due);
  (*Py_TYPE(o)->tp_free)(o);
}

static int __pyx_tp_traverse_4grpc_7_cython_6cygrpc__CallState(PyObject *o, visitproc v, void *a) {
  int e;
  struct __pyx_obj_4grpc_7_cython_6cygrpc__CallState *p = (struct __pyx_obj_4grpc_7_cython_6cygrpc__CallState *)o;
  if (p->due) {
    e = (*v)(p->due, a); if (e) return e;
  }
  return 0;
}

static int __pyx_tp_clear_4grpc_7_cython_6cygrpc__CallState(PyObject *o) {
  PyObject* tmp;
  struct __pyx_obj_4grpc_7_cython_6cygrpc__CallState *p = (struct __pyx_obj_4grpc_7_cython_6cygrpc__CallState *)o;
  tmp = ((PyObject*)p->due);
  p->due = ((PyObject*)Py_None); Py_INCREF(Py_None);
  Py_XDECREF(tmp);
  return 0;
}

static PyMethodDef __pyx_methods_4grpc_7_cython_6cygrpc__CallState[] = {
  {"__reduce_cython__", (PyCFunction)__pyx_pw_4grpc_7_cython_6cygrpc_10_CallState_3__reduce_cython__, METH_NOARGS, 0},
  {"__setstate_cython__", (PyCFunction)__pyx_pw_4grpc_7_cython_6cygrpc_10_CallState_5__setstate_cython__, METH_O, 0},
  {0, 0, 0, 0}
};

static PyTypeObject __pyx_type_4grpc_7_cython_6cygrpc__CallState = {
  PyVarObject_HEAD_INIT(0, 0)
  "grpc._cython.cygrpc._CallState", /*tp_name*/
  sizeof(struct __pyx_obj_4grpc_7_cython_6cygrpc__CallState), /*tp_basicsize*/
  0, /*tp_itemsize*/
  __pyx_tp_dealloc_4grpc_7_cython_6cygrpc__CallState, /*tp_dealloc*/
  #if PY_VERSION_HEX < 0x030800b4
  0, /*tp_print*/
  #endif
  #if PY_VERSION_HEX >= 0x030800b4
  0, /*tp_vectorcall_offset*/
  #endif
  0, /*tp_getattr*/
  0, /*tp_setattr*/
  #if PY_MAJOR_VERSION < 3
  0, /*tp_compare*/
  #endif
  #if PY_MAJOR_VERSION >= 3
  0, /*tp_as_async*/
  #endif
  0, /*tp_repr*/
  0, /*tp_as_number*/
  0, /*tp_as_sequence*/
  0, /*tp_as_mapping*/
  0, /*tp_hash*/
  0, /*tp_call*/
  0, /*tp_str*/
  0, /*tp_getattro*/
  0, /*tp_setattro*/
  0, /*tp_as_buffer*/
  Py_TPFLAGS_DEFAULT|Py_TPFLAGS_HAVE_VERSION_TAG|Py_TPFLAGS_CHECKTYPES|Py_TPFLAGS_HAVE_NEWBUFFER|Py_TPFLAGS_BASETYPE|Py_TPFLAGS_HAVE_GC, /*tp_flags*/
  0, /*tp_doc*/
  __pyx_tp_traverse_4grpc_7_cython_6cygrpc__CallState, /*tp_traverse*/
  __pyx_tp_clear_4grpc_7_cython_6cygrpc__CallState, /*tp_clear*/
  0, /*tp_richcompare*/
  0, /*tp_weaklistoffset*/
  0, /*tp_iter*/
  0, /*tp_iternext*/
  __pyx_methods_4grpc_7_cython_6cygrpc__CallState, /*tp_methods*/
  0, /*tp_members*/
  0, /*tp_getset*/
  0, /*tp_base*/
  0, /*tp_dict*/
  0, /*tp_descr_get*/
  0, /*tp_descr_set*/
  0, /*tp_dictoffset*/
  0, /*tp_init*/
  0, /*tp_alloc*/
  __pyx_tp_new_4grpc_7_cython_6cygrpc__CallState, /*tp_new*/
  0, /*tp_free*/
  0, /*tp_is_gc*/
  0, /*tp_bases*/
  0, /*tp_mro*/
  0, /*tp_cache*/
  0, /*tp_subclasses*/
  0, /*tp_weaklist*/
  0, /*tp_del*/
  0, /*tp_version_tag*/
  #if PY_VERSION_HEX >= 0x030400a1
  0, /*tp_finalize*/
  #endif
  #if PY_VERSION_HEX >= 0x030800b1
  0, /*tp_vectorcall*/
  #endif
  #if PY_VERSION_HEX >= 0x030800b4 && PY_VERSION_HEX < 0x03090000
  0, /*tp_print*/
  #endif
};

static PyObject *__pyx_tp_new_4grpc_7_cython_6cygrpc__ChannelState(PyTypeObject *t, CYTHON_UNUSED PyObject *a, CYTHON_UNUSED PyObject *k) {
  struct __pyx_obj_4grpc_7_cython_6cygrpc__ChannelState *p;
  PyObject *o;
  if (likely((t->tp_flags & Py_TPFLAGS_IS_ABSTRACT) == 0)) {
    o = (*t->tp_alloc)(t, 0);
  } else {
    o = (PyObject *) PyBaseObject_Type.tp_new(t, __pyx_empty_tuple, 0);
  }
  if (unlikely(!o)) return 0;
  p = ((struct __pyx_obj_4grpc_7_cython_6cygrpc__ChannelState *)o);
  p->condition = Py_None; Py_INCREF(Py_None);
  p->open = Py_None; Py_INCREF(Py_None);
  p->closed_reason = Py_None; Py_INCREF(Py_None);
  p->integrated_call_states = ((PyObject*)Py_None); Py_INCREF(Py_None);
  p->segregated_call_states = ((PyObject*)Py_None); Py_INCREF(Py_None);
  p->connectivity_due = ((PyObject*)Py_None); Py_INCREF(Py_None);
  if (unlikely(__pyx_pw_4grpc_7_cython_6cygrpc_13_ChannelState_1__cinit__(o, __pyx_empty_tuple, NULL) < 0)) goto bad;
  return o;
  bad:
  Py_DECREF(o); o = 0;
  return NULL;
}

static void __pyx_tp_dealloc_4grpc_7_cython_6cygrpc__ChannelState(PyObject *o) {
  struct __pyx_obj_4grpc_7_cython_6cygrpc__ChannelState *p = (struct __pyx_obj_4grpc_7_cython_6cygrpc__ChannelState *)o;
  #if CYTHON_USE_TP_FINALIZE
  if (unlikely(PyType_HasFeature(Py_TYPE(o), Py_TPFLAGS_HAVE_FINALIZE) && Py_TYPE(o)->tp_finalize) && !_PyGC_FINALIZED(o)) {
    if (PyObject_CallFinalizerFromDealloc(o)) return;
  }
  #endif
  PyObject_GC_UnTrack(o);
  Py_CLEAR(p->condition);
  Py_CLEAR(p->open);
  Py_CLEAR(p->closed_reason);
  Py_CLEAR(p->integrated_call_states);
  Py_CLEAR(p->segregated_call_states);
  Py_CLEAR(p->connectivity_due);
  (*Py_TYPE(o)->tp_free)(o);
}

static int __pyx_tp_traverse_4grpc_7_cython_6cygrpc__ChannelState(PyObject *o, visitproc v, void *a) {
  int e;
  struct __pyx_obj_4grpc_7_cython_6cygrpc__ChannelState *p = (struct __pyx_obj_4grpc_7_cython_6cygrpc__ChannelState *)o;
  if (p->condition) {
    e = (*v)(p->condition, a); if (e) return e;
  }
  if (p->open) {
    e = (*v)(p->open, a); if (e) return e;
  }
  if (p->closed_reason) {
    e = (*v)(p->closed_reason, a); if (e) return e;
  }
  if (p->integrated_call_states) {
    e = (*v)(p->integrated_call_states, a); if (e) return e;
  }
  if (p->segregated_call_states) {
    e = (*v)(p->segregated_call_states, a); if (e) return e;
  }
  if (p->connectivity_due) {
    e = (*v)(p->connectivity_due, a); if (e) return e;
  }
  return 0;
}

static int __pyx_tp_clear_4grpc_7_cython_6cygrpc__ChannelState(PyObject *o) {
  PyObject* tmp;
  struct __pyx_obj_4grpc_7_cython_6cygrpc__ChannelState *p = (struct __pyx_obj_4grpc_7_cython_6cygrpc__ChannelState *)o;
  tmp = ((PyObject*)p->condition);
  p->condition = Py_None; Py_INCREF(Py_None);
  Py_XDECREF(tmp);
  tmp = ((PyObject*)p->open);
  p->open = Py_None; Py_INCREF(Py_None);
  Py_XDECREF(tmp);
  tmp = ((PyObject*)p->closed_reason);
  p->closed_reason = Py_None; Py_INCREF(Py_None);
  Py_XDECREF(tmp);
  tmp = ((PyObject*)p->integrated_call_states);
  p->integrated_call_states = ((PyObject*)Py_None); Py_INCREF(Py_None);
  Py_XDECREF(tmp);
  tmp = ((PyObject*)p->segregated_call_states);
  p->segregated_call_states = ((PyObject*)Py_None); Py_INCREF(Py_None);
  Py_XDECREF(tmp);
  tmp = ((PyObject*)p->connectivity_due);
  p->connectivity_due = ((PyObject*)Py_None); Py_INCREF(Py_None);
  Py_XDECREF(tmp);
  return 0;
}

static PyMethodDef __pyx_methods_4grpc_7_cython_6cygrpc__ChannelState[] = {
  {"__reduce_cython__", (PyCFunction)__pyx_pw_4grpc_7_cython_6cygrpc_13_ChannelState_3__reduce_cython__, METH_NOARGS, 0},
  {"__setstate_cython__", (PyCFunction)__pyx_pw_4grpc_7_cython_6cygrpc_13_ChannelState_5__setstate_cython__, METH_O, 0},
  {0, 0, 0, 0}
};

static PyTypeObject __pyx_type_4grpc_7_cython_6cygrpc__ChannelState = {
  PyVarObject_HEAD_INIT(0, 0)
  "grpc._cython.cygrpc._ChannelState", /*tp_name*/
  sizeof(struct __pyx_obj_4grpc_7_cython_6cygrpc__ChannelState), /*tp_basicsize*/
  0, /*tp_itemsize*/
  __pyx_tp_dealloc_4grpc_7_cython_6cygrpc__ChannelState, /*tp_dealloc*/
  #if PY_VERSION_HEX < 0x030800b4
  0, /*tp_print*/
  #endif
  #if PY_VERSION_HEX >= 0x030800b4
  0, /*tp_vectorcall_offset*/
  #endif
  0, /*tp_getattr*/
  0, /*tp_setattr*/
  #if PY_MAJOR_VERSION < 3
  0, /*tp_compare*/
  #endif
  #if PY_MAJOR_VERSION >= 3
  0, /*tp_as_async*/
  #endif
  0, /*tp_repr*/
  0, /*tp_as_number*/
  0, /*tp_as_sequence*/
  0, /*tp_as_mapping*/
  0, /*tp_hash*/
  0, /*tp_call*/
  0, /*tp_str*/
  0, /*tp_getattro*/
  0, /*tp_setattro*/
  0, /*tp_as_buffer*/
  Py_TPFLAGS_DEFAULT|Py_TPFLAGS_HAVE_VERSION_TAG|Py_TPFLAGS_CHECKTYPES|Py_TPFLAGS_HAVE_NEWBUFFER|Py_TPFLAGS_BASETYPE|Py_TPFLAGS_HAVE_GC, /*tp_flags*/
  0, /*tp_doc*/
  __pyx_tp_traverse_4grpc_7_cython_6cygrpc__ChannelState, /*tp_traverse*/
  __pyx_tp_clear_4grpc_7_cython_6cygrpc__ChannelState, /*tp_clear*/
  0, /*tp_richcompare*/
  0, /*tp_weaklistoffset*/
  0, /*tp_iter*/
  0, /*tp_iternext*/
  __pyx_methods_4grpc_7_cython_6cygrpc__ChannelState, /*tp_methods*/
  0, /*tp_members*/
  0, /*tp_getset*/
  0, /*tp_base*/
  0, /*tp_dict*/
  0, /*tp_descr_get*/
  0, /*tp_descr_set*/
  0, /*tp_dictoffset*/
  0, /*tp_init*/
  0, /*tp_alloc*/
  __pyx_tp_new_4grpc_7_cython_6cygrpc__ChannelState, /*tp_new*/
  0, /*tp_free*/
  0, /*tp_is_gc*/
  0, /*tp_bases*/
  0, /*tp_mro*/
  0, /*tp_cache*/
  0, /*tp_subclasses*/
  0, /*tp_weaklist*/
  0, /*tp_del*/
  0, /*tp_version_tag*/
  #if PY_VERSION_HEX >= 0x030400a1
  0, /*tp_finalize*/
  #endif
  #if PY_VERSION_HEX >= 0x030800b1
  0, /*tp_vectorcall*/
  #endif
  #if PY_VERSION_HEX >= 0x030800b4 && PY_VERSION_HEX < 0x03090000
  0, /*tp_print*/
  #endif
};

static PyObject *__pyx_tp_new_4grpc_7_cython_6cygrpc_IntegratedCall(PyTypeObject *t, PyObject *a, PyObject *k) {
  struct __pyx_obj_4grpc_7_cython_6cygrpc_IntegratedCall *p;
  PyObject *o;
  if (likely((t->tp_flags & Py_TPFLAGS_IS_ABSTRACT) == 0)) {
    o = (*t->tp_alloc)(t, 0);
  } else {
    o = (PyObject *) PyBaseObject_Type.tp_new(t, __pyx_empty_tuple, 0);
  }
  if (unlikely(!o)) return 0;
  p = ((struct __pyx_obj_4grpc_7_cython_6cygrpc_IntegratedCall *)o);
  p->_channel_state = ((struct __pyx_obj_4grpc_7_cython_6cygrpc__ChannelState *)Py_None); Py_INCREF(Py_None);
  p->_call_state = ((struct __pyx_obj_4grpc_7_cython_6cygrpc__CallState *)Py_None); Py_INCREF(Py_None);
  if (unlikely(__pyx_pw_4grpc_7_cython_6cygrpc_14IntegratedCall_1__cinit__(o, a, k) < 0)) goto bad;
  return o;
  bad:
  Py_DECREF(o); o = 0;
  return NULL;
}

static void __pyx_tp_dealloc_4grpc_7_cython_6cygrpc_IntegratedCall(PyObject *o) {
  struct __pyx_obj_4grpc_7_cython_6cygrpc_IntegratedCall *p = (struct __pyx_obj_4grpc_7_cython_6cygrpc_IntegratedCall *)o;
  #if CYTHON_USE_TP_FINALIZE
  if (unlikely(PyType_HasFeature(Py_TYPE(o), Py_TPFLAGS_HAVE_FINALIZE) && Py_TYPE(o)->tp_finalize) && !_PyGC_FINALIZED(o)) {
    if (PyObject_CallFinalizerFromDealloc(o)) return;
  }
  #endif
  PyObject_GC_UnTrack(o);
  Py_CLEAR(p->_channel_state);
  Py_CLEAR(p->_call_state);
  (*Py_TYPE(o)->tp_free)(o);
}

static int __pyx_tp_traverse_4grpc_7_cython_6cygrpc_IntegratedCall(PyObject *o, visitproc v, void *a) {
  int e;
  struct __pyx_obj_4grpc_7_cython_6cygrpc_IntegratedCall *p = (struct __pyx_obj_4grpc_7_cython_6cygrpc_IntegratedCall *)o;
  if (p->_channel_state) {
    e = (*v)(((PyObject *)p->_channel_state), a); if (e) return e;
  }
  if (p->_call_state) {
    e = (*v)(((PyObject *)p->_call_state), a); if (e) return e;
  }
  return 0;
}

static int __pyx_tp_clear_4grpc_7_cython_6cygrpc_IntegratedCall(PyObject *o) {
  PyObject* tmp;
  struct __pyx_obj_4grpc_7_cython_6cygrpc_IntegratedCall *p = (struct __pyx_obj_4grpc_7_cython_6cygrpc_IntegratedCall *)o;
  tmp = ((PyObject*)p->_channel_state);
  p->_channel_state = ((struct __pyx_obj_4grpc_7_cython_6cygrpc__ChannelState *)Py_None); Py_INCREF(Py_None);
  Py_XDECREF(tmp);
  tmp = ((PyObject*)p->_call_state);
  p->_call_state = ((struct __pyx_obj_4grpc_7_cython_6cygrpc__CallState *)Py_None); Py_INCREF(Py_None);
  Py_XDECREF(tmp);
  return 0;
}

static PyMethodDef __pyx_methods_4grpc_7_cython_6cygrpc_IntegratedCall[] = {
  {"operate", (PyCFunction)(void*)(PyCFunctionWithKeywords)__pyx_pw_4grpc_7_cython_6cygrpc_14IntegratedCall_3operate, METH_VARARGS|METH_KEYWORDS, 0},
  {"cancel", (PyCFunction)(void*)(PyCFunctionWithKeywords)__pyx_pw_4grpc_7_cython_6cygrpc_14IntegratedCall_5cancel, METH_VARARGS|METH_KEYWORDS, 0},
  {"__reduce_cython__", (PyCFunction)__pyx_pw_4grpc_7_cython_6cygrpc_14IntegratedCall_7__reduce_cython__, METH_NOARGS, 0},
  {"__setstate_cython__", (PyCFunction)__pyx_pw_4grpc_7_cython_6cygrpc_14IntegratedCall_9__setstate_cython__, METH_O, 0},
  {0, 0, 0, 0}
};

static PyTypeObject __pyx_type_4grpc_7_cython_6cygrpc_IntegratedCall = {
  PyVarObject_HEAD_INIT(0, 0)
  "grpc._cython.cygrpc.IntegratedCall", /*tp_name*/
  sizeof(struct __pyx_obj_4grpc_7_cython_6cygrpc_IntegratedCall), /*tp_basicsize*/
  0, /*tp_itemsize*/
  __pyx_tp_dealloc_4grpc_7_cython_6cygrpc_IntegratedCall, /*tp_dealloc*/
  #if PY_VERSION_HEX < 0x030800b4
  0, /*tp_print*/
  #endif
  #if PY_VERSION_HEX >= 0x030800b4
  0, /*tp_vectorcall_offset*/
  #endif
  0, /*tp_getattr*/
  0, /*tp_setattr*/
  #if PY_MAJOR_VERSION < 3
  0, /*tp_compare*/
  #endif
  #if PY_MAJOR_VERSION >= 3
  0, /*tp_as_async*/
  #endif
  0, /*tp_repr*/
  0, /*tp_as_number*/
  0, /*tp_as_sequence*/
  0, /*tp_as_mapping*/
  0, /*tp_hash*/
  0, /*tp_call*/
  0, /*tp_str*/
  0, /*tp_getattro*/
  0, /*tp_setattro*/
  0, /*tp_as_buffer*/
  Py_TPFLAGS_DEFAULT|Py_TPFLAGS_HAVE_VERSION_TAG|Py_TPFLAGS_CHECKTYPES|Py_TPFLAGS_HAVE_NEWBUFFER|Py_TPFLAGS_BASETYPE|Py_TPFLAGS_HAVE_GC, /*tp_flags*/
  0, /*tp_doc*/
  __pyx_tp_traverse_4grpc_7_cython_6cygrpc_IntegratedCall, /*tp_traverse*/
  __pyx_tp_clear_4grpc_7_cython_6cygrpc_IntegratedCall, /*tp_clear*/
  0, /*tp_richcompare*/
  0, /*tp_weaklistoffset*/
  0, /*tp_iter*/
  0, /*tp_iternext*/
  __pyx_methods_4grpc_7_cython_6cygrpc_IntegratedCall, /*tp_methods*/
  0, /*tp_members*/
  0, /*tp_getset*/
  0, /*tp_base*/
  0, /*tp_dict*/
  0, /*tp_descr_get*/
  0, /*tp_descr_set*/
  0, /*tp_dictoffset*/
  0, /*tp_init*/
  0, /*tp_alloc*/
  __pyx_tp_new_4grpc_7_cython_6cygrpc_IntegratedCall, /*tp_new*/
  0, /*tp_free*/
  0, /*tp_is_gc*/
  0, /*tp_bases*/
  0, /*tp_mro*/
  0, /*tp_cache*/
  0, /*tp_subclasses*/
  0, /*tp_weaklist*/
  0, /*tp_del*/
  0, /*tp_version_tag*/
  #if PY_VERSION_HEX >= 0x030400a1
  0, /*tp_finalize*/
  #endif
  #if PY_VERSION_HEX >= 0x030800b1
  0, /*tp_vectorcall*/
  #endif
  #if PY_VERSION_HEX >= 0x030800b4 && PY_VERSION_HEX < 0x03090000
  0, /*tp_print*/
  #endif
};

static PyObject *__pyx_tp_new_4grpc_7_cython_6cygrpc_SegregatedCall(PyTypeObject *t, PyObject *a, PyObject *k) {
  struct __pyx_obj_4grpc_7_cython_6cygrpc_SegregatedCall *p;
  PyObject *o;
  if (likely((t->tp_flags & Py_TPFLAGS_IS_ABSTRACT) == 0)) {
    o = (*t->tp_alloc)(t, 0);
  } else {
    o = (PyObject *) PyBaseObject_Type.tp_new(t, __pyx_empty_tuple, 0);
  }
  if (unlikely(!o)) return 0;
  p = ((struct __pyx_obj_4grpc_7_cython_6cygrpc_SegregatedCall *)o);
  p->_channel_state = ((struct __pyx_obj_4grpc_7_cython_6cygrpc__ChannelState *)Py_None); Py_INCREF(Py_None);
  p->_call_state = ((struct __pyx_obj_4grpc_7_cython_6cygrpc__CallState *)Py_None); Py_INCREF(Py_None);
  if (unlikely(__pyx_pw_4grpc_7_cython_6cygrpc_14SegregatedCall_1__cinit__(o, a, k) < 0)) goto bad;
  return o;
  bad:
  Py_DECREF(o); o = 0;
  return NULL;
}

static void __pyx_tp_dealloc_4grpc_7_cython_6cygrpc_SegregatedCall(PyObject *o) {
  struct __pyx_obj_4grpc_7_cython_6cygrpc_SegregatedCall *p = (struct __pyx_obj_4grpc_7_cython_6cygrpc_SegregatedCall *)o;
  #if CYTHON_USE_TP_FINALIZE
  if (unlikely(PyType_HasFeature(Py_TYPE(o), Py_TPFLAGS_HAVE_FINALIZE) && Py_TYPE(o)->tp_finalize) && !_PyGC_FINALIZED(o)) {
    if (PyObject_CallFinalizerFromDealloc(o)) return;
  }
  #endif
  PyObject_GC_UnTrack(o);
  Py_CLEAR(p->_channel_state);
  Py_CLEAR(p->_call_state);
  (*Py_TYPE(o)->tp_free)(o);
}

static int __pyx_tp_traverse_4grpc_7_cython_6cygrpc_SegregatedCall(PyObject *o, visitproc v, void *a) {
  int e;
  struct __pyx_obj_4grpc_7_cython_6cygrpc_SegregatedCall *p = (struct __pyx_obj_4grpc_7_cython_6cygrpc_SegregatedCall *)o;
  if (p->_channel_state) {
    e = (*v)(((PyObject *)p->_channel_state), a); if (e) return e;
  }
  if (p->_call_state) {
    e = (*v)(((PyObject *)p->_call_state), a); if (e) return e;
  }
  return 0;
}

static int __pyx_tp_clear_4grpc_7_cython_6cygrpc_SegregatedCall(PyObject *o) {
  PyObject* tmp;
  struct __pyx_obj_4grpc_7_cython_6cygrpc_SegregatedCall *p = (struct __pyx_obj_4grpc_7_cython_6cygrpc_SegregatedCall *)o;
  tmp = ((PyObject*)p->_channel_state);
  p->_channel_state = ((struct __pyx_obj_4grpc_7_cython_6cygrpc__ChannelState *)Py_None); Py_INCREF(Py_None);
  Py_XDECREF(tmp);
  tmp = ((PyObject*)p->_call_state);
  p->_call_state = ((struct __pyx_obj_4grpc_7_cython_6cygrpc__CallState *)Py_None); Py_INCREF(Py_None);
  Py_XDECREF(tmp);
  return 0;
}

static PyMethodDef __pyx_methods_4grpc_7_cython_6cygrpc_SegregatedCall[] = {
  {"operate", (PyCFunction)(void*)(PyCFunctionWithKeywords)__pyx_pw_4grpc_7_cython_6cygrpc_14SegregatedCall_3operate, METH_VARARGS|METH_KEYWORDS, 0},
  {"cancel", (PyCFunction)(void*)(PyCFunctionWithKeywords)__pyx_pw_4grpc_7_cython_6cygrpc_14SegregatedCall_5cancel, METH_VARARGS|METH_KEYWORDS, 0},
  {"next_event", (PyCFunction)__pyx_pw_4grpc_7_cython_6cygrpc_14SegregatedCall_7next_event, METH_NOARGS, 0},
  {"__reduce_cython__", (PyCFunction)__pyx_pw_4grpc_7_cython_6cygrpc_14SegregatedCall_9__reduce_cython__, METH_NOARGS, 0},
  {"__setstate_cython__", (PyCFunction)__pyx_pw_4grpc_7_cython_6cygrpc_14SegregatedCall_11__setstate_cython__, METH_O, 0},
  {0, 0, 0, 0}
};

static PyTypeObject __pyx_type_4grpc_7_cython_6cygrpc_SegregatedCall = {
  PyVarObject_HEAD_INIT(0, 0)
  "grpc._cython.cygrpc.SegregatedCall", /*tp_name*/
  sizeof(struct __pyx_obj_4grpc_7_cython_6cygrpc_SegregatedCall), /*tp_basicsize*/
  0, /*tp_itemsize*/
  __pyx_tp_dealloc_4grpc_7_cython_6cygrpc_SegregatedCall, /*tp_dealloc*/
  #if PY_VERSION_HEX < 0x030800b4
  0, /*tp_print*/
  #endif
  #if PY_VERSION_HEX >= 0x030800b4
  0, /*tp_vectorcall_offset*/
  #endif
  0, /*tp_getattr*/
  0, /*tp_setattr*/
  #if PY_MAJOR_VERSION < 3
  0, /*tp_compare*/
  #endif
  #if PY_MAJOR_VERSION >= 3
  0, /*tp_as_async*/
  #endif
  0, /*tp_repr*/
  0, /*tp_as_number*/
  0, /*tp_as_sequence*/
  0, /*tp_as_mapping*/
  0, /*tp_hash*/
  0, /*tp_call*/
  0, /*tp_str*/
  0, /*tp_getattro*/
  0, /*tp_setattro*/
  0, /*tp_as_buffer*/
  Py_TPFLAGS_DEFAULT|Py_TPFLAGS_HAVE_VERSION_TAG|Py_TPFLAGS_CHECKTYPES|Py_TPFLAGS_HAVE_NEWBUFFER|Py_TPFLAGS_BASETYPE|Py_TPFLAGS_HAVE_GC, /*tp_flags*/
  0, /*tp_doc*/
  __pyx_tp_traverse_4grpc_7_cython_6cygrpc_SegregatedCall, /*tp_traverse*/
  __pyx_tp_clear_4grpc_7_cython_6cygrpc_SegregatedCall, /*tp_clear*/
  0, /*tp_richcompare*/
  0, /*tp_weaklistoffset*/
  0, /*tp_iter*/
  0, /*tp_iternext*/
  __pyx_methods_4grpc_7_cython_6cygrpc_SegregatedCall, /*tp_methods*/
  0, /*tp_members*/
  0, /*tp_getset*/
  0, /*tp_base*/
  0, /*tp_dict*/
  0, /*tp_descr_get*/
  0, /*tp_descr_set*/
  0, /*tp_dictoffset*/
  0, /*tp_init*/
  0, /*tp_alloc*/
  __pyx_tp_new_4grpc_7_cython_6cygrpc_SegregatedCall, /*tp_new*/
  0, /*tp_free*/
  0, /*tp_is_gc*/
  0, /*tp_bases*/
  0, /*tp_mro*/
  0, /*tp_cache*/
  0, /*tp_subclasses*/
  0, /*tp_weaklist*/
  0, /*tp_del*/
  0, /*tp_version_tag*/
  #if PY_VERSION_HEX >= 0x030400a1
  0, /*tp_finalize*/
  #endif
  #if PY_VERSION_HEX >= 0x030800b1
  0, /*tp_vectorcall*/
  #endif
  #if PY_VERSION_HEX >= 0x030800b4 && PY_VERSION_HEX < 0x03090000
  0, /*tp_print*/
  #endif
};

static PyObject *__pyx_tp_new_4grpc_7_cython_6cygrpc_Channel(PyTypeObject *t, PyObject *a, PyObject *k) {
  struct __pyx_obj_4grpc_7_cython_6cygrpc_Channel *p;
  PyObject *o;
  if (likely((t->tp_flags & Py_TPFLAGS_IS_ABSTRACT) == 0)) {
    o = (*t->tp_alloc)(t, 0);
  } else {
    o = (PyObject *) PyBaseObject_Type.tp_new(t, __pyx_empty_tuple, 0);
  }
  if (unlikely(!o)) return 0;
  p = ((struct __pyx_obj_4grpc_7_cython_6cygrpc_Channel *)o);
  p->_state = ((struct __pyx_obj_4grpc_7_cython_6cygrpc__ChannelState *)Py_None); Py_INCREF(Py_None);
  p->_arguments = ((PyObject*)Py_None); Py_INCREF(Py_None);
  if (unlikely(__pyx_pw_4grpc_7_cython_6cygrpc_7Channel_1__cinit__(o, a, k) < 0)) goto bad;
  return o;
  bad:
  Py_DECREF(o); o = 0;
  return NULL;
}

static void __pyx_tp_dealloc_4grpc_7_cython_6cygrpc_Channel(PyObject *o) {
  struct __pyx_obj_4grpc_7_cython_6cygrpc_Channel *p = (struct __pyx_obj_4grpc_7_cython_6cygrpc_Channel *)o;
  #if CYTHON_USE_TP_FINALIZE
  if (unlikely(PyType_HasFeature(Py_TYPE(o), Py_TPFLAGS_HAVE_FINALIZE) && Py_TYPE(o)->tp_finalize) && !_PyGC_FINALIZED(o)) {
    if (PyObject_CallFinalizerFromDealloc(o)) return;
  }
  #endif
  PyObject_GC_UnTrack(o);
  Py_CLEAR(p->_state);
  Py_CLEAR(p->_arguments);
  (*Py_TYPE(o)->tp_free)(o);
}

static int __pyx_tp_traverse_4grpc_7_cython_6cygrpc_Channel(PyObject *o, visitproc v, void *a) {
  int e;
  struct __pyx_obj_4grpc_7_cython_6cygrpc_Channel *p = (struct __pyx_obj_4grpc_7_cython_6cygrpc_Channel *)o;
  if (p->_state) {
    e = (*v)(((PyObject *)p->_state), a); if (e) return e;
  }
  if (p->_arguments) {
    e = (*v)(p->_arguments, a); if (e) return e;
  }
  return 0;
}

static int __pyx_tp_clear_4grpc_7_cython_6cygrpc_Channel(PyObject *o) {
  PyObject* tmp;
  struct __pyx_obj_4grpc_7_cython_6cygrpc_Channel *p = (struct __pyx_obj_4grpc_7_cython_6cygrpc_Channel *)o;
  tmp = ((PyObject*)p->_state);
  p->_state = ((struct __pyx_obj_4grpc_7_cython_6cygrpc__ChannelState *)Py_None); Py_INCREF(Py_None);
  Py_XDECREF(tmp);
  tmp = ((PyObject*)p->_arguments);
  p->_arguments = ((PyObject*)Py_None); Py_INCREF(Py_None);
  Py_XDECREF(tmp);
  return 0;
}

static PyMethodDef __pyx_methods_4grpc_7_cython_6cygrpc_Channel[] = {
  {"target", (PyCFunction)__pyx_pw_4grpc_7_cython_6cygrpc_7Channel_3target, METH_NOARGS, 0},
  {"integrated_call", (PyCFunction)(void*)(PyCFunctionWithKeywords)__pyx_pw_4grpc_7_cython_6cygrpc_7Channel_5integrated_call, METH_VARARGS|METH_KEYWORDS, 0},
  {"next_call_event", (PyCFunction)__pyx_pw_4grpc_7_cython_6cygrpc_7Channel_7next_call_event, METH_NOARGS, 0},
  {"segregated_call", (PyCFunction)(void*)(PyCFunctionWithKeywords)__pyx_pw_4grpc_7_cython_6cygrpc_7Channel_9segregated_call, METH_VARARGS|METH_KEYWORDS, 0},
  {"check_connectivity_state", (PyCFunction)__pyx_pw_4grpc_7_cython_6cygrpc_7Channel_11check_connectivity_state, METH_O, 0},
  {"watch_connectivity_state", (PyCFunction)(void*)(PyCFunctionWithKeywords)__pyx_pw_4grpc_7_cython_6cygrpc_7Channel_13watch_connectivity_state, METH_VARARGS|METH_KEYWORDS, 0},
  {"close", (PyCFunction)(void*)(PyCFunctionWithKeywords)__pyx_pw_4grpc_7_cython_6cygrpc_7Channel_15close, METH_VARARGS|METH_KEYWORDS, 0},
  {"close_on_fork", (PyCFunction)(void*)(PyCFunctionWithKeywords)__pyx_pw_4grpc_7_cython_6cygrpc_7Channel_17close_on_fork, METH_VARARGS|METH_KEYWORDS, 0},
  {"__reduce_cython__", (PyCFunction)__pyx_pw_4grpc_7_cython_6cygrpc_7Channel_19__reduce_cython__, METH_NOARGS, 0},
  {"__setstate_cython__", (PyCFunction)__pyx_pw_4grpc_7_cython_6cygrpc_7Channel_21__setstate_cython__, METH_O, 0},
  {0, 0, 0, 0}
};

static PyTypeObject __pyx_type_4grpc_7_cython_6cygrpc_Channel = {
  PyVarObject_HEAD_INIT(0, 0)
  "grpc._cython.cygrpc.Channel", /*tp_name*/
  sizeof(struct __pyx_obj_4grpc_7_cython_6cygrpc_Channel), /*tp_basicsize*/
  0, /*tp_itemsize*/
  __pyx_tp_dealloc_4grpc_7_cython_6cygrpc_Channel, /*tp_dealloc*/
  #if PY_VERSION_HEX < 0x030800b4
  0, /*tp_print*/
  #endif
  #if PY_VERSION_HEX >= 0x030800b4
  0, /*tp_vectorcall_offset*/
  #endif
  0, /*tp_getattr*/
  0, /*tp_setattr*/
  #if PY_MAJOR_VERSION < 3
  0, /*tp_compare*/
  #endif
  #if PY_MAJOR_VERSION >= 3
  0, /*tp_as_async*/
  #endif
  0, /*tp_repr*/
  0, /*tp_as_number*/
  0, /*tp_as_sequence*/
  0, /*tp_as_mapping*/
  0, /*tp_hash*/
  0, /*tp_call*/
  0, /*tp_str*/
  0, /*tp_getattro*/
  0, /*tp_setattro*/
  0, /*tp_as_buffer*/
  Py_TPFLAGS_DEFAULT|Py_TPFLAGS_HAVE_VERSION_TAG|Py_TPFLAGS_CHECKTYPES|Py_TPFLAGS_HAVE_NEWBUFFER|Py_TPFLAGS_BASETYPE|Py_TPFLAGS_HAVE_GC, /*tp_flags*/
  0, /*tp_doc*/
  __pyx_tp_traverse_4grpc_7_cython_6cygrpc_Channel, /*tp_traverse*/
  __pyx_tp_clear_4grpc_7_cython_6cygrpc_Channel, /*tp_clear*/
  0, /*tp_richcompare*/
  0, /*tp_weaklistoffset*/
  0, /*tp_iter*/
  0, /*tp_iternext*/
  __pyx_methods_4grpc_7_cython_6cygrpc_Channel, /*tp_methods*/
  0, /*tp_members*/
  0, /*tp_getset*/
  0, /*tp_base*/
  0, /*tp_dict*/
  0, /*tp_descr_get*/
  0, /*tp_descr_set*/
  0, /*tp_dictoffset*/
  0, /*tp_init*/
  0, /*tp_alloc*/
  __pyx_tp_new_4grpc_7_cython_6cygrpc_Channel, /*tp_new*/
  0, /*tp_free*/
  0, /*tp_is_gc*/
  0, /*tp_bases*/
  0, /*tp_mro*/
  0, /*tp_cache*/
  0, /*tp_subclasses*/
  0, /*tp_weaklist*/
  0, /*tp_del*/
  0, /*tp_version_tag*/
  #if PY_VERSION_HEX >= 0x030400a1
  0, /*tp_finalize*/
  #endif
  #if PY_VERSION_HEX >= 0x030800b1
  0, /*tp_vectorcall*/
  #endif
  #if PY_VERSION_HEX >= 0x030800b4 && PY_VERSION_HEX < 0x03090000
  0, /*tp_print*/
  #endif
};
static struct __pyx_vtabstruct_4grpc_7_cython_6cygrpc_CallCredentials __pyx_vtable_4grpc_7_cython_6cygrpc_CallCredentials;

static PyObject *__pyx_tp_new_4grpc_7_cython_6cygrpc_CallCredentials(PyTypeObject *t, CYTHON_UNUSED PyObject *a, CYTHON_UNUSED PyObject *k) {
  struct __pyx_obj_4grpc_7_cython_6cygrpc_CallCredentials *p;
  PyObject *o;
  if (likely((t->tp_flags & Py_TPFLAGS_IS_ABSTRACT) == 0)) {
    o = (*t->tp_alloc)(t, 0);
  } else {
    o = (PyObject *) PyBaseObject_Type.tp_new(t, __pyx_empty_tuple, 0);
  }
  if (unlikely(!o)) return 0;
  p = ((struct __pyx_obj_4grpc_7_cython_6cygrpc_CallCredentials *)o);
  p->__pyx_vtab = __pyx_vtabptr_4grpc_7_cython_6cygrpc_CallCredentials;
  return o;
}

static void __pyx_tp_dealloc_4grpc_7_cython_6cygrpc_CallCredentials(PyObject *o) {
  #if CYTHON_USE_TP_FINALIZE
  if (unlikely(PyType_HasFeature(Py_TYPE(o), Py_TPFLAGS_HAVE_FINALIZE) && Py_TYPE(o)->tp_finalize) && (!PyType_IS_GC(Py_TYPE(o)) || !_PyGC_FINALIZED(o))) {
    if (PyObject_CallFinalizerFromDealloc(o)) return;
  }
  #endif
  (*Py_TYPE(o)->tp_free)(o);
}

static PyMethodDef __pyx_methods_4grpc_7_cython_6cygrpc_CallCredentials[] = {
  {"__reduce_cython__", (PyCFunction)__pyx_pw_4grpc_7_cython_6cygrpc_15CallCredentials_1__reduce_cython__, METH_NOARGS, 0},
  {"__setstate_cython__", (PyCFunction)__pyx_pw_4grpc_7_cython_6cygrpc_15CallCredentials_3__setstate_cython__, METH_O, 0},
  {0, 0, 0, 0}
};

static PyTypeObject __pyx_type_4grpc_7_cython_6cygrpc_CallCredentials = {
  PyVarObject_HEAD_INIT(0, 0)
  "grpc._cython.cygrpc.CallCredentials", /*tp_name*/
  sizeof(struct __pyx_obj_4grpc_7_cython_6cygrpc_CallCredentials), /*tp_basicsize*/
  0, /*tp_itemsize*/
  __pyx_tp_dealloc_4grpc_7_cython_6cygrpc_CallCredentials, /*tp_dealloc*/
  #if PY_VERSION_HEX < 0x030800b4
  0, /*tp_print*/
  #endif
  #if PY_VERSION_HEX >= 0x030800b4
  0, /*tp_vectorcall_offset*/
  #endif
  0, /*tp_getattr*/
  0, /*tp_setattr*/
  #if PY_MAJOR_VERSION < 3
  0, /*tp_compare*/
  #endif
  #if PY_MAJOR_VERSION >= 3
  0, /*tp_as_async*/
  #endif
  0, /*tp_repr*/
  0, /*tp_as_number*/
  0, /*tp_as_sequence*/
  0, /*tp_as_mapping*/
  0, /*tp_hash*/
  0, /*tp_call*/
  0, /*tp_str*/
  0, /*tp_getattro*/
  0, /*tp_setattro*/
  0, /*tp_as_buffer*/
  Py_TPFLAGS_DEFAULT|Py_TPFLAGS_HAVE_VERSION_TAG|Py_TPFLAGS_CHECKTYPES|Py_TPFLAGS_HAVE_NEWBUFFER|Py_TPFLAGS_BASETYPE, /*tp_flags*/
  0, /*tp_doc*/
  0, /*tp_traverse*/
  0, /*tp_clear*/
  0, /*tp_richcompare*/
  0, /*tp_weaklistoffset*/
  0, /*tp_iter*/
  0, /*tp_iternext*/
  __pyx_methods_4grpc_7_cython_6cygrpc_CallCredentials, /*tp_methods*/
  0, /*tp_members*/
  0, /*tp_getset*/
  0, /*tp_base*/
  0, /*tp_dict*/
  0, /*tp_descr_get*/
  0, /*tp_descr_set*/
  0, /*tp_dictoffset*/
  0, /*tp_init*/
  0, /*tp_alloc*/
  __pyx_tp_new_4grpc_7_cython_6cygrpc_CallCredentials, /*tp_new*/
  0, /*tp_free*/
  0, /*tp_is_gc*/
  0, /*tp_bases*/
  0, /*tp_mro*/
  0, /*tp_cache*/
  0, /*tp_subclasses*/
  0, /*tp_weaklist*/
  0, /*tp_del*/
  0, /*tp_version_tag*/
  #if PY_VERSION_HEX >= 0x030400a1
  0, /*tp_finalize*/
  #endif
  #if PY_VERSION_HEX >= 0x030800b1
  0, /*tp_vectorcall*/
  #endif
  #if PY_VERSION_HEX >= 0x030800b4 && PY_VERSION_HEX < 0x03090000
  0, /*tp_print*/
  #endif
};
static struct __pyx_vtabstruct_4grpc_7_cython_6cygrpc_MetadataPluginCallCredentials __pyx_vtable_4grpc_7_cython_6cygrpc_MetadataPluginCallCredentials;

static PyObject *__pyx_tp_new_4grpc_7_cython_6cygrpc_MetadataPluginCallCredentials(PyTypeObject *t, PyObject *a, PyObject *k) {
  struct __pyx_obj_4grpc_7_cython_6cygrpc_MetadataPluginCallCredentials *p;
  PyObject *o = __pyx_tp_new_4grpc_7_cython_6cygrpc_CallCredentials(t, a, k);
  if (unlikely(!o)) return 0;
  p = ((struct __pyx_obj_4grpc_7_cython_6cygrpc_MetadataPluginCallCredentials *)o);
  p->__pyx_base.__pyx_vtab = (struct __pyx_vtabstruct_4grpc_7_cython_6cygrpc_CallCredentials*)__pyx_vtabptr_4grpc_7_cython_6cygrpc_MetadataPluginCallCredentials;
  p->_metadata_plugin = Py_None; Py_INCREF(Py_None);
  p->_name = ((PyObject*)Py_None); Py_INCREF(Py_None);
  if (unlikely(__pyx_pw_4grpc_7_cython_6cygrpc_29MetadataPluginCallCredentials_1__cinit__(o, a, k) < 0)) goto bad;
  return o;
  bad:
  Py_DECREF(o); o = 0;
  return NULL;
}

static void __pyx_tp_dealloc_4grpc_7_cython_6cygrpc_MetadataPluginCallCredentials(PyObject *o) {
  struct __pyx_obj_4grpc_7_cython_6cygrpc_MetadataPluginCallCredentials *p = (struct __pyx_obj_4grpc_7_cython_6cygrpc_MetadataPluginCallCredentials *)o;
  #if CYTHON_USE_TP_FINALIZE
  if (unlikely(PyType_HasFeature(Py_TYPE(o), Py_TPFLAGS_HAVE_FINALIZE) && Py_TYPE(o)->tp_finalize) && !_PyGC_FINALIZED(o)) {
    if (PyObject_CallFinalizerFromDealloc(o)) return;
  }
  #endif
  PyObject_GC_UnTrack(o);
  Py_CLEAR(p->_metadata_plugin);
  Py_CLEAR(p->_name);
  #if CYTHON_USE_TYPE_SLOTS
  if (PyType_IS_GC(Py_TYPE(o)->tp_base))
  #endif
  PyObject_GC_Track(o);
  __pyx_tp_dealloc_4grpc_7_cython_6cygrpc_CallCredentials(o);
}

static int __pyx_tp_traverse_4grpc_7_cython_6cygrpc_MetadataPluginCallCredentials(PyObject *o, visitproc v, void *a) {
  int e;
  struct __pyx_obj_4grpc_7_cython_6cygrpc_MetadataPluginCallCredentials *p = (struct __pyx_obj_4grpc_7_cython_6cygrpc_MetadataPluginCallCredentials *)o;
  e = ((likely(__pyx_ptype_4grpc_7_cython_6cygrpc_CallCredentials)) ? ((__pyx_ptype_4grpc_7_cython_6cygrpc_CallCredentials->tp_traverse) ? __pyx_ptype_4grpc_7_cython_6cygrpc_CallCredentials->tp_traverse(o, v, a) : 0) : __Pyx_call_next_tp_traverse(o, v, a, __pyx_tp_traverse_4grpc_7_cython_6cygrpc_MetadataPluginCallCredentials)); if (e) return e;
  if (p->_metadata_plugin) {
    e = (*v)(p->_metadata_plugin, a); if (e) return e;
  }
  return 0;
}

static int __pyx_tp_clear_4grpc_7_cython_6cygrpc_MetadataPluginCallCredentials(PyObject *o) {
  PyObject* tmp;
  struct __pyx_obj_4grpc_7_cython_6cygrpc_MetadataPluginCallCredentials *p = (struct __pyx_obj_4grpc_7_cython_6cygrpc_MetadataPluginCallCredentials *)o;
  if (likely(__pyx_ptype_4grpc_7_cython_6cygrpc_CallCredentials)) { if (__pyx_ptype_4grpc_7_cython_6cygrpc_CallCredentials->tp_clear) __pyx_ptype_4grpc_7_cython_6cygrpc_CallCredentials->tp_clear(o); } else __Pyx_call_next_tp_clear(o, __pyx_tp_clear_4grpc_7_cython_6cygrpc_MetadataPluginCallCredentials);
  tmp = ((PyObject*)p->_metadata_plugin);
  p->_metadata_plugin = Py_None; Py_INCREF(Py_None);
  Py_XDECREF(tmp);
  return 0;
}

static PyObject *__pyx_getprop_4grpc_7_cython_6cygrpc_29MetadataPluginCallCredentials__metadata_plugin(PyObject *o, CYTHON_UNUSED void *x) {
  return __pyx_pw_4grpc_7_cython_6cygrpc_29MetadataPluginCallCredentials_16_metadata_plugin_1__get__(o);
}

static PyObject *__pyx_getprop_4grpc_7_cython_6cygrpc_29MetadataPluginCallCredentials__name(PyObject *o, CYTHON_UNUSED void *x) {
  return __pyx_pw_4grpc_7_cython_6cygrpc_29MetadataPluginCallCredentials_5_name_1__get__(o);
}

static PyMethodDef __pyx_methods_4grpc_7_cython_6cygrpc_MetadataPluginCallCredentials[] = {
  {"__reduce_cython__", (PyCFunction)__pyx_pw_4grpc_7_cython_6cygrpc_29MetadataPluginCallCredentials_3__reduce_cython__, METH_NOARGS, 0},
  {"__setstate_cython__", (PyCFunction)__pyx_pw_4grpc_7_cython_6cygrpc_29MetadataPluginCallCredentials_5__setstate_cython__, METH_O, 0},
  {0, 0, 0, 0}
};

static struct PyGetSetDef __pyx_getsets_4grpc_7_cython_6cygrpc_MetadataPluginCallCredentials[] = {
  {(char *)"_metadata_plugin", __pyx_getprop_4grpc_7_cython_6cygrpc_29MetadataPluginCallCredentials__metadata_plugin, 0, (char *)0, 0},
  {(char *)"_name", __pyx_getprop_4grpc_7_cython_6cygrpc_29MetadataPluginCallCredentials__name, 0, (char *)0, 0},
  {0, 0, 0, 0, 0}
};

static PyTypeObject __pyx_type_4grpc_7_cython_6cygrpc_MetadataPluginCallCredentials = {
  PyVarObject_HEAD_INIT(0, 0)
  "grpc._cython.cygrpc.MetadataPluginCallCredentials", /*tp_name*/
  sizeof(struct __pyx_obj_4grpc_7_cython_6cygrpc_MetadataPluginCallCredentials), /*tp_basicsize*/
  0, /*tp_itemsize*/
  __pyx_tp_dealloc_4grpc_7_cython_6cygrpc_MetadataPluginCallCredentials, /*tp_dealloc*/
  #if PY_VERSION_HEX < 0x030800b4
  0, /*tp_print*/
  #endif
  #if PY_VERSION_HEX >= 0x030800b4
  0, /*tp_vectorcall_offset*/
  #endif
  0, /*tp_getattr*/
  0, /*tp_setattr*/
  #if PY_MAJOR_VERSION < 3
  0, /*tp_compare*/
  #endif
  #if PY_MAJOR_VERSION >= 3
  0, /*tp_as_async*/
  #endif
  0, /*tp_repr*/
  0, /*tp_as_number*/
  0, /*tp_as_sequence*/
  0, /*tp_as_mapping*/
  0, /*tp_hash*/
  0, /*tp_call*/
  0, /*tp_str*/
  0, /*tp_getattro*/
  0, /*tp_setattro*/
  0, /*tp_as_buffer*/
  Py_TPFLAGS_DEFAULT|Py_TPFLAGS_HAVE_VERSION_TAG|Py_TPFLAGS_CHECKTYPES|Py_TPFLAGS_HAVE_NEWBUFFER|Py_TPFLAGS_BASETYPE|Py_TPFLAGS_HAVE_GC, /*tp_flags*/
  0, /*tp_doc*/
  __pyx_tp_traverse_4grpc_7_cython_6cygrpc_MetadataPluginCallCredentials, /*tp_traverse*/
  __pyx_tp_clear_4grpc_7_cython_6cygrpc_MetadataPluginCallCredentials, /*tp_clear*/
  0, /*tp_richcompare*/
  0, /*tp_weaklistoffset*/
  0, /*tp_iter*/
  0, /*tp_iternext*/
  __pyx_methods_4grpc_7_cython_6cygrpc_MetadataPluginCallCredentials, /*tp_methods*/
  0, /*tp_members*/
  __pyx_getsets_4grpc_7_cython_6cygrpc_MetadataPluginCallCredentials, /*tp_getset*/
  0, /*tp_base*/
  0, /*tp_dict*/
  0, /*tp_descr_get*/
  0, /*tp_descr_set*/
  0, /*tp_dictoffset*/
  0, /*tp_init*/
  0, /*tp_alloc*/
  __pyx_tp_new_4grpc_7_cython_6cygrpc_MetadataPluginCallCredentials, /*tp_new*/
  0, /*tp_free*/
  0, /*tp_is_gc*/
  0, /*tp_bases*/
  0, /*tp_mro*/
  0, /*tp_cache*/
  0, /*tp_subclasses*/
  0, /*tp_weaklist*/
  0, /*tp_del*/
  0, /*tp_version_tag*/
  #if PY_VERSION_HEX >= 0x030400a1
  0, /*tp_finalize*/
  #endif
  #if PY_VERSION_HEX >= 0x030800b1
  0, /*tp_vectorcall*/
  #endif
  #if PY_VERSION_HEX >= 0x030800b4 && PY_VERSION_HEX < 0x03090000
  0, /*tp_print*/
  #endif
};
static struct __pyx_vtabstruct_4grpc_7_cython_6cygrpc_CompositeCallCredentials __pyx_vtable_4grpc_7_cython_6cygrpc_CompositeCallCredentials;

static PyObject *__pyx_tp_new_4grpc_7_cython_6cygrpc_CompositeCallCredentials(PyTypeObject *t, PyObject *a, PyObject *k) {
  struct __pyx_obj_4grpc_7_cython_6cygrpc_CompositeCallCredentials *p;
  PyObject *o = __pyx_tp_new_4grpc_7_cython_6cygrpc_CallCredentials(t, a, k);
  if (unlikely(!o)) return 0;
  p = ((struct __pyx_obj_4grpc_7_cython_6cygrpc_CompositeCallCredentials *)o);
  p->__pyx_base.__pyx_vtab = (struct __pyx_vtabstruct_4grpc_7_cython_6cygrpc_CallCredentials*)__pyx_vtabptr_4grpc_7_cython_6cygrpc_CompositeCallCredentials;
  p->_call_credentialses = ((PyObject*)Py_None); Py_INCREF(Py_None);
  if (unlikely(__pyx_pw_4grpc_7_cython_6cygrpc_24CompositeCallCredentials_1__cinit__(o, a, k) < 0)) goto bad;
  return o;
  bad:
  Py_DECREF(o); o = 0;
  return NULL;
}

static void __pyx_tp_dealloc_4grpc_7_cython_6cygrpc_CompositeCallCredentials(PyObject *o) {
  struct __pyx_obj_4grpc_7_cython_6cygrpc_CompositeCallCredentials *p = (struct __pyx_obj_4grpc_7_cython_6cygrpc_CompositeCallCredentials *)o;
  #if CYTHON_USE_TP_FINALIZE
  if (unlikely(PyType_HasFeature(Py_TYPE(o), Py_TPFLAGS_HAVE_FINALIZE) && Py_TYPE(o)->tp_finalize) && !_PyGC_FINALIZED(o)) {
    if (PyObject_CallFinalizerFromDealloc(o)) return;
  }
  #endif
  PyObject_GC_UnTrack(o);
  Py_CLEAR(p->_call_credentialses);
  #if CYTHON_USE_TYPE_SLOTS
  if (PyType_IS_GC(Py_TYPE(o)->tp_base))
  #endif
  PyObject_GC_Track(o);
  __pyx_tp_dealloc_4grpc_7_cython_6cygrpc_CallCredentials(o);
}

static int __pyx_tp_traverse_4grpc_7_cython_6cygrpc_CompositeCallCredentials(PyObject *o, visitproc v, void *a) {
  int e;
  struct __pyx_obj_4grpc_7_cython_6cygrpc_CompositeCallCredentials *p = (struct __pyx_obj_4grpc_7_cython_6cygrpc_CompositeCallCredentials *)o;
  e = ((likely(__pyx_ptype_4grpc_7_cython_6cygrpc_CallCredentials)) ? ((__pyx_ptype_4grpc_7_cython_6cygrpc_CallCredentials->tp_traverse) ? __pyx_ptype_4grpc_7_cython_6cygrpc_CallCredentials->tp_traverse(o, v, a) : 0) : __Pyx_call_next_tp_traverse(o, v, a, __pyx_tp_traverse_4grpc_7_cython_6cygrpc_CompositeCallCredentials)); if (e) return e;
  if (p->_call_credentialses) {
    e = (*v)(p->_call_credentialses, a); if (e) return e;
  }
  return 0;
}

static int __pyx_tp_clear_4grpc_7_cython_6cygrpc_CompositeCallCredentials(PyObject *o) {
  PyObject* tmp;
  struct __pyx_obj_4grpc_7_cython_6cygrpc_CompositeCallCredentials *p = (struct __pyx_obj_4grpc_7_cython_6cygrpc_CompositeCallCredentials *)o;
  if (likely(__pyx_ptype_4grpc_7_cython_6cygrpc_CallCredentials)) { if (__pyx_ptype_4grpc_7_cython_6cygrpc_CallCredentials->tp_clear) __pyx_ptype_4grpc_7_cython_6cygrpc_CallCredentials->tp_clear(o); } else __Pyx_call_next_tp_clear(o, __pyx_tp_clear_4grpc_7_cython_6cygrpc_CompositeCallCredentials);
  tmp = ((PyObject*)p->_call_credentialses);
  p->_call_credentialses = ((PyObject*)Py_None); Py_INCREF(Py_None);
  Py_XDECREF(tmp);
  return 0;
}

static PyObject *__pyx_getprop_4grpc_7_cython_6cygrpc_24CompositeCallCredentials__call_credentialses(PyObject *o, CYTHON_UNUSED void *x) {
  return __pyx_pw_4grpc_7_cython_6cygrpc_24CompositeCallCredentials_19_call_credentialses_1__get__(o);
}

static PyMethodDef __pyx_methods_4grpc_7_cython_6cygrpc_CompositeCallCredentials[] = {
  {"__reduce_cython__", (PyCFunction)__pyx_pw_4grpc_7_cython_6cygrpc_24CompositeCallCredentials_3__reduce_cython__, METH_NOARGS, 0},
  {"__setstate_cython__", (PyCFunction)__pyx_pw_4grpc_7_cython_6cygrpc_24CompositeCallCredentials_5__setstate_cython__, METH_O, 0},
  {0, 0, 0, 0}
};

static struct PyGetSetDef __pyx_getsets_4grpc_7_cython_6cygrpc_CompositeCallCredentials[] = {
  {(char *)"_call_credentialses", __pyx_getprop_4grpc_7_cython_6cygrpc_24CompositeCallCredentials__call_credentialses, 0, (char *)0, 0},
  {0, 0, 0, 0, 0}
};

static PyTypeObject __pyx_type_4grpc_7_cython_6cygrpc_CompositeCallCredentials = {
  PyVarObject_HEAD_INIT(0, 0)
  "grpc._cython.cygrpc.CompositeCallCredentials", /*tp_name*/
  sizeof(struct __pyx_obj_4grpc_7_cython_6cygrpc_CompositeCallCredentials), /*tp_basicsize*/
  0, /*tp_itemsize*/
  __pyx_tp_dealloc_4grpc_7_cython_6cygrpc_CompositeCallCredentials, /*tp_dealloc*/
  #if PY_VERSION_HEX < 0x030800b4
  0, /*tp_print*/
  #endif
  #if PY_VERSION_HEX >= 0x030800b4
  0, /*tp_vectorcall_offset*/
  #endif
  0, /*tp_getattr*/
  0, /*tp_setattr*/
  #if PY_MAJOR_VERSION < 3
  0, /*tp_compare*/
  #endif
  #if PY_MAJOR_VERSION >= 3
  0, /*tp_as_async*/
  #endif
  0, /*tp_repr*/
  0, /*tp_as_number*/
  0, /*tp_as_sequence*/
  0, /*tp_as_mapping*/
  0, /*tp_hash*/
  0, /*tp_call*/
  0, /*tp_str*/
  0, /*tp_getattro*/
  0, /*tp_setattro*/
  0, /*tp_as_buffer*/
  Py_TPFLAGS_DEFAULT|Py_TPFLAGS_HAVE_VERSION_TAG|Py_TPFLAGS_CHECKTYPES|Py_TPFLAGS_HAVE_NEWBUFFER|Py_TPFLAGS_BASETYPE|Py_TPFLAGS_HAVE_GC, /*tp_flags*/
  0, /*tp_doc*/
  __pyx_tp_traverse_4grpc_7_cython_6cygrpc_CompositeCallCredentials, /*tp_traverse*/
  __pyx_tp_clear_4grpc_7_cython_6cygrpc_CompositeCallCredentials, /*tp_clear*/
  0, /*tp_richcompare*/
  0, /*tp_weaklistoffset*/
  0, /*tp_iter*/
  0, /*tp_iternext*/
  __pyx_methods_4grpc_7_cython_6cygrpc_CompositeCallCredentials, /*tp_methods*/
  0, /*tp_members*/
  __pyx_getsets_4grpc_7_cython_6cygrpc_CompositeCallCredentials, /*tp_getset*/
  0, /*tp_base*/
  0, /*tp_dict*/
  0, /*tp_descr_get*/
  0, /*tp_descr_set*/
  0, /*tp_dictoffset*/
  0, /*tp_init*/
  0, /*tp_alloc*/
  __pyx_tp_new_4grpc_7_cython_6cygrpc_CompositeCallCredentials, /*tp_new*/
  0, /*tp_free*/
  0, /*tp_is_gc*/
  0, /*tp_bases*/
  0, /*tp_mro*/
  0, /*tp_cache*/
  0, /*tp_subclasses*/
  0, /*tp_weaklist*/
  0, /*tp_del*/
  0, /*tp_version_tag*/
  #if PY_VERSION_HEX >= 0x030400a1
  0, /*tp_finalize*/
  #endif
  #if PY_VERSION_HEX >= 0x030800b1
  0, /*tp_vectorcall*/
  #endif
  #if PY_VERSION_HEX >= 0x030800b4 && PY_VERSION_HEX < 0x03090000
  0, /*tp_print*/
  #endif
};
static struct __pyx_vtabstruct_4grpc_7_cython_6cygrpc_ChannelCredentials __pyx_vtable_4grpc_7_cython_6cygrpc_ChannelCredentials;

static PyObject *__pyx_tp_new_4grpc_7_cython_6cygrpc_ChannelCredentials(PyTypeObject *t, CYTHON_UNUSED PyObject *a, CYTHON_UNUSED PyObject *k) {
  struct __pyx_obj_4grpc_7_cython_6cygrpc_ChannelCredentials *p;
  PyObject *o;
  if (likely((t->tp_flags & Py_TPFLAGS_IS_ABSTRACT) == 0)) {
    o = (*t->tp_alloc)(t, 0);
  } else {
    o = (PyObject *) PyBaseObject_Type.tp_new(t, __pyx_empty_tuple, 0);
  }
  if (unlikely(!o)) return 0;
  p = ((struct __pyx_obj_4grpc_7_cython_6cygrpc_ChannelCredentials *)o);
  p->__pyx_vtab = __pyx_vtabptr_4grpc_7_cython_6cygrpc_ChannelCredentials;
  return o;
}

static void __pyx_tp_dealloc_4grpc_7_cython_6cygrpc_ChannelCredentials(PyObject *o) {
  #if CYTHON_USE_TP_FINALIZE
  if (unlikely(PyType_HasFeature(Py_TYPE(o), Py_TPFLAGS_HAVE_FINALIZE) && Py_TYPE(o)->tp_finalize) && (!PyType_IS_GC(Py_TYPE(o)) || !_PyGC_FINALIZED(o))) {
    if (PyObject_CallFinalizerFromDealloc(o)) return;
  }
  #endif
  (*Py_TYPE(o)->tp_free)(o);
}

static PyMethodDef __pyx_methods_4grpc_7_cython_6cygrpc_ChannelCredentials[] = {
  {"__reduce_cython__", (PyCFunction)__pyx_pw_4grpc_7_cython_6cygrpc_18ChannelCredentials_1__reduce_cython__, METH_NOARGS, 0},
  {"__setstate_cython__", (PyCFunction)__pyx_pw_4grpc_7_cython_6cygrpc_18ChannelCredentials_3__setstate_cython__, METH_O, 0},
  {0, 0, 0, 0}
};

static PyTypeObject __pyx_type_4grpc_7_cython_6cygrpc_ChannelCredentials = {
  PyVarObject_HEAD_INIT(0, 0)
  "grpc._cython.cygrpc.ChannelCredentials", /*tp_name*/
  sizeof(struct __pyx_obj_4grpc_7_cython_6cygrpc_ChannelCredentials), /*tp_basicsize*/
  0, /*tp_itemsize*/
  __pyx_tp_dealloc_4grpc_7_cython_6cygrpc_ChannelCredentials, /*tp_dealloc*/
  #if PY_VERSION_HEX < 0x030800b4
  0, /*tp_print*/
  #endif
  #if PY_VERSION_HEX >= 0x030800b4
  0, /*tp_vectorcall_offset*/
  #endif
  0, /*tp_getattr*/
  0, /*tp_setattr*/
  #if PY_MAJOR_VERSION < 3
  0, /*tp_compare*/
  #endif
  #if PY_MAJOR_VERSION >= 3
  0, /*tp_as_async*/
  #endif
  0, /*tp_repr*/
  0, /*tp_as_number*/
  0, /*tp_as_sequence*/
  0, /*tp_as_mapping*/
  0, /*tp_hash*/
  0, /*tp_call*/
  0, /*tp_str*/
  0, /*tp_getattro*/
  0, /*tp_setattro*/
  0, /*tp_as_buffer*/
  Py_TPFLAGS_DEFAULT|Py_TPFLAGS_HAVE_VERSION_TAG|Py_TPFLAGS_CHECKTYPES|Py_TPFLAGS_HAVE_NEWBUFFER|Py_TPFLAGS_BASETYPE, /*tp_flags*/
  0, /*tp_doc*/
  0, /*tp_traverse*/
  0, /*tp_clear*/
  0, /*tp_richcompare*/
  0, /*tp_weaklistoffset*/
  0, /*tp_iter*/
  0, /*tp_iternext*/
  __pyx_methods_4grpc_7_cython_6cygrpc_ChannelCredentials, /*tp_methods*/
  0, /*tp_members*/
  0, /*tp_getset*/
  0, /*tp_base*/
  0, /*tp_dict*/
  0, /*tp_descr_get*/
  0, /*tp_descr_set*/
  0, /*tp_dictoffset*/
  0, /*tp_init*/
  0, /*tp_alloc*/
  __pyx_tp_new_4grpc_7_cython_6cygrpc_ChannelCredentials, /*tp_new*/
  0, /*tp_free*/
  0, /*tp_is_gc*/
  0, /*tp_bases*/
  0, /*tp_mro*/
  0, /*tp_cache*/
  0, /*tp_subclasses*/
  0, /*tp_weaklist*/
  0, /*tp_del*/
  0, /*tp_version_tag*/
  #if PY_VERSION_HEX >= 0x030400a1
  0, /*tp_finalize*/
  #endif
  #if PY_VERSION_HEX >= 0x030800b1
  0, /*tp_vectorcall*/
  #endif
  #if PY_VERSION_HEX >= 0x030800b4 && PY_VERSION_HEX < 0x03090000
  0, /*tp_print*/
  #endif
};

static PyObject *__pyx_tp_new_4grpc_7_cython_6cygrpc_SSLSessionCacheLRU(PyTypeObject *t, PyObject *a, PyObject *k) {
  PyObject *o;
  if (likely((t->tp_flags & Py_TPFLAGS_IS_ABSTRACT) == 0)) {
    o = (*t->tp_alloc)(t, 0);
  } else {
    o = (PyObject *) PyBaseObject_Type.tp_new(t, __pyx_empty_tuple, 0);
  }
  if (unlikely(!o)) return 0;
  if (unlikely(__pyx_pw_4grpc_7_cython_6cygrpc_18SSLSessionCacheLRU_1__cinit__(o, a, k) < 0)) goto bad;
  return o;
  bad:
  Py_DECREF(o); o = 0;
  return NULL;
}

static void __pyx_tp_dealloc_4grpc_7_cython_6cygrpc_SSLSessionCacheLRU(PyObject *o) {
  #if CYTHON_USE_TP_FINALIZE
  if (unlikely(PyType_HasFeature(Py_TYPE(o), Py_TPFLAGS_HAVE_FINALIZE) && Py_TYPE(o)->tp_finalize) && (!PyType_IS_GC(Py_TYPE(o)) || !_PyGC_FINALIZED(o))) {
    if (PyObject_CallFinalizerFromDealloc(o)) return;
  }
  #endif
  {
    PyObject *etype, *eval, *etb;
    PyErr_Fetch(&etype, &eval, &etb);
    __Pyx_SET_REFCNT(o, Py_REFCNT(o) + 1);
    __pyx_pw_4grpc_7_cython_6cygrpc_18SSLSessionCacheLRU_5__dealloc__(o);
    __Pyx_SET_REFCNT(o, Py_REFCNT(o) - 1);
    PyErr_Restore(etype, eval, etb);
  }
  (*Py_TYPE(o)->tp_free)(o);
}

static PyMethodDef __pyx_methods_4grpc_7_cython_6cygrpc_SSLSessionCacheLRU[] = {
  {"__reduce_cython__", (PyCFunction)__pyx_pw_4grpc_7_cython_6cygrpc_18SSLSessionCacheLRU_7__reduce_cython__, METH_NOARGS, 0},
  {"__setstate_cython__", (PyCFunction)__pyx_pw_4grpc_7_cython_6cygrpc_18SSLSessionCacheLRU_9__setstate_cython__, METH_O, 0},
  {0, 0, 0, 0}
};

static PyNumberMethods __pyx_tp_as_number_SSLSessionCacheLRU = {
  0, /*nb_add*/
  0, /*nb_subtract*/
  0, /*nb_multiply*/
  #if PY_MAJOR_VERSION < 3 || (CYTHON_COMPILING_IN_PYPY && PY_VERSION_HEX < 0x03050000)
  0, /*nb_divide*/
  #endif
  0, /*nb_remainder*/
  0, /*nb_divmod*/
  0, /*nb_power*/
  0, /*nb_negative*/
  0, /*nb_positive*/
  0, /*nb_absolute*/
  0, /*nb_nonzero*/
  0, /*nb_invert*/
  0, /*nb_lshift*/
  0, /*nb_rshift*/
  0, /*nb_and*/
  0, /*nb_xor*/
  0, /*nb_or*/
  #if PY_MAJOR_VERSION < 3 || (CYTHON_COMPILING_IN_PYPY && PY_VERSION_HEX < 0x03050000)
  0, /*nb_coerce*/
  #endif
  __pyx_pw_4grpc_7_cython_6cygrpc_18SSLSessionCacheLRU_3__int__, /*nb_int*/
  #if PY_MAJOR_VERSION < 3
  __pyx_pw_4grpc_7_cython_6cygrpc_18SSLSessionCacheLRU_3__int__, /*nb_long*/
  #else
  0, /*reserved*/
  #endif
  0, /*nb_float*/
  #if PY_MAJOR_VERSION < 3 || (CYTHON_COMPILING_IN_PYPY && PY_VERSION_HEX < 0x03050000)
  0, /*nb_oct*/
  #endif
  #if PY_MAJOR_VERSION < 3 || (CYTHON_COMPILING_IN_PYPY && PY_VERSION_HEX < 0x03050000)
  0, /*nb_hex*/
  #endif
  0, /*nb_inplace_add*/
  0, /*nb_inplace_subtract*/
  0, /*nb_inplace_multiply*/
  #if PY_MAJOR_VERSION < 3 || (CYTHON_COMPILING_IN_PYPY && PY_VERSION_HEX < 0x03050000)
  0, /*nb_inplace_divide*/
  #endif
  0, /*nb_inplace_remainder*/
  0, /*nb_inplace_power*/
  0, /*nb_inplace_lshift*/
  0, /*nb_inplace_rshift*/
  0, /*nb_inplace_and*/
  0, /*nb_inplace_xor*/
  0, /*nb_inplace_or*/
  0, /*nb_floor_divide*/
  0, /*nb_true_divide*/
  0, /*nb_inplace_floor_divide*/
  0, /*nb_inplace_true_divide*/
  0, /*nb_index*/
  #if PY_VERSION_HEX >= 0x03050000
  0, /*nb_matrix_multiply*/
  #endif
  #if PY_VERSION_HEX >= 0x03050000
  0, /*nb_inplace_matrix_multiply*/
  #endif
};

static PyTypeObject __pyx_type_4grpc_7_cython_6cygrpc_SSLSessionCacheLRU = {
  PyVarObject_HEAD_INIT(0, 0)
  "grpc._cython.cygrpc.SSLSessionCacheLRU", /*tp_name*/
  sizeof(struct __pyx_obj_4grpc_7_cython_6cygrpc_SSLSessionCacheLRU), /*tp_basicsize*/
  0, /*tp_itemsize*/
  __pyx_tp_dealloc_4grpc_7_cython_6cygrpc_SSLSessionCacheLRU, /*tp_dealloc*/
  #if PY_VERSION_HEX < 0x030800b4
  0, /*tp_print*/
  #endif
  #if PY_VERSION_HEX >= 0x030800b4
  0, /*tp_vectorcall_offset*/
  #endif
  0, /*tp_getattr*/
  0, /*tp_setattr*/
  #if PY_MAJOR_VERSION < 3
  0, /*tp_compare*/
  #endif
  #if PY_MAJOR_VERSION >= 3
  0, /*tp_as_async*/
  #endif
  0, /*tp_repr*/
  &__pyx_tp_as_number_SSLSessionCacheLRU, /*tp_as_number*/
  0, /*tp_as_sequence*/
  0, /*tp_as_mapping*/
  0, /*tp_hash*/
  0, /*tp_call*/
  0, /*tp_str*/
  0, /*tp_getattro*/
  0, /*tp_setattro*/
  0, /*tp_as_buffer*/
  Py_TPFLAGS_DEFAULT|Py_TPFLAGS_HAVE_VERSION_TAG|Py_TPFLAGS_CHECKTYPES|Py_TPFLAGS_HAVE_NEWBUFFER|Py_TPFLAGS_BASETYPE, /*tp_flags*/
  0, /*tp_doc*/
  0, /*tp_traverse*/
  0, /*tp_clear*/
  0, /*tp_richcompare*/
  0, /*tp_weaklistoffset*/
  0, /*tp_iter*/
  0, /*tp_iternext*/
  __pyx_methods_4grpc_7_cython_6cygrpc_SSLSessionCacheLRU, /*tp_methods*/
  0, /*tp_members*/
  0, /*tp_getset*/
  0, /*tp_base*/
  0, /*tp_dict*/
  0, /*tp_descr_get*/
  0, /*tp_descr_set*/
  0, /*tp_dictoffset*/
  0, /*tp_init*/
  0, /*tp_alloc*/
  __pyx_tp_new_4grpc_7_cython_6cygrpc_SSLSessionCacheLRU, /*tp_new*/
  0, /*tp_free*/
  0, /*tp_is_gc*/
  0, /*tp_bases*/
  0, /*tp_mro*/
  0, /*tp_cache*/
  0, /*tp_subclasses*/
  0, /*tp_weaklist*/
  0, /*tp_del*/
  0, /*tp_version_tag*/
  #if PY_VERSION_HEX >= 0x030400a1
  0, /*tp_finalize*/
  #endif
  #if PY_VERSION_HEX >= 0x030800b1
  0, /*tp_vectorcall*/
  #endif
  #if PY_VERSION_HEX >= 0x030800b4 && PY_VERSION_HEX < 0x03090000
  0, /*tp_print*/
  #endif
};
static struct __pyx_vtabstruct_4grpc_7_cython_6cygrpc_SSLChannelCredentials __pyx_vtable_4grpc_7_cython_6cygrpc_SSLChannelCredentials;

static PyObject *__pyx_tp_new_4grpc_7_cython_6cygrpc_SSLChannelCredentials(PyTypeObject *t, PyObject *a, PyObject *k) {
  struct __pyx_obj_4grpc_7_cython_6cygrpc_SSLChannelCredentials *p;
  PyObject *o = __pyx_tp_new_4grpc_7_cython_6cygrpc_ChannelCredentials(t, a, k);
  if (unlikely(!o)) return 0;
  p = ((struct __pyx_obj_4grpc_7_cython_6cygrpc_SSLChannelCredentials *)o);
  p->__pyx_base.__pyx_vtab = (struct __pyx_vtabstruct_4grpc_7_cython_6cygrpc_ChannelCredentials*)__pyx_vtabptr_4grpc_7_cython_6cygrpc_SSLChannelCredentials;
  p->_pem_root_certificates = Py_None; Py_INCREF(Py_None);
  p->_private_key = Py_None; Py_INCREF(Py_None);
  p->_certificate_chain = Py_None; Py_INCREF(Py_None);
  if (unlikely(__pyx_pw_4grpc_7_cython_6cygrpc_21SSLChannelCredentials_1__cinit__(o, a, k) < 0)) goto bad;
  return o;
  bad:
  Py_DECREF(o); o = 0;
  return NULL;
}

static void __pyx_tp_dealloc_4grpc_7_cython_6cygrpc_SSLChannelCredentials(PyObject *o) {
  struct __pyx_obj_4grpc_7_cython_6cygrpc_SSLChannelCredentials *p = (struct __pyx_obj_4grpc_7_cython_6cygrpc_SSLChannelCredentials *)o;
  #if CYTHON_USE_TP_FINALIZE
  if (unlikely(PyType_HasFeature(Py_TYPE(o), Py_TPFLAGS_HAVE_FINALIZE) && Py_TYPE(o)->tp_finalize) && !_PyGC_FINALIZED(o)) {
    if (PyObject_CallFinalizerFromDealloc(o)) return;
  }
  #endif
  PyObject_GC_UnTrack(o);
  Py_CLEAR(p->_pem_root_certificates);
  Py_CLEAR(p->_private_key);
  Py_CLEAR(p->_certificate_chain);
  #if CYTHON_USE_TYPE_SLOTS
  if (PyType_IS_GC(Py_TYPE(o)->tp_base))
  #endif
  PyObject_GC_Track(o);
  __pyx_tp_dealloc_4grpc_7_cython_6cygrpc_ChannelCredentials(o);
}

static int __pyx_tp_traverse_4grpc_7_cython_6cygrpc_SSLChannelCredentials(PyObject *o, visitproc v, void *a) {
  int e;
  struct __pyx_obj_4grpc_7_cython_6cygrpc_SSLChannelCredentials *p = (struct __pyx_obj_4grpc_7_cython_6cygrpc_SSLChannelCredentials *)o;
  e = ((likely(__pyx_ptype_4grpc_7_cython_6cygrpc_ChannelCredentials)) ? ((__pyx_ptype_4grpc_7_cython_6cygrpc_ChannelCredentials->tp_traverse) ? __pyx_ptype_4grpc_7_cython_6cygrpc_ChannelCredentials->tp_traverse(o, v, a) : 0) : __Pyx_call_next_tp_traverse(o, v, a, __pyx_tp_traverse_4grpc_7_cython_6cygrpc_SSLChannelCredentials)); if (e) return e;
  if (p->_pem_root_certificates) {
    e = (*v)(p->_pem_root_certificates, a); if (e) return e;
  }
  if (p->_private_key) {
    e = (*v)(p->_private_key, a); if (e) return e;
  }
  if (p->_certificate_chain) {
    e = (*v)(p->_certificate_chain, a); if (e) return e;
  }
  return 0;
}

static int __pyx_tp_clear_4grpc_7_cython_6cygrpc_SSLChannelCredentials(PyObject *o) {
  PyObject* tmp;
  struct __pyx_obj_4grpc_7_cython_6cygrpc_SSLChannelCredentials *p = (struct __pyx_obj_4grpc_7_cython_6cygrpc_SSLChannelCredentials *)o;
  if (likely(__pyx_ptype_4grpc_7_cython_6cygrpc_ChannelCredentials)) { if (__pyx_ptype_4grpc_7_cython_6cygrpc_ChannelCredentials->tp_clear) __pyx_ptype_4grpc_7_cython_6cygrpc_ChannelCredentials->tp_clear(o); } else __Pyx_call_next_tp_clear(o, __pyx_tp_clear_4grpc_7_cython_6cygrpc_SSLChannelCredentials);
  tmp = ((PyObject*)p->_pem_root_certificates);
  p->_pem_root_certificates = Py_None; Py_INCREF(Py_None);
  Py_XDECREF(tmp);
  tmp = ((PyObject*)p->_private_key);
  p->_private_key = Py_None; Py_INCREF(Py_None);
  Py_XDECREF(tmp);
  tmp = ((PyObject*)p->_certificate_chain);
  p->_certificate_chain = Py_None; Py_INCREF(Py_None);
  Py_XDECREF(tmp);
  return 0;
}

static PyObject *__pyx_getprop_4grpc_7_cython_6cygrpc_21SSLChannelCredentials__pem_root_certificates(PyObject *o, CYTHON_UNUSED void *x) {
  return __pyx_pw_4grpc_7_cython_6cygrpc_21SSLChannelCredentials_22_pem_root_certificates_1__get__(o);
}

static PyObject *__pyx_getprop_4grpc_7_cython_6cygrpc_21SSLChannelCredentials__private_key(PyObject *o, CYTHON_UNUSED void *x) {
  return __pyx_pw_4grpc_7_cython_6cygrpc_21SSLChannelCredentials_12_private_key_1__get__(o);
}

static PyObject *__pyx_getprop_4grpc_7_cython_6cygrpc_21SSLChannelCredentials__certificate_chain(PyObject *o, CYTHON_UNUSED void *x) {
  return __pyx_pw_4grpc_7_cython_6cygrpc_21SSLChannelCredentials_18_certificate_chain_1__get__(o);
}

static PyMethodDef __pyx_methods_4grpc_7_cython_6cygrpc_SSLChannelCredentials[] = {
  {"__reduce_cython__", (PyCFunction)__pyx_pw_4grpc_7_cython_6cygrpc_21SSLChannelCredentials_3__reduce_cython__, METH_NOARGS, 0},
  {"__setstate_cython__", (PyCFunction)__pyx_pw_4grpc_7_cython_6cygrpc_21SSLChannelCredentials_5__setstate_cython__, METH_O, 0},
  {0, 0, 0, 0}
};

static struct PyGetSetDef __pyx_getsets_4grpc_7_cython_6cygrpc_SSLChannelCredentials[] = {
  {(char *)"_pem_root_certificates", __pyx_getprop_4grpc_7_cython_6cygrpc_21SSLChannelCredentials__pem_root_certificates, 0, (char *)0, 0},
  {(char *)"_private_key", __pyx_getprop_4grpc_7_cython_6cygrpc_21SSLChannelCredentials__private_key, 0, (char *)0, 0},
  {(char *)"_certificate_chain", __pyx_getprop_4grpc_7_cython_6cygrpc_21SSLChannelCredentials__certificate_chain, 0, (char *)0, 0},
  {0, 0, 0, 0, 0}
};

static PyTypeObject __pyx_type_4grpc_7_cython_6cygrpc_SSLChannelCredentials = {
  PyVarObject_HEAD_INIT(0, 0)
  "grpc._cython.cygrpc.SSLChannelCredentials", /*tp_name*/
  sizeof(struct __pyx_obj_4grpc_7_cython_6cygrpc_SSLChannelCredentials), /*tp_basicsize*/
  0, /*tp_itemsize*/
  __pyx_tp_dealloc_4grpc_7_cython_6cygrpc_SSLChannelCredentials, /*tp_dealloc*/
  #if PY_VERSION_HEX < 0x030800b4
  0, /*tp_print*/
  #endif
  #if PY_VERSION_HEX >= 0x030800b4
  0, /*tp_vectorcall_offset*/
  #endif
  0, /*tp_getattr*/
  0, /*tp_setattr*/
  #if PY_MAJOR_VERSION < 3
  0, /*tp_compare*/
  #endif
  #if PY_MAJOR_VERSION >= 3
  0, /*tp_as_async*/
  #endif
  0, /*tp_repr*/
  0, /*tp_as_number*/
  0, /*tp_as_sequence*/
  0, /*tp_as_mapping*/
  0, /*tp_hash*/
  0, /*tp_call*/
  0, /*tp_str*/
  0, /*tp_getattro*/
  0, /*tp_setattro*/
  0, /*tp_as_buffer*/
  Py_TPFLAGS_DEFAULT|Py_TPFLAGS_HAVE_VERSION_TAG|Py_TPFLAGS_CHECKTYPES|Py_TPFLAGS_HAVE_NEWBUFFER|Py_TPFLAGS_BASETYPE|Py_TPFLAGS_HAVE_GC, /*tp_flags*/
  0, /*tp_doc*/
  __pyx_tp_traverse_4grpc_7_cython_6cygrpc_SSLChannelCredentials, /*tp_traverse*/
  __pyx_tp_clear_4grpc_7_cython_6cygrpc_SSLChannelCredentials, /*tp_clear*/
  0, /*tp_richcompare*/
  0, /*tp_weaklistoffset*/
  0, /*tp_iter*/
  0, /*tp_iternext*/
  __pyx_methods_4grpc_7_cython_6cygrpc_SSLChannelCredentials, /*tp_methods*/
  0, /*tp_members*/
  __pyx_getsets_4grpc_7_cython_6cygrpc_SSLChannelCredentials, /*tp_getset*/
  0, /*tp_base*/
  0, /*tp_dict*/
  0, /*tp_descr_get*/
  0, /*tp_descr_set*/
  0, /*tp_dictoffset*/
  0, /*tp_init*/
  0, /*tp_alloc*/
  __pyx_tp_new_4grpc_7_cython_6cygrpc_SSLChannelCredentials, /*tp_new*/
  0, /*tp_free*/
  0, /*tp_is_gc*/
  0, /*tp_bases*/
  0, /*tp_mro*/
  0, /*tp_cache*/
  0, /*tp_subclasses*/
  0, /*tp_weaklist*/
  0, /*tp_del*/
  0, /*tp_version_tag*/
  #if PY_VERSION_HEX >= 0x030400a1
  0, /*tp_finalize*/
  #endif
  #if PY_VERSION_HEX >= 0x030800b1
  0, /*tp_vectorcall*/
  #endif
  #if PY_VERSION_HEX >= 0x030800b4 && PY_VERSION_HEX < 0x03090000
  0, /*tp_print*/
  #endif
};
static struct __pyx_vtabstruct_4grpc_7_cython_6cygrpc_CompositeChannelCredentials __pyx_vtable_4grpc_7_cython_6cygrpc_CompositeChannelCredentials;

static PyObject *__pyx_tp_new_4grpc_7_cython_6cygrpc_CompositeChannelCredentials(PyTypeObject *t, PyObject *a, PyObject *k) {
  struct __pyx_obj_4grpc_7_cython_6cygrpc_CompositeChannelCredentials *p;
  PyObject *o = __pyx_tp_new_4grpc_7_cython_6cygrpc_ChannelCredentials(t, a, k);
  if (unlikely(!o)) return 0;
  p = ((struct __pyx_obj_4grpc_7_cython_6cygrpc_CompositeChannelCredentials *)o);
  p->__pyx_base.__pyx_vtab = (struct __pyx_vtabstruct_4grpc_7_cython_6cygrpc_ChannelCredentials*)__pyx_vtabptr_4grpc_7_cython_6cygrpc_CompositeChannelCredentials;
  p->_call_credentialses = ((PyObject*)Py_None); Py_INCREF(Py_None);
  p->_channel_credentials = ((struct __pyx_obj_4grpc_7_cython_6cygrpc_ChannelCredentials *)Py_None); Py_INCREF(Py_None);
  if (unlikely(__pyx_pw_4grpc_7_cython_6cygrpc_27CompositeChannelCredentials_1__cinit__(o, a, k) < 0)) goto bad;
  return o;
  bad:
  Py_DECREF(o); o = 0;
  return NULL;
}

static void __pyx_tp_dealloc_4grpc_7_cython_6cygrpc_CompositeChannelCredentials(PyObject *o) {
  struct __pyx_obj_4grpc_7_cython_6cygrpc_CompositeChannelCredentials *p = (struct __pyx_obj_4grpc_7_cython_6cygrpc_CompositeChannelCredentials *)o;
  #if CYTHON_USE_TP_FINALIZE
  if (unlikely(PyType_HasFeature(Py_TYPE(o), Py_TPFLAGS_HAVE_FINALIZE) && Py_TYPE(o)->tp_finalize) && !_PyGC_FINALIZED(o)) {
    if (PyObject_CallFinalizerFromDealloc(o)) return;
  }
  #endif
  PyObject_GC_UnTrack(o);
  Py_CLEAR(p->_call_credentialses);
  Py_CLEAR(p->_channel_credentials);
  #if CYTHON_USE_TYPE_SLOTS
  if (PyType_IS_GC(Py_TYPE(o)->tp_base))
  #endif
  PyObject_GC_Track(o);
  __pyx_tp_dealloc_4grpc_7_cython_6cygrpc_ChannelCredentials(o);
}

static int __pyx_tp_traverse_4grpc_7_cython_6cygrpc_CompositeChannelCredentials(PyObject *o, visitproc v, void *a) {
  int e;
  struct __pyx_obj_4grpc_7_cython_6cygrpc_CompositeChannelCredentials *p = (struct __pyx_obj_4grpc_7_cython_6cygrpc_CompositeChannelCredentials *)o;
  e = ((likely(__pyx_ptype_4grpc_7_cython_6cygrpc_ChannelCredentials)) ? ((__pyx_ptype_4grpc_7_cython_6cygrpc_ChannelCredentials->tp_traverse) ? __pyx_ptype_4grpc_7_cython_6cygrpc_ChannelCredentials->tp_traverse(o, v, a) : 0) : __Pyx_call_next_tp_traverse(o, v, a, __pyx_tp_traverse_4grpc_7_cython_6cygrpc_CompositeChannelCredentials)); if (e) return e;
  if (p->_call_credentialses) {
    e = (*v)(p->_call_credentialses, a); if (e) return e;
  }
  if (p->_channel_credentials) {
    e = (*v)(((PyObject *)p->_channel_credentials), a); if (e) return e;
  }
  return 0;
}

static int __pyx_tp_clear_4grpc_7_cython_6cygrpc_CompositeChannelCredentials(PyObject *o) {
  PyObject* tmp;
  struct __pyx_obj_4grpc_7_cython_6cygrpc_CompositeChannelCredentials *p = (struct __pyx_obj_4grpc_7_cython_6cygrpc_CompositeChannelCredentials *)o;
  if (likely(__pyx_ptype_4grpc_7_cython_6cygrpc_ChannelCredentials)) { if (__pyx_ptype_4grpc_7_cython_6cygrpc_ChannelCredentials->tp_clear) __pyx_ptype_4grpc_7_cython_6cygrpc_ChannelCredentials->tp_clear(o); } else __Pyx_call_next_tp_clear(o, __pyx_tp_clear_4grpc_7_cython_6cygrpc_CompositeChannelCredentials);
  tmp = ((PyObject*)p->_call_credentialses);
  p->_call_credentialses = ((PyObject*)Py_None); Py_INCREF(Py_None);
  Py_XDECREF(tmp);
  tmp = ((PyObject*)p->_channel_credentials);
  p->_channel_credentials = ((struct __pyx_obj_4grpc_7_cython_6cygrpc_ChannelCredentials *)Py_None); Py_INCREF(Py_None);
  Py_XDECREF(tmp);
  return 0;
}

static PyObject *__pyx_getprop_4grpc_7_cython_6cygrpc_27CompositeChannelCredentials__call_credentialses(PyObject *o, CYTHON_UNUSED void *x) {
  return __pyx_pw_4grpc_7_cython_6cygrpc_27CompositeChannelCredentials_19_call_credentialses_1__get__(o);
}

static PyObject *__pyx_getprop_4grpc_7_cython_6cygrpc_27CompositeChannelCredentials__channel_credentials(PyObject *o, CYTHON_UNUSED void *x) {
  return __pyx_pw_4grpc_7_cython_6cygrpc_27CompositeChannelCredentials_20_channel_credentials_1__get__(o);
}

static PyMethodDef __pyx_methods_4grpc_7_cython_6cygrpc_CompositeChannelCredentials[] = {
  {"__reduce_cython__", (PyCFunction)__pyx_pw_4grpc_7_cython_6cygrpc_27CompositeChannelCredentials_3__reduce_cython__, METH_NOARGS, 0},
  {"__setstate_cython__", (PyCFunction)__pyx_pw_4grpc_7_cython_6cygrpc_27CompositeChannelCredentials_5__setstate_cython__, METH_O, 0},
  {0, 0, 0, 0}
};

static struct PyGetSetDef __pyx_getsets_4grpc_7_cython_6cygrpc_CompositeChannelCredentials[] = {
  {(char *)"_call_credentialses", __pyx_getprop_4grpc_7_cython_6cygrpc_27CompositeChannelCredentials__call_credentialses, 0, (char *)0, 0},
  {(char *)"_channel_credentials", __pyx_getprop_4grpc_7_cython_6cygrpc_27CompositeChannelCredentials__channel_credentials, 0, (char *)0, 0},
  {0, 0, 0, 0, 0}
};

static PyTypeObject __pyx_type_4grpc_7_cython_6cygrpc_CompositeChannelCredentials = {
  PyVarObject_HEAD_INIT(0, 0)
  "grpc._cython.cygrpc.CompositeChannelCredentials", /*tp_name*/
  sizeof(struct __pyx_obj_4grpc_7_cython_6cygrpc_CompositeChannelCredentials), /*tp_basicsize*/
  0, /*tp_itemsize*/
  __pyx_tp_dealloc_4grpc_7_cython_6cygrpc_CompositeChannelCredentials, /*tp_dealloc*/
  #if PY_VERSION_HEX < 0x030800b4
  0, /*tp_print*/
  #endif
  #if PY_VERSION_HEX >= 0x030800b4
  0, /*tp_vectorcall_offset*/
  #endif
  0, /*tp_getattr*/
  0, /*tp_setattr*/
  #if PY_MAJOR_VERSION < 3
  0, /*tp_compare*/
  #endif
  #if PY_MAJOR_VERSION >= 3
  0, /*tp_as_async*/
  #endif
  0, /*tp_repr*/
  0, /*tp_as_number*/
  0, /*tp_as_sequence*/
  0, /*tp_as_mapping*/
  0, /*tp_hash*/
  0, /*tp_call*/
  0, /*tp_str*/
  0, /*tp_getattro*/
  0, /*tp_setattro*/
  0, /*tp_as_buffer*/
  Py_TPFLAGS_DEFAULT|Py_TPFLAGS_HAVE_VERSION_TAG|Py_TPFLAGS_CHECKTYPES|Py_TPFLAGS_HAVE_NEWBUFFER|Py_TPFLAGS_BASETYPE|Py_TPFLAGS_HAVE_GC, /*tp_flags*/
  0, /*tp_doc*/
  __pyx_tp_traverse_4grpc_7_cython_6cygrpc_CompositeChannelCredentials, /*tp_traverse*/
  __pyx_tp_clear_4grpc_7_cython_6cygrpc_CompositeChannelCredentials, /*tp_clear*/
  0, /*tp_richcompare*/
  0, /*tp_weaklistoffset*/
  0, /*tp_iter*/
  0, /*tp_iternext*/
  __pyx_methods_4grpc_7_cython_6cygrpc_CompositeChannelCredentials, /*tp_methods*/
  0, /*tp_members*/
  __pyx_getsets_4grpc_7_cython_6cygrpc_CompositeChannelCredentials, /*tp_getset*/
  0, /*tp_base*/
  0, /*tp_dict*/
  0, /*tp_descr_get*/
  0, /*tp_descr_set*/
  0, /*tp_dictoffset*/
  0, /*tp_init*/
  0, /*tp_alloc*/
  __pyx_tp_new_4grpc_7_cython_6cygrpc_CompositeChannelCredentials, /*tp_new*/
  0, /*tp_free*/
  0, /*tp_is_gc*/
  0, /*tp_bases*/
  0, /*tp_mro*/
  0, /*tp_cache*/
  0, /*tp_subclasses*/
  0, /*tp_weaklist*/
  0, /*tp_del*/
  0, /*tp_version_tag*/
  #if PY_VERSION_HEX >= 0x030400a1
  0, /*tp_finalize*/
  #endif
  #if PY_VERSION_HEX >= 0x030800b1
  0, /*tp_vectorcall*/
  #endif
  #if PY_VERSION_HEX >= 0x030800b4 && PY_VERSION_HEX < 0x03090000
  0, /*tp_print*/
  #endif
};
static struct __pyx_vtabstruct_4grpc_7_cython_6cygrpc_XDSChannelCredentials __pyx_vtable_4grpc_7_cython_6cygrpc_XDSChannelCredentials;

static PyObject *__pyx_tp_new_4grpc_7_cython_6cygrpc_XDSChannelCredentials(PyTypeObject *t, PyObject *a, PyObject *k) {
  struct __pyx_obj_4grpc_7_cython_6cygrpc_XDSChannelCredentials *p;
  PyObject *o = __pyx_tp_new_4grpc_7_cython_6cygrpc_ChannelCredentials(t, a, k);
  if (unlikely(!o)) return 0;
  p = ((struct __pyx_obj_4grpc_7_cython_6cygrpc_XDSChannelCredentials *)o);
  p->__pyx_base.__pyx_vtab = (struct __pyx_vtabstruct_4grpc_7_cython_6cygrpc_ChannelCredentials*)__pyx_vtabptr_4grpc_7_cython_6cygrpc_XDSChannelCredentials;
  p->_fallback_credentials = ((struct __pyx_obj_4grpc_7_cython_6cygrpc_ChannelCredentials *)Py_None); Py_INCREF(Py_None);
  if (unlikely(__pyx_pw_4grpc_7_cython_6cygrpc_21XDSChannelCredentials_1__cinit__(o, a, k) < 0)) goto bad;
  return o;
  bad:
  Py_DECREF(o); o = 0;
  return NULL;
}

static void __pyx_tp_dealloc_4grpc_7_cython_6cygrpc_XDSChannelCredentials(PyObject *o) {
  struct __pyx_obj_4grpc_7_cython_6cygrpc_XDSChannelCredentials *p = (struct __pyx_obj_4grpc_7_cython_6cygrpc_XDSChannelCredentials *)o;
  #if CYTHON_USE_TP_FINALIZE
  if (unlikely(PyType_HasFeature(Py_TYPE(o), Py_TPFLAGS_HAVE_FINALIZE) && Py_TYPE(o)->tp_finalize) && !_PyGC_FINALIZED(o)) {
    if (PyObject_CallFinalizerFromDealloc(o)) return;
  }
  #endif
  PyObject_GC_UnTrack(o);
  Py_CLEAR(p->_fallback_credentials);
  #if CYTHON_USE_TYPE_SLOTS
  if (PyType_IS_GC(Py_TYPE(o)->tp_base))
  #endif
  PyObject_GC_Track(o);
  __pyx_tp_dealloc_4grpc_7_cython_6cygrpc_ChannelCredentials(o);
}

static int __pyx_tp_traverse_4grpc_7_cython_6cygrpc_XDSChannelCredentials(PyObject *o, visitproc v, void *a) {
  int e;
  struct __pyx_obj_4grpc_7_cython_6cygrpc_XDSChannelCredentials *p = (struct __pyx_obj_4grpc_7_cython_6cygrpc_XDSChannelCredentials *)o;
  e = ((likely(__pyx_ptype_4grpc_7_cython_6cygrpc_ChannelCredentials)) ? ((__pyx_ptype_4grpc_7_cython_6cygrpc_ChannelCredentials->tp_traverse) ? __pyx_ptype_4grpc_7_cython_6cygrpc_ChannelCredentials->tp_traverse(o, v, a) : 0) : __Pyx_call_next_tp_traverse(o, v, a, __pyx_tp_traverse_4grpc_7_cython_6cygrpc_XDSChannelCredentials)); if (e) return e;
  if (p->_fallback_credentials) {
    e = (*v)(((PyObject *)p->_fallback_credentials), a); if (e) return e;
  }
  return 0;
}

static int __pyx_tp_clear_4grpc_7_cython_6cygrpc_XDSChannelCredentials(PyObject *o) {
  PyObject* tmp;
  struct __pyx_obj_4grpc_7_cython_6cygrpc_XDSChannelCredentials *p = (struct __pyx_obj_4grpc_7_cython_6cygrpc_XDSChannelCredentials *)o;
  if (likely(__pyx_ptype_4grpc_7_cython_6cygrpc_ChannelCredentials)) { if (__pyx_ptype_4grpc_7_cython_6cygrpc_ChannelCredentials->tp_clear) __pyx_ptype_4grpc_7_cython_6cygrpc_ChannelCredentials->tp_clear(o); } else __Pyx_call_next_tp_clear(o, __pyx_tp_clear_4grpc_7_cython_6cygrpc_XDSChannelCredentials);
  tmp = ((PyObject*)p->_fallback_credentials);
  p->_fallback_credentials = ((struct __pyx_obj_4grpc_7_cython_6cygrpc_ChannelCredentials *)Py_None); Py_INCREF(Py_None);
  Py_XDECREF(tmp);
  return 0;
}

static PyObject *__pyx_getprop_4grpc_7_cython_6cygrpc_21XDSChannelCredentials__fallback_credentials(PyObject *o, CYTHON_UNUSED void *x) {
  return __pyx_pw_4grpc_7_cython_6cygrpc_21XDSChannelCredentials_21_fallback_credentials_1__get__(o);
}

static PyMethodDef __pyx_methods_4grpc_7_cython_6cygrpc_XDSChannelCredentials[] = {
  {"__reduce_cython__", (PyCFunction)__pyx_pw_4grpc_7_cython_6cygrpc_21XDSChannelCredentials_3__reduce_cython__, METH_NOARGS, 0},
  {"__setstate_cython__", (PyCFunction)__pyx_pw_4grpc_7_cython_6cygrpc_21XDSChannelCredentials_5__setstate_cython__, METH_O, 0},
  {0, 0, 0, 0}
};

static struct PyGetSetDef __pyx_getsets_4grpc_7_cython_6cygrpc_XDSChannelCredentials[] = {
  {(char *)"_fallback_credentials", __pyx_getprop_4grpc_7_cython_6cygrpc_21XDSChannelCredentials__fallback_credentials, 0, (char *)0, 0},
  {0, 0, 0, 0, 0}
};

static PyTypeObject __pyx_type_4grpc_7_cython_6cygrpc_XDSChannelCredentials = {
  PyVarObject_HEAD_INIT(0, 0)
  "grpc._cython.cygrpc.XDSChannelCredentials", /*tp_name*/
  sizeof(struct __pyx_obj_4grpc_7_cython_6cygrpc_XDSChannelCredentials), /*tp_basicsize*/
  0, /*tp_itemsize*/
  __pyx_tp_dealloc_4grpc_7_cython_6cygrpc_XDSChannelCredentials, /*tp_dealloc*/
  #if PY_VERSION_HEX < 0x030800b4
  0, /*tp_print*/
  #endif
  #if PY_VERSION_HEX >= 0x030800b4
  0, /*tp_vectorcall_offset*/
  #endif
  0, /*tp_getattr*/
  0, /*tp_setattr*/
  #if PY_MAJOR_VERSION < 3
  0, /*tp_compare*/
  #endif
  #if PY_MAJOR_VERSION >= 3
  0, /*tp_as_async*/
  #endif
  0, /*tp_repr*/
  0, /*tp_as_number*/
  0, /*tp_as_sequence*/
  0, /*tp_as_mapping*/
  0, /*tp_hash*/
  0, /*tp_call*/
  0, /*tp_str*/
  0, /*tp_getattro*/
  0, /*tp_setattro*/
  0, /*tp_as_buffer*/
  Py_TPFLAGS_DEFAULT|Py_TPFLAGS_HAVE_VERSION_TAG|Py_TPFLAGS_CHECKTYPES|Py_TPFLAGS_HAVE_NEWBUFFER|Py_TPFLAGS_BASETYPE|Py_TPFLAGS_HAVE_GC, /*tp_flags*/
  0, /*tp_doc*/
  __pyx_tp_traverse_4grpc_7_cython_6cygrpc_XDSChannelCredentials, /*tp_traverse*/
  __pyx_tp_clear_4grpc_7_cython_6cygrpc_XDSChannelCredentials, /*tp_clear*/
  0, /*tp_richcompare*/
  0, /*tp_weaklistoffset*/
  0, /*tp_iter*/
  0, /*tp_iternext*/
  __pyx_methods_4grpc_7_cython_6cygrpc_XDSChannelCredentials, /*tp_methods*/
  0, /*tp_members*/
  __pyx_getsets_4grpc_7_cython_6cygrpc_XDSChannelCredentials, /*tp_getset*/
  0, /*tp_base*/
  0, /*tp_dict*/
  0, /*tp_descr_get*/
  0, /*tp_descr_set*/
  0, /*tp_dictoffset*/
  0, /*tp_init*/
  0, /*tp_alloc*/
  __pyx_tp_new_4grpc_7_cython_6cygrpc_XDSChannelCredentials, /*tp_new*/
  0, /*tp_free*/
  0, /*tp_is_gc*/
  0, /*tp_bases*/
  0, /*tp_mro*/
  0, /*tp_cache*/
  0, /*tp_subclasses*/
  0, /*tp_weaklist*/
  0, /*tp_del*/
  0, /*tp_version_tag*/
  #if PY_VERSION_HEX >= 0x030400a1
  0, /*tp_finalize*/
  #endif
  #if PY_VERSION_HEX >= 0x030800b1
  0, /*tp_vectorcall*/
  #endif
  #if PY_VERSION_HEX >= 0x030800b4 && PY_VERSION_HEX < 0x03090000
  0, /*tp_print*/
  #endif
};

static PyObject *__pyx_tp_new_4grpc_7_cython_6cygrpc_ServerCertificateConfig(PyTypeObject *t, CYTHON_UNUSED PyObject *a, CYTHON_UNUSED PyObject *k) {
  struct __pyx_obj_4grpc_7_cython_6cygrpc_ServerCertificateConfig *p;
  PyObject *o;
  if (likely((t->tp_flags & Py_TPFLAGS_IS_ABSTRACT) == 0)) {
    o = (*t->tp_alloc)(t, 0);
  } else {
    o = (PyObject *) PyBaseObject_Type.tp_new(t, __pyx_empty_tuple, 0);
  }
  if (unlikely(!o)) return 0;
  p = ((struct __pyx_obj_4grpc_7_cython_6cygrpc_ServerCertificateConfig *)o);
  p->references = ((PyObject*)Py_None); Py_INCREF(Py_None);
  if (unlikely(__pyx_pw_4grpc_7_cython_6cygrpc_23ServerCertificateConfig_1__cinit__(o, __pyx_empty_tuple, NULL) < 0)) goto bad;
  return o;
  bad:
  Py_DECREF(o); o = 0;
  return NULL;
}

static void __pyx_tp_dealloc_4grpc_7_cython_6cygrpc_ServerCertificateConfig(PyObject *o) {
  struct __pyx_obj_4grpc_7_cython_6cygrpc_ServerCertificateConfig *p = (struct __pyx_obj_4grpc_7_cython_6cygrpc_ServerCertificateConfig *)o;
  #if CYTHON_USE_TP_FINALIZE
  if (unlikely(PyType_HasFeature(Py_TYPE(o), Py_TPFLAGS_HAVE_FINALIZE) && Py_TYPE(o)->tp_finalize) && !_PyGC_FINALIZED(o)) {
    if (PyObject_CallFinalizerFromDealloc(o)) return;
  }
  #endif
  PyObject_GC_UnTrack(o);
  {
    PyObject *etype, *eval, *etb;
    PyErr_Fetch(&etype, &eval, &etb);
    __Pyx_SET_REFCNT(o, Py_REFCNT(o) + 1);
    __pyx_pw_4grpc_7_cython_6cygrpc_23ServerCertificateConfig_3__dealloc__(o);
    __Pyx_SET_REFCNT(o, Py_REFCNT(o) - 1);
    PyErr_Restore(etype, eval, etb);
  }
  Py_CLEAR(p->references);
  (*Py_TYPE(o)->tp_free)(o);
}

static int __pyx_tp_traverse_4grpc_7_cython_6cygrpc_ServerCertificateConfig(PyObject *o, visitproc v, void *a) {
  int e;
  struct __pyx_obj_4grpc_7_cython_6cygrpc_ServerCertificateConfig *p = (struct __pyx_obj_4grpc_7_cython_6cygrpc_ServerCertificateConfig *)o;
  if (p->references) {
    e = (*v)(p->references, a); if (e) return e;
  }
  return 0;
}

static int __pyx_tp_clear_4grpc_7_cython_6cygrpc_ServerCertificateConfig(PyObject *o) {
  PyObject* tmp;
  struct __pyx_obj_4grpc_7_cython_6cygrpc_ServerCertificateConfig *p = (struct __pyx_obj_4grpc_7_cython_6cygrpc_ServerCertificateConfig *)o;
  tmp = ((PyObject*)p->references);
  p->references = ((PyObject*)Py_None); Py_INCREF(Py_None);
  Py_XDECREF(tmp);
  return 0;
}

static PyMethodDef __pyx_methods_4grpc_7_cython_6cygrpc_ServerCertificateConfig[] = {
  {"__reduce_cython__", (PyCFunction)__pyx_pw_4grpc_7_cython_6cygrpc_23ServerCertificateConfig_5__reduce_cython__, METH_NOARGS, 0},
  {"__setstate_cython__", (PyCFunction)__pyx_pw_4grpc_7_cython_6cygrpc_23ServerCertificateConfig_7__setstate_cython__, METH_O, 0},
  {0, 0, 0, 0}
};

static PyTypeObject __pyx_type_4grpc_7_cython_6cygrpc_ServerCertificateConfig = {
  PyVarObject_HEAD_INIT(0, 0)
  "grpc._cython.cygrpc.ServerCertificateConfig", /*tp_name*/
  sizeof(struct __pyx_obj_4grpc_7_cython_6cygrpc_ServerCertificateConfig), /*tp_basicsize*/
  0, /*tp_itemsize*/
  __pyx_tp_dealloc_4grpc_7_cython_6cygrpc_ServerCertificateConfig, /*tp_dealloc*/
  #if PY_VERSION_HEX < 0x030800b4
  0, /*tp_print*/
  #endif
  #if PY_VERSION_HEX >= 0x030800b4
  0, /*tp_vectorcall_offset*/
  #endif
  0, /*tp_getattr*/
  0, /*tp_setattr*/
  #if PY_MAJOR_VERSION < 3
  0, /*tp_compare*/
  #endif
  #if PY_MAJOR_VERSION >= 3
  0, /*tp_as_async*/
  #endif
  0, /*tp_repr*/
  0, /*tp_as_number*/
  0, /*tp_as_sequence*/
  0, /*tp_as_mapping*/
  0, /*tp_hash*/
  0, /*tp_call*/
  0, /*tp_str*/
  0, /*tp_getattro*/
  0, /*tp_setattro*/
  0, /*tp_as_buffer*/
  Py_TPFLAGS_DEFAULT|Py_TPFLAGS_HAVE_VERSION_TAG|Py_TPFLAGS_CHECKTYPES|Py_TPFLAGS_HAVE_NEWBUFFER|Py_TPFLAGS_BASETYPE|Py_TPFLAGS_HAVE_GC, /*tp_flags*/
  0, /*tp_doc*/
  __pyx_tp_traverse_4grpc_7_cython_6cygrpc_ServerCertificateConfig, /*tp_traverse*/
  __pyx_tp_clear_4grpc_7_cython_6cygrpc_ServerCertificateConfig, /*tp_clear*/
  0, /*tp_richcompare*/
  0, /*tp_weaklistoffset*/
  0, /*tp_iter*/
  0, /*tp_iternext*/
  __pyx_methods_4grpc_7_cython_6cygrpc_ServerCertificateConfig, /*tp_methods*/
  0, /*tp_members*/
  0, /*tp_getset*/
  0, /*tp_base*/
  0, /*tp_dict*/
  0, /*tp_descr_get*/
  0, /*tp_descr_set*/
  0, /*tp_dictoffset*/
  0, /*tp_init*/
  0, /*tp_alloc*/
  __pyx_tp_new_4grpc_7_cython_6cygrpc_ServerCertificateConfig, /*tp_new*/
  0, /*tp_free*/
  0, /*tp_is_gc*/
  0, /*tp_bases*/
  0, /*tp_mro*/
  0, /*tp_cache*/
  0, /*tp_subclasses*/
  0, /*tp_weaklist*/
  0, /*tp_del*/
  0, /*tp_version_tag*/
  #if PY_VERSION_HEX >= 0x030400a1
  0, /*tp_finalize*/
  #endif
  #if PY_VERSION_HEX >= 0x030800b1
  0, /*tp_vectorcall*/
  #endif
  #if PY_VERSION_HEX >= 0x030800b4 && PY_VERSION_HEX < 0x03090000
  0, /*tp_print*/
  #endif
};

static PyObject *__pyx_tp_new_4grpc_7_cython_6cygrpc_ServerCredentials(PyTypeObject *t, CYTHON_UNUSED PyObject *a, CYTHON_UNUSED PyObject *k) {
  struct __pyx_obj_4grpc_7_cython_6cygrpc_ServerCredentials *p;
  PyObject *o;
  if (likely((t->tp_flags & Py_TPFLAGS_IS_ABSTRACT) == 0)) {
    o = (*t->tp_alloc)(t, 0);
  } else {
    o = (PyObject *) PyBaseObject_Type.tp_new(t, __pyx_empty_tuple, 0);
  }
  if (unlikely(!o)) return 0;
  p = ((struct __pyx_obj_4grpc_7_cython_6cygrpc_ServerCredentials *)o);
  p->references = ((PyObject*)Py_None); Py_INCREF(Py_None);
  p->initial_cert_config = Py_None; Py_INCREF(Py_None);
  p->cert_config_fetcher = Py_None; Py_INCREF(Py_None);
  if (unlikely(__pyx_pw_4grpc_7_cython_6cygrpc_17ServerCredentials_1__cinit__(o, __pyx_empty_tuple, NULL) < 0)) goto bad;
  return o;
  bad:
  Py_DECREF(o); o = 0;
  return NULL;
}

static void __pyx_tp_dealloc_4grpc_7_cython_6cygrpc_ServerCredentials(PyObject *o) {
  struct __pyx_obj_4grpc_7_cython_6cygrpc_ServerCredentials *p = (struct __pyx_obj_4grpc_7_cython_6cygrpc_ServerCredentials *)o;
  #if CYTHON_USE_TP_FINALIZE
  if (unlikely(PyType_HasFeature(Py_TYPE(o), Py_TPFLAGS_HAVE_FINALIZE) && Py_TYPE(o)->tp_finalize) && !_PyGC_FINALIZED(o)) {
    if (PyObject_CallFinalizerFromDealloc(o)) return;
  }
  #endif
  PyObject_GC_UnTrack(o);
  {
    PyObject *etype, *eval, *etb;
    PyErr_Fetch(&etype, &eval, &etb);
    __Pyx_SET_REFCNT(o, Py_REFCNT(o) + 1);
    __pyx_pw_4grpc_7_cython_6cygrpc_17ServerCredentials_3__dealloc__(o);
    __Pyx_SET_REFCNT(o, Py_REFCNT(o) - 1);
    PyErr_Restore(etype, eval, etb);
  }
  Py_CLEAR(p->references);
  Py_CLEAR(p->initial_cert_config);
  Py_CLEAR(p->cert_config_fetcher);
  (*Py_TYPE(o)->tp_free)(o);
}

static int __pyx_tp_traverse_4grpc_7_cython_6cygrpc_ServerCredentials(PyObject *o, visitproc v, void *a) {
  int e;
  struct __pyx_obj_4grpc_7_cython_6cygrpc_ServerCredentials *p = (struct __pyx_obj_4grpc_7_cython_6cygrpc_ServerCredentials *)o;
  if (p->references) {
    e = (*v)(p->references, a); if (e) return e;
  }
  if (p->initial_cert_config) {
    e = (*v)(p->initial_cert_config, a); if (e) return e;
  }
  if (p->cert_config_fetcher) {
    e = (*v)(p->cert_config_fetcher, a); if (e) return e;
  }
  return 0;
}

static int __pyx_tp_clear_4grpc_7_cython_6cygrpc_ServerCredentials(PyObject *o) {
  PyObject* tmp;
  struct __pyx_obj_4grpc_7_cython_6cygrpc_ServerCredentials *p = (struct __pyx_obj_4grpc_7_cython_6cygrpc_ServerCredentials *)o;
  tmp = ((PyObject*)p->references);
  p->references = ((PyObject*)Py_None); Py_INCREF(Py_None);
  Py_XDECREF(tmp);
  tmp = ((PyObject*)p->initial_cert_config);
  p->initial_cert_config = Py_None; Py_INCREF(Py_None);
  Py_XDECREF(tmp);
  tmp = ((PyObject*)p->cert_config_fetcher);
  p->cert_config_fetcher = Py_None; Py_INCREF(Py_None);
  Py_XDECREF(tmp);
  return 0;
}

static PyMethodDef __pyx_methods_4grpc_7_cython_6cygrpc_ServerCredentials[] = {
  {"__reduce_cython__", (PyCFunction)__pyx_pw_4grpc_7_cython_6cygrpc_17ServerCredentials_5__reduce_cython__, METH_NOARGS, 0},
  {"__setstate_cython__", (PyCFunction)__pyx_pw_4grpc_7_cython_6cygrpc_17ServerCredentials_7__setstate_cython__, METH_O, 0},
  {0, 0, 0, 0}
};

static PyTypeObject __pyx_type_4grpc_7_cython_6cygrpc_ServerCredentials = {
  PyVarObject_HEAD_INIT(0, 0)
  "grpc._cython.cygrpc.ServerCredentials", /*tp_name*/
  sizeof(struct __pyx_obj_4grpc_7_cython_6cygrpc_ServerCredentials), /*tp_basicsize*/
  0, /*tp_itemsize*/
  __pyx_tp_dealloc_4grpc_7_cython_6cygrpc_ServerCredentials, /*tp_dealloc*/
  #if PY_VERSION_HEX < 0x030800b4
  0, /*tp_print*/
  #endif
  #if PY_VERSION_HEX >= 0x030800b4
  0, /*tp_vectorcall_offset*/
  #endif
  0, /*tp_getattr*/
  0, /*tp_setattr*/
  #if PY_MAJOR_VERSION < 3
  0, /*tp_compare*/
  #endif
  #if PY_MAJOR_VERSION >= 3
  0, /*tp_as_async*/
  #endif
  0, /*tp_repr*/
  0, /*tp_as_number*/
  0, /*tp_as_sequence*/
  0, /*tp_as_mapping*/
  0, /*tp_hash*/
  0, /*tp_call*/
  0, /*tp_str*/
  0, /*tp_getattro*/
  0, /*tp_setattro*/
  0, /*tp_as_buffer*/
  Py_TPFLAGS_DEFAULT|Py_TPFLAGS_HAVE_VERSION_TAG|Py_TPFLAGS_CHECKTYPES|Py_TPFLAGS_HAVE_NEWBUFFER|Py_TPFLAGS_BASETYPE|Py_TPFLAGS_HAVE_GC, /*tp_flags*/
  0, /*tp_doc*/
  __pyx_tp_traverse_4grpc_7_cython_6cygrpc_ServerCredentials, /*tp_traverse*/
  __pyx_tp_clear_4grpc_7_cython_6cygrpc_ServerCredentials, /*tp_clear*/
  0, /*tp_richcompare*/
  0, /*tp_weaklistoffset*/
  0, /*tp_iter*/
  0, /*tp_iternext*/
  __pyx_methods_4grpc_7_cython_6cygrpc_ServerCredentials, /*tp_methods*/
  0, /*tp_members*/
  0, /*tp_getset*/
  0, /*tp_base*/
  0, /*tp_dict*/
  0, /*tp_descr_get*/
  0, /*tp_descr_set*/
  0, /*tp_dictoffset*/
  0, /*tp_init*/
  0, /*tp_alloc*/
  __pyx_tp_new_4grpc_7_cython_6cygrpc_ServerCredentials, /*tp_new*/
  0, /*tp_free*/
  0, /*tp_is_gc*/
  0, /*tp_bases*/
  0, /*tp_mro*/
  0, /*tp_cache*/
  0, /*tp_subclasses*/
  0, /*tp_weaklist*/
  0, /*tp_del*/
  0, /*tp_version_tag*/
  #if PY_VERSION_HEX >= 0x030400a1
  0, /*tp_finalize*/
  #endif
  #if PY_VERSION_HEX >= 0x030800b1
  0, /*tp_vectorcall*/
  #endif
  #if PY_VERSION_HEX >= 0x030800b4 && PY_VERSION_HEX < 0x03090000
  0, /*tp_print*/
  #endif
};
static struct __pyx_vtabstruct_4grpc_7_cython_6cygrpc_LocalChannelCredentials __pyx_vtable_4grpc_7_cython_6cygrpc_LocalChannelCredentials;

static PyObject *__pyx_tp_new_4grpc_7_cython_6cygrpc_LocalChannelCredentials(PyTypeObject *t, PyObject *a, PyObject *k) {
  struct __pyx_obj_4grpc_7_cython_6cygrpc_LocalChannelCredentials *p;
  PyObject *o = __pyx_tp_new_4grpc_7_cython_6cygrpc_ChannelCredentials(t, a, k);
  if (unlikely(!o)) return 0;
  p = ((struct __pyx_obj_4grpc_7_cython_6cygrpc_LocalChannelCredentials *)o);
  p->__pyx_base.__pyx_vtab = (struct __pyx_vtabstruct_4grpc_7_cython_6cygrpc_ChannelCredentials*)__pyx_vtabptr_4grpc_7_cython_6cygrpc_LocalChannelCredentials;
  if (unlikely(__pyx_pw_4grpc_7_cython_6cygrpc_23LocalChannelCredentials_1__cinit__(o, a, k) < 0)) goto bad;
  return o;
  bad:
  Py_DECREF(o); o = 0;
  return NULL;
}

static PyMethodDef __pyx_methods_4grpc_7_cython_6cygrpc_LocalChannelCredentials[] = {
  {"__reduce_cython__", (PyCFunction)__pyx_pw_4grpc_7_cython_6cygrpc_23LocalChannelCredentials_3__reduce_cython__, METH_NOARGS, 0},
  {"__setstate_cython__", (PyCFunction)__pyx_pw_4grpc_7_cython_6cygrpc_23LocalChannelCredentials_5__setstate_cython__, METH_O, 0},
  {0, 0, 0, 0}
};

static PyTypeObject __pyx_type_4grpc_7_cython_6cygrpc_LocalChannelCredentials = {
  PyVarObject_HEAD_INIT(0, 0)
  "grpc._cython.cygrpc.LocalChannelCredentials", /*tp_name*/
  sizeof(struct __pyx_obj_4grpc_7_cython_6cygrpc_LocalChannelCredentials), /*tp_basicsize*/
  0, /*tp_itemsize*/
  __pyx_tp_dealloc_4grpc_7_cython_6cygrpc_ChannelCredentials, /*tp_dealloc*/
  #if PY_VERSION_HEX < 0x030800b4
  0, /*tp_print*/
  #endif
  #if PY_VERSION_HEX >= 0x030800b4
  0, /*tp_vectorcall_offset*/
  #endif
  0, /*tp_getattr*/
  0, /*tp_setattr*/
  #if PY_MAJOR_VERSION < 3
  0, /*tp_compare*/
  #endif
  #if PY_MAJOR_VERSION >= 3
  0, /*tp_as_async*/
  #endif
  0, /*tp_repr*/
  0, /*tp_as_number*/
  0, /*tp_as_sequence*/
  0, /*tp_as_mapping*/
  0, /*tp_hash*/
  0, /*tp_call*/
  0, /*tp_str*/
  0, /*tp_getattro*/
  0, /*tp_setattro*/
  0, /*tp_as_buffer*/
  Py_TPFLAGS_DEFAULT|Py_TPFLAGS_HAVE_VERSION_TAG|Py_TPFLAGS_CHECKTYPES|Py_TPFLAGS_HAVE_NEWBUFFER|Py_TPFLAGS_BASETYPE, /*tp_flags*/
  0, /*tp_doc*/
  0, /*tp_traverse*/
  0, /*tp_clear*/
  0, /*tp_richcompare*/
  0, /*tp_weaklistoffset*/
  0, /*tp_iter*/
  0, /*tp_iternext*/
  __pyx_methods_4grpc_7_cython_6cygrpc_LocalChannelCredentials, /*tp_methods*/
  0, /*tp_members*/
  0, /*tp_getset*/
  0, /*tp_base*/
  0, /*tp_dict*/
  0, /*tp_descr_get*/
  0, /*tp_descr_set*/
  0, /*tp_dictoffset*/
  0, /*tp_init*/
  0, /*tp_alloc*/
  __pyx_tp_new_4grpc_7_cython_6cygrpc_LocalChannelCredentials, /*tp_new*/
  0, /*tp_free*/
  0, /*tp_is_gc*/
  0, /*tp_bases*/
  0, /*tp_mro*/
  0, /*tp_cache*/
  0, /*tp_subclasses*/
  0, /*tp_weaklist*/
  0, /*tp_del*/
  0, /*tp_version_tag*/
  #if PY_VERSION_HEX >= 0x030400a1
  0, /*tp_finalize*/
  #endif
  #if PY_VERSION_HEX >= 0x030800b1
  0, /*tp_vectorcall*/
  #endif
  #if PY_VERSION_HEX >= 0x030800b4 && PY_VERSION_HEX < 0x03090000
  0, /*tp_print*/
  #endif
};
static struct __pyx_vtabstruct_4grpc_7_cython_6cygrpc_ALTSChannelCredentials __pyx_vtable_4grpc_7_cython_6cygrpc_ALTSChannelCredentials;

static PyObject *__pyx_tp_new_4grpc_7_cython_6cygrpc_ALTSChannelCredentials(PyTypeObject *t, PyObject *a, PyObject *k) {
  struct __pyx_obj_4grpc_7_cython_6cygrpc_ALTSChannelCredentials *p;
  PyObject *o = __pyx_tp_new_4grpc_7_cython_6cygrpc_ChannelCredentials(t, a, k);
  if (unlikely(!o)) return 0;
  p = ((struct __pyx_obj_4grpc_7_cython_6cygrpc_ALTSChannelCredentials *)o);
  p->__pyx_base.__pyx_vtab = (struct __pyx_vtabstruct_4grpc_7_cython_6cygrpc_ChannelCredentials*)__pyx_vtabptr_4grpc_7_cython_6cygrpc_ALTSChannelCredentials;
  if (unlikely(__pyx_pw_4grpc_7_cython_6cygrpc_22ALTSChannelCredentials_1__cinit__(o, a, k) < 0)) goto bad;
  return o;
  bad:
  Py_DECREF(o); o = 0;
  return NULL;
}

static void __pyx_tp_dealloc_4grpc_7_cython_6cygrpc_ALTSChannelCredentials(PyObject *o) {
  #if CYTHON_USE_TP_FINALIZE
  if (unlikely(PyType_HasFeature(Py_TYPE(o), Py_TPFLAGS_HAVE_FINALIZE) && Py_TYPE(o)->tp_finalize) && (!PyType_IS_GC(Py_TYPE(o)) || !_PyGC_FINALIZED(o))) {
    if (PyObject_CallFinalizerFromDealloc(o)) return;
  }
  #endif
  {
    PyObject *etype, *eval, *etb;
    PyErr_Fetch(&etype, &eval, &etb);
    __Pyx_SET_REFCNT(o, Py_REFCNT(o) + 1);
    __pyx_pw_4grpc_7_cython_6cygrpc_22ALTSChannelCredentials_3__dealloc__(o);
    __Pyx_SET_REFCNT(o, Py_REFCNT(o) - 1);
    PyErr_Restore(etype, eval, etb);
  }
  __pyx_tp_dealloc_4grpc_7_cython_6cygrpc_ChannelCredentials(o);
}

static PyMethodDef __pyx_methods_4grpc_7_cython_6cygrpc_ALTSChannelCredentials[] = {
  {"__reduce_cython__", (PyCFunction)__pyx_pw_4grpc_7_cython_6cygrpc_22ALTSChannelCredentials_5__reduce_cython__, METH_NOARGS, 0},
  {"__setstate_cython__", (PyCFunction)__pyx_pw_4grpc_7_cython_6cygrpc_22ALTSChannelCredentials_7__setstate_cython__, METH_O, 0},
  {0, 0, 0, 0}
};

static PyTypeObject __pyx_type_4grpc_7_cython_6cygrpc_ALTSChannelCredentials = {
  PyVarObject_HEAD_INIT(0, 0)
  "grpc._cython.cygrpc.ALTSChannelCredentials", /*tp_name*/
  sizeof(struct __pyx_obj_4grpc_7_cython_6cygrpc_ALTSChannelCredentials), /*tp_basicsize*/
  0, /*tp_itemsize*/
  __pyx_tp_dealloc_4grpc_7_cython_6cygrpc_ALTSChannelCredentials, /*tp_dealloc*/
  #if PY_VERSION_HEX < 0x030800b4
  0, /*tp_print*/
  #endif
  #if PY_VERSION_HEX >= 0x030800b4
  0, /*tp_vectorcall_offset*/
  #endif
  0, /*tp_getattr*/
  0, /*tp_setattr*/
  #if PY_MAJOR_VERSION < 3
  0, /*tp_compare*/
  #endif
  #if PY_MAJOR_VERSION >= 3
  0, /*tp_as_async*/
  #endif
  0, /*tp_repr*/
  0, /*tp_as_number*/
  0, /*tp_as_sequence*/
  0, /*tp_as_mapping*/
  0, /*tp_hash*/
  0, /*tp_call*/
  0, /*tp_str*/
  0, /*tp_getattro*/
  0, /*tp_setattro*/
  0, /*tp_as_buffer*/
  Py_TPFLAGS_DEFAULT|Py_TPFLAGS_HAVE_VERSION_TAG|Py_TPFLAGS_CHECKTYPES|Py_TPFLAGS_HAVE_NEWBUFFER|Py_TPFLAGS_BASETYPE, /*tp_flags*/
  0, /*tp_doc*/
  0, /*tp_traverse*/
  0, /*tp_clear*/
  0, /*tp_richcompare*/
  0, /*tp_weaklistoffset*/
  0, /*tp_iter*/
  0, /*tp_iternext*/
  __pyx_methods_4grpc_7_cython_6cygrpc_ALTSChannelCredentials, /*tp_methods*/
  0, /*tp_members*/
  0, /*tp_getset*/
  0, /*tp_base*/
  0, /*tp_dict*/
  0, /*tp_descr_get*/
  0, /*tp_descr_set*/
  0, /*tp_dictoffset*/
  0, /*tp_init*/
  0, /*tp_alloc*/
  __pyx_tp_new_4grpc_7_cython_6cygrpc_ALTSChannelCredentials, /*tp_new*/
  0, /*tp_free*/
  0, /*tp_is_gc*/
  0, /*tp_bases*/
  0, /*tp_mro*/
  0, /*tp_cache*/
  0, /*tp_subclasses*/
  0, /*tp_weaklist*/
  0, /*tp_del*/
  0, /*tp_version_tag*/
  #if PY_VERSION_HEX >= 0x030400a1
  0, /*tp_finalize*/
  #endif
  #if PY_VERSION_HEX >= 0x030800b1
  0, /*tp_vectorcall*/
  #endif
  #if PY_VERSION_HEX >= 0x030800b4 && PY_VERSION_HEX < 0x03090000
  0, /*tp_print*/
  #endif
};
static struct __pyx_vtabstruct_4grpc_7_cython_6cygrpc_CompletionQueue __pyx_vtable_4grpc_7_cython_6cygrpc_CompletionQueue;

static PyObject *__pyx_tp_new_4grpc_7_cython_6cygrpc_CompletionQueue(PyTypeObject *t, PyObject *a, PyObject *k) {
  struct __pyx_obj_4grpc_7_cython_6cygrpc_CompletionQueue *p;
  PyObject *o;
  if (likely((t->tp_flags & Py_TPFLAGS_IS_ABSTRACT) == 0)) {
    o = (*t->tp_alloc)(t, 0);
  } else {
    o = (PyObject *) PyBaseObject_Type.tp_new(t, __pyx_empty_tuple, 0);
  }
  if (unlikely(!o)) return 0;
  p = ((struct __pyx_obj_4grpc_7_cython_6cygrpc_CompletionQueue *)o);
  p->__pyx_vtab = __pyx_vtabptr_4grpc_7_cython_6cygrpc_CompletionQueue;
  if (unlikely(__pyx_pw_4grpc_7_cython_6cygrpc_15CompletionQueue_1__cinit__(o, a, k) < 0)) goto bad;
  return o;
  bad:
  Py_DECREF(o); o = 0;
  return NULL;
}

static void __pyx_tp_dealloc_4grpc_7_cython_6cygrpc_CompletionQueue(PyObject *o) {
  #if CYTHON_USE_TP_FINALIZE
  if (unlikely(PyType_HasFeature(Py_TYPE(o), Py_TPFLAGS_HAVE_FINALIZE) && Py_TYPE(o)->tp_finalize) && (!PyType_IS_GC(Py_TYPE(o)) || !_PyGC_FINALIZED(o))) {
    if (PyObject_CallFinalizerFromDealloc(o)) return;
  }
  #endif
  {
    PyObject *etype, *eval, *etb;
    PyErr_Fetch(&etype, &eval, &etb);
    __Pyx_SET_REFCNT(o, Py_REFCNT(o) + 1);
    __pyx_pw_4grpc_7_cython_6cygrpc_15CompletionQueue_9__dealloc__(o);
    __Pyx_SET_REFCNT(o, Py_REFCNT(o) - 1);
    PyErr_Restore(etype, eval, etb);
  }
  (*Py_TYPE(o)->tp_free)(o);
}

static PyMethodDef __pyx_methods_4grpc_7_cython_6cygrpc_CompletionQueue[] = {
  {"poll", (PyCFunction)(void*)(PyCFunctionWithKeywords)__pyx_pw_4grpc_7_cython_6cygrpc_15CompletionQueue_3poll, METH_VARARGS|METH_KEYWORDS, 0},
  {"shutdown", (PyCFunction)__pyx_pw_4grpc_7_cython_6cygrpc_15CompletionQueue_5shutdown, METH_NOARGS, 0},
  {"clear", (PyCFunction)__pyx_pw_4grpc_7_cython_6cygrpc_15CompletionQueue_7clear, METH_NOARGS, 0},
  {"__reduce_cython__", (PyCFunction)__pyx_pw_4grpc_7_cython_6cygrpc_15CompletionQueue_11__reduce_cython__, METH_NOARGS, 0},
  {"__setstate_cython__", (PyCFunction)__pyx_pw_4grpc_7_cython_6cygrpc_15CompletionQueue_13__setstate_cython__, METH_O, 0},
  {0, 0, 0, 0}
};

static PyTypeObject __pyx_type_4grpc_7_cython_6cygrpc_CompletionQueue = {
  PyVarObject_HEAD_INIT(0, 0)
  "grpc._cython.cygrpc.CompletionQueue", /*tp_name*/
  sizeof(struct __pyx_obj_4grpc_7_cython_6cygrpc_CompletionQueue), /*tp_basicsize*/
  0, /*tp_itemsize*/
  __pyx_tp_dealloc_4grpc_7_cython_6cygrpc_CompletionQueue, /*tp_dealloc*/
  #if PY_VERSION_HEX < 0x030800b4
  0, /*tp_print*/
  #endif
  #if PY_VERSION_HEX >= 0x030800b4
  0, /*tp_vectorcall_offset*/
  #endif
  0, /*tp_getattr*/
  0, /*tp_setattr*/
  #if PY_MAJOR_VERSION < 3
  0, /*tp_compare*/
  #endif
  #if PY_MAJOR_VERSION >= 3
  0, /*tp_as_async*/
  #endif
  0, /*tp_repr*/
  0, /*tp_as_number*/
  0, /*tp_as_sequence*/
  0, /*tp_as_mapping*/
  0, /*tp_hash*/
  0, /*tp_call*/
  0, /*tp_str*/
  0, /*tp_getattro*/
  0, /*tp_setattro*/
  0, /*tp_as_buffer*/
  Py_TPFLAGS_DEFAULT|Py_TPFLAGS_HAVE_VERSION_TAG|Py_TPFLAGS_CHECKTYPES|Py_TPFLAGS_HAVE_NEWBUFFER|Py_TPFLAGS_BASETYPE, /*tp_flags*/
  0, /*tp_doc*/
  0, /*tp_traverse*/
  0, /*tp_clear*/
  0, /*tp_richcompare*/
  0, /*tp_weaklistoffset*/
  0, /*tp_iter*/
  0, /*tp_iternext*/
  __pyx_methods_4grpc_7_cython_6cygrpc_CompletionQueue, /*tp_methods*/
  0, /*tp_members*/
  0, /*tp_getset*/
  0, /*tp_base*/
  0, /*tp_dict*/
  0, /*tp_descr_get*/
  0, /*tp_descr_set*/
  0, /*tp_dictoffset*/
  0, /*tp_init*/
  0, /*tp_alloc*/
  __pyx_tp_new_4grpc_7_cython_6cygrpc_CompletionQueue, /*tp_new*/
  0, /*tp_free*/
  0, /*tp_is_gc*/
  0, /*tp_bases*/
  0, /*tp_mro*/
  0, /*tp_cache*/
  0, /*tp_subclasses*/
  0, /*tp_weaklist*/
  0, /*tp_del*/
  0, /*tp_version_tag*/
  #if PY_VERSION_HEX >= 0x030400a1
  0, /*tp_finalize*/
  #endif
  #if PY_VERSION_HEX >= 0x030800b1
  0, /*tp_vectorcall*/
  #endif
  #if PY_VERSION_HEX >= 0x030800b4 && PY_VERSION_HEX < 0x03090000
  0, /*tp_print*/
  #endif
};

static PyObject *__pyx_tp_new_4grpc_7_cython_6cygrpc_ConnectivityEvent(PyTypeObject *t, PyObject *a, PyObject *k) {
  struct __pyx_obj_4grpc_7_cython_6cygrpc_ConnectivityEvent *p;
  PyObject *o;
  if (likely((t->tp_flags & Py_TPFLAGS_IS_ABSTRACT) == 0)) {
    o = (*t->tp_alloc)(t, 0);
  } else {
    o = (PyObject *) PyBaseObject_Type.tp_new(t, __pyx_empty_tuple, 0);
  }
  if (unlikely(!o)) return 0;
  p = ((struct __pyx_obj_4grpc_7_cython_6cygrpc_ConnectivityEvent *)o);
  p->tag = Py_None; Py_INCREF(Py_None);
  if (unlikely(__pyx_pw_4grpc_7_cython_6cygrpc_17ConnectivityEvent_1__cinit__(o, a, k) < 0)) goto bad;
  return o;
  bad:
  Py_DECREF(o); o = 0;
  return NULL;
}

static void __pyx_tp_dealloc_4grpc_7_cython_6cygrpc_ConnectivityEvent(PyObject *o) {
  struct __pyx_obj_4grpc_7_cython_6cygrpc_ConnectivityEvent *p = (struct __pyx_obj_4grpc_7_cython_6cygrpc_ConnectivityEvent *)o;
  #if CYTHON_USE_TP_FINALIZE
  if (unlikely(PyType_HasFeature(Py_TYPE(o), Py_TPFLAGS_HAVE_FINALIZE) && Py_TYPE(o)->tp_finalize) && !_PyGC_FINALIZED(o)) {
    if (PyObject_CallFinalizerFromDealloc(o)) return;
  }
  #endif
  PyObject_GC_UnTrack(o);
  Py_CLEAR(p->tag);
  (*Py_TYPE(o)->tp_free)(o);
}

static int __pyx_tp_traverse_4grpc_7_cython_6cygrpc_ConnectivityEvent(PyObject *o, visitproc v, void *a) {
  int e;
  struct __pyx_obj_4grpc_7_cython_6cygrpc_ConnectivityEvent *p = (struct __pyx_obj_4grpc_7_cython_6cygrpc_ConnectivityEvent *)o;
  if (p->tag) {
    e = (*v)(p->tag, a); if (e) return e;
  }
  return 0;
}

static int __pyx_tp_clear_4grpc_7_cython_6cygrpc_ConnectivityEvent(PyObject *o) {
  PyObject* tmp;
  struct __pyx_obj_4grpc_7_cython_6cygrpc_ConnectivityEvent *p = (struct __pyx_obj_4grpc_7_cython_6cygrpc_ConnectivityEvent *)o;
  tmp = ((PyObject*)p->tag);
  p->tag = Py_None; Py_INCREF(Py_None);
  Py_XDECREF(tmp);
  return 0;
}

static PyObject *__pyx_getprop_4grpc_7_cython_6cygrpc_17ConnectivityEvent_completion_type(PyObject *o, CYTHON_UNUSED void *x) {
  return __pyx_pw_4grpc_7_cython_6cygrpc_17ConnectivityEvent_15completion_type_1__get__(o);
}

static PyObject *__pyx_getprop_4grpc_7_cython_6cygrpc_17ConnectivityEvent_success(PyObject *o, CYTHON_UNUSED void *x) {
  return __pyx_pw_4grpc_7_cython_6cygrpc_17ConnectivityEvent_7success_1__get__(o);
}

static PyObject *__pyx_getprop_4grpc_7_cython_6cygrpc_17ConnectivityEvent_tag(PyObject *o, CYTHON_UNUSED void *x) {
  return __pyx_pw_4grpc_7_cython_6cygrpc_17ConnectivityEvent_3tag_1__get__(o);
}

static PyMethodDef __pyx_methods_4grpc_7_cython_6cygrpc_ConnectivityEvent[] = {
  {"__reduce_cython__", (PyCFunction)__pyx_pw_4grpc_7_cython_6cygrpc_17ConnectivityEvent_3__reduce_cython__, METH_NOARGS, 0},
  {"__setstate_cython__", (PyCFunction)__pyx_pw_4grpc_7_cython_6cygrpc_17ConnectivityEvent_5__setstate_cython__, METH_O, 0},
  {0, 0, 0, 0}
};

static struct PyGetSetDef __pyx_getsets_4grpc_7_cython_6cygrpc_ConnectivityEvent[] = {
  {(char *)"completion_type", __pyx_getprop_4grpc_7_cython_6cygrpc_17ConnectivityEvent_completion_type, 0, (char *)0, 0},
  {(char *)"success", __pyx_getprop_4grpc_7_cython_6cygrpc_17ConnectivityEvent_success, 0, (char *)0, 0},
  {(char *)"tag", __pyx_getprop_4grpc_7_cython_6cygrpc_17ConnectivityEvent_tag, 0, (char *)0, 0},
  {0, 0, 0, 0, 0}
};

static PyTypeObject __pyx_type_4grpc_7_cython_6cygrpc_ConnectivityEvent = {
  PyVarObject_HEAD_INIT(0, 0)
  "grpc._cython.cygrpc.ConnectivityEvent", /*tp_name*/
  sizeof(struct __pyx_obj_4grpc_7_cython_6cygrpc_ConnectivityEvent), /*tp_basicsize*/
  0, /*tp_itemsize*/
  __pyx_tp_dealloc_4grpc_7_cython_6cygrpc_ConnectivityEvent, /*tp_dealloc*/
  #if PY_VERSION_HEX < 0x030800b4
  0, /*tp_print*/
  #endif
  #if PY_VERSION_HEX >= 0x030800b4
  0, /*tp_vectorcall_offset*/
  #endif
  0, /*tp_getattr*/
  0, /*tp_setattr*/
  #if PY_MAJOR_VERSION < 3
  0, /*tp_compare*/
  #endif
  #if PY_MAJOR_VERSION >= 3
  0, /*tp_as_async*/
  #endif
  0, /*tp_repr*/
  0, /*tp_as_number*/
  0, /*tp_as_sequence*/
  0, /*tp_as_mapping*/
  0, /*tp_hash*/
  0, /*tp_call*/
  0, /*tp_str*/
  0, /*tp_getattro*/
  0, /*tp_setattro*/
  0, /*tp_as_buffer*/
  Py_TPFLAGS_DEFAULT|Py_TPFLAGS_HAVE_VERSION_TAG|Py_TPFLAGS_CHECKTYPES|Py_TPFLAGS_HAVE_NEWBUFFER|Py_TPFLAGS_BASETYPE|Py_TPFLAGS_HAVE_GC, /*tp_flags*/
  0, /*tp_doc*/
  __pyx_tp_traverse_4grpc_7_cython_6cygrpc_ConnectivityEvent, /*tp_traverse*/
  __pyx_tp_clear_4grpc_7_cython_6cygrpc_ConnectivityEvent, /*tp_clear*/
  0, /*tp_richcompare*/
  0, /*tp_weaklistoffset*/
  0, /*tp_iter*/
  0, /*tp_iternext*/
  __pyx_methods_4grpc_7_cython_6cygrpc_ConnectivityEvent, /*tp_methods*/
  0, /*tp_members*/
  __pyx_getsets_4grpc_7_cython_6cygrpc_ConnectivityEvent, /*tp_getset*/
  0, /*tp_base*/
  0, /*tp_dict*/
  0, /*tp_descr_get*/
  0, /*tp_descr_set*/
  0, /*tp_dictoffset*/
  0, /*tp_init*/
  0, /*tp_alloc*/
  __pyx_tp_new_4grpc_7_cython_6cygrpc_ConnectivityEvent, /*tp_new*/
  0, /*tp_free*/
  0, /*tp_is_gc*/
  0, /*tp_bases*/
  0, /*tp_mro*/
  0, /*tp_cache*/
  0, /*tp_subclasses*/
  0, /*tp_weaklist*/
  0, /*tp_del*/
  0, /*tp_version_tag*/
  #if PY_VERSION_HEX >= 0x030400a1
  0, /*tp_finalize*/
  #endif
  #if PY_VERSION_HEX >= 0x030800b1
  0, /*tp_vectorcall*/
  #endif
  #if PY_VERSION_HEX >= 0x030800b4 && PY_VERSION_HEX < 0x03090000
  0, /*tp_print*/
  #endif
};

static PyObject *__pyx_tp_new_4grpc_7_cython_6cygrpc_RequestCallEvent(PyTypeObject *t, PyObject *a, PyObject *k) {
  struct __pyx_obj_4grpc_7_cython_6cygrpc_RequestCallEvent *p;
  PyObject *o;
  if (likely((t->tp_flags & Py_TPFLAGS_IS_ABSTRACT) == 0)) {
    o = (*t->tp_alloc)(t, 0);
  } else {
    o = (PyObject *) PyBaseObject_Type.tp_new(t, __pyx_empty_tuple, 0);
  }
  if (unlikely(!o)) return 0;
  p = ((struct __pyx_obj_4grpc_7_cython_6cygrpc_RequestCallEvent *)o);
  p->tag = Py_None; Py_INCREF(Py_None);
  p->call = ((struct __pyx_obj_4grpc_7_cython_6cygrpc_Call *)Py_None); Py_INCREF(Py_None);
  p->call_details = ((struct __pyx_obj_4grpc_7_cython_6cygrpc_CallDetails *)Py_None); Py_INCREF(Py_None);
  p->invocation_metadata = ((PyObject*)Py_None); Py_INCREF(Py_None);
  if (unlikely(__pyx_pw_4grpc_7_cython_6cygrpc_16RequestCallEvent_1__cinit__(o, a, k) < 0)) goto bad;
  return o;
  bad:
  Py_DECREF(o); o = 0;
  return NULL;
}

static void __pyx_tp_dealloc_4grpc_7_cython_6cygrpc_RequestCallEvent(PyObject *o) {
  struct __pyx_obj_4grpc_7_cython_6cygrpc_RequestCallEvent *p = (struct __pyx_obj_4grpc_7_cython_6cygrpc_RequestCallEvent *)o;
  #if CYTHON_USE_TP_FINALIZE
  if (unlikely(PyType_HasFeature(Py_TYPE(o), Py_TPFLAGS_HAVE_FINALIZE) && Py_TYPE(o)->tp_finalize) && !_PyGC_FINALIZED(o)) {
    if (PyObject_CallFinalizerFromDealloc(o)) return;
  }
  #endif
  PyObject_GC_UnTrack(o);
  Py_CLEAR(p->tag);
  Py_CLEAR(p->call);
  Py_CLEAR(p->call_details);
  Py_CLEAR(p->invocation_metadata);
  (*Py_TYPE(o)->tp_free)(o);
}

static int __pyx_tp_traverse_4grpc_7_cython_6cygrpc_RequestCallEvent(PyObject *o, visitproc v, void *a) {
  int e;
  struct __pyx_obj_4grpc_7_cython_6cygrpc_RequestCallEvent *p = (struct __pyx_obj_4grpc_7_cython_6cygrpc_RequestCallEvent *)o;
  if (p->tag) {
    e = (*v)(p->tag, a); if (e) return e;
  }
  if (p->call) {
    e = (*v)(((PyObject *)p->call), a); if (e) return e;
  }
  if (p->call_details) {
    e = (*v)(((PyObject *)p->call_details), a); if (e) return e;
  }
  if (p->invocation_metadata) {
    e = (*v)(p->invocation_metadata, a); if (e) return e;
  }
  return 0;
}

static int __pyx_tp_clear_4grpc_7_cython_6cygrpc_RequestCallEvent(PyObject *o) {
  PyObject* tmp;
  struct __pyx_obj_4grpc_7_cython_6cygrpc_RequestCallEvent *p = (struct __pyx_obj_4grpc_7_cython_6cygrpc_RequestCallEvent *)o;
  tmp = ((PyObject*)p->tag);
  p->tag = Py_None; Py_INCREF(Py_None);
  Py_XDECREF(tmp);
  tmp = ((PyObject*)p->call);
  p->call = ((struct __pyx_obj_4grpc_7_cython_6cygrpc_Call *)Py_None); Py_INCREF(Py_None);
  Py_XDECREF(tmp);
  tmp = ((PyObject*)p->call_details);
  p->call_details = ((struct __pyx_obj_4grpc_7_cython_6cygrpc_CallDetails *)Py_None); Py_INCREF(Py_None);
  Py_XDECREF(tmp);
  tmp = ((PyObject*)p->invocation_metadata);
  p->invocation_metadata = ((PyObject*)Py_None); Py_INCREF(Py_None);
  Py_XDECREF(tmp);
  return 0;
}

static PyObject *__pyx_getprop_4grpc_7_cython_6cygrpc_16RequestCallEvent_completion_type(PyObject *o, CYTHON_UNUSED void *x) {
  return __pyx_pw_4grpc_7_cython_6cygrpc_16RequestCallEvent_15completion_type_1__get__(o);
}

static PyObject *__pyx_getprop_4grpc_7_cython_6cygrpc_16RequestCallEvent_success(PyObject *o, CYTHON_UNUSED void *x) {
  return __pyx_pw_4grpc_7_cython_6cygrpc_16RequestCallEvent_7success_1__get__(o);
}

static PyObject *__pyx_getprop_4grpc_7_cython_6cygrpc_16RequestCallEvent_tag(PyObject *o, CYTHON_UNUSED void *x) {
  return __pyx_pw_4grpc_7_cython_6cygrpc_16RequestCallEvent_3tag_1__get__(o);
}

static PyObject *__pyx_getprop_4grpc_7_cython_6cygrpc_16RequestCallEvent_call(PyObject *o, CYTHON_UNUSED void *x) {
  return __pyx_pw_4grpc_7_cython_6cygrpc_16RequestCallEvent_4call_1__get__(o);
}

static PyObject *__pyx_getprop_4grpc_7_cython_6cygrpc_16RequestCallEvent_call_details(PyObject *o, CYTHON_UNUSED void *x) {
  return __pyx_pw_4grpc_7_cython_6cygrpc_16RequestCallEvent_12call_details_1__get__(o);
}

static PyObject *__pyx_getprop_4grpc_7_cython_6cygrpc_16RequestCallEvent_invocation_metadata(PyObject *o, CYTHON_UNUSED void *x) {
  return __pyx_pw_4grpc_7_cython_6cygrpc_16RequestCallEvent_19invocation_metadata_1__get__(o);
}

static PyMethodDef __pyx_methods_4grpc_7_cython_6cygrpc_RequestCallEvent[] = {
  {"__reduce_cython__", (PyCFunction)__pyx_pw_4grpc_7_cython_6cygrpc_16RequestCallEvent_3__reduce_cython__, METH_NOARGS, 0},
  {"__setstate_cython__", (PyCFunction)__pyx_pw_4grpc_7_cython_6cygrpc_16RequestCallEvent_5__setstate_cython__, METH_O, 0},
  {0, 0, 0, 0}
};

static struct PyGetSetDef __pyx_getsets_4grpc_7_cython_6cygrpc_RequestCallEvent[] = {
  {(char *)"completion_type", __pyx_getprop_4grpc_7_cython_6cygrpc_16RequestCallEvent_completion_type, 0, (char *)0, 0},
  {(char *)"success", __pyx_getprop_4grpc_7_cython_6cygrpc_16RequestCallEvent_success, 0, (char *)0, 0},
  {(char *)"tag", __pyx_getprop_4grpc_7_cython_6cygrpc_16RequestCallEvent_tag, 0, (char *)0, 0},
  {(char *)"call", __pyx_getprop_4grpc_7_cython_6cygrpc_16RequestCallEvent_call, 0, (char *)0, 0},
  {(char *)"call_details", __pyx_getprop_4grpc_7_cython_6cygrpc_16RequestCallEvent_call_details, 0, (char *)0, 0},
  {(char *)"invocation_metadata", __pyx_getprop_4grpc_7_cython_6cygrpc_16RequestCallEvent_invocation_metadata, 0, (char *)0, 0},
  {0, 0, 0, 0, 0}
};

static PyTypeObject __pyx_type_4grpc_7_cython_6cygrpc_RequestCallEvent = {
  PyVarObject_HEAD_INIT(0, 0)
  "grpc._cython.cygrpc.RequestCallEvent", /*tp_name*/
  sizeof(struct __pyx_obj_4grpc_7_cython_6cygrpc_RequestCallEvent), /*tp_basicsize*/
  0, /*tp_itemsize*/
  __pyx_tp_dealloc_4grpc_7_cython_6cygrpc_RequestCallEvent, /*tp_dealloc*/
  #if PY_VERSION_HEX < 0x030800b4
  0, /*tp_print*/
  #endif
  #if PY_VERSION_HEX >= 0x030800b4
  0, /*tp_vectorcall_offset*/
  #endif
  0, /*tp_getattr*/
  0, /*tp_setattr*/
  #if PY_MAJOR_VERSION < 3
  0, /*tp_compare*/
  #endif
  #if PY_MAJOR_VERSION >= 3
  0, /*tp_as_async*/
  #endif
  0, /*tp_repr*/
  0, /*tp_as_number*/
  0, /*tp_as_sequence*/
  0, /*tp_as_mapping*/
  0, /*tp_hash*/
  0, /*tp_call*/
  0, /*tp_str*/
  0, /*tp_getattro*/
  0, /*tp_setattro*/
  0, /*tp_as_buffer*/
  Py_TPFLAGS_DEFAULT|Py_TPFLAGS_HAVE_VERSION_TAG|Py_TPFLAGS_CHECKTYPES|Py_TPFLAGS_HAVE_NEWBUFFER|Py_TPFLAGS_BASETYPE|Py_TPFLAGS_HAVE_GC, /*tp_flags*/
  0, /*tp_doc*/
  __pyx_tp_traverse_4grpc_7_cython_6cygrpc_RequestCallEvent, /*tp_traverse*/
  __pyx_tp_clear_4grpc_7_cython_6cygrpc_RequestCallEvent, /*tp_clear*/
  0, /*tp_richcompare*/
  0, /*tp_weaklistoffset*/
  0, /*tp_iter*/
  0, /*tp_iternext*/
  __pyx_methods_4grpc_7_cython_6cygrpc_RequestCallEvent, /*tp_methods*/
  0, /*tp_members*/
  __pyx_getsets_4grpc_7_cython_6cygrpc_RequestCallEvent, /*tp_getset*/
  0, /*tp_base*/
  0, /*tp_dict*/
  0, /*tp_descr_get*/
  0, /*tp_descr_set*/
  0, /*tp_dictoffset*/
  0, /*tp_init*/
  0, /*tp_alloc*/
  __pyx_tp_new_4grpc_7_cython_6cygrpc_RequestCallEvent, /*tp_new*/
  0, /*tp_free*/
  0, /*tp_is_gc*/
  0, /*tp_bases*/
  0, /*tp_mro*/
  0, /*tp_cache*/
  0, /*tp_subclasses*/
  0, /*tp_weaklist*/
  0, /*tp_del*/
  0, /*tp_version_tag*/
  #if PY_VERSION_HEX >= 0x030400a1
  0, /*tp_finalize*/
  #endif
  #if PY_VERSION_HEX >= 0x030800b1
  0, /*tp_vectorcall*/
  #endif
  #if PY_VERSION_HEX >= 0x030800b4 && PY_VERSION_HEX < 0x03090000
  0, /*tp_print*/
  #endif
};

static PyObject *__pyx_tp_new_4grpc_7_cython_6cygrpc_BatchOperationEvent(PyTypeObject *t, PyObject *a, PyObject *k) {
  struct __pyx_obj_4grpc_7_cython_6cygrpc_BatchOperationEvent *p;
  PyObject *o;
  if (likely((t->tp_flags & Py_TPFLAGS_IS_ABSTRACT) == 0)) {
    o = (*t->tp_alloc)(t, 0);
  } else {
    o = (PyObject *) PyBaseObject_Type.tp_new(t, __pyx_empty_tuple, 0);
  }
  if (unlikely(!o)) return 0;
  p = ((struct __pyx_obj_4grpc_7_cython_6cygrpc_BatchOperationEvent *)o);
  p->tag = Py_None; Py_INCREF(Py_None);
  p->batch_operations = Py_None; Py_INCREF(Py_None);
  if (unlikely(__pyx_pw_4grpc_7_cython_6cygrpc_19BatchOperationEvent_1__cinit__(o, a, k) < 0)) goto bad;
  return o;
  bad:
  Py_DECREF(o); o = 0;
  return NULL;
}

static void __pyx_tp_dealloc_4grpc_7_cython_6cygrpc_BatchOperationEvent(PyObject *o) {
  struct __pyx_obj_4grpc_7_cython_6cygrpc_BatchOperationEvent *p = (struct __pyx_obj_4grpc_7_cython_6cygrpc_BatchOperationEvent *)o;
  #if CYTHON_USE_TP_FINALIZE
  if (unlikely(PyType_HasFeature(Py_TYPE(o), Py_TPFLAGS_HAVE_FINALIZE) && Py_TYPE(o)->tp_finalize) && !_PyGC_FINALIZED(o)) {
    if (PyObject_CallFinalizerFromDealloc(o)) return;
  }
  #endif
  PyObject_GC_UnTrack(o);
  Py_CLEAR(p->tag);
  Py_CLEAR(p->batch_operations);
  (*Py_TYPE(o)->tp_free)(o);
}

static int __pyx_tp_traverse_4grpc_7_cython_6cygrpc_BatchOperationEvent(PyObject *o, visitproc v, void *a) {
  int e;
  struct __pyx_obj_4grpc_7_cython_6cygrpc_BatchOperationEvent *p = (struct __pyx_obj_4grpc_7_cython_6cygrpc_BatchOperationEvent *)o;
  if (p->tag) {
    e = (*v)(p->tag, a); if (e) return e;
  }
  if (p->batch_operations) {
    e = (*v)(p->batch_operations, a); if (e) return e;
  }
  return 0;
}

static int __pyx_tp_clear_4grpc_7_cython_6cygrpc_BatchOperationEvent(PyObject *o) {
  PyObject* tmp;
  struct __pyx_obj_4grpc_7_cython_6cygrpc_BatchOperationEvent *p = (struct __pyx_obj_4grpc_7_cython_6cygrpc_BatchOperationEvent *)o;
  tmp = ((PyObject*)p->tag);
  p->tag = Py_None; Py_INCREF(Py_None);
  Py_XDECREF(tmp);
  tmp = ((PyObject*)p->batch_operations);
  p->batch_operations = Py_None; Py_INCREF(Py_None);
  Py_XDECREF(tmp);
  return 0;
}

static PyObject *__pyx_getprop_4grpc_7_cython_6cygrpc_19BatchOperationEvent_completion_type(PyObject *o, CYTHON_UNUSED void *x) {
  return __pyx_pw_4grpc_7_cython_6cygrpc_19BatchOperationEvent_15completion_type_1__get__(o);
}

static PyObject *__pyx_getprop_4grpc_7_cython_6cygrpc_19BatchOperationEvent_success(PyObject *o, CYTHON_UNUSED void *x) {
  return __pyx_pw_4grpc_7_cython_6cygrpc_19BatchOperationEvent_7success_1__get__(o);
}

static PyObject *__pyx_getprop_4grpc_7_cython_6cygrpc_19BatchOperationEvent_tag(PyObject *o, CYTHON_UNUSED void *x) {
  return __pyx_pw_4grpc_7_cython_6cygrpc_19BatchOperationEvent_3tag_1__get__(o);
}

static PyObject *__pyx_getprop_4grpc_7_cython_6cygrpc_19BatchOperationEvent_batch_operations(PyObject *o, CYTHON_UNUSED void *x) {
  return __pyx_pw_4grpc_7_cython_6cygrpc_19BatchOperationEvent_16batch_operations_1__get__(o);
}

static PyMethodDef __pyx_methods_4grpc_7_cython_6cygrpc_BatchOperationEvent[] = {
  {"__reduce_cython__", (PyCFunction)__pyx_pw_4grpc_7_cython_6cygrpc_19BatchOperationEvent_3__reduce_cython__, METH_NOARGS, 0},
  {"__setstate_cython__", (PyCFunction)__pyx_pw_4grpc_7_cython_6cygrpc_19BatchOperationEvent_5__setstate_cython__, METH_O, 0},
  {0, 0, 0, 0}
};

static struct PyGetSetDef __pyx_getsets_4grpc_7_cython_6cygrpc_BatchOperationEvent[] = {
  {(char *)"completion_type", __pyx_getprop_4grpc_7_cython_6cygrpc_19BatchOperationEvent_completion_type, 0, (char *)0, 0},
  {(char *)"success", __pyx_getprop_4grpc_7_cython_6cygrpc_19BatchOperationEvent_success, 0, (char *)0, 0},
  {(char *)"tag", __pyx_getprop_4grpc_7_cython_6cygrpc_19BatchOperationEvent_tag, 0, (char *)0, 0},
  {(char *)"batch_operations", __pyx_getprop_4grpc_7_cython_6cygrpc_19BatchOperationEvent_batch_operations, 0, (char *)0, 0},
  {0, 0, 0, 0, 0}
};

static PyTypeObject __pyx_type_4grpc_7_cython_6cygrpc_BatchOperationEvent = {
  PyVarObject_HEAD_INIT(0, 0)
  "grpc._cython.cygrpc.BatchOperationEvent", /*tp_name*/
  sizeof(struct __pyx_obj_4grpc_7_cython_6cygrpc_BatchOperationEvent), /*tp_basicsize*/
  0, /*tp_itemsize*/
  __pyx_tp_dealloc_4grpc_7_cython_6cygrpc_BatchOperationEvent, /*tp_dealloc*/
  #if PY_VERSION_HEX < 0x030800b4
  0, /*tp_print*/
  #endif
  #if PY_VERSION_HEX >= 0x030800b4
  0, /*tp_vectorcall_offset*/
  #endif
  0, /*tp_getattr*/
  0, /*tp_setattr*/
  #if PY_MAJOR_VERSION < 3
  0, /*tp_compare*/
  #endif
  #if PY_MAJOR_VERSION >= 3
  0, /*tp_as_async*/
  #endif
  0, /*tp_repr*/
  0, /*tp_as_number*/
  0, /*tp_as_sequence*/
  0, /*tp_as_mapping*/
  0, /*tp_hash*/
  0, /*tp_call*/
  0, /*tp_str*/
  0, /*tp_getattro*/
  0, /*tp_setattro*/
  0, /*tp_as_buffer*/
  Py_TPFLAGS_DEFAULT|Py_TPFLAGS_HAVE_VERSION_TAG|Py_TPFLAGS_CHECKTYPES|Py_TPFLAGS_HAVE_NEWBUFFER|Py_TPFLAGS_BASETYPE|Py_TPFLAGS_HAVE_GC, /*tp_flags*/
  0, /*tp_doc*/
  __pyx_tp_traverse_4grpc_7_cython_6cygrpc_BatchOperationEvent, /*tp_traverse*/
  __pyx_tp_clear_4grpc_7_cython_6cygrpc_BatchOperationEvent, /*tp_clear*/
  0, /*tp_richcompare*/
  0, /*tp_weaklistoffset*/
  0, /*tp_iter*/
  0, /*tp_iternext*/
  __pyx_methods_4grpc_7_cython_6cygrpc_BatchOperationEvent, /*tp_methods*/
  0, /*tp_members*/
  __pyx_getsets_4grpc_7_cython_6cygrpc_BatchOperationEvent, /*tp_getset*/
  0, /*tp_base*/
  0, /*tp_dict*/
  0, /*tp_descr_get*/
  0, /*tp_descr_set*/
  0, /*tp_dictoffset*/
  0, /*tp_init*/
  0, /*tp_alloc*/
  __pyx_tp_new_4grpc_7_cython_6cygrpc_BatchOperationEvent, /*tp_new*/
  0, /*tp_free*/
  0, /*tp_is_gc*/
  0, /*tp_bases*/
  0, /*tp_mro*/
  0, /*tp_cache*/
  0, /*tp_subclasses*/
  0, /*tp_weaklist*/
  0, /*tp_del*/
  0, /*tp_version_tag*/
  #if PY_VERSION_HEX >= 0x030400a1
  0, /*tp_finalize*/
  #endif
  #if PY_VERSION_HEX >= 0x030800b1
  0, /*tp_vectorcall*/
  #endif
  #if PY_VERSION_HEX >= 0x030800b4 && PY_VERSION_HEX < 0x03090000
  0, /*tp_print*/
  #endif
};

static PyObject *__pyx_tp_new_4grpc_7_cython_6cygrpc_ServerShutdownEvent(PyTypeObject *t, PyObject *a, PyObject *k) {
  struct __pyx_obj_4grpc_7_cython_6cygrpc_ServerShutdownEvent *p;
  PyObject *o;
  if (likely((t->tp_flags & Py_TPFLAGS_IS_ABSTRACT) == 0)) {
    o = (*t->tp_alloc)(t, 0);
  } else {
    o = (PyObject *) PyBaseObject_Type.tp_new(t, __pyx_empty_tuple, 0);
  }
  if (unlikely(!o)) return 0;
  p = ((struct __pyx_obj_4grpc_7_cython_6cygrpc_ServerShutdownEvent *)o);
  p->tag = Py_None; Py_INCREF(Py_None);
  if (unlikely(__pyx_pw_4grpc_7_cython_6cygrpc_19ServerShutdownEvent_1__cinit__(o, a, k) < 0)) goto bad;
  return o;
  bad:
  Py_DECREF(o); o = 0;
  return NULL;
}

static void __pyx_tp_dealloc_4grpc_7_cython_6cygrpc_ServerShutdownEvent(PyObject *o) {
  struct __pyx_obj_4grpc_7_cython_6cygrpc_ServerShutdownEvent *p = (struct __pyx_obj_4grpc_7_cython_6cygrpc_ServerShutdownEvent *)o;
  #if CYTHON_USE_TP_FINALIZE
  if (unlikely(PyType_HasFeature(Py_TYPE(o), Py_TPFLAGS_HAVE_FINALIZE) && Py_TYPE(o)->tp_finalize) && !_PyGC_FINALIZED(o)) {
    if (PyObject_CallFinalizerFromDealloc(o)) return;
  }
  #endif
  PyObject_GC_UnTrack(o);
  Py_CLEAR(p->tag);
  (*Py_TYPE(o)->tp_free)(o);
}

static int __pyx_tp_traverse_4grpc_7_cython_6cygrpc_ServerShutdownEvent(PyObject *o, visitproc v, void *a) {
  int e;
  struct __pyx_obj_4grpc_7_cython_6cygrpc_ServerShutdownEvent *p = (struct __pyx_obj_4grpc_7_cython_6cygrpc_ServerShutdownEvent *)o;
  if (p->tag) {
    e = (*v)(p->tag, a); if (e) return e;
  }
  return 0;
}

static int __pyx_tp_clear_4grpc_7_cython_6cygrpc_ServerShutdownEvent(PyObject *o) {
  PyObject* tmp;
  struct __pyx_obj_4grpc_7_cython_6cygrpc_ServerShutdownEvent *p = (struct __pyx_obj_4grpc_7_cython_6cygrpc_ServerShutdownEvent *)o;
  tmp = ((PyObject*)p->tag);
  p->tag = Py_None; Py_INCREF(Py_None);
  Py_XDECREF(tmp);
  return 0;
}

static PyObject *__pyx_getprop_4grpc_7_cython_6cygrpc_19ServerShutdownEvent_completion_type(PyObject *o, CYTHON_UNUSED void *x) {
  return __pyx_pw_4grpc_7_cython_6cygrpc_19ServerShutdownEvent_15completion_type_1__get__(o);
}

static PyObject *__pyx_getprop_4grpc_7_cython_6cygrpc_19ServerShutdownEvent_success(PyObject *o, CYTHON_UNUSED void *x) {
  return __pyx_pw_4grpc_7_cython_6cygrpc_19ServerShutdownEvent_7success_1__get__(o);
}

static PyObject *__pyx_getprop_4grpc_7_cython_6cygrpc_19ServerShutdownEvent_tag(PyObject *o, CYTHON_UNUSED void *x) {
  return __pyx_pw_4grpc_7_cython_6cygrpc_19ServerShutdownEvent_3tag_1__get__(o);
}

static PyMethodDef __pyx_methods_4grpc_7_cython_6cygrpc_ServerShutdownEvent[] = {
  {"__reduce_cython__", (PyCFunction)__pyx_pw_4grpc_7_cython_6cygrpc_19ServerShutdownEvent_3__reduce_cython__, METH_NOARGS, 0},
  {"__setstate_cython__", (PyCFunction)__pyx_pw_4grpc_7_cython_6cygrpc_19ServerShutdownEvent_5__setstate_cython__, METH_O, 0},
  {0, 0, 0, 0}
};

static struct PyGetSetDef __pyx_getsets_4grpc_7_cython_6cygrpc_ServerShutdownEvent[] = {
  {(char *)"completion_type", __pyx_getprop_4grpc_7_cython_6cygrpc_19ServerShutdownEvent_completion_type, 0, (char *)0, 0},
  {(char *)"success", __pyx_getprop_4grpc_7_cython_6cygrpc_19ServerShutdownEvent_success, 0, (char *)0, 0},
  {(char *)"tag", __pyx_getprop_4grpc_7_cython_6cygrpc_19ServerShutdownEvent_tag, 0, (char *)0, 0},
  {0, 0, 0, 0, 0}
};

static PyTypeObject __pyx_type_4grpc_7_cython_6cygrpc_ServerShutdownEvent = {
  PyVarObject_HEAD_INIT(0, 0)
  "grpc._cython.cygrpc.ServerShutdownEvent", /*tp_name*/
  sizeof(struct __pyx_obj_4grpc_7_cython_6cygrpc_ServerShutdownEvent), /*tp_basicsize*/
  0, /*tp_itemsize*/
  __pyx_tp_dealloc_4grpc_7_cython_6cygrpc_ServerShutdownEvent, /*tp_dealloc*/
  #if PY_VERSION_HEX < 0x030800b4
  0, /*tp_print*/
  #endif
  #if PY_VERSION_HEX >= 0x030800b4
  0, /*tp_vectorcall_offset*/
  #endif
  0, /*tp_getattr*/
  0, /*tp_setattr*/
  #if PY_MAJOR_VERSION < 3
  0, /*tp_compare*/
  #endif
  #if PY_MAJOR_VERSION >= 3
  0, /*tp_as_async*/
  #endif
  0, /*tp_repr*/
  0, /*tp_as_number*/
  0, /*tp_as_sequence*/
  0, /*tp_as_mapping*/
  0, /*tp_hash*/
  0, /*tp_call*/
  0, /*tp_str*/
  0, /*tp_getattro*/
  0, /*tp_setattro*/
  0, /*tp_as_buffer*/
  Py_TPFLAGS_DEFAULT|Py_TPFLAGS_HAVE_VERSION_TAG|Py_TPFLAGS_CHECKTYPES|Py_TPFLAGS_HAVE_NEWBUFFER|Py_TPFLAGS_BASETYPE|Py_TPFLAGS_HAVE_GC, /*tp_flags*/
  0, /*tp_doc*/
  __pyx_tp_traverse_4grpc_7_cython_6cygrpc_ServerShutdownEvent, /*tp_traverse*/
  __pyx_tp_clear_4grpc_7_cython_6cygrpc_ServerShutdownEvent, /*tp_clear*/
  0, /*tp_richcompare*/
  0, /*tp_weaklistoffset*/
  0, /*tp_iter*/
  0, /*tp_iternext*/
  __pyx_methods_4grpc_7_cython_6cygrpc_ServerShutdownEvent, /*tp_methods*/
  0, /*tp_members*/
  __pyx_getsets_4grpc_7_cython_6cygrpc_ServerShutdownEvent, /*tp_getset*/
  0, /*tp_base*/
  0, /*tp_dict*/
  0, /*tp_descr_get*/
  0, /*tp_descr_set*/
  0, /*tp_dictoffset*/
  0, /*tp_init*/
  0, /*tp_alloc*/
  __pyx_tp_new_4grpc_7_cython_6cygrpc_ServerShutdownEvent, /*tp_new*/
  0, /*tp_free*/
  0, /*tp_is_gc*/
  0, /*tp_bases*/
  0, /*tp_mro*/
  0, /*tp_cache*/
  0, /*tp_subclasses*/
  0, /*tp_weaklist*/
  0, /*tp_del*/
  0, /*tp_version_tag*/
  #if PY_VERSION_HEX >= 0x030400a1
  0, /*tp_finalize*/
  #endif
  #if PY_VERSION_HEX >= 0x030800b1
  0, /*tp_vectorcall*/
  #endif
  #if PY_VERSION_HEX >= 0x030800b4 && PY_VERSION_HEX < 0x03090000
  0, /*tp_print*/
  #endif
};
static struct __pyx_vtabstruct_4grpc_7_cython_6cygrpc_Operation __pyx_vtable_4grpc_7_cython_6cygrpc_Operation;

static PyObject *__pyx_tp_new_4grpc_7_cython_6cygrpc_Operation(PyTypeObject *t, CYTHON_UNUSED PyObject *a, CYTHON_UNUSED PyObject *k) {
  struct __pyx_obj_4grpc_7_cython_6cygrpc_Operation *p;
  PyObject *o;
  if (likely((t->tp_flags & Py_TPFLAGS_IS_ABSTRACT) == 0)) {
    o = (*t->tp_alloc)(t, 0);
  } else {
    o = (PyObject *) PyBaseObject_Type.tp_new(t, __pyx_empty_tuple, 0);
  }
  if (unlikely(!o)) return 0;
  p = ((struct __pyx_obj_4grpc_7_cython_6cygrpc_Operation *)o);
  p->__pyx_vtab = __pyx_vtabptr_4grpc_7_cython_6cygrpc_Operation;
  return o;
}

static void __pyx_tp_dealloc_4grpc_7_cython_6cygrpc_Operation(PyObject *o) {
  #if CYTHON_USE_TP_FINALIZE
  if (unlikely(PyType_HasFeature(Py_TYPE(o), Py_TPFLAGS_HAVE_FINALIZE) && Py_TYPE(o)->tp_finalize) && (!PyType_IS_GC(Py_TYPE(o)) || !_PyGC_FINALIZED(o))) {
    if (PyObject_CallFinalizerFromDealloc(o)) return;
  }
  #endif
  (*Py_TYPE(o)->tp_free)(o);
}

static PyMethodDef __pyx_methods_4grpc_7_cython_6cygrpc_Operation[] = {
  {"__reduce_cython__", (PyCFunction)__pyx_pw_4grpc_7_cython_6cygrpc_9Operation_1__reduce_cython__, METH_NOARGS, 0},
  {"__setstate_cython__", (PyCFunction)__pyx_pw_4grpc_7_cython_6cygrpc_9Operation_3__setstate_cython__, METH_O, 0},
  {0, 0, 0, 0}
};

static PyTypeObject __pyx_type_4grpc_7_cython_6cygrpc_Operation = {
  PyVarObject_HEAD_INIT(0, 0)
  "grpc._cython.cygrpc.Operation", /*tp_name*/
  sizeof(struct __pyx_obj_4grpc_7_cython_6cygrpc_Operation), /*tp_basicsize*/
  0, /*tp_itemsize*/
  __pyx_tp_dealloc_4grpc_7_cython_6cygrpc_Operation, /*tp_dealloc*/
  #if PY_VERSION_HEX < 0x030800b4
  0, /*tp_print*/
  #endif
  #if PY_VERSION_HEX >= 0x030800b4
  0, /*tp_vectorcall_offset*/
  #endif
  0, /*tp_getattr*/
  0, /*tp_setattr*/
  #if PY_MAJOR_VERSION < 3
  0, /*tp_compare*/
  #endif
  #if PY_MAJOR_VERSION >= 3
  0, /*tp_as_async*/
  #endif
  0, /*tp_repr*/
  0, /*tp_as_number*/
  0, /*tp_as_sequence*/
  0, /*tp_as_mapping*/
  0, /*tp_hash*/
  0, /*tp_call*/
  0, /*tp_str*/
  0, /*tp_getattro*/
  0, /*tp_setattro*/
  0, /*tp_as_buffer*/
  Py_TPFLAGS_DEFAULT|Py_TPFLAGS_HAVE_VERSION_TAG|Py_TPFLAGS_CHECKTYPES|Py_TPFLAGS_HAVE_NEWBUFFER|Py_TPFLAGS_BASETYPE, /*tp_flags*/
  0, /*tp_doc*/
  0, /*tp_traverse*/
  0, /*tp_clear*/
  0, /*tp_richcompare*/
  0, /*tp_weaklistoffset*/
  0, /*tp_iter*/
  0, /*tp_iternext*/
  __pyx_methods_4grpc_7_cython_6cygrpc_Operation, /*tp_methods*/
  0, /*tp_members*/
  0, /*tp_getset*/
  0, /*tp_base*/
  0, /*tp_dict*/
  0, /*tp_descr_get*/
  0, /*tp_descr_set*/
  0, /*tp_dictoffset*/
  0, /*tp_init*/
  0, /*tp_alloc*/
  __pyx_tp_new_4grpc_7_cython_6cygrpc_Operation, /*tp_new*/
  0, /*tp_free*/
  0, /*tp_is_gc*/
  0, /*tp_bases*/
  0, /*tp_mro*/
  0, /*tp_cache*/
  0, /*tp_subclasses*/
  0, /*tp_weaklist*/
  0, /*tp_del*/
  0, /*tp_version_tag*/
  #if PY_VERSION_HEX >= 0x030400a1
  0, /*tp_finalize*/
  #endif
  #if PY_VERSION_HEX >= 0x030800b1
  0, /*tp_vectorcall*/
  #endif
  #if PY_VERSION_HEX >= 0x030800b4 && PY_VERSION_HEX < 0x03090000
  0, /*tp_print*/
  #endif
};
static struct __pyx_vtabstruct_4grpc_7_cython_6cygrpc_SendInitialMetadataOperation __pyx_vtable_4grpc_7_cython_6cygrpc_SendInitialMetadataOperation;

static PyObject *__pyx_tp_new_4grpc_7_cython_6cygrpc_SendInitialMetadataOperation(PyTypeObject *t, PyObject *a, PyObject *k) {
  struct __pyx_obj_4grpc_7_cython_6cygrpc_SendInitialMetadataOperation *p;
  PyObject *o = __pyx_tp_new_4grpc_7_cython_6cygrpc_Operation(t, a, k);
  if (unlikely(!o)) return 0;
  p = ((struct __pyx_obj_4grpc_7_cython_6cygrpc_SendInitialMetadataOperation *)o);
  p->__pyx_base.__pyx_vtab = (struct __pyx_vtabstruct_4grpc_7_cython_6cygrpc_Operation*)__pyx_vtabptr_4grpc_7_cython_6cygrpc_SendInitialMetadataOperation;
  p->_initial_metadata = Py_None; Py_INCREF(Py_None);
  if (unlikely(__pyx_pw_4grpc_7_cython_6cygrpc_28SendInitialMetadataOperation_1__cinit__(o, a, k) < 0)) goto bad;
  return o;
  bad:
  Py_DECREF(o); o = 0;
  return NULL;
}

static void __pyx_tp_dealloc_4grpc_7_cython_6cygrpc_SendInitialMetadataOperation(PyObject *o) {
  struct __pyx_obj_4grpc_7_cython_6cygrpc_SendInitialMetadataOperation *p = (struct __pyx_obj_4grpc_7_cython_6cygrpc_SendInitialMetadataOperation *)o;
  #if CYTHON_USE_TP_FINALIZE
  if (unlikely(PyType_HasFeature(Py_TYPE(o), Py_TPFLAGS_HAVE_FINALIZE) && Py_TYPE(o)->tp_finalize) && !_PyGC_FINALIZED(o)) {
    if (PyObject_CallFinalizerFromDealloc(o)) return;
  }
  #endif
  PyObject_GC_UnTrack(o);
  Py_CLEAR(p->_initial_metadata);
  #if CYTHON_USE_TYPE_SLOTS
  if (PyType_IS_GC(Py_TYPE(o)->tp_base))
  #endif
  PyObject_GC_Track(o);
  __pyx_tp_dealloc_4grpc_7_cython_6cygrpc_Operation(o);
}

static int __pyx_tp_traverse_4grpc_7_cython_6cygrpc_SendInitialMetadataOperation(PyObject *o, visitproc v, void *a) {
  int e;
  struct __pyx_obj_4grpc_7_cython_6cygrpc_SendInitialMetadataOperation *p = (struct __pyx_obj_4grpc_7_cython_6cygrpc_SendInitialMetadataOperation *)o;
  e = ((likely(__pyx_ptype_4grpc_7_cython_6cygrpc_Operation)) ? ((__pyx_ptype_4grpc_7_cython_6cygrpc_Operation->tp_traverse) ? __pyx_ptype_4grpc_7_cython_6cygrpc_Operation->tp_traverse(o, v, a) : 0) : __Pyx_call_next_tp_traverse(o, v, a, __pyx_tp_traverse_4grpc_7_cython_6cygrpc_SendInitialMetadataOperation)); if (e) return e;
  if (p->_initial_metadata) {
    e = (*v)(p->_initial_metadata, a); if (e) return e;
  }
  return 0;
}

static int __pyx_tp_clear_4grpc_7_cython_6cygrpc_SendInitialMetadataOperation(PyObject *o) {
  PyObject* tmp;
  struct __pyx_obj_4grpc_7_cython_6cygrpc_SendInitialMetadataOperation *p = (struct __pyx_obj_4grpc_7_cython_6cygrpc_SendInitialMetadataOperation *)o;
  if (likely(__pyx_ptype_4grpc_7_cython_6cygrpc_Operation)) { if (__pyx_ptype_4grpc_7_cython_6cygrpc_Operation->tp_clear) __pyx_ptype_4grpc_7_cython_6cygrpc_Operation->tp_clear(o); } else __Pyx_call_next_tp_clear(o, __pyx_tp_clear_4grpc_7_cython_6cygrpc_SendInitialMetadataOperation);
  tmp = ((PyObject*)p->_initial_metadata);
  p->_initial_metadata = Py_None; Py_INCREF(Py_None);
  Py_XDECREF(tmp);
  return 0;
}

static PyObject *__pyx_getprop_4grpc_7_cython_6cygrpc_28SendInitialMetadataOperation__initial_metadata(PyObject *o, CYTHON_UNUSED void *x) {
  return __pyx_pw_4grpc_7_cython_6cygrpc_28SendInitialMetadataOperation_17_initial_metadata_1__get__(o);
}

static PyObject *__pyx_getprop_4grpc_7_cython_6cygrpc_28SendInitialMetadataOperation__flags(PyObject *o, CYTHON_UNUSED void *x) {
  return __pyx_pw_4grpc_7_cython_6cygrpc_28SendInitialMetadataOperation_6_flags_1__get__(o);
}

static PyMethodDef __pyx_methods_4grpc_7_cython_6cygrpc_SendInitialMetadataOperation[] = {
  {"type", (PyCFunction)__pyx_pw_4grpc_7_cython_6cygrpc_28SendInitialMetadataOperation_3type, METH_NOARGS, 0},
  {"__reduce_cython__", (PyCFunction)__pyx_pw_4grpc_7_cython_6cygrpc_28SendInitialMetadataOperation_5__reduce_cython__, METH_NOARGS, 0},
  {"__setstate_cython__", (PyCFunction)__pyx_pw_4grpc_7_cython_6cygrpc_28SendInitialMetadataOperation_7__setstate_cython__, METH_O, 0},
  {0, 0, 0, 0}
};

static struct PyGetSetDef __pyx_getsets_4grpc_7_cython_6cygrpc_SendInitialMetadataOperation[] = {
  {(char *)"_initial_metadata", __pyx_getprop_4grpc_7_cython_6cygrpc_28SendInitialMetadataOperation__initial_metadata, 0, (char *)0, 0},
  {(char *)"_flags", __pyx_getprop_4grpc_7_cython_6cygrpc_28SendInitialMetadataOperation__flags, 0, (char *)0, 0},
  {0, 0, 0, 0, 0}
};

static PyTypeObject __pyx_type_4grpc_7_cython_6cygrpc_SendInitialMetadataOperation = {
  PyVarObject_HEAD_INIT(0, 0)
  "grpc._cython.cygrpc.SendInitialMetadataOperation", /*tp_name*/
  sizeof(struct __pyx_obj_4grpc_7_cython_6cygrpc_SendInitialMetadataOperation), /*tp_basicsize*/
  0, /*tp_itemsize*/
  __pyx_tp_dealloc_4grpc_7_cython_6cygrpc_SendInitialMetadataOperation, /*tp_dealloc*/
  #if PY_VERSION_HEX < 0x030800b4
  0, /*tp_print*/
  #endif
  #if PY_VERSION_HEX >= 0x030800b4
  0, /*tp_vectorcall_offset*/
  #endif
  0, /*tp_getattr*/
  0, /*tp_setattr*/
  #if PY_MAJOR_VERSION < 3
  0, /*tp_compare*/
  #endif
  #if PY_MAJOR_VERSION >= 3
  0, /*tp_as_async*/
  #endif
  0, /*tp_repr*/
  0, /*tp_as_number*/
  0, /*tp_as_sequence*/
  0, /*tp_as_mapping*/
  0, /*tp_hash*/
  0, /*tp_call*/
  0, /*tp_str*/
  0, /*tp_getattro*/
  0, /*tp_setattro*/
  0, /*tp_as_buffer*/
  Py_TPFLAGS_DEFAULT|Py_TPFLAGS_HAVE_VERSION_TAG|Py_TPFLAGS_CHECKTYPES|Py_TPFLAGS_HAVE_NEWBUFFER|Py_TPFLAGS_BASETYPE|Py_TPFLAGS_HAVE_GC, /*tp_flags*/
  0, /*tp_doc*/
  __pyx_tp_traverse_4grpc_7_cython_6cygrpc_SendInitialMetadataOperation, /*tp_traverse*/
  __pyx_tp_clear_4grpc_7_cython_6cygrpc_SendInitialMetadataOperation, /*tp_clear*/
  0, /*tp_richcompare*/
  0, /*tp_weaklistoffset*/
  0, /*tp_iter*/
  0, /*tp_iternext*/
  __pyx_methods_4grpc_7_cython_6cygrpc_SendInitialMetadataOperation, /*tp_methods*/
  0, /*tp_members*/
  __pyx_getsets_4grpc_7_cython_6cygrpc_SendInitialMetadataOperation, /*tp_getset*/
  0, /*tp_base*/
  0, /*tp_dict*/
  0, /*tp_descr_get*/
  0, /*tp_descr_set*/
  0, /*tp_dictoffset*/
  0, /*tp_init*/
  0, /*tp_alloc*/
  __pyx_tp_new_4grpc_7_cython_6cygrpc_SendInitialMetadataOperation, /*tp_new*/
  0, /*tp_free*/
  0, /*tp_is_gc*/
  0, /*tp_bases*/
  0, /*tp_mro*/
  0, /*tp_cache*/
  0, /*tp_subclasses*/
  0, /*tp_weaklist*/
  0, /*tp_del*/
  0, /*tp_version_tag*/
  #if PY_VERSION_HEX >= 0x030400a1
  0, /*tp_finalize*/
  #endif
  #if PY_VERSION_HEX >= 0x030800b1
  0, /*tp_vectorcall*/
  #endif
  #if PY_VERSION_HEX >= 0x030800b4 && PY_VERSION_HEX < 0x03090000
  0, /*tp_print*/
  #endif
};
static struct __pyx_vtabstruct_4grpc_7_cython_6cygrpc_SendMessageOperation __pyx_vtable_4grpc_7_cython_6cygrpc_SendMessageOperation;

static PyObject *__pyx_tp_new_4grpc_7_cython_6cygrpc_SendMessageOperation(PyTypeObject *t, PyObject *a, PyObject *k) {
  struct __pyx_obj_4grpc_7_cython_6cygrpc_SendMessageOperation *p;
  PyObject *o = __pyx_tp_new_4grpc_7_cython_6cygrpc_Operation(t, a, k);
  if (unlikely(!o)) return 0;
  p = ((struct __pyx_obj_4grpc_7_cython_6cygrpc_SendMessageOperation *)o);
  p->__pyx_base.__pyx_vtab = (struct __pyx_vtabstruct_4grpc_7_cython_6cygrpc_Operation*)__pyx_vtabptr_4grpc_7_cython_6cygrpc_SendMessageOperation;
  p->_message = ((PyObject*)Py_None); Py_INCREF(Py_None);
  if (unlikely(__pyx_pw_4grpc_7_cython_6cygrpc_20SendMessageOperation_1__cinit__(o, a, k) < 0)) goto bad;
  return o;
  bad:
  Py_DECREF(o); o = 0;
  return NULL;
}

static void __pyx_tp_dealloc_4grpc_7_cython_6cygrpc_SendMessageOperation(PyObject *o) {
  struct __pyx_obj_4grpc_7_cython_6cygrpc_SendMessageOperation *p = (struct __pyx_obj_4grpc_7_cython_6cygrpc_SendMessageOperation *)o;
  #if CYTHON_USE_TP_FINALIZE
  if (unlikely(PyType_HasFeature(Py_TYPE(o), Py_TPFLAGS_HAVE_FINALIZE) && Py_TYPE(o)->tp_finalize) && (!PyType_IS_GC(Py_TYPE(o)) || !_PyGC_FINALIZED(o))) {
    if (PyObject_CallFinalizerFromDealloc(o)) return;
  }
  #endif
  Py_CLEAR(p->_message);
  __pyx_tp_dealloc_4grpc_7_cython_6cygrpc_Operation(o);
}

static PyObject *__pyx_getprop_4grpc_7_cython_6cygrpc_20SendMessageOperation__message(PyObject *o, CYTHON_UNUSED void *x) {
  return __pyx_pw_4grpc_7_cython_6cygrpc_20SendMessageOperation_8_message_1__get__(o);
}

static PyObject *__pyx_getprop_4grpc_7_cython_6cygrpc_20SendMessageOperation__flags(PyObject *o, CYTHON_UNUSED void *x) {
  return __pyx_pw_4grpc_7_cython_6cygrpc_20SendMessageOperation_6_flags_1__get__(o);
}

static PyMethodDef __pyx_methods_4grpc_7_cython_6cygrpc_SendMessageOperation[] = {
  {"type", (PyCFunction)__pyx_pw_4grpc_7_cython_6cygrpc_20SendMessageOperation_3type, METH_NOARGS, 0},
  {"__reduce_cython__", (PyCFunction)__pyx_pw_4grpc_7_cython_6cygrpc_20SendMessageOperation_5__reduce_cython__, METH_NOARGS, 0},
  {"__setstate_cython__", (PyCFunction)__pyx_pw_4grpc_7_cython_6cygrpc_20SendMessageOperation_7__setstate_cython__, METH_O, 0},
  {0, 0, 0, 0}
};

static struct PyGetSetDef __pyx_getsets_4grpc_7_cython_6cygrpc_SendMessageOperation[] = {
  {(char *)"_message", __pyx_getprop_4grpc_7_cython_6cygrpc_20SendMessageOperation__message, 0, (char *)0, 0},
  {(char *)"_flags", __pyx_getprop_4grpc_7_cython_6cygrpc_20SendMessageOperation__flags, 0, (char *)0, 0},
  {0, 0, 0, 0, 0}
};

static PyTypeObject __pyx_type_4grpc_7_cython_6cygrpc_SendMessageOperation = {
  PyVarObject_HEAD_INIT(0, 0)
  "grpc._cython.cygrpc.SendMessageOperation", /*tp_name*/
  sizeof(struct __pyx_obj_4grpc_7_cython_6cygrpc_SendMessageOperation), /*tp_basicsize*/
  0, /*tp_itemsize*/
  __pyx_tp_dealloc_4grpc_7_cython_6cygrpc_SendMessageOperation, /*tp_dealloc*/
  #if PY_VERSION_HEX < 0x030800b4
  0, /*tp_print*/
  #endif
  #if PY_VERSION_HEX >= 0x030800b4
  0, /*tp_vectorcall_offset*/
  #endif
  0, /*tp_getattr*/
  0, /*tp_setattr*/
  #if PY_MAJOR_VERSION < 3
  0, /*tp_compare*/
  #endif
  #if PY_MAJOR_VERSION >= 3
  0, /*tp_as_async*/
  #endif
  0, /*tp_repr*/
  0, /*tp_as_number*/
  0, /*tp_as_sequence*/
  0, /*tp_as_mapping*/
  0, /*tp_hash*/
  0, /*tp_call*/
  0, /*tp_str*/
  0, /*tp_getattro*/
  0, /*tp_setattro*/
  0, /*tp_as_buffer*/
  Py_TPFLAGS_DEFAULT|Py_TPFLAGS_HAVE_VERSION_TAG|Py_TPFLAGS_CHECKTYPES|Py_TPFLAGS_HAVE_NEWBUFFER|Py_TPFLAGS_BASETYPE, /*tp_flags*/
  0, /*tp_doc*/
  0, /*tp_traverse*/
  0, /*tp_clear*/
  0, /*tp_richcompare*/
  0, /*tp_weaklistoffset*/
  0, /*tp_iter*/
  0, /*tp_iternext*/
  __pyx_methods_4grpc_7_cython_6cygrpc_SendMessageOperation, /*tp_methods*/
  0, /*tp_members*/
  __pyx_getsets_4grpc_7_cython_6cygrpc_SendMessageOperation, /*tp_getset*/
  0, /*tp_base*/
  0, /*tp_dict*/
  0, /*tp_descr_get*/
  0, /*tp_descr_set*/
  0, /*tp_dictoffset*/
  0, /*tp_init*/
  0, /*tp_alloc*/
  __pyx_tp_new_4grpc_7_cython_6cygrpc_SendMessageOperation, /*tp_new*/
  0, /*tp_free*/
  0, /*tp_is_gc*/
  0, /*tp_bases*/
  0, /*tp_mro*/
  0, /*tp_cache*/
  0, /*tp_subclasses*/
  0, /*tp_weaklist*/
  0, /*tp_del*/
  0, /*tp_version_tag*/
  #if PY_VERSION_HEX >= 0x030400a1
  0, /*tp_finalize*/
  #endif
  #if PY_VERSION_HEX >= 0x030800b1
  0, /*tp_vectorcall*/
  #endif
  #if PY_VERSION_HEX >= 0x030800b4 && PY_VERSION_HEX < 0x03090000
  0, /*tp_print*/
  #endif
};
static struct __pyx_vtabstruct_4grpc_7_cython_6cygrpc_SendCloseFromClientOperation __pyx_vtable_4grpc_7_cython_6cygrpc_SendCloseFromClientOperation;

static PyObject *__pyx_tp_new_4grpc_7_cython_6cygrpc_SendCloseFromClientOperation(PyTypeObject *t, PyObject *a, PyObject *k) {
  struct __pyx_obj_4grpc_7_cython_6cygrpc_SendCloseFromClientOperation *p;
  PyObject *o = __pyx_tp_new_4grpc_7_cython_6cygrpc_Operation(t, a, k);
  if (unlikely(!o)) return 0;
  p = ((struct __pyx_obj_4grpc_7_cython_6cygrpc_SendCloseFromClientOperation *)o);
  p->__pyx_base.__pyx_vtab = (struct __pyx_vtabstruct_4grpc_7_cython_6cygrpc_Operation*)__pyx_vtabptr_4grpc_7_cython_6cygrpc_SendCloseFromClientOperation;
  if (unlikely(__pyx_pw_4grpc_7_cython_6cygrpc_28SendCloseFromClientOperation_1__cinit__(o, a, k) < 0)) goto bad;
  return o;
  bad:
  Py_DECREF(o); o = 0;
  return NULL;
}

static PyObject *__pyx_getprop_4grpc_7_cython_6cygrpc_28SendCloseFromClientOperation__flags(PyObject *o, CYTHON_UNUSED void *x) {
  return __pyx_pw_4grpc_7_cython_6cygrpc_28SendCloseFromClientOperation_6_flags_1__get__(o);
}

static PyMethodDef __pyx_methods_4grpc_7_cython_6cygrpc_SendCloseFromClientOperation[] = {
  {"type", (PyCFunction)__pyx_pw_4grpc_7_cython_6cygrpc_28SendCloseFromClientOperation_3type, METH_NOARGS, 0},
  {"__reduce_cython__", (PyCFunction)__pyx_pw_4grpc_7_cython_6cygrpc_28SendCloseFromClientOperation_5__reduce_cython__, METH_NOARGS, 0},
  {"__setstate_cython__", (PyCFunction)__pyx_pw_4grpc_7_cython_6cygrpc_28SendCloseFromClientOperation_7__setstate_cython__, METH_O, 0},
  {0, 0, 0, 0}
};

static struct PyGetSetDef __pyx_getsets_4grpc_7_cython_6cygrpc_SendCloseFromClientOperation[] = {
  {(char *)"_flags", __pyx_getprop_4grpc_7_cython_6cygrpc_28SendCloseFromClientOperation__flags, 0, (char *)0, 0},
  {0, 0, 0, 0, 0}
};

static PyTypeObject __pyx_type_4grpc_7_cython_6cygrpc_SendCloseFromClientOperation = {
  PyVarObject_HEAD_INIT(0, 0)
  "grpc._cython.cygrpc.SendCloseFromClientOperation", /*tp_name*/
  sizeof(struct __pyx_obj_4grpc_7_cython_6cygrpc_SendCloseFromClientOperation), /*tp_basicsize*/
  0, /*tp_itemsize*/
  __pyx_tp_dealloc_4grpc_7_cython_6cygrpc_Operation, /*tp_dealloc*/
  #if PY_VERSION_HEX < 0x030800b4
  0, /*tp_print*/
  #endif
  #if PY_VERSION_HEX >= 0x030800b4
  0, /*tp_vectorcall_offset*/
  #endif
  0, /*tp_getattr*/
  0, /*tp_setattr*/
  #if PY_MAJOR_VERSION < 3
  0, /*tp_compare*/
  #endif
  #if PY_MAJOR_VERSION >= 3
  0, /*tp_as_async*/
  #endif
  0, /*tp_repr*/
  0, /*tp_as_number*/
  0, /*tp_as_sequence*/
  0, /*tp_as_mapping*/
  0, /*tp_hash*/
  0, /*tp_call*/
  0, /*tp_str*/
  0, /*tp_getattro*/
  0, /*tp_setattro*/
  0, /*tp_as_buffer*/
  Py_TPFLAGS_DEFAULT|Py_TPFLAGS_HAVE_VERSION_TAG|Py_TPFLAGS_CHECKTYPES|Py_TPFLAGS_HAVE_NEWBUFFER|Py_TPFLAGS_BASETYPE, /*tp_flags*/
  0, /*tp_doc*/
  0, /*tp_traverse*/
  0, /*tp_clear*/
  0, /*tp_richcompare*/
  0, /*tp_weaklistoffset*/
  0, /*tp_iter*/
  0, /*tp_iternext*/
  __pyx_methods_4grpc_7_cython_6cygrpc_SendCloseFromClientOperation, /*tp_methods*/
  0, /*tp_members*/
  __pyx_getsets_4grpc_7_cython_6cygrpc_SendCloseFromClientOperation, /*tp_getset*/
  0, /*tp_base*/
  0, /*tp_dict*/
  0, /*tp_descr_get*/
  0, /*tp_descr_set*/
  0, /*tp_dictoffset*/
  0, /*tp_init*/
  0, /*tp_alloc*/
  __pyx_tp_new_4grpc_7_cython_6cygrpc_SendCloseFromClientOperation, /*tp_new*/
  0, /*tp_free*/
  0, /*tp_is_gc*/
  0, /*tp_bases*/
  0, /*tp_mro*/
  0, /*tp_cache*/
  0, /*tp_subclasses*/
  0, /*tp_weaklist*/
  0, /*tp_del*/
  0, /*tp_version_tag*/
  #if PY_VERSION_HEX >= 0x030400a1
  0, /*tp_finalize*/
  #endif
  #if PY_VERSION_HEX >= 0x030800b1
  0, /*tp_vectorcall*/
  #endif
  #if PY_VERSION_HEX >= 0x030800b4 && PY_VERSION_HEX < 0x03090000
  0, /*tp_print*/
  #endif
};
static struct __pyx_vtabstruct_4grpc_7_cython_6cygrpc_SendStatusFromServerOperation __pyx_vtable_4grpc_7_cython_6cygrpc_SendStatusFromServerOperation;

static PyObject *__pyx_tp_new_4grpc_7_cython_6cygrpc_SendStatusFromServerOperation(PyTypeObject *t, PyObject *a, PyObject *k) {
  struct __pyx_obj_4grpc_7_cython_6cygrpc_SendStatusFromServerOperation *p;
  PyObject *o = __pyx_tp_new_4grpc_7_cython_6cygrpc_Operation(t, a, k);
  if (unlikely(!o)) return 0;
  p = ((struct __pyx_obj_4grpc_7_cython_6cygrpc_SendStatusFromServerOperation *)o);
  p->__pyx_base.__pyx_vtab = (struct __pyx_vtabstruct_4grpc_7_cython_6cygrpc_Operation*)__pyx_vtabptr_4grpc_7_cython_6cygrpc_SendStatusFromServerOperation;
  p->_trailing_metadata = Py_None; Py_INCREF(Py_None);
  p->_code = Py_None; Py_INCREF(Py_None);
  p->_details = Py_None; Py_INCREF(Py_None);
  if (unlikely(__pyx_pw_4grpc_7_cython_6cygrpc_29SendStatusFromServerOperation_1__cinit__(o, a, k) < 0)) goto bad;
  return o;
  bad:
  Py_DECREF(o); o = 0;
  return NULL;
}

static void __pyx_tp_dealloc_4grpc_7_cython_6cygrpc_SendStatusFromServerOperation(PyObject *o) {
  struct __pyx_obj_4grpc_7_cython_6cygrpc_SendStatusFromServerOperation *p = (struct __pyx_obj_4grpc_7_cython_6cygrpc_SendStatusFromServerOperation *)o;
  #if CYTHON_USE_TP_FINALIZE
  if (unlikely(PyType_HasFeature(Py_TYPE(o), Py_TPFLAGS_HAVE_FINALIZE) && Py_TYPE(o)->tp_finalize) && !_PyGC_FINALIZED(o)) {
    if (PyObject_CallFinalizerFromDealloc(o)) return;
  }
  #endif
  PyObject_GC_UnTrack(o);
  Py_CLEAR(p->_trailing_metadata);
  Py_CLEAR(p->_code);
  Py_CLEAR(p->_details);
  #if CYTHON_USE_TYPE_SLOTS
  if (PyType_IS_GC(Py_TYPE(o)->tp_base))
  #endif
  PyObject_GC_Track(o);
  __pyx_tp_dealloc_4grpc_7_cython_6cygrpc_Operation(o);
}

static int __pyx_tp_traverse_4grpc_7_cython_6cygrpc_SendStatusFromServerOperation(PyObject *o, visitproc v, void *a) {
  int e;
  struct __pyx_obj_4grpc_7_cython_6cygrpc_SendStatusFromServerOperation *p = (struct __pyx_obj_4grpc_7_cython_6cygrpc_SendStatusFromServerOperation *)o;
  e = ((likely(__pyx_ptype_4grpc_7_cython_6cygrpc_Operation)) ? ((__pyx_ptype_4grpc_7_cython_6cygrpc_Operation->tp_traverse) ? __pyx_ptype_4grpc_7_cython_6cygrpc_Operation->tp_traverse(o, v, a) : 0) : __Pyx_call_next_tp_traverse(o, v, a, __pyx_tp_traverse_4grpc_7_cython_6cygrpc_SendStatusFromServerOperation)); if (e) return e;
  if (p->_trailing_metadata) {
    e = (*v)(p->_trailing_metadata, a); if (e) return e;
  }
  if (p->_code) {
    e = (*v)(p->_code, a); if (e) return e;
  }
  if (p->_details) {
    e = (*v)(p->_details, a); if (e) return e;
  }
  return 0;
}

static int __pyx_tp_clear_4grpc_7_cython_6cygrpc_SendStatusFromServerOperation(PyObject *o) {
  PyObject* tmp;
  struct __pyx_obj_4grpc_7_cython_6cygrpc_SendStatusFromServerOperation *p = (struct __pyx_obj_4grpc_7_cython_6cygrpc_SendStatusFromServerOperation *)o;
  if (likely(__pyx_ptype_4grpc_7_cython_6cygrpc_Operation)) { if (__pyx_ptype_4grpc_7_cython_6cygrpc_Operation->tp_clear) __pyx_ptype_4grpc_7_cython_6cygrpc_Operation->tp_clear(o); } else __Pyx_call_next_tp_clear(o, __pyx_tp_clear_4grpc_7_cython_6cygrpc_SendStatusFromServerOperation);
  tmp = ((PyObject*)p->_trailing_metadata);
  p->_trailing_metadata = Py_None; Py_INCREF(Py_None);
  Py_XDECREF(tmp);
  tmp = ((PyObject*)p->_code);
  p->_code = Py_None; Py_INCREF(Py_None);
  Py_XDECREF(tmp);
  tmp = ((PyObject*)p->_details);
  p->_details = Py_None; Py_INCREF(Py_None);
  Py_XDECREF(tmp);
  return 0;
}

static PyObject *__pyx_getprop_4grpc_7_cython_6cygrpc_29SendStatusFromServerOperation__trailing_metadata(PyObject *o, CYTHON_UNUSED void *x) {
  return __pyx_pw_4grpc_7_cython_6cygrpc_29SendStatusFromServerOperation_18_trailing_metadata_1__get__(o);
}

static PyObject *__pyx_getprop_4grpc_7_cython_6cygrpc_29SendStatusFromServerOperation__code(PyObject *o, CYTHON_UNUSED void *x) {
  return __pyx_pw_4grpc_7_cython_6cygrpc_29SendStatusFromServerOperation_5_code_1__get__(o);
}

static PyObject *__pyx_getprop_4grpc_7_cython_6cygrpc_29SendStatusFromServerOperation__details(PyObject *o, CYTHON_UNUSED void *x) {
  return __pyx_pw_4grpc_7_cython_6cygrpc_29SendStatusFromServerOperation_8_details_1__get__(o);
}

static PyObject *__pyx_getprop_4grpc_7_cython_6cygrpc_29SendStatusFromServerOperation__flags(PyObject *o, CYTHON_UNUSED void *x) {
  return __pyx_pw_4grpc_7_cython_6cygrpc_29SendStatusFromServerOperation_6_flags_1__get__(o);
}

static PyMethodDef __pyx_methods_4grpc_7_cython_6cygrpc_SendStatusFromServerOperation[] = {
  {"type", (PyCFunction)__pyx_pw_4grpc_7_cython_6cygrpc_29SendStatusFromServerOperation_3type, METH_NOARGS, 0},
  {"__reduce_cython__", (PyCFunction)__pyx_pw_4grpc_7_cython_6cygrpc_29SendStatusFromServerOperation_5__reduce_cython__, METH_NOARGS, 0},
  {"__setstate_cython__", (PyCFunction)__pyx_pw_4grpc_7_cython_6cygrpc_29SendStatusFromServerOperation_7__setstate_cython__, METH_O, 0},
  {0, 0, 0, 0}
};

static struct PyGetSetDef __pyx_getsets_4grpc_7_cython_6cygrpc_SendStatusFromServerOperation[] = {
  {(char *)"_trailing_metadata", __pyx_getprop_4grpc_7_cython_6cygrpc_29SendStatusFromServerOperation__trailing_metadata, 0, (char *)0, 0},
  {(char *)"_code", __pyx_getprop_4grpc_7_cython_6cygrpc_29SendStatusFromServerOperation__code, 0, (char *)0, 0},
  {(char *)"_details", __pyx_getprop_4grpc_7_cython_6cygrpc_29SendStatusFromServerOperation__details, 0, (char *)0, 0},
  {(char *)"_flags", __pyx_getprop_4grpc_7_cython_6cygrpc_29SendStatusFromServerOperation__flags, 0, (char *)0, 0},
  {0, 0, 0, 0, 0}
};

static PyTypeObject __pyx_type_4grpc_7_cython_6cygrpc_SendStatusFromServerOperation = {
  PyVarObject_HEAD_INIT(0, 0)
  "grpc._cython.cygrpc.SendStatusFromServerOperation", /*tp_name*/
  sizeof(struct __pyx_obj_4grpc_7_cython_6cygrpc_SendStatusFromServerOperation), /*tp_basicsize*/
  0, /*tp_itemsize*/
  __pyx_tp_dealloc_4grpc_7_cython_6cygrpc_SendStatusFromServerOperation, /*tp_dealloc*/
  #if PY_VERSION_HEX < 0x030800b4
  0, /*tp_print*/
  #endif
  #if PY_VERSION_HEX >= 0x030800b4
  0, /*tp_vectorcall_offset*/
  #endif
  0, /*tp_getattr*/
  0, /*tp_setattr*/
  #if PY_MAJOR_VERSION < 3
  0, /*tp_compare*/
  #endif
  #if PY_MAJOR_VERSION >= 3
  0, /*tp_as_async*/
  #endif
  0, /*tp_repr*/
  0, /*tp_as_number*/
  0, /*tp_as_sequence*/
  0, /*tp_as_mapping*/
  0, /*tp_hash*/
  0, /*tp_call*/
  0, /*tp_str*/
  0, /*tp_getattro*/
  0, /*tp_setattro*/
  0, /*tp_as_buffer*/
  Py_TPFLAGS_DEFAULT|Py_TPFLAGS_HAVE_VERSION_TAG|Py_TPFLAGS_CHECKTYPES|Py_TPFLAGS_HAVE_NEWBUFFER|Py_TPFLAGS_BASETYPE|Py_TPFLAGS_HAVE_GC, /*tp_flags*/
  0, /*tp_doc*/
  __pyx_tp_traverse_4grpc_7_cython_6cygrpc_SendStatusFromServerOperation, /*tp_traverse*/
  __pyx_tp_clear_4grpc_7_cython_6cygrpc_SendStatusFromServerOperation, /*tp_clear*/
  0, /*tp_richcompare*/
  0, /*tp_weaklistoffset*/
  0, /*tp_iter*/
  0, /*tp_iternext*/
  __pyx_methods_4grpc_7_cython_6cygrpc_SendStatusFromServerOperation, /*tp_methods*/
  0, /*tp_members*/
  __pyx_getsets_4grpc_7_cython_6cygrpc_SendStatusFromServerOperation, /*tp_getset*/
  0, /*tp_base*/
  0, /*tp_dict*/
  0, /*tp_descr_get*/
  0, /*tp_descr_set*/
  0, /*tp_dictoffset*/
  0, /*tp_init*/
  0, /*tp_alloc*/
  __pyx_tp_new_4grpc_7_cython_6cygrpc_SendStatusFromServerOperation, /*tp_new*/
  0, /*tp_free*/
  0, /*tp_is_gc*/
  0, /*tp_bases*/
  0, /*tp_mro*/
  0, /*tp_cache*/
  0, /*tp_subclasses*/
  0, /*tp_weaklist*/
  0, /*tp_del*/
  0, /*tp_version_tag*/
  #if PY_VERSION_HEX >= 0x030400a1
  0, /*tp_finalize*/
  #endif
  #if PY_VERSION_HEX >= 0x030800b1
  0, /*tp_vectorcall*/
  #endif
  #if PY_VERSION_HEX >= 0x030800b4 && PY_VERSION_HEX < 0x03090000
  0, /*tp_print*/
  #endif
};
static struct __pyx_vtabstruct_4grpc_7_cython_6cygrpc_ReceiveInitialMetadataOperation __pyx_vtable_4grpc_7_cython_6cygrpc_ReceiveInitialMetadataOperation;

static PyObject *__pyx_tp_new_4grpc_7_cython_6cygrpc_ReceiveInitialMetadataOperation(PyTypeObject *t, PyObject *a, PyObject *k) {
  struct __pyx_obj_4grpc_7_cython_6cygrpc_ReceiveInitialMetadataOperation *p;
  PyObject *o = __pyx_tp_new_4grpc_7_cython_6cygrpc_Operation(t, a, k);
  if (unlikely(!o)) return 0;
  p = ((struct __pyx_obj_4grpc_7_cython_6cygrpc_ReceiveInitialMetadataOperation *)o);
  p->__pyx_base.__pyx_vtab = (struct __pyx_vtabstruct_4grpc_7_cython_6cygrpc_Operation*)__pyx_vtabptr_4grpc_7_cython_6cygrpc_ReceiveInitialMetadataOperation;
  p->_initial_metadata = ((PyObject*)Py_None); Py_INCREF(Py_None);
  if (unlikely(__pyx_pw_4grpc_7_cython_6cygrpc_31ReceiveInitialMetadataOperation_1__cinit__(o, a, k) < 0)) goto bad;
  return o;
  bad:
  Py_DECREF(o); o = 0;
  return NULL;
}

static void __pyx_tp_dealloc_4grpc_7_cython_6cygrpc_ReceiveInitialMetadataOperation(PyObject *o) {
  struct __pyx_obj_4grpc_7_cython_6cygrpc_ReceiveInitialMetadataOperation *p = (struct __pyx_obj_4grpc_7_cython_6cygrpc_ReceiveInitialMetadataOperation *)o;
  #if CYTHON_USE_TP_FINALIZE
  if (unlikely(PyType_HasFeature(Py_TYPE(o), Py_TPFLAGS_HAVE_FINALIZE) && Py_TYPE(o)->tp_finalize) && !_PyGC_FINALIZED(o)) {
    if (PyObject_CallFinalizerFromDealloc(o)) return;
  }
  #endif
  PyObject_GC_UnTrack(o);
  Py_CLEAR(p->_initial_metadata);
  #if CYTHON_USE_TYPE_SLOTS
  if (PyType_IS_GC(Py_TYPE(o)->tp_base))
  #endif
  PyObject_GC_Track(o);
  __pyx_tp_dealloc_4grpc_7_cython_6cygrpc_Operation(o);
}

static int __pyx_tp_traverse_4grpc_7_cython_6cygrpc_ReceiveInitialMetadataOperation(PyObject *o, visitproc v, void *a) {
  int e;
  struct __pyx_obj_4grpc_7_cython_6cygrpc_ReceiveInitialMetadataOperation *p = (struct __pyx_obj_4grpc_7_cython_6cygrpc_ReceiveInitialMetadataOperation *)o;
  e = ((likely(__pyx_ptype_4grpc_7_cython_6cygrpc_Operation)) ? ((__pyx_ptype_4grpc_7_cython_6cygrpc_Operation->tp_traverse) ? __pyx_ptype_4grpc_7_cython_6cygrpc_Operation->tp_traverse(o, v, a) : 0) : __Pyx_call_next_tp_traverse(o, v, a, __pyx_tp_traverse_4grpc_7_cython_6cygrpc_ReceiveInitialMetadataOperation)); if (e) return e;
  if (p->_initial_metadata) {
    e = (*v)(p->_initial_metadata, a); if (e) return e;
  }
  return 0;
}

static int __pyx_tp_clear_4grpc_7_cython_6cygrpc_ReceiveInitialMetadataOperation(PyObject *o) {
  PyObject* tmp;
  struct __pyx_obj_4grpc_7_cython_6cygrpc_ReceiveInitialMetadataOperation *p = (struct __pyx_obj_4grpc_7_cython_6cygrpc_ReceiveInitialMetadataOperation *)o;
  if (likely(__pyx_ptype_4grpc_7_cython_6cygrpc_Operation)) { if (__pyx_ptype_4grpc_7_cython_6cygrpc_Operation->tp_clear) __pyx_ptype_4grpc_7_cython_6cygrpc_Operation->tp_clear(o); } else __Pyx_call_next_tp_clear(o, __pyx_tp_clear_4grpc_7_cython_6cygrpc_ReceiveInitialMetadataOperation);
  tmp = ((PyObject*)p->_initial_metadata);
  p->_initial_metadata = ((PyObject*)Py_None); Py_INCREF(Py_None);
  Py_XDECREF(tmp);
  return 0;
}

static PyObject *__pyx_getprop_4grpc_7_cython_6cygrpc_31ReceiveInitialMetadataOperation__flags(PyObject *o, CYTHON_UNUSED void *x) {
  return __pyx_pw_4grpc_7_cython_6cygrpc_31ReceiveInitialMetadataOperation_6_flags_1__get__(o);
}

static PyMethodDef __pyx_methods_4grpc_7_cython_6cygrpc_ReceiveInitialMetadataOperation[] = {
  {"type", (PyCFunction)__pyx_pw_4grpc_7_cython_6cygrpc_31ReceiveInitialMetadataOperation_3type, METH_NOARGS, 0},
  {"initial_metadata", (PyCFunction)__pyx_pw_4grpc_7_cython_6cygrpc_31ReceiveInitialMetadataOperation_5initial_metadata, METH_NOARGS, 0},
  {"__reduce_cython__", (PyCFunction)__pyx_pw_4grpc_7_cython_6cygrpc_31ReceiveInitialMetadataOperation_7__reduce_cython__, METH_NOARGS, 0},
  {"__setstate_cython__", (PyCFunction)__pyx_pw_4grpc_7_cython_6cygrpc_31ReceiveInitialMetadataOperation_9__setstate_cython__, METH_O, 0},
  {0, 0, 0, 0}
};

static struct PyGetSetDef __pyx_getsets_4grpc_7_cython_6cygrpc_ReceiveInitialMetadataOperation[] = {
  {(char *)"_flags", __pyx_getprop_4grpc_7_cython_6cygrpc_31ReceiveInitialMetadataOperation__flags, 0, (char *)0, 0},
  {0, 0, 0, 0, 0}
};

static PyTypeObject __pyx_type_4grpc_7_cython_6cygrpc_ReceiveInitialMetadataOperation = {
  PyVarObject_HEAD_INIT(0, 0)
  "grpc._cython.cygrpc.ReceiveInitialMetadataOperation", /*tp_name*/
  sizeof(struct __pyx_obj_4grpc_7_cython_6cygrpc_ReceiveInitialMetadataOperation), /*tp_basicsize*/
  0, /*tp_itemsize*/
  __pyx_tp_dealloc_4grpc_7_cython_6cygrpc_ReceiveInitialMetadataOperation, /*tp_dealloc*/
  #if PY_VERSION_HEX < 0x030800b4
  0, /*tp_print*/
  #endif
  #if PY_VERSION_HEX >= 0x030800b4
  0, /*tp_vectorcall_offset*/
  #endif
  0, /*tp_getattr*/
  0, /*tp_setattr*/
  #if PY_MAJOR_VERSION < 3
  0, /*tp_compare*/
  #endif
  #if PY_MAJOR_VERSION >= 3
  0, /*tp_as_async*/
  #endif
  0, /*tp_repr*/
  0, /*tp_as_number*/
  0, /*tp_as_sequence*/
  0, /*tp_as_mapping*/
  0, /*tp_hash*/
  0, /*tp_call*/
  0, /*tp_str*/
  0, /*tp_getattro*/
  0, /*tp_setattro*/
  0, /*tp_as_buffer*/
  Py_TPFLAGS_DEFAULT|Py_TPFLAGS_HAVE_VERSION_TAG|Py_TPFLAGS_CHECKTYPES|Py_TPFLAGS_HAVE_NEWBUFFER|Py_TPFLAGS_BASETYPE|Py_TPFLAGS_HAVE_GC, /*tp_flags*/
  0, /*tp_doc*/
  __pyx_tp_traverse_4grpc_7_cython_6cygrpc_ReceiveInitialMetadataOperation, /*tp_traverse*/
  __pyx_tp_clear_4grpc_7_cython_6cygrpc_ReceiveInitialMetadataOperation, /*tp_clear*/
  0, /*tp_richcompare*/
  0, /*tp_weaklistoffset*/
  0, /*tp_iter*/
  0, /*tp_iternext*/
  __pyx_methods_4grpc_7_cython_6cygrpc_ReceiveInitialMetadataOperation, /*tp_methods*/
  0, /*tp_members*/
  __pyx_getsets_4grpc_7_cython_6cygrpc_ReceiveInitialMetadataOperation, /*tp_getset*/
  0, /*tp_base*/
  0, /*tp_dict*/
  0, /*tp_descr_get*/
  0, /*tp_descr_set*/
  0, /*tp_dictoffset*/
  0, /*tp_init*/
  0, /*tp_alloc*/
  __pyx_tp_new_4grpc_7_cython_6cygrpc_ReceiveInitialMetadataOperation, /*tp_new*/
  0, /*tp_free*/
  0, /*tp_is_gc*/
  0, /*tp_bases*/
  0, /*tp_mro*/
  0, /*tp_cache*/
  0, /*tp_subclasses*/
  0, /*tp_weaklist*/
  0, /*tp_del*/
  0, /*tp_version_tag*/
  #if PY_VERSION_HEX >= 0x030400a1
  0, /*tp_finalize*/
  #endif
  #if PY_VERSION_HEX >= 0x030800b1
  0, /*tp_vectorcall*/
  #endif
  #if PY_VERSION_HEX >= 0x030800b4 && PY_VERSION_HEX < 0x03090000
  0, /*tp_print*/
  #endif
};
static struct __pyx_vtabstruct_4grpc_7_cython_6cygrpc_ReceiveMessageOperation __pyx_vtable_4grpc_7_cython_6cygrpc_ReceiveMessageOperation;

static PyObject *__pyx_tp_new_4grpc_7_cython_6cygrpc_ReceiveMessageOperation(PyTypeObject *t, PyObject *a, PyObject *k) {
  struct __pyx_obj_4grpc_7_cython_6cygrpc_ReceiveMessageOperation *p;
  PyObject *o = __pyx_tp_new_4grpc_7_cython_6cygrpc_Operation(t, a, k);
  if (unlikely(!o)) return 0;
  p = ((struct __pyx_obj_4grpc_7_cython_6cygrpc_ReceiveMessageOperation *)o);
  p->__pyx_base.__pyx_vtab = (struct __pyx_vtabstruct_4grpc_7_cython_6cygrpc_Operation*)__pyx_vtabptr_4grpc_7_cython_6cygrpc_ReceiveMessageOperation;
  p->_message = ((PyObject*)Py_None); Py_INCREF(Py_None);
  if (unlikely(__pyx_pw_4grpc_7_cython_6cygrpc_23ReceiveMessageOperation_1__cinit__(o, a, k) < 0)) goto bad;
  return o;
  bad:
  Py_DECREF(o); o = 0;
  return NULL;
}

static void __pyx_tp_dealloc_4grpc_7_cython_6cygrpc_ReceiveMessageOperation(PyObject *o) {
  struct __pyx_obj_4grpc_7_cython_6cygrpc_ReceiveMessageOperation *p = (struct __pyx_obj_4grpc_7_cython_6cygrpc_ReceiveMessageOperation *)o;
  #if CYTHON_USE_TP_FINALIZE
  if (unlikely(PyType_HasFeature(Py_TYPE(o), Py_TPFLAGS_HAVE_FINALIZE) && Py_TYPE(o)->tp_finalize) && (!PyType_IS_GC(Py_TYPE(o)) || !_PyGC_FINALIZED(o))) {
    if (PyObject_CallFinalizerFromDealloc(o)) return;
  }
  #endif
  Py_CLEAR(p->_message);
  __pyx_tp_dealloc_4grpc_7_cython_6cygrpc_Operation(o);
}

static PyObject *__pyx_getprop_4grpc_7_cython_6cygrpc_23ReceiveMessageOperation__flags(PyObject *o, CYTHON_UNUSED void *x) {
  return __pyx_pw_4grpc_7_cython_6cygrpc_23ReceiveMessageOperation_6_flags_1__get__(o);
}

static PyMethodDef __pyx_methods_4grpc_7_cython_6cygrpc_ReceiveMessageOperation[] = {
  {"type", (PyCFunction)__pyx_pw_4grpc_7_cython_6cygrpc_23ReceiveMessageOperation_3type, METH_NOARGS, 0},
  {"message", (PyCFunction)__pyx_pw_4grpc_7_cython_6cygrpc_23ReceiveMessageOperation_5message, METH_NOARGS, 0},
  {"__reduce_cython__", (PyCFunction)__pyx_pw_4grpc_7_cython_6cygrpc_23ReceiveMessageOperation_7__reduce_cython__, METH_NOARGS, 0},
  {"__setstate_cython__", (PyCFunction)__pyx_pw_4grpc_7_cython_6cygrpc_23ReceiveMessageOperation_9__setstate_cython__, METH_O, 0},
  {0, 0, 0, 0}
};

static struct PyGetSetDef __pyx_getsets_4grpc_7_cython_6cygrpc_ReceiveMessageOperation[] = {
  {(char *)"_flags", __pyx_getprop_4grpc_7_cython_6cygrpc_23ReceiveMessageOperation__flags, 0, (char *)0, 0},
  {0, 0, 0, 0, 0}
};

static PyTypeObject __pyx_type_4grpc_7_cython_6cygrpc_ReceiveMessageOperation = {
  PyVarObject_HEAD_INIT(0, 0)
  "grpc._cython.cygrpc.ReceiveMessageOperation", /*tp_name*/
  sizeof(struct __pyx_obj_4grpc_7_cython_6cygrpc_ReceiveMessageOperation), /*tp_basicsize*/
  0, /*tp_itemsize*/
  __pyx_tp_dealloc_4grpc_7_cython_6cygrpc_ReceiveMessageOperation, /*tp_dealloc*/
  #if PY_VERSION_HEX < 0x030800b4
  0, /*tp_print*/
  #endif
  #if PY_VERSION_HEX >= 0x030800b4
  0, /*tp_vectorcall_offset*/
  #endif
  0, /*tp_getattr*/
  0, /*tp_setattr*/
  #if PY_MAJOR_VERSION < 3
  0, /*tp_compare*/
  #endif
  #if PY_MAJOR_VERSION >= 3
  0, /*tp_as_async*/
  #endif
  0, /*tp_repr*/
  0, /*tp_as_number*/
  0, /*tp_as_sequence*/
  0, /*tp_as_mapping*/
  0, /*tp_hash*/
  0, /*tp_call*/
  0, /*tp_str*/
  0, /*tp_getattro*/
  0, /*tp_setattro*/
  0, /*tp_as_buffer*/
  Py_TPFLAGS_DEFAULT|Py_TPFLAGS_HAVE_VERSION_TAG|Py_TPFLAGS_CHECKTYPES|Py_TPFLAGS_HAVE_NEWBUFFER|Py_TPFLAGS_BASETYPE, /*tp_flags*/
  0, /*tp_doc*/
  0, /*tp_traverse*/
  0, /*tp_clear*/
  0, /*tp_richcompare*/
  0, /*tp_weaklistoffset*/
  0, /*tp_iter*/
  0, /*tp_iternext*/
  __pyx_methods_4grpc_7_cython_6cygrpc_ReceiveMessageOperation, /*tp_methods*/
  0, /*tp_members*/
  __pyx_getsets_4grpc_7_cython_6cygrpc_ReceiveMessageOperation, /*tp_getset*/
  0, /*tp_base*/
  0, /*tp_dict*/
  0, /*tp_descr_get*/
  0, /*tp_descr_set*/
  0, /*tp_dictoffset*/
  0, /*tp_init*/
  0, /*tp_alloc*/
  __pyx_tp_new_4grpc_7_cython_6cygrpc_ReceiveMessageOperation, /*tp_new*/
  0, /*tp_free*/
  0, /*tp_is_gc*/
  0, /*tp_bases*/
  0, /*tp_mro*/
  0, /*tp_cache*/
  0, /*tp_subclasses*/
  0, /*tp_weaklist*/
  0, /*tp_del*/
  0, /*tp_version_tag*/
  #if PY_VERSION_HEX >= 0x030400a1
  0, /*tp_finalize*/
  #endif
  #if PY_VERSION_HEX >= 0x030800b1
  0, /*tp_vectorcall*/
  #endif
  #if PY_VERSION_HEX >= 0x030800b4 && PY_VERSION_HEX < 0x03090000
  0, /*tp_print*/
  #endif
};
static struct __pyx_vtabstruct_4grpc_7_cython_6cygrpc_ReceiveStatusOnClientOperation __pyx_vtable_4grpc_7_cython_6cygrpc_ReceiveStatusOnClientOperation;

static PyObject *__pyx_tp_new_4grpc_7_cython_6cygrpc_ReceiveStatusOnClientOperation(PyTypeObject *t, PyObject *a, PyObject *k) {
  struct __pyx_obj_4grpc_7_cython_6cygrpc_ReceiveStatusOnClientOperation *p;
  PyObject *o = __pyx_tp_new_4grpc_7_cython_6cygrpc_Operation(t, a, k);
  if (unlikely(!o)) return 0;
  p = ((struct __pyx_obj_4grpc_7_cython_6cygrpc_ReceiveStatusOnClientOperation *)o);
  p->__pyx_base.__pyx_vtab = (struct __pyx_vtabstruct_4grpc_7_cython_6cygrpc_Operation*)__pyx_vtabptr_4grpc_7_cython_6cygrpc_ReceiveStatusOnClientOperation;
  p->_trailing_metadata = ((PyObject*)Py_None); Py_INCREF(Py_None);
  p->_code = Py_None; Py_INCREF(Py_None);
  p->_details = ((PyObject*)Py_None); Py_INCREF(Py_None);
  p->_error_string = ((PyObject*)Py_None); Py_INCREF(Py_None);
  if (unlikely(__pyx_pw_4grpc_7_cython_6cygrpc_30ReceiveStatusOnClientOperation_1__cinit__(o, a, k) < 0)) goto bad;
  return o;
  bad:
  Py_DECREF(o); o = 0;
  return NULL;
}

static void __pyx_tp_dealloc_4grpc_7_cython_6cygrpc_ReceiveStatusOnClientOperation(PyObject *o) {
  struct __pyx_obj_4grpc_7_cython_6cygrpc_ReceiveStatusOnClientOperation *p = (struct __pyx_obj_4grpc_7_cython_6cygrpc_ReceiveStatusOnClientOperation *)o;
  #if CYTHON_USE_TP_FINALIZE
  if (unlikely(PyType_HasFeature(Py_TYPE(o), Py_TPFLAGS_HAVE_FINALIZE) && Py_TYPE(o)->tp_finalize) && !_PyGC_FINALIZED(o)) {
    if (PyObject_CallFinalizerFromDealloc(o)) return;
  }
  #endif
  PyObject_GC_UnTrack(o);
  Py_CLEAR(p->_trailing_metadata);
  Py_CLEAR(p->_code);
  Py_CLEAR(p->_details);
  Py_CLEAR(p->_error_string);
  #if CYTHON_USE_TYPE_SLOTS
  if (PyType_IS_GC(Py_TYPE(o)->tp_base))
  #endif
  PyObject_GC_Track(o);
  __pyx_tp_dealloc_4grpc_7_cython_6cygrpc_Operation(o);
}

static int __pyx_tp_traverse_4grpc_7_cython_6cygrpc_ReceiveStatusOnClientOperation(PyObject *o, visitproc v, void *a) {
  int e;
  struct __pyx_obj_4grpc_7_cython_6cygrpc_ReceiveStatusOnClientOperation *p = (struct __pyx_obj_4grpc_7_cython_6cygrpc_ReceiveStatusOnClientOperation *)o;
  e = ((likely(__pyx_ptype_4grpc_7_cython_6cygrpc_Operation)) ? ((__pyx_ptype_4grpc_7_cython_6cygrpc_Operation->tp_traverse) ? __pyx_ptype_4grpc_7_cython_6cygrpc_Operation->tp_traverse(o, v, a) : 0) : __Pyx_call_next_tp_traverse(o, v, a, __pyx_tp_traverse_4grpc_7_cython_6cygrpc_ReceiveStatusOnClientOperation)); if (e) return e;
  if (p->_trailing_metadata) {
    e = (*v)(p->_trailing_metadata, a); if (e) return e;
  }
  if (p->_code) {
    e = (*v)(p->_code, a); if (e) return e;
  }
  return 0;
}

static int __pyx_tp_clear_4grpc_7_cython_6cygrpc_ReceiveStatusOnClientOperation(PyObject *o) {
  PyObject* tmp;
  struct __pyx_obj_4grpc_7_cython_6cygrpc_ReceiveStatusOnClientOperation *p = (struct __pyx_obj_4grpc_7_cython_6cygrpc_ReceiveStatusOnClientOperation *)o;
  if (likely(__pyx_ptype_4grpc_7_cython_6cygrpc_Operation)) { if (__pyx_ptype_4grpc_7_cython_6cygrpc_Operation->tp_clear) __pyx_ptype_4grpc_7_cython_6cygrpc_Operation->tp_clear(o); } else __Pyx_call_next_tp_clear(o, __pyx_tp_clear_4grpc_7_cython_6cygrpc_ReceiveStatusOnClientOperation);
  tmp = ((PyObject*)p->_trailing_metadata);
  p->_trailing_metadata = ((PyObject*)Py_None); Py_INCREF(Py_None);
  Py_XDECREF(tmp);
  tmp = ((PyObject*)p->_code);
  p->_code = Py_None; Py_INCREF(Py_None);
  Py_XDECREF(tmp);
  return 0;
}

static PyObject *__pyx_getprop_4grpc_7_cython_6cygrpc_30ReceiveStatusOnClientOperation__flags(PyObject *o, CYTHON_UNUSED void *x) {
  return __pyx_pw_4grpc_7_cython_6cygrpc_30ReceiveStatusOnClientOperation_6_flags_1__get__(o);
}

static PyMethodDef __pyx_methods_4grpc_7_cython_6cygrpc_ReceiveStatusOnClientOperation[] = {
  {"type", (PyCFunction)__pyx_pw_4grpc_7_cython_6cygrpc_30ReceiveStatusOnClientOperation_3type, METH_NOARGS, 0},
  {"trailing_metadata", (PyCFunction)__pyx_pw_4grpc_7_cython_6cygrpc_30ReceiveStatusOnClientOperation_5trailing_metadata, METH_NOARGS, 0},
  {"code", (PyCFunction)__pyx_pw_4grpc_7_cython_6cygrpc_30ReceiveStatusOnClientOperation_7code, METH_NOARGS, 0},
  {"details", (PyCFunction)__pyx_pw_4grpc_7_cython_6cygrpc_30ReceiveStatusOnClientOperation_9details, METH_NOARGS, 0},
  {"error_string", (PyCFunction)__pyx_pw_4grpc_7_cython_6cygrpc_30ReceiveStatusOnClientOperation_11error_string, METH_NOARGS, 0},
  {"__reduce_cython__", (PyCFunction)__pyx_pw_4grpc_7_cython_6cygrpc_30ReceiveStatusOnClientOperation_13__reduce_cython__, METH_NOARGS, 0},
  {"__setstate_cython__", (PyCFunction)__pyx_pw_4grpc_7_cython_6cygrpc_30ReceiveStatusOnClientOperation_15__setstate_cython__, METH_O, 0},
  {0, 0, 0, 0}
};

static struct PyGetSetDef __pyx_getsets_4grpc_7_cython_6cygrpc_ReceiveStatusOnClientOperation[] = {
  {(char *)"_flags", __pyx_getprop_4grpc_7_cython_6cygrpc_30ReceiveStatusOnClientOperation__flags, 0, (char *)0, 0},
  {0, 0, 0, 0, 0}
};

static PyTypeObject __pyx_type_4grpc_7_cython_6cygrpc_ReceiveStatusOnClientOperation = {
  PyVarObject_HEAD_INIT(0, 0)
  "grpc._cython.cygrpc.ReceiveStatusOnClientOperation", /*tp_name*/
  sizeof(struct __pyx_obj_4grpc_7_cython_6cygrpc_ReceiveStatusOnClientOperation), /*tp_basicsize*/
  0, /*tp_itemsize*/
  __pyx_tp_dealloc_4grpc_7_cython_6cygrpc_ReceiveStatusOnClientOperation, /*tp_dealloc*/
  #if PY_VERSION_HEX < 0x030800b4
  0, /*tp_print*/
  #endif
  #if PY_VERSION_HEX >= 0x030800b4
  0, /*tp_vectorcall_offset*/
  #endif
  0, /*tp_getattr*/
  0, /*tp_setattr*/
  #if PY_MAJOR_VERSION < 3
  0, /*tp_compare*/
  #endif
  #if PY_MAJOR_VERSION >= 3
  0, /*tp_as_async*/
  #endif
  0, /*tp_repr*/
  0, /*tp_as_number*/
  0, /*tp_as_sequence*/
  0, /*tp_as_mapping*/
  0, /*tp_hash*/
  0, /*tp_call*/
  0, /*tp_str*/
  0, /*tp_getattro*/
  0, /*tp_setattro*/
  0, /*tp_as_buffer*/
  Py_TPFLAGS_DEFAULT|Py_TPFLAGS_HAVE_VERSION_TAG|Py_TPFLAGS_CHECKTYPES|Py_TPFLAGS_HAVE_NEWBUFFER|Py_TPFLAGS_BASETYPE|Py_TPFLAGS_HAVE_GC, /*tp_flags*/
  0, /*tp_doc*/
  __pyx_tp_traverse_4grpc_7_cython_6cygrpc_ReceiveStatusOnClientOperation, /*tp_traverse*/
  __pyx_tp_clear_4grpc_7_cython_6cygrpc_ReceiveStatusOnClientOperation, /*tp_clear*/
  0, /*tp_richcompare*/
  0, /*tp_weaklistoffset*/
  0, /*tp_iter*/
  0, /*tp_iternext*/
  __pyx_methods_4grpc_7_cython_6cygrpc_ReceiveStatusOnClientOperation, /*tp_methods*/
  0, /*tp_members*/
  __pyx_getsets_4grpc_7_cython_6cygrpc_ReceiveStatusOnClientOperation, /*tp_getset*/
  0, /*tp_base*/
  0, /*tp_dict*/
  0, /*tp_descr_get*/
  0, /*tp_descr_set*/
  0, /*tp_dictoffset*/
  0, /*tp_init*/
  0, /*tp_alloc*/
  __pyx_tp_new_4grpc_7_cython_6cygrpc_ReceiveStatusOnClientOperation, /*tp_new*/
  0, /*tp_free*/
  0, /*tp_is_gc*/
  0, /*tp_bases*/
  0, /*tp_mro*/
  0, /*tp_cache*/
  0, /*tp_subclasses*/
  0, /*tp_weaklist*/
  0, /*tp_del*/
  0, /*tp_version_tag*/
  #if PY_VERSION_HEX >= 0x030400a1
  0, /*tp_finalize*/
  #endif
  #if PY_VERSION_HEX >= 0x030800b1
  0, /*tp_vectorcall*/
  #endif
  #if PY_VERSION_HEX >= 0x030800b4 && PY_VERSION_HEX < 0x03090000
  0, /*tp_print*/
  #endif
};
static struct __pyx_vtabstruct_4grpc_7_cython_6cygrpc_ReceiveCloseOnServerOperation __pyx_vtable_4grpc_7_cython_6cygrpc_ReceiveCloseOnServerOperation;

static PyObject *__pyx_tp_new_4grpc_7_cython_6cygrpc_ReceiveCloseOnServerOperation(PyTypeObject *t, PyObject *a, PyObject *k) {
  struct __pyx_obj_4grpc_7_cython_6cygrpc_ReceiveCloseOnServerOperation *p;
  PyObject *o = __pyx_tp_new_4grpc_7_cython_6cygrpc_Operation(t, a, k);
  if (unlikely(!o)) return 0;
  p = ((struct __pyx_obj_4grpc_7_cython_6cygrpc_ReceiveCloseOnServerOperation *)o);
  p->__pyx_base.__pyx_vtab = (struct __pyx_vtabstruct_4grpc_7_cython_6cygrpc_Operation*)__pyx_vtabptr_4grpc_7_cython_6cygrpc_ReceiveCloseOnServerOperation;
  p->_cancelled = Py_None; Py_INCREF(Py_None);
  if (unlikely(__pyx_pw_4grpc_7_cython_6cygrpc_29ReceiveCloseOnServerOperation_1__cinit__(o, a, k) < 0)) goto bad;
  return o;
  bad:
  Py_DECREF(o); o = 0;
  return NULL;
}

static void __pyx_tp_dealloc_4grpc_7_cython_6cygrpc_ReceiveCloseOnServerOperation(PyObject *o) {
  struct __pyx_obj_4grpc_7_cython_6cygrpc_ReceiveCloseOnServerOperation *p = (struct __pyx_obj_4grpc_7_cython_6cygrpc_ReceiveCloseOnServerOperation *)o;
  #if CYTHON_USE_TP_FINALIZE
  if (unlikely(PyType_HasFeature(Py_TYPE(o), Py_TPFLAGS_HAVE_FINALIZE) && Py_TYPE(o)->tp_finalize) && !_PyGC_FINALIZED(o)) {
    if (PyObject_CallFinalizerFromDealloc(o)) return;
  }
  #endif
  PyObject_GC_UnTrack(o);
  Py_CLEAR(p->_cancelled);
  #if CYTHON_USE_TYPE_SLOTS
  if (PyType_IS_GC(Py_TYPE(o)->tp_base))
  #endif
  PyObject_GC_Track(o);
  __pyx_tp_dealloc_4grpc_7_cython_6cygrpc_Operation(o);
}

static int __pyx_tp_traverse_4grpc_7_cython_6cygrpc_ReceiveCloseOnServerOperation(PyObject *o, visitproc v, void *a) {
  int e;
  struct __pyx_obj_4grpc_7_cython_6cygrpc_ReceiveCloseOnServerOperation *p = (struct __pyx_obj_4grpc_7_cython_6cygrpc_ReceiveCloseOnServerOperation *)o;
  e = ((likely(__pyx_ptype_4grpc_7_cython_6cygrpc_Operation)) ? ((__pyx_ptype_4grpc_7_cython_6cygrpc_Operation->tp_traverse) ? __pyx_ptype_4grpc_7_cython_6cygrpc_Operation->tp_traverse(o, v, a) : 0) : __Pyx_call_next_tp_traverse(o, v, a, __pyx_tp_traverse_4grpc_7_cython_6cygrpc_ReceiveCloseOnServerOperation)); if (e) return e;
  if (p->_cancelled) {
    e = (*v)(p->_cancelled, a); if (e) return e;
  }
  return 0;
}

static int __pyx_tp_clear_4grpc_7_cython_6cygrpc_ReceiveCloseOnServerOperation(PyObject *o) {
  PyObject* tmp;
  struct __pyx_obj_4grpc_7_cython_6cygrpc_ReceiveCloseOnServerOperation *p = (struct __pyx_obj_4grpc_7_cython_6cygrpc_ReceiveCloseOnServerOperation *)o;
  if (likely(__pyx_ptype_4grpc_7_cython_6cygrpc_Operation)) { if (__pyx_ptype_4grpc_7_cython_6cygrpc_Operation->tp_clear) __pyx_ptype_4grpc_7_cython_6cygrpc_Operation->tp_clear(o); } else __Pyx_call_next_tp_clear(o, __pyx_tp_clear_4grpc_7_cython_6cygrpc_ReceiveCloseOnServerOperation);
  tmp = ((PyObject*)p->_cancelled);
  p->_cancelled = Py_None; Py_INCREF(Py_None);
  Py_XDECREF(tmp);
  return 0;
}

static PyObject *__pyx_getprop_4grpc_7_cython_6cygrpc_29ReceiveCloseOnServerOperation__flags(PyObject *o, CYTHON_UNUSED void *x) {
  return __pyx_pw_4grpc_7_cython_6cygrpc_29ReceiveCloseOnServerOperation_6_flags_1__get__(o);
}

static PyMethodDef __pyx_methods_4grpc_7_cython_6cygrpc_ReceiveCloseOnServerOperation[] = {
  {"type", (PyCFunction)__pyx_pw_4grpc_7_cython_6cygrpc_29ReceiveCloseOnServerOperation_3type, METH_NOARGS, 0},
  {"cancelled", (PyCFunction)__pyx_pw_4grpc_7_cython_6cygrpc_29ReceiveCloseOnServerOperation_5cancelled, METH_NOARGS, 0},
  {"__reduce_cython__", (PyCFunction)__pyx_pw_4grpc_7_cython_6cygrpc_29ReceiveCloseOnServerOperation_7__reduce_cython__, METH_NOARGS, 0},
  {"__setstate_cython__", (PyCFunction)__pyx_pw_4grpc_7_cython_6cygrpc_29ReceiveCloseOnServerOperation_9__setstate_cython__, METH_O, 0},
  {0, 0, 0, 0}
};

static struct PyGetSetDef __pyx_getsets_4grpc_7_cython_6cygrpc_ReceiveCloseOnServerOperation[] = {
  {(char *)"_flags", __pyx_getprop_4grpc_7_cython_6cygrpc_29ReceiveCloseOnServerOperation__flags, 0, (char *)0, 0},
  {0, 0, 0, 0, 0}
};

static PyTypeObject __pyx_type_4grpc_7_cython_6cygrpc_ReceiveCloseOnServerOperation = {
  PyVarObject_HEAD_INIT(0, 0)
  "grpc._cython.cygrpc.ReceiveCloseOnServerOperation", /*tp_name*/
  sizeof(struct __pyx_obj_4grpc_7_cython_6cygrpc_ReceiveCloseOnServerOperation), /*tp_basicsize*/
  0, /*tp_itemsize*/
  __pyx_tp_dealloc_4grpc_7_cython_6cygrpc_ReceiveCloseOnServerOperation, /*tp_dealloc*/
  #if PY_VERSION_HEX < 0x030800b4
  0, /*tp_print*/
  #endif
  #if PY_VERSION_HEX >= 0x030800b4
  0, /*tp_vectorcall_offset*/
  #endif
  0, /*tp_getattr*/
  0, /*tp_setattr*/
  #if PY_MAJOR_VERSION < 3
  0, /*tp_compare*/
  #endif
  #if PY_MAJOR_VERSION >= 3
  0, /*tp_as_async*/
  #endif
  0, /*tp_repr*/
  0, /*tp_as_number*/
  0, /*tp_as_sequence*/
  0, /*tp_as_mapping*/
  0, /*tp_hash*/
  0, /*tp_call*/
  0, /*tp_str*/
  0, /*tp_getattro*/
  0, /*tp_setattro*/
  0, /*tp_as_buffer*/
  Py_TPFLAGS_DEFAULT|Py_TPFLAGS_HAVE_VERSION_TAG|Py_TPFLAGS_CHECKTYPES|Py_TPFLAGS_HAVE_NEWBUFFER|Py_TPFLAGS_BASETYPE|Py_TPFLAGS_HAVE_GC, /*tp_flags*/
  0, /*tp_doc*/
  __pyx_tp_traverse_4grpc_7_cython_6cygrpc_ReceiveCloseOnServerOperation, /*tp_traverse*/
  __pyx_tp_clear_4grpc_7_cython_6cygrpc_ReceiveCloseOnServerOperation, /*tp_clear*/
  0, /*tp_richcompare*/
  0, /*tp_weaklistoffset*/
  0, /*tp_iter*/
  0, /*tp_iternext*/
  __pyx_methods_4grpc_7_cython_6cygrpc_ReceiveCloseOnServerOperation, /*tp_methods*/
  0, /*tp_members*/
  __pyx_getsets_4grpc_7_cython_6cygrpc_ReceiveCloseOnServerOperation, /*tp_getset*/
  0, /*tp_base*/
  0, /*tp_dict*/
  0, /*tp_descr_get*/
  0, /*tp_descr_set*/
  0, /*tp_dictoffset*/
  0, /*tp_init*/
  0, /*tp_alloc*/
  __pyx_tp_new_4grpc_7_cython_6cygrpc_ReceiveCloseOnServerOperation, /*tp_new*/
  0, /*tp_free*/
  0, /*tp_is_gc*/
  0, /*tp_bases*/
  0, /*tp_mro*/
  0, /*tp_cache*/
  0, /*tp_subclasses*/
  0, /*tp_weaklist*/
  0, /*tp_del*/
  0, /*tp_version_tag*/
  #if PY_VERSION_HEX >= 0x030400a1
  0, /*tp_finalize*/
  #endif
  #if PY_VERSION_HEX >= 0x030800b1
  0, /*tp_vectorcall*/
  #endif
  #if PY_VERSION_HEX >= 0x030800b4 && PY_VERSION_HEX < 0x03090000
  0, /*tp_print*/
  #endif
};

static PyObject *__pyx_tp_new_4grpc_7_cython_6cygrpc_CallDetails(PyTypeObject *t, CYTHON_UNUSED PyObject *a, CYTHON_UNUSED PyObject *k) {
  PyObject *o;
  if (likely((t->tp_flags & Py_TPFLAGS_IS_ABSTRACT) == 0)) {
    o = (*t->tp_alloc)(t, 0);
  } else {
    o = (PyObject *) PyBaseObject_Type.tp_new(t, __pyx_empty_tuple, 0);
  }
  if (unlikely(!o)) return 0;
  if (unlikely(__pyx_pw_4grpc_7_cython_6cygrpc_11CallDetails_1__cinit__(o, __pyx_empty_tuple, NULL) < 0)) goto bad;
  return o;
  bad:
  Py_DECREF(o); o = 0;
  return NULL;
}

static void __pyx_tp_dealloc_4grpc_7_cython_6cygrpc_CallDetails(PyObject *o) {
  #if CYTHON_USE_TP_FINALIZE
  if (unlikely(PyType_HasFeature(Py_TYPE(o), Py_TPFLAGS_HAVE_FINALIZE) && Py_TYPE(o)->tp_finalize) && (!PyType_IS_GC(Py_TYPE(o)) || !_PyGC_FINALIZED(o))) {
    if (PyObject_CallFinalizerFromDealloc(o)) return;
  }
  #endif
  {
    PyObject *etype, *eval, *etb;
    PyErr_Fetch(&etype, &eval, &etb);
    __Pyx_SET_REFCNT(o, Py_REFCNT(o) + 1);
    __pyx_pw_4grpc_7_cython_6cygrpc_11CallDetails_3__dealloc__(o);
    __Pyx_SET_REFCNT(o, Py_REFCNT(o) - 1);
    PyErr_Restore(etype, eval, etb);
  }
  (*Py_TYPE(o)->tp_free)(o);
}

static PyObject *__pyx_getprop_4grpc_7_cython_6cygrpc_11CallDetails_method(PyObject *o, CYTHON_UNUSED void *x) {
  return __pyx_pw_4grpc_7_cython_6cygrpc_11CallDetails_6method_1__get__(o);
}

static PyObject *__pyx_getprop_4grpc_7_cython_6cygrpc_11CallDetails_host(PyObject *o, CYTHON_UNUSED void *x) {
  return __pyx_pw_4grpc_7_cython_6cygrpc_11CallDetails_4host_1__get__(o);
}

static PyObject *__pyx_getprop_4grpc_7_cython_6cygrpc_11CallDetails_deadline(PyObject *o, CYTHON_UNUSED void *x) {
  return __pyx_pw_4grpc_7_cython_6cygrpc_11CallDetails_8deadline_1__get__(o);
}

static PyMethodDef __pyx_methods_4grpc_7_cython_6cygrpc_CallDetails[] = {
  {"__reduce_cython__", (PyCFunction)__pyx_pw_4grpc_7_cython_6cygrpc_11CallDetails_5__reduce_cython__, METH_NOARGS, 0},
  {"__setstate_cython__", (PyCFunction)__pyx_pw_4grpc_7_cython_6cygrpc_11CallDetails_7__setstate_cython__, METH_O, 0},
  {0, 0, 0, 0}
};

static struct PyGetSetDef __pyx_getsets_4grpc_7_cython_6cygrpc_CallDetails[] = {
  {(char *)"method", __pyx_getprop_4grpc_7_cython_6cygrpc_11CallDetails_method, 0, (char *)0, 0},
  {(char *)"host", __pyx_getprop_4grpc_7_cython_6cygrpc_11CallDetails_host, 0, (char *)0, 0},
  {(char *)"deadline", __pyx_getprop_4grpc_7_cython_6cygrpc_11CallDetails_deadline, 0, (char *)0, 0},
  {0, 0, 0, 0, 0}
};

static PyTypeObject __pyx_type_4grpc_7_cython_6cygrpc_CallDetails = {
  PyVarObject_HEAD_INIT(0, 0)
  "grpc._cython.cygrpc.CallDetails", /*tp_name*/
  sizeof(struct __pyx_obj_4grpc_7_cython_6cygrpc_CallDetails), /*tp_basicsize*/
  0, /*tp_itemsize*/
  __pyx_tp_dealloc_4grpc_7_cython_6cygrpc_CallDetails, /*tp_dealloc*/
  #if PY_VERSION_HEX < 0x030800b4
  0, /*tp_print*/
  #endif
  #if PY_VERSION_HEX >= 0x030800b4
  0, /*tp_vectorcall_offset*/
  #endif
  0, /*tp_getattr*/
  0, /*tp_setattr*/
  #if PY_MAJOR_VERSION < 3
  0, /*tp_compare*/
  #endif
  #if PY_MAJOR_VERSION >= 3
  0, /*tp_as_async*/
  #endif
  0, /*tp_repr*/
  0, /*tp_as_number*/
  0, /*tp_as_sequence*/
  0, /*tp_as_mapping*/
  0, /*tp_hash*/
  0, /*tp_call*/
  0, /*tp_str*/
  0, /*tp_getattro*/
  0, /*tp_setattro*/
  0, /*tp_as_buffer*/
  Py_TPFLAGS_DEFAULT|Py_TPFLAGS_HAVE_VERSION_TAG|Py_TPFLAGS_CHECKTYPES|Py_TPFLAGS_HAVE_NEWBUFFER|Py_TPFLAGS_BASETYPE, /*tp_flags*/
  0, /*tp_doc*/
  0, /*tp_traverse*/
  0, /*tp_clear*/
  0, /*tp_richcompare*/
  0, /*tp_weaklistoffset*/
  0, /*tp_iter*/
  0, /*tp_iternext*/
  __pyx_methods_4grpc_7_cython_6cygrpc_CallDetails, /*tp_methods*/
  0, /*tp_members*/
  __pyx_getsets_4grpc_7_cython_6cygrpc_CallDetails, /*tp_getset*/
  0, /*tp_base*/
  0, /*tp_dict*/
  0, /*tp_descr_get*/
  0, /*tp_descr_set*/
  0, /*tp_dictoffset*/
  0, /*tp_init*/
  0, /*tp_alloc*/
  __pyx_tp_new_4grpc_7_cython_6cygrpc_CallDetails, /*tp_new*/
  0, /*tp_free*/
  0, /*tp_is_gc*/
  0, /*tp_bases*/
  0, /*tp_mro*/
  0, /*tp_cache*/
  0, /*tp_subclasses*/
  0, /*tp_weaklist*/
  0, /*tp_del*/
  0, /*tp_version_tag*/
  #if PY_VERSION_HEX >= 0x030400a1
  0, /*tp_finalize*/
  #endif
  #if PY_VERSION_HEX >= 0x030800b1
  0, /*tp_vectorcall*/
  #endif
  #if PY_VERSION_HEX >= 0x030800b4 && PY_VERSION_HEX < 0x03090000
  0, /*tp_print*/
  #endif
};

static PyObject *__pyx_tp_new_4grpc_7_cython_6cygrpc_SslPemKeyCertPair(PyTypeObject *t, PyObject *a, PyObject *k) {
  struct __pyx_obj_4grpc_7_cython_6cygrpc_SslPemKeyCertPair *p;
  PyObject *o;
  if (likely((t->tp_flags & Py_TPFLAGS_IS_ABSTRACT) == 0)) {
    o = (*t->tp_alloc)(t, 0);
  } else {
    o = (PyObject *) PyBaseObject_Type.tp_new(t, __pyx_empty_tuple, 0);
  }
  if (unlikely(!o)) return 0;
  p = ((struct __pyx_obj_4grpc_7_cython_6cygrpc_SslPemKeyCertPair *)o);
  p->private_key = Py_None; Py_INCREF(Py_None);
  p->certificate_chain = Py_None; Py_INCREF(Py_None);
  if (unlikely(__pyx_pw_4grpc_7_cython_6cygrpc_17SslPemKeyCertPair_1__cinit__(o, a, k) < 0)) goto bad;
  return o;
  bad:
  Py_DECREF(o); o = 0;
  return NULL;
}

static void __pyx_tp_dealloc_4grpc_7_cython_6cygrpc_SslPemKeyCertPair(PyObject *o) {
  struct __pyx_obj_4grpc_7_cython_6cygrpc_SslPemKeyCertPair *p = (struct __pyx_obj_4grpc_7_cython_6cygrpc_SslPemKeyCertPair *)o;
  #if CYTHON_USE_TP_FINALIZE
  if (unlikely(PyType_HasFeature(Py_TYPE(o), Py_TPFLAGS_HAVE_FINALIZE) && Py_TYPE(o)->tp_finalize) && !_PyGC_FINALIZED(o)) {
    if (PyObject_CallFinalizerFromDealloc(o)) return;
  }
  #endif
  PyObject_GC_UnTrack(o);
  Py_CLEAR(p->private_key);
  Py_CLEAR(p->certificate_chain);
  (*Py_TYPE(o)->tp_free)(o);
}

static int __pyx_tp_traverse_4grpc_7_cython_6cygrpc_SslPemKeyCertPair(PyObject *o, visitproc v, void *a) {
  int e;
  struct __pyx_obj_4grpc_7_cython_6cygrpc_SslPemKeyCertPair *p = (struct __pyx_obj_4grpc_7_cython_6cygrpc_SslPemKeyCertPair *)o;
  if (p->private_key) {
    e = (*v)(p->private_key, a); if (e) return e;
  }
  if (p->certificate_chain) {
    e = (*v)(p->certificate_chain, a); if (e) return e;
  }
  return 0;
}

static int __pyx_tp_clear_4grpc_7_cython_6cygrpc_SslPemKeyCertPair(PyObject *o) {
  PyObject* tmp;
  struct __pyx_obj_4grpc_7_cython_6cygrpc_SslPemKeyCertPair *p = (struct __pyx_obj_4grpc_7_cython_6cygrpc_SslPemKeyCertPair *)o;
  tmp = ((PyObject*)p->private_key);
  p->private_key = Py_None; Py_INCREF(Py_None);
  Py_XDECREF(tmp);
  tmp = ((PyObject*)p->certificate_chain);
  p->certificate_chain = Py_None; Py_INCREF(Py_None);
  Py_XDECREF(tmp);
  return 0;
}

static PyObject *__pyx_getprop_4grpc_7_cython_6cygrpc_17SslPemKeyCertPair_private_key(PyObject *o, CYTHON_UNUSED void *x) {
  return __pyx_pw_4grpc_7_cython_6cygrpc_17SslPemKeyCertPair_11private_key_1__get__(o);
}

static PyObject *__pyx_getprop_4grpc_7_cython_6cygrpc_17SslPemKeyCertPair_certificate_chain(PyObject *o, CYTHON_UNUSED void *x) {
  return __pyx_pw_4grpc_7_cython_6cygrpc_17SslPemKeyCertPair_17certificate_chain_1__get__(o);
}

static PyMethodDef __pyx_methods_4grpc_7_cython_6cygrpc_SslPemKeyCertPair[] = {
  {"__reduce_cython__", (PyCFunction)__pyx_pw_4grpc_7_cython_6cygrpc_17SslPemKeyCertPair_3__reduce_cython__, METH_NOARGS, 0},
  {"__setstate_cython__", (PyCFunction)__pyx_pw_4grpc_7_cython_6cygrpc_17SslPemKeyCertPair_5__setstate_cython__, METH_O, 0},
  {0, 0, 0, 0}
};

static struct PyGetSetDef __pyx_getsets_4grpc_7_cython_6cygrpc_SslPemKeyCertPair[] = {
  {(char *)"private_key", __pyx_getprop_4grpc_7_cython_6cygrpc_17SslPemKeyCertPair_private_key, 0, (char *)0, 0},
  {(char *)"certificate_chain", __pyx_getprop_4grpc_7_cython_6cygrpc_17SslPemKeyCertPair_certificate_chain, 0, (char *)0, 0},
  {0, 0, 0, 0, 0}
};

static PyTypeObject __pyx_type_4grpc_7_cython_6cygrpc_SslPemKeyCertPair = {
  PyVarObject_HEAD_INIT(0, 0)
  "grpc._cython.cygrpc.SslPemKeyCertPair", /*tp_name*/
  sizeof(struct __pyx_obj_4grpc_7_cython_6cygrpc_SslPemKeyCertPair), /*tp_basicsize*/
  0, /*tp_itemsize*/
  __pyx_tp_dealloc_4grpc_7_cython_6cygrpc_SslPemKeyCertPair, /*tp_dealloc*/
  #if PY_VERSION_HEX < 0x030800b4
  0, /*tp_print*/
  #endif
  #if PY_VERSION_HEX >= 0x030800b4
  0, /*tp_vectorcall_offset*/
  #endif
  0, /*tp_getattr*/
  0, /*tp_setattr*/
  #if PY_MAJOR_VERSION < 3
  0, /*tp_compare*/
  #endif
  #if PY_MAJOR_VERSION >= 3
  0, /*tp_as_async*/
  #endif
  0, /*tp_repr*/
  0, /*tp_as_number*/
  0, /*tp_as_sequence*/
  0, /*tp_as_mapping*/
  0, /*tp_hash*/
  0, /*tp_call*/
  0, /*tp_str*/
  0, /*tp_getattro*/
  0, /*tp_setattro*/
  0, /*tp_as_buffer*/
  Py_TPFLAGS_DEFAULT|Py_TPFLAGS_HAVE_VERSION_TAG|Py_TPFLAGS_CHECKTYPES|Py_TPFLAGS_HAVE_NEWBUFFER|Py_TPFLAGS_BASETYPE|Py_TPFLAGS_HAVE_GC, /*tp_flags*/
  0, /*tp_doc*/
  __pyx_tp_traverse_4grpc_7_cython_6cygrpc_SslPemKeyCertPair, /*tp_traverse*/
  __pyx_tp_clear_4grpc_7_cython_6cygrpc_SslPemKeyCertPair, /*tp_clear*/
  0, /*tp_richcompare*/
  0, /*tp_weaklistoffset*/
  0, /*tp_iter*/
  0, /*tp_iternext*/
  __pyx_methods_4grpc_7_cython_6cygrpc_SslPemKeyCertPair, /*tp_methods*/
  0, /*tp_members*/
  __pyx_getsets_4grpc_7_cython_6cygrpc_SslPemKeyCertPair, /*tp_getset*/
  0, /*tp_base*/
  0, /*tp_dict*/
  0, /*tp_descr_get*/
  0, /*tp_descr_set*/
  0, /*tp_dictoffset*/
  0, /*tp_init*/
  0, /*tp_alloc*/
  __pyx_tp_new_4grpc_7_cython_6cygrpc_SslPemKeyCertPair, /*tp_new*/
  0, /*tp_free*/
  0, /*tp_is_gc*/
  0, /*tp_bases*/
  0, /*tp_mro*/
  0, /*tp_cache*/
  0, /*tp_subclasses*/
  0, /*tp_weaklist*/
  0, /*tp_del*/
  0, /*tp_version_tag*/
  #if PY_VERSION_HEX >= 0x030400a1
  0, /*tp_finalize*/
  #endif
  #if PY_VERSION_HEX >= 0x030800b1
  0, /*tp_vectorcall*/
  #endif
  #if PY_VERSION_HEX >= 0x030800b4 && PY_VERSION_HEX < 0x03090000
  0, /*tp_print*/
  #endif
};

static PyObject *__pyx_tp_new_4grpc_7_cython_6cygrpc_CompressionOptions(PyTypeObject *t, CYTHON_UNUSED PyObject *a, CYTHON_UNUSED PyObject *k) {
  PyObject *o;
  if (likely((t->tp_flags & Py_TPFLAGS_IS_ABSTRACT) == 0)) {
    o = (*t->tp_alloc)(t, 0);
  } else {
    o = (PyObject *) PyBaseObject_Type.tp_new(t, __pyx_empty_tuple, 0);
  }
  if (unlikely(!o)) return 0;
  if (unlikely(__pyx_pw_4grpc_7_cython_6cygrpc_18CompressionOptions_1__cinit__(o, __pyx_empty_tuple, NULL) < 0)) goto bad;
  return o;
  bad:
  Py_DECREF(o); o = 0;
  return NULL;
}

static void __pyx_tp_dealloc_4grpc_7_cython_6cygrpc_CompressionOptions(PyObject *o) {
  #if CYTHON_USE_TP_FINALIZE
  if (unlikely(PyType_HasFeature(Py_TYPE(o), Py_TPFLAGS_HAVE_FINALIZE) && Py_TYPE(o)->tp_finalize) && (!PyType_IS_GC(Py_TYPE(o)) || !_PyGC_FINALIZED(o))) {
    if (PyObject_CallFinalizerFromDealloc(o)) return;
  }
  #endif
  (*Py_TYPE(o)->tp_free)(o);
}

static PyMethodDef __pyx_methods_4grpc_7_cython_6cygrpc_CompressionOptions[] = {
  {"enable_algorithm", (PyCFunction)__pyx_pw_4grpc_7_cython_6cygrpc_18CompressionOptions_3enable_algorithm, METH_O, 0},
  {"disable_algorithm", (PyCFunction)__pyx_pw_4grpc_7_cython_6cygrpc_18CompressionOptions_5disable_algorithm, METH_O, 0},
  {"is_algorithm_enabled", (PyCFunction)__pyx_pw_4grpc_7_cython_6cygrpc_18CompressionOptions_7is_algorithm_enabled, METH_O, 0},
  {"to_channel_arg", (PyCFunction)__pyx_pw_4grpc_7_cython_6cygrpc_18CompressionOptions_9to_channel_arg, METH_NOARGS, 0},
  {"__reduce_cython__", (PyCFunction)__pyx_pw_4grpc_7_cython_6cygrpc_18CompressionOptions_11__reduce_cython__, METH_NOARGS, 0},
  {"__setstate_cython__", (PyCFunction)__pyx_pw_4grpc_7_cython_6cygrpc_18CompressionOptions_13__setstate_cython__, METH_O, 0},
  {0, 0, 0, 0}
};

static PyTypeObject __pyx_type_4grpc_7_cython_6cygrpc_CompressionOptions = {
  PyVarObject_HEAD_INIT(0, 0)
  "grpc._cython.cygrpc.CompressionOptions", /*tp_name*/
  sizeof(struct __pyx_obj_4grpc_7_cython_6cygrpc_CompressionOptions), /*tp_basicsize*/
  0, /*tp_itemsize*/
  __pyx_tp_dealloc_4grpc_7_cython_6cygrpc_CompressionOptions, /*tp_dealloc*/
  #if PY_VERSION_HEX < 0x030800b4
  0, /*tp_print*/
  #endif
  #if PY_VERSION_HEX >= 0x030800b4
  0, /*tp_vectorcall_offset*/
  #endif
  0, /*tp_getattr*/
  0, /*tp_setattr*/
  #if PY_MAJOR_VERSION < 3
  0, /*tp_compare*/
  #endif
  #if PY_MAJOR_VERSION >= 3
  0, /*tp_as_async*/
  #endif
  0, /*tp_repr*/
  0, /*tp_as_number*/
  0, /*tp_as_sequence*/
  0, /*tp_as_mapping*/
  0, /*tp_hash*/
  0, /*tp_call*/
  0, /*tp_str*/
  0, /*tp_getattro*/
  0, /*tp_setattro*/
  0, /*tp_as_buffer*/
  Py_TPFLAGS_DEFAULT|Py_TPFLAGS_HAVE_VERSION_TAG|Py_TPFLAGS_CHECKTYPES|Py_TPFLAGS_HAVE_NEWBUFFER|Py_TPFLAGS_BASETYPE, /*tp_flags*/
  0, /*tp_doc*/
  0, /*tp_traverse*/
  0, /*tp_clear*/
  0, /*tp_richcompare*/
  0, /*tp_weaklistoffset*/
  0, /*tp_iter*/
  0, /*tp_iternext*/
  __pyx_methods_4grpc_7_cython_6cygrpc_CompressionOptions, /*tp_methods*/
  0, /*tp_members*/
  0, /*tp_getset*/
  0, /*tp_base*/
  0, /*tp_dict*/
  0, /*tp_descr_get*/
  0, /*tp_descr_set*/
  0, /*tp_dictoffset*/
  0, /*tp_init*/
  0, /*tp_alloc*/
  __pyx_tp_new_4grpc_7_cython_6cygrpc_CompressionOptions, /*tp_new*/
  0, /*tp_free*/
  0, /*tp_is_gc*/
  0, /*tp_bases*/
  0, /*tp_mro*/
  0, /*tp_cache*/
  0, /*tp_subclasses*/
  0, /*tp_weaklist*/
  0, /*tp_del*/
  0, /*tp_version_tag*/
  #if PY_VERSION_HEX >= 0x030400a1
  0, /*tp_finalize*/
  #endif
  #if PY_VERSION_HEX >= 0x030800b1
  0, /*tp_vectorcall*/
  #endif
  #if PY_VERSION_HEX >= 0x030800b4 && PY_VERSION_HEX < 0x03090000
  0, /*tp_print*/
  #endif
};
static struct __pyx_vtabstruct_4grpc_7_cython_6cygrpc_Server __pyx_vtable_4grpc_7_cython_6cygrpc_Server;

static PyObject *__pyx_tp_new_4grpc_7_cython_6cygrpc_Server(PyTypeObject *t, PyObject *a, PyObject *k) {
  struct __pyx_obj_4grpc_7_cython_6cygrpc_Server *p;
  PyObject *o;
  if (likely((t->tp_flags & Py_TPFLAGS_IS_ABSTRACT) == 0)) {
    o = (*t->tp_alloc)(t, 0);
  } else {
    o = (PyObject *) PyBaseObject_Type.tp_new(t, __pyx_empty_tuple, 0);
  }
  if (unlikely(!o)) return 0;
  p = ((struct __pyx_obj_4grpc_7_cython_6cygrpc_Server *)o);
  p->__pyx_vtab = __pyx_vtabptr_4grpc_7_cython_6cygrpc_Server;
  p->backup_shutdown_queue = ((struct __pyx_obj_4grpc_7_cython_6cygrpc_CompletionQueue *)Py_None); Py_INCREF(Py_None);
  p->references = ((PyObject*)Py_None); Py_INCREF(Py_None);
  p->registered_completion_queues = ((PyObject*)Py_None); Py_INCREF(Py_None);
  if (unlikely(__pyx_pw_4grpc_7_cython_6cygrpc_6Server_1__cinit__(o, a, k) < 0)) goto bad;
  return o;
  bad:
  Py_DECREF(o); o = 0;
  return NULL;
}

static void __pyx_tp_dealloc_4grpc_7_cython_6cygrpc_Server(PyObject *o) {
  struct __pyx_obj_4grpc_7_cython_6cygrpc_Server *p = (struct __pyx_obj_4grpc_7_cython_6cygrpc_Server *)o;
  #if CYTHON_USE_TP_FINALIZE
  if (unlikely(PyType_HasFeature(Py_TYPE(o), Py_TPFLAGS_HAVE_FINALIZE) && Py_TYPE(o)->tp_finalize) && !_PyGC_FINALIZED(o)) {
    if (PyObject_CallFinalizerFromDealloc(o)) return;
  }
  #endif
  PyObject_GC_UnTrack(o);
  {
    PyObject *etype, *eval, *etb;
    PyErr_Fetch(&etype, &eval, &etb);
    __Pyx_SET_REFCNT(o, Py_REFCNT(o) + 1);
    __pyx_pw_4grpc_7_cython_6cygrpc_6Server_17__dealloc__(o);
    __Pyx_SET_REFCNT(o, Py_REFCNT(o) - 1);
    PyErr_Restore(etype, eval, etb);
  }
  Py_CLEAR(p->backup_shutdown_queue);
  Py_CLEAR(p->references);
  Py_CLEAR(p->registered_completion_queues);
  (*Py_TYPE(o)->tp_free)(o);
}

static int __pyx_tp_traverse_4grpc_7_cython_6cygrpc_Server(PyObject *o, visitproc v, void *a) {
  int e;
  struct __pyx_obj_4grpc_7_cython_6cygrpc_Server *p = (struct __pyx_obj_4grpc_7_cython_6cygrpc_Server *)o;
  if (p->backup_shutdown_queue) {
    e = (*v)(((PyObject *)p->backup_shutdown_queue), a); if (e) return e;
  }
  if (p->references) {
    e = (*v)(p->references, a); if (e) return e;
  }
  if (p->registered_completion_queues) {
    e = (*v)(p->registered_completion_queues, a); if (e) return e;
  }
  return 0;
}

static int __pyx_tp_clear_4grpc_7_cython_6cygrpc_Server(PyObject *o) {
  PyObject* tmp;
  struct __pyx_obj_4grpc_7_cython_6cygrpc_Server *p = (struct __pyx_obj_4grpc_7_cython_6cygrpc_Server *)o;
  tmp = ((PyObject*)p->backup_shutdown_queue);
  p->backup_shutdown_queue = ((struct __pyx_obj_4grpc_7_cython_6cygrpc_CompletionQueue *)Py_None); Py_INCREF(Py_None);
  Py_XDECREF(tmp);
  tmp = ((PyObject*)p->references);
  p->references = ((PyObject*)Py_None); Py_INCREF(Py_None);
  Py_XDECREF(tmp);
  tmp = ((PyObject*)p->registered_completion_queues);
  p->registered_completion_queues = ((PyObject*)Py_None); Py_INCREF(Py_None);
  Py_XDECREF(tmp);
  return 0;
}

static PyMethodDef __pyx_methods_4grpc_7_cython_6cygrpc_Server[] = {
  {"request_call", (PyCFunction)(void*)(PyCFunctionWithKeywords)__pyx_pw_4grpc_7_cython_6cygrpc_6Server_3request_call, METH_VARARGS|METH_KEYWORDS, 0},
  {"register_completion_queue", (PyCFunction)__pyx_pw_4grpc_7_cython_6cygrpc_6Server_5register_completion_queue, METH_O, 0},
  {"start", (PyCFunction)(void*)(PyCFunctionWithKeywords)__pyx_pw_4grpc_7_cython_6cygrpc_6Server_7start, METH_VARARGS|METH_KEYWORDS, __pyx_doc_4grpc_7_cython_6cygrpc_6Server_6start},
  {"add_http2_port", (PyCFunction)(void*)(PyCFunctionWithKeywords)__pyx_pw_4grpc_7_cython_6cygrpc_6Server_9add_http2_port, METH_VARARGS|METH_KEYWORDS, 0},
  {"shutdown", (PyCFunction)(void*)(PyCFunctionWithKeywords)__pyx_pw_4grpc_7_cython_6cygrpc_6Server_11shutdown, METH_VARARGS|METH_KEYWORDS, 0},
  {"cancel_all_calls", (PyCFunction)__pyx_pw_4grpc_7_cython_6cygrpc_6Server_13cancel_all_calls, METH_NOARGS, 0},
  {"destroy", (PyCFunction)__pyx_pw_4grpc_7_cython_6cygrpc_6Server_15destroy, METH_NOARGS, 0},
  {"__reduce_cython__", (PyCFunction)__pyx_pw_4grpc_7_cython_6cygrpc_6Server_19__reduce_cython__, METH_NOARGS, 0},
  {"__setstate_cython__", (PyCFunction)__pyx_pw_4grpc_7_cython_6cygrpc_6Server_21__setstate_cython__, METH_O, 0},
  {0, 0, 0, 0}
};

static PyTypeObject __pyx_type_4grpc_7_cython_6cygrpc_Server = {
  PyVarObject_HEAD_INIT(0, 0)
  "grpc._cython.cygrpc.Server", /*tp_name*/
  sizeof(struct __pyx_obj_4grpc_7_cython_6cygrpc_Server), /*tp_basicsize*/
  0, /*tp_itemsize*/
  __pyx_tp_dealloc_4grpc_7_cython_6cygrpc_Server, /*tp_dealloc*/
  #if PY_VERSION_HEX < 0x030800b4
  0, /*tp_print*/
  #endif
  #if PY_VERSION_HEX >= 0x030800b4
  0, /*tp_vectorcall_offset*/
  #endif
  0, /*tp_getattr*/
  0, /*tp_setattr*/
  #if PY_MAJOR_VERSION < 3
  0, /*tp_compare*/
  #endif
  #if PY_MAJOR_VERSION >= 3
  0, /*tp_as_async*/
  #endif
  0, /*tp_repr*/
  0, /*tp_as_number*/
  0, /*tp_as_sequence*/
  0, /*tp_as_mapping*/
  0, /*tp_hash*/
  0, /*tp_call*/
  0, /*tp_str*/
  0, /*tp_getattro*/
  0, /*tp_setattro*/
  0, /*tp_as_buffer*/
  Py_TPFLAGS_DEFAULT|Py_TPFLAGS_HAVE_VERSION_TAG|Py_TPFLAGS_CHECKTYPES|Py_TPFLAGS_HAVE_NEWBUFFER|Py_TPFLAGS_BASETYPE|Py_TPFLAGS_HAVE_GC, /*tp_flags*/
  0, /*tp_doc*/
  __pyx_tp_traverse_4grpc_7_cython_6cygrpc_Server, /*tp_traverse*/
  __pyx_tp_clear_4grpc_7_cython_6cygrpc_Server, /*tp_clear*/
  0, /*tp_richcompare*/
  0, /*tp_weaklistoffset*/
  0, /*tp_iter*/
  0, /*tp_iternext*/
  __pyx_methods_4grpc_7_cython_6cygrpc_Server, /*tp_methods*/
  0, /*tp_members*/
  0, /*tp_getset*/
  0, /*tp_base*/
  0, /*tp_dict*/
  0, /*tp_descr_get*/
  0, /*tp_descr_set*/
  0, /*tp_dictoffset*/
  0, /*tp_init*/
  0, /*tp_alloc*/
  __pyx_tp_new_4grpc_7_cython_6cygrpc_Server, /*tp_new*/
  0, /*tp_free*/
  0, /*tp_is_gc*/
  0, /*tp_bases*/
  0, /*tp_mro*/
  0, /*tp_cache*/
  0, /*tp_subclasses*/
  0, /*tp_weaklist*/
  0, /*tp_del*/
  0, /*tp_version_tag*/
  #if PY_VERSION_HEX >= 0x030400a1
  0, /*tp_finalize*/
  #endif
  #if PY_VERSION_HEX >= 0x030800b1
  0, /*tp_vectorcall*/
  #endif
  #if PY_VERSION_HEX >= 0x030800b4 && PY_VERSION_HEX < 0x03090000
  0, /*tp_print*/
  #endif
};
static struct __pyx_vtabstruct_4grpc_7_cython_6cygrpc__Tag __pyx_vtable_4grpc_7_cython_6cygrpc__Tag;

static PyObject *__pyx_tp_new_4grpc_7_cython_6cygrpc__Tag(PyTypeObject *t, CYTHON_UNUSED PyObject *a, CYTHON_UNUSED PyObject *k) {
  struct __pyx_obj_4grpc_7_cython_6cygrpc__Tag *p;
  PyObject *o;
  if (likely((t->tp_flags & Py_TPFLAGS_IS_ABSTRACT) == 0)) {
    o = (*t->tp_alloc)(t, 0);
  } else {
    o = (PyObject *) PyBaseObject_Type.tp_new(t, __pyx_empty_tuple, 0);
  }
  if (unlikely(!o)) return 0;
  p = ((struct __pyx_obj_4grpc_7_cython_6cygrpc__Tag *)o);
  p->__pyx_vtab = __pyx_vtabptr_4grpc_7_cython_6cygrpc__Tag;
  return o;
}

static void __pyx_tp_dealloc_4grpc_7_cython_6cygrpc__Tag(PyObject *o) {
  #if CYTHON_USE_TP_FINALIZE
  if (unlikely(PyType_HasFeature(Py_TYPE(o), Py_TPFLAGS_HAVE_FINALIZE) && Py_TYPE(o)->tp_finalize) && (!PyType_IS_GC(Py_TYPE(o)) || !_PyGC_FINALIZED(o))) {
    if (PyObject_CallFinalizerFromDealloc(o)) return;
  }
  #endif
  (*Py_TYPE(o)->tp_free)(o);
}

static PyMethodDef __pyx_methods_4grpc_7_cython_6cygrpc__Tag[] = {
  {"__reduce_cython__", (PyCFunction)__pyx_pw_4grpc_7_cython_6cygrpc_4_Tag_1__reduce_cython__, METH_NOARGS, 0},
  {"__setstate_cython__", (PyCFunction)__pyx_pw_4grpc_7_cython_6cygrpc_4_Tag_3__setstate_cython__, METH_O, 0},
  {0, 0, 0, 0}
};

static PyTypeObject __pyx_type_4grpc_7_cython_6cygrpc__Tag = {
  PyVarObject_HEAD_INIT(0, 0)
  "grpc._cython.cygrpc._Tag", /*tp_name*/
  sizeof(struct __pyx_obj_4grpc_7_cython_6cygrpc__Tag), /*tp_basicsize*/
  0, /*tp_itemsize*/
  __pyx_tp_dealloc_4grpc_7_cython_6cygrpc__Tag, /*tp_dealloc*/
  #if PY_VERSION_HEX < 0x030800b4
  0, /*tp_print*/
  #endif
  #if PY_VERSION_HEX >= 0x030800b4
  0, /*tp_vectorcall_offset*/
  #endif
  0, /*tp_getattr*/
  0, /*tp_setattr*/
  #if PY_MAJOR_VERSION < 3
  0, /*tp_compare*/
  #endif
  #if PY_MAJOR_VERSION >= 3
  0, /*tp_as_async*/
  #endif
  0, /*tp_repr*/
  0, /*tp_as_number*/
  0, /*tp_as_sequence*/
  0, /*tp_as_mapping*/
  0, /*tp_hash*/
  0, /*tp_call*/
  0, /*tp_str*/
  0, /*tp_getattro*/
  0, /*tp_setattro*/
  0, /*tp_as_buffer*/
  Py_TPFLAGS_DEFAULT|Py_TPFLAGS_HAVE_VERSION_TAG|Py_TPFLAGS_CHECKTYPES|Py_TPFLAGS_HAVE_NEWBUFFER|Py_TPFLAGS_BASETYPE, /*tp_flags*/
  0, /*tp_doc*/
  0, /*tp_traverse*/
  0, /*tp_clear*/
  0, /*tp_richcompare*/
  0, /*tp_weaklistoffset*/
  0, /*tp_iter*/
  0, /*tp_iternext*/
  __pyx_methods_4grpc_7_cython_6cygrpc__Tag, /*tp_methods*/
  0, /*tp_members*/
  0, /*tp_getset*/
  0, /*tp_base*/
  0, /*tp_dict*/
  0, /*tp_descr_get*/
  0, /*tp_descr_set*/
  0, /*tp_dictoffset*/
  0, /*tp_init*/
  0, /*tp_alloc*/
  __pyx_tp_new_4grpc_7_cython_6cygrpc__Tag, /*tp_new*/
  0, /*tp_free*/
  0, /*tp_is_gc*/
  0, /*tp_bases*/
  0, /*tp_mro*/
  0, /*tp_cache*/
  0, /*tp_subclasses*/
  0, /*tp_weaklist*/
  0, /*tp_del*/
  0, /*tp_version_tag*/
  #if PY_VERSION_HEX >= 0x030400a1
  0, /*tp_finalize*/
  #endif
  #if PY_VERSION_HEX >= 0x030800b1
  0, /*tp_vectorcall*/
  #endif
  #if PY_VERSION_HEX >= 0x030800b4 && PY_VERSION_HEX < 0x03090000
  0, /*tp_print*/
  #endif
};
static struct __pyx_vtabstruct_4grpc_7_cython_6cygrpc__ConnectivityTag __pyx_vtable_4grpc_7_cython_6cygrpc__ConnectivityTag;

static PyObject *__pyx_tp_new_4grpc_7_cython_6cygrpc__ConnectivityTag(PyTypeObject *t, PyObject *a, PyObject *k) {
  struct __pyx_obj_4grpc_7_cython_6cygrpc__ConnectivityTag *p;
  PyObject *o = __pyx_tp_new_4grpc_7_cython_6cygrpc__Tag(t, a, k);
  if (unlikely(!o)) return 0;
  p = ((struct __pyx_obj_4grpc_7_cython_6cygrpc__ConnectivityTag *)o);
  p->__pyx_base.__pyx_vtab = (struct __pyx_vtabstruct_4grpc_7_cython_6cygrpc__Tag*)__pyx_vtabptr_4grpc_7_cython_6cygrpc__ConnectivityTag;
  p->_user_tag = Py_None; Py_INCREF(Py_None);
  if (unlikely(__pyx_pw_4grpc_7_cython_6cygrpc_16_ConnectivityTag_1__cinit__(o, a, k) < 0)) goto bad;
  return o;
  bad:
  Py_DECREF(o); o = 0;
  return NULL;
}

static void __pyx_tp_dealloc_4grpc_7_cython_6cygrpc__ConnectivityTag(PyObject *o) {
  struct __pyx_obj_4grpc_7_cython_6cygrpc__ConnectivityTag *p = (struct __pyx_obj_4grpc_7_cython_6cygrpc__ConnectivityTag *)o;
  #if CYTHON_USE_TP_FINALIZE
  if (unlikely(PyType_HasFeature(Py_TYPE(o), Py_TPFLAGS_HAVE_FINALIZE) && Py_TYPE(o)->tp_finalize) && !_PyGC_FINALIZED(o)) {
    if (PyObject_CallFinalizerFromDealloc(o)) return;
  }
  #endif
  PyObject_GC_UnTrack(o);
  Py_CLEAR(p->_user_tag);
  #if CYTHON_USE_TYPE_SLOTS
  if (PyType_IS_GC(Py_TYPE(o)->tp_base))
  #endif
  PyObject_GC_Track(o);
  __pyx_tp_dealloc_4grpc_7_cython_6cygrpc__Tag(o);
}

static int __pyx_tp_traverse_4grpc_7_cython_6cygrpc__ConnectivityTag(PyObject *o, visitproc v, void *a) {
  int e;
  struct __pyx_obj_4grpc_7_cython_6cygrpc__ConnectivityTag *p = (struct __pyx_obj_4grpc_7_cython_6cygrpc__ConnectivityTag *)o;
  e = ((likely(__pyx_ptype_4grpc_7_cython_6cygrpc__Tag)) ? ((__pyx_ptype_4grpc_7_cython_6cygrpc__Tag->tp_traverse) ? __pyx_ptype_4grpc_7_cython_6cygrpc__Tag->tp_traverse(o, v, a) : 0) : __Pyx_call_next_tp_traverse(o, v, a, __pyx_tp_traverse_4grpc_7_cython_6cygrpc__ConnectivityTag)); if (e) return e;
  if (p->_user_tag) {
    e = (*v)(p->_user_tag, a); if (e) return e;
  }
  return 0;
}

static int __pyx_tp_clear_4grpc_7_cython_6cygrpc__ConnectivityTag(PyObject *o) {
  PyObject* tmp;
  struct __pyx_obj_4grpc_7_cython_6cygrpc__ConnectivityTag *p = (struct __pyx_obj_4grpc_7_cython_6cygrpc__ConnectivityTag *)o;
  if (likely(__pyx_ptype_4grpc_7_cython_6cygrpc__Tag)) { if (__pyx_ptype_4grpc_7_cython_6cygrpc__Tag->tp_clear) __pyx_ptype_4grpc_7_cython_6cygrpc__Tag->tp_clear(o); } else __Pyx_call_next_tp_clear(o, __pyx_tp_clear_4grpc_7_cython_6cygrpc__ConnectivityTag);
  tmp = ((PyObject*)p->_user_tag);
  p->_user_tag = Py_None; Py_INCREF(Py_None);
  Py_XDECREF(tmp);
  return 0;
}

static PyObject *__pyx_getprop_4grpc_7_cython_6cygrpc_16_ConnectivityTag__user_tag(PyObject *o, CYTHON_UNUSED void *x) {
  return __pyx_pw_4grpc_7_cython_6cygrpc_16_ConnectivityTag_9_user_tag_1__get__(o);
}

static PyMethodDef __pyx_methods_4grpc_7_cython_6cygrpc__ConnectivityTag[] = {
  {"__reduce_cython__", (PyCFunction)__pyx_pw_4grpc_7_cython_6cygrpc_16_ConnectivityTag_3__reduce_cython__, METH_NOARGS, 0},
  {"__setstate_cython__", (PyCFunction)__pyx_pw_4grpc_7_cython_6cygrpc_16_ConnectivityTag_5__setstate_cython__, METH_O, 0},
  {0, 0, 0, 0}
};

static struct PyGetSetDef __pyx_getsets_4grpc_7_cython_6cygrpc__ConnectivityTag[] = {
  {(char *)"_user_tag", __pyx_getprop_4grpc_7_cython_6cygrpc_16_ConnectivityTag__user_tag, 0, (char *)0, 0},
  {0, 0, 0, 0, 0}
};

static PyTypeObject __pyx_type_4grpc_7_cython_6cygrpc__ConnectivityTag = {
  PyVarObject_HEAD_INIT(0, 0)
  "grpc._cython.cygrpc._ConnectivityTag", /*tp_name*/
  sizeof(struct __pyx_obj_4grpc_7_cython_6cygrpc__ConnectivityTag), /*tp_basicsize*/
  0, /*tp_itemsize*/
  __pyx_tp_dealloc_4grpc_7_cython_6cygrpc__ConnectivityTag, /*tp_dealloc*/
  #if PY_VERSION_HEX < 0x030800b4
  0, /*tp_print*/
  #endif
  #if PY_VERSION_HEX >= 0x030800b4
  0, /*tp_vectorcall_offset*/
  #endif
  0, /*tp_getattr*/
  0, /*tp_setattr*/
  #if PY_MAJOR_VERSION < 3
  0, /*tp_compare*/
  #endif
  #if PY_MAJOR_VERSION >= 3
  0, /*tp_as_async*/
  #endif
  0, /*tp_repr*/
  0, /*tp_as_number*/
  0, /*tp_as_sequence*/
  0, /*tp_as_mapping*/
  0, /*tp_hash*/
  0, /*tp_call*/
  0, /*tp_str*/
  0, /*tp_getattro*/
  0, /*tp_setattro*/
  0, /*tp_as_buffer*/
  Py_TPFLAGS_DEFAULT|Py_TPFLAGS_HAVE_VERSION_TAG|Py_TPFLAGS_CHECKTYPES|Py_TPFLAGS_HAVE_NEWBUFFER|Py_TPFLAGS_BASETYPE|Py_TPFLAGS_HAVE_GC, /*tp_flags*/
  0, /*tp_doc*/
  __pyx_tp_traverse_4grpc_7_cython_6cygrpc__ConnectivityTag, /*tp_traverse*/
  __pyx_tp_clear_4grpc_7_cython_6cygrpc__ConnectivityTag, /*tp_clear*/
  0, /*tp_richcompare*/
  0, /*tp_weaklistoffset*/
  0, /*tp_iter*/
  0, /*tp_iternext*/
  __pyx_methods_4grpc_7_cython_6cygrpc__ConnectivityTag, /*tp_methods*/
  0, /*tp_members*/
  __pyx_getsets_4grpc_7_cython_6cygrpc__ConnectivityTag, /*tp_getset*/
  0, /*tp_base*/
  0, /*tp_dict*/
  0, /*tp_descr_get*/
  0, /*tp_descr_set*/
  0, /*tp_dictoffset*/
  0, /*tp_init*/
  0, /*tp_alloc*/
  __pyx_tp_new_4grpc_7_cython_6cygrpc__ConnectivityTag, /*tp_new*/
  0, /*tp_free*/
  0, /*tp_is_gc*/
  0, /*tp_bases*/
  0, /*tp_mro*/
  0, /*tp_cache*/
  0, /*tp_subclasses*/
  0, /*tp_weaklist*/
  0, /*tp_del*/
  0, /*tp_version_tag*/
  #if PY_VERSION_HEX >= 0x030400a1
  0, /*tp_finalize*/
  #endif
  #if PY_VERSION_HEX >= 0x030800b1
  0, /*tp_vectorcall*/
  #endif
  #if PY_VERSION_HEX >= 0x030800b4 && PY_VERSION_HEX < 0x03090000
  0, /*tp_print*/
  #endif
};
static struct __pyx_vtabstruct_4grpc_7_cython_6cygrpc__RequestCallTag __pyx_vtable_4grpc_7_cython_6cygrpc__RequestCallTag;

static PyObject *__pyx_tp_new_4grpc_7_cython_6cygrpc__RequestCallTag(PyTypeObject *t, PyObject *a, PyObject *k) {
  struct __pyx_obj_4grpc_7_cython_6cygrpc__RequestCallTag *p;
  PyObject *o = __pyx_tp_new_4grpc_7_cython_6cygrpc__Tag(t, a, k);
  if (unlikely(!o)) return 0;
  p = ((struct __pyx_obj_4grpc_7_cython_6cygrpc__RequestCallTag *)o);
  p->__pyx_base.__pyx_vtab = (struct __pyx_vtabstruct_4grpc_7_cython_6cygrpc__Tag*)__pyx_vtabptr_4grpc_7_cython_6cygrpc__RequestCallTag;
  p->_user_tag = Py_None; Py_INCREF(Py_None);
  p->call = ((struct __pyx_obj_4grpc_7_cython_6cygrpc_Call *)Py_None); Py_INCREF(Py_None);
  p->call_details = ((struct __pyx_obj_4grpc_7_cython_6cygrpc_CallDetails *)Py_None); Py_INCREF(Py_None);
  if (unlikely(__pyx_pw_4grpc_7_cython_6cygrpc_15_RequestCallTag_1__cinit__(o, a, k) < 0)) goto bad;
  return o;
  bad:
  Py_DECREF(o); o = 0;
  return NULL;
}

static void __pyx_tp_dealloc_4grpc_7_cython_6cygrpc__RequestCallTag(PyObject *o) {
  struct __pyx_obj_4grpc_7_cython_6cygrpc__RequestCallTag *p = (struct __pyx_obj_4grpc_7_cython_6cygrpc__RequestCallTag *)o;
  #if CYTHON_USE_TP_FINALIZE
  if (unlikely(PyType_HasFeature(Py_TYPE(o), Py_TPFLAGS_HAVE_FINALIZE) && Py_TYPE(o)->tp_finalize) && !_PyGC_FINALIZED(o)) {
    if (PyObject_CallFinalizerFromDealloc(o)) return;
  }
  #endif
  PyObject_GC_UnTrack(o);
  Py_CLEAR(p->_user_tag);
  Py_CLEAR(p->call);
  Py_CLEAR(p->call_details);
  #if CYTHON_USE_TYPE_SLOTS
  if (PyType_IS_GC(Py_TYPE(o)->tp_base))
  #endif
  PyObject_GC_Track(o);
  __pyx_tp_dealloc_4grpc_7_cython_6cygrpc__Tag(o);
}

static int __pyx_tp_traverse_4grpc_7_cython_6cygrpc__RequestCallTag(PyObject *o, visitproc v, void *a) {
  int e;
  struct __pyx_obj_4grpc_7_cython_6cygrpc__RequestCallTag *p = (struct __pyx_obj_4grpc_7_cython_6cygrpc__RequestCallTag *)o;
  e = ((likely(__pyx_ptype_4grpc_7_cython_6cygrpc__Tag)) ? ((__pyx_ptype_4grpc_7_cython_6cygrpc__Tag->tp_traverse) ? __pyx_ptype_4grpc_7_cython_6cygrpc__Tag->tp_traverse(o, v, a) : 0) : __Pyx_call_next_tp_traverse(o, v, a, __pyx_tp_traverse_4grpc_7_cython_6cygrpc__RequestCallTag)); if (e) return e;
  if (p->_user_tag) {
    e = (*v)(p->_user_tag, a); if (e) return e;
  }
  if (p->call) {
    e = (*v)(((PyObject *)p->call), a); if (e) return e;
  }
  if (p->call_details) {
    e = (*v)(((PyObject *)p->call_details), a); if (e) return e;
  }
  return 0;
}

static int __pyx_tp_clear_4grpc_7_cython_6cygrpc__RequestCallTag(PyObject *o) {
  PyObject* tmp;
  struct __pyx_obj_4grpc_7_cython_6cygrpc__RequestCallTag *p = (struct __pyx_obj_4grpc_7_cython_6cygrpc__RequestCallTag *)o;
  if (likely(__pyx_ptype_4grpc_7_cython_6cygrpc__Tag)) { if (__pyx_ptype_4grpc_7_cython_6cygrpc__Tag->tp_clear) __pyx_ptype_4grpc_7_cython_6cygrpc__Tag->tp_clear(o); } else __Pyx_call_next_tp_clear(o, __pyx_tp_clear_4grpc_7_cython_6cygrpc__RequestCallTag);
  tmp = ((PyObject*)p->_user_tag);
  p->_user_tag = Py_None; Py_INCREF(Py_None);
  Py_XDECREF(tmp);
  tmp = ((PyObject*)p->call);
  p->call = ((struct __pyx_obj_4grpc_7_cython_6cygrpc_Call *)Py_None); Py_INCREF(Py_None);
  Py_XDECREF(tmp);
  tmp = ((PyObject*)p->call_details);
  p->call_details = ((struct __pyx_obj_4grpc_7_cython_6cygrpc_CallDetails *)Py_None); Py_INCREF(Py_None);
  Py_XDECREF(tmp);
  return 0;
}

static PyObject *__pyx_getprop_4grpc_7_cython_6cygrpc_15_RequestCallTag__user_tag(PyObject *o, CYTHON_UNUSED void *x) {
  return __pyx_pw_4grpc_7_cython_6cygrpc_15_RequestCallTag_9_user_tag_1__get__(o);
}

static PyMethodDef __pyx_methods_4grpc_7_cython_6cygrpc__RequestCallTag[] = {
  {"__reduce_cython__", (PyCFunction)__pyx_pw_4grpc_7_cython_6cygrpc_15_RequestCallTag_3__reduce_cython__, METH_NOARGS, 0},
  {"__setstate_cython__", (PyCFunction)__pyx_pw_4grpc_7_cython_6cygrpc_15_RequestCallTag_5__setstate_cython__, METH_O, 0},
  {0, 0, 0, 0}
};

static struct PyGetSetDef __pyx_getsets_4grpc_7_cython_6cygrpc__RequestCallTag[] = {
  {(char *)"_user_tag", __pyx_getprop_4grpc_7_cython_6cygrpc_15_RequestCallTag__user_tag, 0, (char *)0, 0},
  {0, 0, 0, 0, 0}
};

static PyTypeObject __pyx_type_4grpc_7_cython_6cygrpc__RequestCallTag = {
  PyVarObject_HEAD_INIT(0, 0)
  "grpc._cython.cygrpc._RequestCallTag", /*tp_name*/
  sizeof(struct __pyx_obj_4grpc_7_cython_6cygrpc__RequestCallTag), /*tp_basicsize*/
  0, /*tp_itemsize*/
  __pyx_tp_dealloc_4grpc_7_cython_6cygrpc__RequestCallTag, /*tp_dealloc*/
  #if PY_VERSION_HEX < 0x030800b4
  0, /*tp_print*/
  #endif
  #if PY_VERSION_HEX >= 0x030800b4
  0, /*tp_vectorcall_offset*/
  #endif
  0, /*tp_getattr*/
  0, /*tp_setattr*/
  #if PY_MAJOR_VERSION < 3
  0, /*tp_compare*/
  #endif
  #if PY_MAJOR_VERSION >= 3
  0, /*tp_as_async*/
  #endif
  0, /*tp_repr*/
  0, /*tp_as_number*/
  0, /*tp_as_sequence*/
  0, /*tp_as_mapping*/
  0, /*tp_hash*/
  0, /*tp_call*/
  0, /*tp_str*/
  0, /*tp_getattro*/
  0, /*tp_setattro*/
  0, /*tp_as_buffer*/
  Py_TPFLAGS_DEFAULT|Py_TPFLAGS_HAVE_VERSION_TAG|Py_TPFLAGS_CHECKTYPES|Py_TPFLAGS_HAVE_NEWBUFFER|Py_TPFLAGS_BASETYPE|Py_TPFLAGS_HAVE_GC, /*tp_flags*/
  0, /*tp_doc*/
  __pyx_tp_traverse_4grpc_7_cython_6cygrpc__RequestCallTag, /*tp_traverse*/
  __pyx_tp_clear_4grpc_7_cython_6cygrpc__RequestCallTag, /*tp_clear*/
  0, /*tp_richcompare*/
  0, /*tp_weaklistoffset*/
  0, /*tp_iter*/
  0, /*tp_iternext*/
  __pyx_methods_4grpc_7_cython_6cygrpc__RequestCallTag, /*tp_methods*/
  0, /*tp_members*/
  __pyx_getsets_4grpc_7_cython_6cygrpc__RequestCallTag, /*tp_getset*/
  0, /*tp_base*/
  0, /*tp_dict*/
  0, /*tp_descr_get*/
  0, /*tp_descr_set*/
  0, /*tp_dictoffset*/
  0, /*tp_init*/
  0, /*tp_alloc*/
  __pyx_tp_new_4grpc_7_cython_6cygrpc__RequestCallTag, /*tp_new*/
  0, /*tp_free*/
  0, /*tp_is_gc*/
  0, /*tp_bases*/
  0, /*tp_mro*/
  0, /*tp_cache*/
  0, /*tp_subclasses*/
  0, /*tp_weaklist*/
  0, /*tp_del*/
  0, /*tp_version_tag*/
  #if PY_VERSION_HEX >= 0x030400a1
  0, /*tp_finalize*/
  #endif
  #if PY_VERSION_HEX >= 0x030800b1
  0, /*tp_vectorcall*/
  #endif
  #if PY_VERSION_HEX >= 0x030800b4 && PY_VERSION_HEX < 0x03090000
  0, /*tp_print*/
  #endif
};
static struct __pyx_vtabstruct_4grpc_7_cython_6cygrpc__BatchOperationTag __pyx_vtable_4grpc_7_cython_6cygrpc__BatchOperationTag;

static PyObject *__pyx_tp_new_4grpc_7_cython_6cygrpc__BatchOperationTag(PyTypeObject *t, PyObject *a, PyObject *k) {
  struct __pyx_obj_4grpc_7_cython_6cygrpc__BatchOperationTag *p;
  PyObject *o = __pyx_tp_new_4grpc_7_cython_6cygrpc__Tag(t, a, k);
  if (unlikely(!o)) return 0;
  p = ((struct __pyx_obj_4grpc_7_cython_6cygrpc__BatchOperationTag *)o);
  p->__pyx_base.__pyx_vtab = (struct __pyx_vtabstruct_4grpc_7_cython_6cygrpc__Tag*)__pyx_vtabptr_4grpc_7_cython_6cygrpc__BatchOperationTag;
  p->_user_tag = Py_None; Py_INCREF(Py_None);
  p->_operations = Py_None; Py_INCREF(Py_None);
  p->_retained_call = Py_None; Py_INCREF(Py_None);
  if (unlikely(__pyx_pw_4grpc_7_cython_6cygrpc_18_BatchOperationTag_1__cinit__(o, a, k) < 0)) goto bad;
  return o;
  bad:
  Py_DECREF(o); o = 0;
  return NULL;
}

static void __pyx_tp_dealloc_4grpc_7_cython_6cygrpc__BatchOperationTag(PyObject *o) {
  struct __pyx_obj_4grpc_7_cython_6cygrpc__BatchOperationTag *p = (struct __pyx_obj_4grpc_7_cython_6cygrpc__BatchOperationTag *)o;
  #if CYTHON_USE_TP_FINALIZE
  if (unlikely(PyType_HasFeature(Py_TYPE(o), Py_TPFLAGS_HAVE_FINALIZE) && Py_TYPE(o)->tp_finalize) && !_PyGC_FINALIZED(o)) {
    if (PyObject_CallFinalizerFromDealloc(o)) return;
  }
  #endif
  PyObject_GC_UnTrack(o);
  Py_CLEAR(p->_user_tag);
  Py_CLEAR(p->_operations);
  Py_CLEAR(p->_retained_call);
  #if CYTHON_USE_TYPE_SLOTS
  if (PyType_IS_GC(Py_TYPE(o)->tp_base))
  #endif
  PyObject_GC_Track(o);
  __pyx_tp_dealloc_4grpc_7_cython_6cygrpc__Tag(o);
}

static int __pyx_tp_traverse_4grpc_7_cython_6cygrpc__BatchOperationTag(PyObject *o, visitproc v, void *a) {
  int e;
  struct __pyx_obj_4grpc_7_cython_6cygrpc__BatchOperationTag *p = (struct __pyx_obj_4grpc_7_cython_6cygrpc__BatchOperationTag *)o;
  e = ((likely(__pyx_ptype_4grpc_7_cython_6cygrpc__Tag)) ? ((__pyx_ptype_4grpc_7_cython_6cygrpc__Tag->tp_traverse) ? __pyx_ptype_4grpc_7_cython_6cygrpc__Tag->tp_traverse(o, v, a) : 0) : __Pyx_call_next_tp_traverse(o, v, a, __pyx_tp_traverse_4grpc_7_cython_6cygrpc__BatchOperationTag)); if (e) return e;
  if (p->_user_tag) {
    e = (*v)(p->_user_tag, a); if (e) return e;
  }
  if (p->_operations) {
    e = (*v)(p->_operations, a); if (e) return e;
  }
  if (p->_retained_call) {
    e = (*v)(p->_retained_call, a); if (e) return e;
  }
  return 0;
}

static int __pyx_tp_clear_4grpc_7_cython_6cygrpc__BatchOperationTag(PyObject *o) {
  PyObject* tmp;
  struct __pyx_obj_4grpc_7_cython_6cygrpc__BatchOperationTag *p = (struct __pyx_obj_4grpc_7_cython_6cygrpc__BatchOperationTag *)o;
  if (likely(__pyx_ptype_4grpc_7_cython_6cygrpc__Tag)) { if (__pyx_ptype_4grpc_7_cython_6cygrpc__Tag->tp_clear) __pyx_ptype_4grpc_7_cython_6cygrpc__Tag->tp_clear(o); } else __Pyx_call_next_tp_clear(o, __pyx_tp_clear_4grpc_7_cython_6cygrpc__BatchOperationTag);
  tmp = ((PyObject*)p->_user_tag);
  p->_user_tag = Py_None; Py_INCREF(Py_None);
  Py_XDECREF(tmp);
  tmp = ((PyObject*)p->_operations);
  p->_operations = Py_None; Py_INCREF(Py_None);
  Py_XDECREF(tmp);
  tmp = ((PyObject*)p->_retained_call);
  p->_retained_call = Py_None; Py_INCREF(Py_None);
  Py_XDECREF(tmp);
  return 0;
}

static PyObject *__pyx_getprop_4grpc_7_cython_6cygrpc_18_BatchOperationTag__operations(PyObject *o, CYTHON_UNUSED void *x) {
  return __pyx_pw_4grpc_7_cython_6cygrpc_18_BatchOperationTag_11_operations_1__get__(o);
}

static PyObject *__pyx_getprop_4grpc_7_cython_6cygrpc_18_BatchOperationTag__retained_call(PyObject *o, CYTHON_UNUSED void *x) {
  return __pyx_pw_4grpc_7_cython_6cygrpc_18_BatchOperationTag_14_retained_call_1__get__(o);
}

static PyMethodDef __pyx_methods_4grpc_7_cython_6cygrpc__BatchOperationTag[] = {
  {"__reduce_cython__", (PyCFunction)__pyx_pw_4grpc_7_cython_6cygrpc_18_BatchOperationTag_3__reduce_cython__, METH_NOARGS, 0},
  {"__setstate_cython__", (PyCFunction)__pyx_pw_4grpc_7_cython_6cygrpc_18_BatchOperationTag_5__setstate_cython__, METH_O, 0},
  {0, 0, 0, 0}
};

static struct PyGetSetDef __pyx_getsets_4grpc_7_cython_6cygrpc__BatchOperationTag[] = {
  {(char *)"_operations", __pyx_getprop_4grpc_7_cython_6cygrpc_18_BatchOperationTag__operations, 0, (char *)0, 0},
  {(char *)"_retained_call", __pyx_getprop_4grpc_7_cython_6cygrpc_18_BatchOperationTag__retained_call, 0, (char *)0, 0},
  {0, 0, 0, 0, 0}
};

static PyTypeObject __pyx_type_4grpc_7_cython_6cygrpc__BatchOperationTag = {
  PyVarObject_HEAD_INIT(0, 0)
  "grpc._cython.cygrpc._BatchOperationTag", /*tp_name*/
  sizeof(struct __pyx_obj_4grpc_7_cython_6cygrpc__BatchOperationTag), /*tp_basicsize*/
  0, /*tp_itemsize*/
  __pyx_tp_dealloc_4grpc_7_cython_6cygrpc__BatchOperationTag, /*tp_dealloc*/
  #if PY_VERSION_HEX < 0x030800b4
  0, /*tp_print*/
  #endif
  #if PY_VERSION_HEX >= 0x030800b4
  0, /*tp_vectorcall_offset*/
  #endif
  0, /*tp_getattr*/
  0, /*tp_setattr*/
  #if PY_MAJOR_VERSION < 3
  0, /*tp_compare*/
  #endif
  #if PY_MAJOR_VERSION >= 3
  0, /*tp_as_async*/
  #endif
  0, /*tp_repr*/
  0, /*tp_as_number*/
  0, /*tp_as_sequence*/
  0, /*tp_as_mapping*/
  0, /*tp_hash*/
  0, /*tp_call*/
  0, /*tp_str*/
  0, /*tp_getattro*/
  0, /*tp_setattro*/
  0, /*tp_as_buffer*/
  Py_TPFLAGS_DEFAULT|Py_TPFLAGS_HAVE_VERSION_TAG|Py_TPFLAGS_CHECKTYPES|Py_TPFLAGS_HAVE_NEWBUFFER|Py_TPFLAGS_BASETYPE|Py_TPFLAGS_HAVE_GC, /*tp_flags*/
  0, /*tp_doc*/
  __pyx_tp_traverse_4grpc_7_cython_6cygrpc__BatchOperationTag, /*tp_traverse*/
  __pyx_tp_clear_4grpc_7_cython_6cygrpc__BatchOperationTag, /*tp_clear*/
  0, /*tp_richcompare*/
  0, /*tp_weaklistoffset*/
  0, /*tp_iter*/
  0, /*tp_iternext*/
  __pyx_methods_4grpc_7_cython_6cygrpc__BatchOperationTag, /*tp_methods*/
  0, /*tp_members*/
  __pyx_getsets_4grpc_7_cython_6cygrpc__BatchOperationTag, /*tp_getset*/
  0, /*tp_base*/
  0, /*tp_dict*/
  0, /*tp_descr_get*/
  0, /*tp_descr_set*/
  0, /*tp_dictoffset*/
  0, /*tp_init*/
  0, /*tp_alloc*/
  __pyx_tp_new_4grpc_7_cython_6cygrpc__BatchOperationTag, /*tp_new*/
  0, /*tp_free*/
  0, /*tp_is_gc*/
  0, /*tp_bases*/
  0, /*tp_mro*/
  0, /*tp_cache*/
  0, /*tp_subclasses*/
  0, /*tp_weaklist*/
  0, /*tp_del*/
  0, /*tp_version_tag*/
  #if PY_VERSION_HEX >= 0x030400a1
  0, /*tp_finalize*/
  #endif
  #if PY_VERSION_HEX >= 0x030800b1
  0, /*tp_vectorcall*/
  #endif
  #if PY_VERSION_HEX >= 0x030800b4 && PY_VERSION_HEX < 0x03090000
  0, /*tp_print*/
  #endif
};
static struct __pyx_vtabstruct_4grpc_7_cython_6cygrpc__ServerShutdownTag __pyx_vtable_4grpc_7_cython_6cygrpc__ServerShutdownTag;

static PyObject *__pyx_tp_new_4grpc_7_cython_6cygrpc__ServerShutdownTag(PyTypeObject *t, PyObject *a, PyObject *k) {
  struct __pyx_obj_4grpc_7_cython_6cygrpc__ServerShutdownTag *p;
  PyObject *o = __pyx_tp_new_4grpc_7_cython_6cygrpc__Tag(t, a, k);
  if (unlikely(!o)) return 0;
  p = ((struct __pyx_obj_4grpc_7_cython_6cygrpc__ServerShutdownTag *)o);
  p->__pyx_base.__pyx_vtab = (struct __pyx_vtabstruct_4grpc_7_cython_6cygrpc__Tag*)__pyx_vtabptr_4grpc_7_cython_6cygrpc__ServerShutdownTag;
  p->_user_tag = Py_None; Py_INCREF(Py_None);
  p->_shutting_down_server = ((struct __pyx_obj_4grpc_7_cython_6cygrpc_Server *)Py_None); Py_INCREF(Py_None);
  if (unlikely(__pyx_pw_4grpc_7_cython_6cygrpc_18_ServerShutdownTag_1__cinit__(o, a, k) < 0)) goto bad;
  return o;
  bad:
  Py_DECREF(o); o = 0;
  return NULL;
}

static void __pyx_tp_dealloc_4grpc_7_cython_6cygrpc__ServerShutdownTag(PyObject *o) {
  struct __pyx_obj_4grpc_7_cython_6cygrpc__ServerShutdownTag *p = (struct __pyx_obj_4grpc_7_cython_6cygrpc__ServerShutdownTag *)o;
  #if CYTHON_USE_TP_FINALIZE
  if (unlikely(PyType_HasFeature(Py_TYPE(o), Py_TPFLAGS_HAVE_FINALIZE) && Py_TYPE(o)->tp_finalize) && !_PyGC_FINALIZED(o)) {
    if (PyObject_CallFinalizerFromDealloc(o)) return;
  }
  #endif
  PyObject_GC_UnTrack(o);
  Py_CLEAR(p->_user_tag);
  Py_CLEAR(p->_shutting_down_server);
  #if CYTHON_USE_TYPE_SLOTS
  if (PyType_IS_GC(Py_TYPE(o)->tp_base))
  #endif
  PyObject_GC_Track(o);
  __pyx_tp_dealloc_4grpc_7_cython_6cygrpc__Tag(o);
}

static int __pyx_tp_traverse_4grpc_7_cython_6cygrpc__ServerShutdownTag(PyObject *o, visitproc v, void *a) {
  int e;
  struct __pyx_obj_4grpc_7_cython_6cygrpc__ServerShutdownTag *p = (struct __pyx_obj_4grpc_7_cython_6cygrpc__ServerShutdownTag *)o;
  e = ((likely(__pyx_ptype_4grpc_7_cython_6cygrpc__Tag)) ? ((__pyx_ptype_4grpc_7_cython_6cygrpc__Tag->tp_traverse) ? __pyx_ptype_4grpc_7_cython_6cygrpc__Tag->tp_traverse(o, v, a) : 0) : __Pyx_call_next_tp_traverse(o, v, a, __pyx_tp_traverse_4grpc_7_cython_6cygrpc__ServerShutdownTag)); if (e) return e;
  if (p->_user_tag) {
    e = (*v)(p->_user_tag, a); if (e) return e;
  }
  if (p->_shutting_down_server) {
    e = (*v)(((PyObject *)p->_shutting_down_server), a); if (e) return e;
  }
  return 0;
}

static int __pyx_tp_clear_4grpc_7_cython_6cygrpc__ServerShutdownTag(PyObject *o) {
  PyObject* tmp;
  struct __pyx_obj_4grpc_7_cython_6cygrpc__ServerShutdownTag *p = (struct __pyx_obj_4grpc_7_cython_6cygrpc__ServerShutdownTag *)o;
  if (likely(__pyx_ptype_4grpc_7_cython_6cygrpc__Tag)) { if (__pyx_ptype_4grpc_7_cython_6cygrpc__Tag->tp_clear) __pyx_ptype_4grpc_7_cython_6cygrpc__Tag->tp_clear(o); } else __Pyx_call_next_tp_clear(o, __pyx_tp_clear_4grpc_7_cython_6cygrpc__ServerShutdownTag);
  tmp = ((PyObject*)p->_user_tag);
  p->_user_tag = Py_None; Py_INCREF(Py_None);
  Py_XDECREF(tmp);
  tmp = ((PyObject*)p->_shutting_down_server);
  p->_shutting_down_server = ((struct __pyx_obj_4grpc_7_cython_6cygrpc_Server *)Py_None); Py_INCREF(Py_None);
  Py_XDECREF(tmp);
  return 0;
}

static PyObject *__pyx_getprop_4grpc_7_cython_6cygrpc_18_ServerShutdownTag__user_tag(PyObject *o, CYTHON_UNUSED void *x) {
  return __pyx_pw_4grpc_7_cython_6cygrpc_18_ServerShutdownTag_9_user_tag_1__get__(o);
}

static PyObject *__pyx_getprop_4grpc_7_cython_6cygrpc_18_ServerShutdownTag__shutting_down_server(PyObject *o, CYTHON_UNUSED void *x) {
  return __pyx_pw_4grpc_7_cython_6cygrpc_18_ServerShutdownTag_21_shutting_down_server_1__get__(o);
}

static PyMethodDef __pyx_methods_4grpc_7_cython_6cygrpc__ServerShutdownTag[] = {
  {"__reduce_cython__", (PyCFunction)__pyx_pw_4grpc_7_cython_6cygrpc_18_ServerShutdownTag_3__reduce_cython__, METH_NOARGS, 0},
  {"__setstate_cython__", (PyCFunction)__pyx_pw_4grpc_7_cython_6cygrpc_18_ServerShutdownTag_5__setstate_cython__, METH_O, 0},
  {0, 0, 0, 0}
};

static struct PyGetSetDef __pyx_getsets_4grpc_7_cython_6cygrpc__ServerShutdownTag[] = {
  {(char *)"_user_tag", __pyx_getprop_4grpc_7_cython_6cygrpc_18_ServerShutdownTag__user_tag, 0, (char *)0, 0},
  {(char *)"_shutting_down_server", __pyx_getprop_4grpc_7_cython_6cygrpc_18_ServerShutdownTag__shutting_down_server, 0, (char *)0, 0},
  {0, 0, 0, 0, 0}
};

static PyTypeObject __pyx_type_4grpc_7_cython_6cygrpc__ServerShutdownTag = {
  PyVarObject_HEAD_INIT(0, 0)
  "grpc._cython.cygrpc._ServerShutdownTag", /*tp_name*/
  sizeof(struct __pyx_obj_4grpc_7_cython_6cygrpc__ServerShutdownTag), /*tp_basicsize*/
  0, /*tp_itemsize*/
  __pyx_tp_dealloc_4grpc_7_cython_6cygrpc__ServerShutdownTag, /*tp_dealloc*/
  #if PY_VERSION_HEX < 0x030800b4
  0, /*tp_print*/
  #endif
  #if PY_VERSION_HEX >= 0x030800b4
  0, /*tp_vectorcall_offset*/
  #endif
  0, /*tp_getattr*/
  0, /*tp_setattr*/
  #if PY_MAJOR_VERSION < 3
  0, /*tp_compare*/
  #endif
  #if PY_MAJOR_VERSION >= 3
  0, /*tp_as_async*/
  #endif
  0, /*tp_repr*/
  0, /*tp_as_number*/
  0, /*tp_as_sequence*/
  0, /*tp_as_mapping*/
  0, /*tp_hash*/
  0, /*tp_call*/
  0, /*tp_str*/
  0, /*tp_getattro*/
  0, /*tp_setattro*/
  0, /*tp_as_buffer*/
  Py_TPFLAGS_DEFAULT|Py_TPFLAGS_HAVE_VERSION_TAG|Py_TPFLAGS_CHECKTYPES|Py_TPFLAGS_HAVE_NEWBUFFER|Py_TPFLAGS_BASETYPE|Py_TPFLAGS_HAVE_GC, /*tp_flags*/
  0, /*tp_doc*/
  __pyx_tp_traverse_4grpc_7_cython_6cygrpc__ServerShutdownTag, /*tp_traverse*/
  __pyx_tp_clear_4grpc_7_cython_6cygrpc__ServerShutdownTag, /*tp_clear*/
  0, /*tp_richcompare*/
  0, /*tp_weaklistoffset*/
  0, /*tp_iter*/
  0, /*tp_iternext*/
  __pyx_methods_4grpc_7_cython_6cygrpc__ServerShutdownTag, /*tp_methods*/
  0, /*tp_members*/
  __pyx_getsets_4grpc_7_cython_6cygrpc__ServerShutdownTag, /*tp_getset*/
  0, /*tp_base*/
  0, /*tp_dict*/
  0, /*tp_descr_get*/
  0, /*tp_descr_set*/
  0, /*tp_dictoffset*/
  0, /*tp_init*/
  0, /*tp_alloc*/
  __pyx_tp_new_4grpc_7_cython_6cygrpc__ServerShutdownTag, /*tp_new*/
  0, /*tp_free*/
  0, /*tp_is_gc*/
  0, /*tp_bases*/
  0, /*tp_mro*/
  0, /*tp_cache*/
  0, /*tp_subclasses*/
  0, /*tp_weaklist*/
  0, /*tp_del*/
  0, /*tp_version_tag*/
  #if PY_VERSION_HEX >= 0x030400a1
  0, /*tp_finalize*/
  #endif
  #if PY_VERSION_HEX >= 0x030800b1
  0, /*tp_vectorcall*/
  #endif
  #if PY_VERSION_HEX >= 0x030800b4 && PY_VERSION_HEX < 0x03090000
  0, /*tp_print*/
  #endif
};

static PyObject *__pyx_tp_new_4grpc_7_cython_6cygrpc_TimerWrapper(PyTypeObject *t, PyObject *a, PyObject *k) {
  struct __pyx_obj_4grpc_7_cython_6cygrpc_TimerWrapper *p;
  PyObject *o;
  if (likely((t->tp_flags & Py_TPFLAGS_IS_ABSTRACT) == 0)) {
    o = (*t->tp_alloc)(t, 0);
  } else {
    o = (PyObject *) PyBaseObject_Type.tp_new(t, __pyx_empty_tuple, 0);
  }
  if (unlikely(!o)) return 0;
  p = ((struct __pyx_obj_4grpc_7_cython_6cygrpc_TimerWrapper *)o);
  p->timer = Py_None; Py_INCREF(Py_None);
  p->event = Py_None; Py_INCREF(Py_None);
  if (unlikely(__pyx_pw_4grpc_7_cython_6cygrpc_12TimerWrapper_1__cinit__(o, a, k) < 0)) goto bad;
  return o;
  bad:
  Py_DECREF(o); o = 0;
  return NULL;
}

static void __pyx_tp_dealloc_4grpc_7_cython_6cygrpc_TimerWrapper(PyObject *o) {
  struct __pyx_obj_4grpc_7_cython_6cygrpc_TimerWrapper *p = (struct __pyx_obj_4grpc_7_cython_6cygrpc_TimerWrapper *)o;
  #if CYTHON_USE_TP_FINALIZE
  if (unlikely(PyType_HasFeature(Py_TYPE(o), Py_TPFLAGS_HAVE_FINALIZE) && Py_TYPE(o)->tp_finalize) && !_PyGC_FINALIZED(o)) {
    if (PyObject_CallFinalizerFromDealloc(o)) return;
  }
  #endif
  PyObject_GC_UnTrack(o);
  {
    PyObject *etype, *eval, *etb;
    PyErr_Fetch(&etype, &eval, &etb);
    __Pyx_SET_REFCNT(o, Py_REFCNT(o) + 1);
    __pyx_pw_4grpc_7_cython_6cygrpc_12TimerWrapper_9__dealloc__(o);
    __Pyx_SET_REFCNT(o, Py_REFCNT(o) - 1);
    PyErr_Restore(etype, eval, etb);
  }
  Py_CLEAR(p->timer);
  Py_CLEAR(p->event);
  (*Py_TYPE(o)->tp_free)(o);
}

static int __pyx_tp_traverse_4grpc_7_cython_6cygrpc_TimerWrapper(PyObject *o, visitproc v, void *a) {
  int e;
  struct __pyx_obj_4grpc_7_cython_6cygrpc_TimerWrapper *p = (struct __pyx_obj_4grpc_7_cython_6cygrpc_TimerWrapper *)o;
  if (p->timer) {
    e = (*v)(p->timer, a); if (e) return e;
  }
  if (p->event) {
    e = (*v)(p->event, a); if (e) return e;
  }
  return 0;
}

static int __pyx_tp_clear_4grpc_7_cython_6cygrpc_TimerWrapper(PyObject *o) {
  PyObject* tmp;
  struct __pyx_obj_4grpc_7_cython_6cygrpc_TimerWrapper *p = (struct __pyx_obj_4grpc_7_cython_6cygrpc_TimerWrapper *)o;
  tmp = ((PyObject*)p->timer);
  p->timer = Py_None; Py_INCREF(Py_None);
  Py_XDECREF(tmp);
  tmp = ((PyObject*)p->event);
  p->event = Py_None; Py_INCREF(Py_None);
  Py_XDECREF(tmp);
  return 0;
}

static PyMethodDef __pyx_methods_4grpc_7_cython_6cygrpc_TimerWrapper[] = {
  {"start", (PyCFunction)__pyx_pw_4grpc_7_cython_6cygrpc_12TimerWrapper_3start, METH_NOARGS, 0},
  {"on_finish", (PyCFunction)__pyx_pw_4grpc_7_cython_6cygrpc_12TimerWrapper_5on_finish, METH_NOARGS, 0},
  {"stop", (PyCFunction)__pyx_pw_4grpc_7_cython_6cygrpc_12TimerWrapper_7stop, METH_NOARGS, 0},
  {"__reduce_cython__", (PyCFunction)__pyx_pw_4grpc_7_cython_6cygrpc_12TimerWrapper_11__reduce_cython__, METH_NOARGS, 0},
  {"__setstate_cython__", (PyCFunction)__pyx_pw_4grpc_7_cython_6cygrpc_12TimerWrapper_13__setstate_cython__, METH_O, 0},
  {0, 0, 0, 0}
};

static PyTypeObject __pyx_type_4grpc_7_cython_6cygrpc_TimerWrapper = {
  PyVarObject_HEAD_INIT(0, 0)
  "grpc._cython.cygrpc.TimerWrapper", /*tp_name*/
  sizeof(struct __pyx_obj_4grpc_7_cython_6cygrpc_TimerWrapper), /*tp_basicsize*/
  0, /*tp_itemsize*/
  __pyx_tp_dealloc_4grpc_7_cython_6cygrpc_TimerWrapper, /*tp_dealloc*/
  #if PY_VERSION_HEX < 0x030800b4
  0, /*tp_print*/
  #endif
  #if PY_VERSION_HEX >= 0x030800b4
  0, /*tp_vectorcall_offset*/
  #endif
  0, /*tp_getattr*/
  0, /*tp_setattr*/
  #if PY_MAJOR_VERSION < 3
  0, /*tp_compare*/
  #endif
  #if PY_MAJOR_VERSION >= 3
  0, /*tp_as_async*/
  #endif
  0, /*tp_repr*/
  0, /*tp_as_number*/
  0, /*tp_as_sequence*/
  0, /*tp_as_mapping*/
  0, /*tp_hash*/
  0, /*tp_call*/
  0, /*tp_str*/
  0, /*tp_getattro*/
  0, /*tp_setattro*/
  0, /*tp_as_buffer*/
  Py_TPFLAGS_DEFAULT|Py_TPFLAGS_HAVE_VERSION_TAG|Py_TPFLAGS_CHECKTYPES|Py_TPFLAGS_HAVE_NEWBUFFER|Py_TPFLAGS_BASETYPE|Py_TPFLAGS_HAVE_GC, /*tp_flags*/
  0, /*tp_doc*/
  __pyx_tp_traverse_4grpc_7_cython_6cygrpc_TimerWrapper, /*tp_traverse*/
  __pyx_tp_clear_4grpc_7_cython_6cygrpc_TimerWrapper, /*tp_clear*/
  0, /*tp_richcompare*/
  0, /*tp_weaklistoffset*/
  0, /*tp_iter*/
  0, /*tp_iternext*/
  __pyx_methods_4grpc_7_cython_6cygrpc_TimerWrapper, /*tp_methods*/
  0, /*tp_members*/
  0, /*tp_getset*/
  0, /*tp_base*/
  0, /*tp_dict*/
  0, /*tp_descr_get*/
  0, /*tp_descr_set*/
  0, /*tp_dictoffset*/
  0, /*tp_init*/
  0, /*tp_alloc*/
  __pyx_tp_new_4grpc_7_cython_6cygrpc_TimerWrapper, /*tp_new*/
  0, /*tp_free*/
  0, /*tp_is_gc*/
  0, /*tp_bases*/
  0, /*tp_mro*/
  0, /*tp_cache*/
  0, /*tp_subclasses*/
  0, /*tp_weaklist*/
  0, /*tp_del*/
  0, /*tp_version_tag*/
  #if PY_VERSION_HEX >= 0x030400a1
  0, /*tp_finalize*/
  #endif
  #if PY_VERSION_HEX >= 0x030800b1
  0, /*tp_vectorcall*/
  #endif
  #if PY_VERSION_HEX >= 0x030800b4 && PY_VERSION_HEX < 0x03090000
  0, /*tp_print*/
  #endif
};

static PyObject *__pyx_tp_new_4grpc_7_cython_6cygrpc_SocketWrapper(PyTypeObject *t, CYTHON_UNUSED PyObject *a, CYTHON_UNUSED PyObject *k) {
  struct __pyx_obj_4grpc_7_cython_6cygrpc_SocketWrapper *p;
  PyObject *o;
  if (likely((t->tp_flags & Py_TPFLAGS_IS_ABSTRACT) == 0)) {
    o = (*t->tp_alloc)(t, 0);
  } else {
    o = (PyObject *) PyBaseObject_Type.tp_new(t, __pyx_empty_tuple, 0);
  }
  if (unlikely(!o)) return 0;
  p = ((struct __pyx_obj_4grpc_7_cython_6cygrpc_SocketWrapper *)o);
  p->sockopts = Py_None; Py_INCREF(Py_None);
  p->socket = Py_None; Py_INCREF(Py_None);
  p->closed = Py_None; Py_INCREF(Py_None);
  if (unlikely(__pyx_pw_4grpc_7_cython_6cygrpc_13SocketWrapper_1__cinit__(o, __pyx_empty_tuple, NULL) < 0)) goto bad;
  return o;
  bad:
  Py_DECREF(o); o = 0;
  return NULL;
}

static void __pyx_tp_dealloc_4grpc_7_cython_6cygrpc_SocketWrapper(PyObject *o) {
  struct __pyx_obj_4grpc_7_cython_6cygrpc_SocketWrapper *p = (struct __pyx_obj_4grpc_7_cython_6cygrpc_SocketWrapper *)o;
  #if CYTHON_USE_TP_FINALIZE
  if (unlikely(PyType_HasFeature(Py_TYPE(o), Py_TPFLAGS_HAVE_FINALIZE) && Py_TYPE(o)->tp_finalize) && !_PyGC_FINALIZED(o)) {
    if (PyObject_CallFinalizerFromDealloc(o)) return;
  }
  #endif
  PyObject_GC_UnTrack(o);
  {
    PyObject *etype, *eval, *etb;
    PyErr_Fetch(&etype, &eval, &etb);
    __Pyx_SET_REFCNT(o, Py_REFCNT(o) + 1);
    __pyx_pw_4grpc_7_cython_6cygrpc_13SocketWrapper_3__dealloc__(o);
    __Pyx_SET_REFCNT(o, Py_REFCNT(o) - 1);
    PyErr_Restore(etype, eval, etb);
  }
  Py_CLEAR(p->sockopts);
  Py_CLEAR(p->socket);
  Py_CLEAR(p->closed);
  (*Py_TYPE(o)->tp_free)(o);
}

static int __pyx_tp_traverse_4grpc_7_cython_6cygrpc_SocketWrapper(PyObject *o, visitproc v, void *a) {
  int e;
  struct __pyx_obj_4grpc_7_cython_6cygrpc_SocketWrapper *p = (struct __pyx_obj_4grpc_7_cython_6cygrpc_SocketWrapper *)o;
  if (p->sockopts) {
    e = (*v)(p->sockopts, a); if (e) return e;
  }
  if (p->socket) {
    e = (*v)(p->socket, a); if (e) return e;
  }
  if (p->closed) {
    e = (*v)(p->closed, a); if (e) return e;
  }
  return 0;
}

static int __pyx_tp_clear_4grpc_7_cython_6cygrpc_SocketWrapper(PyObject *o) {
  PyObject* tmp;
  struct __pyx_obj_4grpc_7_cython_6cygrpc_SocketWrapper *p = (struct __pyx_obj_4grpc_7_cython_6cygrpc_SocketWrapper *)o;
  tmp = ((PyObject*)p->sockopts);
  p->sockopts = Py_None; Py_INCREF(Py_None);
  Py_XDECREF(tmp);
  tmp = ((PyObject*)p->socket);
  p->socket = Py_None; Py_INCREF(Py_None);
  Py_XDECREF(tmp);
  tmp = ((PyObject*)p->closed);
  p->closed = Py_None; Py_INCREF(Py_None);
  Py_XDECREF(tmp);
  return 0;
}

static PyMethodDef __pyx_methods_4grpc_7_cython_6cygrpc_SocketWrapper[] = {
  {"__reduce_cython__", (PyCFunction)__pyx_pw_4grpc_7_cython_6cygrpc_13SocketWrapper_5__reduce_cython__, METH_NOARGS, 0},
  {"__setstate_cython__", (PyCFunction)__pyx_pw_4grpc_7_cython_6cygrpc_13SocketWrapper_7__setstate_cython__, METH_O, 0},
  {0, 0, 0, 0}
};

static PyTypeObject __pyx_type_4grpc_7_cython_6cygrpc_SocketWrapper = {
  PyVarObject_HEAD_INIT(0, 0)
  "grpc._cython.cygrpc.SocketWrapper", /*tp_name*/
  sizeof(struct __pyx_obj_4grpc_7_cython_6cygrpc_SocketWrapper), /*tp_basicsize*/
  0, /*tp_itemsize*/
  __pyx_tp_dealloc_4grpc_7_cython_6cygrpc_SocketWrapper, /*tp_dealloc*/
  #if PY_VERSION_HEX < 0x030800b4
  0, /*tp_print*/
  #endif
  #if PY_VERSION_HEX >= 0x030800b4
  0, /*tp_vectorcall_offset*/
  #endif
  0, /*tp_getattr*/
  0, /*tp_setattr*/
  #if PY_MAJOR_VERSION < 3
  0, /*tp_compare*/
  #endif
  #if PY_MAJOR_VERSION >= 3
  0, /*tp_as_async*/
  #endif
  0, /*tp_repr*/
  0, /*tp_as_number*/
  0, /*tp_as_sequence*/
  0, /*tp_as_mapping*/
  0, /*tp_hash*/
  0, /*tp_call*/
  0, /*tp_str*/
  0, /*tp_getattro*/
  0, /*tp_setattro*/
  0, /*tp_as_buffer*/
  Py_TPFLAGS_DEFAULT|Py_TPFLAGS_HAVE_VERSION_TAG|Py_TPFLAGS_CHECKTYPES|Py_TPFLAGS_HAVE_NEWBUFFER|Py_TPFLAGS_BASETYPE|Py_TPFLAGS_HAVE_GC, /*tp_flags*/
  0, /*tp_doc*/
  __pyx_tp_traverse_4grpc_7_cython_6cygrpc_SocketWrapper, /*tp_traverse*/
  __pyx_tp_clear_4grpc_7_cython_6cygrpc_SocketWrapper, /*tp_clear*/
  0, /*tp_richcompare*/
  0, /*tp_weaklistoffset*/
  0, /*tp_iter*/
  0, /*tp_iternext*/
  __pyx_methods_4grpc_7_cython_6cygrpc_SocketWrapper, /*tp_methods*/
  0, /*tp_members*/
  0, /*tp_getset*/
  0, /*tp_base*/
  0, /*tp_dict*/
  0, /*tp_descr_get*/
  0, /*tp_descr_set*/
  0, /*tp_dictoffset*/
  0, /*tp_init*/
  0, /*tp_alloc*/
  __pyx_tp_new_4grpc_7_cython_6cygrpc_SocketWrapper, /*tp_new*/
  0, /*tp_free*/
  0, /*tp_is_gc*/
  0, /*tp_bases*/
  0, /*tp_mro*/
  0, /*tp_cache*/
  0, /*tp_subclasses*/
  0, /*tp_weaklist*/
  0, /*tp_del*/
  0, /*tp_version_tag*/
  #if PY_VERSION_HEX >= 0x030400a1
  0, /*tp_finalize*/
  #endif
  #if PY_VERSION_HEX >= 0x030800b1
  0, /*tp_vectorcall*/
  #endif
  #if PY_VERSION_HEX >= 0x030800b4 && PY_VERSION_HEX < 0x03090000
  0, /*tp_print*/
  #endif
};

static PyObject *__pyx_tp_new_4grpc_7_cython_6cygrpc_ResolveWrapper(PyTypeObject *t, CYTHON_UNUSED PyObject *a, CYTHON_UNUSED PyObject *k) {
  PyObject *o;
  if (likely((t->tp_flags & Py_TPFLAGS_IS_ABSTRACT) == 0)) {
    o = (*t->tp_alloc)(t, 0);
  } else {
    o = (PyObject *) PyBaseObject_Type.tp_new(t, __pyx_empty_tuple, 0);
  }
  if (unlikely(!o)) return 0;
  if (unlikely(__pyx_pw_4grpc_7_cython_6cygrpc_14ResolveWrapper_1__cinit__(o, __pyx_empty_tuple, NULL) < 0)) goto bad;
  return o;
  bad:
  Py_DECREF(o); o = 0;
  return NULL;
}

static void __pyx_tp_dealloc_4grpc_7_cython_6cygrpc_ResolveWrapper(PyObject *o) {
  #if CYTHON_USE_TP_FINALIZE
  if (unlikely(PyType_HasFeature(Py_TYPE(o), Py_TPFLAGS_HAVE_FINALIZE) && Py_TYPE(o)->tp_finalize) && (!PyType_IS_GC(Py_TYPE(o)) || !_PyGC_FINALIZED(o))) {
    if (PyObject_CallFinalizerFromDealloc(o)) return;
  }
  #endif
  {
    PyObject *etype, *eval, *etb;
    PyErr_Fetch(&etype, &eval, &etb);
    __Pyx_SET_REFCNT(o, Py_REFCNT(o) + 1);
    __pyx_pw_4grpc_7_cython_6cygrpc_14ResolveWrapper_3__dealloc__(o);
    __Pyx_SET_REFCNT(o, Py_REFCNT(o) - 1);
    PyErr_Restore(etype, eval, etb);
  }
  (*Py_TYPE(o)->tp_free)(o);
}

static PyMethodDef __pyx_methods_4grpc_7_cython_6cygrpc_ResolveWrapper[] = {
  {"__reduce_cython__", (PyCFunction)__pyx_pw_4grpc_7_cython_6cygrpc_14ResolveWrapper_5__reduce_cython__, METH_NOARGS, 0},
  {"__setstate_cython__", (PyCFunction)__pyx_pw_4grpc_7_cython_6cygrpc_14ResolveWrapper_7__setstate_cython__, METH_O, 0},
  {0, 0, 0, 0}
};

static PyTypeObject __pyx_type_4grpc_7_cython_6cygrpc_ResolveWrapper = {
  PyVarObject_HEAD_INIT(0, 0)
  "grpc._cython.cygrpc.ResolveWrapper", /*tp_name*/
  sizeof(struct __pyx_obj_4grpc_7_cython_6cygrpc_ResolveWrapper), /*tp_basicsize*/
  0, /*tp_itemsize*/
  __pyx_tp_dealloc_4grpc_7_cython_6cygrpc_ResolveWrapper, /*tp_dealloc*/
  #if PY_VERSION_HEX < 0x030800b4
  0, /*tp_print*/
  #endif
  #if PY_VERSION_HEX >= 0x030800b4
  0, /*tp_vectorcall_offset*/
  #endif
  0, /*tp_getattr*/
  0, /*tp_setattr*/
  #if PY_MAJOR_VERSION < 3
  0, /*tp_compare*/
  #endif
  #if PY_MAJOR_VERSION >= 3
  0, /*tp_as_async*/
  #endif
  0, /*tp_repr*/
  0, /*tp_as_number*/
  0, /*tp_as_sequence*/
  0, /*tp_as_mapping*/
  0, /*tp_hash*/
  0, /*tp_call*/
  0, /*tp_str*/
  0, /*tp_getattro*/
  0, /*tp_setattro*/
  0, /*tp_as_buffer*/
  Py_TPFLAGS_DEFAULT|Py_TPFLAGS_HAVE_VERSION_TAG|Py_TPFLAGS_CHECKTYPES|Py_TPFLAGS_HAVE_NEWBUFFER|Py_TPFLAGS_BASETYPE, /*tp_flags*/
  0, /*tp_doc*/
  0, /*tp_traverse*/
  0, /*tp_clear*/
  0, /*tp_richcompare*/
  0, /*tp_weaklistoffset*/
  0, /*tp_iter*/
  0, /*tp_iternext*/
  __pyx_methods_4grpc_7_cython_6cygrpc_ResolveWrapper, /*tp_methods*/
  0, /*tp_members*/
  0, /*tp_getset*/
  0, /*tp_base*/
  0, /*tp_dict*/
  0, /*tp_descr_get*/
  0, /*tp_descr_set*/
  0, /*tp_dictoffset*/
  0, /*tp_init*/
  0, /*tp_alloc*/
  __pyx_tp_new_4grpc_7_cython_6cygrpc_ResolveWrapper, /*tp_new*/
  0, /*tp_free*/
  0, /*tp_is_gc*/
  0, /*tp_bases*/
  0, /*tp_mro*/
  0, /*tp_cache*/
  0, /*tp_subclasses*/
  0, /*tp_weaklist*/
  0, /*tp_del*/
  0, /*tp_version_tag*/
  #if PY_VERSION_HEX >= 0x030400a1
  0, /*tp_finalize*/
  #endif
  #if PY_VERSION_HEX >= 0x030800b1
  0, /*tp_vectorcall*/
  #endif
  #if PY_VERSION_HEX >= 0x030800b4 && PY_VERSION_HEX < 0x03090000
  0, /*tp_print*/
  #endif
};
static struct __pyx_vtabstruct_4grpc_7_cython_6cygrpc_BaseCompletionQueue __pyx_vtable_4grpc_7_cython_6cygrpc_BaseCompletionQueue;

static PyObject *__pyx_tp_new_4grpc_7_cython_6cygrpc_BaseCompletionQueue(PyTypeObject *t, CYTHON_UNUSED PyObject *a, CYTHON_UNUSED PyObject *k) {
  struct __pyx_obj_4grpc_7_cython_6cygrpc_BaseCompletionQueue *p;
  PyObject *o;
  if (likely((t->tp_flags & Py_TPFLAGS_IS_ABSTRACT) == 0)) {
    o = (*t->tp_alloc)(t, 0);
  } else {
    o = (PyObject *) PyBaseObject_Type.tp_new(t, __pyx_empty_tuple, 0);
  }
  if (unlikely(!o)) return 0;
  p = ((struct __pyx_obj_4grpc_7_cython_6cygrpc_BaseCompletionQueue *)o);
  p->__pyx_vtab = __pyx_vtabptr_4grpc_7_cython_6cygrpc_BaseCompletionQueue;
  return o;
}

static void __pyx_tp_dealloc_4grpc_7_cython_6cygrpc_BaseCompletionQueue(PyObject *o) {
  #if CYTHON_USE_TP_FINALIZE
  if (unlikely(PyType_HasFeature(Py_TYPE(o), Py_TPFLAGS_HAVE_FINALIZE) && Py_TYPE(o)->tp_finalize) && (!PyType_IS_GC(Py_TYPE(o)) || !_PyGC_FINALIZED(o))) {
    if (PyObject_CallFinalizerFromDealloc(o)) return;
  }
  #endif
  (*Py_TYPE(o)->tp_free)(o);
}

static PyMethodDef __pyx_methods_4grpc_7_cython_6cygrpc_BaseCompletionQueue[] = {
  {"__reduce_cython__", (PyCFunction)__pyx_pw_4grpc_7_cython_6cygrpc_19BaseCompletionQueue_1__reduce_cython__, METH_NOARGS, 0},
  {"__setstate_cython__", (PyCFunction)__pyx_pw_4grpc_7_cython_6cygrpc_19BaseCompletionQueue_3__setstate_cython__, METH_O, 0},
  {0, 0, 0, 0}
};

static PyTypeObject __pyx_type_4grpc_7_cython_6cygrpc_BaseCompletionQueue = {
  PyVarObject_HEAD_INIT(0, 0)
  "grpc._cython.cygrpc.BaseCompletionQueue", /*tp_name*/
  sizeof(struct __pyx_obj_4grpc_7_cython_6cygrpc_BaseCompletionQueue), /*tp_basicsize*/
  0, /*tp_itemsize*/
  __pyx_tp_dealloc_4grpc_7_cython_6cygrpc_BaseCompletionQueue, /*tp_dealloc*/
  #if PY_VERSION_HEX < 0x030800b4
  0, /*tp_print*/
  #endif
  #if PY_VERSION_HEX >= 0x030800b4
  0, /*tp_vectorcall_offset*/
  #endif
  0, /*tp_getattr*/
  0, /*tp_setattr*/
  #if PY_MAJOR_VERSION < 3
  0, /*tp_compare*/
  #endif
  #if PY_MAJOR_VERSION >= 3
  0, /*tp_as_async*/
  #endif
  0, /*tp_repr*/
  0, /*tp_as_number*/
  0, /*tp_as_sequence*/
  0, /*tp_as_mapping*/
  0, /*tp_hash*/
  0, /*tp_call*/
  0, /*tp_str*/
  0, /*tp_getattro*/
  0, /*tp_setattro*/
  0, /*tp_as_buffer*/
  Py_TPFLAGS_DEFAULT|Py_TPFLAGS_HAVE_VERSION_TAG|Py_TPFLAGS_CHECKTYPES|Py_TPFLAGS_HAVE_NEWBUFFER|Py_TPFLAGS_BASETYPE, /*tp_flags*/
  0, /*tp_doc*/
  0, /*tp_traverse*/
  0, /*tp_clear*/
  0, /*tp_richcompare*/
  0, /*tp_weaklistoffset*/
  0, /*tp_iter*/
  0, /*tp_iternext*/
  __pyx_methods_4grpc_7_cython_6cygrpc_BaseCompletionQueue, /*tp_methods*/
  0, /*tp_members*/
  0, /*tp_getset*/
  0, /*tp_base*/
  0, /*tp_dict*/
  0, /*tp_descr_get*/
  0, /*tp_descr_set*/
  0, /*tp_dictoffset*/
  0, /*tp_init*/
  0, /*tp_alloc*/
  __pyx_tp_new_4grpc_7_cython_6cygrpc_BaseCompletionQueue, /*tp_new*/
  0, /*tp_free*/
  0, /*tp_is_gc*/
  0, /*tp_bases*/
  0, /*tp_mro*/
  0, /*tp_cache*/
  0, /*tp_subclasses*/
  0, /*tp_weaklist*/
  0, /*tp_del*/
  0, /*tp_version_tag*/
  #if PY_VERSION_HEX >= 0x030400a1
  0, /*tp_finalize*/
  #endif
  #if PY_VERSION_HEX >= 0x030800b1
  0, /*tp_vectorcall*/
  #endif
  #if PY_VERSION_HEX >= 0x030800b4 && PY_VERSION_HEX < 0x03090000
  0, /*tp_print*/
  #endif
};

static PyObject *__pyx_tp_new_4grpc_7_cython_6cygrpc__BoundEventLoop(PyTypeObject *t, PyObject *a, PyObject *k) {
  struct __pyx_obj_4grpc_7_cython_6cygrpc__BoundEventLoop *p;
  PyObject *o;
  if (likely((t->tp_flags & Py_TPFLAGS_IS_ABSTRACT) == 0)) {
    o = (*t->tp_alloc)(t, 0);
  } else {
    o = (PyObject *) PyBaseObject_Type.tp_new(t, __pyx_empty_tuple, 0);
  }
  if (unlikely(!o)) return 0;
  p = ((struct __pyx_obj_4grpc_7_cython_6cygrpc__BoundEventLoop *)o);
  p->loop = Py_None; Py_INCREF(Py_None);
  p->read_socket = Py_None; Py_INCREF(Py_None);
  if (unlikely(__pyx_pw_4grpc_7_cython_6cygrpc_15_BoundEventLoop_1__cinit__(o, a, k) < 0)) goto bad;
  return o;
  bad:
  Py_DECREF(o); o = 0;
  return NULL;
}

static void __pyx_tp_dealloc_4grpc_7_cython_6cygrpc__BoundEventLoop(PyObject *o) {
  struct __pyx_obj_4grpc_7_cython_6cygrpc__BoundEventLoop *p = (struct __pyx_obj_4grpc_7_cython_6cygrpc__BoundEventLoop *)o;
  #if CYTHON_USE_TP_FINALIZE
  if (unlikely(PyType_HasFeature(Py_TYPE(o), Py_TPFLAGS_HAVE_FINALIZE) && Py_TYPE(o)->tp_finalize) && !_PyGC_FINALIZED(o)) {
    if (PyObject_CallFinalizerFromDealloc(o)) return;
  }
  #endif
  PyObject_GC_UnTrack(o);
  Py_CLEAR(p->loop);
  Py_CLEAR(p->read_socket);
  (*Py_TYPE(o)->tp_free)(o);
}

static int __pyx_tp_traverse_4grpc_7_cython_6cygrpc__BoundEventLoop(PyObject *o, visitproc v, void *a) {
  int e;
  struct __pyx_obj_4grpc_7_cython_6cygrpc__BoundEventLoop *p = (struct __pyx_obj_4grpc_7_cython_6cygrpc__BoundEventLoop *)o;
  if (p->loop) {
    e = (*v)(p->loop, a); if (e) return e;
  }
  if (p->read_socket) {
    e = (*v)(p->read_socket, a); if (e) return e;
  }
  return 0;
}

static int __pyx_tp_clear_4grpc_7_cython_6cygrpc__BoundEventLoop(PyObject *o) {
  PyObject* tmp;
  struct __pyx_obj_4grpc_7_cython_6cygrpc__BoundEventLoop *p = (struct __pyx_obj_4grpc_7_cython_6cygrpc__BoundEventLoop *)o;
  tmp = ((PyObject*)p->loop);
  p->loop = Py_None; Py_INCREF(Py_None);
  Py_XDECREF(tmp);
  tmp = ((PyObject*)p->read_socket);
  p->read_socket = Py_None; Py_INCREF(Py_None);
  Py_XDECREF(tmp);
  return 0;
}

static PyObject *__pyx_getprop_4grpc_7_cython_6cygrpc_15_BoundEventLoop_loop(PyObject *o, CYTHON_UNUSED void *x) {
  return __pyx_pw_4grpc_7_cython_6cygrpc_15_BoundEventLoop_4loop_1__get__(o);
}

static PyObject *__pyx_getprop_4grpc_7_cython_6cygrpc_15_BoundEventLoop_read_socket(PyObject *o, CYTHON_UNUSED void *x) {
  return __pyx_pw_4grpc_7_cython_6cygrpc_15_BoundEventLoop_11read_socket_1__get__(o);
}

static PyMethodDef __pyx_methods_4grpc_7_cython_6cygrpc__BoundEventLoop[] = {
  {"close", (PyCFunction)__pyx_pw_4grpc_7_cython_6cygrpc_15_BoundEventLoop_3close, METH_NOARGS, 0},
  {"__reduce_cython__", (PyCFunction)__pyx_pw_4grpc_7_cython_6cygrpc_15_BoundEventLoop_5__reduce_cython__, METH_NOARGS, 0},
  {"__setstate_cython__", (PyCFunction)__pyx_pw_4grpc_7_cython_6cygrpc_15_BoundEventLoop_7__setstate_cython__, METH_O, 0},
  {0, 0, 0, 0}
};

static struct PyGetSetDef __pyx_getsets_4grpc_7_cython_6cygrpc__BoundEventLoop[] = {
  {(char *)"loop", __pyx_getprop_4grpc_7_cython_6cygrpc_15_BoundEventLoop_loop, 0, (char *)0, 0},
  {(char *)"read_socket", __pyx_getprop_4grpc_7_cython_6cygrpc_15_BoundEventLoop_read_socket, 0, (char *)0, 0},
  {0, 0, 0, 0, 0}
};

static PyTypeObject __pyx_type_4grpc_7_cython_6cygrpc__BoundEventLoop = {
  PyVarObject_HEAD_INIT(0, 0)
  "grpc._cython.cygrpc._BoundEventLoop", /*tp_name*/
  sizeof(struct __pyx_obj_4grpc_7_cython_6cygrpc__BoundEventLoop), /*tp_basicsize*/
  0, /*tp_itemsize*/
  __pyx_tp_dealloc_4grpc_7_cython_6cygrpc__BoundEventLoop, /*tp_dealloc*/
  #if PY_VERSION_HEX < 0x030800b4
  0, /*tp_print*/
  #endif
  #if PY_VERSION_HEX >= 0x030800b4
  0, /*tp_vectorcall_offset*/
  #endif
  0, /*tp_getattr*/
  0, /*tp_setattr*/
  #if PY_MAJOR_VERSION < 3
  0, /*tp_compare*/
  #endif
  #if PY_MAJOR_VERSION >= 3
  0, /*tp_as_async*/
  #endif
  0, /*tp_repr*/
  0, /*tp_as_number*/
  0, /*tp_as_sequence*/
  0, /*tp_as_mapping*/
  0, /*tp_hash*/
  0, /*tp_call*/
  0, /*tp_str*/
  0, /*tp_getattro*/
  0, /*tp_setattro*/
  0, /*tp_as_buffer*/
  Py_TPFLAGS_DEFAULT|Py_TPFLAGS_HAVE_VERSION_TAG|Py_TPFLAGS_CHECKTYPES|Py_TPFLAGS_HAVE_NEWBUFFER|Py_TPFLAGS_BASETYPE|Py_TPFLAGS_HAVE_GC, /*tp_flags*/
  0, /*tp_doc*/
  __pyx_tp_traverse_4grpc_7_cython_6cygrpc__BoundEventLoop, /*tp_traverse*/
  __pyx_tp_clear_4grpc_7_cython_6cygrpc__BoundEventLoop, /*tp_clear*/
  0, /*tp_richcompare*/
  0, /*tp_weaklistoffset*/
  0, /*tp_iter*/
  0, /*tp_iternext*/
  __pyx_methods_4grpc_7_cython_6cygrpc__BoundEventLoop, /*tp_methods*/
  0, /*tp_members*/
  __pyx_getsets_4grpc_7_cython_6cygrpc__BoundEventLoop, /*tp_getset*/
  0, /*tp_base*/
  0, /*tp_dict*/
  0, /*tp_descr_get*/
  0, /*tp_descr_set*/
  0, /*tp_dictoffset*/
  0, /*tp_init*/
  0, /*tp_alloc*/
  __pyx_tp_new_4grpc_7_cython_6cygrpc__BoundEventLoop, /*tp_new*/
  0, /*tp_free*/
  0, /*tp_is_gc*/
  0, /*tp_bases*/
  0, /*tp_mro*/
  0, /*tp_cache*/
  0, /*tp_subclasses*/
  0, /*tp_weaklist*/
  0, /*tp_del*/
  0, /*tp_version_tag*/
  #if PY_VERSION_HEX >= 0x030400a1
  0, /*tp_finalize*/
  #endif
  #if PY_VERSION_HEX >= 0x030800b1
  0, /*tp_vectorcall*/
  #endif
  #if PY_VERSION_HEX >= 0x030800b4 && PY_VERSION_HEX < 0x03090000
  0, /*tp_print*/
  #endif
};
static struct __pyx_vtabstruct_4grpc_7_cython_6cygrpc_PollerCompletionQueue __pyx_vtable_4grpc_7_cython_6cygrpc_PollerCompletionQueue;

static PyObject *__pyx_tp_new_4grpc_7_cython_6cygrpc_PollerCompletionQueue(PyTypeObject *t, PyObject *a, PyObject *k) {
  struct __pyx_obj_4grpc_7_cython_6cygrpc_PollerCompletionQueue *p;
  PyObject *o = __pyx_tp_new_4grpc_7_cython_6cygrpc_BaseCompletionQueue(t, a, k);
  if (unlikely(!o)) return 0;
  p = ((struct __pyx_obj_4grpc_7_cython_6cygrpc_PollerCompletionQueue *)o);
  p->__pyx_base.__pyx_vtab = (struct __pyx_vtabstruct_4grpc_7_cython_6cygrpc_BaseCompletionQueue*)__pyx_vtabptr_4grpc_7_cython_6cygrpc_PollerCompletionQueue;
  new((void*)&(p->_queue)) __pyx_t_4grpc_7_cython_6cygrpc_cpp_event_queue();
  new((void*)&(p->_queue_mutex)) std::mutex();
  p->_poller_thread = Py_None; Py_INCREF(Py_None);
  p->_read_socket = Py_None; Py_INCREF(Py_None);
  p->_write_socket = Py_None; Py_INCREF(Py_None);
  p->_loops = ((PyObject*)Py_None); Py_INCREF(Py_None);
  if (unlikely(__pyx_pw_4grpc_7_cython_6cygrpc_21PollerCompletionQueue_1__cinit__(o, __pyx_empty_tuple, NULL) < 0)) goto bad;
  return o;
  bad:
  Py_DECREF(o); o = 0;
  return NULL;
}

static void __pyx_tp_dealloc_4grpc_7_cython_6cygrpc_PollerCompletionQueue(PyObject *o) {
  struct __pyx_obj_4grpc_7_cython_6cygrpc_PollerCompletionQueue *p = (struct __pyx_obj_4grpc_7_cython_6cygrpc_PollerCompletionQueue *)o;
  #if CYTHON_USE_TP_FINALIZE
  if (unlikely(PyType_HasFeature(Py_TYPE(o), Py_TPFLAGS_HAVE_FINALIZE) && Py_TYPE(o)->tp_finalize) && !_PyGC_FINALIZED(o)) {
    if (PyObject_CallFinalizerFromDealloc(o)) return;
  }
  #endif
  PyObject_GC_UnTrack(o);
  __Pyx_call_destructor(p->_queue);
  __Pyx_call_destructor(p->_queue_mutex);
  Py_CLEAR(p->_poller_thread);
  Py_CLEAR(p->_read_socket);
  Py_CLEAR(p->_write_socket);
  Py_CLEAR(p->_loops);
  #if CYTHON_USE_TYPE_SLOTS
  if (PyType_IS_GC(Py_TYPE(o)->tp_base))
  #endif
  PyObject_GC_Track(o);
  __pyx_tp_dealloc_4grpc_7_cython_6cygrpc_BaseCompletionQueue(o);
}

static int __pyx_tp_traverse_4grpc_7_cython_6cygrpc_PollerCompletionQueue(PyObject *o, visitproc v, void *a) {
  int e;
  struct __pyx_obj_4grpc_7_cython_6cygrpc_PollerCompletionQueue *p = (struct __pyx_obj_4grpc_7_cython_6cygrpc_PollerCompletionQueue *)o;
  e = ((likely(__pyx_ptype_4grpc_7_cython_6cygrpc_BaseCompletionQueue)) ? ((__pyx_ptype_4grpc_7_cython_6cygrpc_BaseCompletionQueue->tp_traverse) ? __pyx_ptype_4grpc_7_cython_6cygrpc_BaseCompletionQueue->tp_traverse(o, v, a) : 0) : __Pyx_call_next_tp_traverse(o, v, a, __pyx_tp_traverse_4grpc_7_cython_6cygrpc_PollerCompletionQueue)); if (e) return e;
  if (p->_poller_thread) {
    e = (*v)(p->_poller_thread, a); if (e) return e;
  }
  if (p->_read_socket) {
    e = (*v)(p->_read_socket, a); if (e) return e;
  }
  if (p->_write_socket) {
    e = (*v)(p->_write_socket, a); if (e) return e;
  }
  if (p->_loops) {
    e = (*v)(p->_loops, a); if (e) return e;
  }
  return 0;
}

static int __pyx_tp_clear_4grpc_7_cython_6cygrpc_PollerCompletionQueue(PyObject *o) {
  PyObject* tmp;
  struct __pyx_obj_4grpc_7_cython_6cygrpc_PollerCompletionQueue *p = (struct __pyx_obj_4grpc_7_cython_6cygrpc_PollerCompletionQueue *)o;
  if (likely(__pyx_ptype_4grpc_7_cython_6cygrpc_BaseCompletionQueue)) { if (__pyx_ptype_4grpc_7_cython_6cygrpc_BaseCompletionQueue->tp_clear) __pyx_ptype_4grpc_7_cython_6cygrpc_BaseCompletionQueue->tp_clear(o); } else __Pyx_call_next_tp_clear(o, __pyx_tp_clear_4grpc_7_cython_6cygrpc_PollerCompletionQueue);
  tmp = ((PyObject*)p->_poller_thread);
  p->_poller_thread = Py_None; Py_INCREF(Py_None);
  Py_XDECREF(tmp);
  tmp = ((PyObject*)p->_read_socket);
  p->_read_socket = Py_None; Py_INCREF(Py_None);
  Py_XDECREF(tmp);
  tmp = ((PyObject*)p->_write_socket);
  p->_write_socket = Py_None; Py_INCREF(Py_None);
  Py_XDECREF(tmp);
  tmp = ((PyObject*)p->_loops);
  p->_loops = ((PyObject*)Py_None); Py_INCREF(Py_None);
  Py_XDECREF(tmp);
  return 0;
}

static PyMethodDef __pyx_methods_4grpc_7_cython_6cygrpc_PollerCompletionQueue[] = {
  {"bind_loop", (PyCFunction)__pyx_pw_4grpc_7_cython_6cygrpc_21PollerCompletionQueue_3bind_loop, METH_O, 0},
  {"_poll_wrapper", (PyCFunction)__pyx_pw_4grpc_7_cython_6cygrpc_21PollerCompletionQueue_5_poll_wrapper, METH_NOARGS, 0},
  {"_handle_events", (PyCFunction)__pyx_pw_4grpc_7_cython_6cygrpc_21PollerCompletionQueue_7_handle_events, METH_O, 0},
  {"__reduce_cython__", (PyCFunction)__pyx_pw_4grpc_7_cython_6cygrpc_21PollerCompletionQueue_9__reduce_cython__, METH_NOARGS, 0},
  {"__setstate_cython__", (PyCFunction)__pyx_pw_4grpc_7_cython_6cygrpc_21PollerCompletionQueue_11__setstate_cython__, METH_O, 0},
  {0, 0, 0, 0}
};

static PyTypeObject __pyx_type_4grpc_7_cython_6cygrpc_PollerCompletionQueue = {
  PyVarObject_HEAD_INIT(0, 0)
  "grpc._cython.cygrpc.PollerCompletionQueue", /*tp_name*/
  sizeof(struct __pyx_obj_4grpc_7_cython_6cygrpc_PollerCompletionQueue), /*tp_basicsize*/
  0, /*tp_itemsize*/
  __pyx_tp_dealloc_4grpc_7_cython_6cygrpc_PollerCompletionQueue, /*tp_dealloc*/
  #if PY_VERSION_HEX < 0x030800b4
  0, /*tp_print*/
  #endif
  #if PY_VERSION_HEX >= 0x030800b4
  0, /*tp_vectorcall_offset*/
  #endif
  0, /*tp_getattr*/
  0, /*tp_setattr*/
  #if PY_MAJOR_VERSION < 3
  0, /*tp_compare*/
  #endif
  #if PY_MAJOR_VERSION >= 3
  0, /*tp_as_async*/
  #endif
  0, /*tp_repr*/
  0, /*tp_as_number*/
  0, /*tp_as_sequence*/
  0, /*tp_as_mapping*/
  0, /*tp_hash*/
  0, /*tp_call*/
  0, /*tp_str*/
  0, /*tp_getattro*/
  0, /*tp_setattro*/
  0, /*tp_as_buffer*/
  Py_TPFLAGS_DEFAULT|Py_TPFLAGS_HAVE_VERSION_TAG|Py_TPFLAGS_CHECKTYPES|Py_TPFLAGS_HAVE_NEWBUFFER|Py_TPFLAGS_BASETYPE|Py_TPFLAGS_HAVE_GC, /*tp_flags*/
  0, /*tp_doc*/
  __pyx_tp_traverse_4grpc_7_cython_6cygrpc_PollerCompletionQueue, /*tp_traverse*/
  __pyx_tp_clear_4grpc_7_cython_6cygrpc_PollerCompletionQueue, /*tp_clear*/
  0, /*tp_richcompare*/
  0, /*tp_weaklistoffset*/
  0, /*tp_iter*/
  0, /*tp_iternext*/
  __pyx_methods_4grpc_7_cython_6cygrpc_PollerCompletionQueue, /*tp_methods*/
  0, /*tp_members*/
  0, /*tp_getset*/
  0, /*tp_base*/
  0, /*tp_dict*/
  0, /*tp_descr_get*/
  0, /*tp_descr_set*/
  0, /*tp_dictoffset*/
  0, /*tp_init*/
  0, /*tp_alloc*/
  __pyx_tp_new_4grpc_7_cython_6cygrpc_PollerCompletionQueue, /*tp_new*/
  0, /*tp_free*/
  0, /*tp_is_gc*/
  0, /*tp_bases*/
  0, /*tp_mro*/
  0, /*tp_cache*/
  0, /*tp_subclasses*/
  0, /*tp_weaklist*/
  0, /*tp_del*/
  0, /*tp_version_tag*/
  #if PY_VERSION_HEX >= 0x030400a1
  0, /*tp_finalize*/
  #endif
  #if PY_VERSION_HEX >= 0x030800b1
  0, /*tp_vectorcall*/
  #endif
  #if PY_VERSION_HEX >= 0x030800b4 && PY_VERSION_HEX < 0x03090000
  0, /*tp_print*/
  #endif
};
static struct __pyx_vtabstruct_4grpc_7_cython_6cygrpc_AioRpcStatus __pyx_vtable_4grpc_7_cython_6cygrpc_AioRpcStatus;

static PyObject *__pyx_tp_new_4grpc_7_cython_6cygrpc_AioRpcStatus(PyTypeObject *t, PyObject *a, PyObject *k) {
  struct __pyx_obj_4grpc_7_cython_6cygrpc_AioRpcStatus *p;
  PyObject *o = (&((PyTypeObject*)PyExc_Exception)[0])->tp_new(t, a, k);
  if (unlikely(!o)) return 0;
  p = ((struct __pyx_obj_4grpc_7_cython_6cygrpc_AioRpcStatus *)o);
  p->__pyx_vtab = __pyx_vtabptr_4grpc_7_cython_6cygrpc_AioRpcStatus;
  p->_details = ((PyObject*)Py_None); Py_INCREF(Py_None);
  p->_trailing_metadata = ((PyObject*)Py_None); Py_INCREF(Py_None);
  p->_debug_error_string = ((PyObject*)Py_None); Py_INCREF(Py_None);
  if (unlikely(__pyx_pw_4grpc_7_cython_6cygrpc_12AioRpcStatus_1__cinit__(o, a, k) < 0)) goto bad;
  return o;
  bad:
  Py_DECREF(o); o = 0;
  return NULL;
}

static void __pyx_tp_dealloc_4grpc_7_cython_6cygrpc_AioRpcStatus(PyObject *o) {
  struct __pyx_obj_4grpc_7_cython_6cygrpc_AioRpcStatus *p = (struct __pyx_obj_4grpc_7_cython_6cygrpc_AioRpcStatus *)o;
  #if CYTHON_USE_TP_FINALIZE
  if (unlikely(PyType_HasFeature(Py_TYPE(o), Py_TPFLAGS_HAVE_FINALIZE) && Py_TYPE(o)->tp_finalize) && !_PyGC_FINALIZED(o)) {
    if (PyObject_CallFinalizerFromDealloc(o)) return;
  }
  #endif
  PyObject_GC_UnTrack(o);
  Py_CLEAR(p->_details);
  Py_CLEAR(p->_trailing_metadata);
  Py_CLEAR(p->_debug_error_string);
  PyObject_GC_Track(o);
  (&((PyTypeObject*)PyExc_Exception)[0])->tp_dealloc(o);
}

static int __pyx_tp_traverse_4grpc_7_cython_6cygrpc_AioRpcStatus(PyObject *o, visitproc v, void *a) {
  int e;
  struct __pyx_obj_4grpc_7_cython_6cygrpc_AioRpcStatus *p = (struct __pyx_obj_4grpc_7_cython_6cygrpc_AioRpcStatus *)o;
  if (!(&((PyTypeObject*)PyExc_Exception)[0])->tp_traverse); else { e = (&((PyTypeObject*)PyExc_Exception)[0])->tp_traverse(o,v,a); if (e) return e; }
  if (p->_trailing_metadata) {
    e = (*v)(p->_trailing_metadata, a); if (e) return e;
  }
  return 0;
}

static int __pyx_tp_clear_4grpc_7_cython_6cygrpc_AioRpcStatus(PyObject *o) {
  PyObject* tmp;
  struct __pyx_obj_4grpc_7_cython_6cygrpc_AioRpcStatus *p = (struct __pyx_obj_4grpc_7_cython_6cygrpc_AioRpcStatus *)o;
  if (!(&((PyTypeObject*)PyExc_Exception)[0])->tp_clear); else (&((PyTypeObject*)PyExc_Exception)[0])->tp_clear(o);
  tmp = ((PyObject*)p->_trailing_metadata);
  p->_trailing_metadata = ((PyObject*)Py_None); Py_INCREF(Py_None);
  Py_XDECREF(tmp);
  return 0;
}

static PyObject *__pyx_getprop_4grpc_7_cython_6cygrpc_12AioRpcStatus__code(PyObject *o, CYTHON_UNUSED void *x) {
  return __pyx_pw_4grpc_7_cython_6cygrpc_12AioRpcStatus_5_code_1__get__(o);
}

static PyObject *__pyx_getprop_4grpc_7_cython_6cygrpc_12AioRpcStatus__details(PyObject *o, CYTHON_UNUSED void *x) {
  return __pyx_pw_4grpc_7_cython_6cygrpc_12AioRpcStatus_8_details_1__get__(o);
}

static PyObject *__pyx_getprop_4grpc_7_cython_6cygrpc_12AioRpcStatus__trailing_metadata(PyObject *o, CYTHON_UNUSED void *x) {
  return __pyx_pw_4grpc_7_cython_6cygrpc_12AioRpcStatus_18_trailing_metadata_1__get__(o);
}

static PyObject *__pyx_getprop_4grpc_7_cython_6cygrpc_12AioRpcStatus__debug_error_string(PyObject *o, CYTHON_UNUSED void *x) {
  return __pyx_pw_4grpc_7_cython_6cygrpc_12AioRpcStatus_19_debug_error_string_1__get__(o);
}

static PyMethodDef __pyx_methods_4grpc_7_cython_6cygrpc_AioRpcStatus[] = {
  {"code", (PyCFunction)__pyx_pw_4grpc_7_cython_6cygrpc_12AioRpcStatus_3code, METH_NOARGS, 0},
  {"details", (PyCFunction)__pyx_pw_4grpc_7_cython_6cygrpc_12AioRpcStatus_5details, METH_NOARGS, 0},
  {"trailing_metadata", (PyCFunction)__pyx_pw_4grpc_7_cython_6cygrpc_12AioRpcStatus_7trailing_metadata, METH_NOARGS, 0},
  {"debug_error_string", (PyCFunction)__pyx_pw_4grpc_7_cython_6cygrpc_12AioRpcStatus_9debug_error_string, METH_NOARGS, 0},
  {"__reduce_cython__", (PyCFunction)__pyx_pw_4grpc_7_cython_6cygrpc_12AioRpcStatus_11__reduce_cython__, METH_NOARGS, 0},
  {"__setstate_cython__", (PyCFunction)__pyx_pw_4grpc_7_cython_6cygrpc_12AioRpcStatus_13__setstate_cython__, METH_O, 0},
  {0, 0, 0, 0}
};

static struct PyGetSetDef __pyx_getsets_4grpc_7_cython_6cygrpc_AioRpcStatus[] = {
  {(char *)"_code", __pyx_getprop_4grpc_7_cython_6cygrpc_12AioRpcStatus__code, 0, (char *)0, 0},
  {(char *)"_details", __pyx_getprop_4grpc_7_cython_6cygrpc_12AioRpcStatus__details, 0, (char *)0, 0},
  {(char *)"_trailing_metadata", __pyx_getprop_4grpc_7_cython_6cygrpc_12AioRpcStatus__trailing_metadata, 0, (char *)0, 0},
  {(char *)"_debug_error_string", __pyx_getprop_4grpc_7_cython_6cygrpc_12AioRpcStatus__debug_error_string, 0, (char *)0, 0},
  {0, 0, 0, 0, 0}
};

static PyTypeObject __pyx_type_4grpc_7_cython_6cygrpc_AioRpcStatus = {
  PyVarObject_HEAD_INIT(0, 0)
  "grpc._cython.cygrpc.AioRpcStatus", /*tp_name*/
  sizeof(struct __pyx_obj_4grpc_7_cython_6cygrpc_AioRpcStatus), /*tp_basicsize*/
  0, /*tp_itemsize*/
  __pyx_tp_dealloc_4grpc_7_cython_6cygrpc_AioRpcStatus, /*tp_dealloc*/
  #if PY_VERSION_HEX < 0x030800b4
  0, /*tp_print*/
  #endif
  #if PY_VERSION_HEX >= 0x030800b4
  0, /*tp_vectorcall_offset*/
  #endif
  0, /*tp_getattr*/
  0, /*tp_setattr*/
  #if PY_MAJOR_VERSION < 3
  0, /*tp_compare*/
  #endif
  #if PY_MAJOR_VERSION >= 3
  0, /*tp_as_async*/
  #endif
  0, /*tp_repr*/
  0, /*tp_as_number*/
  0, /*tp_as_sequence*/
  0, /*tp_as_mapping*/
  0, /*tp_hash*/
  0, /*tp_call*/
  0, /*tp_str*/
  0, /*tp_getattro*/
  0, /*tp_setattro*/
  0, /*tp_as_buffer*/
  Py_TPFLAGS_DEFAULT|Py_TPFLAGS_HAVE_VERSION_TAG|Py_TPFLAGS_CHECKTYPES|Py_TPFLAGS_HAVE_NEWBUFFER|Py_TPFLAGS_BASETYPE|Py_TPFLAGS_HAVE_GC, /*tp_flags*/
  0, /*tp_doc*/
  __pyx_tp_traverse_4grpc_7_cython_6cygrpc_AioRpcStatus, /*tp_traverse*/
  __pyx_tp_clear_4grpc_7_cython_6cygrpc_AioRpcStatus, /*tp_clear*/
  0, /*tp_richcompare*/
  0, /*tp_weaklistoffset*/
  0, /*tp_iter*/
  0, /*tp_iternext*/
  __pyx_methods_4grpc_7_cython_6cygrpc_AioRpcStatus, /*tp_methods*/
  0, /*tp_members*/
  __pyx_getsets_4grpc_7_cython_6cygrpc_AioRpcStatus, /*tp_getset*/
  0, /*tp_base*/
  0, /*tp_dict*/
  0, /*tp_descr_get*/
  0, /*tp_descr_set*/
  0, /*tp_dictoffset*/
  0, /*tp_init*/
  0, /*tp_alloc*/
  __pyx_tp_new_4grpc_7_cython_6cygrpc_AioRpcStatus, /*tp_new*/
  0, /*tp_free*/
  0, /*tp_is_gc*/
  0, /*tp_bases*/
  0, /*tp_mro*/
  0, /*tp_cache*/
  0, /*tp_subclasses*/
  0, /*tp_weaklist*/
  0, /*tp_del*/
  0, /*tp_version_tag*/
  #if PY_VERSION_HEX >= 0x030400a1
  0, /*tp_finalize*/
  #endif
  #if PY_VERSION_HEX >= 0x030800b1
  0, /*tp_vectorcall*/
  #endif
  #if PY_VERSION_HEX >= 0x030800b4 && PY_VERSION_HEX < 0x03090000
  0, /*tp_print*/
  #endif
};

static PyObject *__pyx_tp_new_4grpc_7_cython_6cygrpc__AioState(PyTypeObject *t, CYTHON_UNUSED PyObject *a, CYTHON_UNUSED PyObject *k) {
  struct __pyx_obj_4grpc_7_cython_6cygrpc__AioState *p;
  PyObject *o;
  if (likely((t->tp_flags & Py_TPFLAGS_IS_ABSTRACT) == 0)) {
    o = (*t->tp_alloc)(t, 0);
  } else {
    o = (PyObject *) PyBaseObject_Type.tp_new(t, __pyx_empty_tuple, 0);
  }
  if (unlikely(!o)) return 0;
  p = ((struct __pyx_obj_4grpc_7_cython_6cygrpc__AioState *)o);
  p->lock = Py_None; Py_INCREF(Py_None);
  p->engine = Py_None; Py_INCREF(Py_None);
  p->cq = ((struct __pyx_obj_4grpc_7_cython_6cygrpc_BaseCompletionQueue *)Py_None); Py_INCREF(Py_None);
  if (unlikely(__pyx_pw_4grpc_7_cython_6cygrpc_9_AioState_1__cinit__(o, __pyx_empty_tuple, NULL) < 0)) goto bad;
  return o;
  bad:
  Py_DECREF(o); o = 0;
  return NULL;
}

static void __pyx_tp_dealloc_4grpc_7_cython_6cygrpc__AioState(PyObject *o) {
  struct __pyx_obj_4grpc_7_cython_6cygrpc__AioState *p = (struct __pyx_obj_4grpc_7_cython_6cygrpc__AioState *)o;
  #if CYTHON_USE_TP_FINALIZE
  if (unlikely(PyType_HasFeature(Py_TYPE(o), Py_TPFLAGS_HAVE_FINALIZE) && Py_TYPE(o)->tp_finalize) && !_PyGC_FINALIZED(o)) {
    if (PyObject_CallFinalizerFromDealloc(o)) return;
  }
  #endif
  PyObject_GC_UnTrack(o);
  Py_CLEAR(p->lock);
  Py_CLEAR(p->engine);
  Py_CLEAR(p->cq);
  (*Py_TYPE(o)->tp_free)(o);
}

static int __pyx_tp_traverse_4grpc_7_cython_6cygrpc__AioState(PyObject *o, visitproc v, void *a) {
  int e;
  struct __pyx_obj_4grpc_7_cython_6cygrpc__AioState *p = (struct __pyx_obj_4grpc_7_cython_6cygrpc__AioState *)o;
  if (p->lock) {
    e = (*v)(p->lock, a); if (e) return e;
  }
  if (p->engine) {
    e = (*v)(p->engine, a); if (e) return e;
  }
  if (p->cq) {
    e = (*v)(((PyObject *)p->cq), a); if (e) return e;
  }
  return 0;
}

static int __pyx_tp_clear_4grpc_7_cython_6cygrpc__AioState(PyObject *o) {
  PyObject* tmp;
  struct __pyx_obj_4grpc_7_cython_6cygrpc__AioState *p = (struct __pyx_obj_4grpc_7_cython_6cygrpc__AioState *)o;
  tmp = ((PyObject*)p->lock);
  p->lock = Py_None; Py_INCREF(Py_None);
  Py_XDECREF(tmp);
  tmp = ((PyObject*)p->engine);
  p->engine = Py_None; Py_INCREF(Py_None);
  Py_XDECREF(tmp);
  tmp = ((PyObject*)p->cq);
  p->cq = ((struct __pyx_obj_4grpc_7_cython_6cygrpc_BaseCompletionQueue *)Py_None); Py_INCREF(Py_None);
  Py_XDECREF(tmp);
  return 0;
}

static PyMethodDef __pyx_methods_4grpc_7_cython_6cygrpc__AioState[] = {
  {"__reduce_cython__", (PyCFunction)__pyx_pw_4grpc_7_cython_6cygrpc_9_AioState_3__reduce_cython__, METH_NOARGS, 0},
  {"__setstate_cython__", (PyCFunction)__pyx_pw_4grpc_7_cython_6cygrpc_9_AioState_5__setstate_cython__, METH_O, 0},
  {0, 0, 0, 0}
};

static PyTypeObject __pyx_type_4grpc_7_cython_6cygrpc__AioState = {
  PyVarObject_HEAD_INIT(0, 0)
  "grpc._cython.cygrpc._AioState", /*tp_name*/
  sizeof(struct __pyx_obj_4grpc_7_cython_6cygrpc__AioState), /*tp_basicsize*/
  0, /*tp_itemsize*/
  __pyx_tp_dealloc_4grpc_7_cython_6cygrpc__AioState, /*tp_dealloc*/
  #if PY_VERSION_HEX < 0x030800b4
  0, /*tp_print*/
  #endif
  #if PY_VERSION_HEX >= 0x030800b4
  0, /*tp_vectorcall_offset*/
  #endif
  0, /*tp_getattr*/
  0, /*tp_setattr*/
  #if PY_MAJOR_VERSION < 3
  0, /*tp_compare*/
  #endif
  #if PY_MAJOR_VERSION >= 3
  0, /*tp_as_async*/
  #endif
  0, /*tp_repr*/
  0, /*tp_as_number*/
  0, /*tp_as_sequence*/
  0, /*tp_as_mapping*/
  0, /*tp_hash*/
  0, /*tp_call*/
  0, /*tp_str*/
  0, /*tp_getattro*/
  0, /*tp_setattro*/
  0, /*tp_as_buffer*/
  Py_TPFLAGS_DEFAULT|Py_TPFLAGS_HAVE_VERSION_TAG|Py_TPFLAGS_CHECKTYPES|Py_TPFLAGS_HAVE_NEWBUFFER|Py_TPFLAGS_BASETYPE|Py_TPFLAGS_HAVE_GC, /*tp_flags*/
  0, /*tp_doc*/
  __pyx_tp_traverse_4grpc_7_cython_6cygrpc__AioState, /*tp_traverse*/
  __pyx_tp_clear_4grpc_7_cython_6cygrpc__AioState, /*tp_clear*/
  0, /*tp_richcompare*/
  0, /*tp_weaklistoffset*/
  0, /*tp_iter*/
  0, /*tp_iternext*/
  __pyx_methods_4grpc_7_cython_6cygrpc__AioState, /*tp_methods*/
  0, /*tp_members*/
  0, /*tp_getset*/
  0, /*tp_base*/
  0, /*tp_dict*/
  0, /*tp_descr_get*/
  0, /*tp_descr_set*/
  0, /*tp_dictoffset*/
  0, /*tp_init*/
  0, /*tp_alloc*/
  __pyx_tp_new_4grpc_7_cython_6cygrpc__AioState, /*tp_new*/
  0, /*tp_free*/
  0, /*tp_is_gc*/
  0, /*tp_bases*/
  0, /*tp_mro*/
  0, /*tp_cache*/
  0, /*tp_subclasses*/
  0, /*tp_weaklist*/
  0, /*tp_del*/
  0, /*tp_version_tag*/
  #if PY_VERSION_HEX >= 0x030400a1
  0, /*tp_finalize*/
  #endif
  #if PY_VERSION_HEX >= 0x030800b1
  0, /*tp_vectorcall*/
  #endif
  #if PY_VERSION_HEX >= 0x030800b4 && PY_VERSION_HEX < 0x03090000
  0, /*tp_print*/
  #endif
};
static struct __pyx_vtabstruct_4grpc_7_cython_6cygrpc_CallbackFailureHandler __pyx_vtable_4grpc_7_cython_6cygrpc_CallbackFailureHandler;

static PyObject *__pyx_tp_new_4grpc_7_cython_6cygrpc_CallbackFailureHandler(PyTypeObject *t, PyObject *a, PyObject *k) {
  struct __pyx_obj_4grpc_7_cython_6cygrpc_CallbackFailureHandler *p;
  PyObject *o;
  if (likely((t->tp_flags & Py_TPFLAGS_IS_ABSTRACT) == 0)) {
    o = (*t->tp_alloc)(t, 0);
  } else {
    o = (PyObject *) PyBaseObject_Type.tp_new(t, __pyx_empty_tuple, 0);
  }
  if (unlikely(!o)) return 0;
  p = ((struct __pyx_obj_4grpc_7_cython_6cygrpc_CallbackFailureHandler *)o);
  p->__pyx_vtab = __pyx_vtabptr_4grpc_7_cython_6cygrpc_CallbackFailureHandler;
  p->_core_function_name = ((PyObject*)Py_None); Py_INCREF(Py_None);
  p->_error_details = Py_None; Py_INCREF(Py_None);
  p->_exception_type = Py_None; Py_INCREF(Py_None);
  if (unlikely(__pyx_pw_4grpc_7_cython_6cygrpc_22CallbackFailureHandler_1__cinit__(o, a, k) < 0)) goto bad;
  return o;
  bad:
  Py_DECREF(o); o = 0;
  return NULL;
}

static void __pyx_tp_dealloc_4grpc_7_cython_6cygrpc_CallbackFailureHandler(PyObject *o) {
  struct __pyx_obj_4grpc_7_cython_6cygrpc_CallbackFailureHandler *p = (struct __pyx_obj_4grpc_7_cython_6cygrpc_CallbackFailureHandler *)o;
  #if CYTHON_USE_TP_FINALIZE
  if (unlikely(PyType_HasFeature(Py_TYPE(o), Py_TPFLAGS_HAVE_FINALIZE) && Py_TYPE(o)->tp_finalize) && !_PyGC_FINALIZED(o)) {
    if (PyObject_CallFinalizerFromDealloc(o)) return;
  }
  #endif
  PyObject_GC_UnTrack(o);
  Py_CLEAR(p->_core_function_name);
  Py_CLEAR(p->_error_details);
  Py_CLEAR(p->_exception_type);
  (*Py_TYPE(o)->tp_free)(o);
}

static int __pyx_tp_traverse_4grpc_7_cython_6cygrpc_CallbackFailureHandler(PyObject *o, visitproc v, void *a) {
  int e;
  struct __pyx_obj_4grpc_7_cython_6cygrpc_CallbackFailureHandler *p = (struct __pyx_obj_4grpc_7_cython_6cygrpc_CallbackFailureHandler *)o;
  if (p->_error_details) {
    e = (*v)(p->_error_details, a); if (e) return e;
  }
  if (p->_exception_type) {
    e = (*v)(p->_exception_type, a); if (e) return e;
  }
  return 0;
}

static int __pyx_tp_clear_4grpc_7_cython_6cygrpc_CallbackFailureHandler(PyObject *o) {
  PyObject* tmp;
  struct __pyx_obj_4grpc_7_cython_6cygrpc_CallbackFailureHandler *p = (struct __pyx_obj_4grpc_7_cython_6cygrpc_CallbackFailureHandler *)o;
  tmp = ((PyObject*)p->_error_details);
  p->_error_details = Py_None; Py_INCREF(Py_None);
  Py_XDECREF(tmp);
  tmp = ((PyObject*)p->_exception_type);
  p->_exception_type = Py_None; Py_INCREF(Py_None);
  Py_XDECREF(tmp);
  return 0;
}

static PyMethodDef __pyx_methods_4grpc_7_cython_6cygrpc_CallbackFailureHandler[] = {
  {"__reduce_cython__", (PyCFunction)__pyx_pw_4grpc_7_cython_6cygrpc_22CallbackFailureHandler_3__reduce_cython__, METH_NOARGS, 0},
  {"__setstate_cython__", (PyCFunction)__pyx_pw_4grpc_7_cython_6cygrpc_22CallbackFailureHandler_5__setstate_cython__, METH_O, 0},
  {0, 0, 0, 0}
};

static PyTypeObject __pyx_type_4grpc_7_cython_6cygrpc_CallbackFailureHandler = {
  PyVarObject_HEAD_INIT(0, 0)
  "grpc._cython.cygrpc.CallbackFailureHandler", /*tp_name*/
  sizeof(struct __pyx_obj_4grpc_7_cython_6cygrpc_CallbackFailureHandler), /*tp_basicsize*/
  0, /*tp_itemsize*/
  __pyx_tp_dealloc_4grpc_7_cython_6cygrpc_CallbackFailureHandler, /*tp_dealloc*/
  #if PY_VERSION_HEX < 0x030800b4
  0, /*tp_print*/
  #endif
  #if PY_VERSION_HEX >= 0x030800b4
  0, /*tp_vectorcall_offset*/
  #endif
  0, /*tp_getattr*/
  0, /*tp_setattr*/
  #if PY_MAJOR_VERSION < 3
  0, /*tp_compare*/
  #endif
  #if PY_MAJOR_VERSION >= 3
  0, /*tp_as_async*/
  #endif
  0, /*tp_repr*/
  0, /*tp_as_number*/
  0, /*tp_as_sequence*/
  0, /*tp_as_mapping*/
  0, /*tp_hash*/
  0, /*tp_call*/
  0, /*tp_str*/
  0, /*tp_getattro*/
  0, /*tp_setattro*/
  0, /*tp_as_buffer*/
  Py_TPFLAGS_DEFAULT|Py_TPFLAGS_HAVE_VERSION_TAG|Py_TPFLAGS_CHECKTYPES|Py_TPFLAGS_HAVE_NEWBUFFER|Py_TPFLAGS_BASETYPE|Py_TPFLAGS_HAVE_GC, /*tp_flags*/
  0, /*tp_doc*/
  __pyx_tp_traverse_4grpc_7_cython_6cygrpc_CallbackFailureHandler, /*tp_traverse*/
  __pyx_tp_clear_4grpc_7_cython_6cygrpc_CallbackFailureHandler, /*tp_clear*/
  0, /*tp_richcompare*/
  0, /*tp_weaklistoffset*/
  0, /*tp_iter*/
  0, /*tp_iternext*/
  __pyx_methods_4grpc_7_cython_6cygrpc_CallbackFailureHandler, /*tp_methods*/
  0, /*tp_members*/
  0, /*tp_getset*/
  0, /*tp_base*/
  0, /*tp_dict*/
  0, /*tp_descr_get*/
  0, /*tp_descr_set*/
  0, /*tp_dictoffset*/
  0, /*tp_init*/
  0, /*tp_alloc*/
  __pyx_tp_new_4grpc_7_cython_6cygrpc_CallbackFailureHandler, /*tp_new*/
  0, /*tp_free*/
  0, /*tp_is_gc*/
  0, /*tp_bases*/
  0, /*tp_mro*/
  0, /*tp_cache*/
  0, /*tp_subclasses*/
  0, /*tp_weaklist*/
  0, /*tp_del*/
  0, /*tp_version_tag*/
  #if PY_VERSION_HEX >= 0x030400a1
  0, /*tp_finalize*/
  #endif
  #if PY_VERSION_HEX >= 0x030800b1
  0, /*tp_vectorcall*/
  #endif
  #if PY_VERSION_HEX >= 0x030800b4 && PY_VERSION_HEX < 0x03090000
  0, /*tp_print*/
  #endif
};
static struct __pyx_vtabstruct_4grpc_7_cython_6cygrpc_CallbackWrapper __pyx_vtable_4grpc_7_cython_6cygrpc_CallbackWrapper;

static PyObject *__pyx_tp_new_4grpc_7_cython_6cygrpc_CallbackWrapper(PyTypeObject *t, PyObject *a, PyObject *k) {
  struct __pyx_obj_4grpc_7_cython_6cygrpc_CallbackWrapper *p;
  PyObject *o;
  if (likely((t->tp_flags & Py_TPFLAGS_IS_ABSTRACT) == 0)) {
    o = (*t->tp_alloc)(t, 0);
  } else {
    o = (PyObject *) PyBaseObject_Type.tp_new(t, __pyx_empty_tuple, 0);
  }
  if (unlikely(!o)) return 0;
  p = ((struct __pyx_obj_4grpc_7_cython_6cygrpc_CallbackWrapper *)o);
  p->__pyx_vtab = __pyx_vtabptr_4grpc_7_cython_6cygrpc_CallbackWrapper;
  p->_reference_of_future = Py_None; Py_INCREF(Py_None);
  p->_reference_of_failure_handler = Py_None; Py_INCREF(Py_None);
  if (unlikely(__pyx_pw_4grpc_7_cython_6cygrpc_15CallbackWrapper_1__cinit__(o, a, k) < 0)) goto bad;
  return o;
  bad:
  Py_DECREF(o); o = 0;
  return NULL;
}

static void __pyx_tp_dealloc_4grpc_7_cython_6cygrpc_CallbackWrapper(PyObject *o) {
  struct __pyx_obj_4grpc_7_cython_6cygrpc_CallbackWrapper *p = (struct __pyx_obj_4grpc_7_cython_6cygrpc_CallbackWrapper *)o;
  #if CYTHON_USE_TP_FINALIZE
  if (unlikely(PyType_HasFeature(Py_TYPE(o), Py_TPFLAGS_HAVE_FINALIZE) && Py_TYPE(o)->tp_finalize) && !_PyGC_FINALIZED(o)) {
    if (PyObject_CallFinalizerFromDealloc(o)) return;
  }
  #endif
  PyObject_GC_UnTrack(o);
  Py_CLEAR(p->_reference_of_future);
  Py_CLEAR(p->_reference_of_failure_handler);
  (*Py_TYPE(o)->tp_free)(o);
}

static int __pyx_tp_traverse_4grpc_7_cython_6cygrpc_CallbackWrapper(PyObject *o, visitproc v, void *a) {
  int e;
  struct __pyx_obj_4grpc_7_cython_6cygrpc_CallbackWrapper *p = (struct __pyx_obj_4grpc_7_cython_6cygrpc_CallbackWrapper *)o;
  if (p->_reference_of_future) {
    e = (*v)(p->_reference_of_future, a); if (e) return e;
  }
  if (p->_reference_of_failure_handler) {
    e = (*v)(p->_reference_of_failure_handler, a); if (e) return e;
  }
  return 0;
}

static int __pyx_tp_clear_4grpc_7_cython_6cygrpc_CallbackWrapper(PyObject *o) {
  PyObject* tmp;
  struct __pyx_obj_4grpc_7_cython_6cygrpc_CallbackWrapper *p = (struct __pyx_obj_4grpc_7_cython_6cygrpc_CallbackWrapper *)o;
  tmp = ((PyObject*)p->_reference_of_future);
  p->_reference_of_future = Py_None; Py_INCREF(Py_None);
  Py_XDECREF(tmp);
  tmp = ((PyObject*)p->_reference_of_failure_handler);
  p->_reference_of_failure_handler = Py_None; Py_INCREF(Py_None);
  Py_XDECREF(tmp);
  return 0;
}

static PyMethodDef __pyx_methods_4grpc_7_cython_6cygrpc_CallbackWrapper[] = {
  {"__reduce_cython__", (PyCFunction)__pyx_pw_4grpc_7_cython_6cygrpc_15CallbackWrapper_3__reduce_cython__, METH_NOARGS, 0},
  {"__setstate_cython__", (PyCFunction)__pyx_pw_4grpc_7_cython_6cygrpc_15CallbackWrapper_5__setstate_cython__, METH_O, 0},
  {0, 0, 0, 0}
};

static PyTypeObject __pyx_type_4grpc_7_cython_6cygrpc_CallbackWrapper = {
  PyVarObject_HEAD_INIT(0, 0)
  "grpc._cython.cygrpc.CallbackWrapper", /*tp_name*/
  sizeof(struct __pyx_obj_4grpc_7_cython_6cygrpc_CallbackWrapper), /*tp_basicsize*/
  0, /*tp_itemsize*/
  __pyx_tp_dealloc_4grpc_7_cython_6cygrpc_CallbackWrapper, /*tp_dealloc*/
  #if PY_VERSION_HEX < 0x030800b4
  0, /*tp_print*/
  #endif
  #if PY_VERSION_HEX >= 0x030800b4
  0, /*tp_vectorcall_offset*/
  #endif
  0, /*tp_getattr*/
  0, /*tp_setattr*/
  #if PY_MAJOR_VERSION < 3
  0, /*tp_compare*/
  #endif
  #if PY_MAJOR_VERSION >= 3
  0, /*tp_as_async*/
  #endif
  0, /*tp_repr*/
  0, /*tp_as_number*/
  0, /*tp_as_sequence*/
  0, /*tp_as_mapping*/
  0, /*tp_hash*/
  0, /*tp_call*/
  0, /*tp_str*/
  0, /*tp_getattro*/
  0, /*tp_setattro*/
  0, /*tp_as_buffer*/
  Py_TPFLAGS_DEFAULT|Py_TPFLAGS_HAVE_VERSION_TAG|Py_TPFLAGS_CHECKTYPES|Py_TPFLAGS_HAVE_NEWBUFFER|Py_TPFLAGS_BASETYPE|Py_TPFLAGS_HAVE_GC, /*tp_flags*/
  0, /*tp_doc*/
  __pyx_tp_traverse_4grpc_7_cython_6cygrpc_CallbackWrapper, /*tp_traverse*/
  __pyx_tp_clear_4grpc_7_cython_6cygrpc_CallbackWrapper, /*tp_clear*/
  0, /*tp_richcompare*/
  0, /*tp_weaklistoffset*/
  0, /*tp_iter*/
  0, /*tp_iternext*/
  __pyx_methods_4grpc_7_cython_6cygrpc_CallbackWrapper, /*tp_methods*/
  0, /*tp_members*/
  0, /*tp_getset*/
  0, /*tp_base*/
  0, /*tp_dict*/
  0, /*tp_descr_get*/
  0, /*tp_descr_set*/
  0, /*tp_dictoffset*/
  0, /*tp_init*/
  0, /*tp_alloc*/
  __pyx_tp_new_4grpc_7_cython_6cygrpc_CallbackWrapper, /*tp_new*/
  0, /*tp_free*/
  0, /*tp_is_gc*/
  0, /*tp_bases*/
  0, /*tp_mro*/
  0, /*tp_cache*/
  0, /*tp_subclasses*/
  0, /*tp_weaklist*/
  0, /*tp_del*/
  0, /*tp_version_tag*/
  #if PY_VERSION_HEX >= 0x030400a1
  0, /*tp_finalize*/
  #endif
  #if PY_VERSION_HEX >= 0x030800b1
  0, /*tp_vectorcall*/
  #endif
  #if PY_VERSION_HEX >= 0x030800b4 && PY_VERSION_HEX < 0x03090000
  0, /*tp_print*/
  #endif
};

static PyObject *__pyx_tp_new_4grpc_7_cython_6cygrpc_GrpcCallWrapper(PyTypeObject *t, CYTHON_UNUSED PyObject *a, CYTHON_UNUSED PyObject *k) {
  PyObject *o;
  if (likely((t->tp_flags & Py_TPFLAGS_IS_ABSTRACT) == 0)) {
    o = (*t->tp_alloc)(t, 0);
  } else {
    o = (PyObject *) PyBaseObject_Type.tp_new(t, __pyx_empty_tuple, 0);
  }
  if (unlikely(!o)) return 0;
  return o;
}

static void __pyx_tp_dealloc_4grpc_7_cython_6cygrpc_GrpcCallWrapper(PyObject *o) {
  #if CYTHON_USE_TP_FINALIZE
  if (unlikely(PyType_HasFeature(Py_TYPE(o), Py_TPFLAGS_HAVE_FINALIZE) && Py_TYPE(o)->tp_finalize) && (!PyType_IS_GC(Py_TYPE(o)) || !_PyGC_FINALIZED(o))) {
    if (PyObject_CallFinalizerFromDealloc(o)) return;
  }
  #endif
  (*Py_TYPE(o)->tp_free)(o);
}

static PyTypeObject __pyx_type_4grpc_7_cython_6cygrpc_GrpcCallWrapper = {
  PyVarObject_HEAD_INIT(0, 0)
  "grpc._cython.cygrpc.GrpcCallWrapper", /*tp_name*/
  sizeof(struct __pyx_obj_4grpc_7_cython_6cygrpc_GrpcCallWrapper), /*tp_basicsize*/
  0, /*tp_itemsize*/
  __pyx_tp_dealloc_4grpc_7_cython_6cygrpc_GrpcCallWrapper, /*tp_dealloc*/
  #if PY_VERSION_HEX < 0x030800b4
  0, /*tp_print*/
  #endif
  #if PY_VERSION_HEX >= 0x030800b4
  0, /*tp_vectorcall_offset*/
  #endif
  0, /*tp_getattr*/
  0, /*tp_setattr*/
  #if PY_MAJOR_VERSION < 3
  0, /*tp_compare*/
  #endif
  #if PY_MAJOR_VERSION >= 3
  0, /*tp_as_async*/
  #endif
  0, /*tp_repr*/
  0, /*tp_as_number*/
  0, /*tp_as_sequence*/
  0, /*tp_as_mapping*/
  0, /*tp_hash*/
  0, /*tp_call*/
  0, /*tp_str*/
  0, /*tp_getattro*/
  0, /*tp_setattro*/
  0, /*tp_as_buffer*/
  Py_TPFLAGS_DEFAULT|Py_TPFLAGS_HAVE_VERSION_TAG|Py_TPFLAGS_CHECKTYPES|Py_TPFLAGS_HAVE_NEWBUFFER|Py_TPFLAGS_BASETYPE, /*tp_flags*/
  0, /*tp_doc*/
  0, /*tp_traverse*/
  0, /*tp_clear*/
  0, /*tp_richcompare*/
  0, /*tp_weaklistoffset*/
  0, /*tp_iter*/
  0, /*tp_iternext*/
  0, /*tp_methods*/
  0, /*tp_members*/
  0, /*tp_getset*/
  0, /*tp_base*/
  0, /*tp_dict*/
  0, /*tp_descr_get*/
  0, /*tp_descr_set*/
  0, /*tp_dictoffset*/
  0, /*tp_init*/
  0, /*tp_alloc*/
  __pyx_tp_new_4grpc_7_cython_6cygrpc_GrpcCallWrapper, /*tp_new*/
  0, /*tp_free*/
  0, /*tp_is_gc*/
  0, /*tp_bases*/
  0, /*tp_mro*/
  0, /*tp_cache*/
  0, /*tp_subclasses*/
  0, /*tp_weaklist*/
  0, /*tp_del*/
  0, /*tp_version_tag*/
  #if PY_VERSION_HEX >= 0x030400a1
  0, /*tp_finalize*/
  #endif
  #if PY_VERSION_HEX >= 0x030800b1
  0, /*tp_vectorcall*/
  #endif
  #if PY_VERSION_HEX >= 0x030800b4 && PY_VERSION_HEX < 0x03090000
  0, /*tp_print*/
  #endif
};
static struct __pyx_vtabstruct_4grpc_7_cython_6cygrpc__AioCall __pyx_vtable_4grpc_7_cython_6cygrpc__AioCall;

static PyObject *__pyx_tp_new_4grpc_7_cython_6cygrpc__AioCall(PyTypeObject *t, PyObject *a, PyObject *k) {
  struct __pyx_obj_4grpc_7_cython_6cygrpc__AioCall *p;
  PyObject *o = __pyx_tp_new_4grpc_7_cython_6cygrpc_GrpcCallWrapper(t, a, k);
  if (unlikely(!o)) return 0;
  p = ((struct __pyx_obj_4grpc_7_cython_6cygrpc__AioCall *)o);
  p->__pyx_vtab = __pyx_vtabptr_4grpc_7_cython_6cygrpc__AioCall;
  p->_channel = ((struct __pyx_obj_4grpc_7_cython_6cygrpc_AioChannel *)Py_None); Py_INCREF(Py_None);
  p->_references = ((PyObject*)Py_None); Py_INCREF(Py_None);
  p->_deadline = Py_None; Py_INCREF(Py_None);
  p->_done_callbacks = ((PyObject*)Py_None); Py_INCREF(Py_None);
  p->_loop = Py_None; Py_INCREF(Py_None);
  p->_status = ((struct __pyx_obj_4grpc_7_cython_6cygrpc_AioRpcStatus *)Py_None); Py_INCREF(Py_None);
  p->_initial_metadata = ((PyObject*)Py_None); Py_INCREF(Py_None);
  p->_waiters_status = ((PyObject*)Py_None); Py_INCREF(Py_None);
  p->_waiters_initial_metadata = ((PyObject*)Py_None); Py_INCREF(Py_None);
  if (unlikely(__pyx_pw_4grpc_7_cython_6cygrpc_8_AioCall_1__cinit__(o, a, k) < 0)) goto bad;
  return o;
  bad:
  Py_DECREF(o); o = 0;
  return NULL;
}

static void __pyx_tp_dealloc_4grpc_7_cython_6cygrpc__AioCall(PyObject *o) {
  struct __pyx_obj_4grpc_7_cython_6cygrpc__AioCall *p = (struct __pyx_obj_4grpc_7_cython_6cygrpc__AioCall *)o;
  #if CYTHON_USE_TP_FINALIZE
  if (unlikely(PyType_HasFeature(Py_TYPE(o), Py_TPFLAGS_HAVE_FINALIZE) && Py_TYPE(o)->tp_finalize) && !_PyGC_FINALIZED(o)) {
    if (PyObject_CallFinalizerFromDealloc(o)) return;
  }
  #endif
  PyObject_GC_UnTrack(o);
  {
    PyObject *etype, *eval, *etb;
    PyErr_Fetch(&etype, &eval, &etb);
    __Pyx_SET_REFCNT(o, Py_REFCNT(o) + 1);
    __pyx_pw_4grpc_7_cython_6cygrpc_8_AioCall_3__dealloc__(o);
    __Pyx_SET_REFCNT(o, Py_REFCNT(o) - 1);
    PyErr_Restore(etype, eval, etb);
  }
  Py_CLEAR(p->_channel);
  Py_CLEAR(p->_references);
  Py_CLEAR(p->_deadline);
  Py_CLEAR(p->_done_callbacks);
  Py_CLEAR(p->_loop);
  Py_CLEAR(p->_status);
  Py_CLEAR(p->_initial_metadata);
  Py_CLEAR(p->_waiters_status);
  Py_CLEAR(p->_waiters_initial_metadata);
  #if CYTHON_USE_TYPE_SLOTS
  if (PyType_IS_GC(Py_TYPE(o)->tp_base))
  #endif
  PyObject_GC_Track(o);
  __pyx_tp_dealloc_4grpc_7_cython_6cygrpc_GrpcCallWrapper(o);
}

static int __pyx_tp_traverse_4grpc_7_cython_6cygrpc__AioCall(PyObject *o, visitproc v, void *a) {
  int e;
  struct __pyx_obj_4grpc_7_cython_6cygrpc__AioCall *p = (struct __pyx_obj_4grpc_7_cython_6cygrpc__AioCall *)o;
  e = ((likely(__pyx_ptype_4grpc_7_cython_6cygrpc_GrpcCallWrapper)) ? ((__pyx_ptype_4grpc_7_cython_6cygrpc_GrpcCallWrapper->tp_traverse) ? __pyx_ptype_4grpc_7_cython_6cygrpc_GrpcCallWrapper->tp_traverse(o, v, a) : 0) : __Pyx_call_next_tp_traverse(o, v, a, __pyx_tp_traverse_4grpc_7_cython_6cygrpc__AioCall)); if (e) return e;
  if (p->_channel) {
    e = (*v)(((PyObject *)p->_channel), a); if (e) return e;
  }
  if (p->_references) {
    e = (*v)(p->_references, a); if (e) return e;
  }
  if (p->_deadline) {
    e = (*v)(p->_deadline, a); if (e) return e;
  }
  if (p->_done_callbacks) {
    e = (*v)(p->_done_callbacks, a); if (e) return e;
  }
  if (p->_loop) {
    e = (*v)(p->_loop, a); if (e) return e;
  }
  if (p->_status) {
    e = (*v)(((PyObject *)p->_status), a); if (e) return e;
  }
  if (p->_initial_metadata) {
    e = (*v)(p->_initial_metadata, a); if (e) return e;
  }
  if (p->_waiters_status) {
    e = (*v)(p->_waiters_status, a); if (e) return e;
  }
  if (p->_waiters_initial_metadata) {
    e = (*v)(p->_waiters_initial_metadata, a); if (e) return e;
  }
  return 0;
}

static int __pyx_tp_clear_4grpc_7_cython_6cygrpc__AioCall(PyObject *o) {
  PyObject* tmp;
  struct __pyx_obj_4grpc_7_cython_6cygrpc__AioCall *p = (struct __pyx_obj_4grpc_7_cython_6cygrpc__AioCall *)o;
  if (likely(__pyx_ptype_4grpc_7_cython_6cygrpc_GrpcCallWrapper)) { if (__pyx_ptype_4grpc_7_cython_6cygrpc_GrpcCallWrapper->tp_clear) __pyx_ptype_4grpc_7_cython_6cygrpc_GrpcCallWrapper->tp_clear(o); } else __Pyx_call_next_tp_clear(o, __pyx_tp_clear_4grpc_7_cython_6cygrpc__AioCall);
  tmp = ((PyObject*)p->_channel);
  p->_channel = ((struct __pyx_obj_4grpc_7_cython_6cygrpc_AioChannel *)Py_None); Py_INCREF(Py_None);
  Py_XDECREF(tmp);
  tmp = ((PyObject*)p->_references);
  p->_references = ((PyObject*)Py_None); Py_INCREF(Py_None);
  Py_XDECREF(tmp);
  tmp = ((PyObject*)p->_deadline);
  p->_deadline = Py_None; Py_INCREF(Py_None);
  Py_XDECREF(tmp);
  tmp = ((PyObject*)p->_done_callbacks);
  p->_done_callbacks = ((PyObject*)Py_None); Py_INCREF(Py_None);
  Py_XDECREF(tmp);
  tmp = ((PyObject*)p->_loop);
  p->_loop = Py_None; Py_INCREF(Py_None);
  Py_XDECREF(tmp);
  tmp = ((PyObject*)p->_status);
  p->_status = ((struct __pyx_obj_4grpc_7_cython_6cygrpc_AioRpcStatus *)Py_None); Py_INCREF(Py_None);
  Py_XDECREF(tmp);
  tmp = ((PyObject*)p->_initial_metadata);
  p->_initial_metadata = ((PyObject*)Py_None); Py_INCREF(Py_None);
  Py_XDECREF(tmp);
  tmp = ((PyObject*)p->_waiters_status);
  p->_waiters_status = ((PyObject*)Py_None); Py_INCREF(Py_None);
  Py_XDECREF(tmp);
  tmp = ((PyObject*)p->_waiters_initial_metadata);
  p->_waiters_initial_metadata = ((PyObject*)Py_None); Py_INCREF(Py_None);
  Py_XDECREF(tmp);
  return 0;
}

static PyObject *__pyx_getprop_4grpc_7_cython_6cygrpc_8_AioCall__channel(PyObject *o, CYTHON_UNUSED void *x) {
  return __pyx_pw_4grpc_7_cython_6cygrpc_8_AioCall_8_channel_1__get__(o);
}

static PyObject *__pyx_getprop_4grpc_7_cython_6cygrpc_8_AioCall__status(PyObject *o, CYTHON_UNUSED void *x) {
  return __pyx_pw_4grpc_7_cython_6cygrpc_8_AioCall_7_status_1__get__(o);
}

static PyObject *__pyx_getprop_4grpc_7_cython_6cygrpc_8_AioCall__initial_metadata(PyObject *o, CYTHON_UNUSED void *x) {
  return __pyx_pw_4grpc_7_cython_6cygrpc_8_AioCall_17_initial_metadata_1__get__(o);
}

static PyMethodDef __pyx_methods_4grpc_7_cython_6cygrpc__AioCall[] = {
  {"_repr", (PyCFunction)__pyx_pw_4grpc_7_cython_6cygrpc_8_AioCall_5_repr, METH_NOARGS, __pyx_doc_4grpc_7_cython_6cygrpc_8_AioCall_4_repr},
  {"add_done_callback", (PyCFunction)__pyx_pw_4grpc_7_cython_6cygrpc_8_AioCall_11add_done_callback, METH_O, 0},
  {"time_remaining", (PyCFunction)__pyx_pw_4grpc_7_cython_6cygrpc_8_AioCall_13time_remaining, METH_NOARGS, 0},
  {"cancel", (PyCFunction)__pyx_pw_4grpc_7_cython_6cygrpc_8_AioCall_15cancel, METH_O, __pyx_doc_4grpc_7_cython_6cygrpc_8_AioCall_14cancel},
  {"done", (PyCFunction)__pyx_pw_4grpc_7_cython_6cygrpc_8_AioCall_17done, METH_NOARGS, __pyx_doc_4grpc_7_cython_6cygrpc_8_AioCall_16done},
  {"cancelled", (PyCFunction)__pyx_pw_4grpc_7_cython_6cygrpc_8_AioCall_19cancelled, METH_NOARGS, __pyx_doc_4grpc_7_cython_6cygrpc_8_AioCall_18cancelled},
  {"status", (PyCFunction)__pyx_pw_4grpc_7_cython_6cygrpc_8_AioCall_21status, METH_NOARGS, __pyx_doc_4grpc_7_cython_6cygrpc_8_AioCall_20status},
  {"is_ok", (PyCFunction)__pyx_pw_4grpc_7_cython_6cygrpc_8_AioCall_24is_ok, METH_NOARGS, __pyx_doc_4grpc_7_cython_6cygrpc_8_AioCall_23is_ok},
  {"initial_metadata", (PyCFunction)__pyx_pw_4grpc_7_cython_6cygrpc_8_AioCall_26initial_metadata, METH_NOARGS, __pyx_doc_4grpc_7_cython_6cygrpc_8_AioCall_25initial_metadata},
  {"is_locally_cancelled", (PyCFunction)__pyx_pw_4grpc_7_cython_6cygrpc_8_AioCall_29is_locally_cancelled, METH_NOARGS, __pyx_doc_4grpc_7_cython_6cygrpc_8_AioCall_28is_locally_cancelled},
  {"unary_unary", (PyCFunction)(void*)(PyCFunctionWithKeywords)__pyx_pw_4grpc_7_cython_6cygrpc_8_AioCall_31unary_unary, METH_VARARGS|METH_KEYWORDS, __pyx_doc_4grpc_7_cython_6cygrpc_8_AioCall_30unary_unary},
  {"_handle_status_once_received", (PyCFunction)__pyx_pw_4grpc_7_cython_6cygrpc_8_AioCall_34_handle_status_once_received, METH_NOARGS, __pyx_doc_4grpc_7_cython_6cygrpc_8_AioCall_33_handle_status_once_received},
  {"receive_serialized_message", (PyCFunction)__pyx_pw_4grpc_7_cython_6cygrpc_8_AioCall_37receive_serialized_message, METH_NOARGS, __pyx_doc_4grpc_7_cython_6cygrpc_8_AioCall_36receive_serialized_message},
  {"send_serialized_message", (PyCFunction)__pyx_pw_4grpc_7_cython_6cygrpc_8_AioCall_40send_serialized_message, METH_O, __pyx_doc_4grpc_7_cython_6cygrpc_8_AioCall_39send_serialized_message},
  {"send_receive_close", (PyCFunction)__pyx_pw_4grpc_7_cython_6cygrpc_8_AioCall_43send_receive_close, METH_NOARGS, __pyx_doc_4grpc_7_cython_6cygrpc_8_AioCall_42send_receive_close},
  {"initiate_unary_stream", (PyCFunction)(void*)(PyCFunctionWithKeywords)__pyx_pw_4grpc_7_cython_6cygrpc_8_AioCall_46initiate_unary_stream, METH_VARARGS|METH_KEYWORDS, __pyx_doc_4grpc_7_cython_6cygrpc_8_AioCall_45initiate_unary_stream},
  {"stream_unary", (PyCFunction)(void*)(PyCFunctionWithKeywords)__pyx_pw_4grpc_7_cython_6cygrpc_8_AioCall_49stream_unary, METH_VARARGS|METH_KEYWORDS, __pyx_doc_4grpc_7_cython_6cygrpc_8_AioCall_48stream_unary},
  {"initiate_stream_stream", (PyCFunction)(void*)(PyCFunctionWithKeywords)__pyx_pw_4grpc_7_cython_6cygrpc_8_AioCall_52initiate_stream_stream, METH_VARARGS|METH_KEYWORDS, __pyx_doc_4grpc_7_cython_6cygrpc_8_AioCall_51initiate_stream_stream},
  {"__reduce_cython__", (PyCFunction)__pyx_pw_4grpc_7_cython_6cygrpc_8_AioCall_55__reduce_cython__, METH_NOARGS, 0},
  {"__setstate_cython__", (PyCFunction)__pyx_pw_4grpc_7_cython_6cygrpc_8_AioCall_57__setstate_cython__, METH_O, 0},
  {0, 0, 0, 0}
};

static struct PyGetSetDef __pyx_getsets_4grpc_7_cython_6cygrpc__AioCall[] = {
  {(char *)"_channel", __pyx_getprop_4grpc_7_cython_6cygrpc_8_AioCall__channel, 0, (char *)0, 0},
  {(char *)"_status", __pyx_getprop_4grpc_7_cython_6cygrpc_8_AioCall__status, 0, (char *)0, 0},
  {(char *)"_initial_metadata", __pyx_getprop_4grpc_7_cython_6cygrpc_8_AioCall__initial_metadata, 0, (char *)0, 0},
  {0, 0, 0, 0, 0}
};

static PyTypeObject __pyx_type_4grpc_7_cython_6cygrpc__AioCall = {
  PyVarObject_HEAD_INIT(0, 0)
  "grpc._cython.cygrpc._AioCall", /*tp_name*/
  sizeof(struct __pyx_obj_4grpc_7_cython_6cygrpc__AioCall), /*tp_basicsize*/
  0, /*tp_itemsize*/
  __pyx_tp_dealloc_4grpc_7_cython_6cygrpc__AioCall, /*tp_dealloc*/
  #if PY_VERSION_HEX < 0x030800b4
  0, /*tp_print*/
  #endif
  #if PY_VERSION_HEX >= 0x030800b4
  0, /*tp_vectorcall_offset*/
  #endif
  0, /*tp_getattr*/
  0, /*tp_setattr*/
  #if PY_MAJOR_VERSION < 3
  0, /*tp_compare*/
  #endif
  #if PY_MAJOR_VERSION >= 3
  0, /*tp_as_async*/
  #endif
  __pyx_pw_4grpc_7_cython_6cygrpc_8_AioCall_7__repr__, /*tp_repr*/
  0, /*tp_as_number*/
  0, /*tp_as_sequence*/
  0, /*tp_as_mapping*/
  0, /*tp_hash*/
  0, /*tp_call*/
  __pyx_pw_4grpc_7_cython_6cygrpc_8_AioCall_9__str__, /*tp_str*/
  0, /*tp_getattro*/
  0, /*tp_setattro*/
  0, /*tp_as_buffer*/
  Py_TPFLAGS_DEFAULT|Py_TPFLAGS_HAVE_VERSION_TAG|Py_TPFLAGS_CHECKTYPES|Py_TPFLAGS_HAVE_NEWBUFFER|Py_TPFLAGS_BASETYPE|Py_TPFLAGS_HAVE_GC, /*tp_flags*/
  0, /*tp_doc*/
  __pyx_tp_traverse_4grpc_7_cython_6cygrpc__AioCall, /*tp_traverse*/
  __pyx_tp_clear_4grpc_7_cython_6cygrpc__AioCall, /*tp_clear*/
  0, /*tp_richcompare*/
  0, /*tp_weaklistoffset*/
  0, /*tp_iter*/
  0, /*tp_iternext*/
  __pyx_methods_4grpc_7_cython_6cygrpc__AioCall, /*tp_methods*/
  0, /*tp_members*/
  __pyx_getsets_4grpc_7_cython_6cygrpc__AioCall, /*tp_getset*/
  0, /*tp_base*/
  0, /*tp_dict*/
  0, /*tp_descr_get*/
  0, /*tp_descr_set*/
  0, /*tp_dictoffset*/
  0, /*tp_init*/
  0, /*tp_alloc*/
  __pyx_tp_new_4grpc_7_cython_6cygrpc__AioCall, /*tp_new*/
  0, /*tp_free*/
  0, /*tp_is_gc*/
  0, /*tp_bases*/
  0, /*tp_mro*/
  0, /*tp_cache*/
  0, /*tp_subclasses*/
  0, /*tp_weaklist*/
  0, /*tp_del*/
  0, /*tp_version_tag*/
  #if PY_VERSION_HEX >= 0x030400a1
  0, /*tp_finalize*/
  #endif
  #if PY_VERSION_HEX >= 0x030800b1
  0, /*tp_vectorcall*/
  #endif
  #if PY_VERSION_HEX >= 0x030800b4 && PY_VERSION_HEX < 0x03090000
  0, /*tp_print*/
  #endif
};

static PyObject *__pyx_tp_new_4grpc_7_cython_6cygrpc_AioChannel(PyTypeObject *t, PyObject *a, PyObject *k) {
  struct __pyx_obj_4grpc_7_cython_6cygrpc_AioChannel *p;
  PyObject *o;
  if (likely((t->tp_flags & Py_TPFLAGS_IS_ABSTRACT) == 0)) {
    o = (*t->tp_alloc)(t, 0);
  } else {
    o = (PyObject *) PyBaseObject_Type.tp_new(t, __pyx_empty_tuple, 0);
  }
  if (unlikely(!o)) return 0;
  p = ((struct __pyx_obj_4grpc_7_cython_6cygrpc_AioChannel *)o);
  p->loop = Py_None; Py_INCREF(Py_None);
  p->_target = ((PyObject*)Py_None); Py_INCREF(Py_None);
  if (unlikely(__pyx_pw_4grpc_7_cython_6cygrpc_10AioChannel_1__cinit__(o, a, k) < 0)) goto bad;
  return o;
  bad:
  Py_DECREF(o); o = 0;
  return NULL;
}

static void __pyx_tp_dealloc_4grpc_7_cython_6cygrpc_AioChannel(PyObject *o) {
  struct __pyx_obj_4grpc_7_cython_6cygrpc_AioChannel *p = (struct __pyx_obj_4grpc_7_cython_6cygrpc_AioChannel *)o;
  #if CYTHON_USE_TP_FINALIZE
  if (unlikely(PyType_HasFeature(Py_TYPE(o), Py_TPFLAGS_HAVE_FINALIZE) && Py_TYPE(o)->tp_finalize) && !_PyGC_FINALIZED(o)) {
    if (PyObject_CallFinalizerFromDealloc(o)) return;
  }
  #endif
  PyObject_GC_UnTrack(o);
  {
    PyObject *etype, *eval, *etb;
    PyErr_Fetch(&etype, &eval, &etb);
    __Pyx_SET_REFCNT(o, Py_REFCNT(o) + 1);
    __pyx_pw_4grpc_7_cython_6cygrpc_10AioChannel_3__dealloc__(o);
    __Pyx_SET_REFCNT(o, Py_REFCNT(o) - 1);
    PyErr_Restore(etype, eval, etb);
  }
  Py_CLEAR(p->loop);
  Py_CLEAR(p->_target);
  (*Py_TYPE(o)->tp_free)(o);
}

static int __pyx_tp_traverse_4grpc_7_cython_6cygrpc_AioChannel(PyObject *o, visitproc v, void *a) {
  int e;
  struct __pyx_obj_4grpc_7_cython_6cygrpc_AioChannel *p = (struct __pyx_obj_4grpc_7_cython_6cygrpc_AioChannel *)o;
  if (p->loop) {
    e = (*v)(p->loop, a); if (e) return e;
  }
  return 0;
}

static int __pyx_tp_clear_4grpc_7_cython_6cygrpc_AioChannel(PyObject *o) {
  PyObject* tmp;
  struct __pyx_obj_4grpc_7_cython_6cygrpc_AioChannel *p = (struct __pyx_obj_4grpc_7_cython_6cygrpc_AioChannel *)o;
  tmp = ((PyObject*)p->loop);
  p->loop = Py_None; Py_INCREF(Py_None);
  Py_XDECREF(tmp);
  return 0;
}

static PyMethodDef __pyx_methods_4grpc_7_cython_6cygrpc_AioChannel[] = {
  {"check_connectivity_state", (PyCFunction)__pyx_pw_4grpc_7_cython_6cygrpc_10AioChannel_7check_connectivity_state, METH_O, __pyx_doc_4grpc_7_cython_6cygrpc_10AioChannel_6check_connectivity_state},
  {"watch_connectivity_state", (PyCFunction)(void*)(PyCFunctionWithKeywords)__pyx_pw_4grpc_7_cython_6cygrpc_10AioChannel_9watch_connectivity_state, METH_VARARGS|METH_KEYWORDS, __pyx_doc_4grpc_7_cython_6cygrpc_10AioChannel_8watch_connectivity_state},
  {"closing", (PyCFunction)__pyx_pw_4grpc_7_cython_6cygrpc_10AioChannel_12closing, METH_NOARGS, 0},
  {"close", (PyCFunction)__pyx_pw_4grpc_7_cython_6cygrpc_10AioChannel_14close, METH_NOARGS, 0},
  {"closed", (PyCFunction)__pyx_pw_4grpc_7_cython_6cygrpc_10AioChannel_16closed, METH_NOARGS, 0},
  {"call", (PyCFunction)(void*)(PyCFunctionWithKeywords)__pyx_pw_4grpc_7_cython_6cygrpc_10AioChannel_18call, METH_VARARGS|METH_KEYWORDS, __pyx_doc_4grpc_7_cython_6cygrpc_10AioChannel_17call},
  {"__reduce_cython__", (PyCFunction)__pyx_pw_4grpc_7_cython_6cygrpc_10AioChannel_20__reduce_cython__, METH_NOARGS, 0},
  {"__setstate_cython__", (PyCFunction)__pyx_pw_4grpc_7_cython_6cygrpc_10AioChannel_22__setstate_cython__, METH_O, 0},
  {0, 0, 0, 0}
};

static PyTypeObject __pyx_type_4grpc_7_cython_6cygrpc_AioChannel = {
  PyVarObject_HEAD_INIT(0, 0)
  "grpc._cython.cygrpc.AioChannel", /*tp_name*/
  sizeof(struct __pyx_obj_4grpc_7_cython_6cygrpc_AioChannel), /*tp_basicsize*/
  0, /*tp_itemsize*/
  __pyx_tp_dealloc_4grpc_7_cython_6cygrpc_AioChannel, /*tp_dealloc*/
  #if PY_VERSION_HEX < 0x030800b4
  0, /*tp_print*/
  #endif
  #if PY_VERSION_HEX >= 0x030800b4
  0, /*tp_vectorcall_offset*/
  #endif
  0, /*tp_getattr*/
  0, /*tp_setattr*/
  #if PY_MAJOR_VERSION < 3
  0, /*tp_compare*/
  #endif
  #if PY_MAJOR_VERSION >= 3
  0, /*tp_as_async*/
  #endif
  __pyx_pw_4grpc_7_cython_6cygrpc_10AioChannel_5__repr__, /*tp_repr*/
  0, /*tp_as_number*/
  0, /*tp_as_sequence*/
  0, /*tp_as_mapping*/
  0, /*tp_hash*/
  0, /*tp_call*/
  0, /*tp_str*/
  0, /*tp_getattro*/
  0, /*tp_setattro*/
  0, /*tp_as_buffer*/
  Py_TPFLAGS_DEFAULT|Py_TPFLAGS_HAVE_VERSION_TAG|Py_TPFLAGS_CHECKTYPES|Py_TPFLAGS_HAVE_NEWBUFFER|Py_TPFLAGS_BASETYPE|Py_TPFLAGS_HAVE_GC, /*tp_flags*/
  0, /*tp_doc*/
  __pyx_tp_traverse_4grpc_7_cython_6cygrpc_AioChannel, /*tp_traverse*/
  __pyx_tp_clear_4grpc_7_cython_6cygrpc_AioChannel, /*tp_clear*/
  0, /*tp_richcompare*/
  0, /*tp_weaklistoffset*/
  0, /*tp_iter*/
  0, /*tp_iternext*/
  __pyx_methods_4grpc_7_cython_6cygrpc_AioChannel, /*tp_methods*/
  0, /*tp_members*/
  0, /*tp_getset*/
  0, /*tp_base*/
  0, /*tp_dict*/
  0, /*tp_descr_get*/
  0, /*tp_descr_set*/
  0, /*tp_dictoffset*/
  0, /*tp_init*/
  0, /*tp_alloc*/
  __pyx_tp_new_4grpc_7_cython_6cygrpc_AioChannel, /*tp_new*/
  0, /*tp_free*/
  0, /*tp_is_gc*/
  0, /*tp_bases*/
  0, /*tp_mro*/
  0, /*tp_cache*/
  0, /*tp_subclasses*/
  0, /*tp_weaklist*/
  0, /*tp_del*/
  0, /*tp_version_tag*/
  #if PY_VERSION_HEX >= 0x030400a1
  0, /*tp_finalize*/
  #endif
  #if PY_VERSION_HEX >= 0x030800b1
  0, /*tp_vectorcall*/
  #endif
  #if PY_VERSION_HEX >= 0x030800b4 && PY_VERSION_HEX < 0x03090000
  0, /*tp_print*/
  #endif
};

static PyObject *__pyx_tp_new_4grpc_7_cython_6cygrpc__HandlerCallDetails(PyTypeObject *t, PyObject *a, PyObject *k) {
  struct __pyx_obj_4grpc_7_cython_6cygrpc__HandlerCallDetails *p;
  PyObject *o;
  if (likely((t->tp_flags & Py_TPFLAGS_IS_ABSTRACT) == 0)) {
    o = (*t->tp_alloc)(t, 0);
  } else {
    o = (PyObject *) PyBaseObject_Type.tp_new(t, __pyx_empty_tuple, 0);
  }
  if (unlikely(!o)) return 0;
  p = ((struct __pyx_obj_4grpc_7_cython_6cygrpc__HandlerCallDetails *)o);
  p->method = ((PyObject*)Py_None); Py_INCREF(Py_None);
  p->invocation_metadata = ((PyObject*)Py_None); Py_INCREF(Py_None);
  if (unlikely(__pyx_pw_4grpc_7_cython_6cygrpc_19_HandlerCallDetails_1__cinit__(o, a, k) < 0)) goto bad;
  return o;
  bad:
  Py_DECREF(o); o = 0;
  return NULL;
}

static void __pyx_tp_dealloc_4grpc_7_cython_6cygrpc__HandlerCallDetails(PyObject *o) {
  struct __pyx_obj_4grpc_7_cython_6cygrpc__HandlerCallDetails *p = (struct __pyx_obj_4grpc_7_cython_6cygrpc__HandlerCallDetails *)o;
  #if CYTHON_USE_TP_FINALIZE
  if (unlikely(PyType_HasFeature(Py_TYPE(o), Py_TPFLAGS_HAVE_FINALIZE) && Py_TYPE(o)->tp_finalize) && !_PyGC_FINALIZED(o)) {
    if (PyObject_CallFinalizerFromDealloc(o)) return;
  }
  #endif
  PyObject_GC_UnTrack(o);
  Py_CLEAR(p->method);
  Py_CLEAR(p->invocation_metadata);
  (*Py_TYPE(o)->tp_free)(o);
}

static int __pyx_tp_traverse_4grpc_7_cython_6cygrpc__HandlerCallDetails(PyObject *o, visitproc v, void *a) {
  int e;
  struct __pyx_obj_4grpc_7_cython_6cygrpc__HandlerCallDetails *p = (struct __pyx_obj_4grpc_7_cython_6cygrpc__HandlerCallDetails *)o;
  if (p->invocation_metadata) {
    e = (*v)(p->invocation_metadata, a); if (e) return e;
  }
  return 0;
}

static int __pyx_tp_clear_4grpc_7_cython_6cygrpc__HandlerCallDetails(PyObject *o) {
  PyObject* tmp;
  struct __pyx_obj_4grpc_7_cython_6cygrpc__HandlerCallDetails *p = (struct __pyx_obj_4grpc_7_cython_6cygrpc__HandlerCallDetails *)o;
  tmp = ((PyObject*)p->invocation_metadata);
  p->invocation_metadata = ((PyObject*)Py_None); Py_INCREF(Py_None);
  Py_XDECREF(tmp);
  return 0;
}

static PyObject *__pyx_getprop_4grpc_7_cython_6cygrpc_19_HandlerCallDetails_method(PyObject *o, CYTHON_UNUSED void *x) {
  return __pyx_pw_4grpc_7_cython_6cygrpc_19_HandlerCallDetails_6method_1__get__(o);
}

static PyObject *__pyx_getprop_4grpc_7_cython_6cygrpc_19_HandlerCallDetails_invocation_metadata(PyObject *o, CYTHON_UNUSED void *x) {
  return __pyx_pw_4grpc_7_cython_6cygrpc_19_HandlerCallDetails_19invocation_metadata_1__get__(o);
}

static PyMethodDef __pyx_methods_4grpc_7_cython_6cygrpc__HandlerCallDetails[] = {
  {"__reduce_cython__", (PyCFunction)__pyx_pw_4grpc_7_cython_6cygrpc_19_HandlerCallDetails_3__reduce_cython__, METH_NOARGS, 0},
  {"__setstate_cython__", (PyCFunction)__pyx_pw_4grpc_7_cython_6cygrpc_19_HandlerCallDetails_5__setstate_cython__, METH_O, 0},
  {0, 0, 0, 0}
};

static struct PyGetSetDef __pyx_getsets_4grpc_7_cython_6cygrpc__HandlerCallDetails[] = {
  {(char *)"method", __pyx_getprop_4grpc_7_cython_6cygrpc_19_HandlerCallDetails_method, 0, (char *)0, 0},
  {(char *)"invocation_metadata", __pyx_getprop_4grpc_7_cython_6cygrpc_19_HandlerCallDetails_invocation_metadata, 0, (char *)0, 0},
  {0, 0, 0, 0, 0}
};

static PyTypeObject __pyx_type_4grpc_7_cython_6cygrpc__HandlerCallDetails = {
  PyVarObject_HEAD_INIT(0, 0)
  "grpc._cython.cygrpc._HandlerCallDetails", /*tp_name*/
  sizeof(struct __pyx_obj_4grpc_7_cython_6cygrpc__HandlerCallDetails), /*tp_basicsize*/
  0, /*tp_itemsize*/
  __pyx_tp_dealloc_4grpc_7_cython_6cygrpc__HandlerCallDetails, /*tp_dealloc*/
  #if PY_VERSION_HEX < 0x030800b4
  0, /*tp_print*/
  #endif
  #if PY_VERSION_HEX >= 0x030800b4
  0, /*tp_vectorcall_offset*/
  #endif
  0, /*tp_getattr*/
  0, /*tp_setattr*/
  #if PY_MAJOR_VERSION < 3
  0, /*tp_compare*/
  #endif
  #if PY_MAJOR_VERSION >= 3
  0, /*tp_as_async*/
  #endif
  0, /*tp_repr*/
  0, /*tp_as_number*/
  0, /*tp_as_sequence*/
  0, /*tp_as_mapping*/
  0, /*tp_hash*/
  0, /*tp_call*/
  0, /*tp_str*/
  0, /*tp_getattro*/
  0, /*tp_setattro*/
  0, /*tp_as_buffer*/
  Py_TPFLAGS_DEFAULT|Py_TPFLAGS_HAVE_VERSION_TAG|Py_TPFLAGS_CHECKTYPES|Py_TPFLAGS_HAVE_NEWBUFFER|Py_TPFLAGS_BASETYPE|Py_TPFLAGS_HAVE_GC, /*tp_flags*/
  0, /*tp_doc*/
  __pyx_tp_traverse_4grpc_7_cython_6cygrpc__HandlerCallDetails, /*tp_traverse*/
  __pyx_tp_clear_4grpc_7_cython_6cygrpc__HandlerCallDetails, /*tp_clear*/
  0, /*tp_richcompare*/
  0, /*tp_weaklistoffset*/
  0, /*tp_iter*/
  0, /*tp_iternext*/
  __pyx_methods_4grpc_7_cython_6cygrpc__HandlerCallDetails, /*tp_methods*/
  0, /*tp_members*/
  __pyx_getsets_4grpc_7_cython_6cygrpc__HandlerCallDetails, /*tp_getset*/
  0, /*tp_base*/
  0, /*tp_dict*/
  0, /*tp_descr_get*/
  0, /*tp_descr_set*/
  0, /*tp_dictoffset*/
  0, /*tp_init*/
  0, /*tp_alloc*/
  __pyx_tp_new_4grpc_7_cython_6cygrpc__HandlerCallDetails, /*tp_new*/
  0, /*tp_free*/
  0, /*tp_is_gc*/
  0, /*tp_bases*/
  0, /*tp_mro*/
  0, /*tp_cache*/
  0, /*tp_subclasses*/
  0, /*tp_weaklist*/
  0, /*tp_del*/
  0, /*tp_version_tag*/
  #if PY_VERSION_HEX >= 0x030400a1
  0, /*tp_finalize*/
  #endif
  #if PY_VERSION_HEX >= 0x030800b1
  0, /*tp_vectorcall*/
  #endif
  #if PY_VERSION_HEX >= 0x030800b4 && PY_VERSION_HEX < 0x03090000
  0, /*tp_print*/
  #endif
};
static struct __pyx_vtabstruct_4grpc_7_cython_6cygrpc_RPCState __pyx_vtable_4grpc_7_cython_6cygrpc_RPCState;

static PyObject *__pyx_tp_new_4grpc_7_cython_6cygrpc_RPCState(PyTypeObject *t, PyObject *a, PyObject *k) {
  struct __pyx_obj_4grpc_7_cython_6cygrpc_RPCState *p;
  PyObject *o = __pyx_tp_new_4grpc_7_cython_6cygrpc_GrpcCallWrapper(t, a, k);
  if (unlikely(!o)) return 0;
  p = ((struct __pyx_obj_4grpc_7_cython_6cygrpc_RPCState *)o);
  p->__pyx_vtab = __pyx_vtabptr_4grpc_7_cython_6cygrpc_RPCState;
  p->server = ((struct __pyx_obj_4grpc_7_cython_6cygrpc_AioServer *)Py_None); Py_INCREF(Py_None);
  p->abort_exception = Py_None; Py_INCREF(Py_None);
  p->status_details = ((PyObject*)Py_None); Py_INCREF(Py_None);
  p->trailing_metadata = ((PyObject*)Py_None); Py_INCREF(Py_None);
  p->compression_algorithm = Py_None; Py_INCREF(Py_None);
  if (unlikely(__pyx_pw_4grpc_7_cython_6cygrpc_8RPCState_1__cinit__(o, a, k) < 0)) goto bad;
  return o;
  bad:
  Py_DECREF(o); o = 0;
  return NULL;
}

static void __pyx_tp_dealloc_4grpc_7_cython_6cygrpc_RPCState(PyObject *o) {
  struct __pyx_obj_4grpc_7_cython_6cygrpc_RPCState *p = (struct __pyx_obj_4grpc_7_cython_6cygrpc_RPCState *)o;
  #if CYTHON_USE_TP_FINALIZE
  if (unlikely(PyType_HasFeature(Py_TYPE(o), Py_TPFLAGS_HAVE_FINALIZE) && Py_TYPE(o)->tp_finalize) && !_PyGC_FINALIZED(o)) {
    if (PyObject_CallFinalizerFromDealloc(o)) return;
  }
  #endif
  PyObject_GC_UnTrack(o);
  {
    PyObject *etype, *eval, *etb;
    PyErr_Fetch(&etype, &eval, &etb);
    __Pyx_SET_REFCNT(o, Py_REFCNT(o) + 1);
    __pyx_pw_4grpc_7_cython_6cygrpc_8RPCState_3__dealloc__(o);
    __Pyx_SET_REFCNT(o, Py_REFCNT(o) - 1);
    PyErr_Restore(etype, eval, etb);
  }
  Py_CLEAR(p->server);
  Py_CLEAR(p->abort_exception);
  Py_CLEAR(p->status_details);
  Py_CLEAR(p->trailing_metadata);
  Py_CLEAR(p->compression_algorithm);
  #if CYTHON_USE_TYPE_SLOTS
  if (PyType_IS_GC(Py_TYPE(o)->tp_base))
  #endif
  PyObject_GC_Track(o);
  __pyx_tp_dealloc_4grpc_7_cython_6cygrpc_GrpcCallWrapper(o);
}

static int __pyx_tp_traverse_4grpc_7_cython_6cygrpc_RPCState(PyObject *o, visitproc v, void *a) {
  int e;
  struct __pyx_obj_4grpc_7_cython_6cygrpc_RPCState *p = (struct __pyx_obj_4grpc_7_cython_6cygrpc_RPCState *)o;
  e = ((likely(__pyx_ptype_4grpc_7_cython_6cygrpc_GrpcCallWrapper)) ? ((__pyx_ptype_4grpc_7_cython_6cygrpc_GrpcCallWrapper->tp_traverse) ? __pyx_ptype_4grpc_7_cython_6cygrpc_GrpcCallWrapper->tp_traverse(o, v, a) : 0) : __Pyx_call_next_tp_traverse(o, v, a, __pyx_tp_traverse_4grpc_7_cython_6cygrpc_RPCState)); if (e) return e;
  if (p->server) {
    e = (*v)(((PyObject *)p->server), a); if (e) return e;
  }
  if (p->abort_exception) {
    e = (*v)(p->abort_exception, a); if (e) return e;
  }
  if (p->trailing_metadata) {
    e = (*v)(p->trailing_metadata, a); if (e) return e;
  }
  if (p->compression_algorithm) {
    e = (*v)(p->compression_algorithm, a); if (e) return e;
  }
  return 0;
}

static int __pyx_tp_clear_4grpc_7_cython_6cygrpc_RPCState(PyObject *o) {
  PyObject* tmp;
  struct __pyx_obj_4grpc_7_cython_6cygrpc_RPCState *p = (struct __pyx_obj_4grpc_7_cython_6cygrpc_RPCState *)o;
  if (likely(__pyx_ptype_4grpc_7_cython_6cygrpc_GrpcCallWrapper)) { if (__pyx_ptype_4grpc_7_cython_6cygrpc_GrpcCallWrapper->tp_clear) __pyx_ptype_4grpc_7_cython_6cygrpc_GrpcCallWrapper->tp_clear(o); } else __Pyx_call_next_tp_clear(o, __pyx_tp_clear_4grpc_7_cython_6cygrpc_RPCState);
  tmp = ((PyObject*)p->server);
  p->server = ((struct __pyx_obj_4grpc_7_cython_6cygrpc_AioServer *)Py_None); Py_INCREF(Py_None);
  Py_XDECREF(tmp);
  tmp = ((PyObject*)p->abort_exception);
  p->abort_exception = Py_None; Py_INCREF(Py_None);
  Py_XDECREF(tmp);
  tmp = ((PyObject*)p->trailing_metadata);
  p->trailing_metadata = ((PyObject*)Py_None); Py_INCREF(Py_None);
  Py_XDECREF(tmp);
  tmp = ((PyObject*)p->compression_algorithm);
  p->compression_algorithm = Py_None; Py_INCREF(Py_None);
  Py_XDECREF(tmp);
  return 0;
}

static PyMethodDef __pyx_methods_4grpc_7_cython_6cygrpc_RPCState[] = {
  {"__reduce_cython__", (PyCFunction)__pyx_pw_4grpc_7_cython_6cygrpc_8RPCState_5__reduce_cython__, METH_NOARGS, 0},
  {"__setstate_cython__", (PyCFunction)__pyx_pw_4grpc_7_cython_6cygrpc_8RPCState_7__setstate_cython__, METH_O, 0},
  {0, 0, 0, 0}
};

static PyTypeObject __pyx_type_4grpc_7_cython_6cygrpc_RPCState = {
  PyVarObject_HEAD_INIT(0, 0)
  "grpc._cython.cygrpc.RPCState", /*tp_name*/
  sizeof(struct __pyx_obj_4grpc_7_cython_6cygrpc_RPCState), /*tp_basicsize*/
  0, /*tp_itemsize*/
  __pyx_tp_dealloc_4grpc_7_cython_6cygrpc_RPCState, /*tp_dealloc*/
  #if PY_VERSION_HEX < 0x030800b4
  0, /*tp_print*/
  #endif
  #if PY_VERSION_HEX >= 0x030800b4
  0, /*tp_vectorcall_offset*/
  #endif
  0, /*tp_getattr*/
  0, /*tp_setattr*/
  #if PY_MAJOR_VERSION < 3
  0, /*tp_compare*/
  #endif
  #if PY_MAJOR_VERSION >= 3
  0, /*tp_as_async*/
  #endif
  0, /*tp_repr*/
  0, /*tp_as_number*/
  0, /*tp_as_sequence*/
  0, /*tp_as_mapping*/
  0, /*tp_hash*/
  0, /*tp_call*/
  0, /*tp_str*/
  0, /*tp_getattro*/
  0, /*tp_setattro*/
  0, /*tp_as_buffer*/
  Py_TPFLAGS_DEFAULT|Py_TPFLAGS_HAVE_VERSION_TAG|Py_TPFLAGS_CHECKTYPES|Py_TPFLAGS_HAVE_NEWBUFFER|Py_TPFLAGS_BASETYPE|Py_TPFLAGS_HAVE_GC, /*tp_flags*/
  0, /*tp_doc*/
  __pyx_tp_traverse_4grpc_7_cython_6cygrpc_RPCState, /*tp_traverse*/
  __pyx_tp_clear_4grpc_7_cython_6cygrpc_RPCState, /*tp_clear*/
  0, /*tp_richcompare*/
  0, /*tp_weaklistoffset*/
  0, /*tp_iter*/
  0, /*tp_iternext*/
  __pyx_methods_4grpc_7_cython_6cygrpc_RPCState, /*tp_methods*/
  0, /*tp_members*/
  0, /*tp_getset*/
  0, /*tp_base*/
  0, /*tp_dict*/
  0, /*tp_descr_get*/
  0, /*tp_descr_set*/
  0, /*tp_dictoffset*/
  0, /*tp_init*/
  0, /*tp_alloc*/
  __pyx_tp_new_4grpc_7_cython_6cygrpc_RPCState, /*tp_new*/
  0, /*tp_free*/
  0, /*tp_is_gc*/
  0, /*tp_bases*/
  0, /*tp_mro*/
  0, /*tp_cache*/
  0, /*tp_subclasses*/
  0, /*tp_weaklist*/
  0, /*tp_del*/
  0, /*tp_version_tag*/
  #if PY_VERSION_HEX >= 0x030400a1
  0, /*tp_finalize*/
  #endif
  #if PY_VERSION_HEX >= 0x030800b1
  0, /*tp_vectorcall*/
  #endif
  #if PY_VERSION_HEX >= 0x030800b4 && PY_VERSION_HEX < 0x03090000
  0, /*tp_print*/
  #endif
};

static PyObject *__pyx_tp_new_4grpc_7_cython_6cygrpc__ServicerContext(PyTypeObject *t, PyObject *a, PyObject *k) {
  struct __pyx_obj_4grpc_7_cython_6cygrpc__ServicerContext *p;
  PyObject *o;
  if (likely((t->tp_flags & Py_TPFLAGS_IS_ABSTRACT) == 0)) {
    o = (*t->tp_alloc)(t, 0);
  } else {
    o = (PyObject *) PyBaseObject_Type.tp_new(t, __pyx_empty_tuple, 0);
  }
  if (unlikely(!o)) return 0;
  p = ((struct __pyx_obj_4grpc_7_cython_6cygrpc__ServicerContext *)o);
  p->_rpc_state = ((struct __pyx_obj_4grpc_7_cython_6cygrpc_RPCState *)Py_None); Py_INCREF(Py_None);
  p->_loop = Py_None; Py_INCREF(Py_None);
  p->_request_deserializer = Py_None; Py_INCREF(Py_None);
  p->_response_serializer = Py_None; Py_INCREF(Py_None);
  if (unlikely(__pyx_pw_4grpc_7_cython_6cygrpc_16_ServicerContext_1__cinit__(o, a, k) < 0)) goto bad;
  return o;
  bad:
  Py_DECREF(o); o = 0;
  return NULL;
}

static void __pyx_tp_dealloc_4grpc_7_cython_6cygrpc__ServicerContext(PyObject *o) {
  struct __pyx_obj_4grpc_7_cython_6cygrpc__ServicerContext *p = (struct __pyx_obj_4grpc_7_cython_6cygrpc__ServicerContext *)o;
  #if CYTHON_USE_TP_FINALIZE
  if (unlikely(PyType_HasFeature(Py_TYPE(o), Py_TPFLAGS_HAVE_FINALIZE) && Py_TYPE(o)->tp_finalize) && !_PyGC_FINALIZED(o)) {
    if (PyObject_CallFinalizerFromDealloc(o)) return;
  }
  #endif
  PyObject_GC_UnTrack(o);
  Py_CLEAR(p->_rpc_state);
  Py_CLEAR(p->_loop);
  Py_CLEAR(p->_request_deserializer);
  Py_CLEAR(p->_response_serializer);
  (*Py_TYPE(o)->tp_free)(o);
}

static int __pyx_tp_traverse_4grpc_7_cython_6cygrpc__ServicerContext(PyObject *o, visitproc v, void *a) {
  int e;
  struct __pyx_obj_4grpc_7_cython_6cygrpc__ServicerContext *p = (struct __pyx_obj_4grpc_7_cython_6cygrpc__ServicerContext *)o;
  if (p->_rpc_state) {
    e = (*v)(((PyObject *)p->_rpc_state), a); if (e) return e;
  }
  if (p->_loop) {
    e = (*v)(p->_loop, a); if (e) return e;
  }
  if (p->_request_deserializer) {
    e = (*v)(p->_request_deserializer, a); if (e) return e;
  }
  if (p->_response_serializer) {
    e = (*v)(p->_response_serializer, a); if (e) return e;
  }
  return 0;
}

static int __pyx_tp_clear_4grpc_7_cython_6cygrpc__ServicerContext(PyObject *o) {
  PyObject* tmp;
  struct __pyx_obj_4grpc_7_cython_6cygrpc__ServicerContext *p = (struct __pyx_obj_4grpc_7_cython_6cygrpc__ServicerContext *)o;
  tmp = ((PyObject*)p->_rpc_state);
  p->_rpc_state = ((struct __pyx_obj_4grpc_7_cython_6cygrpc_RPCState *)Py_None); Py_INCREF(Py_None);
  Py_XDECREF(tmp);
  tmp = ((PyObject*)p->_loop);
  p->_loop = Py_None; Py_INCREF(Py_None);
  Py_XDECREF(tmp);
  tmp = ((PyObject*)p->_request_deserializer);
  p->_request_deserializer = Py_None; Py_INCREF(Py_None);
  Py_XDECREF(tmp);
  tmp = ((PyObject*)p->_response_serializer);
  p->_response_serializer = Py_None; Py_INCREF(Py_None);
  Py_XDECREF(tmp);
  return 0;
}

static PyMethodDef __pyx_methods_4grpc_7_cython_6cygrpc__ServicerContext[] = {
  {"read", (PyCFunction)__pyx_pw_4grpc_7_cython_6cygrpc_16_ServicerContext_3read, METH_NOARGS, 0},
  {"write", (PyCFunction)__pyx_pw_4grpc_7_cython_6cygrpc_16_ServicerContext_6write, METH_O, 0},
  {"send_initial_metadata", (PyCFunction)__pyx_pw_4grpc_7_cython_6cygrpc_16_ServicerContext_9send_initial_metadata, METH_O, 0},
  {"abort", (PyCFunction)(void*)(PyCFunctionWithKeywords)__pyx_pw_4grpc_7_cython_6cygrpc_16_ServicerContext_12abort, METH_VARARGS|METH_KEYWORDS, 0},
  {"abort_with_status", (PyCFunction)__pyx_pw_4grpc_7_cython_6cygrpc_16_ServicerContext_15abort_with_status, METH_O, 0},
  {"set_trailing_metadata", (PyCFunction)__pyx_pw_4grpc_7_cython_6cygrpc_16_ServicerContext_18set_trailing_metadata, METH_O, 0},
  {"trailing_metadata", (PyCFunction)__pyx_pw_4grpc_7_cython_6cygrpc_16_ServicerContext_20trailing_metadata, METH_NOARGS, 0},
  {"invocation_metadata", (PyCFunction)__pyx_pw_4grpc_7_cython_6cygrpc_16_ServicerContext_22invocation_metadata, METH_NOARGS, 0},
  {"set_code", (PyCFunction)__pyx_pw_4grpc_7_cython_6cygrpc_16_ServicerContext_24set_code, METH_O, 0},
  {"code", (PyCFunction)__pyx_pw_4grpc_7_cython_6cygrpc_16_ServicerContext_26code, METH_NOARGS, 0},
  {"set_details", (PyCFunction)__pyx_pw_4grpc_7_cython_6cygrpc_16_ServicerContext_28set_details, METH_O, 0},
  {"details", (PyCFunction)__pyx_pw_4grpc_7_cython_6cygrpc_16_ServicerContext_30details, METH_NOARGS, 0},
  {"set_compression", (PyCFunction)__pyx_pw_4grpc_7_cython_6cygrpc_16_ServicerContext_32set_compression, METH_O, 0},
  {"disable_next_message_compression", (PyCFunction)__pyx_pw_4grpc_7_cython_6cygrpc_16_ServicerContext_34disable_next_message_compression, METH_NOARGS, 0},
  {"peer", (PyCFunction)__pyx_pw_4grpc_7_cython_6cygrpc_16_ServicerContext_36peer, METH_NOARGS, 0},
  {"peer_identities", (PyCFunction)__pyx_pw_4grpc_7_cython_6cygrpc_16_ServicerContext_38peer_identities, METH_NOARGS, 0},
  {"peer_identity_key", (PyCFunction)__pyx_pw_4grpc_7_cython_6cygrpc_16_ServicerContext_40peer_identity_key, METH_NOARGS, 0},
  {"auth_context", (PyCFunction)__pyx_pw_4grpc_7_cython_6cygrpc_16_ServicerContext_42auth_context, METH_NOARGS, 0},
  {"time_remaining", (PyCFunction)__pyx_pw_4grpc_7_cython_6cygrpc_16_ServicerContext_44time_remaining, METH_NOARGS, 0},
  {"__reduce_cython__", (PyCFunction)__pyx_pw_4grpc_7_cython_6cygrpc_16_ServicerContext_46__reduce_cython__, METH_NOARGS, 0},
  {"__setstate_cython__", (PyCFunction)__pyx_pw_4grpc_7_cython_6cygrpc_16_ServicerContext_48__setstate_cython__, METH_O, 0},
  {0, 0, 0, 0}
};

static PyTypeObject __pyx_type_4grpc_7_cython_6cygrpc__ServicerContext = {
  PyVarObject_HEAD_INIT(0, 0)
  "grpc._cython.cygrpc._ServicerContext", /*tp_name*/
  sizeof(struct __pyx_obj_4grpc_7_cython_6cygrpc__ServicerContext), /*tp_basicsize*/
  0, /*tp_itemsize*/
  __pyx_tp_dealloc_4grpc_7_cython_6cygrpc__ServicerContext, /*tp_dealloc*/
  #if PY_VERSION_HEX < 0x030800b4
  0, /*tp_print*/
  #endif
  #if PY_VERSION_HEX >= 0x030800b4
  0, /*tp_vectorcall_offset*/
  #endif
  0, /*tp_getattr*/
  0, /*tp_setattr*/
  #if PY_MAJOR_VERSION < 3
  0, /*tp_compare*/
  #endif
  #if PY_MAJOR_VERSION >= 3
  0, /*tp_as_async*/
  #endif
  0, /*tp_repr*/
  0, /*tp_as_number*/
  0, /*tp_as_sequence*/
  0, /*tp_as_mapping*/
  0, /*tp_hash*/
  0, /*tp_call*/
  0, /*tp_str*/
  0, /*tp_getattro*/
  0, /*tp_setattro*/
  0, /*tp_as_buffer*/
  Py_TPFLAGS_DEFAULT|Py_TPFLAGS_HAVE_VERSION_TAG|Py_TPFLAGS_CHECKTYPES|Py_TPFLAGS_HAVE_NEWBUFFER|Py_TPFLAGS_BASETYPE|Py_TPFLAGS_HAVE_GC, /*tp_flags*/
  0, /*tp_doc*/
  __pyx_tp_traverse_4grpc_7_cython_6cygrpc__ServicerContext, /*tp_traverse*/
  __pyx_tp_clear_4grpc_7_cython_6cygrpc__ServicerContext, /*tp_clear*/
  0, /*tp_richcompare*/
  0, /*tp_weaklistoffset*/
  0, /*tp_iter*/
  0, /*tp_iternext*/
  __pyx_methods_4grpc_7_cython_6cygrpc__ServicerContext, /*tp_methods*/
  0, /*tp_members*/
  0, /*tp_getset*/
  0, /*tp_base*/
  0, /*tp_dict*/
  0, /*tp_descr_get*/
  0, /*tp_descr_set*/
  0, /*tp_dictoffset*/
  0, /*tp_init*/
  0, /*tp_alloc*/
  __pyx_tp_new_4grpc_7_cython_6cygrpc__ServicerContext, /*tp_new*/
  0, /*tp_free*/
  0, /*tp_is_gc*/
  0, /*tp_bases*/
  0, /*tp_mro*/
  0, /*tp_cache*/
  0, /*tp_subclasses*/
  0, /*tp_weaklist*/
  0, /*tp_del*/
  0, /*tp_version_tag*/
  #if PY_VERSION_HEX >= 0x030400a1
  0, /*tp_finalize*/
  #endif
  #if PY_VERSION_HEX >= 0x030800b1
  0, /*tp_vectorcall*/
  #endif
  #if PY_VERSION_HEX >= 0x030800b4 && PY_VERSION_HEX < 0x03090000
  0, /*tp_print*/
  #endif
};

static PyObject *__pyx_tp_new_4grpc_7_cython_6cygrpc__SyncServicerContext(PyTypeObject *t, PyObject *a, PyObject *k) {
  struct __pyx_obj_4grpc_7_cython_6cygrpc__SyncServicerContext *p;
  PyObject *o;
  if (likely((t->tp_flags & Py_TPFLAGS_IS_ABSTRACT) == 0)) {
    o = (*t->tp_alloc)(t, 0);
  } else {
    o = (PyObject *) PyBaseObject_Type.tp_new(t, __pyx_empty_tuple, 0);
  }
  if (unlikely(!o)) return 0;
  p = ((struct __pyx_obj_4grpc_7_cython_6cygrpc__SyncServicerContext *)o);
  p->_context = ((struct __pyx_obj_4grpc_7_cython_6cygrpc__ServicerContext *)Py_None); Py_INCREF(Py_None);
  p->_callbacks = ((PyObject*)Py_None); Py_INCREF(Py_None);
  p->_loop = Py_None; Py_INCREF(Py_None);
  if (unlikely(__pyx_pw_4grpc_7_cython_6cygrpc_20_SyncServicerContext_1__cinit__(o, a, k) < 0)) goto bad;
  return o;
  bad:
  Py_DECREF(o); o = 0;
  return NULL;
}

static void __pyx_tp_dealloc_4grpc_7_cython_6cygrpc__SyncServicerContext(PyObject *o) {
  struct __pyx_obj_4grpc_7_cython_6cygrpc__SyncServicerContext *p = (struct __pyx_obj_4grpc_7_cython_6cygrpc__SyncServicerContext *)o;
  #if CYTHON_USE_TP_FINALIZE
  if (unlikely(PyType_HasFeature(Py_TYPE(o), Py_TPFLAGS_HAVE_FINALIZE) && Py_TYPE(o)->tp_finalize) && !_PyGC_FINALIZED(o)) {
    if (PyObject_CallFinalizerFromDealloc(o)) return;
  }
  #endif
  PyObject_GC_UnTrack(o);
  Py_CLEAR(p->_context);
  Py_CLEAR(p->_callbacks);
  Py_CLEAR(p->_loop);
  (*Py_TYPE(o)->tp_free)(o);
}

static int __pyx_tp_traverse_4grpc_7_cython_6cygrpc__SyncServicerContext(PyObject *o, visitproc v, void *a) {
  int e;
  struct __pyx_obj_4grpc_7_cython_6cygrpc__SyncServicerContext *p = (struct __pyx_obj_4grpc_7_cython_6cygrpc__SyncServicerContext *)o;
  if (p->_context) {
    e = (*v)(((PyObject *)p->_context), a); if (e) return e;
  }
  if (p->_callbacks) {
    e = (*v)(p->_callbacks, a); if (e) return e;
  }
  if (p->_loop) {
    e = (*v)(p->_loop, a); if (e) return e;
  }
  return 0;
}

static int __pyx_tp_clear_4grpc_7_cython_6cygrpc__SyncServicerContext(PyObject *o) {
  PyObject* tmp;
  struct __pyx_obj_4grpc_7_cython_6cygrpc__SyncServicerContext *p = (struct __pyx_obj_4grpc_7_cython_6cygrpc__SyncServicerContext *)o;
  tmp = ((PyObject*)p->_context);
  p->_context = ((struct __pyx_obj_4grpc_7_cython_6cygrpc__ServicerContext *)Py_None); Py_INCREF(Py_None);
  Py_XDECREF(tmp);
  tmp = ((PyObject*)p->_callbacks);
  p->_callbacks = ((PyObject*)Py_None); Py_INCREF(Py_None);
  Py_XDECREF(tmp);
  tmp = ((PyObject*)p->_loop);
  p->_loop = Py_None; Py_INCREF(Py_None);
  Py_XDECREF(tmp);
  return 0;
}

static PyMethodDef __pyx_methods_4grpc_7_cython_6cygrpc__SyncServicerContext[] = {
  {"abort", (PyCFunction)(void*)(PyCFunctionWithKeywords)__pyx_pw_4grpc_7_cython_6cygrpc_20_SyncServicerContext_3abort, METH_VARARGS|METH_KEYWORDS, 0},
  {"send_initial_metadata", (PyCFunction)__pyx_pw_4grpc_7_cython_6cygrpc_20_SyncServicerContext_5send_initial_metadata, METH_O, 0},
  {"set_trailing_metadata", (PyCFunction)__pyx_pw_4grpc_7_cython_6cygrpc_20_SyncServicerContext_7set_trailing_metadata, METH_O, 0},
  {"invocation_metadata", (PyCFunction)__pyx_pw_4grpc_7_cython_6cygrpc_20_SyncServicerContext_9invocation_metadata, METH_NOARGS, 0},
  {"set_code", (PyCFunction)__pyx_pw_4grpc_7_cython_6cygrpc_20_SyncServicerContext_11set_code, METH_O, 0},
  {"set_details", (PyCFunction)__pyx_pw_4grpc_7_cython_6cygrpc_20_SyncServicerContext_13set_details, METH_O, 0},
  {"set_compression", (PyCFunction)__pyx_pw_4grpc_7_cython_6cygrpc_20_SyncServicerContext_15set_compression, METH_O, 0},
  {"disable_next_message_compression", (PyCFunction)__pyx_pw_4grpc_7_cython_6cygrpc_20_SyncServicerContext_17disable_next_message_compression, METH_NOARGS, 0},
  {"add_callback", (PyCFunction)__pyx_pw_4grpc_7_cython_6cygrpc_20_SyncServicerContext_19add_callback, METH_O, 0},
  {"peer", (PyCFunction)__pyx_pw_4grpc_7_cython_6cygrpc_20_SyncServicerContext_21peer, METH_NOARGS, 0},
  {"peer_identities", (PyCFunction)__pyx_pw_4grpc_7_cython_6cygrpc_20_SyncServicerContext_23peer_identities, METH_NOARGS, 0},
  {"peer_identity_key", (PyCFunction)__pyx_pw_4grpc_7_cython_6cygrpc_20_SyncServicerContext_25peer_identity_key, METH_NOARGS, 0},
  {"auth_context", (PyCFunction)__pyx_pw_4grpc_7_cython_6cygrpc_20_SyncServicerContext_27auth_context, METH_NOARGS, 0},
  {"time_remaining", (PyCFunction)__pyx_pw_4grpc_7_cython_6cygrpc_20_SyncServicerContext_29time_remaining, METH_NOARGS, 0},
  {"__reduce_cython__", (PyCFunction)__pyx_pw_4grpc_7_cython_6cygrpc_20_SyncServicerContext_31__reduce_cython__, METH_NOARGS, 0},
  {"__setstate_cython__", (PyCFunction)__pyx_pw_4grpc_7_cython_6cygrpc_20_SyncServicerContext_33__setstate_cython__, METH_O, 0},
  {0, 0, 0, 0}
};

static PyTypeObject __pyx_type_4grpc_7_cython_6cygrpc__SyncServicerContext = {
  PyVarObject_HEAD_INIT(0, 0)
  "grpc._cython.cygrpc._SyncServicerContext", /*tp_name*/
  sizeof(struct __pyx_obj_4grpc_7_cython_6cygrpc__SyncServicerContext), /*tp_basicsize*/
  0, /*tp_itemsize*/
  __pyx_tp_dealloc_4grpc_7_cython_6cygrpc__SyncServicerContext, /*tp_dealloc*/
  #if PY_VERSION_HEX < 0x030800b4
  0, /*tp_print*/
  #endif
  #if PY_VERSION_HEX >= 0x030800b4
  0, /*tp_vectorcall_offset*/
  #endif
  0, /*tp_getattr*/
  0, /*tp_setattr*/
  #if PY_MAJOR_VERSION < 3
  0, /*tp_compare*/
  #endif
  #if PY_MAJOR_VERSION >= 3
  0, /*tp_as_async*/
  #endif
  0, /*tp_repr*/
  0, /*tp_as_number*/
  0, /*tp_as_sequence*/
  0, /*tp_as_mapping*/
  0, /*tp_hash*/
  0, /*tp_call*/
  0, /*tp_str*/
  0, /*tp_getattro*/
  0, /*tp_setattro*/
  0, /*tp_as_buffer*/
  Py_TPFLAGS_DEFAULT|Py_TPFLAGS_HAVE_VERSION_TAG|Py_TPFLAGS_CHECKTYPES|Py_TPFLAGS_HAVE_NEWBUFFER|Py_TPFLAGS_BASETYPE|Py_TPFLAGS_HAVE_GC, /*tp_flags*/
  "Sync servicer context for sync handler compatibility.", /*tp_doc*/
  __pyx_tp_traverse_4grpc_7_cython_6cygrpc__SyncServicerContext, /*tp_traverse*/
  __pyx_tp_clear_4grpc_7_cython_6cygrpc__SyncServicerContext, /*tp_clear*/
  0, /*tp_richcompare*/
  0, /*tp_weaklistoffset*/
  0, /*tp_iter*/
  0, /*tp_iternext*/
  __pyx_methods_4grpc_7_cython_6cygrpc__SyncServicerContext, /*tp_methods*/
  0, /*tp_members*/
  0, /*tp_getset*/
  0, /*tp_base*/
  0, /*tp_dict*/
  0, /*tp_descr_get*/
  0, /*tp_descr_set*/
  0, /*tp_dictoffset*/
  0, /*tp_init*/
  0, /*tp_alloc*/
  __pyx_tp_new_4grpc_7_cython_6cygrpc__SyncServicerContext, /*tp_new*/
  0, /*tp_free*/
  0, /*tp_is_gc*/
  0, /*tp_bases*/
  0, /*tp_mro*/
  0, /*tp_cache*/
  0, /*tp_subclasses*/
  0, /*tp_weaklist*/
  0, /*tp_del*/
  0, /*tp_version_tag*/
  #if PY_VERSION_HEX >= 0x030400a1
  0, /*tp_finalize*/
  #endif
  #if PY_VERSION_HEX >= 0x030800b1
  0, /*tp_vectorcall*/
  #endif
  #if PY_VERSION_HEX >= 0x030800b4 && PY_VERSION_HEX < 0x03090000
  0, /*tp_print*/
  #endif
};

static PyObject *__pyx_tp_new_4grpc_7_cython_6cygrpc__MessageReceiver(PyTypeObject *t, PyObject *a, PyObject *k) {
  struct __pyx_obj_4grpc_7_cython_6cygrpc__MessageReceiver *p;
  PyObject *o;
  if (likely((t->tp_flags & Py_TPFLAGS_IS_ABSTRACT) == 0)) {
    o = (*t->tp_alloc)(t, 0);
  } else {
    o = (PyObject *) PyBaseObject_Type.tp_new(t, __pyx_empty_tuple, 0);
  }
  if (unlikely(!o)) return 0;
  p = ((struct __pyx_obj_4grpc_7_cython_6cygrpc__MessageReceiver *)o);
  p->_servicer_context = ((struct __pyx_obj_4grpc_7_cython_6cygrpc__ServicerContext *)Py_None); Py_INCREF(Py_None);
  p->_agen = Py_None; Py_INCREF(Py_None);
  if (unlikely(__pyx_pw_4grpc_7_cython_6cygrpc_16_MessageReceiver_1__cinit__(o, a, k) < 0)) goto bad;
  return o;
  bad:
  Py_DECREF(o); o = 0;
  return NULL;
}

static void __pyx_tp_dealloc_4grpc_7_cython_6cygrpc__MessageReceiver(PyObject *o) {
  struct __pyx_obj_4grpc_7_cython_6cygrpc__MessageReceiver *p = (struct __pyx_obj_4grpc_7_cython_6cygrpc__MessageReceiver *)o;
  #if CYTHON_USE_TP_FINALIZE
  if (unlikely(PyType_HasFeature(Py_TYPE(o), Py_TPFLAGS_HAVE_FINALIZE) && Py_TYPE(o)->tp_finalize) && !_PyGC_FINALIZED(o)) {
    if (PyObject_CallFinalizerFromDealloc(o)) return;
  }
  #endif
  PyObject_GC_UnTrack(o);
  Py_CLEAR(p->_servicer_context);
  Py_CLEAR(p->_agen);
  (*Py_TYPE(o)->tp_free)(o);
}

static int __pyx_tp_traverse_4grpc_7_cython_6cygrpc__MessageReceiver(PyObject *o, visitproc v, void *a) {
  int e;
  struct __pyx_obj_4grpc_7_cython_6cygrpc__MessageReceiver *p = (struct __pyx_obj_4grpc_7_cython_6cygrpc__MessageReceiver *)o;
  if (p->_servicer_context) {
    e = (*v)(((PyObject *)p->_servicer_context), a); if (e) return e;
  }
  if (p->_agen) {
    e = (*v)(p->_agen, a); if (e) return e;
  }
  return 0;
}

static int __pyx_tp_clear_4grpc_7_cython_6cygrpc__MessageReceiver(PyObject *o) {
  PyObject* tmp;
  struct __pyx_obj_4grpc_7_cython_6cygrpc__MessageReceiver *p = (struct __pyx_obj_4grpc_7_cython_6cygrpc__MessageReceiver *)o;
  tmp = ((PyObject*)p->_servicer_context);
  p->_servicer_context = ((struct __pyx_obj_4grpc_7_cython_6cygrpc__ServicerContext *)Py_None); Py_INCREF(Py_None);
  Py_XDECREF(tmp);
  tmp = ((PyObject*)p->_agen);
  p->_agen = Py_None; Py_INCREF(Py_None);
  Py_XDECREF(tmp);
  return 0;
}

static PyObject *__pyx_specialmethod___pyx_pw_4grpc_7_cython_6cygrpc_16_MessageReceiver_6__aiter__(PyObject *self, CYTHON_UNUSED PyObject *arg) {return __pyx_pw_4grpc_7_cython_6cygrpc_16_MessageReceiver_6__aiter__(self);}
static PyObject *__pyx_specialmethod___pyx_pw_4grpc_7_cython_6cygrpc_16_MessageReceiver_8__anext__(PyObject *self, CYTHON_UNUSED PyObject *arg) {return __pyx_pw_4grpc_7_cython_6cygrpc_16_MessageReceiver_8__anext__(self);}

static PyMethodDef __pyx_methods_4grpc_7_cython_6cygrpc__MessageReceiver[] = {
  {"_async_message_receiver", (PyCFunction)__pyx_pw_4grpc_7_cython_6cygrpc_16_MessageReceiver_3_async_message_receiver, METH_NOARGS, __pyx_doc_4grpc_7_cython_6cygrpc_16_MessageReceiver_2_async_message_receiver},
  {"__aiter__", (PyCFunction)__pyx_specialmethod___pyx_pw_4grpc_7_cython_6cygrpc_16_MessageReceiver_6__aiter__, METH_NOARGS|METH_COEXIST, 0},
  {"__anext__", (PyCFunction)__pyx_specialmethod___pyx_pw_4grpc_7_cython_6cygrpc_16_MessageReceiver_8__anext__, METH_NOARGS|METH_COEXIST, 0},
  {"__reduce_cython__", (PyCFunction)__pyx_pw_4grpc_7_cython_6cygrpc_16_MessageReceiver_11__reduce_cython__, METH_NOARGS, 0},
  {"__setstate_cython__", (PyCFunction)__pyx_pw_4grpc_7_cython_6cygrpc_16_MessageReceiver_13__setstate_cython__, METH_O, 0},
  {0, 0, 0, 0}
};

#if PY_MAJOR_VERSION >= 3
static __Pyx_PyAsyncMethodsStruct __pyx_tp_as_async__MessageReceiver = {
  0, /*am_await*/
  __pyx_pw_4grpc_7_cython_6cygrpc_16_MessageReceiver_6__aiter__, /*am_aiter*/
  __pyx_pw_4grpc_7_cython_6cygrpc_16_MessageReceiver_8__anext__, /*am_anext*/
};
#endif

static PyTypeObject __pyx_type_4grpc_7_cython_6cygrpc__MessageReceiver = {
  PyVarObject_HEAD_INIT(0, 0)
  "grpc._cython.cygrpc._MessageReceiver", /*tp_name*/
  sizeof(struct __pyx_obj_4grpc_7_cython_6cygrpc__MessageReceiver), /*tp_basicsize*/
  0, /*tp_itemsize*/
  __pyx_tp_dealloc_4grpc_7_cython_6cygrpc__MessageReceiver, /*tp_dealloc*/
  #if PY_VERSION_HEX < 0x030800b4
  0, /*tp_print*/
  #endif
  #if PY_VERSION_HEX >= 0x030800b4
  0, /*tp_vectorcall_offset*/
  #endif
  0, /*tp_getattr*/
  0, /*tp_setattr*/
  #if PY_MAJOR_VERSION < 3
  0, /*tp_compare*/
  #endif
  #if PY_MAJOR_VERSION >= 3
  &__pyx_tp_as_async__MessageReceiver, /*tp_as_async*/
  #endif
  0, /*tp_repr*/
  0, /*tp_as_number*/
  0, /*tp_as_sequence*/
  0, /*tp_as_mapping*/
  0, /*tp_hash*/
  0, /*tp_call*/
  0, /*tp_str*/
  0, /*tp_getattro*/
  0, /*tp_setattro*/
  0, /*tp_as_buffer*/
  Py_TPFLAGS_DEFAULT|Py_TPFLAGS_HAVE_VERSION_TAG|Py_TPFLAGS_CHECKTYPES|Py_TPFLAGS_HAVE_NEWBUFFER|Py_TPFLAGS_BASETYPE|Py_TPFLAGS_HAVE_GC, /*tp_flags*/
  "Bridge between the async generator API and the reader-writer API.", /*tp_doc*/
  __pyx_tp_traverse_4grpc_7_cython_6cygrpc__MessageReceiver, /*tp_traverse*/
  __pyx_tp_clear_4grpc_7_cython_6cygrpc__MessageReceiver, /*tp_clear*/
  0, /*tp_richcompare*/
  0, /*tp_weaklistoffset*/
  0, /*tp_iter*/
  0, /*tp_iternext*/
  __pyx_methods_4grpc_7_cython_6cygrpc__MessageReceiver, /*tp_methods*/
  0, /*tp_members*/
  0, /*tp_getset*/
  0, /*tp_base*/
  0, /*tp_dict*/
  0, /*tp_descr_get*/
  0, /*tp_descr_set*/
  0, /*tp_dictoffset*/
  0, /*tp_init*/
  0, /*tp_alloc*/
  __pyx_tp_new_4grpc_7_cython_6cygrpc__MessageReceiver, /*tp_new*/
  0, /*tp_free*/
  0, /*tp_is_gc*/
  0, /*tp_bases*/
  0, /*tp_mro*/
  0, /*tp_cache*/
  0, /*tp_subclasses*/
  0, /*tp_weaklist*/
  0, /*tp_del*/
  0, /*tp_version_tag*/
  #if PY_VERSION_HEX >= 0x030400a1
  0, /*tp_finalize*/
  #endif
  #if PY_VERSION_HEX >= 0x030800b1
  0, /*tp_vectorcall*/
  #endif
  #if PY_VERSION_HEX >= 0x030800b4 && PY_VERSION_HEX < 0x03090000
  0, /*tp_print*/
  #endif
};

static PyObject *__pyx_tp_new_4grpc_7_cython_6cygrpc__ConcurrentRpcLimiter(PyTypeObject *t, PyObject *a, PyObject *k) {
  struct __pyx_obj_4grpc_7_cython_6cygrpc__ConcurrentRpcLimiter *p;
  PyObject *o;
  if (likely((t->tp_flags & Py_TPFLAGS_IS_ABSTRACT) == 0)) {
    o = (*t->tp_alloc)(t, 0);
  } else {
    o = (PyObject *) PyBaseObject_Type.tp_new(t, __pyx_empty_tuple, 0);
  }
  if (unlikely(!o)) return 0;
  p = ((struct __pyx_obj_4grpc_7_cython_6cygrpc__ConcurrentRpcLimiter *)o);
  p->_active_rpcs_condition = Py_None; Py_INCREF(Py_None);
  p->_loop = Py_None; Py_INCREF(Py_None);
  if (unlikely(__pyx_pw_4grpc_7_cython_6cygrpc_21_ConcurrentRpcLimiter_1__cinit__(o, a, k) < 0)) goto bad;
  return o;
  bad:
  Py_DECREF(o); o = 0;
  return NULL;
}

static void __pyx_tp_dealloc_4grpc_7_cython_6cygrpc__ConcurrentRpcLimiter(PyObject *o) {
  struct __pyx_obj_4grpc_7_cython_6cygrpc__ConcurrentRpcLimiter *p = (struct __pyx_obj_4grpc_7_cython_6cygrpc__ConcurrentRpcLimiter *)o;
  #if CYTHON_USE_TP_FINALIZE
  if (unlikely(PyType_HasFeature(Py_TYPE(o), Py_TPFLAGS_HAVE_FINALIZE) && Py_TYPE(o)->tp_finalize) && !_PyGC_FINALIZED(o)) {
    if (PyObject_CallFinalizerFromDealloc(o)) return;
  }
  #endif
  PyObject_GC_UnTrack(o);
  Py_CLEAR(p->_active_rpcs_condition);
  Py_CLEAR(p->_loop);
  (*Py_TYPE(o)->tp_free)(o);
}

static int __pyx_tp_traverse_4grpc_7_cython_6cygrpc__ConcurrentRpcLimiter(PyObject *o, visitproc v, void *a) {
  int e;
  struct __pyx_obj_4grpc_7_cython_6cygrpc__ConcurrentRpcLimiter *p = (struct __pyx_obj_4grpc_7_cython_6cygrpc__ConcurrentRpcLimiter *)o;
  if (p->_active_rpcs_condition) {
    e = (*v)(p->_active_rpcs_condition, a); if (e) return e;
  }
  if (p->_loop) {
    e = (*v)(p->_loop, a); if (e) return e;
  }
  return 0;
}

static int __pyx_tp_clear_4grpc_7_cython_6cygrpc__ConcurrentRpcLimiter(PyObject *o) {
  PyObject* tmp;
  struct __pyx_obj_4grpc_7_cython_6cygrpc__ConcurrentRpcLimiter *p = (struct __pyx_obj_4grpc_7_cython_6cygrpc__ConcurrentRpcLimiter *)o;
  tmp = ((PyObject*)p->_active_rpcs_condition);
  p->_active_rpcs_condition = Py_None; Py_INCREF(Py_None);
  Py_XDECREF(tmp);
  tmp = ((PyObject*)p->_loop);
  p->_loop = Py_None; Py_INCREF(Py_None);
  Py_XDECREF(tmp);
  return 0;
}

static PyMethodDef __pyx_methods_4grpc_7_cython_6cygrpc__ConcurrentRpcLimiter[] = {
  {"check_before_request_call", (PyCFunction)__pyx_pw_4grpc_7_cython_6cygrpc_21_ConcurrentRpcLimiter_3check_before_request_call, METH_NOARGS, 0},
  {"_decrease_active_rpcs_count_with_lock", (PyCFunction)__pyx_pw_4grpc_7_cython_6cygrpc_21_ConcurrentRpcLimiter_6_decrease_active_rpcs_count_with_lock, METH_NOARGS, 0},
  {"_decrease_active_rpcs_count", (PyCFunction)__pyx_pw_4grpc_7_cython_6cygrpc_21_ConcurrentRpcLimiter_9_decrease_active_rpcs_count, METH_O, 0},
  {"decrease_once_finished", (PyCFunction)__pyx_pw_4grpc_7_cython_6cygrpc_21_ConcurrentRpcLimiter_11decrease_once_finished, METH_O, 0},
  {"__reduce_cython__", (PyCFunction)__pyx_pw_4grpc_7_cython_6cygrpc_21_ConcurrentRpcLimiter_13__reduce_cython__, METH_NOARGS, 0},
  {"__setstate_cython__", (PyCFunction)__pyx_pw_4grpc_7_cython_6cygrpc_21_ConcurrentRpcLimiter_15__setstate_cython__, METH_O, 0},
  {0, 0, 0, 0}
};

static PyTypeObject __pyx_type_4grpc_7_cython_6cygrpc__ConcurrentRpcLimiter = {
  PyVarObject_HEAD_INIT(0, 0)
  "grpc._cython.cygrpc._ConcurrentRpcLimiter", /*tp_name*/
  sizeof(struct __pyx_obj_4grpc_7_cython_6cygrpc__ConcurrentRpcLimiter), /*tp_basicsize*/
  0, /*tp_itemsize*/
  __pyx_tp_dealloc_4grpc_7_cython_6cygrpc__ConcurrentRpcLimiter, /*tp_dealloc*/
  #if PY_VERSION_HEX < 0x030800b4
  0, /*tp_print*/
  #endif
  #if PY_VERSION_HEX >= 0x030800b4
  0, /*tp_vectorcall_offset*/
  #endif
  0, /*tp_getattr*/
  0, /*tp_setattr*/
  #if PY_MAJOR_VERSION < 3
  0, /*tp_compare*/
  #endif
  #if PY_MAJOR_VERSION >= 3
  0, /*tp_as_async*/
  #endif
  0, /*tp_repr*/
  0, /*tp_as_number*/
  0, /*tp_as_sequence*/
  0, /*tp_as_mapping*/
  0, /*tp_hash*/
  0, /*tp_call*/
  0, /*tp_str*/
  0, /*tp_getattro*/
  0, /*tp_setattro*/
  0, /*tp_as_buffer*/
  Py_TPFLAGS_DEFAULT|Py_TPFLAGS_HAVE_VERSION_TAG|Py_TPFLAGS_CHECKTYPES|Py_TPFLAGS_HAVE_NEWBUFFER|Py_TPFLAGS_BASETYPE|Py_TPFLAGS_HAVE_GC, /*tp_flags*/
  0, /*tp_doc*/
  __pyx_tp_traverse_4grpc_7_cython_6cygrpc__ConcurrentRpcLimiter, /*tp_traverse*/
  __pyx_tp_clear_4grpc_7_cython_6cygrpc__ConcurrentRpcLimiter, /*tp_clear*/
  0, /*tp_richcompare*/
  0, /*tp_weaklistoffset*/
  0, /*tp_iter*/
  0, /*tp_iternext*/
  __pyx_methods_4grpc_7_cython_6cygrpc__ConcurrentRpcLimiter, /*tp_methods*/
  0, /*tp_members*/
  0, /*tp_getset*/
  0, /*tp_base*/
  0, /*tp_dict*/
  0, /*tp_descr_get*/
  0, /*tp_descr_set*/
  0, /*tp_dictoffset*/
  0, /*tp_init*/
  0, /*tp_alloc*/
  __pyx_tp_new_4grpc_7_cython_6cygrpc__ConcurrentRpcLimiter, /*tp_new*/
  0, /*tp_free*/
  0, /*tp_is_gc*/
  0, /*tp_bases*/
  0, /*tp_mro*/
  0, /*tp_cache*/
  0, /*tp_subclasses*/
  0, /*tp_weaklist*/
  0, /*tp_del*/
  0, /*tp_version_tag*/
  #if PY_VERSION_HEX >= 0x030400a1
  0, /*tp_finalize*/
  #endif
  #if PY_VERSION_HEX >= 0x030800b1
  0, /*tp_vectorcall*/
  #endif
  #if PY_VERSION_HEX >= 0x030800b4 && PY_VERSION_HEX < 0x03090000
  0, /*tp_print*/
  #endif
};
static struct __pyx_vtabstruct_4grpc_7_cython_6cygrpc_AioServer __pyx_vtable_4grpc_7_cython_6cygrpc_AioServer;

static PyObject *__pyx_tp_new_4grpc_7_cython_6cygrpc_AioServer(PyTypeObject *t, CYTHON_UNUSED PyObject *a, CYTHON_UNUSED PyObject *k) {
  struct __pyx_obj_4grpc_7_cython_6cygrpc_AioServer *p;
  PyObject *o;
  if (likely((t->tp_flags & Py_TPFLAGS_IS_ABSTRACT) == 0)) {
    o = (*t->tp_alloc)(t, 0);
  } else {
    o = (PyObject *) PyBaseObject_Type.tp_new(t, __pyx_empty_tuple, 0);
  }
  if (unlikely(!o)) return 0;
  p = ((struct __pyx_obj_4grpc_7_cython_6cygrpc_AioServer *)o);
  p->__pyx_vtab = __pyx_vtabptr_4grpc_7_cython_6cygrpc_AioServer;
  p->_server = ((struct __pyx_obj_4grpc_7_cython_6cygrpc_Server *)Py_None); Py_INCREF(Py_None);
  p->_generic_handlers = ((PyObject*)Py_None); Py_INCREF(Py_None);
  p->_loop = Py_None; Py_INCREF(Py_None);
  p->_serving_task = Py_None; Py_INCREF(Py_None);
  p->_shutdown_lock = Py_None; Py_INCREF(Py_None);
  p->_shutdown_completed = Py_None; Py_INCREF(Py_None);
  p->_shutdown_callback_wrapper = ((struct __pyx_obj_4grpc_7_cython_6cygrpc_CallbackWrapper *)Py_None); Py_INCREF(Py_None);
  p->_crash_exception = Py_None; Py_INCREF(Py_None);
  p->_interceptors = ((PyObject*)Py_None); Py_INCREF(Py_None);
  p->_thread_pool = Py_None; Py_INCREF(Py_None);
  p->_limiter = ((struct __pyx_obj_4grpc_7_cython_6cygrpc__ConcurrentRpcLimiter *)Py_None); Py_INCREF(Py_None);
  return o;
}

static void __pyx_tp_dealloc_4grpc_7_cython_6cygrpc_AioServer(PyObject *o) {
  struct __pyx_obj_4grpc_7_cython_6cygrpc_AioServer *p = (struct __pyx_obj_4grpc_7_cython_6cygrpc_AioServer *)o;
  #if CYTHON_USE_TP_FINALIZE
  if (unlikely(PyType_HasFeature(Py_TYPE(o), Py_TPFLAGS_HAVE_FINALIZE) && Py_TYPE(o)->tp_finalize) && !_PyGC_FINALIZED(o)) {
    if (PyObject_CallFinalizerFromDealloc(o)) return;
  }
  #endif
  PyObject_GC_UnTrack(o);
  {
    PyObject *etype, *eval, *etb;
    PyErr_Fetch(&etype, &eval, &etb);
    __Pyx_SET_REFCNT(o, Py_REFCNT(o) + 1);
    __pyx_pw_4grpc_7_cython_6cygrpc_9AioServer_29__dealloc__(o);
    __Pyx_SET_REFCNT(o, Py_REFCNT(o) - 1);
    PyErr_Restore(etype, eval, etb);
  }
  Py_CLEAR(p->_server);
  Py_CLEAR(p->_generic_handlers);
  Py_CLEAR(p->_loop);
  Py_CLEAR(p->_serving_task);
  Py_CLEAR(p->_shutdown_lock);
  Py_CLEAR(p->_shutdown_completed);
  Py_CLEAR(p->_shutdown_callback_wrapper);
  Py_CLEAR(p->_crash_exception);
  Py_CLEAR(p->_interceptors);
  Py_CLEAR(p->_thread_pool);
  Py_CLEAR(p->_limiter);
  (*Py_TYPE(o)->tp_free)(o);
}

static int __pyx_tp_traverse_4grpc_7_cython_6cygrpc_AioServer(PyObject *o, visitproc v, void *a) {
  int e;
  struct __pyx_obj_4grpc_7_cython_6cygrpc_AioServer *p = (struct __pyx_obj_4grpc_7_cython_6cygrpc_AioServer *)o;
  if (p->_server) {
    e = (*v)(((PyObject *)p->_server), a); if (e) return e;
  }
  if (p->_generic_handlers) {
    e = (*v)(p->_generic_handlers, a); if (e) return e;
  }
  if (p->_loop) {
    e = (*v)(p->_loop, a); if (e) return e;
  }
  if (p->_serving_task) {
    e = (*v)(p->_serving_task, a); if (e) return e;
  }
  if (p->_shutdown_lock) {
    e = (*v)(p->_shutdown_lock, a); if (e) return e;
  }
  if (p->_shutdown_completed) {
    e = (*v)(p->_shutdown_completed, a); if (e) return e;
  }
  if (p->_shutdown_callback_wrapper) {
    e = (*v)(((PyObject *)p->_shutdown_callback_wrapper), a); if (e) return e;
  }
  if (p->_crash_exception) {
    e = (*v)(p->_crash_exception, a); if (e) return e;
  }
  if (p->_interceptors) {
    e = (*v)(p->_interceptors, a); if (e) return e;
  }
  if (p->_thread_pool) {
    e = (*v)(p->_thread_pool, a); if (e) return e;
  }
  if (p->_limiter) {
    e = (*v)(((PyObject *)p->_limiter), a); if (e) return e;
  }
  return 0;
}

static int __pyx_tp_clear_4grpc_7_cython_6cygrpc_AioServer(PyObject *o) {
  PyObject* tmp;
  struct __pyx_obj_4grpc_7_cython_6cygrpc_AioServer *p = (struct __pyx_obj_4grpc_7_cython_6cygrpc_AioServer *)o;
  tmp = ((PyObject*)p->_server);
  p->_server = ((struct __pyx_obj_4grpc_7_cython_6cygrpc_Server *)Py_None); Py_INCREF(Py_None);
  Py_XDECREF(tmp);
  tmp = ((PyObject*)p->_generic_handlers);
  p->_generic_handlers = ((PyObject*)Py_None); Py_INCREF(Py_None);
  Py_XDECREF(tmp);
  tmp = ((PyObject*)p->_loop);
  p->_loop = Py_None; Py_INCREF(Py_None);
  Py_XDECREF(tmp);
  tmp = ((PyObject*)p->_serving_task);
  p->_serving_task = Py_None; Py_INCREF(Py_None);
  Py_XDECREF(tmp);
  tmp = ((PyObject*)p->_shutdown_lock);
  p->_shutdown_lock = Py_None; Py_INCREF(Py_None);
  Py_XDECREF(tmp);
  tmp = ((PyObject*)p->_shutdown_completed);
  p->_shutdown_completed = Py_None; Py_INCREF(Py_None);
  Py_XDECREF(tmp);
  tmp = ((PyObject*)p->_shutdown_callback_wrapper);
  p->_shutdown_callback_wrapper = ((struct __pyx_obj_4grpc_7_cython_6cygrpc_CallbackWrapper *)Py_None); Py_INCREF(Py_None);
  Py_XDECREF(tmp);
  tmp = ((PyObject*)p->_crash_exception);
  p->_crash_exception = Py_None; Py_INCREF(Py_None);
  Py_XDECREF(tmp);
  tmp = ((PyObject*)p->_interceptors);
  p->_interceptors = ((PyObject*)Py_None); Py_INCREF(Py_None);
  Py_XDECREF(tmp);
  tmp = ((PyObject*)p->_thread_pool);
  p->_thread_pool = Py_None; Py_INCREF(Py_None);
  Py_XDECREF(tmp);
  tmp = ((PyObject*)p->_limiter);
  p->_limiter = ((struct __pyx_obj_4grpc_7_cython_6cygrpc__ConcurrentRpcLimiter *)Py_None); Py_INCREF(Py_None);
  Py_XDECREF(tmp);
  return 0;
}

static PyMethodDef __pyx_methods_4grpc_7_cython_6cygrpc_AioServer[] = {
  {"add_generic_rpc_handlers", (PyCFunction)__pyx_pw_4grpc_7_cython_6cygrpc_9AioServer_3add_generic_rpc_handlers, METH_O, 0},
  {"add_insecure_port", (PyCFunction)__pyx_pw_4grpc_7_cython_6cygrpc_9AioServer_5add_insecure_port, METH_O, 0},
  {"add_secure_port", (PyCFunction)(void*)(PyCFunctionWithKeywords)__pyx_pw_4grpc_7_cython_6cygrpc_9AioServer_7add_secure_port, METH_VARARGS|METH_KEYWORDS, 0},
  {"_request_call", (PyCFunction)__pyx_pw_4grpc_7_cython_6cygrpc_9AioServer_9_request_call, METH_NOARGS, 0},
  {"_server_main_loop", (PyCFunction)__pyx_pw_4grpc_7_cython_6cygrpc_9AioServer_12_server_main_loop, METH_O, 0},
  {"_serving_task_crash_handler", (PyCFunction)__pyx_pw_4grpc_7_cython_6cygrpc_9AioServer_15_serving_task_crash_handler, METH_O, __pyx_doc_4grpc_7_cython_6cygrpc_9AioServer_14_serving_task_crash_handler},
  {"start", (PyCFunction)__pyx_pw_4grpc_7_cython_6cygrpc_9AioServer_17start, METH_NOARGS, 0},
  {"_start_shutting_down", (PyCFunction)__pyx_pw_4grpc_7_cython_6cygrpc_9AioServer_20_start_shutting_down, METH_NOARGS, __pyx_doc_4grpc_7_cython_6cygrpc_9AioServer_19_start_shutting_down},
  {"shutdown", (PyCFunction)__pyx_pw_4grpc_7_cython_6cygrpc_9AioServer_23shutdown, METH_O, __pyx_doc_4grpc_7_cython_6cygrpc_9AioServer_22shutdown},
  {"wait_for_termination", (PyCFunction)__pyx_pw_4grpc_7_cython_6cygrpc_9AioServer_26wait_for_termination, METH_O, 0},
  {"is_running", (PyCFunction)__pyx_pw_4grpc_7_cython_6cygrpc_9AioServer_31is_running, METH_NOARGS, 0},
  {"__reduce_cython__", (PyCFunction)__pyx_pw_4grpc_7_cython_6cygrpc_9AioServer_33__reduce_cython__, METH_NOARGS, 0},
  {"__setstate_cython__", (PyCFunction)__pyx_pw_4grpc_7_cython_6cygrpc_9AioServer_35__setstate_cython__, METH_O, 0},
  {0, 0, 0, 0}
};

static PyTypeObject __pyx_type_4grpc_7_cython_6cygrpc_AioServer = {
  PyVarObject_HEAD_INIT(0, 0)
  "grpc._cython.cygrpc.AioServer", /*tp_name*/
  sizeof(struct __pyx_obj_4grpc_7_cython_6cygrpc_AioServer), /*tp_basicsize*/
  0, /*tp_itemsize*/
  __pyx_tp_dealloc_4grpc_7_cython_6cygrpc_AioServer, /*tp_dealloc*/
  #if PY_VERSION_HEX < 0x030800b4
  0, /*tp_print*/
  #endif
  #if PY_VERSION_HEX >= 0x030800b4
  0, /*tp_vectorcall_offset*/
  #endif
  0, /*tp_getattr*/
  0, /*tp_setattr*/
  #if PY_MAJOR_VERSION < 3
  0, /*tp_compare*/
  #endif
  #if PY_MAJOR_VERSION >= 3
  0, /*tp_as_async*/
  #endif
  0, /*tp_repr*/
  0, /*tp_as_number*/
  0, /*tp_as_sequence*/
  0, /*tp_as_mapping*/
  0, /*tp_hash*/
  0, /*tp_call*/
  0, /*tp_str*/
  0, /*tp_getattro*/
  0, /*tp_setattro*/
  0, /*tp_as_buffer*/
  Py_TPFLAGS_DEFAULT|Py_TPFLAGS_HAVE_VERSION_TAG|Py_TPFLAGS_CHECKTYPES|Py_TPFLAGS_HAVE_NEWBUFFER|Py_TPFLAGS_BASETYPE|Py_TPFLAGS_HAVE_GC, /*tp_flags*/
  0, /*tp_doc*/
  __pyx_tp_traverse_4grpc_7_cython_6cygrpc_AioServer, /*tp_traverse*/
  __pyx_tp_clear_4grpc_7_cython_6cygrpc_AioServer, /*tp_clear*/
  0, /*tp_richcompare*/
  0, /*tp_weaklistoffset*/
  0, /*tp_iter*/
  0, /*tp_iternext*/
  __pyx_methods_4grpc_7_cython_6cygrpc_AioServer, /*tp_methods*/
  0, /*tp_members*/
  0, /*tp_getset*/
  0, /*tp_base*/
  0, /*tp_dict*/
  0, /*tp_descr_get*/
  0, /*tp_descr_set*/
  0, /*tp_dictoffset*/
  __pyx_pw_4grpc_7_cython_6cygrpc_9AioServer_1__init__, /*tp_init*/
  0, /*tp_alloc*/
  __pyx_tp_new_4grpc_7_cython_6cygrpc_AioServer, /*tp_new*/
  0, /*tp_free*/
  0, /*tp_is_gc*/
  0, /*tp_bases*/
  0, /*tp_mro*/
  0, /*tp_cache*/
  0, /*tp_subclasses*/
  0, /*tp_weaklist*/
  0, /*tp_del*/
  0, /*tp_version_tag*/
  #if PY_VERSION_HEX >= 0x030400a1
  0, /*tp_finalize*/
  #endif
  #if PY_VERSION_HEX >= 0x030800b1
  0, /*tp_vectorcall*/
  #endif
  #if PY_VERSION_HEX >= 0x030800b4 && PY_VERSION_HEX < 0x03090000
  0, /*tp_print*/
  #endif
};

static PyObject *__pyx_tp_new_4grpc_7_cython_6cygrpc__GrpcArgWrapper(PyTypeObject *t, CYTHON_UNUSED PyObject *a, CYTHON_UNUSED PyObject *k) {
  PyObject *o;
  if (likely((t->tp_flags & Py_TPFLAGS_IS_ABSTRACT) == 0)) {
    o = (*t->tp_alloc)(t, 0);
  } else {
    o = (PyObject *) PyBaseObject_Type.tp_new(t, __pyx_empty_tuple, 0);
  }
  if (unlikely(!o)) return 0;
  return o;
}

static void __pyx_tp_dealloc_4grpc_7_cython_6cygrpc__GrpcArgWrapper(PyObject *o) {
  #if CYTHON_USE_TP_FINALIZE
  if (unlikely(PyType_HasFeature(Py_TYPE(o), Py_TPFLAGS_HAVE_FINALIZE) && Py_TYPE(o)->tp_finalize) && (!PyType_IS_GC(Py_TYPE(o)) || !_PyGC_FINALIZED(o))) {
    if (PyObject_CallFinalizerFromDealloc(o)) return;
  }
  #endif
  (*Py_TYPE(o)->tp_free)(o);
}

static PyMethodDef __pyx_methods_4grpc_7_cython_6cygrpc__GrpcArgWrapper[] = {
  {"__reduce_cython__", (PyCFunction)__pyx_pw_4grpc_7_cython_6cygrpc_15_GrpcArgWrapper_1__reduce_cython__, METH_NOARGS, 0},
  {"__setstate_cython__", (PyCFunction)__pyx_pw_4grpc_7_cython_6cygrpc_15_GrpcArgWrapper_3__setstate_cython__, METH_O, 0},
  {0, 0, 0, 0}
};

static PyTypeObject __pyx_type_4grpc_7_cython_6cygrpc__GrpcArgWrapper = {
  PyVarObject_HEAD_INIT(0, 0)
  "grpc._cython.cygrpc._GrpcArgWrapper", /*tp_name*/
  sizeof(struct __pyx_obj_4grpc_7_cython_6cygrpc__GrpcArgWrapper), /*tp_basicsize*/
  0, /*tp_itemsize*/
  __pyx_tp_dealloc_4grpc_7_cython_6cygrpc__GrpcArgWrapper, /*tp_dealloc*/
  #if PY_VERSION_HEX < 0x030800b4
  0, /*tp_print*/
  #endif
  #if PY_VERSION_HEX >= 0x030800b4
  0, /*tp_vectorcall_offset*/
  #endif
  0, /*tp_getattr*/
  0, /*tp_setattr*/
  #if PY_MAJOR_VERSION < 3
  0, /*tp_compare*/
  #endif
  #if PY_MAJOR_VERSION >= 3
  0, /*tp_as_async*/
  #endif
  0, /*tp_repr*/
  0, /*tp_as_number*/
  0, /*tp_as_sequence*/
  0, /*tp_as_mapping*/
  0, /*tp_hash*/
  0, /*tp_call*/
  0, /*tp_str*/
  0, /*tp_getattro*/
  0, /*tp_setattro*/
  0, /*tp_as_buffer*/
  Py_TPFLAGS_DEFAULT|Py_TPFLAGS_HAVE_VERSION_TAG|Py_TPFLAGS_CHECKTYPES|Py_TPFLAGS_HAVE_NEWBUFFER|Py_TPFLAGS_BASETYPE, /*tp_flags*/
  0, /*tp_doc*/
  0, /*tp_traverse*/
  0, /*tp_clear*/
  0, /*tp_richcompare*/
  0, /*tp_weaklistoffset*/
  0, /*tp_iter*/
  0, /*tp_iternext*/
  __pyx_methods_4grpc_7_cython_6cygrpc__GrpcArgWrapper, /*tp_methods*/
  0, /*tp_members*/
  0, /*tp_getset*/
  0, /*tp_base*/
  0, /*tp_dict*/
  0, /*tp_descr_get*/
  0, /*tp_descr_set*/
  0, /*tp_dictoffset*/
  0, /*tp_init*/
  0, /*tp_alloc*/
  __pyx_tp_new_4grpc_7_cython_6cygrpc__GrpcArgWrapper, /*tp_new*/
  0, /*tp_free*/
  0, /*tp_is_gc*/
  0, /*tp_bases*/
  0, /*tp_mro*/
  0, /*tp_cache*/
  0, /*tp_subclasses*/
  0, /*tp_weaklist*/
  0, /*tp_del*/
  0, /*tp_version_tag*/
  #if PY_VERSION_HEX >= 0x030400a1
  0, /*tp_finalize*/
  #endif
  #if PY_VERSION_HEX >= 0x030800b1
  0, /*tp_vectorcall*/
  #endif
  #if PY_VERSION_HEX >= 0x030800b4 && PY_VERSION_HEX < 0x03090000
  0, /*tp_print*/
  #endif
};
static struct __pyx_vtabstruct_4grpc_7_cython_6cygrpc_InsecureChannelCredentials __pyx_vtable_4grpc_7_cython_6cygrpc_InsecureChannelCredentials;

static PyObject *__pyx_tp_new_4grpc_7_cython_6cygrpc_InsecureChannelCredentials(PyTypeObject *t, PyObject *a, PyObject *k) {
  struct __pyx_obj_4grpc_7_cython_6cygrpc_InsecureChannelCredentials *p;
  PyObject *o = __pyx_tp_new_4grpc_7_cython_6cygrpc_ChannelCredentials(t, a, k);
  if (unlikely(!o)) return 0;
  p = ((struct __pyx_obj_4grpc_7_cython_6cygrpc_InsecureChannelCredentials *)o);
  p->__pyx_base.__pyx_vtab = (struct __pyx_vtabstruct_4grpc_7_cython_6cygrpc_ChannelCredentials*)__pyx_vtabptr_4grpc_7_cython_6cygrpc_InsecureChannelCredentials;
  return o;
}

static PyMethodDef __pyx_methods_4grpc_7_cython_6cygrpc_InsecureChannelCredentials[] = {
  {"__reduce_cython__", (PyCFunction)__pyx_pw_4grpc_7_cython_6cygrpc_26InsecureChannelCredentials_1__reduce_cython__, METH_NOARGS, 0},
  {"__setstate_cython__", (PyCFunction)__pyx_pw_4grpc_7_cython_6cygrpc_26InsecureChannelCredentials_3__setstate_cython__, METH_O, 0},
  {0, 0, 0, 0}
};

static PyTypeObject __pyx_type_4grpc_7_cython_6cygrpc_InsecureChannelCredentials = {
  PyVarObject_HEAD_INIT(0, 0)
  "grpc._cython.cygrpc.InsecureChannelCredentials", /*tp_name*/
  sizeof(struct __pyx_obj_4grpc_7_cython_6cygrpc_InsecureChannelCredentials), /*tp_basicsize*/
  0, /*tp_itemsize*/
  __pyx_tp_dealloc_4grpc_7_cython_6cygrpc_ChannelCredentials, /*tp_dealloc*/
  #if PY_VERSION_HEX < 0x030800b4
  0, /*tp_print*/
  #endif
  #if PY_VERSION_HEX >= 0x030800b4
  0, /*tp_vectorcall_offset*/
  #endif
  0, /*tp_getattr*/
  0, /*tp_setattr*/
  #if PY_MAJOR_VERSION < 3
  0, /*tp_compare*/
  #endif
  #if PY_MAJOR_VERSION >= 3
  0, /*tp_as_async*/
  #endif
  0, /*tp_repr*/
  0, /*tp_as_number*/
  0, /*tp_as_sequence*/
  0, /*tp_as_mapping*/
  0, /*tp_hash*/
  0, /*tp_call*/
  0, /*tp_str*/
  0, /*tp_getattro*/
  0, /*tp_setattro*/
  0, /*tp_as_buffer*/
  Py_TPFLAGS_DEFAULT|Py_TPFLAGS_HAVE_VERSION_TAG|Py_TPFLAGS_CHECKTYPES|Py_TPFLAGS_HAVE_NEWBUFFER|Py_TPFLAGS_BASETYPE, /*tp_flags*/
  0, /*tp_doc*/
  0, /*tp_traverse*/
  0, /*tp_clear*/
  0, /*tp_richcompare*/
  0, /*tp_weaklistoffset*/
  0, /*tp_iter*/
  0, /*tp_iternext*/
  __pyx_methods_4grpc_7_cython_6cygrpc_InsecureChannelCredentials, /*tp_methods*/
  0, /*tp_members*/
  0, /*tp_getset*/
  0, /*tp_base*/
  0, /*tp_dict*/
  0, /*tp_descr_get*/
  0, /*tp_descr_set*/
  0, /*tp_dictoffset*/
  0, /*tp_init*/
  0, /*tp_alloc*/
  __pyx_tp_new_4grpc_7_cython_6cygrpc_InsecureChannelCredentials, /*tp_new*/
  0, /*tp_free*/
  0, /*tp_is_gc*/
  0, /*tp_bases*/
  0, /*tp_mro*/
  0, /*tp_cache*/
  0, /*tp_subclasses*/
  0, /*tp_weaklist*/
  0, /*tp_del*/
  0, /*tp_version_tag*/
  #if PY_VERSION_HEX >= 0x030400a1
  0, /*tp_finalize*/
  #endif
  #if PY_VERSION_HEX >= 0x030800b1
  0, /*tp_vectorcall*/
  #endif
  #if PY_VERSION_HEX >= 0x030800b4 && PY_VERSION_HEX < 0x03090000
  0, /*tp_print*/
  #endif
};
static struct __pyx_vtabstruct_4grpc_7_cython_6cygrpc_ComputeEngineChannelCredentials __pyx_vtable_4grpc_7_cython_6cygrpc_ComputeEngineChannelCredentials;

static PyObject *__pyx_tp_new_4grpc_7_cython_6cygrpc_ComputeEngineChannelCredentials(PyTypeObject *t, PyObject *a, PyObject *k) {
  struct __pyx_obj_4grpc_7_cython_6cygrpc_ComputeEngineChannelCredentials *p;
  PyObject *o = __pyx_tp_new_4grpc_7_cython_6cygrpc_ChannelCredentials(t, a, k);
  if (unlikely(!o)) return 0;
  p = ((struct __pyx_obj_4grpc_7_cython_6cygrpc_ComputeEngineChannelCredentials *)o);
  p->__pyx_base.__pyx_vtab = (struct __pyx_vtabstruct_4grpc_7_cython_6cygrpc_ChannelCredentials*)__pyx_vtabptr_4grpc_7_cython_6cygrpc_ComputeEngineChannelCredentials;
  if (unlikely(__pyx_pw_4grpc_7_cython_6cygrpc_31ComputeEngineChannelCredentials_1__cinit__(o, a, k) < 0)) goto bad;
  return o;
  bad:
  Py_DECREF(o); o = 0;
  return NULL;
}

static PyMethodDef __pyx_methods_4grpc_7_cython_6cygrpc_ComputeEngineChannelCredentials[] = {
  {"__reduce_cython__", (PyCFunction)__pyx_pw_4grpc_7_cython_6cygrpc_31ComputeEngineChannelCredentials_3__reduce_cython__, METH_NOARGS, 0},
  {"__setstate_cython__", (PyCFunction)__pyx_pw_4grpc_7_cython_6cygrpc_31ComputeEngineChannelCredentials_5__setstate_cython__, METH_O, 0},
  {0, 0, 0, 0}
};

static PyTypeObject __pyx_type_4grpc_7_cython_6cygrpc_ComputeEngineChannelCredentials = {
  PyVarObject_HEAD_INIT(0, 0)
  "grpc._cython.cygrpc.ComputeEngineChannelCredentials", /*tp_name*/
  sizeof(struct __pyx_obj_4grpc_7_cython_6cygrpc_ComputeEngineChannelCredentials), /*tp_basicsize*/
  0, /*tp_itemsize*/
  __pyx_tp_dealloc_4grpc_7_cython_6cygrpc_ChannelCredentials, /*tp_dealloc*/
  #if PY_VERSION_HEX < 0x030800b4
  0, /*tp_print*/
  #endif
  #if PY_VERSION_HEX >= 0x030800b4
  0, /*tp_vectorcall_offset*/
  #endif
  0, /*tp_getattr*/
  0, /*tp_setattr*/
  #if PY_MAJOR_VERSION < 3
  0, /*tp_compare*/
  #endif
  #if PY_MAJOR_VERSION >= 3
  0, /*tp_as_async*/
  #endif
  0, /*tp_repr*/
  0, /*tp_as_number*/
  0, /*tp_as_sequence*/
  0, /*tp_as_mapping*/
  0, /*tp_hash*/
  0, /*tp_call*/
  0, /*tp_str*/
  0, /*tp_getattro*/
  0, /*tp_setattro*/
  0, /*tp_as_buffer*/
  Py_TPFLAGS_DEFAULT|Py_TPFLAGS_HAVE_VERSION_TAG|Py_TPFLAGS_CHECKTYPES|Py_TPFLAGS_HAVE_NEWBUFFER|Py_TPFLAGS_BASETYPE, /*tp_flags*/
  0, /*tp_doc*/
  0, /*tp_traverse*/
  0, /*tp_clear*/
  0, /*tp_richcompare*/
  0, /*tp_weaklistoffset*/
  0, /*tp_iter*/
  0, /*tp_iternext*/
  __pyx_methods_4grpc_7_cython_6cygrpc_ComputeEngineChannelCredentials, /*tp_methods*/
  0, /*tp_members*/
  0, /*tp_getset*/
  0, /*tp_base*/
  0, /*tp_dict*/
  0, /*tp_descr_get*/
  0, /*tp_descr_set*/
  0, /*tp_dictoffset*/
  0, /*tp_init*/
  0, /*tp_alloc*/
  __pyx_tp_new_4grpc_7_cython_6cygrpc_ComputeEngineChannelCredentials, /*tp_new*/
  0, /*tp_free*/
  0, /*tp_is_gc*/
  0, /*tp_bases*/
  0, /*tp_mro*/
  0, /*tp_cache*/
  0, /*tp_subclasses*/
  0, /*tp_weaklist*/
  0, /*tp_del*/
  0, /*tp_version_tag*/
  #if PY_VERSION_HEX >= 0x030400a1
  0, /*tp_finalize*/
  #endif
  #if PY_VERSION_HEX >= 0x030800b1
  0, /*tp_vectorcall*/
  #endif
  #if PY_VERSION_HEX >= 0x030800b4 && PY_VERSION_HEX < 0x03090000
  0, /*tp_print*/
  #endif
};

static PyObject *__pyx_tp_new_4grpc_7_cython_6cygrpc_CensusContext(PyTypeObject *t, CYTHON_UNUSED PyObject *a, CYTHON_UNUSED PyObject *k) {
  PyObject *o;
  if (likely((t->tp_flags & Py_TPFLAGS_IS_ABSTRACT) == 0)) {
    o = (*t->tp_alloc)(t, 0);
  } else {
    o = (PyObject *) PyBaseObject_Type.tp_new(t, __pyx_empty_tuple, 0);
  }
  if (unlikely(!o)) return 0;
  return o;
}

static void __pyx_tp_dealloc_4grpc_7_cython_6cygrpc_CensusContext(PyObject *o) {
  #if CYTHON_USE_TP_FINALIZE
  if (unlikely(PyType_HasFeature(Py_TYPE(o), Py_TPFLAGS_HAVE_FINALIZE) && Py_TYPE(o)->tp_finalize) && (!PyType_IS_GC(Py_TYPE(o)) || !_PyGC_FINALIZED(o))) {
    if (PyObject_CallFinalizerFromDealloc(o)) return;
  }
  #endif
  (*Py_TYPE(o)->tp_free)(o);
}

static PyMethodDef __pyx_methods_4grpc_7_cython_6cygrpc_CensusContext[] = {
  {"__reduce_cython__", (PyCFunction)__pyx_pw_4grpc_7_cython_6cygrpc_13CensusContext_1__reduce_cython__, METH_NOARGS, 0},
  {"__setstate_cython__", (PyCFunction)__pyx_pw_4grpc_7_cython_6cygrpc_13CensusContext_3__setstate_cython__, METH_O, 0},
  {0, 0, 0, 0}
};

static PyTypeObject __pyx_type_4grpc_7_cython_6cygrpc_CensusContext = {
  PyVarObject_HEAD_INIT(0, 0)
  "grpc._cython.cygrpc.CensusContext", /*tp_name*/
  sizeof(struct __pyx_obj_4grpc_7_cython_6cygrpc_CensusContext), /*tp_basicsize*/
  0, /*tp_itemsize*/
  __pyx_tp_dealloc_4grpc_7_cython_6cygrpc_CensusContext, /*tp_dealloc*/
  #if PY_VERSION_HEX < 0x030800b4
  0, /*tp_print*/
  #endif
  #if PY_VERSION_HEX >= 0x030800b4
  0, /*tp_vectorcall_offset*/
  #endif
  0, /*tp_getattr*/
  0, /*tp_setattr*/
  #if PY_MAJOR_VERSION < 3
  0, /*tp_compare*/
  #endif
  #if PY_MAJOR_VERSION >= 3
  0, /*tp_as_async*/
  #endif
  0, /*tp_repr*/
  0, /*tp_as_number*/
  0, /*tp_as_sequence*/
  0, /*tp_as_mapping*/
  0, /*tp_hash*/
  0, /*tp_call*/
  0, /*tp_str*/
  0, /*tp_getattro*/
  0, /*tp_setattro*/
  0, /*tp_as_buffer*/
  Py_TPFLAGS_DEFAULT|Py_TPFLAGS_HAVE_VERSION_TAG|Py_TPFLAGS_CHECKTYPES|Py_TPFLAGS_HAVE_NEWBUFFER|Py_TPFLAGS_BASETYPE, /*tp_flags*/
  0, /*tp_doc*/
  0, /*tp_traverse*/
  0, /*tp_clear*/
  0, /*tp_richcompare*/
  0, /*tp_weaklistoffset*/
  0, /*tp_iter*/
  0, /*tp_iternext*/
  __pyx_methods_4grpc_7_cython_6cygrpc_CensusContext, /*tp_methods*/
  0, /*tp_members*/
  0, /*tp_getset*/
  0, /*tp_base*/
  0, /*tp_dict*/
  0, /*tp_descr_get*/
  0, /*tp_descr_set*/
  0, /*tp_dictoffset*/
  0, /*tp_init*/
  0, /*tp_alloc*/
  __pyx_tp_new_4grpc_7_cython_6cygrpc_CensusContext, /*tp_new*/
  0, /*tp_free*/
  0, /*tp_is_gc*/
  0, /*tp_bases*/
  0, /*tp_mro*/
  0, /*tp_cache*/
  0, /*tp_subclasses*/
  0, /*tp_weaklist*/
  0, /*tp_del*/
  0, /*tp_version_tag*/
  #if PY_VERSION_HEX >= 0x030400a1
  0, /*tp_finalize*/
  #endif
  #if PY_VERSION_HEX >= 0x030800b1
  0, /*tp_vectorcall*/
  #endif
  #if PY_VERSION_HEX >= 0x030800b4 && PY_VERSION_HEX < 0x03090000
  0, /*tp_print*/
  #endif
};

static struct __pyx_obj_4grpc_7_cython_6cygrpc___pyx_scope_struct____pyx_f_4grpc_7_cython_6cygrpc__integrated_call *__pyx_freelist_4grpc_7_cython_6cygrpc___pyx_scope_struct____pyx_f_4grpc_7_cython_6cygrpc__integrated_call[8];
static int __pyx_freecount_4grpc_7_cython_6cygrpc___pyx_scope_struct____pyx_f_4grpc_7_cython_6cygrpc__integrated_call = 0;

static PyObject *__pyx_tp_new_4grpc_7_cython_6cygrpc___pyx_scope_struct____pyx_f_4grpc_7_cython_6cygrpc__integrated_call(PyTypeObject *t, CYTHON_UNUSED PyObject *a, CYTHON_UNUSED PyObject *k) {
  PyObject *o;
  if (CYTHON_COMPILING_IN_CPYTHON && likely((__pyx_freecount_4grpc_7_cython_6cygrpc___pyx_scope_struct____pyx_f_4grpc_7_cython_6cygrpc__integrated_call > 0) & (t->tp_basicsize == sizeof(struct __pyx_obj_4grpc_7_cython_6cygrpc___pyx_scope_struct____pyx_f_4grpc_7_cython_6cygrpc__integrated_call)))) {
    o = (PyObject*)__pyx_freelist_4grpc_7_cython_6cygrpc___pyx_scope_struct____pyx_f_4grpc_7_cython_6cygrpc__integrated_call[--__pyx_freecount_4grpc_7_cython_6cygrpc___pyx_scope_struct____pyx_f_4grpc_7_cython_6cygrpc__integrated_call];
    memset(o, 0, sizeof(struct __pyx_obj_4grpc_7_cython_6cygrpc___pyx_scope_struct____pyx_f_4grpc_7_cython_6cygrpc__integrated_call));
    (void) PyObject_INIT(o, t);
    PyObject_GC_Track(o);
  } else {
    o = (*t->tp_alloc)(t, 0);
    if (unlikely(!o)) return 0;
  }
  return o;
}

static void __pyx_tp_dealloc_4grpc_7_cython_6cygrpc___pyx_scope_struct____pyx_f_4grpc_7_cython_6cygrpc__integrated_call(PyObject *o) {
  struct __pyx_obj_4grpc_7_cython_6cygrpc___pyx_scope_struct____pyx_f_4grpc_7_cython_6cygrpc__integrated_call *p = (struct __pyx_obj_4grpc_7_cython_6cygrpc___pyx_scope_struct____pyx_f_4grpc_7_cython_6cygrpc__integrated_call *)o;
  PyObject_GC_UnTrack(o);
  Py_CLEAR(p->__pyx_v_call_state);
  Py_CLEAR(p->__pyx_v_state);
  if (CYTHON_COMPILING_IN_CPYTHON && ((__pyx_freecount_4grpc_7_cython_6cygrpc___pyx_scope_struct____pyx_f_4grpc_7_cython_6cygrpc__integrated_call < 8) & (Py_TYPE(o)->tp_basicsize == sizeof(struct __pyx_obj_4grpc_7_cython_6cygrpc___pyx_scope_struct____pyx_f_4grpc_7_cython_6cygrpc__integrated_call)))) {
    __pyx_freelist_4grpc_7_cython_6cygrpc___pyx_scope_struct____pyx_f_4grpc_7_cython_6cygrpc__integrated_call[__pyx_freecount_4grpc_7_cython_6cygrpc___pyx_scope_struct____pyx_f_4grpc_7_cython_6cygrpc__integrated_call++] = ((struct __pyx_obj_4grpc_7_cython_6cygrpc___pyx_scope_struct____pyx_f_4grpc_7_cython_6cygrpc__integrated_call *)o);
  } else {
    (*Py_TYPE(o)->tp_free)(o);
  }
}

static int __pyx_tp_traverse_4grpc_7_cython_6cygrpc___pyx_scope_struct____pyx_f_4grpc_7_cython_6cygrpc__integrated_call(PyObject *o, visitproc v, void *a) {
  int e;
  struct __pyx_obj_4grpc_7_cython_6cygrpc___pyx_scope_struct____pyx_f_4grpc_7_cython_6cygrpc__integrated_call *p = (struct __pyx_obj_4grpc_7_cython_6cygrpc___pyx_scope_struct____pyx_f_4grpc_7_cython_6cygrpc__integrated_call *)o;
  if (p->__pyx_v_call_state) {
    e = (*v)(((PyObject *)p->__pyx_v_call_state), a); if (e) return e;
  }
  if (p->__pyx_v_state) {
    e = (*v)(((PyObject *)p->__pyx_v_state), a); if (e) return e;
  }
  return 0;
}

static int __pyx_tp_clear_4grpc_7_cython_6cygrpc___pyx_scope_struct____pyx_f_4grpc_7_cython_6cygrpc__integrated_call(PyObject *o) {
  PyObject* tmp;
  struct __pyx_obj_4grpc_7_cython_6cygrpc___pyx_scope_struct____pyx_f_4grpc_7_cython_6cygrpc__integrated_call *p = (struct __pyx_obj_4grpc_7_cython_6cygrpc___pyx_scope_struct____pyx_f_4grpc_7_cython_6cygrpc__integrated_call *)o;
  tmp = ((PyObject*)p->__pyx_v_call_state);
  p->__pyx_v_call_state = ((struct __pyx_obj_4grpc_7_cython_6cygrpc__CallState *)Py_None); Py_INCREF(Py_None);
  Py_XDECREF(tmp);
  tmp = ((PyObject*)p->__pyx_v_state);
  p->__pyx_v_state = ((struct __pyx_obj_4grpc_7_cython_6cygrpc__ChannelState *)Py_None); Py_INCREF(Py_None);
  Py_XDECREF(tmp);
  return 0;
}

static PyTypeObject __pyx_type_4grpc_7_cython_6cygrpc___pyx_scope_struct____pyx_f_4grpc_7_cython_6cygrpc__integrated_call = {
  PyVarObject_HEAD_INIT(0, 0)
  "grpc._cython.cygrpc.__pyx_scope_struct____pyx_f_4grpc_7_cython_6cygrpc__integrated_call", /*tp_name*/
  sizeof(struct __pyx_obj_4grpc_7_cython_6cygrpc___pyx_scope_struct____pyx_f_4grpc_7_cython_6cygrpc__integrated_call), /*tp_basicsize*/
  0, /*tp_itemsize*/
  __pyx_tp_dealloc_4grpc_7_cython_6cygrpc___pyx_scope_struct____pyx_f_4grpc_7_cython_6cygrpc__integrated_call, /*tp_dealloc*/
  #if PY_VERSION_HEX < 0x030800b4
  0, /*tp_print*/
  #endif
  #if PY_VERSION_HEX >= 0x030800b4
  0, /*tp_vectorcall_offset*/
  #endif
  0, /*tp_getattr*/
  0, /*tp_setattr*/
  #if PY_MAJOR_VERSION < 3
  0, /*tp_compare*/
  #endif
  #if PY_MAJOR_VERSION >= 3
  0, /*tp_as_async*/
  #endif
  0, /*tp_repr*/
  0, /*tp_as_number*/
  0, /*tp_as_sequence*/
  0, /*tp_as_mapping*/
  0, /*tp_hash*/
  0, /*tp_call*/
  0, /*tp_str*/
  0, /*tp_getattro*/
  0, /*tp_setattro*/
  0, /*tp_as_buffer*/
  Py_TPFLAGS_DEFAULT|Py_TPFLAGS_HAVE_VERSION_TAG|Py_TPFLAGS_CHECKTYPES|Py_TPFLAGS_HAVE_NEWBUFFER|Py_TPFLAGS_HAVE_GC, /*tp_flags*/
  0, /*tp_doc*/
  __pyx_tp_traverse_4grpc_7_cython_6cygrpc___pyx_scope_struct____pyx_f_4grpc_7_cython_6cygrpc__integrated_call, /*tp_traverse*/
  __pyx_tp_clear_4grpc_7_cython_6cygrpc___pyx_scope_struct____pyx_f_4grpc_7_cython_6cygrpc__integrated_call, /*tp_clear*/
  0, /*tp_richcompare*/
  0, /*tp_weaklistoffset*/
  0, /*tp_iter*/
  0, /*tp_iternext*/
  0, /*tp_methods*/
  0, /*tp_members*/
  0, /*tp_getset*/
  0, /*tp_base*/
  0, /*tp_dict*/
  0, /*tp_descr_get*/
  0, /*tp_descr_set*/
  0, /*tp_dictoffset*/
  0, /*tp_init*/
  0, /*tp_alloc*/
  __pyx_tp_new_4grpc_7_cython_6cygrpc___pyx_scope_struct____pyx_f_4grpc_7_cython_6cygrpc__integrated_call, /*tp_new*/
  0, /*tp_free*/
  0, /*tp_is_gc*/
  0, /*tp_bases*/
  0, /*tp_mro*/
  0, /*tp_cache*/
  0, /*tp_subclasses*/
  0, /*tp_weaklist*/
  0, /*tp_del*/
  0, /*tp_version_tag*/
  #if PY_VERSION_HEX >= 0x030400a1
  0, /*tp_finalize*/
  #endif
  #if PY_VERSION_HEX >= 0x030800b1
  0, /*tp_vectorcall*/
  #endif
  #if PY_VERSION_HEX >= 0x030800b4 && PY_VERSION_HEX < 0x03090000
  0, /*tp_print*/
  #endif
};

static struct __pyx_obj_4grpc_7_cython_6cygrpc___pyx_scope_struct_1_next_event *__pyx_freelist_4grpc_7_cython_6cygrpc___pyx_scope_struct_1_next_event[8];
static int __pyx_freecount_4grpc_7_cython_6cygrpc___pyx_scope_struct_1_next_event = 0;

static PyObject *__pyx_tp_new_4grpc_7_cython_6cygrpc___pyx_scope_struct_1_next_event(PyTypeObject *t, CYTHON_UNUSED PyObject *a, CYTHON_UNUSED PyObject *k) {
  PyObject *o;
  if (CYTHON_COMPILING_IN_CPYTHON && likely((__pyx_freecount_4grpc_7_cython_6cygrpc___pyx_scope_struct_1_next_event > 0) & (t->tp_basicsize == sizeof(struct __pyx_obj_4grpc_7_cython_6cygrpc___pyx_scope_struct_1_next_event)))) {
    o = (PyObject*)__pyx_freelist_4grpc_7_cython_6cygrpc___pyx_scope_struct_1_next_event[--__pyx_freecount_4grpc_7_cython_6cygrpc___pyx_scope_struct_1_next_event];
    memset(o, 0, sizeof(struct __pyx_obj_4grpc_7_cython_6cygrpc___pyx_scope_struct_1_next_event));
    (void) PyObject_INIT(o, t);
    PyObject_GC_Track(o);
  } else {
    o = (*t->tp_alloc)(t, 0);
    if (unlikely(!o)) return 0;
  }
  return o;
}

static void __pyx_tp_dealloc_4grpc_7_cython_6cygrpc___pyx_scope_struct_1_next_event(PyObject *o) {
  struct __pyx_obj_4grpc_7_cython_6cygrpc___pyx_scope_struct_1_next_event *p = (struct __pyx_obj_4grpc_7_cython_6cygrpc___pyx_scope_struct_1_next_event *)o;
  PyObject_GC_UnTrack(o);
  Py_CLEAR(p->__pyx_v_self);
  if (CYTHON_COMPILING_IN_CPYTHON && ((__pyx_freecount_4grpc_7_cython_6cygrpc___pyx_scope_struct_1_next_event < 8) & (Py_TYPE(o)->tp_basicsize == sizeof(struct __pyx_obj_4grpc_7_cython_6cygrpc___pyx_scope_struct_1_next_event)))) {
    __pyx_freelist_4grpc_7_cython_6cygrpc___pyx_scope_struct_1_next_event[__pyx_freecount_4grpc_7_cython_6cygrpc___pyx_scope_struct_1_next_event++] = ((struct __pyx_obj_4grpc_7_cython_6cygrpc___pyx_scope_struct_1_next_event *)o);
  } else {
    (*Py_TYPE(o)->tp_free)(o);
  }
}

static int __pyx_tp_traverse_4grpc_7_cython_6cygrpc___pyx_scope_struct_1_next_event(PyObject *o, visitproc v, void *a) {
  int e;
  struct __pyx_obj_4grpc_7_cython_6cygrpc___pyx_scope_struct_1_next_event *p = (struct __pyx_obj_4grpc_7_cython_6cygrpc___pyx_scope_struct_1_next_event *)o;
  if (p->__pyx_v_self) {
    e = (*v)(((PyObject *)p->__pyx_v_self), a); if (e) return e;
  }
  return 0;
}

static int __pyx_tp_clear_4grpc_7_cython_6cygrpc___pyx_scope_struct_1_next_event(PyObject *o) {
  PyObject* tmp;
  struct __pyx_obj_4grpc_7_cython_6cygrpc___pyx_scope_struct_1_next_event *p = (struct __pyx_obj_4grpc_7_cython_6cygrpc___pyx_scope_struct_1_next_event *)o;
  tmp = ((PyObject*)p->__pyx_v_self);
  p->__pyx_v_self = ((struct __pyx_obj_4grpc_7_cython_6cygrpc_SegregatedCall *)Py_None); Py_INCREF(Py_None);
  Py_XDECREF(tmp);
  return 0;
}

static PyTypeObject __pyx_type_4grpc_7_cython_6cygrpc___pyx_scope_struct_1_next_event = {
  PyVarObject_HEAD_INIT(0, 0)
  "grpc._cython.cygrpc.__pyx_scope_struct_1_next_event", /*tp_name*/
  sizeof(struct __pyx_obj_4grpc_7_cython_6cygrpc___pyx_scope_struct_1_next_event), /*tp_basicsize*/
  0, /*tp_itemsize*/
  __pyx_tp_dealloc_4grpc_7_cython_6cygrpc___pyx_scope_struct_1_next_event, /*tp_dealloc*/
  #if PY_VERSION_HEX < 0x030800b4
  0, /*tp_print*/
  #endif
  #if PY_VERSION_HEX >= 0x030800b4
  0, /*tp_vectorcall_offset*/
  #endif
  0, /*tp_getattr*/
  0, /*tp_setattr*/
  #if PY_MAJOR_VERSION < 3
  0, /*tp_compare*/
  #endif
  #if PY_MAJOR_VERSION >= 3
  0, /*tp_as_async*/
  #endif
  0, /*tp_repr*/
  0, /*tp_as_number*/
  0, /*tp_as_sequence*/
  0, /*tp_as_mapping*/
  0, /*tp_hash*/
  0, /*tp_call*/
  0, /*tp_str*/
  0, /*tp_getattro*/
  0, /*tp_setattro*/
  0, /*tp_as_buffer*/
  Py_TPFLAGS_DEFAULT|Py_TPFLAGS_HAVE_VERSION_TAG|Py_TPFLAGS_CHECKTYPES|Py_TPFLAGS_HAVE_NEWBUFFER|Py_TPFLAGS_HAVE_GC, /*tp_flags*/
  0, /*tp_doc*/
  __pyx_tp_traverse_4grpc_7_cython_6cygrpc___pyx_scope_struct_1_next_event, /*tp_traverse*/
  __pyx_tp_clear_4grpc_7_cython_6cygrpc___pyx_scope_struct_1_next_event, /*tp_clear*/
  0, /*tp_richcompare*/
  0, /*tp_weaklistoffset*/
  0, /*tp_iter*/
  0, /*tp_iternext*/
  0, /*tp_methods*/
  0, /*tp_members*/
  0, /*tp_getset*/
  0, /*tp_base*/
  0, /*tp_dict*/
  0, /*tp_descr_get*/
  0, /*tp_descr_set*/
  0, /*tp_dictoffset*/
  0, /*tp_init*/
  0, /*tp_alloc*/
  __pyx_tp_new_4grpc_7_cython_6cygrpc___pyx_scope_struct_1_next_event, /*tp_new*/
  0, /*tp_free*/
  0, /*tp_is_gc*/
  0, /*tp_bases*/
  0, /*tp_mro*/
  0, /*tp_cache*/
  0, /*tp_subclasses*/
  0, /*tp_weaklist*/
  0, /*tp_del*/
  0, /*tp_version_tag*/
  #if PY_VERSION_HEX >= 0x030400a1
  0, /*tp_finalize*/
  #endif
  #if PY_VERSION_HEX >= 0x030800b1
  0, /*tp_vectorcall*/
  #endif
  #if PY_VERSION_HEX >= 0x030800b4 && PY_VERSION_HEX < 0x03090000
  0, /*tp_print*/
  #endif
};

static struct __pyx_obj_4grpc_7_cython_6cygrpc___pyx_scope_struct_2___pyx_f_4grpc_7_cython_6cygrpc__segregated_call *__pyx_freelist_4grpc_7_cython_6cygrpc___pyx_scope_struct_2___pyx_f_4grpc_7_cython_6cygrpc__segregated_call[8];
static int __pyx_freecount_4grpc_7_cython_6cygrpc___pyx_scope_struct_2___pyx_f_4grpc_7_cython_6cygrpc__segregated_call = 0;

static PyObject *__pyx_tp_new_4grpc_7_cython_6cygrpc___pyx_scope_struct_2___pyx_f_4grpc_7_cython_6cygrpc__segregated_call(PyTypeObject *t, CYTHON_UNUSED PyObject *a, CYTHON_UNUSED PyObject *k) {
  PyObject *o;
  if (CYTHON_COMPILING_IN_CPYTHON && likely((__pyx_freecount_4grpc_7_cython_6cygrpc___pyx_scope_struct_2___pyx_f_4grpc_7_cython_6cygrpc__segregated_call > 0) & (t->tp_basicsize == sizeof(struct __pyx_obj_4grpc_7_cython_6cygrpc___pyx_scope_struct_2___pyx_f_4grpc_7_cython_6cygrpc__segregated_call)))) {
    o = (PyObject*)__pyx_freelist_4grpc_7_cython_6cygrpc___pyx_scope_struct_2___pyx_f_4grpc_7_cython_6cygrpc__segregated_call[--__pyx_freecount_4grpc_7_cython_6cygrpc___pyx_scope_struct_2___pyx_f_4grpc_7_cython_6cygrpc__segregated_call];
    memset(o, 0, sizeof(struct __pyx_obj_4grpc_7_cython_6cygrpc___pyx_scope_struct_2___pyx_f_4grpc_7_cython_6cygrpc__segregated_call));
    (void) PyObject_INIT(o, t);
    PyObject_GC_Track(o);
  } else {
    o = (*t->tp_alloc)(t, 0);
    if (unlikely(!o)) return 0;
  }
  return o;
}

static void __pyx_tp_dealloc_4grpc_7_cython_6cygrpc___pyx_scope_struct_2___pyx_f_4grpc_7_cython_6cygrpc__segregated_call(PyObject *o) {
  struct __pyx_obj_4grpc_7_cython_6cygrpc___pyx_scope_struct_2___pyx_f_4grpc_7_cython_6cygrpc__segregated_call *p = (struct __pyx_obj_4grpc_7_cython_6cygrpc___pyx_scope_struct_2___pyx_f_4grpc_7_cython_6cygrpc__segregated_call *)o;
  PyObject_GC_UnTrack(o);
  Py_CLEAR(p->__pyx_v_call_state);
  Py_CLEAR(p->__pyx_v_state);
  if (CYTHON_COMPILING_IN_CPYTHON && ((__pyx_freecount_4grpc_7_cython_6cygrpc___pyx_scope_struct_2___pyx_f_4grpc_7_cython_6cygrpc__segregated_call < 8) & (Py_TYPE(o)->tp_basicsize == sizeof(struct __pyx_obj_4grpc_7_cython_6cygrpc___pyx_scope_struct_2___pyx_f_4grpc_7_cython_6cygrpc__segregated_call)))) {
    __pyx_freelist_4grpc_7_cython_6cygrpc___pyx_scope_struct_2___pyx_f_4grpc_7_cython_6cygrpc__segregated_call[__pyx_freecount_4grpc_7_cython_6cygrpc___pyx_scope_struct_2___pyx_f_4grpc_7_cython_6cygrpc__segregated_call++] = ((struct __pyx_obj_4grpc_7_cython_6cygrpc___pyx_scope_struct_2___pyx_f_4grpc_7_cython_6cygrpc__segregated_call *)o);
  } else {
    (*Py_TYPE(o)->tp_free)(o);
  }
}

static int __pyx_tp_traverse_4grpc_7_cython_6cygrpc___pyx_scope_struct_2___pyx_f_4grpc_7_cython_6cygrpc__segregated_call(PyObject *o, visitproc v, void *a) {
  int e;
  struct __pyx_obj_4grpc_7_cython_6cygrpc___pyx_scope_struct_2___pyx_f_4grpc_7_cython_6cygrpc__segregated_call *p = (struct __pyx_obj_4grpc_7_cython_6cygrpc___pyx_scope_struct_2___pyx_f_4grpc_7_cython_6cygrpc__segregated_call *)o;
  if (p->__pyx_v_call_state) {
    e = (*v)(((PyObject *)p->__pyx_v_call_state), a); if (e) return e;
  }
  if (p->__pyx_v_state) {
    e = (*v)(((PyObject *)p->__pyx_v_state), a); if (e) return e;
  }
  return 0;
}

static int __pyx_tp_clear_4grpc_7_cython_6cygrpc___pyx_scope_struct_2___pyx_f_4grpc_7_cython_6cygrpc__segregated_call(PyObject *o) {
  PyObject* tmp;
  struct __pyx_obj_4grpc_7_cython_6cygrpc___pyx_scope_struct_2___pyx_f_4grpc_7_cython_6cygrpc__segregated_call *p = (struct __pyx_obj_4grpc_7_cython_6cygrpc___pyx_scope_struct_2___pyx_f_4grpc_7_cython_6cygrpc__segregated_call *)o;
  tmp = ((PyObject*)p->__pyx_v_call_state);
  p->__pyx_v_call_state = ((struct __pyx_obj_4grpc_7_cython_6cygrpc__CallState *)Py_None); Py_INCREF(Py_None);
  Py_XDECREF(tmp);
  tmp = ((PyObject*)p->__pyx_v_state);
  p->__pyx_v_state = ((struct __pyx_obj_4grpc_7_cython_6cygrpc__ChannelState *)Py_None); Py_INCREF(Py_None);
  Py_XDECREF(tmp);
  return 0;
}

static PyTypeObject __pyx_type_4grpc_7_cython_6cygrpc___pyx_scope_struct_2___pyx_f_4grpc_7_cython_6cygrpc__segregated_call = {
  PyVarObject_HEAD_INIT(0, 0)
  "grpc._cython.cygrpc.__pyx_scope_struct_2___pyx_f_4grpc_7_cython_6cygrpc__segregated_call", /*tp_name*/
  sizeof(struct __pyx_obj_4grpc_7_cython_6cygrpc___pyx_scope_struct_2___pyx_f_4grpc_7_cython_6cygrpc__segregated_call), /*tp_basicsize*/
  0, /*tp_itemsize*/
  __pyx_tp_dealloc_4grpc_7_cython_6cygrpc___pyx_scope_struct_2___pyx_f_4grpc_7_cython_6cygrpc__segregated_call, /*tp_dealloc*/
  #if PY_VERSION_HEX < 0x030800b4
  0, /*tp_print*/
  #endif
  #if PY_VERSION_HEX >= 0x030800b4
  0, /*tp_vectorcall_offset*/
  #endif
  0, /*tp_getattr*/
  0, /*tp_setattr*/
  #if PY_MAJOR_VERSION < 3
  0, /*tp_compare*/
  #endif
  #if PY_MAJOR_VERSION >= 3
  0, /*tp_as_async*/
  #endif
  0, /*tp_repr*/
  0, /*tp_as_number*/
  0, /*tp_as_sequence*/
  0, /*tp_as_mapping*/
  0, /*tp_hash*/
  0, /*tp_call*/
  0, /*tp_str*/
  0, /*tp_getattro*/
  0, /*tp_setattro*/
  0, /*tp_as_buffer*/
  Py_TPFLAGS_DEFAULT|Py_TPFLAGS_HAVE_VERSION_TAG|Py_TPFLAGS_CHECKTYPES|Py_TPFLAGS_HAVE_NEWBUFFER|Py_TPFLAGS_HAVE_GC, /*tp_flags*/
  0, /*tp_doc*/
  __pyx_tp_traverse_4grpc_7_cython_6cygrpc___pyx_scope_struct_2___pyx_f_4grpc_7_cython_6cygrpc__segregated_call, /*tp_traverse*/
  __pyx_tp_clear_4grpc_7_cython_6cygrpc___pyx_scope_struct_2___pyx_f_4grpc_7_cython_6cygrpc__segregated_call, /*tp_clear*/
  0, /*tp_richcompare*/
  0, /*tp_weaklistoffset*/
  0, /*tp_iter*/
  0, /*tp_iternext*/
  0, /*tp_methods*/
  0, /*tp_members*/
  0, /*tp_getset*/
  0, /*tp_base*/
  0, /*tp_dict*/
  0, /*tp_descr_get*/
  0, /*tp_descr_set*/
  0, /*tp_dictoffset*/
  0, /*tp_init*/
  0, /*tp_alloc*/
  __pyx_tp_new_4grpc_7_cython_6cygrpc___pyx_scope_struct_2___pyx_f_4grpc_7_cython_6cygrpc__segregated_call, /*tp_new*/
  0, /*tp_free*/
  0, /*tp_is_gc*/
  0, /*tp_bases*/
  0, /*tp_mro*/
  0, /*tp_cache*/
  0, /*tp_subclasses*/
  0, /*tp_weaklist*/
  0, /*tp_del*/
  0, /*tp_version_tag*/
  #if PY_VERSION_HEX >= 0x030400a1
  0, /*tp_finalize*/
  #endif
  #if PY_VERSION_HEX >= 0x030800b1
  0, /*tp_vectorcall*/
  #endif
  #if PY_VERSION_HEX >= 0x030800b4 && PY_VERSION_HEX < 0x03090000
  0, /*tp_print*/
  #endif
};

static struct __pyx_obj_4grpc_7_cython_6cygrpc___pyx_scope_struct_3_next_call_event *__pyx_freelist_4grpc_7_cython_6cygrpc___pyx_scope_struct_3_next_call_event[8];
static int __pyx_freecount_4grpc_7_cython_6cygrpc___pyx_scope_struct_3_next_call_event = 0;

static PyObject *__pyx_tp_new_4grpc_7_cython_6cygrpc___pyx_scope_struct_3_next_call_event(PyTypeObject *t, CYTHON_UNUSED PyObject *a, CYTHON_UNUSED PyObject *k) {
  PyObject *o;
  if (CYTHON_COMPILING_IN_CPYTHON && likely((__pyx_freecount_4grpc_7_cython_6cygrpc___pyx_scope_struct_3_next_call_event > 0) & (t->tp_basicsize == sizeof(struct __pyx_obj_4grpc_7_cython_6cygrpc___pyx_scope_struct_3_next_call_event)))) {
    o = (PyObject*)__pyx_freelist_4grpc_7_cython_6cygrpc___pyx_scope_struct_3_next_call_event[--__pyx_freecount_4grpc_7_cython_6cygrpc___pyx_scope_struct_3_next_call_event];
    memset(o, 0, sizeof(struct __pyx_obj_4grpc_7_cython_6cygrpc___pyx_scope_struct_3_next_call_event));
    (void) PyObject_INIT(o, t);
    PyObject_GC_Track(o);
  } else {
    o = (*t->tp_alloc)(t, 0);
    if (unlikely(!o)) return 0;
  }
  return o;
}

static void __pyx_tp_dealloc_4grpc_7_cython_6cygrpc___pyx_scope_struct_3_next_call_event(PyObject *o) {
  struct __pyx_obj_4grpc_7_cython_6cygrpc___pyx_scope_struct_3_next_call_event *p = (struct __pyx_obj_4grpc_7_cython_6cygrpc___pyx_scope_struct_3_next_call_event *)o;
  PyObject_GC_UnTrack(o);
  Py_CLEAR(p->__pyx_v_self);
  if (CYTHON_COMPILING_IN_CPYTHON && ((__pyx_freecount_4grpc_7_cython_6cygrpc___pyx_scope_struct_3_next_call_event < 8) & (Py_TYPE(o)->tp_basicsize == sizeof(struct __pyx_obj_4grpc_7_cython_6cygrpc___pyx_scope_struct_3_next_call_event)))) {
    __pyx_freelist_4grpc_7_cython_6cygrpc___pyx_scope_struct_3_next_call_event[__pyx_freecount_4grpc_7_cython_6cygrpc___pyx_scope_struct_3_next_call_event++] = ((struct __pyx_obj_4grpc_7_cython_6cygrpc___pyx_scope_struct_3_next_call_event *)o);
  } else {
    (*Py_TYPE(o)->tp_free)(o);
  }
}

static int __pyx_tp_traverse_4grpc_7_cython_6cygrpc___pyx_scope_struct_3_next_call_event(PyObject *o, visitproc v, void *a) {
  int e;
  struct __pyx_obj_4grpc_7_cython_6cygrpc___pyx_scope_struct_3_next_call_event *p = (struct __pyx_obj_4grpc_7_cython_6cygrpc___pyx_scope_struct_3_next_call_event *)o;
  if (p->__pyx_v_self) {
    e = (*v)(((PyObject *)p->__pyx_v_self), a); if (e) return e;
  }
  return 0;
}

static int __pyx_tp_clear_4grpc_7_cython_6cygrpc___pyx_scope_struct_3_next_call_event(PyObject *o) {
  PyObject* tmp;
  struct __pyx_obj_4grpc_7_cython_6cygrpc___pyx_scope_struct_3_next_call_event *p = (struct __pyx_obj_4grpc_7_cython_6cygrpc___pyx_scope_struct_3_next_call_event *)o;
  tmp = ((PyObject*)p->__pyx_v_self);
  p->__pyx_v_self = ((struct __pyx_obj_4grpc_7_cython_6cygrpc_Channel *)Py_None); Py_INCREF(Py_None);
  Py_XDECREF(tmp);
  return 0;
}

static PyTypeObject __pyx_type_4grpc_7_cython_6cygrpc___pyx_scope_struct_3_next_call_event = {
  PyVarObject_HEAD_INIT(0, 0)
  "grpc._cython.cygrpc.__pyx_scope_struct_3_next_call_event", /*tp_name*/
  sizeof(struct __pyx_obj_4grpc_7_cython_6cygrpc___pyx_scope_struct_3_next_call_event), /*tp_basicsize*/
  0, /*tp_itemsize*/
  __pyx_tp_dealloc_4grpc_7_cython_6cygrpc___pyx_scope_struct_3_next_call_event, /*tp_dealloc*/
  #if PY_VERSION_HEX < 0x030800b4
  0, /*tp_print*/
  #endif
  #if PY_VERSION_HEX >= 0x030800b4
  0, /*tp_vectorcall_offset*/
  #endif
  0, /*tp_getattr*/
  0, /*tp_setattr*/
  #if PY_MAJOR_VERSION < 3
  0, /*tp_compare*/
  #endif
  #if PY_MAJOR_VERSION >= 3
  0, /*tp_as_async*/
  #endif
  0, /*tp_repr*/
  0, /*tp_as_number*/
  0, /*tp_as_sequence*/
  0, /*tp_as_mapping*/
  0, /*tp_hash*/
  0, /*tp_call*/
  0, /*tp_str*/
  0, /*tp_getattro*/
  0, /*tp_setattro*/
  0, /*tp_as_buffer*/
  Py_TPFLAGS_DEFAULT|Py_TPFLAGS_HAVE_VERSION_TAG|Py_TPFLAGS_CHECKTYPES|Py_TPFLAGS_HAVE_NEWBUFFER|Py_TPFLAGS_HAVE_GC, /*tp_flags*/
  0, /*tp_doc*/
  __pyx_tp_traverse_4grpc_7_cython_6cygrpc___pyx_scope_struct_3_next_call_event, /*tp_traverse*/
  __pyx_tp_clear_4grpc_7_cython_6cygrpc___pyx_scope_struct_3_next_call_event, /*tp_clear*/
  0, /*tp_richcompare*/
  0, /*tp_weaklistoffset*/
  0, /*tp_iter*/
  0, /*tp_iternext*/
  0, /*tp_methods*/
  0, /*tp_members*/
  0, /*tp_getset*/
  0, /*tp_base*/
  0, /*tp_dict*/
  0, /*tp_descr_get*/
  0, /*tp_descr_set*/
  0, /*tp_dictoffset*/
  0, /*tp_init*/
  0, /*tp_alloc*/
  __pyx_tp_new_4grpc_7_cython_6cygrpc___pyx_scope_struct_3_next_call_event, /*tp_new*/
  0, /*tp_free*/
  0, /*tp_is_gc*/
  0, /*tp_bases*/
  0, /*tp_mro*/
  0, /*tp_cache*/
  0, /*tp_subclasses*/
  0, /*tp_weaklist*/
  0, /*tp_del*/
  0, /*tp_version_tag*/
  #if PY_VERSION_HEX >= 0x030400a1
  0, /*tp_finalize*/
  #endif
  #if PY_VERSION_HEX >= 0x030800b1
  0, /*tp_vectorcall*/
  #endif
  #if PY_VERSION_HEX >= 0x030800b4 && PY_VERSION_HEX < 0x03090000
  0, /*tp_print*/
  #endif
};

static struct __pyx_obj_4grpc_7_cython_6cygrpc___pyx_scope_struct_4___pyx_f_4grpc_7_cython_6cygrpc__get_metadata *__pyx_freelist_4grpc_7_cython_6cygrpc___pyx_scope_struct_4___pyx_f_4grpc_7_cython_6cygrpc__get_metadata[8];
static int __pyx_freecount_4grpc_7_cython_6cygrpc___pyx_scope_struct_4___pyx_f_4grpc_7_cython_6cygrpc__get_metadata = 0;

static PyObject *__pyx_tp_new_4grpc_7_cython_6cygrpc___pyx_scope_struct_4___pyx_f_4grpc_7_cython_6cygrpc__get_metadata(PyTypeObject *t, CYTHON_UNUSED PyObject *a, CYTHON_UNUSED PyObject *k) {
  PyObject *o;
  if (CYTHON_COMPILING_IN_CPYTHON && likely((__pyx_freecount_4grpc_7_cython_6cygrpc___pyx_scope_struct_4___pyx_f_4grpc_7_cython_6cygrpc__get_metadata > 0) & (t->tp_basicsize == sizeof(struct __pyx_obj_4grpc_7_cython_6cygrpc___pyx_scope_struct_4___pyx_f_4grpc_7_cython_6cygrpc__get_metadata)))) {
    o = (PyObject*)__pyx_freelist_4grpc_7_cython_6cygrpc___pyx_scope_struct_4___pyx_f_4grpc_7_cython_6cygrpc__get_metadata[--__pyx_freecount_4grpc_7_cython_6cygrpc___pyx_scope_struct_4___pyx_f_4grpc_7_cython_6cygrpc__get_metadata];
    memset(o, 0, sizeof(struct __pyx_obj_4grpc_7_cython_6cygrpc___pyx_scope_struct_4___pyx_f_4grpc_7_cython_6cygrpc__get_metadata));
    (void) PyObject_INIT(o, t);
  } else {
    o = (*t->tp_alloc)(t, 0);
    if (unlikely(!o)) return 0;
  }
  return o;
}

static void __pyx_tp_dealloc_4grpc_7_cython_6cygrpc___pyx_scope_struct_4___pyx_f_4grpc_7_cython_6cygrpc__get_metadata(PyObject *o) {
  if (CYTHON_COMPILING_IN_CPYTHON && ((__pyx_freecount_4grpc_7_cython_6cygrpc___pyx_scope_struct_4___pyx_f_4grpc_7_cython_6cygrpc__get_metadata < 8) & (Py_TYPE(o)->tp_basicsize == sizeof(struct __pyx_obj_4grpc_7_cython_6cygrpc___pyx_scope_struct_4___pyx_f_4grpc_7_cython_6cygrpc__get_metadata)))) {
    __pyx_freelist_4grpc_7_cython_6cygrpc___pyx_scope_struct_4___pyx_f_4grpc_7_cython_6cygrpc__get_metadata[__pyx_freecount_4grpc_7_cython_6cygrpc___pyx_scope_struct_4___pyx_f_4grpc_7_cython_6cygrpc__get_metadata++] = ((struct __pyx_obj_4grpc_7_cython_6cygrpc___pyx_scope_struct_4___pyx_f_4grpc_7_cython_6cygrpc__get_metadata *)o);
  } else {
    (*Py_TYPE(o)->tp_free)(o);
  }
}

static PyTypeObject __pyx_type_4grpc_7_cython_6cygrpc___pyx_scope_struct_4___pyx_f_4grpc_7_cython_6cygrpc__get_metadata = {
  PyVarObject_HEAD_INIT(0, 0)
  "grpc._cython.cygrpc.__pyx_scope_struct_4___pyx_f_4grpc_7_cython_6cygrpc__get_metadata", /*tp_name*/
  sizeof(struct __pyx_obj_4grpc_7_cython_6cygrpc___pyx_scope_struct_4___pyx_f_4grpc_7_cython_6cygrpc__get_metadata), /*tp_basicsize*/
  0, /*tp_itemsize*/
  __pyx_tp_dealloc_4grpc_7_cython_6cygrpc___pyx_scope_struct_4___pyx_f_4grpc_7_cython_6cygrpc__get_metadata, /*tp_dealloc*/
  #if PY_VERSION_HEX < 0x030800b4
  0, /*tp_print*/
  #endif
  #if PY_VERSION_HEX >= 0x030800b4
  0, /*tp_vectorcall_offset*/
  #endif
  0, /*tp_getattr*/
  0, /*tp_setattr*/
  #if PY_MAJOR_VERSION < 3
  0, /*tp_compare*/
  #endif
  #if PY_MAJOR_VERSION >= 3
  0, /*tp_as_async*/
  #endif
  0, /*tp_repr*/
  0, /*tp_as_number*/
  0, /*tp_as_sequence*/
  0, /*tp_as_mapping*/
  0, /*tp_hash*/
  0, /*tp_call*/
  0, /*tp_str*/
  0, /*tp_getattro*/
  0, /*tp_setattro*/
  0, /*tp_as_buffer*/
  Py_TPFLAGS_DEFAULT|Py_TPFLAGS_HAVE_VERSION_TAG|Py_TPFLAGS_CHECKTYPES|Py_TPFLAGS_HAVE_NEWBUFFER, /*tp_flags*/
  0, /*tp_doc*/
  0, /*tp_traverse*/
  0, /*tp_clear*/
  0, /*tp_richcompare*/
  0, /*tp_weaklistoffset*/
  0, /*tp_iter*/
  0, /*tp_iternext*/
  0, /*tp_methods*/
  0, /*tp_members*/
  0, /*tp_getset*/
  0, /*tp_base*/
  0, /*tp_dict*/
  0, /*tp_descr_get*/
  0, /*tp_descr_set*/
  0, /*tp_dictoffset*/
  0, /*tp_init*/
  0, /*tp_alloc*/
  __pyx_tp_new_4grpc_7_cython_6cygrpc___pyx_scope_struct_4___pyx_f_4grpc_7_cython_6cygrpc__get_metadata, /*tp_new*/
  0, /*tp_free*/
  0, /*tp_is_gc*/
  0, /*tp_bases*/
  0, /*tp_mro*/
  0, /*tp_cache*/
  0, /*tp_subclasses*/
  0, /*tp_weaklist*/
  0, /*tp_del*/
  0, /*tp_version_tag*/
  #if PY_VERSION_HEX >= 0x030400a1
  0, /*tp_finalize*/
  #endif
  #if PY_VERSION_HEX >= 0x030800b1
  0, /*tp_vectorcall*/
  #endif
  #if PY_VERSION_HEX >= 0x030800b4 && PY_VERSION_HEX < 0x03090000
  0, /*tp_print*/
  #endif
};

static struct __pyx_obj_4grpc_7_cython_6cygrpc___pyx_scope_struct_5___pyx_f_4grpc_7_cython_6cygrpc__metadata *__pyx_freelist_4grpc_7_cython_6cygrpc___pyx_scope_struct_5___pyx_f_4grpc_7_cython_6cygrpc__metadata[8];
static int __pyx_freecount_4grpc_7_cython_6cygrpc___pyx_scope_struct_5___pyx_f_4grpc_7_cython_6cygrpc__metadata = 0;

static PyObject *__pyx_tp_new_4grpc_7_cython_6cygrpc___pyx_scope_struct_5___pyx_f_4grpc_7_cython_6cygrpc__metadata(PyTypeObject *t, CYTHON_UNUSED PyObject *a, CYTHON_UNUSED PyObject *k) {
  PyObject *o;
  if (CYTHON_COMPILING_IN_CPYTHON && likely((__pyx_freecount_4grpc_7_cython_6cygrpc___pyx_scope_struct_5___pyx_f_4grpc_7_cython_6cygrpc__metadata > 0) & (t->tp_basicsize == sizeof(struct __pyx_obj_4grpc_7_cython_6cygrpc___pyx_scope_struct_5___pyx_f_4grpc_7_cython_6cygrpc__metadata)))) {
    o = (PyObject*)__pyx_freelist_4grpc_7_cython_6cygrpc___pyx_scope_struct_5___pyx_f_4grpc_7_cython_6cygrpc__metadata[--__pyx_freecount_4grpc_7_cython_6cygrpc___pyx_scope_struct_5___pyx_f_4grpc_7_cython_6cygrpc__metadata];
    memset(o, 0, sizeof(struct __pyx_obj_4grpc_7_cython_6cygrpc___pyx_scope_struct_5___pyx_f_4grpc_7_cython_6cygrpc__metadata));
    (void) PyObject_INIT(o, t);
  } else {
    o = (*t->tp_alloc)(t, 0);
    if (unlikely(!o)) return 0;
  }
  return o;
}

static void __pyx_tp_dealloc_4grpc_7_cython_6cygrpc___pyx_scope_struct_5___pyx_f_4grpc_7_cython_6cygrpc__metadata(PyObject *o) {
  if (CYTHON_COMPILING_IN_CPYTHON && ((__pyx_freecount_4grpc_7_cython_6cygrpc___pyx_scope_struct_5___pyx_f_4grpc_7_cython_6cygrpc__metadata < 8) & (Py_TYPE(o)->tp_basicsize == sizeof(struct __pyx_obj_4grpc_7_cython_6cygrpc___pyx_scope_struct_5___pyx_f_4grpc_7_cython_6cygrpc__metadata)))) {
    __pyx_freelist_4grpc_7_cython_6cygrpc___pyx_scope_struct_5___pyx_f_4grpc_7_cython_6cygrpc__metadata[__pyx_freecount_4grpc_7_cython_6cygrpc___pyx_scope_struct_5___pyx_f_4grpc_7_cython_6cygrpc__metadata++] = ((struct __pyx_obj_4grpc_7_cython_6cygrpc___pyx_scope_struct_5___pyx_f_4grpc_7_cython_6cygrpc__metadata *)o);
  } else {
    (*Py_TYPE(o)->tp_free)(o);
  }
}

static PyTypeObject __pyx_type_4grpc_7_cython_6cygrpc___pyx_scope_struct_5___pyx_f_4grpc_7_cython_6cygrpc__metadata = {
  PyVarObject_HEAD_INIT(0, 0)
  "grpc._cython.cygrpc.__pyx_scope_struct_5___pyx_f_4grpc_7_cython_6cygrpc__metadata", /*tp_name*/
  sizeof(struct __pyx_obj_4grpc_7_cython_6cygrpc___pyx_scope_struct_5___pyx_f_4grpc_7_cython_6cygrpc__metadata), /*tp_basicsize*/
  0, /*tp_itemsize*/
  __pyx_tp_dealloc_4grpc_7_cython_6cygrpc___pyx_scope_struct_5___pyx_f_4grpc_7_cython_6cygrpc__metadata, /*tp_dealloc*/
  #if PY_VERSION_HEX < 0x030800b4
  0, /*tp_print*/
  #endif
  #if PY_VERSION_HEX >= 0x030800b4
  0, /*tp_vectorcall_offset*/
  #endif
  0, /*tp_getattr*/
  0, /*tp_setattr*/
  #if PY_MAJOR_VERSION < 3
  0, /*tp_compare*/
  #endif
  #if PY_MAJOR_VERSION >= 3
  0, /*tp_as_async*/
  #endif
  0, /*tp_repr*/
  0, /*tp_as_number*/
  0, /*tp_as_sequence*/
  0, /*tp_as_mapping*/
  0, /*tp_hash*/
  0, /*tp_call*/
  0, /*tp_str*/
  0, /*tp_getattro*/
  0, /*tp_setattro*/
  0, /*tp_as_buffer*/
  Py_TPFLAGS_DEFAULT|Py_TPFLAGS_HAVE_VERSION_TAG|Py_TPFLAGS_CHECKTYPES|Py_TPFLAGS_HAVE_NEWBUFFER, /*tp_flags*/
  0, /*tp_doc*/
  0, /*tp_traverse*/
  0, /*tp_clear*/
  0, /*tp_richcompare*/
  0, /*tp_weaklistoffset*/
  0, /*tp_iter*/
  0, /*tp_iternext*/
  0, /*tp_methods*/
  0, /*tp_members*/
  0, /*tp_getset*/
  0, /*tp_base*/
  0, /*tp_dict*/
  0, /*tp_descr_get*/
  0, /*tp_descr_set*/
  0, /*tp_dictoffset*/
  0, /*tp_init*/
  0, /*tp_alloc*/
  __pyx_tp_new_4grpc_7_cython_6cygrpc___pyx_scope_struct_5___pyx_f_4grpc_7_cython_6cygrpc__metadata, /*tp_new*/
  0, /*tp_free*/
  0, /*tp_is_gc*/
  0, /*tp_bases*/
  0, /*tp_mro*/
  0, /*tp_cache*/
  0, /*tp_subclasses*/
  0, /*tp_weaklist*/
  0, /*tp_del*/
  0, /*tp_version_tag*/
  #if PY_VERSION_HEX >= 0x030400a1
  0, /*tp_finalize*/
  #endif
  #if PY_VERSION_HEX >= 0x030800b1
  0, /*tp_vectorcall*/
  #endif
  #if PY_VERSION_HEX >= 0x030800b4 && PY_VERSION_HEX < 0x03090000
  0, /*tp_print*/
  #endif
};

static struct __pyx_obj_4grpc_7_cython_6cygrpc___pyx_scope_struct_6_genexpr *__pyx_freelist_4grpc_7_cython_6cygrpc___pyx_scope_struct_6_genexpr[8];
static int __pyx_freecount_4grpc_7_cython_6cygrpc___pyx_scope_struct_6_genexpr = 0;

static PyObject *__pyx_tp_new_4grpc_7_cython_6cygrpc___pyx_scope_struct_6_genexpr(PyTypeObject *t, CYTHON_UNUSED PyObject *a, CYTHON_UNUSED PyObject *k) {
  PyObject *o;
  if (CYTHON_COMPILING_IN_CPYTHON && likely((__pyx_freecount_4grpc_7_cython_6cygrpc___pyx_scope_struct_6_genexpr > 0) & (t->tp_basicsize == sizeof(struct __pyx_obj_4grpc_7_cython_6cygrpc___pyx_scope_struct_6_genexpr)))) {
    o = (PyObject*)__pyx_freelist_4grpc_7_cython_6cygrpc___pyx_scope_struct_6_genexpr[--__pyx_freecount_4grpc_7_cython_6cygrpc___pyx_scope_struct_6_genexpr];
    memset(o, 0, sizeof(struct __pyx_obj_4grpc_7_cython_6cygrpc___pyx_scope_struct_6_genexpr));
    (void) PyObject_INIT(o, t);
    PyObject_GC_Track(o);
  } else {
    o = (*t->tp_alloc)(t, 0);
    if (unlikely(!o)) return 0;
  }
  return o;
}

static void __pyx_tp_dealloc_4grpc_7_cython_6cygrpc___pyx_scope_struct_6_genexpr(PyObject *o) {
  struct __pyx_obj_4grpc_7_cython_6cygrpc___pyx_scope_struct_6_genexpr *p = (struct __pyx_obj_4grpc_7_cython_6cygrpc___pyx_scope_struct_6_genexpr *)o;
  PyObject_GC_UnTrack(o);
  Py_CLEAR(p->__pyx_outer_scope);
  if (CYTHON_COMPILING_IN_CPYTHON && ((__pyx_freecount_4grpc_7_cython_6cygrpc___pyx_scope_struct_6_genexpr < 8) & (Py_TYPE(o)->tp_basicsize == sizeof(struct __pyx_obj_4grpc_7_cython_6cygrpc___pyx_scope_struct_6_genexpr)))) {
    __pyx_freelist_4grpc_7_cython_6cygrpc___pyx_scope_struct_6_genexpr[__pyx_freecount_4grpc_7_cython_6cygrpc___pyx_scope_struct_6_genexpr++] = ((struct __pyx_obj_4grpc_7_cython_6cygrpc___pyx_scope_struct_6_genexpr *)o);
  } else {
    (*Py_TYPE(o)->tp_free)(o);
  }
}

static int __pyx_tp_traverse_4grpc_7_cython_6cygrpc___pyx_scope_struct_6_genexpr(PyObject *o, visitproc v, void *a) {
  int e;
  struct __pyx_obj_4grpc_7_cython_6cygrpc___pyx_scope_struct_6_genexpr *p = (struct __pyx_obj_4grpc_7_cython_6cygrpc___pyx_scope_struct_6_genexpr *)o;
  if (p->__pyx_outer_scope) {
    e = (*v)(((PyObject *)p->__pyx_outer_scope), a); if (e) return e;
  }
  return 0;
}

static PyTypeObject __pyx_type_4grpc_7_cython_6cygrpc___pyx_scope_struct_6_genexpr = {
  PyVarObject_HEAD_INIT(0, 0)
  "grpc._cython.cygrpc.__pyx_scope_struct_6_genexpr", /*tp_name*/
  sizeof(struct __pyx_obj_4grpc_7_cython_6cygrpc___pyx_scope_struct_6_genexpr), /*tp_basicsize*/
  0, /*tp_itemsize*/
  __pyx_tp_dealloc_4grpc_7_cython_6cygrpc___pyx_scope_struct_6_genexpr, /*tp_dealloc*/
  #if PY_VERSION_HEX < 0x030800b4
  0, /*tp_print*/
  #endif
  #if PY_VERSION_HEX >= 0x030800b4
  0, /*tp_vectorcall_offset*/
  #endif
  0, /*tp_getattr*/
  0, /*tp_setattr*/
  #if PY_MAJOR_VERSION < 3
  0, /*tp_compare*/
  #endif
  #if PY_MAJOR_VERSION >= 3
  0, /*tp_as_async*/
  #endif
  0, /*tp_repr*/
  0, /*tp_as_number*/
  0, /*tp_as_sequence*/
  0, /*tp_as_mapping*/
  0, /*tp_hash*/
  0, /*tp_call*/
  0, /*tp_str*/
  0, /*tp_getattro*/
  0, /*tp_setattro*/
  0, /*tp_as_buffer*/
  Py_TPFLAGS_DEFAULT|Py_TPFLAGS_HAVE_VERSION_TAG|Py_TPFLAGS_CHECKTYPES|Py_TPFLAGS_HAVE_NEWBUFFER|Py_TPFLAGS_HAVE_GC, /*tp_flags*/
  0, /*tp_doc*/
  __pyx_tp_traverse_4grpc_7_cython_6cygrpc___pyx_scope_struct_6_genexpr, /*tp_traverse*/
  0, /*tp_clear*/
  0, /*tp_richcompare*/
  0, /*tp_weaklistoffset*/
  0, /*tp_iter*/
  0, /*tp_iternext*/
  0, /*tp_methods*/
  0, /*tp_members*/
  0, /*tp_getset*/
  0, /*tp_base*/
  0, /*tp_dict*/
  0, /*tp_descr_get*/
  0, /*tp_descr_set*/
  0, /*tp_dictoffset*/
  0, /*tp_init*/
  0, /*tp_alloc*/
  __pyx_tp_new_4grpc_7_cython_6cygrpc___pyx_scope_struct_6_genexpr, /*tp_new*/
  0, /*tp_free*/
  0, /*tp_is_gc*/
  0, /*tp_bases*/
  0, /*tp_mro*/
  0, /*tp_cache*/
  0, /*tp_subclasses*/
  0, /*tp_weaklist*/
  0, /*tp_del*/
  0, /*tp_version_tag*/
  #if PY_VERSION_HEX >= 0x030400a1
  0, /*tp_finalize*/
  #endif
  #if PY_VERSION_HEX >= 0x030800b1
  0, /*tp_vectorcall*/
  #endif
  #if PY_VERSION_HEX >= 0x030800b4 && PY_VERSION_HEX < 0x03090000
  0, /*tp_print*/
  #endif
};

static struct __pyx_obj_4grpc_7_cython_6cygrpc___pyx_scope_struct_7___pyx_f_4grpc_7_cython_6cygrpc_tuples_to_resolvaddr *__pyx_freelist_4grpc_7_cython_6cygrpc___pyx_scope_struct_7___pyx_f_4grpc_7_cython_6cygrpc_tuples_to_resolvaddr[8];
static int __pyx_freecount_4grpc_7_cython_6cygrpc___pyx_scope_struct_7___pyx_f_4grpc_7_cython_6cygrpc_tuples_to_resolvaddr = 0;

static PyObject *__pyx_tp_new_4grpc_7_cython_6cygrpc___pyx_scope_struct_7___pyx_f_4grpc_7_cython_6cygrpc_tuples_to_resolvaddr(PyTypeObject *t, CYTHON_UNUSED PyObject *a, CYTHON_UNUSED PyObject *k) {
  PyObject *o;
  if (CYTHON_COMPILING_IN_CPYTHON && likely((__pyx_freecount_4grpc_7_cython_6cygrpc___pyx_scope_struct_7___pyx_f_4grpc_7_cython_6cygrpc_tuples_to_resolvaddr > 0) & (t->tp_basicsize == sizeof(struct __pyx_obj_4grpc_7_cython_6cygrpc___pyx_scope_struct_7___pyx_f_4grpc_7_cython_6cygrpc_tuples_to_resolvaddr)))) {
    o = (PyObject*)__pyx_freelist_4grpc_7_cython_6cygrpc___pyx_scope_struct_7___pyx_f_4grpc_7_cython_6cygrpc_tuples_to_resolvaddr[--__pyx_freecount_4grpc_7_cython_6cygrpc___pyx_scope_struct_7___pyx_f_4grpc_7_cython_6cygrpc_tuples_to_resolvaddr];
    memset(o, 0, sizeof(struct __pyx_obj_4grpc_7_cython_6cygrpc___pyx_scope_struct_7___pyx_f_4grpc_7_cython_6cygrpc_tuples_to_resolvaddr));
    (void) PyObject_INIT(o, t);
    PyObject_GC_Track(o);
  } else {
    o = (*t->tp_alloc)(t, 0);
    if (unlikely(!o)) return 0;
  }
  return o;
}

static void __pyx_tp_dealloc_4grpc_7_cython_6cygrpc___pyx_scope_struct_7___pyx_f_4grpc_7_cython_6cygrpc_tuples_to_resolvaddr(PyObject *o) {
  struct __pyx_obj_4grpc_7_cython_6cygrpc___pyx_scope_struct_7___pyx_f_4grpc_7_cython_6cygrpc_tuples_to_resolvaddr *p = (struct __pyx_obj_4grpc_7_cython_6cygrpc___pyx_scope_struct_7___pyx_f_4grpc_7_cython_6cygrpc_tuples_to_resolvaddr *)o;
  PyObject_GC_UnTrack(o);
  Py_CLEAR(p->__pyx_v_tups);
  if (CYTHON_COMPILING_IN_CPYTHON && ((__pyx_freecount_4grpc_7_cython_6cygrpc___pyx_scope_struct_7___pyx_f_4grpc_7_cython_6cygrpc_tuples_to_resolvaddr < 8) & (Py_TYPE(o)->tp_basicsize == sizeof(struct __pyx_obj_4grpc_7_cython_6cygrpc___pyx_scope_struct_7___pyx_f_4grpc_7_cython_6cygrpc_tuples_to_resolvaddr)))) {
    __pyx_freelist_4grpc_7_cython_6cygrpc___pyx_scope_struct_7___pyx_f_4grpc_7_cython_6cygrpc_tuples_to_resolvaddr[__pyx_freecount_4grpc_7_cython_6cygrpc___pyx_scope_struct_7___pyx_f_4grpc_7_cython_6cygrpc_tuples_to_resolvaddr++] = ((struct __pyx_obj_4grpc_7_cython_6cygrpc___pyx_scope_struct_7___pyx_f_4grpc_7_cython_6cygrpc_tuples_to_resolvaddr *)o);
  } else {
    (*Py_TYPE(o)->tp_free)(o);
  }
}

static int __pyx_tp_traverse_4grpc_7_cython_6cygrpc___pyx_scope_struct_7___pyx_f_4grpc_7_cython_6cygrpc_tuples_to_resolvaddr(PyObject *o, visitproc v, void *a) {
  int e;
  struct __pyx_obj_4grpc_7_cython_6cygrpc___pyx_scope_struct_7___pyx_f_4grpc_7_cython_6cygrpc_tuples_to_resolvaddr *p = (struct __pyx_obj_4grpc_7_cython_6cygrpc___pyx_scope_struct_7___pyx_f_4grpc_7_cython_6cygrpc_tuples_to_resolvaddr *)o;
  if (p->__pyx_v_tups) {
    e = (*v)(p->__pyx_v_tups, a); if (e) return e;
  }
  return 0;
}

static int __pyx_tp_clear_4grpc_7_cython_6cygrpc___pyx_scope_struct_7___pyx_f_4grpc_7_cython_6cygrpc_tuples_to_resolvaddr(PyObject *o) {
  PyObject* tmp;
  struct __pyx_obj_4grpc_7_cython_6cygrpc___pyx_scope_struct_7___pyx_f_4grpc_7_cython_6cygrpc_tuples_to_resolvaddr *p = (struct __pyx_obj_4grpc_7_cython_6cygrpc___pyx_scope_struct_7___pyx_f_4grpc_7_cython_6cygrpc_tuples_to_resolvaddr *)o;
  tmp = ((PyObject*)p->__pyx_v_tups);
  p->__pyx_v_tups = Py_None; Py_INCREF(Py_None);
  Py_XDECREF(tmp);
  return 0;
}

static PyTypeObject __pyx_type_4grpc_7_cython_6cygrpc___pyx_scope_struct_7___pyx_f_4grpc_7_cython_6cygrpc_tuples_to_resolvaddr = {
  PyVarObject_HEAD_INIT(0, 0)
  "grpc._cython.cygrpc.__pyx_scope_struct_7___pyx_f_4grpc_7_cython_6cygrpc_tuples_to_resolvaddr", /*tp_name*/
  sizeof(struct __pyx_obj_4grpc_7_cython_6cygrpc___pyx_scope_struct_7___pyx_f_4grpc_7_cython_6cygrpc_tuples_to_resolvaddr), /*tp_basicsize*/
  0, /*tp_itemsize*/
  __pyx_tp_dealloc_4grpc_7_cython_6cygrpc___pyx_scope_struct_7___pyx_f_4grpc_7_cython_6cygrpc_tuples_to_resolvaddr, /*tp_dealloc*/
  #if PY_VERSION_HEX < 0x030800b4
  0, /*tp_print*/
  #endif
  #if PY_VERSION_HEX >= 0x030800b4
  0, /*tp_vectorcall_offset*/
  #endif
  0, /*tp_getattr*/
  0, /*tp_setattr*/
  #if PY_MAJOR_VERSION < 3
  0, /*tp_compare*/
  #endif
  #if PY_MAJOR_VERSION >= 3
  0, /*tp_as_async*/
  #endif
  0, /*tp_repr*/
  0, /*tp_as_number*/
  0, /*tp_as_sequence*/
  0, /*tp_as_mapping*/
  0, /*tp_hash*/
  0, /*tp_call*/
  0, /*tp_str*/
  0, /*tp_getattro*/
  0, /*tp_setattro*/
  0, /*tp_as_buffer*/
  Py_TPFLAGS_DEFAULT|Py_TPFLAGS_HAVE_VERSION_TAG|Py_TPFLAGS_CHECKTYPES|Py_TPFLAGS_HAVE_NEWBUFFER|Py_TPFLAGS_HAVE_GC, /*tp_flags*/
  0, /*tp_doc*/
  __pyx_tp_traverse_4grpc_7_cython_6cygrpc___pyx_scope_struct_7___pyx_f_4grpc_7_cython_6cygrpc_tuples_to_resolvaddr, /*tp_traverse*/
  __pyx_tp_clear_4grpc_7_cython_6cygrpc___pyx_scope_struct_7___pyx_f_4grpc_7_cython_6cygrpc_tuples_to_resolvaddr, /*tp_clear*/
  0, /*tp_richcompare*/
  0, /*tp_weaklistoffset*/
  0, /*tp_iter*/
  0, /*tp_iternext*/
  0, /*tp_methods*/
  0, /*tp_members*/
  0, /*tp_getset*/
  0, /*tp_base*/
  0, /*tp_dict*/
  0, /*tp_descr_get*/
  0, /*tp_descr_set*/
  0, /*tp_dictoffset*/
  0, /*tp_init*/
  0, /*tp_alloc*/
  __pyx_tp_new_4grpc_7_cython_6cygrpc___pyx_scope_struct_7___pyx_f_4grpc_7_cython_6cygrpc_tuples_to_resolvaddr, /*tp_new*/
  0, /*tp_free*/
  0, /*tp_is_gc*/
  0, /*tp_bases*/
  0, /*tp_mro*/
  0, /*tp_cache*/
  0, /*tp_subclasses*/
  0, /*tp_weaklist*/
  0, /*tp_del*/
  0, /*tp_version_tag*/
  #if PY_VERSION_HEX >= 0x030400a1
  0, /*tp_finalize*/
  #endif
  #if PY_VERSION_HEX >= 0x030800b1
  0, /*tp_vectorcall*/
  #endif
  #if PY_VERSION_HEX >= 0x030800b4 && PY_VERSION_HEX < 0x03090000
  0, /*tp_print*/
  #endif
};

static struct __pyx_obj_4grpc_7_cython_6cygrpc___pyx_scope_struct_8_genexpr *__pyx_freelist_4grpc_7_cython_6cygrpc___pyx_scope_struct_8_genexpr[8];
static int __pyx_freecount_4grpc_7_cython_6cygrpc___pyx_scope_struct_8_genexpr = 0;

static PyObject *__pyx_tp_new_4grpc_7_cython_6cygrpc___pyx_scope_struct_8_genexpr(PyTypeObject *t, CYTHON_UNUSED PyObject *a, CYTHON_UNUSED PyObject *k) {
  PyObject *o;
  if (CYTHON_COMPILING_IN_CPYTHON && likely((__pyx_freecount_4grpc_7_cython_6cygrpc___pyx_scope_struct_8_genexpr > 0) & (t->tp_basicsize == sizeof(struct __pyx_obj_4grpc_7_cython_6cygrpc___pyx_scope_struct_8_genexpr)))) {
    o = (PyObject*)__pyx_freelist_4grpc_7_cython_6cygrpc___pyx_scope_struct_8_genexpr[--__pyx_freecount_4grpc_7_cython_6cygrpc___pyx_scope_struct_8_genexpr];
    memset(o, 0, sizeof(struct __pyx_obj_4grpc_7_cython_6cygrpc___pyx_scope_struct_8_genexpr));
    (void) PyObject_INIT(o, t);
    PyObject_GC_Track(o);
  } else {
    o = (*t->tp_alloc)(t, 0);
    if (unlikely(!o)) return 0;
  }
  return o;
}

static void __pyx_tp_dealloc_4grpc_7_cython_6cygrpc___pyx_scope_struct_8_genexpr(PyObject *o) {
  struct __pyx_obj_4grpc_7_cython_6cygrpc___pyx_scope_struct_8_genexpr *p = (struct __pyx_obj_4grpc_7_cython_6cygrpc___pyx_scope_struct_8_genexpr *)o;
  PyObject_GC_UnTrack(o);
  Py_CLEAR(p->__pyx_outer_scope);
  Py_CLEAR(p->__pyx_v_tup);
  if (CYTHON_COMPILING_IN_CPYTHON && ((__pyx_freecount_4grpc_7_cython_6cygrpc___pyx_scope_struct_8_genexpr < 8) & (Py_TYPE(o)->tp_basicsize == sizeof(struct __pyx_obj_4grpc_7_cython_6cygrpc___pyx_scope_struct_8_genexpr)))) {
    __pyx_freelist_4grpc_7_cython_6cygrpc___pyx_scope_struct_8_genexpr[__pyx_freecount_4grpc_7_cython_6cygrpc___pyx_scope_struct_8_genexpr++] = ((struct __pyx_obj_4grpc_7_cython_6cygrpc___pyx_scope_struct_8_genexpr *)o);
  } else {
    (*Py_TYPE(o)->tp_free)(o);
  }
}

static int __pyx_tp_traverse_4grpc_7_cython_6cygrpc___pyx_scope_struct_8_genexpr(PyObject *o, visitproc v, void *a) {
  int e;
  struct __pyx_obj_4grpc_7_cython_6cygrpc___pyx_scope_struct_8_genexpr *p = (struct __pyx_obj_4grpc_7_cython_6cygrpc___pyx_scope_struct_8_genexpr *)o;
  if (p->__pyx_outer_scope) {
    e = (*v)(((PyObject *)p->__pyx_outer_scope), a); if (e) return e;
  }
  if (p->__pyx_v_tup) {
    e = (*v)(p->__pyx_v_tup, a); if (e) return e;
  }
  return 0;
}

static PyTypeObject __pyx_type_4grpc_7_cython_6cygrpc___pyx_scope_struct_8_genexpr = {
  PyVarObject_HEAD_INIT(0, 0)
  "grpc._cython.cygrpc.__pyx_scope_struct_8_genexpr", /*tp_name*/
  sizeof(struct __pyx_obj_4grpc_7_cython_6cygrpc___pyx_scope_struct_8_genexpr), /*tp_basicsize*/
  0, /*tp_itemsize*/
  __pyx_tp_dealloc_4grpc_7_cython_6cygrpc___pyx_scope_struct_8_genexpr, /*tp_dealloc*/
  #if PY_VERSION_HEX < 0x030800b4
  0, /*tp_print*/
  #endif
  #if PY_VERSION_HEX >= 0x030800b4
  0, /*tp_vectorcall_offset*/
  #endif
  0, /*tp_getattr*/
  0, /*tp_setattr*/
  #if PY_MAJOR_VERSION < 3
  0, /*tp_compare*/
  #endif
  #if PY_MAJOR_VERSION >= 3
  0, /*tp_as_async*/
  #endif
  0, /*tp_repr*/
  0, /*tp_as_number*/
  0, /*tp_as_sequence*/
  0, /*tp_as_mapping*/
  0, /*tp_hash*/
  0, /*tp_call*/
  0, /*tp_str*/
  0, /*tp_getattro*/
  0, /*tp_setattro*/
  0, /*tp_as_buffer*/
  Py_TPFLAGS_DEFAULT|Py_TPFLAGS_HAVE_VERSION_TAG|Py_TPFLAGS_CHECKTYPES|Py_TPFLAGS_HAVE_NEWBUFFER|Py_TPFLAGS_HAVE_GC, /*tp_flags*/
  0, /*tp_doc*/
  __pyx_tp_traverse_4grpc_7_cython_6cygrpc___pyx_scope_struct_8_genexpr, /*tp_traverse*/
  0, /*tp_clear*/
  0, /*tp_richcompare*/
  0, /*tp_weaklistoffset*/
  0, /*tp_iter*/
  0, /*tp_iternext*/
  0, /*tp_methods*/
  0, /*tp_members*/
  0, /*tp_getset*/
  0, /*tp_base*/
  0, /*tp_dict*/
  0, /*tp_descr_get*/
  0, /*tp_descr_set*/
  0, /*tp_dictoffset*/
  0, /*tp_init*/
  0, /*tp_alloc*/
  __pyx_tp_new_4grpc_7_cython_6cygrpc___pyx_scope_struct_8_genexpr, /*tp_new*/
  0, /*tp_free*/
  0, /*tp_is_gc*/
  0, /*tp_bases*/
  0, /*tp_mro*/
  0, /*tp_cache*/
  0, /*tp_subclasses*/
  0, /*tp_weaklist*/
  0, /*tp_del*/
  0, /*tp_version_tag*/
  #if PY_VERSION_HEX >= 0x030400a1
  0, /*tp_finalize*/
  #endif
  #if PY_VERSION_HEX >= 0x030800b1
  0, /*tp_vectorcall*/
  #endif
  #if PY_VERSION_HEX >= 0x030800b4 && PY_VERSION_HEX < 0x03090000
  0, /*tp_print*/
  #endif
};

static struct __pyx_obj_4grpc_7_cython_6cygrpc___pyx_scope_struct_9__run_with_context *__pyx_freelist_4grpc_7_cython_6cygrpc___pyx_scope_struct_9__run_with_context[8];
static int __pyx_freecount_4grpc_7_cython_6cygrpc___pyx_scope_struct_9__run_with_context = 0;

static PyObject *__pyx_tp_new_4grpc_7_cython_6cygrpc___pyx_scope_struct_9__run_with_context(PyTypeObject *t, CYTHON_UNUSED PyObject *a, CYTHON_UNUSED PyObject *k) {
  PyObject *o;
  if (CYTHON_COMPILING_IN_CPYTHON && likely((__pyx_freecount_4grpc_7_cython_6cygrpc___pyx_scope_struct_9__run_with_context > 0) & (t->tp_basicsize == sizeof(struct __pyx_obj_4grpc_7_cython_6cygrpc___pyx_scope_struct_9__run_with_context)))) {
    o = (PyObject*)__pyx_freelist_4grpc_7_cython_6cygrpc___pyx_scope_struct_9__run_with_context[--__pyx_freecount_4grpc_7_cython_6cygrpc___pyx_scope_struct_9__run_with_context];
    memset(o, 0, sizeof(struct __pyx_obj_4grpc_7_cython_6cygrpc___pyx_scope_struct_9__run_with_context));
    (void) PyObject_INIT(o, t);
    PyObject_GC_Track(o);
  } else {
    o = (*t->tp_alloc)(t, 0);
    if (unlikely(!o)) return 0;
  }
  return o;
}

static void __pyx_tp_dealloc_4grpc_7_cython_6cygrpc___pyx_scope_struct_9__run_with_context(PyObject *o) {
  struct __pyx_obj_4grpc_7_cython_6cygrpc___pyx_scope_struct_9__run_with_context *p = (struct __pyx_obj_4grpc_7_cython_6cygrpc___pyx_scope_struct_9__run_with_context *)o;
  PyObject_GC_UnTrack(o);
  Py_CLEAR(p->__pyx_v_ctx);
  Py_CLEAR(p->__pyx_v_target);
  if (CYTHON_COMPILING_IN_CPYTHON && ((__pyx_freecount_4grpc_7_cython_6cygrpc___pyx_scope_struct_9__run_with_context < 8) & (Py_TYPE(o)->tp_basicsize == sizeof(struct __pyx_obj_4grpc_7_cython_6cygrpc___pyx_scope_struct_9__run_with_context)))) {
    __pyx_freelist_4grpc_7_cython_6cygrpc___pyx_scope_struct_9__run_with_context[__pyx_freecount_4grpc_7_cython_6cygrpc___pyx_scope_struct_9__run_with_context++] = ((struct __pyx_obj_4grpc_7_cython_6cygrpc___pyx_scope_struct_9__run_with_context *)o);
  } else {
    (*Py_TYPE(o)->tp_free)(o);
  }
}

static int __pyx_tp_traverse_4grpc_7_cython_6cygrpc___pyx_scope_struct_9__run_with_context(PyObject *o, visitproc v, void *a) {
  int e;
  struct __pyx_obj_4grpc_7_cython_6cygrpc___pyx_scope_struct_9__run_with_context *p = (struct __pyx_obj_4grpc_7_cython_6cygrpc___pyx_scope_struct_9__run_with_context *)o;
  if (p->__pyx_v_ctx) {
    e = (*v)(p->__pyx_v_ctx, a); if (e) return e;
  }
  if (p->__pyx_v_target) {
    e = (*v)(p->__pyx_v_target, a); if (e) return e;
  }
  return 0;
}

static int __pyx_tp_clear_4grpc_7_cython_6cygrpc___pyx_scope_struct_9__run_with_context(PyObject *o) {
  PyObject* tmp;
  struct __pyx_obj_4grpc_7_cython_6cygrpc___pyx_scope_struct_9__run_with_context *p = (struct __pyx_obj_4grpc_7_cython_6cygrpc___pyx_scope_struct_9__run_with_context *)o;
  tmp = ((PyObject*)p->__pyx_v_ctx);
  p->__pyx_v_ctx = Py_None; Py_INCREF(Py_None);
  Py_XDECREF(tmp);
  tmp = ((PyObject*)p->__pyx_v_target);
  p->__pyx_v_target = Py_None; Py_INCREF(Py_None);
  Py_XDECREF(tmp);
  return 0;
}

static PyTypeObject __pyx_type_4grpc_7_cython_6cygrpc___pyx_scope_struct_9__run_with_context = {
  PyVarObject_HEAD_INIT(0, 0)
  "grpc._cython.cygrpc.__pyx_scope_struct_9__run_with_context", /*tp_name*/
  sizeof(struct __pyx_obj_4grpc_7_cython_6cygrpc___pyx_scope_struct_9__run_with_context), /*tp_basicsize*/
  0, /*tp_itemsize*/
  __pyx_tp_dealloc_4grpc_7_cython_6cygrpc___pyx_scope_struct_9__run_with_context, /*tp_dealloc*/
  #if PY_VERSION_HEX < 0x030800b4
  0, /*tp_print*/
  #endif
  #if PY_VERSION_HEX >= 0x030800b4
  0, /*tp_vectorcall_offset*/
  #endif
  0, /*tp_getattr*/
  0, /*tp_setattr*/
  #if PY_MAJOR_VERSION < 3
  0, /*tp_compare*/
  #endif
  #if PY_MAJOR_VERSION >= 3
  0, /*tp_as_async*/
  #endif
  0, /*tp_repr*/
  0, /*tp_as_number*/
  0, /*tp_as_sequence*/
  0, /*tp_as_mapping*/
  0, /*tp_hash*/
  0, /*tp_call*/
  0, /*tp_str*/
  0, /*tp_getattro*/
  0, /*tp_setattro*/
  0, /*tp_as_buffer*/
  Py_TPFLAGS_DEFAULT|Py_TPFLAGS_HAVE_VERSION_TAG|Py_TPFLAGS_CHECKTYPES|Py_TPFLAGS_HAVE_NEWBUFFER|Py_TPFLAGS_HAVE_GC, /*tp_flags*/
  0, /*tp_doc*/
  __pyx_tp_traverse_4grpc_7_cython_6cygrpc___pyx_scope_struct_9__run_with_context, /*tp_traverse*/
  __pyx_tp_clear_4grpc_7_cython_6cygrpc___pyx_scope_struct_9__run_with_context, /*tp_clear*/
  0, /*tp_richcompare*/
  0, /*tp_weaklistoffset*/
  0, /*tp_iter*/
  0, /*tp_iternext*/
  0, /*tp_methods*/
  0, /*tp_members*/
  0, /*tp_getset*/
  0, /*tp_base*/
  0, /*tp_dict*/
  0, /*tp_descr_get*/
  0, /*tp_descr_set*/
  0, /*tp_dictoffset*/
  0, /*tp_init*/
  0, /*tp_alloc*/
  __pyx_tp_new_4grpc_7_cython_6cygrpc___pyx_scope_struct_9__run_with_context, /*tp_new*/
  0, /*tp_free*/
  0, /*tp_is_gc*/
  0, /*tp_bases*/
  0, /*tp_mro*/
  0, /*tp_cache*/
  0, /*tp_subclasses*/
  0, /*tp_weaklist*/
  0, /*tp_del*/
  0, /*tp_version_tag*/
  #if PY_VERSION_HEX >= 0x030400a1
  0, /*tp_finalize*/
  #endif
  #if PY_VERSION_HEX >= 0x030800b1
  0, /*tp_vectorcall*/
  #endif
  #if PY_VERSION_HEX >= 0x030800b4 && PY_VERSION_HEX < 0x03090000
  0, /*tp_print*/
  #endif
};

static struct __pyx_obj_4grpc_7_cython_6cygrpc___pyx_scope_struct_10__run_with_context *__pyx_freelist_4grpc_7_cython_6cygrpc___pyx_scope_struct_10__run_with_context[8];
static int __pyx_freecount_4grpc_7_cython_6cygrpc___pyx_scope_struct_10__run_with_context = 0;

static PyObject *__pyx_tp_new_4grpc_7_cython_6cygrpc___pyx_scope_struct_10__run_with_context(PyTypeObject *t, CYTHON_UNUSED PyObject *a, CYTHON_UNUSED PyObject *k) {
  PyObject *o;
  if (CYTHON_COMPILING_IN_CPYTHON && likely((__pyx_freecount_4grpc_7_cython_6cygrpc___pyx_scope_struct_10__run_with_context > 0) & (t->tp_basicsize == sizeof(struct __pyx_obj_4grpc_7_cython_6cygrpc___pyx_scope_struct_10__run_with_context)))) {
    o = (PyObject*)__pyx_freelist_4grpc_7_cython_6cygrpc___pyx_scope_struct_10__run_with_context[--__pyx_freecount_4grpc_7_cython_6cygrpc___pyx_scope_struct_10__run_with_context];
    memset(o, 0, sizeof(struct __pyx_obj_4grpc_7_cython_6cygrpc___pyx_scope_struct_10__run_with_context));
    (void) PyObject_INIT(o, t);
    PyObject_GC_Track(o);
  } else {
    o = (*t->tp_alloc)(t, 0);
    if (unlikely(!o)) return 0;
  }
  return o;
}

static void __pyx_tp_dealloc_4grpc_7_cython_6cygrpc___pyx_scope_struct_10__run_with_context(PyObject *o) {
  struct __pyx_obj_4grpc_7_cython_6cygrpc___pyx_scope_struct_10__run_with_context *p = (struct __pyx_obj_4grpc_7_cython_6cygrpc___pyx_scope_struct_10__run_with_context *)o;
  PyObject_GC_UnTrack(o);
  Py_CLEAR(p->__pyx_v_target);
  if (CYTHON_COMPILING_IN_CPYTHON && ((__pyx_freecount_4grpc_7_cython_6cygrpc___pyx_scope_struct_10__run_with_context < 8) & (Py_TYPE(o)->tp_basicsize == sizeof(struct __pyx_obj_4grpc_7_cython_6cygrpc___pyx_scope_struct_10__run_with_context)))) {
    __pyx_freelist_4grpc_7_cython_6cygrpc___pyx_scope_struct_10__run_with_context[__pyx_freecount_4grpc_7_cython_6cygrpc___pyx_scope_struct_10__run_with_context++] = ((struct __pyx_obj_4grpc_7_cython_6cygrpc___pyx_scope_struct_10__run_with_context *)o);
  } else {
    (*Py_TYPE(o)->tp_free)(o);
  }
}

static int __pyx_tp_traverse_4grpc_7_cython_6cygrpc___pyx_scope_struct_10__run_with_context(PyObject *o, visitproc v, void *a) {
  int e;
  struct __pyx_obj_4grpc_7_cython_6cygrpc___pyx_scope_struct_10__run_with_context *p = (struct __pyx_obj_4grpc_7_cython_6cygrpc___pyx_scope_struct_10__run_with_context *)o;
  if (p->__pyx_v_target) {
    e = (*v)(p->__pyx_v_target, a); if (e) return e;
  }
  return 0;
}

static int __pyx_tp_clear_4grpc_7_cython_6cygrpc___pyx_scope_struct_10__run_with_context(PyObject *o) {
  PyObject* tmp;
  struct __pyx_obj_4grpc_7_cython_6cygrpc___pyx_scope_struct_10__run_with_context *p = (struct __pyx_obj_4grpc_7_cython_6cygrpc___pyx_scope_struct_10__run_with_context *)o;
  tmp = ((PyObject*)p->__pyx_v_target);
  p->__pyx_v_target = Py_None; Py_INCREF(Py_None);
  Py_XDECREF(tmp);
  return 0;
}

static PyTypeObject __pyx_type_4grpc_7_cython_6cygrpc___pyx_scope_struct_10__run_with_context = {
  PyVarObject_HEAD_INIT(0, 0)
  "grpc._cython.cygrpc.__pyx_scope_struct_10__run_with_context", /*tp_name*/
  sizeof(struct __pyx_obj_4grpc_7_cython_6cygrpc___pyx_scope_struct_10__run_with_context), /*tp_basicsize*/
  0, /*tp_itemsize*/
  __pyx_tp_dealloc_4grpc_7_cython_6cygrpc___pyx_scope_struct_10__run_with_context, /*tp_dealloc*/
  #if PY_VERSION_HEX < 0x030800b4
  0, /*tp_print*/
  #endif
  #if PY_VERSION_HEX >= 0x030800b4
  0, /*tp_vectorcall_offset*/
  #endif
  0, /*tp_getattr*/
  0, /*tp_setattr*/
  #if PY_MAJOR_VERSION < 3
  0, /*tp_compare*/
  #endif
  #if PY_MAJOR_VERSION >= 3
  0, /*tp_as_async*/
  #endif
  0, /*tp_repr*/
  0, /*tp_as_number*/
  0, /*tp_as_sequence*/
  0, /*tp_as_mapping*/
  0, /*tp_hash*/
  0, /*tp_call*/
  0, /*tp_str*/
  0, /*tp_getattro*/
  0, /*tp_setattro*/
  0, /*tp_as_buffer*/
  Py_TPFLAGS_DEFAULT|Py_TPFLAGS_HAVE_VERSION_TAG|Py_TPFLAGS_CHECKTYPES|Py_TPFLAGS_HAVE_NEWBUFFER|Py_TPFLAGS_HAVE_GC, /*tp_flags*/
  0, /*tp_doc*/
  __pyx_tp_traverse_4grpc_7_cython_6cygrpc___pyx_scope_struct_10__run_with_context, /*tp_traverse*/
  __pyx_tp_clear_4grpc_7_cython_6cygrpc___pyx_scope_struct_10__run_with_context, /*tp_clear*/
  0, /*tp_richcompare*/
  0, /*tp_weaklistoffset*/
  0, /*tp_iter*/
  0, /*tp_iternext*/
  0, /*tp_methods*/
  0, /*tp_members*/
  0, /*tp_getset*/
  0, /*tp_base*/
  0, /*tp_dict*/
  0, /*tp_descr_get*/
  0, /*tp_descr_set*/
  0, /*tp_dictoffset*/
  0, /*tp_init*/
  0, /*tp_alloc*/
  __pyx_tp_new_4grpc_7_cython_6cygrpc___pyx_scope_struct_10__run_with_context, /*tp_new*/
  0, /*tp_free*/
  0, /*tp_is_gc*/
  0, /*tp_bases*/
  0, /*tp_mro*/
  0, /*tp_cache*/
  0, /*tp_subclasses*/
  0, /*tp_weaklist*/
  0, /*tp_del*/
  0, /*tp_version_tag*/
  #if PY_VERSION_HEX >= 0x030400a1
  0, /*tp_finalize*/
  #endif
  #if PY_VERSION_HEX >= 0x030800b1
  0, /*tp_vectorcall*/
  #endif
  #if PY_VERSION_HEX >= 0x030800b4 && PY_VERSION_HEX < 0x03090000
  0, /*tp_print*/
  #endif
};

static struct __pyx_obj_4grpc_7_cython_6cygrpc___pyx_scope_struct_11___init__ *__pyx_freelist_4grpc_7_cython_6cygrpc___pyx_scope_struct_11___init__[8];
static int __pyx_freecount_4grpc_7_cython_6cygrpc___pyx_scope_struct_11___init__ = 0;

static PyObject *__pyx_tp_new_4grpc_7_cython_6cygrpc___pyx_scope_struct_11___init__(PyTypeObject *t, CYTHON_UNUSED PyObject *a, CYTHON_UNUSED PyObject *k) {
  PyObject *o;
  if (CYTHON_COMPILING_IN_CPYTHON && likely((__pyx_freecount_4grpc_7_cython_6cygrpc___pyx_scope_struct_11___init__ > 0) & (t->tp_basicsize == sizeof(struct __pyx_obj_4grpc_7_cython_6cygrpc___pyx_scope_struct_11___init__)))) {
    o = (PyObject*)__pyx_freelist_4grpc_7_cython_6cygrpc___pyx_scope_struct_11___init__[--__pyx_freecount_4grpc_7_cython_6cygrpc___pyx_scope_struct_11___init__];
    memset(o, 0, sizeof(struct __pyx_obj_4grpc_7_cython_6cygrpc___pyx_scope_struct_11___init__));
    (void) PyObject_INIT(o, t);
    PyObject_GC_Track(o);
  } else {
    o = (*t->tp_alloc)(t, 0);
    if (unlikely(!o)) return 0;
  }
  return o;
}

static void __pyx_tp_dealloc_4grpc_7_cython_6cygrpc___pyx_scope_struct_11___init__(PyObject *o) {
  struct __pyx_obj_4grpc_7_cython_6cygrpc___pyx_scope_struct_11___init__ *p = (struct __pyx_obj_4grpc_7_cython_6cygrpc___pyx_scope_struct_11___init__ *)o;
  PyObject_GC_UnTrack(o);
  Py_CLEAR(p->__pyx_v_target);
  if (CYTHON_COMPILING_IN_CPYTHON && ((__pyx_freecount_4grpc_7_cython_6cygrpc___pyx_scope_struct_11___init__ < 8) & (Py_TYPE(o)->tp_basicsize == sizeof(struct __pyx_obj_4grpc_7_cython_6cygrpc___pyx_scope_struct_11___init__)))) {
    __pyx_freelist_4grpc_7_cython_6cygrpc___pyx_scope_struct_11___init__[__pyx_freecount_4grpc_7_cython_6cygrpc___pyx_scope_struct_11___init__++] = ((struct __pyx_obj_4grpc_7_cython_6cygrpc___pyx_scope_struct_11___init__ *)o);
  } else {
    (*Py_TYPE(o)->tp_free)(o);
  }
}

static int __pyx_tp_traverse_4grpc_7_cython_6cygrpc___pyx_scope_struct_11___init__(PyObject *o, visitproc v, void *a) {
  int e;
  struct __pyx_obj_4grpc_7_cython_6cygrpc___pyx_scope_struct_11___init__ *p = (struct __pyx_obj_4grpc_7_cython_6cygrpc___pyx_scope_struct_11___init__ *)o;
  if (p->__pyx_v_target) {
    e = (*v)(p->__pyx_v_target, a); if (e) return e;
  }
  return 0;
}

static int __pyx_tp_clear_4grpc_7_cython_6cygrpc___pyx_scope_struct_11___init__(PyObject *o) {
  PyObject* tmp;
  struct __pyx_obj_4grpc_7_cython_6cygrpc___pyx_scope_struct_11___init__ *p = (struct __pyx_obj_4grpc_7_cython_6cygrpc___pyx_scope_struct_11___init__ *)o;
  tmp = ((PyObject*)p->__pyx_v_target);
  p->__pyx_v_target = Py_None; Py_INCREF(Py_None);
  Py_XDECREF(tmp);
  return 0;
}

static PyTypeObject __pyx_type_4grpc_7_cython_6cygrpc___pyx_scope_struct_11___init__ = {
  PyVarObject_HEAD_INIT(0, 0)
  "grpc._cython.cygrpc.__pyx_scope_struct_11___init__", /*tp_name*/
  sizeof(struct __pyx_obj_4grpc_7_cython_6cygrpc___pyx_scope_struct_11___init__), /*tp_basicsize*/
  0, /*tp_itemsize*/
  __pyx_tp_dealloc_4grpc_7_cython_6cygrpc___pyx_scope_struct_11___init__, /*tp_dealloc*/
  #if PY_VERSION_HEX < 0x030800b4
  0, /*tp_print*/
  #endif
  #if PY_VERSION_HEX >= 0x030800b4
  0, /*tp_vectorcall_offset*/
  #endif
  0, /*tp_getattr*/
  0, /*tp_setattr*/
  #if PY_MAJOR_VERSION < 3
  0, /*tp_compare*/
  #endif
  #if PY_MAJOR_VERSION >= 3
  0, /*tp_as_async*/
  #endif
  0, /*tp_repr*/
  0, /*tp_as_number*/
  0, /*tp_as_sequence*/
  0, /*tp_as_mapping*/
  0, /*tp_hash*/
  0, /*tp_call*/
  0, /*tp_str*/
  0, /*tp_getattro*/
  0, /*tp_setattro*/
  0, /*tp_as_buffer*/
  Py_TPFLAGS_DEFAULT|Py_TPFLAGS_HAVE_VERSION_TAG|Py_TPFLAGS_CHECKTYPES|Py_TPFLAGS_HAVE_NEWBUFFER|Py_TPFLAGS_HAVE_GC, /*tp_flags*/
  0, /*tp_doc*/
  __pyx_tp_traverse_4grpc_7_cython_6cygrpc___pyx_scope_struct_11___init__, /*tp_traverse*/
  __pyx_tp_clear_4grpc_7_cython_6cygrpc___pyx_scope_struct_11___init__, /*tp_clear*/
  0, /*tp_richcompare*/
  0, /*tp_weaklistoffset*/
  0, /*tp_iter*/
  0, /*tp_iternext*/
  0, /*tp_methods*/
  0, /*tp_members*/
  0, /*tp_getset*/
  0, /*tp_base*/
  0, /*tp_dict*/
  0, /*tp_descr_get*/
  0, /*tp_descr_set*/
  0, /*tp_dictoffset*/
  0, /*tp_init*/
  0, /*tp_alloc*/
  __pyx_tp_new_4grpc_7_cython_6cygrpc___pyx_scope_struct_11___init__, /*tp_new*/
  0, /*tp_free*/
  0, /*tp_is_gc*/
  0, /*tp_bases*/
  0, /*tp_mro*/
  0, /*tp_cache*/
  0, /*tp_subclasses*/
  0, /*tp_weaklist*/
  0, /*tp_del*/
  0, /*tp_version_tag*/
  #if PY_VERSION_HEX >= 0x030400a1
  0, /*tp_finalize*/
  #endif
  #if PY_VERSION_HEX >= 0x030800b1
  0, /*tp_vectorcall*/
  #endif
  #if PY_VERSION_HEX >= 0x030800b4 && PY_VERSION_HEX < 0x03090000
  0, /*tp_print*/
  #endif
};

static struct __pyx_obj_4grpc_7_cython_6cygrpc___pyx_scope_struct_12_async_generator_to_generator *__pyx_freelist_4grpc_7_cython_6cygrpc___pyx_scope_struct_12_async_generator_to_generator[8];
static int __pyx_freecount_4grpc_7_cython_6cygrpc___pyx_scope_struct_12_async_generator_to_generator = 0;

static PyObject *__pyx_tp_new_4grpc_7_cython_6cygrpc___pyx_scope_struct_12_async_generator_to_generator(PyTypeObject *t, CYTHON_UNUSED PyObject *a, CYTHON_UNUSED PyObject *k) {
  PyObject *o;
  if (CYTHON_COMPILING_IN_CPYTHON && likely((__pyx_freecount_4grpc_7_cython_6cygrpc___pyx_scope_struct_12_async_generator_to_generator > 0) & (t->tp_basicsize == sizeof(struct __pyx_obj_4grpc_7_cython_6cygrpc___pyx_scope_struct_12_async_generator_to_generator)))) {
    o = (PyObject*)__pyx_freelist_4grpc_7_cython_6cygrpc___pyx_scope_struct_12_async_generator_to_generator[--__pyx_freecount_4grpc_7_cython_6cygrpc___pyx_scope_struct_12_async_generator_to_generator];
    memset(o, 0, sizeof(struct __pyx_obj_4grpc_7_cython_6cygrpc___pyx_scope_struct_12_async_generator_to_generator));
    (void) PyObject_INIT(o, t);
    PyObject_GC_Track(o);
  } else {
    o = (*t->tp_alloc)(t, 0);
    if (unlikely(!o)) return 0;
  }
  return o;
}

static void __pyx_tp_dealloc_4grpc_7_cython_6cygrpc___pyx_scope_struct_12_async_generator_to_generator(PyObject *o) {
  struct __pyx_obj_4grpc_7_cython_6cygrpc___pyx_scope_struct_12_async_generator_to_generator *p = (struct __pyx_obj_4grpc_7_cython_6cygrpc___pyx_scope_struct_12_async_generator_to_generator *)o;
  PyObject_GC_UnTrack(o);
  Py_CLEAR(p->__pyx_v_agen);
  Py_CLEAR(p->__pyx_v_future);
  Py_CLEAR(p->__pyx_v_loop);
  Py_CLEAR(p->__pyx_v_response);
  Py_CLEAR(p->__pyx_t_0);
  Py_CLEAR(p->__pyx_t_1);
  Py_CLEAR(p->__pyx_t_2);
  if (CYTHON_COMPILING_IN_CPYTHON && ((__pyx_freecount_4grpc_7_cython_6cygrpc___pyx_scope_struct_12_async_generator_to_generator < 8) & (Py_TYPE(o)->tp_basicsize == sizeof(struct __pyx_obj_4grpc_7_cython_6cygrpc___pyx_scope_struct_12_async_generator_to_generator)))) {
    __pyx_freelist_4grpc_7_cython_6cygrpc___pyx_scope_struct_12_async_generator_to_generator[__pyx_freecount_4grpc_7_cython_6cygrpc___pyx_scope_struct_12_async_generator_to_generator++] = ((struct __pyx_obj_4grpc_7_cython_6cygrpc___pyx_scope_struct_12_async_generator_to_generator *)o);
  } else {
    (*Py_TYPE(o)->tp_free)(o);
  }
}

static int __pyx_tp_traverse_4grpc_7_cython_6cygrpc___pyx_scope_struct_12_async_generator_to_generator(PyObject *o, visitproc v, void *a) {
  int e;
  struct __pyx_obj_4grpc_7_cython_6cygrpc___pyx_scope_struct_12_async_generator_to_generator *p = (struct __pyx_obj_4grpc_7_cython_6cygrpc___pyx_scope_struct_12_async_generator_to_generator *)o;
  if (p->__pyx_v_agen) {
    e = (*v)(p->__pyx_v_agen, a); if (e) return e;
  }
  if (p->__pyx_v_future) {
    e = (*v)(p->__pyx_v_future, a); if (e) return e;
  }
  if (p->__pyx_v_loop) {
    e = (*v)(p->__pyx_v_loop, a); if (e) return e;
  }
  if (p->__pyx_v_response) {
    e = (*v)(p->__pyx_v_response, a); if (e) return e;
  }
  if (p->__pyx_t_0) {
    e = (*v)(p->__pyx_t_0, a); if (e) return e;
  }
  if (p->__pyx_t_1) {
    e = (*v)(p->__pyx_t_1, a); if (e) return e;
  }
  if (p->__pyx_t_2) {
    e = (*v)(p->__pyx_t_2, a); if (e) return e;
  }
  return 0;
}

static PyTypeObject __pyx_type_4grpc_7_cython_6cygrpc___pyx_scope_struct_12_async_generator_to_generator = {
  PyVarObject_HEAD_INIT(0, 0)
  "grpc._cython.cygrpc.__pyx_scope_struct_12_async_generator_to_generator", /*tp_name*/
  sizeof(struct __pyx_obj_4grpc_7_cython_6cygrpc___pyx_scope_struct_12_async_generator_to_generator), /*tp_basicsize*/
  0, /*tp_itemsize*/
  __pyx_tp_dealloc_4grpc_7_cython_6cygrpc___pyx_scope_struct_12_async_generator_to_generator, /*tp_dealloc*/
  #if PY_VERSION_HEX < 0x030800b4
  0, /*tp_print*/
  #endif
  #if PY_VERSION_HEX >= 0x030800b4
  0, /*tp_vectorcall_offset*/
  #endif
  0, /*tp_getattr*/
  0, /*tp_setattr*/
  #if PY_MAJOR_VERSION < 3
  0, /*tp_compare*/
  #endif
  #if PY_MAJOR_VERSION >= 3
  0, /*tp_as_async*/
  #endif
  0, /*tp_repr*/
  0, /*tp_as_number*/
  0, /*tp_as_sequence*/
  0, /*tp_as_mapping*/
  0, /*tp_hash*/
  0, /*tp_call*/
  0, /*tp_str*/
  0, /*tp_getattro*/
  0, /*tp_setattro*/
  0, /*tp_as_buffer*/
  Py_TPFLAGS_DEFAULT|Py_TPFLAGS_HAVE_VERSION_TAG|Py_TPFLAGS_CHECKTYPES|Py_TPFLAGS_HAVE_NEWBUFFER|Py_TPFLAGS_HAVE_GC, /*tp_flags*/
  0, /*tp_doc*/
  __pyx_tp_traverse_4grpc_7_cython_6cygrpc___pyx_scope_struct_12_async_generator_to_generator, /*tp_traverse*/
  0, /*tp_clear*/
  0, /*tp_richcompare*/
  0, /*tp_weaklistoffset*/
  0, /*tp_iter*/
  0, /*tp_iternext*/
  0, /*tp_methods*/
  0, /*tp_members*/
  0, /*tp_getset*/
  0, /*tp_base*/
  0, /*tp_dict*/
  0, /*tp_descr_get*/
  0, /*tp_descr_set*/
  0, /*tp_dictoffset*/
  0, /*tp_init*/
  0, /*tp_alloc*/
  __pyx_tp_new_4grpc_7_cython_6cygrpc___pyx_scope_struct_12_async_generator_to_generator, /*tp_new*/
  0, /*tp_free*/
  0, /*tp_is_gc*/
  0, /*tp_bases*/
  0, /*tp_mro*/
  0, /*tp_cache*/
  0, /*tp_subclasses*/
  0, /*tp_weaklist*/
  0, /*tp_del*/
  0, /*tp_version_tag*/
  #if PY_VERSION_HEX >= 0x030400a1
  0, /*tp_finalize*/
  #endif
  #if PY_VERSION_HEX >= 0x030800b1
  0, /*tp_vectorcall*/
  #endif
  #if PY_VERSION_HEX >= 0x030800b4 && PY_VERSION_HEX < 0x03090000
  0, /*tp_print*/
  #endif
};

static struct __pyx_obj_4grpc_7_cython_6cygrpc___pyx_scope_struct_13_generator_to_async_generator *__pyx_freelist_4grpc_7_cython_6cygrpc___pyx_scope_struct_13_generator_to_async_generator[8];
static int __pyx_freecount_4grpc_7_cython_6cygrpc___pyx_scope_struct_13_generator_to_async_generator = 0;

static PyObject *__pyx_tp_new_4grpc_7_cython_6cygrpc___pyx_scope_struct_13_generator_to_async_generator(PyTypeObject *t, CYTHON_UNUSED PyObject *a, CYTHON_UNUSED PyObject *k) {
  PyObject *o;
  if (CYTHON_COMPILING_IN_CPYTHON && likely((__pyx_freecount_4grpc_7_cython_6cygrpc___pyx_scope_struct_13_generator_to_async_generator > 0) & (t->tp_basicsize == sizeof(struct __pyx_obj_4grpc_7_cython_6cygrpc___pyx_scope_struct_13_generator_to_async_generator)))) {
    o = (PyObject*)__pyx_freelist_4grpc_7_cython_6cygrpc___pyx_scope_struct_13_generator_to_async_generator[--__pyx_freecount_4grpc_7_cython_6cygrpc___pyx_scope_struct_13_generator_to_async_generator];
    memset(o, 0, sizeof(struct __pyx_obj_4grpc_7_cython_6cygrpc___pyx_scope_struct_13_generator_to_async_generator));
    (void) PyObject_INIT(o, t);
    PyObject_GC_Track(o);
  } else {
    o = (*t->tp_alloc)(t, 0);
    if (unlikely(!o)) return 0;
  }
  return o;
}

static void __pyx_tp_dealloc_4grpc_7_cython_6cygrpc___pyx_scope_struct_13_generator_to_async_generator(PyObject *o) {
  struct __pyx_obj_4grpc_7_cython_6cygrpc___pyx_scope_struct_13_generator_to_async_generator *p = (struct __pyx_obj_4grpc_7_cython_6cygrpc___pyx_scope_struct_13_generator_to_async_generator *)o;
  PyObject_GC_UnTrack(o);
  Py_CLEAR(p->__pyx_v_future);
  Py_CLEAR(p->__pyx_v_gen);
  Py_CLEAR(p->__pyx_v_loop);
  Py_CLEAR(p->__pyx_v_queue);
  Py_CLEAR(p->__pyx_v_response);
  Py_CLEAR(p->__pyx_v_thread_pool);
  Py_CLEAR(p->__pyx_v_yield_to_queue);
  if (CYTHON_COMPILING_IN_CPYTHON && ((__pyx_freecount_4grpc_7_cython_6cygrpc___pyx_scope_struct_13_generator_to_async_generator < 8) & (Py_TYPE(o)->tp_basicsize == sizeof(struct __pyx_obj_4grpc_7_cython_6cygrpc___pyx_scope_struct_13_generator_to_async_generator)))) {
    __pyx_freelist_4grpc_7_cython_6cygrpc___pyx_scope_struct_13_generator_to_async_generator[__pyx_freecount_4grpc_7_cython_6cygrpc___pyx_scope_struct_13_generator_to_async_generator++] = ((struct __pyx_obj_4grpc_7_cython_6cygrpc___pyx_scope_struct_13_generator_to_async_generator *)o);
  } else {
    (*Py_TYPE(o)->tp_free)(o);
  }
}

static int __pyx_tp_traverse_4grpc_7_cython_6cygrpc___pyx_scope_struct_13_generator_to_async_generator(PyObject *o, visitproc v, void *a) {
  int e;
  struct __pyx_obj_4grpc_7_cython_6cygrpc___pyx_scope_struct_13_generator_to_async_generator *p = (struct __pyx_obj_4grpc_7_cython_6cygrpc___pyx_scope_struct_13_generator_to_async_generator *)o;
  if (p->__pyx_v_future) {
    e = (*v)(p->__pyx_v_future, a); if (e) return e;
  }
  if (p->__pyx_v_gen) {
    e = (*v)(p->__pyx_v_gen, a); if (e) return e;
  }
  if (p->__pyx_v_loop) {
    e = (*v)(p->__pyx_v_loop, a); if (e) return e;
  }
  if (p->__pyx_v_queue) {
    e = (*v)(p->__pyx_v_queue, a); if (e) return e;
  }
  if (p->__pyx_v_response) {
    e = (*v)(p->__pyx_v_response, a); if (e) return e;
  }
  if (p->__pyx_v_thread_pool) {
    e = (*v)(p->__pyx_v_thread_pool, a); if (e) return e;
  }
  if (p->__pyx_v_yield_to_queue) {
    e = (*v)(p->__pyx_v_yield_to_queue, a); if (e) return e;
  }
  return 0;
}

static PyTypeObject __pyx_type_4grpc_7_cython_6cygrpc___pyx_scope_struct_13_generator_to_async_generator = {
  PyVarObject_HEAD_INIT(0, 0)
  "grpc._cython.cygrpc.__pyx_scope_struct_13_generator_to_async_generator", /*tp_name*/
  sizeof(struct __pyx_obj_4grpc_7_cython_6cygrpc___pyx_scope_struct_13_generator_to_async_generator), /*tp_basicsize*/
  0, /*tp_itemsize*/
  __pyx_tp_dealloc_4grpc_7_cython_6cygrpc___pyx_scope_struct_13_generator_to_async_generator, /*tp_dealloc*/
  #if PY_VERSION_HEX < 0x030800b4
  0, /*tp_print*/
  #endif
  #if PY_VERSION_HEX >= 0x030800b4
  0, /*tp_vectorcall_offset*/
  #endif
  0, /*tp_getattr*/
  0, /*tp_setattr*/
  #if PY_MAJOR_VERSION < 3
  0, /*tp_compare*/
  #endif
  #if PY_MAJOR_VERSION >= 3
  0, /*tp_as_async*/
  #endif
  0, /*tp_repr*/
  0, /*tp_as_number*/
  0, /*tp_as_sequence*/
  0, /*tp_as_mapping*/
  0, /*tp_hash*/
  0, /*tp_call*/
  0, /*tp_str*/
  0, /*tp_getattro*/
  0, /*tp_setattro*/
  0, /*tp_as_buffer*/
  Py_TPFLAGS_DEFAULT|Py_TPFLAGS_HAVE_VERSION_TAG|Py_TPFLAGS_CHECKTYPES|Py_TPFLAGS_HAVE_NEWBUFFER|Py_TPFLAGS_HAVE_GC, /*tp_flags*/
  0, /*tp_doc*/
  __pyx_tp_traverse_4grpc_7_cython_6cygrpc___pyx_scope_struct_13_generator_to_async_generator, /*tp_traverse*/
  0, /*tp_clear*/
  0, /*tp_richcompare*/
  0, /*tp_weaklistoffset*/
  0, /*tp_iter*/
  0, /*tp_iternext*/
  0, /*tp_methods*/
  0, /*tp_members*/
  0, /*tp_getset*/
  0, /*tp_base*/
  0, /*tp_dict*/
  0, /*tp_descr_get*/
  0, /*tp_descr_set*/
  0, /*tp_dictoffset*/
  0, /*tp_init*/
  0, /*tp_alloc*/
  __pyx_tp_new_4grpc_7_cython_6cygrpc___pyx_scope_struct_13_generator_to_async_generator, /*tp_new*/
  0, /*tp_free*/
  0, /*tp_is_gc*/
  0, /*tp_bases*/
  0, /*tp_mro*/
  0, /*tp_cache*/
  0, /*tp_subclasses*/
  0, /*tp_weaklist*/
  0, /*tp_del*/
  0, /*tp_version_tag*/
  #if PY_VERSION_HEX >= 0x030400a1
  0, /*tp_finalize*/
  #endif
  #if PY_VERSION_HEX >= 0x030800b1
  0, /*tp_vectorcall*/
  #endif
  #if PY_VERSION_HEX >= 0x030800b4 && PY_VERSION_HEX < 0x03090000
  0, /*tp_print*/
  #endif
};

static struct __pyx_obj_4grpc_7_cython_6cygrpc___pyx_scope_struct_14_execute_batch *__pyx_freelist_4grpc_7_cython_6cygrpc___pyx_scope_struct_14_execute_batch[8];
static int __pyx_freecount_4grpc_7_cython_6cygrpc___pyx_scope_struct_14_execute_batch = 0;

static PyObject *__pyx_tp_new_4grpc_7_cython_6cygrpc___pyx_scope_struct_14_execute_batch(PyTypeObject *t, CYTHON_UNUSED PyObject *a, CYTHON_UNUSED PyObject *k) {
  PyObject *o;
  if (CYTHON_COMPILING_IN_CPYTHON && likely((__pyx_freecount_4grpc_7_cython_6cygrpc___pyx_scope_struct_14_execute_batch > 0) & (t->tp_basicsize == sizeof(struct __pyx_obj_4grpc_7_cython_6cygrpc___pyx_scope_struct_14_execute_batch)))) {
    o = (PyObject*)__pyx_freelist_4grpc_7_cython_6cygrpc___pyx_scope_struct_14_execute_batch[--__pyx_freecount_4grpc_7_cython_6cygrpc___pyx_scope_struct_14_execute_batch];
    memset(o, 0, sizeof(struct __pyx_obj_4grpc_7_cython_6cygrpc___pyx_scope_struct_14_execute_batch));
    (void) PyObject_INIT(o, t);
    PyObject_GC_Track(o);
  } else {
    o = (*t->tp_alloc)(t, 0);
    if (unlikely(!o)) return 0;
  }
  return o;
}

static void __pyx_tp_dealloc_4grpc_7_cython_6cygrpc___pyx_scope_struct_14_execute_batch(PyObject *o) {
  struct __pyx_obj_4grpc_7_cython_6cygrpc___pyx_scope_struct_14_execute_batch *p = (struct __pyx_obj_4grpc_7_cython_6cygrpc___pyx_scope_struct_14_execute_batch *)o;
  PyObject_GC_UnTrack(o);
  Py_CLEAR(p->__pyx_v_batch_operation_tag);
  Py_CLEAR(p->__pyx_v_future);
  Py_CLEAR(p->__pyx_v_grpc_call_wrapper);
  Py_CLEAR(p->__pyx_v_loop);
  Py_CLEAR(p->__pyx_v_operations);
  Py_CLEAR(p->__pyx_v_wrapper);
  if (CYTHON_COMPILING_IN_CPYTHON && ((__pyx_freecount_4grpc_7_cython_6cygrpc___pyx_scope_struct_14_execute_batch < 8) & (Py_TYPE(o)->tp_basicsize == sizeof(struct __pyx_obj_4grpc_7_cython_6cygrpc___pyx_scope_struct_14_execute_batch)))) {
    __pyx_freelist_4grpc_7_cython_6cygrpc___pyx_scope_struct_14_execute_batch[__pyx_freecount_4grpc_7_cython_6cygrpc___pyx_scope_struct_14_execute_batch++] = ((struct __pyx_obj_4grpc_7_cython_6cygrpc___pyx_scope_struct_14_execute_batch *)o);
  } else {
    (*Py_TYPE(o)->tp_free)(o);
  }
}

static int __pyx_tp_traverse_4grpc_7_cython_6cygrpc___pyx_scope_struct_14_execute_batch(PyObject *o, visitproc v, void *a) {
  int e;
  struct __pyx_obj_4grpc_7_cython_6cygrpc___pyx_scope_struct_14_execute_batch *p = (struct __pyx_obj_4grpc_7_cython_6cygrpc___pyx_scope_struct_14_execute_batch *)o;
  if (p->__pyx_v_batch_operation_tag) {
    e = (*v)(((PyObject *)p->__pyx_v_batch_operation_tag), a); if (e) return e;
  }
  if (p->__pyx_v_future) {
    e = (*v)(p->__pyx_v_future, a); if (e) return e;
  }
  if (p->__pyx_v_grpc_call_wrapper) {
    e = (*v)(((PyObject *)p->__pyx_v_grpc_call_wrapper), a); if (e) return e;
  }
  if (p->__pyx_v_loop) {
    e = (*v)(p->__pyx_v_loop, a); if (e) return e;
  }
  if (p->__pyx_v_operations) {
    e = (*v)(p->__pyx_v_operations, a); if (e) return e;
  }
  if (p->__pyx_v_wrapper) {
    e = (*v)(((PyObject *)p->__pyx_v_wrapper), a); if (e) return e;
  }
  return 0;
}

static PyTypeObject __pyx_type_4grpc_7_cython_6cygrpc___pyx_scope_struct_14_execute_batch = {
  PyVarObject_HEAD_INIT(0, 0)
  "grpc._cython.cygrpc.__pyx_scope_struct_14_execute_batch", /*tp_name*/
  sizeof(struct __pyx_obj_4grpc_7_cython_6cygrpc___pyx_scope_struct_14_execute_batch), /*tp_basicsize*/
  0, /*tp_itemsize*/
  __pyx_tp_dealloc_4grpc_7_cython_6cygrpc___pyx_scope_struct_14_execute_batch, /*tp_dealloc*/
  #if PY_VERSION_HEX < 0x030800b4
  0, /*tp_print*/
  #endif
  #if PY_VERSION_HEX >= 0x030800b4
  0, /*tp_vectorcall_offset*/
  #endif
  0, /*tp_getattr*/
  0, /*tp_setattr*/
  #if PY_MAJOR_VERSION < 3
  0, /*tp_compare*/
  #endif
  #if PY_MAJOR_VERSION >= 3
  0, /*tp_as_async*/
  #endif
  0, /*tp_repr*/
  0, /*tp_as_number*/
  0, /*tp_as_sequence*/
  0, /*tp_as_mapping*/
  0, /*tp_hash*/
  0, /*tp_call*/
  0, /*tp_str*/
  0, /*tp_getattro*/
  0, /*tp_setattro*/
  0, /*tp_as_buffer*/
  Py_TPFLAGS_DEFAULT|Py_TPFLAGS_HAVE_VERSION_TAG|Py_TPFLAGS_CHECKTYPES|Py_TPFLAGS_HAVE_NEWBUFFER|Py_TPFLAGS_HAVE_GC, /*tp_flags*/
  0, /*tp_doc*/
  __pyx_tp_traverse_4grpc_7_cython_6cygrpc___pyx_scope_struct_14_execute_batch, /*tp_traverse*/
  0, /*tp_clear*/
  0, /*tp_richcompare*/
  0, /*tp_weaklistoffset*/
  0, /*tp_iter*/
  0, /*tp_iternext*/
  0, /*tp_methods*/
  0, /*tp_members*/
  0, /*tp_getset*/
  0, /*tp_base*/
  0, /*tp_dict*/
  0, /*tp_descr_get*/
  0, /*tp_descr_set*/
  0, /*tp_dictoffset*/
  0, /*tp_init*/
  0, /*tp_alloc*/
  __pyx_tp_new_4grpc_7_cython_6cygrpc___pyx_scope_struct_14_execute_batch, /*tp_new*/
  0, /*tp_free*/
  0, /*tp_is_gc*/
  0, /*tp_bases*/
  0, /*tp_mro*/
  0, /*tp_cache*/
  0, /*tp_subclasses*/
  0, /*tp_weaklist*/
  0, /*tp_del*/
  0, /*tp_version_tag*/
  #if PY_VERSION_HEX >= 0x030400a1
  0, /*tp_finalize*/
  #endif
  #if PY_VERSION_HEX >= 0x030800b1
  0, /*tp_vectorcall*/
  #endif
  #if PY_VERSION_HEX >= 0x030800b4 && PY_VERSION_HEX < 0x03090000
  0, /*tp_print*/
  #endif
};

static struct __pyx_obj_4grpc_7_cython_6cygrpc___pyx_scope_struct_15__receive_message *__pyx_freelist_4grpc_7_cython_6cygrpc___pyx_scope_struct_15__receive_message[8];
static int __pyx_freecount_4grpc_7_cython_6cygrpc___pyx_scope_struct_15__receive_message = 0;

static PyObject *__pyx_tp_new_4grpc_7_cython_6cygrpc___pyx_scope_struct_15__receive_message(PyTypeObject *t, CYTHON_UNUSED PyObject *a, CYTHON_UNUSED PyObject *k) {
  PyObject *o;
  if (CYTHON_COMPILING_IN_CPYTHON && likely((__pyx_freecount_4grpc_7_cython_6cygrpc___pyx_scope_struct_15__receive_message > 0) & (t->tp_basicsize == sizeof(struct __pyx_obj_4grpc_7_cython_6cygrpc___pyx_scope_struct_15__receive_message)))) {
    o = (PyObject*)__pyx_freelist_4grpc_7_cython_6cygrpc___pyx_scope_struct_15__receive_message[--__pyx_freecount_4grpc_7_cython_6cygrpc___pyx_scope_struct_15__receive_message];
    memset(o, 0, sizeof(struct __pyx_obj_4grpc_7_cython_6cygrpc___pyx_scope_struct_15__receive_message));
    (void) PyObject_INIT(o, t);
    PyObject_GC_Track(o);
  } else {
    o = (*t->tp_alloc)(t, 0);
    if (unlikely(!o)) return 0;
  }
  return o;
}

static void __pyx_tp_dealloc_4grpc_7_cython_6cygrpc___pyx_scope_struct_15__receive_message(PyObject *o) {
  struct __pyx_obj_4grpc_7_cython_6cygrpc___pyx_scope_struct_15__receive_message *p = (struct __pyx_obj_4grpc_7_cython_6cygrpc___pyx_scope_struct_15__receive_message *)o;
  PyObject_GC_UnTrack(o);
  Py_CLEAR(p->__pyx_v_e);
  Py_CLEAR(p->__pyx_v_grpc_call_wrapper);
  Py_CLEAR(p->__pyx_v_loop);
  Py_CLEAR(p->__pyx_v_ops);
  Py_CLEAR(p->__pyx_v_receive_op);
  Py_CLEAR(p->__pyx_t_0);
  Py_CLEAR(p->__pyx_t_1);
  Py_CLEAR(p->__pyx_t_2);
  if (CYTHON_COMPILING_IN_CPYTHON && ((__pyx_freecount_4grpc_7_cython_6cygrpc___pyx_scope_struct_15__receive_message < 8) & (Py_TYPE(o)->tp_basicsize == sizeof(struct __pyx_obj_4grpc_7_cython_6cygrpc___pyx_scope_struct_15__receive_message)))) {
    __pyx_freelist_4grpc_7_cython_6cygrpc___pyx_scope_struct_15__receive_message[__pyx_freecount_4grpc_7_cython_6cygrpc___pyx_scope_struct_15__receive_message++] = ((struct __pyx_obj_4grpc_7_cython_6cygrpc___pyx_scope_struct_15__receive_message *)o);
  } else {
    (*Py_TYPE(o)->tp_free)(o);
  }
}

static int __pyx_tp_traverse_4grpc_7_cython_6cygrpc___pyx_scope_struct_15__receive_message(PyObject *o, visitproc v, void *a) {
  int e;
  struct __pyx_obj_4grpc_7_cython_6cygrpc___pyx_scope_struct_15__receive_message *p = (struct __pyx_obj_4grpc_7_cython_6cygrpc___pyx_scope_struct_15__receive_message *)o;
  if (p->__pyx_v_e) {
    e = (*v)(p->__pyx_v_e, a); if (e) return e;
  }
  if (p->__pyx_v_grpc_call_wrapper) {
    e = (*v)(((PyObject *)p->__pyx_v_grpc_call_wrapper), a); if (e) return e;
  }
  if (p->__pyx_v_loop) {
    e = (*v)(p->__pyx_v_loop, a); if (e) return e;
  }
  if (p->__pyx_v_ops) {
    e = (*v)(p->__pyx_v_ops, a); if (e) return e;
  }
  if (p->__pyx_v_receive_op) {
    e = (*v)(((PyObject *)p->__pyx_v_receive_op), a); if (e) return e;
  }
  if (p->__pyx_t_0) {
    e = (*v)(p->__pyx_t_0, a); if (e) return e;
  }
  if (p->__pyx_t_1) {
    e = (*v)(p->__pyx_t_1, a); if (e) return e;
  }
  if (p->__pyx_t_2) {
    e = (*v)(p->__pyx_t_2, a); if (e) return e;
  }
  return 0;
}

static PyTypeObject __pyx_type_4grpc_7_cython_6cygrpc___pyx_scope_struct_15__receive_message = {
  PyVarObject_HEAD_INIT(0, 0)
  "grpc._cython.cygrpc.__pyx_scope_struct_15__receive_message", /*tp_name*/
  sizeof(struct __pyx_obj_4grpc_7_cython_6cygrpc___pyx_scope_struct_15__receive_message), /*tp_basicsize*/
  0, /*tp_itemsize*/
  __pyx_tp_dealloc_4grpc_7_cython_6cygrpc___pyx_scope_struct_15__receive_message, /*tp_dealloc*/
  #if PY_VERSION_HEX < 0x030800b4
  0, /*tp_print*/
  #endif
  #if PY_VERSION_HEX >= 0x030800b4
  0, /*tp_vectorcall_offset*/
  #endif
  0, /*tp_getattr*/
  0, /*tp_setattr*/
  #if PY_MAJOR_VERSION < 3
  0, /*tp_compare*/
  #endif
  #if PY_MAJOR_VERSION >= 3
  0, /*tp_as_async*/
  #endif
  0, /*tp_repr*/
  0, /*tp_as_number*/
  0, /*tp_as_sequence*/
  0, /*tp_as_mapping*/
  0, /*tp_hash*/
  0, /*tp_call*/
  0, /*tp_str*/
  0, /*tp_getattro*/
  0, /*tp_setattro*/
  0, /*tp_as_buffer*/
  Py_TPFLAGS_DEFAULT|Py_TPFLAGS_HAVE_VERSION_TAG|Py_TPFLAGS_CHECKTYPES|Py_TPFLAGS_HAVE_NEWBUFFER|Py_TPFLAGS_HAVE_GC, /*tp_flags*/
  0, /*tp_doc*/
  __pyx_tp_traverse_4grpc_7_cython_6cygrpc___pyx_scope_struct_15__receive_message, /*tp_traverse*/
  0, /*tp_clear*/
  0, /*tp_richcompare*/
  0, /*tp_weaklistoffset*/
  0, /*tp_iter*/
  0, /*tp_iternext*/
  0, /*tp_methods*/
  0, /*tp_members*/
  0, /*tp_getset*/
  0, /*tp_base*/
  0, /*tp_dict*/
  0, /*tp_descr_get*/
  0, /*tp_descr_set*/
  0, /*tp_dictoffset*/
  0, /*tp_init*/
  0, /*tp_alloc*/
  __pyx_tp_new_4grpc_7_cython_6cygrpc___pyx_scope_struct_15__receive_message, /*tp_new*/
  0, /*tp_free*/
  0, /*tp_is_gc*/
  0, /*tp_bases*/
  0, /*tp_mro*/
  0, /*tp_cache*/
  0, /*tp_subclasses*/
  0, /*tp_weaklist*/
  0, /*tp_del*/
  0, /*tp_version_tag*/
  #if PY_VERSION_HEX >= 0x030400a1
  0, /*tp_finalize*/
  #endif
  #if PY_VERSION_HEX >= 0x030800b1
  0, /*tp_vectorcall*/
  #endif
  #if PY_VERSION_HEX >= 0x030800b4 && PY_VERSION_HEX < 0x03090000
  0, /*tp_print*/
  #endif
};

static struct __pyx_obj_4grpc_7_cython_6cygrpc___pyx_scope_struct_16__send_message *__pyx_freelist_4grpc_7_cython_6cygrpc___pyx_scope_struct_16__send_message[8];
static int __pyx_freecount_4grpc_7_cython_6cygrpc___pyx_scope_struct_16__send_message = 0;

static PyObject *__pyx_tp_new_4grpc_7_cython_6cygrpc___pyx_scope_struct_16__send_message(PyTypeObject *t, CYTHON_UNUSED PyObject *a, CYTHON_UNUSED PyObject *k) {
  PyObject *o;
  if (CYTHON_COMPILING_IN_CPYTHON && likely((__pyx_freecount_4grpc_7_cython_6cygrpc___pyx_scope_struct_16__send_message > 0) & (t->tp_basicsize == sizeof(struct __pyx_obj_4grpc_7_cython_6cygrpc___pyx_scope_struct_16__send_message)))) {
    o = (PyObject*)__pyx_freelist_4grpc_7_cython_6cygrpc___pyx_scope_struct_16__send_message[--__pyx_freecount_4grpc_7_cython_6cygrpc___pyx_scope_struct_16__send_message];
    memset(o, 0, sizeof(struct __pyx_obj_4grpc_7_cython_6cygrpc___pyx_scope_struct_16__send_message));
    (void) PyObject_INIT(o, t);
    PyObject_GC_Track(o);
  } else {
    o = (*t->tp_alloc)(t, 0);
    if (unlikely(!o)) return 0;
  }
  return o;
}

static void __pyx_tp_dealloc_4grpc_7_cython_6cygrpc___pyx_scope_struct_16__send_message(PyObject *o) {
  struct __pyx_obj_4grpc_7_cython_6cygrpc___pyx_scope_struct_16__send_message *p = (struct __pyx_obj_4grpc_7_cython_6cygrpc___pyx_scope_struct_16__send_message *)o;
  PyObject_GC_UnTrack(o);
  Py_CLEAR(p->__pyx_v_grpc_call_wrapper);
  Py_CLEAR(p->__pyx_v_loop);
  Py_CLEAR(p->__pyx_v_message);
  Py_CLEAR(p->__pyx_v_op);
  Py_CLEAR(p->__pyx_v_ops);
  Py_CLEAR(p->__pyx_v_send_initial_metadata_op);
  if (CYTHON_COMPILING_IN_CPYTHON && ((__pyx_freecount_4grpc_7_cython_6cygrpc___pyx_scope_struct_16__send_message < 8) & (Py_TYPE(o)->tp_basicsize == sizeof(struct __pyx_obj_4grpc_7_cython_6cygrpc___pyx_scope_struct_16__send_message)))) {
    __pyx_freelist_4grpc_7_cython_6cygrpc___pyx_scope_struct_16__send_message[__pyx_freecount_4grpc_7_cython_6cygrpc___pyx_scope_struct_16__send_message++] = ((struct __pyx_obj_4grpc_7_cython_6cygrpc___pyx_scope_struct_16__send_message *)o);
  } else {
    (*Py_TYPE(o)->tp_free)(o);
  }
}

static int __pyx_tp_traverse_4grpc_7_cython_6cygrpc___pyx_scope_struct_16__send_message(PyObject *o, visitproc v, void *a) {
  int e;
  struct __pyx_obj_4grpc_7_cython_6cygrpc___pyx_scope_struct_16__send_message *p = (struct __pyx_obj_4grpc_7_cython_6cygrpc___pyx_scope_struct_16__send_message *)o;
  if (p->__pyx_v_grpc_call_wrapper) {
    e = (*v)(((PyObject *)p->__pyx_v_grpc_call_wrapper), a); if (e) return e;
  }
  if (p->__pyx_v_loop) {
    e = (*v)(p->__pyx_v_loop, a); if (e) return e;
  }
  if (p->__pyx_v_op) {
    e = (*v)(((PyObject *)p->__pyx_v_op), a); if (e) return e;
  }
  if (p->__pyx_v_ops) {
    e = (*v)(p->__pyx_v_ops, a); if (e) return e;
  }
  if (p->__pyx_v_send_initial_metadata_op) {
    e = (*v)(((PyObject *)p->__pyx_v_send_initial_metadata_op), a); if (e) return e;
  }
  return 0;
}

static PyTypeObject __pyx_type_4grpc_7_cython_6cygrpc___pyx_scope_struct_16__send_message = {
  PyVarObject_HEAD_INIT(0, 0)
  "grpc._cython.cygrpc.__pyx_scope_struct_16__send_message", /*tp_name*/
  sizeof(struct __pyx_obj_4grpc_7_cython_6cygrpc___pyx_scope_struct_16__send_message), /*tp_basicsize*/
  0, /*tp_itemsize*/
  __pyx_tp_dealloc_4grpc_7_cython_6cygrpc___pyx_scope_struct_16__send_message, /*tp_dealloc*/
  #if PY_VERSION_HEX < 0x030800b4
  0, /*tp_print*/
  #endif
  #if PY_VERSION_HEX >= 0x030800b4
  0, /*tp_vectorcall_offset*/
  #endif
  0, /*tp_getattr*/
  0, /*tp_setattr*/
  #if PY_MAJOR_VERSION < 3
  0, /*tp_compare*/
  #endif
  #if PY_MAJOR_VERSION >= 3
  0, /*tp_as_async*/
  #endif
  0, /*tp_repr*/
  0, /*tp_as_number*/
  0, /*tp_as_sequence*/
  0, /*tp_as_mapping*/
  0, /*tp_hash*/
  0, /*tp_call*/
  0, /*tp_str*/
  0, /*tp_getattro*/
  0, /*tp_setattro*/
  0, /*tp_as_buffer*/
  Py_TPFLAGS_DEFAULT|Py_TPFLAGS_HAVE_VERSION_TAG|Py_TPFLAGS_CHECKTYPES|Py_TPFLAGS_HAVE_NEWBUFFER|Py_TPFLAGS_HAVE_GC, /*tp_flags*/
  0, /*tp_doc*/
  __pyx_tp_traverse_4grpc_7_cython_6cygrpc___pyx_scope_struct_16__send_message, /*tp_traverse*/
  0, /*tp_clear*/
  0, /*tp_richcompare*/
  0, /*tp_weaklistoffset*/
  0, /*tp_iter*/
  0, /*tp_iternext*/
  0, /*tp_methods*/
  0, /*tp_members*/
  0, /*tp_getset*/
  0, /*tp_base*/
  0, /*tp_dict*/
  0, /*tp_descr_get*/
  0, /*tp_descr_set*/
  0, /*tp_dictoffset*/
  0, /*tp_init*/
  0, /*tp_alloc*/
  __pyx_tp_new_4grpc_7_cython_6cygrpc___pyx_scope_struct_16__send_message, /*tp_new*/
  0, /*tp_free*/
  0, /*tp_is_gc*/
  0, /*tp_bases*/
  0, /*tp_mro*/
  0, /*tp_cache*/
  0, /*tp_subclasses*/
  0, /*tp_weaklist*/
  0, /*tp_del*/
  0, /*tp_version_tag*/
  #if PY_VERSION_HEX >= 0x030400a1
  0, /*tp_finalize*/
  #endif
  #if PY_VERSION_HEX >= 0x030800b1
  0, /*tp_vectorcall*/
  #endif
  #if PY_VERSION_HEX >= 0x030800b4 && PY_VERSION_HEX < 0x03090000
  0, /*tp_print*/
  #endif
};

static struct __pyx_obj_4grpc_7_cython_6cygrpc___pyx_scope_struct_17__send_initial_metadata *__pyx_freelist_4grpc_7_cython_6cygrpc___pyx_scope_struct_17__send_initial_metadata[8];
static int __pyx_freecount_4grpc_7_cython_6cygrpc___pyx_scope_struct_17__send_initial_metadata = 0;

static PyObject *__pyx_tp_new_4grpc_7_cython_6cygrpc___pyx_scope_struct_17__send_initial_metadata(PyTypeObject *t, CYTHON_UNUSED PyObject *a, CYTHON_UNUSED PyObject *k) {
  PyObject *o;
  if (CYTHON_COMPILING_IN_CPYTHON && likely((__pyx_freecount_4grpc_7_cython_6cygrpc___pyx_scope_struct_17__send_initial_metadata > 0) & (t->tp_basicsize == sizeof(struct __pyx_obj_4grpc_7_cython_6cygrpc___pyx_scope_struct_17__send_initial_metadata)))) {
    o = (PyObject*)__pyx_freelist_4grpc_7_cython_6cygrpc___pyx_scope_struct_17__send_initial_metadata[--__pyx_freecount_4grpc_7_cython_6cygrpc___pyx_scope_struct_17__send_initial_metadata];
    memset(o, 0, sizeof(struct __pyx_obj_4grpc_7_cython_6cygrpc___pyx_scope_struct_17__send_initial_metadata));
    (void) PyObject_INIT(o, t);
    PyObject_GC_Track(o);
  } else {
    o = (*t->tp_alloc)(t, 0);
    if (unlikely(!o)) return 0;
  }
  return o;
}

static void __pyx_tp_dealloc_4grpc_7_cython_6cygrpc___pyx_scope_struct_17__send_initial_metadata(PyObject *o) {
  struct __pyx_obj_4grpc_7_cython_6cygrpc___pyx_scope_struct_17__send_initial_metadata *p = (struct __pyx_obj_4grpc_7_cython_6cygrpc___pyx_scope_struct_17__send_initial_metadata *)o;
  PyObject_GC_UnTrack(o);
  Py_CLEAR(p->__pyx_v_grpc_call_wrapper);
  Py_CLEAR(p->__pyx_v_loop);
  Py_CLEAR(p->__pyx_v_metadata);
  Py_CLEAR(p->__pyx_v_op);
  Py_CLEAR(p->__pyx_v_ops);
  if (CYTHON_COMPILING_IN_CPYTHON && ((__pyx_freecount_4grpc_7_cython_6cygrpc___pyx_scope_struct_17__send_initial_metadata < 8) & (Py_TYPE(o)->tp_basicsize == sizeof(struct __pyx_obj_4grpc_7_cython_6cygrpc___pyx_scope_struct_17__send_initial_metadata)))) {
    __pyx_freelist_4grpc_7_cython_6cygrpc___pyx_scope_struct_17__send_initial_metadata[__pyx_freecount_4grpc_7_cython_6cygrpc___pyx_scope_struct_17__send_initial_metadata++] = ((struct __pyx_obj_4grpc_7_cython_6cygrpc___pyx_scope_struct_17__send_initial_metadata *)o);
  } else {
    (*Py_TYPE(o)->tp_free)(o);
  }
}

static int __pyx_tp_traverse_4grpc_7_cython_6cygrpc___pyx_scope_struct_17__send_initial_metadata(PyObject *o, visitproc v, void *a) {
  int e;
  struct __pyx_obj_4grpc_7_cython_6cygrpc___pyx_scope_struct_17__send_initial_metadata *p = (struct __pyx_obj_4grpc_7_cython_6cygrpc___pyx_scope_struct_17__send_initial_metadata *)o;
  if (p->__pyx_v_grpc_call_wrapper) {
    e = (*v)(((PyObject *)p->__pyx_v_grpc_call_wrapper), a); if (e) return e;
  }
  if (p->__pyx_v_loop) {
    e = (*v)(p->__pyx_v_loop, a); if (e) return e;
  }
  if (p->__pyx_v_metadata) {
    e = (*v)(p->__pyx_v_metadata, a); if (e) return e;
  }
  if (p->__pyx_v_op) {
    e = (*v)(((PyObject *)p->__pyx_v_op), a); if (e) return e;
  }
  if (p->__pyx_v_ops) {
    e = (*v)(p->__pyx_v_ops, a); if (e) return e;
  }
  return 0;
}

static PyTypeObject __pyx_type_4grpc_7_cython_6cygrpc___pyx_scope_struct_17__send_initial_metadata = {
  PyVarObject_HEAD_INIT(0, 0)
  "grpc._cython.cygrpc.__pyx_scope_struct_17__send_initial_metadata", /*tp_name*/
  sizeof(struct __pyx_obj_4grpc_7_cython_6cygrpc___pyx_scope_struct_17__send_initial_metadata), /*tp_basicsize*/
  0, /*tp_itemsize*/
  __pyx_tp_dealloc_4grpc_7_cython_6cygrpc___pyx_scope_struct_17__send_initial_metadata, /*tp_dealloc*/
  #if PY_VERSION_HEX < 0x030800b4
  0, /*tp_print*/
  #endif
  #if PY_VERSION_HEX >= 0x030800b4
  0, /*tp_vectorcall_offset*/
  #endif
  0, /*tp_getattr*/
  0, /*tp_setattr*/
  #if PY_MAJOR_VERSION < 3
  0, /*tp_compare*/
  #endif
  #if PY_MAJOR_VERSION >= 3
  0, /*tp_as_async*/
  #endif
  0, /*tp_repr*/
  0, /*tp_as_number*/
  0, /*tp_as_sequence*/
  0, /*tp_as_mapping*/
  0, /*tp_hash*/
  0, /*tp_call*/
  0, /*tp_str*/
  0, /*tp_getattro*/
  0, /*tp_setattro*/
  0, /*tp_as_buffer*/
  Py_TPFLAGS_DEFAULT|Py_TPFLAGS_HAVE_VERSION_TAG|Py_TPFLAGS_CHECKTYPES|Py_TPFLAGS_HAVE_NEWBUFFER|Py_TPFLAGS_HAVE_GC, /*tp_flags*/
  0, /*tp_doc*/
  __pyx_tp_traverse_4grpc_7_cython_6cygrpc___pyx_scope_struct_17__send_initial_metadata, /*tp_traverse*/
  0, /*tp_clear*/
  0, /*tp_richcompare*/
  0, /*tp_weaklistoffset*/
  0, /*tp_iter*/
  0, /*tp_iternext*/
  0, /*tp_methods*/
  0, /*tp_members*/
  0, /*tp_getset*/
  0, /*tp_base*/
  0, /*tp_dict*/
  0, /*tp_descr_get*/
  0, /*tp_descr_set*/
  0, /*tp_dictoffset*/
  0, /*tp_init*/
  0, /*tp_alloc*/
  __pyx_tp_new_4grpc_7_cython_6cygrpc___pyx_scope_struct_17__send_initial_metadata, /*tp_new*/
  0, /*tp_free*/
  0, /*tp_is_gc*/
  0, /*tp_bases*/
  0, /*tp_mro*/
  0, /*tp_cache*/
  0, /*tp_subclasses*/
  0, /*tp_weaklist*/
  0, /*tp_del*/
  0, /*tp_version_tag*/
  #if PY_VERSION_HEX >= 0x030400a1
  0, /*tp_finalize*/
  #endif
  #if PY_VERSION_HEX >= 0x030800b1
  0, /*tp_vectorcall*/
  #endif
  #if PY_VERSION_HEX >= 0x030800b4 && PY_VERSION_HEX < 0x03090000
  0, /*tp_print*/
  #endif
};

static struct __pyx_obj_4grpc_7_cython_6cygrpc___pyx_scope_struct_18__receive_initial_metadata *__pyx_freelist_4grpc_7_cython_6cygrpc___pyx_scope_struct_18__receive_initial_metadata[8];
static int __pyx_freecount_4grpc_7_cython_6cygrpc___pyx_scope_struct_18__receive_initial_metadata = 0;

static PyObject *__pyx_tp_new_4grpc_7_cython_6cygrpc___pyx_scope_struct_18__receive_initial_metadata(PyTypeObject *t, CYTHON_UNUSED PyObject *a, CYTHON_UNUSED PyObject *k) {
  PyObject *o;
  if (CYTHON_COMPILING_IN_CPYTHON && likely((__pyx_freecount_4grpc_7_cython_6cygrpc___pyx_scope_struct_18__receive_initial_metadata > 0) & (t->tp_basicsize == sizeof(struct __pyx_obj_4grpc_7_cython_6cygrpc___pyx_scope_struct_18__receive_initial_metadata)))) {
    o = (PyObject*)__pyx_freelist_4grpc_7_cython_6cygrpc___pyx_scope_struct_18__receive_initial_metadata[--__pyx_freecount_4grpc_7_cython_6cygrpc___pyx_scope_struct_18__receive_initial_metadata];
    memset(o, 0, sizeof(struct __pyx_obj_4grpc_7_cython_6cygrpc___pyx_scope_struct_18__receive_initial_metadata));
    (void) PyObject_INIT(o, t);
    PyObject_GC_Track(o);
  } else {
    o = (*t->tp_alloc)(t, 0);
    if (unlikely(!o)) return 0;
  }
  return o;
}

static void __pyx_tp_dealloc_4grpc_7_cython_6cygrpc___pyx_scope_struct_18__receive_initial_metadata(PyObject *o) {
  struct __pyx_obj_4grpc_7_cython_6cygrpc___pyx_scope_struct_18__receive_initial_metadata *p = (struct __pyx_obj_4grpc_7_cython_6cygrpc___pyx_scope_struct_18__receive_initial_metadata *)o;
  PyObject_GC_UnTrack(o);
  Py_CLEAR(p->__pyx_v_grpc_call_wrapper);
  Py_CLEAR(p->__pyx_v_loop);
  Py_CLEAR(p->__pyx_v_op);
  Py_CLEAR(p->__pyx_v_ops);
  if (CYTHON_COMPILING_IN_CPYTHON && ((__pyx_freecount_4grpc_7_cython_6cygrpc___pyx_scope_struct_18__receive_initial_metadata < 8) & (Py_TYPE(o)->tp_basicsize == sizeof(struct __pyx_obj_4grpc_7_cython_6cygrpc___pyx_scope_struct_18__receive_initial_metadata)))) {
    __pyx_freelist_4grpc_7_cython_6cygrpc___pyx_scope_struct_18__receive_initial_metadata[__pyx_freecount_4grpc_7_cython_6cygrpc___pyx_scope_struct_18__receive_initial_metadata++] = ((struct __pyx_obj_4grpc_7_cython_6cygrpc___pyx_scope_struct_18__receive_initial_metadata *)o);
  } else {
    (*Py_TYPE(o)->tp_free)(o);
  }
}

static int __pyx_tp_traverse_4grpc_7_cython_6cygrpc___pyx_scope_struct_18__receive_initial_metadata(PyObject *o, visitproc v, void *a) {
  int e;
  struct __pyx_obj_4grpc_7_cython_6cygrpc___pyx_scope_struct_18__receive_initial_metadata *p = (struct __pyx_obj_4grpc_7_cython_6cygrpc___pyx_scope_struct_18__receive_initial_metadata *)o;
  if (p->__pyx_v_grpc_call_wrapper) {
    e = (*v)(((PyObject *)p->__pyx_v_grpc_call_wrapper), a); if (e) return e;
  }
  if (p->__pyx_v_loop) {
    e = (*v)(p->__pyx_v_loop, a); if (e) return e;
  }
  if (p->__pyx_v_op) {
    e = (*v)(((PyObject *)p->__pyx_v_op), a); if (e) return e;
  }
  if (p->__pyx_v_ops) {
    e = (*v)(p->__pyx_v_ops, a); if (e) return e;
  }
  return 0;
}

static PyTypeObject __pyx_type_4grpc_7_cython_6cygrpc___pyx_scope_struct_18__receive_initial_metadata = {
  PyVarObject_HEAD_INIT(0, 0)
  "grpc._cython.cygrpc.__pyx_scope_struct_18__receive_initial_metadata", /*tp_name*/
  sizeof(struct __pyx_obj_4grpc_7_cython_6cygrpc___pyx_scope_struct_18__receive_initial_metadata), /*tp_basicsize*/
  0, /*tp_itemsize*/
  __pyx_tp_dealloc_4grpc_7_cython_6cygrpc___pyx_scope_struct_18__receive_initial_metadata, /*tp_dealloc*/
  #if PY_VERSION_HEX < 0x030800b4
  0, /*tp_print*/
  #endif
  #if PY_VERSION_HEX >= 0x030800b4
  0, /*tp_vectorcall_offset*/
  #endif
  0, /*tp_getattr*/
  0, /*tp_setattr*/
  #if PY_MAJOR_VERSION < 3
  0, /*tp_compare*/
  #endif
  #if PY_MAJOR_VERSION >= 3
  0, /*tp_as_async*/
  #endif
  0, /*tp_repr*/
  0, /*tp_as_number*/
  0, /*tp_as_sequence*/
  0, /*tp_as_mapping*/
  0, /*tp_hash*/
  0, /*tp_call*/
  0, /*tp_str*/
  0, /*tp_getattro*/
  0, /*tp_setattro*/
  0, /*tp_as_buffer*/
  Py_TPFLAGS_DEFAULT|Py_TPFLAGS_HAVE_VERSION_TAG|Py_TPFLAGS_CHECKTYPES|Py_TPFLAGS_HAVE_NEWBUFFER|Py_TPFLAGS_HAVE_GC, /*tp_flags*/
  0, /*tp_doc*/
  __pyx_tp_traverse_4grpc_7_cython_6cygrpc___pyx_scope_struct_18__receive_initial_metadata, /*tp_traverse*/
  0, /*tp_clear*/
  0, /*tp_richcompare*/
  0, /*tp_weaklistoffset*/
  0, /*tp_iter*/
  0, /*tp_iternext*/
  0, /*tp_methods*/
  0, /*tp_members*/
  0, /*tp_getset*/
  0, /*tp_base*/
  0, /*tp_dict*/
  0, /*tp_descr_get*/
  0, /*tp_descr_set*/
  0, /*tp_dictoffset*/
  0, /*tp_init*/
  0, /*tp_alloc*/
  __pyx_tp_new_4grpc_7_cython_6cygrpc___pyx_scope_struct_18__receive_initial_metadata, /*tp_new*/
  0, /*tp_free*/
  0, /*tp_is_gc*/
  0, /*tp_bases*/
  0, /*tp_mro*/
  0, /*tp_cache*/
  0, /*tp_subclasses*/
  0, /*tp_weaklist*/
  0, /*tp_del*/
  0, /*tp_version_tag*/
  #if PY_VERSION_HEX >= 0x030400a1
  0, /*tp_finalize*/
  #endif
  #if PY_VERSION_HEX >= 0x030800b1
  0, /*tp_vectorcall*/
  #endif
  #if PY_VERSION_HEX >= 0x030800b4 && PY_VERSION_HEX < 0x03090000
  0, /*tp_print*/
  #endif
};

static struct __pyx_obj_4grpc_7_cython_6cygrpc___pyx_scope_struct_19__send_error_status_from_server *__pyx_freelist_4grpc_7_cython_6cygrpc___pyx_scope_struct_19__send_error_status_from_server[8];
static int __pyx_freecount_4grpc_7_cython_6cygrpc___pyx_scope_struct_19__send_error_status_from_server = 0;

static PyObject *__pyx_tp_new_4grpc_7_cython_6cygrpc___pyx_scope_struct_19__send_error_status_from_server(PyTypeObject *t, CYTHON_UNUSED PyObject *a, CYTHON_UNUSED PyObject *k) {
  PyObject *o;
  if (CYTHON_COMPILING_IN_CPYTHON && likely((__pyx_freecount_4grpc_7_cython_6cygrpc___pyx_scope_struct_19__send_error_status_from_server > 0) & (t->tp_basicsize == sizeof(struct __pyx_obj_4grpc_7_cython_6cygrpc___pyx_scope_struct_19__send_error_status_from_server)))) {
    o = (PyObject*)__pyx_freelist_4grpc_7_cython_6cygrpc___pyx_scope_struct_19__send_error_status_from_server[--__pyx_freecount_4grpc_7_cython_6cygrpc___pyx_scope_struct_19__send_error_status_from_server];
    memset(o, 0, sizeof(struct __pyx_obj_4grpc_7_cython_6cygrpc___pyx_scope_struct_19__send_error_status_from_server));
    (void) PyObject_INIT(o, t);
    PyObject_GC_Track(o);
  } else {
    o = (*t->tp_alloc)(t, 0);
    if (unlikely(!o)) return 0;
  }
  return o;
}

static void __pyx_tp_dealloc_4grpc_7_cython_6cygrpc___pyx_scope_struct_19__send_error_status_from_server(PyObject *o) {
  struct __pyx_obj_4grpc_7_cython_6cygrpc___pyx_scope_struct_19__send_error_status_from_server *p = (struct __pyx_obj_4grpc_7_cython_6cygrpc___pyx_scope_struct_19__send_error_status_from_server *)o;
  PyObject_GC_UnTrack(o);
  Py_CLEAR(p->__pyx_v_details);
  Py_CLEAR(p->__pyx_v_grpc_call_wrapper);
  Py_CLEAR(p->__pyx_v_loop);
  Py_CLEAR(p->__pyx_v_op);
  Py_CLEAR(p->__pyx_v_ops);
  Py_CLEAR(p->__pyx_v_send_initial_metadata_op);
  Py_CLEAR(p->__pyx_v_trailing_metadata);
  if (CYTHON_COMPILING_IN_CPYTHON && ((__pyx_freecount_4grpc_7_cython_6cygrpc___pyx_scope_struct_19__send_error_status_from_server < 8) & (Py_TYPE(o)->tp_basicsize == sizeof(struct __pyx_obj_4grpc_7_cython_6cygrpc___pyx_scope_struct_19__send_error_status_from_server)))) {
    __pyx_freelist_4grpc_7_cython_6cygrpc___pyx_scope_struct_19__send_error_status_from_server[__pyx_freecount_4grpc_7_cython_6cygrpc___pyx_scope_struct_19__send_error_status_from_server++] = ((struct __pyx_obj_4grpc_7_cython_6cygrpc___pyx_scope_struct_19__send_error_status_from_server *)o);
  } else {
    (*Py_TYPE(o)->tp_free)(o);
  }
}

static int __pyx_tp_traverse_4grpc_7_cython_6cygrpc___pyx_scope_struct_19__send_error_status_from_server(PyObject *o, visitproc v, void *a) {
  int e;
  struct __pyx_obj_4grpc_7_cython_6cygrpc___pyx_scope_struct_19__send_error_status_from_server *p = (struct __pyx_obj_4grpc_7_cython_6cygrpc___pyx_scope_struct_19__send_error_status_from_server *)o;
  if (p->__pyx_v_grpc_call_wrapper) {
    e = (*v)(((PyObject *)p->__pyx_v_grpc_call_wrapper), a); if (e) return e;
  }
  if (p->__pyx_v_loop) {
    e = (*v)(p->__pyx_v_loop, a); if (e) return e;
  }
  if (p->__pyx_v_op) {
    e = (*v)(((PyObject *)p->__pyx_v_op), a); if (e) return e;
  }
  if (p->__pyx_v_ops) {
    e = (*v)(p->__pyx_v_ops, a); if (e) return e;
  }
  if (p->__pyx_v_send_initial_metadata_op) {
    e = (*v)(((PyObject *)p->__pyx_v_send_initial_metadata_op), a); if (e) return e;
  }
  if (p->__pyx_v_trailing_metadata) {
    e = (*v)(p->__pyx_v_trailing_metadata, a); if (e) return e;
  }
  return 0;
}

static PyTypeObject __pyx_type_4grpc_7_cython_6cygrpc___pyx_scope_struct_19__send_error_status_from_server = {
  PyVarObject_HEAD_INIT(0, 0)
  "grpc._cython.cygrpc.__pyx_scope_struct_19__send_error_status_from_server", /*tp_name*/
  sizeof(struct __pyx_obj_4grpc_7_cython_6cygrpc___pyx_scope_struct_19__send_error_status_from_server), /*tp_basicsize*/
  0, /*tp_itemsize*/
  __pyx_tp_dealloc_4grpc_7_cython_6cygrpc___pyx_scope_struct_19__send_error_status_from_server, /*tp_dealloc*/
  #if PY_VERSION_HEX < 0x030800b4
  0, /*tp_print*/
  #endif
  #if PY_VERSION_HEX >= 0x030800b4
  0, /*tp_vectorcall_offset*/
  #endif
  0, /*tp_getattr*/
  0, /*tp_setattr*/
  #if PY_MAJOR_VERSION < 3
  0, /*tp_compare*/
  #endif
  #if PY_MAJOR_VERSION >= 3
  0, /*tp_as_async*/
  #endif
  0, /*tp_repr*/
  0, /*tp_as_number*/
  0, /*tp_as_sequence*/
  0, /*tp_as_mapping*/
  0, /*tp_hash*/
  0, /*tp_call*/
  0, /*tp_str*/
  0, /*tp_getattro*/
  0, /*tp_setattro*/
  0, /*tp_as_buffer*/
  Py_TPFLAGS_DEFAULT|Py_TPFLAGS_HAVE_VERSION_TAG|Py_TPFLAGS_CHECKTYPES|Py_TPFLAGS_HAVE_NEWBUFFER|Py_TPFLAGS_HAVE_GC, /*tp_flags*/
  0, /*tp_doc*/
  __pyx_tp_traverse_4grpc_7_cython_6cygrpc___pyx_scope_struct_19__send_error_status_from_server, /*tp_traverse*/
  0, /*tp_clear*/
  0, /*tp_richcompare*/
  0, /*tp_weaklistoffset*/
  0, /*tp_iter*/
  0, /*tp_iternext*/
  0, /*tp_methods*/
  0, /*tp_members*/
  0, /*tp_getset*/
  0, /*tp_base*/
  0, /*tp_dict*/
  0, /*tp_descr_get*/
  0, /*tp_descr_set*/
  0, /*tp_dictoffset*/
  0, /*tp_init*/
  0, /*tp_alloc*/
  __pyx_tp_new_4grpc_7_cython_6cygrpc___pyx_scope_struct_19__send_error_status_from_server, /*tp_new*/
  0, /*tp_free*/
  0, /*tp_is_gc*/
  0, /*tp_bases*/
  0, /*tp_mro*/
  0, /*tp_cache*/
  0, /*tp_subclasses*/
  0, /*tp_weaklist*/
  0, /*tp_del*/
  0, /*tp_version_tag*/
  #if PY_VERSION_HEX >= 0x030400a1
  0, /*tp_finalize*/
  #endif
  #if PY_VERSION_HEX >= 0x030800b1
  0, /*tp_vectorcall*/
  #endif
  #if PY_VERSION_HEX >= 0x030800b4 && PY_VERSION_HEX < 0x03090000
  0, /*tp_print*/
  #endif
};

static struct __pyx_obj_4grpc_7_cython_6cygrpc___pyx_scope_struct_20_status *__pyx_freelist_4grpc_7_cython_6cygrpc___pyx_scope_struct_20_status[8];
static int __pyx_freecount_4grpc_7_cython_6cygrpc___pyx_scope_struct_20_status = 0;

static PyObject *__pyx_tp_new_4grpc_7_cython_6cygrpc___pyx_scope_struct_20_status(PyTypeObject *t, CYTHON_UNUSED PyObject *a, CYTHON_UNUSED PyObject *k) {
  PyObject *o;
  if (CYTHON_COMPILING_IN_CPYTHON && likely((__pyx_freecount_4grpc_7_cython_6cygrpc___pyx_scope_struct_20_status > 0) & (t->tp_basicsize == sizeof(struct __pyx_obj_4grpc_7_cython_6cygrpc___pyx_scope_struct_20_status)))) {
    o = (PyObject*)__pyx_freelist_4grpc_7_cython_6cygrpc___pyx_scope_struct_20_status[--__pyx_freecount_4grpc_7_cython_6cygrpc___pyx_scope_struct_20_status];
    memset(o, 0, sizeof(struct __pyx_obj_4grpc_7_cython_6cygrpc___pyx_scope_struct_20_status));
    (void) PyObject_INIT(o, t);
    PyObject_GC_Track(o);
  } else {
    o = (*t->tp_alloc)(t, 0);
    if (unlikely(!o)) return 0;
  }
  return o;
}

static void __pyx_tp_dealloc_4grpc_7_cython_6cygrpc___pyx_scope_struct_20_status(PyObject *o) {
  struct __pyx_obj_4grpc_7_cython_6cygrpc___pyx_scope_struct_20_status *p = (struct __pyx_obj_4grpc_7_cython_6cygrpc___pyx_scope_struct_20_status *)o;
  PyObject_GC_UnTrack(o);
  Py_CLEAR(p->__pyx_v_future);
  Py_CLEAR(p->__pyx_v_self);
  if (CYTHON_COMPILING_IN_CPYTHON && ((__pyx_freecount_4grpc_7_cython_6cygrpc___pyx_scope_struct_20_status < 8) & (Py_TYPE(o)->tp_basicsize == sizeof(struct __pyx_obj_4grpc_7_cython_6cygrpc___pyx_scope_struct_20_status)))) {
    __pyx_freelist_4grpc_7_cython_6cygrpc___pyx_scope_struct_20_status[__pyx_freecount_4grpc_7_cython_6cygrpc___pyx_scope_struct_20_status++] = ((struct __pyx_obj_4grpc_7_cython_6cygrpc___pyx_scope_struct_20_status *)o);
  } else {
    (*Py_TYPE(o)->tp_free)(o);
  }
}

static int __pyx_tp_traverse_4grpc_7_cython_6cygrpc___pyx_scope_struct_20_status(PyObject *o, visitproc v, void *a) {
  int e;
  struct __pyx_obj_4grpc_7_cython_6cygrpc___pyx_scope_struct_20_status *p = (struct __pyx_obj_4grpc_7_cython_6cygrpc___pyx_scope_struct_20_status *)o;
  if (p->__pyx_v_future) {
    e = (*v)(p->__pyx_v_future, a); if (e) return e;
  }
  if (p->__pyx_v_self) {
    e = (*v)(((PyObject *)p->__pyx_v_self), a); if (e) return e;
  }
  return 0;
}

static PyTypeObject __pyx_type_4grpc_7_cython_6cygrpc___pyx_scope_struct_20_status = {
  PyVarObject_HEAD_INIT(0, 0)
  "grpc._cython.cygrpc.__pyx_scope_struct_20_status", /*tp_name*/
  sizeof(struct __pyx_obj_4grpc_7_cython_6cygrpc___pyx_scope_struct_20_status), /*tp_basicsize*/
  0, /*tp_itemsize*/
  __pyx_tp_dealloc_4grpc_7_cython_6cygrpc___pyx_scope_struct_20_status, /*tp_dealloc*/
  #if PY_VERSION_HEX < 0x030800b4
  0, /*tp_print*/
  #endif
  #if PY_VERSION_HEX >= 0x030800b4
  0, /*tp_vectorcall_offset*/
  #endif
  0, /*tp_getattr*/
  0, /*tp_setattr*/
  #if PY_MAJOR_VERSION < 3
  0, /*tp_compare*/
  #endif
  #if PY_MAJOR_VERSION >= 3
  0, /*tp_as_async*/
  #endif
  0, /*tp_repr*/
  0, /*tp_as_number*/
  0, /*tp_as_sequence*/
  0, /*tp_as_mapping*/
  0, /*tp_hash*/
  0, /*tp_call*/
  0, /*tp_str*/
  0, /*tp_getattro*/
  0, /*tp_setattro*/
  0, /*tp_as_buffer*/
  Py_TPFLAGS_DEFAULT|Py_TPFLAGS_HAVE_VERSION_TAG|Py_TPFLAGS_CHECKTYPES|Py_TPFLAGS_HAVE_NEWBUFFER|Py_TPFLAGS_HAVE_GC, /*tp_flags*/
  0, /*tp_doc*/
  __pyx_tp_traverse_4grpc_7_cython_6cygrpc___pyx_scope_struct_20_status, /*tp_traverse*/
  0, /*tp_clear*/
  0, /*tp_richcompare*/
  0, /*tp_weaklistoffset*/
  0, /*tp_iter*/
  0, /*tp_iternext*/
  0, /*tp_methods*/
  0, /*tp_members*/
  0, /*tp_getset*/
  0, /*tp_base*/
  0, /*tp_dict*/
  0, /*tp_descr_get*/
  0, /*tp_descr_set*/
  0, /*tp_dictoffset*/
  0, /*tp_init*/
  0, /*tp_alloc*/
  __pyx_tp_new_4grpc_7_cython_6cygrpc___pyx_scope_struct_20_status, /*tp_new*/
  0, /*tp_free*/
  0, /*tp_is_gc*/
  0, /*tp_bases*/
  0, /*tp_mro*/
  0, /*tp_cache*/
  0, /*tp_subclasses*/
  0, /*tp_weaklist*/
  0, /*tp_del*/
  0, /*tp_version_tag*/
  #if PY_VERSION_HEX >= 0x030400a1
  0, /*tp_finalize*/
  #endif
  #if PY_VERSION_HEX >= 0x030800b1
  0, /*tp_vectorcall*/
  #endif
  #if PY_VERSION_HEX >= 0x030800b4 && PY_VERSION_HEX < 0x03090000
  0, /*tp_print*/
  #endif
};

static struct __pyx_obj_4grpc_7_cython_6cygrpc___pyx_scope_struct_21_initial_metadata *__pyx_freelist_4grpc_7_cython_6cygrpc___pyx_scope_struct_21_initial_metadata[8];
static int __pyx_freecount_4grpc_7_cython_6cygrpc___pyx_scope_struct_21_initial_metadata = 0;

static PyObject *__pyx_tp_new_4grpc_7_cython_6cygrpc___pyx_scope_struct_21_initial_metadata(PyTypeObject *t, CYTHON_UNUSED PyObject *a, CYTHON_UNUSED PyObject *k) {
  PyObject *o;
  if (CYTHON_COMPILING_IN_CPYTHON && likely((__pyx_freecount_4grpc_7_cython_6cygrpc___pyx_scope_struct_21_initial_metadata > 0) & (t->tp_basicsize == sizeof(struct __pyx_obj_4grpc_7_cython_6cygrpc___pyx_scope_struct_21_initial_metadata)))) {
    o = (PyObject*)__pyx_freelist_4grpc_7_cython_6cygrpc___pyx_scope_struct_21_initial_metadata[--__pyx_freecount_4grpc_7_cython_6cygrpc___pyx_scope_struct_21_initial_metadata];
    memset(o, 0, sizeof(struct __pyx_obj_4grpc_7_cython_6cygrpc___pyx_scope_struct_21_initial_metadata));
    (void) PyObject_INIT(o, t);
    PyObject_GC_Track(o);
  } else {
    o = (*t->tp_alloc)(t, 0);
    if (unlikely(!o)) return 0;
  }
  return o;
}

static void __pyx_tp_dealloc_4grpc_7_cython_6cygrpc___pyx_scope_struct_21_initial_metadata(PyObject *o) {
  struct __pyx_obj_4grpc_7_cython_6cygrpc___pyx_scope_struct_21_initial_metadata *p = (struct __pyx_obj_4grpc_7_cython_6cygrpc___pyx_scope_struct_21_initial_metadata *)o;
  PyObject_GC_UnTrack(o);
  Py_CLEAR(p->__pyx_v_future);
  Py_CLEAR(p->__pyx_v_self);
  if (CYTHON_COMPILING_IN_CPYTHON && ((__pyx_freecount_4grpc_7_cython_6cygrpc___pyx_scope_struct_21_initial_metadata < 8) & (Py_TYPE(o)->tp_basicsize == sizeof(struct __pyx_obj_4grpc_7_cython_6cygrpc___pyx_scope_struct_21_initial_metadata)))) {
    __pyx_freelist_4grpc_7_cython_6cygrpc___pyx_scope_struct_21_initial_metadata[__pyx_freecount_4grpc_7_cython_6cygrpc___pyx_scope_struct_21_initial_metadata++] = ((struct __pyx_obj_4grpc_7_cython_6cygrpc___pyx_scope_struct_21_initial_metadata *)o);
  } else {
    (*Py_TYPE(o)->tp_free)(o);
  }
}

static int __pyx_tp_traverse_4grpc_7_cython_6cygrpc___pyx_scope_struct_21_initial_metadata(PyObject *o, visitproc v, void *a) {
  int e;
  struct __pyx_obj_4grpc_7_cython_6cygrpc___pyx_scope_struct_21_initial_metadata *p = (struct __pyx_obj_4grpc_7_cython_6cygrpc___pyx_scope_struct_21_initial_metadata *)o;
  if (p->__pyx_v_future) {
    e = (*v)(p->__pyx_v_future, a); if (e) return e;
  }
  if (p->__pyx_v_self) {
    e = (*v)(((PyObject *)p->__pyx_v_self), a); if (e) return e;
  }
  return 0;
}

static PyTypeObject __pyx_type_4grpc_7_cython_6cygrpc___pyx_scope_struct_21_initial_metadata = {
  PyVarObject_HEAD_INIT(0, 0)
  "grpc._cython.cygrpc.__pyx_scope_struct_21_initial_metadata", /*tp_name*/
  sizeof(struct __pyx_obj_4grpc_7_cython_6cygrpc___pyx_scope_struct_21_initial_metadata), /*tp_basicsize*/
  0, /*tp_itemsize*/
  __pyx_tp_dealloc_4grpc_7_cython_6cygrpc___pyx_scope_struct_21_initial_metadata, /*tp_dealloc*/
  #if PY_VERSION_HEX < 0x030800b4
  0, /*tp_print*/
  #endif
  #if PY_VERSION_HEX >= 0x030800b4
  0, /*tp_vectorcall_offset*/
  #endif
  0, /*tp_getattr*/
  0, /*tp_setattr*/
  #if PY_MAJOR_VERSION < 3
  0, /*tp_compare*/
  #endif
  #if PY_MAJOR_VERSION >= 3
  0, /*tp_as_async*/
  #endif
  0, /*tp_repr*/
  0, /*tp_as_number*/
  0, /*tp_as_sequence*/
  0, /*tp_as_mapping*/
  0, /*tp_hash*/
  0, /*tp_call*/
  0, /*tp_str*/
  0, /*tp_getattro*/
  0, /*tp_setattro*/
  0, /*tp_as_buffer*/
  Py_TPFLAGS_DEFAULT|Py_TPFLAGS_HAVE_VERSION_TAG|Py_TPFLAGS_CHECKTYPES|Py_TPFLAGS_HAVE_NEWBUFFER|Py_TPFLAGS_HAVE_GC, /*tp_flags*/
  0, /*tp_doc*/
  __pyx_tp_traverse_4grpc_7_cython_6cygrpc___pyx_scope_struct_21_initial_metadata, /*tp_traverse*/
  0, /*tp_clear*/
  0, /*tp_richcompare*/
  0, /*tp_weaklistoffset*/
  0, /*tp_iter*/
  0, /*tp_iternext*/
  0, /*tp_methods*/
  0, /*tp_members*/
  0, /*tp_getset*/
  0, /*tp_base*/
  0, /*tp_dict*/
  0, /*tp_descr_get*/
  0, /*tp_descr_set*/
  0, /*tp_dictoffset*/
  0, /*tp_init*/
  0, /*tp_alloc*/
  __pyx_tp_new_4grpc_7_cython_6cygrpc___pyx_scope_struct_21_initial_metadata, /*tp_new*/
  0, /*tp_free*/
  0, /*tp_is_gc*/
  0, /*tp_bases*/
  0, /*tp_mro*/
  0, /*tp_cache*/
  0, /*tp_subclasses*/
  0, /*tp_weaklist*/
  0, /*tp_del*/
  0, /*tp_version_tag*/
  #if PY_VERSION_HEX >= 0x030400a1
  0, /*tp_finalize*/
  #endif
  #if PY_VERSION_HEX >= 0x030800b1
  0, /*tp_vectorcall*/
  #endif
  #if PY_VERSION_HEX >= 0x030800b4 && PY_VERSION_HEX < 0x03090000
  0, /*tp_print*/
  #endif
};

static struct __pyx_obj_4grpc_7_cython_6cygrpc___pyx_scope_struct_22_unary_unary *__pyx_freelist_4grpc_7_cython_6cygrpc___pyx_scope_struct_22_unary_unary[8];
static int __pyx_freecount_4grpc_7_cython_6cygrpc___pyx_scope_struct_22_unary_unary = 0;

static PyObject *__pyx_tp_new_4grpc_7_cython_6cygrpc___pyx_scope_struct_22_unary_unary(PyTypeObject *t, CYTHON_UNUSED PyObject *a, CYTHON_UNUSED PyObject *k) {
  PyObject *o;
  if (CYTHON_COMPILING_IN_CPYTHON && likely((__pyx_freecount_4grpc_7_cython_6cygrpc___pyx_scope_struct_22_unary_unary > 0) & (t->tp_basicsize == sizeof(struct __pyx_obj_4grpc_7_cython_6cygrpc___pyx_scope_struct_22_unary_unary)))) {
    o = (PyObject*)__pyx_freelist_4grpc_7_cython_6cygrpc___pyx_scope_struct_22_unary_unary[--__pyx_freecount_4grpc_7_cython_6cygrpc___pyx_scope_struct_22_unary_unary];
    memset(o, 0, sizeof(struct __pyx_obj_4grpc_7_cython_6cygrpc___pyx_scope_struct_22_unary_unary));
    (void) PyObject_INIT(o, t);
    PyObject_GC_Track(o);
  } else {
    o = (*t->tp_alloc)(t, 0);
    if (unlikely(!o)) return 0;
  }
  return o;
}

static void __pyx_tp_dealloc_4grpc_7_cython_6cygrpc___pyx_scope_struct_22_unary_unary(PyObject *o) {
  struct __pyx_obj_4grpc_7_cython_6cygrpc___pyx_scope_struct_22_unary_unary *p = (struct __pyx_obj_4grpc_7_cython_6cygrpc___pyx_scope_struct_22_unary_unary *)o;
  PyObject_GC_UnTrack(o);
  Py_CLEAR(p->__pyx_v_initial_metadata_op);
  Py_CLEAR(p->__pyx_v_ops);
  Py_CLEAR(p->__pyx_v_outbound_initial_metadata);
  Py_CLEAR(p->__pyx_v_receive_initial_metadata_op);
  Py_CLEAR(p->__pyx_v_receive_message_op);
  Py_CLEAR(p->__pyx_v_receive_status_on_client_op);
  Py_CLEAR(p->__pyx_v_request);
  Py_CLEAR(p->__pyx_v_self);
  Py_CLEAR(p->__pyx_v_send_close_op);
  Py_CLEAR(p->__pyx_v_send_message_op);
  if (CYTHON_COMPILING_IN_CPYTHON && ((__pyx_freecount_4grpc_7_cython_6cygrpc___pyx_scope_struct_22_unary_unary < 8) & (Py_TYPE(o)->tp_basicsize == sizeof(struct __pyx_obj_4grpc_7_cython_6cygrpc___pyx_scope_struct_22_unary_unary)))) {
    __pyx_freelist_4grpc_7_cython_6cygrpc___pyx_scope_struct_22_unary_unary[__pyx_freecount_4grpc_7_cython_6cygrpc___pyx_scope_struct_22_unary_unary++] = ((struct __pyx_obj_4grpc_7_cython_6cygrpc___pyx_scope_struct_22_unary_unary *)o);
  } else {
    (*Py_TYPE(o)->tp_free)(o);
  }
}

static int __pyx_tp_traverse_4grpc_7_cython_6cygrpc___pyx_scope_struct_22_unary_unary(PyObject *o, visitproc v, void *a) {
  int e;
  struct __pyx_obj_4grpc_7_cython_6cygrpc___pyx_scope_struct_22_unary_unary *p = (struct __pyx_obj_4grpc_7_cython_6cygrpc___pyx_scope_struct_22_unary_unary *)o;
  if (p->__pyx_v_initial_metadata_op) {
    e = (*v)(((PyObject *)p->__pyx_v_initial_metadata_op), a); if (e) return e;
  }
  if (p->__pyx_v_ops) {
    e = (*v)(p->__pyx_v_ops, a); if (e) return e;
  }
  if (p->__pyx_v_outbound_initial_metadata) {
    e = (*v)(p->__pyx_v_outbound_initial_metadata, a); if (e) return e;
  }
  if (p->__pyx_v_receive_initial_metadata_op) {
    e = (*v)(((PyObject *)p->__pyx_v_receive_initial_metadata_op), a); if (e) return e;
  }
  if (p->__pyx_v_receive_message_op) {
    e = (*v)(((PyObject *)p->__pyx_v_receive_message_op), a); if (e) return e;
  }
  if (p->__pyx_v_receive_status_on_client_op) {
    e = (*v)(((PyObject *)p->__pyx_v_receive_status_on_client_op), a); if (e) return e;
  }
  if (p->__pyx_v_self) {
    e = (*v)(((PyObject *)p->__pyx_v_self), a); if (e) return e;
  }
  if (p->__pyx_v_send_close_op) {
    e = (*v)(((PyObject *)p->__pyx_v_send_close_op), a); if (e) return e;
  }
  if (p->__pyx_v_send_message_op) {
    e = (*v)(((PyObject *)p->__pyx_v_send_message_op), a); if (e) return e;
  }
  return 0;
}

static PyTypeObject __pyx_type_4grpc_7_cython_6cygrpc___pyx_scope_struct_22_unary_unary = {
  PyVarObject_HEAD_INIT(0, 0)
  "grpc._cython.cygrpc.__pyx_scope_struct_22_unary_unary", /*tp_name*/
  sizeof(struct __pyx_obj_4grpc_7_cython_6cygrpc___pyx_scope_struct_22_unary_unary), /*tp_basicsize*/
  0, /*tp_itemsize*/
  __pyx_tp_dealloc_4grpc_7_cython_6cygrpc___pyx_scope_struct_22_unary_unary, /*tp_dealloc*/
  #if PY_VERSION_HEX < 0x030800b4
  0, /*tp_print*/
  #endif
  #if PY_VERSION_HEX >= 0x030800b4
  0, /*tp_vectorcall_offset*/
  #endif
  0, /*tp_getattr*/
  0, /*tp_setattr*/
  #if PY_MAJOR_VERSION < 3
  0, /*tp_compare*/
  #endif
  #if PY_MAJOR_VERSION >= 3
  0, /*tp_as_async*/
  #endif
  0, /*tp_repr*/
  0, /*tp_as_number*/
  0, /*tp_as_sequence*/
  0, /*tp_as_mapping*/
  0, /*tp_hash*/
  0, /*tp_call*/
  0, /*tp_str*/
  0, /*tp_getattro*/
  0, /*tp_setattro*/
  0, /*tp_as_buffer*/
  Py_TPFLAGS_DEFAULT|Py_TPFLAGS_HAVE_VERSION_TAG|Py_TPFLAGS_CHECKTYPES|Py_TPFLAGS_HAVE_NEWBUFFER|Py_TPFLAGS_HAVE_GC, /*tp_flags*/
  0, /*tp_doc*/
  __pyx_tp_traverse_4grpc_7_cython_6cygrpc___pyx_scope_struct_22_unary_unary, /*tp_traverse*/
  0, /*tp_clear*/
  0, /*tp_richcompare*/
  0, /*tp_weaklistoffset*/
  0, /*tp_iter*/
  0, /*tp_iternext*/
  0, /*tp_methods*/
  0, /*tp_members*/
  0, /*tp_getset*/
  0, /*tp_base*/
  0, /*tp_dict*/
  0, /*tp_descr_get*/
  0, /*tp_descr_set*/
  0, /*tp_dictoffset*/
  0, /*tp_init*/
  0, /*tp_alloc*/
  __pyx_tp_new_4grpc_7_cython_6cygrpc___pyx_scope_struct_22_unary_unary, /*tp_new*/
  0, /*tp_free*/
  0, /*tp_is_gc*/
  0, /*tp_bases*/
  0, /*tp_mro*/
  0, /*tp_cache*/
  0, /*tp_subclasses*/
  0, /*tp_weaklist*/
  0, /*tp_del*/
  0, /*tp_version_tag*/
  #if PY_VERSION_HEX >= 0x030400a1
  0, /*tp_finalize*/
  #endif
  #if PY_VERSION_HEX >= 0x030800b1
  0, /*tp_vectorcall*/
  #endif
  #if PY_VERSION_HEX >= 0x030800b4 && PY_VERSION_HEX < 0x03090000
  0, /*tp_print*/
  #endif
};

static struct __pyx_obj_4grpc_7_cython_6cygrpc___pyx_scope_struct_23__handle_status_once_received *__pyx_freelist_4grpc_7_cython_6cygrpc___pyx_scope_struct_23__handle_status_once_received[8];
static int __pyx_freecount_4grpc_7_cython_6cygrpc___pyx_scope_struct_23__handle_status_once_received = 0;

static PyObject *__pyx_tp_new_4grpc_7_cython_6cygrpc___pyx_scope_struct_23__handle_status_once_received(PyTypeObject *t, CYTHON_UNUSED PyObject *a, CYTHON_UNUSED PyObject *k) {
  PyObject *o;
  if (CYTHON_COMPILING_IN_CPYTHON && likely((__pyx_freecount_4grpc_7_cython_6cygrpc___pyx_scope_struct_23__handle_status_once_received > 0) & (t->tp_basicsize == sizeof(struct __pyx_obj_4grpc_7_cython_6cygrpc___pyx_scope_struct_23__handle_status_once_received)))) {
    o = (PyObject*)__pyx_freelist_4grpc_7_cython_6cygrpc___pyx_scope_struct_23__handle_status_once_received[--__pyx_freecount_4grpc_7_cython_6cygrpc___pyx_scope_struct_23__handle_status_once_received];
    memset(o, 0, sizeof(struct __pyx_obj_4grpc_7_cython_6cygrpc___pyx_scope_struct_23__handle_status_once_received));
    (void) PyObject_INIT(o, t);
    PyObject_GC_Track(o);
  } else {
    o = (*t->tp_alloc)(t, 0);
    if (unlikely(!o)) return 0;
  }
  return o;
}

static void __pyx_tp_dealloc_4grpc_7_cython_6cygrpc___pyx_scope_struct_23__handle_status_once_received(PyObject *o) {
  struct __pyx_obj_4grpc_7_cython_6cygrpc___pyx_scope_struct_23__handle_status_once_received *p = (struct __pyx_obj_4grpc_7_cython_6cygrpc___pyx_scope_struct_23__handle_status_once_received *)o;
  PyObject_GC_UnTrack(o);
  Py_CLEAR(p->__pyx_v_op);
  Py_CLEAR(p->__pyx_v_ops);
  Py_CLEAR(p->__pyx_v_self);
  if (CYTHON_COMPILING_IN_CPYTHON && ((__pyx_freecount_4grpc_7_cython_6cygrpc___pyx_scope_struct_23__handle_status_once_received < 8) & (Py_TYPE(o)->tp_basicsize == sizeof(struct __pyx_obj_4grpc_7_cython_6cygrpc___pyx_scope_struct_23__handle_status_once_received)))) {
    __pyx_freelist_4grpc_7_cython_6cygrpc___pyx_scope_struct_23__handle_status_once_received[__pyx_freecount_4grpc_7_cython_6cygrpc___pyx_scope_struct_23__handle_status_once_received++] = ((struct __pyx_obj_4grpc_7_cython_6cygrpc___pyx_scope_struct_23__handle_status_once_received *)o);
  } else {
    (*Py_TYPE(o)->tp_free)(o);
  }
}

static int __pyx_tp_traverse_4grpc_7_cython_6cygrpc___pyx_scope_struct_23__handle_status_once_received(PyObject *o, visitproc v, void *a) {
  int e;
  struct __pyx_obj_4grpc_7_cython_6cygrpc___pyx_scope_struct_23__handle_status_once_received *p = (struct __pyx_obj_4grpc_7_cython_6cygrpc___pyx_scope_struct_23__handle_status_once_received *)o;
  if (p->__pyx_v_op) {
    e = (*v)(((PyObject *)p->__pyx_v_op), a); if (e) return e;
  }
  if (p->__pyx_v_ops) {
    e = (*v)(p->__pyx_v_ops, a); if (e) return e;
  }
  if (p->__pyx_v_self) {
    e = (*v)(((PyObject *)p->__pyx_v_self), a); if (e) return e;
  }
  return 0;
}

static PyTypeObject __pyx_type_4grpc_7_cython_6cygrpc___pyx_scope_struct_23__handle_status_once_received = {
  PyVarObject_HEAD_INIT(0, 0)
  "grpc._cython.cygrpc.__pyx_scope_struct_23__handle_status_once_received", /*tp_name*/
  sizeof(struct __pyx_obj_4grpc_7_cython_6cygrpc___pyx_scope_struct_23__handle_status_once_received), /*tp_basicsize*/
  0, /*tp_itemsize*/
  __pyx_tp_dealloc_4grpc_7_cython_6cygrpc___pyx_scope_struct_23__handle_status_once_received, /*tp_dealloc*/
  #if PY_VERSION_HEX < 0x030800b4
  0, /*tp_print*/
  #endif
  #if PY_VERSION_HEX >= 0x030800b4
  0, /*tp_vectorcall_offset*/
  #endif
  0, /*tp_getattr*/
  0, /*tp_setattr*/
  #if PY_MAJOR_VERSION < 3
  0, /*tp_compare*/
  #endif
  #if PY_MAJOR_VERSION >= 3
  0, /*tp_as_async*/
  #endif
  0, /*tp_repr*/
  0, /*tp_as_number*/
  0, /*tp_as_sequence*/
  0, /*tp_as_mapping*/
  0, /*tp_hash*/
  0, /*tp_call*/
  0, /*tp_str*/
  0, /*tp_getattro*/
  0, /*tp_setattro*/
  0, /*tp_as_buffer*/
  Py_TPFLAGS_DEFAULT|Py_TPFLAGS_HAVE_VERSION_TAG|Py_TPFLAGS_CHECKTYPES|Py_TPFLAGS_HAVE_NEWBUFFER|Py_TPFLAGS_HAVE_GC, /*tp_flags*/
  0, /*tp_doc*/
  __pyx_tp_traverse_4grpc_7_cython_6cygrpc___pyx_scope_struct_23__handle_status_once_received, /*tp_traverse*/
  0, /*tp_clear*/
  0, /*tp_richcompare*/
  0, /*tp_weaklistoffset*/
  0, /*tp_iter*/
  0, /*tp_iternext*/
  0, /*tp_methods*/
  0, /*tp_members*/
  0, /*tp_getset*/
  0, /*tp_base*/
  0, /*tp_dict*/
  0, /*tp_descr_get*/
  0, /*tp_descr_set*/
  0, /*tp_dictoffset*/
  0, /*tp_init*/
  0, /*tp_alloc*/
  __pyx_tp_new_4grpc_7_cython_6cygrpc___pyx_scope_struct_23__handle_status_once_received, /*tp_new*/
  0, /*tp_free*/
  0, /*tp_is_gc*/
  0, /*tp_bases*/
  0, /*tp_mro*/
  0, /*tp_cache*/
  0, /*tp_subclasses*/
  0, /*tp_weaklist*/
  0, /*tp_del*/
  0, /*tp_version_tag*/
  #if PY_VERSION_HEX >= 0x030400a1
  0, /*tp_finalize*/
  #endif
  #if PY_VERSION_HEX >= 0x030800b1
  0, /*tp_vectorcall*/
  #endif
  #if PY_VERSION_HEX >= 0x030800b4 && PY_VERSION_HEX < 0x03090000
  0, /*tp_print*/
  #endif
};

static struct __pyx_obj_4grpc_7_cython_6cygrpc___pyx_scope_struct_24_receive_serialized_message *__pyx_freelist_4grpc_7_cython_6cygrpc___pyx_scope_struct_24_receive_serialized_message[8];
static int __pyx_freecount_4grpc_7_cython_6cygrpc___pyx_scope_struct_24_receive_serialized_message = 0;

static PyObject *__pyx_tp_new_4grpc_7_cython_6cygrpc___pyx_scope_struct_24_receive_serialized_message(PyTypeObject *t, CYTHON_UNUSED PyObject *a, CYTHON_UNUSED PyObject *k) {
  PyObject *o;
  if (CYTHON_COMPILING_IN_CPYTHON && likely((__pyx_freecount_4grpc_7_cython_6cygrpc___pyx_scope_struct_24_receive_serialized_message > 0) & (t->tp_basicsize == sizeof(struct __pyx_obj_4grpc_7_cython_6cygrpc___pyx_scope_struct_24_receive_serialized_message)))) {
    o = (PyObject*)__pyx_freelist_4grpc_7_cython_6cygrpc___pyx_scope_struct_24_receive_serialized_message[--__pyx_freecount_4grpc_7_cython_6cygrpc___pyx_scope_struct_24_receive_serialized_message];
    memset(o, 0, sizeof(struct __pyx_obj_4grpc_7_cython_6cygrpc___pyx_scope_struct_24_receive_serialized_message));
    (void) PyObject_INIT(o, t);
    PyObject_GC_Track(o);
  } else {
    o = (*t->tp_alloc)(t, 0);
    if (unlikely(!o)) return 0;
  }
  return o;
}

static void __pyx_tp_dealloc_4grpc_7_cython_6cygrpc___pyx_scope_struct_24_receive_serialized_message(PyObject *o) {
  struct __pyx_obj_4grpc_7_cython_6cygrpc___pyx_scope_struct_24_receive_serialized_message *p = (struct __pyx_obj_4grpc_7_cython_6cygrpc___pyx_scope_struct_24_receive_serialized_message *)o;
  PyObject_GC_UnTrack(o);
  Py_CLEAR(p->__pyx_v_received_message);
  Py_CLEAR(p->__pyx_v_self);
  if (CYTHON_COMPILING_IN_CPYTHON && ((__pyx_freecount_4grpc_7_cython_6cygrpc___pyx_scope_struct_24_receive_serialized_message < 8) & (Py_TYPE(o)->tp_basicsize == sizeof(struct __pyx_obj_4grpc_7_cython_6cygrpc___pyx_scope_struct_24_receive_serialized_message)))) {
    __pyx_freelist_4grpc_7_cython_6cygrpc___pyx_scope_struct_24_receive_serialized_message[__pyx_freecount_4grpc_7_cython_6cygrpc___pyx_scope_struct_24_receive_serialized_message++] = ((struct __pyx_obj_4grpc_7_cython_6cygrpc___pyx_scope_struct_24_receive_serialized_message *)o);
  } else {
    (*Py_TYPE(o)->tp_free)(o);
  }
}

static int __pyx_tp_traverse_4grpc_7_cython_6cygrpc___pyx_scope_struct_24_receive_serialized_message(PyObject *o, visitproc v, void *a) {
  int e;
  struct __pyx_obj_4grpc_7_cython_6cygrpc___pyx_scope_struct_24_receive_serialized_message *p = (struct __pyx_obj_4grpc_7_cython_6cygrpc___pyx_scope_struct_24_receive_serialized_message *)o;
  if (p->__pyx_v_self) {
    e = (*v)(((PyObject *)p->__pyx_v_self), a); if (e) return e;
  }
  return 0;
}

static PyTypeObject __pyx_type_4grpc_7_cython_6cygrpc___pyx_scope_struct_24_receive_serialized_message = {
  PyVarObject_HEAD_INIT(0, 0)
  "grpc._cython.cygrpc.__pyx_scope_struct_24_receive_serialized_message", /*tp_name*/
  sizeof(struct __pyx_obj_4grpc_7_cython_6cygrpc___pyx_scope_struct_24_receive_serialized_message), /*tp_basicsize*/
  0, /*tp_itemsize*/
  __pyx_tp_dealloc_4grpc_7_cython_6cygrpc___pyx_scope_struct_24_receive_serialized_message, /*tp_dealloc*/
  #if PY_VERSION_HEX < 0x030800b4
  0, /*tp_print*/
  #endif
  #if PY_VERSION_HEX >= 0x030800b4
  0, /*tp_vectorcall_offset*/
  #endif
  0, /*tp_getattr*/
  0, /*tp_setattr*/
  #if PY_MAJOR_VERSION < 3
  0, /*tp_compare*/
  #endif
  #if PY_MAJOR_VERSION >= 3
  0, /*tp_as_async*/
  #endif
  0, /*tp_repr*/
  0, /*tp_as_number*/
  0, /*tp_as_sequence*/
  0, /*tp_as_mapping*/
  0, /*tp_hash*/
  0, /*tp_call*/
  0, /*tp_str*/
  0, /*tp_getattro*/
  0, /*tp_setattro*/
  0, /*tp_as_buffer*/
  Py_TPFLAGS_DEFAULT|Py_TPFLAGS_HAVE_VERSION_TAG|Py_TPFLAGS_CHECKTYPES|Py_TPFLAGS_HAVE_NEWBUFFER|Py_TPFLAGS_HAVE_GC, /*tp_flags*/
  0, /*tp_doc*/
  __pyx_tp_traverse_4grpc_7_cython_6cygrpc___pyx_scope_struct_24_receive_serialized_message, /*tp_traverse*/
  0, /*tp_clear*/
  0, /*tp_richcompare*/
  0, /*tp_weaklistoffset*/
  0, /*tp_iter*/
  0, /*tp_iternext*/
  0, /*tp_methods*/
  0, /*tp_members*/
  0, /*tp_getset*/
  0, /*tp_base*/
  0, /*tp_dict*/
  0, /*tp_descr_get*/
  0, /*tp_descr_set*/
  0, /*tp_dictoffset*/
  0, /*tp_init*/
  0, /*tp_alloc*/
  __pyx_tp_new_4grpc_7_cython_6cygrpc___pyx_scope_struct_24_receive_serialized_message, /*tp_new*/
  0, /*tp_free*/
  0, /*tp_is_gc*/
  0, /*tp_bases*/
  0, /*tp_mro*/
  0, /*tp_cache*/
  0, /*tp_subclasses*/
  0, /*tp_weaklist*/
  0, /*tp_del*/
  0, /*tp_version_tag*/
  #if PY_VERSION_HEX >= 0x030400a1
  0, /*tp_finalize*/
  #endif
  #if PY_VERSION_HEX >= 0x030800b1
  0, /*tp_vectorcall*/
  #endif
  #if PY_VERSION_HEX >= 0x030800b4 && PY_VERSION_HEX < 0x03090000
  0, /*tp_print*/
  #endif
};

static struct __pyx_obj_4grpc_7_cython_6cygrpc___pyx_scope_struct_25_send_serialized_message *__pyx_freelist_4grpc_7_cython_6cygrpc___pyx_scope_struct_25_send_serialized_message[8];
static int __pyx_freecount_4grpc_7_cython_6cygrpc___pyx_scope_struct_25_send_serialized_message = 0;

static PyObject *__pyx_tp_new_4grpc_7_cython_6cygrpc___pyx_scope_struct_25_send_serialized_message(PyTypeObject *t, CYTHON_UNUSED PyObject *a, CYTHON_UNUSED PyObject *k) {
  PyObject *o;
  if (CYTHON_COMPILING_IN_CPYTHON && likely((__pyx_freecount_4grpc_7_cython_6cygrpc___pyx_scope_struct_25_send_serialized_message > 0) & (t->tp_basicsize == sizeof(struct __pyx_obj_4grpc_7_cython_6cygrpc___pyx_scope_struct_25_send_serialized_message)))) {
    o = (PyObject*)__pyx_freelist_4grpc_7_cython_6cygrpc___pyx_scope_struct_25_send_serialized_message[--__pyx_freecount_4grpc_7_cython_6cygrpc___pyx_scope_struct_25_send_serialized_message];
    memset(o, 0, sizeof(struct __pyx_obj_4grpc_7_cython_6cygrpc___pyx_scope_struct_25_send_serialized_message));
    (void) PyObject_INIT(o, t);
    PyObject_GC_Track(o);
  } else {
    o = (*t->tp_alloc)(t, 0);
    if (unlikely(!o)) return 0;
  }
  return o;
}

static void __pyx_tp_dealloc_4grpc_7_cython_6cygrpc___pyx_scope_struct_25_send_serialized_message(PyObject *o) {
  struct __pyx_obj_4grpc_7_cython_6cygrpc___pyx_scope_struct_25_send_serialized_message *p = (struct __pyx_obj_4grpc_7_cython_6cygrpc___pyx_scope_struct_25_send_serialized_message *)o;
  PyObject_GC_UnTrack(o);
  Py_CLEAR(p->__pyx_v_message);
  Py_CLEAR(p->__pyx_v_self);
  if (CYTHON_COMPILING_IN_CPYTHON && ((__pyx_freecount_4grpc_7_cython_6cygrpc___pyx_scope_struct_25_send_serialized_message < 8) & (Py_TYPE(o)->tp_basicsize == sizeof(struct __pyx_obj_4grpc_7_cython_6cygrpc___pyx_scope_struct_25_send_serialized_message)))) {
    __pyx_freelist_4grpc_7_cython_6cygrpc___pyx_scope_struct_25_send_serialized_message[__pyx_freecount_4grpc_7_cython_6cygrpc___pyx_scope_struct_25_send_serialized_message++] = ((struct __pyx_obj_4grpc_7_cython_6cygrpc___pyx_scope_struct_25_send_serialized_message *)o);
  } else {
    (*Py_TYPE(o)->tp_free)(o);
  }
}

static int __pyx_tp_traverse_4grpc_7_cython_6cygrpc___pyx_scope_struct_25_send_serialized_message(PyObject *o, visitproc v, void *a) {
  int e;
  struct __pyx_obj_4grpc_7_cython_6cygrpc___pyx_scope_struct_25_send_serialized_message *p = (struct __pyx_obj_4grpc_7_cython_6cygrpc___pyx_scope_struct_25_send_serialized_message *)o;
  if (p->__pyx_v_self) {
    e = (*v)(((PyObject *)p->__pyx_v_self), a); if (e) return e;
  }
  return 0;
}

static PyTypeObject __pyx_type_4grpc_7_cython_6cygrpc___pyx_scope_struct_25_send_serialized_message = {
  PyVarObject_HEAD_INIT(0, 0)
  "grpc._cython.cygrpc.__pyx_scope_struct_25_send_serialized_message", /*tp_name*/
  sizeof(struct __pyx_obj_4grpc_7_cython_6cygrpc___pyx_scope_struct_25_send_serialized_message), /*tp_basicsize*/
  0, /*tp_itemsize*/
  __pyx_tp_dealloc_4grpc_7_cython_6cygrpc___pyx_scope_struct_25_send_serialized_message, /*tp_dealloc*/
  #if PY_VERSION_HEX < 0x030800b4
  0, /*tp_print*/
  #endif
  #if PY_VERSION_HEX >= 0x030800b4
  0, /*tp_vectorcall_offset*/
  #endif
  0, /*tp_getattr*/
  0, /*tp_setattr*/
  #if PY_MAJOR_VERSION < 3
  0, /*tp_compare*/
  #endif
  #if PY_MAJOR_VERSION >= 3
  0, /*tp_as_async*/
  #endif
  0, /*tp_repr*/
  0, /*tp_as_number*/
  0, /*tp_as_sequence*/
  0, /*tp_as_mapping*/
  0, /*tp_hash*/
  0, /*tp_call*/
  0, /*tp_str*/
  0, /*tp_getattro*/
  0, /*tp_setattro*/
  0, /*tp_as_buffer*/
  Py_TPFLAGS_DEFAULT|Py_TPFLAGS_HAVE_VERSION_TAG|Py_TPFLAGS_CHECKTYPES|Py_TPFLAGS_HAVE_NEWBUFFER|Py_TPFLAGS_HAVE_GC, /*tp_flags*/
  0, /*tp_doc*/
  __pyx_tp_traverse_4grpc_7_cython_6cygrpc___pyx_scope_struct_25_send_serialized_message, /*tp_traverse*/
  0, /*tp_clear*/
  0, /*tp_richcompare*/
  0, /*tp_weaklistoffset*/
  0, /*tp_iter*/
  0, /*tp_iternext*/
  0, /*tp_methods*/
  0, /*tp_members*/
  0, /*tp_getset*/
  0, /*tp_base*/
  0, /*tp_dict*/
  0, /*tp_descr_get*/
  0, /*tp_descr_set*/
  0, /*tp_dictoffset*/
  0, /*tp_init*/
  0, /*tp_alloc*/
  __pyx_tp_new_4grpc_7_cython_6cygrpc___pyx_scope_struct_25_send_serialized_message, /*tp_new*/
  0, /*tp_free*/
  0, /*tp_is_gc*/
  0, /*tp_bases*/
  0, /*tp_mro*/
  0, /*tp_cache*/
  0, /*tp_subclasses*/
  0, /*tp_weaklist*/
  0, /*tp_del*/
  0, /*tp_version_tag*/
  #if PY_VERSION_HEX >= 0x030400a1
  0, /*tp_finalize*/
  #endif
  #if PY_VERSION_HEX >= 0x030800b1
  0, /*tp_vectorcall*/
  #endif
  #if PY_VERSION_HEX >= 0x030800b4 && PY_VERSION_HEX < 0x03090000
  0, /*tp_print*/
  #endif
};

static struct __pyx_obj_4grpc_7_cython_6cygrpc___pyx_scope_struct_26_send_receive_close *__pyx_freelist_4grpc_7_cython_6cygrpc___pyx_scope_struct_26_send_receive_close[8];
static int __pyx_freecount_4grpc_7_cython_6cygrpc___pyx_scope_struct_26_send_receive_close = 0;

static PyObject *__pyx_tp_new_4grpc_7_cython_6cygrpc___pyx_scope_struct_26_send_receive_close(PyTypeObject *t, CYTHON_UNUSED PyObject *a, CYTHON_UNUSED PyObject *k) {
  PyObject *o;
  if (CYTHON_COMPILING_IN_CPYTHON && likely((__pyx_freecount_4grpc_7_cython_6cygrpc___pyx_scope_struct_26_send_receive_close > 0) & (t->tp_basicsize == sizeof(struct __pyx_obj_4grpc_7_cython_6cygrpc___pyx_scope_struct_26_send_receive_close)))) {
    o = (PyObject*)__pyx_freelist_4grpc_7_cython_6cygrpc___pyx_scope_struct_26_send_receive_close[--__pyx_freecount_4grpc_7_cython_6cygrpc___pyx_scope_struct_26_send_receive_close];
    memset(o, 0, sizeof(struct __pyx_obj_4grpc_7_cython_6cygrpc___pyx_scope_struct_26_send_receive_close));
    (void) PyObject_INIT(o, t);
    PyObject_GC_Track(o);
  } else {
    o = (*t->tp_alloc)(t, 0);
    if (unlikely(!o)) return 0;
  }
  return o;
}

static void __pyx_tp_dealloc_4grpc_7_cython_6cygrpc___pyx_scope_struct_26_send_receive_close(PyObject *o) {
  struct __pyx_obj_4grpc_7_cython_6cygrpc___pyx_scope_struct_26_send_receive_close *p = (struct __pyx_obj_4grpc_7_cython_6cygrpc___pyx_scope_struct_26_send_receive_close *)o;
  PyObject_GC_UnTrack(o);
  Py_CLEAR(p->__pyx_v_op);
  Py_CLEAR(p->__pyx_v_ops);
  Py_CLEAR(p->__pyx_v_self);
  if (CYTHON_COMPILING_IN_CPYTHON && ((__pyx_freecount_4grpc_7_cython_6cygrpc___pyx_scope_struct_26_send_receive_close < 8) & (Py_TYPE(o)->tp_basicsize == sizeof(struct __pyx_obj_4grpc_7_cython_6cygrpc___pyx_scope_struct_26_send_receive_close)))) {
    __pyx_freelist_4grpc_7_cython_6cygrpc___pyx_scope_struct_26_send_receive_close[__pyx_freecount_4grpc_7_cython_6cygrpc___pyx_scope_struct_26_send_receive_close++] = ((struct __pyx_obj_4grpc_7_cython_6cygrpc___pyx_scope_struct_26_send_receive_close *)o);
  } else {
    (*Py_TYPE(o)->tp_free)(o);
  }
}

static int __pyx_tp_traverse_4grpc_7_cython_6cygrpc___pyx_scope_struct_26_send_receive_close(PyObject *o, visitproc v, void *a) {
  int e;
  struct __pyx_obj_4grpc_7_cython_6cygrpc___pyx_scope_struct_26_send_receive_close *p = (struct __pyx_obj_4grpc_7_cython_6cygrpc___pyx_scope_struct_26_send_receive_close *)o;
  if (p->__pyx_v_op) {
    e = (*v)(((PyObject *)p->__pyx_v_op), a); if (e) return e;
  }
  if (p->__pyx_v_ops) {
    e = (*v)(p->__pyx_v_ops, a); if (e) return e;
  }
  if (p->__pyx_v_self) {
    e = (*v)(((PyObject *)p->__pyx_v_self), a); if (e) return e;
  }
  return 0;
}

static PyTypeObject __pyx_type_4grpc_7_cython_6cygrpc___pyx_scope_struct_26_send_receive_close = {
  PyVarObject_HEAD_INIT(0, 0)
  "grpc._cython.cygrpc.__pyx_scope_struct_26_send_receive_close", /*tp_name*/
  sizeof(struct __pyx_obj_4grpc_7_cython_6cygrpc___pyx_scope_struct_26_send_receive_close), /*tp_basicsize*/
  0, /*tp_itemsize*/
  __pyx_tp_dealloc_4grpc_7_cython_6cygrpc___pyx_scope_struct_26_send_receive_close, /*tp_dealloc*/
  #if PY_VERSION_HEX < 0x030800b4
  0, /*tp_print*/
  #endif
  #if PY_VERSION_HEX >= 0x030800b4
  0, /*tp_vectorcall_offset*/
  #endif
  0, /*tp_getattr*/
  0, /*tp_setattr*/
  #if PY_MAJOR_VERSION < 3
  0, /*tp_compare*/
  #endif
  #if PY_MAJOR_VERSION >= 3
  0, /*tp_as_async*/
  #endif
  0, /*tp_repr*/
  0, /*tp_as_number*/
  0, /*tp_as_sequence*/
  0, /*tp_as_mapping*/
  0, /*tp_hash*/
  0, /*tp_call*/
  0, /*tp_str*/
  0, /*tp_getattro*/
  0, /*tp_setattro*/
  0, /*tp_as_buffer*/
  Py_TPFLAGS_DEFAULT|Py_TPFLAGS_HAVE_VERSION_TAG|Py_TPFLAGS_CHECKTYPES|Py_TPFLAGS_HAVE_NEWBUFFER|Py_TPFLAGS_HAVE_GC, /*tp_flags*/
  0, /*tp_doc*/
  __pyx_tp_traverse_4grpc_7_cython_6cygrpc___pyx_scope_struct_26_send_receive_close, /*tp_traverse*/
  0, /*tp_clear*/
  0, /*tp_richcompare*/
  0, /*tp_weaklistoffset*/
  0, /*tp_iter*/
  0, /*tp_iternext*/
  0, /*tp_methods*/
  0, /*tp_members*/
  0, /*tp_getset*/
  0, /*tp_base*/
  0, /*tp_dict*/
  0, /*tp_descr_get*/
  0, /*tp_descr_set*/
  0, /*tp_dictoffset*/
  0, /*tp_init*/
  0, /*tp_alloc*/
  __pyx_tp_new_4grpc_7_cython_6cygrpc___pyx_scope_struct_26_send_receive_close, /*tp_new*/
  0, /*tp_free*/
  0, /*tp_is_gc*/
  0, /*tp_bases*/
  0, /*tp_mro*/
  0, /*tp_cache*/
  0, /*tp_subclasses*/
  0, /*tp_weaklist*/
  0, /*tp_del*/
  0, /*tp_version_tag*/
  #if PY_VERSION_HEX >= 0x030400a1
  0, /*tp_finalize*/
  #endif
  #if PY_VERSION_HEX >= 0x030800b1
  0, /*tp_vectorcall*/
  #endif
  #if PY_VERSION_HEX >= 0x030800b4 && PY_VERSION_HEX < 0x03090000
  0, /*tp_print*/
  #endif
};

static struct __pyx_obj_4grpc_7_cython_6cygrpc___pyx_scope_struct_27_initiate_unary_stream *__pyx_freelist_4grpc_7_cython_6cygrpc___pyx_scope_struct_27_initiate_unary_stream[8];
static int __pyx_freecount_4grpc_7_cython_6cygrpc___pyx_scope_struct_27_initiate_unary_stream = 0;

static PyObject *__pyx_tp_new_4grpc_7_cython_6cygrpc___pyx_scope_struct_27_initiate_unary_stream(PyTypeObject *t, CYTHON_UNUSED PyObject *a, CYTHON_UNUSED PyObject *k) {
  PyObject *o;
  if (CYTHON_COMPILING_IN_CPYTHON && likely((__pyx_freecount_4grpc_7_cython_6cygrpc___pyx_scope_struct_27_initiate_unary_stream > 0) & (t->tp_basicsize == sizeof(struct __pyx_obj_4grpc_7_cython_6cygrpc___pyx_scope_struct_27_initiate_unary_stream)))) {
    o = (PyObject*)__pyx_freelist_4grpc_7_cython_6cygrpc___pyx_scope_struct_27_initiate_unary_stream[--__pyx_freecount_4grpc_7_cython_6cygrpc___pyx_scope_struct_27_initiate_unary_stream];
    memset(o, 0, sizeof(struct __pyx_obj_4grpc_7_cython_6cygrpc___pyx_scope_struct_27_initiate_unary_stream));
    (void) PyObject_INIT(o, t);
    PyObject_GC_Track(o);
  } else {
    o = (*t->tp_alloc)(t, 0);
    if (unlikely(!o)) return 0;
  }
  return o;
}

static void __pyx_tp_dealloc_4grpc_7_cython_6cygrpc___pyx_scope_struct_27_initiate_unary_stream(PyObject *o) {
  struct __pyx_obj_4grpc_7_cython_6cygrpc___pyx_scope_struct_27_initiate_unary_stream *p = (struct __pyx_obj_4grpc_7_cython_6cygrpc___pyx_scope_struct_27_initiate_unary_stream *)o;
  PyObject_GC_UnTrack(o);
  Py_CLEAR(p->__pyx_v_batch_error);
  Py_CLEAR(p->__pyx_v_initial_metadata_op);
  Py_CLEAR(p->__pyx_v_outbound_initial_metadata);
  Py_CLEAR(p->__pyx_v_outbound_ops);
  Py_CLEAR(p->__pyx_v_request);
  Py_CLEAR(p->__pyx_v_self);
  Py_CLEAR(p->__pyx_v_send_close_op);
  Py_CLEAR(p->__pyx_v_send_message_op);
  Py_CLEAR(p->__pyx_v_status_task);
  Py_CLEAR(p->__pyx_t_0);
  Py_CLEAR(p->__pyx_t_1);
  Py_CLEAR(p->__pyx_t_2);
  Py_CLEAR(p->__pyx_t_3);
  Py_CLEAR(p->__pyx_t_4);
  Py_CLEAR(p->__pyx_t_5);
  if (CYTHON_COMPILING_IN_CPYTHON && ((__pyx_freecount_4grpc_7_cython_6cygrpc___pyx_scope_struct_27_initiate_unary_stream < 8) & (Py_TYPE(o)->tp_basicsize == sizeof(struct __pyx_obj_4grpc_7_cython_6cygrpc___pyx_scope_struct_27_initiate_unary_stream)))) {
    __pyx_freelist_4grpc_7_cython_6cygrpc___pyx_scope_struct_27_initiate_unary_stream[__pyx_freecount_4grpc_7_cython_6cygrpc___pyx_scope_struct_27_initiate_unary_stream++] = ((struct __pyx_obj_4grpc_7_cython_6cygrpc___pyx_scope_struct_27_initiate_unary_stream *)o);
  } else {
    (*Py_TYPE(o)->tp_free)(o);
  }
}

static int __pyx_tp_traverse_4grpc_7_cython_6cygrpc___pyx_scope_struct_27_initiate_unary_stream(PyObject *o, visitproc v, void *a) {
  int e;
  struct __pyx_obj_4grpc_7_cython_6cygrpc___pyx_scope_struct_27_initiate_unary_stream *p = (struct __pyx_obj_4grpc_7_cython_6cygrpc___pyx_scope_struct_27_initiate_unary_stream *)o;
  if (p->__pyx_v_batch_error) {
    e = (*v)(p->__pyx_v_batch_error, a); if (e) return e;
  }
  if (p->__pyx_v_initial_metadata_op) {
    e = (*v)(((PyObject *)p->__pyx_v_initial_metadata_op), a); if (e) return e;
  }
  if (p->__pyx_v_outbound_initial_metadata) {
    e = (*v)(p->__pyx_v_outbound_initial_metadata, a); if (e) return e;
  }
  if (p->__pyx_v_outbound_ops) {
    e = (*v)(p->__pyx_v_outbound_ops, a); if (e) return e;
  }
  if (p->__pyx_v_self) {
    e = (*v)(((PyObject *)p->__pyx_v_self), a); if (e) return e;
  }
  if (p->__pyx_v_send_close_op) {
    e = (*v)(((PyObject *)p->__pyx_v_send_close_op), a); if (e) return e;
  }
  if (p->__pyx_v_send_message_op) {
    e = (*v)(((PyObject *)p->__pyx_v_send_message_op), a); if (e) return e;
  }
  if (p->__pyx_v_status_task) {
    e = (*v)(p->__pyx_v_status_task, a); if (e) return e;
  }
  if (p->__pyx_t_0) {
    e = (*v)(p->__pyx_t_0, a); if (e) return e;
  }
  if (p->__pyx_t_1) {
    e = (*v)(p->__pyx_t_1, a); if (e) return e;
  }
  if (p->__pyx_t_2) {
    e = (*v)(p->__pyx_t_2, a); if (e) return e;
  }
  if (p->__pyx_t_3) {
    e = (*v)(p->__pyx_t_3, a); if (e) return e;
  }
  if (p->__pyx_t_4) {
    e = (*v)(p->__pyx_t_4, a); if (e) return e;
  }
  if (p->__pyx_t_5) {
    e = (*v)(p->__pyx_t_5, a); if (e) return e;
  }
  return 0;
}

static PyTypeObject __pyx_type_4grpc_7_cython_6cygrpc___pyx_scope_struct_27_initiate_unary_stream = {
  PyVarObject_HEAD_INIT(0, 0)
  "grpc._cython.cygrpc.__pyx_scope_struct_27_initiate_unary_stream", /*tp_name*/
  sizeof(struct __pyx_obj_4grpc_7_cython_6cygrpc___pyx_scope_struct_27_initiate_unary_stream), /*tp_basicsize*/
  0, /*tp_itemsize*/
  __pyx_tp_dealloc_4grpc_7_cython_6cygrpc___pyx_scope_struct_27_initiate_unary_stream, /*tp_dealloc*/
  #if PY_VERSION_HEX < 0x030800b4
  0, /*tp_print*/
  #endif
  #if PY_VERSION_HEX >= 0x030800b4
  0, /*tp_vectorcall_offset*/
  #endif
  0, /*tp_getattr*/
  0, /*tp_setattr*/
  #if PY_MAJOR_VERSION < 3
  0, /*tp_compare*/
  #endif
  #if PY_MAJOR_VERSION >= 3
  0, /*tp_as_async*/
  #endif
  0, /*tp_repr*/
  0, /*tp_as_number*/
  0, /*tp_as_sequence*/
  0, /*tp_as_mapping*/
  0, /*tp_hash*/
  0, /*tp_call*/
  0, /*tp_str*/
  0, /*tp_getattro*/
  0, /*tp_setattro*/
  0, /*tp_as_buffer*/
  Py_TPFLAGS_DEFAULT|Py_TPFLAGS_HAVE_VERSION_TAG|Py_TPFLAGS_CHECKTYPES|Py_TPFLAGS_HAVE_NEWBUFFER|Py_TPFLAGS_HAVE_GC, /*tp_flags*/
  0, /*tp_doc*/
  __pyx_tp_traverse_4grpc_7_cython_6cygrpc___pyx_scope_struct_27_initiate_unary_stream, /*tp_traverse*/
  0, /*tp_clear*/
  0, /*tp_richcompare*/
  0, /*tp_weaklistoffset*/
  0, /*tp_iter*/
  0, /*tp_iternext*/
  0, /*tp_methods*/
  0, /*tp_members*/
  0, /*tp_getset*/
  0, /*tp_base*/
  0, /*tp_dict*/
  0, /*tp_descr_get*/
  0, /*tp_descr_set*/
  0, /*tp_dictoffset*/
  0, /*tp_init*/
  0, /*tp_alloc*/
  __pyx_tp_new_4grpc_7_cython_6cygrpc___pyx_scope_struct_27_initiate_unary_stream, /*tp_new*/
  0, /*tp_free*/
  0, /*tp_is_gc*/
  0, /*tp_bases*/
  0, /*tp_mro*/
  0, /*tp_cache*/
  0, /*tp_subclasses*/
  0, /*tp_weaklist*/
  0, /*tp_del*/
  0, /*tp_version_tag*/
  #if PY_VERSION_HEX >= 0x030400a1
  0, /*tp_finalize*/
  #endif
  #if PY_VERSION_HEX >= 0x030800b1
  0, /*tp_vectorcall*/
  #endif
  #if PY_VERSION_HEX >= 0x030800b4 && PY_VERSION_HEX < 0x03090000
  0, /*tp_print*/
  #endif
};

static struct __pyx_obj_4grpc_7_cython_6cygrpc___pyx_scope_struct_28_stream_unary *__pyx_freelist_4grpc_7_cython_6cygrpc___pyx_scope_struct_28_stream_unary[8];
static int __pyx_freecount_4grpc_7_cython_6cygrpc___pyx_scope_struct_28_stream_unary = 0;

static PyObject *__pyx_tp_new_4grpc_7_cython_6cygrpc___pyx_scope_struct_28_stream_unary(PyTypeObject *t, CYTHON_UNUSED PyObject *a, CYTHON_UNUSED PyObject *k) {
  PyObject *o;
  if (CYTHON_COMPILING_IN_CPYTHON && likely((__pyx_freecount_4grpc_7_cython_6cygrpc___pyx_scope_struct_28_stream_unary > 0) & (t->tp_basicsize == sizeof(struct __pyx_obj_4grpc_7_cython_6cygrpc___pyx_scope_struct_28_stream_unary)))) {
    o = (PyObject*)__pyx_freelist_4grpc_7_cython_6cygrpc___pyx_scope_struct_28_stream_unary[--__pyx_freecount_4grpc_7_cython_6cygrpc___pyx_scope_struct_28_stream_unary];
    memset(o, 0, sizeof(struct __pyx_obj_4grpc_7_cython_6cygrpc___pyx_scope_struct_28_stream_unary));
    (void) PyObject_INIT(o, t);
    PyObject_GC_Track(o);
  } else {
    o = (*t->tp_alloc)(t, 0);
    if (unlikely(!o)) return 0;
  }
  return o;
}

static void __pyx_tp_dealloc_4grpc_7_cython_6cygrpc___pyx_scope_struct_28_stream_unary(PyObject *o) {
  struct __pyx_obj_4grpc_7_cython_6cygrpc___pyx_scope_struct_28_stream_unary *p = (struct __pyx_obj_4grpc_7_cython_6cygrpc___pyx_scope_struct_28_stream_unary *)o;
  PyObject_GC_UnTrack(o);
  Py_CLEAR(p->__pyx_v_inbound_ops);
  Py_CLEAR(p->__pyx_v_metadata_sent_observer);
  Py_CLEAR(p->__pyx_v_outbound_initial_metadata);
  Py_CLEAR(p->__pyx_v_receive_message_op);
  Py_CLEAR(p->__pyx_v_receive_status_on_client_op);
  Py_CLEAR(p->__pyx_v_self);
  Py_CLEAR(p->__pyx_t_0);
  Py_CLEAR(p->__pyx_t_1);
  Py_CLEAR(p->__pyx_t_2);
  Py_CLEAR(p->__pyx_t_3);
  Py_CLEAR(p->__pyx_t_4);
  Py_CLEAR(p->__pyx_t_5);
  if (CYTHON_COMPILING_IN_CPYTHON && ((__pyx_freecount_4grpc_7_cython_6cygrpc___pyx_scope_struct_28_stream_unary < 8) & (Py_TYPE(o)->tp_basicsize == sizeof(struct __pyx_obj_4grpc_7_cython_6cygrpc___pyx_scope_struct_28_stream_unary)))) {
    __pyx_freelist_4grpc_7_cython_6cygrpc___pyx_scope_struct_28_stream_unary[__pyx_freecount_4grpc_7_cython_6cygrpc___pyx_scope_struct_28_stream_unary++] = ((struct __pyx_obj_4grpc_7_cython_6cygrpc___pyx_scope_struct_28_stream_unary *)o);
  } else {
    (*Py_TYPE(o)->tp_free)(o);
  }
}

static int __pyx_tp_traverse_4grpc_7_cython_6cygrpc___pyx_scope_struct_28_stream_unary(PyObject *o, visitproc v, void *a) {
  int e;
  struct __pyx_obj_4grpc_7_cython_6cygrpc___pyx_scope_struct_28_stream_unary *p = (struct __pyx_obj_4grpc_7_cython_6cygrpc___pyx_scope_struct_28_stream_unary *)o;
  if (p->__pyx_v_inbound_ops) {
    e = (*v)(p->__pyx_v_inbound_ops, a); if (e) return e;
  }
  if (p->__pyx_v_metadata_sent_observer) {
    e = (*v)(p->__pyx_v_metadata_sent_observer, a); if (e) return e;
  }
  if (p->__pyx_v_outbound_initial_metadata) {
    e = (*v)(p->__pyx_v_outbound_initial_metadata, a); if (e) return e;
  }
  if (p->__pyx_v_receive_message_op) {
    e = (*v)(((PyObject *)p->__pyx_v_receive_message_op), a); if (e) return e;
  }
  if (p->__pyx_v_receive_status_on_client_op) {
    e = (*v)(((PyObject *)p->__pyx_v_receive_status_on_client_op), a); if (e) return e;
  }
  if (p->__pyx_v_self) {
    e = (*v)(((PyObject *)p->__pyx_v_self), a); if (e) return e;
  }
  if (p->__pyx_t_0) {
    e = (*v)(p->__pyx_t_0, a); if (e) return e;
  }
  if (p->__pyx_t_1) {
    e = (*v)(p->__pyx_t_1, a); if (e) return e;
  }
  if (p->__pyx_t_2) {
    e = (*v)(p->__pyx_t_2, a); if (e) return e;
  }
  if (p->__pyx_t_3) {
    e = (*v)(p->__pyx_t_3, a); if (e) return e;
  }
  if (p->__pyx_t_4) {
    e = (*v)(p->__pyx_t_4, a); if (e) return e;
  }
  if (p->__pyx_t_5) {
    e = (*v)(p->__pyx_t_5, a); if (e) return e;
  }
  return 0;
}

static PyTypeObject __pyx_type_4grpc_7_cython_6cygrpc___pyx_scope_struct_28_stream_unary = {
  PyVarObject_HEAD_INIT(0, 0)
  "grpc._cython.cygrpc.__pyx_scope_struct_28_stream_unary", /*tp_name*/
  sizeof(struct __pyx_obj_4grpc_7_cython_6cygrpc___pyx_scope_struct_28_stream_unary), /*tp_basicsize*/
  0, /*tp_itemsize*/
  __pyx_tp_dealloc_4grpc_7_cython_6cygrpc___pyx_scope_struct_28_stream_unary, /*tp_dealloc*/
  #if PY_VERSION_HEX < 0x030800b4
  0, /*tp_print*/
  #endif
  #if PY_VERSION_HEX >= 0x030800b4
  0, /*tp_vectorcall_offset*/
  #endif
  0, /*tp_getattr*/
  0, /*tp_setattr*/
  #if PY_MAJOR_VERSION < 3
  0, /*tp_compare*/
  #endif
  #if PY_MAJOR_VERSION >= 3
  0, /*tp_as_async*/
  #endif
  0, /*tp_repr*/
  0, /*tp_as_number*/
  0, /*tp_as_sequence*/
  0, /*tp_as_mapping*/
  0, /*tp_hash*/
  0, /*tp_call*/
  0, /*tp_str*/
  0, /*tp_getattro*/
  0, /*tp_setattro*/
  0, /*tp_as_buffer*/
  Py_TPFLAGS_DEFAULT|Py_TPFLAGS_HAVE_VERSION_TAG|Py_TPFLAGS_CHECKTYPES|Py_TPFLAGS_HAVE_NEWBUFFER|Py_TPFLAGS_HAVE_GC, /*tp_flags*/
  0, /*tp_doc*/
  __pyx_tp_traverse_4grpc_7_cython_6cygrpc___pyx_scope_struct_28_stream_unary, /*tp_traverse*/
  0, /*tp_clear*/
  0, /*tp_richcompare*/
  0, /*tp_weaklistoffset*/
  0, /*tp_iter*/
  0, /*tp_iternext*/
  0, /*tp_methods*/
  0, /*tp_members*/
  0, /*tp_getset*/
  0, /*tp_base*/
  0, /*tp_dict*/
  0, /*tp_descr_get*/
  0, /*tp_descr_set*/
  0, /*tp_dictoffset*/
  0, /*tp_init*/
  0, /*tp_alloc*/
  __pyx_tp_new_4grpc_7_cython_6cygrpc___pyx_scope_struct_28_stream_unary, /*tp_new*/
  0, /*tp_free*/
  0, /*tp_is_gc*/
  0, /*tp_bases*/
  0, /*tp_mro*/
  0, /*tp_cache*/
  0, /*tp_subclasses*/
  0, /*tp_weaklist*/
  0, /*tp_del*/
  0, /*tp_version_tag*/
  #if PY_VERSION_HEX >= 0x030400a1
  0, /*tp_finalize*/
  #endif
  #if PY_VERSION_HEX >= 0x030800b1
  0, /*tp_vectorcall*/
  #endif
  #if PY_VERSION_HEX >= 0x030800b4 && PY_VERSION_HEX < 0x03090000
  0, /*tp_print*/
  #endif
};

static struct __pyx_obj_4grpc_7_cython_6cygrpc___pyx_scope_struct_29_initiate_stream_stream *__pyx_freelist_4grpc_7_cython_6cygrpc___pyx_scope_struct_29_initiate_stream_stream[8];
static int __pyx_freecount_4grpc_7_cython_6cygrpc___pyx_scope_struct_29_initiate_stream_stream = 0;

static PyObject *__pyx_tp_new_4grpc_7_cython_6cygrpc___pyx_scope_struct_29_initiate_stream_stream(PyTypeObject *t, CYTHON_UNUSED PyObject *a, CYTHON_UNUSED PyObject *k) {
  PyObject *o;
  if (CYTHON_COMPILING_IN_CPYTHON && likely((__pyx_freecount_4grpc_7_cython_6cygrpc___pyx_scope_struct_29_initiate_stream_stream > 0) & (t->tp_basicsize == sizeof(struct __pyx_obj_4grpc_7_cython_6cygrpc___pyx_scope_struct_29_initiate_stream_stream)))) {
    o = (PyObject*)__pyx_freelist_4grpc_7_cython_6cygrpc___pyx_scope_struct_29_initiate_stream_stream[--__pyx_freecount_4grpc_7_cython_6cygrpc___pyx_scope_struct_29_initiate_stream_stream];
    memset(o, 0, sizeof(struct __pyx_obj_4grpc_7_cython_6cygrpc___pyx_scope_struct_29_initiate_stream_stream));
    (void) PyObject_INIT(o, t);
    PyObject_GC_Track(o);
  } else {
    o = (*t->tp_alloc)(t, 0);
    if (unlikely(!o)) return 0;
  }
  return o;
}

static void __pyx_tp_dealloc_4grpc_7_cython_6cygrpc___pyx_scope_struct_29_initiate_stream_stream(PyObject *o) {
  struct __pyx_obj_4grpc_7_cython_6cygrpc___pyx_scope_struct_29_initiate_stream_stream *p = (struct __pyx_obj_4grpc_7_cython_6cygrpc___pyx_scope_struct_29_initiate_stream_stream *)o;
  PyObject_GC_UnTrack(o);
  Py_CLEAR(p->__pyx_v_batch_error);
  Py_CLEAR(p->__pyx_v_metadata_sent_observer);
  Py_CLEAR(p->__pyx_v_outbound_initial_metadata);
  Py_CLEAR(p->__pyx_v_self);
  Py_CLEAR(p->__pyx_v_status_task);
  Py_CLEAR(p->__pyx_t_0);
  Py_CLEAR(p->__pyx_t_1);
  Py_CLEAR(p->__pyx_t_2);
  Py_CLEAR(p->__pyx_t_3);
  Py_CLEAR(p->__pyx_t_4);
  Py_CLEAR(p->__pyx_t_5);
  if (CYTHON_COMPILING_IN_CPYTHON && ((__pyx_freecount_4grpc_7_cython_6cygrpc___pyx_scope_struct_29_initiate_stream_stream < 8) & (Py_TYPE(o)->tp_basicsize == sizeof(struct __pyx_obj_4grpc_7_cython_6cygrpc___pyx_scope_struct_29_initiate_stream_stream)))) {
    __pyx_freelist_4grpc_7_cython_6cygrpc___pyx_scope_struct_29_initiate_stream_stream[__pyx_freecount_4grpc_7_cython_6cygrpc___pyx_scope_struct_29_initiate_stream_stream++] = ((struct __pyx_obj_4grpc_7_cython_6cygrpc___pyx_scope_struct_29_initiate_stream_stream *)o);
  } else {
    (*Py_TYPE(o)->tp_free)(o);
  }
}

static int __pyx_tp_traverse_4grpc_7_cython_6cygrpc___pyx_scope_struct_29_initiate_stream_stream(PyObject *o, visitproc v, void *a) {
  int e;
  struct __pyx_obj_4grpc_7_cython_6cygrpc___pyx_scope_struct_29_initiate_stream_stream *p = (struct __pyx_obj_4grpc_7_cython_6cygrpc___pyx_scope_struct_29_initiate_stream_stream *)o;
  if (p->__pyx_v_batch_error) {
    e = (*v)(p->__pyx_v_batch_error, a); if (e) return e;
  }
  if (p->__pyx_v_metadata_sent_observer) {
    e = (*v)(p->__pyx_v_metadata_sent_observer, a); if (e) return e;
  }
  if (p->__pyx_v_outbound_initial_metadata) {
    e = (*v)(p->__pyx_v_outbound_initial_metadata, a); if (e) return e;
  }
  if (p->__pyx_v_self) {
    e = (*v)(((PyObject *)p->__pyx_v_self), a); if (e) return e;
  }
  if (p->__pyx_v_status_task) {
    e = (*v)(p->__pyx_v_status_task, a); if (e) return e;
  }
  if (p->__pyx_t_0) {
    e = (*v)(p->__pyx_t_0, a); if (e) return e;
  }
  if (p->__pyx_t_1) {
    e = (*v)(p->__pyx_t_1, a); if (e) return e;
  }
  if (p->__pyx_t_2) {
    e = (*v)(p->__pyx_t_2, a); if (e) return e;
  }
  if (p->__pyx_t_3) {
    e = (*v)(p->__pyx_t_3, a); if (e) return e;
  }
  if (p->__pyx_t_4) {
    e = (*v)(p->__pyx_t_4, a); if (e) return e;
  }
  if (p->__pyx_t_5) {
    e = (*v)(p->__pyx_t_5, a); if (e) return e;
  }
  return 0;
}

static PyTypeObject __pyx_type_4grpc_7_cython_6cygrpc___pyx_scope_struct_29_initiate_stream_stream = {
  PyVarObject_HEAD_INIT(0, 0)
  "grpc._cython.cygrpc.__pyx_scope_struct_29_initiate_stream_stream", /*tp_name*/
  sizeof(struct __pyx_obj_4grpc_7_cython_6cygrpc___pyx_scope_struct_29_initiate_stream_stream), /*tp_basicsize*/
  0, /*tp_itemsize*/
  __pyx_tp_dealloc_4grpc_7_cython_6cygrpc___pyx_scope_struct_29_initiate_stream_stream, /*tp_dealloc*/
  #if PY_VERSION_HEX < 0x030800b4
  0, /*tp_print*/
  #endif
  #if PY_VERSION_HEX >= 0x030800b4
  0, /*tp_vectorcall_offset*/
  #endif
  0, /*tp_getattr*/
  0, /*tp_setattr*/
  #if PY_MAJOR_VERSION < 3
  0, /*tp_compare*/
  #endif
  #if PY_MAJOR_VERSION >= 3
  0, /*tp_as_async*/
  #endif
  0, /*tp_repr*/
  0, /*tp_as_number*/
  0, /*tp_as_sequence*/
  0, /*tp_as_mapping*/
  0, /*tp_hash*/
  0, /*tp_call*/
  0, /*tp_str*/
  0, /*tp_getattro*/
  0, /*tp_setattro*/
  0, /*tp_as_buffer*/
  Py_TPFLAGS_DEFAULT|Py_TPFLAGS_HAVE_VERSION_TAG|Py_TPFLAGS_CHECKTYPES|Py_TPFLAGS_HAVE_NEWBUFFER|Py_TPFLAGS_HAVE_GC, /*tp_flags*/
  0, /*tp_doc*/
  __pyx_tp_traverse_4grpc_7_cython_6cygrpc___pyx_scope_struct_29_initiate_stream_stream, /*tp_traverse*/
  0, /*tp_clear*/
  0, /*tp_richcompare*/
  0, /*tp_weaklistoffset*/
  0, /*tp_iter*/
  0, /*tp_iternext*/
  0, /*tp_methods*/
  0, /*tp_members*/
  0, /*tp_getset*/
  0, /*tp_base*/
  0, /*tp_dict*/
  0, /*tp_descr_get*/
  0, /*tp_descr_set*/
  0, /*tp_dictoffset*/
  0, /*tp_init*/
  0, /*tp_alloc*/
  __pyx_tp_new_4grpc_7_cython_6cygrpc___pyx_scope_struct_29_initiate_stream_stream, /*tp_new*/
  0, /*tp_free*/
  0, /*tp_is_gc*/
  0, /*tp_bases*/
  0, /*tp_mro*/
  0, /*tp_cache*/
  0, /*tp_subclasses*/
  0, /*tp_weaklist*/
  0, /*tp_del*/
  0, /*tp_version_tag*/
  #if PY_VERSION_HEX >= 0x030400a1
  0, /*tp_finalize*/
  #endif
  #if PY_VERSION_HEX >= 0x030800b1
  0, /*tp_vectorcall*/
  #endif
  #if PY_VERSION_HEX >= 0x030800b4 && PY_VERSION_HEX < 0x03090000
  0, /*tp_print*/
  #endif
};

static struct __pyx_obj_4grpc_7_cython_6cygrpc___pyx_scope_struct_30_watch_connectivity_state *__pyx_freelist_4grpc_7_cython_6cygrpc___pyx_scope_struct_30_watch_connectivity_state[8];
static int __pyx_freecount_4grpc_7_cython_6cygrpc___pyx_scope_struct_30_watch_connectivity_state = 0;

static PyObject *__pyx_tp_new_4grpc_7_cython_6cygrpc___pyx_scope_struct_30_watch_connectivity_state(PyTypeObject *t, CYTHON_UNUSED PyObject *a, CYTHON_UNUSED PyObject *k) {
  PyObject *o;
  if (CYTHON_COMPILING_IN_CPYTHON && likely((__pyx_freecount_4grpc_7_cython_6cygrpc___pyx_scope_struct_30_watch_connectivity_state > 0) & (t->tp_basicsize == sizeof(struct __pyx_obj_4grpc_7_cython_6cygrpc___pyx_scope_struct_30_watch_connectivity_state)))) {
    o = (PyObject*)__pyx_freelist_4grpc_7_cython_6cygrpc___pyx_scope_struct_30_watch_connectivity_state[--__pyx_freecount_4grpc_7_cython_6cygrpc___pyx_scope_struct_30_watch_connectivity_state];
    memset(o, 0, sizeof(struct __pyx_obj_4grpc_7_cython_6cygrpc___pyx_scope_struct_30_watch_connectivity_state));
    (void) PyObject_INIT(o, t);
    PyObject_GC_Track(o);
  } else {
    o = (*t->tp_alloc)(t, 0);
    if (unlikely(!o)) return 0;
  }
  return o;
}

static void __pyx_tp_dealloc_4grpc_7_cython_6cygrpc___pyx_scope_struct_30_watch_connectivity_state(PyObject *o) {
  struct __pyx_obj_4grpc_7_cython_6cygrpc___pyx_scope_struct_30_watch_connectivity_state *p = (struct __pyx_obj_4grpc_7_cython_6cygrpc___pyx_scope_struct_30_watch_connectivity_state *)o;
  PyObject_GC_UnTrack(o);
  Py_CLEAR(p->__pyx_v_deadline);
  Py_CLEAR(p->__pyx_v_future);
  Py_CLEAR(p->__pyx_v_self);
  Py_CLEAR(p->__pyx_v_wrapper);
  Py_CLEAR(p->__pyx_t_0);
  Py_CLEAR(p->__pyx_t_1);
  Py_CLEAR(p->__pyx_t_2);
  if (CYTHON_COMPILING_IN_CPYTHON && ((__pyx_freecount_4grpc_7_cython_6cygrpc___pyx_scope_struct_30_watch_connectivity_state < 8) & (Py_TYPE(o)->tp_basicsize == sizeof(struct __pyx_obj_4grpc_7_cython_6cygrpc___pyx_scope_struct_30_watch_connectivity_state)))) {
    __pyx_freelist_4grpc_7_cython_6cygrpc___pyx_scope_struct_30_watch_connectivity_state[__pyx_freecount_4grpc_7_cython_6cygrpc___pyx_scope_struct_30_watch_connectivity_state++] = ((struct __pyx_obj_4grpc_7_cython_6cygrpc___pyx_scope_struct_30_watch_connectivity_state *)o);
  } else {
    (*Py_TYPE(o)->tp_free)(o);
  }
}

static int __pyx_tp_traverse_4grpc_7_cython_6cygrpc___pyx_scope_struct_30_watch_connectivity_state(PyObject *o, visitproc v, void *a) {
  int e;
  struct __pyx_obj_4grpc_7_cython_6cygrpc___pyx_scope_struct_30_watch_connectivity_state *p = (struct __pyx_obj_4grpc_7_cython_6cygrpc___pyx_scope_struct_30_watch_connectivity_state *)o;
  if (p->__pyx_v_deadline) {
    e = (*v)(p->__pyx_v_deadline, a); if (e) return e;
  }
  if (p->__pyx_v_future) {
    e = (*v)(p->__pyx_v_future, a); if (e) return e;
  }
  if (p->__pyx_v_self) {
    e = (*v)(((PyObject *)p->__pyx_v_self), a); if (e) return e;
  }
  if (p->__pyx_v_wrapper) {
    e = (*v)(((PyObject *)p->__pyx_v_wrapper), a); if (e) return e;
  }
  if (p->__pyx_t_0) {
    e = (*v)(p->__pyx_t_0, a); if (e) return e;
  }
  if (p->__pyx_t_1) {
    e = (*v)(p->__pyx_t_1, a); if (e) return e;
  }
  if (p->__pyx_t_2) {
    e = (*v)(p->__pyx_t_2, a); if (e) return e;
  }
  return 0;
}

static PyTypeObject __pyx_type_4grpc_7_cython_6cygrpc___pyx_scope_struct_30_watch_connectivity_state = {
  PyVarObject_HEAD_INIT(0, 0)
  "grpc._cython.cygrpc.__pyx_scope_struct_30_watch_connectivity_state", /*tp_name*/
  sizeof(struct __pyx_obj_4grpc_7_cython_6cygrpc___pyx_scope_struct_30_watch_connectivity_state), /*tp_basicsize*/
  0, /*tp_itemsize*/
  __pyx_tp_dealloc_4grpc_7_cython_6cygrpc___pyx_scope_struct_30_watch_connectivity_state, /*tp_dealloc*/
  #if PY_VERSION_HEX < 0x030800b4
  0, /*tp_print*/
  #endif
  #if PY_VERSION_HEX >= 0x030800b4
  0, /*tp_vectorcall_offset*/
  #endif
  0, /*tp_getattr*/
  0, /*tp_setattr*/
  #if PY_MAJOR_VERSION < 3
  0, /*tp_compare*/
  #endif
  #if PY_MAJOR_VERSION >= 3
  0, /*tp_as_async*/
  #endif
  0, /*tp_repr*/
  0, /*tp_as_number*/
  0, /*tp_as_sequence*/
  0, /*tp_as_mapping*/
  0, /*tp_hash*/
  0, /*tp_call*/
  0, /*tp_str*/
  0, /*tp_getattro*/
  0, /*tp_setattro*/
  0, /*tp_as_buffer*/
  Py_TPFLAGS_DEFAULT|Py_TPFLAGS_HAVE_VERSION_TAG|Py_TPFLAGS_CHECKTYPES|Py_TPFLAGS_HAVE_NEWBUFFER|Py_TPFLAGS_HAVE_GC, /*tp_flags*/
  0, /*tp_doc*/
  __pyx_tp_traverse_4grpc_7_cython_6cygrpc___pyx_scope_struct_30_watch_connectivity_state, /*tp_traverse*/
  0, /*tp_clear*/
  0, /*tp_richcompare*/
  0, /*tp_weaklistoffset*/
  0, /*tp_iter*/
  0, /*tp_iternext*/
  0, /*tp_methods*/
  0, /*tp_members*/
  0, /*tp_getset*/
  0, /*tp_base*/
  0, /*tp_dict*/
  0, /*tp_descr_get*/
  0, /*tp_descr_set*/
  0, /*tp_dictoffset*/
  0, /*tp_init*/
  0, /*tp_alloc*/
  __pyx_tp_new_4grpc_7_cython_6cygrpc___pyx_scope_struct_30_watch_connectivity_state, /*tp_new*/
  0, /*tp_free*/
  0, /*tp_is_gc*/
  0, /*tp_bases*/
  0, /*tp_mro*/
  0, /*tp_cache*/
  0, /*tp_subclasses*/
  0, /*tp_weaklist*/
  0, /*tp_del*/
  0, /*tp_version_tag*/
  #if PY_VERSION_HEX >= 0x030400a1
  0, /*tp_finalize*/
  #endif
  #if PY_VERSION_HEX >= 0x030800b1
  0, /*tp_vectorcall*/
  #endif
  #if PY_VERSION_HEX >= 0x030800b4 && PY_VERSION_HEX < 0x03090000
  0, /*tp_print*/
  #endif
};

static struct __pyx_obj_4grpc_7_cython_6cygrpc___pyx_scope_struct_31_read *__pyx_freelist_4grpc_7_cython_6cygrpc___pyx_scope_struct_31_read[8];
static int __pyx_freecount_4grpc_7_cython_6cygrpc___pyx_scope_struct_31_read = 0;

static PyObject *__pyx_tp_new_4grpc_7_cython_6cygrpc___pyx_scope_struct_31_read(PyTypeObject *t, CYTHON_UNUSED PyObject *a, CYTHON_UNUSED PyObject *k) {
  PyObject *o;
  if (CYTHON_COMPILING_IN_CPYTHON && likely((__pyx_freecount_4grpc_7_cython_6cygrpc___pyx_scope_struct_31_read > 0) & (t->tp_basicsize == sizeof(struct __pyx_obj_4grpc_7_cython_6cygrpc___pyx_scope_struct_31_read)))) {
    o = (PyObject*)__pyx_freelist_4grpc_7_cython_6cygrpc___pyx_scope_struct_31_read[--__pyx_freecount_4grpc_7_cython_6cygrpc___pyx_scope_struct_31_read];
    memset(o, 0, sizeof(struct __pyx_obj_4grpc_7_cython_6cygrpc___pyx_scope_struct_31_read));
    (void) PyObject_INIT(o, t);
    PyObject_GC_Track(o);
  } else {
    o = (*t->tp_alloc)(t, 0);
    if (unlikely(!o)) return 0;
  }
  return o;
}

static void __pyx_tp_dealloc_4grpc_7_cython_6cygrpc___pyx_scope_struct_31_read(PyObject *o) {
  struct __pyx_obj_4grpc_7_cython_6cygrpc___pyx_scope_struct_31_read *p = (struct __pyx_obj_4grpc_7_cython_6cygrpc___pyx_scope_struct_31_read *)o;
  PyObject_GC_UnTrack(o);
  Py_CLEAR(p->__pyx_v_raw_message);
  Py_CLEAR(p->__pyx_v_self);
  if (CYTHON_COMPILING_IN_CPYTHON && ((__pyx_freecount_4grpc_7_cython_6cygrpc___pyx_scope_struct_31_read < 8) & (Py_TYPE(o)->tp_basicsize == sizeof(struct __pyx_obj_4grpc_7_cython_6cygrpc___pyx_scope_struct_31_read)))) {
    __pyx_freelist_4grpc_7_cython_6cygrpc___pyx_scope_struct_31_read[__pyx_freecount_4grpc_7_cython_6cygrpc___pyx_scope_struct_31_read++] = ((struct __pyx_obj_4grpc_7_cython_6cygrpc___pyx_scope_struct_31_read *)o);
  } else {
    (*Py_TYPE(o)->tp_free)(o);
  }
}

static int __pyx_tp_traverse_4grpc_7_cython_6cygrpc___pyx_scope_struct_31_read(PyObject *o, visitproc v, void *a) {
  int e;
  struct __pyx_obj_4grpc_7_cython_6cygrpc___pyx_scope_struct_31_read *p = (struct __pyx_obj_4grpc_7_cython_6cygrpc___pyx_scope_struct_31_read *)o;
  if (p->__pyx_v_self) {
    e = (*v)(((PyObject *)p->__pyx_v_self), a); if (e) return e;
  }
  return 0;
}

static PyTypeObject __pyx_type_4grpc_7_cython_6cygrpc___pyx_scope_struct_31_read = {
  PyVarObject_HEAD_INIT(0, 0)
  "grpc._cython.cygrpc.__pyx_scope_struct_31_read", /*tp_name*/
  sizeof(struct __pyx_obj_4grpc_7_cython_6cygrpc___pyx_scope_struct_31_read), /*tp_basicsize*/
  0, /*tp_itemsize*/
  __pyx_tp_dealloc_4grpc_7_cython_6cygrpc___pyx_scope_struct_31_read, /*tp_dealloc*/
  #if PY_VERSION_HEX < 0x030800b4
  0, /*tp_print*/
  #endif
  #if PY_VERSION_HEX >= 0x030800b4
  0, /*tp_vectorcall_offset*/
  #endif
  0, /*tp_getattr*/
  0, /*tp_setattr*/
  #if PY_MAJOR_VERSION < 3
  0, /*tp_compare*/
  #endif
  #if PY_MAJOR_VERSION >= 3
  0, /*tp_as_async*/
  #endif
  0, /*tp_repr*/
  0, /*tp_as_number*/
  0, /*tp_as_sequence*/
  0, /*tp_as_mapping*/
  0, /*tp_hash*/
  0, /*tp_call*/
  0, /*tp_str*/
  0, /*tp_getattro*/
  0, /*tp_setattro*/
  0, /*tp_as_buffer*/
  Py_TPFLAGS_DEFAULT|Py_TPFLAGS_HAVE_VERSION_TAG|Py_TPFLAGS_CHECKTYPES|Py_TPFLAGS_HAVE_NEWBUFFER|Py_TPFLAGS_HAVE_GC, /*tp_flags*/
  0, /*tp_doc*/
  __pyx_tp_traverse_4grpc_7_cython_6cygrpc___pyx_scope_struct_31_read, /*tp_traverse*/
  0, /*tp_clear*/
  0, /*tp_richcompare*/
  0, /*tp_weaklistoffset*/
  0, /*tp_iter*/
  0, /*tp_iternext*/
  0, /*tp_methods*/
  0, /*tp_members*/
  0, /*tp_getset*/
  0, /*tp_base*/
  0, /*tp_dict*/
  0, /*tp_descr_get*/
  0, /*tp_descr_set*/
  0, /*tp_dictoffset*/
  0, /*tp_init*/
  0, /*tp_alloc*/
  __pyx_tp_new_4grpc_7_cython_6cygrpc___pyx_scope_struct_31_read, /*tp_new*/
  0, /*tp_free*/
  0, /*tp_is_gc*/
  0, /*tp_bases*/
  0, /*tp_mro*/
  0, /*tp_cache*/
  0, /*tp_subclasses*/
  0, /*tp_weaklist*/
  0, /*tp_del*/
  0, /*tp_version_tag*/
  #if PY_VERSION_HEX >= 0x030400a1
  0, /*tp_finalize*/
  #endif
  #if PY_VERSION_HEX >= 0x030800b1
  0, /*tp_vectorcall*/
  #endif
  #if PY_VERSION_HEX >= 0x030800b4 && PY_VERSION_HEX < 0x03090000
  0, /*tp_print*/
  #endif
};

static struct __pyx_obj_4grpc_7_cython_6cygrpc___pyx_scope_struct_32_write *__pyx_freelist_4grpc_7_cython_6cygrpc___pyx_scope_struct_32_write[8];
static int __pyx_freecount_4grpc_7_cython_6cygrpc___pyx_scope_struct_32_write = 0;

static PyObject *__pyx_tp_new_4grpc_7_cython_6cygrpc___pyx_scope_struct_32_write(PyTypeObject *t, CYTHON_UNUSED PyObject *a, CYTHON_UNUSED PyObject *k) {
  PyObject *o;
  if (CYTHON_COMPILING_IN_CPYTHON && likely((__pyx_freecount_4grpc_7_cython_6cygrpc___pyx_scope_struct_32_write > 0) & (t->tp_basicsize == sizeof(struct __pyx_obj_4grpc_7_cython_6cygrpc___pyx_scope_struct_32_write)))) {
    o = (PyObject*)__pyx_freelist_4grpc_7_cython_6cygrpc___pyx_scope_struct_32_write[--__pyx_freecount_4grpc_7_cython_6cygrpc___pyx_scope_struct_32_write];
    memset(o, 0, sizeof(struct __pyx_obj_4grpc_7_cython_6cygrpc___pyx_scope_struct_32_write));
    (void) PyObject_INIT(o, t);
    PyObject_GC_Track(o);
  } else {
    o = (*t->tp_alloc)(t, 0);
    if (unlikely(!o)) return 0;
  }
  return o;
}

static void __pyx_tp_dealloc_4grpc_7_cython_6cygrpc___pyx_scope_struct_32_write(PyObject *o) {
  struct __pyx_obj_4grpc_7_cython_6cygrpc___pyx_scope_struct_32_write *p = (struct __pyx_obj_4grpc_7_cython_6cygrpc___pyx_scope_struct_32_write *)o;
  PyObject_GC_UnTrack(o);
  Py_CLEAR(p->__pyx_v_message);
  Py_CLEAR(p->__pyx_v_self);
  if (CYTHON_COMPILING_IN_CPYTHON && ((__pyx_freecount_4grpc_7_cython_6cygrpc___pyx_scope_struct_32_write < 8) & (Py_TYPE(o)->tp_basicsize == sizeof(struct __pyx_obj_4grpc_7_cython_6cygrpc___pyx_scope_struct_32_write)))) {
    __pyx_freelist_4grpc_7_cython_6cygrpc___pyx_scope_struct_32_write[__pyx_freecount_4grpc_7_cython_6cygrpc___pyx_scope_struct_32_write++] = ((struct __pyx_obj_4grpc_7_cython_6cygrpc___pyx_scope_struct_32_write *)o);
  } else {
    (*Py_TYPE(o)->tp_free)(o);
  }
}

static int __pyx_tp_traverse_4grpc_7_cython_6cygrpc___pyx_scope_struct_32_write(PyObject *o, visitproc v, void *a) {
  int e;
  struct __pyx_obj_4grpc_7_cython_6cygrpc___pyx_scope_struct_32_write *p = (struct __pyx_obj_4grpc_7_cython_6cygrpc___pyx_scope_struct_32_write *)o;
  if (p->__pyx_v_message) {
    e = (*v)(p->__pyx_v_message, a); if (e) return e;
  }
  if (p->__pyx_v_self) {
    e = (*v)(((PyObject *)p->__pyx_v_self), a); if (e) return e;
  }
  return 0;
}

static PyTypeObject __pyx_type_4grpc_7_cython_6cygrpc___pyx_scope_struct_32_write = {
  PyVarObject_HEAD_INIT(0, 0)
  "grpc._cython.cygrpc.__pyx_scope_struct_32_write", /*tp_name*/
  sizeof(struct __pyx_obj_4grpc_7_cython_6cygrpc___pyx_scope_struct_32_write), /*tp_basicsize*/
  0, /*tp_itemsize*/
  __pyx_tp_dealloc_4grpc_7_cython_6cygrpc___pyx_scope_struct_32_write, /*tp_dealloc*/
  #if PY_VERSION_HEX < 0x030800b4
  0, /*tp_print*/
  #endif
  #if PY_VERSION_HEX >= 0x030800b4
  0, /*tp_vectorcall_offset*/
  #endif
  0, /*tp_getattr*/
  0, /*tp_setattr*/
  #if PY_MAJOR_VERSION < 3
  0, /*tp_compare*/
  #endif
  #if PY_MAJOR_VERSION >= 3
  0, /*tp_as_async*/
  #endif
  0, /*tp_repr*/
  0, /*tp_as_number*/
  0, /*tp_as_sequence*/
  0, /*tp_as_mapping*/
  0, /*tp_hash*/
  0, /*tp_call*/
  0, /*tp_str*/
  0, /*tp_getattro*/
  0, /*tp_setattro*/
  0, /*tp_as_buffer*/
  Py_TPFLAGS_DEFAULT|Py_TPFLAGS_HAVE_VERSION_TAG|Py_TPFLAGS_CHECKTYPES|Py_TPFLAGS_HAVE_NEWBUFFER|Py_TPFLAGS_HAVE_GC, /*tp_flags*/
  0, /*tp_doc*/
  __pyx_tp_traverse_4grpc_7_cython_6cygrpc___pyx_scope_struct_32_write, /*tp_traverse*/
  0, /*tp_clear*/
  0, /*tp_richcompare*/
  0, /*tp_weaklistoffset*/
  0, /*tp_iter*/
  0, /*tp_iternext*/
  0, /*tp_methods*/
  0, /*tp_members*/
  0, /*tp_getset*/
  0, /*tp_base*/
  0, /*tp_dict*/
  0, /*tp_descr_get*/
  0, /*tp_descr_set*/
  0, /*tp_dictoffset*/
  0, /*tp_init*/
  0, /*tp_alloc*/
  __pyx_tp_new_4grpc_7_cython_6cygrpc___pyx_scope_struct_32_write, /*tp_new*/
  0, /*tp_free*/
  0, /*tp_is_gc*/
  0, /*tp_bases*/
  0, /*tp_mro*/
  0, /*tp_cache*/
  0, /*tp_subclasses*/
  0, /*tp_weaklist*/
  0, /*tp_del*/
  0, /*tp_version_tag*/
  #if PY_VERSION_HEX >= 0x030400a1
  0, /*tp_finalize*/
  #endif
  #if PY_VERSION_HEX >= 0x030800b1
  0, /*tp_vectorcall*/
  #endif
  #if PY_VERSION_HEX >= 0x030800b4 && PY_VERSION_HEX < 0x03090000
  0, /*tp_print*/
  #endif
};

static struct __pyx_obj_4grpc_7_cython_6cygrpc___pyx_scope_struct_33_send_initial_metadata *__pyx_freelist_4grpc_7_cython_6cygrpc___pyx_scope_struct_33_send_initial_metadata[8];
static int __pyx_freecount_4grpc_7_cython_6cygrpc___pyx_scope_struct_33_send_initial_metadata = 0;

static PyObject *__pyx_tp_new_4grpc_7_cython_6cygrpc___pyx_scope_struct_33_send_initial_metadata(PyTypeObject *t, CYTHON_UNUSED PyObject *a, CYTHON_UNUSED PyObject *k) {
  PyObject *o;
  if (CYTHON_COMPILING_IN_CPYTHON && likely((__pyx_freecount_4grpc_7_cython_6cygrpc___pyx_scope_struct_33_send_initial_metadata > 0) & (t->tp_basicsize == sizeof(struct __pyx_obj_4grpc_7_cython_6cygrpc___pyx_scope_struct_33_send_initial_metadata)))) {
    o = (PyObject*)__pyx_freelist_4grpc_7_cython_6cygrpc___pyx_scope_struct_33_send_initial_metadata[--__pyx_freecount_4grpc_7_cython_6cygrpc___pyx_scope_struct_33_send_initial_metadata];
    memset(o, 0, sizeof(struct __pyx_obj_4grpc_7_cython_6cygrpc___pyx_scope_struct_33_send_initial_metadata));
    (void) PyObject_INIT(o, t);
    PyObject_GC_Track(o);
  } else {
    o = (*t->tp_alloc)(t, 0);
    if (unlikely(!o)) return 0;
  }
  return o;
}

static void __pyx_tp_dealloc_4grpc_7_cython_6cygrpc___pyx_scope_struct_33_send_initial_metadata(PyObject *o) {
  struct __pyx_obj_4grpc_7_cython_6cygrpc___pyx_scope_struct_33_send_initial_metadata *p = (struct __pyx_obj_4grpc_7_cython_6cygrpc___pyx_scope_struct_33_send_initial_metadata *)o;
  PyObject_GC_UnTrack(o);
  Py_CLEAR(p->__pyx_v_metadata);
  Py_CLEAR(p->__pyx_v_self);
  if (CYTHON_COMPILING_IN_CPYTHON && ((__pyx_freecount_4grpc_7_cython_6cygrpc___pyx_scope_struct_33_send_initial_metadata < 8) & (Py_TYPE(o)->tp_basicsize == sizeof(struct __pyx_obj_4grpc_7_cython_6cygrpc___pyx_scope_struct_33_send_initial_metadata)))) {
    __pyx_freelist_4grpc_7_cython_6cygrpc___pyx_scope_struct_33_send_initial_metadata[__pyx_freecount_4grpc_7_cython_6cygrpc___pyx_scope_struct_33_send_initial_metadata++] = ((struct __pyx_obj_4grpc_7_cython_6cygrpc___pyx_scope_struct_33_send_initial_metadata *)o);
  } else {
    (*Py_TYPE(o)->tp_free)(o);
  }
}

static int __pyx_tp_traverse_4grpc_7_cython_6cygrpc___pyx_scope_struct_33_send_initial_metadata(PyObject *o, visitproc v, void *a) {
  int e;
  struct __pyx_obj_4grpc_7_cython_6cygrpc___pyx_scope_struct_33_send_initial_metadata *p = (struct __pyx_obj_4grpc_7_cython_6cygrpc___pyx_scope_struct_33_send_initial_metadata *)o;
  if (p->__pyx_v_metadata) {
    e = (*v)(p->__pyx_v_metadata, a); if (e) return e;
  }
  if (p->__pyx_v_self) {
    e = (*v)(((PyObject *)p->__pyx_v_self), a); if (e) return e;
  }
  return 0;
}

static PyTypeObject __pyx_type_4grpc_7_cython_6cygrpc___pyx_scope_struct_33_send_initial_metadata = {
  PyVarObject_HEAD_INIT(0, 0)
  "grpc._cython.cygrpc.__pyx_scope_struct_33_send_initial_metadata", /*tp_name*/
  sizeof(struct __pyx_obj_4grpc_7_cython_6cygrpc___pyx_scope_struct_33_send_initial_metadata), /*tp_basicsize*/
  0, /*tp_itemsize*/
  __pyx_tp_dealloc_4grpc_7_cython_6cygrpc___pyx_scope_struct_33_send_initial_metadata, /*tp_dealloc*/
  #if PY_VERSION_HEX < 0x030800b4
  0, /*tp_print*/
  #endif
  #if PY_VERSION_HEX >= 0x030800b4
  0, /*tp_vectorcall_offset*/
  #endif
  0, /*tp_getattr*/
  0, /*tp_setattr*/
  #if PY_MAJOR_VERSION < 3
  0, /*tp_compare*/
  #endif
  #if PY_MAJOR_VERSION >= 3
  0, /*tp_as_async*/
  #endif
  0, /*tp_repr*/
  0, /*tp_as_number*/
  0, /*tp_as_sequence*/
  0, /*tp_as_mapping*/
  0, /*tp_hash*/
  0, /*tp_call*/
  0, /*tp_str*/
  0, /*tp_getattro*/
  0, /*tp_setattro*/
  0, /*tp_as_buffer*/
  Py_TPFLAGS_DEFAULT|Py_TPFLAGS_HAVE_VERSION_TAG|Py_TPFLAGS_CHECKTYPES|Py_TPFLAGS_HAVE_NEWBUFFER|Py_TPFLAGS_HAVE_GC, /*tp_flags*/
  0, /*tp_doc*/
  __pyx_tp_traverse_4grpc_7_cython_6cygrpc___pyx_scope_struct_33_send_initial_metadata, /*tp_traverse*/
  0, /*tp_clear*/
  0, /*tp_richcompare*/
  0, /*tp_weaklistoffset*/
  0, /*tp_iter*/
  0, /*tp_iternext*/
  0, /*tp_methods*/
  0, /*tp_members*/
  0, /*tp_getset*/
  0, /*tp_base*/
  0, /*tp_dict*/
  0, /*tp_descr_get*/
  0, /*tp_descr_set*/
  0, /*tp_dictoffset*/
  0, /*tp_init*/
  0, /*tp_alloc*/
  __pyx_tp_new_4grpc_7_cython_6cygrpc___pyx_scope_struct_33_send_initial_metadata, /*tp_new*/
  0, /*tp_free*/
  0, /*tp_is_gc*/
  0, /*tp_bases*/
  0, /*tp_mro*/
  0, /*tp_cache*/
  0, /*tp_subclasses*/
  0, /*tp_weaklist*/
  0, /*tp_del*/
  0, /*tp_version_tag*/
  #if PY_VERSION_HEX >= 0x030400a1
  0, /*tp_finalize*/
  #endif
  #if PY_VERSION_HEX >= 0x030800b1
  0, /*tp_vectorcall*/
  #endif
  #if PY_VERSION_HEX >= 0x030800b4 && PY_VERSION_HEX < 0x03090000
  0, /*tp_print*/
  #endif
};

static struct __pyx_obj_4grpc_7_cython_6cygrpc___pyx_scope_struct_34_abort *__pyx_freelist_4grpc_7_cython_6cygrpc___pyx_scope_struct_34_abort[8];
static int __pyx_freecount_4grpc_7_cython_6cygrpc___pyx_scope_struct_34_abort = 0;

static PyObject *__pyx_tp_new_4grpc_7_cython_6cygrpc___pyx_scope_struct_34_abort(PyTypeObject *t, CYTHON_UNUSED PyObject *a, CYTHON_UNUSED PyObject *k) {
  PyObject *o;
  if (CYTHON_COMPILING_IN_CPYTHON && likely((__pyx_freecount_4grpc_7_cython_6cygrpc___pyx_scope_struct_34_abort > 0) & (t->tp_basicsize == sizeof(struct __pyx_obj_4grpc_7_cython_6cygrpc___pyx_scope_struct_34_abort)))) {
    o = (PyObject*)__pyx_freelist_4grpc_7_cython_6cygrpc___pyx_scope_struct_34_abort[--__pyx_freecount_4grpc_7_cython_6cygrpc___pyx_scope_struct_34_abort];
    memset(o, 0, sizeof(struct __pyx_obj_4grpc_7_cython_6cygrpc___pyx_scope_struct_34_abort));
    (void) PyObject_INIT(o, t);
    PyObject_GC_Track(o);
  } else {
    o = (*t->tp_alloc)(t, 0);
    if (unlikely(!o)) return 0;
  }
  return o;
}

static void __pyx_tp_dealloc_4grpc_7_cython_6cygrpc___pyx_scope_struct_34_abort(PyObject *o) {
  struct __pyx_obj_4grpc_7_cython_6cygrpc___pyx_scope_struct_34_abort *p = (struct __pyx_obj_4grpc_7_cython_6cygrpc___pyx_scope_struct_34_abort *)o;
  PyObject_GC_UnTrack(o);
  Py_CLEAR(p->__pyx_v_code);
  Py_CLEAR(p->__pyx_v_details);
  Py_CLEAR(p->__pyx_v_self);
  Py_CLEAR(p->__pyx_v_trailing_metadata);
  if (CYTHON_COMPILING_IN_CPYTHON && ((__pyx_freecount_4grpc_7_cython_6cygrpc___pyx_scope_struct_34_abort < 8) & (Py_TYPE(o)->tp_basicsize == sizeof(struct __pyx_obj_4grpc_7_cython_6cygrpc___pyx_scope_struct_34_abort)))) {
    __pyx_freelist_4grpc_7_cython_6cygrpc___pyx_scope_struct_34_abort[__pyx_freecount_4grpc_7_cython_6cygrpc___pyx_scope_struct_34_abort++] = ((struct __pyx_obj_4grpc_7_cython_6cygrpc___pyx_scope_struct_34_abort *)o);
  } else {
    (*Py_TYPE(o)->tp_free)(o);
  }
}

static int __pyx_tp_traverse_4grpc_7_cython_6cygrpc___pyx_scope_struct_34_abort(PyObject *o, visitproc v, void *a) {
  int e;
  struct __pyx_obj_4grpc_7_cython_6cygrpc___pyx_scope_struct_34_abort *p = (struct __pyx_obj_4grpc_7_cython_6cygrpc___pyx_scope_struct_34_abort *)o;
  if (p->__pyx_v_code) {
    e = (*v)(p->__pyx_v_code, a); if (e) return e;
  }
  if (p->__pyx_v_self) {
    e = (*v)(((PyObject *)p->__pyx_v_self), a); if (e) return e;
  }
  if (p->__pyx_v_trailing_metadata) {
    e = (*v)(p->__pyx_v_trailing_metadata, a); if (e) return e;
  }
  return 0;
}

static PyTypeObject __pyx_type_4grpc_7_cython_6cygrpc___pyx_scope_struct_34_abort = {
  PyVarObject_HEAD_INIT(0, 0)
  "grpc._cython.cygrpc.__pyx_scope_struct_34_abort", /*tp_name*/
  sizeof(struct __pyx_obj_4grpc_7_cython_6cygrpc___pyx_scope_struct_34_abort), /*tp_basicsize*/
  0, /*tp_itemsize*/
  __pyx_tp_dealloc_4grpc_7_cython_6cygrpc___pyx_scope_struct_34_abort, /*tp_dealloc*/
  #if PY_VERSION_HEX < 0x030800b4
  0, /*tp_print*/
  #endif
  #if PY_VERSION_HEX >= 0x030800b4
  0, /*tp_vectorcall_offset*/
  #endif
  0, /*tp_getattr*/
  0, /*tp_setattr*/
  #if PY_MAJOR_VERSION < 3
  0, /*tp_compare*/
  #endif
  #if PY_MAJOR_VERSION >= 3
  0, /*tp_as_async*/
  #endif
  0, /*tp_repr*/
  0, /*tp_as_number*/
  0, /*tp_as_sequence*/
  0, /*tp_as_mapping*/
  0, /*tp_hash*/
  0, /*tp_call*/
  0, /*tp_str*/
  0, /*tp_getattro*/
  0, /*tp_setattro*/
  0, /*tp_as_buffer*/
  Py_TPFLAGS_DEFAULT|Py_TPFLAGS_HAVE_VERSION_TAG|Py_TPFLAGS_CHECKTYPES|Py_TPFLAGS_HAVE_NEWBUFFER|Py_TPFLAGS_HAVE_GC, /*tp_flags*/
  0, /*tp_doc*/
  __pyx_tp_traverse_4grpc_7_cython_6cygrpc___pyx_scope_struct_34_abort, /*tp_traverse*/
  0, /*tp_clear*/
  0, /*tp_richcompare*/
  0, /*tp_weaklistoffset*/
  0, /*tp_iter*/
  0, /*tp_iternext*/
  0, /*tp_methods*/
  0, /*tp_members*/
  0, /*tp_getset*/
  0, /*tp_base*/
  0, /*tp_dict*/
  0, /*tp_descr_get*/
  0, /*tp_descr_set*/
  0, /*tp_dictoffset*/
  0, /*tp_init*/
  0, /*tp_alloc*/
  __pyx_tp_new_4grpc_7_cython_6cygrpc___pyx_scope_struct_34_abort, /*tp_new*/
  0, /*tp_free*/
  0, /*tp_is_gc*/
  0, /*tp_bases*/
  0, /*tp_mro*/
  0, /*tp_cache*/
  0, /*tp_subclasses*/
  0, /*tp_weaklist*/
  0, /*tp_del*/
  0, /*tp_version_tag*/
  #if PY_VERSION_HEX >= 0x030400a1
  0, /*tp_finalize*/
  #endif
  #if PY_VERSION_HEX >= 0x030800b1
  0, /*tp_vectorcall*/
  #endif
  #if PY_VERSION_HEX >= 0x030800b4 && PY_VERSION_HEX < 0x03090000
  0, /*tp_print*/
  #endif
};

static struct __pyx_obj_4grpc_7_cython_6cygrpc___pyx_scope_struct_35_abort_with_status *__pyx_freelist_4grpc_7_cython_6cygrpc___pyx_scope_struct_35_abort_with_status[8];
static int __pyx_freecount_4grpc_7_cython_6cygrpc___pyx_scope_struct_35_abort_with_status = 0;

static PyObject *__pyx_tp_new_4grpc_7_cython_6cygrpc___pyx_scope_struct_35_abort_with_status(PyTypeObject *t, CYTHON_UNUSED PyObject *a, CYTHON_UNUSED PyObject *k) {
  PyObject *o;
  if (CYTHON_COMPILING_IN_CPYTHON && likely((__pyx_freecount_4grpc_7_cython_6cygrpc___pyx_scope_struct_35_abort_with_status > 0) & (t->tp_basicsize == sizeof(struct __pyx_obj_4grpc_7_cython_6cygrpc___pyx_scope_struct_35_abort_with_status)))) {
    o = (PyObject*)__pyx_freelist_4grpc_7_cython_6cygrpc___pyx_scope_struct_35_abort_with_status[--__pyx_freecount_4grpc_7_cython_6cygrpc___pyx_scope_struct_35_abort_with_status];
    memset(o, 0, sizeof(struct __pyx_obj_4grpc_7_cython_6cygrpc___pyx_scope_struct_35_abort_with_status));
    (void) PyObject_INIT(o, t);
    PyObject_GC_Track(o);
  } else {
    o = (*t->tp_alloc)(t, 0);
    if (unlikely(!o)) return 0;
  }
  return o;
}

static void __pyx_tp_dealloc_4grpc_7_cython_6cygrpc___pyx_scope_struct_35_abort_with_status(PyObject *o) {
  struct __pyx_obj_4grpc_7_cython_6cygrpc___pyx_scope_struct_35_abort_with_status *p = (struct __pyx_obj_4grpc_7_cython_6cygrpc___pyx_scope_struct_35_abort_with_status *)o;
  PyObject_GC_UnTrack(o);
  Py_CLEAR(p->__pyx_v_self);
  Py_CLEAR(p->__pyx_v_status);
  if (CYTHON_COMPILING_IN_CPYTHON && ((__pyx_freecount_4grpc_7_cython_6cygrpc___pyx_scope_struct_35_abort_with_status < 8) & (Py_TYPE(o)->tp_basicsize == sizeof(struct __pyx_obj_4grpc_7_cython_6cygrpc___pyx_scope_struct_35_abort_with_status)))) {
    __pyx_freelist_4grpc_7_cython_6cygrpc___pyx_scope_struct_35_abort_with_status[__pyx_freecount_4grpc_7_cython_6cygrpc___pyx_scope_struct_35_abort_with_status++] = ((struct __pyx_obj_4grpc_7_cython_6cygrpc___pyx_scope_struct_35_abort_with_status *)o);
  } else {
    (*Py_TYPE(o)->tp_free)(o);
  }
}

static int __pyx_tp_traverse_4grpc_7_cython_6cygrpc___pyx_scope_struct_35_abort_with_status(PyObject *o, visitproc v, void *a) {
  int e;
  struct __pyx_obj_4grpc_7_cython_6cygrpc___pyx_scope_struct_35_abort_with_status *p = (struct __pyx_obj_4grpc_7_cython_6cygrpc___pyx_scope_struct_35_abort_with_status *)o;
  if (p->__pyx_v_self) {
    e = (*v)(((PyObject *)p->__pyx_v_self), a); if (e) return e;
  }
  if (p->__pyx_v_status) {
    e = (*v)(p->__pyx_v_status, a); if (e) return e;
  }
  return 0;
}

static PyTypeObject __pyx_type_4grpc_7_cython_6cygrpc___pyx_scope_struct_35_abort_with_status = {
  PyVarObject_HEAD_INIT(0, 0)
  "grpc._cython.cygrpc.__pyx_scope_struct_35_abort_with_status", /*tp_name*/
  sizeof(struct __pyx_obj_4grpc_7_cython_6cygrpc___pyx_scope_struct_35_abort_with_status), /*tp_basicsize*/
  0, /*tp_itemsize*/
  __pyx_tp_dealloc_4grpc_7_cython_6cygrpc___pyx_scope_struct_35_abort_with_status, /*tp_dealloc*/
  #if PY_VERSION_HEX < 0x030800b4
  0, /*tp_print*/
  #endif
  #if PY_VERSION_HEX >= 0x030800b4
  0, /*tp_vectorcall_offset*/
  #endif
  0, /*tp_getattr*/
  0, /*tp_setattr*/
  #if PY_MAJOR_VERSION < 3
  0, /*tp_compare*/
  #endif
  #if PY_MAJOR_VERSION >= 3
  0, /*tp_as_async*/
  #endif
  0, /*tp_repr*/
  0, /*tp_as_number*/
  0, /*tp_as_sequence*/
  0, /*tp_as_mapping*/
  0, /*tp_hash*/
  0, /*tp_call*/
  0, /*tp_str*/
  0, /*tp_getattro*/
  0, /*tp_setattro*/
  0, /*tp_as_buffer*/
  Py_TPFLAGS_DEFAULT|Py_TPFLAGS_HAVE_VERSION_TAG|Py_TPFLAGS_CHECKTYPES|Py_TPFLAGS_HAVE_NEWBUFFER|Py_TPFLAGS_HAVE_GC, /*tp_flags*/
  0, /*tp_doc*/
  __pyx_tp_traverse_4grpc_7_cython_6cygrpc___pyx_scope_struct_35_abort_with_status, /*tp_traverse*/
  0, /*tp_clear*/
  0, /*tp_richcompare*/
  0, /*tp_weaklistoffset*/
  0, /*tp_iter*/
  0, /*tp_iternext*/
  0, /*tp_methods*/
  0, /*tp_members*/
  0, /*tp_getset*/
  0, /*tp_base*/
  0, /*tp_dict*/
  0, /*tp_descr_get*/
  0, /*tp_descr_set*/
  0, /*tp_dictoffset*/
  0, /*tp_init*/
  0, /*tp_alloc*/
  __pyx_tp_new_4grpc_7_cython_6cygrpc___pyx_scope_struct_35_abort_with_status, /*tp_new*/
  0, /*tp_free*/
  0, /*tp_is_gc*/
  0, /*tp_bases*/
  0, /*tp_mro*/
  0, /*tp_cache*/
  0, /*tp_subclasses*/
  0, /*tp_weaklist*/
  0, /*tp_del*/
  0, /*tp_version_tag*/
  #if PY_VERSION_HEX >= 0x030400a1
  0, /*tp_finalize*/
  #endif
  #if PY_VERSION_HEX >= 0x030800b1
  0, /*tp_vectorcall*/
  #endif
  #if PY_VERSION_HEX >= 0x030800b4 && PY_VERSION_HEX < 0x03090000
  0, /*tp_print*/
  #endif
};

static struct __pyx_obj_4grpc_7_cython_6cygrpc___pyx_scope_struct_36__run_interceptor *__pyx_freelist_4grpc_7_cython_6cygrpc___pyx_scope_struct_36__run_interceptor[8];
static int __pyx_freecount_4grpc_7_cython_6cygrpc___pyx_scope_struct_36__run_interceptor = 0;

static PyObject *__pyx_tp_new_4grpc_7_cython_6cygrpc___pyx_scope_struct_36__run_interceptor(PyTypeObject *t, CYTHON_UNUSED PyObject *a, CYTHON_UNUSED PyObject *k) {
  PyObject *o;
  if (CYTHON_COMPILING_IN_CPYTHON && likely((__pyx_freecount_4grpc_7_cython_6cygrpc___pyx_scope_struct_36__run_interceptor > 0) & (t->tp_basicsize == sizeof(struct __pyx_obj_4grpc_7_cython_6cygrpc___pyx_scope_struct_36__run_interceptor)))) {
    o = (PyObject*)__pyx_freelist_4grpc_7_cython_6cygrpc___pyx_scope_struct_36__run_interceptor[--__pyx_freecount_4grpc_7_cython_6cygrpc___pyx_scope_struct_36__run_interceptor];
    memset(o, 0, sizeof(struct __pyx_obj_4grpc_7_cython_6cygrpc___pyx_scope_struct_36__run_interceptor));
    (void) PyObject_INIT(o, t);
    PyObject_GC_Track(o);
  } else {
    o = (*t->tp_alloc)(t, 0);
    if (unlikely(!o)) return 0;
  }
  return o;
}

static void __pyx_tp_dealloc_4grpc_7_cython_6cygrpc___pyx_scope_struct_36__run_interceptor(PyObject *o) {
  struct __pyx_obj_4grpc_7_cython_6cygrpc___pyx_scope_struct_36__run_interceptor *p = (struct __pyx_obj_4grpc_7_cython_6cygrpc___pyx_scope_struct_36__run_interceptor *)o;
  PyObject_GC_UnTrack(o);
  Py_CLEAR(p->__pyx_v_continuation);
  Py_CLEAR(p->__pyx_v_handler_call_details);
  Py_CLEAR(p->__pyx_v_interceptor);
  Py_CLEAR(p->__pyx_v_interceptors);
  Py_CLEAR(p->__pyx_v_query_handler);
  if (CYTHON_COMPILING_IN_CPYTHON && ((__pyx_freecount_4grpc_7_cython_6cygrpc___pyx_scope_struct_36__run_interceptor < 8) & (Py_TYPE(o)->tp_basicsize == sizeof(struct __pyx_obj_4grpc_7_cython_6cygrpc___pyx_scope_struct_36__run_interceptor)))) {
    __pyx_freelist_4grpc_7_cython_6cygrpc___pyx_scope_struct_36__run_interceptor[__pyx_freecount_4grpc_7_cython_6cygrpc___pyx_scope_struct_36__run_interceptor++] = ((struct __pyx_obj_4grpc_7_cython_6cygrpc___pyx_scope_struct_36__run_interceptor *)o);
  } else {
    (*Py_TYPE(o)->tp_free)(o);
  }
}

static int __pyx_tp_traverse_4grpc_7_cython_6cygrpc___pyx_scope_struct_36__run_interceptor(PyObject *o, visitproc v, void *a) {
  int e;
  struct __pyx_obj_4grpc_7_cython_6cygrpc___pyx_scope_struct_36__run_interceptor *p = (struct __pyx_obj_4grpc_7_cython_6cygrpc___pyx_scope_struct_36__run_interceptor *)o;
  if (p->__pyx_v_continuation) {
    e = (*v)(p->__pyx_v_continuation, a); if (e) return e;
  }
  if (p->__pyx_v_handler_call_details) {
    e = (*v)(p->__pyx_v_handler_call_details, a); if (e) return e;
  }
  if (p->__pyx_v_interceptor) {
    e = (*v)(p->__pyx_v_interceptor, a); if (e) return e;
  }
  if (p->__pyx_v_interceptors) {
    e = (*v)(p->__pyx_v_interceptors, a); if (e) return e;
  }
  if (p->__pyx_v_query_handler) {
    e = (*v)(p->__pyx_v_query_handler, a); if (e) return e;
  }
  return 0;
}

static PyTypeObject __pyx_type_4grpc_7_cython_6cygrpc___pyx_scope_struct_36__run_interceptor = {
  PyVarObject_HEAD_INIT(0, 0)
  "grpc._cython.cygrpc.__pyx_scope_struct_36__run_interceptor", /*tp_name*/
  sizeof(struct __pyx_obj_4grpc_7_cython_6cygrpc___pyx_scope_struct_36__run_interceptor), /*tp_basicsize*/
  0, /*tp_itemsize*/
  __pyx_tp_dealloc_4grpc_7_cython_6cygrpc___pyx_scope_struct_36__run_interceptor, /*tp_dealloc*/
  #if PY_VERSION_HEX < 0x030800b4
  0, /*tp_print*/
  #endif
  #if PY_VERSION_HEX >= 0x030800b4
  0, /*tp_vectorcall_offset*/
  #endif
  0, /*tp_getattr*/
  0, /*tp_setattr*/
  #if PY_MAJOR_VERSION < 3
  0, /*tp_compare*/
  #endif
  #if PY_MAJOR_VERSION >= 3
  0, /*tp_as_async*/
  #endif
  0, /*tp_repr*/
  0, /*tp_as_number*/
  0, /*tp_as_sequence*/
  0, /*tp_as_mapping*/
  0, /*tp_hash*/
  0, /*tp_call*/
  0, /*tp_str*/
  0, /*tp_getattro*/
  0, /*tp_setattro*/
  0, /*tp_as_buffer*/
  Py_TPFLAGS_DEFAULT|Py_TPFLAGS_HAVE_VERSION_TAG|Py_TPFLAGS_CHECKTYPES|Py_TPFLAGS_HAVE_NEWBUFFER|Py_TPFLAGS_HAVE_GC, /*tp_flags*/
  0, /*tp_doc*/
  __pyx_tp_traverse_4grpc_7_cython_6cygrpc___pyx_scope_struct_36__run_interceptor, /*tp_traverse*/
  0, /*tp_clear*/
  0, /*tp_richcompare*/
  0, /*tp_weaklistoffset*/
  0, /*tp_iter*/
  0, /*tp_iternext*/
  0, /*tp_methods*/
  0, /*tp_members*/
  0, /*tp_getset*/
  0, /*tp_base*/
  0, /*tp_dict*/
  0, /*tp_descr_get*/
  0, /*tp_descr_set*/
  0, /*tp_dictoffset*/
  0, /*tp_init*/
  0, /*tp_alloc*/
  __pyx_tp_new_4grpc_7_cython_6cygrpc___pyx_scope_struct_36__run_interceptor, /*tp_new*/
  0, /*tp_free*/
  0, /*tp_is_gc*/
  0, /*tp_bases*/
  0, /*tp_mro*/
  0, /*tp_cache*/
  0, /*tp_subclasses*/
  0, /*tp_weaklist*/
  0, /*tp_del*/
  0, /*tp_version_tag*/
  #if PY_VERSION_HEX >= 0x030400a1
  0, /*tp_finalize*/
  #endif
  #if PY_VERSION_HEX >= 0x030800b1
  0, /*tp_vectorcall*/
  #endif
  #if PY_VERSION_HEX >= 0x030800b4 && PY_VERSION_HEX < 0x03090000
  0, /*tp_print*/
  #endif
};

static struct __pyx_obj_4grpc_7_cython_6cygrpc___pyx_scope_struct_37__find_method_handler *__pyx_freelist_4grpc_7_cython_6cygrpc___pyx_scope_struct_37__find_method_handler[8];
static int __pyx_freecount_4grpc_7_cython_6cygrpc___pyx_scope_struct_37__find_method_handler = 0;

static PyObject *__pyx_tp_new_4grpc_7_cython_6cygrpc___pyx_scope_struct_37__find_method_handler(PyTypeObject *t, CYTHON_UNUSED PyObject *a, CYTHON_UNUSED PyObject *k) {
  PyObject *o;
  if (CYTHON_COMPILING_IN_CPYTHON && likely((__pyx_freecount_4grpc_7_cython_6cygrpc___pyx_scope_struct_37__find_method_handler > 0) & (t->tp_basicsize == sizeof(struct __pyx_obj_4grpc_7_cython_6cygrpc___pyx_scope_struct_37__find_method_handler)))) {
    o = (PyObject*)__pyx_freelist_4grpc_7_cython_6cygrpc___pyx_scope_struct_37__find_method_handler[--__pyx_freecount_4grpc_7_cython_6cygrpc___pyx_scope_struct_37__find_method_handler];
    memset(o, 0, sizeof(struct __pyx_obj_4grpc_7_cython_6cygrpc___pyx_scope_struct_37__find_method_handler));
    (void) PyObject_INIT(o, t);
    PyObject_GC_Track(o);
  } else {
    o = (*t->tp_alloc)(t, 0);
    if (unlikely(!o)) return 0;
  }
  return o;
}

static void __pyx_tp_dealloc_4grpc_7_cython_6cygrpc___pyx_scope_struct_37__find_method_handler(PyObject *o) {
  struct __pyx_obj_4grpc_7_cython_6cygrpc___pyx_scope_struct_37__find_method_handler *p = (struct __pyx_obj_4grpc_7_cython_6cygrpc___pyx_scope_struct_37__find_method_handler *)o;
  PyObject_GC_UnTrack(o);
  Py_CLEAR(p->__pyx_v_generic_handlers);
  Py_CLEAR(p->__pyx_v_handler_call_details);
  Py_CLEAR(p->__pyx_v_interceptors);
  Py_CLEAR(p->__pyx_v_metadata);
  Py_CLEAR(p->__pyx_v_method);
  Py_CLEAR(p->__pyx_v_query_handlers);
  if (CYTHON_COMPILING_IN_CPYTHON && ((__pyx_freecount_4grpc_7_cython_6cygrpc___pyx_scope_struct_37__find_method_handler < 8) & (Py_TYPE(o)->tp_basicsize == sizeof(struct __pyx_obj_4grpc_7_cython_6cygrpc___pyx_scope_struct_37__find_method_handler)))) {
    __pyx_freelist_4grpc_7_cython_6cygrpc___pyx_scope_struct_37__find_method_handler[__pyx_freecount_4grpc_7_cython_6cygrpc___pyx_scope_struct_37__find_method_handler++] = ((struct __pyx_obj_4grpc_7_cython_6cygrpc___pyx_scope_struct_37__find_method_handler *)o);
  } else {
    (*Py_TYPE(o)->tp_free)(o);
  }
}

static int __pyx_tp_traverse_4grpc_7_cython_6cygrpc___pyx_scope_struct_37__find_method_handler(PyObject *o, visitproc v, void *a) {
  int e;
  struct __pyx_obj_4grpc_7_cython_6cygrpc___pyx_scope_struct_37__find_method_handler *p = (struct __pyx_obj_4grpc_7_cython_6cygrpc___pyx_scope_struct_37__find_method_handler *)o;
  if (p->__pyx_v_generic_handlers) {
    e = (*v)(p->__pyx_v_generic_handlers, a); if (e) return e;
  }
  if (p->__pyx_v_handler_call_details) {
    e = (*v)(((PyObject *)p->__pyx_v_handler_call_details), a); if (e) return e;
  }
  if (p->__pyx_v_interceptors) {
    e = (*v)(p->__pyx_v_interceptors, a); if (e) return e;
  }
  if (p->__pyx_v_metadata) {
    e = (*v)(p->__pyx_v_metadata, a); if (e) return e;
  }
  if (p->__pyx_v_query_handlers) {
    e = (*v)(p->__pyx_v_query_handlers, a); if (e) return e;
  }
  return 0;
}

static PyTypeObject __pyx_type_4grpc_7_cython_6cygrpc___pyx_scope_struct_37__find_method_handler = {
  PyVarObject_HEAD_INIT(0, 0)
  "grpc._cython.cygrpc.__pyx_scope_struct_37__find_method_handler", /*tp_name*/
  sizeof(struct __pyx_obj_4grpc_7_cython_6cygrpc___pyx_scope_struct_37__find_method_handler), /*tp_basicsize*/
  0, /*tp_itemsize*/
  __pyx_tp_dealloc_4grpc_7_cython_6cygrpc___pyx_scope_struct_37__find_method_handler, /*tp_dealloc*/
  #if PY_VERSION_HEX < 0x030800b4
  0, /*tp_print*/
  #endif
  #if PY_VERSION_HEX >= 0x030800b4
  0, /*tp_vectorcall_offset*/
  #endif
  0, /*tp_getattr*/
  0, /*tp_setattr*/
  #if PY_MAJOR_VERSION < 3
  0, /*tp_compare*/
  #endif
  #if PY_MAJOR_VERSION >= 3
  0, /*tp_as_async*/
  #endif
  0, /*tp_repr*/
  0, /*tp_as_number*/
  0, /*tp_as_sequence*/
  0, /*tp_as_mapping*/
  0, /*tp_hash*/
  0, /*tp_call*/
  0, /*tp_str*/
  0, /*tp_getattro*/
  0, /*tp_setattro*/
  0, /*tp_as_buffer*/
  Py_TPFLAGS_DEFAULT|Py_TPFLAGS_HAVE_VERSION_TAG|Py_TPFLAGS_CHECKTYPES|Py_TPFLAGS_HAVE_NEWBUFFER|Py_TPFLAGS_HAVE_GC, /*tp_flags*/
  0, /*tp_doc*/
  __pyx_tp_traverse_4grpc_7_cython_6cygrpc___pyx_scope_struct_37__find_method_handler, /*tp_traverse*/
  0, /*tp_clear*/
  0, /*tp_richcompare*/
  0, /*tp_weaklistoffset*/
  0, /*tp_iter*/
  0, /*tp_iternext*/
  0, /*tp_methods*/
  0, /*tp_members*/
  0, /*tp_getset*/
  0, /*tp_base*/
  0, /*tp_dict*/
  0, /*tp_descr_get*/
  0, /*tp_descr_set*/
  0, /*tp_dictoffset*/
  0, /*tp_init*/
  0, /*tp_alloc*/
  __pyx_tp_new_4grpc_7_cython_6cygrpc___pyx_scope_struct_37__find_method_handler, /*tp_new*/
  0, /*tp_free*/
  0, /*tp_is_gc*/
  0, /*tp_bases*/
  0, /*tp_mro*/
  0, /*tp_cache*/
  0, /*tp_subclasses*/
  0, /*tp_weaklist*/
  0, /*tp_del*/
  0, /*tp_version_tag*/
  #if PY_VERSION_HEX >= 0x030400a1
  0, /*tp_finalize*/
  #endif
  #if PY_VERSION_HEX >= 0x030800b1
  0, /*tp_vectorcall*/
  #endif
  #if PY_VERSION_HEX >= 0x030800b4 && PY_VERSION_HEX < 0x03090000
  0, /*tp_print*/
  #endif
};

static struct __pyx_obj_4grpc_7_cython_6cygrpc___pyx_scope_struct_38__finish_handler_with_unary_response *__pyx_freelist_4grpc_7_cython_6cygrpc___pyx_scope_struct_38__finish_handler_with_unary_response[8];
static int __pyx_freecount_4grpc_7_cython_6cygrpc___pyx_scope_struct_38__finish_handler_with_unary_response = 0;

static PyObject *__pyx_tp_new_4grpc_7_cython_6cygrpc___pyx_scope_struct_38__finish_handler_with_unary_response(PyTypeObject *t, CYTHON_UNUSED PyObject *a, CYTHON_UNUSED PyObject *k) {
  PyObject *o;
  if (CYTHON_COMPILING_IN_CPYTHON && likely((__pyx_freecount_4grpc_7_cython_6cygrpc___pyx_scope_struct_38__finish_handler_with_unary_response > 0) & (t->tp_basicsize == sizeof(struct __pyx_obj_4grpc_7_cython_6cygrpc___pyx_scope_struct_38__finish_handler_with_unary_response)))) {
    o = (PyObject*)__pyx_freelist_4grpc_7_cython_6cygrpc___pyx_scope_struct_38__finish_handler_with_unary_response[--__pyx_freecount_4grpc_7_cython_6cygrpc___pyx_scope_struct_38__finish_handler_with_unary_response];
    memset(o, 0, sizeof(struct __pyx_obj_4grpc_7_cython_6cygrpc___pyx_scope_struct_38__finish_handler_with_unary_response));
    (void) PyObject_INIT(o, t);
    PyObject_GC_Track(o);
  } else {
    o = (*t->tp_alloc)(t, 0);
    if (unlikely(!o)) return 0;
  }
  return o;
}

static void __pyx_tp_dealloc_4grpc_7_cython_6cygrpc___pyx_scope_struct_38__finish_handler_with_unary_response(PyObject *o) {
  struct __pyx_obj_4grpc_7_cython_6cygrpc___pyx_scope_struct_38__finish_handler_with_unary_response *p = (struct __pyx_obj_4grpc_7_cython_6cygrpc___pyx_scope_struct_38__finish_handler_with_unary_response *)o;
  PyObject_GC_UnTrack(o);
  Py_CLEAR(p->__pyx_v_callback);
  Py_CLEAR(p->__pyx_v_finish_ops);
  Py_CLEAR(p->__pyx_v_loop);
  Py_CLEAR(p->__pyx_v_request);
  Py_CLEAR(p->__pyx_v_response_message);
  Py_CLEAR(p->__pyx_v_response_raw);
  Py_CLEAR(p->__pyx_v_response_serializer);
  Py_CLEAR(p->__pyx_v_rpc_state);
  Py_CLEAR(p->__pyx_v_servicer_context);
  Py_CLEAR(p->__pyx_v_sync_servicer_context);
  Py_CLEAR(p->__pyx_v_unary_handler);
  if (CYTHON_COMPILING_IN_CPYTHON && ((__pyx_freecount_4grpc_7_cython_6cygrpc___pyx_scope_struct_38__finish_handler_with_unary_response < 8) & (Py_TYPE(o)->tp_basicsize == sizeof(struct __pyx_obj_4grpc_7_cython_6cygrpc___pyx_scope_struct_38__finish_handler_with_unary_response)))) {
    __pyx_freelist_4grpc_7_cython_6cygrpc___pyx_scope_struct_38__finish_handler_with_unary_response[__pyx_freecount_4grpc_7_cython_6cygrpc___pyx_scope_struct_38__finish_handler_with_unary_response++] = ((struct __pyx_obj_4grpc_7_cython_6cygrpc___pyx_scope_struct_38__finish_handler_with_unary_response *)o);
  } else {
    (*Py_TYPE(o)->tp_free)(o);
  }
}

static int __pyx_tp_traverse_4grpc_7_cython_6cygrpc___pyx_scope_struct_38__finish_handler_with_unary_response(PyObject *o, visitproc v, void *a) {
  int e;
  struct __pyx_obj_4grpc_7_cython_6cygrpc___pyx_scope_struct_38__finish_handler_with_unary_response *p = (struct __pyx_obj_4grpc_7_cython_6cygrpc___pyx_scope_struct_38__finish_handler_with_unary_response *)o;
  if (p->__pyx_v_callback) {
    e = (*v)(p->__pyx_v_callback, a); if (e) return e;
  }
  if (p->__pyx_v_finish_ops) {
    e = (*v)(p->__pyx_v_finish_ops, a); if (e) return e;
  }
  if (p->__pyx_v_loop) {
    e = (*v)(p->__pyx_v_loop, a); if (e) return e;
  }
  if (p->__pyx_v_request) {
    e = (*v)(p->__pyx_v_request, a); if (e) return e;
  }
  if (p->__pyx_v_response_message) {
    e = (*v)(p->__pyx_v_response_message, a); if (e) return e;
  }
  if (p->__pyx_v_response_serializer) {
    e = (*v)(p->__pyx_v_response_serializer, a); if (e) return e;
  }
  if (p->__pyx_v_rpc_state) {
    e = (*v)(((PyObject *)p->__pyx_v_rpc_state), a); if (e) return e;
  }
  if (p->__pyx_v_servicer_context) {
    e = (*v)(((PyObject *)p->__pyx_v_servicer_context), a); if (e) return e;
  }
  if (p->__pyx_v_sync_servicer_context) {
    e = (*v)(((PyObject *)p->__pyx_v_sync_servicer_context), a); if (e) return e;
  }
  if (p->__pyx_v_unary_handler) {
    e = (*v)(p->__pyx_v_unary_handler, a); if (e) return e;
  }
  return 0;
}

static PyTypeObject __pyx_type_4grpc_7_cython_6cygrpc___pyx_scope_struct_38__finish_handler_with_unary_response = {
  PyVarObject_HEAD_INIT(0, 0)
  "grpc._cython.cygrpc.__pyx_scope_struct_38__finish_handler_with_unary_response", /*tp_name*/
  sizeof(struct __pyx_obj_4grpc_7_cython_6cygrpc___pyx_scope_struct_38__finish_handler_with_unary_response), /*tp_basicsize*/
  0, /*tp_itemsize*/
  __pyx_tp_dealloc_4grpc_7_cython_6cygrpc___pyx_scope_struct_38__finish_handler_with_unary_response, /*tp_dealloc*/
  #if PY_VERSION_HEX < 0x030800b4
  0, /*tp_print*/
  #endif
  #if PY_VERSION_HEX >= 0x030800b4
  0, /*tp_vectorcall_offset*/
  #endif
  0, /*tp_getattr*/
  0, /*tp_setattr*/
  #if PY_MAJOR_VERSION < 3
  0, /*tp_compare*/
  #endif
  #if PY_MAJOR_VERSION >= 3
  0, /*tp_as_async*/
  #endif
  0, /*tp_repr*/
  0, /*tp_as_number*/
  0, /*tp_as_sequence*/
  0, /*tp_as_mapping*/
  0, /*tp_hash*/
  0, /*tp_call*/
  0, /*tp_str*/
  0, /*tp_getattro*/
  0, /*tp_setattro*/
  0, /*tp_as_buffer*/
  Py_TPFLAGS_DEFAULT|Py_TPFLAGS_HAVE_VERSION_TAG|Py_TPFLAGS_CHECKTYPES|Py_TPFLAGS_HAVE_NEWBUFFER|Py_TPFLAGS_HAVE_GC, /*tp_flags*/
  0, /*tp_doc*/
  __pyx_tp_traverse_4grpc_7_cython_6cygrpc___pyx_scope_struct_38__finish_handler_with_unary_response, /*tp_traverse*/
  0, /*tp_clear*/
  0, /*tp_richcompare*/
  0, /*tp_weaklistoffset*/
  0, /*tp_iter*/
  0, /*tp_iternext*/
  0, /*tp_methods*/
  0, /*tp_members*/
  0, /*tp_getset*/
  0, /*tp_base*/
  0, /*tp_dict*/
  0, /*tp_descr_get*/
  0, /*tp_descr_set*/
  0, /*tp_dictoffset*/
  0, /*tp_init*/
  0, /*tp_alloc*/
  __pyx_tp_new_4grpc_7_cython_6cygrpc___pyx_scope_struct_38__finish_handler_with_unary_response, /*tp_new*/
  0, /*tp_free*/
  0, /*tp_is_gc*/
  0, /*tp_bases*/
  0, /*tp_mro*/
  0, /*tp_cache*/
  0, /*tp_subclasses*/
  0, /*tp_weaklist*/
  0, /*tp_del*/
  0, /*tp_version_tag*/
  #if PY_VERSION_HEX >= 0x030400a1
  0, /*tp_finalize*/
  #endif
  #if PY_VERSION_HEX >= 0x030800b1
  0, /*tp_vectorcall*/
  #endif
  #if PY_VERSION_HEX >= 0x030800b4 && PY_VERSION_HEX < 0x03090000
  0, /*tp_print*/
  #endif
};

static struct __pyx_obj_4grpc_7_cython_6cygrpc___pyx_scope_struct_39__finish_handler_with_stream_responses *__pyx_freelist_4grpc_7_cython_6cygrpc___pyx_scope_struct_39__finish_handler_with_stream_responses[8];
static int __pyx_freecount_4grpc_7_cython_6cygrpc___pyx_scope_struct_39__finish_handler_with_stream_responses = 0;

static PyObject *__pyx_tp_new_4grpc_7_cython_6cygrpc___pyx_scope_struct_39__finish_handler_with_stream_responses(PyTypeObject *t, CYTHON_UNUSED PyObject *a, CYTHON_UNUSED PyObject *k) {
  PyObject *o;
  if (CYTHON_COMPILING_IN_CPYTHON && likely((__pyx_freecount_4grpc_7_cython_6cygrpc___pyx_scope_struct_39__finish_handler_with_stream_responses > 0) & (t->tp_basicsize == sizeof(struct __pyx_obj_4grpc_7_cython_6cygrpc___pyx_scope_struct_39__finish_handler_with_stream_responses)))) {
    o = (PyObject*)__pyx_freelist_4grpc_7_cython_6cygrpc___pyx_scope_struct_39__finish_handler_with_stream_responses[--__pyx_freecount_4grpc_7_cython_6cygrpc___pyx_scope_struct_39__finish_handler_with_stream_responses];
    memset(o, 0, sizeof(struct __pyx_obj_4grpc_7_cython_6cygrpc___pyx_scope_struct_39__finish_handler_with_stream_responses));
    (void) PyObject_INIT(o, t);
    PyObject_GC_Track(o);
  } else {
    o = (*t->tp_alloc)(t, 0);
    if (unlikely(!o)) return 0;
  }
  return o;
}

static void __pyx_tp_dealloc_4grpc_7_cython_6cygrpc___pyx_scope_struct_39__finish_handler_with_stream_responses(PyObject *o) {
  struct __pyx_obj_4grpc_7_cython_6cygrpc___pyx_scope_struct_39__finish_handler_with_stream_responses *p = (struct __pyx_obj_4grpc_7_cython_6cygrpc___pyx_scope_struct_39__finish_handler_with_stream_responses *)o;
  PyObject_GC_UnTrack(o);
  Py_CLEAR(p->__pyx_v_async_response_generator);
  Py_CLEAR(p->__pyx_v_finish_ops);
  Py_CLEAR(p->__pyx_v_gen);
  Py_CLEAR(p->__pyx_v_loop);
  Py_CLEAR(p->__pyx_v_op);
  Py_CLEAR(p->__pyx_v_request);
  Py_CLEAR(p->__pyx_v_response_message);
  Py_CLEAR(p->__pyx_v_rpc_state);
  Py_CLEAR(p->__pyx_v_servicer_context);
  Py_CLEAR(p->__pyx_v_stream_handler);
  Py_CLEAR(p->__pyx_v_sync_servicer_context);
  Py_CLEAR(p->__pyx_t_0);
  if (CYTHON_COMPILING_IN_CPYTHON && ((__pyx_freecount_4grpc_7_cython_6cygrpc___pyx_scope_struct_39__finish_handler_with_stream_responses < 8) & (Py_TYPE(o)->tp_basicsize == sizeof(struct __pyx_obj_4grpc_7_cython_6cygrpc___pyx_scope_struct_39__finish_handler_with_stream_responses)))) {
    __pyx_freelist_4grpc_7_cython_6cygrpc___pyx_scope_struct_39__finish_handler_with_stream_responses[__pyx_freecount_4grpc_7_cython_6cygrpc___pyx_scope_struct_39__finish_handler_with_stream_responses++] = ((struct __pyx_obj_4grpc_7_cython_6cygrpc___pyx_scope_struct_39__finish_handler_with_stream_responses *)o);
  } else {
    (*Py_TYPE(o)->tp_free)(o);
  }
}

static int __pyx_tp_traverse_4grpc_7_cython_6cygrpc___pyx_scope_struct_39__finish_handler_with_stream_responses(PyObject *o, visitproc v, void *a) {
  int e;
  struct __pyx_obj_4grpc_7_cython_6cygrpc___pyx_scope_struct_39__finish_handler_with_stream_responses *p = (struct __pyx_obj_4grpc_7_cython_6cygrpc___pyx_scope_struct_39__finish_handler_with_stream_responses *)o;
  if (p->__pyx_v_async_response_generator) {
    e = (*v)(p->__pyx_v_async_response_generator, a); if (e) return e;
  }
  if (p->__pyx_v_finish_ops) {
    e = (*v)(p->__pyx_v_finish_ops, a); if (e) return e;
  }
  if (p->__pyx_v_gen) {
    e = (*v)(p->__pyx_v_gen, a); if (e) return e;
  }
  if (p->__pyx_v_loop) {
    e = (*v)(p->__pyx_v_loop, a); if (e) return e;
  }
  if (p->__pyx_v_op) {
    e = (*v)(((PyObject *)p->__pyx_v_op), a); if (e) return e;
  }
  if (p->__pyx_v_request) {
    e = (*v)(p->__pyx_v_request, a); if (e) return e;
  }
  if (p->__pyx_v_response_message) {
    e = (*v)(p->__pyx_v_response_message, a); if (e) return e;
  }
  if (p->__pyx_v_rpc_state) {
    e = (*v)(((PyObject *)p->__pyx_v_rpc_state), a); if (e) return e;
  }
  if (p->__pyx_v_servicer_context) {
    e = (*v)(((PyObject *)p->__pyx_v_servicer_context), a); if (e) return e;
  }
  if (p->__pyx_v_stream_handler) {
    e = (*v)(p->__pyx_v_stream_handler, a); if (e) return e;
  }
  if (p->__pyx_v_sync_servicer_context) {
    e = (*v)(((PyObject *)p->__pyx_v_sync_servicer_context), a); if (e) return e;
  }
  if (p->__pyx_t_0) {
    e = (*v)(p->__pyx_t_0, a); if (e) return e;
  }
  return 0;
}

static PyTypeObject __pyx_type_4grpc_7_cython_6cygrpc___pyx_scope_struct_39__finish_handler_with_stream_responses = {
  PyVarObject_HEAD_INIT(0, 0)
  "grpc._cython.cygrpc.__pyx_scope_struct_39__finish_handler_with_stream_responses", /*tp_name*/
  sizeof(struct __pyx_obj_4grpc_7_cython_6cygrpc___pyx_scope_struct_39__finish_handler_with_stream_responses), /*tp_basicsize*/
  0, /*tp_itemsize*/
  __pyx_tp_dealloc_4grpc_7_cython_6cygrpc___pyx_scope_struct_39__finish_handler_with_stream_responses, /*tp_dealloc*/
  #if PY_VERSION_HEX < 0x030800b4
  0, /*tp_print*/
  #endif
  #if PY_VERSION_HEX >= 0x030800b4
  0, /*tp_vectorcall_offset*/
  #endif
  0, /*tp_getattr*/
  0, /*tp_setattr*/
  #if PY_MAJOR_VERSION < 3
  0, /*tp_compare*/
  #endif
  #if PY_MAJOR_VERSION >= 3
  0, /*tp_as_async*/
  #endif
  0, /*tp_repr*/
  0, /*tp_as_number*/
  0, /*tp_as_sequence*/
  0, /*tp_as_mapping*/
  0, /*tp_hash*/
  0, /*tp_call*/
  0, /*tp_str*/
  0, /*tp_getattro*/
  0, /*tp_setattro*/
  0, /*tp_as_buffer*/
  Py_TPFLAGS_DEFAULT|Py_TPFLAGS_HAVE_VERSION_TAG|Py_TPFLAGS_CHECKTYPES|Py_TPFLAGS_HAVE_NEWBUFFER|Py_TPFLAGS_HAVE_GC, /*tp_flags*/
  0, /*tp_doc*/
  __pyx_tp_traverse_4grpc_7_cython_6cygrpc___pyx_scope_struct_39__finish_handler_with_stream_responses, /*tp_traverse*/
  0, /*tp_clear*/
  0, /*tp_richcompare*/
  0, /*tp_weaklistoffset*/
  0, /*tp_iter*/
  0, /*tp_iternext*/
  0, /*tp_methods*/
  0, /*tp_members*/
  0, /*tp_getset*/
  0, /*tp_base*/
  0, /*tp_dict*/
  0, /*tp_descr_get*/
  0, /*tp_descr_set*/
  0, /*tp_dictoffset*/
  0, /*tp_init*/
  0, /*tp_alloc*/
  __pyx_tp_new_4grpc_7_cython_6cygrpc___pyx_scope_struct_39__finish_handler_with_stream_responses, /*tp_new*/
  0, /*tp_free*/
  0, /*tp_is_gc*/
  0, /*tp_bases*/
  0, /*tp_mro*/
  0, /*tp_cache*/
  0, /*tp_subclasses*/
  0, /*tp_weaklist*/
  0, /*tp_del*/
  0, /*tp_version_tag*/
  #if PY_VERSION_HEX >= 0x030400a1
  0, /*tp_finalize*/
  #endif
  #if PY_VERSION_HEX >= 0x030800b1
  0, /*tp_vectorcall*/
  #endif
  #if PY_VERSION_HEX >= 0x030800b4 && PY_VERSION_HEX < 0x03090000
  0, /*tp_print*/
  #endif
};

static struct __pyx_obj_4grpc_7_cython_6cygrpc___pyx_scope_struct_40__handle_unary_unary_rpc *__pyx_freelist_4grpc_7_cython_6cygrpc___pyx_scope_struct_40__handle_unary_unary_rpc[8];
static int __pyx_freecount_4grpc_7_cython_6cygrpc___pyx_scope_struct_40__handle_unary_unary_rpc = 0;

static PyObject *__pyx_tp_new_4grpc_7_cython_6cygrpc___pyx_scope_struct_40__handle_unary_unary_rpc(PyTypeObject *t, CYTHON_UNUSED PyObject *a, CYTHON_UNUSED PyObject *k) {
  PyObject *o;
  if (CYTHON_COMPILING_IN_CPYTHON && likely((__pyx_freecount_4grpc_7_cython_6cygrpc___pyx_scope_struct_40__handle_unary_unary_rpc > 0) & (t->tp_basicsize == sizeof(struct __pyx_obj_4grpc_7_cython_6cygrpc___pyx_scope_struct_40__handle_unary_unary_rpc)))) {
    o = (PyObject*)__pyx_freelist_4grpc_7_cython_6cygrpc___pyx_scope_struct_40__handle_unary_unary_rpc[--__pyx_freecount_4grpc_7_cython_6cygrpc___pyx_scope_struct_40__handle_unary_unary_rpc];
    memset(o, 0, sizeof(struct __pyx_obj_4grpc_7_cython_6cygrpc___pyx_scope_struct_40__handle_unary_unary_rpc));
    (void) PyObject_INIT(o, t);
    PyObject_GC_Track(o);
  } else {
    o = (*t->tp_alloc)(t, 0);
    if (unlikely(!o)) return 0;
  }
  return o;
}

static void __pyx_tp_dealloc_4grpc_7_cython_6cygrpc___pyx_scope_struct_40__handle_unary_unary_rpc(PyObject *o) {
  struct __pyx_obj_4grpc_7_cython_6cygrpc___pyx_scope_struct_40__handle_unary_unary_rpc *p = (struct __pyx_obj_4grpc_7_cython_6cygrpc___pyx_scope_struct_40__handle_unary_unary_rpc *)o;
  PyObject_GC_UnTrack(o);
  Py_CLEAR(p->__pyx_v_loop);
  Py_CLEAR(p->__pyx_v_method_handler);
  Py_CLEAR(p->__pyx_v_request_message);
  Py_CLEAR(p->__pyx_v_request_raw);
  Py_CLEAR(p->__pyx_v_rpc_state);
  Py_CLEAR(p->__pyx_v_servicer_context);
  if (CYTHON_COMPILING_IN_CPYTHON && ((__pyx_freecount_4grpc_7_cython_6cygrpc___pyx_scope_struct_40__handle_unary_unary_rpc < 8) & (Py_TYPE(o)->tp_basicsize == sizeof(struct __pyx_obj_4grpc_7_cython_6cygrpc___pyx_scope_struct_40__handle_unary_unary_rpc)))) {
    __pyx_freelist_4grpc_7_cython_6cygrpc___pyx_scope_struct_40__handle_unary_unary_rpc[__pyx_freecount_4grpc_7_cython_6cygrpc___pyx_scope_struct_40__handle_unary_unary_rpc++] = ((struct __pyx_obj_4grpc_7_cython_6cygrpc___pyx_scope_struct_40__handle_unary_unary_rpc *)o);
  } else {
    (*Py_TYPE(o)->tp_free)(o);
  }
}

static int __pyx_tp_traverse_4grpc_7_cython_6cygrpc___pyx_scope_struct_40__handle_unary_unary_rpc(PyObject *o, visitproc v, void *a) {
  int e;
  struct __pyx_obj_4grpc_7_cython_6cygrpc___pyx_scope_struct_40__handle_unary_unary_rpc *p = (struct __pyx_obj_4grpc_7_cython_6cygrpc___pyx_scope_struct_40__handle_unary_unary_rpc *)o;
  if (p->__pyx_v_loop) {
    e = (*v)(p->__pyx_v_loop, a); if (e) return e;
  }
  if (p->__pyx_v_method_handler) {
    e = (*v)(p->__pyx_v_method_handler, a); if (e) return e;
  }
  if (p->__pyx_v_request_message) {
    e = (*v)(p->__pyx_v_request_message, a); if (e) return e;
  }
  if (p->__pyx_v_rpc_state) {
    e = (*v)(((PyObject *)p->__pyx_v_rpc_state), a); if (e) return e;
  }
  if (p->__pyx_v_servicer_context) {
    e = (*v)(((PyObject *)p->__pyx_v_servicer_context), a); if (e) return e;
  }
  return 0;
}

static PyTypeObject __pyx_type_4grpc_7_cython_6cygrpc___pyx_scope_struct_40__handle_unary_unary_rpc = {
  PyVarObject_HEAD_INIT(0, 0)
  "grpc._cython.cygrpc.__pyx_scope_struct_40__handle_unary_unary_rpc", /*tp_name*/
  sizeof(struct __pyx_obj_4grpc_7_cython_6cygrpc___pyx_scope_struct_40__handle_unary_unary_rpc), /*tp_basicsize*/
  0, /*tp_itemsize*/
  __pyx_tp_dealloc_4grpc_7_cython_6cygrpc___pyx_scope_struct_40__handle_unary_unary_rpc, /*tp_dealloc*/
  #if PY_VERSION_HEX < 0x030800b4
  0, /*tp_print*/
  #endif
  #if PY_VERSION_HEX >= 0x030800b4
  0, /*tp_vectorcall_offset*/
  #endif
  0, /*tp_getattr*/
  0, /*tp_setattr*/
  #if PY_MAJOR_VERSION < 3
  0, /*tp_compare*/
  #endif
  #if PY_MAJOR_VERSION >= 3
  0, /*tp_as_async*/
  #endif
  0, /*tp_repr*/
  0, /*tp_as_number*/
  0, /*tp_as_sequence*/
  0, /*tp_as_mapping*/
  0, /*tp_hash*/
  0, /*tp_call*/
  0, /*tp_str*/
  0, /*tp_getattro*/
  0, /*tp_setattro*/
  0, /*tp_as_buffer*/
  Py_TPFLAGS_DEFAULT|Py_TPFLAGS_HAVE_VERSION_TAG|Py_TPFLAGS_CHECKTYPES|Py_TPFLAGS_HAVE_NEWBUFFER|Py_TPFLAGS_HAVE_GC, /*tp_flags*/
  0, /*tp_doc*/
  __pyx_tp_traverse_4grpc_7_cython_6cygrpc___pyx_scope_struct_40__handle_unary_unary_rpc, /*tp_traverse*/
  0, /*tp_clear*/
  0, /*tp_richcompare*/
  0, /*tp_weaklistoffset*/
  0, /*tp_iter*/
  0, /*tp_iternext*/
  0, /*tp_methods*/
  0, /*tp_members*/
  0, /*tp_getset*/
  0, /*tp_base*/
  0, /*tp_dict*/
  0, /*tp_descr_get*/
  0, /*tp_descr_set*/
  0, /*tp_dictoffset*/
  0, /*tp_init*/
  0, /*tp_alloc*/
  __pyx_tp_new_4grpc_7_cython_6cygrpc___pyx_scope_struct_40__handle_unary_unary_rpc, /*tp_new*/
  0, /*tp_free*/
  0, /*tp_is_gc*/
  0, /*tp_bases*/
  0, /*tp_mro*/
  0, /*tp_cache*/
  0, /*tp_subclasses*/
  0, /*tp_weaklist*/
  0, /*tp_del*/
  0, /*tp_version_tag*/
  #if PY_VERSION_HEX >= 0x030400a1
  0, /*tp_finalize*/
  #endif
  #if PY_VERSION_HEX >= 0x030800b1
  0, /*tp_vectorcall*/
  #endif
  #if PY_VERSION_HEX >= 0x030800b4 && PY_VERSION_HEX < 0x03090000
  0, /*tp_print*/
  #endif
};

static struct __pyx_obj_4grpc_7_cython_6cygrpc___pyx_scope_struct_41__handle_unary_stream_rpc *__pyx_freelist_4grpc_7_cython_6cygrpc___pyx_scope_struct_41__handle_unary_stream_rpc[8];
static int __pyx_freecount_4grpc_7_cython_6cygrpc___pyx_scope_struct_41__handle_unary_stream_rpc = 0;

static PyObject *__pyx_tp_new_4grpc_7_cython_6cygrpc___pyx_scope_struct_41__handle_unary_stream_rpc(PyTypeObject *t, CYTHON_UNUSED PyObject *a, CYTHON_UNUSED PyObject *k) {
  PyObject *o;
  if (CYTHON_COMPILING_IN_CPYTHON && likely((__pyx_freecount_4grpc_7_cython_6cygrpc___pyx_scope_struct_41__handle_unary_stream_rpc > 0) & (t->tp_basicsize == sizeof(struct __pyx_obj_4grpc_7_cython_6cygrpc___pyx_scope_struct_41__handle_unary_stream_rpc)))) {
    o = (PyObject*)__pyx_freelist_4grpc_7_cython_6cygrpc___pyx_scope_struct_41__handle_unary_stream_rpc[--__pyx_freecount_4grpc_7_cython_6cygrpc___pyx_scope_struct_41__handle_unary_stream_rpc];
    memset(o, 0, sizeof(struct __pyx_obj_4grpc_7_cython_6cygrpc___pyx_scope_struct_41__handle_unary_stream_rpc));
    (void) PyObject_INIT(o, t);
    PyObject_GC_Track(o);
  } else {
    o = (*t->tp_alloc)(t, 0);
    if (unlikely(!o)) return 0;
  }
  return o;
}

static void __pyx_tp_dealloc_4grpc_7_cython_6cygrpc___pyx_scope_struct_41__handle_unary_stream_rpc(PyObject *o) {
  struct __pyx_obj_4grpc_7_cython_6cygrpc___pyx_scope_struct_41__handle_unary_stream_rpc *p = (struct __pyx_obj_4grpc_7_cython_6cygrpc___pyx_scope_struct_41__handle_unary_stream_rpc *)o;
  PyObject_GC_UnTrack(o);
  Py_CLEAR(p->__pyx_v_loop);
  Py_CLEAR(p->__pyx_v_method_handler);
  Py_CLEAR(p->__pyx_v_request_message);
  Py_CLEAR(p->__pyx_v_request_raw);
  Py_CLEAR(p->__pyx_v_rpc_state);
  Py_CLEAR(p->__pyx_v_servicer_context);
  if (CYTHON_COMPILING_IN_CPYTHON && ((__pyx_freecount_4grpc_7_cython_6cygrpc___pyx_scope_struct_41__handle_unary_stream_rpc < 8) & (Py_TYPE(o)->tp_basicsize == sizeof(struct __pyx_obj_4grpc_7_cython_6cygrpc___pyx_scope_struct_41__handle_unary_stream_rpc)))) {
    __pyx_freelist_4grpc_7_cython_6cygrpc___pyx_scope_struct_41__handle_unary_stream_rpc[__pyx_freecount_4grpc_7_cython_6cygrpc___pyx_scope_struct_41__handle_unary_stream_rpc++] = ((struct __pyx_obj_4grpc_7_cython_6cygrpc___pyx_scope_struct_41__handle_unary_stream_rpc *)o);
  } else {
    (*Py_TYPE(o)->tp_free)(o);
  }
}

static int __pyx_tp_traverse_4grpc_7_cython_6cygrpc___pyx_scope_struct_41__handle_unary_stream_rpc(PyObject *o, visitproc v, void *a) {
  int e;
  struct __pyx_obj_4grpc_7_cython_6cygrpc___pyx_scope_struct_41__handle_unary_stream_rpc *p = (struct __pyx_obj_4grpc_7_cython_6cygrpc___pyx_scope_struct_41__handle_unary_stream_rpc *)o;
  if (p->__pyx_v_loop) {
    e = (*v)(p->__pyx_v_loop, a); if (e) return e;
  }
  if (p->__pyx_v_method_handler) {
    e = (*v)(p->__pyx_v_method_handler, a); if (e) return e;
  }
  if (p->__pyx_v_request_message) {
    e = (*v)(p->__pyx_v_request_message, a); if (e) return e;
  }
  if (p->__pyx_v_rpc_state) {
    e = (*v)(((PyObject *)p->__pyx_v_rpc_state), a); if (e) return e;
  }
  if (p->__pyx_v_servicer_context) {
    e = (*v)(((PyObject *)p->__pyx_v_servicer_context), a); if (e) return e;
  }
  return 0;
}

static PyTypeObject __pyx_type_4grpc_7_cython_6cygrpc___pyx_scope_struct_41__handle_unary_stream_rpc = {
  PyVarObject_HEAD_INIT(0, 0)
  "grpc._cython.cygrpc.__pyx_scope_struct_41__handle_unary_stream_rpc", /*tp_name*/
  sizeof(struct __pyx_obj_4grpc_7_cython_6cygrpc___pyx_scope_struct_41__handle_unary_stream_rpc), /*tp_basicsize*/
  0, /*tp_itemsize*/
  __pyx_tp_dealloc_4grpc_7_cython_6cygrpc___pyx_scope_struct_41__handle_unary_stream_rpc, /*tp_dealloc*/
  #if PY_VERSION_HEX < 0x030800b4
  0, /*tp_print*/
  #endif
  #if PY_VERSION_HEX >= 0x030800b4
  0, /*tp_vectorcall_offset*/
  #endif
  0, /*tp_getattr*/
  0, /*tp_setattr*/
  #if PY_MAJOR_VERSION < 3
  0, /*tp_compare*/
  #endif
  #if PY_MAJOR_VERSION >= 3
  0, /*tp_as_async*/
  #endif
  0, /*tp_repr*/
  0, /*tp_as_number*/
  0, /*tp_as_sequence*/
  0, /*tp_as_mapping*/
  0, /*tp_hash*/
  0, /*tp_call*/
  0, /*tp_str*/
  0, /*tp_getattro*/
  0, /*tp_setattro*/
  0, /*tp_as_buffer*/
  Py_TPFLAGS_DEFAULT|Py_TPFLAGS_HAVE_VERSION_TAG|Py_TPFLAGS_CHECKTYPES|Py_TPFLAGS_HAVE_NEWBUFFER|Py_TPFLAGS_HAVE_GC, /*tp_flags*/
  0, /*tp_doc*/
  __pyx_tp_traverse_4grpc_7_cython_6cygrpc___pyx_scope_struct_41__handle_unary_stream_rpc, /*tp_traverse*/
  0, /*tp_clear*/
  0, /*tp_richcompare*/
  0, /*tp_weaklistoffset*/
  0, /*tp_iter*/
  0, /*tp_iternext*/
  0, /*tp_methods*/
  0, /*tp_members*/
  0, /*tp_getset*/
  0, /*tp_base*/
  0, /*tp_dict*/
  0, /*tp_descr_get*/
  0, /*tp_descr_set*/
  0, /*tp_dictoffset*/
  0, /*tp_init*/
  0, /*tp_alloc*/
  __pyx_tp_new_4grpc_7_cython_6cygrpc___pyx_scope_struct_41__handle_unary_stream_rpc, /*tp_new*/
  0, /*tp_free*/
  0, /*tp_is_gc*/
  0, /*tp_bases*/
  0, /*tp_mro*/
  0, /*tp_cache*/
  0, /*tp_subclasses*/
  0, /*tp_weaklist*/
  0, /*tp_del*/
  0, /*tp_version_tag*/
  #if PY_VERSION_HEX >= 0x030400a1
  0, /*tp_finalize*/
  #endif
  #if PY_VERSION_HEX >= 0x030800b1
  0, /*tp_vectorcall*/
  #endif
  #if PY_VERSION_HEX >= 0x030800b4 && PY_VERSION_HEX < 0x03090000
  0, /*tp_print*/
  #endif
};

static struct __pyx_obj_4grpc_7_cython_6cygrpc___pyx_scope_struct_42__async_message_receiver *__pyx_freelist_4grpc_7_cython_6cygrpc___pyx_scope_struct_42__async_message_receiver[8];
static int __pyx_freecount_4grpc_7_cython_6cygrpc___pyx_scope_struct_42__async_message_receiver = 0;

static PyObject *__pyx_tp_new_4grpc_7_cython_6cygrpc___pyx_scope_struct_42__async_message_receiver(PyTypeObject *t, CYTHON_UNUSED PyObject *a, CYTHON_UNUSED PyObject *k) {
  PyObject *o;
  if (CYTHON_COMPILING_IN_CPYTHON && likely((__pyx_freecount_4grpc_7_cython_6cygrpc___pyx_scope_struct_42__async_message_receiver > 0) & (t->tp_basicsize == sizeof(struct __pyx_obj_4grpc_7_cython_6cygrpc___pyx_scope_struct_42__async_message_receiver)))) {
    o = (PyObject*)__pyx_freelist_4grpc_7_cython_6cygrpc___pyx_scope_struct_42__async_message_receiver[--__pyx_freecount_4grpc_7_cython_6cygrpc___pyx_scope_struct_42__async_message_receiver];
    memset(o, 0, sizeof(struct __pyx_obj_4grpc_7_cython_6cygrpc___pyx_scope_struct_42__async_message_receiver));
    (void) PyObject_INIT(o, t);
    PyObject_GC_Track(o);
  } else {
    o = (*t->tp_alloc)(t, 0);
    if (unlikely(!o)) return 0;
  }
  return o;
}

static void __pyx_tp_dealloc_4grpc_7_cython_6cygrpc___pyx_scope_struct_42__async_message_receiver(PyObject *o) {
  struct __pyx_obj_4grpc_7_cython_6cygrpc___pyx_scope_struct_42__async_message_receiver *p = (struct __pyx_obj_4grpc_7_cython_6cygrpc___pyx_scope_struct_42__async_message_receiver *)o;
  PyObject_GC_UnTrack(o);
  Py_CLEAR(p->__pyx_v_message);
  Py_CLEAR(p->__pyx_v_self);
  if (CYTHON_COMPILING_IN_CPYTHON && ((__pyx_freecount_4grpc_7_cython_6cygrpc___pyx_scope_struct_42__async_message_receiver < 8) & (Py_TYPE(o)->tp_basicsize == sizeof(struct __pyx_obj_4grpc_7_cython_6cygrpc___pyx_scope_struct_42__async_message_receiver)))) {
    __pyx_freelist_4grpc_7_cython_6cygrpc___pyx_scope_struct_42__async_message_receiver[__pyx_freecount_4grpc_7_cython_6cygrpc___pyx_scope_struct_42__async_message_receiver++] = ((struct __pyx_obj_4grpc_7_cython_6cygrpc___pyx_scope_struct_42__async_message_receiver *)o);
  } else {
    (*Py_TYPE(o)->tp_free)(o);
  }
}

static int __pyx_tp_traverse_4grpc_7_cython_6cygrpc___pyx_scope_struct_42__async_message_receiver(PyObject *o, visitproc v, void *a) {
  int e;
  struct __pyx_obj_4grpc_7_cython_6cygrpc___pyx_scope_struct_42__async_message_receiver *p = (struct __pyx_obj_4grpc_7_cython_6cygrpc___pyx_scope_struct_42__async_message_receiver *)o;
  if (p->__pyx_v_message) {
    e = (*v)(p->__pyx_v_message, a); if (e) return e;
  }
  if (p->__pyx_v_self) {
    e = (*v)(((PyObject *)p->__pyx_v_self), a); if (e) return e;
  }
  return 0;
}

static PyTypeObject __pyx_type_4grpc_7_cython_6cygrpc___pyx_scope_struct_42__async_message_receiver = {
  PyVarObject_HEAD_INIT(0, 0)
  "grpc._cython.cygrpc.__pyx_scope_struct_42__async_message_receiver", /*tp_name*/
  sizeof(struct __pyx_obj_4grpc_7_cython_6cygrpc___pyx_scope_struct_42__async_message_receiver), /*tp_basicsize*/
  0, /*tp_itemsize*/
  __pyx_tp_dealloc_4grpc_7_cython_6cygrpc___pyx_scope_struct_42__async_message_receiver, /*tp_dealloc*/
  #if PY_VERSION_HEX < 0x030800b4
  0, /*tp_print*/
  #endif
  #if PY_VERSION_HEX >= 0x030800b4
  0, /*tp_vectorcall_offset*/
  #endif
  0, /*tp_getattr*/
  0, /*tp_setattr*/
  #if PY_MAJOR_VERSION < 3
  0, /*tp_compare*/
  #endif
  #if PY_MAJOR_VERSION >= 3
  0, /*tp_as_async*/
  #endif
  0, /*tp_repr*/
  0, /*tp_as_number*/
  0, /*tp_as_sequence*/
  0, /*tp_as_mapping*/
  0, /*tp_hash*/
  0, /*tp_call*/
  0, /*tp_str*/
  0, /*tp_getattro*/
  0, /*tp_setattro*/
  0, /*tp_as_buffer*/
  Py_TPFLAGS_DEFAULT|Py_TPFLAGS_HAVE_VERSION_TAG|Py_TPFLAGS_CHECKTYPES|Py_TPFLAGS_HAVE_NEWBUFFER|Py_TPFLAGS_HAVE_GC, /*tp_flags*/
  0, /*tp_doc*/
  __pyx_tp_traverse_4grpc_7_cython_6cygrpc___pyx_scope_struct_42__async_message_receiver, /*tp_traverse*/
  0, /*tp_clear*/
  0, /*tp_richcompare*/
  0, /*tp_weaklistoffset*/
  0, /*tp_iter*/
  0, /*tp_iternext*/
  0, /*tp_methods*/
  0, /*tp_members*/
  0, /*tp_getset*/
  0, /*tp_base*/
  0, /*tp_dict*/
  0, /*tp_descr_get*/
  0, /*tp_descr_set*/
  0, /*tp_dictoffset*/
  0, /*tp_init*/
  0, /*tp_alloc*/
  __pyx_tp_new_4grpc_7_cython_6cygrpc___pyx_scope_struct_42__async_message_receiver, /*tp_new*/
  0, /*tp_free*/
  0, /*tp_is_gc*/
  0, /*tp_bases*/
  0, /*tp_mro*/
  0, /*tp_cache*/
  0, /*tp_subclasses*/
  0, /*tp_weaklist*/
  0, /*tp_del*/
  0, /*tp_version_tag*/
  #if PY_VERSION_HEX >= 0x030400a1
  0, /*tp_finalize*/
  #endif
  #if PY_VERSION_HEX >= 0x030800b1
  0, /*tp_vectorcall*/
  #endif
  #if PY_VERSION_HEX >= 0x030800b4 && PY_VERSION_HEX < 0x03090000
  0, /*tp_print*/
  #endif
};

static struct __pyx_obj_4grpc_7_cython_6cygrpc___pyx_scope_struct_43___anext__ *__pyx_freelist_4grpc_7_cython_6cygrpc___pyx_scope_struct_43___anext__[8];
static int __pyx_freecount_4grpc_7_cython_6cygrpc___pyx_scope_struct_43___anext__ = 0;

static PyObject *__pyx_tp_new_4grpc_7_cython_6cygrpc___pyx_scope_struct_43___anext__(PyTypeObject *t, CYTHON_UNUSED PyObject *a, CYTHON_UNUSED PyObject *k) {
  PyObject *o;
  if (CYTHON_COMPILING_IN_CPYTHON && likely((__pyx_freecount_4grpc_7_cython_6cygrpc___pyx_scope_struct_43___anext__ > 0) & (t->tp_basicsize == sizeof(struct __pyx_obj_4grpc_7_cython_6cygrpc___pyx_scope_struct_43___anext__)))) {
    o = (PyObject*)__pyx_freelist_4grpc_7_cython_6cygrpc___pyx_scope_struct_43___anext__[--__pyx_freecount_4grpc_7_cython_6cygrpc___pyx_scope_struct_43___anext__];
    memset(o, 0, sizeof(struct __pyx_obj_4grpc_7_cython_6cygrpc___pyx_scope_struct_43___anext__));
    (void) PyObject_INIT(o, t);
    PyObject_GC_Track(o);
  } else {
    o = (*t->tp_alloc)(t, 0);
    if (unlikely(!o)) return 0;
  }
  return o;
}

static void __pyx_tp_dealloc_4grpc_7_cython_6cygrpc___pyx_scope_struct_43___anext__(PyObject *o) {
  struct __pyx_obj_4grpc_7_cython_6cygrpc___pyx_scope_struct_43___anext__ *p = (struct __pyx_obj_4grpc_7_cython_6cygrpc___pyx_scope_struct_43___anext__ *)o;
  PyObject_GC_UnTrack(o);
  Py_CLEAR(p->__pyx_v_self);
  if (CYTHON_COMPILING_IN_CPYTHON && ((__pyx_freecount_4grpc_7_cython_6cygrpc___pyx_scope_struct_43___anext__ < 8) & (Py_TYPE(o)->tp_basicsize == sizeof(struct __pyx_obj_4grpc_7_cython_6cygrpc___pyx_scope_struct_43___anext__)))) {
    __pyx_freelist_4grpc_7_cython_6cygrpc___pyx_scope_struct_43___anext__[__pyx_freecount_4grpc_7_cython_6cygrpc___pyx_scope_struct_43___anext__++] = ((struct __pyx_obj_4grpc_7_cython_6cygrpc___pyx_scope_struct_43___anext__ *)o);
  } else {
    (*Py_TYPE(o)->tp_free)(o);
  }
}

static int __pyx_tp_traverse_4grpc_7_cython_6cygrpc___pyx_scope_struct_43___anext__(PyObject *o, visitproc v, void *a) {
  int e;
  struct __pyx_obj_4grpc_7_cython_6cygrpc___pyx_scope_struct_43___anext__ *p = (struct __pyx_obj_4grpc_7_cython_6cygrpc___pyx_scope_struct_43___anext__ *)o;
  if (p->__pyx_v_self) {
    e = (*v)(((PyObject *)p->__pyx_v_self), a); if (e) return e;
  }
  return 0;
}

static PyTypeObject __pyx_type_4grpc_7_cython_6cygrpc___pyx_scope_struct_43___anext__ = {
  PyVarObject_HEAD_INIT(0, 0)
  "grpc._cython.cygrpc.__pyx_scope_struct_43___anext__", /*tp_name*/
  sizeof(struct __pyx_obj_4grpc_7_cython_6cygrpc___pyx_scope_struct_43___anext__), /*tp_basicsize*/
  0, /*tp_itemsize*/
  __pyx_tp_dealloc_4grpc_7_cython_6cygrpc___pyx_scope_struct_43___anext__, /*tp_dealloc*/
  #if PY_VERSION_HEX < 0x030800b4
  0, /*tp_print*/
  #endif
  #if PY_VERSION_HEX >= 0x030800b4
  0, /*tp_vectorcall_offset*/
  #endif
  0, /*tp_getattr*/
  0, /*tp_setattr*/
  #if PY_MAJOR_VERSION < 3
  0, /*tp_compare*/
  #endif
  #if PY_MAJOR_VERSION >= 3
  0, /*tp_as_async*/
  #endif
  0, /*tp_repr*/
  0, /*tp_as_number*/
  0, /*tp_as_sequence*/
  0, /*tp_as_mapping*/
  0, /*tp_hash*/
  0, /*tp_call*/
  0, /*tp_str*/
  0, /*tp_getattro*/
  0, /*tp_setattro*/
  0, /*tp_as_buffer*/
  Py_TPFLAGS_DEFAULT|Py_TPFLAGS_HAVE_VERSION_TAG|Py_TPFLAGS_CHECKTYPES|Py_TPFLAGS_HAVE_NEWBUFFER|Py_TPFLAGS_HAVE_GC, /*tp_flags*/
  0, /*tp_doc*/
  __pyx_tp_traverse_4grpc_7_cython_6cygrpc___pyx_scope_struct_43___anext__, /*tp_traverse*/
  0, /*tp_clear*/
  0, /*tp_richcompare*/
  0, /*tp_weaklistoffset*/
  0, /*tp_iter*/
  0, /*tp_iternext*/
  0, /*tp_methods*/
  0, /*tp_members*/
  0, /*tp_getset*/
  0, /*tp_base*/
  0, /*tp_dict*/
  0, /*tp_descr_get*/
  0, /*tp_descr_set*/
  0, /*tp_dictoffset*/
  0, /*tp_init*/
  0, /*tp_alloc*/
  __pyx_tp_new_4grpc_7_cython_6cygrpc___pyx_scope_struct_43___anext__, /*tp_new*/
  0, /*tp_free*/
  0, /*tp_is_gc*/
  0, /*tp_bases*/
  0, /*tp_mro*/
  0, /*tp_cache*/
  0, /*tp_subclasses*/
  0, /*tp_weaklist*/
  0, /*tp_del*/
  0, /*tp_version_tag*/
  #if PY_VERSION_HEX >= 0x030400a1
  0, /*tp_finalize*/
  #endif
  #if PY_VERSION_HEX >= 0x030800b1
  0, /*tp_vectorcall*/
  #endif
  #if PY_VERSION_HEX >= 0x030800b4 && PY_VERSION_HEX < 0x03090000
  0, /*tp_print*/
  #endif
};

static struct __pyx_obj_4grpc_7_cython_6cygrpc___pyx_scope_struct_44__handle_stream_unary_rpc *__pyx_freelist_4grpc_7_cython_6cygrpc___pyx_scope_struct_44__handle_stream_unary_rpc[8];
static int __pyx_freecount_4grpc_7_cython_6cygrpc___pyx_scope_struct_44__handle_stream_unary_rpc = 0;

static PyObject *__pyx_tp_new_4grpc_7_cython_6cygrpc___pyx_scope_struct_44__handle_stream_unary_rpc(PyTypeObject *t, CYTHON_UNUSED PyObject *a, CYTHON_UNUSED PyObject *k) {
  PyObject *o;
  if (CYTHON_COMPILING_IN_CPYTHON && likely((__pyx_freecount_4grpc_7_cython_6cygrpc___pyx_scope_struct_44__handle_stream_unary_rpc > 0) & (t->tp_basicsize == sizeof(struct __pyx_obj_4grpc_7_cython_6cygrpc___pyx_scope_struct_44__handle_stream_unary_rpc)))) {
    o = (PyObject*)__pyx_freelist_4grpc_7_cython_6cygrpc___pyx_scope_struct_44__handle_stream_unary_rpc[--__pyx_freecount_4grpc_7_cython_6cygrpc___pyx_scope_struct_44__handle_stream_unary_rpc];
    memset(o, 0, sizeof(struct __pyx_obj_4grpc_7_cython_6cygrpc___pyx_scope_struct_44__handle_stream_unary_rpc));
    (void) PyObject_INIT(o, t);
    PyObject_GC_Track(o);
  } else {
    o = (*t->tp_alloc)(t, 0);
    if (unlikely(!o)) return 0;
  }
  return o;
}

static void __pyx_tp_dealloc_4grpc_7_cython_6cygrpc___pyx_scope_struct_44__handle_stream_unary_rpc(PyObject *o) {
  struct __pyx_obj_4grpc_7_cython_6cygrpc___pyx_scope_struct_44__handle_stream_unary_rpc *p = (struct __pyx_obj_4grpc_7_cython_6cygrpc___pyx_scope_struct_44__handle_stream_unary_rpc *)o;
  PyObject_GC_UnTrack(o);
  Py_CLEAR(p->__pyx_v_loop);
  Py_CLEAR(p->__pyx_v_method_handler);
  Py_CLEAR(p->__pyx_v_request_iterator);
  Py_CLEAR(p->__pyx_v_rpc_state);
  Py_CLEAR(p->__pyx_v_servicer_context);
  if (CYTHON_COMPILING_IN_CPYTHON && ((__pyx_freecount_4grpc_7_cython_6cygrpc___pyx_scope_struct_44__handle_stream_unary_rpc < 8) & (Py_TYPE(o)->tp_basicsize == sizeof(struct __pyx_obj_4grpc_7_cython_6cygrpc___pyx_scope_struct_44__handle_stream_unary_rpc)))) {
    __pyx_freelist_4grpc_7_cython_6cygrpc___pyx_scope_struct_44__handle_stream_unary_rpc[__pyx_freecount_4grpc_7_cython_6cygrpc___pyx_scope_struct_44__handle_stream_unary_rpc++] = ((struct __pyx_obj_4grpc_7_cython_6cygrpc___pyx_scope_struct_44__handle_stream_unary_rpc *)o);
  } else {
    (*Py_TYPE(o)->tp_free)(o);
  }
}

static int __pyx_tp_traverse_4grpc_7_cython_6cygrpc___pyx_scope_struct_44__handle_stream_unary_rpc(PyObject *o, visitproc v, void *a) {
  int e;
  struct __pyx_obj_4grpc_7_cython_6cygrpc___pyx_scope_struct_44__handle_stream_unary_rpc *p = (struct __pyx_obj_4grpc_7_cython_6cygrpc___pyx_scope_struct_44__handle_stream_unary_rpc *)o;
  if (p->__pyx_v_loop) {
    e = (*v)(p->__pyx_v_loop, a); if (e) return e;
  }
  if (p->__pyx_v_method_handler) {
    e = (*v)(p->__pyx_v_method_handler, a); if (e) return e;
  }
  if (p->__pyx_v_request_iterator) {
    e = (*v)(p->__pyx_v_request_iterator, a); if (e) return e;
  }
  if (p->__pyx_v_rpc_state) {
    e = (*v)(((PyObject *)p->__pyx_v_rpc_state), a); if (e) return e;
  }
  if (p->__pyx_v_servicer_context) {
    e = (*v)(((PyObject *)p->__pyx_v_servicer_context), a); if (e) return e;
  }
  return 0;
}

static PyTypeObject __pyx_type_4grpc_7_cython_6cygrpc___pyx_scope_struct_44__handle_stream_unary_rpc = {
  PyVarObject_HEAD_INIT(0, 0)
  "grpc._cython.cygrpc.__pyx_scope_struct_44__handle_stream_unary_rpc", /*tp_name*/
  sizeof(struct __pyx_obj_4grpc_7_cython_6cygrpc___pyx_scope_struct_44__handle_stream_unary_rpc), /*tp_basicsize*/
  0, /*tp_itemsize*/
  __pyx_tp_dealloc_4grpc_7_cython_6cygrpc___pyx_scope_struct_44__handle_stream_unary_rpc, /*tp_dealloc*/
  #if PY_VERSION_HEX < 0x030800b4
  0, /*tp_print*/
  #endif
  #if PY_VERSION_HEX >= 0x030800b4
  0, /*tp_vectorcall_offset*/
  #endif
  0, /*tp_getattr*/
  0, /*tp_setattr*/
  #if PY_MAJOR_VERSION < 3
  0, /*tp_compare*/
  #endif
  #if PY_MAJOR_VERSION >= 3
  0, /*tp_as_async*/
  #endif
  0, /*tp_repr*/
  0, /*tp_as_number*/
  0, /*tp_as_sequence*/
  0, /*tp_as_mapping*/
  0, /*tp_hash*/
  0, /*tp_call*/
  0, /*tp_str*/
  0, /*tp_getattro*/
  0, /*tp_setattro*/
  0, /*tp_as_buffer*/
  Py_TPFLAGS_DEFAULT|Py_TPFLAGS_HAVE_VERSION_TAG|Py_TPFLAGS_CHECKTYPES|Py_TPFLAGS_HAVE_NEWBUFFER|Py_TPFLAGS_HAVE_GC, /*tp_flags*/
  0, /*tp_doc*/
  __pyx_tp_traverse_4grpc_7_cython_6cygrpc___pyx_scope_struct_44__handle_stream_unary_rpc, /*tp_traverse*/
  0, /*tp_clear*/
  0, /*tp_richcompare*/
  0, /*tp_weaklistoffset*/
  0, /*tp_iter*/
  0, /*tp_iternext*/
  0, /*tp_methods*/
  0, /*tp_members*/
  0, /*tp_getset*/
  0, /*tp_base*/
  0, /*tp_dict*/
  0, /*tp_descr_get*/
  0, /*tp_descr_set*/
  0, /*tp_dictoffset*/
  0, /*tp_init*/
  0, /*tp_alloc*/
  __pyx_tp_new_4grpc_7_cython_6cygrpc___pyx_scope_struct_44__handle_stream_unary_rpc, /*tp_new*/
  0, /*tp_free*/
  0, /*tp_is_gc*/
  0, /*tp_bases*/
  0, /*tp_mro*/
  0, /*tp_cache*/
  0, /*tp_subclasses*/
  0, /*tp_weaklist*/
  0, /*tp_del*/
  0, /*tp_version_tag*/
  #if PY_VERSION_HEX >= 0x030400a1
  0, /*tp_finalize*/
  #endif
  #if PY_VERSION_HEX >= 0x030800b1
  0, /*tp_vectorcall*/
  #endif
  #if PY_VERSION_HEX >= 0x030800b4 && PY_VERSION_HEX < 0x03090000
  0, /*tp_print*/
  #endif
};

static struct __pyx_obj_4grpc_7_cython_6cygrpc___pyx_scope_struct_45__handle_stream_stream_rpc *__pyx_freelist_4grpc_7_cython_6cygrpc___pyx_scope_struct_45__handle_stream_stream_rpc[8];
static int __pyx_freecount_4grpc_7_cython_6cygrpc___pyx_scope_struct_45__handle_stream_stream_rpc = 0;

static PyObject *__pyx_tp_new_4grpc_7_cython_6cygrpc___pyx_scope_struct_45__handle_stream_stream_rpc(PyTypeObject *t, CYTHON_UNUSED PyObject *a, CYTHON_UNUSED PyObject *k) {
  PyObject *o;
  if (CYTHON_COMPILING_IN_CPYTHON && likely((__pyx_freecount_4grpc_7_cython_6cygrpc___pyx_scope_struct_45__handle_stream_stream_rpc > 0) & (t->tp_basicsize == sizeof(struct __pyx_obj_4grpc_7_cython_6cygrpc___pyx_scope_struct_45__handle_stream_stream_rpc)))) {
    o = (PyObject*)__pyx_freelist_4grpc_7_cython_6cygrpc___pyx_scope_struct_45__handle_stream_stream_rpc[--__pyx_freecount_4grpc_7_cython_6cygrpc___pyx_scope_struct_45__handle_stream_stream_rpc];
    memset(o, 0, sizeof(struct __pyx_obj_4grpc_7_cython_6cygrpc___pyx_scope_struct_45__handle_stream_stream_rpc));
    (void) PyObject_INIT(o, t);
    PyObject_GC_Track(o);
  } else {
    o = (*t->tp_alloc)(t, 0);
    if (unlikely(!o)) return 0;
  }
  return o;
}

static void __pyx_tp_dealloc_4grpc_7_cython_6cygrpc___pyx_scope_struct_45__handle_stream_stream_rpc(PyObject *o) {
  struct __pyx_obj_4grpc_7_cython_6cygrpc___pyx_scope_struct_45__handle_stream_stream_rpc *p = (struct __pyx_obj_4grpc_7_cython_6cygrpc___pyx_scope_struct_45__handle_stream_stream_rpc *)o;
  PyObject_GC_UnTrack(o);
  Py_CLEAR(p->__pyx_v_loop);
  Py_CLEAR(p->__pyx_v_method_handler);
  Py_CLEAR(p->__pyx_v_request_iterator);
  Py_CLEAR(p->__pyx_v_rpc_state);
  Py_CLEAR(p->__pyx_v_servicer_context);
  if (CYTHON_COMPILING_IN_CPYTHON && ((__pyx_freecount_4grpc_7_cython_6cygrpc___pyx_scope_struct_45__handle_stream_stream_rpc < 8) & (Py_TYPE(o)->tp_basicsize == sizeof(struct __pyx_obj_4grpc_7_cython_6cygrpc___pyx_scope_struct_45__handle_stream_stream_rpc)))) {
    __pyx_freelist_4grpc_7_cython_6cygrpc___pyx_scope_struct_45__handle_stream_stream_rpc[__pyx_freecount_4grpc_7_cython_6cygrpc___pyx_scope_struct_45__handle_stream_stream_rpc++] = ((struct __pyx_obj_4grpc_7_cython_6cygrpc___pyx_scope_struct_45__handle_stream_stream_rpc *)o);
  } else {
    (*Py_TYPE(o)->tp_free)(o);
  }
}

static int __pyx_tp_traverse_4grpc_7_cython_6cygrpc___pyx_scope_struct_45__handle_stream_stream_rpc(PyObject *o, visitproc v, void *a) {
  int e;
  struct __pyx_obj_4grpc_7_cython_6cygrpc___pyx_scope_struct_45__handle_stream_stream_rpc *p = (struct __pyx_obj_4grpc_7_cython_6cygrpc___pyx_scope_struct_45__handle_stream_stream_rpc *)o;
  if (p->__pyx_v_loop) {
    e = (*v)(p->__pyx_v_loop, a); if (e) return e;
  }
  if (p->__pyx_v_method_handler) {
    e = (*v)(p->__pyx_v_method_handler, a); if (e) return e;
  }
  if (p->__pyx_v_request_iterator) {
    e = (*v)(p->__pyx_v_request_iterator, a); if (e) return e;
  }
  if (p->__pyx_v_rpc_state) {
    e = (*v)(((PyObject *)p->__pyx_v_rpc_state), a); if (e) return e;
  }
  if (p->__pyx_v_servicer_context) {
    e = (*v)(((PyObject *)p->__pyx_v_servicer_context), a); if (e) return e;
  }
  return 0;
}

static PyTypeObject __pyx_type_4grpc_7_cython_6cygrpc___pyx_scope_struct_45__handle_stream_stream_rpc = {
  PyVarObject_HEAD_INIT(0, 0)
  "grpc._cython.cygrpc.__pyx_scope_struct_45__handle_stream_stream_rpc", /*tp_name*/
  sizeof(struct __pyx_obj_4grpc_7_cython_6cygrpc___pyx_scope_struct_45__handle_stream_stream_rpc), /*tp_basicsize*/
  0, /*tp_itemsize*/
  __pyx_tp_dealloc_4grpc_7_cython_6cygrpc___pyx_scope_struct_45__handle_stream_stream_rpc, /*tp_dealloc*/
  #if PY_VERSION_HEX < 0x030800b4
  0, /*tp_print*/
  #endif
  #if PY_VERSION_HEX >= 0x030800b4
  0, /*tp_vectorcall_offset*/
  #endif
  0, /*tp_getattr*/
  0, /*tp_setattr*/
  #if PY_MAJOR_VERSION < 3
  0, /*tp_compare*/
  #endif
  #if PY_MAJOR_VERSION >= 3
  0, /*tp_as_async*/
  #endif
  0, /*tp_repr*/
  0, /*tp_as_number*/
  0, /*tp_as_sequence*/
  0, /*tp_as_mapping*/
  0, /*tp_hash*/
  0, /*tp_call*/
  0, /*tp_str*/
  0, /*tp_getattro*/
  0, /*tp_setattro*/
  0, /*tp_as_buffer*/
  Py_TPFLAGS_DEFAULT|Py_TPFLAGS_HAVE_VERSION_TAG|Py_TPFLAGS_CHECKTYPES|Py_TPFLAGS_HAVE_NEWBUFFER|Py_TPFLAGS_HAVE_GC, /*tp_flags*/
  0, /*tp_doc*/
  __pyx_tp_traverse_4grpc_7_cython_6cygrpc___pyx_scope_struct_45__handle_stream_stream_rpc, /*tp_traverse*/
  0, /*tp_clear*/
  0, /*tp_richcompare*/
  0, /*tp_weaklistoffset*/
  0, /*tp_iter*/
  0, /*tp_iternext*/
  0, /*tp_methods*/
  0, /*tp_members*/
  0, /*tp_getset*/
  0, /*tp_base*/
  0, /*tp_dict*/
  0, /*tp_descr_get*/
  0, /*tp_descr_set*/
  0, /*tp_dictoffset*/
  0, /*tp_init*/
  0, /*tp_alloc*/
  __pyx_tp_new_4grpc_7_cython_6cygrpc___pyx_scope_struct_45__handle_stream_stream_rpc, /*tp_new*/
  0, /*tp_free*/
  0, /*tp_is_gc*/
  0, /*tp_bases*/
  0, /*tp_mro*/
  0, /*tp_cache*/
  0, /*tp_subclasses*/
  0, /*tp_weaklist*/
  0, /*tp_del*/
  0, /*tp_version_tag*/
  #if PY_VERSION_HEX >= 0x030400a1
  0, /*tp_finalize*/
  #endif
  #if PY_VERSION_HEX >= 0x030800b1
  0, /*tp_vectorcall*/
  #endif
  #if PY_VERSION_HEX >= 0x030800b4 && PY_VERSION_HEX < 0x03090000
  0, /*tp_print*/
  #endif
};

static struct __pyx_obj_4grpc_7_cython_6cygrpc___pyx_scope_struct_46__handle_exceptions *__pyx_freelist_4grpc_7_cython_6cygrpc___pyx_scope_struct_46__handle_exceptions[8];
static int __pyx_freecount_4grpc_7_cython_6cygrpc___pyx_scope_struct_46__handle_exceptions = 0;

static PyObject *__pyx_tp_new_4grpc_7_cython_6cygrpc___pyx_scope_struct_46__handle_exceptions(PyTypeObject *t, CYTHON_UNUSED PyObject *a, CYTHON_UNUSED PyObject *k) {
  PyObject *o;
  if (CYTHON_COMPILING_IN_CPYTHON && likely((__pyx_freecount_4grpc_7_cython_6cygrpc___pyx_scope_struct_46__handle_exceptions > 0) & (t->tp_basicsize == sizeof(struct __pyx_obj_4grpc_7_cython_6cygrpc___pyx_scope_struct_46__handle_exceptions)))) {
    o = (PyObject*)__pyx_freelist_4grpc_7_cython_6cygrpc___pyx_scope_struct_46__handle_exceptions[--__pyx_freecount_4grpc_7_cython_6cygrpc___pyx_scope_struct_46__handle_exceptions];
    memset(o, 0, sizeof(struct __pyx_obj_4grpc_7_cython_6cygrpc___pyx_scope_struct_46__handle_exceptions));
    (void) PyObject_INIT(o, t);
    PyObject_GC_Track(o);
  } else {
    o = (*t->tp_alloc)(t, 0);
    if (unlikely(!o)) return 0;
  }
  return o;
}

static void __pyx_tp_dealloc_4grpc_7_cython_6cygrpc___pyx_scope_struct_46__handle_exceptions(PyObject *o) {
  struct __pyx_obj_4grpc_7_cython_6cygrpc___pyx_scope_struct_46__handle_exceptions *p = (struct __pyx_obj_4grpc_7_cython_6cygrpc___pyx_scope_struct_46__handle_exceptions *)o;
  PyObject_GC_UnTrack(o);
  Py_CLEAR(p->__pyx_v_e);
  Py_CLEAR(p->__pyx_v_loop);
  Py_CLEAR(p->__pyx_v_rpc_coro);
  Py_CLEAR(p->__pyx_v_rpc_state);
  Py_CLEAR(p->__pyx_v_status_code);
  Py_CLEAR(p->__pyx_t_0);
  Py_CLEAR(p->__pyx_t_1);
  Py_CLEAR(p->__pyx_t_2);
  Py_CLEAR(p->__pyx_t_3);
  Py_CLEAR(p->__pyx_t_4);
  Py_CLEAR(p->__pyx_t_5);
  if (CYTHON_COMPILING_IN_CPYTHON && ((__pyx_freecount_4grpc_7_cython_6cygrpc___pyx_scope_struct_46__handle_exceptions < 8) & (Py_TYPE(o)->tp_basicsize == sizeof(struct __pyx_obj_4grpc_7_cython_6cygrpc___pyx_scope_struct_46__handle_exceptions)))) {
    __pyx_freelist_4grpc_7_cython_6cygrpc___pyx_scope_struct_46__handle_exceptions[__pyx_freecount_4grpc_7_cython_6cygrpc___pyx_scope_struct_46__handle_exceptions++] = ((struct __pyx_obj_4grpc_7_cython_6cygrpc___pyx_scope_struct_46__handle_exceptions *)o);
  } else {
    (*Py_TYPE(o)->tp_free)(o);
  }
}

static int __pyx_tp_traverse_4grpc_7_cython_6cygrpc___pyx_scope_struct_46__handle_exceptions(PyObject *o, visitproc v, void *a) {
  int e;
  struct __pyx_obj_4grpc_7_cython_6cygrpc___pyx_scope_struct_46__handle_exceptions *p = (struct __pyx_obj_4grpc_7_cython_6cygrpc___pyx_scope_struct_46__handle_exceptions *)o;
  if (p->__pyx_v_e) {
    e = (*v)(p->__pyx_v_e, a); if (e) return e;
  }
  if (p->__pyx_v_loop) {
    e = (*v)(p->__pyx_v_loop, a); if (e) return e;
  }
  if (p->__pyx_v_rpc_coro) {
    e = (*v)(p->__pyx_v_rpc_coro, a); if (e) return e;
  }
  if (p->__pyx_v_rpc_state) {
    e = (*v)(((PyObject *)p->__pyx_v_rpc_state), a); if (e) return e;
  }
  if (p->__pyx_v_status_code) {
    e = (*v)(p->__pyx_v_status_code, a); if (e) return e;
  }
  if (p->__pyx_t_0) {
    e = (*v)(p->__pyx_t_0, a); if (e) return e;
  }
  if (p->__pyx_t_1) {
    e = (*v)(p->__pyx_t_1, a); if (e) return e;
  }
  if (p->__pyx_t_2) {
    e = (*v)(p->__pyx_t_2, a); if (e) return e;
  }
  if (p->__pyx_t_3) {
    e = (*v)(p->__pyx_t_3, a); if (e) return e;
  }
  if (p->__pyx_t_4) {
    e = (*v)(p->__pyx_t_4, a); if (e) return e;
  }
  if (p->__pyx_t_5) {
    e = (*v)(p->__pyx_t_5, a); if (e) return e;
  }
  return 0;
}

static PyTypeObject __pyx_type_4grpc_7_cython_6cygrpc___pyx_scope_struct_46__handle_exceptions = {
  PyVarObject_HEAD_INIT(0, 0)
  "grpc._cython.cygrpc.__pyx_scope_struct_46__handle_exceptions", /*tp_name*/
  sizeof(struct __pyx_obj_4grpc_7_cython_6cygrpc___pyx_scope_struct_46__handle_exceptions), /*tp_basicsize*/
  0, /*tp_itemsize*/
  __pyx_tp_dealloc_4grpc_7_cython_6cygrpc___pyx_scope_struct_46__handle_exceptions, /*tp_dealloc*/
  #if PY_VERSION_HEX < 0x030800b4
  0, /*tp_print*/
  #endif
  #if PY_VERSION_HEX >= 0x030800b4
  0, /*tp_vectorcall_offset*/
  #endif
  0, /*tp_getattr*/
  0, /*tp_setattr*/
  #if PY_MAJOR_VERSION < 3
  0, /*tp_compare*/
  #endif
  #if PY_MAJOR_VERSION >= 3
  0, /*tp_as_async*/
  #endif
  0, /*tp_repr*/
  0, /*tp_as_number*/
  0, /*tp_as_sequence*/
  0, /*tp_as_mapping*/
  0, /*tp_hash*/
  0, /*tp_call*/
  0, /*tp_str*/
  0, /*tp_getattro*/
  0, /*tp_setattro*/
  0, /*tp_as_buffer*/
  Py_TPFLAGS_DEFAULT|Py_TPFLAGS_HAVE_VERSION_TAG|Py_TPFLAGS_CHECKTYPES|Py_TPFLAGS_HAVE_NEWBUFFER|Py_TPFLAGS_HAVE_GC, /*tp_flags*/
  0, /*tp_doc*/
  __pyx_tp_traverse_4grpc_7_cython_6cygrpc___pyx_scope_struct_46__handle_exceptions, /*tp_traverse*/
  0, /*tp_clear*/
  0, /*tp_richcompare*/
  0, /*tp_weaklistoffset*/
  0, /*tp_iter*/
  0, /*tp_iternext*/
  0, /*tp_methods*/
  0, /*tp_members*/
  0, /*tp_getset*/
  0, /*tp_base*/
  0, /*tp_dict*/
  0, /*tp_descr_get*/
  0, /*tp_descr_set*/
  0, /*tp_dictoffset*/
  0, /*tp_init*/
  0, /*tp_alloc*/
  __pyx_tp_new_4grpc_7_cython_6cygrpc___pyx_scope_struct_46__handle_exceptions, /*tp_new*/
  0, /*tp_free*/
  0, /*tp_is_gc*/
  0, /*tp_bases*/
  0, /*tp_mro*/
  0, /*tp_cache*/
  0, /*tp_subclasses*/
  0, /*tp_weaklist*/
  0, /*tp_del*/
  0, /*tp_version_tag*/
  #if PY_VERSION_HEX >= 0x030400a1
  0, /*tp_finalize*/
  #endif
  #if PY_VERSION_HEX >= 0x030800b1
  0, /*tp_vectorcall*/
  #endif
  #if PY_VERSION_HEX >= 0x030800b4 && PY_VERSION_HEX < 0x03090000
  0, /*tp_print*/
  #endif
};

static struct __pyx_obj_4grpc_7_cython_6cygrpc___pyx_scope_struct_47__handle_cancellation_from_core *__pyx_freelist_4grpc_7_cython_6cygrpc___pyx_scope_struct_47__handle_cancellation_from_core[8];
static int __pyx_freecount_4grpc_7_cython_6cygrpc___pyx_scope_struct_47__handle_cancellation_from_core = 0;

static PyObject *__pyx_tp_new_4grpc_7_cython_6cygrpc___pyx_scope_struct_47__handle_cancellation_from_core(PyTypeObject *t, CYTHON_UNUSED PyObject *a, CYTHON_UNUSED PyObject *k) {
  PyObject *o;
  if (CYTHON_COMPILING_IN_CPYTHON && likely((__pyx_freecount_4grpc_7_cython_6cygrpc___pyx_scope_struct_47__handle_cancellation_from_core > 0) & (t->tp_basicsize == sizeof(struct __pyx_obj_4grpc_7_cython_6cygrpc___pyx_scope_struct_47__handle_cancellation_from_core)))) {
    o = (PyObject*)__pyx_freelist_4grpc_7_cython_6cygrpc___pyx_scope_struct_47__handle_cancellation_from_core[--__pyx_freecount_4grpc_7_cython_6cygrpc___pyx_scope_struct_47__handle_cancellation_from_core];
    memset(o, 0, sizeof(struct __pyx_obj_4grpc_7_cython_6cygrpc___pyx_scope_struct_47__handle_cancellation_from_core));
    (void) PyObject_INIT(o, t);
    PyObject_GC_Track(o);
  } else {
    o = (*t->tp_alloc)(t, 0);
    if (unlikely(!o)) return 0;
  }
  return o;
}

static void __pyx_tp_dealloc_4grpc_7_cython_6cygrpc___pyx_scope_struct_47__handle_cancellation_from_core(PyObject *o) {
  struct __pyx_obj_4grpc_7_cython_6cygrpc___pyx_scope_struct_47__handle_cancellation_from_core *p = (struct __pyx_obj_4grpc_7_cython_6cygrpc___pyx_scope_struct_47__handle_cancellation_from_core *)o;
  PyObject_GC_UnTrack(o);
  Py_CLEAR(p->__pyx_v_loop);
  Py_CLEAR(p->__pyx_v_op);
  Py_CLEAR(p->__pyx_v_ops);
  Py_CLEAR(p->__pyx_v_rpc_state);
  Py_CLEAR(p->__pyx_v_rpc_task);
  if (CYTHON_COMPILING_IN_CPYTHON && ((__pyx_freecount_4grpc_7_cython_6cygrpc___pyx_scope_struct_47__handle_cancellation_from_core < 8) & (Py_TYPE(o)->tp_basicsize == sizeof(struct __pyx_obj_4grpc_7_cython_6cygrpc___pyx_scope_struct_47__handle_cancellation_from_core)))) {
    __pyx_freelist_4grpc_7_cython_6cygrpc___pyx_scope_struct_47__handle_cancellation_from_core[__pyx_freecount_4grpc_7_cython_6cygrpc___pyx_scope_struct_47__handle_cancellation_from_core++] = ((struct __pyx_obj_4grpc_7_cython_6cygrpc___pyx_scope_struct_47__handle_cancellation_from_core *)o);
  } else {
    (*Py_TYPE(o)->tp_free)(o);
  }
}

static int __pyx_tp_traverse_4grpc_7_cython_6cygrpc___pyx_scope_struct_47__handle_cancellation_from_core(PyObject *o, visitproc v, void *a) {
  int e;
  struct __pyx_obj_4grpc_7_cython_6cygrpc___pyx_scope_struct_47__handle_cancellation_from_core *p = (struct __pyx_obj_4grpc_7_cython_6cygrpc___pyx_scope_struct_47__handle_cancellation_from_core *)o;
  if (p->__pyx_v_loop) {
    e = (*v)(p->__pyx_v_loop, a); if (e) return e;
  }
  if (p->__pyx_v_op) {
    e = (*v)(((PyObject *)p->__pyx_v_op), a); if (e) return e;
  }
  if (p->__pyx_v_ops) {
    e = (*v)(p->__pyx_v_ops, a); if (e) return e;
  }
  if (p->__pyx_v_rpc_state) {
    e = (*v)(((PyObject *)p->__pyx_v_rpc_state), a); if (e) return e;
  }
  if (p->__pyx_v_rpc_task) {
    e = (*v)(p->__pyx_v_rpc_task, a); if (e) return e;
  }
  return 0;
}

static PyTypeObject __pyx_type_4grpc_7_cython_6cygrpc___pyx_scope_struct_47__handle_cancellation_from_core = {
  PyVarObject_HEAD_INIT(0, 0)
  "grpc._cython.cygrpc.__pyx_scope_struct_47__handle_cancellation_from_core", /*tp_name*/
  sizeof(struct __pyx_obj_4grpc_7_cython_6cygrpc___pyx_scope_struct_47__handle_cancellation_from_core), /*tp_basicsize*/
  0, /*tp_itemsize*/
  __pyx_tp_dealloc_4grpc_7_cython_6cygrpc___pyx_scope_struct_47__handle_cancellation_from_core, /*tp_dealloc*/
  #if PY_VERSION_HEX < 0x030800b4
  0, /*tp_print*/
  #endif
  #if PY_VERSION_HEX >= 0x030800b4
  0, /*tp_vectorcall_offset*/
  #endif
  0, /*tp_getattr*/
  0, /*tp_setattr*/
  #if PY_MAJOR_VERSION < 3
  0, /*tp_compare*/
  #endif
  #if PY_MAJOR_VERSION >= 3
  0, /*tp_as_async*/
  #endif
  0, /*tp_repr*/
  0, /*tp_as_number*/
  0, /*tp_as_sequence*/
  0, /*tp_as_mapping*/
  0, /*tp_hash*/
  0, /*tp_call*/
  0, /*tp_str*/
  0, /*tp_getattro*/
  0, /*tp_setattro*/
  0, /*tp_as_buffer*/
  Py_TPFLAGS_DEFAULT|Py_TPFLAGS_HAVE_VERSION_TAG|Py_TPFLAGS_CHECKTYPES|Py_TPFLAGS_HAVE_NEWBUFFER|Py_TPFLAGS_HAVE_GC, /*tp_flags*/
  0, /*tp_doc*/
  __pyx_tp_traverse_4grpc_7_cython_6cygrpc___pyx_scope_struct_47__handle_cancellation_from_core, /*tp_traverse*/
  0, /*tp_clear*/
  0, /*tp_richcompare*/
  0, /*tp_weaklistoffset*/
  0, /*tp_iter*/
  0, /*tp_iternext*/
  0, /*tp_methods*/
  0, /*tp_members*/
  0, /*tp_getset*/
  0, /*tp_base*/
  0, /*tp_dict*/
  0, /*tp_descr_get*/
  0, /*tp_descr_set*/
  0, /*tp_dictoffset*/
  0, /*tp_init*/
  0, /*tp_alloc*/
  __pyx_tp_new_4grpc_7_cython_6cygrpc___pyx_scope_struct_47__handle_cancellation_from_core, /*tp_new*/
  0, /*tp_free*/
  0, /*tp_is_gc*/
  0, /*tp_bases*/
  0, /*tp_mro*/
  0, /*tp_cache*/
  0, /*tp_subclasses*/
  0, /*tp_weaklist*/
  0, /*tp_del*/
  0, /*tp_version_tag*/
  #if PY_VERSION_HEX >= 0x030400a1
  0, /*tp_finalize*/
  #endif
  #if PY_VERSION_HEX >= 0x030800b1
  0, /*tp_vectorcall*/
  #endif
  #if PY_VERSION_HEX >= 0x030800b4 && PY_VERSION_HEX < 0x03090000
  0, /*tp_print*/
  #endif
};

static struct __pyx_obj_4grpc_7_cython_6cygrpc___pyx_scope_struct_48__schedule_rpc_coro *__pyx_freelist_4grpc_7_cython_6cygrpc___pyx_scope_struct_48__schedule_rpc_coro[8];
static int __pyx_freecount_4grpc_7_cython_6cygrpc___pyx_scope_struct_48__schedule_rpc_coro = 0;

static PyObject *__pyx_tp_new_4grpc_7_cython_6cygrpc___pyx_scope_struct_48__schedule_rpc_coro(PyTypeObject *t, CYTHON_UNUSED PyObject *a, CYTHON_UNUSED PyObject *k) {
  PyObject *o;
  if (CYTHON_COMPILING_IN_CPYTHON && likely((__pyx_freecount_4grpc_7_cython_6cygrpc___pyx_scope_struct_48__schedule_rpc_coro > 0) & (t->tp_basicsize == sizeof(struct __pyx_obj_4grpc_7_cython_6cygrpc___pyx_scope_struct_48__schedule_rpc_coro)))) {
    o = (PyObject*)__pyx_freelist_4grpc_7_cython_6cygrpc___pyx_scope_struct_48__schedule_rpc_coro[--__pyx_freecount_4grpc_7_cython_6cygrpc___pyx_scope_struct_48__schedule_rpc_coro];
    memset(o, 0, sizeof(struct __pyx_obj_4grpc_7_cython_6cygrpc___pyx_scope_struct_48__schedule_rpc_coro));
    (void) PyObject_INIT(o, t);
    PyObject_GC_Track(o);
  } else {
    o = (*t->tp_alloc)(t, 0);
    if (unlikely(!o)) return 0;
  }
  return o;
}

static void __pyx_tp_dealloc_4grpc_7_cython_6cygrpc___pyx_scope_struct_48__schedule_rpc_coro(PyObject *o) {
  struct __pyx_obj_4grpc_7_cython_6cygrpc___pyx_scope_struct_48__schedule_rpc_coro *p = (struct __pyx_obj_4grpc_7_cython_6cygrpc___pyx_scope_struct_48__schedule_rpc_coro *)o;
  PyObject_GC_UnTrack(o);
  Py_CLEAR(p->__pyx_v_loop);
  Py_CLEAR(p->__pyx_v_rpc_coro);
  Py_CLEAR(p->__pyx_v_rpc_state);
  Py_CLEAR(p->__pyx_v_rpc_task);
  if (CYTHON_COMPILING_IN_CPYTHON && ((__pyx_freecount_4grpc_7_cython_6cygrpc___pyx_scope_struct_48__schedule_rpc_coro < 8) & (Py_TYPE(o)->tp_basicsize == sizeof(struct __pyx_obj_4grpc_7_cython_6cygrpc___pyx_scope_struct_48__schedule_rpc_coro)))) {
    __pyx_freelist_4grpc_7_cython_6cygrpc___pyx_scope_struct_48__schedule_rpc_coro[__pyx_freecount_4grpc_7_cython_6cygrpc___pyx_scope_struct_48__schedule_rpc_coro++] = ((struct __pyx_obj_4grpc_7_cython_6cygrpc___pyx_scope_struct_48__schedule_rpc_coro *)o);
  } else {
    (*Py_TYPE(o)->tp_free)(o);
  }
}

static int __pyx_tp_traverse_4grpc_7_cython_6cygrpc___pyx_scope_struct_48__schedule_rpc_coro(PyObject *o, visitproc v, void *a) {
  int e;
  struct __pyx_obj_4grpc_7_cython_6cygrpc___pyx_scope_struct_48__schedule_rpc_coro *p = (struct __pyx_obj_4grpc_7_cython_6cygrpc___pyx_scope_struct_48__schedule_rpc_coro *)o;
  if (p->__pyx_v_loop) {
    e = (*v)(p->__pyx_v_loop, a); if (e) return e;
  }
  if (p->__pyx_v_rpc_coro) {
    e = (*v)(p->__pyx_v_rpc_coro, a); if (e) return e;
  }
  if (p->__pyx_v_rpc_state) {
    e = (*v)(((PyObject *)p->__pyx_v_rpc_state), a); if (e) return e;
  }
  if (p->__pyx_v_rpc_task) {
    e = (*v)(p->__pyx_v_rpc_task, a); if (e) return e;
  }
  return 0;
}

static PyTypeObject __pyx_type_4grpc_7_cython_6cygrpc___pyx_scope_struct_48__schedule_rpc_coro = {
  PyVarObject_HEAD_INIT(0, 0)
  "grpc._cython.cygrpc.__pyx_scope_struct_48__schedule_rpc_coro", /*tp_name*/
  sizeof(struct __pyx_obj_4grpc_7_cython_6cygrpc___pyx_scope_struct_48__schedule_rpc_coro), /*tp_basicsize*/
  0, /*tp_itemsize*/
  __pyx_tp_dealloc_4grpc_7_cython_6cygrpc___pyx_scope_struct_48__schedule_rpc_coro, /*tp_dealloc*/
  #if PY_VERSION_HEX < 0x030800b4
  0, /*tp_print*/
  #endif
  #if PY_VERSION_HEX >= 0x030800b4
  0, /*tp_vectorcall_offset*/
  #endif
  0, /*tp_getattr*/
  0, /*tp_setattr*/
  #if PY_MAJOR_VERSION < 3
  0, /*tp_compare*/
  #endif
  #if PY_MAJOR_VERSION >= 3
  0, /*tp_as_async*/
  #endif
  0, /*tp_repr*/
  0, /*tp_as_number*/
  0, /*tp_as_sequence*/
  0, /*tp_as_mapping*/
  0, /*tp_hash*/
  0, /*tp_call*/
  0, /*tp_str*/
  0, /*tp_getattro*/
  0, /*tp_setattro*/
  0, /*tp_as_buffer*/
  Py_TPFLAGS_DEFAULT|Py_TPFLAGS_HAVE_VERSION_TAG|Py_TPFLAGS_CHECKTYPES|Py_TPFLAGS_HAVE_NEWBUFFER|Py_TPFLAGS_HAVE_GC, /*tp_flags*/
  0, /*tp_doc*/
  __pyx_tp_traverse_4grpc_7_cython_6cygrpc___pyx_scope_struct_48__schedule_rpc_coro, /*tp_traverse*/
  0, /*tp_clear*/
  0, /*tp_richcompare*/
  0, /*tp_weaklistoffset*/
  0, /*tp_iter*/
  0, /*tp_iternext*/
  0, /*tp_methods*/
  0, /*tp_members*/
  0, /*tp_getset*/
  0, /*tp_base*/
  0, /*tp_dict*/
  0, /*tp_descr_get*/
  0, /*tp_descr_set*/
  0, /*tp_dictoffset*/
  0, /*tp_init*/
  0, /*tp_alloc*/
  __pyx_tp_new_4grpc_7_cython_6cygrpc___pyx_scope_struct_48__schedule_rpc_coro, /*tp_new*/
  0, /*tp_free*/
  0, /*tp_is_gc*/
  0, /*tp_bases*/
  0, /*tp_mro*/
  0, /*tp_cache*/
  0, /*tp_subclasses*/
  0, /*tp_weaklist*/
  0, /*tp_del*/
  0, /*tp_version_tag*/
  #if PY_VERSION_HEX >= 0x030400a1
  0, /*tp_finalize*/
  #endif
  #if PY_VERSION_HEX >= 0x030800b1
  0, /*tp_vectorcall*/
  #endif
  #if PY_VERSION_HEX >= 0x030800b4 && PY_VERSION_HEX < 0x03090000
  0, /*tp_print*/
  #endif
};

static struct __pyx_obj_4grpc_7_cython_6cygrpc___pyx_scope_struct_49__handle_rpc *__pyx_freelist_4grpc_7_cython_6cygrpc___pyx_scope_struct_49__handle_rpc[8];
static int __pyx_freecount_4grpc_7_cython_6cygrpc___pyx_scope_struct_49__handle_rpc = 0;

static PyObject *__pyx_tp_new_4grpc_7_cython_6cygrpc___pyx_scope_struct_49__handle_rpc(PyTypeObject *t, CYTHON_UNUSED PyObject *a, CYTHON_UNUSED PyObject *k) {
  PyObject *o;
  if (CYTHON_COMPILING_IN_CPYTHON && likely((__pyx_freecount_4grpc_7_cython_6cygrpc___pyx_scope_struct_49__handle_rpc > 0) & (t->tp_basicsize == sizeof(struct __pyx_obj_4grpc_7_cython_6cygrpc___pyx_scope_struct_49__handle_rpc)))) {
    o = (PyObject*)__pyx_freelist_4grpc_7_cython_6cygrpc___pyx_scope_struct_49__handle_rpc[--__pyx_freecount_4grpc_7_cython_6cygrpc___pyx_scope_struct_49__handle_rpc];
    memset(o, 0, sizeof(struct __pyx_obj_4grpc_7_cython_6cygrpc___pyx_scope_struct_49__handle_rpc));
    (void) PyObject_INIT(o, t);
    PyObject_GC_Track(o);
  } else {
    o = (*t->tp_alloc)(t, 0);
    if (unlikely(!o)) return 0;
  }
  return o;
}

static void __pyx_tp_dealloc_4grpc_7_cython_6cygrpc___pyx_scope_struct_49__handle_rpc(PyObject *o) {
  struct __pyx_obj_4grpc_7_cython_6cygrpc___pyx_scope_struct_49__handle_rpc *p = (struct __pyx_obj_4grpc_7_cython_6cygrpc___pyx_scope_struct_49__handle_rpc *)o;
  PyObject_GC_UnTrack(o);
  Py_CLEAR(p->__pyx_v_generic_handlers);
  Py_CLEAR(p->__pyx_v_interceptors);
  Py_CLEAR(p->__pyx_v_loop);
  Py_CLEAR(p->__pyx_v_method_handler);
  Py_CLEAR(p->__pyx_v_rpc_state);
  if (CYTHON_COMPILING_IN_CPYTHON && ((__pyx_freecount_4grpc_7_cython_6cygrpc___pyx_scope_struct_49__handle_rpc < 8) & (Py_TYPE(o)->tp_basicsize == sizeof(struct __pyx_obj_4grpc_7_cython_6cygrpc___pyx_scope_struct_49__handle_rpc)))) {
    __pyx_freelist_4grpc_7_cython_6cygrpc___pyx_scope_struct_49__handle_rpc[__pyx_freecount_4grpc_7_cython_6cygrpc___pyx_scope_struct_49__handle_rpc++] = ((struct __pyx_obj_4grpc_7_cython_6cygrpc___pyx_scope_struct_49__handle_rpc *)o);
  } else {
    (*Py_TYPE(o)->tp_free)(o);
  }
}

static int __pyx_tp_traverse_4grpc_7_cython_6cygrpc___pyx_scope_struct_49__handle_rpc(PyObject *o, visitproc v, void *a) {
  int e;
  struct __pyx_obj_4grpc_7_cython_6cygrpc___pyx_scope_struct_49__handle_rpc *p = (struct __pyx_obj_4grpc_7_cython_6cygrpc___pyx_scope_struct_49__handle_rpc *)o;
  if (p->__pyx_v_generic_handlers) {
    e = (*v)(p->__pyx_v_generic_handlers, a); if (e) return e;
  }
  if (p->__pyx_v_interceptors) {
    e = (*v)(p->__pyx_v_interceptors, a); if (e) return e;
  }
  if (p->__pyx_v_loop) {
    e = (*v)(p->__pyx_v_loop, a); if (e) return e;
  }
  if (p->__pyx_v_method_handler) {
    e = (*v)(p->__pyx_v_method_handler, a); if (e) return e;
  }
  if (p->__pyx_v_rpc_state) {
    e = (*v)(((PyObject *)p->__pyx_v_rpc_state), a); if (e) return e;
  }
  return 0;
}

static PyTypeObject __pyx_type_4grpc_7_cython_6cygrpc___pyx_scope_struct_49__handle_rpc = {
  PyVarObject_HEAD_INIT(0, 0)
  "grpc._cython.cygrpc.__pyx_scope_struct_49__handle_rpc", /*tp_name*/
  sizeof(struct __pyx_obj_4grpc_7_cython_6cygrpc___pyx_scope_struct_49__handle_rpc), /*tp_basicsize*/
  0, /*tp_itemsize*/
  __pyx_tp_dealloc_4grpc_7_cython_6cygrpc___pyx_scope_struct_49__handle_rpc, /*tp_dealloc*/
  #if PY_VERSION_HEX < 0x030800b4
  0, /*tp_print*/
  #endif
  #if PY_VERSION_HEX >= 0x030800b4
  0, /*tp_vectorcall_offset*/
  #endif
  0, /*tp_getattr*/
  0, /*tp_setattr*/
  #if PY_MAJOR_VERSION < 3
  0, /*tp_compare*/
  #endif
  #if PY_MAJOR_VERSION >= 3
  0, /*tp_as_async*/
  #endif
  0, /*tp_repr*/
  0, /*tp_as_number*/
  0, /*tp_as_sequence*/
  0, /*tp_as_mapping*/
  0, /*tp_hash*/
  0, /*tp_call*/
  0, /*tp_str*/
  0, /*tp_getattro*/
  0, /*tp_setattro*/
  0, /*tp_as_buffer*/
  Py_TPFLAGS_DEFAULT|Py_TPFLAGS_HAVE_VERSION_TAG|Py_TPFLAGS_CHECKTYPES|Py_TPFLAGS_HAVE_NEWBUFFER|Py_TPFLAGS_HAVE_GC, /*tp_flags*/
  0, /*tp_doc*/
  __pyx_tp_traverse_4grpc_7_cython_6cygrpc___pyx_scope_struct_49__handle_rpc, /*tp_traverse*/
  0, /*tp_clear*/
  0, /*tp_richcompare*/
  0, /*tp_weaklistoffset*/
  0, /*tp_iter*/
  0, /*tp_iternext*/
  0, /*tp_methods*/
  0, /*tp_members*/
  0, /*tp_getset*/
  0, /*tp_base*/
  0, /*tp_dict*/
  0, /*tp_descr_get*/
  0, /*tp_descr_set*/
  0, /*tp_dictoffset*/
  0, /*tp_init*/
  0, /*tp_alloc*/
  __pyx_tp_new_4grpc_7_cython_6cygrpc___pyx_scope_struct_49__handle_rpc, /*tp_new*/
  0, /*tp_free*/
  0, /*tp_is_gc*/
  0, /*tp_bases*/
  0, /*tp_mro*/
  0, /*tp_cache*/
  0, /*tp_subclasses*/
  0, /*tp_weaklist*/
  0, /*tp_del*/
  0, /*tp_version_tag*/
  #if PY_VERSION_HEX >= 0x030400a1
  0, /*tp_finalize*/
  #endif
  #if PY_VERSION_HEX >= 0x030800b1
  0, /*tp_vectorcall*/
  #endif
  #if PY_VERSION_HEX >= 0x030800b4 && PY_VERSION_HEX < 0x03090000
  0, /*tp_print*/
  #endif
};

static struct __pyx_obj_4grpc_7_cython_6cygrpc___pyx_scope_struct_50_check_before_request_call *__pyx_freelist_4grpc_7_cython_6cygrpc___pyx_scope_struct_50_check_before_request_call[8];
static int __pyx_freecount_4grpc_7_cython_6cygrpc___pyx_scope_struct_50_check_before_request_call = 0;

static PyObject *__pyx_tp_new_4grpc_7_cython_6cygrpc___pyx_scope_struct_50_check_before_request_call(PyTypeObject *t, CYTHON_UNUSED PyObject *a, CYTHON_UNUSED PyObject *k) {
  PyObject *o;
  if (CYTHON_COMPILING_IN_CPYTHON && likely((__pyx_freecount_4grpc_7_cython_6cygrpc___pyx_scope_struct_50_check_before_request_call > 0) & (t->tp_basicsize == sizeof(struct __pyx_obj_4grpc_7_cython_6cygrpc___pyx_scope_struct_50_check_before_request_call)))) {
    o = (PyObject*)__pyx_freelist_4grpc_7_cython_6cygrpc___pyx_scope_struct_50_check_before_request_call[--__pyx_freecount_4grpc_7_cython_6cygrpc___pyx_scope_struct_50_check_before_request_call];
    memset(o, 0, sizeof(struct __pyx_obj_4grpc_7_cython_6cygrpc___pyx_scope_struct_50_check_before_request_call));
    (void) PyObject_INIT(o, t);
    PyObject_GC_Track(o);
  } else {
    o = (*t->tp_alloc)(t, 0);
    if (unlikely(!o)) return 0;
  }
  return o;
}

static void __pyx_tp_dealloc_4grpc_7_cython_6cygrpc___pyx_scope_struct_50_check_before_request_call(PyObject *o) {
  struct __pyx_obj_4grpc_7_cython_6cygrpc___pyx_scope_struct_50_check_before_request_call *p = (struct __pyx_obj_4grpc_7_cython_6cygrpc___pyx_scope_struct_50_check_before_request_call *)o;
  PyObject_GC_UnTrack(o);
  Py_CLEAR(p->__pyx_v_predicate);
  Py_CLEAR(p->__pyx_v_self);
  if (CYTHON_COMPILING_IN_CPYTHON && ((__pyx_freecount_4grpc_7_cython_6cygrpc___pyx_scope_struct_50_check_before_request_call < 8) & (Py_TYPE(o)->tp_basicsize == sizeof(struct __pyx_obj_4grpc_7_cython_6cygrpc___pyx_scope_struct_50_check_before_request_call)))) {
    __pyx_freelist_4grpc_7_cython_6cygrpc___pyx_scope_struct_50_check_before_request_call[__pyx_freecount_4grpc_7_cython_6cygrpc___pyx_scope_struct_50_check_before_request_call++] = ((struct __pyx_obj_4grpc_7_cython_6cygrpc___pyx_scope_struct_50_check_before_request_call *)o);
  } else {
    (*Py_TYPE(o)->tp_free)(o);
  }
}

static int __pyx_tp_traverse_4grpc_7_cython_6cygrpc___pyx_scope_struct_50_check_before_request_call(PyObject *o, visitproc v, void *a) {
  int e;
  struct __pyx_obj_4grpc_7_cython_6cygrpc___pyx_scope_struct_50_check_before_request_call *p = (struct __pyx_obj_4grpc_7_cython_6cygrpc___pyx_scope_struct_50_check_before_request_call *)o;
  if (p->__pyx_v_predicate) {
    e = (*v)(p->__pyx_v_predicate, a); if (e) return e;
  }
  if (p->__pyx_v_self) {
    e = (*v)(((PyObject *)p->__pyx_v_self), a); if (e) return e;
  }
  return 0;
}

static PyTypeObject __pyx_type_4grpc_7_cython_6cygrpc___pyx_scope_struct_50_check_before_request_call = {
  PyVarObject_HEAD_INIT(0, 0)
  "grpc._cython.cygrpc.__pyx_scope_struct_50_check_before_request_call", /*tp_name*/
  sizeof(struct __pyx_obj_4grpc_7_cython_6cygrpc___pyx_scope_struct_50_check_before_request_call), /*tp_basicsize*/
  0, /*tp_itemsize*/
  __pyx_tp_dealloc_4grpc_7_cython_6cygrpc___pyx_scope_struct_50_check_before_request_call, /*tp_dealloc*/
  #if PY_VERSION_HEX < 0x030800b4
  0, /*tp_print*/
  #endif
  #if PY_VERSION_HEX >= 0x030800b4
  0, /*tp_vectorcall_offset*/
  #endif
  0, /*tp_getattr*/
  0, /*tp_setattr*/
  #if PY_MAJOR_VERSION < 3
  0, /*tp_compare*/
  #endif
  #if PY_MAJOR_VERSION >= 3
  0, /*tp_as_async*/
  #endif
  0, /*tp_repr*/
  0, /*tp_as_number*/
  0, /*tp_as_sequence*/
  0, /*tp_as_mapping*/
  0, /*tp_hash*/
  0, /*tp_call*/
  0, /*tp_str*/
  0, /*tp_getattro*/
  0, /*tp_setattro*/
  0, /*tp_as_buffer*/
  Py_TPFLAGS_DEFAULT|Py_TPFLAGS_HAVE_VERSION_TAG|Py_TPFLAGS_CHECKTYPES|Py_TPFLAGS_HAVE_NEWBUFFER|Py_TPFLAGS_HAVE_GC, /*tp_flags*/
  0, /*tp_doc*/
  __pyx_tp_traverse_4grpc_7_cython_6cygrpc___pyx_scope_struct_50_check_before_request_call, /*tp_traverse*/
  0, /*tp_clear*/
  0, /*tp_richcompare*/
  0, /*tp_weaklistoffset*/
  0, /*tp_iter*/
  0, /*tp_iternext*/
  0, /*tp_methods*/
  0, /*tp_members*/
  0, /*tp_getset*/
  0, /*tp_base*/
  0, /*tp_dict*/
  0, /*tp_descr_get*/
  0, /*tp_descr_set*/
  0, /*tp_dictoffset*/
  0, /*tp_init*/
  0, /*tp_alloc*/
  __pyx_tp_new_4grpc_7_cython_6cygrpc___pyx_scope_struct_50_check_before_request_call, /*tp_new*/
  0, /*tp_free*/
  0, /*tp_is_gc*/
  0, /*tp_bases*/
  0, /*tp_mro*/
  0, /*tp_cache*/
  0, /*tp_subclasses*/
  0, /*tp_weaklist*/
  0, /*tp_del*/
  0, /*tp_version_tag*/
  #if PY_VERSION_HEX >= 0x030400a1
  0, /*tp_finalize*/
  #endif
  #if PY_VERSION_HEX >= 0x030800b1
  0, /*tp_vectorcall*/
  #endif
  #if PY_VERSION_HEX >= 0x030800b4 && PY_VERSION_HEX < 0x03090000
  0, /*tp_print*/
  #endif
};

static struct __pyx_obj_4grpc_7_cython_6cygrpc___pyx_scope_struct_51__decrease_active_rpcs_count_with_lock *__pyx_freelist_4grpc_7_cython_6cygrpc___pyx_scope_struct_51__decrease_active_rpcs_count_with_lock[8];
static int __pyx_freecount_4grpc_7_cython_6cygrpc___pyx_scope_struct_51__decrease_active_rpcs_count_with_lock = 0;

static PyObject *__pyx_tp_new_4grpc_7_cython_6cygrpc___pyx_scope_struct_51__decrease_active_rpcs_count_with_lock(PyTypeObject *t, CYTHON_UNUSED PyObject *a, CYTHON_UNUSED PyObject *k) {
  PyObject *o;
  if (CYTHON_COMPILING_IN_CPYTHON && likely((__pyx_freecount_4grpc_7_cython_6cygrpc___pyx_scope_struct_51__decrease_active_rpcs_count_with_lock > 0) & (t->tp_basicsize == sizeof(struct __pyx_obj_4grpc_7_cython_6cygrpc___pyx_scope_struct_51__decrease_active_rpcs_count_with_lock)))) {
    o = (PyObject*)__pyx_freelist_4grpc_7_cython_6cygrpc___pyx_scope_struct_51__decrease_active_rpcs_count_with_lock[--__pyx_freecount_4grpc_7_cython_6cygrpc___pyx_scope_struct_51__decrease_active_rpcs_count_with_lock];
    memset(o, 0, sizeof(struct __pyx_obj_4grpc_7_cython_6cygrpc___pyx_scope_struct_51__decrease_active_rpcs_count_with_lock));
    (void) PyObject_INIT(o, t);
    PyObject_GC_Track(o);
  } else {
    o = (*t->tp_alloc)(t, 0);
    if (unlikely(!o)) return 0;
  }
  return o;
}

static void __pyx_tp_dealloc_4grpc_7_cython_6cygrpc___pyx_scope_struct_51__decrease_active_rpcs_count_with_lock(PyObject *o) {
  struct __pyx_obj_4grpc_7_cython_6cygrpc___pyx_scope_struct_51__decrease_active_rpcs_count_with_lock *p = (struct __pyx_obj_4grpc_7_cython_6cygrpc___pyx_scope_struct_51__decrease_active_rpcs_count_with_lock *)o;
  PyObject_GC_UnTrack(o);
  Py_CLEAR(p->__pyx_v_self);
  if (CYTHON_COMPILING_IN_CPYTHON && ((__pyx_freecount_4grpc_7_cython_6cygrpc___pyx_scope_struct_51__decrease_active_rpcs_count_with_lock < 8) & (Py_TYPE(o)->tp_basicsize == sizeof(struct __pyx_obj_4grpc_7_cython_6cygrpc___pyx_scope_struct_51__decrease_active_rpcs_count_with_lock)))) {
    __pyx_freelist_4grpc_7_cython_6cygrpc___pyx_scope_struct_51__decrease_active_rpcs_count_with_lock[__pyx_freecount_4grpc_7_cython_6cygrpc___pyx_scope_struct_51__decrease_active_rpcs_count_with_lock++] = ((struct __pyx_obj_4grpc_7_cython_6cygrpc___pyx_scope_struct_51__decrease_active_rpcs_count_with_lock *)o);
  } else {
    (*Py_TYPE(o)->tp_free)(o);
  }
}

static int __pyx_tp_traverse_4grpc_7_cython_6cygrpc___pyx_scope_struct_51__decrease_active_rpcs_count_with_lock(PyObject *o, visitproc v, void *a) {
  int e;
  struct __pyx_obj_4grpc_7_cython_6cygrpc___pyx_scope_struct_51__decrease_active_rpcs_count_with_lock *p = (struct __pyx_obj_4grpc_7_cython_6cygrpc___pyx_scope_struct_51__decrease_active_rpcs_count_with_lock *)o;
  if (p->__pyx_v_self) {
    e = (*v)(((PyObject *)p->__pyx_v_self), a); if (e) return e;
  }
  return 0;
}

static PyTypeObject __pyx_type_4grpc_7_cython_6cygrpc___pyx_scope_struct_51__decrease_active_rpcs_count_with_lock = {
  PyVarObject_HEAD_INIT(0, 0)
  "grpc._cython.cygrpc.__pyx_scope_struct_51__decrease_active_rpcs_count_with_lock", /*tp_name*/
  sizeof(struct __pyx_obj_4grpc_7_cython_6cygrpc___pyx_scope_struct_51__decrease_active_rpcs_count_with_lock), /*tp_basicsize*/
  0, /*tp_itemsize*/
  __pyx_tp_dealloc_4grpc_7_cython_6cygrpc___pyx_scope_struct_51__decrease_active_rpcs_count_with_lock, /*tp_dealloc*/
  #if PY_VERSION_HEX < 0x030800b4
  0, /*tp_print*/
  #endif
  #if PY_VERSION_HEX >= 0x030800b4
  0, /*tp_vectorcall_offset*/
  #endif
  0, /*tp_getattr*/
  0, /*tp_setattr*/
  #if PY_MAJOR_VERSION < 3
  0, /*tp_compare*/
  #endif
  #if PY_MAJOR_VERSION >= 3
  0, /*tp_as_async*/
  #endif
  0, /*tp_repr*/
  0, /*tp_as_number*/
  0, /*tp_as_sequence*/
  0, /*tp_as_mapping*/
  0, /*tp_hash*/
  0, /*tp_call*/
  0, /*tp_str*/
  0, /*tp_getattro*/
  0, /*tp_setattro*/
  0, /*tp_as_buffer*/
  Py_TPFLAGS_DEFAULT|Py_TPFLAGS_HAVE_VERSION_TAG|Py_TPFLAGS_CHECKTYPES|Py_TPFLAGS_HAVE_NEWBUFFER|Py_TPFLAGS_HAVE_GC, /*tp_flags*/
  0, /*tp_doc*/
  __pyx_tp_traverse_4grpc_7_cython_6cygrpc___pyx_scope_struct_51__decrease_active_rpcs_count_with_lock, /*tp_traverse*/
  0, /*tp_clear*/
  0, /*tp_richcompare*/
  0, /*tp_weaklistoffset*/
  0, /*tp_iter*/
  0, /*tp_iternext*/
  0, /*tp_methods*/
  0, /*tp_members*/
  0, /*tp_getset*/
  0, /*tp_base*/
  0, /*tp_dict*/
  0, /*tp_descr_get*/
  0, /*tp_descr_set*/
  0, /*tp_dictoffset*/
  0, /*tp_init*/
  0, /*tp_alloc*/
  __pyx_tp_new_4grpc_7_cython_6cygrpc___pyx_scope_struct_51__decrease_active_rpcs_count_with_lock, /*tp_new*/
  0, /*tp_free*/
  0, /*tp_is_gc*/
  0, /*tp_bases*/
  0, /*tp_mro*/
  0, /*tp_cache*/
  0, /*tp_subclasses*/
  0, /*tp_weaklist*/
  0, /*tp_del*/
  0, /*tp_version_tag*/
  #if PY_VERSION_HEX >= 0x030400a1
  0, /*tp_finalize*/
  #endif
  #if PY_VERSION_HEX >= 0x030800b1
  0, /*tp_vectorcall*/
  #endif
  #if PY_VERSION_HEX >= 0x030800b4 && PY_VERSION_HEX < 0x03090000
  0, /*tp_print*/
  #endif
};

static struct __pyx_obj_4grpc_7_cython_6cygrpc___pyx_scope_struct_52__request_call *__pyx_freelist_4grpc_7_cython_6cygrpc___pyx_scope_struct_52__request_call[8];
static int __pyx_freecount_4grpc_7_cython_6cygrpc___pyx_scope_struct_52__request_call = 0;

static PyObject *__pyx_tp_new_4grpc_7_cython_6cygrpc___pyx_scope_struct_52__request_call(PyTypeObject *t, CYTHON_UNUSED PyObject *a, CYTHON_UNUSED PyObject *k) {
  PyObject *o;
  if (CYTHON_COMPILING_IN_CPYTHON && likely((__pyx_freecount_4grpc_7_cython_6cygrpc___pyx_scope_struct_52__request_call > 0) & (t->tp_basicsize == sizeof(struct __pyx_obj_4grpc_7_cython_6cygrpc___pyx_scope_struct_52__request_call)))) {
    o = (PyObject*)__pyx_freelist_4grpc_7_cython_6cygrpc___pyx_scope_struct_52__request_call[--__pyx_freecount_4grpc_7_cython_6cygrpc___pyx_scope_struct_52__request_call];
    memset(o, 0, sizeof(struct __pyx_obj_4grpc_7_cython_6cygrpc___pyx_scope_struct_52__request_call));
    (void) PyObject_INIT(o, t);
    PyObject_GC_Track(o);
  } else {
    o = (*t->tp_alloc)(t, 0);
    if (unlikely(!o)) return 0;
  }
  return o;
}

static void __pyx_tp_dealloc_4grpc_7_cython_6cygrpc___pyx_scope_struct_52__request_call(PyObject *o) {
  struct __pyx_obj_4grpc_7_cython_6cygrpc___pyx_scope_struct_52__request_call *p = (struct __pyx_obj_4grpc_7_cython_6cygrpc___pyx_scope_struct_52__request_call *)o;
  PyObject_GC_UnTrack(o);
  Py_CLEAR(p->__pyx_v_future);
  Py_CLEAR(p->__pyx_v_rpc_state);
  Py_CLEAR(p->__pyx_v_self);
  Py_CLEAR(p->__pyx_v_wrapper);
  if (CYTHON_COMPILING_IN_CPYTHON && ((__pyx_freecount_4grpc_7_cython_6cygrpc___pyx_scope_struct_52__request_call < 8) & (Py_TYPE(o)->tp_basicsize == sizeof(struct __pyx_obj_4grpc_7_cython_6cygrpc___pyx_scope_struct_52__request_call)))) {
    __pyx_freelist_4grpc_7_cython_6cygrpc___pyx_scope_struct_52__request_call[__pyx_freecount_4grpc_7_cython_6cygrpc___pyx_scope_struct_52__request_call++] = ((struct __pyx_obj_4grpc_7_cython_6cygrpc___pyx_scope_struct_52__request_call *)o);
  } else {
    (*Py_TYPE(o)->tp_free)(o);
  }
}

static int __pyx_tp_traverse_4grpc_7_cython_6cygrpc___pyx_scope_struct_52__request_call(PyObject *o, visitproc v, void *a) {
  int e;
  struct __pyx_obj_4grpc_7_cython_6cygrpc___pyx_scope_struct_52__request_call *p = (struct __pyx_obj_4grpc_7_cython_6cygrpc___pyx_scope_struct_52__request_call *)o;
  if (p->__pyx_v_future) {
    e = (*v)(p->__pyx_v_future, a); if (e) return e;
  }
  if (p->__pyx_v_rpc_state) {
    e = (*v)(((PyObject *)p->__pyx_v_rpc_state), a); if (e) return e;
  }
  if (p->__pyx_v_self) {
    e = (*v)(((PyObject *)p->__pyx_v_self), a); if (e) return e;
  }
  if (p->__pyx_v_wrapper) {
    e = (*v)(((PyObject *)p->__pyx_v_wrapper), a); if (e) return e;
  }
  return 0;
}

static PyTypeObject __pyx_type_4grpc_7_cython_6cygrpc___pyx_scope_struct_52__request_call = {
  PyVarObject_HEAD_INIT(0, 0)
  "grpc._cython.cygrpc.__pyx_scope_struct_52__request_call", /*tp_name*/
  sizeof(struct __pyx_obj_4grpc_7_cython_6cygrpc___pyx_scope_struct_52__request_call), /*tp_basicsize*/
  0, /*tp_itemsize*/
  __pyx_tp_dealloc_4grpc_7_cython_6cygrpc___pyx_scope_struct_52__request_call, /*tp_dealloc*/
  #if PY_VERSION_HEX < 0x030800b4
  0, /*tp_print*/
  #endif
  #if PY_VERSION_HEX >= 0x030800b4
  0, /*tp_vectorcall_offset*/
  #endif
  0, /*tp_getattr*/
  0, /*tp_setattr*/
  #if PY_MAJOR_VERSION < 3
  0, /*tp_compare*/
  #endif
  #if PY_MAJOR_VERSION >= 3
  0, /*tp_as_async*/
  #endif
  0, /*tp_repr*/
  0, /*tp_as_number*/
  0, /*tp_as_sequence*/
  0, /*tp_as_mapping*/
  0, /*tp_hash*/
  0, /*tp_call*/
  0, /*tp_str*/
  0, /*tp_getattro*/
  0, /*tp_setattro*/
  0, /*tp_as_buffer*/
  Py_TPFLAGS_DEFAULT|Py_TPFLAGS_HAVE_VERSION_TAG|Py_TPFLAGS_CHECKTYPES|Py_TPFLAGS_HAVE_NEWBUFFER|Py_TPFLAGS_HAVE_GC, /*tp_flags*/
  0, /*tp_doc*/
  __pyx_tp_traverse_4grpc_7_cython_6cygrpc___pyx_scope_struct_52__request_call, /*tp_traverse*/
  0, /*tp_clear*/
  0, /*tp_richcompare*/
  0, /*tp_weaklistoffset*/
  0, /*tp_iter*/
  0, /*tp_iternext*/
  0, /*tp_methods*/
  0, /*tp_members*/
  0, /*tp_getset*/
  0, /*tp_base*/
  0, /*tp_dict*/
  0, /*tp_descr_get*/
  0, /*tp_descr_set*/
  0, /*tp_dictoffset*/
  0, /*tp_init*/
  0, /*tp_alloc*/
  __pyx_tp_new_4grpc_7_cython_6cygrpc___pyx_scope_struct_52__request_call, /*tp_new*/
  0, /*tp_free*/
  0, /*tp_is_gc*/
  0, /*tp_bases*/
  0, /*tp_mro*/
  0, /*tp_cache*/
  0, /*tp_subclasses*/
  0, /*tp_weaklist*/
  0, /*tp_del*/
  0, /*tp_version_tag*/
  #if PY_VERSION_HEX >= 0x030400a1
  0, /*tp_finalize*/
  #endif
  #if PY_VERSION_HEX >= 0x030800b1
  0, /*tp_vectorcall*/
  #endif
  #if PY_VERSION_HEX >= 0x030800b4 && PY_VERSION_HEX < 0x03090000
  0, /*tp_print*/
  #endif
};

static struct __pyx_obj_4grpc_7_cython_6cygrpc___pyx_scope_struct_53__server_main_loop *__pyx_freelist_4grpc_7_cython_6cygrpc___pyx_scope_struct_53__server_main_loop[8];
static int __pyx_freecount_4grpc_7_cython_6cygrpc___pyx_scope_struct_53__server_main_loop = 0;

static PyObject *__pyx_tp_new_4grpc_7_cython_6cygrpc___pyx_scope_struct_53__server_main_loop(PyTypeObject *t, CYTHON_UNUSED PyObject *a, CYTHON_UNUSED PyObject *k) {
  PyObject *o;
  if (CYTHON_COMPILING_IN_CPYTHON && likely((__pyx_freecount_4grpc_7_cython_6cygrpc___pyx_scope_struct_53__server_main_loop > 0) & (t->tp_basicsize == sizeof(struct __pyx_obj_4grpc_7_cython_6cygrpc___pyx_scope_struct_53__server_main_loop)))) {
    o = (PyObject*)__pyx_freelist_4grpc_7_cython_6cygrpc___pyx_scope_struct_53__server_main_loop[--__pyx_freecount_4grpc_7_cython_6cygrpc___pyx_scope_struct_53__server_main_loop];
    memset(o, 0, sizeof(struct __pyx_obj_4grpc_7_cython_6cygrpc___pyx_scope_struct_53__server_main_loop));
    (void) PyObject_INIT(o, t);
    PyObject_GC_Track(o);
  } else {
    o = (*t->tp_alloc)(t, 0);
    if (unlikely(!o)) return 0;
  }
  return o;
}

static void __pyx_tp_dealloc_4grpc_7_cython_6cygrpc___pyx_scope_struct_53__server_main_loop(PyObject *o) {
  struct __pyx_obj_4grpc_7_cython_6cygrpc___pyx_scope_struct_53__server_main_loop *p = (struct __pyx_obj_4grpc_7_cython_6cygrpc___pyx_scope_struct_53__server_main_loop *)o;
  PyObject_GC_UnTrack(o);
  Py_CLEAR(p->__pyx_v_rpc_coro);
  Py_CLEAR(p->__pyx_v_rpc_state);
  Py_CLEAR(p->__pyx_v_rpc_task);
  Py_CLEAR(p->__pyx_v_self);
  Py_CLEAR(p->__pyx_v_server_started);
  if (CYTHON_COMPILING_IN_CPYTHON && ((__pyx_freecount_4grpc_7_cython_6cygrpc___pyx_scope_struct_53__server_main_loop < 8) & (Py_TYPE(o)->tp_basicsize == sizeof(struct __pyx_obj_4grpc_7_cython_6cygrpc___pyx_scope_struct_53__server_main_loop)))) {
    __pyx_freelist_4grpc_7_cython_6cygrpc___pyx_scope_struct_53__server_main_loop[__pyx_freecount_4grpc_7_cython_6cygrpc___pyx_scope_struct_53__server_main_loop++] = ((struct __pyx_obj_4grpc_7_cython_6cygrpc___pyx_scope_struct_53__server_main_loop *)o);
  } else {
    (*Py_TYPE(o)->tp_free)(o);
  }
}

static int __pyx_tp_traverse_4grpc_7_cython_6cygrpc___pyx_scope_struct_53__server_main_loop(PyObject *o, visitproc v, void *a) {
  int e;
  struct __pyx_obj_4grpc_7_cython_6cygrpc___pyx_scope_struct_53__server_main_loop *p = (struct __pyx_obj_4grpc_7_cython_6cygrpc___pyx_scope_struct_53__server_main_loop *)o;
  if (p->__pyx_v_rpc_coro) {
    e = (*v)(p->__pyx_v_rpc_coro, a); if (e) return e;
  }
  if (p->__pyx_v_rpc_state) {
    e = (*v)(((PyObject *)p->__pyx_v_rpc_state), a); if (e) return e;
  }
  if (p->__pyx_v_rpc_task) {
    e = (*v)(p->__pyx_v_rpc_task, a); if (e) return e;
  }
  if (p->__pyx_v_self) {
    e = (*v)(((PyObject *)p->__pyx_v_self), a); if (e) return e;
  }
  if (p->__pyx_v_server_started) {
    e = (*v)(p->__pyx_v_server_started, a); if (e) return e;
  }
  return 0;
}

static PyTypeObject __pyx_type_4grpc_7_cython_6cygrpc___pyx_scope_struct_53__server_main_loop = {
  PyVarObject_HEAD_INIT(0, 0)
  "grpc._cython.cygrpc.__pyx_scope_struct_53__server_main_loop", /*tp_name*/
  sizeof(struct __pyx_obj_4grpc_7_cython_6cygrpc___pyx_scope_struct_53__server_main_loop), /*tp_basicsize*/
  0, /*tp_itemsize*/
  __pyx_tp_dealloc_4grpc_7_cython_6cygrpc___pyx_scope_struct_53__server_main_loop, /*tp_dealloc*/
  #if PY_VERSION_HEX < 0x030800b4
  0, /*tp_print*/
  #endif
  #if PY_VERSION_HEX >= 0x030800b4
  0, /*tp_vectorcall_offset*/
  #endif
  0, /*tp_getattr*/
  0, /*tp_setattr*/
  #if PY_MAJOR_VERSION < 3
  0, /*tp_compare*/
  #endif
  #if PY_MAJOR_VERSION >= 3
  0, /*tp_as_async*/
  #endif
  0, /*tp_repr*/
  0, /*tp_as_number*/
  0, /*tp_as_sequence*/
  0, /*tp_as_mapping*/
  0, /*tp_hash*/
  0, /*tp_call*/
  0, /*tp_str*/
  0, /*tp_getattro*/
  0, /*tp_setattro*/
  0, /*tp_as_buffer*/
  Py_TPFLAGS_DEFAULT|Py_TPFLAGS_HAVE_VERSION_TAG|Py_TPFLAGS_CHECKTYPES|Py_TPFLAGS_HAVE_NEWBUFFER|Py_TPFLAGS_HAVE_GC, /*tp_flags*/
  0, /*tp_doc*/
  __pyx_tp_traverse_4grpc_7_cython_6cygrpc___pyx_scope_struct_53__server_main_loop, /*tp_traverse*/
  0, /*tp_clear*/
  0, /*tp_richcompare*/
  0, /*tp_weaklistoffset*/
  0, /*tp_iter*/
  0, /*tp_iternext*/
  0, /*tp_methods*/
  0, /*tp_members*/
  0, /*tp_getset*/
  0, /*tp_base*/
  0, /*tp_dict*/
  0, /*tp_descr_get*/
  0, /*tp_descr_set*/
  0, /*tp_dictoffset*/
  0, /*tp_init*/
  0, /*tp_alloc*/
  __pyx_tp_new_4grpc_7_cython_6cygrpc___pyx_scope_struct_53__server_main_loop, /*tp_new*/
  0, /*tp_free*/
  0, /*tp_is_gc*/
  0, /*tp_bases*/
  0, /*tp_mro*/
  0, /*tp_cache*/
  0, /*tp_subclasses*/
  0, /*tp_weaklist*/
  0, /*tp_del*/
  0, /*tp_version_tag*/
  #if PY_VERSION_HEX >= 0x030400a1
  0, /*tp_finalize*/
  #endif
  #if PY_VERSION_HEX >= 0x030800b1
  0, /*tp_vectorcall*/
  #endif
  #if PY_VERSION_HEX >= 0x030800b4 && PY_VERSION_HEX < 0x03090000
  0, /*tp_print*/
  #endif
};

static struct __pyx_obj_4grpc_7_cython_6cygrpc___pyx_scope_struct_54_start *__pyx_freelist_4grpc_7_cython_6cygrpc___pyx_scope_struct_54_start[8];
static int __pyx_freecount_4grpc_7_cython_6cygrpc___pyx_scope_struct_54_start = 0;

static PyObject *__pyx_tp_new_4grpc_7_cython_6cygrpc___pyx_scope_struct_54_start(PyTypeObject *t, CYTHON_UNUSED PyObject *a, CYTHON_UNUSED PyObject *k) {
  PyObject *o;
  if (CYTHON_COMPILING_IN_CPYTHON && likely((__pyx_freecount_4grpc_7_cython_6cygrpc___pyx_scope_struct_54_start > 0) & (t->tp_basicsize == sizeof(struct __pyx_obj_4grpc_7_cython_6cygrpc___pyx_scope_struct_54_start)))) {
    o = (PyObject*)__pyx_freelist_4grpc_7_cython_6cygrpc___pyx_scope_struct_54_start[--__pyx_freecount_4grpc_7_cython_6cygrpc___pyx_scope_struct_54_start];
    memset(o, 0, sizeof(struct __pyx_obj_4grpc_7_cython_6cygrpc___pyx_scope_struct_54_start));
    (void) PyObject_INIT(o, t);
    PyObject_GC_Track(o);
  } else {
    o = (*t->tp_alloc)(t, 0);
    if (unlikely(!o)) return 0;
  }
  return o;
}

static void __pyx_tp_dealloc_4grpc_7_cython_6cygrpc___pyx_scope_struct_54_start(PyObject *o) {
  struct __pyx_obj_4grpc_7_cython_6cygrpc___pyx_scope_struct_54_start *p = (struct __pyx_obj_4grpc_7_cython_6cygrpc___pyx_scope_struct_54_start *)o;
  PyObject_GC_UnTrack(o);
  Py_CLEAR(p->__pyx_v_self);
  Py_CLEAR(p->__pyx_v_server_started);
  if (CYTHON_COMPILING_IN_CPYTHON && ((__pyx_freecount_4grpc_7_cython_6cygrpc___pyx_scope_struct_54_start < 8) & (Py_TYPE(o)->tp_basicsize == sizeof(struct __pyx_obj_4grpc_7_cython_6cygrpc___pyx_scope_struct_54_start)))) {
    __pyx_freelist_4grpc_7_cython_6cygrpc___pyx_scope_struct_54_start[__pyx_freecount_4grpc_7_cython_6cygrpc___pyx_scope_struct_54_start++] = ((struct __pyx_obj_4grpc_7_cython_6cygrpc___pyx_scope_struct_54_start *)o);
  } else {
    (*Py_TYPE(o)->tp_free)(o);
  }
}

static int __pyx_tp_traverse_4grpc_7_cython_6cygrpc___pyx_scope_struct_54_start(PyObject *o, visitproc v, void *a) {
  int e;
  struct __pyx_obj_4grpc_7_cython_6cygrpc___pyx_scope_struct_54_start *p = (struct __pyx_obj_4grpc_7_cython_6cygrpc___pyx_scope_struct_54_start *)o;
  if (p->__pyx_v_self) {
    e = (*v)(((PyObject *)p->__pyx_v_self), a); if (e) return e;
  }
  if (p->__pyx_v_server_started) {
    e = (*v)(p->__pyx_v_server_started, a); if (e) return e;
  }
  return 0;
}

static PyTypeObject __pyx_type_4grpc_7_cython_6cygrpc___pyx_scope_struct_54_start = {
  PyVarObject_HEAD_INIT(0, 0)
  "grpc._cython.cygrpc.__pyx_scope_struct_54_start", /*tp_name*/
  sizeof(struct __pyx_obj_4grpc_7_cython_6cygrpc___pyx_scope_struct_54_start), /*tp_basicsize*/
  0, /*tp_itemsize*/
  __pyx_tp_dealloc_4grpc_7_cython_6cygrpc___pyx_scope_struct_54_start, /*tp_dealloc*/
  #if PY_VERSION_HEX < 0x030800b4
  0, /*tp_print*/
  #endif
  #if PY_VERSION_HEX >= 0x030800b4
  0, /*tp_vectorcall_offset*/
  #endif
  0, /*tp_getattr*/
  0, /*tp_setattr*/
  #if PY_MAJOR_VERSION < 3
  0, /*tp_compare*/
  #endif
  #if PY_MAJOR_VERSION >= 3
  0, /*tp_as_async*/
  #endif
  0, /*tp_repr*/
  0, /*tp_as_number*/
  0, /*tp_as_sequence*/
  0, /*tp_as_mapping*/
  0, /*tp_hash*/
  0, /*tp_call*/
  0, /*tp_str*/
  0, /*tp_getattro*/
  0, /*tp_setattro*/
  0, /*tp_as_buffer*/
  Py_TPFLAGS_DEFAULT|Py_TPFLAGS_HAVE_VERSION_TAG|Py_TPFLAGS_CHECKTYPES|Py_TPFLAGS_HAVE_NEWBUFFER|Py_TPFLAGS_HAVE_GC, /*tp_flags*/
  0, /*tp_doc*/
  __pyx_tp_traverse_4grpc_7_cython_6cygrpc___pyx_scope_struct_54_start, /*tp_traverse*/
  0, /*tp_clear*/
  0, /*tp_richcompare*/
  0, /*tp_weaklistoffset*/
  0, /*tp_iter*/
  0, /*tp_iternext*/
  0, /*tp_methods*/
  0, /*tp_members*/
  0, /*tp_getset*/
  0, /*tp_base*/
  0, /*tp_dict*/
  0, /*tp_descr_get*/
  0, /*tp_descr_set*/
  0, /*tp_dictoffset*/
  0, /*tp_init*/
  0, /*tp_alloc*/
  __pyx_tp_new_4grpc_7_cython_6cygrpc___pyx_scope_struct_54_start, /*tp_new*/
  0, /*tp_free*/
  0, /*tp_is_gc*/
  0, /*tp_bases*/
  0, /*tp_mro*/
  0, /*tp_cache*/
  0, /*tp_subclasses*/
  0, /*tp_weaklist*/
  0, /*tp_del*/
  0, /*tp_version_tag*/
  #if PY_VERSION_HEX >= 0x030400a1
  0, /*tp_finalize*/
  #endif
  #if PY_VERSION_HEX >= 0x030800b1
  0, /*tp_vectorcall*/
  #endif
  #if PY_VERSION_HEX >= 0x030800b4 && PY_VERSION_HEX < 0x03090000
  0, /*tp_print*/
  #endif
};

static struct __pyx_obj_4grpc_7_cython_6cygrpc___pyx_scope_struct_55__start_shutting_down *__pyx_freelist_4grpc_7_cython_6cygrpc___pyx_scope_struct_55__start_shutting_down[8];
static int __pyx_freecount_4grpc_7_cython_6cygrpc___pyx_scope_struct_55__start_shutting_down = 0;

static PyObject *__pyx_tp_new_4grpc_7_cython_6cygrpc___pyx_scope_struct_55__start_shutting_down(PyTypeObject *t, CYTHON_UNUSED PyObject *a, CYTHON_UNUSED PyObject *k) {
  PyObject *o;
  if (CYTHON_COMPILING_IN_CPYTHON && likely((__pyx_freecount_4grpc_7_cython_6cygrpc___pyx_scope_struct_55__start_shutting_down > 0) & (t->tp_basicsize == sizeof(struct __pyx_obj_4grpc_7_cython_6cygrpc___pyx_scope_struct_55__start_shutting_down)))) {
    o = (PyObject*)__pyx_freelist_4grpc_7_cython_6cygrpc___pyx_scope_struct_55__start_shutting_down[--__pyx_freecount_4grpc_7_cython_6cygrpc___pyx_scope_struct_55__start_shutting_down];
    memset(o, 0, sizeof(struct __pyx_obj_4grpc_7_cython_6cygrpc___pyx_scope_struct_55__start_shutting_down));
    (void) PyObject_INIT(o, t);
    PyObject_GC_Track(o);
  } else {
    o = (*t->tp_alloc)(t, 0);
    if (unlikely(!o)) return 0;
  }
  return o;
}

static void __pyx_tp_dealloc_4grpc_7_cython_6cygrpc___pyx_scope_struct_55__start_shutting_down(PyObject *o) {
  struct __pyx_obj_4grpc_7_cython_6cygrpc___pyx_scope_struct_55__start_shutting_down *p = (struct __pyx_obj_4grpc_7_cython_6cygrpc___pyx_scope_struct_55__start_shutting_down *)o;
  PyObject_GC_UnTrack(o);
  Py_CLEAR(p->__pyx_v_self);
  Py_CLEAR(p->__pyx_t_0);
  Py_CLEAR(p->__pyx_t_1);
  Py_CLEAR(p->__pyx_t_2);
  if (CYTHON_COMPILING_IN_CPYTHON && ((__pyx_freecount_4grpc_7_cython_6cygrpc___pyx_scope_struct_55__start_shutting_down < 8) & (Py_TYPE(o)->tp_basicsize == sizeof(struct __pyx_obj_4grpc_7_cython_6cygrpc___pyx_scope_struct_55__start_shutting_down)))) {
    __pyx_freelist_4grpc_7_cython_6cygrpc___pyx_scope_struct_55__start_shutting_down[__pyx_freecount_4grpc_7_cython_6cygrpc___pyx_scope_struct_55__start_shutting_down++] = ((struct __pyx_obj_4grpc_7_cython_6cygrpc___pyx_scope_struct_55__start_shutting_down *)o);
  } else {
    (*Py_TYPE(o)->tp_free)(o);
  }
}

static int __pyx_tp_traverse_4grpc_7_cython_6cygrpc___pyx_scope_struct_55__start_shutting_down(PyObject *o, visitproc v, void *a) {
  int e;
  struct __pyx_obj_4grpc_7_cython_6cygrpc___pyx_scope_struct_55__start_shutting_down *p = (struct __pyx_obj_4grpc_7_cython_6cygrpc___pyx_scope_struct_55__start_shutting_down *)o;
  if (p->__pyx_v_self) {
    e = (*v)(((PyObject *)p->__pyx_v_self), a); if (e) return e;
  }
  if (p->__pyx_t_0) {
    e = (*v)(p->__pyx_t_0, a); if (e) return e;
  }
  if (p->__pyx_t_1) {
    e = (*v)(p->__pyx_t_1, a); if (e) return e;
  }
  if (p->__pyx_t_2) {
    e = (*v)(p->__pyx_t_2, a); if (e) return e;
  }
  return 0;
}

static PyTypeObject __pyx_type_4grpc_7_cython_6cygrpc___pyx_scope_struct_55__start_shutting_down = {
  PyVarObject_HEAD_INIT(0, 0)
  "grpc._cython.cygrpc.__pyx_scope_struct_55__start_shutting_down", /*tp_name*/
  sizeof(struct __pyx_obj_4grpc_7_cython_6cygrpc___pyx_scope_struct_55__start_shutting_down), /*tp_basicsize*/
  0, /*tp_itemsize*/
  __pyx_tp_dealloc_4grpc_7_cython_6cygrpc___pyx_scope_struct_55__start_shutting_down, /*tp_dealloc*/
  #if PY_VERSION_HEX < 0x030800b4
  0, /*tp_print*/
  #endif
  #if PY_VERSION_HEX >= 0x030800b4
  0, /*tp_vectorcall_offset*/
  #endif
  0, /*tp_getattr*/
  0, /*tp_setattr*/
  #if PY_MAJOR_VERSION < 3
  0, /*tp_compare*/
  #endif
  #if PY_MAJOR_VERSION >= 3
  0, /*tp_as_async*/
  #endif
  0, /*tp_repr*/
  0, /*tp_as_number*/
  0, /*tp_as_sequence*/
  0, /*tp_as_mapping*/
  0, /*tp_hash*/
  0, /*tp_call*/
  0, /*tp_str*/
  0, /*tp_getattro*/
  0, /*tp_setattro*/
  0, /*tp_as_buffer*/
  Py_TPFLAGS_DEFAULT|Py_TPFLAGS_HAVE_VERSION_TAG|Py_TPFLAGS_CHECKTYPES|Py_TPFLAGS_HAVE_NEWBUFFER|Py_TPFLAGS_HAVE_GC, /*tp_flags*/
  0, /*tp_doc*/
  __pyx_tp_traverse_4grpc_7_cython_6cygrpc___pyx_scope_struct_55__start_shutting_down, /*tp_traverse*/
  0, /*tp_clear*/
  0, /*tp_richcompare*/
  0, /*tp_weaklistoffset*/
  0, /*tp_iter*/
  0, /*tp_iternext*/
  0, /*tp_methods*/
  0, /*tp_members*/
  0, /*tp_getset*/
  0, /*tp_base*/
  0, /*tp_dict*/
  0, /*tp_descr_get*/
  0, /*tp_descr_set*/
  0, /*tp_dictoffset*/
  0, /*tp_init*/
  0, /*tp_alloc*/
  __pyx_tp_new_4grpc_7_cython_6cygrpc___pyx_scope_struct_55__start_shutting_down, /*tp_new*/
  0, /*tp_free*/
  0, /*tp_is_gc*/
  0, /*tp_bases*/
  0, /*tp_mro*/
  0, /*tp_cache*/
  0, /*tp_subclasses*/
  0, /*tp_weaklist*/
  0, /*tp_del*/
  0, /*tp_version_tag*/
  #if PY_VERSION_HEX >= 0x030400a1
  0, /*tp_finalize*/
  #endif
  #if PY_VERSION_HEX >= 0x030800b1
  0, /*tp_vectorcall*/
  #endif
  #if PY_VERSION_HEX >= 0x030800b4 && PY_VERSION_HEX < 0x03090000
  0, /*tp_print*/
  #endif
};

static struct __pyx_obj_4grpc_7_cython_6cygrpc___pyx_scope_struct_56_shutdown *__pyx_freelist_4grpc_7_cython_6cygrpc___pyx_scope_struct_56_shutdown[8];
static int __pyx_freecount_4grpc_7_cython_6cygrpc___pyx_scope_struct_56_shutdown = 0;

static PyObject *__pyx_tp_new_4grpc_7_cython_6cygrpc___pyx_scope_struct_56_shutdown(PyTypeObject *t, CYTHON_UNUSED PyObject *a, CYTHON_UNUSED PyObject *k) {
  PyObject *o;
  if (CYTHON_COMPILING_IN_CPYTHON && likely((__pyx_freecount_4grpc_7_cython_6cygrpc___pyx_scope_struct_56_shutdown > 0) & (t->tp_basicsize == sizeof(struct __pyx_obj_4grpc_7_cython_6cygrpc___pyx_scope_struct_56_shutdown)))) {
    o = (PyObject*)__pyx_freelist_4grpc_7_cython_6cygrpc___pyx_scope_struct_56_shutdown[--__pyx_freecount_4grpc_7_cython_6cygrpc___pyx_scope_struct_56_shutdown];
    memset(o, 0, sizeof(struct __pyx_obj_4grpc_7_cython_6cygrpc___pyx_scope_struct_56_shutdown));
    (void) PyObject_INIT(o, t);
    PyObject_GC_Track(o);
  } else {
    o = (*t->tp_alloc)(t, 0);
    if (unlikely(!o)) return 0;
  }
  return o;
}

static void __pyx_tp_dealloc_4grpc_7_cython_6cygrpc___pyx_scope_struct_56_shutdown(PyObject *o) {
  struct __pyx_obj_4grpc_7_cython_6cygrpc___pyx_scope_struct_56_shutdown *p = (struct __pyx_obj_4grpc_7_cython_6cygrpc___pyx_scope_struct_56_shutdown *)o;
  PyObject_GC_UnTrack(o);
  Py_CLEAR(p->__pyx_v_grace);
  Py_CLEAR(p->__pyx_v_self);
  Py_CLEAR(p->__pyx_t_0);
  Py_CLEAR(p->__pyx_t_1);
  Py_CLEAR(p->__pyx_t_2);
  Py_CLEAR(p->__pyx_t_3);
  Py_CLEAR(p->__pyx_t_4);
  Py_CLEAR(p->__pyx_t_5);
  Py_CLEAR(p->__pyx_t_6);
  Py_CLEAR(p->__pyx_t_7);
  if (CYTHON_COMPILING_IN_CPYTHON && ((__pyx_freecount_4grpc_7_cython_6cygrpc___pyx_scope_struct_56_shutdown < 8) & (Py_TYPE(o)->tp_basicsize == sizeof(struct __pyx_obj_4grpc_7_cython_6cygrpc___pyx_scope_struct_56_shutdown)))) {
    __pyx_freelist_4grpc_7_cython_6cygrpc___pyx_scope_struct_56_shutdown[__pyx_freecount_4grpc_7_cython_6cygrpc___pyx_scope_struct_56_shutdown++] = ((struct __pyx_obj_4grpc_7_cython_6cygrpc___pyx_scope_struct_56_shutdown *)o);
  } else {
    (*Py_TYPE(o)->tp_free)(o);
  }
}

static int __pyx_tp_traverse_4grpc_7_cython_6cygrpc___pyx_scope_struct_56_shutdown(PyObject *o, visitproc v, void *a) {
  int e;
  struct __pyx_obj_4grpc_7_cython_6cygrpc___pyx_scope_struct_56_shutdown *p = (struct __pyx_obj_4grpc_7_cython_6cygrpc___pyx_scope_struct_56_shutdown *)o;
  if (p->__pyx_v_grace) {
    e = (*v)(p->__pyx_v_grace, a); if (e) return e;
  }
  if (p->__pyx_v_self) {
    e = (*v)(((PyObject *)p->__pyx_v_self), a); if (e) return e;
  }
  if (p->__pyx_t_0) {
    e = (*v)(p->__pyx_t_0, a); if (e) return e;
  }
  if (p->__pyx_t_1) {
    e = (*v)(p->__pyx_t_1, a); if (e) return e;
  }
  if (p->__pyx_t_2) {
    e = (*v)(p->__pyx_t_2, a); if (e) return e;
  }
  if (p->__pyx_t_3) {
    e = (*v)(p->__pyx_t_3, a); if (e) return e;
  }
  if (p->__pyx_t_4) {
    e = (*v)(p->__pyx_t_4, a); if (e) return e;
  }
  if (p->__pyx_t_5) {
    e = (*v)(p->__pyx_t_5, a); if (e) return e;
  }
  if (p->__pyx_t_6) {
    e = (*v)(p->__pyx_t_6, a); if (e) return e;
  }
  if (p->__pyx_t_7) {
    e = (*v)(p->__pyx_t_7, a); if (e) return e;
  }
  return 0;
}

static PyTypeObject __pyx_type_4grpc_7_cython_6cygrpc___pyx_scope_struct_56_shutdown = {
  PyVarObject_HEAD_INIT(0, 0)
  "grpc._cython.cygrpc.__pyx_scope_struct_56_shutdown", /*tp_name*/
  sizeof(struct __pyx_obj_4grpc_7_cython_6cygrpc___pyx_scope_struct_56_shutdown), /*tp_basicsize*/
  0, /*tp_itemsize*/
  __pyx_tp_dealloc_4grpc_7_cython_6cygrpc___pyx_scope_struct_56_shutdown, /*tp_dealloc*/
  #if PY_VERSION_HEX < 0x030800b4
  0, /*tp_print*/
  #endif
  #if PY_VERSION_HEX >= 0x030800b4
  0, /*tp_vectorcall_offset*/
  #endif
  0, /*tp_getattr*/
  0, /*tp_setattr*/
  #if PY_MAJOR_VERSION < 3
  0, /*tp_compare*/
  #endif
  #if PY_MAJOR_VERSION >= 3
  0, /*tp_as_async*/
  #endif
  0, /*tp_repr*/
  0, /*tp_as_number*/
  0, /*tp_as_sequence*/
  0, /*tp_as_mapping*/
  0, /*tp_hash*/
  0, /*tp_call*/
  0, /*tp_str*/
  0, /*tp_getattro*/
  0, /*tp_setattro*/
  0, /*tp_as_buffer*/
  Py_TPFLAGS_DEFAULT|Py_TPFLAGS_HAVE_VERSION_TAG|Py_TPFLAGS_CHECKTYPES|Py_TPFLAGS_HAVE_NEWBUFFER|Py_TPFLAGS_HAVE_GC, /*tp_flags*/
  0, /*tp_doc*/
  __pyx_tp_traverse_4grpc_7_cython_6cygrpc___pyx_scope_struct_56_shutdown, /*tp_traverse*/
  0, /*tp_clear*/
  0, /*tp_richcompare*/
  0, /*tp_weaklistoffset*/
  0, /*tp_iter*/
  0, /*tp_iternext*/
  0, /*tp_methods*/
  0, /*tp_members*/
  0, /*tp_getset*/
  0, /*tp_base*/
  0, /*tp_dict*/
  0, /*tp_descr_get*/
  0, /*tp_descr_set*/
  0, /*tp_dictoffset*/
  0, /*tp_init*/
  0, /*tp_alloc*/
  __pyx_tp_new_4grpc_7_cython_6cygrpc___pyx_scope_struct_56_shutdown, /*tp_new*/
  0, /*tp_free*/
  0, /*tp_is_gc*/
  0, /*tp_bases*/
  0, /*tp_mro*/
  0, /*tp_cache*/
  0, /*tp_subclasses*/
  0, /*tp_weaklist*/
  0, /*tp_del*/
  0, /*tp_version_tag*/
  #if PY_VERSION_HEX >= 0x030400a1
  0, /*tp_finalize*/
  #endif
  #if PY_VERSION_HEX >= 0x030800b1
  0, /*tp_vectorcall*/
  #endif
  #if PY_VERSION_HEX >= 0x030800b4 && PY_VERSION_HEX < 0x03090000
  0, /*tp_print*/
  #endif
};

static struct __pyx_obj_4grpc_7_cython_6cygrpc___pyx_scope_struct_57_wait_for_termination *__pyx_freelist_4grpc_7_cython_6cygrpc___pyx_scope_struct_57_wait_for_termination[8];
static int __pyx_freecount_4grpc_7_cython_6cygrpc___pyx_scope_struct_57_wait_for_termination = 0;

static PyObject *__pyx_tp_new_4grpc_7_cython_6cygrpc___pyx_scope_struct_57_wait_for_termination(PyTypeObject *t, CYTHON_UNUSED PyObject *a, CYTHON_UNUSED PyObject *k) {
  PyObject *o;
  if (CYTHON_COMPILING_IN_CPYTHON && likely((__pyx_freecount_4grpc_7_cython_6cygrpc___pyx_scope_struct_57_wait_for_termination > 0) & (t->tp_basicsize == sizeof(struct __pyx_obj_4grpc_7_cython_6cygrpc___pyx_scope_struct_57_wait_for_termination)))) {
    o = (PyObject*)__pyx_freelist_4grpc_7_cython_6cygrpc___pyx_scope_struct_57_wait_for_termination[--__pyx_freecount_4grpc_7_cython_6cygrpc___pyx_scope_struct_57_wait_for_termination];
    memset(o, 0, sizeof(struct __pyx_obj_4grpc_7_cython_6cygrpc___pyx_scope_struct_57_wait_for_termination));
    (void) PyObject_INIT(o, t);
    PyObject_GC_Track(o);
  } else {
    o = (*t->tp_alloc)(t, 0);
    if (unlikely(!o)) return 0;
  }
  return o;
}

static void __pyx_tp_dealloc_4grpc_7_cython_6cygrpc___pyx_scope_struct_57_wait_for_termination(PyObject *o) {
  struct __pyx_obj_4grpc_7_cython_6cygrpc___pyx_scope_struct_57_wait_for_termination *p = (struct __pyx_obj_4grpc_7_cython_6cygrpc___pyx_scope_struct_57_wait_for_termination *)o;
  PyObject_GC_UnTrack(o);
  Py_CLEAR(p->__pyx_v_self);
  Py_CLEAR(p->__pyx_v_timeout);
  Py_CLEAR(p->__pyx_t_0);
  Py_CLEAR(p->__pyx_t_1);
  Py_CLEAR(p->__pyx_t_2);
  if (CYTHON_COMPILING_IN_CPYTHON && ((__pyx_freecount_4grpc_7_cython_6cygrpc___pyx_scope_struct_57_wait_for_termination < 8) & (Py_TYPE(o)->tp_basicsize == sizeof(struct __pyx_obj_4grpc_7_cython_6cygrpc___pyx_scope_struct_57_wait_for_termination)))) {
    __pyx_freelist_4grpc_7_cython_6cygrpc___pyx_scope_struct_57_wait_for_termination[__pyx_freecount_4grpc_7_cython_6cygrpc___pyx_scope_struct_57_wait_for_termination++] = ((struct __pyx_obj_4grpc_7_cython_6cygrpc___pyx_scope_struct_57_wait_for_termination *)o);
  } else {
    (*Py_TYPE(o)->tp_free)(o);
  }
}

static int __pyx_tp_traverse_4grpc_7_cython_6cygrpc___pyx_scope_struct_57_wait_for_termination(PyObject *o, visitproc v, void *a) {
  int e;
  struct __pyx_obj_4grpc_7_cython_6cygrpc___pyx_scope_struct_57_wait_for_termination *p = (struct __pyx_obj_4grpc_7_cython_6cygrpc___pyx_scope_struct_57_wait_for_termination *)o;
  if (p->__pyx_v_self) {
    e = (*v)(((PyObject *)p->__pyx_v_self), a); if (e) return e;
  }
  if (p->__pyx_v_timeout) {
    e = (*v)(p->__pyx_v_timeout, a); if (e) return e;
  }
  if (p->__pyx_t_0) {
    e = (*v)(p->__pyx_t_0, a); if (e) return e;
  }
  if (p->__pyx_t_1) {
    e = (*v)(p->__pyx_t_1, a); if (e) return e;
  }
  if (p->__pyx_t_2) {
    e = (*v)(p->__pyx_t_2, a); if (e) return e;
  }
  return 0;
}

static PyTypeObject __pyx_type_4grpc_7_cython_6cygrpc___pyx_scope_struct_57_wait_for_termination = {
  PyVarObject_HEAD_INIT(0, 0)
  "grpc._cython.cygrpc.__pyx_scope_struct_57_wait_for_termination", /*tp_name*/
  sizeof(struct __pyx_obj_4grpc_7_cython_6cygrpc___pyx_scope_struct_57_wait_for_termination), /*tp_basicsize*/
  0, /*tp_itemsize*/
  __pyx_tp_dealloc_4grpc_7_cython_6cygrpc___pyx_scope_struct_57_wait_for_termination, /*tp_dealloc*/
  #if PY_VERSION_HEX < 0x030800b4
  0, /*tp_print*/
  #endif
  #if PY_VERSION_HEX >= 0x030800b4
  0, /*tp_vectorcall_offset*/
  #endif
  0, /*tp_getattr*/
  0, /*tp_setattr*/
  #if PY_MAJOR_VERSION < 3
  0, /*tp_compare*/
  #endif
  #if PY_MAJOR_VERSION >= 3
  0, /*tp_as_async*/
  #endif
  0, /*tp_repr*/
  0, /*tp_as_number*/
  0, /*tp_as_sequence*/
  0, /*tp_as_mapping*/
  0, /*tp_hash*/
  0, /*tp_call*/
  0, /*tp_str*/
  0, /*tp_getattro*/
  0, /*tp_setattro*/
  0, /*tp_as_buffer*/
  Py_TPFLAGS_DEFAULT|Py_TPFLAGS_HAVE_VERSION_TAG|Py_TPFLAGS_CHECKTYPES|Py_TPFLAGS_HAVE_NEWBUFFER|Py_TPFLAGS_HAVE_GC, /*tp_flags*/
  0, /*tp_doc*/
  __pyx_tp_traverse_4grpc_7_cython_6cygrpc___pyx_scope_struct_57_wait_for_termination, /*tp_traverse*/
  0, /*tp_clear*/
  0, /*tp_richcompare*/
  0, /*tp_weaklistoffset*/
  0, /*tp_iter*/
  0, /*tp_iternext*/
  0, /*tp_methods*/
  0, /*tp_members*/
  0, /*tp_getset*/
  0, /*tp_base*/
  0, /*tp_dict*/
  0, /*tp_descr_get*/
  0, /*tp_descr_set*/
  0, /*tp_dictoffset*/
  0, /*tp_init*/
  0, /*tp_alloc*/
  __pyx_tp_new_4grpc_7_cython_6cygrpc___pyx_scope_struct_57_wait_for_termination, /*tp_new*/
  0, /*tp_free*/
  0, /*tp_is_gc*/
  0, /*tp_bases*/
  0, /*tp_mro*/
  0, /*tp_cache*/
  0, /*tp_subclasses*/
  0, /*tp_weaklist*/
  0, /*tp_del*/
  0, /*tp_version_tag*/
  #if PY_VERSION_HEX >= 0x030400a1
  0, /*tp_finalize*/
  #endif
  #if PY_VERSION_HEX >= 0x030800b1
  0, /*tp_vectorcall*/
  #endif
  #if PY_VERSION_HEX >= 0x030800b4 && PY_VERSION_HEX < 0x03090000
  0, /*tp_print*/
  #endif
};

static PyMethodDef __pyx_methods[] = {
  {"init_grpc_aio", (PyCFunction)__pyx_pw_4grpc_7_cython_6cygrpc_141init_grpc_aio, METH_NOARGS, __pyx_doc_4grpc_7_cython_6cygrpc_140init_grpc_aio},
  {"shutdown_grpc_aio", (PyCFunction)__pyx_pw_4grpc_7_cython_6cygrpc_143shutdown_grpc_aio, METH_NOARGS, __pyx_doc_4grpc_7_cython_6cygrpc_142shutdown_grpc_aio},
  {0, 0, 0, 0}
};

#if PY_MAJOR_VERSION >= 3
#if CYTHON_PEP489_MULTI_PHASE_INIT
static PyObject* __pyx_pymod_create(PyObject *spec, PyModuleDef *def); /*proto*/
static int __pyx_pymod_exec_cygrpc(PyObject* module); /*proto*/
static PyModuleDef_Slot __pyx_moduledef_slots[] = {
  {Py_mod_create, (void*)__pyx_pymod_create},
  {Py_mod_exec, (void*)__pyx_pymod_exec_cygrpc},
  {0, NULL}
};
#endif

static struct PyModuleDef __pyx_moduledef = {
    PyModuleDef_HEAD_INIT,
    "cygrpc",
    0, /* m_doc */
  #if CYTHON_PEP489_MULTI_PHASE_INIT
    0, /* m_size */
  #else
    -1, /* m_size */
  #endif
    __pyx_methods /* m_methods */,
  #if CYTHON_PEP489_MULTI_PHASE_INIT
    __pyx_moduledef_slots, /* m_slots */
  #else
    NULL, /* m_reload */
  #endif
    NULL, /* m_traverse */
    NULL, /* m_clear */
    NULL /* m_free */
};
#endif
#ifndef CYTHON_SMALL_CODE
#if defined(__clang__)
    #define CYTHON_SMALL_CODE
#elif defined(__GNUC__) && (__GNUC__ > 4 || (__GNUC__ == 4 && __GNUC_MINOR__ >= 3))
    #define CYTHON_SMALL_CODE __attribute__((cold))
#else
    #define CYTHON_SMALL_CODE
#endif
#endif

static __Pyx_StringTabEntry __pyx_string_tab[] = {
  {&__pyx_kp_b_, __pyx_k_, sizeof(__pyx_k_), 0, 0, 0, 0},
  {&__pyx_kp_s_, __pyx_k_, sizeof(__pyx_k_), 0, 0, 1, 0},
  {&__pyx_kp_s_0, __pyx_k_0, sizeof(__pyx_k_0), 0, 0, 1, 0},
  {&__pyx_kp_s_0_0_0_0, __pyx_k_0_0_0_0, sizeof(__pyx_k_0_0_0_0), 0, 0, 1, 0},
  {&__pyx_kp_s_1, __pyx_k_1, sizeof(__pyx_k_1), 0, 0, 1, 0},
  {&__pyx_n_s_AF_INET, __pyx_k_AF_INET, sizeof(__pyx_k_AF_INET), 0, 0, 1, 1},
  {&__pyx_n_s_AF_INET6, __pyx_k_AF_INET6, sizeof(__pyx_k_AF_INET6), 0, 0, 1, 1},
  {&__pyx_n_s_ALTSChannelCredentials, __pyx_k_ALTSChannelCredentials, sizeof(__pyx_k_ALTSChannelCredentials), 0, 0, 1, 1},
  {&__pyx_n_s_AWAIT_THREADS_TIMEOUT_SECONDS, __pyx_k_AWAIT_THREADS_TIMEOUT_SECONDS, sizeof(__pyx_k_AWAIT_THREADS_TIMEOUT_SECONDS), 0, 0, 1, 1},
  {&__pyx_n_s_AbortError, __pyx_k_AbortError, sizeof(__pyx_k_AbortError), 0, 0, 1, 1},
  {&__pyx_kp_s_Abort_already_called, __pyx_k_Abort_already_called, sizeof(__pyx_k_Abort_already_called), 0, 0, 1, 0},
  {&__pyx_kp_s_Abort_error_has_been_replaced, __pyx_k_Abort_error_has_been_replaced, sizeof(__pyx_k_Abort_error_has_been_replaced), 0, 0, 1, 0},
  {&__pyx_kp_s_Abort_error_unexpectedly_suppres, __pyx_k_Abort_error_unexpectedly_suppres, sizeof(__pyx_k_Abort_error_unexpectedly_suppres), 0, 0, 1, 0},
  {&__pyx_kp_s_Aborting_method_s_due_to_server, __pyx_k_Aborting_method_s_due_to_server, sizeof(__pyx_k_Aborting_method_s_due_to_server), 0, 0, 1, 0},
  {&__pyx_n_s_ActiveThreadCount, __pyx_k_ActiveThreadCount, sizeof(__pyx_k_ActiveThreadCount), 0, 0, 1, 1},
  {&__pyx_n_s_ActiveThreadCount___init, __pyx_k_ActiveThreadCount___init, sizeof(__pyx_k_ActiveThreadCount___init), 0, 0, 1, 1},
  {&__pyx_n_s_ActiveThreadCount_await_zero_th, __pyx_k_ActiveThreadCount_await_zero_th, sizeof(__pyx_k_ActiveThreadCount_await_zero_th), 0, 0, 1, 1},
  {&__pyx_n_s_ActiveThreadCount_decrement, __pyx_k_ActiveThreadCount_decrement, sizeof(__pyx_k_ActiveThreadCount_decrement), 0, 0, 1, 1},
  {&__pyx_n_s_ActiveThreadCount_increment, __pyx_k_ActiveThreadCount_increment, sizeof(__pyx_k_ActiveThreadCount_increment), 0, 0, 1, 1},
  {&__pyx_n_s_AioCall, __pyx_k_AioCall, sizeof(__pyx_k_AioCall), 0, 0, 1, 1},
  {&__pyx_n_s_AioCall__handle_status_once_rec, __pyx_k_AioCall__handle_status_once_rec, sizeof(__pyx_k_AioCall__handle_status_once_rec), 0, 0, 1, 1},
  {&__pyx_n_s_AioCall_initial_metadata, __pyx_k_AioCall_initial_metadata, sizeof(__pyx_k_AioCall_initial_metadata), 0, 0, 1, 1},
  {&__pyx_n_s_AioCall_initiate_stream_stream, __pyx_k_AioCall_initiate_stream_stream, sizeof(__pyx_k_AioCall_initiate_stream_stream), 0, 0, 1, 1},
  {&__pyx_n_s_AioCall_initiate_unary_stream, __pyx_k_AioCall_initiate_unary_stream, sizeof(__pyx_k_AioCall_initiate_unary_stream), 0, 0, 1, 1},
  {&__pyx_n_s_AioCall_receive_serialized_mess, __pyx_k_AioCall_receive_serialized_mess, sizeof(__pyx_k_AioCall_receive_serialized_mess), 0, 0, 1, 1},
  {&__pyx_n_s_AioCall_send_receive_close, __pyx_k_AioCall_send_receive_close, sizeof(__pyx_k_AioCall_send_receive_close), 0, 0, 1, 1},
  {&__pyx_n_s_AioCall_send_serialized_message, __pyx_k_AioCall_send_serialized_message, sizeof(__pyx_k_AioCall_send_serialized_message), 0, 0, 1, 1},
  {&__pyx_n_s_AioCall_status, __pyx_k_AioCall_status, sizeof(__pyx_k_AioCall_status), 0, 0, 1, 1},
  {&__pyx_n_s_AioCall_stream_unary, __pyx_k_AioCall_stream_unary, sizeof(__pyx_k_AioCall_stream_unary), 0, 0, 1, 1},
  {&__pyx_n_s_AioCall_unary_unary, __pyx_k_AioCall_unary_unary, sizeof(__pyx_k_AioCall_unary_unary), 0, 0, 1, 1},
  {&__pyx_n_s_AioChannel, __pyx_k_AioChannel, sizeof(__pyx_k_AioChannel), 0, 0, 1, 1},
  {&__pyx_n_s_AioChannel_watch_connectivity_st, __pyx_k_AioChannel_watch_connectivity_st, sizeof(__pyx_k_AioChannel_watch_connectivity_st), 0, 0, 1, 1},
  {&__pyx_n_s_AioRpcStatus, __pyx_k_AioRpcStatus, sizeof(__pyx_k_AioRpcStatus), 0, 0, 1, 1},
  {&__pyx_n_s_AioServer, __pyx_k_AioServer, sizeof(__pyx_k_AioServer), 0, 0, 1, 1},
  {&__pyx_n_s_AioServer__request_call, __pyx_k_AioServer__request_call, sizeof(__pyx_k_AioServer__request_call), 0, 0, 1, 1},
  {&__pyx_n_s_AioServer__server_main_loop, __pyx_k_AioServer__server_main_loop, sizeof(__pyx_k_AioServer__server_main_loop), 0, 0, 1, 1},
  {&__pyx_n_s_AioServer__start_shutting_down, __pyx_k_AioServer__start_shutting_down, sizeof(__pyx_k_AioServer__start_shutting_down), 0, 0, 1, 1},
  {&__pyx_n_s_AioServer_shutdown, __pyx_k_AioServer_shutdown, sizeof(__pyx_k_AioServer_shutdown), 0, 0, 1, 1},
  {&__pyx_n_s_AioServer_start, __pyx_k_AioServer_start, sizeof(__pyx_k_AioServer_start), 0, 0, 1, 1},
  {&__pyx_n_s_AioServer_wait_for_termination, __pyx_k_AioServer_wait_for_termination, sizeof(__pyx_k_AioServer_wait_for_termination), 0, 0, 1, 1},
  {&__pyx_n_s_AioState, __pyx_k_AioState, sizeof(__pyx_k_AioState), 0, 0, 1, 1},
  {&__pyx_n_s_AssertionError, __pyx_k_AssertionError, sizeof(__pyx_k_AssertionError), 0, 0, 1, 1},
  {&__pyx_n_s_AsyncIOEngine, __pyx_k_AsyncIOEngine, sizeof(__pyx_k_AsyncIOEngine), 0, 0, 1, 1},
  {&__pyx_n_s_AttributeError, __pyx_k_AttributeError, sizeof(__pyx_k_AttributeError), 0, 0, 1, 1},
  {&__pyx_n_s_BaseCompletionQueue, __pyx_k_BaseCompletionQueue, sizeof(__pyx_k_BaseCompletionQueue), 0, 0, 1, 1},
  {&__pyx_n_s_BaseError, __pyx_k_BaseError, sizeof(__pyx_k_BaseError), 0, 0, 1, 1},
  {&__pyx_n_s_BaseException, __pyx_k_BaseException, sizeof(__pyx_k_BaseException), 0, 0, 1, 1},
  {&__pyx_n_s_BatchOperationEvent, __pyx_k_BatchOperationEvent, sizeof(__pyx_k_BatchOperationEvent), 0, 0, 1, 1},
  {&__pyx_n_s_BatchOperationTag, __pyx_k_BatchOperationTag, sizeof(__pyx_k_BatchOperationTag), 0, 0, 1, 1},
  {&__pyx_kp_s_Binary_metadata_key_s_expected_b, __pyx_k_Binary_metadata_key_s_expected_b, sizeof(__pyx_k_Binary_metadata_key_s_expected_b), 0, 0, 1, 0},
  {&__pyx_n_s_BoundEventLoop, __pyx_k_BoundEventLoop, sizeof(__pyx_k_BoundEventLoop), 0, 0, 1, 1},
  {&__pyx_n_s_COMPRESSION_METADATA_STRING_MAP, __pyx_k_COMPRESSION_METADATA_STRING_MAP, sizeof(__pyx_k_COMPRESSION_METADATA_STRING_MAP), 0, 0, 1, 1},
  {&__pyx_n_s_CUSTOM_IO_MANAGER, __pyx_k_CUSTOM_IO_MANAGER, sizeof(__pyx_k_CUSTOM_IO_MANAGER), 0, 0, 1, 1},
  {&__pyx_n_s_CYGRPC_STATUS_CODE_TO_STATUS_COD, __pyx_k_CYGRPC_STATUS_CODE_TO_STATUS_COD, sizeof(__pyx_k_CYGRPC_STATUS_CODE_TO_STATUS_COD), 0, 0, 1, 1},
  {&__pyx_n_s_Call, __pyx_k_Call, sizeof(__pyx_k_Call), 0, 0, 1, 1},
  {&__pyx_n_s_CallCredentials, __pyx_k_CallCredentials, sizeof(__pyx_k_CallCredentials), 0, 0, 1, 1},
  {&__pyx_n_s_CallDetails, __pyx_k_CallDetails, sizeof(__pyx_k_CallDetails), 0, 0, 1, 1},
  {&__pyx_n_s_CallError, __pyx_k_CallError, sizeof(__pyx_k_CallError), 0, 0, 1, 1},
  {&__pyx_n_s_CallState, __pyx_k_CallState, sizeof(__pyx_k_CallState), 0, 0, 1, 1},
  {&__pyx_kp_s_Call_credentials_are_only_valid, __pyx_k_Call_credentials_are_only_valid, sizeof(__pyx_k_Call_credentials_are_only_valid), 0, 0, 1, 0},
  {&__pyx_kp_s_Call_credentials_may_not_be_NULL, __pyx_k_Call_credentials_may_not_be_NULL, sizeof(__pyx_k_Call_credentials_may_not_be_NULL), 0, 0, 1, 0},
  {&__pyx_n_s_CallbackFailureHandler, __pyx_k_CallbackFailureHandler, sizeof(__pyx_k_CallbackFailureHandler), 0, 0, 1, 1},
  {&__pyx_n_s_CallbackWrapper, __pyx_k_CallbackWrapper, sizeof(__pyx_k_CallbackWrapper), 0, 0, 1, 1},
  {&__pyx_n_s_CancelledError, __pyx_k_CancelledError, sizeof(__pyx_k_CancelledError), 0, 0, 1, 1},
  {&__pyx_kp_s_Cannot_invoke_RPC_on_closed_chan, __pyx_k_Cannot_invoke_RPC_on_closed_chan, sizeof(__pyx_k_Cannot_invoke_RPC_on_closed_chan), 0, 0, 1, 0},
  {&__pyx_kp_s_Cannot_invoke_RPC_s, __pyx_k_Cannot_invoke_RPC_s, sizeof(__pyx_k_Cannot_invoke_RPC_s), 0, 0, 1, 0},
  {&__pyx_n_s_CensusContext, __pyx_k_CensusContext, sizeof(__pyx_k_CensusContext), 0, 0, 1, 1},
  {&__pyx_n_s_Channel, __pyx_k_Channel, sizeof(__pyx_k_Channel), 0, 0, 1, 1},
  {&__pyx_n_s_ChannelArg, __pyx_k_ChannelArg, sizeof(__pyx_k_ChannelArg), 0, 0, 1, 1},
  {&__pyx_n_s_ChannelArgKey, __pyx_k_ChannelArgKey, sizeof(__pyx_k_ChannelArgKey), 0, 0, 1, 1},
  {&__pyx_n_s_ChannelArgs, __pyx_k_ChannelArgs, sizeof(__pyx_k_ChannelArgs), 0, 0, 1, 1},
  {&__pyx_n_s_ChannelCredentials, __pyx_k_ChannelCredentials, sizeof(__pyx_k_ChannelCredentials), 0, 0, 1, 1},
  {&__pyx_n_s_ChannelState, __pyx_k_ChannelState, sizeof(__pyx_k_ChannelState), 0, 0, 1, 1},
  {&__pyx_kp_s_Channel_is_closed, __pyx_k_Channel_is_closed, sizeof(__pyx_k_Channel_is_closed), 0, 0, 1, 0},
  {&__pyx_n_s_CompletionQueue, __pyx_k_CompletionQueue, sizeof(__pyx_k_CompletionQueue), 0, 0, 1, 1},
  {&__pyx_n_s_CompletionType, __pyx_k_CompletionType, sizeof(__pyx_k_CompletionType), 0, 0, 1, 1},
  {&__pyx_n_s_CompositeCallCredentials, __pyx_k_CompositeCallCredentials, sizeof(__pyx_k_CompositeCallCredentials), 0, 0, 1, 1},
  {&__pyx_n_s_CompositeChannelCredentials, __pyx_k_CompositeChannelCredentials, sizeof(__pyx_k_CompositeChannelCredentials), 0, 0, 1, 1},
  {&__pyx_n_s_CompressionAlgorithm, __pyx_k_CompressionAlgorithm, sizeof(__pyx_k_CompressionAlgorithm), 0, 0, 1, 1},
  {&__pyx_n_s_CompressionLevel, __pyx_k_CompressionLevel, sizeof(__pyx_k_CompressionLevel), 0, 0, 1, 1},
  {&__pyx_n_s_CompressionOptions, __pyx_k_CompressionOptions, sizeof(__pyx_k_CompressionOptions), 0, 0, 1, 1},
  {&__pyx_kp_s_Compression_setting_must_be_spec, __pyx_k_Compression_setting_must_be_spec, sizeof(__pyx_k_Compression_setting_must_be_spec), 0, 0, 1, 0},
  {&__pyx_n_s_ComputeEngineChannelCredentials, __pyx_k_ComputeEngineChannelCredentials, sizeof(__pyx_k_ComputeEngineChannelCredentials), 0, 0, 1, 1},
  {&__pyx_n_s_ConcurrentRpcLimiter, __pyx_k_ConcurrentRpcLimiter, sizeof(__pyx_k_ConcurrentRpcLimiter), 0, 0, 1, 1},
  {&__pyx_n_s_ConcurrentRpcLimiter__decrease, __pyx_k_ConcurrentRpcLimiter__decrease, sizeof(__pyx_k_ConcurrentRpcLimiter__decrease), 0, 0, 1, 1},
  {&__pyx_n_s_ConcurrentRpcLimiter_check_befo, __pyx_k_ConcurrentRpcLimiter_check_befo, sizeof(__pyx_k_ConcurrentRpcLimiter_check_befo), 0, 0, 1, 1},
  {&__pyx_n_s_Condition, __pyx_k_Condition, sizeof(__pyx_k_Condition), 0, 0, 1, 1},
  {&__pyx_n_s_ConnectivityEvent, __pyx_k_ConnectivityEvent, sizeof(__pyx_k_ConnectivityEvent), 0, 0, 1, 1},
  {&__pyx_n_s_ConnectivityState, __pyx_k_ConnectivityState, sizeof(__pyx_k_ConnectivityState), 0, 0, 1, 1},
  {&__pyx_n_s_ConnectivityTag, __pyx_k_ConnectivityTag, sizeof(__pyx_k_ConnectivityTag), 0, 0, 1, 1},
  {&__pyx_kp_s_Core_should_not_return_GRPC_QUEU, __pyx_k_Core_should_not_return_GRPC_QUEU, sizeof(__pyx_k_Core_should_not_return_GRPC_QUEU), 0, 0, 1, 0},
  {&__pyx_kp_s_Credentials_couldn_t_have_been_s, __pyx_k_Credentials_couldn_t_have_been_s, sizeof(__pyx_k_Credentials_couldn_t_have_been_s), 0, 0, 1, 0},
  {&__pyx_kp_s_Dedicated_exception_class_for_wa, __pyx_k_Dedicated_exception_class_for_wa, sizeof(__pyx_k_Dedicated_exception_class_for_wa), 0, 0, 1, 0},
  {&__pyx_n_s_EMPTY_FLAGS, __pyx_k_EMPTY_FLAGS, sizeof(__pyx_k_EMPTY_FLAGS), 0, 0, 1, 1},
  {&__pyx_n_s_EMPTY_MASK, __pyx_k_EMPTY_MASK, sizeof(__pyx_k_EMPTY_MASK), 0, 0, 1, 1},
  {&__pyx_n_s_ENOTCONN, __pyx_k_ENOTCONN, sizeof(__pyx_k_ENOTCONN), 0, 0, 1, 1},
  {&__pyx_n_s_EOF, __pyx_k_EOF, sizeof(__pyx_k_EOF), 0, 0, 1, 1},
  {&__pyx_n_s_EOF_2, __pyx_k_EOF_2, sizeof(__pyx_k_EOF_2), 0, 0, 1, 1},
  {&__pyx_n_s_EOF___bool, __pyx_k_EOF___bool, sizeof(__pyx_k_EOF___bool), 0, 0, 1, 1},
  {&__pyx_n_s_EOF___len, __pyx_k_EOF___len, sizeof(__pyx_k_EOF___len), 0, 0, 1, 1},
  {&__pyx_n_s_EOF___repr, __pyx_k_EOF___repr, sizeof(__pyx_k_EOF___repr), 0, 0, 1, 1},
  {&__pyx_n_s_EOF___str, __pyx_k_EOF___str, sizeof(__pyx_k_EOF___str), 0, 0, 1, 1},
  {&__pyx_n_s_EOF__repr, __pyx_k_EOF__repr, sizeof(__pyx_k_EOF__repr), 0, 0, 1, 1},
  {&__pyx_n_s_EX_USAGE, __pyx_k_EX_USAGE, sizeof(__pyx_k_EX_USAGE), 0, 0, 1, 1},
  {&__pyx_n_s_Enum, __pyx_k_Enum, sizeof(__pyx_k_Enum), 0, 0, 1, 1},
  {&__pyx_kp_s_Error_fetching_certificate_confi, __pyx_k_Error_fetching_certificate_confi, sizeof(__pyx_k_Error_fetching_certificate_confi), 0, 0, 1, 0},
  {&__pyx_kp_s_Error_fetching_certificate_confi_2, __pyx_k_Error_fetching_certificate_confi_2, sizeof(__pyx_k_Error_fetching_certificate_confi_2), 0, 0, 1, 0},
  {&__pyx_kp_s_Error_in_grpc_server_request_cal, __pyx_k_Error_in_grpc_server_request_cal, sizeof(__pyx_k_Error_in_grpc_server_request_cal), 0, 0, 1, 0},
  {&__pyx_n_s_Event, __pyx_k_Event, sizeof(__pyx_k_Event), 0, 0, 1, 1},
  {&__pyx_n_s_ExecuteBatchError, __pyx_k_ExecuteBatchError, sizeof(__pyx_k_ExecuteBatchError), 0, 0, 1, 1},
  {&__pyx_kp_s_Exiting_child_due_to_raised_exce, __pyx_k_Exiting_child_due_to_raised_exce, sizeof(__pyx_k_Exiting_child_due_to_raised_exce), 0, 0, 1, 0},
  {&__pyx_kp_s_Expected_bytes_str_or_unicode_no, __pyx_k_Expected_bytes_str_or_unicode_no, sizeof(__pyx_k_Expected_bytes_str_or_unicode_no), 0, 0, 1, 0},
  {&__pyx_kp_s_Expected_int_bytes_or_behavior_g, __pyx_k_Expected_int_bytes_or_behavior_g, sizeof(__pyx_k_Expected_int_bytes_or_behavior_g), 0, 0, 1, 0},
  {&__pyx_kp_s_Expected_str_not, __pyx_k_Expected_str_not, sizeof(__pyx_k_Expected_str_not), 0, 0, 1, 0},
  {&__pyx_kp_s_Expecting_non_ok_status_code, __pyx_k_Expecting_non_ok_status_code, sizeof(__pyx_k_Expecting_non_ok_status_code), 0, 0, 1, 0},
  {&__pyx_kp_s_Failed_grpc_call_start_batch, __pyx_k_Failed_grpc_call_start_batch, sizeof(__pyx_k_Failed_grpc_call_start_batch), 0, 0, 1, 0},
  {&__pyx_kp_s_Failed_s_s, __pyx_k_Failed_s_s, sizeof(__pyx_k_Failed_s_s), 0, 0, 1, 0},
  {&__pyx_kp_s_Failed_to_get_server_sockets_ple, __pyx_k_Failed_to_get_server_sockets_ple, sizeof(__pyx_k_Failed_to_get_server_sockets_ple), 0, 0, 1, 0},
  {&__pyx_kp_s_Failed_to_get_servers_please_ens, __pyx_k_Failed_to_get_servers_please_ens, sizeof(__pyx_k_Failed_to_get_servers_please_ens), 0, 0, 1, 0},
  {&__pyx_kp_s_Failed_to_get_the_channel_please, __pyx_k_Failed_to_get_the_channel_please, sizeof(__pyx_k_Failed_to_get_the_channel_please), 0, 0, 1, 0},
  {&__pyx_kp_s_Failed_to_get_the_server_please, __pyx_k_Failed_to_get_the_server_please, sizeof(__pyx_k_Failed_to_get_the_server_please), 0, 0, 1, 0},
  {&__pyx_kp_s_Failed_to_get_the_socket_please, __pyx_k_Failed_to_get_the_socket_please, sizeof(__pyx_k_Failed_to_get_the_socket_please), 0, 0, 1, 0},
  {&__pyx_kp_s_Failed_to_get_the_subchannel_ple, __pyx_k_Failed_to_get_the_subchannel_ple, sizeof(__pyx_k_Failed_to_get_the_subchannel_ple), 0, 0, 1, 0},
  {&__pyx_kp_s_Failed_to_get_top_channels_pleas, __pyx_k_Failed_to_get_top_channels_pleas, sizeof(__pyx_k_Failed_to_get_top_channels_pleas), 0, 0, 1, 0},
  {&__pyx_kp_s_Failed_to_receive_any_message_fr, __pyx_k_Failed_to_receive_any_message_fr, sizeof(__pyx_k_Failed_to_receive_any_message_fr), 0, 0, 1, 0},
  {&__pyx_kp_s_Failed_to_shutdown_gRPC_Core_aft, __pyx_k_Failed_to_shutdown_gRPC_Core_aft, sizeof(__pyx_k_Failed_to_shutdown_gRPC_Core_aft), 0, 0, 1, 0},
  {&__pyx_kp_s_Failed_to_shutdown_gRPC_Python_t, __pyx_k_Failed_to_shutdown_gRPC_Python_t, sizeof(__pyx_k_Failed_to_shutdown_gRPC_Python_t), 0, 0, 1, 0},
  {&__pyx_n_s_ForkManagedThread, __pyx_k_ForkManagedThread, sizeof(__pyx_k_ForkManagedThread), 0, 0, 1, 1},
  {&__pyx_n_s_ForkManagedThread___init, __pyx_k_ForkManagedThread___init, sizeof(__pyx_k_ForkManagedThread___init), 0, 0, 1, 1},
  {&__pyx_n_s_ForkManagedThread___init___local, __pyx_k_ForkManagedThread___init___local, sizeof(__pyx_k_ForkManagedThread___init___local), 0, 0, 1, 1},
  {&__pyx_n_s_ForkManagedThread_join, __pyx_k_ForkManagedThread_join, sizeof(__pyx_k_ForkManagedThread_join), 0, 0, 1, 1},
  {&__pyx_n_s_ForkManagedThread_setDaemon, __pyx_k_ForkManagedThread_setDaemon, sizeof(__pyx_k_ForkManagedThread_setDaemon), 0, 0, 1, 1},
  {&__pyx_n_s_ForkManagedThread_start, __pyx_k_ForkManagedThread_start, sizeof(__pyx_k_ForkManagedThread_start), 0, 0, 1, 1},
  {&__pyx_n_s_ForkState, __pyx_k_ForkState, sizeof(__pyx_k_ForkState), 0, 0, 1, 1},
  {&__pyx_n_s_ForkState___init, __pyx_k_ForkState___init, sizeof(__pyx_k_ForkState___init), 0, 0, 1, 1},
  {&__pyx_n_s_GRPC_ASYNCIO_ENGINE, __pyx_k_GRPC_ASYNCIO_ENGINE, sizeof(__pyx_k_GRPC_ASYNCIO_ENGINE), 0, 0, 1, 1},
  {&__pyx_n_s_GRPC_COMPRESSION_CHANNEL_DEFAULT, __pyx_k_GRPC_COMPRESSION_CHANNEL_DEFAULT, sizeof(__pyx_k_GRPC_COMPRESSION_CHANNEL_DEFAULT), 0, 0, 1, 1},
  {&__pyx_n_s_GRPC_COMPRESSION_REQUEST_ALGORIT, __pyx_k_GRPC_COMPRESSION_REQUEST_ALGORIT, sizeof(__pyx_k_GRPC_COMPRESSION_REQUEST_ALGORIT), 0, 0, 1, 1},
  {&__pyx_n_s_GRPC_ENABLE_FORK_SUPPORT, __pyx_k_GRPC_ENABLE_FORK_SUPPORT, sizeof(__pyx_k_GRPC_ENABLE_FORK_SUPPORT), 0, 0, 1, 1},
  {&__pyx_n_s_GRPC_ENABLE_FORK_SUPPORT_2, __pyx_k_GRPC_ENABLE_FORK_SUPPORT_2, sizeof(__pyx_k_GRPC_ENABLE_FORK_SUPPORT_2), 0, 0, 1, 1},
  {&__pyx_n_s_GRPC_PROPAGATE_CANCELLATION, __pyx_k_GRPC_PROPAGATE_CANCELLATION, sizeof(__pyx_k_GRPC_PROPAGATE_CANCELLATION), 0, 0, 1, 1},
  {&__pyx_n_s_GRPC_PROPAGATE_CENSUS_STATS_CONT, __pyx_k_GRPC_PROPAGATE_CENSUS_STATS_CONT, sizeof(__pyx_k_GRPC_PROPAGATE_CENSUS_STATS_CONT), 0, 0, 1, 1},
  {&__pyx_n_s_GRPC_PROPAGATE_CENSUS_TRACING_CO, __pyx_k_GRPC_PROPAGATE_CENSUS_TRACING_CO, sizeof(__pyx_k_GRPC_PROPAGATE_CENSUS_TRACING_CO), 0, 0, 1, 1},
  {&__pyx_n_s_GRPC_PROPAGATE_DEADLINE, __pyx_k_GRPC_PROPAGATE_DEADLINE, sizeof(__pyx_k_GRPC_PROPAGATE_DEADLINE), 0, 0, 1, 1},
  {&__pyx_n_s_GRPC_PROPAGATE_DEFAULTS, __pyx_k_GRPC_PROPAGATE_DEFAULTS, sizeof(__pyx_k_GRPC_PROPAGATE_DEFAULTS), 0, 0, 1, 1},
  {&__pyx_n_s_Group, __pyx_k_Group, sizeof(__pyx_k_Group), 0, 0, 1, 1},
  {&__pyx_n_s_GrpcArgWrapper, __pyx_k_GrpcArgWrapper, sizeof(__pyx_k_GrpcArgWrapper), 0, 0, 1, 1},
  {&__pyx_n_s_GrpcCallWrapper, __pyx_k_GrpcCallWrapper, sizeof(__pyx_k_GrpcCallWrapper), 0, 0, 1, 1},
  {&__pyx_n_s_HandlerCallDetails, __pyx_k_HandlerCallDetails, sizeof(__pyx_k_HandlerCallDetails), 0, 0, 1, 1},
  {&__pyx_n_s_IMMUTABLE_EMPTY_METADATA, __pyx_k_IMMUTABLE_EMPTY_METADATA, sizeof(__pyx_k_IMMUTABLE_EMPTY_METADATA), 0, 0, 1, 1},
  {&__pyx_n_s_INTERNAL_CALL_ERROR_MESSAGE_FOR, __pyx_k_INTERNAL_CALL_ERROR_MESSAGE_FOR, sizeof(__pyx_k_INTERNAL_CALL_ERROR_MESSAGE_FOR), 0, 0, 1, 1},
  {&__pyx_n_s_IOError, __pyx_k_IOError, sizeof(__pyx_k_IOError), 0, 0, 1, 1},
  {&__pyx_n_s_IPPROTO_TCP, __pyx_k_IPPROTO_TCP, sizeof(__pyx_k_IPPROTO_TCP), 0, 0, 1, 1},
  {&__pyx_n_s_ImportError, __pyx_k_ImportError, sizeof(__pyx_k_ImportError), 0, 0, 1, 1},
  {&__pyx_kp_s_Incompatible_checksums_s_vs_0xa3, __pyx_k_Incompatible_checksums_s_vs_0xa3, sizeof(__pyx_k_Incompatible_checksums_s_vs_0xa3), 0, 0, 1, 0},
  {&__pyx_kp_s_Incompatible_checksums_s_vs_0xd4, __pyx_k_Incompatible_checksums_s_vs_0xd4, sizeof(__pyx_k_Incompatible_checksums_s_vs_0xd4), 0, 0, 1, 0},
  {&__pyx_n_s_InitialMetadataFlags, __pyx_k_InitialMetadataFlags, sizeof(__pyx_k_InitialMetadataFlags), 0, 0, 1, 1},
  {&__pyx_n_s_InsecureChannelCredentials, __pyx_k_InsecureChannelCredentials, sizeof(__pyx_k_InsecureChannelCredentials), 0, 0, 1, 1},
  {&__pyx_n_s_IntegratedCall, __pyx_k_IntegratedCall, sizeof(__pyx_k_IntegratedCall), 0, 0, 1, 1},
  {&__pyx_n_s_InternalError, __pyx_k_InternalError, sizeof(__pyx_k_InternalError), 0, 0, 1, 1},
  {&__pyx_kp_s_Internal_gRPC_call_error_d, __pyx_k_Internal_gRPC_call_error_d, sizeof(__pyx_k_Internal_gRPC_call_error_d), 0, 0, 1, 0},
  {&__pyx_kp_s_Invalid_encoding_on_s, __pyx_k_Invalid_encoding_on_s, sizeof(__pyx_k_Invalid_encoding_on_s), 0, 0, 1, 0},
  {&__pyx_n_s_KeyError, __pyx_k_KeyError, sizeof(__pyx_k_KeyError), 0, 0, 1, 1},
  {&__pyx_n_s_KeyboardInterrupt, __pyx_k_KeyboardInterrupt, sizeof(__pyx_k_KeyboardInterrupt), 0, 0, 1, 1},
  {&__pyx_n_s_LOGGER, __pyx_k_LOGGER, sizeof(__pyx_k_LOGGER), 0, 0, 1, 1},
  {&__pyx_n_s_LocalChannelCredentials, __pyx_k_LocalChannelCredentials, sizeof(__pyx_k_LocalChannelCredentials), 0, 0, 1, 1},
  {&__pyx_n_s_LocalConnectionType, __pyx_k_LocalConnectionType, sizeof(__pyx_k_LocalConnectionType), 0, 0, 1, 1},
  {&__pyx_kp_s_Locally_aborted, __pyx_k_Locally_aborted, sizeof(__pyx_k_Locally_aborted), 0, 0, 1, 0},
  {&__pyx_n_s_Lock, __pyx_k_Lock, sizeof(__pyx_k_Lock), 0, 0, 1, 1},
  {&__pyx_n_s_MessageReceiver, __pyx_k_MessageReceiver, sizeof(__pyx_k_MessageReceiver), 0, 0, 1, 1},
  {&__pyx_n_s_MessageReceiver___anext, __pyx_k_MessageReceiver___anext, sizeof(__pyx_k_MessageReceiver___anext), 0, 0, 1, 1},
  {&__pyx_n_s_MessageReceiver__async_message, __pyx_k_MessageReceiver__async_message, sizeof(__pyx_k_MessageReceiver__async_message), 0, 0, 1, 1},
  {&__pyx_n_s_MetadataPluginCallCredentials, __pyx_k_MetadataPluginCallCredentials, sizeof(__pyx_k_MetadataPluginCallCredentials), 0, 0, 1, 1},
  {&__pyx_n_s_Metadatum, __pyx_k_Metadatum, sizeof(__pyx_k_Metadatum), 0, 0, 1, 1},
  {&__pyx_kp_s_Method_not_found, __pyx_k_Method_not_found, sizeof(__pyx_k_Method_not_found), 0, 0, 1, 0},
  {&__pyx_n_s_NON_OK_CALL_REPRESENTATION, __pyx_k_NON_OK_CALL_REPRESENTATION, sizeof(__pyx_k_NON_OK_CALL_REPRESENTATION), 0, 0, 1, 1},
  {&__pyx_kp_s_No_custom_hooks_are_implemented, __pyx_k_No_custom_hooks_are_implemented, sizeof(__pyx_k_No_custom_hooks_are_implemented), 0, 0, 1, 0},
  {&__pyx_kp_s_Non_thread_safe_operation, __pyx_k_Non_thread_safe_operation, sizeof(__pyx_k_Non_thread_safe_operation), 0, 0, 1, 0},
  {&__pyx_n_s_NotImplementedError, __pyx_k_NotImplementedError, sizeof(__pyx_k_NotImplementedError), 0, 0, 1, 1},
  {&__pyx_n_s_OK_CALL_REPRESENTATION, __pyx_k_OK_CALL_REPRESENTATION, sizeof(__pyx_k_OK_CALL_REPRESENTATION), 0, 0, 1, 1},
  {&__pyx_n_s_Operation, __pyx_k_Operation, sizeof(__pyx_k_Operation), 0, 0, 1, 1},
  {&__pyx_n_s_OperationType, __pyx_k_OperationType, sizeof(__pyx_k_OperationType), 0, 0, 1, 1},
  {&__pyx_n_s_POLLER, __pyx_k_POLLER, sizeof(__pyx_k_POLLER), 0, 0, 1, 1},
  {&__pyx_n_s_PickleError, __pyx_k_PickleError, sizeof(__pyx_k_PickleError), 0, 0, 1, 1},
  {&__pyx_kp_s_Please_report_to_https_github_co, __pyx_k_Please_report_to_https_github_co, sizeof(__pyx_k_Please_report_to_https_github_co), 0, 0, 1, 0},
  {&__pyx_n_s_PollerCompletionQueue, __pyx_k_PollerCompletionQueue, sizeof(__pyx_k_PollerCompletionQueue), 0, 0, 1, 1},
  {&__pyx_n_s_PropagationConstants, __pyx_k_PropagationConstants, sizeof(__pyx_k_PropagationConstants), 0, 0, 1, 1},
  {&__pyx_n_s_Queue, __pyx_k_Queue, sizeof(__pyx_k_Queue), 0, 0, 1, 1},
  {&__pyx_n_s_RLock, __pyx_k_RLock, sizeof(__pyx_k_RLock), 0, 0, 1, 1},
  {&__pyx_n_s_RPCState, __pyx_k_RPCState, sizeof(__pyx_k_RPCState), 0, 0, 1, 1},
  {&__pyx_kp_s_RPC_already_finished, __pyx_k_RPC_already_finished, sizeof(__pyx_k_RPC_already_finished), 0, 0, 1, 0},
  {&__pyx_kp_s_RPC_cancelled_for_servicer_metho, __pyx_k_RPC_cancelled_for_servicer_metho, sizeof(__pyx_k_RPC_cancelled_for_servicer_metho), 0, 0, 1, 0},
  {&__pyx_kp_s_RPC_cancelled_for_unknown_reason, __pyx_k_RPC_cancelled_for_unknown_reason, sizeof(__pyx_k_RPC_cancelled_for_unknown_reason), 0, 0, 1, 0},
  {&__pyx_kp_s_Raised_if_the_server_is_stopped, __pyx_k_Raised_if_the_server_is_stopped, sizeof(__pyx_k_Raised_if_the_server_is_stopped), 0, 0, 1, 0},
  {&__pyx_kp_s_Raised_upon_unexpected_errors_in, __pyx_k_Raised_upon_unexpected_errors_in, sizeof(__pyx_k_Raised_upon_unexpected_errors_in), 0, 0, 1, 0},
  {&__pyx_kp_s_Raised_when_calling_abort_in_ser, __pyx_k_Raised_when_calling_abort_in_ser, sizeof(__pyx_k_Raised_when_calling_abort_in_ser), 0, 0, 1, 0},
  {&__pyx_kp_s_Raised_when_execute_batch_return, __pyx_k_Raised_when_execute_batch_return, sizeof(__pyx_k_Raised_when_execute_batch_return), 0, 0, 1, 0},
  {&__pyx_kp_s_Raised_when_the_usage_of_API_by, __pyx_k_Raised_when_the_usage_of_API_by, sizeof(__pyx_k_Raised_when_the_usage_of_API_by), 0, 0, 1, 0},
  {&__pyx_n_s_ReceiveCloseOnServerOperation, __pyx_k_ReceiveCloseOnServerOperation, sizeof(__pyx_k_ReceiveCloseOnServerOperation), 0, 0, 1, 1},
  {&__pyx_n_s_ReceiveInitialMetadataOperation, __pyx_k_ReceiveInitialMetadataOperation, sizeof(__pyx_k_ReceiveInitialMetadataOperation), 0, 0, 1, 1},
  {&__pyx_n_s_ReceiveMessageOperation, __pyx_k_ReceiveMessageOperation, sizeof(__pyx_k_ReceiveMessageOperation), 0, 0, 1, 1},
  {&__pyx_n_s_ReceiveStatusOnClientOperation, __pyx_k_ReceiveStatusOnClientOperation, sizeof(__pyx_k_ReceiveStatusOnClientOperation), 0, 0, 1, 1},
  {&__pyx_n_s_RequestCallError, __pyx_k_RequestCallError, sizeof(__pyx_k_RequestCallError), 0, 0, 1, 1},
  {&__pyx_n_s_RequestCallEvent, __pyx_k_RequestCallEvent, sizeof(__pyx_k_RequestCallEvent), 0, 0, 1, 1},
  {&__pyx_n_s_RequestCallTag, __pyx_k_RequestCallTag, sizeof(__pyx_k_RequestCallTag), 0, 0, 1, 1},
  {&__pyx_n_s_ResolveWrapper, __pyx_k_ResolveWrapper, sizeof(__pyx_k_ResolveWrapper), 0, 0, 1, 1},
  {&__pyx_n_s_RuntimeError, __pyx_k_RuntimeError, sizeof(__pyx_k_RuntimeError), 0, 0, 1, 1},
  {&__pyx_n_s_SHUT_RDWR, __pyx_k_SHUT_RDWR, sizeof(__pyx_k_SHUT_RDWR), 0, 0, 1, 1},
  {&__pyx_n_s_SOL_SOCKET, __pyx_k_SOL_SOCKET, sizeof(__pyx_k_SOL_SOCKET), 0, 0, 1, 1},
  {&__pyx_n_s_SO_REUSEADDR, __pyx_k_SO_REUSEADDR, sizeof(__pyx_k_SO_REUSEADDR), 0, 0, 1, 1},
  {&__pyx_n_s_SSLChannelCredentials, __pyx_k_SSLChannelCredentials, sizeof(__pyx_k_SSLChannelCredentials), 0, 0, 1, 1},
  {&__pyx_n_s_SSLSessionCacheLRU, __pyx_k_SSLSessionCacheLRU, sizeof(__pyx_k_SSLSessionCacheLRU), 0, 0, 1, 1},
  {&__pyx_n_s_SegregatedCall, __pyx_k_SegregatedCall, sizeof(__pyx_k_SegregatedCall), 0, 0, 1, 1},
  {&__pyx_n_s_SendCloseFromClientOperation, __pyx_k_SendCloseFromClientOperation, sizeof(__pyx_k_SendCloseFromClientOperation), 0, 0, 1, 1},
  {&__pyx_n_s_SendInitialMetadataOperation, __pyx_k_SendInitialMetadataOperation, sizeof(__pyx_k_SendInitialMetadataOperation), 0, 0, 1, 1},
  {&__pyx_n_s_SendMessageOperation, __pyx_k_SendMessageOperation, sizeof(__pyx_k_SendMessageOperation), 0, 0, 1, 1},
  {&__pyx_n_s_SendStatusFromServerOperation, __pyx_k_SendStatusFromServerOperation, sizeof(__pyx_k_SendStatusFromServerOperation), 0, 0, 1, 1},
  {&__pyx_kp_s_Send_initial_metadata_failed_alr, __pyx_k_Send_initial_metadata_failed_alr, sizeof(__pyx_k_Send_initial_metadata_failed_alr), 0, 0, 1, 0},
  {&__pyx_n_s_Server, __pyx_k_Server, sizeof(__pyx_k_Server), 0, 0, 1, 1},
  {&__pyx_n_s_ServerCertificateConfig, __pyx_k_ServerCertificateConfig, sizeof(__pyx_k_ServerCertificateConfig), 0, 0, 1, 1},
  {&__pyx_n_s_ServerCertificateConfiguration, __pyx_k_ServerCertificateConfiguration, sizeof(__pyx_k_ServerCertificateConfiguration), 0, 0, 1, 1},
  {&__pyx_n_s_ServerCredentials, __pyx_k_ServerCredentials, sizeof(__pyx_k_ServerCredentials), 0, 0, 1, 1},
  {&__pyx_n_s_ServerShutdownEvent, __pyx_k_ServerShutdownEvent, sizeof(__pyx_k_ServerShutdownEvent), 0, 0, 1, 1},
  {&__pyx_n_s_ServerShutdownTag, __pyx_k_ServerShutdownTag, sizeof(__pyx_k_ServerShutdownTag), 0, 0, 1, 1},
  {&__pyx_n_s_ServerStoppedError, __pyx_k_ServerStoppedError, sizeof(__pyx_k_ServerStoppedError), 0, 0, 1, 1},
  {&__pyx_kp_s_Server_already_stopped, __pyx_k_Server_already_stopped, sizeof(__pyx_k_Server_already_stopped), 0, 0, 1, 0},
  {&__pyx_kp_s_Server_not_in_ready_state, __pyx_k_Server_not_in_ready_state, sizeof(__pyx_k_Server_not_in_ready_state), 0, 0, 1, 0},
  {&__pyx_kp_s_Server_shutdown_failed_no_comple, __pyx_k_Server_shutdown_failed_no_comple, sizeof(__pyx_k_Server_shutdown_failed_no_comple), 0, 0, 1, 0},
  {&__pyx_n_s_ServicerContext, __pyx_k_ServicerContext, sizeof(__pyx_k_ServicerContext), 0, 0, 1, 1},
  {&__pyx_n_s_ServicerContext_abort, __pyx_k_ServicerContext_abort, sizeof(__pyx_k_ServicerContext_abort), 0, 0, 1, 1},
  {&__pyx_n_s_ServicerContext_abort_with_stat, __pyx_k_ServicerContext_abort_with_stat, sizeof(__pyx_k_ServicerContext_abort_with_stat), 0, 0, 1, 1},
  {&__pyx_n_s_ServicerContext_read, __pyx_k_ServicerContext_read, sizeof(__pyx_k_ServicerContext_read), 0, 0, 1, 1},
  {&__pyx_n_s_ServicerContext_send_initial_me, __pyx_k_ServicerContext_send_initial_me, sizeof(__pyx_k_ServicerContext_send_initial_me), 0, 0, 1, 1},
  {&__pyx_n_s_ServicerContext_write, __pyx_k_ServicerContext_write, sizeof(__pyx_k_ServicerContext_write), 0, 0, 1, 1},
  {&__pyx_n_s_SocketWrapper, __pyx_k_SocketWrapper, sizeof(__pyx_k_SocketWrapper), 0, 0, 1, 1},
  {&__pyx_n_s_SslPemKeyCertPair, __pyx_k_SslPemKeyCertPair, sizeof(__pyx_k_SslPemKeyCertPair), 0, 0, 1, 1},
  {&__pyx_n_s_StatusCode, __pyx_k_StatusCode, sizeof(__pyx_k_StatusCode), 0, 0, 1, 1},
  {&__pyx_n_s_SyncServicerContext, __pyx_k_SyncServicerContext, sizeof(__pyx_k_SyncServicerContext), 0, 0, 1, 1},
  {&__pyx_n_s_SystemExit, __pyx_k_SystemExit, sizeof(__pyx_k_SystemExit), 0, 0, 1, 1},
  {&__pyx_n_s_TCP_NODELAY, __pyx_k_TCP_NODELAY, sizeof(__pyx_k_TCP_NODELAY), 0, 0, 1, 1},
  {&__pyx_n_s_TRUE, __pyx_k_TRUE, sizeof(__pyx_k_TRUE), 0, 0, 1, 1},
  {&__pyx_n_s_TRUE_VALUES, __pyx_k_TRUE_VALUES, sizeof(__pyx_k_TRUE_VALUES), 0, 0, 1, 1},
  {&__pyx_n_s_Tag, __pyx_k_Tag, sizeof(__pyx_k_Tag), 0, 0, 1, 1},
  {&__pyx_kp_s_The_base_class_for_exceptions_ge, __pyx_k_The_base_class_for_exceptions_ge, sizeof(__pyx_k_The_base_class_for_exceptions_ge), 0, 0, 1, 0},
  {&__pyx_n_s_Thread, __pyx_k_Thread, sizeof(__pyx_k_Thread), 0, 0, 1, 1},
  {&__pyx_kp_s_Timed_out, __pyx_k_Timed_out, sizeof(__pyx_k_Timed_out), 0, 0, 1, 0},
  {&__pyx_n_s_TimeoutError, __pyx_k_TimeoutError, sizeof(__pyx_k_TimeoutError), 0, 0, 1, 1},
  {&__pyx_n_s_TimerWrapper, __pyx_k_TimerWrapper, sizeof(__pyx_k_TimerWrapper), 0, 0, 1, 1},
  {&__pyx_n_s_True, __pyx_k_True, sizeof(__pyx_k_True), 0, 0, 1, 1},
  {&__pyx_n_s_TypeError, __pyx_k_TypeError, sizeof(__pyx_k_TypeError), 0, 0, 1, 1},
  {&__pyx_n_s_UNKNOWN_CANCELLATION_DETAILS, __pyx_k_UNKNOWN_CANCELLATION_DETAILS, sizeof(__pyx_k_UNKNOWN_CANCELLATION_DETAILS), 0, 0, 1, 1},
  {&__pyx_kp_s_Unexpected_s_raised_by_servicer, __pyx_k_Unexpected_s_raised_by_servicer, sizeof(__pyx_k_Unexpected_s_raised_by_servicer), 0, 0, 1, 0},
  {&__pyx_kp_s_Unexpected_s_s, __pyx_k_Unexpected_s_s, sizeof(__pyx_k_Unexpected_s_s), 0, 0, 1, 0},
  {&__pyx_n_s_UnicodeDecodeError, __pyx_k_UnicodeDecodeError, sizeof(__pyx_k_UnicodeDecodeError), 0, 0, 1, 1},
  {&__pyx_n_s_Unknown, __pyx_k_Unknown, sizeof(__pyx_k_Unknown), 0, 0, 1, 1},
  {&__pyx_kp_s_Unsupported_engine_type_s, __pyx_k_Unsupported_engine_type_s, sizeof(__pyx_k_Unsupported_engine_type_s), 0, 0, 1, 0},
  {&__pyx_n_s_UsageError, __pyx_k_UsageError, sizeof(__pyx_k_UsageError), 0, 0, 1, 1},
  {&__pyx_kp_s_Using_s_as_I_O_engine, __pyx_k_Using_s_as_I_O_engine, sizeof(__pyx_k_Using_s_as_I_O_engine), 0, 0, 1, 0},
  {&__pyx_n_s_ValueError, __pyx_k_ValueError, sizeof(__pyx_k_ValueError), 0, 0, 1, 1},
  {&__pyx_n_s_WatchConnectivityFailed, __pyx_k_WatchConnectivityFailed, sizeof(__pyx_k_WatchConnectivityFailed), 0, 0, 1, 1},
  {&__pyx_n_s_WriteFlag, __pyx_k_WriteFlag, sizeof(__pyx_k_WriteFlag), 0, 0, 1, 1},
  {&__pyx_n_s_XDSChannelCredentials, __pyx_k_XDSChannelCredentials, sizeof(__pyx_k_XDSChannelCredentials), 0, 0, 1, 1},
  {&__pyx_n_s_YES, __pyx_k_YES, sizeof(__pyx_k_YES), 0, 0, 1, 1},
  {&__pyx_n_s_Yes, __pyx_k_Yes, sizeof(__pyx_k_Yes), 0, 0, 1, 1},
  {&__pyx_kp_s__118, __pyx_k__118, sizeof(__pyx_k__118), 0, 0, 1, 0},
  {&__pyx_kp_s__119, __pyx_k__119, sizeof(__pyx_k__119), 0, 0, 1, 0},
  {&__pyx_kp_s__120, __pyx_k__120, sizeof(__pyx_k__120), 0, 0, 1, 0},
  {&__pyx_kp_s__121, __pyx_k__121, sizeof(__pyx_k__121), 0, 0, 1, 0},
  {&__pyx_kp_u__165, __pyx_k__165, sizeof(__pyx_k__165), 0, 1, 0, 0},
  {&__pyx_kp_u__166, __pyx_k__166, sizeof(__pyx_k__166), 0, 1, 0, 0},
  {&__pyx_kp_u__167, __pyx_k__167, sizeof(__pyx_k__167), 0, 1, 0, 0},
  {&__pyx_n_s__347, __pyx_k__347, sizeof(__pyx_k__347), 0, 0, 1, 1},
  {&__pyx_n_s_abort, __pyx_k_abort, sizeof(__pyx_k_abort), 0, 0, 1, 1},
  {&__pyx_n_s_abort_with_status, __pyx_k_abort_with_status, sizeof(__pyx_k_abort_with_status), 0, 0, 1, 1},
  {&__pyx_n_s_aborted, __pyx_k_aborted, sizeof(__pyx_k_aborted), 0, 0, 1, 1},
  {&__pyx_n_s_accept, __pyx_k_accept, sizeof(__pyx_k_accept), 0, 0, 1, 1},
  {&__pyx_n_s_acquire, __pyx_k_acquire, sizeof(__pyx_k_acquire), 0, 0, 1, 1},
  {&__pyx_n_s_active_thread_count, __pyx_k_active_thread_count, sizeof(__pyx_k_active_thread_count), 0, 0, 1, 1},
  {&__pyx_n_s_add, __pyx_k_add, sizeof(__pyx_k_add), 0, 0, 1, 1},
  {&__pyx_n_s_add_done_callback, __pyx_k_add_done_callback, sizeof(__pyx_k_add_done_callback), 0, 0, 1, 1},
  {&__pyx_n_s_add_generic_rpc_handlers, __pyx_k_add_generic_rpc_handlers, sizeof(__pyx_k_add_generic_rpc_handlers), 0, 0, 1, 1},
  {&__pyx_n_s_add_http2_port, __pyx_k_add_http2_port, sizeof(__pyx_k_add_http2_port), 0, 0, 1, 1},
  {&__pyx_n_s_add_reader, __pyx_k_add_reader, sizeof(__pyx_k_add_reader), 0, 0, 1, 1},
  {&__pyx_n_s_addr_tuple, __pyx_k_addr_tuple, sizeof(__pyx_k_addr_tuple), 0, 0, 1, 1},
  {&__pyx_n_s_address, __pyx_k_address, sizeof(__pyx_k_address), 0, 0, 1, 1},
  {&__pyx_n_s_aenter, __pyx_k_aenter, sizeof(__pyx_k_aenter), 0, 0, 1, 1},
  {&__pyx_n_s_aexit, __pyx_k_aexit, sizeof(__pyx_k_aexit), 0, 0, 1, 1},
  {&__pyx_n_s_agen, __pyx_k_agen, sizeof(__pyx_k_agen), 0, 0, 1, 1},
  {&__pyx_n_s_aiter, __pyx_k_aiter, sizeof(__pyx_k_aiter), 0, 0, 1, 1},
  {&__pyx_n_s_algorithm, __pyx_k_algorithm, sizeof(__pyx_k_algorithm), 0, 0, 1, 1},
  {&__pyx_n_s_already_accepted, __pyx_k_already_accepted, sizeof(__pyx_k_already_accepted), 0, 0, 1, 1},
  {&__pyx_n_s_already_exists, __pyx_k_already_exists, sizeof(__pyx_k_already_exists), 0, 0, 1, 1},
  {&__pyx_n_s_already_finished, __pyx_k_already_finished, sizeof(__pyx_k_already_finished), 0, 0, 1, 1},
  {&__pyx_n_s_already_invoked, __pyx_k_already_invoked, sizeof(__pyx_k_already_invoked), 0, 0, 1, 1},
  {&__pyx_n_s_anext, __pyx_k_anext, sizeof(__pyx_k_anext), 0, 0, 1, 1},
  {&__pyx_n_s_append, __pyx_k_append, sizeof(__pyx_k_append), 0, 0, 1, 1},
  {&__pyx_n_s_applysockopts, __pyx_k_applysockopts, sizeof(__pyx_k_applysockopts), 0, 0, 1, 1},
  {&__pyx_n_s_args, __pyx_k_args, sizeof(__pyx_k_args), 0, 0, 1, 1},
  {&__pyx_n_s_arguments, __pyx_k_arguments, sizeof(__pyx_k_arguments), 0, 0, 1, 1},
  {&__pyx_n_s_ascii, __pyx_k_ascii, sizeof(__pyx_k_ascii), 0, 0, 1, 1},
  {&__pyx_n_s_async_callback_func, __pyx_k_async_callback_func, sizeof(__pyx_k_async_callback_func), 0, 0, 1, 1},
  {&__pyx_n_s_async_generator_to_generator, __pyx_k_async_generator_to_generator, sizeof(__pyx_k_async_generator_to_generator), 0, 0, 1, 1},
  {&__pyx_n_s_async_message_receiver, __pyx_k_async_message_receiver, sizeof(__pyx_k_async_message_receiver), 0, 0, 1, 1},
  {&__pyx_n_s_async_response_generator, __pyx_k_async_response_generator, sizeof(__pyx_k_async_response_generator), 0, 0, 1, 1},
  {&__pyx_n_s_asyncio, __pyx_k_asyncio, sizeof(__pyx_k_asyncio), 0, 0, 1, 1},
  {&__pyx_n_s_asyncio_coroutines, __pyx_k_asyncio_coroutines, sizeof(__pyx_k_asyncio_coroutines), 0, 0, 1, 1},
  {&__pyx_n_s_asyncio_tasks, __pyx_k_asyncio_tasks, sizeof(__pyx_k_asyncio_tasks), 0, 0, 1, 1},
  {&__pyx_n_s_auth_context, __pyx_k_auth_context, sizeof(__pyx_k_auth_context), 0, 0, 1, 1},
  {&__pyx_n_s_await, __pyx_k_await, sizeof(__pyx_k_await), 0, 0, 1, 1},
  {&__pyx_n_s_await_zero_threads, __pyx_k_await_zero_threads, sizeof(__pyx_k_await_zero_threads), 0, 0, 1, 1},
  {&__pyx_n_s_backup_queue, __pyx_k_backup_queue, sizeof(__pyx_k_backup_queue), 0, 0, 1, 1},
  {&__pyx_n_s_batch_operation_tag, __pyx_k_batch_operation_tag, sizeof(__pyx_k_batch_operation_tag), 0, 0, 1, 1},
  {&__pyx_n_s_batch_operations, __pyx_k_batch_operations, sizeof(__pyx_k_batch_operations), 0, 0, 1, 1},
  {&__pyx_kp_b_bin, __pyx_k_bin, sizeof(__pyx_k_bin), 0, 0, 0, 0},
  {&__pyx_n_s_bind, __pyx_k_bind, sizeof(__pyx_k_bind), 0, 0, 1, 1},
  {&__pyx_n_s_bind_loop, __pyx_k_bind_loop, sizeof(__pyx_k_bind_loop), 0, 0, 1, 1},
  {&__pyx_n_s_block_if_fork_in_progress, __pyx_k_block_if_fork_in_progress, sizeof(__pyx_k_block_if_fork_in_progress), 0, 0, 1, 1},
  {&__pyx_n_s_bool, __pyx_k_bool, sizeof(__pyx_k_bool), 0, 0, 1, 1},
  {&__pyx_n_s_buffer_hint, __pyx_k_buffer_hint, sizeof(__pyx_k_buffer_hint), 0, 0, 1, 1},
  {&__pyx_n_s_build_census_context, __pyx_k_build_census_context, sizeof(__pyx_k_build_census_context), 0, 0, 1, 1},
  {&__pyx_n_s_c_cert_config, __pyx_k_c_cert_config, sizeof(__pyx_k_c_cert_config), 0, 0, 1, 1},
  {&__pyx_n_s_c_error_details, __pyx_k_c_error_details, sizeof(__pyx_k_c_error_details), 0, 0, 1, 1},
  {&__pyx_n_s_c_event, __pyx_k_c_event, sizeof(__pyx_k_c_event), 0, 0, 1, 1},
  {&__pyx_n_s_c_key, __pyx_k_c_key, sizeof(__pyx_k_c_key), 0, 0, 1, 1},
  {&__pyx_n_s_c_options, __pyx_k_c_options, sizeof(__pyx_k_c_options), 0, 0, 1, 1},
  {&__pyx_n_s_c_pem_root_certs, __pyx_k_c_pem_root_certs, sizeof(__pyx_k_c_pem_root_certs), 0, 0, 1, 1},
  {&__pyx_n_s_c_returned_str, __pyx_k_c_returned_str, sizeof(__pyx_k_c_returned_str), 0, 0, 1, 1},
  {&__pyx_n_s_call, __pyx_k_call, sizeof(__pyx_k_call), 0, 0, 1, 1},
  {&__pyx_n_s_call_credentials, __pyx_k_call_credentials, sizeof(__pyx_k_call_credentials), 0, 0, 1, 1},
  {&__pyx_n_s_call_credentialses, __pyx_k_call_credentialses, sizeof(__pyx_k_call_credentialses), 0, 0, 1, 1},
  {&__pyx_n_s_call_creds, __pyx_k_call_creds, sizeof(__pyx_k_call_creds), 0, 0, 1, 1},
  {&__pyx_n_s_call_details, __pyx_k_call_details, sizeof(__pyx_k_call_details), 0, 0, 1, 1},
  {&__pyx_n_s_call_queue, __pyx_k_call_queue, sizeof(__pyx_k_call_queue), 0, 0, 1, 1},
  {&__pyx_n_s_call_soon_threadsafe, __pyx_k_call_soon_threadsafe, sizeof(__pyx_k_call_soon_threadsafe), 0, 0, 1, 1},
  {&__pyx_n_s_call_state, __pyx_k_call_state, sizeof(__pyx_k_call_state), 0, 0, 1, 1},
  {&__pyx_n_s_callback, __pyx_k_callback, sizeof(__pyx_k_callback), 0, 0, 1, 1},
  {&__pyx_n_s_callback_func, __pyx_k_callback_func, sizeof(__pyx_k_callback_func), 0, 0, 1, 1},
  {&__pyx_n_s_callback_wrapper, __pyx_k_callback_wrapper, sizeof(__pyx_k_callback_wrapper), 0, 0, 1, 1},
  {&__pyx_n_s_cancel, __pyx_k_cancel, sizeof(__pyx_k_cancel), 0, 0, 1, 1},
  {&__pyx_n_s_cancelled, __pyx_k_cancelled, sizeof(__pyx_k_cancelled), 0, 0, 1, 1},
  {&__pyx_kp_s_cannot_register_completion_queue, __pyx_k_cannot_register_completion_queue, sizeof(__pyx_k_cannot_register_completion_queue), 0, 0, 1, 0},
  {&__pyx_n_s_capacity, __pyx_k_capacity, sizeof(__pyx_k_capacity), 0, 0, 1, 1},
  {&__pyx_n_s_cb, __pyx_k_cb, sizeof(__pyx_k_cb), 0, 0, 1, 1},
  {&__pyx_n_s_cb_func, __pyx_k_cb_func, sizeof(__pyx_k_cb_func), 0, 0, 1, 1},
  {&__pyx_n_s_census_ctx, __pyx_k_census_ctx, sizeof(__pyx_k_census_ctx), 0, 0, 1, 1},
  {&__pyx_n_s_cert_config, __pyx_k_cert_config, sizeof(__pyx_k_cert_config), 0, 0, 1, 1},
  {&__pyx_n_s_cert_config_fetcher, __pyx_k_cert_config_fetcher, sizeof(__pyx_k_cert_config_fetcher), 0, 0, 1, 1},
  {&__pyx_kp_s_cert_config_fetcher_must_be_call, __pyx_k_cert_config_fetcher_must_be_call, sizeof(__pyx_k_cert_config_fetcher_must_be_call), 0, 0, 1, 0},
  {&__pyx_n_s_certificate_chain, __pyx_k_certificate_chain, sizeof(__pyx_k_certificate_chain), 0, 0, 1, 1},
  {&__pyx_n_s_certificate_configuration, __pyx_k_certificate_configuration, sizeof(__pyx_k_certificate_configuration), 0, 0, 1, 1},
  {&__pyx_n_s_channel, __pyx_k_channel, sizeof(__pyx_k_channel), 0, 0, 1, 1},
  {&__pyx_n_s_channel_credentials, __pyx_k_channel_credentials, sizeof(__pyx_k_channel_credentials), 0, 0, 1, 1},
  {&__pyx_n_s_channel_credentials_alts, __pyx_k_channel_credentials_alts, sizeof(__pyx_k_channel_credentials_alts), 0, 0, 1, 1},
  {&__pyx_n_s_channel_credentials_compute_engi, __pyx_k_channel_credentials_compute_engi, sizeof(__pyx_k_channel_credentials_compute_engi), 0, 0, 1, 1},
  {&__pyx_n_s_channel_credentials_insecure, __pyx_k_channel_credentials_insecure, sizeof(__pyx_k_channel_credentials_insecure), 0, 0, 1, 1},
  {&__pyx_n_s_channel_credentials_local, __pyx_k_channel_credentials_local, sizeof(__pyx_k_channel_credentials_local), 0, 0, 1, 1},
  {&__pyx_n_s_channel_id, __pyx_k_channel_id, sizeof(__pyx_k_channel_id), 0, 0, 1, 1},
  {&__pyx_n_s_channel_state, __pyx_k_channel_state, sizeof(__pyx_k_channel_state), 0, 0, 1, 1},
  {&__pyx_n_s_channels, __pyx_k_channels, sizeof(__pyx_k_channels), 0, 0, 1, 1},
  {&__pyx_n_s_channelz_get_channel, __pyx_k_channelz_get_channel, sizeof(__pyx_k_channelz_get_channel), 0, 0, 1, 1},
  {&__pyx_n_s_channelz_get_server, __pyx_k_channelz_get_server, sizeof(__pyx_k_channelz_get_server), 0, 0, 1, 1},
  {&__pyx_n_s_channelz_get_server_sockets, __pyx_k_channelz_get_server_sockets, sizeof(__pyx_k_channelz_get_server_sockets), 0, 0, 1, 1},
  {&__pyx_n_s_channelz_get_servers, __pyx_k_channelz_get_servers, sizeof(__pyx_k_channelz_get_servers), 0, 0, 1, 1},
  {&__pyx_n_s_channelz_get_socket, __pyx_k_channelz_get_socket, sizeof(__pyx_k_channelz_get_socket), 0, 0, 1, 1},
  {&__pyx_n_s_channelz_get_subchannel, __pyx_k_channelz_get_subchannel, sizeof(__pyx_k_channelz_get_subchannel), 0, 0, 1, 1},
  {&__pyx_n_s_channelz_get_top_channels, __pyx_k_channelz_get_top_channels, sizeof(__pyx_k_channelz_get_top_channels), 0, 0, 1, 1},
  {&__pyx_n_s_check_before_request_call, __pyx_k_check_before_request_call, sizeof(__pyx_k_check_before_request_call), 0, 0, 1, 1},
  {&__pyx_n_s_check_before_request_call_locals, __pyx_k_check_before_request_call_locals, sizeof(__pyx_k_check_before_request_call_locals), 0, 0, 1, 1},
  {&__pyx_n_s_class, __pyx_k_class, sizeof(__pyx_k_class), 0, 0, 1, 1},
  {&__pyx_n_s_clear, __pyx_k_clear, sizeof(__pyx_k_clear), 0, 0, 1, 1},
  {&__pyx_n_s_client_config_in_slice, __pyx_k_client_config_in_slice, sizeof(__pyx_k_client_config_in_slice), 0, 0, 1, 1},
  {&__pyx_n_s_cline_in_traceback, __pyx_k_cline_in_traceback, sizeof(__pyx_k_cline_in_traceback), 0, 0, 1, 1},
  {&__pyx_n_s_close, __pyx_k_close, sizeof(__pyx_k_close), 0, 0, 1, 1},
  {&__pyx_n_s_close_on_fork, __pyx_k_close_on_fork, sizeof(__pyx_k_close_on_fork), 0, 0, 1, 1},
  {&__pyx_n_s_closed, __pyx_k_closed, sizeof(__pyx_k_closed), 0, 0, 1, 1},
  {&__pyx_n_s_code, __pyx_k_code, sizeof(__pyx_k_code), 0, 0, 1, 1},
  {&__pyx_n_s_collections, __pyx_k_collections, sizeof(__pyx_k_collections), 0, 0, 1, 1},
  {&__pyx_n_s_common, __pyx_k_common, sizeof(__pyx_k_common), 0, 0, 1, 1},
  {&__pyx_n_s_completion_type, __pyx_k_completion_type, sizeof(__pyx_k_completion_type), 0, 0, 1, 1},
  {&__pyx_n_s_compression_algorithm_name, __pyx_k_compression_algorithm_name, sizeof(__pyx_k_compression_algorithm_name), 0, 0, 1, 1},
  {&__pyx_n_s_condition, __pyx_k_condition, sizeof(__pyx_k_condition), 0, 0, 1, 1},
  {&__pyx_n_s_connect, __pyx_k_connect, sizeof(__pyx_k_connect), 0, 0, 1, 1},
  {&__pyx_n_s_connecting, __pyx_k_connecting, sizeof(__pyx_k_connecting), 0, 0, 1, 1},
  {&__pyx_n_s_context, __pyx_k_context, sizeof(__pyx_k_context), 0, 0, 1, 1},
  {&__pyx_n_s_contextvars, __pyx_k_contextvars, sizeof(__pyx_k_contextvars), 0, 0, 1, 1},
  {&__pyx_n_s_contextvars_supported, __pyx_k_contextvars_supported, sizeof(__pyx_k_contextvars_supported), 0, 0, 1, 1},
  {&__pyx_n_s_continuation, __pyx_k_continuation, sizeof(__pyx_k_continuation), 0, 0, 1, 1},
  {&__pyx_n_s_copy, __pyx_k_copy, sizeof(__pyx_k_copy), 0, 0, 1, 1},
  {&__pyx_n_s_copy_context, __pyx_k_copy_context, sizeof(__pyx_k_copy_context), 0, 0, 1, 1},
  {&__pyx_n_s_core_function_name, __pyx_k_core_function_name, sizeof(__pyx_k_core_function_name), 0, 0, 1, 1},
  {&__pyx_n_s_coro, __pyx_k_coro, sizeof(__pyx_k_coro), 0, 0, 1, 1},
  {&__pyx_n_s_create_future, __pyx_k_create_future, sizeof(__pyx_k_create_future), 0, 0, 1, 1},
  {&__pyx_n_s_create_task, __pyx_k_create_task, sizeof(__pyx_k_create_task), 0, 0, 1, 1},
  {&__pyx_n_s_credentials, __pyx_k_credentials, sizeof(__pyx_k_credentials), 0, 0, 1, 1},
  {&__pyx_n_s_credentials_2, __pyx_k_credentials_2, sizeof(__pyx_k_credentials_2), 0, 0, 1, 1},
  {&__pyx_kp_s_credentials_roots_pem, __pyx_k_credentials_roots_pem, sizeof(__pyx_k_credentials_roots_pem), 0, 0, 1, 0},
  {&__pyx_n_s_ctx, __pyx_k_ctx, sizeof(__pyx_k_ctx), 0, 0, 1, 1},
  {&__pyx_n_s_custom_io_manager, __pyx_k_custom_io_manager, sizeof(__pyx_k_custom_io_manager), 0, 0, 1, 1},
  {&__pyx_kp_s_cygrpc, __pyx_k_cygrpc, sizeof(__pyx_k_cygrpc), 0, 0, 1, 0},
  {&__pyx_n_s_daemon, __pyx_k_daemon, sizeof(__pyx_k_daemon), 0, 0, 1, 1},
  {&__pyx_n_s_daemonic, __pyx_k_daemonic, sizeof(__pyx_k_daemonic), 0, 0, 1, 1},
  {&__pyx_n_s_data_loss, __pyx_k_data_loss, sizeof(__pyx_k_data_loss), 0, 0, 1, 1},
  {&__pyx_n_s_deadline, __pyx_k_deadline, sizeof(__pyx_k_deadline), 0, 0, 1, 1},
  {&__pyx_n_s_deadline_exceeded, __pyx_k_deadline_exceeded, sizeof(__pyx_k_deadline_exceeded), 0, 0, 1, 1},
  {&__pyx_kp_s_dealloc___called_on_running_se, __pyx_k_dealloc___called_on_running_se, sizeof(__pyx_k_dealloc___called_on_running_se), 0, 0, 1, 0},
  {&__pyx_n_s_debug, __pyx_k_debug, sizeof(__pyx_k_debug), 0, 0, 1, 1},
  {&__pyx_n_s_debug_error_string, __pyx_k_debug_error_string, sizeof(__pyx_k_debug_error_string), 0, 0, 1, 1},
  {&__pyx_n_s_decode, __pyx_k_decode, sizeof(__pyx_k_decode), 0, 0, 1, 1},
  {&__pyx_n_s_decrease_active_rpcs_count, __pyx_k_decrease_active_rpcs_count, sizeof(__pyx_k_decrease_active_rpcs_count), 0, 0, 1, 1},
  {&__pyx_n_s_decrease_active_rpcs_count_with, __pyx_k_decrease_active_rpcs_count_with, sizeof(__pyx_k_decrease_active_rpcs_count_with), 0, 0, 1, 1},
  {&__pyx_n_s_decrease_once_finished, __pyx_k_decrease_once_finished, sizeof(__pyx_k_decrease_once_finished), 0, 0, 1, 1},
  {&__pyx_n_s_decrement, __pyx_k_decrement, sizeof(__pyx_k_decrement), 0, 0, 1, 1},
  {&__pyx_n_s_default_authority, __pyx_k_default_authority, sizeof(__pyx_k_default_authority), 0, 0, 1, 1},
  {&__pyx_n_s_default_vtable, __pyx_k_default_vtable, sizeof(__pyx_k_default_vtable), 0, 0, 1, 1},
  {&__pyx_n_s_deflate, __pyx_k_deflate, sizeof(__pyx_k_deflate), 0, 0, 1, 1},
  {&__pyx_n_s_details, __pyx_k_details, sizeof(__pyx_k_details), 0, 0, 1, 1},
  {&__pyx_n_s_dict, __pyx_k_dict, sizeof(__pyx_k_dict), 0, 0, 1, 1},
  {&__pyx_n_s_disable_next_message_compression, __pyx_k_disable_next_message_compression, sizeof(__pyx_k_disable_next_message_compression), 0, 0, 1, 1},
  {&__pyx_n_s_discard, __pyx_k_discard, sizeof(__pyx_k_discard), 0, 0, 1, 1},
  {&__pyx_n_s_doc, __pyx_k_doc, sizeof(__pyx_k_doc), 0, 0, 1, 1},
  {&__pyx_n_s_done, __pyx_k_done, sizeof(__pyx_k_done), 0, 0, 1, 1},
  {&__pyx_n_s_dump_xds_configs, __pyx_k_dump_xds_configs, sizeof(__pyx_k_dump_xds_configs), 0, 0, 1, 1},
  {&__pyx_n_s_e, __pyx_k_e, sizeof(__pyx_k_e), 0, 0, 1, 1},
  {&__pyx_n_s_enable_census, __pyx_k_enable_census, sizeof(__pyx_k_enable_census), 0, 0, 1, 1},
  {&__pyx_n_s_encode, __pyx_k_encode, sizeof(__pyx_k_encode), 0, 0, 1, 1},
  {&__pyx_n_s_end_time, __pyx_k_end_time, sizeof(__pyx_k_end_time), 0, 0, 1, 1},
  {&__pyx_n_s_endswith, __pyx_k_endswith, sizeof(__pyx_k_endswith), 0, 0, 1, 1},
  {&__pyx_n_s_enter, __pyx_k_enter, sizeof(__pyx_k_enter), 0, 0, 1, 1},
  {&__pyx_n_s_enter_user_request_generator, __pyx_k_enter_user_request_generator, sizeof(__pyx_k_enter_user_request_generator), 0, 0, 1, 1},
  {&__pyx_n_s_enum, __pyx_k_enum, sizeof(__pyx_k_enum), 0, 0, 1, 1},
  {&__pyx_n_s_enumerate, __pyx_k_enumerate, sizeof(__pyx_k_enumerate), 0, 0, 1, 1},
  {&__pyx_n_s_environ, __pyx_k_environ, sizeof(__pyx_k_environ), 0, 0, 1, 1},
  {&__pyx_n_s_errno, __pyx_k_errno, sizeof(__pyx_k_errno), 0, 0, 1, 1},
  {&__pyx_n_s_error, __pyx_k_error, sizeof(__pyx_k_error), 0, 0, 1, 1},
  {&__pyx_n_s_error_code, __pyx_k_error_code, sizeof(__pyx_k_error_code), 0, 0, 1, 1},
  {&__pyx_n_s_error_details, __pyx_k_error_details, sizeof(__pyx_k_error_details), 0, 0, 1, 1},
  {&__pyx_n_s_error_string, __pyx_k_error_string, sizeof(__pyx_k_error_string), 0, 0, 1, 1},
  {&__pyx_n_s_event, __pyx_k_event, sizeof(__pyx_k_event), 0, 0, 1, 1},
  {&__pyx_n_s_exc_info, __pyx_k_exc_info, sizeof(__pyx_k_exc_info), 0, 0, 1, 1},
  {&__pyx_n_s_exception, __pyx_k_exception, sizeof(__pyx_k_exception), 0, 0, 1, 1},
  {&__pyx_n_s_exception_type, __pyx_k_exception_type, sizeof(__pyx_k_exception_type), 0, 0, 1, 1},
  {&__pyx_n_s_execute_batch, __pyx_k_execute_batch, sizeof(__pyx_k_execute_batch), 0, 0, 1, 1},
  {&__pyx_n_s_exit, __pyx_k_exit, sizeof(__pyx_k_exit), 0, 0, 1, 1},
  {&__pyx_n_s_exit_2, __pyx_k_exit_2, sizeof(__pyx_k_exit_2), 0, 0, 1, 1},
  {&__pyx_kp_s_expected_certificate_to_be_bytes, __pyx_k_expected_certificate_to_be_bytes, sizeof(__pyx_k_expected_certificate_to_be_bytes), 0, 0, 1, 0},
  {&__pyx_kp_s_expected_pem_key_cert_pairs_to_b, __pyx_k_expected_pem_key_cert_pairs_to_b, sizeof(__pyx_k_expected_pem_key_cert_pairs_to_b), 0, 0, 1, 0},
  {&__pyx_kp_s_expected_registered_completion_q, __pyx_k_expected_registered_completion_q, sizeof(__pyx_k_expected_registered_completion_q), 0, 0, 1, 0},
  {&__pyx_kp_s_failed, __pyx_k_failed, sizeof(__pyx_k_failed), 0, 0, 1, 0},
  {&__pyx_n_s_failed_precondition, __pyx_k_failed_precondition, sizeof(__pyx_k_failed_precondition), 0, 0, 1, 1},
  {&__pyx_n_s_failure_handler, __pyx_k_failure_handler, sizeof(__pyx_k_failure_handler), 0, 0, 1, 1},
  {&__pyx_n_s_fallback_credentials, __pyx_k_fallback_credentials, sizeof(__pyx_k_fallback_credentials), 0, 0, 1, 1},
  {&__pyx_n_s_fileno, __pyx_k_fileno, sizeof(__pyx_k_fileno), 0, 0, 1, 1},
  {&__pyx_n_s_find_method_handler, __pyx_k_find_method_handler, sizeof(__pyx_k_find_method_handler), 0, 0, 1, 1},
  {&__pyx_n_s_find_method_handler_locals_quer, __pyx_k_find_method_handler_locals_quer, sizeof(__pyx_k_find_method_handler_locals_quer), 0, 0, 1, 1},
  {&__pyx_n_s_finish_handler_with_stream_resp, __pyx_k_finish_handler_with_stream_resp, sizeof(__pyx_k_finish_handler_with_stream_resp), 0, 0, 1, 1},
  {&__pyx_n_s_finish_handler_with_unary_respo, __pyx_k_finish_handler_with_unary_respo, sizeof(__pyx_k_finish_handler_with_unary_respo), 0, 0, 1, 1},
  {&__pyx_n_s_finish_ops, __pyx_k_finish_ops, sizeof(__pyx_k_finish_ops), 0, 0, 1, 1},
  {&__pyx_n_s_flags, __pyx_k_flags, sizeof(__pyx_k_flags), 0, 0, 1, 1},
  {&__pyx_n_s_force_client_auth, __pyx_k_force_client_auth, sizeof(__pyx_k_force_client_auth), 0, 0, 1, 1},
  {&__pyx_n_s_fork_epoch, __pyx_k_fork_epoch, sizeof(__pyx_k_fork_epoch), 0, 0, 1, 1},
  {&__pyx_n_s_fork_handler_failed, __pyx_k_fork_handler_failed, sizeof(__pyx_k_fork_handler_failed), 0, 0, 1, 1},
  {&__pyx_n_s_fork_handler_registered, __pyx_k_fork_handler_registered, sizeof(__pyx_k_fork_handler_registered), 0, 0, 1, 1},
  {&__pyx_n_s_fork_handler_registered_lock, __pyx_k_fork_handler_registered_lock, sizeof(__pyx_k_fork_handler_registered_lock), 0, 0, 1, 1},
  {&__pyx_n_s_fork_handlers_and_grpc_init, __pyx_k_fork_handlers_and_grpc_init, sizeof(__pyx_k_fork_handlers_and_grpc_init), 0, 0, 1, 1},
  {&__pyx_n_s_fork_in_progress, __pyx_k_fork_in_progress, sizeof(__pyx_k_fork_in_progress), 0, 0, 1, 1},
  {&__pyx_n_s_fork_in_progress_condition, __pyx_k_fork_in_progress_condition, sizeof(__pyx_k_fork_in_progress_condition), 0, 0, 1, 1},
  {&__pyx_n_s_fork_register_channel, __pyx_k_fork_register_channel, sizeof(__pyx_k_fork_register_channel), 0, 0, 1, 1},
  {&__pyx_n_s_fork_state, __pyx_k_fork_state, sizeof(__pyx_k_fork_state), 0, 0, 1, 1},
  {&__pyx_n_s_fork_unregister_channel, __pyx_k_fork_unregister_channel, sizeof(__pyx_k_fork_unregister_channel), 0, 0, 1, 1},
  {&__pyx_n_s_format, __pyx_k_format, sizeof(__pyx_k_format), 0, 0, 1, 1},
  {&__pyx_n_s_format_exception, __pyx_k_format_exception, sizeof(__pyx_k_format_exception), 0, 0, 1, 1},
  {&__pyx_n_s_functools, __pyx_k_functools, sizeof(__pyx_k_functools), 0, 0, 1, 1},
  {&__pyx_n_s_future, __pyx_k_future, sizeof(__pyx_k_future), 0, 0, 1, 1},
  {&__pyx_n_s_g_event, __pyx_k_g_event, sizeof(__pyx_k_g_event), 0, 0, 1, 1},
  {&__pyx_n_s_g_pool, __pyx_k_g_pool, sizeof(__pyx_k_g_pool), 0, 0, 1, 1},
  {&__pyx_n_s_gaierror, __pyx_k_gaierror, sizeof(__pyx_k_gaierror), 0, 0, 1, 1},
  {&__pyx_n_s_gen, __pyx_k_gen, sizeof(__pyx_k_gen), 0, 0, 1, 1},
  {&__pyx_n_s_generator_to_async_generator, __pyx_k_generator_to_async_generator, sizeof(__pyx_k_generator_to_async_generator), 0, 0, 1, 1},
  {&__pyx_n_s_generator_to_async_generator_loc, __pyx_k_generator_to_async_generator_loc, sizeof(__pyx_k_generator_to_async_generator_loc), 0, 0, 1, 1},
  {&__pyx_n_s_generic_handler, __pyx_k_generic_handler, sizeof(__pyx_k_generic_handler), 0, 0, 1, 1},
  {&__pyx_n_s_generic_handlers, __pyx_k_generic_handlers, sizeof(__pyx_k_generic_handlers), 0, 0, 1, 1},
  {&__pyx_n_s_genexpr, __pyx_k_genexpr, sizeof(__pyx_k_genexpr), 0, 0, 1, 1},
  {&__pyx_n_s_get, __pyx_k_get, sizeof(__pyx_k_get), 0, 0, 1, 1},
  {&__pyx_n_s_getLogger, __pyx_k_getLogger, sizeof(__pyx_k_getLogger), 0, 0, 1, 1},
  {&__pyx_n_s_get_data, __pyx_k_get_data, sizeof(__pyx_k_get_data), 0, 0, 1, 1},
  {&__pyx_n_s_get_deadline_from_context, __pyx_k_get_deadline_from_context, sizeof(__pyx_k_get_deadline_from_context), 0, 0, 1, 1},
  {&__pyx_n_s_get_event_loop, __pyx_k_get_event_loop, sizeof(__pyx_k_get_event_loop), 0, 0, 1, 1},
  {&__pyx_n_s_get_fork_epoch, __pyx_k_get_fork_epoch, sizeof(__pyx_k_get_fork_epoch), 0, 0, 1, 1},
  {&__pyx_n_s_get_hub, __pyx_k_get_hub, sizeof(__pyx_k_get_hub), 0, 0, 1, 1},
  {&__pyx_n_s_get_metadata_locals_callback, __pyx_k_get_metadata_locals_callback, sizeof(__pyx_k_get_metadata_locals_callback), 0, 0, 1, 1},
  {&__pyx_n_s_get_running_loop, __pyx_k_get_running_loop, sizeof(__pyx_k_get_running_loop), 0, 0, 1, 1},
  {&__pyx_n_s_get_working_loop, __pyx_k_get_working_loop, sizeof(__pyx_k_get_working_loop), 0, 0, 1, 1},
  {&__pyx_n_s_getaddrinfo, __pyx_k_getaddrinfo, sizeof(__pyx_k_getaddrinfo), 0, 0, 1, 1},
  {&__pyx_n_s_getpeername, __pyx_k_getpeername, sizeof(__pyx_k_getpeername), 0, 0, 1, 1},
  {&__pyx_n_s_getsockname, __pyx_k_getsockname, sizeof(__pyx_k_getsockname), 0, 0, 1, 1},
  {&__pyx_n_s_getstate, __pyx_k_getstate, sizeof(__pyx_k_getstate), 0, 0, 1, 1},
  {&__pyx_n_s_gevent, __pyx_k_gevent, sizeof(__pyx_k_gevent), 0, 0, 1, 1},
  {&__pyx_n_s_gevent_event, __pyx_k_gevent_event, sizeof(__pyx_k_gevent_event), 0, 0, 1, 1},
  {&__pyx_n_s_gevent_event_2, __pyx_k_gevent_event_2, sizeof(__pyx_k_gevent_event_2), 0, 0, 1, 1},
  {&__pyx_n_s_gevent_g, __pyx_k_gevent_g, sizeof(__pyx_k_gevent_g), 0, 0, 1, 1},
  {&__pyx_n_s_gevent_hub, __pyx_k_gevent_hub, sizeof(__pyx_k_gevent_hub), 0, 0, 1, 1},
  {&__pyx_n_s_gevent_hub_2, __pyx_k_gevent_hub_2, sizeof(__pyx_k_gevent_hub_2), 0, 0, 1, 1},
  {&__pyx_n_s_gevent_pool, __pyx_k_gevent_pool, sizeof(__pyx_k_gevent_pool), 0, 0, 1, 1},
  {&__pyx_n_s_gevent_socket, __pyx_k_gevent_socket, sizeof(__pyx_k_gevent_socket), 0, 0, 1, 1},
  {&__pyx_n_s_gevent_socket_2, __pyx_k_gevent_socket_2, sizeof(__pyx_k_gevent_socket_2), 0, 0, 1, 1},
  {&__pyx_n_s_greenlet, __pyx_k_greenlet, sizeof(__pyx_k_greenlet), 0, 0, 1, 1},
  {&__pyx_n_s_grpc, __pyx_k_grpc, sizeof(__pyx_k_grpc), 0, 0, 1, 1},
  {&__pyx_n_s_grpc__cython_cygrpc, __pyx_k_grpc__cython_cygrpc, sizeof(__pyx_k_grpc__cython_cygrpc), 0, 0, 1, 1},
  {&__pyx_kp_s_grpc_aio_EOF, __pyx_k_grpc_aio_EOF, sizeof(__pyx_k_grpc_aio_EOF), 0, 0, 1, 0},
  {&__pyx_n_s_grpc_call_wrapper, __pyx_k_grpc_call_wrapper, sizeof(__pyx_k_grpc_call_wrapper), 0, 0, 1, 1},
  {&__pyx_n_s_grpc_completion_queue_shutdown, __pyx_k_grpc_completion_queue_shutdown, sizeof(__pyx_k_grpc_completion_queue_shutdown), 0, 0, 1, 1},
  {&__pyx_kp_s_grpc_python__cygrpc__GrpcArgWrap, __pyx_k_grpc_python__cygrpc__GrpcArgWrap, sizeof(__pyx_k_grpc_python__cygrpc__GrpcArgWrap), 0, 0, 1, 0},
  {&__pyx_n_s_grpc_server_request_call, __pyx_k_grpc_server_request_call, sizeof(__pyx_k_grpc_server_request_call), 0, 0, 1, 1},
  {&__pyx_n_s_grpc_server_shutdown_and_notify, __pyx_k_grpc_server_shutdown_and_notify, sizeof(__pyx_k_grpc_server_shutdown_and_notify), 0, 0, 1, 1},
  {&__pyx_n_s_grpc_shutdown_wrapper, __pyx_k_grpc_shutdown_wrapper, sizeof(__pyx_k_grpc_shutdown_wrapper), 0, 0, 1, 1},
  {&__pyx_n_s_gzip, __pyx_k_gzip, sizeof(__pyx_k_gzip), 0, 0, 1, 1},
  {&__pyx_n_s_handle_callback_wrapper, __pyx_k_handle_callback_wrapper, sizeof(__pyx_k_handle_callback_wrapper), 0, 0, 1, 1},
  {&__pyx_n_s_handle_cancellation_from_core, __pyx_k_handle_cancellation_from_core, sizeof(__pyx_k_handle_cancellation_from_core), 0, 0, 1, 1},
  {&__pyx_n_s_handle_events, __pyx_k_handle_events, sizeof(__pyx_k_handle_events), 0, 0, 1, 1},
  {&__pyx_n_s_handle_exceptions, __pyx_k_handle_exceptions, sizeof(__pyx_k_handle_exceptions), 0, 0, 1, 1},
  {&__pyx_n_s_handle_rpc, __pyx_k_handle_rpc, sizeof(__pyx_k_handle_rpc), 0, 0, 1, 1},
  {&__pyx_n_s_handle_status_once_received, __pyx_k_handle_status_once_received, sizeof(__pyx_k_handle_status_once_received), 0, 0, 1, 1},
  {&__pyx_n_s_handle_stream_stream_rpc, __pyx_k_handle_stream_stream_rpc, sizeof(__pyx_k_handle_stream_stream_rpc), 0, 0, 1, 1},
  {&__pyx_n_s_handle_stream_unary_rpc, __pyx_k_handle_stream_unary_rpc, sizeof(__pyx_k_handle_stream_unary_rpc), 0, 0, 1, 1},
  {&__pyx_n_s_handle_unary_stream_rpc, __pyx_k_handle_unary_stream_rpc, sizeof(__pyx_k_handle_unary_stream_rpc), 0, 0, 1, 1},
  {&__pyx_n_s_handle_unary_unary_rpc, __pyx_k_handle_unary_unary_rpc, sizeof(__pyx_k_handle_unary_unary_rpc), 0, 0, 1, 1},
  {&__pyx_n_s_handler, __pyx_k_handler, sizeof(__pyx_k_handler), 0, 0, 1, 1},
  {&__pyx_n_s_handler_call_details, __pyx_k_handler_call_details, sizeof(__pyx_k_handler_call_details), 0, 0, 1, 1},
  {&__pyx_n_s_high, __pyx_k_high, sizeof(__pyx_k_high), 0, 0, 1, 1},
  {&__pyx_n_s_host, __pyx_k_host, sizeof(__pyx_k_host), 0, 0, 1, 1},
  {&__pyx_n_s_http2_initial_sequence_number, __pyx_k_http2_initial_sequence_number, sizeof(__pyx_k_http2_initial_sequence_number), 0, 0, 1, 1},
  {&__pyx_n_s_hub, __pyx_k_hub, sizeof(__pyx_k_hub), 0, 0, 1, 1},
  {&__pyx_n_s_id, __pyx_k_id, sizeof(__pyx_k_id), 0, 0, 1, 1},
  {&__pyx_n_s_identities, __pyx_k_identities, sizeof(__pyx_k_identities), 0, 0, 1, 1},
  {&__pyx_n_s_identity, __pyx_k_identity, sizeof(__pyx_k_identity), 0, 0, 1, 1},
  {&__pyx_n_s_idle, __pyx_k_idle, sizeof(__pyx_k_idle), 0, 0, 1, 1},
  {&__pyx_kp_s_if_error_code_is_specified_so_mu, __pyx_k_if_error_code_is_specified_so_mu, sizeof(__pyx_k_if_error_code_is_specified_so_mu), 0, 0, 1, 0},
  {&__pyx_n_s_import, __pyx_k_import, sizeof(__pyx_k_import), 0, 0, 1, 1},
  {&__pyx_n_s_increment, __pyx_k_increment, sizeof(__pyx_k_increment), 0, 0, 1, 1},
  {&__pyx_n_s_init, __pyx_k_init, sizeof(__pyx_k_init), 0, 0, 1, 1},
  {&__pyx_n_s_init_grpc_gevent, __pyx_k_init_grpc_gevent, sizeof(__pyx_k_init_grpc_gevent), 0, 0, 1, 1},
  {&__pyx_n_s_init_grpc_gevent_locals_cb_func, __pyx_k_init_grpc_gevent_locals_cb_func, sizeof(__pyx_k_init_grpc_gevent_locals_cb_func), 0, 0, 1, 1},
  {&__pyx_n_s_initial_cert_config, __pyx_k_initial_cert_config, sizeof(__pyx_k_initial_cert_config), 0, 0, 1, 1},
  {&__pyx_kp_s_initial_cert_config_must_be_a_gr, __pyx_k_initial_cert_config_must_be_a_gr, sizeof(__pyx_k_initial_cert_config_must_be_a_gr), 0, 0, 1, 0},
  {&__pyx_n_s_initial_metadata, __pyx_k_initial_metadata, sizeof(__pyx_k_initial_metadata), 0, 0, 1, 1},
  {&__pyx_n_s_initiate_stream_stream, __pyx_k_initiate_stream_stream, sizeof(__pyx_k_initiate_stream_stream), 0, 0, 1, 1},
  {&__pyx_n_s_initiate_unary_stream, __pyx_k_initiate_unary_stream, sizeof(__pyx_k_initiate_unary_stream), 0, 0, 1, 1},
  {&__pyx_n_s_insecure_server_credentials, __pyx_k_insecure_server_credentials, sizeof(__pyx_k_insecure_server_credentials), 0, 0, 1, 1},
  {&__pyx_n_s_inspect, __pyx_k_inspect, sizeof(__pyx_k_inspect), 0, 0, 1, 1},
  {&__pyx_n_s_install_context_from_request_cal, __pyx_k_install_context_from_request_cal, sizeof(__pyx_k_install_context_from_request_cal), 0, 0, 1, 1},
  {&__pyx_n_s_int, __pyx_k_int, sizeof(__pyx_k_int), 0, 0, 1, 1},
  {&__pyx_n_s_integrated_call_locals_on_succe, __pyx_k_integrated_call_locals_on_succe, sizeof(__pyx_k_integrated_call_locals_on_succe), 0, 0, 1, 1},
  {&__pyx_n_s_intercept_service, __pyx_k_intercept_service, sizeof(__pyx_k_intercept_service), 0, 0, 1, 1},
  {&__pyx_n_s_interceptor, __pyx_k_interceptor, sizeof(__pyx_k_interceptor), 0, 0, 1, 1},
  {&__pyx_n_s_interceptors, __pyx_k_interceptors, sizeof(__pyx_k_interceptors), 0, 0, 1, 1},
  {&__pyx_n_s_internal, __pyx_k_internal, sizeof(__pyx_k_internal), 0, 0, 1, 1},
  {&__pyx_kp_s_internal_error_user_data_must_be, __pyx_k_internal_error_user_data_must_be, sizeof(__pyx_k_internal_error_user_data_must_be), 0, 0, 1, 0},
  {&__pyx_n_s_invalid_argument, __pyx_k_invalid_argument, sizeof(__pyx_k_invalid_argument), 0, 0, 1, 1},
  {&__pyx_kp_s_invalid_call_object_cannot_be_us, __pyx_k_invalid_call_object_cannot_be_us, sizeof(__pyx_k_invalid_call_object_cannot_be_us), 0, 0, 1, 0},
  {&__pyx_n_s_invalid_flags, __pyx_k_invalid_flags, sizeof(__pyx_k_invalid_flags), 0, 0, 1, 1},
  {&__pyx_n_s_invalid_metadata, __pyx_k_invalid_metadata, sizeof(__pyx_k_invalid_metadata), 0, 0, 1, 1},
  {&__pyx_n_s_invocation_metadata, __pyx_k_invocation_metadata, sizeof(__pyx_k_invocation_metadata), 0, 0, 1, 1},
  {&__pyx_n_b_ipv4, __pyx_k_ipv4, sizeof(__pyx_k_ipv4), 0, 0, 0, 1},
  {&__pyx_n_s_is_async_handler, __pyx_k_is_async_handler, sizeof(__pyx_k_is_async_handler), 0, 0, 1, 1},
  {&__pyx_n_s_is_fork_support_enabled, __pyx_k_is_fork_support_enabled, sizeof(__pyx_k_is_fork_support_enabled), 0, 0, 1, 1},
  {&__pyx_n_s_is_valid, __pyx_k_is_valid, sizeof(__pyx_k_is_valid), 0, 0, 1, 1},
  {&__pyx_n_s_isasyncgenfunction, __pyx_k_isasyncgenfunction, sizeof(__pyx_k_isasyncgenfunction), 0, 0, 1, 1},
  {&__pyx_n_s_isawaitable, __pyx_k_isawaitable, sizeof(__pyx_k_isawaitable), 0, 0, 1, 1},
  {&__pyx_n_s_iscoroutinefunction, __pyx_k_iscoroutinefunction, sizeof(__pyx_k_iscoroutinefunction), 0, 0, 1, 1},
  {&__pyx_n_s_item, __pyx_k_item, sizeof(__pyx_k_item), 0, 0, 1, 1},
  {&__pyx_n_s_join, __pyx_k_join, sizeof(__pyx_k_join), 0, 0, 1, 1},
  {&__pyx_n_s_key, __pyx_k_key, sizeof(__pyx_k_key), 0, 0, 1, 1},
  {&__pyx_n_s_last_observed_state, __pyx_k_last_observed_state, sizeof(__pyx_k_last_observed_state), 0, 0, 1, 1},
  {&__pyx_n_s_len, __pyx_k_len, sizeof(__pyx_k_len), 0, 0, 1, 1},
  {&__pyx_n_s_listen, __pyx_k_listen, sizeof(__pyx_k_listen), 0, 0, 1, 1},
  {&__pyx_n_s_local_connect_type, __pyx_k_local_connect_type, sizeof(__pyx_k_local_connect_type), 0, 0, 1, 1},
  {&__pyx_n_s_local_tcp, __pyx_k_local_tcp, sizeof(__pyx_k_local_tcp), 0, 0, 1, 1},
  {&__pyx_n_s_logging, __pyx_k_logging, sizeof(__pyx_k_logging), 0, 0, 1, 1},
  {&__pyx_n_s_loop, __pyx_k_loop, sizeof(__pyx_k_loop), 0, 0, 1, 1},
  {&__pyx_n_s_low, __pyx_k_low, sizeof(__pyx_k_low), 0, 0, 1, 1},
  {&__pyx_n_s_lower, __pyx_k_lower, sizeof(__pyx_k_lower), 0, 0, 1, 1},
  {&__pyx_n_s_lstrip, __pyx_k_lstrip, sizeof(__pyx_k_lstrip), 0, 0, 1, 1},
  {&__pyx_n_s_main, __pyx_k_main, sizeof(__pyx_k_main), 0, 0, 1, 1},
  {&__pyx_n_s_managed_target, __pyx_k_managed_target, sizeof(__pyx_k_managed_target), 0, 0, 1, 1},
  {&__pyx_n_s_max_concurrent_streams, __pyx_k_max_concurrent_streams, sizeof(__pyx_k_max_concurrent_streams), 0, 0, 1, 1},
  {&__pyx_n_s_max_receive_message_length, __pyx_k_max_receive_message_length, sizeof(__pyx_k_max_receive_message_length), 0, 0, 1, 1},
  {&__pyx_n_s_max_results, __pyx_k_max_results, sizeof(__pyx_k_max_results), 0, 0, 1, 1},
  {&__pyx_n_s_max_send_message_length, __pyx_k_max_send_message_length, sizeof(__pyx_k_max_send_message_length), 0, 0, 1, 1},
  {&__pyx_n_s_maximum_concurrent_rpcs, __pyx_k_maximum_concurrent_rpcs, sizeof(__pyx_k_maximum_concurrent_rpcs), 0, 0, 1, 1},
  {&__pyx_kp_s_maximum_concurrent_rpcs_should_b, __pyx_k_maximum_concurrent_rpcs_should_b, sizeof(__pyx_k_maximum_concurrent_rpcs_should_b), 0, 0, 1, 0},
  {&__pyx_n_s_maxsize, __pyx_k_maxsize, sizeof(__pyx_k_maxsize), 0, 0, 1, 1},
  {&__pyx_n_s_medium, __pyx_k_medium, sizeof(__pyx_k_medium), 0, 0, 1, 1},
  {&__pyx_n_s_members, __pyx_k_members, sizeof(__pyx_k_members), 0, 0, 1, 1},
  {&__pyx_n_s_message, __pyx_k_message, sizeof(__pyx_k_message), 0, 0, 1, 1},
  {&__pyx_n_s_metaclass, __pyx_k_metaclass, sizeof(__pyx_k_metaclass), 0, 0, 1, 1},
  {&__pyx_n_s_metadata, __pyx_k_metadata, sizeof(__pyx_k_metadata), 0, 0, 1, 1},
  {&__pyx_n_s_metadata_locals_genexpr, __pyx_k_metadata_locals_genexpr, sizeof(__pyx_k_metadata_locals_genexpr), 0, 0, 1, 1},
  {&__pyx_n_s_metadata_plugin, __pyx_k_metadata_plugin, sizeof(__pyx_k_metadata_plugin), 0, 0, 1, 1},
  {&__pyx_n_s_metadata_sent_observer, __pyx_k_metadata_sent_observer, sizeof(__pyx_k_metadata_sent_observer), 0, 0, 1, 1},
  {&__pyx_kp_s_metadata_was_invalid_s, __pyx_k_metadata_was_invalid_s, sizeof(__pyx_k_metadata_was_invalid_s), 0, 0, 1, 0},
  {&__pyx_n_s_method, __pyx_k_method, sizeof(__pyx_k_method), 0, 0, 1, 1},
  {&__pyx_n_s_method_handler, __pyx_k_method_handler, sizeof(__pyx_k_method_handler), 0, 0, 1, 1},
  {&__pyx_n_s_module, __pyx_k_module, sizeof(__pyx_k_module), 0, 0, 1, 1},
  {&__pyx_n_s_name, __pyx_k_name, sizeof(__pyx_k_name), 0, 0, 1, 1},
  {&__pyx_n_s_name_2, __pyx_k_name_2, sizeof(__pyx_k_name_2), 0, 0, 1, 1},
  {&__pyx_n_s_namedtuple, __pyx_k_namedtuple, sizeof(__pyx_k_namedtuple), 0, 0, 1, 1},
  {&__pyx_n_s_new, __pyx_k_new, sizeof(__pyx_k_new), 0, 0, 1, 1},
  {&__pyx_n_s_next_call_event, __pyx_k_next_call_event, sizeof(__pyx_k_next_call_event), 0, 0, 1, 1},
  {&__pyx_n_s_next_call_event_locals_on_succes, __pyx_k_next_call_event_locals_on_succes, sizeof(__pyx_k_next_call_event_locals_on_succes), 0, 0, 1, 1},
  {&__pyx_n_s_next_event_locals_on_failure, __pyx_k_next_event_locals_on_failure, sizeof(__pyx_k_next_event_locals_on_failure), 0, 0, 1, 1},
  {&__pyx_n_s_next_event_locals_on_success, __pyx_k_next_event_locals_on_success, sizeof(__pyx_k_next_event_locals_on_success), 0, 0, 1, 1},
  {&__pyx_n_s_no_compress, __pyx_k_no_compress, sizeof(__pyx_k_no_compress), 0, 0, 1, 1},
  {&__pyx_kp_s_no_default___reduce___due_to_non, __pyx_k_no_default___reduce___due_to_non, sizeof(__pyx_k_no_default___reduce___due_to_non), 0, 0, 1, 0},
  {&__pyx_n_s_none, __pyx_k_none, sizeof(__pyx_k_none), 0, 0, 1, 1},
  {&__pyx_n_s_not_found, __pyx_k_not_found, sizeof(__pyx_k_not_found), 0, 0, 1, 1},
  {&__pyx_n_s_not_invoked, __pyx_k_not_invoked, sizeof(__pyx_k_not_invoked), 0, 0, 1, 1},
  {&__pyx_n_s_not_on_client, __pyx_k_not_on_client, sizeof(__pyx_k_not_on_client), 0, 0, 1, 1},
  {&__pyx_n_s_not_on_server, __pyx_k_not_on_server, sizeof(__pyx_k_not_on_server), 0, 0, 1, 1},
  {&__pyx_n_s_notify, __pyx_k_notify, sizeof(__pyx_k_notify), 0, 0, 1, 1},
  {&__pyx_n_s_notify_all, __pyx_k_notify_all, sizeof(__pyx_k_notify_all), 0, 0, 1, 1},
  {&__pyx_n_s_num_active_threads, __pyx_k_num_active_threads, sizeof(__pyx_k_num_active_threads), 0, 0, 1, 1},
  {&__pyx_n_s_object, __pyx_k_object, sizeof(__pyx_k_object), 0, 0, 1, 1},
  {&__pyx_kp_s_object_2, __pyx_k_object_2, sizeof(__pyx_k_object_2), 0, 0, 1, 0},
  {&__pyx_kp_s_of_RPC_that_terminated_with_sta, __pyx_k_of_RPC_that_terminated_with_sta, sizeof(__pyx_k_of_RPC_that_terminated_with_sta), 0, 0, 1, 0},
  {&__pyx_kp_s_of_RPC_that_terminated_with_sta_2, __pyx_k_of_RPC_that_terminated_with_sta_2, sizeof(__pyx_k_of_RPC_that_terminated_with_sta_2), 0, 0, 1, 0},
  {&__pyx_n_s_ok, __pyx_k_ok, sizeof(__pyx_k_ok), 0, 0, 1, 1},
  {&__pyx_n_s_on_failure, __pyx_k_on_failure, sizeof(__pyx_k_on_failure), 0, 0, 1, 1},
  {&__pyx_n_s_on_finish, __pyx_k_on_finish, sizeof(__pyx_k_on_finish), 0, 0, 1, 1},
  {&__pyx_n_s_on_success, __pyx_k_on_success, sizeof(__pyx_k_on_success), 0, 0, 1, 1},
  {&__pyx_n_s_op, __pyx_k_op, sizeof(__pyx_k_op), 0, 0, 1, 1},
  {&__pyx_n_s_operation_complete, __pyx_k_operation_complete, sizeof(__pyx_k_operation_complete), 0, 0, 1, 1},
  {&__pyx_n_s_operations, __pyx_k_operations, sizeof(__pyx_k_operations), 0, 0, 1, 1},
  {&__pyx_n_s_operationses_and_tags, __pyx_k_operationses_and_tags, sizeof(__pyx_k_operationses_and_tags), 0, 0, 1, 1},
  {&__pyx_n_s_ops, __pyx_k_ops, sizeof(__pyx_k_ops), 0, 0, 1, 1},
  {&__pyx_n_s_options, __pyx_k_options, sizeof(__pyx_k_options), 0, 0, 1, 1},
  {&__pyx_n_s_os, __pyx_k_os, sizeof(__pyx_k_os), 0, 0, 1, 1},
  {&__pyx_n_s_out_of_range, __pyx_k_out_of_range, sizeof(__pyx_k_out_of_range), 0, 0, 1, 1},
  {&__pyx_n_s_outbound_initial_metadata, __pyx_k_outbound_initial_metadata, sizeof(__pyx_k_outbound_initial_metadata), 0, 0, 1, 1},
  {&__pyx_n_s_partial, __pyx_k_partial, sizeof(__pyx_k_partial), 0, 0, 1, 1},
  {&__pyx_n_s_peer, __pyx_k_peer, sizeof(__pyx_k_peer), 0, 0, 1, 1},
  {&__pyx_n_s_peer_identities, __pyx_k_peer_identities, sizeof(__pyx_k_peer_identities), 0, 0, 1, 1},
  {&__pyx_n_s_peer_identity_key, __pyx_k_peer_identity_key, sizeof(__pyx_k_peer_identity_key), 0, 0, 1, 1},
  {&__pyx_n_s_pem_key_cert_pairs, __pyx_k_pem_key_cert_pairs, sizeof(__pyx_k_pem_key_cert_pairs), 0, 0, 1, 1},
  {&__pyx_n_s_pem_root_certificates, __pyx_k_pem_root_certificates, sizeof(__pyx_k_pem_root_certificates), 0, 0, 1, 1},
  {&__pyx_n_s_pem_root_certs, __pyx_k_pem_root_certs, sizeof(__pyx_k_pem_root_certs), 0, 0, 1, 1},
  {&__pyx_n_s_permission_denied, __pyx_k_permission_denied, sizeof(__pyx_k_permission_denied), 0, 0, 1, 1},
  {&__pyx_n_s_pickle, __pyx_k_pickle, sizeof(__pyx_k_pickle), 0, 0, 1, 1},
  {&__pyx_n_s_pkgutil, __pyx_k_pkgutil, sizeof(__pyx_k_pkgutil), 0, 0, 1, 1},
  {&__pyx_n_s_poll, __pyx_k_poll, sizeof(__pyx_k_poll), 0, 0, 1, 1},
  {&__pyx_n_s_poll_wrapper, __pyx_k_poll_wrapper, sizeof(__pyx_k_poll_wrapper), 0, 0, 1, 1},
  {&__pyx_n_s_poller, __pyx_k_poller, sizeof(__pyx_k_poller), 0, 0, 1, 1},
  {&__pyx_n_s_pool, __pyx_k_pool, sizeof(__pyx_k_pool), 0, 0, 1, 1},
  {&__pyx_n_s_pop, __pyx_k_pop, sizeof(__pyx_k_pop), 0, 0, 1, 1},
  {&__pyx_n_s_postfork_state_to_reset, __pyx_k_postfork_state_to_reset, sizeof(__pyx_k_postfork_state_to_reset), 0, 0, 1, 1},
  {&__pyx_n_s_postfork_states_to_reset, __pyx_k_postfork_states_to_reset, sizeof(__pyx_k_postfork_states_to_reset), 0, 0, 1, 1},
  {&__pyx_n_s_prepare, __pyx_k_prepare, sizeof(__pyx_k_prepare), 0, 0, 1, 1},
  {&__pyx_n_s_primary_user_agent_string, __pyx_k_primary_user_agent_string, sizeof(__pyx_k_primary_user_agent_string), 0, 0, 1, 1},
  {&__pyx_n_s_private_key, __pyx_k_private_key, sizeof(__pyx_k_private_key), 0, 0, 1, 1},
  {&__pyx_n_s_properties, __pyx_k_properties, sizeof(__pyx_k_properties), 0, 0, 1, 1},
  {&__pyx_n_s_property, __pyx_k_property, sizeof(__pyx_k_property), 0, 0, 1, 1},
  {&__pyx_n_s_put, __pyx_k_put, sizeof(__pyx_k_put), 0, 0, 1, 1},
  {&__pyx_n_s_py_auth_context, __pyx_k_py_auth_context, sizeof(__pyx_k_py_auth_context), 0, 0, 1, 1},
  {&__pyx_n_s_python_call_credentials, __pyx_k_python_call_credentials, sizeof(__pyx_k_python_call_credentials), 0, 0, 1, 1},
  {&__pyx_n_s_pyx_PickleError, __pyx_k_pyx_PickleError, sizeof(__pyx_k_pyx_PickleError), 0, 0, 1, 1},
  {&__pyx_n_s_pyx_capi, __pyx_k_pyx_capi, sizeof(__pyx_k_pyx_capi), 0, 0, 1, 1},
  {&__pyx_n_s_pyx_checksum, __pyx_k_pyx_checksum, sizeof(__pyx_k_pyx_checksum), 0, 0, 1, 1},
  {&__pyx_n_s_pyx_result, __pyx_k_pyx_result, sizeof(__pyx_k_pyx_result), 0, 0, 1, 1},
  {&__pyx_n_s_pyx_state, __pyx_k_pyx_state, sizeof(__pyx_k_pyx_state), 0, 0, 1, 1},
  {&__pyx_n_s_pyx_type, __pyx_k_pyx_type, sizeof(__pyx_k_pyx_type), 0, 0, 1, 1},
  {&__pyx_n_s_pyx_unpickle_AioServer, __pyx_k_pyx_unpickle_AioServer, sizeof(__pyx_k_pyx_unpickle_AioServer), 0, 0, 1, 1},
  {&__pyx_n_s_pyx_unpickle_CensusContext, __pyx_k_pyx_unpickle_CensusContext, sizeof(__pyx_k_pyx_unpickle_CensusContext), 0, 0, 1, 1},
  {&__pyx_n_s_pyx_unpickle_ChannelCredential, __pyx_k_pyx_unpickle_ChannelCredential, sizeof(__pyx_k_pyx_unpickle_ChannelCredential), 0, 0, 1, 1},
  {&__pyx_n_s_pyx_unpickle_InsecureChannelCr, __pyx_k_pyx_unpickle_InsecureChannelCr, sizeof(__pyx_k_pyx_unpickle_InsecureChannelCr), 0, 0, 1, 1},
  {&__pyx_n_s_pyx_unpickle__Tag, __pyx_k_pyx_unpickle__Tag, sizeof(__pyx_k_pyx_unpickle__Tag), 0, 0, 1, 1},
  {&__pyx_n_s_pyx_vtable, __pyx_k_pyx_vtable, sizeof(__pyx_k_pyx_vtable), 0, 0, 1, 1},
  {&__pyx_n_s_qualname, __pyx_k_qualname, sizeof(__pyx_k_qualname), 0, 0, 1, 1},
  {&__pyx_n_s_query_handler, __pyx_k_query_handler, sizeof(__pyx_k_query_handler), 0, 0, 1, 1},
  {&__pyx_n_s_query_handlers, __pyx_k_query_handlers, sizeof(__pyx_k_query_handlers), 0, 0, 1, 1},
  {&__pyx_n_s_queue, __pyx_k_queue, sizeof(__pyx_k_queue), 0, 0, 1, 1},
  {&__pyx_kp_s_queue_must_be_live, __pyx_k_queue_must_be_live, sizeof(__pyx_k_queue_must_be_live), 0, 0, 1, 0},
  {&__pyx_kp_s_queue_must_be_shutting_down_to_b, __pyx_k_queue_must_be_shutting_down_to_b, sizeof(__pyx_k_queue_must_be_shutting_down_to_b), 0, 0, 1, 0},
  {&__pyx_n_s_queue_shutdown, __pyx_k_queue_shutdown, sizeof(__pyx_k_queue_shutdown), 0, 0, 1, 1},
  {&__pyx_n_s_queue_timeout, __pyx_k_queue_timeout, sizeof(__pyx_k_queue_timeout), 0, 0, 1, 1},
  {&__pyx_n_s_range, __pyx_k_range, sizeof(__pyx_k_range), 0, 0, 1, 1},
  {&__pyx_n_s_read, __pyx_k_read, sizeof(__pyx_k_read), 0, 0, 1, 1},
  {&__pyx_n_s_read_socket, __pyx_k_read_socket, sizeof(__pyx_k_read_socket), 0, 0, 1, 1},
  {&__pyx_n_s_ready, __pyx_k_ready, sizeof(__pyx_k_ready), 0, 0, 1, 1},
  {&__pyx_n_s_receive_close_on_server, __pyx_k_receive_close_on_server, sizeof(__pyx_k_receive_close_on_server), 0, 0, 1, 1},
  {&__pyx_n_s_receive_initial_metadata, __pyx_k_receive_initial_metadata, sizeof(__pyx_k_receive_initial_metadata), 0, 0, 1, 1},
  {&__pyx_n_s_receive_initial_metadata_2, __pyx_k_receive_initial_metadata_2, sizeof(__pyx_k_receive_initial_metadata_2), 0, 0, 1, 1},
  {&__pyx_n_s_receive_message, __pyx_k_receive_message, sizeof(__pyx_k_receive_message), 0, 0, 1, 1},
  {&__pyx_n_s_receive_message_2, __pyx_k_receive_message_2, sizeof(__pyx_k_receive_message_2), 0, 0, 1, 1},
  {&__pyx_n_s_receive_op, __pyx_k_receive_op, sizeof(__pyx_k_receive_op), 0, 0, 1, 1},
  {&__pyx_n_s_receive_serialized_message, __pyx_k_receive_serialized_message, sizeof(__pyx_k_receive_serialized_message), 0, 0, 1, 1},
  {&__pyx_n_s_receive_status_on_client, __pyx_k_receive_status_on_client, sizeof(__pyx_k_receive_status_on_client), 0, 0, 1, 1},
  {&__pyx_n_s_recv, __pyx_k_recv, sizeof(__pyx_k_recv), 0, 0, 1, 1},
  {&__pyx_n_s_reduce, __pyx_k_reduce, sizeof(__pyx_k_reduce), 0, 0, 1, 1},
  {&__pyx_n_s_reduce_cython, __pyx_k_reduce_cython, sizeof(__pyx_k_reduce_cython), 0, 0, 1, 1},
  {&__pyx_n_s_reduce_ex, __pyx_k_reduce_ex, sizeof(__pyx_k_reduce_ex), 0, 0, 1, 1},
  {&__pyx_n_s_register_completion_queue, __pyx_k_register_completion_queue, sizeof(__pyx_k_register_completion_queue), 0, 0, 1, 1},
  {&__pyx_n_s_release, __pyx_k_release, sizeof(__pyx_k_release), 0, 0, 1, 1},
  {&__pyx_n_s_remove_reader, __pyx_k_remove_reader, sizeof(__pyx_k_remove_reader), 0, 0, 1, 1},
  {&__pyx_n_s_repr, __pyx_k_repr, sizeof(__pyx_k_repr), 0, 0, 1, 1},
  {&__pyx_n_s_repr_2, __pyx_k_repr_2, sizeof(__pyx_k_repr_2), 0, 0, 1, 1},
  {&__pyx_n_s_request, __pyx_k_request, sizeof(__pyx_k_request), 0, 0, 1, 1},
  {&__pyx_n_s_request_call, __pyx_k_request_call, sizeof(__pyx_k_request_call), 0, 0, 1, 1},
  {&__pyx_n_s_request_deserializer, __pyx_k_request_deserializer, sizeof(__pyx_k_request_deserializer), 0, 0, 1, 1},
  {&__pyx_n_s_request_iterator, __pyx_k_request_iterator, sizeof(__pyx_k_request_iterator), 0, 0, 1, 1},
  {&__pyx_n_s_request_message, __pyx_k_request_message, sizeof(__pyx_k_request_message), 0, 0, 1, 1},
  {&__pyx_n_s_request_raw, __pyx_k_request_raw, sizeof(__pyx_k_request_raw), 0, 0, 1, 1},
  {&__pyx_n_s_request_streaming, __pyx_k_request_streaming, sizeof(__pyx_k_request_streaming), 0, 0, 1, 1},
  {&__pyx_n_s_reset_postfork_child, __pyx_k_reset_postfork_child, sizeof(__pyx_k_reset_postfork_child), 0, 0, 1, 1},
  {&__pyx_n_s_resolve_wrapper, __pyx_k_resolve_wrapper, sizeof(__pyx_k_resolve_wrapper), 0, 0, 1, 1},
  {&__pyx_n_s_resource_exhausted, __pyx_k_resource_exhausted, sizeof(__pyx_k_resource_exhausted), 0, 0, 1, 1},
  {&__pyx_n_s_response, __pyx_k_response, sizeof(__pyx_k_response), 0, 0, 1, 1},
  {&__pyx_n_s_response_message, __pyx_k_response_message, sizeof(__pyx_k_response_message), 0, 0, 1, 1},
  {&__pyx_n_s_response_raw, __pyx_k_response_raw, sizeof(__pyx_k_response_raw), 0, 0, 1, 1},
  {&__pyx_n_s_response_serializer, __pyx_k_response_serializer, sizeof(__pyx_k_response_serializer), 0, 0, 1, 1},
  {&__pyx_n_s_response_streaming, __pyx_k_response_streaming, sizeof(__pyx_k_response_streaming), 0, 0, 1, 1},
  {&__pyx_n_s_result, __pyx_k_result, sizeof(__pyx_k_result), 0, 0, 1, 1},
  {&__pyx_n_s_retain_self, __pyx_k_retain_self, sizeof(__pyx_k_retain_self), 0, 0, 1, 1},
  {&__pyx_n_s_return, __pyx_k_return, sizeof(__pyx_k_return), 0, 0, 1, 1},
  {&__pyx_n_s_return_from_user_request_generat, __pyx_k_return_from_user_request_generat, sizeof(__pyx_k_return_from_user_request_generat), 0, 0, 1, 1},
  {&__pyx_n_s_rpc_coro, __pyx_k_rpc_coro, sizeof(__pyx_k_rpc_coro), 0, 0, 1, 1},
  {&__pyx_n_s_rpc_state, __pyx_k_rpc_state, sizeof(__pyx_k_rpc_state), 0, 0, 1, 1},
  {&__pyx_n_s_rpc_task, __pyx_k_rpc_task, sizeof(__pyx_k_rpc_task), 0, 0, 1, 1},
  {&__pyx_n_s_rstrip, __pyx_k_rstrip, sizeof(__pyx_k_rstrip), 0, 0, 1, 1},
  {&__pyx_n_s_run, __pyx_k_run, sizeof(__pyx_k_run), 0, 0, 1, 1},
  {&__pyx_n_s_run_2, __pyx_k_run_2, sizeof(__pyx_k_run_2), 0, 0, 1, 1},
  {&__pyx_n_s_run_coroutine_threadsafe, __pyx_k_run_coroutine_threadsafe, sizeof(__pyx_k_run_coroutine_threadsafe), 0, 0, 1, 1},
  {&__pyx_n_s_run_in_executor, __pyx_k_run_in_executor, sizeof(__pyx_k_run_in_executor), 0, 0, 1, 1},
  {&__pyx_n_s_run_interceptor, __pyx_k_run_interceptor, sizeof(__pyx_k_run_interceptor), 0, 0, 1, 1},
  {&__pyx_n_s_run_loop, __pyx_k_run_loop, sizeof(__pyx_k_run_loop), 0, 0, 1, 1},
  {&__pyx_n_s_run_with_context, __pyx_k_run_with_context, sizeof(__pyx_k_run_with_context), 0, 0, 1, 1},
  {&__pyx_n_s_run_with_context_locals__run, __pyx_k_run_with_context_locals__run, sizeof(__pyx_k_run_with_context_locals__run), 0, 0, 1, 1},
  {&__pyx_n_s_runtime_error, __pyx_k_runtime_error, sizeof(__pyx_k_runtime_error), 0, 0, 1, 1},
  {&__pyx_n_s_s, __pyx_k_s, sizeof(__pyx_k_s), 0, 0, 1, 1},
  {&__pyx_n_s_schedule_coro_threadsafe, __pyx_k_schedule_coro_threadsafe, sizeof(__pyx_k_schedule_coro_threadsafe), 0, 0, 1, 1},
  {&__pyx_n_s_schedule_rpc_coro, __pyx_k_schedule_rpc_coro, sizeof(__pyx_k_schedule_rpc_coro), 0, 0, 1, 1},
  {&__pyx_n_s_secondary_user_agent_string, __pyx_k_secondary_user_agent_string, sizeof(__pyx_k_secondary_user_agent_string), 0, 0, 1, 1},
  {&__pyx_n_s_segregated_call_locals_on_succe, __pyx_k_segregated_call_locals_on_succe, sizeof(__pyx_k_segregated_call_locals_on_succe), 0, 0, 1, 1},
  {&__pyx_n_s_self, __pyx_k_self, sizeof(__pyx_k_self), 0, 0, 1, 1},
  {&__pyx_kp_s_self__cq_cannot_be_converted_to, __pyx_k_self__cq_cannot_be_converted_to, sizeof(__pyx_k_self__cq_cannot_be_converted_to), 0, 0, 1, 0},
  {&__pyx_kp_s_self_arg_cannot_be_converted_to, __pyx_k_self_arg_cannot_be_converted_to, sizeof(__pyx_k_self_arg_cannot_be_converted_to), 0, 0, 1, 0},
  {&__pyx_kp_s_self_c_argument_cannot_be_conver, __pyx_k_self_c_argument_cannot_be_conver, sizeof(__pyx_k_self_c_argument_cannot_be_conver), 0, 0, 1, 0},
  {&__pyx_kp_s_self_c_credentials_cannot_be_con, __pyx_k_self_c_credentials_cannot_be_con, sizeof(__pyx_k_self_c_credentials_cannot_be_con), 0, 0, 1, 0},
  {&__pyx_kp_s_self_c_op_cannot_be_converted_to, __pyx_k_self_c_op_cannot_be_converted_to, sizeof(__pyx_k_self_c_op_cannot_be_converted_to), 0, 0, 1, 0},
  {&__pyx_n_s_send, __pyx_k_send, sizeof(__pyx_k_send), 0, 0, 1, 1},
  {&__pyx_n_s_send_close_from_client, __pyx_k_send_close_from_client, sizeof(__pyx_k_send_close_from_client), 0, 0, 1, 1},
  {&__pyx_n_s_send_error_status_from_server, __pyx_k_send_error_status_from_server, sizeof(__pyx_k_send_error_status_from_server), 0, 0, 1, 1},
  {&__pyx_n_s_send_initial_metadata, __pyx_k_send_initial_metadata, sizeof(__pyx_k_send_initial_metadata), 0, 0, 1, 1},
  {&__pyx_n_s_send_initial_metadata_2, __pyx_k_send_initial_metadata_2, sizeof(__pyx_k_send_initial_metadata_2), 0, 0, 1, 1},
  {&__pyx_n_s_send_initial_metadata_op, __pyx_k_send_initial_metadata_op, sizeof(__pyx_k_send_initial_metadata_op), 0, 0, 1, 1},
  {&__pyx_n_s_send_message, __pyx_k_send_message, sizeof(__pyx_k_send_message), 0, 0, 1, 1},
  {&__pyx_n_s_send_message_2, __pyx_k_send_message_2, sizeof(__pyx_k_send_message_2), 0, 0, 1, 1},
  {&__pyx_n_s_send_receive_close, __pyx_k_send_receive_close, sizeof(__pyx_k_send_receive_close), 0, 0, 1, 1},
  {&__pyx_n_s_send_serialized_message, __pyx_k_send_serialized_message, sizeof(__pyx_k_send_serialized_message), 0, 0, 1, 1},
  {&__pyx_n_s_send_status_from_server, __pyx_k_send_status_from_server, sizeof(__pyx_k_send_status_from_server), 0, 0, 1, 1},
  {&__pyx_n_s_sendmsg, __pyx_k_sendmsg, sizeof(__pyx_k_sendmsg), 0, 0, 1, 1},
  {&__pyx_n_s_server, __pyx_k_server, sizeof(__pyx_k_server), 0, 0, 1, 1},
  {&__pyx_n_s_server_certificate_config_ssl, __pyx_k_server_certificate_config_ssl, sizeof(__pyx_k_server_certificate_config_ssl), 0, 0, 1, 1},
  {&__pyx_n_s_server_credentials, __pyx_k_server_credentials, sizeof(__pyx_k_server_credentials), 0, 0, 1, 1},
  {&__pyx_n_s_server_credentials_alts, __pyx_k_server_credentials_alts, sizeof(__pyx_k_server_credentials_alts), 0, 0, 1, 1},
  {&__pyx_n_s_server_credentials_local, __pyx_k_server_credentials_local, sizeof(__pyx_k_server_credentials_local), 0, 0, 1, 1},
  {&__pyx_n_s_server_credentials_ssl, __pyx_k_server_credentials_ssl, sizeof(__pyx_k_server_credentials_ssl), 0, 0, 1, 1},
  {&__pyx_n_s_server_credentials_ssl_dynamic_c, __pyx_k_server_credentials_ssl_dynamic_c, sizeof(__pyx_k_server_credentials_ssl_dynamic_c), 0, 0, 1, 1},
  {&__pyx_n_s_server_id, __pyx_k_server_id, sizeof(__pyx_k_server_id), 0, 0, 1, 1},
  {&__pyx_n_s_server_main_loop, __pyx_k_server_main_loop, sizeof(__pyx_k_server_main_loop), 0, 0, 1, 1},
  {&__pyx_kp_s_server_must_be_started_and_not_s, __pyx_k_server_must_be_started_and_not_s, sizeof(__pyx_k_server_must_be_started_and_not_s), 0, 0, 1, 0},
  {&__pyx_n_s_server_queue, __pyx_k_server_queue, sizeof(__pyx_k_server_queue), 0, 0, 1, 1},
  {&__pyx_kp_s_server_queue_must_be_a_registere, __pyx_k_server_queue_must_be_a_registere, sizeof(__pyx_k_server_queue_must_be_a_registere), 0, 0, 1, 0},
  {&__pyx_n_s_service, __pyx_k_service, sizeof(__pyx_k_service), 0, 0, 1, 1},
  {&__pyx_n_s_service_accounts, __pyx_k_service_accounts, sizeof(__pyx_k_service_accounts), 0, 0, 1, 1},
  {&__pyx_n_s_servicer_context, __pyx_k_servicer_context, sizeof(__pyx_k_servicer_context), 0, 0, 1, 1},
  {&__pyx_n_s_serving_task_crash_handler, __pyx_k_serving_task_crash_handler, sizeof(__pyx_k_serving_task_crash_handler), 0, 0, 1, 1},
  {&__pyx_n_s_set, __pyx_k_set, sizeof(__pyx_k_set), 0, 0, 1, 1},
  {&__pyx_n_s_setDaemon, __pyx_k_setDaemon, sizeof(__pyx_k_setDaemon), 0, 0, 1, 1},
  {&__pyx_n_s_set_async_callback_func, __pyx_k_set_async_callback_func, sizeof(__pyx_k_set_async_callback_func), 0, 0, 1, 1},
  {&__pyx_n_s_set_census_context_on_call, __pyx_k_set_census_context_on_call, sizeof(__pyx_k_set_census_context_on_call), 0, 0, 1, 1},
  {&__pyx_n_s_set_code, __pyx_k_set_code, sizeof(__pyx_k_set_code), 0, 0, 1, 1},
  {&__pyx_n_s_set_compression, __pyx_k_set_compression, sizeof(__pyx_k_set_compression), 0, 0, 1, 1},
  {&__pyx_n_s_set_details, __pyx_k_set_details, sizeof(__pyx_k_set_details), 0, 0, 1, 1},
  {&__pyx_n_s_set_exception, __pyx_k_set_exception, sizeof(__pyx_k_set_exception), 0, 0, 1, 1},
  {&__pyx_n_s_set_result, __pyx_k_set_result, sizeof(__pyx_k_set_result), 0, 0, 1, 1},
  {&__pyx_n_s_set_trailing_metadata, __pyx_k_set_trailing_metadata, sizeof(__pyx_k_set_trailing_metadata), 0, 0, 1, 1},
  {&__pyx_n_s_setblocking, __pyx_k_setblocking, sizeof(__pyx_k_setblocking), 0, 0, 1, 1},
  {&__pyx_n_s_setsockopt, __pyx_k_setsockopt, sizeof(__pyx_k_setsockopt), 0, 0, 1, 1},
  {&__pyx_n_s_setstate, __pyx_k_setstate, sizeof(__pyx_k_setstate), 0, 0, 1, 1},
  {&__pyx_n_s_setstate_cython, __pyx_k_setstate_cython, sizeof(__pyx_k_setstate_cython), 0, 0, 1, 1},
  {&__pyx_n_s_shield, __pyx_k_shield, sizeof(__pyx_k_shield), 0, 0, 1, 1},
  {&__pyx_n_s_shutdown, __pyx_k_shutdown, sizeof(__pyx_k_shutdown), 0, 0, 1, 1},
  {&__pyx_n_s_shutdown_cq, __pyx_k_shutdown_cq, sizeof(__pyx_k_shutdown_cq), 0, 0, 1, 1},
  {&__pyx_n_s_shutting_down_server, __pyx_k_shutting_down_server, sizeof(__pyx_k_shutting_down_server), 0, 0, 1, 1},
  {&__pyx_n_s_sleep, __pyx_k_sleep, sizeof(__pyx_k_sleep), 0, 0, 1, 1},
  {&__pyx_n_s_socket, __pyx_k_socket, sizeof(__pyx_k_socket), 0, 0, 1, 1},
  {&__pyx_n_s_socket_accept_async, __pyx_k_socket_accept_async, sizeof(__pyx_k_socket_accept_async), 0, 0, 1, 1},
  {&__pyx_n_s_socket_connect_async, __pyx_k_socket_connect_async, sizeof(__pyx_k_socket_connect_async), 0, 0, 1, 1},
  {&__pyx_n_s_socket_id, __pyx_k_socket_id, sizeof(__pyx_k_socket_id), 0, 0, 1, 1},
  {&__pyx_n_s_socket_read_async, __pyx_k_socket_read_async, sizeof(__pyx_k_socket_read_async), 0, 0, 1, 1},
  {&__pyx_n_s_socket_resolve_async_python, __pyx_k_socket_resolve_async_python, sizeof(__pyx_k_socket_resolve_async_python), 0, 0, 1, 1},
  {&__pyx_n_s_socket_sendmsg, __pyx_k_socket_sendmsg, sizeof(__pyx_k_socket_sendmsg), 0, 0, 1, 1},
  {&__pyx_n_s_socket_wrapper, __pyx_k_socket_wrapper, sizeof(__pyx_k_socket_wrapper), 0, 0, 1, 1},
  {&__pyx_n_s_socket_write_async, __pyx_k_socket_write_async, sizeof(__pyx_k_socket_write_async), 0, 0, 1, 1},
  {&__pyx_n_s_socketpair, __pyx_k_socketpair, sizeof(__pyx_k_socketpair), 0, 0, 1, 1},
  {&__pyx_n_s_spawn, __pyx_k_spawn, sizeof(__pyx_k_spawn), 0, 0, 1, 1},
  {&__pyx_n_s_spawn_callback_async, __pyx_k_spawn_callback_async, sizeof(__pyx_k_spawn_callback_async), 0, 0, 1, 1},
  {&__pyx_n_s_spawn_callback_in_thread, __pyx_k_spawn_callback_in_thread, sizeof(__pyx_k_spawn_callback_in_thread), 0, 0, 1, 1},
  {&__pyx_n_s_spawn_greenlet, __pyx_k_spawn_greenlet, sizeof(__pyx_k_spawn_greenlet), 0, 0, 1, 1},
  {&__pyx_kp_s_src_python_grpcio_grpc__cython, __pyx_k_src_python_grpcio_grpc__cython, sizeof(__pyx_k_src_python_grpcio_grpc__cython), 0, 0, 1, 0},
  {&__pyx_kp_s_src_python_grpcio_grpc__cython_10, __pyx_k_src_python_grpcio_grpc__cython_10, sizeof(__pyx_k_src_python_grpcio_grpc__cython_10), 0, 0, 1, 0},
  {&__pyx_kp_s_src_python_grpcio_grpc__cython_11, __pyx_k_src_python_grpcio_grpc__cython_11, sizeof(__pyx_k_src_python_grpcio_grpc__cython_11), 0, 0, 1, 0},
  {&__pyx_kp_s_src_python_grpcio_grpc__cython_12, __pyx_k_src_python_grpcio_grpc__cython_12, sizeof(__pyx_k_src_python_grpcio_grpc__cython_12), 0, 0, 1, 0},
  {&__pyx_kp_s_src_python_grpcio_grpc__cython_13, __pyx_k_src_python_grpcio_grpc__cython_13, sizeof(__pyx_k_src_python_grpcio_grpc__cython_13), 0, 0, 1, 0},
  {&__pyx_kp_s_src_python_grpcio_grpc__cython_14, __pyx_k_src_python_grpcio_grpc__cython_14, sizeof(__pyx_k_src_python_grpcio_grpc__cython_14), 0, 0, 1, 0},
  {&__pyx_kp_s_src_python_grpcio_grpc__cython_15, __pyx_k_src_python_grpcio_grpc__cython_15, sizeof(__pyx_k_src_python_grpcio_grpc__cython_15), 0, 0, 1, 0},
  {&__pyx_kp_s_src_python_grpcio_grpc__cython_2, __pyx_k_src_python_grpcio_grpc__cython_2, sizeof(__pyx_k_src_python_grpcio_grpc__cython_2), 0, 0, 1, 0},
  {&__pyx_kp_s_src_python_grpcio_grpc__cython_3, __pyx_k_src_python_grpcio_grpc__cython_3, sizeof(__pyx_k_src_python_grpcio_grpc__cython_3), 0, 0, 1, 0},
  {&__pyx_kp_s_src_python_grpcio_grpc__cython_4, __pyx_k_src_python_grpcio_grpc__cython_4, sizeof(__pyx_k_src_python_grpcio_grpc__cython_4), 0, 0, 1, 0},
  {&__pyx_kp_s_src_python_grpcio_grpc__cython_5, __pyx_k_src_python_grpcio_grpc__cython_5, sizeof(__pyx_k_src_python_grpcio_grpc__cython_5), 0, 0, 1, 0},
  {&__pyx_kp_s_src_python_grpcio_grpc__cython_6, __pyx_k_src_python_grpcio_grpc__cython_6, sizeof(__pyx_k_src_python_grpcio_grpc__cython_6), 0, 0, 1, 0},
  {&__pyx_kp_s_src_python_grpcio_grpc__cython_7, __pyx_k_src_python_grpcio_grpc__cython_7, sizeof(__pyx_k_src_python_grpcio_grpc__cython_7), 0, 0, 1, 0},
  {&__pyx_kp_s_src_python_grpcio_grpc__cython_8, __pyx_k_src_python_grpcio_grpc__cython_8, sizeof(__pyx_k_src_python_grpcio_grpc__cython_8), 0, 0, 1, 0},
  {&__pyx_kp_s_src_python_grpcio_grpc__cython_9, __pyx_k_src_python_grpcio_grpc__cython_9, sizeof(__pyx_k_src_python_grpcio_grpc__cython_9), 0, 0, 1, 0},
  {&__pyx_n_s_ssl_session_cache, __pyx_k_ssl_session_cache, sizeof(__pyx_k_ssl_session_cache), 0, 0, 1, 1},
  {&__pyx_n_s_ssl_target_name_override, __pyx_k_ssl_target_name_override, sizeof(__pyx_k_ssl_target_name_override), 0, 0, 1, 1},
  {&__pyx_n_s_start, __pyx_k_start, sizeof(__pyx_k_start), 0, 0, 1, 1},
  {&__pyx_n_s_start_batch, __pyx_k_start_batch, sizeof(__pyx_k_start_batch), 0, 0, 1, 1},
  {&__pyx_n_s_start_channel_id, __pyx_k_start_channel_id, sizeof(__pyx_k_start_channel_id), 0, 0, 1, 1},
  {&__pyx_n_s_start_server_id, __pyx_k_start_server_id, sizeof(__pyx_k_start_server_id), 0, 0, 1, 1},
  {&__pyx_n_s_start_shutting_down, __pyx_k_start_shutting_down, sizeof(__pyx_k_start_shutting_down), 0, 0, 1, 1},
  {&__pyx_n_s_start_socket_id, __pyx_k_start_socket_id, sizeof(__pyx_k_start_socket_id), 0, 0, 1, 1},
  {&__pyx_n_s_started_tag, __pyx_k_started_tag, sizeof(__pyx_k_started_tag), 0, 0, 1, 1},
  {&__pyx_n_s_started_tags, __pyx_k_started_tags, sizeof(__pyx_k_started_tags), 0, 0, 1, 1},
  {&__pyx_n_s_status, __pyx_k_status, sizeof(__pyx_k_status), 0, 0, 1, 1},
  {&__pyx_n_s_status_code, __pyx_k_status_code, sizeof(__pyx_k_status_code), 0, 0, 1, 1},
  {&__pyx_n_s_stop, __pyx_k_stop, sizeof(__pyx_k_stop), 0, 0, 1, 1},
  {&__pyx_n_s_stored_ctx, __pyx_k_stored_ctx, sizeof(__pyx_k_stored_ctx), 0, 0, 1, 1},
  {&__pyx_n_u_str, __pyx_k_str, sizeof(__pyx_k_str), 0, 1, 0, 1},
  {&__pyx_n_s_str_2, __pyx_k_str_2, sizeof(__pyx_k_str_2), 0, 0, 1, 1},
  {&__pyx_n_s_stream_handler, __pyx_k_stream_handler, sizeof(__pyx_k_stream_handler), 0, 0, 1, 1},
  {&__pyx_n_s_stream_stream, __pyx_k_stream_stream, sizeof(__pyx_k_stream_stream), 0, 0, 1, 1},
  {&__pyx_n_s_stream_unary, __pyx_k_stream_unary, sizeof(__pyx_k_stream_unary), 0, 0, 1, 1},
  {&__pyx_kp_s_stringsource, __pyx_k_stringsource, sizeof(__pyx_k_stringsource), 0, 0, 1, 0},
  {&__pyx_n_s_subchannel_id, __pyx_k_subchannel_id, sizeof(__pyx_k_subchannel_id), 0, 0, 1, 1},
  {&__pyx_n_s_success, __pyx_k_success, sizeof(__pyx_k_success), 0, 0, 1, 1},
  {&__pyx_n_s_sync_servicer_context, __pyx_k_sync_servicer_context, sizeof(__pyx_k_sync_servicer_context), 0, 0, 1, 1},
  {&__pyx_n_s_sys, __pyx_k_sys, sizeof(__pyx_k_sys), 0, 0, 1, 1},
  {&__pyx_n_s_t, __pyx_k_t, sizeof(__pyx_k_t), 0, 0, 1, 1},
  {&__pyx_n_s_tag, __pyx_k_tag, sizeof(__pyx_k_tag), 0, 0, 1, 1},
  {&__pyx_n_s_target, __pyx_k_target, sizeof(__pyx_k_target), 0, 0, 1, 1},
  {&__pyx_n_s_test, __pyx_k_test, sizeof(__pyx_k_test), 0, 0, 1, 1},
  {&__pyx_kp_s_the_server_has_already_started, __pyx_k_the_server_has_already_started, sizeof(__pyx_k_the_server_has_already_started), 0, 0, 1, 0},
  {&__pyx_kp_s_the_server_hasn_t_started_yet, __pyx_k_the_server_hasn_t_started_yet, sizeof(__pyx_k_the_server_hasn_t_started_yet), 0, 0, 1, 0},
  {&__pyx_kp_s_the_server_must_be_shutting_down, __pyx_k_the_server_must_be_shutting_down, sizeof(__pyx_k_the_server_must_be_shutting_down), 0, 0, 1, 0},
  {&__pyx_n_s_thread, __pyx_k_thread, sizeof(__pyx_k_thread), 0, 0, 1, 1},
  {&__pyx_n_s_thread_pool, __pyx_k_thread_pool, sizeof(__pyx_k_thread_pool), 0, 0, 1, 1},
  {&__pyx_n_s_threading, __pyx_k_threading, sizeof(__pyx_k_threading), 0, 0, 1, 1},
  {&__pyx_n_s_throw, __pyx_k_throw, sizeof(__pyx_k_throw), 0, 0, 1, 1},
  {&__pyx_n_s_time, __pyx_k_time, sizeof(__pyx_k_time), 0, 0, 1, 1},
  {&__pyx_n_s_time_remaining, __pyx_k_time_remaining, sizeof(__pyx_k_time_remaining), 0, 0, 1, 1},
  {&__pyx_n_s_timeout, __pyx_k_timeout, sizeof(__pyx_k_timeout), 0, 0, 1, 1},
  {&__pyx_n_s_timeout_ms, __pyx_k_timeout_ms, sizeof(__pyx_k_timeout_ms), 0, 0, 1, 1},
  {&__pyx_n_s_timeout_secs, __pyx_k_timeout_secs, sizeof(__pyx_k_timeout_secs), 0, 0, 1, 1},
  {&__pyx_n_s_timer, __pyx_k_timer, sizeof(__pyx_k_timer), 0, 0, 1, 1},
  {&__pyx_n_s_too_many_operations, __pyx_k_too_many_operations, sizeof(__pyx_k_too_many_operations), 0, 0, 1, 1},
  {&__pyx_n_s_traceback, __pyx_k_traceback, sizeof(__pyx_k_traceback), 0, 0, 1, 1},
  {&__pyx_n_s_trailing_metadata, __pyx_k_trailing_metadata, sizeof(__pyx_k_trailing_metadata), 0, 0, 1, 1},
  {&__pyx_n_s_transient_failure, __pyx_k_transient_failure, sizeof(__pyx_k_transient_failure), 0, 0, 1, 1},
  {&__pyx_n_s_true, __pyx_k_true, sizeof(__pyx_k_true), 0, 0, 1, 1},
  {&__pyx_n_s_tuples_to_resolvaddr_locals_gene, __pyx_k_tuples_to_resolvaddr_locals_gene, sizeof(__pyx_k_tuples_to_resolvaddr_locals_gene), 0, 0, 1, 1},
  {&__pyx_n_s_type, __pyx_k_type, sizeof(__pyx_k_type), 0, 0, 1, 1},
  {&__pyx_n_s_uds, __pyx_k_uds, sizeof(__pyx_k_uds), 0, 0, 1, 1},
  {&__pyx_n_s_unary_handler, __pyx_k_unary_handler, sizeof(__pyx_k_unary_handler), 0, 0, 1, 1},
  {&__pyx_n_s_unary_stream, __pyx_k_unary_stream, sizeof(__pyx_k_unary_stream), 0, 0, 1, 1},
  {&__pyx_n_s_unary_unary, __pyx_k_unary_unary, sizeof(__pyx_k_unary_unary), 0, 0, 1, 1},
  {&__pyx_n_s_unauthenticated, __pyx_k_unauthenticated, sizeof(__pyx_k_unauthenticated), 0, 0, 1, 1},
  {&__pyx_n_s_unavailable, __pyx_k_unavailable, sizeof(__pyx_k_unavailable), 0, 0, 1, 1},
  {&__pyx_n_s_unimplemented, __pyx_k_unimplemented, sizeof(__pyx_k_unimplemented), 0, 0, 1, 1},
  {&__pyx_n_s_uninstall_context, __pyx_k_uninstall_context, sizeof(__pyx_k_uninstall_context), 0, 0, 1, 1},
  {&__pyx_n_s_unknown, __pyx_k_unknown, sizeof(__pyx_k_unknown), 0, 0, 1, 1},
  {&__pyx_n_s_update, __pyx_k_update, sizeof(__pyx_k_update), 0, 0, 1, 1},
  {&__pyx_n_s_upper, __pyx_k_upper, sizeof(__pyx_k_upper), 0, 0, 1, 1},
  {&__pyx_n_s_used_mask, __pyx_k_used_mask, sizeof(__pyx_k_used_mask), 0, 0, 1, 1},
  {&__pyx_n_s_user_tag, __pyx_k_user_tag, sizeof(__pyx_k_user_tag), 0, 0, 1, 1},
  {&__pyx_n_s_utf8, __pyx_k_utf8, sizeof(__pyx_k_utf8), 0, 0, 1, 1},
  {&__pyx_kp_s_utf_8, __pyx_k_utf_8, sizeof(__pyx_k_utf_8), 0, 0, 1, 0},
  {&__pyx_n_s_value, __pyx_k_value, sizeof(__pyx_k_value), 0, 0, 1, 1},
  {&__pyx_n_s_values, __pyx_k_values, sizeof(__pyx_k_values), 0, 0, 1, 1},
  {&__pyx_n_s_wait, __pyx_k_wait, sizeof(__pyx_k_wait), 0, 0, 1, 1},
  {&__pyx_n_s_wait_for, __pyx_k_wait_for, sizeof(__pyx_k_wait_for), 0, 0, 1, 1},
  {&__pyx_n_s_wait_for_ready, __pyx_k_wait_for_ready, sizeof(__pyx_k_wait_for_ready), 0, 0, 1, 1},
  {&__pyx_n_s_wait_for_ready_explicitly_set, __pyx_k_wait_for_ready_explicitly_set, sizeof(__pyx_k_wait_for_ready_explicitly_set), 0, 0, 1, 1},
  {&__pyx_n_s_wait_for_termination, __pyx_k_wait_for_termination, sizeof(__pyx_k_wait_for_termination), 0, 0, 1, 1},
  {&__pyx_n_s_wait_time, __pyx_k_wait_time, sizeof(__pyx_k_wait_time), 0, 0, 1, 1},
  {&__pyx_n_s_warning, __pyx_k_warning, sizeof(__pyx_k_warning), 0, 0, 1, 1},
  {&__pyx_n_s_watch_connectivity_state, __pyx_k_watch_connectivity_state, sizeof(__pyx_k_watch_connectivity_state), 0, 0, 1, 1},
  {&__pyx_n_s_wrapper, __pyx_k_wrapper, sizeof(__pyx_k_wrapper), 0, 0, 1, 1},
  {&__pyx_n_s_write, __pyx_k_write, sizeof(__pyx_k_write), 0, 0, 1, 1},
  {&__pyx_n_s_write_bytes, __pyx_k_write_bytes, sizeof(__pyx_k_write_bytes), 0, 0, 1, 1},
  {&__pyx_n_s_write_flag, __pyx_k_write_flag, sizeof(__pyx_k_write_flag), 0, 0, 1, 1},
  {&__pyx_n_s_xds, __pyx_k_xds, sizeof(__pyx_k_xds), 0, 0, 1, 1},
  {&__pyx_n_s_xds_server_credentials, __pyx_k_xds_server_credentials, sizeof(__pyx_k_xds_server_credentials), 0, 0, 1, 1},
  {&__pyx_n_s_yes, __pyx_k_yes, sizeof(__pyx_k_yes), 0, 0, 1, 1},
  {&__pyx_n_s_yield_to_queue, __pyx_k_yield_to_queue, sizeof(__pyx_k_yield_to_queue), 0, 0, 1, 1},
  {0, 0, 0, 0, 0, 0, 0}
};
static CYTHON_SMALL_CODE int __Pyx_InitCachedBuiltins(void) {
  __pyx_builtin_ImportError = __Pyx_GetBuiltinName(__pyx_n_s_ImportError); if (!__pyx_builtin_ImportError) __PYX_ERR(0, 28, __pyx_L1_error)
  __pyx_builtin_object = __Pyx_GetBuiltinName(__pyx_n_s_object); if (!__pyx_builtin_object) __PYX_ERR(1, 99, __pyx_L1_error)
  __pyx_builtin_TypeError = __Pyx_GetBuiltinName(__pyx_n_s_TypeError); if (!__pyx_builtin_TypeError) __PYX_ERR(2, 24, __pyx_L1_error)
  __pyx_builtin_UnicodeDecodeError = __Pyx_GetBuiltinName(__pyx_n_s_UnicodeDecodeError); if (!__pyx_builtin_UnicodeDecodeError) __PYX_ERR(2, 49, __pyx_L1_error)
  __pyx_builtin_enumerate = __Pyx_GetBuiltinName(__pyx_n_s_enumerate); if (!__pyx_builtin_enumerate) __PYX_ERR(3, 74, __pyx_L1_error)
  __pyx_builtin_ValueError = __Pyx_GetBuiltinName(__pyx_n_s_ValueError); if (!__pyx_builtin_ValueError) __PYX_ERR(4, 26, __pyx_L1_error)
  __pyx_builtin_NotImplementedError = __Pyx_GetBuiltinName(__pyx_n_s_NotImplementedError); if (!__pyx_builtin_NotImplementedError) __PYX_ERR(5, 34, __pyx_L1_error)
  __pyx_builtin_range = __Pyx_GetBuiltinName(__pyx_n_s_range); if (!__pyx_builtin_range) __PYX_ERR(5, 250, __pyx_L1_error)
  __pyx_builtin_IOError = __Pyx_GetBuiltinName(__pyx_n_s_IOError); if (!__pyx_builtin_IOError) __PYX_ERR(6, 63, __pyx_L1_error)
  __pyx_builtin_AttributeError = __Pyx_GetBuiltinName(__pyx_n_s_AttributeError); if (!__pyx_builtin_AttributeError) __PYX_ERR(6, 111, __pyx_L1_error)
  __pyx_builtin_BaseException = __Pyx_GetBuiltinName(__pyx_n_s_BaseException); if (!__pyx_builtin_BaseException) __PYX_ERR(6, 364, __pyx_L1_error)
  __pyx_builtin_KeyError = __Pyx_GetBuiltinName(__pyx_n_s_KeyError); if (!__pyx_builtin_KeyError) __PYX_ERR(7, 27, __pyx_L1_error)
  __pyx_builtin_RuntimeError = __Pyx_GetBuiltinName(__pyx_n_s_RuntimeError); if (!__pyx_builtin_RuntimeError) __PYX_ERR(7, 109, __pyx_L1_error)
  __pyx_builtin_AssertionError = __Pyx_GetBuiltinName(__pyx_n_s_AssertionError); if (!__pyx_builtin_AssertionError) __PYX_ERR(8, 108, __pyx_L1_error)
  __pyx_builtin_id = __Pyx_GetBuiltinName(__pyx_n_s_id); if (!__pyx_builtin_id) __PYX_ERR(9, 57, __pyx_L1_error)
  __pyx_builtin_KeyboardInterrupt = __Pyx_GetBuiltinName(__pyx_n_s_KeyboardInterrupt); if (!__pyx_builtin_KeyboardInterrupt) __PYX_ERR(10, 676, __pyx_L1_error)
  __pyx_builtin_SystemExit = __Pyx_GetBuiltinName(__pyx_n_s_SystemExit); if (!__pyx_builtin_SystemExit) __PYX_ERR(10, 676, __pyx_L1_error)
  return 0;
  __pyx_L1_error:;
  return -1;
}

static CYTHON_SMALL_CODE int __Pyx_InitCachedConstants(void) {
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__Pyx_InitCachedConstants", 0);

  /* "(tree fragment)":2
 * def __reduce_cython__(self):
 *     raise TypeError("self.arg cannot be converted to a Python object for pickling")             # <<<<<<<<<<<<<<
 * def __setstate_cython__(self, __pyx_state):
 *     raise TypeError("self.arg cannot be converted to a Python object for pickling")
 */
  __pyx_tuple__2 = PyTuple_Pack(1, __pyx_kp_s_self_arg_cannot_be_converted_to); if (unlikely(!__pyx_tuple__2)) __PYX_ERR(11, 2, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_tuple__2);
  __Pyx_GIVEREF(__pyx_tuple__2);

  /* "(tree fragment)":4
 *     raise TypeError("self.arg cannot be converted to a Python object for pickling")
 * def __setstate_cython__(self, __pyx_state):
 *     raise TypeError("self.arg cannot be converted to a Python object for pickling")             # <<<<<<<<<<<<<<
 */
  __pyx_tuple__3 = PyTuple_Pack(1, __pyx_kp_s_self_arg_cannot_be_converted_to); if (unlikely(!__pyx_tuple__3)) __PYX_ERR(11, 4, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_tuple__3);
  __Pyx_GIVEREF(__pyx_tuple__3);

  /* "(tree fragment)":2
 * def __reduce_cython__(self):
 *     raise TypeError("self.c_argument cannot be converted to a Python object for pickling")             # <<<<<<<<<<<<<<
 * def __setstate_cython__(self, __pyx_state):
 *     raise TypeError("self.c_argument cannot be converted to a Python object for pickling")
 */
  __pyx_tuple__4 = PyTuple_Pack(1, __pyx_kp_s_self_c_argument_cannot_be_conver); if (unlikely(!__pyx_tuple__4)) __PYX_ERR(11, 2, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_tuple__4);
  __Pyx_GIVEREF(__pyx_tuple__4);

  /* "(tree fragment)":4
 *     raise TypeError("self.c_argument cannot be converted to a Python object for pickling")
 * def __setstate_cython__(self, __pyx_state):
 *     raise TypeError("self.c_argument cannot be converted to a Python object for pickling")             # <<<<<<<<<<<<<<
 */
  __pyx_tuple__5 = PyTuple_Pack(1, __pyx_kp_s_self_c_argument_cannot_be_conver); if (unlikely(!__pyx_tuple__5)) __PYX_ERR(11, 4, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_tuple__5);
  __Pyx_GIVEREF(__pyx_tuple__5);

  /* "(tree fragment)":2
 * def __reduce_cython__(self):
 *     raise TypeError("no default __reduce__ due to non-trivial __cinit__")             # <<<<<<<<<<<<<<
 * def __setstate_cython__(self, __pyx_state):
 *     raise TypeError("no default __reduce__ due to non-trivial __cinit__")
 */
  __pyx_tuple__6 = PyTuple_Pack(1, __pyx_kp_s_no_default___reduce___due_to_non); if (unlikely(!__pyx_tuple__6)) __PYX_ERR(11, 2, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_tuple__6);
  __Pyx_GIVEREF(__pyx_tuple__6);

  /* "(tree fragment)":4
 *     raise TypeError("no default __reduce__ due to non-trivial __cinit__")
 * def __setstate_cython__(self, __pyx_state):
 *     raise TypeError("no default __reduce__ due to non-trivial __cinit__")             # <<<<<<<<<<<<<<
 */
  __pyx_tuple__7 = PyTuple_Pack(1, __pyx_kp_s_no_default___reduce___due_to_non); if (unlikely(!__pyx_tuple__7)) __PYX_ERR(11, 4, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_tuple__7);
  __Pyx_GIVEREF(__pyx_tuple__7);

  /* "src/python/grpcio/grpc/_cython/_cygrpc/call.pyx.pxi":26
 *   def _start_batch(self, operations, tag, retain_self):
 *     if not self.is_valid:
 *       raise ValueError("invalid call object cannot be used from Python")             # <<<<<<<<<<<<<<
 *     cdef _BatchOperationTag batch_operation_tag = _BatchOperationTag(
 *         tag, operations, self if retain_self else None)
 */
  __pyx_tuple__8 = PyTuple_Pack(1, __pyx_kp_s_invalid_call_object_cannot_be_us); if (unlikely(!__pyx_tuple__8)) __PYX_ERR(4, 26, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_tuple__8);
  __Pyx_GIVEREF(__pyx_tuple__8);

  /* "src/python/grpcio/grpc/_cython/_cygrpc/call.pyx.pxi":53
 *       raise ValueError("invalid call object cannot be used from Python")
 *     if (details is None) != (error_code == GRPC_STATUS__DO_NOT_USE):
 *       raise ValueError("if error_code is specified, so must details "             # <<<<<<<<<<<<<<
 *                        "(and vice-versa)")
 *     cdef grpc_call_error result
 */
  __pyx_tuple__10 = PyTuple_Pack(1, __pyx_kp_s_if_error_code_is_specified_so_mu); if (unlikely(!__pyx_tuple__10)) __PYX_ERR(4, 53, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_tuple__10);
  __Pyx_GIVEREF(__pyx_tuple__10);

  /* "(tree fragment)":2
 * def __reduce_cython__(self):
 *     raise TypeError("no default __reduce__ due to non-trivial __cinit__")             # <<<<<<<<<<<<<<
 * def __setstate_cython__(self, __pyx_state):
 *     raise TypeError("no default __reduce__ due to non-trivial __cinit__")
 */
  __pyx_tuple__11 = PyTuple_Pack(1, __pyx_kp_s_no_default___reduce___due_to_non); if (unlikely(!__pyx_tuple__11)) __PYX_ERR(11, 2, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_tuple__11);
  __Pyx_GIVEREF(__pyx_tuple__11);

  /* "(tree fragment)":4
 *     raise TypeError("no default __reduce__ due to non-trivial __cinit__")
 * def __setstate_cython__(self, __pyx_state):
 *     raise TypeError("no default __reduce__ due to non-trivial __cinit__")             # <<<<<<<<<<<<<<
 */
  __pyx_tuple__12 = PyTuple_Pack(1, __pyx_kp_s_no_default___reduce___due_to_non); if (unlikely(!__pyx_tuple__12)) __PYX_ERR(11, 4, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_tuple__12);
  __Pyx_GIVEREF(__pyx_tuple__12);

  /* "(tree fragment)":2
 * def __reduce_cython__(self):
 *     raise TypeError("no default __reduce__ due to non-trivial __cinit__")             # <<<<<<<<<<<<<<
 * def __setstate_cython__(self, __pyx_state):
 *     raise TypeError("no default __reduce__ due to non-trivial __cinit__")
 */
  __pyx_tuple__13 = PyTuple_Pack(1, __pyx_kp_s_no_default___reduce___due_to_non); if (unlikely(!__pyx_tuple__13)) __PYX_ERR(11, 2, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_tuple__13);
  __Pyx_GIVEREF(__pyx_tuple__13);

  /* "(tree fragment)":4
 *     raise TypeError("no default __reduce__ due to non-trivial __cinit__")
 * def __setstate_cython__(self, __pyx_state):
 *     raise TypeError("no default __reduce__ due to non-trivial __cinit__")             # <<<<<<<<<<<<<<
 */
  __pyx_tuple__14 = PyTuple_Pack(1, __pyx_kp_s_no_default___reduce___due_to_non); if (unlikely(!__pyx_tuple__14)) __PYX_ERR(11, 4, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_tuple__14);
  __Pyx_GIVEREF(__pyx_tuple__14);

  /* "(tree fragment)":2
 * def __reduce_cython__(self):
 *     raise TypeError("no default __reduce__ due to non-trivial __cinit__")             # <<<<<<<<<<<<<<
 * def __setstate_cython__(self, __pyx_state):
 *     raise TypeError("no default __reduce__ due to non-trivial __cinit__")
 */
  __pyx_tuple__15 = PyTuple_Pack(1, __pyx_kp_s_no_default___reduce___due_to_non); if (unlikely(!__pyx_tuple__15)) __PYX_ERR(11, 2, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_tuple__15);
  __Pyx_GIVEREF(__pyx_tuple__15);

  /* "(tree fragment)":4
 *     raise TypeError("no default __reduce__ due to non-trivial __cinit__")
 * def __setstate_cython__(self, __pyx_state):
 *     raise TypeError("no default __reduce__ due to non-trivial __cinit__")             # <<<<<<<<<<<<<<
 */
  __pyx_tuple__16 = PyTuple_Pack(1, __pyx_kp_s_no_default___reduce___due_to_non); if (unlikely(!__pyx_tuple__16)) __PYX_ERR(11, 4, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_tuple__16);
  __Pyx_GIVEREF(__pyx_tuple__16);

  /* "src/python/grpcio/grpc/_cython/_cygrpc/channel.pyx.pxi":102
 *   cdef grpc_call_error c_call_error
 *   cdef _BatchOperationTag tag
 *   with channel_state.condition:             # <<<<<<<<<<<<<<
 *     if call_state.due:
 *       c_call_error, tag = _operate(call_state.c_call, operations, user_tag)
 */
  __pyx_tuple__17 = PyTuple_Pack(3, Py_None, Py_None, Py_None); if (unlikely(!__pyx_tuple__17)) __PYX_ERR(12, 102, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_tuple__17);
  __Pyx_GIVEREF(__pyx_tuple__17);

  /* "(tree fragment)":2
 * def __reduce_cython__(self):
 *     raise TypeError("no default __reduce__ due to non-trivial __cinit__")             # <<<<<<<<<<<<<<
 * def __setstate_cython__(self, __pyx_state):
 *     raise TypeError("no default __reduce__ due to non-trivial __cinit__")
 */
  __pyx_tuple__18 = PyTuple_Pack(1, __pyx_kp_s_no_default___reduce___due_to_non); if (unlikely(!__pyx_tuple__18)) __PYX_ERR(11, 2, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_tuple__18);
  __Pyx_GIVEREF(__pyx_tuple__18);

  /* "(tree fragment)":4
 *     raise TypeError("no default __reduce__ due to non-trivial __cinit__")
 * def __setstate_cython__(self, __pyx_state):
 *     raise TypeError("no default __reduce__ due to non-trivial __cinit__")             # <<<<<<<<<<<<<<
 */
  __pyx_tuple__19 = PyTuple_Pack(1, __pyx_kp_s_no_default___reduce___due_to_non); if (unlikely(!__pyx_tuple__19)) __PYX_ERR(11, 4, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_tuple__19);
  __Pyx_GIVEREF(__pyx_tuple__19);

  /* "src/python/grpcio/grpc/_cython/_cygrpc/channel.pyx.pxi":290
 *   call_state = _CallState()
 * 
 *   def on_success(started_tags):             # <<<<<<<<<<<<<<
 *     for started_tag in started_tags:
 *       state.integrated_call_states[started_tag] = call_state
 */
  __pyx_tuple__20 = PyTuple_Pack(2, __pyx_n_s_started_tags, __pyx_n_s_started_tag); if (unlikely(!__pyx_tuple__20)) __PYX_ERR(12, 290, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_tuple__20);
  __Pyx_GIVEREF(__pyx_tuple__20);
  __pyx_codeobj__21 = (PyObject*)__Pyx_PyCode_New(1, 0, 2, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__20, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_src_python_grpcio_grpc__cython, __pyx_n_s_on_success, 290, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__21)) __PYX_ERR(12, 290, __pyx_L1_error)

  /* "src/python/grpcio/grpc/_cython/_cygrpc/channel.pyx.pxi":329
 * 
 *   def next_event(self):
 *     def on_success(tag):             # <<<<<<<<<<<<<<
 *       _process_segregated_call_tag(
 *         self._channel_state, self._call_state, self._c_completion_queue, tag)
 */
  __pyx_tuple__22 = PyTuple_Pack(1, __pyx_n_s_tag); if (unlikely(!__pyx_tuple__22)) __PYX_ERR(12, 329, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_tuple__22);
  __Pyx_GIVEREF(__pyx_tuple__22);
  __pyx_codeobj__23 = (PyObject*)__Pyx_PyCode_New(1, 0, 1, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__22, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_src_python_grpcio_grpc__cython, __pyx_n_s_on_success, 329, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__23)) __PYX_ERR(12, 329, __pyx_L1_error)

  /* "src/python/grpcio/grpc/_cython/_cygrpc/channel.pyx.pxi":332
 *       _process_segregated_call_tag(
 *         self._channel_state, self._call_state, self._c_completion_queue, tag)
 *     def on_failure():             # <<<<<<<<<<<<<<
 *       self._call_state.due.clear()
 *       grpc_call_unref(self._call_state.c_call)
 */
  __pyx_codeobj__24 = (PyObject*)__Pyx_PyCode_New(0, 0, 0, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_src_python_grpcio_grpc__cython, __pyx_n_s_on_failure, 332, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__24)) __PYX_ERR(12, 332, __pyx_L1_error)

  /* "(tree fragment)":2
 * def __reduce_cython__(self):
 *     raise TypeError("no default __reduce__ due to non-trivial __cinit__")             # <<<<<<<<<<<<<<
 * def __setstate_cython__(self, __pyx_state):
 *     raise TypeError("no default __reduce__ due to non-trivial __cinit__")
 */
  __pyx_tuple__25 = PyTuple_Pack(1, __pyx_kp_s_no_default___reduce___due_to_non); if (unlikely(!__pyx_tuple__25)) __PYX_ERR(11, 2, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_tuple__25);
  __Pyx_GIVEREF(__pyx_tuple__25);

  /* "(tree fragment)":4
 *     raise TypeError("no default __reduce__ due to non-trivial __cinit__")
 * def __setstate_cython__(self, __pyx_state):
 *     raise TypeError("no default __reduce__ due to non-trivial __cinit__")             # <<<<<<<<<<<<<<
 */
  __pyx_tuple__26 = PyTuple_Pack(1, __pyx_kp_s_no_default___reduce___due_to_non); if (unlikely(!__pyx_tuple__26)) __PYX_ERR(11, 4, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_tuple__26);
  __Pyx_GIVEREF(__pyx_tuple__26);

  /* "src/python/grpcio/grpc/_cython/_cygrpc/channel.pyx.pxi":350
 *   cdef grpc_completion_queue *c_completion_queue
 * 
 *   def on_success(started_tags):             # <<<<<<<<<<<<<<
 *     state.segregated_call_states.add(call_state)
 * 
 */
  __pyx_tuple__27 = PyTuple_Pack(1, __pyx_n_s_started_tags); if (unlikely(!__pyx_tuple__27)) __PYX_ERR(12, 350, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_tuple__27);
  __Pyx_GIVEREF(__pyx_tuple__27);
  __pyx_codeobj__28 = (PyObject*)__Pyx_PyCode_New(1, 0, 1, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__27, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_src_python_grpcio_grpc__cython, __pyx_n_s_on_success, 350, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__28)) __PYX_ERR(12, 350, __pyx_L1_error)

  /* "src/python/grpcio/grpc/_cython/_cygrpc/channel.pyx.pxi":357
 *       c_completion_queue = (grpc_completion_queue_create_for_next(NULL))
 *     else:
 *       raise ValueError('Cannot invoke RPC on closed channel!')             # <<<<<<<<<<<<<<
 * 
 *   try:
 */
  __pyx_tuple__29 = PyTuple_Pack(1, __pyx_kp_s_Cannot_invoke_RPC_on_closed_chan); if (unlikely(!__pyx_tuple__29)) __PYX_ERR(12, 357, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_tuple__29);
  __Pyx_GIVEREF(__pyx_tuple__29);

  /* "src/python/grpcio/grpc/_cython/_cygrpc/channel.pyx.pxi":481
 * 
 *   def next_call_event(self):
 *     def on_success(tag):             # <<<<<<<<<<<<<<
 *       if tag is not None:
 *         _process_integrated_call_tag(self._state, tag)
 */
  __pyx_tuple__30 = PyTuple_Pack(1, __pyx_n_s_tag); if (unlikely(!__pyx_tuple__30)) __PYX_ERR(12, 481, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_tuple__30);
  __Pyx_GIVEREF(__pyx_tuple__30);
  __pyx_codeobj__31 = (PyObject*)__Pyx_PyCode_New(1, 0, 1, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__30, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_src_python_grpcio_grpc__cython, __pyx_n_s_on_success, 481, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__31)) __PYX_ERR(12, 481, __pyx_L1_error)

  /* "(tree fragment)":2
 * def __reduce_cython__(self):
 *     raise TypeError("no default __reduce__ due to non-trivial __cinit__")             # <<<<<<<<<<<<<<
 * def __setstate_cython__(self, __pyx_state):
 *     raise TypeError("no default __reduce__ due to non-trivial __cinit__")
 */
  __pyx_tuple__32 = PyTuple_Pack(1, __pyx_kp_s_no_default___reduce___due_to_non); if (unlikely(!__pyx_tuple__32)) __PYX_ERR(11, 2, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_tuple__32);
  __Pyx_GIVEREF(__pyx_tuple__32);

  /* "(tree fragment)":4
 *     raise TypeError("no default __reduce__ due to non-trivial __cinit__")
 * def __setstate_cython__(self, __pyx_state):
 *     raise TypeError("no default __reduce__ due to non-trivial __cinit__")             # <<<<<<<<<<<<<<
 */
  __pyx_tuple__33 = PyTuple_Pack(1, __pyx_kp_s_no_default___reduce___due_to_non); if (unlikely(!__pyx_tuple__33)) __PYX_ERR(11, 4, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_tuple__33);
  __Pyx_GIVEREF(__pyx_tuple__33);

  /* "(tree fragment)":2
 * def __reduce_cython__(self):
 *     raise TypeError("self.c_credentials cannot be converted to a Python object for pickling")             # <<<<<<<<<<<<<<
 * def __setstate_cython__(self, __pyx_state):
 *     raise TypeError("self.c_credentials cannot be converted to a Python object for pickling")
 */
  __pyx_tuple__34 = PyTuple_Pack(1, __pyx_kp_s_self_c_credentials_cannot_be_con); if (unlikely(!__pyx_tuple__34)) __PYX_ERR(11, 2, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_tuple__34);
  __Pyx_GIVEREF(__pyx_tuple__34);

  /* "(tree fragment)":4
 *     raise TypeError("self.c_credentials cannot be converted to a Python object for pickling")
 * def __setstate_cython__(self, __pyx_state):
 *     raise TypeError("self.c_credentials cannot be converted to a Python object for pickling")             # <<<<<<<<<<<<<<
 */
  __pyx_tuple__35 = PyTuple_Pack(1, __pyx_kp_s_self_c_credentials_cannot_be_con); if (unlikely(!__pyx_tuple__35)) __PYX_ERR(11, 4, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_tuple__35);
  __Pyx_GIVEREF(__pyx_tuple__35);

  /* "src/python/grpcio/grpc/_cython/_cygrpc/credentials.pyx.pxi":47
 *   cdef size_t metadata_count
 *   cdef grpc_metadata *c_metadata
 *   def callback(metadata, grpc_status_code status, bytes error_details):             # <<<<<<<<<<<<<<
 *     cdef char* c_error_details = NULL
 *     if error_details is not None:
 */
  __pyx_tuple__36 = PyTuple_Pack(4, __pyx_n_s_metadata, __pyx_n_s_status, __pyx_n_s_error_details, __pyx_n_s_c_error_details); if (unlikely(!__pyx_tuple__36)) __PYX_ERR(5, 47, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_tuple__36);
  __Pyx_GIVEREF(__pyx_tuple__36);
  __pyx_codeobj__37 = (PyObject*)__Pyx_PyCode_New(3, 0, 4, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__36, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_src_python_grpcio_grpc__cython_2, __pyx_n_s_callback, 47, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__37)) __PYX_ERR(5, 47, __pyx_L1_error)

  /* "(tree fragment)":2
 * def __reduce_cython__(self):
 *     raise TypeError("no default __reduce__ due to non-trivial __cinit__")             # <<<<<<<<<<<<<<
 * def __setstate_cython__(self, __pyx_state):
 *     raise TypeError("no default __reduce__ due to non-trivial __cinit__")
 */
  __pyx_tuple__38 = PyTuple_Pack(1, __pyx_kp_s_no_default___reduce___due_to_non); if (unlikely(!__pyx_tuple__38)) __PYX_ERR(11, 2, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_tuple__38);
  __Pyx_GIVEREF(__pyx_tuple__38);

  /* "(tree fragment)":4
 *     raise TypeError("no default __reduce__ due to non-trivial __cinit__")
 * def __setstate_cython__(self, __pyx_state):
 *     raise TypeError("no default __reduce__ due to non-trivial __cinit__")             # <<<<<<<<<<<<<<
 */
  __pyx_tuple__39 = PyTuple_Pack(1, __pyx_kp_s_no_default___reduce___due_to_non); if (unlikely(!__pyx_tuple__39)) __PYX_ERR(11, 4, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_tuple__39);
  __Pyx_GIVEREF(__pyx_tuple__39);

  /* "(tree fragment)":2
 * def __reduce_cython__(self):
 *     raise TypeError("no default __reduce__ due to non-trivial __cinit__")             # <<<<<<<<<<<<<<
 * def __setstate_cython__(self, __pyx_state):
 *     raise TypeError("no default __reduce__ due to non-trivial __cinit__")
 */
  __pyx_tuple__40 = PyTuple_Pack(1, __pyx_kp_s_no_default___reduce___due_to_non); if (unlikely(!__pyx_tuple__40)) __PYX_ERR(11, 2, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_tuple__40);
  __Pyx_GIVEREF(__pyx_tuple__40);

  /* "(tree fragment)":4
 *     raise TypeError("no default __reduce__ due to non-trivial __cinit__")
 * def __setstate_cython__(self, __pyx_state):
 *     raise TypeError("no default __reduce__ due to non-trivial __cinit__")             # <<<<<<<<<<<<<<
 */
  __pyx_tuple__41 = PyTuple_Pack(1, __pyx_kp_s_no_default___reduce___due_to_non); if (unlikely(!__pyx_tuple__41)) __PYX_ERR(11, 4, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_tuple__41);
  __Pyx_GIVEREF(__pyx_tuple__41);

  /* "(tree fragment)":2
 * def __reduce_cython__(self):
 *     raise TypeError("no default __reduce__ due to non-trivial __cinit__")             # <<<<<<<<<<<<<<
 * def __setstate_cython__(self, __pyx_state):
 *     raise TypeError("no default __reduce__ due to non-trivial __cinit__")
 */
  __pyx_tuple__42 = PyTuple_Pack(1, __pyx_kp_s_no_default___reduce___due_to_non); if (unlikely(!__pyx_tuple__42)) __PYX_ERR(11, 2, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_tuple__42);
  __Pyx_GIVEREF(__pyx_tuple__42);

  /* "(tree fragment)":4
 *     raise TypeError("no default __reduce__ due to non-trivial __cinit__")
 * def __setstate_cython__(self, __pyx_state):
 *     raise TypeError("no default __reduce__ due to non-trivial __cinit__")             # <<<<<<<<<<<<<<
 */
  __pyx_tuple__43 = PyTuple_Pack(1, __pyx_kp_s_no_default___reduce___due_to_non); if (unlikely(!__pyx_tuple__43)) __PYX_ERR(11, 4, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_tuple__43);
  __Pyx_GIVEREF(__pyx_tuple__43);

  /* "(tree fragment)":2
 * def __reduce_cython__(self):
 *     raise TypeError("no default __reduce__ due to non-trivial __cinit__")             # <<<<<<<<<<<<<<
 * def __setstate_cython__(self, __pyx_state):
 *     raise TypeError("no default __reduce__ due to non-trivial __cinit__")
 */
  __pyx_tuple__44 = PyTuple_Pack(1, __pyx_kp_s_no_default___reduce___due_to_non); if (unlikely(!__pyx_tuple__44)) __PYX_ERR(11, 2, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_tuple__44);
  __Pyx_GIVEREF(__pyx_tuple__44);

  /* "(tree fragment)":4
 *     raise TypeError("no default __reduce__ due to non-trivial __cinit__")
 * def __setstate_cython__(self, __pyx_state):
 *     raise TypeError("no default __reduce__ due to non-trivial __cinit__")             # <<<<<<<<<<<<<<
 */
  __pyx_tuple__45 = PyTuple_Pack(1, __pyx_kp_s_no_default___reduce___due_to_non); if (unlikely(!__pyx_tuple__45)) __PYX_ERR(11, 4, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_tuple__45);
  __Pyx_GIVEREF(__pyx_tuple__45);

  /* "(tree fragment)":2
 * def __reduce_cython__(self):
 *     raise TypeError("no default __reduce__ due to non-trivial __cinit__")             # <<<<<<<<<<<<<<
 * def __setstate_cython__(self, __pyx_state):
 *     raise TypeError("no default __reduce__ due to non-trivial __cinit__")
 */
  __pyx_tuple__46 = PyTuple_Pack(1, __pyx_kp_s_no_default___reduce___due_to_non); if (unlikely(!__pyx_tuple__46)) __PYX_ERR(11, 2, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_tuple__46);
  __Pyx_GIVEREF(__pyx_tuple__46);

  /* "(tree fragment)":4
 *     raise TypeError("no default __reduce__ due to non-trivial __cinit__")
 * def __setstate_cython__(self, __pyx_state):
 *     raise TypeError("no default __reduce__ due to non-trivial __cinit__")             # <<<<<<<<<<<<<<
 */
  __pyx_tuple__47 = PyTuple_Pack(1, __pyx_kp_s_no_default___reduce___due_to_non); if (unlikely(!__pyx_tuple__47)) __PYX_ERR(11, 4, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_tuple__47);
  __Pyx_GIVEREF(__pyx_tuple__47);

  /* "(tree fragment)":2
 * def __reduce_cython__(self):
 *     raise TypeError("no default __reduce__ due to non-trivial __cinit__")             # <<<<<<<<<<<<<<
 * def __setstate_cython__(self, __pyx_state):
 *     raise TypeError("no default __reduce__ due to non-trivial __cinit__")
 */
  __pyx_tuple__48 = PyTuple_Pack(1, __pyx_kp_s_no_default___reduce___due_to_non); if (unlikely(!__pyx_tuple__48)) __PYX_ERR(11, 2, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_tuple__48);
  __Pyx_GIVEREF(__pyx_tuple__48);

  /* "(tree fragment)":4
 *     raise TypeError("no default __reduce__ due to non-trivial __cinit__")
 * def __setstate_cython__(self, __pyx_state):
 *     raise TypeError("no default __reduce__ due to non-trivial __cinit__")             # <<<<<<<<<<<<<<
 */
  __pyx_tuple__49 = PyTuple_Pack(1, __pyx_kp_s_no_default___reduce___due_to_non); if (unlikely(!__pyx_tuple__49)) __PYX_ERR(11, 4, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_tuple__49);
  __Pyx_GIVEREF(__pyx_tuple__49);

  /* "(tree fragment)":2
 * def __reduce_cython__(self):
 *     raise TypeError("no default __reduce__ due to non-trivial __cinit__")             # <<<<<<<<<<<<<<
 * def __setstate_cython__(self, __pyx_state):
 *     raise TypeError("no default __reduce__ due to non-trivial __cinit__")
 */
  __pyx_tuple__50 = PyTuple_Pack(1, __pyx_kp_s_no_default___reduce___due_to_non); if (unlikely(!__pyx_tuple__50)) __PYX_ERR(11, 2, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_tuple__50);
  __Pyx_GIVEREF(__pyx_tuple__50);

  /* "(tree fragment)":4
 *     raise TypeError("no default __reduce__ due to non-trivial __cinit__")
 * def __setstate_cython__(self, __pyx_state):
 *     raise TypeError("no default __reduce__ due to non-trivial __cinit__")             # <<<<<<<<<<<<<<
 */
  __pyx_tuple__51 = PyTuple_Pack(1, __pyx_kp_s_no_default___reduce___due_to_non); if (unlikely(!__pyx_tuple__51)) __PYX_ERR(11, 4, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_tuple__51);
  __Pyx_GIVEREF(__pyx_tuple__51);

  /* "(tree fragment)":2
 * def __reduce_cython__(self):
 *     raise TypeError("no default __reduce__ due to non-trivial __cinit__")             # <<<<<<<<<<<<<<
 * def __setstate_cython__(self, __pyx_state):
 *     raise TypeError("no default __reduce__ due to non-trivial __cinit__")
 */
  __pyx_tuple__52 = PyTuple_Pack(1, __pyx_kp_s_no_default___reduce___due_to_non); if (unlikely(!__pyx_tuple__52)) __PYX_ERR(11, 2, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_tuple__52);
  __Pyx_GIVEREF(__pyx_tuple__52);

  /* "(tree fragment)":4
 *     raise TypeError("no default __reduce__ due to non-trivial __cinit__")
 * def __setstate_cython__(self, __pyx_state):
 *     raise TypeError("no default __reduce__ due to non-trivial __cinit__")             # <<<<<<<<<<<<<<
 */
  __pyx_tuple__53 = PyTuple_Pack(1, __pyx_kp_s_no_default___reduce___due_to_non); if (unlikely(!__pyx_tuple__53)) __PYX_ERR(11, 4, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_tuple__53);
  __Pyx_GIVEREF(__pyx_tuple__53);

  /* "src/python/grpcio/grpc/_cython/_cygrpc/credentials.pyx.pxi":242
 *   for pair in pem_key_cert_pairs:
 *     if not isinstance(pair, SslPemKeyCertPair):
 *       raise TypeError("expected pem_key_cert_pairs to be sequence of "             # <<<<<<<<<<<<<<
 *                       "SslPemKeyCertPair")
 *   cdef size_t c_ssl_pem_key_cert_pairs_count = len(pem_key_cert_pairs)
 */
  __pyx_tuple__54 = PyTuple_Pack(1, __pyx_kp_s_expected_pem_key_cert_pairs_to_b); if (unlikely(!__pyx_tuple__54)) __PYX_ERR(5, 242, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_tuple__54);
  __Pyx_GIVEREF(__pyx_tuple__54);

  /* "src/python/grpcio/grpc/_cython/_cygrpc/credentials.pyx.pxi":298
 *                                                bint force_client_auth):
 *   if not isinstance(initial_cert_config, grpc.ServerCertificateConfiguration):
 *     raise TypeError(             # <<<<<<<<<<<<<<
 *         'initial_cert_config must be a grpc.ServerCertificateConfiguration')
 *   if not callable(cert_config_fetcher):
 */
  __pyx_tuple__55 = PyTuple_Pack(1, __pyx_kp_s_initial_cert_config_must_be_a_gr); if (unlikely(!__pyx_tuple__55)) __PYX_ERR(5, 298, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_tuple__55);
  __Pyx_GIVEREF(__pyx_tuple__55);

  /* "src/python/grpcio/grpc/_cython/_cygrpc/credentials.pyx.pxi":301
 *         'initial_cert_config must be a grpc.ServerCertificateConfiguration')
 *   if not callable(cert_config_fetcher):
 *     raise TypeError('cert_config_fetcher must be callable')             # <<<<<<<<<<<<<<
 *   cdef ServerCredentials credentials = ServerCredentials()
 *   credentials.initial_cert_config = initial_cert_config
 */
  __pyx_tuple__56 = PyTuple_Pack(1, __pyx_kp_s_cert_config_fetcher_must_be_call); if (unlikely(!__pyx_tuple__56)) __PYX_ERR(5, 301, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_tuple__56);
  __Pyx_GIVEREF(__pyx_tuple__56);

  /* "src/python/grpcio/grpc/_cython/_cygrpc/credentials.pyx.pxi":321
 *   cdef ServerCertificateConfig cert_config = None
 *   if not user_data:
 *     raise ValueError('internal error: user_data must be specified')             # <<<<<<<<<<<<<<
 *   credentials = <ServerCredentials>user_data
 *   if not credentials.initial_cert_config_fetched:
 */
  __pyx_tuple__57 = PyTuple_Pack(1, __pyx_kp_s_internal_error_user_data_must_be); if (unlikely(!__pyx_tuple__57)) __PYX_ERR(5, 321, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_tuple__57);
  __Pyx_GIVEREF(__pyx_tuple__57);

  /* "(tree fragment)":2
 * def __reduce_cython__(self):
 *     raise TypeError("no default __reduce__ due to non-trivial __cinit__")             # <<<<<<<<<<<<<<
 * def __setstate_cython__(self, __pyx_state):
 *     raise TypeError("no default __reduce__ due to non-trivial __cinit__")
 */
  __pyx_tuple__58 = PyTuple_Pack(1, __pyx_kp_s_no_default___reduce___due_to_non); if (unlikely(!__pyx_tuple__58)) __PYX_ERR(11, 2, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_tuple__58);
  __Pyx_GIVEREF(__pyx_tuple__58);

  /* "(tree fragment)":4
 *     raise TypeError("no default __reduce__ due to non-trivial __cinit__")
 * def __setstate_cython__(self, __pyx_state):
 *     raise TypeError("no default __reduce__ due to non-trivial __cinit__")             # <<<<<<<<<<<<<<
 */
  __pyx_tuple__59 = PyTuple_Pack(1, __pyx_kp_s_no_default___reduce___due_to_non); if (unlikely(!__pyx_tuple__59)) __PYX_ERR(11, 4, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_tuple__59);
  __Pyx_GIVEREF(__pyx_tuple__59);

  /* "(tree fragment)":2
 * def __reduce_cython__(self):
 *     raise TypeError("no default __reduce__ due to non-trivial __cinit__")             # <<<<<<<<<<<<<<
 * def __setstate_cython__(self, __pyx_state):
 *     raise TypeError("no default __reduce__ due to non-trivial __cinit__")
 */
  __pyx_tuple__60 = PyTuple_Pack(1, __pyx_kp_s_no_default___reduce___due_to_non); if (unlikely(!__pyx_tuple__60)) __PYX_ERR(11, 2, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_tuple__60);
  __Pyx_GIVEREF(__pyx_tuple__60);

  /* "(tree fragment)":4
 *     raise TypeError("no default __reduce__ due to non-trivial __cinit__")
 * def __setstate_cython__(self, __pyx_state):
 *     raise TypeError("no default __reduce__ due to non-trivial __cinit__")             # <<<<<<<<<<<<<<
 */
  __pyx_tuple__61 = PyTuple_Pack(1, __pyx_kp_s_no_default___reduce___due_to_non); if (unlikely(!__pyx_tuple__61)) __PYX_ERR(11, 4, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_tuple__61);
  __Pyx_GIVEREF(__pyx_tuple__61);

  /* "src/python/grpcio/grpc/_cython/_cygrpc/credentials.pyx.pxi":434
 *     self._call_creds = call_creds.c()
 *     if self._call_creds == NULL:
 *       raise ValueError("Call credentials may not be NULL.")             # <<<<<<<<<<<<<<
 * 
 *   cdef grpc_channel_credentials *c(self) except *:
 */
  __pyx_tuple__62 = PyTuple_Pack(1, __pyx_kp_s_Call_credentials_may_not_be_NULL); if (unlikely(!__pyx_tuple__62)) __PYX_ERR(5, 434, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_tuple__62);
  __Pyx_GIVEREF(__pyx_tuple__62);

  /* "(tree fragment)":2
 * def __reduce_cython__(self):
 *     raise TypeError("no default __reduce__ due to non-trivial __cinit__")             # <<<<<<<<<<<<<<
 * def __setstate_cython__(self, __pyx_state):
 *     raise TypeError("no default __reduce__ due to non-trivial __cinit__")
 */
  __pyx_tuple__63 = PyTuple_Pack(1, __pyx_kp_s_no_default___reduce___due_to_non); if (unlikely(!__pyx_tuple__63)) __PYX_ERR(11, 2, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_tuple__63);
  __Pyx_GIVEREF(__pyx_tuple__63);

  /* "(tree fragment)":4
 *     raise TypeError("no default __reduce__ due to non-trivial __cinit__")
 * def __setstate_cython__(self, __pyx_state):
 *     raise TypeError("no default __reduce__ due to non-trivial __cinit__")             # <<<<<<<<<<<<<<
 */
  __pyx_tuple__64 = PyTuple_Pack(1, __pyx_kp_s_no_default___reduce___due_to_non); if (unlikely(!__pyx_tuple__64)) __PYX_ERR(11, 4, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_tuple__64);
  __Pyx_GIVEREF(__pyx_tuple__64);

  /* "src/python/grpcio/grpc/_cython/_cygrpc/completion_queue.pyx.pxi":101
 *   def clear(self):
 *     if not self.is_shutting_down:
 *       raise ValueError('queue must be shutting down to be cleared')             # <<<<<<<<<<<<<<
 *     while self.poll().type != GRPC_QUEUE_SHUTDOWN:
 *       pass
 */
  __pyx_tuple__65 = PyTuple_Pack(1, __pyx_kp_s_queue_must_be_shutting_down_to_b); if (unlikely(!__pyx_tuple__65)) __PYX_ERR(15, 101, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_tuple__65);
  __Pyx_GIVEREF(__pyx_tuple__65);

  /* "(tree fragment)":2
 * def __reduce_cython__(self):
 *     raise TypeError("no default __reduce__ due to non-trivial __cinit__")             # <<<<<<<<<<<<<<
 * def __setstate_cython__(self, __pyx_state):
 *     raise TypeError("no default __reduce__ due to non-trivial __cinit__")
 */
  __pyx_tuple__66 = PyTuple_Pack(1, __pyx_kp_s_no_default___reduce___due_to_non); if (unlikely(!__pyx_tuple__66)) __PYX_ERR(11, 2, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_tuple__66);
  __Pyx_GIVEREF(__pyx_tuple__66);

  /* "(tree fragment)":4
 *     raise TypeError("no default __reduce__ due to non-trivial __cinit__")
 * def __setstate_cython__(self, __pyx_state):
 *     raise TypeError("no default __reduce__ due to non-trivial __cinit__")             # <<<<<<<<<<<<<<
 */
  __pyx_tuple__67 = PyTuple_Pack(1, __pyx_kp_s_no_default___reduce___due_to_non); if (unlikely(!__pyx_tuple__67)) __PYX_ERR(11, 4, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_tuple__67);
  __Pyx_GIVEREF(__pyx_tuple__67);

  /* "(tree fragment)":2
 * def __reduce_cython__(self):
 *     raise TypeError("no default __reduce__ due to non-trivial __cinit__")             # <<<<<<<<<<<<<<
 * def __setstate_cython__(self, __pyx_state):
 *     raise TypeError("no default __reduce__ due to non-trivial __cinit__")
 */
  __pyx_tuple__68 = PyTuple_Pack(1, __pyx_kp_s_no_default___reduce___due_to_non); if (unlikely(!__pyx_tuple__68)) __PYX_ERR(11, 2, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_tuple__68);
  __Pyx_GIVEREF(__pyx_tuple__68);

  /* "(tree fragment)":4
 *     raise TypeError("no default __reduce__ due to non-trivial __cinit__")
 * def __setstate_cython__(self, __pyx_state):
 *     raise TypeError("no default __reduce__ due to non-trivial __cinit__")             # <<<<<<<<<<<<<<
 */
  __pyx_tuple__69 = PyTuple_Pack(1, __pyx_kp_s_no_default___reduce___due_to_non); if (unlikely(!__pyx_tuple__69)) __PYX_ERR(11, 4, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_tuple__69);
  __Pyx_GIVEREF(__pyx_tuple__69);

  /* "(tree fragment)":2
 * def __reduce_cython__(self):
 *     raise TypeError("no default __reduce__ due to non-trivial __cinit__")             # <<<<<<<<<<<<<<
 * def __setstate_cython__(self, __pyx_state):
 *     raise TypeError("no default __reduce__ due to non-trivial __cinit__")
 */
  __pyx_tuple__70 = PyTuple_Pack(1, __pyx_kp_s_no_default___reduce___due_to_non); if (unlikely(!__pyx_tuple__70)) __PYX_ERR(11, 2, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_tuple__70);
  __Pyx_GIVEREF(__pyx_tuple__70);

  /* "(tree fragment)":4
 *     raise TypeError("no default __reduce__ due to non-trivial __cinit__")
 * def __setstate_cython__(self, __pyx_state):
 *     raise TypeError("no default __reduce__ due to non-trivial __cinit__")             # <<<<<<<<<<<<<<
 */
  __pyx_tuple__71 = PyTuple_Pack(1, __pyx_kp_s_no_default___reduce___due_to_non); if (unlikely(!__pyx_tuple__71)) __PYX_ERR(11, 4, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_tuple__71);
  __Pyx_GIVEREF(__pyx_tuple__71);

  /* "(tree fragment)":2
 * def __reduce_cython__(self):
 *     raise TypeError("no default __reduce__ due to non-trivial __cinit__")             # <<<<<<<<<<<<<<
 * def __setstate_cython__(self, __pyx_state):
 *     raise TypeError("no default __reduce__ due to non-trivial __cinit__")
 */
  __pyx_tuple__72 = PyTuple_Pack(1, __pyx_kp_s_no_default___reduce___due_to_non); if (unlikely(!__pyx_tuple__72)) __PYX_ERR(11, 2, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_tuple__72);
  __Pyx_GIVEREF(__pyx_tuple__72);

  /* "(tree fragment)":4
 *     raise TypeError("no default __reduce__ due to non-trivial __cinit__")
 * def __setstate_cython__(self, __pyx_state):
 *     raise TypeError("no default __reduce__ due to non-trivial __cinit__")             # <<<<<<<<<<<<<<
 */
  __pyx_tuple__73 = PyTuple_Pack(1, __pyx_kp_s_no_default___reduce___due_to_non); if (unlikely(!__pyx_tuple__73)) __PYX_ERR(11, 4, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_tuple__73);
  __Pyx_GIVEREF(__pyx_tuple__73);

  /* "(tree fragment)":2
 * def __reduce_cython__(self):
 *     raise TypeError("no default __reduce__ due to non-trivial __cinit__")             # <<<<<<<<<<<<<<
 * def __setstate_cython__(self, __pyx_state):
 *     raise TypeError("no default __reduce__ due to non-trivial __cinit__")
 */
  __pyx_tuple__74 = PyTuple_Pack(1, __pyx_kp_s_no_default___reduce___due_to_non); if (unlikely(!__pyx_tuple__74)) __PYX_ERR(11, 2, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_tuple__74);
  __Pyx_GIVEREF(__pyx_tuple__74);

  /* "(tree fragment)":4
 *     raise TypeError("no default __reduce__ due to non-trivial __cinit__")
 * def __setstate_cython__(self, __pyx_state):
 *     raise TypeError("no default __reduce__ due to non-trivial __cinit__")             # <<<<<<<<<<<<<<
 */
  __pyx_tuple__75 = PyTuple_Pack(1, __pyx_kp_s_no_default___reduce___due_to_non); if (unlikely(!__pyx_tuple__75)) __PYX_ERR(11, 4, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_tuple__75);
  __Pyx_GIVEREF(__pyx_tuple__75);

  /* "(tree fragment)":2
 * def __reduce_cython__(self):
 *     raise TypeError("self.c_op cannot be converted to a Python object for pickling")             # <<<<<<<<<<<<<<
 * def __setstate_cython__(self, __pyx_state):
 *     raise TypeError("self.c_op cannot be converted to a Python object for pickling")
 */
  __pyx_tuple__76 = PyTuple_Pack(1, __pyx_kp_s_self_c_op_cannot_be_converted_to); if (unlikely(!__pyx_tuple__76)) __PYX_ERR(11, 2, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_tuple__76);
  __Pyx_GIVEREF(__pyx_tuple__76);

  /* "(tree fragment)":4
 *     raise TypeError("self.c_op cannot be converted to a Python object for pickling")
 * def __setstate_cython__(self, __pyx_state):
 *     raise TypeError("self.c_op cannot be converted to a Python object for pickling")             # <<<<<<<<<<<<<<
 */
  __pyx_tuple__77 = PyTuple_Pack(1, __pyx_kp_s_self_c_op_cannot_be_converted_to); if (unlikely(!__pyx_tuple__77)) __PYX_ERR(11, 4, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_tuple__77);
  __Pyx_GIVEREF(__pyx_tuple__77);

  /* "(tree fragment)":2
 * def __reduce_cython__(self):
 *     raise TypeError("no default __reduce__ due to non-trivial __cinit__")             # <<<<<<<<<<<<<<
 * def __setstate_cython__(self, __pyx_state):
 *     raise TypeError("no default __reduce__ due to non-trivial __cinit__")
 */
  __pyx_tuple__78 = PyTuple_Pack(1, __pyx_kp_s_no_default___reduce___due_to_non); if (unlikely(!__pyx_tuple__78)) __PYX_ERR(11, 2, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_tuple__78);
  __Pyx_GIVEREF(__pyx_tuple__78);

  /* "(tree fragment)":4
 *     raise TypeError("no default __reduce__ due to non-trivial __cinit__")
 * def __setstate_cython__(self, __pyx_state):
 *     raise TypeError("no default __reduce__ due to non-trivial __cinit__")             # <<<<<<<<<<<<<<
 */
  __pyx_tuple__79 = PyTuple_Pack(1, __pyx_kp_s_no_default___reduce___due_to_non); if (unlikely(!__pyx_tuple__79)) __PYX_ERR(11, 4, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_tuple__79);
  __Pyx_GIVEREF(__pyx_tuple__79);

  /* "(tree fragment)":2
 * def __reduce_cython__(self):
 *     raise TypeError("no default __reduce__ due to non-trivial __cinit__")             # <<<<<<<<<<<<<<
 * def __setstate_cython__(self, __pyx_state):
 *     raise TypeError("no default __reduce__ due to non-trivial __cinit__")
 */
  __pyx_tuple__80 = PyTuple_Pack(1, __pyx_kp_s_no_default___reduce___due_to_non); if (unlikely(!__pyx_tuple__80)) __PYX_ERR(11, 2, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_tuple__80);
  __Pyx_GIVEREF(__pyx_tuple__80);

  /* "(tree fragment)":4
 *     raise TypeError("no default __reduce__ due to non-trivial __cinit__")
 * def __setstate_cython__(self, __pyx_state):
 *     raise TypeError("no default __reduce__ due to non-trivial __cinit__")             # <<<<<<<<<<<<<<
 */
  __pyx_tuple__81 = PyTuple_Pack(1, __pyx_kp_s_no_default___reduce___due_to_non); if (unlikely(!__pyx_tuple__81)) __PYX_ERR(11, 4, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_tuple__81);
  __Pyx_GIVEREF(__pyx_tuple__81);

  /* "(tree fragment)":2
 * def __reduce_cython__(self):
 *     raise TypeError("no default __reduce__ due to non-trivial __cinit__")             # <<<<<<<<<<<<<<
 * def __setstate_cython__(self, __pyx_state):
 *     raise TypeError("no default __reduce__ due to non-trivial __cinit__")
 */
  __pyx_tuple__82 = PyTuple_Pack(1, __pyx_kp_s_no_default___reduce___due_to_non); if (unlikely(!__pyx_tuple__82)) __PYX_ERR(11, 2, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_tuple__82);
  __Pyx_GIVEREF(__pyx_tuple__82);

  /* "(tree fragment)":4
 *     raise TypeError("no default __reduce__ due to non-trivial __cinit__")
 * def __setstate_cython__(self, __pyx_state):
 *     raise TypeError("no default __reduce__ due to non-trivial __cinit__")             # <<<<<<<<<<<<<<
 */
  __pyx_tuple__83 = PyTuple_Pack(1, __pyx_kp_s_no_default___reduce___due_to_non); if (unlikely(!__pyx_tuple__83)) __PYX_ERR(11, 4, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_tuple__83);
  __Pyx_GIVEREF(__pyx_tuple__83);

  /* "(tree fragment)":2
 * def __reduce_cython__(self):
 *     raise TypeError("no default __reduce__ due to non-trivial __cinit__")             # <<<<<<<<<<<<<<
 * def __setstate_cython__(self, __pyx_state):
 *     raise TypeError("no default __reduce__ due to non-trivial __cinit__")
 */
  __pyx_tuple__84 = PyTuple_Pack(1, __pyx_kp_s_no_default___reduce___due_to_non); if (unlikely(!__pyx_tuple__84)) __PYX_ERR(11, 2, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_tuple__84);
  __Pyx_GIVEREF(__pyx_tuple__84);

  /* "(tree fragment)":4
 *     raise TypeError("no default __reduce__ due to non-trivial __cinit__")
 * def __setstate_cython__(self, __pyx_state):
 *     raise TypeError("no default __reduce__ due to non-trivial __cinit__")             # <<<<<<<<<<<<<<
 */
  __pyx_tuple__85 = PyTuple_Pack(1, __pyx_kp_s_no_default___reduce___due_to_non); if (unlikely(!__pyx_tuple__85)) __PYX_ERR(11, 4, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_tuple__85);
  __Pyx_GIVEREF(__pyx_tuple__85);

  /* "(tree fragment)":2
 * def __reduce_cython__(self):
 *     raise TypeError("no default __reduce__ due to non-trivial __cinit__")             # <<<<<<<<<<<<<<
 * def __setstate_cython__(self, __pyx_state):
 *     raise TypeError("no default __reduce__ due to non-trivial __cinit__")
 */
  __pyx_tuple__86 = PyTuple_Pack(1, __pyx_kp_s_no_default___reduce___due_to_non); if (unlikely(!__pyx_tuple__86)) __PYX_ERR(11, 2, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_tuple__86);
  __Pyx_GIVEREF(__pyx_tuple__86);

  /* "(tree fragment)":4
 *     raise TypeError("no default __reduce__ due to non-trivial __cinit__")
 * def __setstate_cython__(self, __pyx_state):
 *     raise TypeError("no default __reduce__ due to non-trivial __cinit__")             # <<<<<<<<<<<<<<
 */
  __pyx_tuple__87 = PyTuple_Pack(1, __pyx_kp_s_no_default___reduce___due_to_non); if (unlikely(!__pyx_tuple__87)) __PYX_ERR(11, 4, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_tuple__87);
  __Pyx_GIVEREF(__pyx_tuple__87);

  /* "(tree fragment)":2
 * def __reduce_cython__(self):
 *     raise TypeError("no default __reduce__ due to non-trivial __cinit__")             # <<<<<<<<<<<<<<
 * def __setstate_cython__(self, __pyx_state):
 *     raise TypeError("no default __reduce__ due to non-trivial __cinit__")
 */
  __pyx_tuple__88 = PyTuple_Pack(1, __pyx_kp_s_no_default___reduce___due_to_non); if (unlikely(!__pyx_tuple__88)) __PYX_ERR(11, 2, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_tuple__88);
  __Pyx_GIVEREF(__pyx_tuple__88);

  /* "(tree fragment)":4
 *     raise TypeError("no default __reduce__ due to non-trivial __cinit__")
 * def __setstate_cython__(self, __pyx_state):
 *     raise TypeError("no default __reduce__ due to non-trivial __cinit__")             # <<<<<<<<<<<<<<
 */
  __pyx_tuple__89 = PyTuple_Pack(1, __pyx_kp_s_no_default___reduce___due_to_non); if (unlikely(!__pyx_tuple__89)) __PYX_ERR(11, 4, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_tuple__89);
  __Pyx_GIVEREF(__pyx_tuple__89);

  /* "(tree fragment)":2
 * def __reduce_cython__(self):
 *     raise TypeError("no default __reduce__ due to non-trivial __cinit__")             # <<<<<<<<<<<<<<
 * def __setstate_cython__(self, __pyx_state):
 *     raise TypeError("no default __reduce__ due to non-trivial __cinit__")
 */
  __pyx_tuple__90 = PyTuple_Pack(1, __pyx_kp_s_no_default___reduce___due_to_non); if (unlikely(!__pyx_tuple__90)) __PYX_ERR(11, 2, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_tuple__90);
  __Pyx_GIVEREF(__pyx_tuple__90);

  /* "(tree fragment)":4
 *     raise TypeError("no default __reduce__ due to non-trivial __cinit__")
 * def __setstate_cython__(self, __pyx_state):
 *     raise TypeError("no default __reduce__ due to non-trivial __cinit__")             # <<<<<<<<<<<<<<
 */
  __pyx_tuple__91 = PyTuple_Pack(1, __pyx_kp_s_no_default___reduce___due_to_non); if (unlikely(!__pyx_tuple__91)) __PYX_ERR(11, 4, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_tuple__91);
  __Pyx_GIVEREF(__pyx_tuple__91);

  /* "(tree fragment)":2
 * def __reduce_cython__(self):
 *     raise TypeError("no default __reduce__ due to non-trivial __cinit__")             # <<<<<<<<<<<<<<
 * def __setstate_cython__(self, __pyx_state):
 *     raise TypeError("no default __reduce__ due to non-trivial __cinit__")
 */
  __pyx_tuple__92 = PyTuple_Pack(1, __pyx_kp_s_no_default___reduce___due_to_non); if (unlikely(!__pyx_tuple__92)) __PYX_ERR(11, 2, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_tuple__92);
  __Pyx_GIVEREF(__pyx_tuple__92);

  /* "(tree fragment)":4
 *     raise TypeError("no default __reduce__ due to non-trivial __cinit__")
 * def __setstate_cython__(self, __pyx_state):
 *     raise TypeError("no default __reduce__ due to non-trivial __cinit__")             # <<<<<<<<<<<<<<
 */
  __pyx_tuple__93 = PyTuple_Pack(1, __pyx_kp_s_no_default___reduce___due_to_non); if (unlikely(!__pyx_tuple__93)) __PYX_ERR(11, 4, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_tuple__93);
  __Pyx_GIVEREF(__pyx_tuple__93);

  /* "(tree fragment)":2
 * def __reduce_cython__(self):
 *     raise TypeError("no default __reduce__ due to non-trivial __cinit__")             # <<<<<<<<<<<<<<
 * def __setstate_cython__(self, __pyx_state):
 *     raise TypeError("no default __reduce__ due to non-trivial __cinit__")
 */
  __pyx_tuple__94 = PyTuple_Pack(1, __pyx_kp_s_no_default___reduce___due_to_non); if (unlikely(!__pyx_tuple__94)) __PYX_ERR(11, 2, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_tuple__94);
  __Pyx_GIVEREF(__pyx_tuple__94);

  /* "(tree fragment)":4
 *     raise TypeError("no default __reduce__ due to non-trivial __cinit__")
 * def __setstate_cython__(self, __pyx_state):
 *     raise TypeError("no default __reduce__ due to non-trivial __cinit__")             # <<<<<<<<<<<<<<
 */
  __pyx_tuple__95 = PyTuple_Pack(1, __pyx_kp_s_no_default___reduce___due_to_non); if (unlikely(!__pyx_tuple__95)) __PYX_ERR(11, 4, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_tuple__95);
  __Pyx_GIVEREF(__pyx_tuple__95);

  /* "(tree fragment)":2
 * def __reduce_cython__(self):
 *     raise TypeError("no default __reduce__ due to non-trivial __cinit__")             # <<<<<<<<<<<<<<
 * def __setstate_cython__(self, __pyx_state):
 *     raise TypeError("no default __reduce__ due to non-trivial __cinit__")
 */
  __pyx_tuple__96 = PyTuple_Pack(1, __pyx_kp_s_no_default___reduce___due_to_non); if (unlikely(!__pyx_tuple__96)) __PYX_ERR(11, 2, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_tuple__96);
  __Pyx_GIVEREF(__pyx_tuple__96);

  /* "(tree fragment)":4
 *     raise TypeError("no default __reduce__ due to non-trivial __cinit__")
 * def __setstate_cython__(self, __pyx_state):
 *     raise TypeError("no default __reduce__ due to non-trivial __cinit__")             # <<<<<<<<<<<<<<
 */
  __pyx_tuple__97 = PyTuple_Pack(1, __pyx_kp_s_no_default___reduce___due_to_non); if (unlikely(!__pyx_tuple__97)) __PYX_ERR(11, 4, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_tuple__97);
  __Pyx_GIVEREF(__pyx_tuple__97);

  /* "(tree fragment)":2
 * def __reduce_cython__(self):
 *     raise TypeError("no default __reduce__ due to non-trivial __cinit__")             # <<<<<<<<<<<<<<
 * def __setstate_cython__(self, __pyx_state):
 *     raise TypeError("no default __reduce__ due to non-trivial __cinit__")
 */
  __pyx_tuple__98 = PyTuple_Pack(1, __pyx_kp_s_no_default___reduce___due_to_non); if (unlikely(!__pyx_tuple__98)) __PYX_ERR(11, 2, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_tuple__98);
  __Pyx_GIVEREF(__pyx_tuple__98);

  /* "(tree fragment)":4
 *     raise TypeError("no default __reduce__ due to non-trivial __cinit__")
 * def __setstate_cython__(self, __pyx_state):
 *     raise TypeError("no default __reduce__ due to non-trivial __cinit__")             # <<<<<<<<<<<<<<
 */
  __pyx_tuple__99 = PyTuple_Pack(1, __pyx_kp_s_no_default___reduce___due_to_non); if (unlikely(!__pyx_tuple__99)) __PYX_ERR(11, 4, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_tuple__99);
  __Pyx_GIVEREF(__pyx_tuple__99);

  /* "src/python/grpcio/grpc/_cython/_cygrpc/server.pyx.pxi":40
 *       CompletionQueue server_queue not None, tag):
 *     if not self.is_started or self.is_shutting_down:
 *       raise ValueError("server must be started and not shutting down")             # <<<<<<<<<<<<<<
 *     if server_queue not in self.registered_completion_queues:
 *       raise ValueError("server_queue must be a registered completion queue")
 */
  __pyx_tuple__100 = PyTuple_Pack(1, __pyx_kp_s_server_must_be_started_and_not_s); if (unlikely(!__pyx_tuple__100)) __PYX_ERR(23, 40, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_tuple__100);
  __Pyx_GIVEREF(__pyx_tuple__100);

  /* "src/python/grpcio/grpc/_cython/_cygrpc/server.pyx.pxi":42
 *       raise ValueError("server must be started and not shutting down")
 *     if server_queue not in self.registered_completion_queues:
 *       raise ValueError("server_queue must be a registered completion queue")             # <<<<<<<<<<<<<<
 *     cdef _RequestCallTag request_call_tag = _RequestCallTag(tag)
 *     request_call_tag.prepare()
 */
  __pyx_tuple__101 = PyTuple_Pack(1, __pyx_kp_s_server_queue_must_be_a_registere); if (unlikely(!__pyx_tuple__101)) __PYX_ERR(23, 42, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_tuple__101);
  __Pyx_GIVEREF(__pyx_tuple__101);

  /* "src/python/grpcio/grpc/_cython/_cygrpc/server.pyx.pxi":56
 *       self, CompletionQueue queue not None):
 *     if self.is_started:
 *       raise ValueError("cannot register completion queues after start")             # <<<<<<<<<<<<<<
 *     with nogil:
 *       grpc_server_register_completion_queue(
 */
  __pyx_tuple__102 = PyTuple_Pack(1, __pyx_kp_s_cannot_register_completion_queue); if (unlikely(!__pyx_tuple__102)) __PYX_ERR(23, 56, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_tuple__102);
  __Pyx_GIVEREF(__pyx_tuple__102);

  /* "src/python/grpcio/grpc/_cython/_cygrpc/server.pyx.pxi":71
 *     """
 *     if self.is_started:
 *       raise ValueError("the server has already started")             # <<<<<<<<<<<<<<
 *     if backup_queue:
 *       self.backup_shutdown_queue = CompletionQueue(shutdown_cq=True)
 */
  __pyx_tuple__103 = PyTuple_Pack(1, __pyx_kp_s_the_server_has_already_started); if (unlikely(!__pyx_tuple__103)) __PYX_ERR(23, 71, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_tuple__103);
  __Pyx_GIVEREF(__pyx_tuple__103);

  /* "src/python/grpcio/grpc/_cython/_cygrpc/server.pyx.pxi":110
 *   def shutdown(self, CompletionQueue queue not None, tag):
 *     if queue.is_shutting_down:
 *       raise ValueError("queue must be live")             # <<<<<<<<<<<<<<
 *     elif not self.is_started:
 *       raise ValueError("the server hasn't started yet")
 */
  __pyx_tuple__104 = PyTuple_Pack(1, __pyx_kp_s_queue_must_be_live); if (unlikely(!__pyx_tuple__104)) __PYX_ERR(23, 110, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_tuple__104);
  __Pyx_GIVEREF(__pyx_tuple__104);

  /* "src/python/grpcio/grpc/_cython/_cygrpc/server.pyx.pxi":112
 *       raise ValueError("queue must be live")
 *     elif not self.is_started:
 *       raise ValueError("the server hasn't started yet")             # <<<<<<<<<<<<<<
 *     elif self.is_shutting_down:
 *       return
 */
  __pyx_tuple__105 = PyTuple_Pack(1, __pyx_kp_s_the_server_hasn_t_started_yet); if (unlikely(!__pyx_tuple__105)) __PYX_ERR(23, 112, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_tuple__105);
  __Pyx_GIVEREF(__pyx_tuple__105);

  /* "src/python/grpcio/grpc/_cython/_cygrpc/server.pyx.pxi":116
 *       return
 *     elif queue not in self.registered_completion_queues:
 *       raise ValueError("expected registered completion queue")             # <<<<<<<<<<<<<<
 *     else:
 *       self._c_shutdown(queue, tag)
 */
  __pyx_tuple__106 = PyTuple_Pack(1, __pyx_kp_s_expected_registered_completion_q); if (unlikely(!__pyx_tuple__106)) __PYX_ERR(23, 116, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_tuple__106);
  __Pyx_GIVEREF(__pyx_tuple__106);

  /* "(tree fragment)":2
 * def __reduce_cython__(self):
 *     raise TypeError("no default __reduce__ due to non-trivial __cinit__")             # <<<<<<<<<<<<<<
 * def __setstate_cython__(self, __pyx_state):
 *     raise TypeError("no default __reduce__ due to non-trivial __cinit__")
 */
  __pyx_tuple__107 = PyTuple_Pack(1, __pyx_kp_s_no_default___reduce___due_to_non); if (unlikely(!__pyx_tuple__107)) __PYX_ERR(11, 2, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_tuple__107);
  __Pyx_GIVEREF(__pyx_tuple__107);

  /* "(tree fragment)":4
 *     raise TypeError("no default __reduce__ due to non-trivial __cinit__")
 * def __setstate_cython__(self, __pyx_state):
 *     raise TypeError("no default __reduce__ due to non-trivial __cinit__")             # <<<<<<<<<<<<<<
 */
  __pyx_tuple__108 = PyTuple_Pack(1, __pyx_kp_s_no_default___reduce___due_to_non); if (unlikely(!__pyx_tuple__108)) __PYX_ERR(11, 4, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_tuple__108);
  __Pyx_GIVEREF(__pyx_tuple__108);

  /* "(tree fragment)":2
 * def __reduce_cython__(self):
 *     raise TypeError("no default __reduce__ due to non-trivial __cinit__")             # <<<<<<<<<<<<<<
 * def __setstate_cython__(self, __pyx_state):
 *     raise TypeError("no default __reduce__ due to non-trivial __cinit__")
 */
  __pyx_tuple__109 = PyTuple_Pack(1, __pyx_kp_s_no_default___reduce___due_to_non); if (unlikely(!__pyx_tuple__109)) __PYX_ERR(11, 2, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_tuple__109);
  __Pyx_GIVEREF(__pyx_tuple__109);

  /* "(tree fragment)":4
 *     raise TypeError("no default __reduce__ due to non-trivial __cinit__")
 * def __setstate_cython__(self, __pyx_state):
 *     raise TypeError("no default __reduce__ due to non-trivial __cinit__")             # <<<<<<<<<<<<<<
 */
  __pyx_tuple__110 = PyTuple_Pack(1, __pyx_kp_s_no_default___reduce___due_to_non); if (unlikely(!__pyx_tuple__110)) __PYX_ERR(11, 4, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_tuple__110);
  __Pyx_GIVEREF(__pyx_tuple__110);

  /* "(tree fragment)":2
 * def __reduce_cython__(self):
 *     raise TypeError("no default __reduce__ due to non-trivial __cinit__")             # <<<<<<<<<<<<<<
 * def __setstate_cython__(self, __pyx_state):
 *     raise TypeError("no default __reduce__ due to non-trivial __cinit__")
 */
  __pyx_tuple__111 = PyTuple_Pack(1, __pyx_kp_s_no_default___reduce___due_to_non); if (unlikely(!__pyx_tuple__111)) __PYX_ERR(11, 2, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_tuple__111);
  __Pyx_GIVEREF(__pyx_tuple__111);

  /* "(tree fragment)":4
 *     raise TypeError("no default __reduce__ due to non-trivial __cinit__")
 * def __setstate_cython__(self, __pyx_state):
 *     raise TypeError("no default __reduce__ due to non-trivial __cinit__")             # <<<<<<<<<<<<<<
 */
  __pyx_tuple__112 = PyTuple_Pack(1, __pyx_kp_s_no_default___reduce___due_to_non); if (unlikely(!__pyx_tuple__112)) __PYX_ERR(11, 4, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_tuple__112);
  __Pyx_GIVEREF(__pyx_tuple__112);

  /* "(tree fragment)":2
 * def __reduce_cython__(self):
 *     raise TypeError("no default __reduce__ due to non-trivial __cinit__")             # <<<<<<<<<<<<<<
 * def __setstate_cython__(self, __pyx_state):
 *     raise TypeError("no default __reduce__ due to non-trivial __cinit__")
 */
  __pyx_tuple__113 = PyTuple_Pack(1, __pyx_kp_s_no_default___reduce___due_to_non); if (unlikely(!__pyx_tuple__113)) __PYX_ERR(11, 2, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_tuple__113);
  __Pyx_GIVEREF(__pyx_tuple__113);

  /* "(tree fragment)":4
 *     raise TypeError("no default __reduce__ due to non-trivial __cinit__")
 * def __setstate_cython__(self, __pyx_state):
 *     raise TypeError("no default __reduce__ due to non-trivial __cinit__")             # <<<<<<<<<<<<<<
 */
  __pyx_tuple__114 = PyTuple_Pack(1, __pyx_kp_s_no_default___reduce___due_to_non); if (unlikely(!__pyx_tuple__114)) __PYX_ERR(11, 4, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_tuple__114);
  __Pyx_GIVEREF(__pyx_tuple__114);

  /* "(tree fragment)":2
 * def __reduce_cython__(self):
 *     raise TypeError("no default __reduce__ due to non-trivial __cinit__")             # <<<<<<<<<<<<<<
 * def __setstate_cython__(self, __pyx_state):
 *     raise TypeError("no default __reduce__ due to non-trivial __cinit__")
 */
  __pyx_tuple__115 = PyTuple_Pack(1, __pyx_kp_s_no_default___reduce___due_to_non); if (unlikely(!__pyx_tuple__115)) __PYX_ERR(11, 2, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_tuple__115);
  __Pyx_GIVEREF(__pyx_tuple__115);

  /* "(tree fragment)":4
 *     raise TypeError("no default __reduce__ due to non-trivial __cinit__")
 * def __setstate_cython__(self, __pyx_state):
 *     raise TypeError("no default __reduce__ due to non-trivial __cinit__")             # <<<<<<<<<<<<<<
 */
  __pyx_tuple__116 = PyTuple_Pack(1, __pyx_kp_s_no_default___reduce___due_to_non); if (unlikely(!__pyx_tuple__116)) __PYX_ERR(11, 4, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_tuple__116);
  __Pyx_GIVEREF(__pyx_tuple__116);

  /* "src/python/grpcio/grpc/_cython/_cygrpc/_hooks.pyx.pxi":17
 * 
 * cdef object _custom_op_on_c_call(int op, grpc_call *call):
 *   raise NotImplementedError("No custom hooks are implemented")             # <<<<<<<<<<<<<<
 * 
 * def install_context_from_request_call_event(RequestCallEvent event):
 */
  __pyx_tuple__117 = PyTuple_Pack(1, __pyx_kp_s_No_custom_hooks_are_implemented); if (unlikely(!__pyx_tuple__117)) __PYX_ERR(26, 17, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_tuple__117);
  __Pyx_GIVEREF(__pyx_tuple__117);

  /* "(tree fragment)":2
 * def __reduce_cython__(self):
 *     raise TypeError("no default __reduce__ due to non-trivial __cinit__")             # <<<<<<<<<<<<<<
 * def __setstate_cython__(self, __pyx_state):
 *     raise TypeError("no default __reduce__ due to non-trivial __cinit__")
 */
  __pyx_tuple__122 = PyTuple_Pack(1, __pyx_kp_s_no_default___reduce___due_to_non); if (unlikely(!__pyx_tuple__122)) __PYX_ERR(11, 2, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_tuple__122);
  __Pyx_GIVEREF(__pyx_tuple__122);

  /* "(tree fragment)":4
 *     raise TypeError("no default __reduce__ due to non-trivial __cinit__")
 * def __setstate_cython__(self, __pyx_state):
 *     raise TypeError("no default __reduce__ due to non-trivial __cinit__")             # <<<<<<<<<<<<<<
 */
  __pyx_tuple__123 = PyTuple_Pack(1, __pyx_kp_s_no_default___reduce___due_to_non); if (unlikely(!__pyx_tuple__123)) __PYX_ERR(11, 4, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_tuple__123);
  __Pyx_GIVEREF(__pyx_tuple__123);

  /* "src/python/grpcio/grpc/_cython/_cygrpc/grpc_gevent.pyx.pxi":125
 *         else:
 *           sent_byte_count -= len(write_bytes[0])
 *           write_bytes = write_bytes[1:]             # <<<<<<<<<<<<<<
 *     socket_wrapper.write_cb(<grpc_custom_socket*>socket_wrapper.c_socket,
 *                             grpc_error_none())
 */
  __pyx_slice__124 = PySlice_New(__pyx_int_1, Py_None, Py_None); if (unlikely(!__pyx_slice__124)) __PYX_ERR(6, 125, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_slice__124);
  __Pyx_GIVEREF(__pyx_slice__124);

  /* "src/python/grpcio/grpc/_cython/_cygrpc/grpc_gevent.pyx.pxi":191
 *   cdef grpc_resolved_address c_addr
 *   if (<SocketWrapper>socket.impl).socket is None:
 *     peer = ('0.0.0.0', 0)             # <<<<<<<<<<<<<<
 *   else:
 *     peer = (<SocketWrapper>socket.impl).socket.getsockname()
 */
  __pyx_tuple__125 = PyTuple_Pack(2, __pyx_kp_s_0_0_0_0, __pyx_int_0); if (unlikely(!__pyx_tuple__125)) __PYX_ERR(6, 191, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_tuple__125);
  __Pyx_GIVEREF(__pyx_tuple__125);

  /* "(tree fragment)":2
 * def __reduce_cython__(self):
 *     raise TypeError("no default __reduce__ due to non-trivial __cinit__")             # <<<<<<<<<<<<<<
 * def __setstate_cython__(self, __pyx_state):
 *     raise TypeError("no default __reduce__ due to non-trivial __cinit__")
 */
  __pyx_tuple__126 = PyTuple_Pack(1, __pyx_kp_s_no_default___reduce___due_to_non); if (unlikely(!__pyx_tuple__126)) __PYX_ERR(11, 2, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_tuple__126);
  __Pyx_GIVEREF(__pyx_tuple__126);

  /* "(tree fragment)":4
 *     raise TypeError("no default __reduce__ due to non-trivial __cinit__")
 * def __setstate_cython__(self, __pyx_state):
 *     raise TypeError("no default __reduce__ due to non-trivial __cinit__")             # <<<<<<<<<<<<<<
 */
  __pyx_tuple__127 = PyTuple_Pack(1, __pyx_kp_s_no_default___reduce___due_to_non); if (unlikely(!__pyx_tuple__127)) __PYX_ERR(11, 4, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_tuple__127);
  __Pyx_GIVEREF(__pyx_tuple__127);

  /* "(tree fragment)":2
 * def __reduce_cython__(self):
 *     raise TypeError("no default __reduce__ due to non-trivial __cinit__")             # <<<<<<<<<<<<<<
 * def __setstate_cython__(self, __pyx_state):
 *     raise TypeError("no default __reduce__ due to non-trivial __cinit__")
 */
  __pyx_tuple__128 = PyTuple_Pack(1, __pyx_kp_s_no_default___reduce___due_to_non); if (unlikely(!__pyx_tuple__128)) __PYX_ERR(11, 2, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_tuple__128);
  __Pyx_GIVEREF(__pyx_tuple__128);

  /* "(tree fragment)":4
 *     raise TypeError("no default __reduce__ due to non-trivial __cinit__")
 * def __setstate_cython__(self, __pyx_state):
 *     raise TypeError("no default __reduce__ due to non-trivial __cinit__")             # <<<<<<<<<<<<<<
 */
  __pyx_tuple__129 = PyTuple_Pack(1, __pyx_kp_s_no_default___reduce___due_to_non); if (unlikely(!__pyx_tuple__129)) __PYX_ERR(11, 4, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_tuple__129);
  __Pyx_GIVEREF(__pyx_tuple__129);

  /* "src/python/grpcio/grpc/_cython/_cygrpc/grpc_gevent.pyx.pxi":400
 *   g_pool = gevent.pool.Group()
 * 
 *   def cb_func(cb, args):             # <<<<<<<<<<<<<<
 *     _spawn_greenlet(cb, *args)
 *   set_async_callback_func(cb_func)
 */
  __pyx_tuple__130 = PyTuple_Pack(2, __pyx_n_s_cb, __pyx_n_s_args); if (unlikely(!__pyx_tuple__130)) __PYX_ERR(6, 400, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_tuple__130);
  __Pyx_GIVEREF(__pyx_tuple__130);
  __pyx_codeobj__131 = (PyObject*)__Pyx_PyCode_New(2, 0, 2, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__130, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_src_python_grpcio_grpc__cython_3, __pyx_n_s_cb_func, 400, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__131)) __PYX_ERR(6, 400, __pyx_L1_error)

  /* "src/python/grpcio/grpc/_cython/_cygrpc/thread.pyx.pxi":52
 *     def _run_with_context(target):
 *         ctx = contextvars.copy_context()
 *         def _run(*args):             # <<<<<<<<<<<<<<
 *             ctx.run(target, *args)
 *         return _run
 */
  __pyx_tuple__132 = PyTuple_Pack(1, __pyx_n_s_args); if (unlikely(!__pyx_tuple__132)) __PYX_ERR(28, 52, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_tuple__132);
  __Pyx_GIVEREF(__pyx_tuple__132);
  __pyx_codeobj__133 = (PyObject*)__Pyx_PyCode_New(0, 0, 1, 0, CO_OPTIMIZED|CO_NEWLOCALS|CO_VARARGS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__132, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_src_python_grpcio_grpc__cython_4, __pyx_n_s_run_2, 52, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__133)) __PYX_ERR(28, 52, __pyx_L1_error)

  /* "src/python/grpcio/grpc/_cython/_cygrpc/thread.pyx.pxi":57
 * else:
 *     def _run_with_context(target):
 *         def _run(*args):             # <<<<<<<<<<<<<<
 *             target(*args)
 *         return _run
 */
  __pyx_tuple__134 = PyTuple_Pack(1, __pyx_n_s_args); if (unlikely(!__pyx_tuple__134)) __PYX_ERR(28, 57, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_tuple__134);
  __Pyx_GIVEREF(__pyx_tuple__134);
  __pyx_codeobj__135 = (PyObject*)__Pyx_PyCode_New(0, 0, 1, 0, CO_OPTIMIZED|CO_NEWLOCALS|CO_VARARGS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__134, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_src_python_grpcio_grpc__cython_4, __pyx_n_s_run_2, 57, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__135)) __PYX_ERR(28, 57, __pyx_L1_error)

  /* "src/python/grpcio/grpc/_cython/_cygrpc/fork_posix.pyx.pxi":102
 *     def __init__(self, target, args=()):
 *         if _GRPC_ENABLE_FORK_SUPPORT:
 *             def managed_target(*args):             # <<<<<<<<<<<<<<
 *                 try:
 *                     target(*args)
 */
  __pyx_tuple__136 = PyTuple_Pack(1, __pyx_n_s_args); if (unlikely(!__pyx_tuple__136)) __PYX_ERR(1, 102, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_tuple__136);
  __Pyx_GIVEREF(__pyx_tuple__136);
  __pyx_codeobj__137 = (PyObject*)__Pyx_PyCode_New(0, 0, 1, 0, CO_OPTIMIZED|CO_NEWLOCALS|CO_VARARGS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__136, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_src_python_grpcio_grpc__cython_5, __pyx_n_s_managed_target, 102, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__137)) __PYX_ERR(1, 102, __pyx_L1_error)

  /* "src/python/grpcio/grpc/_cython/_cygrpc/aio/common.pyx.pxi":149
 *     queue = asyncio.Queue(maxsize=1, loop=loop)
 * 
 *     def yield_to_queue():             # <<<<<<<<<<<<<<
 *         try:
 *             for item in gen:
 */
  __pyx_tuple__140 = PyTuple_Pack(1, __pyx_n_s_item); if (unlikely(!__pyx_tuple__140)) __PYX_ERR(7, 149, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_tuple__140);
  __Pyx_GIVEREF(__pyx_tuple__140);
  __pyx_codeobj__141 = (PyObject*)__Pyx_PyCode_New(0, 0, 1, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__140, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_src_python_grpcio_grpc__cython_6, __pyx_n_s_yield_to_queue, 149, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__141)) __PYX_ERR(7, 149, __pyx_L1_error)

  /* "(tree fragment)":2
 * def __reduce_cython__(self):
 *     raise TypeError("no default __reduce__ due to non-trivial __cinit__")             # <<<<<<<<<<<<<<
 * def __setstate_cython__(self, __pyx_state):
 *     raise TypeError("no default __reduce__ due to non-trivial __cinit__")
 */
  __pyx_tuple__142 = PyTuple_Pack(1, __pyx_kp_s_no_default___reduce___due_to_non); if (unlikely(!__pyx_tuple__142)) __PYX_ERR(11, 2, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_tuple__142);
  __Pyx_GIVEREF(__pyx_tuple__142);

  /* "(tree fragment)":4
 *     raise TypeError("no default __reduce__ due to non-trivial __cinit__")
 * def __setstate_cython__(self, __pyx_state):
 *     raise TypeError("no default __reduce__ due to non-trivial __cinit__")             # <<<<<<<<<<<<<<
 */
  __pyx_tuple__143 = PyTuple_Pack(1, __pyx_kp_s_no_default___reduce___due_to_non); if (unlikely(!__pyx_tuple__143)) __PYX_ERR(11, 4, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_tuple__143);
  __Pyx_GIVEREF(__pyx_tuple__143);

  /* "(tree fragment)":2
 * def __reduce_cython__(self):
 *     raise TypeError("self._cq cannot be converted to a Python object for pickling")             # <<<<<<<<<<<<<<
 * def __setstate_cython__(self, __pyx_state):
 *     raise TypeError("self._cq cannot be converted to a Python object for pickling")
 */
  __pyx_tuple__144 = PyTuple_Pack(1, __pyx_kp_s_self__cq_cannot_be_converted_to); if (unlikely(!__pyx_tuple__144)) __PYX_ERR(11, 2, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_tuple__144);
  __Pyx_GIVEREF(__pyx_tuple__144);

  /* "(tree fragment)":4
 *     raise TypeError("self._cq cannot be converted to a Python object for pickling")
 * def __setstate_cython__(self, __pyx_state):
 *     raise TypeError("self._cq cannot be converted to a Python object for pickling")             # <<<<<<<<<<<<<<
 */
  __pyx_tuple__145 = PyTuple_Pack(1, __pyx_kp_s_self__cq_cannot_be_converted_to); if (unlikely(!__pyx_tuple__145)) __PYX_ERR(11, 4, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_tuple__145);
  __Pyx_GIVEREF(__pyx_tuple__145);

  /* "(tree fragment)":2
 * def __reduce_cython__(self):
 *     raise TypeError("no default __reduce__ due to non-trivial __cinit__")             # <<<<<<<<<<<<<<
 * def __setstate_cython__(self, __pyx_state):
 *     raise TypeError("no default __reduce__ due to non-trivial __cinit__")
 */
  __pyx_tuple__146 = PyTuple_Pack(1, __pyx_kp_s_no_default___reduce___due_to_non); if (unlikely(!__pyx_tuple__146)) __PYX_ERR(11, 2, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_tuple__146);
  __Pyx_GIVEREF(__pyx_tuple__146);

  /* "(tree fragment)":4
 *     raise TypeError("no default __reduce__ due to non-trivial __cinit__")
 * def __setstate_cython__(self, __pyx_state):
 *     raise TypeError("no default __reduce__ due to non-trivial __cinit__")             # <<<<<<<<<<<<<<
 */
  __pyx_tuple__147 = PyTuple_Pack(1, __pyx_kp_s_no_default___reduce___due_to_non); if (unlikely(!__pyx_tuple__147)) __PYX_ERR(11, 4, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_tuple__147);
  __Pyx_GIVEREF(__pyx_tuple__147);

  /* "src/python/grpcio/grpc/_cython/_cygrpc/aio/completion_queue.pyx.pxi":108
 *             if event.type == GRPC_QUEUE_TIMEOUT:
 *                 with gil:
 *                     raise AssertionError("Core should not return GRPC_QUEUE_TIMEOUT!")             # <<<<<<<<<<<<<<
 *             elif event.type == GRPC_QUEUE_SHUTDOWN:
 *                 self._shutdown = True
 */
  __pyx_tuple__148 = PyTuple_Pack(1, __pyx_kp_s_Core_should_not_return_GRPC_QUEU); if (unlikely(!__pyx_tuple__148)) __PYX_ERR(8, 108, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_tuple__148);
  __Pyx_GIVEREF(__pyx_tuple__148);

  /* "(tree fragment)":2
 * def __reduce_cython__(self):
 *     raise TypeError("no default __reduce__ due to non-trivial __cinit__")             # <<<<<<<<<<<<<<
 * def __setstate_cython__(self, __pyx_state):
 *     raise TypeError("no default __reduce__ due to non-trivial __cinit__")
 */
  __pyx_tuple__149 = PyTuple_Pack(1, __pyx_kp_s_no_default___reduce___due_to_non); if (unlikely(!__pyx_tuple__149)) __PYX_ERR(11, 2, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_tuple__149);
  __Pyx_GIVEREF(__pyx_tuple__149);

  /* "(tree fragment)":4
 *     raise TypeError("no default __reduce__ due to non-trivial __cinit__")
 * def __setstate_cython__(self, __pyx_state):
 *     raise TypeError("no default __reduce__ due to non-trivial __cinit__")             # <<<<<<<<<<<<<<
 */
  __pyx_tuple__150 = PyTuple_Pack(1, __pyx_kp_s_no_default___reduce___due_to_non); if (unlikely(!__pyx_tuple__150)) __PYX_ERR(11, 4, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_tuple__150);
  __Pyx_GIVEREF(__pyx_tuple__150);

  /* "(tree fragment)":2
 * def __reduce_cython__(self):
 *     raise TypeError("no default __reduce__ due to non-trivial __cinit__")             # <<<<<<<<<<<<<<
 * def __setstate_cython__(self, __pyx_state):
 *     raise TypeError("no default __reduce__ due to non-trivial __cinit__")
 */
  __pyx_tuple__151 = PyTuple_Pack(1, __pyx_kp_s_no_default___reduce___due_to_non); if (unlikely(!__pyx_tuple__151)) __PYX_ERR(11, 2, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_tuple__151);
  __Pyx_GIVEREF(__pyx_tuple__151);

  /* "(tree fragment)":4
 *     raise TypeError("no default __reduce__ due to non-trivial __cinit__")
 * def __setstate_cython__(self, __pyx_state):
 *     raise TypeError("no default __reduce__ due to non-trivial __cinit__")             # <<<<<<<<<<<<<<
 */
  __pyx_tuple__152 = PyTuple_Pack(1, __pyx_kp_s_no_default___reduce___due_to_non); if (unlikely(!__pyx_tuple__152)) __PYX_ERR(11, 4, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_tuple__152);
  __Pyx_GIVEREF(__pyx_tuple__152);

  /* "(tree fragment)":2
 * def __reduce_cython__(self):
 *     raise TypeError("no default __reduce__ due to non-trivial __cinit__")             # <<<<<<<<<<<<<<
 * def __setstate_cython__(self, __pyx_state):
 *     raise TypeError("no default __reduce__ due to non-trivial __cinit__")
 */
  __pyx_tuple__153 = PyTuple_Pack(1, __pyx_kp_s_no_default___reduce___due_to_non); if (unlikely(!__pyx_tuple__153)) __PYX_ERR(11, 2, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_tuple__153);
  __Pyx_GIVEREF(__pyx_tuple__153);

  /* "(tree fragment)":4
 *     raise TypeError("no default __reduce__ due to non-trivial __cinit__")
 * def __setstate_cython__(self, __pyx_state):
 *     raise TypeError("no default __reduce__ due to non-trivial __cinit__")             # <<<<<<<<<<<<<<
 */
  __pyx_tuple__154 = PyTuple_Pack(1, __pyx_kp_s_no_default___reduce___due_to_non); if (unlikely(!__pyx_tuple__154)) __PYX_ERR(11, 4, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_tuple__154);
  __Pyx_GIVEREF(__pyx_tuple__154);

  /* "(tree fragment)":2
 * def __reduce_cython__(self):
 *     raise TypeError("no default __reduce__ due to non-trivial __cinit__")             # <<<<<<<<<<<<<<
 * def __setstate_cython__(self, __pyx_state):
 *     raise TypeError("no default __reduce__ due to non-trivial __cinit__")
 */
  __pyx_tuple__161 = PyTuple_Pack(1, __pyx_kp_s_no_default___reduce___due_to_non); if (unlikely(!__pyx_tuple__161)) __PYX_ERR(11, 2, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_tuple__161);
  __Pyx_GIVEREF(__pyx_tuple__161);

  /* "(tree fragment)":4
 *     raise TypeError("no default __reduce__ due to non-trivial __cinit__")
 * def __setstate_cython__(self, __pyx_state):
 *     raise TypeError("no default __reduce__ due to non-trivial __cinit__")             # <<<<<<<<<<<<<<
 */
  __pyx_tuple__162 = PyTuple_Pack(1, __pyx_kp_s_no_default___reduce___due_to_non); if (unlikely(!__pyx_tuple__162)) __PYX_ERR(11, 4, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_tuple__162);
  __Pyx_GIVEREF(__pyx_tuple__162);

  /* "(tree fragment)":2
 * def __reduce_cython__(self):
 *     raise TypeError("no default __reduce__ due to non-trivial __cinit__")             # <<<<<<<<<<<<<<
 * def __setstate_cython__(self, __pyx_state):
 *     raise TypeError("no default __reduce__ due to non-trivial __cinit__")
 */
  __pyx_tuple__163 = PyTuple_Pack(1, __pyx_kp_s_no_default___reduce___due_to_non); if (unlikely(!__pyx_tuple__163)) __PYX_ERR(11, 2, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_tuple__163);
  __Pyx_GIVEREF(__pyx_tuple__163);

  /* "(tree fragment)":4
 *     raise TypeError("no default __reduce__ due to non-trivial __cinit__")
 * def __setstate_cython__(self, __pyx_state):
 *     raise TypeError("no default __reduce__ due to non-trivial __cinit__")             # <<<<<<<<<<<<<<
 */
  __pyx_tuple__164 = PyTuple_Pack(1, __pyx_kp_s_no_default___reduce___due_to_non); if (unlikely(!__pyx_tuple__164)) __PYX_ERR(11, 4, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_tuple__164);
  __Pyx_GIVEREF(__pyx_tuple__164);

  /* "(tree fragment)":2
 * def __reduce_cython__(self):
 *     raise TypeError("no default __reduce__ due to non-trivial __cinit__")             # <<<<<<<<<<<<<<
 * def __setstate_cython__(self, __pyx_state):
 *     raise TypeError("no default __reduce__ due to non-trivial __cinit__")
 */
  __pyx_tuple__168 = PyTuple_Pack(1, __pyx_kp_s_no_default___reduce___due_to_non); if (unlikely(!__pyx_tuple__168)) __PYX_ERR(11, 2, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_tuple__168);
  __Pyx_GIVEREF(__pyx_tuple__168);

  /* "(tree fragment)":4
 *     raise TypeError("no default __reduce__ due to non-trivial __cinit__")
 * def __setstate_cython__(self, __pyx_state):
 *     raise TypeError("no default __reduce__ due to non-trivial __cinit__")             # <<<<<<<<<<<<<<
 */
  __pyx_tuple__169 = PyTuple_Pack(1, __pyx_kp_s_no_default___reduce___due_to_non); if (unlikely(!__pyx_tuple__169)) __PYX_ERR(11, 4, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_tuple__169);
  __Pyx_GIVEREF(__pyx_tuple__169);

  /* "(tree fragment)":2
 * def __reduce_cython__(self):
 *     raise TypeError("no default __reduce__ due to non-trivial __cinit__")             # <<<<<<<<<<<<<<
 * def __setstate_cython__(self, __pyx_state):
 *     raise TypeError("no default __reduce__ due to non-trivial __cinit__")
 */
  __pyx_tuple__170 = PyTuple_Pack(1, __pyx_kp_s_no_default___reduce___due_to_non); if (unlikely(!__pyx_tuple__170)) __PYX_ERR(11, 2, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_tuple__170);
  __Pyx_GIVEREF(__pyx_tuple__170);

  /* "(tree fragment)":4
 *     raise TypeError("no default __reduce__ due to non-trivial __cinit__")
 * def __setstate_cython__(self, __pyx_state):
 *     raise TypeError("no default __reduce__ due to non-trivial __cinit__")             # <<<<<<<<<<<<<<
 */
  __pyx_tuple__171 = PyTuple_Pack(1, __pyx_kp_s_no_default___reduce___due_to_non); if (unlikely(!__pyx_tuple__171)) __PYX_ERR(11, 4, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_tuple__171);
  __Pyx_GIVEREF(__pyx_tuple__171);

  /* "(tree fragment)":2
 * def __reduce_cython__(self):
 *     raise TypeError("no default __reduce__ due to non-trivial __cinit__")             # <<<<<<<<<<<<<<
 * def __setstate_cython__(self, __pyx_state):
 *     raise TypeError("no default __reduce__ due to non-trivial __cinit__")
 */
  __pyx_tuple__172 = PyTuple_Pack(1, __pyx_kp_s_no_default___reduce___due_to_non); if (unlikely(!__pyx_tuple__172)) __PYX_ERR(11, 2, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_tuple__172);
  __Pyx_GIVEREF(__pyx_tuple__172);

  /* "(tree fragment)":4
 *     raise TypeError("no default __reduce__ due to non-trivial __cinit__")
 * def __setstate_cython__(self, __pyx_state):
 *     raise TypeError("no default __reduce__ due to non-trivial __cinit__")             # <<<<<<<<<<<<<<
 */
  __pyx_tuple__173 = PyTuple_Pack(1, __pyx_kp_s_no_default___reduce___due_to_non); if (unlikely(!__pyx_tuple__173)) __PYX_ERR(11, 4, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_tuple__173);
  __Pyx_GIVEREF(__pyx_tuple__173);

  /* "src/python/grpcio/grpc/_cython/_cygrpc/aio/server.pyx.pxi":220
 *     def set_compression(self, object compression):
 *         if self._rpc_state.metadata_sent:
 *             raise RuntimeError('Compression setting must be specified before sending initial metadata')             # <<<<<<<<<<<<<<
 *         else:
 *             self._rpc_state.compression_algorithm = compression
 */
  __pyx_tuple__175 = PyTuple_Pack(1, __pyx_kp_s_Compression_setting_must_be_spec); if (unlikely(!__pyx_tuple__175)) __PYX_ERR(10, 220, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_tuple__175);
  __Pyx_GIVEREF(__pyx_tuple__175);

  /* "(tree fragment)":2
 * def __reduce_cython__(self):
 *     raise TypeError("no default __reduce__ due to non-trivial __cinit__")             # <<<<<<<<<<<<<<
 * def __setstate_cython__(self, __pyx_state):
 *     raise TypeError("no default __reduce__ due to non-trivial __cinit__")
 */
  __pyx_tuple__176 = PyTuple_Pack(1, __pyx_kp_s_no_default___reduce___due_to_non); if (unlikely(!__pyx_tuple__176)) __PYX_ERR(11, 2, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_tuple__176);
  __Pyx_GIVEREF(__pyx_tuple__176);

  /* "(tree fragment)":4
 *     raise TypeError("no default __reduce__ due to non-trivial __cinit__")
 * def __setstate_cython__(self, __pyx_state):
 *     raise TypeError("no default __reduce__ due to non-trivial __cinit__")             # <<<<<<<<<<<<<<
 */
  __pyx_tuple__177 = PyTuple_Pack(1, __pyx_kp_s_no_default___reduce___due_to_non); if (unlikely(!__pyx_tuple__177)) __PYX_ERR(11, 4, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_tuple__177);
  __Pyx_GIVEREF(__pyx_tuple__177);

  /* "(tree fragment)":2
 * def __reduce_cython__(self):
 *     raise TypeError("no default __reduce__ due to non-trivial __cinit__")             # <<<<<<<<<<<<<<
 * def __setstate_cython__(self, __pyx_state):
 *     raise TypeError("no default __reduce__ due to non-trivial __cinit__")
 */
  __pyx_tuple__179 = PyTuple_Pack(1, __pyx_kp_s_no_default___reduce___due_to_non); if (unlikely(!__pyx_tuple__179)) __PYX_ERR(11, 2, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_tuple__179);
  __Pyx_GIVEREF(__pyx_tuple__179);

  /* "(tree fragment)":4
 *     raise TypeError("no default __reduce__ due to non-trivial __cinit__")
 * def __setstate_cython__(self, __pyx_state):
 *     raise TypeError("no default __reduce__ due to non-trivial __cinit__")             # <<<<<<<<<<<<<<
 */
  __pyx_tuple__180 = PyTuple_Pack(1, __pyx_kp_s_no_default___reduce___due_to_non); if (unlikely(!__pyx_tuple__180)) __PYX_ERR(11, 4, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_tuple__180);
  __Pyx_GIVEREF(__pyx_tuple__180);

  /* "src/python/grpcio/grpc/_cython/_cygrpc/aio/server.pyx.pxi":351
 * async def _find_method_handler(str method, tuple metadata, list generic_handlers,
 *                           tuple interceptors):
 *     def query_handlers(handler_call_details):             # <<<<<<<<<<<<<<
 *         for generic_handler in generic_handlers:
 *             method_handler = generic_handler.service(handler_call_details)
 */
  __pyx_tuple__183 = PyTuple_Pack(3, __pyx_n_s_handler_call_details, __pyx_n_s_generic_handler, __pyx_n_s_method_handler); if (unlikely(!__pyx_tuple__183)) __PYX_ERR(10, 351, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_tuple__183);
  __Pyx_GIVEREF(__pyx_tuple__183);
  __pyx_codeobj__184 = (PyObject*)__Pyx_PyCode_New(1, 0, 3, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__183, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_src_python_grpcio_grpc__cython_7, __pyx_n_s_query_handlers, 351, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__184)) __PYX_ERR(10, 351, __pyx_L1_error)

  /* "(tree fragment)":2
 * def __reduce_cython__(self):
 *     raise TypeError("no default __reduce__ due to non-trivial __cinit__")             # <<<<<<<<<<<<<<
 * def __setstate_cython__(self, __pyx_state):
 *     raise TypeError("no default __reduce__ due to non-trivial __cinit__")
 */
  __pyx_tuple__189 = PyTuple_Pack(1, __pyx_kp_s_no_default___reduce___due_to_non); if (unlikely(!__pyx_tuple__189)) __PYX_ERR(11, 2, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_tuple__189);
  __Pyx_GIVEREF(__pyx_tuple__189);

  /* "(tree fragment)":4
 *     raise TypeError("no default __reduce__ due to non-trivial __cinit__")
 * def __setstate_cython__(self, __pyx_state):
 *     raise TypeError("no default __reduce__ due to non-trivial __cinit__")             # <<<<<<<<<<<<<<
 */
  __pyx_tuple__190 = PyTuple_Pack(1, __pyx_kp_s_no_default___reduce___due_to_non); if (unlikely(!__pyx_tuple__190)) __PYX_ERR(11, 4, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_tuple__190);
  __Pyx_GIVEREF(__pyx_tuple__190);

  /* "src/python/grpcio/grpc/_cython/_cygrpc/aio/server.pyx.pxi":806
 *     def __cinit__(self, int maximum_concurrent_rpcs, object loop):
 *         if maximum_concurrent_rpcs <= 0:
 *             raise ValueError("maximum_concurrent_rpcs should be a postive integer")             # <<<<<<<<<<<<<<
 *         self._maximum_concurrent_rpcs = maximum_concurrent_rpcs
 *         self._active_rpcs = 0
 */
  __pyx_tuple__197 = PyTuple_Pack(1, __pyx_kp_s_maximum_concurrent_rpcs_should_b); if (unlikely(!__pyx_tuple__197)) __PYX_ERR(10, 806, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_tuple__197);
  __Pyx_GIVEREF(__pyx_tuple__197);

  /* "(tree fragment)":2
 * def __reduce_cython__(self):
 *     raise TypeError("no default __reduce__ due to non-trivial __cinit__")             # <<<<<<<<<<<<<<
 * def __setstate_cython__(self, __pyx_state):
 *     raise TypeError("no default __reduce__ due to non-trivial __cinit__")
 */
  __pyx_tuple__198 = PyTuple_Pack(1, __pyx_kp_s_no_default___reduce___due_to_non); if (unlikely(!__pyx_tuple__198)) __PYX_ERR(11, 2, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_tuple__198);
  __Pyx_GIVEREF(__pyx_tuple__198);

  /* "(tree fragment)":4
 *     raise TypeError("no default __reduce__ due to non-trivial __cinit__")
 * def __setstate_cython__(self, __pyx_state):
 *     raise TypeError("no default __reduce__ due to non-trivial __cinit__")             # <<<<<<<<<<<<<<
 */
  __pyx_tuple__199 = PyTuple_Pack(1, __pyx_kp_s_no_default___reduce___due_to_non); if (unlikely(!__pyx_tuple__199)) __PYX_ERR(11, 4, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_tuple__199);
  __Pyx_GIVEREF(__pyx_tuple__199);

  /* "src/python/grpcio/grpc/_cython/_cygrpc/channelz.pyx.pxi":16
 * 
 * 
 * def channelz_get_top_channels(start_channel_id):             # <<<<<<<<<<<<<<
 *     cdef char *c_returned_str = grpc_channelz_get_top_channels(
 *         start_channel_id,
 */
  __pyx_tuple__200 = PyTuple_Pack(2, __pyx_n_s_start_channel_id, __pyx_n_s_c_returned_str); if (unlikely(!__pyx_tuple__200)) __PYX_ERR(13, 16, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_tuple__200);
  __Pyx_GIVEREF(__pyx_tuple__200);
  __pyx_codeobj__201 = (PyObject*)__Pyx_PyCode_New(1, 0, 2, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__200, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_src_python_grpcio_grpc__cython_8, __pyx_n_s_channelz_get_top_channels, 16, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__201)) __PYX_ERR(13, 16, __pyx_L1_error)

  /* "src/python/grpcio/grpc/_cython/_cygrpc/channelz.pyx.pxi":25
 *     return c_returned_str
 * 
 * def channelz_get_servers(start_server_id):             # <<<<<<<<<<<<<<
 *     cdef char *c_returned_str = grpc_channelz_get_servers(start_server_id)
 *     if c_returned_str == NULL:
 */
  __pyx_tuple__202 = PyTuple_Pack(2, __pyx_n_s_start_server_id, __pyx_n_s_c_returned_str); if (unlikely(!__pyx_tuple__202)) __PYX_ERR(13, 25, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_tuple__202);
  __Pyx_GIVEREF(__pyx_tuple__202);
  __pyx_codeobj__203 = (PyObject*)__Pyx_PyCode_New(1, 0, 2, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__202, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_src_python_grpcio_grpc__cython_8, __pyx_n_s_channelz_get_servers, 25, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__203)) __PYX_ERR(13, 25, __pyx_L1_error)

  /* "src/python/grpcio/grpc/_cython/_cygrpc/channelz.pyx.pxi":32
 *     return c_returned_str
 * 
 * def channelz_get_server(server_id):             # <<<<<<<<<<<<<<
 *     cdef char *c_returned_str = grpc_channelz_get_server(server_id)
 *     if c_returned_str == NULL:
 */
  __pyx_tuple__204 = PyTuple_Pack(2, __pyx_n_s_server_id, __pyx_n_s_c_returned_str); if (unlikely(!__pyx_tuple__204)) __PYX_ERR(13, 32, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_tuple__204);
  __Pyx_GIVEREF(__pyx_tuple__204);
  __pyx_codeobj__205 = (PyObject*)__Pyx_PyCode_New(1, 0, 2, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__204, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_src_python_grpcio_grpc__cython_8, __pyx_n_s_channelz_get_server, 32, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__205)) __PYX_ERR(13, 32, __pyx_L1_error)

  /* "src/python/grpcio/grpc/_cython/_cygrpc/channelz.pyx.pxi":39
 *     return c_returned_str
 * 
 * def channelz_get_server_sockets(server_id, start_socket_id, max_results):             # <<<<<<<<<<<<<<
 *     cdef char *c_returned_str = grpc_channelz_get_server_sockets(
 *         server_id,
 */
  __pyx_tuple__206 = PyTuple_Pack(4, __pyx_n_s_server_id, __pyx_n_s_start_socket_id, __pyx_n_s_max_results, __pyx_n_s_c_returned_str); if (unlikely(!__pyx_tuple__206)) __PYX_ERR(13, 39, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_tuple__206);
  __Pyx_GIVEREF(__pyx_tuple__206);
  __pyx_codeobj__207 = (PyObject*)__Pyx_PyCode_New(3, 0, 4, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__206, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_src_python_grpcio_grpc__cython_8, __pyx_n_s_channelz_get_server_sockets, 39, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__207)) __PYX_ERR(13, 39, __pyx_L1_error)

  /* "src/python/grpcio/grpc/_cython/_cygrpc/channelz.pyx.pxi":52
 *     return c_returned_str
 * 
 * def channelz_get_channel(channel_id):             # <<<<<<<<<<<<<<
 *     cdef char *c_returned_str = grpc_channelz_get_channel(channel_id)
 *     if c_returned_str == NULL:
 */
  __pyx_tuple__208 = PyTuple_Pack(2, __pyx_n_s_channel_id, __pyx_n_s_c_returned_str); if (unlikely(!__pyx_tuple__208)) __PYX_ERR(13, 52, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_tuple__208);
  __Pyx_GIVEREF(__pyx_tuple__208);
  __pyx_codeobj__209 = (PyObject*)__Pyx_PyCode_New(1, 0, 2, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__208, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_src_python_grpcio_grpc__cython_8, __pyx_n_s_channelz_get_channel, 52, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__209)) __PYX_ERR(13, 52, __pyx_L1_error)

  /* "src/python/grpcio/grpc/_cython/_cygrpc/channelz.pyx.pxi":59
 *     return c_returned_str
 * 
 * def channelz_get_subchannel(subchannel_id):             # <<<<<<<<<<<<<<
 *     cdef char *c_returned_str = grpc_channelz_get_subchannel(subchannel_id)
 *     if c_returned_str == NULL:
 */
  __pyx_tuple__210 = PyTuple_Pack(2, __pyx_n_s_subchannel_id, __pyx_n_s_c_returned_str); if (unlikely(!__pyx_tuple__210)) __PYX_ERR(13, 59, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_tuple__210);
  __Pyx_GIVEREF(__pyx_tuple__210);
  __pyx_codeobj__211 = (PyObject*)__Pyx_PyCode_New(1, 0, 2, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__210, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_src_python_grpcio_grpc__cython_8, __pyx_n_s_channelz_get_subchannel, 59, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__211)) __PYX_ERR(13, 59, __pyx_L1_error)

  /* "src/python/grpcio/grpc/_cython/_cygrpc/channelz.pyx.pxi":66
 *     return c_returned_str
 * 
 * def channelz_get_socket(socket_id):             # <<<<<<<<<<<<<<
 *     cdef char *c_returned_str = grpc_channelz_get_socket(socket_id)
 *     if c_returned_str == NULL:
 */
  __pyx_tuple__212 = PyTuple_Pack(2, __pyx_n_s_socket_id, __pyx_n_s_c_returned_str); if (unlikely(!__pyx_tuple__212)) __PYX_ERR(13, 66, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_tuple__212);
  __Pyx_GIVEREF(__pyx_tuple__212);
  __pyx_codeobj__213 = (PyObject*)__Pyx_PyCode_New(1, 0, 2, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__212, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_src_python_grpcio_grpc__cython_8, __pyx_n_s_channelz_get_socket, 66, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__213)) __PYX_ERR(13, 66, __pyx_L1_error)

  /* "src/python/grpcio/grpc/_cython/_cygrpc/csds.pyx.pxi":16
 * 
 * 
 * def dump_xds_configs():             # <<<<<<<<<<<<<<
 *     cdef grpc_slice client_config_in_slice
 *     with nogil:
 */
  __pyx_tuple__214 = PyTuple_Pack(2, __pyx_n_s_client_config_in_slice, __pyx_n_s_result); if (unlikely(!__pyx_tuple__214)) __PYX_ERR(14, 16, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_tuple__214);
  __Pyx_GIVEREF(__pyx_tuple__214);
  __pyx_codeobj__215 = (PyObject*)__Pyx_PyCode_New(0, 0, 2, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__214, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_src_python_grpcio_grpc__cython_9, __pyx_n_s_dump_xds_configs, 16, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__215)) __PYX_ERR(14, 16, __pyx_L1_error)

  /* "src/python/grpcio/grpc/_cython/_cygrpc/credentials.pyx.pxi":16
 * 
 * 
 * def _spawn_callback_in_thread(cb_func, args):             # <<<<<<<<<<<<<<
 *   t = ForkManagedThread(target=cb_func, args=args)
 *   t.setDaemon(True)
 */
  __pyx_tuple__216 = PyTuple_Pack(3, __pyx_n_s_cb_func, __pyx_n_s_args, __pyx_n_s_t); if (unlikely(!__pyx_tuple__216)) __PYX_ERR(5, 16, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_tuple__216);
  __Pyx_GIVEREF(__pyx_tuple__216);
  __pyx_codeobj__217 = (PyObject*)__Pyx_PyCode_New(2, 0, 3, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__216, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_src_python_grpcio_grpc__cython_2, __pyx_n_s_spawn_callback_in_thread, 16, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__217)) __PYX_ERR(5, 16, __pyx_L1_error)

  /* "src/python/grpcio/grpc/_cython/_cygrpc/credentials.pyx.pxi":23
 * async_callback_func = _spawn_callback_in_thread
 * 
 * def set_async_callback_func(callback_func):             # <<<<<<<<<<<<<<
 *   global async_callback_func
 *   async_callback_func = callback_func
 */
  __pyx_tuple__218 = PyTuple_Pack(1, __pyx_n_s_callback_func); if (unlikely(!__pyx_tuple__218)) __PYX_ERR(5, 23, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_tuple__218);
  __Pyx_GIVEREF(__pyx_tuple__218);
  __pyx_codeobj__219 = (PyObject*)__Pyx_PyCode_New(1, 0, 1, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__218, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_src_python_grpcio_grpc__cython_2, __pyx_n_s_set_async_callback_func, 23, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__219)) __PYX_ERR(5, 23, __pyx_L1_error)

  /* "src/python/grpcio/grpc/_cython/_cygrpc/credentials.pyx.pxi":27
 *   async_callback_func = callback_func
 * 
 * def _spawn_callback_async(callback, args):             # <<<<<<<<<<<<<<
 *   async_callback_func(callback, args)
 * 
 */
  __pyx_tuple__220 = PyTuple_Pack(2, __pyx_n_s_callback, __pyx_n_s_args); if (unlikely(!__pyx_tuple__220)) __PYX_ERR(5, 27, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_tuple__220);
  __Pyx_GIVEREF(__pyx_tuple__220);
  __pyx_codeobj__221 = (PyObject*)__Pyx_PyCode_New(2, 0, 2, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__220, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_src_python_grpcio_grpc__cython_2, __pyx_n_s_spawn_callback_async, 27, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__221)) __PYX_ERR(5, 27, __pyx_L1_error)

  /* "src/python/grpcio/grpc/_cython/_cygrpc/credentials.pyx.pxi":255
 *   return c_ssl_pem_key_cert_pairs
 * 
 * def server_credentials_ssl(pem_root_certs, pem_key_cert_pairs,             # <<<<<<<<<<<<<<
 *                            bint force_client_auth):
 *   pem_root_certs = str_to_bytes(pem_root_certs)
 */
  __pyx_tuple__222 = PyTuple_Pack(7, __pyx_n_s_pem_root_certs, __pyx_n_s_pem_key_cert_pairs, __pyx_n_s_force_client_auth, __pyx_n_s_credentials, __pyx_n_s_c_pem_root_certs, __pyx_n_s_c_cert_config, __pyx_n_s_c_options); if (unlikely(!__pyx_tuple__222)) __PYX_ERR(5, 255, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_tuple__222);
  __Pyx_GIVEREF(__pyx_tuple__222);
  __pyx_codeobj__223 = (PyObject*)__Pyx_PyCode_New(3, 0, 7, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__222, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_src_python_grpcio_grpc__cython_2, __pyx_n_s_server_credentials_ssl, 255, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__223)) __PYX_ERR(5, 255, __pyx_L1_error)

  /* "src/python/grpcio/grpc/_cython/_cygrpc/credentials.pyx.pxi":280
 *   return credentials
 * 
 * def server_certificate_config_ssl(pem_root_certs, pem_key_cert_pairs):             # <<<<<<<<<<<<<<
 *   pem_root_certs = str_to_bytes(pem_root_certs)
 *   pem_key_cert_pairs = list(pem_key_cert_pairs)
 */
  __pyx_tuple__224 = PyTuple_Pack(3, __pyx_n_s_pem_root_certs, __pyx_n_s_pem_key_cert_pairs, __pyx_n_s_cert_config); if (unlikely(!__pyx_tuple__224)) __PYX_ERR(5, 280, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_tuple__224);
  __Pyx_GIVEREF(__pyx_tuple__224);
  __pyx_codeobj__225 = (PyObject*)__Pyx_PyCode_New(2, 0, 3, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__224, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_src_python_grpcio_grpc__cython_2, __pyx_n_s_server_certificate_config_ssl, 280, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__225)) __PYX_ERR(5, 280, __pyx_L1_error)

  /* "src/python/grpcio/grpc/_cython/_cygrpc/credentials.pyx.pxi":294
 *   return cert_config
 * 
 * def server_credentials_ssl_dynamic_cert_config(initial_cert_config,             # <<<<<<<<<<<<<<
 *                                                cert_config_fetcher,
 *                                                bint force_client_auth):
 */
  __pyx_tuple__226 = PyTuple_Pack(5, __pyx_n_s_initial_cert_config, __pyx_n_s_cert_config_fetcher, __pyx_n_s_force_client_auth, __pyx_n_s_credentials, __pyx_n_s_c_options); if (unlikely(!__pyx_tuple__226)) __PYX_ERR(5, 294, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_tuple__226);
  __Pyx_GIVEREF(__pyx_tuple__226);
  __pyx_codeobj__227 = (PyObject*)__Pyx_PyCode_New(3, 0, 5, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__226, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_src_python_grpcio_grpc__cython_2, __pyx_n_s_server_credentials_ssl_dynamic_c, 294, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__227)) __PYX_ERR(5, 294, __pyx_L1_error)

  /* "src/python/grpcio/grpc/_cython/_cygrpc/credentials.pyx.pxi":368
 *     return grpc_local_credentials_create(local_connect_type)
 * 
 * def channel_credentials_local(grpc_local_connect_type local_connect_type):             # <<<<<<<<<<<<<<
 *   return LocalChannelCredentials(local_connect_type)
 * 
 */
  __pyx_tuple__228 = PyTuple_Pack(2, __pyx_n_s_local_connect_type, __pyx_n_s_local_connect_type); if (unlikely(!__pyx_tuple__228)) __PYX_ERR(5, 368, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_tuple__228);
  __Pyx_GIVEREF(__pyx_tuple__228);
  __pyx_codeobj__229 = (PyObject*)__Pyx_PyCode_New(1, 0, 2, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__228, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_src_python_grpcio_grpc__cython_2, __pyx_n_s_channel_credentials_local, 368, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__229)) __PYX_ERR(5, 368, __pyx_L1_error)

  /* "src/python/grpcio/grpc/_cython/_cygrpc/credentials.pyx.pxi":376
 *     return grpc_insecure_credentials_create()
 * 
 * def channel_credentials_insecure():             # <<<<<<<<<<<<<<
 *   return InsecureChannelCredentials()
 * 
 */
  __pyx_codeobj__230 = (PyObject*)__Pyx_PyCode_New(0, 0, 0, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_src_python_grpcio_grpc__cython_2, __pyx_n_s_channel_credentials_insecure, 376, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__230)) __PYX_ERR(5, 376, __pyx_L1_error)

  /* "src/python/grpcio/grpc/_cython/_cygrpc/credentials.pyx.pxi":379
 *   return InsecureChannelCredentials()
 * 
 * def server_credentials_local(grpc_local_connect_type local_connect_type):             # <<<<<<<<<<<<<<
 *   cdef ServerCredentials credentials = ServerCredentials()
 *   credentials.c_credentials = grpc_local_server_credentials_create(local_connect_type)
 */
  __pyx_tuple__231 = PyTuple_Pack(3, __pyx_n_s_local_connect_type, __pyx_n_s_local_connect_type, __pyx_n_s_credentials); if (unlikely(!__pyx_tuple__231)) __PYX_ERR(5, 379, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_tuple__231);
  __Pyx_GIVEREF(__pyx_tuple__231);
  __pyx_codeobj__232 = (PyObject*)__Pyx_PyCode_New(1, 0, 3, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__231, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_src_python_grpcio_grpc__cython_2, __pyx_n_s_server_credentials_local, 379, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__232)) __PYX_ERR(5, 379, __pyx_L1_error)

  /* "src/python/grpcio/grpc/_cython/_cygrpc/credentials.pyx.pxi":384
 *   return credentials
 * 
 * def xds_server_credentials(ServerCredentials fallback_credentials):             # <<<<<<<<<<<<<<
 *   cdef ServerCredentials credentials = ServerCredentials()
 *   credentials.c_credentials = grpc_xds_server_credentials_create(fallback_credentials.c_credentials)
 */
  __pyx_tuple__233 = PyTuple_Pack(2, __pyx_n_s_fallback_credentials, __pyx_n_s_credentials); if (unlikely(!__pyx_tuple__233)) __PYX_ERR(5, 384, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_tuple__233);
  __Pyx_GIVEREF(__pyx_tuple__233);
  __pyx_codeobj__234 = (PyObject*)__Pyx_PyCode_New(1, 0, 2, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__233, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_src_python_grpcio_grpc__cython_2, __pyx_n_s_xds_server_credentials, 384, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__234)) __PYX_ERR(5, 384, __pyx_L1_error)

  /* "src/python/grpcio/grpc/_cython/_cygrpc/credentials.pyx.pxi":392
 *   return credentials
 * 
 * def insecure_server_credentials():             # <<<<<<<<<<<<<<
 *   cdef ServerCredentials credentials = ServerCredentials()
 *   credentials.c_credentials = grpc_insecure_server_credentials_create()
 */
  __pyx_tuple__235 = PyTuple_Pack(1, __pyx_n_s_credentials); if (unlikely(!__pyx_tuple__235)) __PYX_ERR(5, 392, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_tuple__235);
  __Pyx_GIVEREF(__pyx_tuple__235);
  __pyx_codeobj__236 = (PyObject*)__Pyx_PyCode_New(0, 0, 1, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__235, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_src_python_grpcio_grpc__cython_2, __pyx_n_s_insecure_server_credentials, 392, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__236)) __PYX_ERR(5, 392, __pyx_L1_error)

  /* "src/python/grpcio/grpc/_cython/_cygrpc/credentials.pyx.pxi":413
 * 
 * 
 * def channel_credentials_alts(list service_accounts):             # <<<<<<<<<<<<<<
 *   return ALTSChannelCredentials(service_accounts)
 * 
 */
  __pyx_tuple__237 = PyTuple_Pack(1, __pyx_n_s_service_accounts); if (unlikely(!__pyx_tuple__237)) __PYX_ERR(5, 413, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_tuple__237);
  __Pyx_GIVEREF(__pyx_tuple__237);
  __pyx_codeobj__238 = (PyObject*)__Pyx_PyCode_New(1, 0, 1, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__237, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_src_python_grpcio_grpc__cython_2, __pyx_n_s_channel_credentials_alts, 413, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__238)) __PYX_ERR(5, 413, __pyx_L1_error)

  /* "src/python/grpcio/grpc/_cython/_cygrpc/credentials.pyx.pxi":417
 * 
 * 
 * def server_credentials_alts():             # <<<<<<<<<<<<<<
 *   cdef ServerCredentials credentials = ServerCredentials()
 *   cdef grpc_alts_credentials_options* c_options = grpc_alts_credentials_server_options_create()
 */
  __pyx_tuple__239 = PyTuple_Pack(2, __pyx_n_s_credentials, __pyx_n_s_c_options); if (unlikely(!__pyx_tuple__239)) __PYX_ERR(5, 417, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_tuple__239);
  __Pyx_GIVEREF(__pyx_tuple__239);
  __pyx_codeobj__240 = (PyObject*)__Pyx_PyCode_New(0, 0, 2, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__239, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_src_python_grpcio_grpc__cython_2, __pyx_n_s_server_credentials_alts, 417, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__240)) __PYX_ERR(5, 417, __pyx_L1_error)

  /* "src/python/grpcio/grpc/_cython/_cygrpc/credentials.pyx.pxi":441
 * 
 * 
 * def channel_credentials_compute_engine(call_creds):             # <<<<<<<<<<<<<<
 *   return ComputeEngineChannelCredentials(call_creds)
 */
  __pyx_tuple__241 = PyTuple_Pack(1, __pyx_n_s_call_creds); if (unlikely(!__pyx_tuple__241)) __PYX_ERR(5, 441, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_tuple__241);
  __Pyx_GIVEREF(__pyx_tuple__241);
  __pyx_codeobj__242 = (PyObject*)__Pyx_PyCode_New(1, 0, 1, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__241, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_src_python_grpcio_grpc__cython_2, __pyx_n_s_channel_credentials_compute_engi, 441, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__242)) __PYX_ERR(5, 441, __pyx_L1_error)

  /* "src/python/grpcio/grpc/_cython/_cygrpc/metadata.pyx.pxi":24
 * 
 * 
 * _Metadatum = collections.namedtuple('_Metadatum', ('key', 'value',))             # <<<<<<<<<<<<<<
 * 
 * 
 */
  __pyx_tuple__243 = PyTuple_Pack(2, __pyx_n_s_key, __pyx_n_s_value); if (unlikely(!__pyx_tuple__243)) __PYX_ERR(18, 24, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_tuple__243);
  __Pyx_GIVEREF(__pyx_tuple__243);
  __pyx_tuple__244 = PyTuple_Pack(2, __pyx_n_s_Metadatum, __pyx_tuple__243); if (unlikely(!__pyx_tuple__244)) __PYX_ERR(18, 24, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_tuple__244);
  __Pyx_GIVEREF(__pyx_tuple__244);

  /* "src/python/grpcio/grpc/_cython/_cygrpc/records.pyx.pxi":192
 * 
 * 
 * def compression_algorithm_name(grpc_compression_algorithm algorithm):             # <<<<<<<<<<<<<<
 *   cdef const char* name
 *   with nogil:
 */
  __pyx_tuple__245 = PyTuple_Pack(3, __pyx_n_s_algorithm, __pyx_n_s_algorithm, __pyx_n_s_name); if (unlikely(!__pyx_tuple__245)) __PYX_ERR(21, 192, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_tuple__245);
  __Pyx_GIVEREF(__pyx_tuple__245);
  __pyx_codeobj__246 = (PyObject*)__Pyx_PyCode_New(1, 0, 3, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__245, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_src_python_grpcio_grpc__cython_10, __pyx_n_s_compression_algorithm_name, 192, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__246)) __PYX_ERR(21, 192, __pyx_L1_error)

  /* "src/python/grpcio/grpc/_cython/_cygrpc/security.pyx.pxi":36
 * 
 * 
 * def peer_identities(Call call):             # <<<<<<<<<<<<<<
 *   cdef grpc_auth_context* auth_context
 *   cdef grpc_auth_property_iterator properties
 */
  __pyx_tuple__247 = PyTuple_Pack(5, __pyx_n_s_call, __pyx_n_s_auth_context, __pyx_n_s_properties, __pyx_n_s_property, __pyx_n_s_identities); if (unlikely(!__pyx_tuple__247)) __PYX_ERR(22, 36, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_tuple__247);
  __Pyx_GIVEREF(__pyx_tuple__247);
  __pyx_codeobj__248 = (PyObject*)__Pyx_PyCode_New(1, 0, 5, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__247, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_src_python_grpcio_grpc__cython_11, __pyx_n_s_peer_identities, 36, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__248)) __PYX_ERR(22, 36, __pyx_L1_error)

  /* "src/python/grpcio/grpc/_cython/_cygrpc/security.pyx.pxi":55
 *   return identities if identities else None
 * 
 * def peer_identity_key(Call call):             # <<<<<<<<<<<<<<
 *   cdef grpc_auth_context* auth_context
 *   cdef const char* c_key
 */
  __pyx_tuple__249 = PyTuple_Pack(4, __pyx_n_s_call, __pyx_n_s_auth_context, __pyx_n_s_c_key, __pyx_n_s_key); if (unlikely(!__pyx_tuple__249)) __PYX_ERR(22, 55, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_tuple__249);
  __Pyx_GIVEREF(__pyx_tuple__249);
  __pyx_codeobj__250 = (PyObject*)__Pyx_PyCode_New(1, 0, 4, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__249, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_src_python_grpcio_grpc__cython_11, __pyx_n_s_peer_identity_key, 55, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__250)) __PYX_ERR(22, 55, __pyx_L1_error)

  /* "src/python/grpcio/grpc/_cython/_cygrpc/security.pyx.pxi":69
 *   return key
 * 
 * def auth_context(Call call):             # <<<<<<<<<<<<<<
 *   cdef grpc_auth_context* auth_context
 *   cdef grpc_auth_property_iterator properties
 */
  __pyx_tuple__251 = PyTuple_Pack(6, __pyx_n_s_call, __pyx_n_s_auth_context, __pyx_n_s_properties, __pyx_n_s_property, __pyx_n_s_py_auth_context, __pyx_n_s_key); if (unlikely(!__pyx_tuple__251)) __PYX_ERR(22, 69, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_tuple__251);
  __Pyx_GIVEREF(__pyx_tuple__251);
  __pyx_codeobj__252 = (PyObject*)__Pyx_PyCode_New(1, 0, 6, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__251, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_src_python_grpcio_grpc__cython_11, __pyx_n_s_auth_context, 69, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__252)) __PYX_ERR(22, 69, __pyx_L1_error)

  /* "src/python/grpcio/grpc/_cython/_cygrpc/_hooks.pyx.pxi":19
 *   raise NotImplementedError("No custom hooks are implemented")
 * 
 * def install_context_from_request_call_event(RequestCallEvent event):             # <<<<<<<<<<<<<<
 *   pass
 * 
 */
  __pyx_tuple__253 = PyTuple_Pack(1, __pyx_n_s_event); if (unlikely(!__pyx_tuple__253)) __PYX_ERR(26, 19, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_tuple__253);
  __Pyx_GIVEREF(__pyx_tuple__253);
  __pyx_codeobj__254 = (PyObject*)__Pyx_PyCode_New(1, 0, 1, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__253, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_src_python_grpcio_grpc__cython_12, __pyx_n_s_install_context_from_request_cal, 19, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__254)) __PYX_ERR(26, 19, __pyx_L1_error)

  /* "src/python/grpcio/grpc/_cython/_cygrpc/_hooks.pyx.pxi":22
 *   pass
 * 
 * def uninstall_context():             # <<<<<<<<<<<<<<
 *   pass
 * 
 */
  __pyx_codeobj__255 = (PyObject*)__Pyx_PyCode_New(0, 0, 0, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_src_python_grpcio_grpc__cython_12, __pyx_n_s_uninstall_context, 22, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__255)) __PYX_ERR(26, 22, __pyx_L1_error)

  /* "src/python/grpcio/grpc/_cython/_cygrpc/_hooks.pyx.pxi":25
 *   pass
 * 
 * def build_census_context():             # <<<<<<<<<<<<<<
 *   pass
 * 
 */
  __pyx_codeobj__256 = (PyObject*)__Pyx_PyCode_New(0, 0, 0, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_src_python_grpcio_grpc__cython_12, __pyx_n_s_build_census_context, 25, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__256)) __PYX_ERR(26, 25, __pyx_L1_error)

  /* "src/python/grpcio/grpc/_cython/_cygrpc/_hooks.pyx.pxi":31
 *   pass
 * 
 * def set_census_context_on_call(_CallState call_state, CensusContext census_ctx):             # <<<<<<<<<<<<<<
 *   pass
 * 
 */
  __pyx_tuple__257 = PyTuple_Pack(2, __pyx_n_s_call_state, __pyx_n_s_census_ctx); if (unlikely(!__pyx_tuple__257)) __PYX_ERR(26, 31, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_tuple__257);
  __Pyx_GIVEREF(__pyx_tuple__257);
  __pyx_codeobj__258 = (PyObject*)__Pyx_PyCode_New(2, 0, 2, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__257, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_src_python_grpcio_grpc__cython_12, __pyx_n_s_set_census_context_on_call, 31, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__258)) __PYX_ERR(26, 31, __pyx_L1_error)

  /* "src/python/grpcio/grpc/_cython/_cygrpc/_hooks.pyx.pxi":34
 *   pass
 * 
 * def get_deadline_from_context():             # <<<<<<<<<<<<<<
 *   return None
 */
  __pyx_codeobj__259 = (PyObject*)__Pyx_PyCode_New(0, 0, 0, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_src_python_grpcio_grpc__cython_12, __pyx_n_s_get_deadline_from_context, 34, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__259)) __PYX_ERR(26, 34, __pyx_L1_error)

  /* "src/python/grpcio/grpc/_cython/_cygrpc/grpc_gevent.pyx.pxi":26
 * g_pool = None
 * 
 * def _spawn_greenlet(*args):             # <<<<<<<<<<<<<<
 *   greenlet = g_pool.spawn(*args)
 * 
 */
  __pyx_tuple__260 = PyTuple_Pack(2, __pyx_n_s_args, __pyx_n_s_greenlet); if (unlikely(!__pyx_tuple__260)) __PYX_ERR(6, 26, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_tuple__260);
  __Pyx_GIVEREF(__pyx_tuple__260);
  __pyx_codeobj__261 = (PyObject*)__Pyx_PyCode_New(0, 0, 2, 0, CO_OPTIMIZED|CO_NEWLOCALS|CO_VARARGS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__260, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_src_python_grpcio_grpc__cython_3, __pyx_n_s_spawn_greenlet, 26, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__261)) __PYX_ERR(6, 26, __pyx_L1_error)

  /* "src/python/grpcio/grpc/_cython/_cygrpc/grpc_gevent.pyx.pxi":68
 *   g_event.set()
 * 
 * def socket_connect_async(socket_wrapper, addr_tuple):             # <<<<<<<<<<<<<<
 *   socket_connect_async_cython(socket_wrapper, addr_tuple)
 * 
 */
  __pyx_tuple__262 = PyTuple_Pack(2, __pyx_n_s_socket_wrapper, __pyx_n_s_addr_tuple); if (unlikely(!__pyx_tuple__262)) __PYX_ERR(6, 68, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_tuple__262);
  __Pyx_GIVEREF(__pyx_tuple__262);
  __pyx_codeobj__263 = (PyObject*)__Pyx_PyCode_New(2, 0, 2, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__262, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_src_python_grpcio_grpc__cython_3, __pyx_n_s_socket_connect_async, 68, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__263)) __PYX_ERR(6, 68, __pyx_L1_error)

  /* "src/python/grpcio/grpc/_cython/_cygrpc/grpc_gevent.pyx.pxi":108
 *   socket_wrapper.close_cb(socket)
 * 
 * def socket_sendmsg(socket, write_bytes):             # <<<<<<<<<<<<<<
 *   try:
 *     return socket.sendmsg(write_bytes)
 */
  __pyx_tuple__264 = PyTuple_Pack(2, __pyx_n_s_socket, __pyx_n_s_write_bytes); if (unlikely(!__pyx_tuple__264)) __PYX_ERR(6, 108, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_tuple__264);
  __Pyx_GIVEREF(__pyx_tuple__264);
  __pyx_codeobj__265 = (PyObject*)__Pyx_PyCode_New(2, 0, 2, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__264, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_src_python_grpcio_grpc__cython_3, __pyx_n_s_socket_sendmsg, 108, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__265)) __PYX_ERR(6, 108, __pyx_L1_error)

  /* "src/python/grpcio/grpc/_cython/_cygrpc/grpc_gevent.pyx.pxi":133
 *   g_event.set()
 * 
 * def socket_write_async(socket_wrapper, write_bytes):             # <<<<<<<<<<<<<<
 *   socket_write_async_cython(socket_wrapper, write_bytes)
 * 
 */
  __pyx_tuple__266 = PyTuple_Pack(2, __pyx_n_s_socket_wrapper, __pyx_n_s_write_bytes); if (unlikely(!__pyx_tuple__266)) __PYX_ERR(6, 133, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_tuple__266);
  __Pyx_GIVEREF(__pyx_tuple__266);
  __pyx_codeobj__267 = (PyObject*)__Pyx_PyCode_New(2, 0, 2, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__266, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_src_python_grpcio_grpc__cython_3, __pyx_n_s_socket_write_async, 133, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__267)) __PYX_ERR(6, 133, __pyx_L1_error)

  /* "src/python/grpcio/grpc/_cython/_cygrpc/grpc_gevent.pyx.pxi":161
 *   g_event.set()
 * 
 * def socket_read_async(socket_wrapper):             # <<<<<<<<<<<<<<
 *   socket_read_async_cython(socket_wrapper)
 * 
 */
  __pyx_tuple__268 = PyTuple_Pack(1, __pyx_n_s_socket_wrapper); if (unlikely(!__pyx_tuple__268)) __PYX_ERR(6, 161, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_tuple__268);
  __Pyx_GIVEREF(__pyx_tuple__268);
  __pyx_codeobj__269 = (PyObject*)__Pyx_PyCode_New(1, 0, 1, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__268, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_src_python_grpcio_grpc__cython_3, __pyx_n_s_socket_read_async, 161, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__269)) __PYX_ERR(6, 161, __pyx_L1_error)

  /* "src/python/grpcio/grpc/_cython/_cygrpc/grpc_gevent.pyx.pxi":200
 *   return grpc_error_none()
 * 
 * def applysockopts(s):             # <<<<<<<<<<<<<<
 *   s.setsockopt(gevent_socket.SOL_SOCKET, gevent_socket.SO_REUSEADDR, 1)
 *   s.setsockopt(gevent_socket.IPPROTO_TCP, gevent_socket.TCP_NODELAY, True)
 */
  __pyx_tuple__270 = PyTuple_Pack(1, __pyx_n_s_s); if (unlikely(!__pyx_tuple__270)) __PYX_ERR(6, 200, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_tuple__270);
  __Pyx_GIVEREF(__pyx_tuple__270);
  __pyx_codeobj__271 = (PyObject*)__Pyx_PyCode_New(1, 0, 1, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__270, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_src_python_grpcio_grpc__cython_3, __pyx_n_s_applysockopts, 200, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__271)) __PYX_ERR(6, 200, __pyx_L1_error)

  /* "src/python/grpcio/grpc/_cython/_cygrpc/grpc_gevent.pyx.pxi":249
 *    g_event.set()
 * 
 * def socket_accept_async(s):             # <<<<<<<<<<<<<<
 *   accept_callback_cython(s)
 * 
 */
  __pyx_tuple__272 = PyTuple_Pack(1, __pyx_n_s_s); if (unlikely(!__pyx_tuple__272)) __PYX_ERR(6, 249, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_tuple__272);
  __Pyx_GIVEREF(__pyx_tuple__272);
  __pyx_codeobj__273 = (PyObject*)__Pyx_PyCode_New(1, 0, 1, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__272, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_src_python_grpcio_grpc__cython_3, __pyx_n_s_socket_accept_async, 249, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__273)) __PYX_ERR(6, 249, __pyx_L1_error)

  /* "src/python/grpcio/grpc/_cython/_cygrpc/grpc_gevent.pyx.pxi":284
 *   g_event.set()
 * 
 * def socket_resolve_async_python(resolve_wrapper):             # <<<<<<<<<<<<<<
 *   socket_resolve_async_cython(resolve_wrapper)
 * 
 */
  __pyx_tuple__274 = PyTuple_Pack(1, __pyx_n_s_resolve_wrapper); if (unlikely(!__pyx_tuple__274)) __PYX_ERR(6, 284, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_tuple__274);
  __Pyx_GIVEREF(__pyx_tuple__274);
  __pyx_codeobj__275 = (PyObject*)__Pyx_PyCode_New(1, 0, 1, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__274, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_src_python_grpcio_grpc__cython_3, __pyx_n_s_socket_resolve_async_python, 284, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__275)) __PYX_ERR(6, 284, __pyx_L1_error)

  /* "src/python/grpcio/grpc/_cython/_cygrpc/grpc_gevent.pyx.pxi":352
 *   g_event.set()
 * 
 * def _run_loop(timeout_ms):             # <<<<<<<<<<<<<<
 *   timeout = timeout_ms / 1000.0
 *   if timeout_ms > 0:
 */
  __pyx_tuple__276 = PyTuple_Pack(2, __pyx_n_s_timeout_ms, __pyx_n_s_timeout); if (unlikely(!__pyx_tuple__276)) __PYX_ERR(6, 352, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_tuple__276);
  __Pyx_GIVEREF(__pyx_tuple__276);
  __pyx_codeobj__277 = (PyObject*)__Pyx_PyCode_New(1, 0, 2, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__276, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_src_python_grpcio_grpc__cython_3, __pyx_n_s_run_loop, 352, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__277)) __PYX_ERR(6, 352, __pyx_L1_error)

  /* "src/python/grpcio/grpc/_cython/_cygrpc/grpc_gevent.pyx.pxi":379
 * cdef grpc_custom_poller_vtable gevent_pollset_vtable
 * 
 * def init_grpc_gevent():             # <<<<<<<<<<<<<<
 *   # Lazily import gevent
 *   global gevent_socket
 */
  __pyx_tuple__278 = PyTuple_Pack(3, __pyx_n_s_gevent, __pyx_n_s_cb_func, __pyx_n_s_cb_func); if (unlikely(!__pyx_tuple__278)) __PYX_ERR(6, 379, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_tuple__278);
  __Pyx_GIVEREF(__pyx_tuple__278);
  __pyx_codeobj__279 = (PyObject*)__Pyx_PyCode_New(0, 0, 3, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__278, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_src_python_grpcio_grpc__cython_3, __pyx_n_s_init_grpc_gevent, 379, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__279)) __PYX_ERR(6, 379, __pyx_L1_error)

  /* "src/python/grpcio/grpc/_cython/_cygrpc/thread.pyx.pxi":15
 * # limitations under the License.
 * 
 * def _contextvars_supported():             # <<<<<<<<<<<<<<
 *     """Determines if the contextvars module is supported.
 * 
 */
  __pyx_tuple__280 = PyTuple_Pack(1, __pyx_n_s_contextvars); if (unlikely(!__pyx_tuple__280)) __PYX_ERR(28, 15, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_tuple__280);
  __Pyx_GIVEREF(__pyx_tuple__280);
  __pyx_codeobj__281 = (PyObject*)__Pyx_PyCode_New(0, 0, 1, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__280, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_src_python_grpcio_grpc__cython_4, __pyx_n_s_contextvars_supported, 15, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__281)) __PYX_ERR(28, 15, __pyx_L1_error)

  /* "src/python/grpcio/grpc/_cython/_cygrpc/thread.pyx.pxi":33
 * 
 * 
 * def _run_with_context(target):             # <<<<<<<<<<<<<<
 *     """Runs a callable with contextvars propagated.
 * 
 */
  __pyx_tuple__282 = PyTuple_Pack(1, __pyx_n_s_target); if (unlikely(!__pyx_tuple__282)) __PYX_ERR(28, 33, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_tuple__282);
  __Pyx_GIVEREF(__pyx_tuple__282);
  __pyx_codeobj__283 = (PyObject*)__Pyx_PyCode_New(1, 0, 1, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__282, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_src_python_grpcio_grpc__cython_4, __pyx_n_s_run_with_context, 33, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__283)) __PYX_ERR(28, 33, __pyx_L1_error)

  /* "src/python/grpcio/grpc/_cython/_cygrpc/thread.pyx.pxi":50
 * if _contextvars_supported():
 *     import contextvars
 *     def _run_with_context(target):             # <<<<<<<<<<<<<<
 *         ctx = contextvars.copy_context()
 *         def _run(*args):
 */
  __pyx_tuple__284 = PyTuple_Pack(4, __pyx_n_s_target, __pyx_n_s_ctx, __pyx_n_s_run_2, __pyx_n_s_run_2); if (unlikely(!__pyx_tuple__284)) __PYX_ERR(28, 50, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_tuple__284);
  __Pyx_GIVEREF(__pyx_tuple__284);
  __pyx_codeobj__285 = (PyObject*)__Pyx_PyCode_New(1, 0, 4, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__284, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_src_python_grpcio_grpc__cython_4, __pyx_n_s_run_with_context, 50, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__285)) __PYX_ERR(28, 50, __pyx_L1_error)

  /* "src/python/grpcio/grpc/_cython/_cygrpc/thread.pyx.pxi":56
 *         return _run
 * else:
 *     def _run_with_context(target):             # <<<<<<<<<<<<<<
 *         def _run(*args):
 *             target(*args)
 */
  __pyx_tuple__286 = PyTuple_Pack(3, __pyx_n_s_target, __pyx_n_s_run_2, __pyx_n_s_run_2); if (unlikely(!__pyx_tuple__286)) __PYX_ERR(28, 56, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_tuple__286);
  __Pyx_GIVEREF(__pyx_tuple__286);
  __pyx_codeobj__287 = (PyObject*)__Pyx_PyCode_New(1, 0, 3, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__286, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_src_python_grpcio_grpc__cython_4, __pyx_n_s_run_with_context, 56, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__287)) __PYX_ERR(28, 56, __pyx_L1_error)

  /* "src/python/grpcio/grpc/_cython/_cygrpc/fork_posix.pyx.pxi":32
 * # This flag is also not supported for non-native IO manager.
 * _GRPC_ENABLE_FORK_SUPPORT = (
 *     os.environ.get('GRPC_ENABLE_FORK_SUPPORT', '0')             # <<<<<<<<<<<<<<
 *         .lower() in _TRUE_VALUES)
 * 
 */
  __pyx_tuple__288 = PyTuple_Pack(2, __pyx_n_s_GRPC_ENABLE_FORK_SUPPORT_2, __pyx_kp_s_0); if (unlikely(!__pyx_tuple__288)) __PYX_ERR(1, 32, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_tuple__288);
  __Pyx_GIVEREF(__pyx_tuple__288);

  /* "src/python/grpcio/grpc/_cython/_cygrpc/fork_posix.pyx.pxi":88
 * 
 * 
 * def fork_handlers_and_grpc_init():             # <<<<<<<<<<<<<<
 *     grpc_init()
 *     if _GRPC_ENABLE_FORK_SUPPORT:
 */
  __pyx_codeobj__289 = (PyObject*)__Pyx_PyCode_New(0, 0, 0, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_src_python_grpcio_grpc__cython_5, __pyx_n_s_fork_handlers_and_grpc_init, 88, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__289)) __PYX_ERR(1, 88, __pyx_L1_error)

  /* "src/python/grpcio/grpc/_cython/_cygrpc/fork_posix.pyx.pxi":99
 * 
 * 
 * class ForkManagedThread(object):             # <<<<<<<<<<<<<<
 *     def __init__(self, target, args=()):
 *         if _GRPC_ENABLE_FORK_SUPPORT:
 */
  __pyx_tuple__290 = PyTuple_Pack(1, __pyx_builtin_object); if (unlikely(!__pyx_tuple__290)) __PYX_ERR(1, 99, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_tuple__290);
  __Pyx_GIVEREF(__pyx_tuple__290);

  /* "src/python/grpcio/grpc/_cython/_cygrpc/fork_posix.pyx.pxi":100
 * 
 * class ForkManagedThread(object):
 *     def __init__(self, target, args=()):             # <<<<<<<<<<<<<<
 *         if _GRPC_ENABLE_FORK_SUPPORT:
 *             def managed_target(*args):
 */
  __pyx_tuple__291 = PyTuple_Pack(5, __pyx_n_s_self, __pyx_n_s_target, __pyx_n_s_args, __pyx_n_s_managed_target, __pyx_n_s_managed_target); if (unlikely(!__pyx_tuple__291)) __PYX_ERR(1, 100, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_tuple__291);
  __Pyx_GIVEREF(__pyx_tuple__291);
  __pyx_codeobj__292 = (PyObject*)__Pyx_PyCode_New(3, 0, 5, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__291, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_src_python_grpcio_grpc__cython_5, __pyx_n_s_init, 100, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__292)) __PYX_ERR(1, 100, __pyx_L1_error)
  __pyx_tuple__293 = PyTuple_Pack(1, ((PyObject*)__pyx_empty_tuple)); if (unlikely(!__pyx_tuple__293)) __PYX_ERR(1, 100, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_tuple__293);
  __Pyx_GIVEREF(__pyx_tuple__293);

  /* "src/python/grpcio/grpc/_cython/_cygrpc/fork_posix.pyx.pxi":111
 *             self._thread = threading.Thread(target=_run_with_context(target), args=args)
 * 
 *     def setDaemon(self, daemonic):             # <<<<<<<<<<<<<<
 *         self._thread.daemon = daemonic
 * 
 */
  __pyx_tuple__294 = PyTuple_Pack(2, __pyx_n_s_self, __pyx_n_s_daemonic); if (unlikely(!__pyx_tuple__294)) __PYX_ERR(1, 111, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_tuple__294);
  __Pyx_GIVEREF(__pyx_tuple__294);
  __pyx_codeobj__295 = (PyObject*)__Pyx_PyCode_New(2, 0, 2, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__294, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_src_python_grpcio_grpc__cython_5, __pyx_n_s_setDaemon, 111, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__295)) __PYX_ERR(1, 111, __pyx_L1_error)

  /* "src/python/grpcio/grpc/_cython/_cygrpc/fork_posix.pyx.pxi":114
 *         self._thread.daemon = daemonic
 * 
 *     def start(self):             # <<<<<<<<<<<<<<
 *         if _GRPC_ENABLE_FORK_SUPPORT:
 *             _fork_state.active_thread_count.increment()
 */
  __pyx_tuple__296 = PyTuple_Pack(1, __pyx_n_s_self); if (unlikely(!__pyx_tuple__296)) __PYX_ERR(1, 114, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_tuple__296);
  __Pyx_GIVEREF(__pyx_tuple__296);
  __pyx_codeobj__297 = (PyObject*)__Pyx_PyCode_New(1, 0, 1, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__296, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_src_python_grpcio_grpc__cython_5, __pyx_n_s_start, 114, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__297)) __PYX_ERR(1, 114, __pyx_L1_error)

  /* "src/python/grpcio/grpc/_cython/_cygrpc/fork_posix.pyx.pxi":119
 *         self._thread.start()
 * 
 *     def join(self):             # <<<<<<<<<<<<<<
 *         self._thread.join()
 * 
 */
  __pyx_tuple__298 = PyTuple_Pack(1, __pyx_n_s_self); if (unlikely(!__pyx_tuple__298)) __PYX_ERR(1, 119, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_tuple__298);
  __Pyx_GIVEREF(__pyx_tuple__298);
  __pyx_codeobj__299 = (PyObject*)__Pyx_PyCode_New(1, 0, 1, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__298, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_src_python_grpcio_grpc__cython_5, __pyx_n_s_join, 119, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__299)) __PYX_ERR(1, 119, __pyx_L1_error)

  /* "src/python/grpcio/grpc/_cython/_cygrpc/fork_posix.pyx.pxi":123
 * 
 * 
 * def block_if_fork_in_progress(postfork_state_to_reset=None):             # <<<<<<<<<<<<<<
 *     if _GRPC_ENABLE_FORK_SUPPORT:
 *         with _fork_state.fork_in_progress_condition:
 */
  __pyx_tuple__300 = PyTuple_Pack(1, __pyx_n_s_postfork_state_to_reset); if (unlikely(!__pyx_tuple__300)) __PYX_ERR(1, 123, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_tuple__300);
  __Pyx_GIVEREF(__pyx_tuple__300);
  __pyx_codeobj__301 = (PyObject*)__Pyx_PyCode_New(1, 0, 1, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__300, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_src_python_grpcio_grpc__cython_5, __pyx_n_s_block_if_fork_in_progress, 123, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__301)) __PYX_ERR(1, 123, __pyx_L1_error)

  /* "src/python/grpcio/grpc/_cython/_cygrpc/fork_posix.pyx.pxi":135
 * 
 * 
 * def enter_user_request_generator():             # <<<<<<<<<<<<<<
 *     if _GRPC_ENABLE_FORK_SUPPORT:
 *         _fork_state.active_thread_count.decrement()
 */
  __pyx_codeobj__302 = (PyObject*)__Pyx_PyCode_New(0, 0, 0, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_src_python_grpcio_grpc__cython_5, __pyx_n_s_enter_user_request_generator, 135, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__302)) __PYX_ERR(1, 135, __pyx_L1_error)

  /* "src/python/grpcio/grpc/_cython/_cygrpc/fork_posix.pyx.pxi":140
 * 
 * 
 * def return_from_user_request_generator():             # <<<<<<<<<<<<<<
 *     if _GRPC_ENABLE_FORK_SUPPORT:
 *         _fork_state.active_thread_count.increment()
 */
  __pyx_codeobj__303 = (PyObject*)__Pyx_PyCode_New(0, 0, 0, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_src_python_grpcio_grpc__cython_5, __pyx_n_s_return_from_user_request_generat, 140, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__303)) __PYX_ERR(1, 140, __pyx_L1_error)

  /* "src/python/grpcio/grpc/_cython/_cygrpc/fork_posix.pyx.pxi":146
 * 
 * 
 * def get_fork_epoch():             # <<<<<<<<<<<<<<
 *     return _fork_state.fork_epoch
 * 
 */
  __pyx_codeobj__304 = (PyObject*)__Pyx_PyCode_New(0, 0, 0, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_src_python_grpcio_grpc__cython_5, __pyx_n_s_get_fork_epoch, 146, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__304)) __PYX_ERR(1, 146, __pyx_L1_error)

  /* "src/python/grpcio/grpc/_cython/_cygrpc/fork_posix.pyx.pxi":150
 * 
 * 
 * def is_fork_support_enabled():             # <<<<<<<<<<<<<<
 *     return _GRPC_ENABLE_FORK_SUPPORT
 * 
 */
  __pyx_codeobj__305 = (PyObject*)__Pyx_PyCode_New(0, 0, 0, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_src_python_grpcio_grpc__cython_5, __pyx_n_s_is_fork_support_enabled, 150, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__305)) __PYX_ERR(1, 150, __pyx_L1_error)

  /* "src/python/grpcio/grpc/_cython/_cygrpc/fork_posix.pyx.pxi":154
 * 
 * 
 * def fork_register_channel(channel):             # <<<<<<<<<<<<<<
 *     if _GRPC_ENABLE_FORK_SUPPORT:
 *         _fork_state.channels.add(channel)
 */
  __pyx_tuple__306 = PyTuple_Pack(1, __pyx_n_s_channel); if (unlikely(!__pyx_tuple__306)) __PYX_ERR(1, 154, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_tuple__306);
  __Pyx_GIVEREF(__pyx_tuple__306);
  __pyx_codeobj__307 = (PyObject*)__Pyx_PyCode_New(1, 0, 1, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__306, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_src_python_grpcio_grpc__cython_5, __pyx_n_s_fork_register_channel, 154, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__307)) __PYX_ERR(1, 154, __pyx_L1_error)

  /* "src/python/grpcio/grpc/_cython/_cygrpc/fork_posix.pyx.pxi":159
 * 
 * 
 * def fork_unregister_channel(channel):             # <<<<<<<<<<<<<<
 *     if _GRPC_ENABLE_FORK_SUPPORT:
 *         _fork_state.channels.discard(channel)
 */
  __pyx_tuple__308 = PyTuple_Pack(1, __pyx_n_s_channel); if (unlikely(!__pyx_tuple__308)) __PYX_ERR(1, 159, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_tuple__308);
  __Pyx_GIVEREF(__pyx_tuple__308);
  __pyx_codeobj__309 = (PyObject*)__Pyx_PyCode_New(1, 0, 1, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__308, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_src_python_grpcio_grpc__cython_5, __pyx_n_s_fork_unregister_channel, 159, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__309)) __PYX_ERR(1, 159, __pyx_L1_error)

  /* "src/python/grpcio/grpc/_cython/_cygrpc/fork_posix.pyx.pxi":164
 * 
 * 
 * class _ActiveThreadCount(object):             # <<<<<<<<<<<<<<
 *     def __init__(self):
 *         self._num_active_threads = 0
 */
  __pyx_tuple__310 = PyTuple_Pack(1, __pyx_builtin_object); if (unlikely(!__pyx_tuple__310)) __PYX_ERR(1, 164, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_tuple__310);
  __Pyx_GIVEREF(__pyx_tuple__310);

  /* "src/python/grpcio/grpc/_cython/_cygrpc/fork_posix.pyx.pxi":165
 * 
 * class _ActiveThreadCount(object):
 *     def __init__(self):             # <<<<<<<<<<<<<<
 *         self._num_active_threads = 0
 *         self._condition = threading.Condition()
 */
  __pyx_tuple__311 = PyTuple_Pack(1, __pyx_n_s_self); if (unlikely(!__pyx_tuple__311)) __PYX_ERR(1, 165, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_tuple__311);
  __Pyx_GIVEREF(__pyx_tuple__311);
  __pyx_codeobj__312 = (PyObject*)__Pyx_PyCode_New(1, 0, 1, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__311, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_src_python_grpcio_grpc__cython_5, __pyx_n_s_init, 165, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__312)) __PYX_ERR(1, 165, __pyx_L1_error)

  /* "src/python/grpcio/grpc/_cython/_cygrpc/fork_posix.pyx.pxi":169
 *         self._condition = threading.Condition()
 * 
 *     def increment(self):             # <<<<<<<<<<<<<<
 *         with self._condition:
 *             self._num_active_threads += 1
 */
  __pyx_tuple__313 = PyTuple_Pack(1, __pyx_n_s_self); if (unlikely(!__pyx_tuple__313)) __PYX_ERR(1, 169, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_tuple__313);
  __Pyx_GIVEREF(__pyx_tuple__313);
  __pyx_codeobj__314 = (PyObject*)__Pyx_PyCode_New(1, 0, 1, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__313, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_src_python_grpcio_grpc__cython_5, __pyx_n_s_increment, 169, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__314)) __PYX_ERR(1, 169, __pyx_L1_error)

  /* "src/python/grpcio/grpc/_cython/_cygrpc/fork_posix.pyx.pxi":173
 *             self._num_active_threads += 1
 * 
 *     def decrement(self):             # <<<<<<<<<<<<<<
 *         with self._condition:
 *             self._num_active_threads -= 1
 */
  __pyx_tuple__315 = PyTuple_Pack(1, __pyx_n_s_self); if (unlikely(!__pyx_tuple__315)) __PYX_ERR(1, 173, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_tuple__315);
  __Pyx_GIVEREF(__pyx_tuple__315);
  __pyx_codeobj__316 = (PyObject*)__Pyx_PyCode_New(1, 0, 1, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__315, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_src_python_grpcio_grpc__cython_5, __pyx_n_s_decrement, 173, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__316)) __PYX_ERR(1, 173, __pyx_L1_error)

  /* "src/python/grpcio/grpc/_cython/_cygrpc/fork_posix.pyx.pxi":179
 *                 self._condition.notify_all()
 * 
 *     def await_zero_threads(self, timeout_secs):             # <<<<<<<<<<<<<<
 *         end_time = time.time() + timeout_secs
 *         wait_time = timeout_secs
 */
  __pyx_tuple__317 = PyTuple_Pack(4, __pyx_n_s_self, __pyx_n_s_timeout_secs, __pyx_n_s_end_time, __pyx_n_s_wait_time); if (unlikely(!__pyx_tuple__317)) __PYX_ERR(1, 179, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_tuple__317);
  __Pyx_GIVEREF(__pyx_tuple__317);
  __pyx_codeobj__318 = (PyObject*)__Pyx_PyCode_New(2, 0, 4, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__317, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_src_python_grpcio_grpc__cython_5, __pyx_n_s_await_zero_threads, 179, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__318)) __PYX_ERR(1, 179, __pyx_L1_error)

  /* "src/python/grpcio/grpc/_cython/_cygrpc/fork_posix.pyx.pxi":196
 * 
 * 
 * class _ForkState(object):             # <<<<<<<<<<<<<<
 *     def __init__(self):
 *         self.fork_in_progress_condition = threading.Condition()
 */
  __pyx_tuple__319 = PyTuple_Pack(1, __pyx_builtin_object); if (unlikely(!__pyx_tuple__319)) __PYX_ERR(1, 196, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_tuple__319);
  __Pyx_GIVEREF(__pyx_tuple__319);

  /* "src/python/grpcio/grpc/_cython/_cygrpc/fork_posix.pyx.pxi":197
 * 
 * class _ForkState(object):
 *     def __init__(self):             # <<<<<<<<<<<<<<
 *         self.fork_in_progress_condition = threading.Condition()
 *         self.fork_in_progress = False
 */
  __pyx_tuple__320 = PyTuple_Pack(1, __pyx_n_s_self); if (unlikely(!__pyx_tuple__320)) __PYX_ERR(1, 197, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_tuple__320);
  __Pyx_GIVEREF(__pyx_tuple__320);
  __pyx_codeobj__321 = (PyObject*)__Pyx_PyCode_New(1, 0, 1, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__320, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_src_python_grpcio_grpc__cython_5, __pyx_n_s_init, 197, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__321)) __PYX_ERR(1, 197, __pyx_L1_error)

  /* "src/python/grpcio/grpc/_cython/_cygrpc/aio/common.pyx.pxi":57
 * class _EOF:
 * 
 *     def __bool__(self):             # <<<<<<<<<<<<<<
 *         return False
 * 
 */
  __pyx_tuple__322 = PyTuple_Pack(1, __pyx_n_s_self); if (unlikely(!__pyx_tuple__322)) __PYX_ERR(7, 57, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_tuple__322);
  __Pyx_GIVEREF(__pyx_tuple__322);
  __pyx_codeobj__323 = (PyObject*)__Pyx_PyCode_New(1, 0, 1, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__322, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_src_python_grpcio_grpc__cython_6, __pyx_n_s_bool, 57, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__323)) __PYX_ERR(7, 57, __pyx_L1_error)

  /* "src/python/grpcio/grpc/_cython/_cygrpc/aio/common.pyx.pxi":60
 *         return False
 * 
 *     def __len__(self):             # <<<<<<<<<<<<<<
 *         return 0
 * 
 */
  __pyx_tuple__324 = PyTuple_Pack(1, __pyx_n_s_self); if (unlikely(!__pyx_tuple__324)) __PYX_ERR(7, 60, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_tuple__324);
  __Pyx_GIVEREF(__pyx_tuple__324);
  __pyx_codeobj__325 = (PyObject*)__Pyx_PyCode_New(1, 0, 1, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__324, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_src_python_grpcio_grpc__cython_6, __pyx_n_s_len, 60, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__325)) __PYX_ERR(7, 60, __pyx_L1_error)

  /* "src/python/grpcio/grpc/_cython/_cygrpc/aio/common.pyx.pxi":63
 *         return 0
 * 
 *     def _repr(self) -> str:             # <<<<<<<<<<<<<<
 *         return '<grpc.aio.EOF>'
 * 
 */
  __pyx_tuple__326 = PyTuple_Pack(1, __pyx_n_s_self); if (unlikely(!__pyx_tuple__326)) __PYX_ERR(7, 63, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_tuple__326);
  __Pyx_GIVEREF(__pyx_tuple__326);
  __pyx_codeobj__327 = (PyObject*)__Pyx_PyCode_New(1, 0, 1, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__326, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_src_python_grpcio_grpc__cython_6, __pyx_n_s_repr, 63, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__327)) __PYX_ERR(7, 63, __pyx_L1_error)

  /* "src/python/grpcio/grpc/_cython/_cygrpc/aio/common.pyx.pxi":66
 *         return '<grpc.aio.EOF>'
 * 
 *     def __repr__(self) -> str:             # <<<<<<<<<<<<<<
 *         return self._repr()
 * 
 */
  __pyx_tuple__328 = PyTuple_Pack(1, __pyx_n_s_self); if (unlikely(!__pyx_tuple__328)) __PYX_ERR(7, 66, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_tuple__328);
  __Pyx_GIVEREF(__pyx_tuple__328);
  __pyx_codeobj__329 = (PyObject*)__Pyx_PyCode_New(1, 0, 1, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__328, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_src_python_grpcio_grpc__cython_6, __pyx_n_s_repr_2, 66, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__329)) __PYX_ERR(7, 66, __pyx_L1_error)

  /* "src/python/grpcio/grpc/_cython/_cygrpc/aio/common.pyx.pxi":69
 *         return self._repr()
 * 
 *     def __str__(self) -> str:             # <<<<<<<<<<<<<<
 *         return self._repr()
 * 
 */
  __pyx_tuple__330 = PyTuple_Pack(1, __pyx_n_s_self); if (unlikely(!__pyx_tuple__330)) __PYX_ERR(7, 69, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_tuple__330);
  __Pyx_GIVEREF(__pyx_tuple__330);
  __pyx_codeobj__331 = (PyObject*)__Pyx_PyCode_New(1, 0, 1, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__330, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_src_python_grpcio_grpc__cython_6, __pyx_n_s_str_2, 69, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__331)) __PYX_ERR(7, 69, __pyx_L1_error)

  /* "src/python/grpcio/grpc/_cython/_cygrpc/aio/common.pyx.pxi":106
 * 
 * 
 * def schedule_coro_threadsafe(object coro, object loop):             # <<<<<<<<<<<<<<
 *     try:
 *         return loop.create_task(coro)
 */
  __pyx_tuple__332 = PyTuple_Pack(3, __pyx_n_s_coro, __pyx_n_s_loop, __pyx_n_s_runtime_error); if (unlikely(!__pyx_tuple__332)) __PYX_ERR(7, 106, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_tuple__332);
  __Pyx_GIVEREF(__pyx_tuple__332);
  __pyx_codeobj__333 = (PyObject*)__Pyx_PyCode_New(2, 0, 3, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__332, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_src_python_grpcio_grpc__cython_6, __pyx_n_s_schedule_coro_threadsafe, 106, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__333)) __PYX_ERR(7, 106, __pyx_L1_error)

  /* "src/python/grpcio/grpc/_cython/_cygrpc/aio/common.pyx.pxi":119
 * 
 * 
 * def async_generator_to_generator(object agen, object loop):             # <<<<<<<<<<<<<<
 *     """Converts an async generator into generator."""
 *     try:
 */
  __pyx_tuple__334 = PyTuple_Pack(4, __pyx_n_s_agen, __pyx_n_s_loop, __pyx_n_s_future, __pyx_n_s_response); if (unlikely(!__pyx_tuple__334)) __PYX_ERR(7, 119, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_tuple__334);
  __Pyx_GIVEREF(__pyx_tuple__334);
  __pyx_codeobj__138 = (PyObject*)__Pyx_PyCode_New(2, 0, 4, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__334, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_src_python_grpcio_grpc__cython_6, __pyx_n_s_async_generator_to_generator, 119, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__138)) __PYX_ERR(7, 119, __pyx_L1_error)

  /* "src/python/grpcio/grpc/_cython/_cygrpc/aio/common.pyx.pxi":137
 * 
 * 
 * async def generator_to_async_generator(object gen, object loop, object thread_pool):             # <<<<<<<<<<<<<<
 *     """Converts a generator into async generator.
 * 
 */
  __pyx_tuple__335 = PyTuple_Pack(8, __pyx_n_s_gen, __pyx_n_s_loop, __pyx_n_s_thread_pool, __pyx_n_s_queue, __pyx_n_s_yield_to_queue, __pyx_n_s_yield_to_queue, __pyx_n_s_future, __pyx_n_s_response); if (unlikely(!__pyx_tuple__335)) __PYX_ERR(7, 137, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_tuple__335);
  __Pyx_GIVEREF(__pyx_tuple__335);
  __pyx_codeobj__139 = (PyObject*)__Pyx_PyCode_New(3, 0, 8, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__335, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_src_python_grpcio_grpc__cython_6, __pyx_n_s_generator_to_async_generator, 137, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__139)) __PYX_ERR(7, 137, __pyx_L1_error)

  /* "src/python/grpcio/grpc/_cython/_cygrpc/aio/common.pyx.pxi":173
 * 
 * if PY_MAJOR_VERSION >= 3 and PY_MINOR_VERSION >= 7:
 *     def get_working_loop():             # <<<<<<<<<<<<<<
 *         """Returns a running event loop.
 * 
 */
  __pyx_codeobj__336 = (PyObject*)__Pyx_PyCode_New(0, 0, 0, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_src_python_grpcio_grpc__cython_6, __pyx_n_s_get_working_loop, 173, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__336)) __PYX_ERR(7, 173, __pyx_L1_error)

  /* "src/python/grpcio/grpc/_cython/_cygrpc/aio/common.pyx.pxi":184
 *             return asyncio.get_event_loop()
 * else:
 *     def get_working_loop():             # <<<<<<<<<<<<<<
 *         """Returns a running event loop."""
 *         return asyncio.get_event_loop()
 */
  __pyx_codeobj__337 = (PyObject*)__Pyx_PyCode_New(0, 0, 0, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_src_python_grpcio_grpc__cython_6, __pyx_n_s_get_working_loop, 184, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__337)) __PYX_ERR(7, 184, __pyx_L1_error)

  /* "src/python/grpcio/grpc/_cython/_cygrpc/aio/completion_queue.pyx.pxi":34
 * 
 * 
 * def _handle_callback_wrapper(CallbackWrapper callback_wrapper, int success):             # <<<<<<<<<<<<<<
 *     CallbackWrapper.functor_run(callback_wrapper.c_functor(), success)
 * 
 */
  __pyx_tuple__338 = PyTuple_Pack(2, __pyx_n_s_callback_wrapper, __pyx_n_s_success); if (unlikely(!__pyx_tuple__338)) __PYX_ERR(8, 34, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_tuple__338);
  __Pyx_GIVEREF(__pyx_tuple__338);
  __pyx_codeobj__339 = (PyObject*)__Pyx_PyCode_New(2, 0, 2, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__338, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_src_python_grpcio_grpc__cython_13, __pyx_n_s_handle_callback_wrapper, 34, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__339)) __PYX_ERR(8, 34, __pyx_L1_error)

  /* "src/python/grpcio/grpc/_cython/_cygrpc/aio/callback_common.pyx.pxi":77
 * 
 * 
 * async def execute_batch(GrpcCallWrapper grpc_call_wrapper,             # <<<<<<<<<<<<<<
 *                                tuple operations,
 *                                object loop):
 */
  __pyx_tuple__340 = PyTuple_Pack(8, __pyx_n_s_grpc_call_wrapper, __pyx_n_s_operations, __pyx_n_s_loop, __pyx_n_s_batch_operation_tag, __pyx_n_s_future, __pyx_n_s_wrapper, __pyx_n_s_error, __pyx_n_s_c_event); if (unlikely(!__pyx_tuple__340)) __PYX_ERR(31, 77, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_tuple__340);
  __Pyx_GIVEREF(__pyx_tuple__340);
  __pyx_codeobj__155 = (PyObject*)__Pyx_PyCode_New(3, 0, 8, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__340, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_src_python_grpcio_grpc__cython_14, __pyx_n_s_execute_batch, 77, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__155)) __PYX_ERR(31, 77, __pyx_L1_error)

  /* "src/python/grpcio/grpc/_cython/_cygrpc/aio/callback_common.pyx.pxi":114
 * 
 * 
 * async def _receive_message(GrpcCallWrapper grpc_call_wrapper,             # <<<<<<<<<<<<<<
 *                            object loop):
 *     """Retrives parsed messages from Core.
 */
  __pyx_tuple__341 = PyTuple_Pack(5, __pyx_n_s_grpc_call_wrapper, __pyx_n_s_loop, __pyx_n_s_receive_op, __pyx_n_s_ops, __pyx_n_s_e); if (unlikely(!__pyx_tuple__341)) __PYX_ERR(31, 114, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_tuple__341);
  __Pyx_GIVEREF(__pyx_tuple__341);
  __pyx_codeobj__156 = (PyObject*)__Pyx_PyCode_New(2, 0, 5, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__341, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_src_python_grpcio_grpc__cython_14, __pyx_n_s_receive_message, 114, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__156)) __PYX_ERR(31, 114, __pyx_L1_error)

  /* "src/python/grpcio/grpc/_cython/_cygrpc/aio/callback_common.pyx.pxi":138
 * 
 * 
 * async def _send_message(GrpcCallWrapper grpc_call_wrapper,             # <<<<<<<<<<<<<<
 *                         bytes message,
 *                         Operation send_initial_metadata_op,
 */
  __pyx_tuple__342 = PyTuple_Pack(7, __pyx_n_s_grpc_call_wrapper, __pyx_n_s_message, __pyx_n_s_send_initial_metadata_op, __pyx_n_s_write_flag, __pyx_n_s_loop, __pyx_n_s_op, __pyx_n_s_ops); if (unlikely(!__pyx_tuple__342)) __PYX_ERR(31, 138, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_tuple__342);
  __Pyx_GIVEREF(__pyx_tuple__342);
  __pyx_codeobj__157 = (PyObject*)__Pyx_PyCode_New(5, 0, 7, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__342, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_src_python_grpcio_grpc__cython_14, __pyx_n_s_send_message, 138, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__157)) __PYX_ERR(31, 138, __pyx_L1_error)

  /* "src/python/grpcio/grpc/_cython/_cygrpc/aio/callback_common.pyx.pxi":150
 * 
 * 
 * async def _send_initial_metadata(GrpcCallWrapper grpc_call_wrapper,             # <<<<<<<<<<<<<<
 *                                  tuple metadata,
 *                                  int flags,
 */
  __pyx_tuple__343 = PyTuple_Pack(6, __pyx_n_s_grpc_call_wrapper, __pyx_n_s_metadata, __pyx_n_s_flags, __pyx_n_s_loop, __pyx_n_s_op, __pyx_n_s_ops); if (unlikely(!__pyx_tuple__343)) __PYX_ERR(31, 150, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_tuple__343);
  __Pyx_GIVEREF(__pyx_tuple__343);
  __pyx_codeobj__158 = (PyObject*)__Pyx_PyCode_New(4, 0, 6, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__343, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_src_python_grpcio_grpc__cython_14, __pyx_n_s_send_initial_metadata, 150, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__158)) __PYX_ERR(31, 150, __pyx_L1_error)

  /* "src/python/grpcio/grpc/_cython/_cygrpc/aio/callback_common.pyx.pxi":161
 * 
 * 
 * async def _receive_initial_metadata(GrpcCallWrapper grpc_call_wrapper,             # <<<<<<<<<<<<<<
 *                                     object loop):
 *     cdef ReceiveInitialMetadataOperation op = ReceiveInitialMetadataOperation(_EMPTY_FLAGS)
 */
  __pyx_tuple__344 = PyTuple_Pack(4, __pyx_n_s_grpc_call_wrapper, __pyx_n_s_loop, __pyx_n_s_op, __pyx_n_s_ops); if (unlikely(!__pyx_tuple__344)) __PYX_ERR(31, 161, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_tuple__344);
  __Pyx_GIVEREF(__pyx_tuple__344);
  __pyx_codeobj__159 = (PyObject*)__Pyx_PyCode_New(2, 0, 4, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__344, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_src_python_grpcio_grpc__cython_14, __pyx_n_s_receive_initial_metadata, 161, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__159)) __PYX_ERR(31, 161, __pyx_L1_error)

  /* "src/python/grpcio/grpc/_cython/_cygrpc/aio/callback_common.pyx.pxi":168
 *     return op.initial_metadata()
 * 
 * async def _send_error_status_from_server(GrpcCallWrapper grpc_call_wrapper,             # <<<<<<<<<<<<<<
 *                                          grpc_status_code code,
 *                                          str details,
 */
  __pyx_tuple__345 = PyTuple_Pack(8, __pyx_n_s_grpc_call_wrapper, __pyx_n_s_code, __pyx_n_s_details, __pyx_n_s_trailing_metadata, __pyx_n_s_send_initial_metadata_op, __pyx_n_s_loop, __pyx_n_s_op, __pyx_n_s_ops); if (unlikely(!__pyx_tuple__345)) __PYX_ERR(31, 168, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_tuple__345);
  __Pyx_GIVEREF(__pyx_tuple__345);
  __pyx_codeobj__160 = (PyObject*)__Pyx_PyCode_New(6, 0, 8, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__345, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_src_python_grpcio_grpc__cython_14, __pyx_n_s_send_error_status_from_server, 168, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__160)) __PYX_ERR(31, 168, __pyx_L1_error)

  /* "src/python/grpcio/grpc/_cython/_cygrpc/aio/grpc_aio.pyx.pxi":17
 * import enum
 * 
 * cdef str _GRPC_ASYNCIO_ENGINE = os.environ.get('GRPC_ASYNCIO_ENGINE', 'poller').upper()             # <<<<<<<<<<<<<<
 * cdef _AioState _global_aio_state = _AioState()
 * 
 */
  __pyx_tuple__346 = PyTuple_Pack(2, __pyx_n_s_GRPC_ASYNCIO_ENGINE, __pyx_n_s_poller); if (unlikely(!__pyx_tuple__346)) __PYX_ERR(32, 17, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_tuple__346);
  __Pyx_GIVEREF(__pyx_tuple__346);

  /* "src/python/grpcio/grpc/_cython/_cygrpc/aio/grpc_aio.pyx.pxi":68
 * 
 * 
 * def _grpc_shutdown_wrapper(_):             # <<<<<<<<<<<<<<
 *     """A thin Python wrapper of Core's shutdown function.
 * 
 */
  __pyx_tuple__348 = PyTuple_Pack(1, __pyx_n_s__347); if (unlikely(!__pyx_tuple__348)) __PYX_ERR(32, 68, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_tuple__348);
  __Pyx_GIVEREF(__pyx_tuple__348);
  __pyx_codeobj__349 = (PyObject*)__Pyx_PyCode_New(1, 0, 1, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__348, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_src_python_grpcio_grpc__cython_15, __pyx_n_s_grpc_shutdown_wrapper, 68, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__349)) __PYX_ERR(32, 68, __pyx_L1_error)

  /* "src/python/grpcio/grpc/_cython/_cygrpc/aio/server.pyx.pxi":333
 * 
 * 
 * async def _run_interceptor(object interceptors, object query_handler,             # <<<<<<<<<<<<<<
 *                            object handler_call_details):
 *     interceptor = next(interceptors, None)
 */
  __pyx_tuple__350 = PyTuple_Pack(5, __pyx_n_s_interceptors, __pyx_n_s_query_handler, __pyx_n_s_handler_call_details, __pyx_n_s_interceptor, __pyx_n_s_continuation); if (unlikely(!__pyx_tuple__350)) __PYX_ERR(10, 333, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_tuple__350);
  __Pyx_GIVEREF(__pyx_tuple__350);
  __pyx_codeobj__181 = (PyObject*)__Pyx_PyCode_New(3, 0, 5, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__350, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_src_python_grpcio_grpc__cython_7, __pyx_n_s_run_interceptor, 333, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__181)) __PYX_ERR(10, 333, __pyx_L1_error)

  /* "src/python/grpcio/grpc/_cython/_cygrpc/aio/server.pyx.pxi":344
 * 
 * 
 * def _is_async_handler(object handler):             # <<<<<<<<<<<<<<
 *     """Inspect if a method handler is async or sync."""
 *     return inspect.isawaitable(handler) or inspect.iscoroutinefunction(handler) or inspect.isasyncgenfunction(handler)
 */
  __pyx_tuple__351 = PyTuple_Pack(1, __pyx_n_s_handler); if (unlikely(!__pyx_tuple__351)) __PYX_ERR(10, 344, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_tuple__351);
  __Pyx_GIVEREF(__pyx_tuple__351);
  __pyx_codeobj__352 = (PyObject*)__Pyx_PyCode_New(1, 0, 1, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__351, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_src_python_grpcio_grpc__cython_7, __pyx_n_s_is_async_handler, 344, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__352)) __PYX_ERR(10, 344, __pyx_L1_error)

  /* "src/python/grpcio/grpc/_cython/_cygrpc/aio/server.pyx.pxi":349
 * 
 * 
 * async def _find_method_handler(str method, tuple metadata, list generic_handlers,             # <<<<<<<<<<<<<<
 *                           tuple interceptors):
 *     def query_handlers(handler_call_details):
 */
  __pyx_tuple__353 = PyTuple_Pack(7, __pyx_n_s_method, __pyx_n_s_metadata, __pyx_n_s_generic_handlers, __pyx_n_s_interceptors, __pyx_n_s_query_handlers, __pyx_n_s_query_handlers, __pyx_n_s_handler_call_details); if (unlikely(!__pyx_tuple__353)) __PYX_ERR(10, 349, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_tuple__353);
  __Pyx_GIVEREF(__pyx_tuple__353);
  __pyx_codeobj__182 = (PyObject*)__Pyx_PyCode_New(4, 0, 7, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__353, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_src_python_grpcio_grpc__cython_7, __pyx_n_s_find_method_handler, 349, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__182)) __PYX_ERR(10, 349, __pyx_L1_error)

  /* "src/python/grpcio/grpc/_cython/_cygrpc/aio/server.pyx.pxi":368
 * 
 * 
 * async def _finish_handler_with_unary_response(RPCState rpc_state,             # <<<<<<<<<<<<<<
 *                                               object unary_handler,
 *                                               object request,
 */
  __pyx_tuple__354 = PyTuple_Pack(11, __pyx_n_s_rpc_state, __pyx_n_s_unary_handler, __pyx_n_s_request, __pyx_n_s_servicer_context, __pyx_n_s_response_serializer, __pyx_n_s_loop, __pyx_n_s_response_message, __pyx_n_s_sync_servicer_context, __pyx_n_s_callback, __pyx_n_s_response_raw, __pyx_n_s_finish_ops); if (unlikely(!__pyx_tuple__354)) __PYX_ERR(10, 368, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_tuple__354);
  __Pyx_GIVEREF(__pyx_tuple__354);
  __pyx_codeobj__185 = (PyObject*)__Pyx_PyCode_New(6, 0, 11, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__354, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_src_python_grpcio_grpc__cython_7, __pyx_n_s_finish_handler_with_unary_respo, 368, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__185)) __PYX_ERR(10, 368, __pyx_L1_error)

  /* "src/python/grpcio/grpc/_cython/_cygrpc/aio/server.pyx.pxi":437
 * 
 * 
 * async def _finish_handler_with_stream_responses(RPCState rpc_state,             # <<<<<<<<<<<<<<
 *                                                 object stream_handler,
 *                                                 object request,
 */
  __pyx_tuple__355 = PyTuple_Pack(11, __pyx_n_s_rpc_state, __pyx_n_s_stream_handler, __pyx_n_s_request, __pyx_n_s_servicer_context, __pyx_n_s_loop, __pyx_n_s_async_response_generator, __pyx_n_s_response_message, __pyx_n_s_sync_servicer_context, __pyx_n_s_gen, __pyx_n_s_op, __pyx_n_s_finish_ops); if (unlikely(!__pyx_tuple__355)) __PYX_ERR(10, 437, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_tuple__355);
  __Pyx_GIVEREF(__pyx_tuple__355);
  __pyx_codeobj__186 = (PyObject*)__Pyx_PyCode_New(5, 0, 11, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__355, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_src_python_grpcio_grpc__cython_7, __pyx_n_s_finish_handler_with_stream_resp, 437, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__186)) __PYX_ERR(10, 437, __pyx_L1_error)

  /* "src/python/grpcio/grpc/_cython/_cygrpc/aio/server.pyx.pxi":505
 * 
 * 
 * async def _handle_unary_unary_rpc(object method_handler,             # <<<<<<<<<<<<<<
 *                                   RPCState rpc_state,
 *                                   object loop):
 */
  __pyx_tuple__356 = PyTuple_Pack(6, __pyx_n_s_method_handler, __pyx_n_s_rpc_state, __pyx_n_s_loop, __pyx_n_s_request_raw, __pyx_n_s_request_message, __pyx_n_s_servicer_context); if (unlikely(!__pyx_tuple__356)) __PYX_ERR(10, 505, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_tuple__356);
  __Pyx_GIVEREF(__pyx_tuple__356);
  __pyx_codeobj__187 = (PyObject*)__Pyx_PyCode_New(3, 0, 6, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__356, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_src_python_grpcio_grpc__cython_7, __pyx_n_s_handle_unary_unary_rpc, 505, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__187)) __PYX_ERR(10, 505, __pyx_L1_error)

  /* "src/python/grpcio/grpc/_cython/_cygrpc/aio/server.pyx.pxi":539
 * 
 * 
 * async def _handle_unary_stream_rpc(object method_handler,             # <<<<<<<<<<<<<<
 *                                    RPCState rpc_state,
 *                                    object loop):
 */
  __pyx_tuple__357 = PyTuple_Pack(6, __pyx_n_s_method_handler, __pyx_n_s_rpc_state, __pyx_n_s_loop, __pyx_n_s_request_raw, __pyx_n_s_request_message, __pyx_n_s_servicer_context); if (unlikely(!__pyx_tuple__357)) __PYX_ERR(10, 539, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_tuple__357);
  __Pyx_GIVEREF(__pyx_tuple__357);
  __pyx_codeobj__188 = (PyObject*)__Pyx_PyCode_New(3, 0, 6, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__357, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_src_python_grpcio_grpc__cython_7, __pyx_n_s_handle_unary_stream_rpc, 539, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__188)) __PYX_ERR(10, 539, __pyx_L1_error)

  /* "src/python/grpcio/grpc/_cython/_cygrpc/aio/server.pyx.pxi":598
 * 
 * 
 * async def _handle_stream_unary_rpc(object method_handler,             # <<<<<<<<<<<<<<
 *                                    RPCState rpc_state,
 *                                    object loop):
 */
  __pyx_tuple__358 = PyTuple_Pack(5, __pyx_n_s_method_handler, __pyx_n_s_rpc_state, __pyx_n_s_loop, __pyx_n_s_servicer_context, __pyx_n_s_request_iterator); if (unlikely(!__pyx_tuple__358)) __PYX_ERR(10, 598, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_tuple__358);
  __Pyx_GIVEREF(__pyx_tuple__358);
  __pyx_codeobj__191 = (PyObject*)__Pyx_PyCode_New(3, 0, 5, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__358, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_src_python_grpcio_grpc__cython_7, __pyx_n_s_handle_stream_unary_rpc, 598, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__191)) __PYX_ERR(10, 598, __pyx_L1_error)

  /* "src/python/grpcio/grpc/_cython/_cygrpc/aio/server.pyx.pxi":630
 * 
 * 
 * async def _handle_stream_stream_rpc(object method_handler,             # <<<<<<<<<<<<<<
 *                                     RPCState rpc_state,
 *                                     object loop):
 */
  __pyx_tuple__359 = PyTuple_Pack(5, __pyx_n_s_method_handler, __pyx_n_s_rpc_state, __pyx_n_s_loop, __pyx_n_s_servicer_context, __pyx_n_s_request_iterator); if (unlikely(!__pyx_tuple__359)) __PYX_ERR(10, 630, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_tuple__359);
  __Pyx_GIVEREF(__pyx_tuple__359);
  __pyx_codeobj__192 = (PyObject*)__Pyx_PyCode_New(3, 0, 5, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__359, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_src_python_grpcio_grpc__cython_7, __pyx_n_s_handle_stream_stream_rpc, 630, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__192)) __PYX_ERR(10, 630, __pyx_L1_error)

  /* "src/python/grpcio/grpc/_cython/_cygrpc/aio/server.pyx.pxi":661
 * 
 * 
 * async def _handle_exceptions(RPCState rpc_state, object rpc_coro, object loop):             # <<<<<<<<<<<<<<
 *     try:
 *         try:
 */
  __pyx_tuple__360 = PyTuple_Pack(5, __pyx_n_s_rpc_state, __pyx_n_s_rpc_coro, __pyx_n_s_loop, __pyx_n_s_e, __pyx_n_s_status_code); if (unlikely(!__pyx_tuple__360)) __PYX_ERR(10, 661, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_tuple__360);
  __Pyx_GIVEREF(__pyx_tuple__360);
  __pyx_codeobj__193 = (PyObject*)__Pyx_PyCode_New(3, 0, 5, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__360, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_src_python_grpcio_grpc__cython_7, __pyx_n_s_handle_exceptions, 661, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__193)) __PYX_ERR(10, 661, __pyx_L1_error)

  /* "src/python/grpcio/grpc/_cython/_cygrpc/aio/server.pyx.pxi":710
 * 
 * 
 * async def _handle_cancellation_from_core(object rpc_task,             # <<<<<<<<<<<<<<
 *                                          RPCState rpc_state,
 *                                          object loop):
 */
  __pyx_tuple__361 = PyTuple_Pack(5, __pyx_n_s_rpc_task, __pyx_n_s_rpc_state, __pyx_n_s_loop, __pyx_n_s_op, __pyx_n_s_ops); if (unlikely(!__pyx_tuple__361)) __PYX_ERR(10, 710, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_tuple__361);
  __Pyx_GIVEREF(__pyx_tuple__361);
  __pyx_codeobj__194 = (PyObject*)__Pyx_PyCode_New(3, 0, 5, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__361, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_src_python_grpcio_grpc__cython_7, __pyx_n_s_handle_cancellation_from_core, 710, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__194)) __PYX_ERR(10, 710, __pyx_L1_error)

  /* "src/python/grpcio/grpc/_cython/_cygrpc/aio/server.pyx.pxi":727
 * 
 * 
 * async def _schedule_rpc_coro(object rpc_coro,             # <<<<<<<<<<<<<<
 *                              RPCState rpc_state,
 *                              object loop):
 */
  __pyx_tuple__362 = PyTuple_Pack(4, __pyx_n_s_rpc_coro, __pyx_n_s_rpc_state, __pyx_n_s_loop, __pyx_n_s_rpc_task); if (unlikely(!__pyx_tuple__362)) __PYX_ERR(10, 727, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_tuple__362);
  __Pyx_GIVEREF(__pyx_tuple__362);
  __pyx_codeobj__195 = (PyObject*)__Pyx_PyCode_New(3, 0, 4, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__362, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_src_python_grpcio_grpc__cython_7, __pyx_n_s_schedule_rpc_coro, 727, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__195)) __PYX_ERR(10, 727, __pyx_L1_error)

  /* "src/python/grpcio/grpc/_cython/_cygrpc/aio/server.pyx.pxi":739
 * 
 * 
 * async def _handle_rpc(list generic_handlers, tuple interceptors,             # <<<<<<<<<<<<<<
 *                       RPCState rpc_state, object loop):
 *     cdef object method_handler
 */
  __pyx_tuple__363 = PyTuple_Pack(5, __pyx_n_s_generic_handlers, __pyx_n_s_interceptors, __pyx_n_s_rpc_state, __pyx_n_s_loop, __pyx_n_s_method_handler); if (unlikely(!__pyx_tuple__363)) __PYX_ERR(10, 739, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_tuple__363);
  __Pyx_GIVEREF(__pyx_tuple__363);
  __pyx_codeobj__196 = (PyObject*)__Pyx_PyCode_New(4, 0, 5, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__363, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_src_python_grpcio_grpc__cython_7, __pyx_n_s_handle_rpc, 739, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__196)) __PYX_ERR(10, 739, __pyx_L1_error)

  /* "(tree fragment)":1
 * def __pyx_unpickle_ChannelCredentials(__pyx_type, long __pyx_checksum, __pyx_state):             # <<<<<<<<<<<<<<
 *     cdef object __pyx_PickleError
 *     cdef object __pyx_result
 */
  __pyx_tuple__364 = PyTuple_Pack(5, __pyx_n_s_pyx_type, __pyx_n_s_pyx_checksum, __pyx_n_s_pyx_state, __pyx_n_s_pyx_PickleError, __pyx_n_s_pyx_result); if (unlikely(!__pyx_tuple__364)) __PYX_ERR(11, 1, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_tuple__364);
  __Pyx_GIVEREF(__pyx_tuple__364);
  __pyx_codeobj__365 = (PyObject*)__Pyx_PyCode_New(3, 0, 5, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__364, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_stringsource, __pyx_n_s_pyx_unpickle_ChannelCredential, 1, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__365)) __PYX_ERR(11, 1, __pyx_L1_error)
  __pyx_tuple__366 = PyTuple_Pack(5, __pyx_n_s_pyx_type, __pyx_n_s_pyx_checksum, __pyx_n_s_pyx_state, __pyx_n_s_pyx_PickleError, __pyx_n_s_pyx_result); if (unlikely(!__pyx_tuple__366)) __PYX_ERR(11, 1, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_tuple__366);
  __Pyx_GIVEREF(__pyx_tuple__366);
  __pyx_codeobj__367 = (PyObject*)__Pyx_PyCode_New(3, 0, 5, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__366, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_stringsource, __pyx_n_s_pyx_unpickle_InsecureChannelCr, 1, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__367)) __PYX_ERR(11, 1, __pyx_L1_error)
  __pyx_tuple__368 = PyTuple_Pack(5, __pyx_n_s_pyx_type, __pyx_n_s_pyx_checksum, __pyx_n_s_pyx_state, __pyx_n_s_pyx_PickleError, __pyx_n_s_pyx_result); if (unlikely(!__pyx_tuple__368)) __PYX_ERR(11, 1, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_tuple__368);
  __Pyx_GIVEREF(__pyx_tuple__368);
  __pyx_codeobj__369 = (PyObject*)__Pyx_PyCode_New(3, 0, 5, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__368, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_stringsource, __pyx_n_s_pyx_unpickle__Tag, 1, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__369)) __PYX_ERR(11, 1, __pyx_L1_error)
  __pyx_tuple__370 = PyTuple_Pack(5, __pyx_n_s_pyx_type, __pyx_n_s_pyx_checksum, __pyx_n_s_pyx_state, __pyx_n_s_pyx_PickleError, __pyx_n_s_pyx_result); if (unlikely(!__pyx_tuple__370)) __PYX_ERR(11, 1, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_tuple__370);
  __Pyx_GIVEREF(__pyx_tuple__370);
  __pyx_codeobj__371 = (PyObject*)__Pyx_PyCode_New(3, 0, 5, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__370, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_stringsource, __pyx_n_s_pyx_unpickle_CensusContext, 1, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__371)) __PYX_ERR(11, 1, __pyx_L1_error)
  __pyx_tuple__372 = PyTuple_Pack(5, __pyx_n_s_pyx_type, __pyx_n_s_pyx_checksum, __pyx_n_s_pyx_state, __pyx_n_s_pyx_PickleError, __pyx_n_s_pyx_result); if (unlikely(!__pyx_tuple__372)) __PYX_ERR(11, 1, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_tuple__372);
  __Pyx_GIVEREF(__pyx_tuple__372);
  __pyx_codeobj__373 = (PyObject*)__Pyx_PyCode_New(3, 0, 5, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__372, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_stringsource, __pyx_n_s_pyx_unpickle_AioServer, 1, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__373)) __PYX_ERR(11, 1, __pyx_L1_error)
  __Pyx_RefNannyFinishContext();
  return 0;
  __pyx_L1_error:;
  __Pyx_RefNannyFinishContext();
  return -1;
}

static CYTHON_SMALL_CODE int __Pyx_InitGlobals(void) {
  __pyx_umethod_PyDict_Type_get.type = (PyObject*)&PyDict_Type;
  __pyx_umethod_PyDict_Type_pop.type = (PyObject*)&PyDict_Type;
  __pyx_umethod_PyDict_Type_values.type = (PyObject*)&PyDict_Type;
  if (__Pyx_InitStrings(__pyx_string_tab) < 0) __PYX_ERR(0, 1, __pyx_L1_error);
  __pyx_float_1_0 = PyFloat_FromDouble(1.0); if (unlikely(!__pyx_float_1_0)) __PYX_ERR(0, 1, __pyx_L1_error)
  __pyx_float_1000_0 = PyFloat_FromDouble(1000.0); if (unlikely(!__pyx_float_1000_0)) __PYX_ERR(0, 1, __pyx_L1_error)
  __pyx_int_0 = PyInt_FromLong(0); if (unlikely(!__pyx_int_0)) __PYX_ERR(0, 1, __pyx_L1_error)
  __pyx_int_1 = PyInt_FromLong(1); if (unlikely(!__pyx_int_1)) __PYX_ERR(0, 1, __pyx_L1_error)
  __pyx_int_5 = PyInt_FromLong(5); if (unlikely(!__pyx_int_5)) __PYX_ERR(0, 1, __pyx_L1_error)
  __pyx_int_50 = PyInt_FromLong(50); if (unlikely(!__pyx_int_50)) __PYX_ERR(0, 1, __pyx_L1_error)
  __pyx_int_171381981 = PyInt_FromLong(171381981L); if (unlikely(!__pyx_int_171381981)) __PYX_ERR(0, 1, __pyx_L1_error)
  __pyx_int_222419149 = PyInt_FromLong(222419149L); if (unlikely(!__pyx_int_222419149)) __PYX_ERR(0, 1, __pyx_L1_error)
  return 0;
  __pyx_L1_error:;
  return -1;
}

static CYTHON_SMALL_CODE int __Pyx_modinit_global_init_code(void); /*proto*/
static CYTHON_SMALL_CODE int __Pyx_modinit_variable_export_code(void); /*proto*/
static CYTHON_SMALL_CODE int __Pyx_modinit_function_export_code(void); /*proto*/
static CYTHON_SMALL_CODE int __Pyx_modinit_type_init_code(void); /*proto*/
static CYTHON_SMALL_CODE int __Pyx_modinit_type_import_code(void); /*proto*/
static CYTHON_SMALL_CODE int __Pyx_modinit_variable_import_code(void); /*proto*/
static CYTHON_SMALL_CODE int __Pyx_modinit_function_import_code(void); /*proto*/

static int __Pyx_modinit_global_init_code(void) {
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__Pyx_modinit_global_init_code", 0);
  /*--- Global init code ---*/
  __pyx_v_4grpc_7_cython_6cygrpc_CQ_SHUTDOWN_FAILURE_HANDLER = ((struct __pyx_obj_4grpc_7_cython_6cygrpc_CallbackFailureHandler *)Py_None); Py_INCREF(Py_None);
  __pyx_v_4grpc_7_cython_6cygrpc__GRPC_ASYNCIO_ENGINE = ((PyObject*)Py_None); Py_INCREF(Py_None);
  __pyx_v_4grpc_7_cython_6cygrpc__global_aio_state = ((struct __pyx_obj_4grpc_7_cython_6cygrpc__AioState *)Py_None); Py_INCREF(Py_None);
  __pyx_v_4grpc_7_cython_6cygrpc__WATCH_CONNECTIVITY_FAILURE_HANDLER = ((struct __pyx_obj_4grpc_7_cython_6cygrpc_CallbackFailureHandler *)Py_None); Py_INCREF(Py_None);
  __pyx_v_4grpc_7_cython_6cygrpc__RPC_FINISHED_DETAILS = ((PyObject*)Py_None); Py_INCREF(Py_None);
  __pyx_v_4grpc_7_cython_6cygrpc__SERVER_STOPPED_DETAILS = ((PyObject*)Py_None); Py_INCREF(Py_None);
  __pyx_v_4grpc_7_cython_6cygrpc_REQUEST_CALL_FAILURE_HANDLER = ((struct __pyx_obj_4grpc_7_cython_6cygrpc_CallbackFailureHandler *)Py_None); Py_INCREF(Py_None);
  __pyx_v_4grpc_7_cython_6cygrpc_SERVER_SHUTDOWN_FAILURE_HANDLER = ((struct __pyx_obj_4grpc_7_cython_6cygrpc_CallbackFailureHandler *)Py_None); Py_INCREF(Py_None);
  __Pyx_RefNannyFinishContext();
  return 0;
}

static int __Pyx_modinit_variable_export_code(void) {
  __Pyx_RefNannyDeclarations
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("__Pyx_modinit_variable_export_code", 0);
  /*--- Variable export code ---*/
  if (__Pyx_ExportVoidPtr(__pyx_n_s_default_vtable, (void *)&__pyx_v_4grpc_7_cython_6cygrpc_default_vtable, "grpc_arg_pointer_vtable") < 0) __PYX_ERR(0, 1, __pyx_L1_error)
  __Pyx_RefNannyFinishContext();
  return 0;
  __pyx_L1_error:;
  __Pyx_RefNannyFinishContext();
  return -1;
}

static int __Pyx_modinit_function_export_code(void) {
  __Pyx_RefNannyDeclarations
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("__Pyx_modinit_function_export_code", 0);
  /*--- Function export code ---*/
  if (__Pyx_ExportFunction("_wrap_grpc_arg", (void (*)(void))__pyx_f_4grpc_7_cython_6cygrpc__wrap_grpc_arg, "PyObject *(grpc_arg)") < 0) __PYX_ERR(0, 1, __pyx_L1_error)
  if (__Pyx_ExportFunction("_unwrap_grpc_arg", (void (*)(void))__pyx_f_4grpc_7_cython_6cygrpc__unwrap_grpc_arg, "grpc_arg (PyObject *)") < 0) __PYX_ERR(0, 1, __pyx_L1_error)
  if (__Pyx_ExportFunction("_check_call_error_no_metadata", (void (*)(void))__pyx_f_4grpc_7_cython_6cygrpc__check_call_error_no_metadata, "PyObject *(PyObject *)") < 0) __PYX_ERR(0, 1, __pyx_L1_error)
  if (__Pyx_ExportFunction("_check_and_raise_call_error_no_metadata", (void (*)(void))__pyx_f_4grpc_7_cython_6cygrpc__check_and_raise_call_error_no_metadata, "PyObject *(PyObject *)") < 0) __PYX_ERR(0, 1, __pyx_L1_error)
  if (__Pyx_ExportFunction("_check_call_error", (void (*)(void))__pyx_f_4grpc_7_cython_6cygrpc__check_call_error, "PyObject *(PyObject *, PyObject *)") < 0) __PYX_ERR(0, 1, __pyx_L1_error)
  if (__Pyx_ExportFunction("_get_metadata", (void (*)(void))__pyx_f_4grpc_7_cython_6cygrpc__get_metadata, "int (void *, grpc_auth_metadata_context, grpc_credentials_plugin_metadata_cb, void *, grpc_metadata *, size_t *, grpc_status_code *, char const **)") < 0) __PYX_ERR(0, 1, __pyx_L1_error)
  if (__Pyx_ExportFunction("_destroy", (void (*)(void))__pyx_f_4grpc_7_cython_6cygrpc__destroy, "void (void *)") < 0) __PYX_ERR(0, 1, __pyx_L1_error)
  if (__Pyx_ExportFunction("_composition", (void (*)(void))__pyx_f_4grpc_7_cython_6cygrpc__composition, "grpc_call_credentials *(PyObject *)") < 0) __PYX_ERR(0, 1, __pyx_L1_error)
  if (__Pyx_ExportFunction("_next", (void (*)(void))__pyx_f_4grpc_7_cython_6cygrpc__next, "grpc_event (grpc_completion_queue *, PyObject *)") < 0) __PYX_ERR(0, 1, __pyx_L1_error)
  if (__Pyx_ExportFunction("_interpret_event", (void (*)(void))__pyx_f_4grpc_7_cython_6cygrpc__interpret_event, "PyObject *(grpc_event)") < 0) __PYX_ERR(0, 1, __pyx_L1_error)
  if (__Pyx_ExportFunction("_store_c_metadata", (void (*)(void))__pyx_f_4grpc_7_cython_6cygrpc__store_c_metadata, "void (PyObject *, grpc_metadata **, size_t *)") < 0) __PYX_ERR(0, 1, __pyx_L1_error)
  if (__Pyx_ExportFunction("_release_c_metadata", (void (*)(void))__pyx_f_4grpc_7_cython_6cygrpc__release_c_metadata, "void (grpc_metadata *, int)") < 0) __PYX_ERR(0, 1, __pyx_L1_error)
  if (__Pyx_ExportFunction("_metadatum", (void (*)(void))__pyx_f_4grpc_7_cython_6cygrpc__metadatum, "PyObject *(grpc_slice, grpc_slice)") < 0) __PYX_ERR(0, 1, __pyx_L1_error)
  if (__Pyx_ExportFunction("_metadata", (void (*)(void))__pyx_f_4grpc_7_cython_6cygrpc__metadata, "PyObject *(grpc_metadata_array *)") < 0) __PYX_ERR(0, 1, __pyx_L1_error)
  if (__Pyx_ExportFunction("_slice_bytes", (void (*)(void))__pyx_f_4grpc_7_cython_6cygrpc__slice_bytes, "PyObject *(grpc_slice)") < 0) __PYX_ERR(0, 1, __pyx_L1_error)
  if (__Pyx_ExportFunction("_copy_slice", (void (*)(void))__pyx_f_4grpc_7_cython_6cygrpc__copy_slice, "grpc_slice (grpc_slice)") < 0) __PYX_ERR(0, 1, __pyx_L1_error)
  if (__Pyx_ExportFunction("_slice_from_bytes", (void (*)(void))__pyx_f_4grpc_7_cython_6cygrpc__slice_from_bytes, "grpc_slice (PyObject *)") < 0) __PYX_ERR(0, 1, __pyx_L1_error)
  if (__Pyx_ExportFunction("ssl_roots_override_callback", (void (*)(void))__pyx_f_4grpc_7_cython_6cygrpc_ssl_roots_override_callback, "grpc_ssl_roots_override_result (char **)") < 0) __PYX_ERR(0, 1, __pyx_L1_error)
  if (__Pyx_ExportFunction("_timespec_from_time", (void (*)(void))__pyx_f_4grpc_7_cython_6cygrpc__timespec_from_time, "gpr_timespec (PyObject *)") < 0) __PYX_ERR(0, 1, __pyx_L1_error)
  if (__Pyx_ExportFunction("_time_from_timespec", (void (*)(void))__pyx_f_4grpc_7_cython_6cygrpc__time_from_timespec, "double (gpr_timespec)") < 0) __PYX_ERR(0, 1, __pyx_L1_error)
  if (__Pyx_ExportFunction("_copy_pointer", (void (*)(void))__pyx_f_4grpc_7_cython_6cygrpc__copy_pointer, "void *(void *)") < 0) __PYX_ERR(0, 1, __pyx_L1_error)
  if (__Pyx_ExportFunction("_destroy_pointer", (void (*)(void))__pyx_f_4grpc_7_cython_6cygrpc__destroy_pointer, "void (void *)") < 0) __PYX_ERR(0, 1, __pyx_L1_error)
  if (__Pyx_ExportFunction("_compare_pointer", (void (*)(void))__pyx_f_4grpc_7_cython_6cygrpc__compare_pointer, "int (void *, void *)") < 0) __PYX_ERR(0, 1, __pyx_L1_error)
  if (__Pyx_ExportFunction("_custom_op_on_c_call", (void (*)(void))__pyx_f_4grpc_7_cython_6cygrpc__custom_op_on_c_call, "PyObject *(int, grpc_call *)") < 0) __PYX_ERR(0, 1, __pyx_L1_error)
  if (__Pyx_ExportFunction("__prefork", (void (*)(void))__pyx_f_4grpc_7_cython_6cygrpc___prefork, "void (void)") < 0) __PYX_ERR(0, 1, __pyx_L1_error)
  if (__Pyx_ExportFunction("__postfork_parent", (void (*)(void))__pyx_f_4grpc_7_cython_6cygrpc___postfork_parent, "void (void)") < 0) __PYX_ERR(0, 1, __pyx_L1_error)
  if (__Pyx_ExportFunction("__postfork_child", (void (*)(void))__pyx_f_4grpc_7_cython_6cygrpc___postfork_child, "void (void)") < 0) __PYX_ERR(0, 1, __pyx_L1_error)
  if (__Pyx_ExportFunction("_unified_socket_write", (void (*)(void))__pyx_f_4grpc_7_cython_6cygrpc__unified_socket_write, "void (int)") < 0) __PYX_ERR(0, 1, __pyx_L1_error)
  if (__Pyx_ExportFunction("global_completion_queue", (void (*)(void))__pyx_f_4grpc_7_cython_6cygrpc_global_completion_queue, "grpc_completion_queue *(void)") < 0) __PYX_ERR(0, 1, __pyx_L1_error)
  if (__Pyx_ExportFunction("init_grpc_aio", (void (*)(void))__pyx_f_4grpc_7_cython_6cygrpc_init_grpc_aio, "PyObject *(int __pyx_skip_dispatch)") < 0) __PYX_ERR(0, 1, __pyx_L1_error)
  if (__Pyx_ExportFunction("shutdown_grpc_aio", (void (*)(void))__pyx_f_4grpc_7_cython_6cygrpc_shutdown_grpc_aio, "PyObject *(int __pyx_skip_dispatch)") < 0) __PYX_ERR(0, 1, __pyx_L1_error)
  __Pyx_RefNannyFinishContext();
  return 0;
  __pyx_L1_error:;
  __Pyx_RefNannyFinishContext();
  return -1;
}

static int __Pyx_modinit_type_init_code(void) {
  __Pyx_RefNannyDeclarations
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("__Pyx_modinit_type_init_code", 0);
  /*--- Type init code ---*/
  __pyx_vtabptr_4grpc_7_cython_6cygrpc__ChannelArg = &__pyx_vtable_4grpc_7_cython_6cygrpc__ChannelArg;
  __pyx_vtable_4grpc_7_cython_6cygrpc__ChannelArg.c = (void (*)(struct __pyx_obj_4grpc_7_cython_6cygrpc__ChannelArg *, PyObject *, PyObject *))__pyx_f_4grpc_7_cython_6cygrpc_11_ChannelArg_c;
  if (PyType_Ready(&__pyx_type_4grpc_7_cython_6cygrpc__ChannelArg) < 0) __PYX_ERR(3, 32, __pyx_L1_error)
  #if PY_VERSION_HEX < 0x030800B1
  __pyx_type_4grpc_7_cython_6cygrpc__ChannelArg.tp_print = 0;
  #endif
  if ((CYTHON_USE_TYPE_SLOTS && CYTHON_USE_PYTYPE_LOOKUP) && likely(!__pyx_type_4grpc_7_cython_6cygrpc__ChannelArg.tp_dictoffset && __pyx_type_4grpc_7_cython_6cygrpc__ChannelArg.tp_getattro == PyObject_GenericGetAttr)) {
    __pyx_type_4grpc_7_cython_6cygrpc__ChannelArg.tp_getattro = __Pyx_PyObject_GenericGetAttr;
  }
  if (__Pyx_SetVtable(__pyx_type_4grpc_7_cython_6cygrpc__ChannelArg.tp_dict, __pyx_vtabptr_4grpc_7_cython_6cygrpc__ChannelArg) < 0) __PYX_ERR(3, 32, __pyx_L1_error)
  if (PyObject_SetAttr(__pyx_m, __pyx_n_s_ChannelArg, (PyObject *)&__pyx_type_4grpc_7_cython_6cygrpc__ChannelArg) < 0) __PYX_ERR(3, 32, __pyx_L1_error)
  if (__Pyx_setup_reduce((PyObject*)&__pyx_type_4grpc_7_cython_6cygrpc__ChannelArg) < 0) __PYX_ERR(3, 32, __pyx_L1_error)
  __pyx_ptype_4grpc_7_cython_6cygrpc__ChannelArg = &__pyx_type_4grpc_7_cython_6cygrpc__ChannelArg;
  __pyx_vtabptr_4grpc_7_cython_6cygrpc__ChannelArgs = &__pyx_vtable_4grpc_7_cython_6cygrpc__ChannelArgs;
  __pyx_vtable_4grpc_7_cython_6cygrpc__ChannelArgs.c_args = (grpc_channel_args *(*)(struct __pyx_obj_4grpc_7_cython_6cygrpc__ChannelArgs *))__pyx_f_4grpc_7_cython_6cygrpc_12_ChannelArgs_c_args;
  if (PyType_Ready(&__pyx_type_4grpc_7_cython_6cygrpc__ChannelArgs) < 0) __PYX_ERR(3, 64, __pyx_L1_error)
  #if PY_VERSION_HEX < 0x030800B1
  __pyx_type_4grpc_7_cython_6cygrpc__ChannelArgs.tp_print = 0;
  #endif
  if ((CYTHON_USE_TYPE_SLOTS && CYTHON_USE_PYTYPE_LOOKUP) && likely(!__pyx_type_4grpc_7_cython_6cygrpc__ChannelArgs.tp_dictoffset && __pyx_type_4grpc_7_cython_6cygrpc__ChannelArgs.tp_getattro == PyObject_GenericGetAttr)) {
    __pyx_type_4grpc_7_cython_6cygrpc__ChannelArgs.tp_getattro = __Pyx_PyObject_GenericGetAttr;
  }
  if (__Pyx_SetVtable(__pyx_type_4grpc_7_cython_6cygrpc__ChannelArgs.tp_dict, __pyx_vtabptr_4grpc_7_cython_6cygrpc__ChannelArgs) < 0) __PYX_ERR(3, 64, __pyx_L1_error)
  if (PyObject_SetAttr(__pyx_m, __pyx_n_s_ChannelArgs, (PyObject *)&__pyx_type_4grpc_7_cython_6cygrpc__ChannelArgs) < 0) __PYX_ERR(3, 64, __pyx_L1_error)
  if (__Pyx_setup_reduce((PyObject*)&__pyx_type_4grpc_7_cython_6cygrpc__ChannelArgs) < 0) __PYX_ERR(3, 64, __pyx_L1_error)
  __pyx_ptype_4grpc_7_cython_6cygrpc__ChannelArgs = &__pyx_type_4grpc_7_cython_6cygrpc__ChannelArgs;
  if (PyType_Ready(&__pyx_type_4grpc_7_cython_6cygrpc_Call) < 0) __PYX_ERR(4, 16, __pyx_L1_error)
  #if PY_VERSION_HEX < 0x030800B1
  __pyx_type_4grpc_7_cython_6cygrpc_Call.tp_print = 0;
  #endif
  if ((CYTHON_USE_TYPE_SLOTS && CYTHON_USE_PYTYPE_LOOKUP) && likely(!__pyx_type_4grpc_7_cython_6cygrpc_Call.tp_dictoffset && __pyx_type_4grpc_7_cython_6cygrpc_Call.tp_getattro == PyObject_GenericGetAttr)) {
    __pyx_type_4grpc_7_cython_6cygrpc_Call.tp_getattro = __Pyx_PyObject_GenericGetAttr;
  }
  if (PyObject_SetAttr(__pyx_m, __pyx_n_s_Call, (PyObject *)&__pyx_type_4grpc_7_cython_6cygrpc_Call) < 0) __PYX_ERR(4, 16, __pyx_L1_error)
  if (__Pyx_setup_reduce((PyObject*)&__pyx_type_4grpc_7_cython_6cygrpc_Call) < 0) __PYX_ERR(4, 16, __pyx_L1_error)
  __pyx_ptype_4grpc_7_cython_6cygrpc_Call = &__pyx_type_4grpc_7_cython_6cygrpc_Call;
  if (PyType_Ready(&__pyx_type_4grpc_7_cython_6cygrpc__CallState) < 0) __PYX_ERR(12, 69, __pyx_L1_error)
  #if PY_VERSION_HEX < 0x030800B1
  __pyx_type_4grpc_7_cython_6cygrpc__CallState.tp_print = 0;
  #endif
  if ((CYTHON_USE_TYPE_SLOTS && CYTHON_USE_PYTYPE_LOOKUP) && likely(!__pyx_type_4grpc_7_cython_6cygrpc__CallState.tp_dictoffset && __pyx_type_4grpc_7_cython_6cygrpc__CallState.tp_getattro == PyObject_GenericGetAttr)) {
    __pyx_type_4grpc_7_cython_6cygrpc__CallState.tp_getattro = __Pyx_PyObject_GenericGetAttr;
  }
  if (PyObject_SetAttr(__pyx_m, __pyx_n_s_CallState, (PyObject *)&__pyx_type_4grpc_7_cython_6cygrpc__CallState) < 0) __PYX_ERR(12, 69, __pyx_L1_error)
  if (__Pyx_setup_reduce((PyObject*)&__pyx_type_4grpc_7_cython_6cygrpc__CallState) < 0) __PYX_ERR(12, 69, __pyx_L1_error)
  __pyx_ptype_4grpc_7_cython_6cygrpc__CallState = &__pyx_type_4grpc_7_cython_6cygrpc__CallState;
  if (PyType_Ready(&__pyx_type_4grpc_7_cython_6cygrpc__ChannelState) < 0) __PYX_ERR(12, 75, __pyx_L1_error)
  #if PY_VERSION_HEX < 0x030800B1
  __pyx_type_4grpc_7_cython_6cygrpc__ChannelState.tp_print = 0;
  #endif
  if ((CYTHON_USE_TYPE_SLOTS && CYTHON_USE_PYTYPE_LOOKUP) && likely(!__pyx_type_4grpc_7_cython_6cygrpc__ChannelState.tp_dictoffset && __pyx_type_4grpc_7_cython_6cygrpc__ChannelState.tp_getattro == PyObject_GenericGetAttr)) {
    __pyx_type_4grpc_7_cython_6cygrpc__ChannelState.tp_getattro = __Pyx_PyObject_GenericGetAttr;
  }
  if (PyObject_SetAttr(__pyx_m, __pyx_n_s_ChannelState, (PyObject *)&__pyx_type_4grpc_7_cython_6cygrpc__ChannelState) < 0) __PYX_ERR(12, 75, __pyx_L1_error)
  if (__Pyx_setup_reduce((PyObject*)&__pyx_type_4grpc_7_cython_6cygrpc__ChannelState) < 0) __PYX_ERR(12, 75, __pyx_L1_error)
  __pyx_ptype_4grpc_7_cython_6cygrpc__ChannelState = &__pyx_type_4grpc_7_cython_6cygrpc__ChannelState;
  if (PyType_Ready(&__pyx_type_4grpc_7_cython_6cygrpc_IntegratedCall) < 0) __PYX_ERR(12, 270, __pyx_L1_error)
  #if PY_VERSION_HEX < 0x030800B1
  __pyx_type_4grpc_7_cython_6cygrpc_IntegratedCall.tp_print = 0;
  #endif
  if ((CYTHON_USE_TYPE_SLOTS && CYTHON_USE_PYTYPE_LOOKUP) && likely(!__pyx_type_4grpc_7_cython_6cygrpc_IntegratedCall.tp_dictoffset && __pyx_type_4grpc_7_cython_6cygrpc_IntegratedCall.tp_getattro == PyObject_GenericGetAttr)) {
    __pyx_type_4grpc_7_cython_6cygrpc_IntegratedCall.tp_getattro = __Pyx_PyObject_GenericGetAttr;
  }
  if (PyObject_SetAttr(__pyx_m, __pyx_n_s_IntegratedCall, (PyObject *)&__pyx_type_4grpc_7_cython_6cygrpc_IntegratedCall) < 0) __PYX_ERR(12, 270, __pyx_L1_error)
  if (__Pyx_setup_reduce((PyObject*)&__pyx_type_4grpc_7_cython_6cygrpc_IntegratedCall) < 0) __PYX_ERR(12, 270, __pyx_L1_error)
  __pyx_ptype_4grpc_7_cython_6cygrpc_IntegratedCall = &__pyx_type_4grpc_7_cython_6cygrpc_IntegratedCall;
  if (PyType_Ready(&__pyx_type_4grpc_7_cython_6cygrpc_SegregatedCall) < 0) __PYX_ERR(12, 315, __pyx_L1_error)
  #if PY_VERSION_HEX < 0x030800B1
  __pyx_type_4grpc_7_cython_6cygrpc_SegregatedCall.tp_print = 0;
  #endif
  if ((CYTHON_USE_TYPE_SLOTS && CYTHON_USE_PYTYPE_LOOKUP) && likely(!__pyx_type_4grpc_7_cython_6cygrpc_SegregatedCall.tp_dictoffset && __pyx_type_4grpc_7_cython_6cygrpc_SegregatedCall.tp_getattro == PyObject_GenericGetAttr)) {
    __pyx_type_4grpc_7_cython_6cygrpc_SegregatedCall.tp_getattro = __Pyx_PyObject_GenericGetAttr;
  }
  if (PyObject_SetAttr(__pyx_m, __pyx_n_s_SegregatedCall, (PyObject *)&__pyx_type_4grpc_7_cython_6cygrpc_SegregatedCall) < 0) __PYX_ERR(12, 315, __pyx_L1_error)
  if (__Pyx_setup_reduce((PyObject*)&__pyx_type_4grpc_7_cython_6cygrpc_SegregatedCall) < 0) __PYX_ERR(12, 315, __pyx_L1_error)
  __pyx_ptype_4grpc_7_cython_6cygrpc_SegregatedCall = &__pyx_type_4grpc_7_cython_6cygrpc_SegregatedCall;
  if (PyType_Ready(&__pyx_type_4grpc_7_cython_6cygrpc_Channel) < 0) __PYX_ERR(12, 441, __pyx_L1_error)
  #if PY_VERSION_HEX < 0x030800B1
  __pyx_type_4grpc_7_cython_6cygrpc_Channel.tp_print = 0;
  #endif
  if ((CYTHON_USE_TYPE_SLOTS && CYTHON_USE_PYTYPE_LOOKUP) && likely(!__pyx_type_4grpc_7_cython_6cygrpc_Channel.tp_dictoffset && __pyx_type_4grpc_7_cython_6cygrpc_Channel.tp_getattro == PyObject_GenericGetAttr)) {
    __pyx_type_4grpc_7_cython_6cygrpc_Channel.tp_getattro = __Pyx_PyObject_GenericGetAttr;
  }
  if (PyObject_SetAttr(__pyx_m, __pyx_n_s_Channel, (PyObject *)&__pyx_type_4grpc_7_cython_6cygrpc_Channel) < 0) __PYX_ERR(12, 441, __pyx_L1_error)
  if (__Pyx_setup_reduce((PyObject*)&__pyx_type_4grpc_7_cython_6cygrpc_Channel) < 0) __PYX_ERR(12, 441, __pyx_L1_error)
  __pyx_ptype_4grpc_7_cython_6cygrpc_Channel = &__pyx_type_4grpc_7_cython_6cygrpc_Channel;
  __pyx_vtabptr_4grpc_7_cython_6cygrpc_CallCredentials = &__pyx_vtable_4grpc_7_cython_6cygrpc_CallCredentials;
  __pyx_vtable_4grpc_7_cython_6cygrpc_CallCredentials.c = (grpc_call_credentials *(*)(struct __pyx_obj_4grpc_7_cython_6cygrpc_CallCredentials *))__pyx_f_4grpc_7_cython_6cygrpc_15CallCredentials_c;
  if (PyType_Ready(&__pyx_type_4grpc_7_cython_6cygrpc_CallCredentials) < 0) __PYX_ERR(5, 31, __pyx_L1_error)
  #if PY_VERSION_HEX < 0x030800B1
  __pyx_type_4grpc_7_cython_6cygrpc_CallCredentials.tp_print = 0;
  #endif
  if ((CYTHON_USE_TYPE_SLOTS && CYTHON_USE_PYTYPE_LOOKUP) && likely(!__pyx_type_4grpc_7_cython_6cygrpc_CallCredentials.tp_dictoffset && __pyx_type_4grpc_7_cython_6cygrpc_CallCredentials.tp_getattro == PyObject_GenericGetAttr)) {
    __pyx_type_4grpc_7_cython_6cygrpc_CallCredentials.tp_getattro = __Pyx_PyObject_GenericGetAttr;
  }
  if (__Pyx_SetVtable(__pyx_type_4grpc_7_cython_6cygrpc_CallCredentials.tp_dict, __pyx_vtabptr_4grpc_7_cython_6cygrpc_CallCredentials) < 0) __PYX_ERR(5, 31, __pyx_L1_error)
  if (PyObject_SetAttr(__pyx_m, __pyx_n_s_CallCredentials, (PyObject *)&__pyx_type_4grpc_7_cython_6cygrpc_CallCredentials) < 0) __PYX_ERR(5, 31, __pyx_L1_error)
  if (__Pyx_setup_reduce((PyObject*)&__pyx_type_4grpc_7_cython_6cygrpc_CallCredentials) < 0) __PYX_ERR(5, 31, __pyx_L1_error)
  __pyx_ptype_4grpc_7_cython_6cygrpc_CallCredentials = &__pyx_type_4grpc_7_cython_6cygrpc_CallCredentials;
  __pyx_vtabptr_4grpc_7_cython_6cygrpc_MetadataPluginCallCredentials = &__pyx_vtable_4grpc_7_cython_6cygrpc_MetadataPluginCallCredentials;
  __pyx_vtable_4grpc_7_cython_6cygrpc_MetadataPluginCallCredentials.__pyx_base = *__pyx_vtabptr_4grpc_7_cython_6cygrpc_CallCredentials;
  __pyx_vtable_4grpc_7_cython_6cygrpc_MetadataPluginCallCredentials.__pyx_base.c = (grpc_call_credentials *(*)(struct __pyx_obj_4grpc_7_cython_6cygrpc_CallCredentials *))__pyx_f_4grpc_7_cython_6cygrpc_29MetadataPluginCallCredentials_c;
  __pyx_type_4grpc_7_cython_6cygrpc_MetadataPluginCallCredentials.tp_base = __pyx_ptype_4grpc_7_cython_6cygrpc_CallCredentials;
  if (PyType_Ready(&__pyx_type_4grpc_7_cython_6cygrpc_MetadataPluginCallCredentials) < 0) __PYX_ERR(5, 73, __pyx_L1_error)
  #if PY_VERSION_HEX < 0x030800B1
  __pyx_type_4grpc_7_cython_6cygrpc_MetadataPluginCallCredentials.tp_print = 0;
  #endif
  if ((CYTHON_USE_TYPE_SLOTS && CYTHON_USE_PYTYPE_LOOKUP) && likely(!__pyx_type_4grpc_7_cython_6cygrpc_MetadataPluginCallCredentials.tp_dictoffset && __pyx_type_4grpc_7_cython_6cygrpc_MetadataPluginCallCredentials.tp_getattro == PyObject_GenericGetAttr)) {
    __pyx_type_4grpc_7_cython_6cygrpc_MetadataPluginCallCredentials.tp_getattro = __Pyx_PyObject_GenericGetAttr;
  }
  if (__Pyx_SetVtable(__pyx_type_4grpc_7_cython_6cygrpc_MetadataPluginCallCredentials.tp_dict, __pyx_vtabptr_4grpc_7_cython_6cygrpc_MetadataPluginCallCredentials) < 0) __PYX_ERR(5, 73, __pyx_L1_error)
  if (PyObject_SetAttr(__pyx_m, __pyx_n_s_MetadataPluginCallCredentials, (PyObject *)&__pyx_type_4grpc_7_cython_6cygrpc_MetadataPluginCallCredentials) < 0) __PYX_ERR(5, 73, __pyx_L1_error)
  if (__Pyx_setup_reduce((PyObject*)&__pyx_type_4grpc_7_cython_6cygrpc_MetadataPluginCallCredentials) < 0) __PYX_ERR(5, 73, __pyx_L1_error)
  __pyx_ptype_4grpc_7_cython_6cygrpc_MetadataPluginCallCredentials = &__pyx_type_4grpc_7_cython_6cygrpc_MetadataPluginCallCredentials;
  __pyx_vtabptr_4grpc_7_cython_6cygrpc_CompositeCallCredentials = &__pyx_vtable_4grpc_7_cython_6cygrpc_CompositeCallCredentials;
  __pyx_vtable_4grpc_7_cython_6cygrpc_CompositeCallCredentials.__pyx_base = *__pyx_vtabptr_4grpc_7_cython_6cygrpc_CallCredentials;
  __pyx_vtable_4grpc_7_cython_6cygrpc_CompositeCallCredentials.__pyx_base.c = (grpc_call_credentials *(*)(struct __pyx_obj_4grpc_7_cython_6cygrpc_CallCredentials *))__pyx_f_4grpc_7_cython_6cygrpc_24CompositeCallCredentials_c;
  __pyx_type_4grpc_7_cython_6cygrpc_CompositeCallCredentials.tp_base = __pyx_ptype_4grpc_7_cython_6cygrpc_CallCredentials;
  if (PyType_Ready(&__pyx_type_4grpc_7_cython_6cygrpc_CompositeCallCredentials) < 0) __PYX_ERR(5, 109, __pyx_L1_error)
  #if PY_VERSION_HEX < 0x030800B1
  __pyx_type_4grpc_7_cython_6cygrpc_CompositeCallCredentials.tp_print = 0;
  #endif
  if ((CYTHON_USE_TYPE_SLOTS && CYTHON_USE_PYTYPE_LOOKUP) && likely(!__pyx_type_4grpc_7_cython_6cygrpc_CompositeCallCredentials.tp_dictoffset && __pyx_type_4grpc_7_cython_6cygrpc_CompositeCallCredentials.tp_getattro == PyObject_GenericGetAttr)) {
    __pyx_type_4grpc_7_cython_6cygrpc_CompositeCallCredentials.tp_getattro = __Pyx_PyObject_GenericGetAttr;
  }
  if (__Pyx_SetVtable(__pyx_type_4grpc_7_cython_6cygrpc_CompositeCallCredentials.tp_dict, __pyx_vtabptr_4grpc_7_cython_6cygrpc_CompositeCallCredentials) < 0) __PYX_ERR(5, 109, __pyx_L1_error)
  if (PyObject_SetAttr(__pyx_m, __pyx_n_s_CompositeCallCredentials, (PyObject *)&__pyx_type_4grpc_7_cython_6cygrpc_CompositeCallCredentials) < 0) __PYX_ERR(5, 109, __pyx_L1_error)
  if (__Pyx_setup_reduce((PyObject*)&__pyx_type_4grpc_7_cython_6cygrpc_CompositeCallCredentials) < 0) __PYX_ERR(5, 109, __pyx_L1_error)
  __pyx_ptype_4grpc_7_cython_6cygrpc_CompositeCallCredentials = &__pyx_type_4grpc_7_cython_6cygrpc_CompositeCallCredentials;
  __pyx_vtabptr_4grpc_7_cython_6cygrpc_ChannelCredentials = &__pyx_vtable_4grpc_7_cython_6cygrpc_ChannelCredentials;
  __pyx_vtable_4grpc_7_cython_6cygrpc_ChannelCredentials.c = (grpc_channel_credentials *(*)(struct __pyx_obj_4grpc_7_cython_6cygrpc_ChannelCredentials *))__pyx_f_4grpc_7_cython_6cygrpc_18ChannelCredentials_c;
  if (PyType_Ready(&__pyx_type_4grpc_7_cython_6cygrpc_ChannelCredentials) < 0) __PYX_ERR(5, 118, __pyx_L1_error)
  #if PY_VERSION_HEX < 0x030800B1
  __pyx_type_4grpc_7_cython_6cygrpc_ChannelCredentials.tp_print = 0;
  #endif
  if ((CYTHON_USE_TYPE_SLOTS && CYTHON_USE_PYTYPE_LOOKUP) && likely(!__pyx_type_4grpc_7_cython_6cygrpc_ChannelCredentials.tp_dictoffset && __pyx_type_4grpc_7_cython_6cygrpc_ChannelCredentials.tp_getattro == PyObject_GenericGetAttr)) {
    __pyx_type_4grpc_7_cython_6cygrpc_ChannelCredentials.tp_getattro = __Pyx_PyObject_GenericGetAttr;
  }
  if (__Pyx_SetVtable(__pyx_type_4grpc_7_cython_6cygrpc_ChannelCredentials.tp_dict, __pyx_vtabptr_4grpc_7_cython_6cygrpc_ChannelCredentials) < 0) __PYX_ERR(5, 118, __pyx_L1_error)
  if (PyObject_SetAttr(__pyx_m, __pyx_n_s_ChannelCredentials, (PyObject *)&__pyx_type_4grpc_7_cython_6cygrpc_ChannelCredentials) < 0) __PYX_ERR(5, 118, __pyx_L1_error)
  if (__Pyx_setup_reduce((PyObject*)&__pyx_type_4grpc_7_cython_6cygrpc_ChannelCredentials) < 0) __PYX_ERR(5, 118, __pyx_L1_error)
  __pyx_ptype_4grpc_7_cython_6cygrpc_ChannelCredentials = &__pyx_type_4grpc_7_cython_6cygrpc_ChannelCredentials;
  if (PyType_Ready(&__pyx_type_4grpc_7_cython_6cygrpc_SSLSessionCacheLRU) < 0) __PYX_ERR(5, 124, __pyx_L1_error)
  #if PY_VERSION_HEX < 0x030800B1
  __pyx_type_4grpc_7_cython_6cygrpc_SSLSessionCacheLRU.tp_print = 0;
  #endif
  if ((CYTHON_USE_TYPE_SLOTS && CYTHON_USE_PYTYPE_LOOKUP) && likely(!__pyx_type_4grpc_7_cython_6cygrpc_SSLSessionCacheLRU.tp_dictoffset && __pyx_type_4grpc_7_cython_6cygrpc_SSLSessionCacheLRU.tp_getattro == PyObject_GenericGetAttr)) {
    __pyx_type_4grpc_7_cython_6cygrpc_SSLSessionCacheLRU.tp_getattro = __Pyx_PyObject_GenericGetAttr;
  }
  if (PyObject_SetAttr(__pyx_m, __pyx_n_s_SSLSessionCacheLRU, (PyObject *)&__pyx_type_4grpc_7_cython_6cygrpc_SSLSessionCacheLRU) < 0) __PYX_ERR(5, 124, __pyx_L1_error)
  if (__Pyx_setup_reduce((PyObject*)&__pyx_type_4grpc_7_cython_6cygrpc_SSLSessionCacheLRU) < 0) __PYX_ERR(5, 124, __pyx_L1_error)
  __pyx_ptype_4grpc_7_cython_6cygrpc_SSLSessionCacheLRU = &__pyx_type_4grpc_7_cython_6cygrpc_SSLSessionCacheLRU;
  __pyx_vtabptr_4grpc_7_cython_6cygrpc_SSLChannelCredentials = &__pyx_vtable_4grpc_7_cython_6cygrpc_SSLChannelCredentials;
  __pyx_vtable_4grpc_7_cython_6cygrpc_SSLChannelCredentials.__pyx_base = *__pyx_vtabptr_4grpc_7_cython_6cygrpc_ChannelCredentials;
  __pyx_vtable_4grpc_7_cython_6cygrpc_SSLChannelCredentials.__pyx_base.c = (grpc_channel_credentials *(*)(struct __pyx_obj_4grpc_7_cython_6cygrpc_ChannelCredentials *))__pyx_f_4grpc_7_cython_6cygrpc_21SSLChannelCredentials_c;
  __pyx_type_4grpc_7_cython_6cygrpc_SSLChannelCredentials.tp_base = __pyx_ptype_4grpc_7_cython_6cygrpc_ChannelCredentials;
  if (PyType_Ready(&__pyx_type_4grpc_7_cython_6cygrpc_SSLChannelCredentials) < 0) __PYX_ERR(5, 139, __pyx_L1_error)
  #if PY_VERSION_HEX < 0x030800B1
  __pyx_type_4grpc_7_cython_6cygrpc_SSLChannelCredentials.tp_print = 0;
  #endif
  if ((CYTHON_USE_TYPE_SLOTS && CYTHON_USE_PYTYPE_LOOKUP) && likely(!__pyx_type_4grpc_7_cython_6cygrpc_SSLChannelCredentials.tp_dictoffset && __pyx_type_4grpc_7_cython_6cygrpc_SSLChannelCredentials.tp_getattro == PyObject_GenericGetAttr)) {
    __pyx_type_4grpc_7_cython_6cygrpc_SSLChannelCredentials.tp_getattro = __Pyx_PyObject_GenericGetAttr;
  }
  if (__Pyx_SetVtable(__pyx_type_4grpc_7_cython_6cygrpc_SSLChannelCredentials.tp_dict, __pyx_vtabptr_4grpc_7_cython_6cygrpc_SSLChannelCredentials) < 0) __PYX_ERR(5, 139, __pyx_L1_error)
  if (PyObject_SetAttr(__pyx_m, __pyx_n_s_SSLChannelCredentials, (PyObject *)&__pyx_type_4grpc_7_cython_6cygrpc_SSLChannelCredentials) < 0) __PYX_ERR(5, 139, __pyx_L1_error)
  if (__Pyx_setup_reduce((PyObject*)&__pyx_type_4grpc_7_cython_6cygrpc_SSLChannelCredentials) < 0) __PYX_ERR(5, 139, __pyx_L1_error)
  __pyx_ptype_4grpc_7_cython_6cygrpc_SSLChannelCredentials = &__pyx_type_4grpc_7_cython_6cygrpc_SSLChannelCredentials;
  __pyx_vtabptr_4grpc_7_cython_6cygrpc_CompositeChannelCredentials = &__pyx_vtable_4grpc_7_cython_6cygrpc_CompositeChannelCredentials;
  __pyx_vtable_4grpc_7_cython_6cygrpc_CompositeChannelCredentials.__pyx_base = *__pyx_vtabptr_4grpc_7_cython_6cygrpc_ChannelCredentials;
  __pyx_vtable_4grpc_7_cython_6cygrpc_CompositeChannelCredentials.__pyx_base.c = (grpc_channel_credentials *(*)(struct __pyx_obj_4grpc_7_cython_6cygrpc_ChannelCredentials *))__pyx_f_4grpc_7_cython_6cygrpc_27CompositeChannelCredentials_c;
  __pyx_type_4grpc_7_cython_6cygrpc_CompositeChannelCredentials.tp_base = __pyx_ptype_4grpc_7_cython_6cygrpc_ChannelCredentials;
  if (PyType_Ready(&__pyx_type_4grpc_7_cython_6cygrpc_CompositeChannelCredentials) < 0) __PYX_ERR(5, 171, __pyx_L1_error)
  #if PY_VERSION_HEX < 0x030800B1
  __pyx_type_4grpc_7_cython_6cygrpc_CompositeChannelCredentials.tp_print = 0;
  #endif
  if ((CYTHON_USE_TYPE_SLOTS && CYTHON_USE_PYTYPE_LOOKUP) && likely(!__pyx_type_4grpc_7_cython_6cygrpc_CompositeChannelCredentials.tp_dictoffset && __pyx_type_4grpc_7_cython_6cygrpc_CompositeChannelCredentials.tp_getattro == PyObject_GenericGetAttr)) {
    __pyx_type_4grpc_7_cython_6cygrpc_CompositeChannelCredentials.tp_getattro = __Pyx_PyObject_GenericGetAttr;
  }
  if (__Pyx_SetVtable(__pyx_type_4grpc_7_cython_6cygrpc_CompositeChannelCredentials.tp_dict, __pyx_vtabptr_4grpc_7_cython_6cygrpc_CompositeChannelCredentials) < 0) __PYX_ERR(5, 171, __pyx_L1_error)
  if (PyObject_SetAttr(__pyx_m, __pyx_n_s_CompositeChannelCredentials, (PyObject *)&__pyx_type_4grpc_7_cython_6cygrpc_CompositeChannelCredentials) < 0) __PYX_ERR(5, 171, __pyx_L1_error)
  if (__Pyx_setup_reduce((PyObject*)&__pyx_type_4grpc_7_cython_6cygrpc_CompositeChannelCredentials) < 0) __PYX_ERR(5, 171, __pyx_L1_error)
  __pyx_ptype_4grpc_7_cython_6cygrpc_CompositeChannelCredentials = &__pyx_type_4grpc_7_cython_6cygrpc_CompositeChannelCredentials;
  __pyx_vtabptr_4grpc_7_cython_6cygrpc_XDSChannelCredentials = &__pyx_vtable_4grpc_7_cython_6cygrpc_XDSChannelCredentials;
  __pyx_vtable_4grpc_7_cython_6cygrpc_XDSChannelCredentials.__pyx_base = *__pyx_vtabptr_4grpc_7_cython_6cygrpc_ChannelCredentials;
  __pyx_vtable_4grpc_7_cython_6cygrpc_XDSChannelCredentials.__pyx_base.c = (grpc_channel_credentials *(*)(struct __pyx_obj_4grpc_7_cython_6cygrpc_ChannelCredentials *))__pyx_f_4grpc_7_cython_6cygrpc_21XDSChannelCredentials_c;
  __pyx_type_4grpc_7_cython_6cygrpc_XDSChannelCredentials.tp_base = __pyx_ptype_4grpc_7_cython_6cygrpc_ChannelCredentials;
  if (PyType_Ready(&__pyx_type_4grpc_7_cython_6cygrpc_XDSChannelCredentials) < 0) __PYX_ERR(5, 190, __pyx_L1_error)
  #if PY_VERSION_HEX < 0x030800B1
  __pyx_type_4grpc_7_cython_6cygrpc_XDSChannelCredentials.tp_print = 0;
  #endif
  if ((CYTHON_USE_TYPE_SLOTS && CYTHON_USE_PYTYPE_LOOKUP) && likely(!__pyx_type_4grpc_7_cython_6cygrpc_XDSChannelCredentials.tp_dictoffset && __pyx_type_4grpc_7_cython_6cygrpc_XDSChannelCredentials.tp_getattro == PyObject_GenericGetAttr)) {
    __pyx_type_4grpc_7_cython_6cygrpc_XDSChannelCredentials.tp_getattro = __Pyx_PyObject_GenericGetAttr;
  }
  if (__Pyx_SetVtable(__pyx_type_4grpc_7_cython_6cygrpc_XDSChannelCredentials.tp_dict, __pyx_vtabptr_4grpc_7_cython_6cygrpc_XDSChannelCredentials) < 0) __PYX_ERR(5, 190, __pyx_L1_error)
  if (PyObject_SetAttr(__pyx_m, __pyx_n_s_XDSChannelCredentials, (PyObject *)&__pyx_type_4grpc_7_cython_6cygrpc_XDSChannelCredentials) < 0) __PYX_ERR(5, 190, __pyx_L1_error)
  if (__Pyx_setup_reduce((PyObject*)&__pyx_type_4grpc_7_cython_6cygrpc_XDSChannelCredentials) < 0) __PYX_ERR(5, 190, __pyx_L1_error)
  __pyx_ptype_4grpc_7_cython_6cygrpc_XDSChannelCredentials = &__pyx_type_4grpc_7_cython_6cygrpc_XDSChannelCredentials;
  if (PyType_Ready(&__pyx_type_4grpc_7_cython_6cygrpc_ServerCertificateConfig) < 0) __PYX_ERR(5, 202, __pyx_L1_error)
  #if PY_VERSION_HEX < 0x030800B1
  __pyx_type_4grpc_7_cython_6cygrpc_ServerCertificateConfig.tp_print = 0;
  #endif
  if ((CYTHON_USE_TYPE_SLOTS && CYTHON_USE_PYTYPE_LOOKUP) && likely(!__pyx_type_4grpc_7_cython_6cygrpc_ServerCertificateConfig.tp_dictoffset && __pyx_type_4grpc_7_cython_6cygrpc_ServerCertificateConfig.tp_getattro == PyObject_GenericGetAttr)) {
    __pyx_type_4grpc_7_cython_6cygrpc_ServerCertificateConfig.tp_getattro = __Pyx_PyObject_GenericGetAttr;
  }
  if (PyObject_SetAttr(__pyx_m, __pyx_n_s_ServerCertificateConfig, (PyObject *)&__pyx_type_4grpc_7_cython_6cygrpc_ServerCertificateConfig) < 0) __PYX_ERR(5, 202, __pyx_L1_error)
  if (__Pyx_setup_reduce((PyObject*)&__pyx_type_4grpc_7_cython_6cygrpc_ServerCertificateConfig) < 0) __PYX_ERR(5, 202, __pyx_L1_error)
  __pyx_ptype_4grpc_7_cython_6cygrpc_ServerCertificateConfig = &__pyx_type_4grpc_7_cython_6cygrpc_ServerCertificateConfig;
  if (PyType_Ready(&__pyx_type_4grpc_7_cython_6cygrpc_ServerCredentials) < 0) __PYX_ERR(5, 217, __pyx_L1_error)
  #if PY_VERSION_HEX < 0x030800B1
  __pyx_type_4grpc_7_cython_6cygrpc_ServerCredentials.tp_print = 0;
  #endif
  if ((CYTHON_USE_TYPE_SLOTS && CYTHON_USE_PYTYPE_LOOKUP) && likely(!__pyx_type_4grpc_7_cython_6cygrpc_ServerCredentials.tp_dictoffset && __pyx_type_4grpc_7_cython_6cygrpc_ServerCredentials.tp_getattro == PyObject_GenericGetAttr)) {
    __pyx_type_4grpc_7_cython_6cygrpc_ServerCredentials.tp_getattro = __Pyx_PyObject_GenericGetAttr;
  }
  if (PyObject_SetAttr(__pyx_m, __pyx_n_s_ServerCredentials, (PyObject *)&__pyx_type_4grpc_7_cython_6cygrpc_ServerCredentials) < 0) __PYX_ERR(5, 217, __pyx_L1_error)
  if (__Pyx_setup_reduce((PyObject*)&__pyx_type_4grpc_7_cython_6cygrpc_ServerCredentials) < 0) __PYX_ERR(5, 217, __pyx_L1_error)
  __pyx_ptype_4grpc_7_cython_6cygrpc_ServerCredentials = &__pyx_type_4grpc_7_cython_6cygrpc_ServerCredentials;
  __pyx_vtabptr_4grpc_7_cython_6cygrpc_LocalChannelCredentials = &__pyx_vtable_4grpc_7_cython_6cygrpc_LocalChannelCredentials;
  __pyx_vtable_4grpc_7_cython_6cygrpc_LocalChannelCredentials.__pyx_base = *__pyx_vtabptr_4grpc_7_cython_6cygrpc_ChannelCredentials;
  __pyx_vtable_4grpc_7_cython_6cygrpc_LocalChannelCredentials.__pyx_base.c = (grpc_channel_credentials *(*)(struct __pyx_obj_4grpc_7_cython_6cygrpc_ChannelCredentials *))__pyx_f_4grpc_7_cython_6cygrpc_23LocalChannelCredentials_c;
  __pyx_type_4grpc_7_cython_6cygrpc_LocalChannelCredentials.tp_base = __pyx_ptype_4grpc_7_cython_6cygrpc_ChannelCredentials;
  if (PyType_Ready(&__pyx_type_4grpc_7_cython_6cygrpc_LocalChannelCredentials) < 0) __PYX_ERR(5, 358, __pyx_L1_error)
  #if PY_VERSION_HEX < 0x030800B1
  __pyx_type_4grpc_7_cython_6cygrpc_LocalChannelCredentials.tp_print = 0;
  #endif
  if ((CYTHON_USE_TYPE_SLOTS && CYTHON_USE_PYTYPE_LOOKUP) && likely(!__pyx_type_4grpc_7_cython_6cygrpc_LocalChannelCredentials.tp_dictoffset && __pyx_type_4grpc_7_cython_6cygrpc_LocalChannelCredentials.tp_getattro == PyObject_GenericGetAttr)) {
    __pyx_type_4grpc_7_cython_6cygrpc_LocalChannelCredentials.tp_getattro = __Pyx_PyObject_GenericGetAttr;
  }
  if (__Pyx_SetVtable(__pyx_type_4grpc_7_cython_6cygrpc_LocalChannelCredentials.tp_dict, __pyx_vtabptr_4grpc_7_cython_6cygrpc_LocalChannelCredentials) < 0) __PYX_ERR(5, 358, __pyx_L1_error)
  if (PyObject_SetAttr(__pyx_m, __pyx_n_s_LocalChannelCredentials, (PyObject *)&__pyx_type_4grpc_7_cython_6cygrpc_LocalChannelCredentials) < 0) __PYX_ERR(5, 358, __pyx_L1_error)
  if (__Pyx_setup_reduce((PyObject*)&__pyx_type_4grpc_7_cython_6cygrpc_LocalChannelCredentials) < 0) __PYX_ERR(5, 358, __pyx_L1_error)
  __pyx_ptype_4grpc_7_cython_6cygrpc_LocalChannelCredentials = &__pyx_type_4grpc_7_cython_6cygrpc_LocalChannelCredentials;
  __pyx_vtabptr_4grpc_7_cython_6cygrpc_ALTSChannelCredentials = &__pyx_vtable_4grpc_7_cython_6cygrpc_ALTSChannelCredentials;
  __pyx_vtable_4grpc_7_cython_6cygrpc_ALTSChannelCredentials.__pyx_base = *__pyx_vtabptr_4grpc_7_cython_6cygrpc_ChannelCredentials;
  __pyx_vtable_4grpc_7_cython_6cygrpc_ALTSChannelCredentials.__pyx_base.c = (grpc_channel_credentials *(*)(struct __pyx_obj_4grpc_7_cython_6cygrpc_ChannelCredentials *))__pyx_f_4grpc_7_cython_6cygrpc_22ALTSChannelCredentials_c;
  __pyx_type_4grpc_7_cython_6cygrpc_ALTSChannelCredentials.tp_base = __pyx_ptype_4grpc_7_cython_6cygrpc_ChannelCredentials;
  if (PyType_Ready(&__pyx_type_4grpc_7_cython_6cygrpc_ALTSChannelCredentials) < 0) __PYX_ERR(5, 397, __pyx_L1_error)
  #if PY_VERSION_HEX < 0x030800B1
  __pyx_type_4grpc_7_cython_6cygrpc_ALTSChannelCredentials.tp_print = 0;
  #endif
  if ((CYTHON_USE_TYPE_SLOTS && CYTHON_USE_PYTYPE_LOOKUP) && likely(!__pyx_type_4grpc_7_cython_6cygrpc_ALTSChannelCredentials.tp_dictoffset && __pyx_type_4grpc_7_cython_6cygrpc_ALTSChannelCredentials.tp_getattro == PyObject_GenericGetAttr)) {
    __pyx_type_4grpc_7_cython_6cygrpc_ALTSChannelCredentials.tp_getattro = __Pyx_PyObject_GenericGetAttr;
  }
  if (__Pyx_SetVtable(__pyx_type_4grpc_7_cython_6cygrpc_ALTSChannelCredentials.tp_dict, __pyx_vtabptr_4grpc_7_cython_6cygrpc_ALTSChannelCredentials) < 0) __PYX_ERR(5, 397, __pyx_L1_error)
  if (PyObject_SetAttr(__pyx_m, __pyx_n_s_ALTSChannelCredentials, (PyObject *)&__pyx_type_4grpc_7_cython_6cygrpc_ALTSChannelCredentials) < 0) __PYX_ERR(5, 397, __pyx_L1_error)
  if (__Pyx_setup_reduce((PyObject*)&__pyx_type_4grpc_7_cython_6cygrpc_ALTSChannelCredentials) < 0) __PYX_ERR(5, 397, __pyx_L1_error)
  __pyx_ptype_4grpc_7_cython_6cygrpc_ALTSChannelCredentials = &__pyx_type_4grpc_7_cython_6cygrpc_ALTSChannelCredentials;
  __pyx_vtabptr_4grpc_7_cython_6cygrpc_CompletionQueue = &__pyx_vtable_4grpc_7_cython_6cygrpc_CompletionQueue;
  __pyx_vtable_4grpc_7_cython_6cygrpc_CompletionQueue._interpret_event = (PyObject *(*)(struct __pyx_obj_4grpc_7_cython_6cygrpc_CompletionQueue *, grpc_event))__pyx_f_4grpc_7_cython_6cygrpc_15CompletionQueue__interpret_event;
  if (PyType_Ready(&__pyx_type_4grpc_7_cython_6cygrpc_CompletionQueue) < 0) __PYX_ERR(15, 67, __pyx_L1_error)
  #if PY_VERSION_HEX < 0x030800B1
  __pyx_type_4grpc_7_cython_6cygrpc_CompletionQueue.tp_print = 0;
  #endif
  if ((CYTHON_USE_TYPE_SLOTS && CYTHON_USE_PYTYPE_LOOKUP) && likely(!__pyx_type_4grpc_7_cython_6cygrpc_CompletionQueue.tp_dictoffset && __pyx_type_4grpc_7_cython_6cygrpc_CompletionQueue.tp_getattro == PyObject_GenericGetAttr)) {
    __pyx_type_4grpc_7_cython_6cygrpc_CompletionQueue.tp_getattro = __Pyx_PyObject_GenericGetAttr;
  }
  if (__Pyx_SetVtable(__pyx_type_4grpc_7_cython_6cygrpc_CompletionQueue.tp_dict, __pyx_vtabptr_4grpc_7_cython_6cygrpc_CompletionQueue) < 0) __PYX_ERR(15, 67, __pyx_L1_error)
  if (PyObject_SetAttr(__pyx_m, __pyx_n_s_CompletionQueue, (PyObject *)&__pyx_type_4grpc_7_cython_6cygrpc_CompletionQueue) < 0) __PYX_ERR(15, 67, __pyx_L1_error)
  if (__Pyx_setup_reduce((PyObject*)&__pyx_type_4grpc_7_cython_6cygrpc_CompletionQueue) < 0) __PYX_ERR(15, 67, __pyx_L1_error)
  __pyx_ptype_4grpc_7_cython_6cygrpc_CompletionQueue = &__pyx_type_4grpc_7_cython_6cygrpc_CompletionQueue;
  if (PyType_Ready(&__pyx_type_4grpc_7_cython_6cygrpc_ConnectivityEvent) < 0) __PYX_ERR(16, 16, __pyx_L1_error)
  #if PY_VERSION_HEX < 0x030800B1
  __pyx_type_4grpc_7_cython_6cygrpc_ConnectivityEvent.tp_print = 0;
  #endif
  if ((CYTHON_USE_TYPE_SLOTS && CYTHON_USE_PYTYPE_LOOKUP) && likely(!__pyx_type_4grpc_7_cython_6cygrpc_ConnectivityEvent.tp_dictoffset && __pyx_type_4grpc_7_cython_6cygrpc_ConnectivityEvent.tp_getattro == PyObject_GenericGetAttr)) {
    __pyx_type_4grpc_7_cython_6cygrpc_ConnectivityEvent.tp_getattro = __Pyx_PyObject_GenericGetAttr;
  }
  if (PyObject_SetAttr(__pyx_m, __pyx_n_s_ConnectivityEvent, (PyObject *)&__pyx_type_4grpc_7_cython_6cygrpc_ConnectivityEvent) < 0) __PYX_ERR(16, 16, __pyx_L1_error)
  if (__Pyx_setup_reduce((PyObject*)&__pyx_type_4grpc_7_cython_6cygrpc_ConnectivityEvent) < 0) __PYX_ERR(16, 16, __pyx_L1_error)
  __pyx_ptype_4grpc_7_cython_6cygrpc_ConnectivityEvent = &__pyx_type_4grpc_7_cython_6cygrpc_ConnectivityEvent;
  if (PyType_Ready(&__pyx_type_4grpc_7_cython_6cygrpc_RequestCallEvent) < 0) __PYX_ERR(16, 25, __pyx_L1_error)
  #if PY_VERSION_HEX < 0x030800B1
  __pyx_type_4grpc_7_cython_6cygrpc_RequestCallEvent.tp_print = 0;
  #endif
  if ((CYTHON_USE_TYPE_SLOTS && CYTHON_USE_PYTYPE_LOOKUP) && likely(!__pyx_type_4grpc_7_cython_6cygrpc_RequestCallEvent.tp_dictoffset && __pyx_type_4grpc_7_cython_6cygrpc_RequestCallEvent.tp_getattro == PyObject_GenericGetAttr)) {
    __pyx_type_4grpc_7_cython_6cygrpc_RequestCallEvent.tp_getattro = __Pyx_PyObject_GenericGetAttr;
  }
  if (PyObject_SetAttr(__pyx_m, __pyx_n_s_RequestCallEvent, (PyObject *)&__pyx_type_4grpc_7_cython_6cygrpc_RequestCallEvent) < 0) __PYX_ERR(16, 25, __pyx_L1_error)
  if (__Pyx_setup_reduce((PyObject*)&__pyx_type_4grpc_7_cython_6cygrpc_RequestCallEvent) < 0) __PYX_ERR(16, 25, __pyx_L1_error)
  __pyx_ptype_4grpc_7_cython_6cygrpc_RequestCallEvent = &__pyx_type_4grpc_7_cython_6cygrpc_RequestCallEvent;
  if (PyType_Ready(&__pyx_type_4grpc_7_cython_6cygrpc_BatchOperationEvent) < 0) __PYX_ERR(16, 38, __pyx_L1_error)
  #if PY_VERSION_HEX < 0x030800B1
  __pyx_type_4grpc_7_cython_6cygrpc_BatchOperationEvent.tp_print = 0;
  #endif
  if ((CYTHON_USE_TYPE_SLOTS && CYTHON_USE_PYTYPE_LOOKUP) && likely(!__pyx_type_4grpc_7_cython_6cygrpc_BatchOperationEvent.tp_dictoffset && __pyx_type_4grpc_7_cython_6cygrpc_BatchOperationEvent.tp_getattro == PyObject_GenericGetAttr)) {
    __pyx_type_4grpc_7_cython_6cygrpc_BatchOperationEvent.tp_getattro = __Pyx_PyObject_GenericGetAttr;
  }
  if (PyObject_SetAttr(__pyx_m, __pyx_n_s_BatchOperationEvent, (PyObject *)&__pyx_type_4grpc_7_cython_6cygrpc_BatchOperationEvent) < 0) __PYX_ERR(16, 38, __pyx_L1_error)
  if (__Pyx_setup_reduce((PyObject*)&__pyx_type_4grpc_7_cython_6cygrpc_BatchOperationEvent) < 0) __PYX_ERR(16, 38, __pyx_L1_error)
  __pyx_ptype_4grpc_7_cython_6cygrpc_BatchOperationEvent = &__pyx_type_4grpc_7_cython_6cygrpc_BatchOperationEvent;
  if (PyType_Ready(&__pyx_type_4grpc_7_cython_6cygrpc_ServerShutdownEvent) < 0) __PYX_ERR(16, 49, __pyx_L1_error)
  #if PY_VERSION_HEX < 0x030800B1
  __pyx_type_4grpc_7_cython_6cygrpc_ServerShutdownEvent.tp_print = 0;
  #endif
  if ((CYTHON_USE_TYPE_SLOTS && CYTHON_USE_PYTYPE_LOOKUP) && likely(!__pyx_type_4grpc_7_cython_6cygrpc_ServerShutdownEvent.tp_dictoffset && __pyx_type_4grpc_7_cython_6cygrpc_ServerShutdownEvent.tp_getattro == PyObject_GenericGetAttr)) {
    __pyx_type_4grpc_7_cython_6cygrpc_ServerShutdownEvent.tp_getattro = __Pyx_PyObject_GenericGetAttr;
  }
  if (PyObject_SetAttr(__pyx_m, __pyx_n_s_ServerShutdownEvent, (PyObject *)&__pyx_type_4grpc_7_cython_6cygrpc_ServerShutdownEvent) < 0) __PYX_ERR(16, 49, __pyx_L1_error)
  if (__Pyx_setup_reduce((PyObject*)&__pyx_type_4grpc_7_cython_6cygrpc_ServerShutdownEvent) < 0) __PYX_ERR(16, 49, __pyx_L1_error)
  __pyx_ptype_4grpc_7_cython_6cygrpc_ServerShutdownEvent = &__pyx_type_4grpc_7_cython_6cygrpc_ServerShutdownEvent;
  __pyx_vtabptr_4grpc_7_cython_6cygrpc_Operation = &__pyx_vtable_4grpc_7_cython_6cygrpc_Operation;
  __pyx_vtable_4grpc_7_cython_6cygrpc_Operation.c = (void (*)(struct __pyx_obj_4grpc_7_cython_6cygrpc_Operation *))__pyx_f_4grpc_7_cython_6cygrpc_9Operation_c;
  __pyx_vtable_4grpc_7_cython_6cygrpc_Operation.un_c = (void (*)(struct __pyx_obj_4grpc_7_cython_6cygrpc_Operation *))__pyx_f_4grpc_7_cython_6cygrpc_9Operation_un_c;
  if (PyType_Ready(&__pyx_type_4grpc_7_cython_6cygrpc_Operation) < 0) __PYX_ERR(19, 16, __pyx_L1_error)
  #if PY_VERSION_HEX < 0x030800B1
  __pyx_type_4grpc_7_cython_6cygrpc_Operation.tp_print = 0;
  #endif
  if ((CYTHON_USE_TYPE_SLOTS && CYTHON_USE_PYTYPE_LOOKUP) && likely(!__pyx_type_4grpc_7_cython_6cygrpc_Operation.tp_dictoffset && __pyx_type_4grpc_7_cython_6cygrpc_Operation.tp_getattro == PyObject_GenericGetAttr)) {
    __pyx_type_4grpc_7_cython_6cygrpc_Operation.tp_getattro = __Pyx_PyObject_GenericGetAttr;
  }
  if (__Pyx_SetVtable(__pyx_type_4grpc_7_cython_6cygrpc_Operation.tp_dict, __pyx_vtabptr_4grpc_7_cython_6cygrpc_Operation) < 0) __PYX_ERR(19, 16, __pyx_L1_error)
  if (PyObject_SetAttr(__pyx_m, __pyx_n_s_Operation, (PyObject *)&__pyx_type_4grpc_7_cython_6cygrpc_Operation) < 0) __PYX_ERR(19, 16, __pyx_L1_error)
  if (__Pyx_setup_reduce((PyObject*)&__pyx_type_4grpc_7_cython_6cygrpc_Operation) < 0) __PYX_ERR(19, 16, __pyx_L1_error)
  __pyx_ptype_4grpc_7_cython_6cygrpc_Operation = &__pyx_type_4grpc_7_cython_6cygrpc_Operation;
  __pyx_vtabptr_4grpc_7_cython_6cygrpc_SendInitialMetadataOperation = &__pyx_vtable_4grpc_7_cython_6cygrpc_SendInitialMetadataOperation;
  __pyx_vtable_4grpc_7_cython_6cygrpc_SendInitialMetadataOperation.__pyx_base = *__pyx_vtabptr_4grpc_7_cython_6cygrpc_Operation;
  __pyx_vtable_4grpc_7_cython_6cygrpc_SendInitialMetadataOperation.__pyx_base.c = (void (*)(struct __pyx_obj_4grpc_7_cython_6cygrpc_Operation *))__pyx_f_4grpc_7_cython_6cygrpc_28SendInitialMetadataOperation_c;
  __pyx_vtable_4grpc_7_cython_6cygrpc_SendInitialMetadataOperation.__pyx_base.un_c = (void (*)(struct __pyx_obj_4grpc_7_cython_6cygrpc_Operation *))__pyx_f_4grpc_7_cython_6cygrpc_28SendInitialMetadataOperation_un_c;
  __pyx_type_4grpc_7_cython_6cygrpc_SendInitialMetadataOperation.tp_base = __pyx_ptype_4grpc_7_cython_6cygrpc_Operation;
  if (PyType_Ready(&__pyx_type_4grpc_7_cython_6cygrpc_SendInitialMetadataOperation) < 0) __PYX_ERR(19, 25, __pyx_L1_error)
  #if PY_VERSION_HEX < 0x030800B1
  __pyx_type_4grpc_7_cython_6cygrpc_SendInitialMetadataOperation.tp_print = 0;
  #endif
  if ((CYTHON_USE_TYPE_SLOTS && CYTHON_USE_PYTYPE_LOOKUP) && likely(!__pyx_type_4grpc_7_cython_6cygrpc_SendInitialMetadataOperation.tp_dictoffset && __pyx_type_4grpc_7_cython_6cygrpc_SendInitialMetadataOperation.tp_getattro == PyObject_GenericGetAttr)) {
    __pyx_type_4grpc_7_cython_6cygrpc_SendInitialMetadataOperation.tp_getattro = __Pyx_PyObject_GenericGetAttr;
  }
  if (__Pyx_SetVtable(__pyx_type_4grpc_7_cython_6cygrpc_SendInitialMetadataOperation.tp_dict, __pyx_vtabptr_4grpc_7_cython_6cygrpc_SendInitialMetadataOperation) < 0) __PYX_ERR(19, 25, __pyx_L1_error)
  if (PyObject_SetAttr(__pyx_m, __pyx_n_s_SendInitialMetadataOperation, (PyObject *)&__pyx_type_4grpc_7_cython_6cygrpc_SendInitialMetadataOperation) < 0) __PYX_ERR(19, 25, __pyx_L1_error)
  if (__Pyx_setup_reduce((PyObject*)&__pyx_type_4grpc_7_cython_6cygrpc_SendInitialMetadataOperation) < 0) __PYX_ERR(19, 25, __pyx_L1_error)
  __pyx_ptype_4grpc_7_cython_6cygrpc_SendInitialMetadataOperation = &__pyx_type_4grpc_7_cython_6cygrpc_SendInitialMetadataOperation;
  __pyx_vtabptr_4grpc_7_cython_6cygrpc_SendMessageOperation = &__pyx_vtable_4grpc_7_cython_6cygrpc_SendMessageOperation;
  __pyx_vtable_4grpc_7_cython_6cygrpc_SendMessageOperation.__pyx_base = *__pyx_vtabptr_4grpc_7_cython_6cygrpc_Operation;
  __pyx_vtable_4grpc_7_cython_6cygrpc_SendMessageOperation.__pyx_base.c = (void (*)(struct __pyx_obj_4grpc_7_cython_6cygrpc_Operation *))__pyx_f_4grpc_7_cython_6cygrpc_20SendMessageOperation_c;
  __pyx_vtable_4grpc_7_cython_6cygrpc_SendMessageOperation.__pyx_base.un_c = (void (*)(struct __pyx_obj_4grpc_7_cython_6cygrpc_Operation *))__pyx_f_4grpc_7_cython_6cygrpc_20SendMessageOperation_un_c;
  __pyx_type_4grpc_7_cython_6cygrpc_SendMessageOperation.tp_base = __pyx_ptype_4grpc_7_cython_6cygrpc_Operation;
  if (PyType_Ready(&__pyx_type_4grpc_7_cython_6cygrpc_SendMessageOperation) < 0) __PYX_ERR(19, 49, __pyx_L1_error)
  #if PY_VERSION_HEX < 0x030800B1
  __pyx_type_4grpc_7_cython_6cygrpc_SendMessageOperation.tp_print = 0;
  #endif
  if ((CYTHON_USE_TYPE_SLOTS && CYTHON_USE_PYTYPE_LOOKUP) && likely(!__pyx_type_4grpc_7_cython_6cygrpc_SendMessageOperation.tp_dictoffset && __pyx_type_4grpc_7_cython_6cygrpc_SendMessageOperation.tp_getattro == PyObject_GenericGetAttr)) {
    __pyx_type_4grpc_7_cython_6cygrpc_SendMessageOperation.tp_getattro = __Pyx_PyObject_GenericGetAttr;
  }
  if (__Pyx_SetVtable(__pyx_type_4grpc_7_cython_6cygrpc_SendMessageOperation.tp_dict, __pyx_vtabptr_4grpc_7_cython_6cygrpc_SendMessageOperation) < 0) __PYX_ERR(19, 49, __pyx_L1_error)
  if (PyObject_SetAttr(__pyx_m, __pyx_n_s_SendMessageOperation, (PyObject *)&__pyx_type_4grpc_7_cython_6cygrpc_SendMessageOperation) < 0) __PYX_ERR(19, 49, __pyx_L1_error)
  if (__Pyx_setup_reduce((PyObject*)&__pyx_type_4grpc_7_cython_6cygrpc_SendMessageOperation) < 0) __PYX_ERR(19, 49, __pyx_L1_error)
  __pyx_ptype_4grpc_7_cython_6cygrpc_SendMessageOperation = &__pyx_type_4grpc_7_cython_6cygrpc_SendMessageOperation;
  __pyx_vtabptr_4grpc_7_cython_6cygrpc_SendCloseFromClientOperation = &__pyx_vtable_4grpc_7_cython_6cygrpc_SendCloseFromClientOperation;
  __pyx_vtable_4grpc_7_cython_6cygrpc_SendCloseFromClientOperation.__pyx_base = *__pyx_vtabptr_4grpc_7_cython_6cygrpc_Operation;
  __pyx_vtable_4grpc_7_cython_6cygrpc_SendCloseFromClientOperation.__pyx_base.c = (void (*)(struct __pyx_obj_4grpc_7_cython_6cygrpc_Operation *))__pyx_f_4grpc_7_cython_6cygrpc_28SendCloseFromClientOperation_c;
  __pyx_vtable_4grpc_7_cython_6cygrpc_SendCloseFromClientOperation.__pyx_base.un_c = (void (*)(struct __pyx_obj_4grpc_7_cython_6cygrpc_Operation *))__pyx_f_4grpc_7_cython_6cygrpc_28SendCloseFromClientOperation_un_c;
  __pyx_type_4grpc_7_cython_6cygrpc_SendCloseFromClientOperation.tp_base = __pyx_ptype_4grpc_7_cython_6cygrpc_Operation;
  if (PyType_Ready(&__pyx_type_4grpc_7_cython_6cygrpc_SendCloseFromClientOperation) < 0) __PYX_ERR(19, 75, __pyx_L1_error)
  #if PY_VERSION_HEX < 0x030800B1
  __pyx_type_4grpc_7_cython_6cygrpc_SendCloseFromClientOperation.tp_print = 0;
  #endif
  if ((CYTHON_USE_TYPE_SLOTS && CYTHON_USE_PYTYPE_LOOKUP) && likely(!__pyx_type_4grpc_7_cython_6cygrpc_SendCloseFromClientOperation.tp_dictoffset && __pyx_type_4grpc_7_cython_6cygrpc_SendCloseFromClientOperation.tp_getattro == PyObject_GenericGetAttr)) {
    __pyx_type_4grpc_7_cython_6cygrpc_SendCloseFromClientOperation.tp_getattro = __Pyx_PyObject_GenericGetAttr;
  }
  if (__Pyx_SetVtable(__pyx_type_4grpc_7_cython_6cygrpc_SendCloseFromClientOperation.tp_dict, __pyx_vtabptr_4grpc_7_cython_6cygrpc_SendCloseFromClientOperation) < 0) __PYX_ERR(19, 75, __pyx_L1_error)
  if (PyObject_SetAttr(__pyx_m, __pyx_n_s_SendCloseFromClientOperation, (PyObject *)&__pyx_type_4grpc_7_cython_6cygrpc_SendCloseFromClientOperation) < 0) __PYX_ERR(19, 75, __pyx_L1_error)
  if (__Pyx_setup_reduce((PyObject*)&__pyx_type_4grpc_7_cython_6cygrpc_SendCloseFromClientOperation) < 0) __PYX_ERR(19, 75, __pyx_L1_error)
  __pyx_ptype_4grpc_7_cython_6cygrpc_SendCloseFromClientOperation = &__pyx_type_4grpc_7_cython_6cygrpc_SendCloseFromClientOperation;
  __pyx_vtabptr_4grpc_7_cython_6cygrpc_SendStatusFromServerOperation = &__pyx_vtable_4grpc_7_cython_6cygrpc_SendStatusFromServerOperation;
  __pyx_vtable_4grpc_7_cython_6cygrpc_SendStatusFromServerOperation.__pyx_base = *__pyx_vtabptr_4grpc_7_cython_6cygrpc_Operation;
  __pyx_vtable_4grpc_7_cython_6cygrpc_SendStatusFromServerOperation.__pyx_base.c = (void (*)(struct __pyx_obj_4grpc_7_cython_6cygrpc_Operation *))__pyx_f_4grpc_7_cython_6cygrpc_29SendStatusFromServerOperation_c;
  __pyx_vtable_4grpc_7_cython_6cygrpc_SendStatusFromServerOperation.__pyx_base.un_c = (void (*)(struct __pyx_obj_4grpc_7_cython_6cygrpc_Operation *))__pyx_f_4grpc_7_cython_6cygrpc_29SendStatusFromServerOperation_un_c;
  __pyx_type_4grpc_7_cython_6cygrpc_SendStatusFromServerOperation.tp_base = __pyx_ptype_4grpc_7_cython_6cygrpc_Operation;
  if (PyType_Ready(&__pyx_type_4grpc_7_cython_6cygrpc_SendStatusFromServerOperation) < 0) __PYX_ERR(19, 91, __pyx_L1_error)
  #if PY_VERSION_HEX < 0x030800B1
  __pyx_type_4grpc_7_cython_6cygrpc_SendStatusFromServerOperation.tp_print = 0;
  #endif
  if ((CYTHON_USE_TYPE_SLOTS && CYTHON_USE_PYTYPE_LOOKUP) && likely(!__pyx_type_4grpc_7_cython_6cygrpc_SendStatusFromServerOperation.tp_dictoffset && __pyx_type_4grpc_7_cython_6cygrpc_SendStatusFromServerOperation.tp_getattro == PyObject_GenericGetAttr)) {
    __pyx_type_4grpc_7_cython_6cygrpc_SendStatusFromServerOperation.tp_getattro = __Pyx_PyObject_GenericGetAttr;
  }
  if (__Pyx_SetVtable(__pyx_type_4grpc_7_cython_6cygrpc_SendStatusFromServerOperation.tp_dict, __pyx_vtabptr_4grpc_7_cython_6cygrpc_SendStatusFromServerOperation) < 0) __PYX_ERR(19, 91, __pyx_L1_error)
  if (PyObject_SetAttr(__pyx_m, __pyx_n_s_SendStatusFromServerOperation, (PyObject *)&__pyx_type_4grpc_7_cython_6cygrpc_SendStatusFromServerOperation) < 0) __PYX_ERR(19, 91, __pyx_L1_error)
  if (__Pyx_setup_reduce((PyObject*)&__pyx_type_4grpc_7_cython_6cygrpc_SendStatusFromServerOperation) < 0) __PYX_ERR(19, 91, __pyx_L1_error)
  __pyx_ptype_4grpc_7_cython_6cygrpc_SendStatusFromServerOperation = &__pyx_type_4grpc_7_cython_6cygrpc_SendStatusFromServerOperation;
  __pyx_vtabptr_4grpc_7_cython_6cygrpc_ReceiveInitialMetadataOperation = &__pyx_vtable_4grpc_7_cython_6cygrpc_ReceiveInitialMetadataOperation;
  __pyx_vtable_4grpc_7_cython_6cygrpc_ReceiveInitialMetadataOperation.__pyx_base = *__pyx_vtabptr_4grpc_7_cython_6cygrpc_Operation;
  __pyx_vtable_4grpc_7_cython_6cygrpc_ReceiveInitialMetadataOperation.__pyx_base.c = (void (*)(struct __pyx_obj_4grpc_7_cython_6cygrpc_Operation *))__pyx_f_4grpc_7_cython_6cygrpc_31ReceiveInitialMetadataOperation_c;
  __pyx_vtable_4grpc_7_cython_6cygrpc_ReceiveInitialMetadataOperation.__pyx_base.un_c = (void (*)(struct __pyx_obj_4grpc_7_cython_6cygrpc_Operation *))__pyx_f_4grpc_7_cython_6cygrpc_31ReceiveInitialMetadataOperation_un_c;
  __pyx_type_4grpc_7_cython_6cygrpc_ReceiveInitialMetadataOperation.tp_base = __pyx_ptype_4grpc_7_cython_6cygrpc_Operation;
  if (PyType_Ready(&__pyx_type_4grpc_7_cython_6cygrpc_ReceiveInitialMetadataOperation) < 0) __PYX_ERR(19, 122, __pyx_L1_error)
  #if PY_VERSION_HEX < 0x030800B1
  __pyx_type_4grpc_7_cython_6cygrpc_ReceiveInitialMetadataOperation.tp_print = 0;
  #endif
  if ((CYTHON_USE_TYPE_SLOTS && CYTHON_USE_PYTYPE_LOOKUP) && likely(!__pyx_type_4grpc_7_cython_6cygrpc_ReceiveInitialMetadataOperation.tp_dictoffset && __pyx_type_4grpc_7_cython_6cygrpc_ReceiveInitialMetadataOperation.tp_getattro == PyObject_GenericGetAttr)) {
    __pyx_type_4grpc_7_cython_6cygrpc_ReceiveInitialMetadataOperation.tp_getattro = __Pyx_PyObject_GenericGetAttr;
  }
  if (__Pyx_SetVtable(__pyx_type_4grpc_7_cython_6cygrpc_ReceiveInitialMetadataOperation.tp_dict, __pyx_vtabptr_4grpc_7_cython_6cygrpc_ReceiveInitialMetadataOperation) < 0) __PYX_ERR(19, 122, __pyx_L1_error)
  if (PyObject_SetAttr(__pyx_m, __pyx_n_s_ReceiveInitialMetadataOperation, (PyObject *)&__pyx_type_4grpc_7_cython_6cygrpc_ReceiveInitialMetadataOperation) < 0) __PYX_ERR(19, 122, __pyx_L1_error)
  if (__Pyx_setup_reduce((PyObject*)&__pyx_type_4grpc_7_cython_6cygrpc_ReceiveInitialMetadataOperation) < 0) __PYX_ERR(19, 122, __pyx_L1_error)
  __pyx_ptype_4grpc_7_cython_6cygrpc_ReceiveInitialMetadataOperation = &__pyx_type_4grpc_7_cython_6cygrpc_ReceiveInitialMetadataOperation;
  __pyx_vtabptr_4grpc_7_cython_6cygrpc_ReceiveMessageOperation = &__pyx_vtable_4grpc_7_cython_6cygrpc_ReceiveMessageOperation;
  __pyx_vtable_4grpc_7_cython_6cygrpc_ReceiveMessageOperation.__pyx_base = *__pyx_vtabptr_4grpc_7_cython_6cygrpc_Operation;
  __pyx_vtable_4grpc_7_cython_6cygrpc_ReceiveMessageOperation.__pyx_base.c = (void (*)(struct __pyx_obj_4grpc_7_cython_6cygrpc_Operation *))__pyx_f_4grpc_7_cython_6cygrpc_23ReceiveMessageOperation_c;
  __pyx_vtable_4grpc_7_cython_6cygrpc_ReceiveMessageOperation.__pyx_base.un_c = (void (*)(struct __pyx_obj_4grpc_7_cython_6cygrpc_Operation *))__pyx_f_4grpc_7_cython_6cygrpc_23ReceiveMessageOperation_un_c;
  __pyx_type_4grpc_7_cython_6cygrpc_ReceiveMessageOperation.tp_base = __pyx_ptype_4grpc_7_cython_6cygrpc_Operation;
  if (PyType_Ready(&__pyx_type_4grpc_7_cython_6cygrpc_ReceiveMessageOperation) < 0) __PYX_ERR(19, 145, __pyx_L1_error)
  #if PY_VERSION_HEX < 0x030800B1
  __pyx_type_4grpc_7_cython_6cygrpc_ReceiveMessageOperation.tp_print = 0;
  #endif
  if ((CYTHON_USE_TYPE_SLOTS && CYTHON_USE_PYTYPE_LOOKUP) && likely(!__pyx_type_4grpc_7_cython_6cygrpc_ReceiveMessageOperation.tp_dictoffset && __pyx_type_4grpc_7_cython_6cygrpc_ReceiveMessageOperation.tp_getattro == PyObject_GenericGetAttr)) {
    __pyx_type_4grpc_7_cython_6cygrpc_ReceiveMessageOperation.tp_getattro = __Pyx_PyObject_GenericGetAttr;
  }
  if (__Pyx_SetVtable(__pyx_type_4grpc_7_cython_6cygrpc_ReceiveMessageOperation.tp_dict, __pyx_vtabptr_4grpc_7_cython_6cygrpc_ReceiveMessageOperation) < 0) __PYX_ERR(19, 145, __pyx_L1_error)
  if (PyObject_SetAttr(__pyx_m, __pyx_n_s_ReceiveMessageOperation, (PyObject *)&__pyx_type_4grpc_7_cython_6cygrpc_ReceiveMessageOperation) < 0) __PYX_ERR(19, 145, __pyx_L1_error)
  if (__Pyx_setup_reduce((PyObject*)&__pyx_type_4grpc_7_cython_6cygrpc_ReceiveMessageOperation) < 0) __PYX_ERR(19, 145, __pyx_L1_error)
  __pyx_ptype_4grpc_7_cython_6cygrpc_ReceiveMessageOperation = &__pyx_type_4grpc_7_cython_6cygrpc_ReceiveMessageOperation;
  __pyx_vtabptr_4grpc_7_cython_6cygrpc_ReceiveStatusOnClientOperation = &__pyx_vtable_4grpc_7_cython_6cygrpc_ReceiveStatusOnClientOperation;
  __pyx_vtable_4grpc_7_cython_6cygrpc_ReceiveStatusOnClientOperation.__pyx_base = *__pyx_vtabptr_4grpc_7_cython_6cygrpc_Operation;
  __pyx_vtable_4grpc_7_cython_6cygrpc_ReceiveStatusOnClientOperation.__pyx_base.c = (void (*)(struct __pyx_obj_4grpc_7_cython_6cygrpc_Operation *))__pyx_f_4grpc_7_cython_6cygrpc_30ReceiveStatusOnClientOperation_c;
  __pyx_vtable_4grpc_7_cython_6cygrpc_ReceiveStatusOnClientOperation.__pyx_base.un_c = (void (*)(struct __pyx_obj_4grpc_7_cython_6cygrpc_Operation *))__pyx_f_4grpc_7_cython_6cygrpc_30ReceiveStatusOnClientOperation_un_c;
  __pyx_type_4grpc_7_cython_6cygrpc_ReceiveStatusOnClientOperation.tp_base = __pyx_ptype_4grpc_7_cython_6cygrpc_Operation;
  if (PyType_Ready(&__pyx_type_4grpc_7_cython_6cygrpc_ReceiveStatusOnClientOperation) < 0) __PYX_ERR(19, 187, __pyx_L1_error)
  #if PY_VERSION_HEX < 0x030800B1
  __pyx_type_4grpc_7_cython_6cygrpc_ReceiveStatusOnClientOperation.tp_print = 0;
  #endif
  if ((CYTHON_USE_TYPE_SLOTS && CYTHON_USE_PYTYPE_LOOKUP) && likely(!__pyx_type_4grpc_7_cython_6cygrpc_ReceiveStatusOnClientOperation.tp_dictoffset && __pyx_type_4grpc_7_cython_6cygrpc_ReceiveStatusOnClientOperation.tp_getattro == PyObject_GenericGetAttr)) {
    __pyx_type_4grpc_7_cython_6cygrpc_ReceiveStatusOnClientOperation.tp_getattro = __Pyx_PyObject_GenericGetAttr;
  }
  if (__Pyx_SetVtable(__pyx_type_4grpc_7_cython_6cygrpc_ReceiveStatusOnClientOperation.tp_dict, __pyx_vtabptr_4grpc_7_cython_6cygrpc_ReceiveStatusOnClientOperation) < 0) __PYX_ERR(19, 187, __pyx_L1_error)
  if (PyObject_SetAttr(__pyx_m, __pyx_n_s_ReceiveStatusOnClientOperation, (PyObject *)&__pyx_type_4grpc_7_cython_6cygrpc_ReceiveStatusOnClientOperation) < 0) __PYX_ERR(19, 187, __pyx_L1_error)
  if (__Pyx_setup_reduce((PyObject*)&__pyx_type_4grpc_7_cython_6cygrpc_ReceiveStatusOnClientOperation) < 0) __PYX_ERR(19, 187, __pyx_L1_error)
  __pyx_ptype_4grpc_7_cython_6cygrpc_ReceiveStatusOnClientOperation = &__pyx_type_4grpc_7_cython_6cygrpc_ReceiveStatusOnClientOperation;
  __pyx_vtabptr_4grpc_7_cython_6cygrpc_ReceiveCloseOnServerOperation = &__pyx_vtable_4grpc_7_cython_6cygrpc_ReceiveCloseOnServerOperation;
  __pyx_vtable_4grpc_7_cython_6cygrpc_ReceiveCloseOnServerOperation.__pyx_base = *__pyx_vtabptr_4grpc_7_cython_6cygrpc_Operation;
  __pyx_vtable_4grpc_7_cython_6cygrpc_ReceiveCloseOnServerOperation.__pyx_base.c = (void (*)(struct __pyx_obj_4grpc_7_cython_6cygrpc_Operation *))__pyx_f_4grpc_7_cython_6cygrpc_29ReceiveCloseOnServerOperation_c;
  __pyx_vtable_4grpc_7_cython_6cygrpc_ReceiveCloseOnServerOperation.__pyx_base.un_c = (void (*)(struct __pyx_obj_4grpc_7_cython_6cygrpc_Operation *))__pyx_f_4grpc_7_cython_6cygrpc_29ReceiveCloseOnServerOperation_un_c;
  __pyx_type_4grpc_7_cython_6cygrpc_ReceiveCloseOnServerOperation.tp_base = __pyx_ptype_4grpc_7_cython_6cygrpc_Operation;
  if (PyType_Ready(&__pyx_type_4grpc_7_cython_6cygrpc_ReceiveCloseOnServerOperation) < 0) __PYX_ERR(19, 233, __pyx_L1_error)
  #if PY_VERSION_HEX < 0x030800B1
  __pyx_type_4grpc_7_cython_6cygrpc_ReceiveCloseOnServerOperation.tp_print = 0;
  #endif
  if ((CYTHON_USE_TYPE_SLOTS && CYTHON_USE_PYTYPE_LOOKUP) && likely(!__pyx_type_4grpc_7_cython_6cygrpc_ReceiveCloseOnServerOperation.tp_dictoffset && __pyx_type_4grpc_7_cython_6cygrpc_ReceiveCloseOnServerOperation.tp_getattro == PyObject_GenericGetAttr)) {
    __pyx_type_4grpc_7_cython_6cygrpc_ReceiveCloseOnServerOperation.tp_getattro = __Pyx_PyObject_GenericGetAttr;
  }
  if (__Pyx_SetVtable(__pyx_type_4grpc_7_cython_6cygrpc_ReceiveCloseOnServerOperation.tp_dict, __pyx_vtabptr_4grpc_7_cython_6cygrpc_ReceiveCloseOnServerOperation) < 0) __PYX_ERR(19, 233, __pyx_L1_error)
  if (PyObject_SetAttr(__pyx_m, __pyx_n_s_ReceiveCloseOnServerOperation, (PyObject *)&__pyx_type_4grpc_7_cython_6cygrpc_ReceiveCloseOnServerOperation) < 0) __PYX_ERR(19, 233, __pyx_L1_error)
  if (__Pyx_setup_reduce((PyObject*)&__pyx_type_4grpc_7_cython_6cygrpc_ReceiveCloseOnServerOperation) < 0) __PYX_ERR(19, 233, __pyx_L1_error)
  __pyx_ptype_4grpc_7_cython_6cygrpc_ReceiveCloseOnServerOperation = &__pyx_type_4grpc_7_cython_6cygrpc_ReceiveCloseOnServerOperation;
  if (PyType_Ready(&__pyx_type_4grpc_7_cython_6cygrpc_CallDetails) < 0) __PYX_ERR(21, 130, __pyx_L1_error)
  #if PY_VERSION_HEX < 0x030800B1
  __pyx_type_4grpc_7_cython_6cygrpc_CallDetails.tp_print = 0;
  #endif
  if ((CYTHON_USE_TYPE_SLOTS && CYTHON_USE_PYTYPE_LOOKUP) && likely(!__pyx_type_4grpc_7_cython_6cygrpc_CallDetails.tp_dictoffset && __pyx_type_4grpc_7_cython_6cygrpc_CallDetails.tp_getattro == PyObject_GenericGetAttr)) {
    __pyx_type_4grpc_7_cython_6cygrpc_CallDetails.tp_getattro = __Pyx_PyObject_GenericGetAttr;
  }
  if (PyObject_SetAttr(__pyx_m, __pyx_n_s_CallDetails, (PyObject *)&__pyx_type_4grpc_7_cython_6cygrpc_CallDetails) < 0) __PYX_ERR(21, 130, __pyx_L1_error)
  if (__Pyx_setup_reduce((PyObject*)&__pyx_type_4grpc_7_cython_6cygrpc_CallDetails) < 0) __PYX_ERR(21, 130, __pyx_L1_error)
  __pyx_ptype_4grpc_7_cython_6cygrpc_CallDetails = &__pyx_type_4grpc_7_cython_6cygrpc_CallDetails;
  if (PyType_Ready(&__pyx_type_4grpc_7_cython_6cygrpc_SslPemKeyCertPair) < 0) __PYX_ERR(21, 155, __pyx_L1_error)
  #if PY_VERSION_HEX < 0x030800B1
  __pyx_type_4grpc_7_cython_6cygrpc_SslPemKeyCertPair.tp_print = 0;
  #endif
  if ((CYTHON_USE_TYPE_SLOTS && CYTHON_USE_PYTYPE_LOOKUP) && likely(!__pyx_type_4grpc_7_cython_6cygrpc_SslPemKeyCertPair.tp_dictoffset && __pyx_type_4grpc_7_cython_6cygrpc_SslPemKeyCertPair.tp_getattro == PyObject_GenericGetAttr)) {
    __pyx_type_4grpc_7_cython_6cygrpc_SslPemKeyCertPair.tp_getattro = __Pyx_PyObject_GenericGetAttr;
  }
  if (PyObject_SetAttr(__pyx_m, __pyx_n_s_SslPemKeyCertPair, (PyObject *)&__pyx_type_4grpc_7_cython_6cygrpc_SslPemKeyCertPair) < 0) __PYX_ERR(21, 155, __pyx_L1_error)
  if (__Pyx_setup_reduce((PyObject*)&__pyx_type_4grpc_7_cython_6cygrpc_SslPemKeyCertPair) < 0) __PYX_ERR(21, 155, __pyx_L1_error)
  __pyx_ptype_4grpc_7_cython_6cygrpc_SslPemKeyCertPair = &__pyx_type_4grpc_7_cython_6cygrpc_SslPemKeyCertPair;
  if (PyType_Ready(&__pyx_type_4grpc_7_cython_6cygrpc_CompressionOptions) < 0) __PYX_ERR(21, 164, __pyx_L1_error)
  #if PY_VERSION_HEX < 0x030800B1
  __pyx_type_4grpc_7_cython_6cygrpc_CompressionOptions.tp_print = 0;
  #endif
  if ((CYTHON_USE_TYPE_SLOTS && CYTHON_USE_PYTYPE_LOOKUP) && likely(!__pyx_type_4grpc_7_cython_6cygrpc_CompressionOptions.tp_dictoffset && __pyx_type_4grpc_7_cython_6cygrpc_CompressionOptions.tp_getattro == PyObject_GenericGetAttr)) {
    __pyx_type_4grpc_7_cython_6cygrpc_CompressionOptions.tp_getattro = __Pyx_PyObject_GenericGetAttr;
  }
  if (PyObject_SetAttr(__pyx_m, __pyx_n_s_CompressionOptions, (PyObject *)&__pyx_type_4grpc_7_cython_6cygrpc_CompressionOptions) < 0) __PYX_ERR(21, 164, __pyx_L1_error)
  if (__Pyx_setup_reduce((PyObject*)&__pyx_type_4grpc_7_cython_6cygrpc_CompressionOptions) < 0) __PYX_ERR(21, 164, __pyx_L1_error)
  __pyx_ptype_4grpc_7_cython_6cygrpc_CompressionOptions = &__pyx_type_4grpc_7_cython_6cygrpc_CompressionOptions;
  __pyx_vtabptr_4grpc_7_cython_6cygrpc_Server = &__pyx_vtable_4grpc_7_cython_6cygrpc_Server;
  __pyx_vtable_4grpc_7_cython_6cygrpc_Server._c_shutdown = (PyObject *(*)(struct __pyx_obj_4grpc_7_cython_6cygrpc_Server *, struct __pyx_obj_4grpc_7_cython_6cygrpc_CompletionQueue *, PyObject *))__pyx_f_4grpc_7_cython_6cygrpc_6Server__c_shutdown;
  __pyx_vtable_4grpc_7_cython_6cygrpc_Server.notify_shutdown_complete = (PyObject *(*)(struct __pyx_obj_4grpc_7_cython_6cygrpc_Server *))__pyx_f_4grpc_7_cython_6cygrpc_6Server_notify_shutdown_complete;
  if (PyType_Ready(&__pyx_type_4grpc_7_cython_6cygrpc_Server) < 0) __PYX_ERR(23, 16, __pyx_L1_error)
  #if PY_VERSION_HEX < 0x030800B1
  __pyx_type_4grpc_7_cython_6cygrpc_Server.tp_print = 0;
  #endif
  if ((CYTHON_USE_TYPE_SLOTS && CYTHON_USE_PYTYPE_LOOKUP) && likely(!__pyx_type_4grpc_7_cython_6cygrpc_Server.tp_dictoffset && __pyx_type_4grpc_7_cython_6cygrpc_Server.tp_getattro == PyObject_GenericGetAttr)) {
    __pyx_type_4grpc_7_cython_6cygrpc_Server.tp_getattro = __Pyx_PyObject_GenericGetAttr;
  }
  if (__Pyx_SetVtable(__pyx_type_4grpc_7_cython_6cygrpc_Server.tp_dict, __pyx_vtabptr_4grpc_7_cython_6cygrpc_Server) < 0) __PYX_ERR(23, 16, __pyx_L1_error)
  if (PyObject_SetAttr(__pyx_m, __pyx_n_s_Server, (PyObject *)&__pyx_type_4grpc_7_cython_6cygrpc_Server) < 0) __PYX_ERR(23, 16, __pyx_L1_error)
  if (__Pyx_setup_reduce((PyObject*)&__pyx_type_4grpc_7_cython_6cygrpc_Server) < 0) __PYX_ERR(23, 16, __pyx_L1_error)
  __pyx_ptype_4grpc_7_cython_6cygrpc_Server = &__pyx_type_4grpc_7_cython_6cygrpc_Server;
  __pyx_vtabptr_4grpc_7_cython_6cygrpc__Tag = &__pyx_vtable_4grpc_7_cython_6cygrpc__Tag;
  __pyx_vtable_4grpc_7_cython_6cygrpc__Tag.event = (PyObject *(*)(struct __pyx_obj_4grpc_7_cython_6cygrpc__Tag *, grpc_event))__pyx_f_4grpc_7_cython_6cygrpc_4_Tag_event;
  if (PyType_Ready(&__pyx_type_4grpc_7_cython_6cygrpc__Tag) < 0) __PYX_ERR(24, 16, __pyx_L1_error)
  #if PY_VERSION_HEX < 0x030800B1
  __pyx_type_4grpc_7_cython_6cygrpc__Tag.tp_print = 0;
  #endif
  if ((CYTHON_USE_TYPE_SLOTS && CYTHON_USE_PYTYPE_LOOKUP) && likely(!__pyx_type_4grpc_7_cython_6cygrpc__Tag.tp_dictoffset && __pyx_type_4grpc_7_cython_6cygrpc__Tag.tp_getattro == PyObject_GenericGetAttr)) {
    __pyx_type_4grpc_7_cython_6cygrpc__Tag.tp_getattro = __Pyx_PyObject_GenericGetAttr;
  }
  if (__Pyx_SetVtable(__pyx_type_4grpc_7_cython_6cygrpc__Tag.tp_dict, __pyx_vtabptr_4grpc_7_cython_6cygrpc__Tag) < 0) __PYX_ERR(24, 16, __pyx_L1_error)
  if (PyObject_SetAttr(__pyx_m, __pyx_n_s_Tag, (PyObject *)&__pyx_type_4grpc_7_cython_6cygrpc__Tag) < 0) __PYX_ERR(24, 16, __pyx_L1_error)
  if (__Pyx_setup_reduce((PyObject*)&__pyx_type_4grpc_7_cython_6cygrpc__Tag) < 0) __PYX_ERR(24, 16, __pyx_L1_error)
  __pyx_ptype_4grpc_7_cython_6cygrpc__Tag = &__pyx_type_4grpc_7_cython_6cygrpc__Tag;
  __pyx_vtabptr_4grpc_7_cython_6cygrpc__ConnectivityTag = &__pyx_vtable_4grpc_7_cython_6cygrpc__ConnectivityTag;
  __pyx_vtable_4grpc_7_cython_6cygrpc__ConnectivityTag.__pyx_base = *__pyx_vtabptr_4grpc_7_cython_6cygrpc__Tag;
  __pyx_vtable_4grpc_7_cython_6cygrpc__ConnectivityTag.__pyx_base.event = (PyObject *(*)(struct __pyx_obj_4grpc_7_cython_6cygrpc__Tag *, grpc_event))__pyx_f_4grpc_7_cython_6cygrpc_16_ConnectivityTag_event__pyx_wrap_1;
  __pyx_vtable_4grpc_7_cython_6cygrpc__ConnectivityTag.event = (struct __pyx_obj_4grpc_7_cython_6cygrpc_ConnectivityEvent *(*)(struct __pyx_obj_4grpc_7_cython_6cygrpc__ConnectivityTag *, grpc_event))__pyx_f_4grpc_7_cython_6cygrpc_16_ConnectivityTag_event;
  __pyx_type_4grpc_7_cython_6cygrpc__ConnectivityTag.tp_base = __pyx_ptype_4grpc_7_cython_6cygrpc__Tag;
  if (PyType_Ready(&__pyx_type_4grpc_7_cython_6cygrpc__ConnectivityTag) < 0) __PYX_ERR(24, 22, __pyx_L1_error)
  #if PY_VERSION_HEX < 0x030800B1
  __pyx_type_4grpc_7_cython_6cygrpc__ConnectivityTag.tp_print = 0;
  #endif
  if ((CYTHON_USE_TYPE_SLOTS && CYTHON_USE_PYTYPE_LOOKUP) && likely(!__pyx_type_4grpc_7_cython_6cygrpc__ConnectivityTag.tp_dictoffset && __pyx_type_4grpc_7_cython_6cygrpc__ConnectivityTag.tp_getattro == PyObject_GenericGetAttr)) {
    __pyx_type_4grpc_7_cython_6cygrpc__ConnectivityTag.tp_getattro = __Pyx_PyObject_GenericGetAttr;
  }
  if (__Pyx_SetVtable(__pyx_type_4grpc_7_cython_6cygrpc__ConnectivityTag.tp_dict, __pyx_vtabptr_4grpc_7_cython_6cygrpc__ConnectivityTag) < 0) __PYX_ERR(24, 22, __pyx_L1_error)
  if (PyObject_SetAttr(__pyx_m, __pyx_n_s_ConnectivityTag, (PyObject *)&__pyx_type_4grpc_7_cython_6cygrpc__ConnectivityTag) < 0) __PYX_ERR(24, 22, __pyx_L1_error)
  if (__Pyx_setup_reduce((PyObject*)&__pyx_type_4grpc_7_cython_6cygrpc__ConnectivityTag) < 0) __PYX_ERR(24, 22, __pyx_L1_error)
  __pyx_ptype_4grpc_7_cython_6cygrpc__ConnectivityTag = &__pyx_type_4grpc_7_cython_6cygrpc__ConnectivityTag;
  __pyx_vtabptr_4grpc_7_cython_6cygrpc__RequestCallTag = &__pyx_vtable_4grpc_7_cython_6cygrpc__RequestCallTag;
  __pyx_vtable_4grpc_7_cython_6cygrpc__RequestCallTag.__pyx_base = *__pyx_vtabptr_4grpc_7_cython_6cygrpc__Tag;
  __pyx_vtable_4grpc_7_cython_6cygrpc__RequestCallTag.__pyx_base.event = (PyObject *(*)(struct __pyx_obj_4grpc_7_cython_6cygrpc__Tag *, grpc_event))__pyx_f_4grpc_7_cython_6cygrpc_15_RequestCallTag_event__pyx_wrap_1;
  __pyx_vtable_4grpc_7_cython_6cygrpc__RequestCallTag.prepare = (void (*)(struct __pyx_obj_4grpc_7_cython_6cygrpc__RequestCallTag *))__pyx_f_4grpc_7_cython_6cygrpc_15_RequestCallTag_prepare;
  __pyx_vtable_4grpc_7_cython_6cygrpc__RequestCallTag.event = (struct __pyx_obj_4grpc_7_cython_6cygrpc_RequestCallEvent *(*)(struct __pyx_obj_4grpc_7_cython_6cygrpc__RequestCallTag *, grpc_event))__pyx_f_4grpc_7_cython_6cygrpc_15_RequestCallTag_event;
  __pyx_type_4grpc_7_cython_6cygrpc__RequestCallTag.tp_base = __pyx_ptype_4grpc_7_cython_6cygrpc__Tag;
  if (PyType_Ready(&__pyx_type_4grpc_7_cython_6cygrpc__RequestCallTag) < 0) __PYX_ERR(24, 31, __pyx_L1_error)
  #if PY_VERSION_HEX < 0x030800B1
  __pyx_type_4grpc_7_cython_6cygrpc__RequestCallTag.tp_print = 0;
  #endif
  if ((CYTHON_USE_TYPE_SLOTS && CYTHON_USE_PYTYPE_LOOKUP) && likely(!__pyx_type_4grpc_7_cython_6cygrpc__RequestCallTag.tp_dictoffset && __pyx_type_4grpc_7_cython_6cygrpc__RequestCallTag.tp_getattro == PyObject_GenericGetAttr)) {
    __pyx_type_4grpc_7_cython_6cygrpc__RequestCallTag.tp_getattro = __Pyx_PyObject_GenericGetAttr;
  }
  if (__Pyx_SetVtable(__pyx_type_4grpc_7_cython_6cygrpc__RequestCallTag.tp_dict, __pyx_vtabptr_4grpc_7_cython_6cygrpc__RequestCallTag) < 0) __PYX_ERR(24, 31, __pyx_L1_error)
  if (PyObject_SetAttr(__pyx_m, __pyx_n_s_RequestCallTag, (PyObject *)&__pyx_type_4grpc_7_cython_6cygrpc__RequestCallTag) < 0) __PYX_ERR(24, 31, __pyx_L1_error)
  if (__Pyx_setup_reduce((PyObject*)&__pyx_type_4grpc_7_cython_6cygrpc__RequestCallTag) < 0) __PYX_ERR(24, 31, __pyx_L1_error)
  __pyx_ptype_4grpc_7_cython_6cygrpc__RequestCallTag = &__pyx_type_4grpc_7_cython_6cygrpc__RequestCallTag;
  __pyx_vtabptr_4grpc_7_cython_6cygrpc__BatchOperationTag = &__pyx_vtable_4grpc_7_cython_6cygrpc__BatchOperationTag;
  __pyx_vtable_4grpc_7_cython_6cygrpc__BatchOperationTag.__pyx_base = *__pyx_vtabptr_4grpc_7_cython_6cygrpc__Tag;
  __pyx_vtable_4grpc_7_cython_6cygrpc__BatchOperationTag.__pyx_base.event = (PyObject *(*)(struct __pyx_obj_4grpc_7_cython_6cygrpc__Tag *, grpc_event))__pyx_f_4grpc_7_cython_6cygrpc_18_BatchOperationTag_event__pyx_wrap_1;
  __pyx_vtable_4grpc_7_cython_6cygrpc__BatchOperationTag.prepare = (void (*)(struct __pyx_obj_4grpc_7_cython_6cygrpc__BatchOperationTag *))__pyx_f_4grpc_7_cython_6cygrpc_18_BatchOperationTag_prepare;
  __pyx_vtable_4grpc_7_cython_6cygrpc__BatchOperationTag.event = (struct __pyx_obj_4grpc_7_cython_6cygrpc_BatchOperationEvent *(*)(struct __pyx_obj_4grpc_7_cython_6cygrpc__BatchOperationTag *, grpc_event))__pyx_f_4grpc_7_cython_6cygrpc_18_BatchOperationTag_event;
  __pyx_type_4grpc_7_cython_6cygrpc__BatchOperationTag.tp_base = __pyx_ptype_4grpc_7_cython_6cygrpc__Tag;
  if (PyType_Ready(&__pyx_type_4grpc_7_cython_6cygrpc__BatchOperationTag) < 0) __PYX_ERR(24, 51, __pyx_L1_error)
  #if PY_VERSION_HEX < 0x030800B1
  __pyx_type_4grpc_7_cython_6cygrpc__BatchOperationTag.tp_print = 0;
  #endif
  if ((CYTHON_USE_TYPE_SLOTS && CYTHON_USE_PYTYPE_LOOKUP) && likely(!__pyx_type_4grpc_7_cython_6cygrpc__BatchOperationTag.tp_dictoffset && __pyx_type_4grpc_7_cython_6cygrpc__BatchOperationTag.tp_getattro == PyObject_GenericGetAttr)) {
    __pyx_type_4grpc_7_cython_6cygrpc__BatchOperationTag.tp_getattro = __Pyx_PyObject_GenericGetAttr;
  }
  if (__Pyx_SetVtable(__pyx_type_4grpc_7_cython_6cygrpc__BatchOperationTag.tp_dict, __pyx_vtabptr_4grpc_7_cython_6cygrpc__BatchOperationTag) < 0) __PYX_ERR(24, 51, __pyx_L1_error)
  if (PyObject_SetAttr(__pyx_m, __pyx_n_s_BatchOperationTag, (PyObject *)&__pyx_type_4grpc_7_cython_6cygrpc__BatchOperationTag) < 0) __PYX_ERR(24, 51, __pyx_L1_error)
  if (__Pyx_setup_reduce((PyObject*)&__pyx_type_4grpc_7_cython_6cygrpc__BatchOperationTag) < 0) __PYX_ERR(24, 51, __pyx_L1_error)
  __pyx_ptype_4grpc_7_cython_6cygrpc__BatchOperationTag = &__pyx_type_4grpc_7_cython_6cygrpc__BatchOperationTag;
  __pyx_vtabptr_4grpc_7_cython_6cygrpc__ServerShutdownTag = &__pyx_vtable_4grpc_7_cython_6cygrpc__ServerShutdownTag;
  __pyx_vtable_4grpc_7_cython_6cygrpc__ServerShutdownTag.__pyx_base = *__pyx_vtabptr_4grpc_7_cython_6cygrpc__Tag;
  __pyx_vtable_4grpc_7_cython_6cygrpc__ServerShutdownTag.__pyx_base.event = (PyObject *(*)(struct __pyx_obj_4grpc_7_cython_6cygrpc__Tag *, grpc_event))__pyx_f_4grpc_7_cython_6cygrpc_18_ServerShutdownTag_event__pyx_wrap_1;
  __pyx_vtable_4grpc_7_cython_6cygrpc__ServerShutdownTag.event = (struct __pyx_obj_4grpc_7_cython_6cygrpc_ServerShutdownEvent *(*)(struct __pyx_obj_4grpc_7_cython_6cygrpc__ServerShutdownTag *, grpc_event))__pyx_f_4grpc_7_cython_6cygrpc_18_ServerShutdownTag_event;
  __pyx_type_4grpc_7_cython_6cygrpc__ServerShutdownTag.tp_base = __pyx_ptype_4grpc_7_cython_6cygrpc__Tag;
  if (PyType_Ready(&__pyx_type_4grpc_7_cython_6cygrpc__ServerShutdownTag) < 0) __PYX_ERR(24, 80, __pyx_L1_error)
  #if PY_VERSION_HEX < 0x030800B1
  __pyx_type_4grpc_7_cython_6cygrpc__ServerShutdownTag.tp_print = 0;
  #endif
  if ((CYTHON_USE_TYPE_SLOTS && CYTHON_USE_PYTYPE_LOOKUP) && likely(!__pyx_type_4grpc_7_cython_6cygrpc__ServerShutdownTag.tp_dictoffset && __pyx_type_4grpc_7_cython_6cygrpc__ServerShutdownTag.tp_getattro == PyObject_GenericGetAttr)) {
    __pyx_type_4grpc_7_cython_6cygrpc__ServerShutdownTag.tp_getattro = __Pyx_PyObject_GenericGetAttr;
  }
  if (__Pyx_SetVtable(__pyx_type_4grpc_7_cython_6cygrpc__ServerShutdownTag.tp_dict, __pyx_vtabptr_4grpc_7_cython_6cygrpc__ServerShutdownTag) < 0) __PYX_ERR(24, 80, __pyx_L1_error)
  if (PyObject_SetAttr(__pyx_m, __pyx_n_s_ServerShutdownTag, (PyObject *)&__pyx_type_4grpc_7_cython_6cygrpc__ServerShutdownTag) < 0) __PYX_ERR(24, 80, __pyx_L1_error)
  if (__Pyx_setup_reduce((PyObject*)&__pyx_type_4grpc_7_cython_6cygrpc__ServerShutdownTag) < 0) __PYX_ERR(24, 80, __pyx_L1_error)
  __pyx_ptype_4grpc_7_cython_6cygrpc__ServerShutdownTag = &__pyx_type_4grpc_7_cython_6cygrpc__ServerShutdownTag;
  if (PyType_Ready(&__pyx_type_4grpc_7_cython_6cygrpc_TimerWrapper) < 0) __PYX_ERR(6, 307, __pyx_L1_error)
  #if PY_VERSION_HEX < 0x030800B1
  __pyx_type_4grpc_7_cython_6cygrpc_TimerWrapper.tp_print = 0;
  #endif
  if ((CYTHON_USE_TYPE_SLOTS && CYTHON_USE_PYTYPE_LOOKUP) && likely(!__pyx_type_4grpc_7_cython_6cygrpc_TimerWrapper.tp_dictoffset && __pyx_type_4grpc_7_cython_6cygrpc_TimerWrapper.tp_getattro == PyObject_GenericGetAttr)) {
    __pyx_type_4grpc_7_cython_6cygrpc_TimerWrapper.tp_getattro = __Pyx_PyObject_GenericGetAttr;
  }
  if (PyObject_SetAttr(__pyx_m, __pyx_n_s_TimerWrapper, (PyObject *)&__pyx_type_4grpc_7_cython_6cygrpc_TimerWrapper) < 0) __PYX_ERR(6, 307, __pyx_L1_error)
  if (__Pyx_setup_reduce((PyObject*)&__pyx_type_4grpc_7_cython_6cygrpc_TimerWrapper) < 0) __PYX_ERR(6, 307, __pyx_L1_error)
  __pyx_ptype_4grpc_7_cython_6cygrpc_TimerWrapper = &__pyx_type_4grpc_7_cython_6cygrpc_TimerWrapper;
  if (PyType_Ready(&__pyx_type_4grpc_7_cython_6cygrpc_SocketWrapper) < 0) __PYX_ERR(6, 33, __pyx_L1_error)
  #if PY_VERSION_HEX < 0x030800B1
  __pyx_type_4grpc_7_cython_6cygrpc_SocketWrapper.tp_print = 0;
  #endif
  if ((CYTHON_USE_TYPE_SLOTS && CYTHON_USE_PYTYPE_LOOKUP) && likely(!__pyx_type_4grpc_7_cython_6cygrpc_SocketWrapper.tp_dictoffset && __pyx_type_4grpc_7_cython_6cygrpc_SocketWrapper.tp_getattro == PyObject_GenericGetAttr)) {
    __pyx_type_4grpc_7_cython_6cygrpc_SocketWrapper.tp_getattro = __Pyx_PyObject_GenericGetAttr;
  }
  if (PyObject_SetAttr(__pyx_m, __pyx_n_s_SocketWrapper, (PyObject *)&__pyx_type_4grpc_7_cython_6cygrpc_SocketWrapper) < 0) __PYX_ERR(6, 33, __pyx_L1_error)
  if (__Pyx_setup_reduce((PyObject*)&__pyx_type_4grpc_7_cython_6cygrpc_SocketWrapper) < 0) __PYX_ERR(6, 33, __pyx_L1_error)
  __pyx_ptype_4grpc_7_cython_6cygrpc_SocketWrapper = &__pyx_type_4grpc_7_cython_6cygrpc_SocketWrapper;
  if (PyType_Ready(&__pyx_type_4grpc_7_cython_6cygrpc_ResolveWrapper) < 0) __PYX_ERR(6, 263, __pyx_L1_error)
  #if PY_VERSION_HEX < 0x030800B1
  __pyx_type_4grpc_7_cython_6cygrpc_ResolveWrapper.tp_print = 0;
  #endif
  if ((CYTHON_USE_TYPE_SLOTS && CYTHON_USE_PYTYPE_LOOKUP) && likely(!__pyx_type_4grpc_7_cython_6cygrpc_ResolveWrapper.tp_dictoffset && __pyx_type_4grpc_7_cython_6cygrpc_ResolveWrapper.tp_getattro == PyObject_GenericGetAttr)) {
    __pyx_type_4grpc_7_cython_6cygrpc_ResolveWrapper.tp_getattro = __Pyx_PyObject_GenericGetAttr;
  }
  if (PyObject_SetAttr(__pyx_m, __pyx_n_s_ResolveWrapper, (PyObject *)&__pyx_type_4grpc_7_cython_6cygrpc_ResolveWrapper) < 0) __PYX_ERR(6, 263, __pyx_L1_error)
  if (__Pyx_setup_reduce((PyObject*)&__pyx_type_4grpc_7_cython_6cygrpc_ResolveWrapper) < 0) __PYX_ERR(6, 263, __pyx_L1_error)
  __pyx_ptype_4grpc_7_cython_6cygrpc_ResolveWrapper = &__pyx_type_4grpc_7_cython_6cygrpc_ResolveWrapper;
  __pyx_vtabptr_4grpc_7_cython_6cygrpc_BaseCompletionQueue = &__pyx_vtable_4grpc_7_cython_6cygrpc_BaseCompletionQueue;
  __pyx_vtable_4grpc_7_cython_6cygrpc_BaseCompletionQueue.c_ptr = (grpc_completion_queue *(*)(struct __pyx_obj_4grpc_7_cython_6cygrpc_BaseCompletionQueue *))__pyx_f_4grpc_7_cython_6cygrpc_19BaseCompletionQueue_c_ptr;
  if (PyType_Ready(&__pyx_type_4grpc_7_cython_6cygrpc_BaseCompletionQueue) < 0) __PYX_ERR(8, 38, __pyx_L1_error)
  #if PY_VERSION_HEX < 0x030800B1
  __pyx_type_4grpc_7_cython_6cygrpc_BaseCompletionQueue.tp_print = 0;
  #endif
  if ((CYTHON_USE_TYPE_SLOTS && CYTHON_USE_PYTYPE_LOOKUP) && likely(!__pyx_type_4grpc_7_cython_6cygrpc_BaseCompletionQueue.tp_dictoffset && __pyx_type_4grpc_7_cython_6cygrpc_BaseCompletionQueue.tp_getattro == PyObject_GenericGetAttr)) {
    __pyx_type_4grpc_7_cython_6cygrpc_BaseCompletionQueue.tp_getattro = __Pyx_PyObject_GenericGetAttr;
  }
  if (__Pyx_SetVtable(__pyx_type_4grpc_7_cython_6cygrpc_BaseCompletionQueue.tp_dict, __pyx_vtabptr_4grpc_7_cython_6cygrpc_BaseCompletionQueue) < 0) __PYX_ERR(8, 38, __pyx_L1_error)
  if (PyObject_SetAttr(__pyx_m, __pyx_n_s_BaseCompletionQueue, (PyObject *)&__pyx_type_4grpc_7_cython_6cygrpc_BaseCompletionQueue) < 0) __PYX_ERR(8, 38, __pyx_L1_error)
  if (__Pyx_setup_reduce((PyObject*)&__pyx_type_4grpc_7_cython_6cygrpc_BaseCompletionQueue) < 0) __PYX_ERR(8, 38, __pyx_L1_error)
  __pyx_ptype_4grpc_7_cython_6cygrpc_BaseCompletionQueue = &__pyx_type_4grpc_7_cython_6cygrpc_BaseCompletionQueue;
  if (PyType_Ready(&__pyx_type_4grpc_7_cython_6cygrpc__BoundEventLoop) < 0) __PYX_ERR(8, 44, __pyx_L1_error)
  #if PY_VERSION_HEX < 0x030800B1
  __pyx_type_4grpc_7_cython_6cygrpc__BoundEventLoop.tp_print = 0;
  #endif
  if ((CYTHON_USE_TYPE_SLOTS && CYTHON_USE_PYTYPE_LOOKUP) && likely(!__pyx_type_4grpc_7_cython_6cygrpc__BoundEventLoop.tp_dictoffset && __pyx_type_4grpc_7_cython_6cygrpc__BoundEventLoop.tp_getattro == PyObject_GenericGetAttr)) {
    __pyx_type_4grpc_7_cython_6cygrpc__BoundEventLoop.tp_getattro = __Pyx_PyObject_GenericGetAttr;
  }
  if (PyObject_SetAttr(__pyx_m, __pyx_n_s_BoundEventLoop, (PyObject *)&__pyx_type_4grpc_7_cython_6cygrpc__BoundEventLoop) < 0) __PYX_ERR(8, 44, __pyx_L1_error)
  if (__Pyx_setup_reduce((PyObject*)&__pyx_type_4grpc_7_cython_6cygrpc__BoundEventLoop) < 0) __PYX_ERR(8, 44, __pyx_L1_error)
  __pyx_ptype_4grpc_7_cython_6cygrpc__BoundEventLoop = &__pyx_type_4grpc_7_cython_6cygrpc__BoundEventLoop;
  __pyx_vtabptr_4grpc_7_cython_6cygrpc_PollerCompletionQueue = &__pyx_vtable_4grpc_7_cython_6cygrpc_PollerCompletionQueue;
  __pyx_vtable_4grpc_7_cython_6cygrpc_PollerCompletionQueue.__pyx_base = *__pyx_vtabptr_4grpc_7_cython_6cygrpc_BaseCompletionQueue;
  __pyx_vtable_4grpc_7_cython_6cygrpc_PollerCompletionQueue._poll = (void (*)(struct __pyx_obj_4grpc_7_cython_6cygrpc_PollerCompletionQueue *))__pyx_f_4grpc_7_cython_6cygrpc_21PollerCompletionQueue__poll;
  __pyx_vtable_4grpc_7_cython_6cygrpc_PollerCompletionQueue.shutdown = (PyObject *(*)(struct __pyx_obj_4grpc_7_cython_6cygrpc_PollerCompletionQueue *))__pyx_f_4grpc_7_cython_6cygrpc_21PollerCompletionQueue_shutdown;
  __pyx_type_4grpc_7_cython_6cygrpc_PollerCompletionQueue.tp_base = __pyx_ptype_4grpc_7_cython_6cygrpc_BaseCompletionQueue;
  if (PyType_Ready(&__pyx_type_4grpc_7_cython_6cygrpc_PollerCompletionQueue) < 0) __PYX_ERR(8, 72, __pyx_L1_error)
  #if PY_VERSION_HEX < 0x030800B1
  __pyx_type_4grpc_7_cython_6cygrpc_PollerCompletionQueue.tp_print = 0;
  #endif
  if ((CYTHON_USE_TYPE_SLOTS && CYTHON_USE_PYTYPE_LOOKUP) && likely(!__pyx_type_4grpc_7_cython_6cygrpc_PollerCompletionQueue.tp_dictoffset && __pyx_type_4grpc_7_cython_6cygrpc_PollerCompletionQueue.tp_getattro == PyObject_GenericGetAttr)) {
    __pyx_type_4grpc_7_cython_6cygrpc_PollerCompletionQueue.tp_getattro = __Pyx_PyObject_GenericGetAttr;
  }
  if (__Pyx_SetVtable(__pyx_type_4grpc_7_cython_6cygrpc_PollerCompletionQueue.tp_dict, __pyx_vtabptr_4grpc_7_cython_6cygrpc_PollerCompletionQueue) < 0) __PYX_ERR(8, 72, __pyx_L1_error)
  if (PyObject_SetAttr(__pyx_m, __pyx_n_s_PollerCompletionQueue, (PyObject *)&__pyx_type_4grpc_7_cython_6cygrpc_PollerCompletionQueue) < 0) __PYX_ERR(8, 72, __pyx_L1_error)
  if (__Pyx_setup_reduce((PyObject*)&__pyx_type_4grpc_7_cython_6cygrpc_PollerCompletionQueue) < 0) __PYX_ERR(8, 72, __pyx_L1_error)
  __pyx_ptype_4grpc_7_cython_6cygrpc_PollerCompletionQueue = &__pyx_type_4grpc_7_cython_6cygrpc_PollerCompletionQueue;
  __pyx_vtabptr_4grpc_7_cython_6cygrpc_AioRpcStatus = &__pyx_vtable_4grpc_7_cython_6cygrpc_AioRpcStatus;
  __pyx_vtable_4grpc_7_cython_6cygrpc_AioRpcStatus.code = (grpc_status_code (*)(struct __pyx_obj_4grpc_7_cython_6cygrpc_AioRpcStatus *, int __pyx_skip_dispatch))__pyx_f_4grpc_7_cython_6cygrpc_12AioRpcStatus_code;
  __pyx_vtable_4grpc_7_cython_6cygrpc_AioRpcStatus.details = (PyObject *(*)(struct __pyx_obj_4grpc_7_cython_6cygrpc_AioRpcStatus *, int __pyx_skip_dispatch))__pyx_f_4grpc_7_cython_6cygrpc_12AioRpcStatus_details;
  __pyx_vtable_4grpc_7_cython_6cygrpc_AioRpcStatus.trailing_metadata = (PyObject *(*)(struct __pyx_obj_4grpc_7_cython_6cygrpc_AioRpcStatus *, int __pyx_skip_dispatch))__pyx_f_4grpc_7_cython_6cygrpc_12AioRpcStatus_trailing_metadata;
  __pyx_vtable_4grpc_7_cython_6cygrpc_AioRpcStatus.debug_error_string = (PyObject *(*)(struct __pyx_obj_4grpc_7_cython_6cygrpc_AioRpcStatus *, int __pyx_skip_dispatch))__pyx_f_4grpc_7_cython_6cygrpc_12AioRpcStatus_debug_error_string;
  __pyx_vtable_4grpc_7_cython_6cygrpc_AioRpcStatus.c_code = (grpc_status_code (*)(struct __pyx_obj_4grpc_7_cython_6cygrpc_AioRpcStatus *))__pyx_f_4grpc_7_cython_6cygrpc_12AioRpcStatus_c_code;
  __pyx_type_4grpc_7_cython_6cygrpc_AioRpcStatus.tp_base = (&((PyTypeObject*)PyExc_Exception)[0]);
  if (PyType_Ready(&__pyx_type_4grpc_7_cython_6cygrpc_AioRpcStatus) < 0) __PYX_ERR(29, 17, __pyx_L1_error)
  #if PY_VERSION_HEX < 0x030800B1
  __pyx_type_4grpc_7_cython_6cygrpc_AioRpcStatus.tp_print = 0;
  #endif
  if ((CYTHON_USE_TYPE_SLOTS && CYTHON_USE_PYTYPE_LOOKUP) && likely(!__pyx_type_4grpc_7_cython_6cygrpc_AioRpcStatus.tp_dictoffset && __pyx_type_4grpc_7_cython_6cygrpc_AioRpcStatus.tp_getattro == PyObject_GenericGetAttr)) {
    __pyx_type_4grpc_7_cython_6cygrpc_AioRpcStatus.tp_getattro = __Pyx_PyObject_GenericGetAttr;
  }
  if (__Pyx_SetVtable(__pyx_type_4grpc_7_cython_6cygrpc_AioRpcStatus.tp_dict, __pyx_vtabptr_4grpc_7_cython_6cygrpc_AioRpcStatus) < 0) __PYX_ERR(29, 17, __pyx_L1_error)
  if (PyObject_SetAttr(__pyx_m, __pyx_n_s_AioRpcStatus, (PyObject *)&__pyx_type_4grpc_7_cython_6cygrpc_AioRpcStatus) < 0) __PYX_ERR(29, 17, __pyx_L1_error)
  if (__Pyx_setup_reduce((PyObject*)&__pyx_type_4grpc_7_cython_6cygrpc_AioRpcStatus) < 0) __PYX_ERR(29, 17, __pyx_L1_error)
  __pyx_ptype_4grpc_7_cython_6cygrpc_AioRpcStatus = &__pyx_type_4grpc_7_cython_6cygrpc_AioRpcStatus;
  if (PyType_Ready(&__pyx_type_4grpc_7_cython_6cygrpc__AioState) < 0) __PYX_ERR(32, 36, __pyx_L1_error)
  #if PY_VERSION_HEX < 0x030800B1
  __pyx_type_4grpc_7_cython_6cygrpc__AioState.tp_print = 0;
  #endif
  if ((CYTHON_USE_TYPE_SLOTS && CYTHON_USE_PYTYPE_LOOKUP) && likely(!__pyx_type_4grpc_7_cython_6cygrpc__AioState.tp_dictoffset && __pyx_type_4grpc_7_cython_6cygrpc__AioState.tp_getattro == PyObject_GenericGetAttr)) {
    __pyx_type_4grpc_7_cython_6cygrpc__AioState.tp_getattro = __Pyx_PyObject_GenericGetAttr;
  }
  if (PyObject_SetAttr(__pyx_m, __pyx_n_s_AioState, (PyObject *)&__pyx_type_4grpc_7_cython_6cygrpc__AioState) < 0) __PYX_ERR(32, 36, __pyx_L1_error)
  if (__Pyx_setup_reduce((PyObject*)&__pyx_type_4grpc_7_cython_6cygrpc__AioState) < 0) __PYX_ERR(32, 36, __pyx_L1_error)
  __pyx_ptype_4grpc_7_cython_6cygrpc__AioState = &__pyx_type_4grpc_7_cython_6cygrpc__AioState;
  __pyx_vtabptr_4grpc_7_cython_6cygrpc_CallbackFailureHandler = &__pyx_vtable_4grpc_7_cython_6cygrpc_CallbackFailureHandler;
  __pyx_vtable_4grpc_7_cython_6cygrpc_CallbackFailureHandler.handle = (PyObject *(*)(struct __pyx_obj_4grpc_7_cython_6cygrpc_CallbackFailureHandler *, PyObject *))__pyx_f_4grpc_7_cython_6cygrpc_22CallbackFailureHandler_handle;
  if (PyType_Ready(&__pyx_type_4grpc_7_cython_6cygrpc_CallbackFailureHandler) < 0) __PYX_ERR(31, 16, __pyx_L1_error)
  #if PY_VERSION_HEX < 0x030800B1
  __pyx_type_4grpc_7_cython_6cygrpc_CallbackFailureHandler.tp_print = 0;
  #endif
  if ((CYTHON_USE_TYPE_SLOTS && CYTHON_USE_PYTYPE_LOOKUP) && likely(!__pyx_type_4grpc_7_cython_6cygrpc_CallbackFailureHandler.tp_dictoffset && __pyx_type_4grpc_7_cython_6cygrpc_CallbackFailureHandler.tp_getattro == PyObject_GenericGetAttr)) {
    __pyx_type_4grpc_7_cython_6cygrpc_CallbackFailureHandler.tp_getattro = __Pyx_PyObject_GenericGetAttr;
  }
  if (__Pyx_SetVtable(__pyx_type_4grpc_7_cython_6cygrpc_CallbackFailureHandler.tp_dict, __pyx_vtabptr_4grpc_7_cython_6cygrpc_CallbackFailureHandler) < 0) __PYX_ERR(31, 16, __pyx_L1_error)
  if (PyObject_SetAttr(__pyx_m, __pyx_n_s_CallbackFailureHandler, (PyObject *)&__pyx_type_4grpc_7_cython_6cygrpc_CallbackFailureHandler) < 0) __PYX_ERR(31, 16, __pyx_L1_error)
  if (__Pyx_setup_reduce((PyObject*)&__pyx_type_4grpc_7_cython_6cygrpc_CallbackFailureHandler) < 0) __PYX_ERR(31, 16, __pyx_L1_error)
  __pyx_ptype_4grpc_7_cython_6cygrpc_CallbackFailureHandler = &__pyx_type_4grpc_7_cython_6cygrpc_CallbackFailureHandler;
  __pyx_vtabptr_4grpc_7_cython_6cygrpc_CallbackWrapper = &__pyx_vtable_4grpc_7_cython_6cygrpc_CallbackWrapper;
  __pyx_vtable_4grpc_7_cython_6cygrpc_CallbackWrapper.functor_run = (void (*)(grpc_completion_queue_functor *, int))__pyx_f_4grpc_7_cython_6cygrpc_15CallbackWrapper_functor_run;
  __pyx_vtable_4grpc_7_cython_6cygrpc_CallbackWrapper.c_functor = (grpc_completion_queue_functor *(*)(struct __pyx_obj_4grpc_7_cython_6cygrpc_CallbackWrapper *))__pyx_f_4grpc_7_cython_6cygrpc_15CallbackWrapper_c_functor;
  if (PyType_Ready(&__pyx_type_4grpc_7_cython_6cygrpc_CallbackWrapper) < 0) __PYX_ERR(31, 33, __pyx_L1_error)
  #if PY_VERSION_HEX < 0x030800B1
  __pyx_type_4grpc_7_cython_6cygrpc_CallbackWrapper.tp_print = 0;
  #endif
  if ((CYTHON_USE_TYPE_SLOTS && CYTHON_USE_PYTYPE_LOOKUP) && likely(!__pyx_type_4grpc_7_cython_6cygrpc_CallbackWrapper.tp_dictoffset && __pyx_type_4grpc_7_cython_6cygrpc_CallbackWrapper.tp_getattro == PyObject_GenericGetAttr)) {
    __pyx_type_4grpc_7_cython_6cygrpc_CallbackWrapper.tp_getattro = __Pyx_PyObject_GenericGetAttr;
  }
  if (__Pyx_SetVtable(__pyx_type_4grpc_7_cython_6cygrpc_CallbackWrapper.tp_dict, __pyx_vtabptr_4grpc_7_cython_6cygrpc_CallbackWrapper) < 0) __PYX_ERR(31, 33, __pyx_L1_error)
  if (PyObject_SetAttr(__pyx_m, __pyx_n_s_CallbackWrapper, (PyObject *)&__pyx_type_4grpc_7_cython_6cygrpc_CallbackWrapper) < 0) __PYX_ERR(31, 33, __pyx_L1_error)
  if (__Pyx_setup_reduce((PyObject*)&__pyx_type_4grpc_7_cython_6cygrpc_CallbackWrapper) < 0) __PYX_ERR(31, 33, __pyx_L1_error)
  __pyx_ptype_4grpc_7_cython_6cygrpc_CallbackWrapper = &__pyx_type_4grpc_7_cython_6cygrpc_CallbackWrapper;
  if (PyType_Ready(&__pyx_type_4grpc_7_cython_6cygrpc_GrpcCallWrapper) < 0) __PYX_ERR(34, 56, __pyx_L1_error)
  #if PY_VERSION_HEX < 0x030800B1
  __pyx_type_4grpc_7_cython_6cygrpc_GrpcCallWrapper.tp_print = 0;
  #endif
  if ((CYTHON_USE_TYPE_SLOTS && CYTHON_USE_PYTYPE_LOOKUP) && likely(!__pyx_type_4grpc_7_cython_6cygrpc_GrpcCallWrapper.tp_dictoffset && __pyx_type_4grpc_7_cython_6cygrpc_GrpcCallWrapper.tp_getattro == PyObject_GenericGetAttr)) {
    __pyx_type_4grpc_7_cython_6cygrpc_GrpcCallWrapper.tp_getattro = __Pyx_PyObject_GenericGetAttr;
  }
  if (PyObject_SetAttr(__pyx_m, __pyx_n_s_GrpcCallWrapper, (PyObject *)&__pyx_type_4grpc_7_cython_6cygrpc_GrpcCallWrapper) < 0) __PYX_ERR(34, 56, __pyx_L1_error)
  __pyx_ptype_4grpc_7_cython_6cygrpc_GrpcCallWrapper = &__pyx_type_4grpc_7_cython_6cygrpc_GrpcCallWrapper;
  __pyx_vtabptr_4grpc_7_cython_6cygrpc__AioCall = &__pyx_vtable_4grpc_7_cython_6cygrpc__AioCall;
  __pyx_vtable_4grpc_7_cython_6cygrpc__AioCall._create_grpc_call = (void (*)(struct __pyx_obj_4grpc_7_cython_6cygrpc__AioCall *, PyObject *, PyObject *, struct __pyx_obj_4grpc_7_cython_6cygrpc_CallCredentials *))__pyx_f_4grpc_7_cython_6cygrpc_8_AioCall__create_grpc_call;
  __pyx_vtable_4grpc_7_cython_6cygrpc__AioCall._set_status = (void (*)(struct __pyx_obj_4grpc_7_cython_6cygrpc__AioCall *, struct __pyx_obj_4grpc_7_cython_6cygrpc_AioRpcStatus *))__pyx_f_4grpc_7_cython_6cygrpc_8_AioCall__set_status;
  __pyx_vtable_4grpc_7_cython_6cygrpc__AioCall._set_initial_metadata = (void (*)(struct __pyx_obj_4grpc_7_cython_6cygrpc__AioCall *, PyObject *))__pyx_f_4grpc_7_cython_6cygrpc_8_AioCall__set_initial_metadata;
  __pyx_type_4grpc_7_cython_6cygrpc__AioCall.tp_base = __pyx_ptype_4grpc_7_cython_6cygrpc_GrpcCallWrapper;
  if (PyType_Ready(&__pyx_type_4grpc_7_cython_6cygrpc__AioCall) < 0) __PYX_ERR(33, 45, __pyx_L1_error)
  #if PY_VERSION_HEX < 0x030800B1
  __pyx_type_4grpc_7_cython_6cygrpc__AioCall.tp_print = 0;
  #endif
  if ((CYTHON_USE_TYPE_SLOTS && CYTHON_USE_PYTYPE_LOOKUP) && likely(!__pyx_type_4grpc_7_cython_6cygrpc__AioCall.tp_dictoffset && __pyx_type_4grpc_7_cython_6cygrpc__AioCall.tp_getattro == PyObject_GenericGetAttr)) {
    __pyx_type_4grpc_7_cython_6cygrpc__AioCall.tp_getattro = __Pyx_PyObject_GenericGetAttr;
  }
  if (__Pyx_SetVtable(__pyx_type_4grpc_7_cython_6cygrpc__AioCall.tp_dict, __pyx_vtabptr_4grpc_7_cython_6cygrpc__AioCall) < 0) __PYX_ERR(33, 45, __pyx_L1_error)
  if (PyObject_SetAttr(__pyx_m, __pyx_n_s_AioCall, (PyObject *)&__pyx_type_4grpc_7_cython_6cygrpc__AioCall) < 0) __PYX_ERR(33, 45, __pyx_L1_error)
  if (__Pyx_setup_reduce((PyObject*)&__pyx_type_4grpc_7_cython_6cygrpc__AioCall) < 0) __PYX_ERR(33, 45, __pyx_L1_error)
  __pyx_ptype_4grpc_7_cython_6cygrpc__AioCall = &__pyx_type_4grpc_7_cython_6cygrpc__AioCall;
  if (PyType_Ready(&__pyx_type_4grpc_7_cython_6cygrpc_AioChannel) < 0) __PYX_ERR(9, 28, __pyx_L1_error)
  #if PY_VERSION_HEX < 0x030800B1
  __pyx_type_4grpc_7_cython_6cygrpc_AioChannel.tp_print = 0;
  #endif
  if ((CYTHON_USE_TYPE_SLOTS && CYTHON_USE_PYTYPE_LOOKUP) && likely(!__pyx_type_4grpc_7_cython_6cygrpc_AioChannel.tp_dictoffset && __pyx_type_4grpc_7_cython_6cygrpc_AioChannel.tp_getattro == PyObject_GenericGetAttr)) {
    __pyx_type_4grpc_7_cython_6cygrpc_AioChannel.tp_getattro = __Pyx_PyObject_GenericGetAttr;
  }
  if (PyObject_SetAttr(__pyx_m, __pyx_n_s_AioChannel, (PyObject *)&__pyx_type_4grpc_7_cython_6cygrpc_AioChannel) < 0) __PYX_ERR(9, 28, __pyx_L1_error)
  if (__Pyx_setup_reduce((PyObject*)&__pyx_type_4grpc_7_cython_6cygrpc_AioChannel) < 0) __PYX_ERR(9, 28, __pyx_L1_error)
  __pyx_ptype_4grpc_7_cython_6cygrpc_AioChannel = &__pyx_type_4grpc_7_cython_6cygrpc_AioChannel;
  if (PyType_Ready(&__pyx_type_4grpc_7_cython_6cygrpc__HandlerCallDetails) < 0) __PYX_ERR(10, 35, __pyx_L1_error)
  #if PY_VERSION_HEX < 0x030800B1
  __pyx_type_4grpc_7_cython_6cygrpc__HandlerCallDetails.tp_print = 0;
  #endif
  if ((CYTHON_USE_TYPE_SLOTS && CYTHON_USE_PYTYPE_LOOKUP) && likely(!__pyx_type_4grpc_7_cython_6cygrpc__HandlerCallDetails.tp_dictoffset && __pyx_type_4grpc_7_cython_6cygrpc__HandlerCallDetails.tp_getattro == PyObject_GenericGetAttr)) {
    __pyx_type_4grpc_7_cython_6cygrpc__HandlerCallDetails.tp_getattro = __Pyx_PyObject_GenericGetAttr;
  }
  if (PyObject_SetAttr(__pyx_m, __pyx_n_s_HandlerCallDetails, (PyObject *)&__pyx_type_4grpc_7_cython_6cygrpc__HandlerCallDetails) < 0) __PYX_ERR(10, 35, __pyx_L1_error)
  if (__Pyx_setup_reduce((PyObject*)&__pyx_type_4grpc_7_cython_6cygrpc__HandlerCallDetails) < 0) __PYX_ERR(10, 35, __pyx_L1_error)
  __pyx_ptype_4grpc_7_cython_6cygrpc__HandlerCallDetails = &__pyx_type_4grpc_7_cython_6cygrpc__HandlerCallDetails;
  __pyx_vtabptr_4grpc_7_cython_6cygrpc_RPCState = &__pyx_vtable_4grpc_7_cython_6cygrpc_RPCState;
  __pyx_vtable_4grpc_7_cython_6cygrpc_RPCState.method = (PyObject *(*)(struct __pyx_obj_4grpc_7_cython_6cygrpc_RPCState *))__pyx_f_4grpc_7_cython_6cygrpc_8RPCState_method;
  __pyx_vtable_4grpc_7_cython_6cygrpc_RPCState.invocation_metadata = (PyObject *(*)(struct __pyx_obj_4grpc_7_cython_6cygrpc_RPCState *))__pyx_f_4grpc_7_cython_6cygrpc_8RPCState_invocation_metadata;
  __pyx_vtable_4grpc_7_cython_6cygrpc_RPCState.raise_for_termination = (void (*)(struct __pyx_obj_4grpc_7_cython_6cygrpc_RPCState *))__pyx_f_4grpc_7_cython_6cygrpc_8RPCState_raise_for_termination;
  __pyx_vtable_4grpc_7_cython_6cygrpc_RPCState.get_write_flag = (int (*)(struct __pyx_obj_4grpc_7_cython_6cygrpc_RPCState *))__pyx_f_4grpc_7_cython_6cygrpc_8RPCState_get_write_flag;
  __pyx_vtable_4grpc_7_cython_6cygrpc_RPCState.create_send_initial_metadata_op_if_not_sent = (struct __pyx_obj_4grpc_7_cython_6cygrpc_Operation *(*)(struct __pyx_obj_4grpc_7_cython_6cygrpc_RPCState *))__pyx_f_4grpc_7_cython_6cygrpc_8RPCState_create_send_initial_metadata_op_if_not_sent;
  __pyx_type_4grpc_7_cython_6cygrpc_RPCState.tp_base = __pyx_ptype_4grpc_7_cython_6cygrpc_GrpcCallWrapper;
  if (PyType_Ready(&__pyx_type_4grpc_7_cython_6cygrpc_RPCState) < 0) __PYX_ERR(10, 45, __pyx_L1_error)
  #if PY_VERSION_HEX < 0x030800B1
  __pyx_type_4grpc_7_cython_6cygrpc_RPCState.tp_print = 0;
  #endif
  if ((CYTHON_USE_TYPE_SLOTS && CYTHON_USE_PYTYPE_LOOKUP) && likely(!__pyx_type_4grpc_7_cython_6cygrpc_RPCState.tp_dictoffset && __pyx_type_4grpc_7_cython_6cygrpc_RPCState.tp_getattro == PyObject_GenericGetAttr)) {
    __pyx_type_4grpc_7_cython_6cygrpc_RPCState.tp_getattro = __Pyx_PyObject_GenericGetAttr;
  }
  if (__Pyx_SetVtable(__pyx_type_4grpc_7_cython_6cygrpc_RPCState.tp_dict, __pyx_vtabptr_4grpc_7_cython_6cygrpc_RPCState) < 0) __PYX_ERR(10, 45, __pyx_L1_error)
  if (PyObject_SetAttr(__pyx_m, __pyx_n_s_RPCState, (PyObject *)&__pyx_type_4grpc_7_cython_6cygrpc_RPCState) < 0) __PYX_ERR(10, 45, __pyx_L1_error)
  if (__Pyx_setup_reduce((PyObject*)&__pyx_type_4grpc_7_cython_6cygrpc_RPCState) < 0) __PYX_ERR(10, 45, __pyx_L1_error)
  __pyx_ptype_4grpc_7_cython_6cygrpc_RPCState = &__pyx_type_4grpc_7_cython_6cygrpc_RPCState;
  if (PyType_Ready(&__pyx_type_4grpc_7_cython_6cygrpc__ServicerContext) < 0) __PYX_ERR(10, 113, __pyx_L1_error)
  #if PY_VERSION_HEX < 0x030800B1
  __pyx_type_4grpc_7_cython_6cygrpc__ServicerContext.tp_print = 0;
  #endif
  if ((CYTHON_USE_TYPE_SLOTS && CYTHON_USE_PYTYPE_LOOKUP) && likely(!__pyx_type_4grpc_7_cython_6cygrpc__ServicerContext.tp_dictoffset && __pyx_type_4grpc_7_cython_6cygrpc__ServicerContext.tp_getattro == PyObject_GenericGetAttr)) {
    __pyx_type_4grpc_7_cython_6cygrpc__ServicerContext.tp_getattro = __Pyx_PyObject_GenericGetAttr;
  }
  if (PyObject_SetAttr(__pyx_m, __pyx_n_s_ServicerContext, (PyObject *)&__pyx_type_4grpc_7_cython_6cygrpc__ServicerContext) < 0) __PYX_ERR(10, 113, __pyx_L1_error)
  if (__Pyx_setup_reduce((PyObject*)&__pyx_type_4grpc_7_cython_6cygrpc__ServicerContext) < 0) __PYX_ERR(10, 113, __pyx_L1_error)
  __pyx_ptype_4grpc_7_cython_6cygrpc__ServicerContext = &__pyx_type_4grpc_7_cython_6cygrpc__ServicerContext;
  if (PyType_Ready(&__pyx_type_4grpc_7_cython_6cygrpc__SyncServicerContext) < 0) __PYX_ERR(10, 271, __pyx_L1_error)
  #if PY_VERSION_HEX < 0x030800B1
  __pyx_type_4grpc_7_cython_6cygrpc__SyncServicerContext.tp_print = 0;
  #endif
  if ((CYTHON_USE_TYPE_SLOTS && CYTHON_USE_PYTYPE_LOOKUP) && likely(!__pyx_type_4grpc_7_cython_6cygrpc__SyncServicerContext.tp_dictoffset && __pyx_type_4grpc_7_cython_6cygrpc__SyncServicerContext.tp_getattro == PyObject_GenericGetAttr)) {
    __pyx_type_4grpc_7_cython_6cygrpc__SyncServicerContext.tp_getattro = __Pyx_PyObject_GenericGetAttr;
  }
  if (PyObject_SetAttr(__pyx_m, __pyx_n_s_SyncServicerContext, (PyObject *)&__pyx_type_4grpc_7_cython_6cygrpc__SyncServicerContext) < 0) __PYX_ERR(10, 271, __pyx_L1_error)
  if (__Pyx_setup_reduce((PyObject*)&__pyx_type_4grpc_7_cython_6cygrpc__SyncServicerContext) < 0) __PYX_ERR(10, 271, __pyx_L1_error)
  __pyx_ptype_4grpc_7_cython_6cygrpc__SyncServicerContext = &__pyx_type_4grpc_7_cython_6cygrpc__SyncServicerContext;
  if (PyType_Ready(&__pyx_type_4grpc_7_cython_6cygrpc__MessageReceiver) < 0) __PYX_ERR(10, 571, __pyx_L1_error)
  #if PY_VERSION_HEX < 0x030800B1
  __pyx_type_4grpc_7_cython_6cygrpc__MessageReceiver.tp_print = 0;
  #endif
  if ((CYTHON_USE_TYPE_SLOTS && CYTHON_USE_PYTYPE_LOOKUP) && likely(!__pyx_type_4grpc_7_cython_6cygrpc__MessageReceiver.tp_dictoffset && __pyx_type_4grpc_7_cython_6cygrpc__MessageReceiver.tp_getattro == PyObject_GenericGetAttr)) {
    __pyx_type_4grpc_7_cython_6cygrpc__MessageReceiver.tp_getattro = __Pyx_PyObject_GenericGetAttr;
  }
  if (PyObject_SetAttr(__pyx_m, __pyx_n_s_MessageReceiver, (PyObject *)&__pyx_type_4grpc_7_cython_6cygrpc__MessageReceiver) < 0) __PYX_ERR(10, 571, __pyx_L1_error)
  if (__Pyx_setup_reduce((PyObject*)&__pyx_type_4grpc_7_cython_6cygrpc__MessageReceiver) < 0) __PYX_ERR(10, 571, __pyx_L1_error)
  __pyx_ptype_4grpc_7_cython_6cygrpc__MessageReceiver = &__pyx_type_4grpc_7_cython_6cygrpc__MessageReceiver;
  if (PyType_Ready(&__pyx_type_4grpc_7_cython_6cygrpc__ConcurrentRpcLimiter) < 0) __PYX_ERR(10, 802, __pyx_L1_error)
  #if PY_VERSION_HEX < 0x030800B1
  __pyx_type_4grpc_7_cython_6cygrpc__ConcurrentRpcLimiter.tp_print = 0;
  #endif
  if ((CYTHON_USE_TYPE_SLOTS && CYTHON_USE_PYTYPE_LOOKUP) && likely(!__pyx_type_4grpc_7_cython_6cygrpc__ConcurrentRpcLimiter.tp_dictoffset && __pyx_type_4grpc_7_cython_6cygrpc__ConcurrentRpcLimiter.tp_getattro == PyObject_GenericGetAttr)) {
    __pyx_type_4grpc_7_cython_6cygrpc__ConcurrentRpcLimiter.tp_getattro = __Pyx_PyObject_GenericGetAttr;
  }
  if (PyObject_SetAttr(__pyx_m, __pyx_n_s_ConcurrentRpcLimiter, (PyObject *)&__pyx_type_4grpc_7_cython_6cygrpc__ConcurrentRpcLimiter) < 0) __PYX_ERR(10, 802, __pyx_L1_error)
  if (__Pyx_setup_reduce((PyObject*)&__pyx_type_4grpc_7_cython_6cygrpc__ConcurrentRpcLimiter) < 0) __PYX_ERR(10, 802, __pyx_L1_error)
  __pyx_ptype_4grpc_7_cython_6cygrpc__ConcurrentRpcLimiter = &__pyx_type_4grpc_7_cython_6cygrpc__ConcurrentRpcLimiter;
  __pyx_vtabptr_4grpc_7_cython_6cygrpc_AioServer = &__pyx_vtable_4grpc_7_cython_6cygrpc_AioServer;
  __pyx_vtable_4grpc_7_cython_6cygrpc_AioServer.thread_pool = (PyObject *(*)(struct __pyx_obj_4grpc_7_cython_6cygrpc_AioServer *))__pyx_f_4grpc_7_cython_6cygrpc_9AioServer_thread_pool;
  if (PyType_Ready(&__pyx_type_4grpc_7_cython_6cygrpc_AioServer) < 0) __PYX_ERR(10, 836, __pyx_L1_error)
  #if PY_VERSION_HEX < 0x030800B1
  __pyx_type_4grpc_7_cython_6cygrpc_AioServer.tp_print = 0;
  #endif
  if ((CYTHON_USE_TYPE_SLOTS && CYTHON_USE_PYTYPE_LOOKUP) && likely(!__pyx_type_4grpc_7_cython_6cygrpc_AioServer.tp_dictoffset && __pyx_type_4grpc_7_cython_6cygrpc_AioServer.tp_getattro == PyObject_GenericGetAttr)) {
    __pyx_type_4grpc_7_cython_6cygrpc_AioServer.tp_getattro = __Pyx_PyObject_GenericGetAttr;
  }
  if (__Pyx_SetVtable(__pyx_type_4grpc_7_cython_6cygrpc_AioServer.tp_dict, __pyx_vtabptr_4grpc_7_cython_6cygrpc_AioServer) < 0) __PYX_ERR(10, 836, __pyx_L1_error)
  if (PyObject_SetAttr(__pyx_m, __pyx_n_s_AioServer, (PyObject *)&__pyx_type_4grpc_7_cython_6cygrpc_AioServer) < 0) __PYX_ERR(10, 836, __pyx_L1_error)
  if (__Pyx_setup_reduce((PyObject*)&__pyx_type_4grpc_7_cython_6cygrpc_AioServer) < 0) __PYX_ERR(10, 836, __pyx_L1_error)
  __pyx_ptype_4grpc_7_cython_6cygrpc_AioServer = &__pyx_type_4grpc_7_cython_6cygrpc_AioServer;
  if (PyType_Ready(&__pyx_type_4grpc_7_cython_6cygrpc__GrpcArgWrapper) < 0) __PYX_ERR(3, 16, __pyx_L1_error)
  #if PY_VERSION_HEX < 0x030800B1
  __pyx_type_4grpc_7_cython_6cygrpc__GrpcArgWrapper.tp_print = 0;
  #endif
  if ((CYTHON_USE_TYPE_SLOTS && CYTHON_USE_PYTYPE_LOOKUP) && likely(!__pyx_type_4grpc_7_cython_6cygrpc__GrpcArgWrapper.tp_dictoffset && __pyx_type_4grpc_7_cython_6cygrpc__GrpcArgWrapper.tp_getattro == PyObject_GenericGetAttr)) {
    __pyx_type_4grpc_7_cython_6cygrpc__GrpcArgWrapper.tp_getattro = __Pyx_PyObject_GenericGetAttr;
  }
  if (PyObject_SetAttr(__pyx_m, __pyx_n_s_GrpcArgWrapper, (PyObject *)&__pyx_type_4grpc_7_cython_6cygrpc__GrpcArgWrapper) < 0) __PYX_ERR(3, 16, __pyx_L1_error)
  if (__Pyx_setup_reduce((PyObject*)&__pyx_type_4grpc_7_cython_6cygrpc__GrpcArgWrapper) < 0) __PYX_ERR(3, 16, __pyx_L1_error)
  __pyx_ptype_4grpc_7_cython_6cygrpc__GrpcArgWrapper = &__pyx_type_4grpc_7_cython_6cygrpc__GrpcArgWrapper;
  __pyx_vtabptr_4grpc_7_cython_6cygrpc_InsecureChannelCredentials = &__pyx_vtable_4grpc_7_cython_6cygrpc_InsecureChannelCredentials;
  __pyx_vtable_4grpc_7_cython_6cygrpc_InsecureChannelCredentials.__pyx_base = *__pyx_vtabptr_4grpc_7_cython_6cygrpc_ChannelCredentials;
  __pyx_vtable_4grpc_7_cython_6cygrpc_InsecureChannelCredentials.__pyx_base.c = (grpc_channel_credentials *(*)(struct __pyx_obj_4grpc_7_cython_6cygrpc_ChannelCredentials *))__pyx_f_4grpc_7_cython_6cygrpc_26InsecureChannelCredentials_c;
  __pyx_type_4grpc_7_cython_6cygrpc_InsecureChannelCredentials.tp_base = __pyx_ptype_4grpc_7_cython_6cygrpc_ChannelCredentials;
  if (PyType_Ready(&__pyx_type_4grpc_7_cython_6cygrpc_InsecureChannelCredentials) < 0) __PYX_ERR(5, 371, __pyx_L1_error)
  #if PY_VERSION_HEX < 0x030800B1
  __pyx_type_4grpc_7_cython_6cygrpc_InsecureChannelCredentials.tp_print = 0;
  #endif
  if ((CYTHON_USE_TYPE_SLOTS && CYTHON_USE_PYTYPE_LOOKUP) && likely(!__pyx_type_4grpc_7_cython_6cygrpc_InsecureChannelCredentials.tp_dictoffset && __pyx_type_4grpc_7_cython_6cygrpc_InsecureChannelCredentials.tp_getattro == PyObject_GenericGetAttr)) {
    __pyx_type_4grpc_7_cython_6cygrpc_InsecureChannelCredentials.tp_getattro = __Pyx_PyObject_GenericGetAttr;
  }
  if (__Pyx_SetVtable(__pyx_type_4grpc_7_cython_6cygrpc_InsecureChannelCredentials.tp_dict, __pyx_vtabptr_4grpc_7_cython_6cygrpc_InsecureChannelCredentials) < 0) __PYX_ERR(5, 371, __pyx_L1_error)
  if (PyObject_SetAttr(__pyx_m, __pyx_n_s_InsecureChannelCredentials, (PyObject *)&__pyx_type_4grpc_7_cython_6cygrpc_InsecureChannelCredentials) < 0) __PYX_ERR(5, 371, __pyx_L1_error)
  if (__Pyx_setup_reduce((PyObject*)&__pyx_type_4grpc_7_cython_6cygrpc_InsecureChannelCredentials) < 0) __PYX_ERR(5, 371, __pyx_L1_error)
  __pyx_ptype_4grpc_7_cython_6cygrpc_InsecureChannelCredentials = &__pyx_type_4grpc_7_cython_6cygrpc_InsecureChannelCredentials;
  __pyx_vtabptr_4grpc_7_cython_6cygrpc_ComputeEngineChannelCredentials = &__pyx_vtable_4grpc_7_cython_6cygrpc_ComputeEngineChannelCredentials;
  __pyx_vtable_4grpc_7_cython_6cygrpc_ComputeEngineChannelCredentials.__pyx_base = *__pyx_vtabptr_4grpc_7_cython_6cygrpc_ChannelCredentials;
  __pyx_vtable_4grpc_7_cython_6cygrpc_ComputeEngineChannelCredentials.__pyx_base.c = (grpc_channel_credentials *(*)(struct __pyx_obj_4grpc_7_cython_6cygrpc_ChannelCredentials *))__pyx_f_4grpc_7_cython_6cygrpc_31ComputeEngineChannelCredentials_c;
  __pyx_type_4grpc_7_cython_6cygrpc_ComputeEngineChannelCredentials.tp_base = __pyx_ptype_4grpc_7_cython_6cygrpc_ChannelCredentials;
  if (PyType_Ready(&__pyx_type_4grpc_7_cython_6cygrpc_ComputeEngineChannelCredentials) < 0) __PYX_ERR(5, 426, __pyx_L1_error)
  #if PY_VERSION_HEX < 0x030800B1
  __pyx_type_4grpc_7_cython_6cygrpc_ComputeEngineChannelCredentials.tp_print = 0;
  #endif
  if ((CYTHON_USE_TYPE_SLOTS && CYTHON_USE_PYTYPE_LOOKUP) && likely(!__pyx_type_4grpc_7_cython_6cygrpc_ComputeEngineChannelCredentials.tp_dictoffset && __pyx_type_4grpc_7_cython_6cygrpc_ComputeEngineChannelCredentials.tp_getattro == PyObject_GenericGetAttr)) {
    __pyx_type_4grpc_7_cython_6cygrpc_ComputeEngineChannelCredentials.tp_getattro = __Pyx_PyObject_GenericGetAttr;
  }
  if (__Pyx_SetVtable(__pyx_type_4grpc_7_cython_6cygrpc_ComputeEngineChannelCredentials.tp_dict, __pyx_vtabptr_4grpc_7_cython_6cygrpc_ComputeEngineChannelCredentials) < 0) __PYX_ERR(5, 426, __pyx_L1_error)
  if (PyObject_SetAttr(__pyx_m, __pyx_n_s_ComputeEngineChannelCredentials, (PyObject *)&__pyx_type_4grpc_7_cython_6cygrpc_ComputeEngineChannelCredentials) < 0) __PYX_ERR(5, 426, __pyx_L1_error)
  if (__Pyx_setup_reduce((PyObject*)&__pyx_type_4grpc_7_cython_6cygrpc_ComputeEngineChannelCredentials) < 0) __PYX_ERR(5, 426, __pyx_L1_error)
  __pyx_ptype_4grpc_7_cython_6cygrpc_ComputeEngineChannelCredentials = &__pyx_type_4grpc_7_cython_6cygrpc_ComputeEngineChannelCredentials;
  if (PyType_Ready(&__pyx_type_4grpc_7_cython_6cygrpc_CensusContext) < 0) __PYX_ERR(26, 28, __pyx_L1_error)
  #if PY_VERSION_HEX < 0x030800B1
  __pyx_type_4grpc_7_cython_6cygrpc_CensusContext.tp_print = 0;
  #endif
  if ((CYTHON_USE_TYPE_SLOTS && CYTHON_USE_PYTYPE_LOOKUP) && likely(!__pyx_type_4grpc_7_cython_6cygrpc_CensusContext.tp_dictoffset && __pyx_type_4grpc_7_cython_6cygrpc_CensusContext.tp_getattro == PyObject_GenericGetAttr)) {
    __pyx_type_4grpc_7_cython_6cygrpc_CensusContext.tp_getattro = __Pyx_PyObject_GenericGetAttr;
  }
  if (PyObject_SetAttr(__pyx_m, __pyx_n_s_CensusContext, (PyObject *)&__pyx_type_4grpc_7_cython_6cygrpc_CensusContext) < 0) __PYX_ERR(26, 28, __pyx_L1_error)
  if (__Pyx_setup_reduce((PyObject*)&__pyx_type_4grpc_7_cython_6cygrpc_CensusContext) < 0) __PYX_ERR(26, 28, __pyx_L1_error)
  __pyx_ptype_4grpc_7_cython_6cygrpc_CensusContext = &__pyx_type_4grpc_7_cython_6cygrpc_CensusContext;
  if (PyType_Ready(&__pyx_type_4grpc_7_cython_6cygrpc___pyx_scope_struct____pyx_f_4grpc_7_cython_6cygrpc__integrated_call) < 0) __PYX_ERR(12, 284, __pyx_L1_error)
  #if PY_VERSION_HEX < 0x030800B1
  __pyx_type_4grpc_7_cython_6cygrpc___pyx_scope_struct____pyx_f_4grpc_7_cython_6cygrpc__integrated_call.tp_print = 0;
  #endif
  if ((CYTHON_USE_TYPE_SLOTS && CYTHON_USE_PYTYPE_LOOKUP) && likely(!__pyx_type_4grpc_7_cython_6cygrpc___pyx_scope_struct____pyx_f_4grpc_7_cython_6cygrpc__integrated_call.tp_dictoffset && __pyx_type_4grpc_7_cython_6cygrpc___pyx_scope_struct____pyx_f_4grpc_7_cython_6cygrpc__integrated_call.tp_getattro == PyObject_GenericGetAttr)) {
    __pyx_type_4grpc_7_cython_6cygrpc___pyx_scope_struct____pyx_f_4grpc_7_cython_6cygrpc__integrated_call.tp_getattro = __Pyx_PyObject_GenericGetAttrNoDict;
  }
  __pyx_ptype_4grpc_7_cython_6cygrpc___pyx_scope_struct____pyx_f_4grpc_7_cython_6cygrpc__integrated_call = &__pyx_type_4grpc_7_cython_6cygrpc___pyx_scope_struct____pyx_f_4grpc_7_cython_6cygrpc__integrated_call;
  if (PyType_Ready(&__pyx_type_4grpc_7_cython_6cygrpc___pyx_scope_struct_1_next_event) < 0) __PYX_ERR(12, 328, __pyx_L1_error)
  #if PY_VERSION_HEX < 0x030800B1
  __pyx_type_4grpc_7_cython_6cygrpc___pyx_scope_struct_1_next_event.tp_print = 0;
  #endif
  if ((CYTHON_USE_TYPE_SLOTS && CYTHON_USE_PYTYPE_LOOKUP) && likely(!__pyx_type_4grpc_7_cython_6cygrpc___pyx_scope_struct_1_next_event.tp_dictoffset && __pyx_type_4grpc_7_cython_6cygrpc___pyx_scope_struct_1_next_event.tp_getattro == PyObject_GenericGetAttr)) {
    __pyx_type_4grpc_7_cython_6cygrpc___pyx_scope_struct_1_next_event.tp_getattro = __Pyx_PyObject_GenericGetAttrNoDict;
  }
  __pyx_ptype_4grpc_7_cython_6cygrpc___pyx_scope_struct_1_next_event = &__pyx_type_4grpc_7_cython_6cygrpc___pyx_scope_struct_1_next_event;
  if (PyType_Ready(&__pyx_type_4grpc_7_cython_6cygrpc___pyx_scope_struct_2___pyx_f_4grpc_7_cython_6cygrpc__segregated_call) < 0) __PYX_ERR(12, 342, __pyx_L1_error)
  #if PY_VERSION_HEX < 0x030800B1
  __pyx_type_4grpc_7_cython_6cygrpc___pyx_scope_struct_2___pyx_f_4grpc_7_cython_6cygrpc__segregated_call.tp_print = 0;
  #endif
  if ((CYTHON_USE_TYPE_SLOTS && CYTHON_USE_PYTYPE_LOOKUP) && likely(!__pyx_type_4grpc_7_cython_6cygrpc___pyx_scope_struct_2___pyx_f_4grpc_7_cython_6cygrpc__segregated_call.tp_dictoffset && __pyx_type_4grpc_7_cython_6cygrpc___pyx_scope_struct_2___pyx_f_4grpc_7_cython_6cygrpc__segregated_call.tp_getattro == PyObject_GenericGetAttr)) {
    __pyx_type_4grpc_7_cython_6cygrpc___pyx_scope_struct_2___pyx_f_4grpc_7_cython_6cygrpc__segregated_call.tp_getattro = __Pyx_PyObject_GenericGetAttrNoDict;
  }
  __pyx_ptype_4grpc_7_cython_6cygrpc___pyx_scope_struct_2___pyx_f_4grpc_7_cython_6cygrpc__segregated_call = &__pyx_type_4grpc_7_cython_6cygrpc___pyx_scope_struct_2___pyx_f_4grpc_7_cython_6cygrpc__segregated_call;
  if (PyType_Ready(&__pyx_type_4grpc_7_cython_6cygrpc___pyx_scope_struct_3_next_call_event) < 0) __PYX_ERR(12, 480, __pyx_L1_error)
  #if PY_VERSION_HEX < 0x030800B1
  __pyx_type_4grpc_7_cython_6cygrpc___pyx_scope_struct_3_next_call_event.tp_print = 0;
  #endif
  if ((CYTHON_USE_TYPE_SLOTS && CYTHON_USE_PYTYPE_LOOKUP) && likely(!__pyx_type_4grpc_7_cython_6cygrpc___pyx_scope_struct_3_next_call_event.tp_dictoffset && __pyx_type_4grpc_7_cython_6cygrpc___pyx_scope_struct_3_next_call_event.tp_getattro == PyObject_GenericGetAttr)) {
    __pyx_type_4grpc_7_cython_6cygrpc___pyx_scope_struct_3_next_call_event.tp_getattro = __Pyx_PyObject_GenericGetAttrNoDict;
  }
  __pyx_ptype_4grpc_7_cython_6cygrpc___pyx_scope_struct_3_next_call_event = &__pyx_type_4grpc_7_cython_6cygrpc___pyx_scope_struct_3_next_call_event;
  if (PyType_Ready(&__pyx_type_4grpc_7_cython_6cygrpc___pyx_scope_struct_4___pyx_f_4grpc_7_cython_6cygrpc__get_metadata) < 0) __PYX_ERR(5, 37, __pyx_L1_error)
  #if PY_VERSION_HEX < 0x030800B1
  __pyx_type_4grpc_7_cython_6cygrpc___pyx_scope_struct_4___pyx_f_4grpc_7_cython_6cygrpc__get_metadata.tp_print = 0;
  #endif
  if ((CYTHON_USE_TYPE_SLOTS && CYTHON_USE_PYTYPE_LOOKUP) && likely(!__pyx_type_4grpc_7_cython_6cygrpc___pyx_scope_struct_4___pyx_f_4grpc_7_cython_6cygrpc__get_metadata.tp_dictoffset && __pyx_type_4grpc_7_cython_6cygrpc___pyx_scope_struct_4___pyx_f_4grpc_7_cython_6cygrpc__get_metadata.tp_getattro == PyObject_GenericGetAttr)) {
    __pyx_type_4grpc_7_cython_6cygrpc___pyx_scope_struct_4___pyx_f_4grpc_7_cython_6cygrpc__get_metadata.tp_getattro = __Pyx_PyObject_GenericGetAttrNoDict;
  }
  __pyx_ptype_4grpc_7_cython_6cygrpc___pyx_scope_struct_4___pyx_f_4grpc_7_cython_6cygrpc__get_metadata = &__pyx_type_4grpc_7_cython_6cygrpc___pyx_scope_struct_4___pyx_f_4grpc_7_cython_6cygrpc__get_metadata;
  if (PyType_Ready(&__pyx_type_4grpc_7_cython_6cygrpc___pyx_scope_struct_5___pyx_f_4grpc_7_cython_6cygrpc__metadata) < 0) __PYX_ERR(18, 68, __pyx_L1_error)
  #if PY_VERSION_HEX < 0x030800B1
  __pyx_type_4grpc_7_cython_6cygrpc___pyx_scope_struct_5___pyx_f_4grpc_7_cython_6cygrpc__metadata.tp_print = 0;
  #endif
  if ((CYTHON_USE_TYPE_SLOTS && CYTHON_USE_PYTYPE_LOOKUP) && likely(!__pyx_type_4grpc_7_cython_6cygrpc___pyx_scope_struct_5___pyx_f_4grpc_7_cython_6cygrpc__metadata.tp_dictoffset && __pyx_type_4grpc_7_cython_6cygrpc___pyx_scope_struct_5___pyx_f_4grpc_7_cython_6cygrpc__metadata.tp_getattro == PyObject_GenericGetAttr)) {
    __pyx_type_4grpc_7_cython_6cygrpc___pyx_scope_struct_5___pyx_f_4grpc_7_cython_6cygrpc__metadata.tp_getattro = __Pyx_PyObject_GenericGetAttrNoDict;
  }
  __pyx_ptype_4grpc_7_cython_6cygrpc___pyx_scope_struct_5___pyx_f_4grpc_7_cython_6cygrpc__metadata = &__pyx_type_4grpc_7_cython_6cygrpc___pyx_scope_struct_5___pyx_f_4grpc_7_cython_6cygrpc__metadata;
  if (PyType_Ready(&__pyx_type_4grpc_7_cython_6cygrpc___pyx_scope_struct_6_genexpr) < 0) __PYX_ERR(18, 70, __pyx_L1_error)
  #if PY_VERSION_HEX < 0x030800B1
  __pyx_type_4grpc_7_cython_6cygrpc___pyx_scope_struct_6_genexpr.tp_print = 0;
  #endif
  if ((CYTHON_USE_TYPE_SLOTS && CYTHON_USE_PYTYPE_LOOKUP) && likely(!__pyx_type_4grpc_7_cython_6cygrpc___pyx_scope_struct_6_genexpr.tp_dictoffset && __pyx_type_4grpc_7_cython_6cygrpc___pyx_scope_struct_6_genexpr.tp_getattro == PyObject_GenericGetAttr)) {
    __pyx_type_4grpc_7_cython_6cygrpc___pyx_scope_struct_6_genexpr.tp_getattro = __Pyx_PyObject_GenericGetAttrNoDict;
  }
  __pyx_ptype_4grpc_7_cython_6cygrpc___pyx_scope_struct_6_genexpr = &__pyx_type_4grpc_7_cython_6cygrpc___pyx_scope_struct_6_genexpr;
  if (PyType_Ready(&__pyx_type_4grpc_7_cython_6cygrpc___pyx_scope_struct_7___pyx_f_4grpc_7_cython_6cygrpc_tuples_to_resolvaddr) < 0) __PYX_ERR(27, 52, __pyx_L1_error)
  #if PY_VERSION_HEX < 0x030800B1
  __pyx_type_4grpc_7_cython_6cygrpc___pyx_scope_struct_7___pyx_f_4grpc_7_cython_6cygrpc_tuples_to_resolvaddr.tp_print = 0;
  #endif
  if ((CYTHON_USE_TYPE_SLOTS && CYTHON_USE_PYTYPE_LOOKUP) && likely(!__pyx_type_4grpc_7_cython_6cygrpc___pyx_scope_struct_7___pyx_f_4grpc_7_cython_6cygrpc_tuples_to_resolvaddr.tp_dictoffset && __pyx_type_4grpc_7_cython_6cygrpc___pyx_scope_struct_7___pyx_f_4grpc_7_cython_6cygrpc_tuples_to_resolvaddr.tp_getattro == PyObject_GenericGetAttr)) {
    __pyx_type_4grpc_7_cython_6cygrpc___pyx_scope_struct_7___pyx_f_4grpc_7_cython_6cygrpc_tuples_to_resolvaddr.tp_getattro = __Pyx_PyObject_GenericGetAttrNoDict;
  }
  __pyx_ptype_4grpc_7_cython_6cygrpc___pyx_scope_struct_7___pyx_f_4grpc_7_cython_6cygrpc_tuples_to_resolvaddr = &__pyx_type_4grpc_7_cython_6cygrpc___pyx_scope_struct_7___pyx_f_4grpc_7_cython_6cygrpc_tuples_to_resolvaddr;
  if (PyType_Ready(&__pyx_type_4grpc_7_cython_6cygrpc___pyx_scope_struct_8_genexpr) < 0) __PYX_ERR(27, 54, __pyx_L1_error)
  #if PY_VERSION_HEX < 0x030800B1
  __pyx_type_4grpc_7_cython_6cygrpc___pyx_scope_struct_8_genexpr.tp_print = 0;
  #endif
  if ((CYTHON_USE_TYPE_SLOTS && CYTHON_USE_PYTYPE_LOOKUP) && likely(!__pyx_type_4grpc_7_cython_6cygrpc___pyx_scope_struct_8_genexpr.tp_dictoffset && __pyx_type_4grpc_7_cython_6cygrpc___pyx_scope_struct_8_genexpr.tp_getattro == PyObject_GenericGetAttr)) {
    __pyx_type_4grpc_7_cython_6cygrpc___pyx_scope_struct_8_genexpr.tp_getattro = __Pyx_PyObject_GenericGetAttrNoDict;
  }
  __pyx_ptype_4grpc_7_cython_6cygrpc___pyx_scope_struct_8_genexpr = &__pyx_type_4grpc_7_cython_6cygrpc___pyx_scope_struct_8_genexpr;
  if (PyType_Ready(&__pyx_type_4grpc_7_cython_6cygrpc___pyx_scope_struct_9__run_with_context) < 0) __PYX_ERR(28, 50, __pyx_L1_error)
  #if PY_VERSION_HEX < 0x030800B1
  __pyx_type_4grpc_7_cython_6cygrpc___pyx_scope_struct_9__run_with_context.tp_print = 0;
  #endif
  if ((CYTHON_USE_TYPE_SLOTS && CYTHON_USE_PYTYPE_LOOKUP) && likely(!__pyx_type_4grpc_7_cython_6cygrpc___pyx_scope_struct_9__run_with_context.tp_dictoffset && __pyx_type_4grpc_7_cython_6cygrpc___pyx_scope_struct_9__run_with_context.tp_getattro == PyObject_GenericGetAttr)) {
    __pyx_type_4grpc_7_cython_6cygrpc___pyx_scope_struct_9__run_with_context.tp_getattro = __Pyx_PyObject_GenericGetAttrNoDict;
  }
  __pyx_ptype_4grpc_7_cython_6cygrpc___pyx_scope_struct_9__run_with_context = &__pyx_type_4grpc_7_cython_6cygrpc___pyx_scope_struct_9__run_with_context;
  if (PyType_Ready(&__pyx_type_4grpc_7_cython_6cygrpc___pyx_scope_struct_10__run_with_context) < 0) __PYX_ERR(28, 56, __pyx_L1_error)
  #if PY_VERSION_HEX < 0x030800B1
  __pyx_type_4grpc_7_cython_6cygrpc___pyx_scope_struct_10__run_with_context.tp_print = 0;
  #endif
  if ((CYTHON_USE_TYPE_SLOTS && CYTHON_USE_PYTYPE_LOOKUP) && likely(!__pyx_type_4grpc_7_cython_6cygrpc___pyx_scope_struct_10__run_with_context.tp_dictoffset && __pyx_type_4grpc_7_cython_6cygrpc___pyx_scope_struct_10__run_with_context.tp_getattro == PyObject_GenericGetAttr)) {
    __pyx_type_4grpc_7_cython_6cygrpc___pyx_scope_struct_10__run_with_context.tp_getattro = __Pyx_PyObject_GenericGetAttrNoDict;
  }
  __pyx_ptype_4grpc_7_cython_6cygrpc___pyx_scope_struct_10__run_with_context = &__pyx_type_4grpc_7_cython_6cygrpc___pyx_scope_struct_10__run_with_context;
  if (PyType_Ready(&__pyx_type_4grpc_7_cython_6cygrpc___pyx_scope_struct_11___init__) < 0) __PYX_ERR(1, 100, __pyx_L1_error)
  #if PY_VERSION_HEX < 0x030800B1
  __pyx_type_4grpc_7_cython_6cygrpc___pyx_scope_struct_11___init__.tp_print = 0;
  #endif
  if ((CYTHON_USE_TYPE_SLOTS && CYTHON_USE_PYTYPE_LOOKUP) && likely(!__pyx_type_4grpc_7_cython_6cygrpc___pyx_scope_struct_11___init__.tp_dictoffset && __pyx_type_4grpc_7_cython_6cygrpc___pyx_scope_struct_11___init__.tp_getattro == PyObject_GenericGetAttr)) {
    __pyx_type_4grpc_7_cython_6cygrpc___pyx_scope_struct_11___init__.tp_getattro = __Pyx_PyObject_GenericGetAttrNoDict;
  }
  __pyx_ptype_4grpc_7_cython_6cygrpc___pyx_scope_struct_11___init__ = &__pyx_type_4grpc_7_cython_6cygrpc___pyx_scope_struct_11___init__;
  if (PyType_Ready(&__pyx_type_4grpc_7_cython_6cygrpc___pyx_scope_struct_12_async_generator_to_generator) < 0) __PYX_ERR(7, 119, __pyx_L1_error)
  #if PY_VERSION_HEX < 0x030800B1
  __pyx_type_4grpc_7_cython_6cygrpc___pyx_scope_struct_12_async_generator_to_generator.tp_print = 0;
  #endif
  if ((CYTHON_USE_TYPE_SLOTS && CYTHON_USE_PYTYPE_LOOKUP) && likely(!__pyx_type_4grpc_7_cython_6cygrpc___pyx_scope_struct_12_async_generator_to_generator.tp_dictoffset && __pyx_type_4grpc_7_cython_6cygrpc___pyx_scope_struct_12_async_generator_to_generator.tp_getattro == PyObject_GenericGetAttr)) {
    __pyx_type_4grpc_7_cython_6cygrpc___pyx_scope_struct_12_async_generator_to_generator.tp_getattro = __Pyx_PyObject_GenericGetAttrNoDict;
  }
  __pyx_ptype_4grpc_7_cython_6cygrpc___pyx_scope_struct_12_async_generator_to_generator = &__pyx_type_4grpc_7_cython_6cygrpc___pyx_scope_struct_12_async_generator_to_generator;
  if (PyType_Ready(&__pyx_type_4grpc_7_cython_6cygrpc___pyx_scope_struct_13_generator_to_async_generator) < 0) __PYX_ERR(7, 137, __pyx_L1_error)
  #if PY_VERSION_HEX < 0x030800B1
  __pyx_type_4grpc_7_cython_6cygrpc___pyx_scope_struct_13_generator_to_async_generator.tp_print = 0;
  #endif
  if ((CYTHON_USE_TYPE_SLOTS && CYTHON_USE_PYTYPE_LOOKUP) && likely(!__pyx_type_4grpc_7_cython_6cygrpc___pyx_scope_struct_13_generator_to_async_generator.tp_dictoffset && __pyx_type_4grpc_7_cython_6cygrpc___pyx_scope_struct_13_generator_to_async_generator.tp_getattro == PyObject_GenericGetAttr)) {
    __pyx_type_4grpc_7_cython_6cygrpc___pyx_scope_struct_13_generator_to_async_generator.tp_getattro = __Pyx_PyObject_GenericGetAttrNoDict;
  }
  __pyx_ptype_4grpc_7_cython_6cygrpc___pyx_scope_struct_13_generator_to_async_generator = &__pyx_type_4grpc_7_cython_6cygrpc___pyx_scope_struct_13_generator_to_async_generator;
  if (PyType_Ready(&__pyx_type_4grpc_7_cython_6cygrpc___pyx_scope_struct_14_execute_batch) < 0) __PYX_ERR(31, 77, __pyx_L1_error)
  #if PY_VERSION_HEX < 0x030800B1
  __pyx_type_4grpc_7_cython_6cygrpc___pyx_scope_struct_14_execute_batch.tp_print = 0;
  #endif
  if ((CYTHON_USE_TYPE_SLOTS && CYTHON_USE_PYTYPE_LOOKUP) && likely(!__pyx_type_4grpc_7_cython_6cygrpc___pyx_scope_struct_14_execute_batch.tp_dictoffset && __pyx_type_4grpc_7_cython_6cygrpc___pyx_scope_struct_14_execute_batch.tp_getattro == PyObject_GenericGetAttr)) {
    __pyx_type_4grpc_7_cython_6cygrpc___pyx_scope_struct_14_execute_batch.tp_getattro = __Pyx_PyObject_GenericGetAttrNoDict;
  }
  __pyx_ptype_4grpc_7_cython_6cygrpc___pyx_scope_struct_14_execute_batch = &__pyx_type_4grpc_7_cython_6cygrpc___pyx_scope_struct_14_execute_batch;
  if (PyType_Ready(&__pyx_type_4grpc_7_cython_6cygrpc___pyx_scope_struct_15__receive_message) < 0) __PYX_ERR(31, 114, __pyx_L1_error)
  #if PY_VERSION_HEX < 0x030800B1
  __pyx_type_4grpc_7_cython_6cygrpc___pyx_scope_struct_15__receive_message.tp_print = 0;
  #endif
  if ((CYTHON_USE_TYPE_SLOTS && CYTHON_USE_PYTYPE_LOOKUP) && likely(!__pyx_type_4grpc_7_cython_6cygrpc___pyx_scope_struct_15__receive_message.tp_dictoffset && __pyx_type_4grpc_7_cython_6cygrpc___pyx_scope_struct_15__receive_message.tp_getattro == PyObject_GenericGetAttr)) {
    __pyx_type_4grpc_7_cython_6cygrpc___pyx_scope_struct_15__receive_message.tp_getattro = __Pyx_PyObject_GenericGetAttrNoDict;
  }
  __pyx_ptype_4grpc_7_cython_6cygrpc___pyx_scope_struct_15__receive_message = &__pyx_type_4grpc_7_cython_6cygrpc___pyx_scope_struct_15__receive_message;
  if (PyType_Ready(&__pyx_type_4grpc_7_cython_6cygrpc___pyx_scope_struct_16__send_message) < 0) __PYX_ERR(31, 138, __pyx_L1_error)
  #if PY_VERSION_HEX < 0x030800B1
  __pyx_type_4grpc_7_cython_6cygrpc___pyx_scope_struct_16__send_message.tp_print = 0;
  #endif
  if ((CYTHON_USE_TYPE_SLOTS && CYTHON_USE_PYTYPE_LOOKUP) && likely(!__pyx_type_4grpc_7_cython_6cygrpc___pyx_scope_struct_16__send_message.tp_dictoffset && __pyx_type_4grpc_7_cython_6cygrpc___pyx_scope_struct_16__send_message.tp_getattro == PyObject_GenericGetAttr)) {
    __pyx_type_4grpc_7_cython_6cygrpc___pyx_scope_struct_16__send_message.tp_getattro = __Pyx_PyObject_GenericGetAttrNoDict;
  }
  __pyx_ptype_4grpc_7_cython_6cygrpc___pyx_scope_struct_16__send_message = &__pyx_type_4grpc_7_cython_6cygrpc___pyx_scope_struct_16__send_message;
  if (PyType_Ready(&__pyx_type_4grpc_7_cython_6cygrpc___pyx_scope_struct_17__send_initial_metadata) < 0) __PYX_ERR(31, 150, __pyx_L1_error)
  #if PY_VERSION_HEX < 0x030800B1
  __pyx_type_4grpc_7_cython_6cygrpc___pyx_scope_struct_17__send_initial_metadata.tp_print = 0;
  #endif
  if ((CYTHON_USE_TYPE_SLOTS && CYTHON_USE_PYTYPE_LOOKUP) && likely(!__pyx_type_4grpc_7_cython_6cygrpc___pyx_scope_struct_17__send_initial_metadata.tp_dictoffset && __pyx_type_4grpc_7_cython_6cygrpc___pyx_scope_struct_17__send_initial_metadata.tp_getattro == PyObject_GenericGetAttr)) {
    __pyx_type_4grpc_7_cython_6cygrpc___pyx_scope_struct_17__send_initial_metadata.tp_getattro = __Pyx_PyObject_GenericGetAttrNoDict;
  }
  __pyx_ptype_4grpc_7_cython_6cygrpc___pyx_scope_struct_17__send_initial_metadata = &__pyx_type_4grpc_7_cython_6cygrpc___pyx_scope_struct_17__send_initial_metadata;
  if (PyType_Ready(&__pyx_type_4grpc_7_cython_6cygrpc___pyx_scope_struct_18__receive_initial_metadata) < 0) __PYX_ERR(31, 161, __pyx_L1_error)
  #if PY_VERSION_HEX < 0x030800B1
  __pyx_type_4grpc_7_cython_6cygrpc___pyx_scope_struct_18__receive_initial_metadata.tp_print = 0;
  #endif
  if ((CYTHON_USE_TYPE_SLOTS && CYTHON_USE_PYTYPE_LOOKUP) && likely(!__pyx_type_4grpc_7_cython_6cygrpc___pyx_scope_struct_18__receive_initial_metadata.tp_dictoffset && __pyx_type_4grpc_7_cython_6cygrpc___pyx_scope_struct_18__receive_initial_metadata.tp_getattro == PyObject_GenericGetAttr)) {
    __pyx_type_4grpc_7_cython_6cygrpc___pyx_scope_struct_18__receive_initial_metadata.tp_getattro = __Pyx_PyObject_GenericGetAttrNoDict;
  }
  __pyx_ptype_4grpc_7_cython_6cygrpc___pyx_scope_struct_18__receive_initial_metadata = &__pyx_type_4grpc_7_cython_6cygrpc___pyx_scope_struct_18__receive_initial_metadata;
  if (PyType_Ready(&__pyx_type_4grpc_7_cython_6cygrpc___pyx_scope_struct_19__send_error_status_from_server) < 0) __PYX_ERR(31, 168, __pyx_L1_error)
  #if PY_VERSION_HEX < 0x030800B1
  __pyx_type_4grpc_7_cython_6cygrpc___pyx_scope_struct_19__send_error_status_from_server.tp_print = 0;
  #endif
  if ((CYTHON_USE_TYPE_SLOTS && CYTHON_USE_PYTYPE_LOOKUP) && likely(!__pyx_type_4grpc_7_cython_6cygrpc___pyx_scope_struct_19__send_error_status_from_server.tp_dictoffset && __pyx_type_4grpc_7_cython_6cygrpc___pyx_scope_struct_19__send_error_status_from_server.tp_getattro == PyObject_GenericGetAttr)) {
    __pyx_type_4grpc_7_cython_6cygrpc___pyx_scope_struct_19__send_error_status_from_server.tp_getattro = __Pyx_PyObject_GenericGetAttrNoDict;
  }
  __pyx_ptype_4grpc_7_cython_6cygrpc___pyx_scope_struct_19__send_error_status_from_server = &__pyx_type_4grpc_7_cython_6cygrpc___pyx_scope_struct_19__send_error_status_from_server;
  if (PyType_Ready(&__pyx_type_4grpc_7_cython_6cygrpc___pyx_scope_struct_20_status) < 0) __PYX_ERR(33, 235, __pyx_L1_error)
  #if PY_VERSION_HEX < 0x030800B1
  __pyx_type_4grpc_7_cython_6cygrpc___pyx_scope_struct_20_status.tp_print = 0;
  #endif
  if ((CYTHON_USE_TYPE_SLOTS && CYTHON_USE_PYTYPE_LOOKUP) && likely(!__pyx_type_4grpc_7_cython_6cygrpc___pyx_scope_struct_20_status.tp_dictoffset && __pyx_type_4grpc_7_cython_6cygrpc___pyx_scope_struct_20_status.tp_getattro == PyObject_GenericGetAttr)) {
    __pyx_type_4grpc_7_cython_6cygrpc___pyx_scope_struct_20_status.tp_getattro = __Pyx_PyObject_GenericGetAttrNoDict;
  }
  __pyx_ptype_4grpc_7_cython_6cygrpc___pyx_scope_struct_20_status = &__pyx_type_4grpc_7_cython_6cygrpc___pyx_scope_struct_20_status;
  if (PyType_Ready(&__pyx_type_4grpc_7_cython_6cygrpc___pyx_scope_struct_21_initial_metadata) < 0) __PYX_ERR(33, 258, __pyx_L1_error)
  #if PY_VERSION_HEX < 0x030800B1
  __pyx_type_4grpc_7_cython_6cygrpc___pyx_scope_struct_21_initial_metadata.tp_print = 0;
  #endif
  if ((CYTHON_USE_TYPE_SLOTS && CYTHON_USE_PYTYPE_LOOKUP) && likely(!__pyx_type_4grpc_7_cython_6cygrpc___pyx_scope_struct_21_initial_metadata.tp_dictoffset && __pyx_type_4grpc_7_cython_6cygrpc___pyx_scope_struct_21_initial_metadata.tp_getattro == PyObject_GenericGetAttr)) {
    __pyx_type_4grpc_7_cython_6cygrpc___pyx_scope_struct_21_initial_metadata.tp_getattro = __Pyx_PyObject_GenericGetAttrNoDict;
  }
  __pyx_ptype_4grpc_7_cython_6cygrpc___pyx_scope_struct_21_initial_metadata = &__pyx_type_4grpc_7_cython_6cygrpc___pyx_scope_struct_21_initial_metadata;
  if (PyType_Ready(&__pyx_type_4grpc_7_cython_6cygrpc___pyx_scope_struct_22_unary_unary) < 0) __PYX_ERR(33, 288, __pyx_L1_error)
  #if PY_VERSION_HEX < 0x030800B1
  __pyx_type_4grpc_7_cython_6cygrpc___pyx_scope_struct_22_unary_unary.tp_print = 0;
  #endif
  if ((CYTHON_USE_TYPE_SLOTS && CYTHON_USE_PYTYPE_LOOKUP) && likely(!__pyx_type_4grpc_7_cython_6cygrpc___pyx_scope_struct_22_unary_unary.tp_dictoffset && __pyx_type_4grpc_7_cython_6cygrpc___pyx_scope_struct_22_unary_unary.tp_getattro == PyObject_GenericGetAttr)) {
    __pyx_type_4grpc_7_cython_6cygrpc___pyx_scope_struct_22_unary_unary.tp_getattro = __Pyx_PyObject_GenericGetAttrNoDict;
  }
  __pyx_ptype_4grpc_7_cython_6cygrpc___pyx_scope_struct_22_unary_unary = &__pyx_type_4grpc_7_cython_6cygrpc___pyx_scope_struct_22_unary_unary;
  if (PyType_Ready(&__pyx_type_4grpc_7_cython_6cygrpc___pyx_scope_struct_23__handle_status_once_received) < 0) __PYX_ERR(33, 335, __pyx_L1_error)
  #if PY_VERSION_HEX < 0x030800B1
  __pyx_type_4grpc_7_cython_6cygrpc___pyx_scope_struct_23__handle_status_once_received.tp_print = 0;
  #endif
  if ((CYTHON_USE_TYPE_SLOTS && CYTHON_USE_PYTYPE_LOOKUP) && likely(!__pyx_type_4grpc_7_cython_6cygrpc___pyx_scope_struct_23__handle_status_once_received.tp_dictoffset && __pyx_type_4grpc_7_cython_6cygrpc___pyx_scope_struct_23__handle_status_once_received.tp_getattro == PyObject_GenericGetAttr)) {
    __pyx_type_4grpc_7_cython_6cygrpc___pyx_scope_struct_23__handle_status_once_received.tp_getattro = __Pyx_PyObject_GenericGetAttrNoDict;
  }
  __pyx_ptype_4grpc_7_cython_6cygrpc___pyx_scope_struct_23__handle_status_once_received = &__pyx_type_4grpc_7_cython_6cygrpc___pyx_scope_struct_23__handle_status_once_received;
  if (PyType_Ready(&__pyx_type_4grpc_7_cython_6cygrpc___pyx_scope_struct_24_receive_serialized_message) < 0) __PYX_ERR(33, 352, __pyx_L1_error)
  #if PY_VERSION_HEX < 0x030800B1
  __pyx_type_4grpc_7_cython_6cygrpc___pyx_scope_struct_24_receive_serialized_message.tp_print = 0;
  #endif
  if ((CYTHON_USE_TYPE_SLOTS && CYTHON_USE_PYTYPE_LOOKUP) && likely(!__pyx_type_4grpc_7_cython_6cygrpc___pyx_scope_struct_24_receive_serialized_message.tp_dictoffset && __pyx_type_4grpc_7_cython_6cygrpc___pyx_scope_struct_24_receive_serialized_message.tp_getattro == PyObject_GenericGetAttr)) {
    __pyx_type_4grpc_7_cython_6cygrpc___pyx_scope_struct_24_receive_serialized_message.tp_getattro = __Pyx_PyObject_GenericGetAttrNoDict;
  }
  __pyx_ptype_4grpc_7_cython_6cygrpc___pyx_scope_struct_24_receive_serialized_message = &__pyx_type_4grpc_7_cython_6cygrpc___pyx_scope_struct_24_receive_serialized_message;
  if (PyType_Ready(&__pyx_type_4grpc_7_cython_6cygrpc___pyx_scope_struct_25_send_serialized_message) < 0) __PYX_ERR(33, 369, __pyx_L1_error)
  #if PY_VERSION_HEX < 0x030800B1
  __pyx_type_4grpc_7_cython_6cygrpc___pyx_scope_struct_25_send_serialized_message.tp_print = 0;
  #endif
  if ((CYTHON_USE_TYPE_SLOTS && CYTHON_USE_PYTYPE_LOOKUP) && likely(!__pyx_type_4grpc_7_cython_6cygrpc___pyx_scope_struct_25_send_serialized_message.tp_dictoffset && __pyx_type_4grpc_7_cython_6cygrpc___pyx_scope_struct_25_send_serialized_message.tp_getattro == PyObject_GenericGetAttr)) {
    __pyx_type_4grpc_7_cython_6cygrpc___pyx_scope_struct_25_send_serialized_message.tp_getattro = __Pyx_PyObject_GenericGetAttrNoDict;
  }
  __pyx_ptype_4grpc_7_cython_6cygrpc___pyx_scope_struct_25_send_serialized_message = &__pyx_type_4grpc_7_cython_6cygrpc___pyx_scope_struct_25_send_serialized_message;
  if (PyType_Ready(&__pyx_type_4grpc_7_cython_6cygrpc___pyx_scope_struct_26_send_receive_close) < 0) __PYX_ERR(33, 377, __pyx_L1_error)
  #if PY_VERSION_HEX < 0x030800B1
  __pyx_type_4grpc_7_cython_6cygrpc___pyx_scope_struct_26_send_receive_close.tp_print = 0;
  #endif
  if ((CYTHON_USE_TYPE_SLOTS && CYTHON_USE_PYTYPE_LOOKUP) && likely(!__pyx_type_4grpc_7_cython_6cygrpc___pyx_scope_struct_26_send_receive_close.tp_dictoffset && __pyx_type_4grpc_7_cython_6cygrpc___pyx_scope_struct_26_send_receive_close.tp_getattro == PyObject_GenericGetAttr)) {
    __pyx_type_4grpc_7_cython_6cygrpc___pyx_scope_struct_26_send_receive_close.tp_getattro = __Pyx_PyObject_GenericGetAttrNoDict;
  }
  __pyx_ptype_4grpc_7_cython_6cygrpc___pyx_scope_struct_26_send_receive_close = &__pyx_type_4grpc_7_cython_6cygrpc___pyx_scope_struct_26_send_receive_close;
  if (PyType_Ready(&__pyx_type_4grpc_7_cython_6cygrpc___pyx_scope_struct_27_initiate_unary_stream) < 0) __PYX_ERR(33, 383, __pyx_L1_error)
  #if PY_VERSION_HEX < 0x030800B1
  __pyx_type_4grpc_7_cython_6cygrpc___pyx_scope_struct_27_initiate_unary_stream.tp_print = 0;
  #endif
  if ((CYTHON_USE_TYPE_SLOTS && CYTHON_USE_PYTYPE_LOOKUP) && likely(!__pyx_type_4grpc_7_cython_6cygrpc___pyx_scope_struct_27_initiate_unary_stream.tp_dictoffset && __pyx_type_4grpc_7_cython_6cygrpc___pyx_scope_struct_27_initiate_unary_stream.tp_getattro == PyObject_GenericGetAttr)) {
    __pyx_type_4grpc_7_cython_6cygrpc___pyx_scope_struct_27_initiate_unary_stream.tp_getattro = __Pyx_PyObject_GenericGetAttrNoDict;
  }
  __pyx_ptype_4grpc_7_cython_6cygrpc___pyx_scope_struct_27_initiate_unary_stream = &__pyx_type_4grpc_7_cython_6cygrpc___pyx_scope_struct_27_initiate_unary_stream;
  if (PyType_Ready(&__pyx_type_4grpc_7_cython_6cygrpc___pyx_scope_struct_28_stream_unary) < 0) __PYX_ERR(33, 422, __pyx_L1_error)
  #if PY_VERSION_HEX < 0x030800B1
  __pyx_type_4grpc_7_cython_6cygrpc___pyx_scope_struct_28_stream_unary.tp_print = 0;
  #endif
  if ((CYTHON_USE_TYPE_SLOTS && CYTHON_USE_PYTYPE_LOOKUP) && likely(!__pyx_type_4grpc_7_cython_6cygrpc___pyx_scope_struct_28_stream_unary.tp_dictoffset && __pyx_type_4grpc_7_cython_6cygrpc___pyx_scope_struct_28_stream_unary.tp_getattro == PyObject_GenericGetAttr)) {
    __pyx_type_4grpc_7_cython_6cygrpc___pyx_scope_struct_28_stream_unary.tp_getattro = __Pyx_PyObject_GenericGetAttrNoDict;
  }
  __pyx_ptype_4grpc_7_cython_6cygrpc___pyx_scope_struct_28_stream_unary = &__pyx_type_4grpc_7_cython_6cygrpc___pyx_scope_struct_28_stream_unary;
  if (PyType_Ready(&__pyx_type_4grpc_7_cython_6cygrpc___pyx_scope_struct_29_initiate_stream_stream) < 0) __PYX_ERR(33, 477, __pyx_L1_error)
  #if PY_VERSION_HEX < 0x030800B1
  __pyx_type_4grpc_7_cython_6cygrpc___pyx_scope_struct_29_initiate_stream_stream.tp_print = 0;
  #endif
  if ((CYTHON_USE_TYPE_SLOTS && CYTHON_USE_PYTYPE_LOOKUP) && likely(!__pyx_type_4grpc_7_cython_6cygrpc___pyx_scope_struct_29_initiate_stream_stream.tp_dictoffset && __pyx_type_4grpc_7_cython_6cygrpc___pyx_scope_struct_29_initiate_stream_stream.tp_getattro == PyObject_GenericGetAttr)) {
    __pyx_type_4grpc_7_cython_6cygrpc___pyx_scope_struct_29_initiate_stream_stream.tp_getattro = __Pyx_PyObject_GenericGetAttrNoDict;
  }
  __pyx_ptype_4grpc_7_cython_6cygrpc___pyx_scope_struct_29_initiate_stream_stream = &__pyx_type_4grpc_7_cython_6cygrpc___pyx_scope_struct_29_initiate_stream_stream;
  if (PyType_Ready(&__pyx_type_4grpc_7_cython_6cygrpc___pyx_scope_struct_30_watch_connectivity_state) < 0) __PYX_ERR(9, 70, __pyx_L1_error)
  #if PY_VERSION_HEX < 0x030800B1
  __pyx_type_4grpc_7_cython_6cygrpc___pyx_scope_struct_30_watch_connectivity_state.tp_print = 0;
  #endif
  if ((CYTHON_USE_TYPE_SLOTS && CYTHON_USE_PYTYPE_LOOKUP) && likely(!__pyx_type_4grpc_7_cython_6cygrpc___pyx_scope_struct_30_watch_connectivity_state.tp_dictoffset && __pyx_type_4grpc_7_cython_6cygrpc___pyx_scope_struct_30_watch_connectivity_state.tp_getattro == PyObject_GenericGetAttr)) {
    __pyx_type_4grpc_7_cython_6cygrpc___pyx_scope_struct_30_watch_connectivity_state.tp_getattro = __Pyx_PyObject_GenericGetAttrNoDict;
  }
  __pyx_ptype_4grpc_7_cython_6cygrpc___pyx_scope_struct_30_watch_connectivity_state = &__pyx_type_4grpc_7_cython_6cygrpc___pyx_scope_struct_30_watch_connectivity_state;
  if (PyType_Ready(&__pyx_type_4grpc_7_cython_6cygrpc___pyx_scope_struct_31_read) < 0) __PYX_ERR(10, 125, __pyx_L1_error)
  #if PY_VERSION_HEX < 0x030800B1
  __pyx_type_4grpc_7_cython_6cygrpc___pyx_scope_struct_31_read.tp_print = 0;
  #endif
  if ((CYTHON_USE_TYPE_SLOTS && CYTHON_USE_PYTYPE_LOOKUP) && likely(!__pyx_type_4grpc_7_cython_6cygrpc___pyx_scope_struct_31_read.tp_dictoffset && __pyx_type_4grpc_7_cython_6cygrpc___pyx_scope_struct_31_read.tp_getattro == PyObject_GenericGetAttr)) {
    __pyx_type_4grpc_7_cython_6cygrpc___pyx_scope_struct_31_read.tp_getattro = __Pyx_PyObject_GenericGetAttrNoDict;
  }
  __pyx_ptype_4grpc_7_cython_6cygrpc___pyx_scope_struct_31_read = &__pyx_type_4grpc_7_cython_6cygrpc___pyx_scope_struct_31_read;
  if (PyType_Ready(&__pyx_type_4grpc_7_cython_6cygrpc___pyx_scope_struct_32_write) < 0) __PYX_ERR(10, 138, __pyx_L1_error)
  #if PY_VERSION_HEX < 0x030800B1
  __pyx_type_4grpc_7_cython_6cygrpc___pyx_scope_struct_32_write.tp_print = 0;
  #endif
  if ((CYTHON_USE_TYPE_SLOTS && CYTHON_USE_PYTYPE_LOOKUP) && likely(!__pyx_type_4grpc_7_cython_6cygrpc___pyx_scope_struct_32_write.tp_dictoffset && __pyx_type_4grpc_7_cython_6cygrpc___pyx_scope_struct_32_write.tp_getattro == PyObject_GenericGetAttr)) {
    __pyx_type_4grpc_7_cython_6cygrpc___pyx_scope_struct_32_write.tp_getattro = __Pyx_PyObject_GenericGetAttrNoDict;
  }
  __pyx_ptype_4grpc_7_cython_6cygrpc___pyx_scope_struct_32_write = &__pyx_type_4grpc_7_cython_6cygrpc___pyx_scope_struct_32_write;
  if (PyType_Ready(&__pyx_type_4grpc_7_cython_6cygrpc___pyx_scope_struct_33_send_initial_metadata) < 0) __PYX_ERR(10, 148, __pyx_L1_error)
  #if PY_VERSION_HEX < 0x030800B1
  __pyx_type_4grpc_7_cython_6cygrpc___pyx_scope_struct_33_send_initial_metadata.tp_print = 0;
  #endif
  if ((CYTHON_USE_TYPE_SLOTS && CYTHON_USE_PYTYPE_LOOKUP) && likely(!__pyx_type_4grpc_7_cython_6cygrpc___pyx_scope_struct_33_send_initial_metadata.tp_dictoffset && __pyx_type_4grpc_7_cython_6cygrpc___pyx_scope_struct_33_send_initial_metadata.tp_getattro == PyObject_GenericGetAttr)) {
    __pyx_type_4grpc_7_cython_6cygrpc___pyx_scope_struct_33_send_initial_metadata.tp_getattro = __Pyx_PyObject_GenericGetAttrNoDict;
  }
  __pyx_ptype_4grpc_7_cython_6cygrpc___pyx_scope_struct_33_send_initial_metadata = &__pyx_type_4grpc_7_cython_6cygrpc___pyx_scope_struct_33_send_initial_metadata;
  if (PyType_Ready(&__pyx_type_4grpc_7_cython_6cygrpc___pyx_scope_struct_34_abort) < 0) __PYX_ERR(10, 162, __pyx_L1_error)
  #if PY_VERSION_HEX < 0x030800B1
  __pyx_type_4grpc_7_cython_6cygrpc___pyx_scope_struct_34_abort.tp_print = 0;
  #endif
  if ((CYTHON_USE_TYPE_SLOTS && CYTHON_USE_PYTYPE_LOOKUP) && likely(!__pyx_type_4grpc_7_cython_6cygrpc___pyx_scope_struct_34_abort.tp_dictoffset && __pyx_type_4grpc_7_cython_6cygrpc___pyx_scope_struct_34_abort.tp_getattro == PyObject_GenericGetAttr)) {
    __pyx_type_4grpc_7_cython_6cygrpc___pyx_scope_struct_34_abort.tp_getattro = __Pyx_PyObject_GenericGetAttrNoDict;
  }
  __pyx_ptype_4grpc_7_cython_6cygrpc___pyx_scope_struct_34_abort = &__pyx_type_4grpc_7_cython_6cygrpc___pyx_scope_struct_34_abort;
  if (PyType_Ready(&__pyx_type_4grpc_7_cython_6cygrpc___pyx_scope_struct_35_abort_with_status) < 0) __PYX_ERR(10, 194, __pyx_L1_error)
  #if PY_VERSION_HEX < 0x030800B1
  __pyx_type_4grpc_7_cython_6cygrpc___pyx_scope_struct_35_abort_with_status.tp_print = 0;
  #endif
  if ((CYTHON_USE_TYPE_SLOTS && CYTHON_USE_PYTYPE_LOOKUP) && likely(!__pyx_type_4grpc_7_cython_6cygrpc___pyx_scope_struct_35_abort_with_status.tp_dictoffset && __pyx_type_4grpc_7_cython_6cygrpc___pyx_scope_struct_35_abort_with_status.tp_getattro == PyObject_GenericGetAttr)) {
    __pyx_type_4grpc_7_cython_6cygrpc___pyx_scope_struct_35_abort_with_status.tp_getattro = __Pyx_PyObject_GenericGetAttrNoDict;
  }
  __pyx_ptype_4grpc_7_cython_6cygrpc___pyx_scope_struct_35_abort_with_status = &__pyx_type_4grpc_7_cython_6cygrpc___pyx_scope_struct_35_abort_with_status;
  if (PyType_Ready(&__pyx_type_4grpc_7_cython_6cygrpc___pyx_scope_struct_36__run_interceptor) < 0) __PYX_ERR(10, 333, __pyx_L1_error)
  #if PY_VERSION_HEX < 0x030800B1
  __pyx_type_4grpc_7_cython_6cygrpc___pyx_scope_struct_36__run_interceptor.tp_print = 0;
  #endif
  if ((CYTHON_USE_TYPE_SLOTS && CYTHON_USE_PYTYPE_LOOKUP) && likely(!__pyx_type_4grpc_7_cython_6cygrpc___pyx_scope_struct_36__run_interceptor.tp_dictoffset && __pyx_type_4grpc_7_cython_6cygrpc___pyx_scope_struct_36__run_interceptor.tp_getattro == PyObject_GenericGetAttr)) {
    __pyx_type_4grpc_7_cython_6cygrpc___pyx_scope_struct_36__run_interceptor.tp_getattro = __Pyx_PyObject_GenericGetAttrNoDict;
  }
  __pyx_ptype_4grpc_7_cython_6cygrpc___pyx_scope_struct_36__run_interceptor = &__pyx_type_4grpc_7_cython_6cygrpc___pyx_scope_struct_36__run_interceptor;
  if (PyType_Ready(&__pyx_type_4grpc_7_cython_6cygrpc___pyx_scope_struct_37__find_method_handler) < 0) __PYX_ERR(10, 349, __pyx_L1_error)
  #if PY_VERSION_HEX < 0x030800B1
  __pyx_type_4grpc_7_cython_6cygrpc___pyx_scope_struct_37__find_method_handler.tp_print = 0;
  #endif
  if ((CYTHON_USE_TYPE_SLOTS && CYTHON_USE_PYTYPE_LOOKUP) && likely(!__pyx_type_4grpc_7_cython_6cygrpc___pyx_scope_struct_37__find_method_handler.tp_dictoffset && __pyx_type_4grpc_7_cython_6cygrpc___pyx_scope_struct_37__find_method_handler.tp_getattro == PyObject_GenericGetAttr)) {
    __pyx_type_4grpc_7_cython_6cygrpc___pyx_scope_struct_37__find_method_handler.tp_getattro = __Pyx_PyObject_GenericGetAttrNoDict;
  }
  __pyx_ptype_4grpc_7_cython_6cygrpc___pyx_scope_struct_37__find_method_handler = &__pyx_type_4grpc_7_cython_6cygrpc___pyx_scope_struct_37__find_method_handler;
  if (PyType_Ready(&__pyx_type_4grpc_7_cython_6cygrpc___pyx_scope_struct_38__finish_handler_with_unary_response) < 0) __PYX_ERR(10, 368, __pyx_L1_error)
  #if PY_VERSION_HEX < 0x030800B1
  __pyx_type_4grpc_7_cython_6cygrpc___pyx_scope_struct_38__finish_handler_with_unary_response.tp_print = 0;
  #endif
  if ((CYTHON_USE_TYPE_SLOTS && CYTHON_USE_PYTYPE_LOOKUP) && likely(!__pyx_type_4grpc_7_cython_6cygrpc___pyx_scope_struct_38__finish_handler_with_unary_response.tp_dictoffset && __pyx_type_4grpc_7_cython_6cygrpc___pyx_scope_struct_38__finish_handler_with_unary_response.tp_getattro == PyObject_GenericGetAttr)) {
    __pyx_type_4grpc_7_cython_6cygrpc___pyx_scope_struct_38__finish_handler_with_unary_response.tp_getattro = __Pyx_PyObject_GenericGetAttrNoDict;
  }
  __pyx_ptype_4grpc_7_cython_6cygrpc___pyx_scope_struct_38__finish_handler_with_unary_response = &__pyx_type_4grpc_7_cython_6cygrpc___pyx_scope_struct_38__finish_handler_with_unary_response;
  if (PyType_Ready(&__pyx_type_4grpc_7_cython_6cygrpc___pyx_scope_struct_39__finish_handler_with_stream_responses) < 0) __PYX_ERR(10, 437, __pyx_L1_error)
  #if PY_VERSION_HEX < 0x030800B1
  __pyx_type_4grpc_7_cython_6cygrpc___pyx_scope_struct_39__finish_handler_with_stream_responses.tp_print = 0;
  #endif
  if ((CYTHON_USE_TYPE_SLOTS && CYTHON_USE_PYTYPE_LOOKUP) && likely(!__pyx_type_4grpc_7_cython_6cygrpc___pyx_scope_struct_39__finish_handler_with_stream_responses.tp_dictoffset && __pyx_type_4grpc_7_cython_6cygrpc___pyx_scope_struct_39__finish_handler_with_stream_responses.tp_getattro == PyObject_GenericGetAttr)) {
    __pyx_type_4grpc_7_cython_6cygrpc___pyx_scope_struct_39__finish_handler_with_stream_responses.tp_getattro = __Pyx_PyObject_GenericGetAttrNoDict;
  }
  __pyx_ptype_4grpc_7_cython_6cygrpc___pyx_scope_struct_39__finish_handler_with_stream_responses = &__pyx_type_4grpc_7_cython_6cygrpc___pyx_scope_struct_39__finish_handler_with_stream_responses;
  if (PyType_Ready(&__pyx_type_4grpc_7_cython_6cygrpc___pyx_scope_struct_40__handle_unary_unary_rpc) < 0) __PYX_ERR(10, 505, __pyx_L1_error)
  #if PY_VERSION_HEX < 0x030800B1
  __pyx_type_4grpc_7_cython_6cygrpc___pyx_scope_struct_40__handle_unary_unary_rpc.tp_print = 0;
  #endif
  if ((CYTHON_USE_TYPE_SLOTS && CYTHON_USE_PYTYPE_LOOKUP) && likely(!__pyx_type_4grpc_7_cython_6cygrpc___pyx_scope_struct_40__handle_unary_unary_rpc.tp_dictoffset && __pyx_type_4grpc_7_cython_6cygrpc___pyx_scope_struct_40__handle_unary_unary_rpc.tp_getattro == PyObject_GenericGetAttr)) {
    __pyx_type_4grpc_7_cython_6cygrpc___pyx_scope_struct_40__handle_unary_unary_rpc.tp_getattro = __Pyx_PyObject_GenericGetAttrNoDict;
  }
  __pyx_ptype_4grpc_7_cython_6cygrpc___pyx_scope_struct_40__handle_unary_unary_rpc = &__pyx_type_4grpc_7_cython_6cygrpc___pyx_scope_struct_40__handle_unary_unary_rpc;
  if (PyType_Ready(&__pyx_type_4grpc_7_cython_6cygrpc___pyx_scope_struct_41__handle_unary_stream_rpc) < 0) __PYX_ERR(10, 539, __pyx_L1_error)
  #if PY_VERSION_HEX < 0x030800B1
  __pyx_type_4grpc_7_cython_6cygrpc___pyx_scope_struct_41__handle_unary_stream_rpc.tp_print = 0;
  #endif
  if ((CYTHON_USE_TYPE_SLOTS && CYTHON_USE_PYTYPE_LOOKUP) && likely(!__pyx_type_4grpc_7_cython_6cygrpc___pyx_scope_struct_41__handle_unary_stream_rpc.tp_dictoffset && __pyx_type_4grpc_7_cython_6cygrpc___pyx_scope_struct_41__handle_unary_stream_rpc.tp_getattro == PyObject_GenericGetAttr)) {
    __pyx_type_4grpc_7_cython_6cygrpc___pyx_scope_struct_41__handle_unary_stream_rpc.tp_getattro = __Pyx_PyObject_GenericGetAttrNoDict;
  }
  __pyx_ptype_4grpc_7_cython_6cygrpc___pyx_scope_struct_41__handle_unary_stream_rpc = &__pyx_type_4grpc_7_cython_6cygrpc___pyx_scope_struct_41__handle_unary_stream_rpc;
  if (PyType_Ready(&__pyx_type_4grpc_7_cython_6cygrpc___pyx_scope_struct_42__async_message_receiver) < 0) __PYX_ERR(10, 578, __pyx_L1_error)
  #if PY_VERSION_HEX < 0x030800B1
  __pyx_type_4grpc_7_cython_6cygrpc___pyx_scope_struct_42__async_message_receiver.tp_print = 0;
  #endif
  if ((CYTHON_USE_TYPE_SLOTS && CYTHON_USE_PYTYPE_LOOKUP) && likely(!__pyx_type_4grpc_7_cython_6cygrpc___pyx_scope_struct_42__async_message_receiver.tp_dictoffset && __pyx_type_4grpc_7_cython_6cygrpc___pyx_scope_struct_42__async_message_receiver.tp_getattro == PyObject_GenericGetAttr)) {
    __pyx_type_4grpc_7_cython_6cygrpc___pyx_scope_struct_42__async_message_receiver.tp_getattro = __Pyx_PyObject_GenericGetAttrNoDict;
  }
  __pyx_ptype_4grpc_7_cython_6cygrpc___pyx_scope_struct_42__async_message_receiver = &__pyx_type_4grpc_7_cython_6cygrpc___pyx_scope_struct_42__async_message_receiver;
  if (PyType_Ready(&__pyx_type_4grpc_7_cython_6cygrpc___pyx_scope_struct_43___anext__) < 0) __PYX_ERR(10, 594, __pyx_L1_error)
  #if PY_VERSION_HEX < 0x030800B1
  __pyx_type_4grpc_7_cython_6cygrpc___pyx_scope_struct_43___anext__.tp_print = 0;
  #endif
  if ((CYTHON_USE_TYPE_SLOTS && CYTHON_USE_PYTYPE_LOOKUP) && likely(!__pyx_type_4grpc_7_cython_6cygrpc___pyx_scope_struct_43___anext__.tp_dictoffset && __pyx_type_4grpc_7_cython_6cygrpc___pyx_scope_struct_43___anext__.tp_getattro == PyObject_GenericGetAttr)) {
    __pyx_type_4grpc_7_cython_6cygrpc___pyx_scope_struct_43___anext__.tp_getattro = __Pyx_PyObject_GenericGetAttrNoDict;
  }
  __pyx_ptype_4grpc_7_cython_6cygrpc___pyx_scope_struct_43___anext__ = &__pyx_type_4grpc_7_cython_6cygrpc___pyx_scope_struct_43___anext__;
  if (PyType_Ready(&__pyx_type_4grpc_7_cython_6cygrpc___pyx_scope_struct_44__handle_stream_unary_rpc) < 0) __PYX_ERR(10, 598, __pyx_L1_error)
  #if PY_VERSION_HEX < 0x030800B1
  __pyx_type_4grpc_7_cython_6cygrpc___pyx_scope_struct_44__handle_stream_unary_rpc.tp_print = 0;
  #endif
  if ((CYTHON_USE_TYPE_SLOTS && CYTHON_USE_PYTYPE_LOOKUP) && likely(!__pyx_type_4grpc_7_cython_6cygrpc___pyx_scope_struct_44__handle_stream_unary_rpc.tp_dictoffset && __pyx_type_4grpc_7_cython_6cygrpc___pyx_scope_struct_44__handle_stream_unary_rpc.tp_getattro == PyObject_GenericGetAttr)) {
    __pyx_type_4grpc_7_cython_6cygrpc___pyx_scope_struct_44__handle_stream_unary_rpc.tp_getattro = __Pyx_PyObject_GenericGetAttrNoDict;
  }
  __pyx_ptype_4grpc_7_cython_6cygrpc___pyx_scope_struct_44__handle_stream_unary_rpc = &__pyx_type_4grpc_7_cython_6cygrpc___pyx_scope_struct_44__handle_stream_unary_rpc;
  if (PyType_Ready(&__pyx_type_4grpc_7_cython_6cygrpc___pyx_scope_struct_45__handle_stream_stream_rpc) < 0) __PYX_ERR(10, 630, __pyx_L1_error)
  #if PY_VERSION_HEX < 0x030800B1
  __pyx_type_4grpc_7_cython_6cygrpc___pyx_scope_struct_45__handle_stream_stream_rpc.tp_print = 0;
  #endif
  if ((CYTHON_USE_TYPE_SLOTS && CYTHON_USE_PYTYPE_LOOKUP) && likely(!__pyx_type_4grpc_7_cython_6cygrpc___pyx_scope_struct_45__handle_stream_stream_rpc.tp_dictoffset && __pyx_type_4grpc_7_cython_6cygrpc___pyx_scope_struct_45__handle_stream_stream_rpc.tp_getattro == PyObject_GenericGetAttr)) {
    __pyx_type_4grpc_7_cython_6cygrpc___pyx_scope_struct_45__handle_stream_stream_rpc.tp_getattro = __Pyx_PyObject_GenericGetAttrNoDict;
  }
  __pyx_ptype_4grpc_7_cython_6cygrpc___pyx_scope_struct_45__handle_stream_stream_rpc = &__pyx_type_4grpc_7_cython_6cygrpc___pyx_scope_struct_45__handle_stream_stream_rpc;
  if (PyType_Ready(&__pyx_type_4grpc_7_cython_6cygrpc___pyx_scope_struct_46__handle_exceptions) < 0) __PYX_ERR(10, 661, __pyx_L1_error)
  #if PY_VERSION_HEX < 0x030800B1
  __pyx_type_4grpc_7_cython_6cygrpc___pyx_scope_struct_46__handle_exceptions.tp_print = 0;
  #endif
  if ((CYTHON_USE_TYPE_SLOTS && CYTHON_USE_PYTYPE_LOOKUP) && likely(!__pyx_type_4grpc_7_cython_6cygrpc___pyx_scope_struct_46__handle_exceptions.tp_dictoffset && __pyx_type_4grpc_7_cython_6cygrpc___pyx_scope_struct_46__handle_exceptions.tp_getattro == PyObject_GenericGetAttr)) {
    __pyx_type_4grpc_7_cython_6cygrpc___pyx_scope_struct_46__handle_exceptions.tp_getattro = __Pyx_PyObject_GenericGetAttrNoDict;
  }
  __pyx_ptype_4grpc_7_cython_6cygrpc___pyx_scope_struct_46__handle_exceptions = &__pyx_type_4grpc_7_cython_6cygrpc___pyx_scope_struct_46__handle_exceptions;
  if (PyType_Ready(&__pyx_type_4grpc_7_cython_6cygrpc___pyx_scope_struct_47__handle_cancellation_from_core) < 0) __PYX_ERR(10, 710, __pyx_L1_error)
  #if PY_VERSION_HEX < 0x030800B1
  __pyx_type_4grpc_7_cython_6cygrpc___pyx_scope_struct_47__handle_cancellation_from_core.tp_print = 0;
  #endif
  if ((CYTHON_USE_TYPE_SLOTS && CYTHON_USE_PYTYPE_LOOKUP) && likely(!__pyx_type_4grpc_7_cython_6cygrpc___pyx_scope_struct_47__handle_cancellation_from_core.tp_dictoffset && __pyx_type_4grpc_7_cython_6cygrpc___pyx_scope_struct_47__handle_cancellation_from_core.tp_getattro == PyObject_GenericGetAttr)) {
    __pyx_type_4grpc_7_cython_6cygrpc___pyx_scope_struct_47__handle_cancellation_from_core.tp_getattro = __Pyx_PyObject_GenericGetAttrNoDict;
  }
  __pyx_ptype_4grpc_7_cython_6cygrpc___pyx_scope_struct_47__handle_cancellation_from_core = &__pyx_type_4grpc_7_cython_6cygrpc___pyx_scope_struct_47__handle_cancellation_from_core;
  if (PyType_Ready(&__pyx_type_4grpc_7_cython_6cygrpc___pyx_scope_struct_48__schedule_rpc_coro) < 0) __PYX_ERR(10, 727, __pyx_L1_error)
  #if PY_VERSION_HEX < 0x030800B1
  __pyx_type_4grpc_7_cython_6cygrpc___pyx_scope_struct_48__schedule_rpc_coro.tp_print = 0;
  #endif
  if ((CYTHON_USE_TYPE_SLOTS && CYTHON_USE_PYTYPE_LOOKUP) && likely(!__pyx_type_4grpc_7_cython_6cygrpc___pyx_scope_struct_48__schedule_rpc_coro.tp_dictoffset && __pyx_type_4grpc_7_cython_6cygrpc___pyx_scope_struct_48__schedule_rpc_coro.tp_getattro == PyObject_GenericGetAttr)) {
    __pyx_type_4grpc_7_cython_6cygrpc___pyx_scope_struct_48__schedule_rpc_coro.tp_getattro = __Pyx_PyObject_GenericGetAttrNoDict;
  }
  __pyx_ptype_4grpc_7_cython_6cygrpc___pyx_scope_struct_48__schedule_rpc_coro = &__pyx_type_4grpc_7_cython_6cygrpc___pyx_scope_struct_48__schedule_rpc_coro;
  if (PyType_Ready(&__pyx_type_4grpc_7_cython_6cygrpc___pyx_scope_struct_49__handle_rpc) < 0) __PYX_ERR(10, 739, __pyx_L1_error)
  #if PY_VERSION_HEX < 0x030800B1
  __pyx_type_4grpc_7_cython_6cygrpc___pyx_scope_struct_49__handle_rpc.tp_print = 0;
  #endif
  if ((CYTHON_USE_TYPE_SLOTS && CYTHON_USE_PYTYPE_LOOKUP) && likely(!__pyx_type_4grpc_7_cython_6cygrpc___pyx_scope_struct_49__handle_rpc.tp_dictoffset && __pyx_type_4grpc_7_cython_6cygrpc___pyx_scope_struct_49__handle_rpc.tp_getattro == PyObject_GenericGetAttr)) {
    __pyx_type_4grpc_7_cython_6cygrpc___pyx_scope_struct_49__handle_rpc.tp_getattro = __Pyx_PyObject_GenericGetAttrNoDict;
  }
  __pyx_ptype_4grpc_7_cython_6cygrpc___pyx_scope_struct_49__handle_rpc = &__pyx_type_4grpc_7_cython_6cygrpc___pyx_scope_struct_49__handle_rpc;
  if (PyType_Ready(&__pyx_type_4grpc_7_cython_6cygrpc___pyx_scope_struct_50_check_before_request_call) < 0) __PYX_ERR(10, 812, __pyx_L1_error)
  #if PY_VERSION_HEX < 0x030800B1
  __pyx_type_4grpc_7_cython_6cygrpc___pyx_scope_struct_50_check_before_request_call.tp_print = 0;
  #endif
  if ((CYTHON_USE_TYPE_SLOTS && CYTHON_USE_PYTYPE_LOOKUP) && likely(!__pyx_type_4grpc_7_cython_6cygrpc___pyx_scope_struct_50_check_before_request_call.tp_dictoffset && __pyx_type_4grpc_7_cython_6cygrpc___pyx_scope_struct_50_check_before_request_call.tp_getattro == PyObject_GenericGetAttr)) {
    __pyx_type_4grpc_7_cython_6cygrpc___pyx_scope_struct_50_check_before_request_call.tp_getattro = __Pyx_PyObject_GenericGetAttrNoDict;
  }
  __pyx_ptype_4grpc_7_cython_6cygrpc___pyx_scope_struct_50_check_before_request_call = &__pyx_type_4grpc_7_cython_6cygrpc___pyx_scope_struct_50_check_before_request_call;
  if (PyType_Ready(&__pyx_type_4grpc_7_cython_6cygrpc___pyx_scope_struct_51__decrease_active_rpcs_count_with_lock) < 0) __PYX_ERR(10, 821, __pyx_L1_error)
  #if PY_VERSION_HEX < 0x030800B1
  __pyx_type_4grpc_7_cython_6cygrpc___pyx_scope_struct_51__decrease_active_rpcs_count_with_lock.tp_print = 0;
  #endif
  if ((CYTHON_USE_TYPE_SLOTS && CYTHON_USE_PYTYPE_LOOKUP) && likely(!__pyx_type_4grpc_7_cython_6cygrpc___pyx_scope_struct_51__decrease_active_rpcs_count_with_lock.tp_dictoffset && __pyx_type_4grpc_7_cython_6cygrpc___pyx_scope_struct_51__decrease_active_rpcs_count_with_lock.tp_getattro == PyObject_GenericGetAttr)) {
    __pyx_type_4grpc_7_cython_6cygrpc___pyx_scope_struct_51__decrease_active_rpcs_count_with_lock.tp_getattro = __Pyx_PyObject_GenericGetAttrNoDict;
  }
  __pyx_ptype_4grpc_7_cython_6cygrpc___pyx_scope_struct_51__decrease_active_rpcs_count_with_lock = &__pyx_type_4grpc_7_cython_6cygrpc___pyx_scope_struct_51__decrease_active_rpcs_count_with_lock;
  if (PyType_Ready(&__pyx_type_4grpc_7_cython_6cygrpc___pyx_scope_struct_52__request_call) < 0) __PYX_ERR(10, 885, __pyx_L1_error)
  #if PY_VERSION_HEX < 0x030800B1
  __pyx_type_4grpc_7_cython_6cygrpc___pyx_scope_struct_52__request_call.tp_print = 0;
  #endif
  if ((CYTHON_USE_TYPE_SLOTS && CYTHON_USE_PYTYPE_LOOKUP) && likely(!__pyx_type_4grpc_7_cython_6cygrpc___pyx_scope_struct_52__request_call.tp_dictoffset && __pyx_type_4grpc_7_cython_6cygrpc___pyx_scope_struct_52__request_call.tp_getattro == PyObject_GenericGetAttr)) {
    __pyx_type_4grpc_7_cython_6cygrpc___pyx_scope_struct_52__request_call.tp_getattro = __Pyx_PyObject_GenericGetAttrNoDict;
  }
  __pyx_ptype_4grpc_7_cython_6cygrpc___pyx_scope_struct_52__request_call = &__pyx_type_4grpc_7_cython_6cygrpc___pyx_scope_struct_52__request_call;
  if (PyType_Ready(&__pyx_type_4grpc_7_cython_6cygrpc___pyx_scope_struct_53__server_main_loop) < 0) __PYX_ERR(10, 905, __pyx_L1_error)
  #if PY_VERSION_HEX < 0x030800B1
  __pyx_type_4grpc_7_cython_6cygrpc___pyx_scope_struct_53__server_main_loop.tp_print = 0;
  #endif
  if ((CYTHON_USE_TYPE_SLOTS && CYTHON_USE_PYTYPE_LOOKUP) && likely(!__pyx_type_4grpc_7_cython_6cygrpc___pyx_scope_struct_53__server_main_loop.tp_dictoffset && __pyx_type_4grpc_7_cython_6cygrpc___pyx_scope_struct_53__server_main_loop.tp_getattro == PyObject_GenericGetAttr)) {
    __pyx_type_4grpc_7_cython_6cygrpc___pyx_scope_struct_53__server_main_loop.tp_getattro = __Pyx_PyObject_GenericGetAttrNoDict;
  }
  __pyx_ptype_4grpc_7_cython_6cygrpc___pyx_scope_struct_53__server_main_loop = &__pyx_type_4grpc_7_cython_6cygrpc___pyx_scope_struct_53__server_main_loop;
  if (PyType_Ready(&__pyx_type_4grpc_7_cython_6cygrpc___pyx_scope_struct_54_start) < 0) __PYX_ERR(10, 955, __pyx_L1_error)
  #if PY_VERSION_HEX < 0x030800B1
  __pyx_type_4grpc_7_cython_6cygrpc___pyx_scope_struct_54_start.tp_print = 0;
  #endif
  if ((CYTHON_USE_TYPE_SLOTS && CYTHON_USE_PYTYPE_LOOKUP) && likely(!__pyx_type_4grpc_7_cython_6cygrpc___pyx_scope_struct_54_start.tp_dictoffset && __pyx_type_4grpc_7_cython_6cygrpc___pyx_scope_struct_54_start.tp_getattro == PyObject_GenericGetAttr)) {
    __pyx_type_4grpc_7_cython_6cygrpc___pyx_scope_struct_54_start.tp_getattro = __Pyx_PyObject_GenericGetAttrNoDict;
  }
  __pyx_ptype_4grpc_7_cython_6cygrpc___pyx_scope_struct_54_start = &__pyx_type_4grpc_7_cython_6cygrpc___pyx_scope_struct_54_start;
  if (PyType_Ready(&__pyx_type_4grpc_7_cython_6cygrpc___pyx_scope_struct_55__start_shutting_down) < 0) __PYX_ERR(10, 969, __pyx_L1_error)
  #if PY_VERSION_HEX < 0x030800B1
  __pyx_type_4grpc_7_cython_6cygrpc___pyx_scope_struct_55__start_shutting_down.tp_print = 0;
  #endif
  if ((CYTHON_USE_TYPE_SLOTS && CYTHON_USE_PYTYPE_LOOKUP) && likely(!__pyx_type_4grpc_7_cython_6cygrpc___pyx_scope_struct_55__start_shutting_down.tp_dictoffset && __pyx_type_4grpc_7_cython_6cygrpc___pyx_scope_struct_55__start_shutting_down.tp_getattro == PyObject_GenericGetAttr)) {
    __pyx_type_4grpc_7_cython_6cygrpc___pyx_scope_struct_55__start_shutting_down.tp_getattro = __Pyx_PyObject_GenericGetAttrNoDict;
  }
  __pyx_ptype_4grpc_7_cython_6cygrpc___pyx_scope_struct_55__start_shutting_down = &__pyx_type_4grpc_7_cython_6cygrpc___pyx_scope_struct_55__start_shutting_down;
  if (PyType_Ready(&__pyx_type_4grpc_7_cython_6cygrpc___pyx_scope_struct_56_shutdown) < 0) __PYX_ERR(10, 986, __pyx_L1_error)
  #if PY_VERSION_HEX < 0x030800B1
  __pyx_type_4grpc_7_cython_6cygrpc___pyx_scope_struct_56_shutdown.tp_print = 0;
  #endif
  if ((CYTHON_USE_TYPE_SLOTS && CYTHON_USE_PYTYPE_LOOKUP) && likely(!__pyx_type_4grpc_7_cython_6cygrpc___pyx_scope_struct_56_shutdown.tp_dictoffset && __pyx_type_4grpc_7_cython_6cygrpc___pyx_scope_struct_56_shutdown.tp_getattro == PyObject_GenericGetAttr)) {
    __pyx_type_4grpc_7_cython_6cygrpc___pyx_scope_struct_56_shutdown.tp_getattro = __Pyx_PyObject_GenericGetAttrNoDict;
  }
  __pyx_ptype_4grpc_7_cython_6cygrpc___pyx_scope_struct_56_shutdown = &__pyx_type_4grpc_7_cython_6cygrpc___pyx_scope_struct_56_shutdown;
  if (PyType_Ready(&__pyx_type_4grpc_7_cython_6cygrpc___pyx_scope_struct_57_wait_for_termination) < 0) __PYX_ERR(10, 1030, __pyx_L1_error)
  #if PY_VERSION_HEX < 0x030800B1
  __pyx_type_4grpc_7_cython_6cygrpc___pyx_scope_struct_57_wait_for_termination.tp_print = 0;
  #endif
  if ((CYTHON_USE_TYPE_SLOTS && CYTHON_USE_PYTYPE_LOOKUP) && likely(!__pyx_type_4grpc_7_cython_6cygrpc___pyx_scope_struct_57_wait_for_termination.tp_dictoffset && __pyx_type_4grpc_7_cython_6cygrpc___pyx_scope_struct_57_wait_for_termination.tp_getattro == PyObject_GenericGetAttr)) {
    __pyx_type_4grpc_7_cython_6cygrpc___pyx_scope_struct_57_wait_for_termination.tp_getattro = __Pyx_PyObject_GenericGetAttrNoDict;
  }
  __pyx_ptype_4grpc_7_cython_6cygrpc___pyx_scope_struct_57_wait_for_termination = &__pyx_type_4grpc_7_cython_6cygrpc___pyx_scope_struct_57_wait_for_termination;
  __Pyx_RefNannyFinishContext();
  return 0;
  __pyx_L1_error:;
  __Pyx_RefNannyFinishContext();
  return -1;
}

static int __Pyx_modinit_type_import_code(void) {
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("__Pyx_modinit_type_import_code", 0);
  /*--- Type import code ---*/
  __pyx_t_1 = PyImport_ImportModule(__Pyx_BUILTIN_MODULE_NAME); if (unlikely(!__pyx_t_1)) __PYX_ERR(35, 9, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_ptype_7cpython_4type_type = __Pyx_ImportType(__pyx_t_1, __Pyx_BUILTIN_MODULE_NAME, "type", 
  #if defined(PYPY_VERSION_NUM) && PYPY_VERSION_NUM < 0x050B0000
  sizeof(PyTypeObject),
  #else
  sizeof(PyHeapTypeObject),
  #endif
  __Pyx_ImportType_CheckSize_Warn);
   if (!__pyx_ptype_7cpython_4type_type) __PYX_ERR(35, 9, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  __pyx_t_1 = PyImport_ImportModule(__Pyx_BUILTIN_MODULE_NAME); if (unlikely(!__pyx_t_1)) __PYX_ERR(36, 8, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_ptype_7cpython_4bool_bool = __Pyx_ImportType(__pyx_t_1, __Pyx_BUILTIN_MODULE_NAME, "bool", sizeof(PyBoolObject), __Pyx_ImportType_CheckSize_Warn);
   if (!__pyx_ptype_7cpython_4bool_bool) __PYX_ERR(36, 8, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  __pyx_t_1 = PyImport_ImportModule(__Pyx_BUILTIN_MODULE_NAME); if (unlikely(!__pyx_t_1)) __PYX_ERR(37, 15, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_ptype_7cpython_7complex_complex = __Pyx_ImportType(__pyx_t_1, __Pyx_BUILTIN_MODULE_NAME, "complex", sizeof(PyComplexObject), __Pyx_ImportType_CheckSize_Warn);
   if (!__pyx_ptype_7cpython_7complex_complex) __PYX_ERR(37, 15, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  __Pyx_RefNannyFinishContext();
  return 0;
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_RefNannyFinishContext();
  return -1;
}

static int __Pyx_modinit_variable_import_code(void) {
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__Pyx_modinit_variable_import_code", 0);
  /*--- Variable import code ---*/
  __Pyx_RefNannyFinishContext();
  return 0;
}

static int __Pyx_modinit_function_import_code(void) {
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__Pyx_modinit_function_import_code", 0);
  /*--- Function import code ---*/
  __Pyx_RefNannyFinishContext();
  return 0;
}


#ifndef CYTHON_NO_PYINIT_EXPORT
#define __Pyx_PyMODINIT_FUNC PyMODINIT_FUNC
#elif PY_MAJOR_VERSION < 3
#ifdef __cplusplus
#define __Pyx_PyMODINIT_FUNC extern "C" void
#else
#define __Pyx_PyMODINIT_FUNC void
#endif
#else
#ifdef __cplusplus
#define __Pyx_PyMODINIT_FUNC extern "C" PyObject *
#else
#define __Pyx_PyMODINIT_FUNC PyObject *
#endif
#endif


#if PY_MAJOR_VERSION < 3
__Pyx_PyMODINIT_FUNC initcygrpc(void) CYTHON_SMALL_CODE; /*proto*/
__Pyx_PyMODINIT_FUNC initcygrpc(void)
#else
__Pyx_PyMODINIT_FUNC PyInit_cygrpc(void) CYTHON_SMALL_CODE; /*proto*/
__Pyx_PyMODINIT_FUNC PyInit_cygrpc(void)
#if CYTHON_PEP489_MULTI_PHASE_INIT
{
  return PyModuleDef_Init(&__pyx_moduledef);
}
static CYTHON_SMALL_CODE int __Pyx_check_single_interpreter(void) {
    #if PY_VERSION_HEX >= 0x030700A1
    static PY_INT64_T main_interpreter_id = -1;
    PY_INT64_T current_id = PyInterpreterState_GetID(PyThreadState_Get()->interp);
    if (main_interpreter_id == -1) {
        main_interpreter_id = current_id;
        return (unlikely(current_id == -1)) ? -1 : 0;
    } else if (unlikely(main_interpreter_id != current_id))
    #else
    static PyInterpreterState *main_interpreter = NULL;
    PyInterpreterState *current_interpreter = PyThreadState_Get()->interp;
    if (!main_interpreter) {
        main_interpreter = current_interpreter;
    } else if (unlikely(main_interpreter != current_interpreter))
    #endif
    {
        PyErr_SetString(
            PyExc_ImportError,
            "Interpreter change detected - this module can only be loaded into one interpreter per process.");
        return -1;
    }
    return 0;
}
static CYTHON_SMALL_CODE int __Pyx_copy_spec_to_module(PyObject *spec, PyObject *moddict, const char* from_name, const char* to_name, int allow_none) {
    PyObject *value = PyObject_GetAttrString(spec, from_name);
    int result = 0;
    if (likely(value)) {
        if (allow_none || value != Py_None) {
            result = PyDict_SetItemString(moddict, to_name, value);
        }
        Py_DECREF(value);
    } else if (PyErr_ExceptionMatches(PyExc_AttributeError)) {
        PyErr_Clear();
    } else {
        result = -1;
    }
    return result;
}
static CYTHON_SMALL_CODE PyObject* __pyx_pymod_create(PyObject *spec, CYTHON_UNUSED PyModuleDef *def) {
    PyObject *module = NULL, *moddict, *modname;
    if (__Pyx_check_single_interpreter())
        return NULL;
    if (__pyx_m)
        return __Pyx_NewRef(__pyx_m);
    modname = PyObject_GetAttrString(spec, "name");
    if (unlikely(!modname)) goto bad;
    module = PyModule_NewObject(modname);
    Py_DECREF(modname);
    if (unlikely(!module)) goto bad;
    moddict = PyModule_GetDict(module);
    if (unlikely(!moddict)) goto bad;
    if (unlikely(__Pyx_copy_spec_to_module(spec, moddict, "loader", "__loader__", 1) < 0)) goto bad;
    if (unlikely(__Pyx_copy_spec_to_module(spec, moddict, "origin", "__file__", 1) < 0)) goto bad;
    if (unlikely(__Pyx_copy_spec_to_module(spec, moddict, "parent", "__package__", 1) < 0)) goto bad;
    if (unlikely(__Pyx_copy_spec_to_module(spec, moddict, "submodule_search_locations", "__path__", 0) < 0)) goto bad;
    return module;
bad:
    Py_XDECREF(module);
    return NULL;
}


static CYTHON_SMALL_CODE int __pyx_pymod_exec_cygrpc(PyObject *__pyx_pyinit_module)
#endif
#endif
{
  PyObject *__pyx_t_1 = NULL;
  PyObject *__pyx_t_2 = NULL;
  PyObject *__pyx_t_3 = NULL;
  PyObject *__pyx_t_4 = NULL;
  int __pyx_t_5;
  PyObject *__pyx_t_6 = NULL;
  PyObject *__pyx_t_7 = NULL;
  int __pyx_t_8;
  PyObject *__pyx_t_9 = NULL;
  int __pyx_t_10;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannyDeclarations
  #if CYTHON_PEP489_MULTI_PHASE_INIT
  if (__pyx_m) {
    if (__pyx_m == __pyx_pyinit_module) return 0;
    PyErr_SetString(PyExc_RuntimeError, "Module 'cygrpc' has already been imported. Re-initialisation is not supported.");
    return -1;
  }
  #elif PY_MAJOR_VERSION >= 3
  if (__pyx_m) return __Pyx_NewRef(__pyx_m);
  #endif
  #if CYTHON_REFNANNY
__Pyx_RefNanny = __Pyx_RefNannyImportAPI("refnanny");
if (!__Pyx_RefNanny) {
  PyErr_Clear();
  __Pyx_RefNanny = __Pyx_RefNannyImportAPI("Cython.Runtime.refnanny");
  if (!__Pyx_RefNanny)
      Py_FatalError("failed to import 'refnanny' module");
}
#endif
  __Pyx_RefNannySetupContext("__Pyx_PyMODINIT_FUNC PyInit_cygrpc(void)", 0);
  if (__Pyx_check_binary_version() < 0) __PYX_ERR(0, 1, __pyx_L1_error)
  #ifdef __Pxy_PyFrame_Initialize_Offsets
  __Pxy_PyFrame_Initialize_Offsets();
  #endif
  __pyx_empty_tuple = PyTuple_New(0); if (unlikely(!__pyx_empty_tuple)) __PYX_ERR(0, 1, __pyx_L1_error)
  __pyx_empty_bytes = PyBytes_FromStringAndSize("", 0); if (unlikely(!__pyx_empty_bytes)) __PYX_ERR(0, 1, __pyx_L1_error)
  __pyx_empty_unicode = PyUnicode_FromStringAndSize("", 0); if (unlikely(!__pyx_empty_unicode)) __PYX_ERR(0, 1, __pyx_L1_error)
  #ifdef __Pyx_CyFunction_USED
  if (__pyx_CyFunction_init() < 0) __PYX_ERR(0, 1, __pyx_L1_error)
  #endif
  #ifdef __Pyx_FusedFunction_USED
  if (__pyx_FusedFunction_init() < 0) __PYX_ERR(0, 1, __pyx_L1_error)
  #endif
  #ifdef __Pyx_Coroutine_USED
  if (__pyx_Coroutine_init() < 0) __PYX_ERR(0, 1, __pyx_L1_error)
  #endif
  #ifdef __Pyx_Generator_USED
  if (__pyx_Generator_init() < 0) __PYX_ERR(0, 1, __pyx_L1_error)
  #endif
  #ifdef __Pyx_AsyncGen_USED
  if (__pyx_AsyncGen_init() < 0) __PYX_ERR(0, 1, __pyx_L1_error)
  #endif
  #ifdef __Pyx_StopAsyncIteration_USED
  if (__pyx_StopAsyncIteration_init() < 0) __PYX_ERR(0, 1, __pyx_L1_error)
  #endif
  /*--- Library function declarations ---*/
  /*--- Threads initialization code ---*/
  #if defined(WITH_THREAD) && PY_VERSION_HEX < 0x030700F0 && defined(__PYX_FORCE_INIT_THREADS) && __PYX_FORCE_INIT_THREADS
  PyEval_InitThreads();
  #endif
  /*--- Module creation code ---*/
  #if CYTHON_PEP489_MULTI_PHASE_INIT
  __pyx_m = __pyx_pyinit_module;
  Py_INCREF(__pyx_m);
  #else
  #if PY_MAJOR_VERSION < 3
  __pyx_m = Py_InitModule4("cygrpc", __pyx_methods, 0, 0, PYTHON_API_VERSION); Py_XINCREF(__pyx_m);
  #else
  __pyx_m = PyModule_Create(&__pyx_moduledef);
  #endif
  if (unlikely(!__pyx_m)) __PYX_ERR(0, 1, __pyx_L1_error)
  #endif
  __pyx_d = PyModule_GetDict(__pyx_m); if (unlikely(!__pyx_d)) __PYX_ERR(0, 1, __pyx_L1_error)
  Py_INCREF(__pyx_d);
  __pyx_b = PyImport_AddModule(__Pyx_BUILTIN_MODULE_NAME); if (unlikely(!__pyx_b)) __PYX_ERR(0, 1, __pyx_L1_error)
  Py_INCREF(__pyx_b);
  __pyx_cython_runtime = PyImport_AddModule((char *) "cython_runtime"); if (unlikely(!__pyx_cython_runtime)) __PYX_ERR(0, 1, __pyx_L1_error)
  Py_INCREF(__pyx_cython_runtime);
  if (PyObject_SetAttrString(__pyx_m, "__builtins__", __pyx_b) < 0) __PYX_ERR(0, 1, __pyx_L1_error);
  /*--- Initialize various global constants etc. ---*/
  if (__Pyx_InitGlobals() < 0) __PYX_ERR(0, 1, __pyx_L1_error)
  #if PY_MAJOR_VERSION < 3 && (__PYX_DEFAULT_STRING_ENCODING_IS_ASCII || __PYX_DEFAULT_STRING_ENCODING_IS_DEFAULT)
  if (__Pyx_init_sys_getdefaultencoding_params() < 0) __PYX_ERR(0, 1, __pyx_L1_error)
  #endif
  if (__pyx_module_is_main_grpc___cython__cygrpc) {
    if (PyObject_SetAttr(__pyx_m, __pyx_n_s_name_2, __pyx_n_s_main) < 0) __PYX_ERR(0, 1, __pyx_L1_error)
  }
  #if PY_MAJOR_VERSION >= 3
  {
    PyObject *modules = PyImport_GetModuleDict(); if (unlikely(!modules)) __PYX_ERR(0, 1, __pyx_L1_error)
    if (!PyDict_GetItemString(modules, "grpc._cython.cygrpc")) {
      if (unlikely(PyDict_SetItemString(modules, "grpc._cython.cygrpc", __pyx_m) < 0)) __PYX_ERR(0, 1, __pyx_L1_error)
    }
  }
  #endif
  /*--- Builtin init code ---*/
  if (__Pyx_InitCachedBuiltins() < 0) __PYX_ERR(0, 1, __pyx_L1_error)
  /*--- Constants init code ---*/
  if (__Pyx_InitCachedConstants() < 0) __PYX_ERR(0, 1, __pyx_L1_error)
  /*--- Global type/function init code ---*/
  (void)__Pyx_modinit_global_init_code();
  if (unlikely(__Pyx_modinit_variable_export_code() < 0)) __PYX_ERR(0, 1, __pyx_L1_error)
  if (unlikely(__Pyx_modinit_function_export_code() < 0)) __PYX_ERR(0, 1, __pyx_L1_error)
  if (unlikely(__Pyx_modinit_type_init_code() < 0)) __PYX_ERR(0, 1, __pyx_L1_error)
  if (unlikely(__Pyx_modinit_type_import_code() < 0)) __PYX_ERR(0, 1, __pyx_L1_error)
  (void)__Pyx_modinit_variable_import_code();
  (void)__Pyx_modinit_function_import_code();
  /*--- Execution code ---*/
  #if defined(__Pyx_Generator_USED) || defined(__Pyx_Coroutine_USED)
  if (__Pyx_patch_abc() < 0) __PYX_ERR(0, 1, __pyx_L1_error)
  #endif

  /* "grpc/_cython/cygrpc.pyx":18
 * cimport cpython
 * 
 * import logging             # <<<<<<<<<<<<<<
 * import os
 * import sys
 */
  __pyx_t_1 = __Pyx_Import(__pyx_n_s_logging, 0, -1); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 18, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  if (PyDict_SetItem(__pyx_d, __pyx_n_s_logging, __pyx_t_1) < 0) __PYX_ERR(0, 18, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;

  /* "grpc/_cython/cygrpc.pyx":19
 * 
 * import logging
 * import os             # <<<<<<<<<<<<<<
 * import sys
 * import threading
 */
  __pyx_t_1 = __Pyx_Import(__pyx_n_s_os, 0, -1); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 19, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  if (PyDict_SetItem(__pyx_d, __pyx_n_s_os, __pyx_t_1) < 0) __PYX_ERR(0, 19, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;

  /* "grpc/_cython/cygrpc.pyx":20
 * import logging
 * import os
 * import sys             # <<<<<<<<<<<<<<
 * import threading
 * import time
 */
  __pyx_t_1 = __Pyx_Import(__pyx_n_s_sys, 0, -1); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 20, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  if (PyDict_SetItem(__pyx_d, __pyx_n_s_sys, __pyx_t_1) < 0) __PYX_ERR(0, 20, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;

  /* "grpc/_cython/cygrpc.pyx":21
 * import os
 * import sys
 * import threading             # <<<<<<<<<<<<<<
 * import time
 * 
 */
  __pyx_t_1 = __Pyx_Import(__pyx_n_s_threading, 0, -1); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 21, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  if (PyDict_SetItem(__pyx_d, __pyx_n_s_threading, __pyx_t_1) < 0) __PYX_ERR(0, 21, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;

  /* "grpc/_cython/cygrpc.pyx":22
 * import sys
 * import threading
 * import time             # <<<<<<<<<<<<<<
 * 
 * import grpc
 */
  __pyx_t_1 = __Pyx_Import(__pyx_n_s_time, 0, -1); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 22, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  if (PyDict_SetItem(__pyx_d, __pyx_n_s_time, __pyx_t_1) < 0) __PYX_ERR(0, 22, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;

  /* "grpc/_cython/cygrpc.pyx":24
 * import time
 * 
 * import grpc             # <<<<<<<<<<<<<<
 * 
 * try:
 */
  __pyx_t_1 = __Pyx_Import(__pyx_n_s_grpc, 0, -1); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 24, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  if (PyDict_SetItem(__pyx_d, __pyx_n_s_grpc, __pyx_t_1) < 0) __PYX_ERR(0, 24, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;

  /* "grpc/_cython/cygrpc.pyx":26
 * import grpc
 * 
 * try:             # <<<<<<<<<<<<<<
 *     import asyncio
 * except ImportError:
 */
  {
    __Pyx_PyThreadState_declare
    __Pyx_PyThreadState_assign
    __Pyx_ExceptionSave(&__pyx_t_2, &__pyx_t_3, &__pyx_t_4);
    __Pyx_XGOTREF(__pyx_t_2);
    __Pyx_XGOTREF(__pyx_t_3);
    __Pyx_XGOTREF(__pyx_t_4);
    /*try:*/ {

      /* "grpc/_cython/cygrpc.pyx":27
 * 
 * try:
 *     import asyncio             # <<<<<<<<<<<<<<
 * except ImportError:
 *     # TODO(https://github.com/grpc/grpc/issues/19728) Improve how Aio Cython is
 */
      __pyx_t_1 = __Pyx_patch_asyncio(__Pyx_Import(__pyx_n_s_asyncio, 0, -1)); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 27, __pyx_L2_error)
      __Pyx_GOTREF(__pyx_t_1);
      if (PyDict_SetItem(__pyx_d, __pyx_n_s_asyncio, __pyx_t_1) < 0) __PYX_ERR(0, 27, __pyx_L2_error)
      __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;

      /* "grpc/_cython/cygrpc.pyx":26
 * import grpc
 * 
 * try:             # <<<<<<<<<<<<<<
 *     import asyncio
 * except ImportError:
 */
    }
    __Pyx_XDECREF(__pyx_t_2); __pyx_t_2 = 0;
    __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0;
    __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0;
    goto __pyx_L7_try_end;
    __pyx_L2_error:;
    __Pyx_XDECREF(__pyx_t_1); __pyx_t_1 = 0;

    /* "grpc/_cython/cygrpc.pyx":28
 * try:
 *     import asyncio
 * except ImportError:             # <<<<<<<<<<<<<<
 *     # TODO(https://github.com/grpc/grpc/issues/19728) Improve how Aio Cython is
 *     # distributed without breaking none compatible Python versions. For now, if
 */
    __pyx_t_5 = __Pyx_PyErr_ExceptionMatches(__pyx_builtin_ImportError);
    if (__pyx_t_5) {
      __Pyx_ErrRestore(0,0,0);
      goto __pyx_L3_exception_handled;
    }
    goto __pyx_L4_except_error;
    __pyx_L4_except_error:;

    /* "grpc/_cython/cygrpc.pyx":26
 * import grpc
 * 
 * try:             # <<<<<<<<<<<<<<
 *     import asyncio
 * except ImportError:
 */
    __Pyx_XGIVEREF(__pyx_t_2);
    __Pyx_XGIVEREF(__pyx_t_3);
    __Pyx_XGIVEREF(__pyx_t_4);
    __Pyx_ExceptionReset(__pyx_t_2, __pyx_t_3, __pyx_t_4);
    goto __pyx_L1_error;
    __pyx_L3_exception_handled:;
    __Pyx_XGIVEREF(__pyx_t_2);
    __Pyx_XGIVEREF(__pyx_t_3);
    __Pyx_XGIVEREF(__pyx_t_4);
    __Pyx_ExceptionReset(__pyx_t_2, __pyx_t_3, __pyx_t_4);
    __pyx_L7_try_end:;
  }

  /* "grpc/_cython/cygrpc.pyx":35
 * 
 * # The only copy of Python logger for the Cython extension
 * _LOGGER = logging.getLogger(__name__)             # <<<<<<<<<<<<<<
 * 
 * # TODO(atash): figure out why the coverage tool gets confused about the Cython
 */
  __Pyx_GetModuleGlobalName(__pyx_t_1, __pyx_n_s_logging); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 35, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_t_6 = __Pyx_PyObject_GetAttrStr(__pyx_t_1, __pyx_n_s_getLogger); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 35, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_6);
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  __Pyx_GetModuleGlobalName(__pyx_t_1, __pyx_n_s_name_2); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 35, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_t_7 = __Pyx_PyObject_CallOneArg(__pyx_t_6, __pyx_t_1); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 35, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_7);
  __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  if (PyDict_SetItem(__pyx_d, __pyx_n_s_LOGGER, __pyx_t_7) < 0) __PYX_ERR(0, 35, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;

  /* "src/python/grpcio/grpc/_cython/_cygrpc/call.pyx.pxi":47
 * 
 *   def cancel(
 *       self, grpc_status_code error_code=GRPC_STATUS__DO_NOT_USE,             # <<<<<<<<<<<<<<
 *       details=None):
 *     details = str_to_bytes(details)
 */
  __pyx_k__9 = GRPC_STATUS__DO_NOT_USE;

  /* "src/python/grpcio/grpc/_cython/_cygrpc/channel.pyx.pxi":17
 * 
 * _INTERNAL_CALL_ERROR_MESSAGE_FORMAT = (
 *     'Internal gRPC call error %d. ' +             # <<<<<<<<<<<<<<
 *     'Please report to https://github.com/grpc/grpc/issues')
 * 
 */
  __pyx_t_7 = PyNumber_Add(__pyx_kp_s_Internal_gRPC_call_error_d, __pyx_kp_s_Please_report_to_https_github_co); if (unlikely(!__pyx_t_7)) __PYX_ERR(12, 17, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_7);
  if (PyDict_SetItem(__pyx_d, __pyx_n_s_INTERNAL_CALL_ERROR_MESSAGE_FOR, __pyx_t_7) < 0) __PYX_ERR(12, 16, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;

  /* "src/python/grpcio/grpc/_cython/_cygrpc/channelz.pyx.pxi":16
 * 
 * 
 * def channelz_get_top_channels(start_channel_id):             # <<<<<<<<<<<<<<
 *     cdef char *c_returned_str = grpc_channelz_get_top_channels(
 *         start_channel_id,
 */
  __pyx_t_7 = PyCFunction_NewEx(&__pyx_mdef_4grpc_7_cython_6cygrpc_1channelz_get_top_channels, NULL, __pyx_n_s_grpc__cython_cygrpc); if (unlikely(!__pyx_t_7)) __PYX_ERR(13, 16, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_7);
  if (PyDict_SetItem(__pyx_d, __pyx_n_s_channelz_get_top_channels, __pyx_t_7) < 0) __PYX_ERR(13, 16, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;

  /* "src/python/grpcio/grpc/_cython/_cygrpc/channelz.pyx.pxi":25
 *     return c_returned_str
 * 
 * def channelz_get_servers(start_server_id):             # <<<<<<<<<<<<<<
 *     cdef char *c_returned_str = grpc_channelz_get_servers(start_server_id)
 *     if c_returned_str == NULL:
 */
  __pyx_t_7 = PyCFunction_NewEx(&__pyx_mdef_4grpc_7_cython_6cygrpc_3channelz_get_servers, NULL, __pyx_n_s_grpc__cython_cygrpc); if (unlikely(!__pyx_t_7)) __PYX_ERR(13, 25, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_7);
  if (PyDict_SetItem(__pyx_d, __pyx_n_s_channelz_get_servers, __pyx_t_7) < 0) __PYX_ERR(13, 25, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;

  /* "src/python/grpcio/grpc/_cython/_cygrpc/channelz.pyx.pxi":32
 *     return c_returned_str
 * 
 * def channelz_get_server(server_id):             # <<<<<<<<<<<<<<
 *     cdef char *c_returned_str = grpc_channelz_get_server(server_id)
 *     if c_returned_str == NULL:
 */
  __pyx_t_7 = PyCFunction_NewEx(&__pyx_mdef_4grpc_7_cython_6cygrpc_5channelz_get_server, NULL, __pyx_n_s_grpc__cython_cygrpc); if (unlikely(!__pyx_t_7)) __PYX_ERR(13, 32, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_7);
  if (PyDict_SetItem(__pyx_d, __pyx_n_s_channelz_get_server, __pyx_t_7) < 0) __PYX_ERR(13, 32, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;

  /* "src/python/grpcio/grpc/_cython/_cygrpc/channelz.pyx.pxi":39
 *     return c_returned_str
 * 
 * def channelz_get_server_sockets(server_id, start_socket_id, max_results):             # <<<<<<<<<<<<<<
 *     cdef char *c_returned_str = grpc_channelz_get_server_sockets(
 *         server_id,
 */
  __pyx_t_7 = PyCFunction_NewEx(&__pyx_mdef_4grpc_7_cython_6cygrpc_7channelz_get_server_sockets, NULL, __pyx_n_s_grpc__cython_cygrpc); if (unlikely(!__pyx_t_7)) __PYX_ERR(13, 39, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_7);
  if (PyDict_SetItem(__pyx_d, __pyx_n_s_channelz_get_server_sockets, __pyx_t_7) < 0) __PYX_ERR(13, 39, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;

  /* "src/python/grpcio/grpc/_cython/_cygrpc/channelz.pyx.pxi":52
 *     return c_returned_str
 * 
 * def channelz_get_channel(channel_id):             # <<<<<<<<<<<<<<
 *     cdef char *c_returned_str = grpc_channelz_get_channel(channel_id)
 *     if c_returned_str == NULL:
 */
  __pyx_t_7 = PyCFunction_NewEx(&__pyx_mdef_4grpc_7_cython_6cygrpc_9channelz_get_channel, NULL, __pyx_n_s_grpc__cython_cygrpc); if (unlikely(!__pyx_t_7)) __PYX_ERR(13, 52, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_7);
  if (PyDict_SetItem(__pyx_d, __pyx_n_s_channelz_get_channel, __pyx_t_7) < 0) __PYX_ERR(13, 52, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;

  /* "src/python/grpcio/grpc/_cython/_cygrpc/channelz.pyx.pxi":59
 *     return c_returned_str
 * 
 * def channelz_get_subchannel(subchannel_id):             # <<<<<<<<<<<<<<
 *     cdef char *c_returned_str = grpc_channelz_get_subchannel(subchannel_id)
 *     if c_returned_str == NULL:
 */
  __pyx_t_7 = PyCFunction_NewEx(&__pyx_mdef_4grpc_7_cython_6cygrpc_11channelz_get_subchannel, NULL, __pyx_n_s_grpc__cython_cygrpc); if (unlikely(!__pyx_t_7)) __PYX_ERR(13, 59, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_7);
  if (PyDict_SetItem(__pyx_d, __pyx_n_s_channelz_get_subchannel, __pyx_t_7) < 0) __PYX_ERR(13, 59, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;

  /* "src/python/grpcio/grpc/_cython/_cygrpc/channelz.pyx.pxi":66
 *     return c_returned_str
 * 
 * def channelz_get_socket(socket_id):             # <<<<<<<<<<<<<<
 *     cdef char *c_returned_str = grpc_channelz_get_socket(socket_id)
 *     if c_returned_str == NULL:
 */
  __pyx_t_7 = PyCFunction_NewEx(&__pyx_mdef_4grpc_7_cython_6cygrpc_13channelz_get_socket, NULL, __pyx_n_s_grpc__cython_cygrpc); if (unlikely(!__pyx_t_7)) __PYX_ERR(13, 66, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_7);
  if (PyDict_SetItem(__pyx_d, __pyx_n_s_channelz_get_socket, __pyx_t_7) < 0) __PYX_ERR(13, 66, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;

  /* "src/python/grpcio/grpc/_cython/_cygrpc/csds.pyx.pxi":16
 * 
 * 
 * def dump_xds_configs():             # <<<<<<<<<<<<<<
 *     cdef grpc_slice client_config_in_slice
 *     with nogil:
 */
  __pyx_t_7 = PyCFunction_NewEx(&__pyx_mdef_4grpc_7_cython_6cygrpc_15dump_xds_configs, NULL, __pyx_n_s_grpc__cython_cygrpc); if (unlikely(!__pyx_t_7)) __PYX_ERR(14, 16, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_7);
  if (PyDict_SetItem(__pyx_d, __pyx_n_s_dump_xds_configs, __pyx_t_7) < 0) __PYX_ERR(14, 16, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;

  /* "src/python/grpcio/grpc/_cython/_cygrpc/credentials.pyx.pxi":16
 * 
 * 
 * def _spawn_callback_in_thread(cb_func, args):             # <<<<<<<<<<<<<<
 *   t = ForkManagedThread(target=cb_func, args=args)
 *   t.setDaemon(True)
 */
  __pyx_t_7 = PyCFunction_NewEx(&__pyx_mdef_4grpc_7_cython_6cygrpc_17_spawn_callback_in_thread, NULL, __pyx_n_s_grpc__cython_cygrpc); if (unlikely(!__pyx_t_7)) __PYX_ERR(5, 16, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_7);
  if (PyDict_SetItem(__pyx_d, __pyx_n_s_spawn_callback_in_thread, __pyx_t_7) < 0) __PYX_ERR(5, 16, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;

  /* "src/python/grpcio/grpc/_cython/_cygrpc/credentials.pyx.pxi":21
 *   t.start()
 * 
 * async_callback_func = _spawn_callback_in_thread             # <<<<<<<<<<<<<<
 * 
 * def set_async_callback_func(callback_func):
 */
  __Pyx_GetModuleGlobalName(__pyx_t_7, __pyx_n_s_spawn_callback_in_thread); if (unlikely(!__pyx_t_7)) __PYX_ERR(5, 21, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_7);
  if (PyDict_SetItem(__pyx_d, __pyx_n_s_async_callback_func, __pyx_t_7) < 0) __PYX_ERR(5, 21, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;

  /* "src/python/grpcio/grpc/_cython/_cygrpc/credentials.pyx.pxi":23
 * async_callback_func = _spawn_callback_in_thread
 * 
 * def set_async_callback_func(callback_func):             # <<<<<<<<<<<<<<
 *   global async_callback_func
 *   async_callback_func = callback_func
 */
  __pyx_t_7 = PyCFunction_NewEx(&__pyx_mdef_4grpc_7_cython_6cygrpc_19set_async_callback_func, NULL, __pyx_n_s_grpc__cython_cygrpc); if (unlikely(!__pyx_t_7)) __PYX_ERR(5, 23, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_7);
  if (PyDict_SetItem(__pyx_d, __pyx_n_s_set_async_callback_func, __pyx_t_7) < 0) __PYX_ERR(5, 23, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;

  /* "src/python/grpcio/grpc/_cython/_cygrpc/credentials.pyx.pxi":27
 *   async_callback_func = callback_func
 * 
 * def _spawn_callback_async(callback, args):             # <<<<<<<<<<<<<<
 *   async_callback_func(callback, args)
 * 
 */
  __pyx_t_7 = PyCFunction_NewEx(&__pyx_mdef_4grpc_7_cython_6cygrpc_21_spawn_callback_async, NULL, __pyx_n_s_grpc__cython_cygrpc); if (unlikely(!__pyx_t_7)) __PYX_ERR(5, 27, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_7);
  if (PyDict_SetItem(__pyx_d, __pyx_n_s_spawn_callback_async, __pyx_t_7) < 0) __PYX_ERR(5, 27, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;

  /* "src/python/grpcio/grpc/_cython/_cygrpc/credentials.pyx.pxi":255
 *   return c_ssl_pem_key_cert_pairs
 * 
 * def server_credentials_ssl(pem_root_certs, pem_key_cert_pairs,             # <<<<<<<<<<<<<<
 *                            bint force_client_auth):
 *   pem_root_certs = str_to_bytes(pem_root_certs)
 */
  __pyx_t_7 = PyCFunction_NewEx(&__pyx_mdef_4grpc_7_cython_6cygrpc_23server_credentials_ssl, NULL, __pyx_n_s_grpc__cython_cygrpc); if (unlikely(!__pyx_t_7)) __PYX_ERR(5, 255, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_7);
  if (PyDict_SetItem(__pyx_d, __pyx_n_s_server_credentials_ssl, __pyx_t_7) < 0) __PYX_ERR(5, 255, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;

  /* "src/python/grpcio/grpc/_cython/_cygrpc/credentials.pyx.pxi":280
 *   return credentials
 * 
 * def server_certificate_config_ssl(pem_root_certs, pem_key_cert_pairs):             # <<<<<<<<<<<<<<
 *   pem_root_certs = str_to_bytes(pem_root_certs)
 *   pem_key_cert_pairs = list(pem_key_cert_pairs)
 */
  __pyx_t_7 = PyCFunction_NewEx(&__pyx_mdef_4grpc_7_cython_6cygrpc_25server_certificate_config_ssl, NULL, __pyx_n_s_grpc__cython_cygrpc); if (unlikely(!__pyx_t_7)) __PYX_ERR(5, 280, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_7);
  if (PyDict_SetItem(__pyx_d, __pyx_n_s_server_certificate_config_ssl, __pyx_t_7) < 0) __PYX_ERR(5, 280, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;

  /* "src/python/grpcio/grpc/_cython/_cygrpc/credentials.pyx.pxi":294
 *   return cert_config
 * 
 * def server_credentials_ssl_dynamic_cert_config(initial_cert_config,             # <<<<<<<<<<<<<<
 *                                                cert_config_fetcher,
 *                                                bint force_client_auth):
 */
  __pyx_t_7 = PyCFunction_NewEx(&__pyx_mdef_4grpc_7_cython_6cygrpc_27server_credentials_ssl_dynamic_cert_config, NULL, __pyx_n_s_grpc__cython_cygrpc); if (unlikely(!__pyx_t_7)) __PYX_ERR(5, 294, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_7);
  if (PyDict_SetItem(__pyx_d, __pyx_n_s_server_credentials_ssl_dynamic_c, __pyx_t_7) < 0) __PYX_ERR(5, 294, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;

  /* "src/python/grpcio/grpc/_cython/_cygrpc/credentials.pyx.pxi":354
 * 
 * 
 * class LocalConnectionType:             # <<<<<<<<<<<<<<
 *   uds = UDS
 *   local_tcp = LOCAL_TCP
 */
  __pyx_t_7 = __Pyx_Py3MetaclassPrepare((PyObject *) NULL, __pyx_empty_tuple, __pyx_n_s_LocalConnectionType, __pyx_n_s_LocalConnectionType, (PyObject *) NULL, __pyx_n_s_grpc__cython_cygrpc, (PyObject *) NULL); if (unlikely(!__pyx_t_7)) __PYX_ERR(5, 354, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_7);

  /* "src/python/grpcio/grpc/_cython/_cygrpc/credentials.pyx.pxi":355
 * 
 * class LocalConnectionType:
 *   uds = UDS             # <<<<<<<<<<<<<<
 *   local_tcp = LOCAL_TCP
 * 
 */
  __pyx_t_1 = __Pyx_PyInt_From_grpc_local_connect_type(UDS); if (unlikely(!__pyx_t_1)) __PYX_ERR(5, 355, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  if (__Pyx_SetNameInClass(__pyx_t_7, __pyx_n_s_uds, __pyx_t_1) < 0) __PYX_ERR(5, 355, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;

  /* "src/python/grpcio/grpc/_cython/_cygrpc/credentials.pyx.pxi":356
 * class LocalConnectionType:
 *   uds = UDS
 *   local_tcp = LOCAL_TCP             # <<<<<<<<<<<<<<
 * 
 * cdef class LocalChannelCredentials(ChannelCredentials):
 */
  __pyx_t_1 = __Pyx_PyInt_From_grpc_local_connect_type(LOCAL_TCP); if (unlikely(!__pyx_t_1)) __PYX_ERR(5, 356, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  if (__Pyx_SetNameInClass(__pyx_t_7, __pyx_n_s_local_tcp, __pyx_t_1) < 0) __PYX_ERR(5, 356, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;

  /* "src/python/grpcio/grpc/_cython/_cygrpc/credentials.pyx.pxi":354
 * 
 * 
 * class LocalConnectionType:             # <<<<<<<<<<<<<<
 *   uds = UDS
 *   local_tcp = LOCAL_TCP
 */
  __pyx_t_1 = __Pyx_Py3ClassCreate(((PyObject*)&__Pyx_DefaultClassType), __pyx_n_s_LocalConnectionType, __pyx_empty_tuple, __pyx_t_7, NULL, 0, 1); if (unlikely(!__pyx_t_1)) __PYX_ERR(5, 354, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  if (PyDict_SetItem(__pyx_d, __pyx_n_s_LocalConnectionType, __pyx_t_1) < 0) __PYX_ERR(5, 354, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;

  /* "src/python/grpcio/grpc/_cython/_cygrpc/credentials.pyx.pxi":368
 *     return grpc_local_credentials_create(local_connect_type)
 * 
 * def channel_credentials_local(grpc_local_connect_type local_connect_type):             # <<<<<<<<<<<<<<
 *   return LocalChannelCredentials(local_connect_type)
 * 
 */
  __pyx_t_7 = PyCFunction_NewEx(&__pyx_mdef_4grpc_7_cython_6cygrpc_29channel_credentials_local, NULL, __pyx_n_s_grpc__cython_cygrpc); if (unlikely(!__pyx_t_7)) __PYX_ERR(5, 368, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_7);
  if (PyDict_SetItem(__pyx_d, __pyx_n_s_channel_credentials_local, __pyx_t_7) < 0) __PYX_ERR(5, 368, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;

  /* "src/python/grpcio/grpc/_cython/_cygrpc/credentials.pyx.pxi":376
 *     return grpc_insecure_credentials_create()
 * 
 * def channel_credentials_insecure():             # <<<<<<<<<<<<<<
 *   return InsecureChannelCredentials()
 * 
 */
  __pyx_t_7 = PyCFunction_NewEx(&__pyx_mdef_4grpc_7_cython_6cygrpc_31channel_credentials_insecure, NULL, __pyx_n_s_grpc__cython_cygrpc); if (unlikely(!__pyx_t_7)) __PYX_ERR(5, 376, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_7);
  if (PyDict_SetItem(__pyx_d, __pyx_n_s_channel_credentials_insecure, __pyx_t_7) < 0) __PYX_ERR(5, 376, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;

  /* "src/python/grpcio/grpc/_cython/_cygrpc/credentials.pyx.pxi":379
 *   return InsecureChannelCredentials()
 * 
 * def server_credentials_local(grpc_local_connect_type local_connect_type):             # <<<<<<<<<<<<<<
 *   cdef ServerCredentials credentials = ServerCredentials()
 *   credentials.c_credentials = grpc_local_server_credentials_create(local_connect_type)
 */
  __pyx_t_7 = PyCFunction_NewEx(&__pyx_mdef_4grpc_7_cython_6cygrpc_33server_credentials_local, NULL, __pyx_n_s_grpc__cython_cygrpc); if (unlikely(!__pyx_t_7)) __PYX_ERR(5, 379, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_7);
  if (PyDict_SetItem(__pyx_d, __pyx_n_s_server_credentials_local, __pyx_t_7) < 0) __PYX_ERR(5, 379, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;

  /* "src/python/grpcio/grpc/_cython/_cygrpc/credentials.pyx.pxi":384
 *   return credentials
 * 
 * def xds_server_credentials(ServerCredentials fallback_credentials):             # <<<<<<<<<<<<<<
 *   cdef ServerCredentials credentials = ServerCredentials()
 *   credentials.c_credentials = grpc_xds_server_credentials_create(fallback_credentials.c_credentials)
 */
  __pyx_t_7 = PyCFunction_NewEx(&__pyx_mdef_4grpc_7_cython_6cygrpc_35xds_server_credentials, NULL, __pyx_n_s_grpc__cython_cygrpc); if (unlikely(!__pyx_t_7)) __PYX_ERR(5, 384, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_7);
  if (PyDict_SetItem(__pyx_d, __pyx_n_s_xds_server_credentials, __pyx_t_7) < 0) __PYX_ERR(5, 384, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;

  /* "src/python/grpcio/grpc/_cython/_cygrpc/credentials.pyx.pxi":392
 *   return credentials
 * 
 * def insecure_server_credentials():             # <<<<<<<<<<<<<<
 *   cdef ServerCredentials credentials = ServerCredentials()
 *   credentials.c_credentials = grpc_insecure_server_credentials_create()
 */
  __pyx_t_7 = PyCFunction_NewEx(&__pyx_mdef_4grpc_7_cython_6cygrpc_37insecure_server_credentials, NULL, __pyx_n_s_grpc__cython_cygrpc); if (unlikely(!__pyx_t_7)) __PYX_ERR(5, 392, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_7);
  if (PyDict_SetItem(__pyx_d, __pyx_n_s_insecure_server_credentials, __pyx_t_7) < 0) __PYX_ERR(5, 392, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;

  /* "src/python/grpcio/grpc/_cython/_cygrpc/credentials.pyx.pxi":413
 * 
 * 
 * def channel_credentials_alts(list service_accounts):             # <<<<<<<<<<<<<<
 *   return ALTSChannelCredentials(service_accounts)
 * 
 */
  __pyx_t_7 = PyCFunction_NewEx(&__pyx_mdef_4grpc_7_cython_6cygrpc_39channel_credentials_alts, NULL, __pyx_n_s_grpc__cython_cygrpc); if (unlikely(!__pyx_t_7)) __PYX_ERR(5, 413, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_7);
  if (PyDict_SetItem(__pyx_d, __pyx_n_s_channel_credentials_alts, __pyx_t_7) < 0) __PYX_ERR(5, 413, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;

  /* "src/python/grpcio/grpc/_cython/_cygrpc/credentials.pyx.pxi":417
 * 
 * 
 * def server_credentials_alts():             # <<<<<<<<<<<<<<
 *   cdef ServerCredentials credentials = ServerCredentials()
 *   cdef grpc_alts_credentials_options* c_options = grpc_alts_credentials_server_options_create()
 */
  __pyx_t_7 = PyCFunction_NewEx(&__pyx_mdef_4grpc_7_cython_6cygrpc_41server_credentials_alts, NULL, __pyx_n_s_grpc__cython_cygrpc); if (unlikely(!__pyx_t_7)) __PYX_ERR(5, 417, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_7);
  if (PyDict_SetItem(__pyx_d, __pyx_n_s_server_credentials_alts, __pyx_t_7) < 0) __PYX_ERR(5, 417, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;

  /* "src/python/grpcio/grpc/_cython/_cygrpc/credentials.pyx.pxi":441
 * 
 * 
 * def channel_credentials_compute_engine(call_creds):             # <<<<<<<<<<<<<<
 *   return ComputeEngineChannelCredentials(call_creds)
 */
  __pyx_t_7 = PyCFunction_NewEx(&__pyx_mdef_4grpc_7_cython_6cygrpc_43channel_credentials_compute_engine, NULL, __pyx_n_s_grpc__cython_cygrpc); if (unlikely(!__pyx_t_7)) __PYX_ERR(5, 441, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_7);
  if (PyDict_SetItem(__pyx_d, __pyx_n_s_channel_credentials_compute_engi, __pyx_t_7) < 0) __PYX_ERR(5, 441, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;

  /* "src/python/grpcio/grpc/_cython/_cygrpc/completion_queue.pyx.pxi":16
 * 
 * 
 * cdef int _INTERRUPT_CHECK_PERIOD_MS = 200             # <<<<<<<<<<<<<<
 * 
 * 
 */
  __pyx_v_4grpc_7_cython_6cygrpc__INTERRUPT_CHECK_PERIOD_MS = 0xC8;

  /* "src/python/grpcio/grpc/_cython/_cygrpc/metadata.pyx.pxi":15
 * # limitations under the License.
 * 
 * import collections             # <<<<<<<<<<<<<<
 * 
 * 
 */
  __pyx_t_7 = __Pyx_Import(__pyx_n_s_collections, 0, -1); if (unlikely(!__pyx_t_7)) __PYX_ERR(18, 15, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_7);
  if (PyDict_SetItem(__pyx_d, __pyx_n_s_collections, __pyx_t_7) < 0) __PYX_ERR(18, 15, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;

  /* "src/python/grpcio/grpc/_cython/_cygrpc/metadata.pyx.pxi":18
 * 
 * 
 * class InitialMetadataFlags:             # <<<<<<<<<<<<<<
 *   used_mask = GRPC_INITIAL_METADATA_USED_MASK
 *   wait_for_ready = GRPC_INITIAL_METADATA_WAIT_FOR_READY
 */
  __pyx_t_7 = __Pyx_Py3MetaclassPrepare((PyObject *) NULL, __pyx_empty_tuple, __pyx_n_s_InitialMetadataFlags, __pyx_n_s_InitialMetadataFlags, (PyObject *) NULL, __pyx_n_s_grpc__cython_cygrpc, (PyObject *) NULL); if (unlikely(!__pyx_t_7)) __PYX_ERR(18, 18, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_7);

  /* "src/python/grpcio/grpc/_cython/_cygrpc/metadata.pyx.pxi":19
 * 
 * class InitialMetadataFlags:
 *   used_mask = GRPC_INITIAL_METADATA_USED_MASK             # <<<<<<<<<<<<<<
 *   wait_for_ready = GRPC_INITIAL_METADATA_WAIT_FOR_READY
 *   wait_for_ready_explicitly_set = GRPC_INITIAL_METADATA_WAIT_FOR_READY_EXPLICITLY_SET
 */
  __pyx_t_1 = __Pyx_PyInt_From_int(GRPC_INITIAL_METADATA_USED_MASK); if (unlikely(!__pyx_t_1)) __PYX_ERR(18, 19, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  if (__Pyx_SetNameInClass(__pyx_t_7, __pyx_n_s_used_mask, __pyx_t_1) < 0) __PYX_ERR(18, 19, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;

  /* "src/python/grpcio/grpc/_cython/_cygrpc/metadata.pyx.pxi":20
 * class InitialMetadataFlags:
 *   used_mask = GRPC_INITIAL_METADATA_USED_MASK
 *   wait_for_ready = GRPC_INITIAL_METADATA_WAIT_FOR_READY             # <<<<<<<<<<<<<<
 *   wait_for_ready_explicitly_set = GRPC_INITIAL_METADATA_WAIT_FOR_READY_EXPLICITLY_SET
 * 
 */
  __pyx_t_1 = __Pyx_PyInt_From_int(GRPC_INITIAL_METADATA_WAIT_FOR_READY); if (unlikely(!__pyx_t_1)) __PYX_ERR(18, 20, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  if (__Pyx_SetNameInClass(__pyx_t_7, __pyx_n_s_wait_for_ready, __pyx_t_1) < 0) __PYX_ERR(18, 20, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;

  /* "src/python/grpcio/grpc/_cython/_cygrpc/metadata.pyx.pxi":21
 *   used_mask = GRPC_INITIAL_METADATA_USED_MASK
 *   wait_for_ready = GRPC_INITIAL_METADATA_WAIT_FOR_READY
 *   wait_for_ready_explicitly_set = GRPC_INITIAL_METADATA_WAIT_FOR_READY_EXPLICITLY_SET             # <<<<<<<<<<<<<<
 * 
 * 
 */
  __pyx_t_1 = __Pyx_PyInt_From_int(GRPC_INITIAL_METADATA_WAIT_FOR_READY_EXPLICITLY_SET); if (unlikely(!__pyx_t_1)) __PYX_ERR(18, 21, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  if (__Pyx_SetNameInClass(__pyx_t_7, __pyx_n_s_wait_for_ready_explicitly_set, __pyx_t_1) < 0) __PYX_ERR(18, 21, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;

  /* "src/python/grpcio/grpc/_cython/_cygrpc/metadata.pyx.pxi":18
 * 
 * 
 * class InitialMetadataFlags:             # <<<<<<<<<<<<<<
 *   used_mask = GRPC_INITIAL_METADATA_USED_MASK
 *   wait_for_ready = GRPC_INITIAL_METADATA_WAIT_FOR_READY
 */
  __pyx_t_1 = __Pyx_Py3ClassCreate(((PyObject*)&__Pyx_DefaultClassType), __pyx_n_s_InitialMetadataFlags, __pyx_empty_tuple, __pyx_t_7, NULL, 0, 1); if (unlikely(!__pyx_t_1)) __PYX_ERR(18, 18, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  if (PyDict_SetItem(__pyx_d, __pyx_n_s_InitialMetadataFlags, __pyx_t_1) < 0) __PYX_ERR(18, 18, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;

  /* "src/python/grpcio/grpc/_cython/_cygrpc/metadata.pyx.pxi":24
 * 
 * 
 * _Metadatum = collections.namedtuple('_Metadatum', ('key', 'value',))             # <<<<<<<<<<<<<<
 * 
 * 
 */
  __Pyx_GetModuleGlobalName(__pyx_t_7, __pyx_n_s_collections); if (unlikely(!__pyx_t_7)) __PYX_ERR(18, 24, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_7);
  __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_t_7, __pyx_n_s_namedtuple); if (unlikely(!__pyx_t_1)) __PYX_ERR(18, 24, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
  __pyx_t_7 = __Pyx_PyObject_Call(__pyx_t_1, __pyx_tuple__244, NULL); if (unlikely(!__pyx_t_7)) __PYX_ERR(18, 24, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_7);
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  if (PyDict_SetItem(__pyx_d, __pyx_n_s_Metadatum, __pyx_t_7) < 0) __PYX_ERR(18, 24, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;

  /* "src/python/grpcio/grpc/_cython/_cygrpc/propagation_bits.pyx.pxi":15
 * # limitations under the License.
 * 
 * class PropagationConstants:             # <<<<<<<<<<<<<<
 *     GRPC_PROPAGATE_DEADLINE = _GRPC_PROPAGATE_DEADLINE
 *     GRPC_PROPAGATE_CENSUS_STATS_CONTEXT = _GRPC_PROPAGATE_CENSUS_STATS_CONTEXT
 */
  __pyx_t_7 = __Pyx_Py3MetaclassPrepare((PyObject *) NULL, __pyx_empty_tuple, __pyx_n_s_PropagationConstants, __pyx_n_s_PropagationConstants, (PyObject *) NULL, __pyx_n_s_grpc__cython_cygrpc, (PyObject *) NULL); if (unlikely(!__pyx_t_7)) __PYX_ERR(38, 15, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_7);

  /* "src/python/grpcio/grpc/_cython/_cygrpc/propagation_bits.pyx.pxi":16
 * 
 * class PropagationConstants:
 *     GRPC_PROPAGATE_DEADLINE = _GRPC_PROPAGATE_DEADLINE             # <<<<<<<<<<<<<<
 *     GRPC_PROPAGATE_CENSUS_STATS_CONTEXT = _GRPC_PROPAGATE_CENSUS_STATS_CONTEXT
 *     GRPC_PROPAGATE_CENSUS_TRACING_CONTEXT = _GRPC_PROPAGATE_CENSUS_TRACING_CONTEXT
 */
  __pyx_t_1 = __Pyx_PyInt_From_int(GRPC_PROPAGATE_DEADLINE); if (unlikely(!__pyx_t_1)) __PYX_ERR(38, 16, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  if (__Pyx_SetNameInClass(__pyx_t_7, __pyx_n_s_GRPC_PROPAGATE_DEADLINE, __pyx_t_1) < 0) __PYX_ERR(38, 16, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;

  /* "src/python/grpcio/grpc/_cython/_cygrpc/propagation_bits.pyx.pxi":17
 * class PropagationConstants:
 *     GRPC_PROPAGATE_DEADLINE = _GRPC_PROPAGATE_DEADLINE
 *     GRPC_PROPAGATE_CENSUS_STATS_CONTEXT = _GRPC_PROPAGATE_CENSUS_STATS_CONTEXT             # <<<<<<<<<<<<<<
 *     GRPC_PROPAGATE_CENSUS_TRACING_CONTEXT = _GRPC_PROPAGATE_CENSUS_TRACING_CONTEXT
 *     GRPC_PROPAGATE_CANCELLATION = _GRPC_PROPAGATE_CANCELLATION
 */
  __pyx_t_1 = __Pyx_PyInt_From_int(GRPC_PROPAGATE_CENSUS_STATS_CONTEXT); if (unlikely(!__pyx_t_1)) __PYX_ERR(38, 17, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  if (__Pyx_SetNameInClass(__pyx_t_7, __pyx_n_s_GRPC_PROPAGATE_CENSUS_STATS_CONT, __pyx_t_1) < 0) __PYX_ERR(38, 17, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;

  /* "src/python/grpcio/grpc/_cython/_cygrpc/propagation_bits.pyx.pxi":18
 *     GRPC_PROPAGATE_DEADLINE = _GRPC_PROPAGATE_DEADLINE
 *     GRPC_PROPAGATE_CENSUS_STATS_CONTEXT = _GRPC_PROPAGATE_CENSUS_STATS_CONTEXT
 *     GRPC_PROPAGATE_CENSUS_TRACING_CONTEXT = _GRPC_PROPAGATE_CENSUS_TRACING_CONTEXT             # <<<<<<<<<<<<<<
 *     GRPC_PROPAGATE_CANCELLATION = _GRPC_PROPAGATE_CANCELLATION
 *     GRPC_PROPAGATE_DEFAULTS = _GRPC_PROPAGATE_DEFAULTS
 */
  __pyx_t_1 = __Pyx_PyInt_From_int(GRPC_PROPAGATE_CENSUS_TRACING_CONTEXT); if (unlikely(!__pyx_t_1)) __PYX_ERR(38, 18, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  if (__Pyx_SetNameInClass(__pyx_t_7, __pyx_n_s_GRPC_PROPAGATE_CENSUS_TRACING_CO, __pyx_t_1) < 0) __PYX_ERR(38, 18, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;

  /* "src/python/grpcio/grpc/_cython/_cygrpc/propagation_bits.pyx.pxi":19
 *     GRPC_PROPAGATE_CENSUS_STATS_CONTEXT = _GRPC_PROPAGATE_CENSUS_STATS_CONTEXT
 *     GRPC_PROPAGATE_CENSUS_TRACING_CONTEXT = _GRPC_PROPAGATE_CENSUS_TRACING_CONTEXT
 *     GRPC_PROPAGATE_CANCELLATION = _GRPC_PROPAGATE_CANCELLATION             # <<<<<<<<<<<<<<
 *     GRPC_PROPAGATE_DEFAULTS = _GRPC_PROPAGATE_DEFAULTS
 */
  __pyx_t_1 = __Pyx_PyInt_From_int(GRPC_PROPAGATE_CANCELLATION); if (unlikely(!__pyx_t_1)) __PYX_ERR(38, 19, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  if (__Pyx_SetNameInClass(__pyx_t_7, __pyx_n_s_GRPC_PROPAGATE_CANCELLATION, __pyx_t_1) < 0) __PYX_ERR(38, 19, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;

  /* "src/python/grpcio/grpc/_cython/_cygrpc/propagation_bits.pyx.pxi":20
 *     GRPC_PROPAGATE_CENSUS_TRACING_CONTEXT = _GRPC_PROPAGATE_CENSUS_TRACING_CONTEXT
 *     GRPC_PROPAGATE_CANCELLATION = _GRPC_PROPAGATE_CANCELLATION
 *     GRPC_PROPAGATE_DEFAULTS = _GRPC_PROPAGATE_DEFAULTS             # <<<<<<<<<<<<<<
 */
  __pyx_t_1 = __Pyx_PyInt_From_int(GRPC_PROPAGATE_DEFAULTS); if (unlikely(!__pyx_t_1)) __PYX_ERR(38, 20, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  if (__Pyx_SetNameInClass(__pyx_t_7, __pyx_n_s_GRPC_PROPAGATE_DEFAULTS, __pyx_t_1) < 0) __PYX_ERR(38, 20, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;

  /* "src/python/grpcio/grpc/_cython/_cygrpc/propagation_bits.pyx.pxi":15
 * # limitations under the License.
 * 
 * class PropagationConstants:             # <<<<<<<<<<<<<<
 *     GRPC_PROPAGATE_DEADLINE = _GRPC_PROPAGATE_DEADLINE
 *     GRPC_PROPAGATE_CENSUS_STATS_CONTEXT = _GRPC_PROPAGATE_CENSUS_STATS_CONTEXT
 */
  __pyx_t_1 = __Pyx_Py3ClassCreate(((PyObject*)&__Pyx_DefaultClassType), __pyx_n_s_PropagationConstants, __pyx_empty_tuple, __pyx_t_7, NULL, 0, 1); if (unlikely(!__pyx_t_1)) __PYX_ERR(38, 15, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  if (PyDict_SetItem(__pyx_d, __pyx_n_s_PropagationConstants, __pyx_t_1) < 0) __PYX_ERR(38, 15, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;

  /* "src/python/grpcio/grpc/_cython/_cygrpc/records.pyx.pxi":35
 * 
 * 
 * class ConnectivityState:             # <<<<<<<<<<<<<<
 *   idle = GRPC_CHANNEL_IDLE
 *   connecting = GRPC_CHANNEL_CONNECTING
 */
  __pyx_t_7 = __Pyx_Py3MetaclassPrepare((PyObject *) NULL, __pyx_empty_tuple, __pyx_n_s_ConnectivityState, __pyx_n_s_ConnectivityState, (PyObject *) NULL, __pyx_n_s_grpc__cython_cygrpc, (PyObject *) NULL); if (unlikely(!__pyx_t_7)) __PYX_ERR(21, 35, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_7);

  /* "src/python/grpcio/grpc/_cython/_cygrpc/records.pyx.pxi":36
 * 
 * class ConnectivityState:
 *   idle = GRPC_CHANNEL_IDLE             # <<<<<<<<<<<<<<
 *   connecting = GRPC_CHANNEL_CONNECTING
 *   ready = GRPC_CHANNEL_READY
 */
  __pyx_t_1 = __Pyx_PyInt_From_grpc_connectivity_state(GRPC_CHANNEL_IDLE); if (unlikely(!__pyx_t_1)) __PYX_ERR(21, 36, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  if (__Pyx_SetNameInClass(__pyx_t_7, __pyx_n_s_idle, __pyx_t_1) < 0) __PYX_ERR(21, 36, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;

  /* "src/python/grpcio/grpc/_cython/_cygrpc/records.pyx.pxi":37
 * class ConnectivityState:
 *   idle = GRPC_CHANNEL_IDLE
 *   connecting = GRPC_CHANNEL_CONNECTING             # <<<<<<<<<<<<<<
 *   ready = GRPC_CHANNEL_READY
 *   transient_failure = GRPC_CHANNEL_TRANSIENT_FAILURE
 */
  __pyx_t_1 = __Pyx_PyInt_From_grpc_connectivity_state(GRPC_CHANNEL_CONNECTING); if (unlikely(!__pyx_t_1)) __PYX_ERR(21, 37, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  if (__Pyx_SetNameInClass(__pyx_t_7, __pyx_n_s_connecting, __pyx_t_1) < 0) __PYX_ERR(21, 37, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;

  /* "src/python/grpcio/grpc/_cython/_cygrpc/records.pyx.pxi":38
 *   idle = GRPC_CHANNEL_IDLE
 *   connecting = GRPC_CHANNEL_CONNECTING
 *   ready = GRPC_CHANNEL_READY             # <<<<<<<<<<<<<<
 *   transient_failure = GRPC_CHANNEL_TRANSIENT_FAILURE
 *   shutdown = GRPC_CHANNEL_SHUTDOWN
 */
  __pyx_t_1 = __Pyx_PyInt_From_grpc_connectivity_state(GRPC_CHANNEL_READY); if (unlikely(!__pyx_t_1)) __PYX_ERR(21, 38, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  if (__Pyx_SetNameInClass(__pyx_t_7, __pyx_n_s_ready, __pyx_t_1) < 0) __PYX_ERR(21, 38, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;

  /* "src/python/grpcio/grpc/_cython/_cygrpc/records.pyx.pxi":39
 *   connecting = GRPC_CHANNEL_CONNECTING
 *   ready = GRPC_CHANNEL_READY
 *   transient_failure = GRPC_CHANNEL_TRANSIENT_FAILURE             # <<<<<<<<<<<<<<
 *   shutdown = GRPC_CHANNEL_SHUTDOWN
 * 
 */
  __pyx_t_1 = __Pyx_PyInt_From_grpc_connectivity_state(GRPC_CHANNEL_TRANSIENT_FAILURE); if (unlikely(!__pyx_t_1)) __PYX_ERR(21, 39, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  if (__Pyx_SetNameInClass(__pyx_t_7, __pyx_n_s_transient_failure, __pyx_t_1) < 0) __PYX_ERR(21, 39, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;

  /* "src/python/grpcio/grpc/_cython/_cygrpc/records.pyx.pxi":40
 *   ready = GRPC_CHANNEL_READY
 *   transient_failure = GRPC_CHANNEL_TRANSIENT_FAILURE
 *   shutdown = GRPC_CHANNEL_SHUTDOWN             # <<<<<<<<<<<<<<
 * 
 * 
 */
  __pyx_t_1 = __Pyx_PyInt_From_grpc_connectivity_state(GRPC_CHANNEL_SHUTDOWN); if (unlikely(!__pyx_t_1)) __PYX_ERR(21, 40, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  if (__Pyx_SetNameInClass(__pyx_t_7, __pyx_n_s_shutdown, __pyx_t_1) < 0) __PYX_ERR(21, 40, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;

  /* "src/python/grpcio/grpc/_cython/_cygrpc/records.pyx.pxi":35
 * 
 * 
 * class ConnectivityState:             # <<<<<<<<<<<<<<
 *   idle = GRPC_CHANNEL_IDLE
 *   connecting = GRPC_CHANNEL_CONNECTING
 */
  __pyx_t_1 = __Pyx_Py3ClassCreate(((PyObject*)&__Pyx_DefaultClassType), __pyx_n_s_ConnectivityState, __pyx_empty_tuple, __pyx_t_7, NULL, 0, 1); if (unlikely(!__pyx_t_1)) __PYX_ERR(21, 35, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  if (PyDict_SetItem(__pyx_d, __pyx_n_s_ConnectivityState, __pyx_t_1) < 0) __PYX_ERR(21, 35, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;

  /* "src/python/grpcio/grpc/_cython/_cygrpc/records.pyx.pxi":43
 * 
 * 
 * class ChannelArgKey:             # <<<<<<<<<<<<<<
 *   enable_census = GRPC_ARG_ENABLE_CENSUS
 *   max_concurrent_streams = GRPC_ARG_MAX_CONCURRENT_STREAMS
 */
  __pyx_t_7 = __Pyx_Py3MetaclassPrepare((PyObject *) NULL, __pyx_empty_tuple, __pyx_n_s_ChannelArgKey, __pyx_n_s_ChannelArgKey, (PyObject *) NULL, __pyx_n_s_grpc__cython_cygrpc, (PyObject *) NULL); if (unlikely(!__pyx_t_7)) __PYX_ERR(21, 43, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_7);

  /* "src/python/grpcio/grpc/_cython/_cygrpc/records.pyx.pxi":44
 * 
 * class ChannelArgKey:
 *   enable_census = GRPC_ARG_ENABLE_CENSUS             # <<<<<<<<<<<<<<
 *   max_concurrent_streams = GRPC_ARG_MAX_CONCURRENT_STREAMS
 *   max_receive_message_length = GRPC_ARG_MAX_RECEIVE_MESSAGE_LENGTH
 */
  __pyx_t_1 = __Pyx_PyBytes_FromString(GRPC_ARG_ENABLE_CENSUS); if (unlikely(!__pyx_t_1)) __PYX_ERR(21, 44, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  if (__Pyx_SetNameInClass(__pyx_t_7, __pyx_n_s_enable_census, __pyx_t_1) < 0) __PYX_ERR(21, 44, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;

  /* "src/python/grpcio/grpc/_cython/_cygrpc/records.pyx.pxi":45
 * class ChannelArgKey:
 *   enable_census = GRPC_ARG_ENABLE_CENSUS
 *   max_concurrent_streams = GRPC_ARG_MAX_CONCURRENT_STREAMS             # <<<<<<<<<<<<<<
 *   max_receive_message_length = GRPC_ARG_MAX_RECEIVE_MESSAGE_LENGTH
 *   max_send_message_length = GRPC_ARG_MAX_SEND_MESSAGE_LENGTH
 */
  __pyx_t_1 = __Pyx_PyBytes_FromString(GRPC_ARG_MAX_CONCURRENT_STREAMS); if (unlikely(!__pyx_t_1)) __PYX_ERR(21, 45, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  if (__Pyx_SetNameInClass(__pyx_t_7, __pyx_n_s_max_concurrent_streams, __pyx_t_1) < 0) __PYX_ERR(21, 45, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;

  /* "src/python/grpcio/grpc/_cython/_cygrpc/records.pyx.pxi":46
 *   enable_census = GRPC_ARG_ENABLE_CENSUS
 *   max_concurrent_streams = GRPC_ARG_MAX_CONCURRENT_STREAMS
 *   max_receive_message_length = GRPC_ARG_MAX_RECEIVE_MESSAGE_LENGTH             # <<<<<<<<<<<<<<
 *   max_send_message_length = GRPC_ARG_MAX_SEND_MESSAGE_LENGTH
 *   http2_initial_sequence_number = GRPC_ARG_HTTP2_INITIAL_SEQUENCE_NUMBER
 */
  __pyx_t_1 = __Pyx_PyBytes_FromString(GRPC_ARG_MAX_RECEIVE_MESSAGE_LENGTH); if (unlikely(!__pyx_t_1)) __PYX_ERR(21, 46, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  if (__Pyx_SetNameInClass(__pyx_t_7, __pyx_n_s_max_receive_message_length, __pyx_t_1) < 0) __PYX_ERR(21, 46, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;

  /* "src/python/grpcio/grpc/_cython/_cygrpc/records.pyx.pxi":47
 *   max_concurrent_streams = GRPC_ARG_MAX_CONCURRENT_STREAMS
 *   max_receive_message_length = GRPC_ARG_MAX_RECEIVE_MESSAGE_LENGTH
 *   max_send_message_length = GRPC_ARG_MAX_SEND_MESSAGE_LENGTH             # <<<<<<<<<<<<<<
 *   http2_initial_sequence_number = GRPC_ARG_HTTP2_INITIAL_SEQUENCE_NUMBER
 *   default_authority = GRPC_ARG_DEFAULT_AUTHORITY
 */
  __pyx_t_1 = __Pyx_PyBytes_FromString(GRPC_ARG_MAX_SEND_MESSAGE_LENGTH); if (unlikely(!__pyx_t_1)) __PYX_ERR(21, 47, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  if (__Pyx_SetNameInClass(__pyx_t_7, __pyx_n_s_max_send_message_length, __pyx_t_1) < 0) __PYX_ERR(21, 47, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;

  /* "src/python/grpcio/grpc/_cython/_cygrpc/records.pyx.pxi":48
 *   max_receive_message_length = GRPC_ARG_MAX_RECEIVE_MESSAGE_LENGTH
 *   max_send_message_length = GRPC_ARG_MAX_SEND_MESSAGE_LENGTH
 *   http2_initial_sequence_number = GRPC_ARG_HTTP2_INITIAL_SEQUENCE_NUMBER             # <<<<<<<<<<<<<<
 *   default_authority = GRPC_ARG_DEFAULT_AUTHORITY
 *   primary_user_agent_string = GRPC_ARG_PRIMARY_USER_AGENT_STRING
 */
  __pyx_t_1 = __Pyx_PyBytes_FromString(GRPC_ARG_HTTP2_INITIAL_SEQUENCE_NUMBER); if (unlikely(!__pyx_t_1)) __PYX_ERR(21, 48, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  if (__Pyx_SetNameInClass(__pyx_t_7, __pyx_n_s_http2_initial_sequence_number, __pyx_t_1) < 0) __PYX_ERR(21, 48, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;

  /* "src/python/grpcio/grpc/_cython/_cygrpc/records.pyx.pxi":49
 *   max_send_message_length = GRPC_ARG_MAX_SEND_MESSAGE_LENGTH
 *   http2_initial_sequence_number = GRPC_ARG_HTTP2_INITIAL_SEQUENCE_NUMBER
 *   default_authority = GRPC_ARG_DEFAULT_AUTHORITY             # <<<<<<<<<<<<<<
 *   primary_user_agent_string = GRPC_ARG_PRIMARY_USER_AGENT_STRING
 *   secondary_user_agent_string = GRPC_ARG_SECONDARY_USER_AGENT_STRING
 */
  __pyx_t_1 = __Pyx_PyBytes_FromString(GRPC_ARG_DEFAULT_AUTHORITY); if (unlikely(!__pyx_t_1)) __PYX_ERR(21, 49, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  if (__Pyx_SetNameInClass(__pyx_t_7, __pyx_n_s_default_authority, __pyx_t_1) < 0) __PYX_ERR(21, 49, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;

  /* "src/python/grpcio/grpc/_cython/_cygrpc/records.pyx.pxi":50
 *   http2_initial_sequence_number = GRPC_ARG_HTTP2_INITIAL_SEQUENCE_NUMBER
 *   default_authority = GRPC_ARG_DEFAULT_AUTHORITY
 *   primary_user_agent_string = GRPC_ARG_PRIMARY_USER_AGENT_STRING             # <<<<<<<<<<<<<<
 *   secondary_user_agent_string = GRPC_ARG_SECONDARY_USER_AGENT_STRING
 *   ssl_session_cache = GRPC_SSL_SESSION_CACHE_ARG
 */
  __pyx_t_1 = __Pyx_PyBytes_FromString(GRPC_ARG_PRIMARY_USER_AGENT_STRING); if (unlikely(!__pyx_t_1)) __PYX_ERR(21, 50, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  if (__Pyx_SetNameInClass(__pyx_t_7, __pyx_n_s_primary_user_agent_string, __pyx_t_1) < 0) __PYX_ERR(21, 50, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;

  /* "src/python/grpcio/grpc/_cython/_cygrpc/records.pyx.pxi":51
 *   default_authority = GRPC_ARG_DEFAULT_AUTHORITY
 *   primary_user_agent_string = GRPC_ARG_PRIMARY_USER_AGENT_STRING
 *   secondary_user_agent_string = GRPC_ARG_SECONDARY_USER_AGENT_STRING             # <<<<<<<<<<<<<<
 *   ssl_session_cache = GRPC_SSL_SESSION_CACHE_ARG
 *   ssl_target_name_override = GRPC_SSL_TARGET_NAME_OVERRIDE_ARG
 */
  __pyx_t_1 = __Pyx_PyBytes_FromString(GRPC_ARG_SECONDARY_USER_AGENT_STRING); if (unlikely(!__pyx_t_1)) __PYX_ERR(21, 51, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  if (__Pyx_SetNameInClass(__pyx_t_7, __pyx_n_s_secondary_user_agent_string, __pyx_t_1) < 0) __PYX_ERR(21, 51, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;

  /* "src/python/grpcio/grpc/_cython/_cygrpc/records.pyx.pxi":52
 *   primary_user_agent_string = GRPC_ARG_PRIMARY_USER_AGENT_STRING
 *   secondary_user_agent_string = GRPC_ARG_SECONDARY_USER_AGENT_STRING
 *   ssl_session_cache = GRPC_SSL_SESSION_CACHE_ARG             # <<<<<<<<<<<<<<
 *   ssl_target_name_override = GRPC_SSL_TARGET_NAME_OVERRIDE_ARG
 * 
 */
  __pyx_t_1 = __Pyx_PyBytes_FromString(GRPC_SSL_SESSION_CACHE_ARG); if (unlikely(!__pyx_t_1)) __PYX_ERR(21, 52, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  if (__Pyx_SetNameInClass(__pyx_t_7, __pyx_n_s_ssl_session_cache, __pyx_t_1) < 0) __PYX_ERR(21, 52, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;

  /* "src/python/grpcio/grpc/_cython/_cygrpc/records.pyx.pxi":53
 *   secondary_user_agent_string = GRPC_ARG_SECONDARY_USER_AGENT_STRING
 *   ssl_session_cache = GRPC_SSL_SESSION_CACHE_ARG
 *   ssl_target_name_override = GRPC_SSL_TARGET_NAME_OVERRIDE_ARG             # <<<<<<<<<<<<<<
 * 
 * 
 */
  __pyx_t_1 = __Pyx_PyBytes_FromString(GRPC_SSL_TARGET_NAME_OVERRIDE_ARG); if (unlikely(!__pyx_t_1)) __PYX_ERR(21, 53, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  if (__Pyx_SetNameInClass(__pyx_t_7, __pyx_n_s_ssl_target_name_override, __pyx_t_1) < 0) __PYX_ERR(21, 53, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;

  /* "src/python/grpcio/grpc/_cython/_cygrpc/records.pyx.pxi":43
 * 
 * 
 * class ChannelArgKey:             # <<<<<<<<<<<<<<
 *   enable_census = GRPC_ARG_ENABLE_CENSUS
 *   max_concurrent_streams = GRPC_ARG_MAX_CONCURRENT_STREAMS
 */
  __pyx_t_1 = __Pyx_Py3ClassCreate(((PyObject*)&__Pyx_DefaultClassType), __pyx_n_s_ChannelArgKey, __pyx_empty_tuple, __pyx_t_7, NULL, 0, 1); if (unlikely(!__pyx_t_1)) __PYX_ERR(21, 43, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  if (PyDict_SetItem(__pyx_d, __pyx_n_s_ChannelArgKey, __pyx_t_1) < 0) __PYX_ERR(21, 43, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;

  /* "src/python/grpcio/grpc/_cython/_cygrpc/records.pyx.pxi":56
 * 
 * 
 * class WriteFlag:             # <<<<<<<<<<<<<<
 *   buffer_hint = GRPC_WRITE_BUFFER_HINT
 *   no_compress = GRPC_WRITE_NO_COMPRESS
 */
  __pyx_t_7 = __Pyx_Py3MetaclassPrepare((PyObject *) NULL, __pyx_empty_tuple, __pyx_n_s_WriteFlag, __pyx_n_s_WriteFlag, (PyObject *) NULL, __pyx_n_s_grpc__cython_cygrpc, (PyObject *) NULL); if (unlikely(!__pyx_t_7)) __PYX_ERR(21, 56, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_7);

  /* "src/python/grpcio/grpc/_cython/_cygrpc/records.pyx.pxi":57
 * 
 * class WriteFlag:
 *   buffer_hint = GRPC_WRITE_BUFFER_HINT             # <<<<<<<<<<<<<<
 *   no_compress = GRPC_WRITE_NO_COMPRESS
 * 
 */
  __pyx_t_1 = __Pyx_PyInt_From_int(GRPC_WRITE_BUFFER_HINT); if (unlikely(!__pyx_t_1)) __PYX_ERR(21, 57, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  if (__Pyx_SetNameInClass(__pyx_t_7, __pyx_n_s_buffer_hint, __pyx_t_1) < 0) __PYX_ERR(21, 57, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;

  /* "src/python/grpcio/grpc/_cython/_cygrpc/records.pyx.pxi":58
 * class WriteFlag:
 *   buffer_hint = GRPC_WRITE_BUFFER_HINT
 *   no_compress = GRPC_WRITE_NO_COMPRESS             # <<<<<<<<<<<<<<
 * 
 * 
 */
  __pyx_t_1 = __Pyx_PyInt_From_int(GRPC_WRITE_NO_COMPRESS); if (unlikely(!__pyx_t_1)) __PYX_ERR(21, 58, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  if (__Pyx_SetNameInClass(__pyx_t_7, __pyx_n_s_no_compress, __pyx_t_1) < 0) __PYX_ERR(21, 58, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;

  /* "src/python/grpcio/grpc/_cython/_cygrpc/records.pyx.pxi":56
 * 
 * 
 * class WriteFlag:             # <<<<<<<<<<<<<<
 *   buffer_hint = GRPC_WRITE_BUFFER_HINT
 *   no_compress = GRPC_WRITE_NO_COMPRESS
 */
  __pyx_t_1 = __Pyx_Py3ClassCreate(((PyObject*)&__Pyx_DefaultClassType), __pyx_n_s_WriteFlag, __pyx_empty_tuple, __pyx_t_7, NULL, 0, 1); if (unlikely(!__pyx_t_1)) __PYX_ERR(21, 56, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  if (PyDict_SetItem(__pyx_d, __pyx_n_s_WriteFlag, __pyx_t_1) < 0) __PYX_ERR(21, 56, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;

  /* "src/python/grpcio/grpc/_cython/_cygrpc/records.pyx.pxi":61
 * 
 * 
 * class StatusCode:             # <<<<<<<<<<<<<<
 *   ok = GRPC_STATUS_OK
 *   cancelled = GRPC_STATUS_CANCELLED
 */
  __pyx_t_7 = __Pyx_Py3MetaclassPrepare((PyObject *) NULL, __pyx_empty_tuple, __pyx_n_s_StatusCode, __pyx_n_s_StatusCode, (PyObject *) NULL, __pyx_n_s_grpc__cython_cygrpc, (PyObject *) NULL); if (unlikely(!__pyx_t_7)) __PYX_ERR(21, 61, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_7);

  /* "src/python/grpcio/grpc/_cython/_cygrpc/records.pyx.pxi":62
 * 
 * class StatusCode:
 *   ok = GRPC_STATUS_OK             # <<<<<<<<<<<<<<
 *   cancelled = GRPC_STATUS_CANCELLED
 *   unknown = GRPC_STATUS_UNKNOWN
 */
  __pyx_t_1 = __Pyx_PyInt_From_grpc_status_code(GRPC_STATUS_OK); if (unlikely(!__pyx_t_1)) __PYX_ERR(21, 62, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  if (__Pyx_SetNameInClass(__pyx_t_7, __pyx_n_s_ok, __pyx_t_1) < 0) __PYX_ERR(21, 62, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;

  /* "src/python/grpcio/grpc/_cython/_cygrpc/records.pyx.pxi":63
 * class StatusCode:
 *   ok = GRPC_STATUS_OK
 *   cancelled = GRPC_STATUS_CANCELLED             # <<<<<<<<<<<<<<
 *   unknown = GRPC_STATUS_UNKNOWN
 *   invalid_argument = GRPC_STATUS_INVALID_ARGUMENT
 */
  __pyx_t_1 = __Pyx_PyInt_From_grpc_status_code(GRPC_STATUS_CANCELLED); if (unlikely(!__pyx_t_1)) __PYX_ERR(21, 63, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  if (__Pyx_SetNameInClass(__pyx_t_7, __pyx_n_s_cancelled, __pyx_t_1) < 0) __PYX_ERR(21, 63, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;

  /* "src/python/grpcio/grpc/_cython/_cygrpc/records.pyx.pxi":64
 *   ok = GRPC_STATUS_OK
 *   cancelled = GRPC_STATUS_CANCELLED
 *   unknown = GRPC_STATUS_UNKNOWN             # <<<<<<<<<<<<<<
 *   invalid_argument = GRPC_STATUS_INVALID_ARGUMENT
 *   deadline_exceeded = GRPC_STATUS_DEADLINE_EXCEEDED
 */
  __pyx_t_1 = __Pyx_PyInt_From_grpc_status_code(GRPC_STATUS_UNKNOWN); if (unlikely(!__pyx_t_1)) __PYX_ERR(21, 64, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  if (__Pyx_SetNameInClass(__pyx_t_7, __pyx_n_s_unknown, __pyx_t_1) < 0) __PYX_ERR(21, 64, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;

  /* "src/python/grpcio/grpc/_cython/_cygrpc/records.pyx.pxi":65
 *   cancelled = GRPC_STATUS_CANCELLED
 *   unknown = GRPC_STATUS_UNKNOWN
 *   invalid_argument = GRPC_STATUS_INVALID_ARGUMENT             # <<<<<<<<<<<<<<
 *   deadline_exceeded = GRPC_STATUS_DEADLINE_EXCEEDED
 *   not_found = GRPC_STATUS_NOT_FOUND
 */
  __pyx_t_1 = __Pyx_PyInt_From_grpc_status_code(GRPC_STATUS_INVALID_ARGUMENT); if (unlikely(!__pyx_t_1)) __PYX_ERR(21, 65, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  if (__Pyx_SetNameInClass(__pyx_t_7, __pyx_n_s_invalid_argument, __pyx_t_1) < 0) __PYX_ERR(21, 65, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;

  /* "src/python/grpcio/grpc/_cython/_cygrpc/records.pyx.pxi":66
 *   unknown = GRPC_STATUS_UNKNOWN
 *   invalid_argument = GRPC_STATUS_INVALID_ARGUMENT
 *   deadline_exceeded = GRPC_STATUS_DEADLINE_EXCEEDED             # <<<<<<<<<<<<<<
 *   not_found = GRPC_STATUS_NOT_FOUND
 *   already_exists = GRPC_STATUS_ALREADY_EXISTS
 */
  __pyx_t_1 = __Pyx_PyInt_From_grpc_status_code(GRPC_STATUS_DEADLINE_EXCEEDED); if (unlikely(!__pyx_t_1)) __PYX_ERR(21, 66, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  if (__Pyx_SetNameInClass(__pyx_t_7, __pyx_n_s_deadline_exceeded, __pyx_t_1) < 0) __PYX_ERR(21, 66, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;

  /* "src/python/grpcio/grpc/_cython/_cygrpc/records.pyx.pxi":67
 *   invalid_argument = GRPC_STATUS_INVALID_ARGUMENT
 *   deadline_exceeded = GRPC_STATUS_DEADLINE_EXCEEDED
 *   not_found = GRPC_STATUS_NOT_FOUND             # <<<<<<<<<<<<<<
 *   already_exists = GRPC_STATUS_ALREADY_EXISTS
 *   permission_denied = GRPC_STATUS_PERMISSION_DENIED
 */
  __pyx_t_1 = __Pyx_PyInt_From_grpc_status_code(GRPC_STATUS_NOT_FOUND); if (unlikely(!__pyx_t_1)) __PYX_ERR(21, 67, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  if (__Pyx_SetNameInClass(__pyx_t_7, __pyx_n_s_not_found, __pyx_t_1) < 0) __PYX_ERR(21, 67, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;

  /* "src/python/grpcio/grpc/_cython/_cygrpc/records.pyx.pxi":68
 *   deadline_exceeded = GRPC_STATUS_DEADLINE_EXCEEDED
 *   not_found = GRPC_STATUS_NOT_FOUND
 *   already_exists = GRPC_STATUS_ALREADY_EXISTS             # <<<<<<<<<<<<<<
 *   permission_denied = GRPC_STATUS_PERMISSION_DENIED
 *   unauthenticated = GRPC_STATUS_UNAUTHENTICATED
 */
  __pyx_t_1 = __Pyx_PyInt_From_grpc_status_code(GRPC_STATUS_ALREADY_EXISTS); if (unlikely(!__pyx_t_1)) __PYX_ERR(21, 68, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  if (__Pyx_SetNameInClass(__pyx_t_7, __pyx_n_s_already_exists, __pyx_t_1) < 0) __PYX_ERR(21, 68, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;

  /* "src/python/grpcio/grpc/_cython/_cygrpc/records.pyx.pxi":69
 *   not_found = GRPC_STATUS_NOT_FOUND
 *   already_exists = GRPC_STATUS_ALREADY_EXISTS
 *   permission_denied = GRPC_STATUS_PERMISSION_DENIED             # <<<<<<<<<<<<<<
 *   unauthenticated = GRPC_STATUS_UNAUTHENTICATED
 *   resource_exhausted = GRPC_STATUS_RESOURCE_EXHAUSTED
 */
  __pyx_t_1 = __Pyx_PyInt_From_grpc_status_code(GRPC_STATUS_PERMISSION_DENIED); if (unlikely(!__pyx_t_1)) __PYX_ERR(21, 69, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  if (__Pyx_SetNameInClass(__pyx_t_7, __pyx_n_s_permission_denied, __pyx_t_1) < 0) __PYX_ERR(21, 69, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;

  /* "src/python/grpcio/grpc/_cython/_cygrpc/records.pyx.pxi":70
 *   already_exists = GRPC_STATUS_ALREADY_EXISTS
 *   permission_denied = GRPC_STATUS_PERMISSION_DENIED
 *   unauthenticated = GRPC_STATUS_UNAUTHENTICATED             # <<<<<<<<<<<<<<
 *   resource_exhausted = GRPC_STATUS_RESOURCE_EXHAUSTED
 *   failed_precondition = GRPC_STATUS_FAILED_PRECONDITION
 */
  __pyx_t_1 = __Pyx_PyInt_From_grpc_status_code(GRPC_STATUS_UNAUTHENTICATED); if (unlikely(!__pyx_t_1)) __PYX_ERR(21, 70, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  if (__Pyx_SetNameInClass(__pyx_t_7, __pyx_n_s_unauthenticated, __pyx_t_1) < 0) __PYX_ERR(21, 70, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;

  /* "src/python/grpcio/grpc/_cython/_cygrpc/records.pyx.pxi":71
 *   permission_denied = GRPC_STATUS_PERMISSION_DENIED
 *   unauthenticated = GRPC_STATUS_UNAUTHENTICATED
 *   resource_exhausted = GRPC_STATUS_RESOURCE_EXHAUSTED             # <<<<<<<<<<<<<<
 *   failed_precondition = GRPC_STATUS_FAILED_PRECONDITION
 *   aborted = GRPC_STATUS_ABORTED
 */
  __pyx_t_1 = __Pyx_PyInt_From_grpc_status_code(GRPC_STATUS_RESOURCE_EXHAUSTED); if (unlikely(!__pyx_t_1)) __PYX_ERR(21, 71, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  if (__Pyx_SetNameInClass(__pyx_t_7, __pyx_n_s_resource_exhausted, __pyx_t_1) < 0) __PYX_ERR(21, 71, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;

  /* "src/python/grpcio/grpc/_cython/_cygrpc/records.pyx.pxi":72
 *   unauthenticated = GRPC_STATUS_UNAUTHENTICATED
 *   resource_exhausted = GRPC_STATUS_RESOURCE_EXHAUSTED
 *   failed_precondition = GRPC_STATUS_FAILED_PRECONDITION             # <<<<<<<<<<<<<<
 *   aborted = GRPC_STATUS_ABORTED
 *   out_of_range = GRPC_STATUS_OUT_OF_RANGE
 */
  __pyx_t_1 = __Pyx_PyInt_From_grpc_status_code(GRPC_STATUS_FAILED_PRECONDITION); if (unlikely(!__pyx_t_1)) __PYX_ERR(21, 72, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  if (__Pyx_SetNameInClass(__pyx_t_7, __pyx_n_s_failed_precondition, __pyx_t_1) < 0) __PYX_ERR(21, 72, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;

  /* "src/python/grpcio/grpc/_cython/_cygrpc/records.pyx.pxi":73
 *   resource_exhausted = GRPC_STATUS_RESOURCE_EXHAUSTED
 *   failed_precondition = GRPC_STATUS_FAILED_PRECONDITION
 *   aborted = GRPC_STATUS_ABORTED             # <<<<<<<<<<<<<<
 *   out_of_range = GRPC_STATUS_OUT_OF_RANGE
 *   unimplemented = GRPC_STATUS_UNIMPLEMENTED
 */
  __pyx_t_1 = __Pyx_PyInt_From_grpc_status_code(GRPC_STATUS_ABORTED); if (unlikely(!__pyx_t_1)) __PYX_ERR(21, 73, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  if (__Pyx_SetNameInClass(__pyx_t_7, __pyx_n_s_aborted, __pyx_t_1) < 0) __PYX_ERR(21, 73, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;

  /* "src/python/grpcio/grpc/_cython/_cygrpc/records.pyx.pxi":74
 *   failed_precondition = GRPC_STATUS_FAILED_PRECONDITION
 *   aborted = GRPC_STATUS_ABORTED
 *   out_of_range = GRPC_STATUS_OUT_OF_RANGE             # <<<<<<<<<<<<<<
 *   unimplemented = GRPC_STATUS_UNIMPLEMENTED
 *   internal = GRPC_STATUS_INTERNAL
 */
  __pyx_t_1 = __Pyx_PyInt_From_grpc_status_code(GRPC_STATUS_OUT_OF_RANGE); if (unlikely(!__pyx_t_1)) __PYX_ERR(21, 74, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  if (__Pyx_SetNameInClass(__pyx_t_7, __pyx_n_s_out_of_range, __pyx_t_1) < 0) __PYX_ERR(21, 74, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;

  /* "src/python/grpcio/grpc/_cython/_cygrpc/records.pyx.pxi":75
 *   aborted = GRPC_STATUS_ABORTED
 *   out_of_range = GRPC_STATUS_OUT_OF_RANGE
 *   unimplemented = GRPC_STATUS_UNIMPLEMENTED             # <<<<<<<<<<<<<<
 *   internal = GRPC_STATUS_INTERNAL
 *   unavailable = GRPC_STATUS_UNAVAILABLE
 */
  __pyx_t_1 = __Pyx_PyInt_From_grpc_status_code(GRPC_STATUS_UNIMPLEMENTED); if (unlikely(!__pyx_t_1)) __PYX_ERR(21, 75, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  if (__Pyx_SetNameInClass(__pyx_t_7, __pyx_n_s_unimplemented, __pyx_t_1) < 0) __PYX_ERR(21, 75, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;

  /* "src/python/grpcio/grpc/_cython/_cygrpc/records.pyx.pxi":76
 *   out_of_range = GRPC_STATUS_OUT_OF_RANGE
 *   unimplemented = GRPC_STATUS_UNIMPLEMENTED
 *   internal = GRPC_STATUS_INTERNAL             # <<<<<<<<<<<<<<
 *   unavailable = GRPC_STATUS_UNAVAILABLE
 *   data_loss = GRPC_STATUS_DATA_LOSS
 */
  __pyx_t_1 = __Pyx_PyInt_From_grpc_status_code(GRPC_STATUS_INTERNAL); if (unlikely(!__pyx_t_1)) __PYX_ERR(21, 76, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  if (__Pyx_SetNameInClass(__pyx_t_7, __pyx_n_s_internal, __pyx_t_1) < 0) __PYX_ERR(21, 76, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;

  /* "src/python/grpcio/grpc/_cython/_cygrpc/records.pyx.pxi":77
 *   unimplemented = GRPC_STATUS_UNIMPLEMENTED
 *   internal = GRPC_STATUS_INTERNAL
 *   unavailable = GRPC_STATUS_UNAVAILABLE             # <<<<<<<<<<<<<<
 *   data_loss = GRPC_STATUS_DATA_LOSS
 * 
 */
  __pyx_t_1 = __Pyx_PyInt_From_grpc_status_code(GRPC_STATUS_UNAVAILABLE); if (unlikely(!__pyx_t_1)) __PYX_ERR(21, 77, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  if (__Pyx_SetNameInClass(__pyx_t_7, __pyx_n_s_unavailable, __pyx_t_1) < 0) __PYX_ERR(21, 77, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;

  /* "src/python/grpcio/grpc/_cython/_cygrpc/records.pyx.pxi":78
 *   internal = GRPC_STATUS_INTERNAL
 *   unavailable = GRPC_STATUS_UNAVAILABLE
 *   data_loss = GRPC_STATUS_DATA_LOSS             # <<<<<<<<<<<<<<
 * 
 * 
 */
  __pyx_t_1 = __Pyx_PyInt_From_grpc_status_code(GRPC_STATUS_DATA_LOSS); if (unlikely(!__pyx_t_1)) __PYX_ERR(21, 78, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  if (__Pyx_SetNameInClass(__pyx_t_7, __pyx_n_s_data_loss, __pyx_t_1) < 0) __PYX_ERR(21, 78, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;

  /* "src/python/grpcio/grpc/_cython/_cygrpc/records.pyx.pxi":61
 * 
 * 
 * class StatusCode:             # <<<<<<<<<<<<<<
 *   ok = GRPC_STATUS_OK
 *   cancelled = GRPC_STATUS_CANCELLED
 */
  __pyx_t_1 = __Pyx_Py3ClassCreate(((PyObject*)&__Pyx_DefaultClassType), __pyx_n_s_StatusCode, __pyx_empty_tuple, __pyx_t_7, NULL, 0, 1); if (unlikely(!__pyx_t_1)) __PYX_ERR(21, 61, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  if (PyDict_SetItem(__pyx_d, __pyx_n_s_StatusCode, __pyx_t_1) < 0) __PYX_ERR(21, 61, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;

  /* "src/python/grpcio/grpc/_cython/_cygrpc/records.pyx.pxi":81
 * 
 * 
 * class CallError:             # <<<<<<<<<<<<<<
 *   ok = GRPC_CALL_OK
 *   error = GRPC_CALL_ERROR
 */
  __pyx_t_7 = __Pyx_Py3MetaclassPrepare((PyObject *) NULL, __pyx_empty_tuple, __pyx_n_s_CallError, __pyx_n_s_CallError, (PyObject *) NULL, __pyx_n_s_grpc__cython_cygrpc, (PyObject *) NULL); if (unlikely(!__pyx_t_7)) __PYX_ERR(21, 81, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_7);

  /* "src/python/grpcio/grpc/_cython/_cygrpc/records.pyx.pxi":82
 * 
 * class CallError:
 *   ok = GRPC_CALL_OK             # <<<<<<<<<<<<<<
 *   error = GRPC_CALL_ERROR
 *   not_on_server = GRPC_CALL_ERROR_NOT_ON_SERVER
 */
  __pyx_t_1 = __Pyx_PyInt_From_grpc_call_error(GRPC_CALL_OK); if (unlikely(!__pyx_t_1)) __PYX_ERR(21, 82, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  if (__Pyx_SetNameInClass(__pyx_t_7, __pyx_n_s_ok, __pyx_t_1) < 0) __PYX_ERR(21, 82, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;

  /* "src/python/grpcio/grpc/_cython/_cygrpc/records.pyx.pxi":83
 * class CallError:
 *   ok = GRPC_CALL_OK
 *   error = GRPC_CALL_ERROR             # <<<<<<<<<<<<<<
 *   not_on_server = GRPC_CALL_ERROR_NOT_ON_SERVER
 *   not_on_client = GRPC_CALL_ERROR_NOT_ON_CLIENT
 */
  __pyx_t_1 = __Pyx_PyInt_From_grpc_call_error(GRPC_CALL_ERROR); if (unlikely(!__pyx_t_1)) __PYX_ERR(21, 83, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  if (__Pyx_SetNameInClass(__pyx_t_7, __pyx_n_s_error, __pyx_t_1) < 0) __PYX_ERR(21, 83, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;

  /* "src/python/grpcio/grpc/_cython/_cygrpc/records.pyx.pxi":84
 *   ok = GRPC_CALL_OK
 *   error = GRPC_CALL_ERROR
 *   not_on_server = GRPC_CALL_ERROR_NOT_ON_SERVER             # <<<<<<<<<<<<<<
 *   not_on_client = GRPC_CALL_ERROR_NOT_ON_CLIENT
 *   already_accepted = GRPC_CALL_ERROR_ALREADY_ACCEPTED
 */
  __pyx_t_1 = __Pyx_PyInt_From_grpc_call_error(GRPC_CALL_ERROR_NOT_ON_SERVER); if (unlikely(!__pyx_t_1)) __PYX_ERR(21, 84, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  if (__Pyx_SetNameInClass(__pyx_t_7, __pyx_n_s_not_on_server, __pyx_t_1) < 0) __PYX_ERR(21, 84, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;

  /* "src/python/grpcio/grpc/_cython/_cygrpc/records.pyx.pxi":85
 *   error = GRPC_CALL_ERROR
 *   not_on_server = GRPC_CALL_ERROR_NOT_ON_SERVER
 *   not_on_client = GRPC_CALL_ERROR_NOT_ON_CLIENT             # <<<<<<<<<<<<<<
 *   already_accepted = GRPC_CALL_ERROR_ALREADY_ACCEPTED
 *   already_invoked = GRPC_CALL_ERROR_ALREADY_INVOKED
 */
  __pyx_t_1 = __Pyx_PyInt_From_grpc_call_error(GRPC_CALL_ERROR_NOT_ON_CLIENT); if (unlikely(!__pyx_t_1)) __PYX_ERR(21, 85, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  if (__Pyx_SetNameInClass(__pyx_t_7, __pyx_n_s_not_on_client, __pyx_t_1) < 0) __PYX_ERR(21, 85, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;

  /* "src/python/grpcio/grpc/_cython/_cygrpc/records.pyx.pxi":86
 *   not_on_server = GRPC_CALL_ERROR_NOT_ON_SERVER
 *   not_on_client = GRPC_CALL_ERROR_NOT_ON_CLIENT
 *   already_accepted = GRPC_CALL_ERROR_ALREADY_ACCEPTED             # <<<<<<<<<<<<<<
 *   already_invoked = GRPC_CALL_ERROR_ALREADY_INVOKED
 *   not_invoked = GRPC_CALL_ERROR_NOT_INVOKED
 */
  __pyx_t_1 = __Pyx_PyInt_From_grpc_call_error(GRPC_CALL_ERROR_ALREADY_ACCEPTED); if (unlikely(!__pyx_t_1)) __PYX_ERR(21, 86, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  if (__Pyx_SetNameInClass(__pyx_t_7, __pyx_n_s_already_accepted, __pyx_t_1) < 0) __PYX_ERR(21, 86, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;

  /* "src/python/grpcio/grpc/_cython/_cygrpc/records.pyx.pxi":87
 *   not_on_client = GRPC_CALL_ERROR_NOT_ON_CLIENT
 *   already_accepted = GRPC_CALL_ERROR_ALREADY_ACCEPTED
 *   already_invoked = GRPC_CALL_ERROR_ALREADY_INVOKED             # <<<<<<<<<<<<<<
 *   not_invoked = GRPC_CALL_ERROR_NOT_INVOKED
 *   already_finished = GRPC_CALL_ERROR_ALREADY_FINISHED
 */
  __pyx_t_1 = __Pyx_PyInt_From_grpc_call_error(GRPC_CALL_ERROR_ALREADY_INVOKED); if (unlikely(!__pyx_t_1)) __PYX_ERR(21, 87, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  if (__Pyx_SetNameInClass(__pyx_t_7, __pyx_n_s_already_invoked, __pyx_t_1) < 0) __PYX_ERR(21, 87, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;

  /* "src/python/grpcio/grpc/_cython/_cygrpc/records.pyx.pxi":88
 *   already_accepted = GRPC_CALL_ERROR_ALREADY_ACCEPTED
 *   already_invoked = GRPC_CALL_ERROR_ALREADY_INVOKED
 *   not_invoked = GRPC_CALL_ERROR_NOT_INVOKED             # <<<<<<<<<<<<<<
 *   already_finished = GRPC_CALL_ERROR_ALREADY_FINISHED
 *   too_many_operations = GRPC_CALL_ERROR_TOO_MANY_OPERATIONS
 */
  __pyx_t_1 = __Pyx_PyInt_From_grpc_call_error(GRPC_CALL_ERROR_NOT_INVOKED); if (unlikely(!__pyx_t_1)) __PYX_ERR(21, 88, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  if (__Pyx_SetNameInClass(__pyx_t_7, __pyx_n_s_not_invoked, __pyx_t_1) < 0) __PYX_ERR(21, 88, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;

  /* "src/python/grpcio/grpc/_cython/_cygrpc/records.pyx.pxi":89
 *   already_invoked = GRPC_CALL_ERROR_ALREADY_INVOKED
 *   not_invoked = GRPC_CALL_ERROR_NOT_INVOKED
 *   already_finished = GRPC_CALL_ERROR_ALREADY_FINISHED             # <<<<<<<<<<<<<<
 *   too_many_operations = GRPC_CALL_ERROR_TOO_MANY_OPERATIONS
 *   invalid_flags = GRPC_CALL_ERROR_INVALID_FLAGS
 */
  __pyx_t_1 = __Pyx_PyInt_From_grpc_call_error(GRPC_CALL_ERROR_ALREADY_FINISHED); if (unlikely(!__pyx_t_1)) __PYX_ERR(21, 89, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  if (__Pyx_SetNameInClass(__pyx_t_7, __pyx_n_s_already_finished, __pyx_t_1) < 0) __PYX_ERR(21, 89, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;

  /* "src/python/grpcio/grpc/_cython/_cygrpc/records.pyx.pxi":90
 *   not_invoked = GRPC_CALL_ERROR_NOT_INVOKED
 *   already_finished = GRPC_CALL_ERROR_ALREADY_FINISHED
 *   too_many_operations = GRPC_CALL_ERROR_TOO_MANY_OPERATIONS             # <<<<<<<<<<<<<<
 *   invalid_flags = GRPC_CALL_ERROR_INVALID_FLAGS
 *   invalid_metadata = GRPC_CALL_ERROR_INVALID_METADATA
 */
  __pyx_t_1 = __Pyx_PyInt_From_grpc_call_error(GRPC_CALL_ERROR_TOO_MANY_OPERATIONS); if (unlikely(!__pyx_t_1)) __PYX_ERR(21, 90, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  if (__Pyx_SetNameInClass(__pyx_t_7, __pyx_n_s_too_many_operations, __pyx_t_1) < 0) __PYX_ERR(21, 90, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;

  /* "src/python/grpcio/grpc/_cython/_cygrpc/records.pyx.pxi":91
 *   already_finished = GRPC_CALL_ERROR_ALREADY_FINISHED
 *   too_many_operations = GRPC_CALL_ERROR_TOO_MANY_OPERATIONS
 *   invalid_flags = GRPC_CALL_ERROR_INVALID_FLAGS             # <<<<<<<<<<<<<<
 *   invalid_metadata = GRPC_CALL_ERROR_INVALID_METADATA
 * 
 */
  __pyx_t_1 = __Pyx_PyInt_From_grpc_call_error(GRPC_CALL_ERROR_INVALID_FLAGS); if (unlikely(!__pyx_t_1)) __PYX_ERR(21, 91, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  if (__Pyx_SetNameInClass(__pyx_t_7, __pyx_n_s_invalid_flags, __pyx_t_1) < 0) __PYX_ERR(21, 91, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;

  /* "src/python/grpcio/grpc/_cython/_cygrpc/records.pyx.pxi":92
 *   too_many_operations = GRPC_CALL_ERROR_TOO_MANY_OPERATIONS
 *   invalid_flags = GRPC_CALL_ERROR_INVALID_FLAGS
 *   invalid_metadata = GRPC_CALL_ERROR_INVALID_METADATA             # <<<<<<<<<<<<<<
 * 
 * 
 */
  __pyx_t_1 = __Pyx_PyInt_From_grpc_call_error(GRPC_CALL_ERROR_INVALID_METADATA); if (unlikely(!__pyx_t_1)) __PYX_ERR(21, 92, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  if (__Pyx_SetNameInClass(__pyx_t_7, __pyx_n_s_invalid_metadata, __pyx_t_1) < 0) __PYX_ERR(21, 92, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;

  /* "src/python/grpcio/grpc/_cython/_cygrpc/records.pyx.pxi":81
 * 
 * 
 * class CallError:             # <<<<<<<<<<<<<<
 *   ok = GRPC_CALL_OK
 *   error = GRPC_CALL_ERROR
 */
  __pyx_t_1 = __Pyx_Py3ClassCreate(((PyObject*)&__Pyx_DefaultClassType), __pyx_n_s_CallError, __pyx_empty_tuple, __pyx_t_7, NULL, 0, 1); if (unlikely(!__pyx_t_1)) __PYX_ERR(21, 81, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  if (PyDict_SetItem(__pyx_d, __pyx_n_s_CallError, __pyx_t_1) < 0) __PYX_ERR(21, 81, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;

  /* "src/python/grpcio/grpc/_cython/_cygrpc/records.pyx.pxi":95
 * 
 * 
 * class CompletionType:             # <<<<<<<<<<<<<<
 *   queue_shutdown = GRPC_QUEUE_SHUTDOWN
 *   queue_timeout = GRPC_QUEUE_TIMEOUT
 */
  __pyx_t_7 = __Pyx_Py3MetaclassPrepare((PyObject *) NULL, __pyx_empty_tuple, __pyx_n_s_CompletionType, __pyx_n_s_CompletionType, (PyObject *) NULL, __pyx_n_s_grpc__cython_cygrpc, (PyObject *) NULL); if (unlikely(!__pyx_t_7)) __PYX_ERR(21, 95, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_7);

  /* "src/python/grpcio/grpc/_cython/_cygrpc/records.pyx.pxi":96
 * 
 * class CompletionType:
 *   queue_shutdown = GRPC_QUEUE_SHUTDOWN             # <<<<<<<<<<<<<<
 *   queue_timeout = GRPC_QUEUE_TIMEOUT
 *   operation_complete = GRPC_OP_COMPLETE
 */
  __pyx_t_1 = __Pyx_PyInt_From_grpc_completion_type(GRPC_QUEUE_SHUTDOWN); if (unlikely(!__pyx_t_1)) __PYX_ERR(21, 96, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  if (__Pyx_SetNameInClass(__pyx_t_7, __pyx_n_s_queue_shutdown, __pyx_t_1) < 0) __PYX_ERR(21, 96, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;

  /* "src/python/grpcio/grpc/_cython/_cygrpc/records.pyx.pxi":97
 * class CompletionType:
 *   queue_shutdown = GRPC_QUEUE_SHUTDOWN
 *   queue_timeout = GRPC_QUEUE_TIMEOUT             # <<<<<<<<<<<<<<
 *   operation_complete = GRPC_OP_COMPLETE
 * 
 */
  __pyx_t_1 = __Pyx_PyInt_From_grpc_completion_type(GRPC_QUEUE_TIMEOUT); if (unlikely(!__pyx_t_1)) __PYX_ERR(21, 97, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  if (__Pyx_SetNameInClass(__pyx_t_7, __pyx_n_s_queue_timeout, __pyx_t_1) < 0) __PYX_ERR(21, 97, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;

  /* "src/python/grpcio/grpc/_cython/_cygrpc/records.pyx.pxi":98
 *   queue_shutdown = GRPC_QUEUE_SHUTDOWN
 *   queue_timeout = GRPC_QUEUE_TIMEOUT
 *   operation_complete = GRPC_OP_COMPLETE             # <<<<<<<<<<<<<<
 * 
 * 
 */
  __pyx_t_1 = __Pyx_PyInt_From_grpc_completion_type(GRPC_OP_COMPLETE); if (unlikely(!__pyx_t_1)) __PYX_ERR(21, 98, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  if (__Pyx_SetNameInClass(__pyx_t_7, __pyx_n_s_operation_complete, __pyx_t_1) < 0) __PYX_ERR(21, 98, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;

  /* "src/python/grpcio/grpc/_cython/_cygrpc/records.pyx.pxi":95
 * 
 * 
 * class CompletionType:             # <<<<<<<<<<<<<<
 *   queue_shutdown = GRPC_QUEUE_SHUTDOWN
 *   queue_timeout = GRPC_QUEUE_TIMEOUT
 */
  __pyx_t_1 = __Pyx_Py3ClassCreate(((PyObject*)&__Pyx_DefaultClassType), __pyx_n_s_CompletionType, __pyx_empty_tuple, __pyx_t_7, NULL, 0, 1); if (unlikely(!__pyx_t_1)) __PYX_ERR(21, 95, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  if (PyDict_SetItem(__pyx_d, __pyx_n_s_CompletionType, __pyx_t_1) < 0) __PYX_ERR(21, 95, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;

  /* "src/python/grpcio/grpc/_cython/_cygrpc/records.pyx.pxi":101
 * 
 * 
 * class OperationType:             # <<<<<<<<<<<<<<
 *   send_initial_metadata = GRPC_OP_SEND_INITIAL_METADATA
 *   send_message = GRPC_OP_SEND_MESSAGE
 */
  __pyx_t_7 = __Pyx_Py3MetaclassPrepare((PyObject *) NULL, __pyx_empty_tuple, __pyx_n_s_OperationType, __pyx_n_s_OperationType, (PyObject *) NULL, __pyx_n_s_grpc__cython_cygrpc, (PyObject *) NULL); if (unlikely(!__pyx_t_7)) __PYX_ERR(21, 101, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_7);

  /* "src/python/grpcio/grpc/_cython/_cygrpc/records.pyx.pxi":102
 * 
 * class OperationType:
 *   send_initial_metadata = GRPC_OP_SEND_INITIAL_METADATA             # <<<<<<<<<<<<<<
 *   send_message = GRPC_OP_SEND_MESSAGE
 *   send_close_from_client = GRPC_OP_SEND_CLOSE_FROM_CLIENT
 */
  __pyx_t_1 = __Pyx_PyInt_From_grpc_op_type(GRPC_OP_SEND_INITIAL_METADATA); if (unlikely(!__pyx_t_1)) __PYX_ERR(21, 102, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  if (__Pyx_SetNameInClass(__pyx_t_7, __pyx_n_s_send_initial_metadata_2, __pyx_t_1) < 0) __PYX_ERR(21, 102, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;

  /* "src/python/grpcio/grpc/_cython/_cygrpc/records.pyx.pxi":103
 * class OperationType:
 *   send_initial_metadata = GRPC_OP_SEND_INITIAL_METADATA
 *   send_message = GRPC_OP_SEND_MESSAGE             # <<<<<<<<<<<<<<
 *   send_close_from_client = GRPC_OP_SEND_CLOSE_FROM_CLIENT
 *   send_status_from_server = GRPC_OP_SEND_STATUS_FROM_SERVER
 */
  __pyx_t_1 = __Pyx_PyInt_From_grpc_op_type(GRPC_OP_SEND_MESSAGE); if (unlikely(!__pyx_t_1)) __PYX_ERR(21, 103, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  if (__Pyx_SetNameInClass(__pyx_t_7, __pyx_n_s_send_message_2, __pyx_t_1) < 0) __PYX_ERR(21, 103, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;

  /* "src/python/grpcio/grpc/_cython/_cygrpc/records.pyx.pxi":104
 *   send_initial_metadata = GRPC_OP_SEND_INITIAL_METADATA
 *   send_message = GRPC_OP_SEND_MESSAGE
 *   send_close_from_client = GRPC_OP_SEND_CLOSE_FROM_CLIENT             # <<<<<<<<<<<<<<
 *   send_status_from_server = GRPC_OP_SEND_STATUS_FROM_SERVER
 *   receive_initial_metadata = GRPC_OP_RECV_INITIAL_METADATA
 */
  __pyx_t_1 = __Pyx_PyInt_From_grpc_op_type(GRPC_OP_SEND_CLOSE_FROM_CLIENT); if (unlikely(!__pyx_t_1)) __PYX_ERR(21, 104, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  if (__Pyx_SetNameInClass(__pyx_t_7, __pyx_n_s_send_close_from_client, __pyx_t_1) < 0) __PYX_ERR(21, 104, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;

  /* "src/python/grpcio/grpc/_cython/_cygrpc/records.pyx.pxi":105
 *   send_message = GRPC_OP_SEND_MESSAGE
 *   send_close_from_client = GRPC_OP_SEND_CLOSE_FROM_CLIENT
 *   send_status_from_server = GRPC_OP_SEND_STATUS_FROM_SERVER             # <<<<<<<<<<<<<<
 *   receive_initial_metadata = GRPC_OP_RECV_INITIAL_METADATA
 *   receive_message = GRPC_OP_RECV_MESSAGE
 */
  __pyx_t_1 = __Pyx_PyInt_From_grpc_op_type(GRPC_OP_SEND_STATUS_FROM_SERVER); if (unlikely(!__pyx_t_1)) __PYX_ERR(21, 105, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  if (__Pyx_SetNameInClass(__pyx_t_7, __pyx_n_s_send_status_from_server, __pyx_t_1) < 0) __PYX_ERR(21, 105, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;

  /* "src/python/grpcio/grpc/_cython/_cygrpc/records.pyx.pxi":106
 *   send_close_from_client = GRPC_OP_SEND_CLOSE_FROM_CLIENT
 *   send_status_from_server = GRPC_OP_SEND_STATUS_FROM_SERVER
 *   receive_initial_metadata = GRPC_OP_RECV_INITIAL_METADATA             # <<<<<<<<<<<<<<
 *   receive_message = GRPC_OP_RECV_MESSAGE
 *   receive_status_on_client = GRPC_OP_RECV_STATUS_ON_CLIENT
 */
  __pyx_t_1 = __Pyx_PyInt_From_grpc_op_type(GRPC_OP_RECV_INITIAL_METADATA); if (unlikely(!__pyx_t_1)) __PYX_ERR(21, 106, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  if (__Pyx_SetNameInClass(__pyx_t_7, __pyx_n_s_receive_initial_metadata_2, __pyx_t_1) < 0) __PYX_ERR(21, 106, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;

  /* "src/python/grpcio/grpc/_cython/_cygrpc/records.pyx.pxi":107
 *   send_status_from_server = GRPC_OP_SEND_STATUS_FROM_SERVER
 *   receive_initial_metadata = GRPC_OP_RECV_INITIAL_METADATA
 *   receive_message = GRPC_OP_RECV_MESSAGE             # <<<<<<<<<<<<<<
 *   receive_status_on_client = GRPC_OP_RECV_STATUS_ON_CLIENT
 *   receive_close_on_server = GRPC_OP_RECV_CLOSE_ON_SERVER
 */
  __pyx_t_1 = __Pyx_PyInt_From_grpc_op_type(GRPC_OP_RECV_MESSAGE); if (unlikely(!__pyx_t_1)) __PYX_ERR(21, 107, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  if (__Pyx_SetNameInClass(__pyx_t_7, __pyx_n_s_receive_message_2, __pyx_t_1) < 0) __PYX_ERR(21, 107, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;

  /* "src/python/grpcio/grpc/_cython/_cygrpc/records.pyx.pxi":108
 *   receive_initial_metadata = GRPC_OP_RECV_INITIAL_METADATA
 *   receive_message = GRPC_OP_RECV_MESSAGE
 *   receive_status_on_client = GRPC_OP_RECV_STATUS_ON_CLIENT             # <<<<<<<<<<<<<<
 *   receive_close_on_server = GRPC_OP_RECV_CLOSE_ON_SERVER
 * 
 */
  __pyx_t_1 = __Pyx_PyInt_From_grpc_op_type(GRPC_OP_RECV_STATUS_ON_CLIENT); if (unlikely(!__pyx_t_1)) __PYX_ERR(21, 108, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  if (__Pyx_SetNameInClass(__pyx_t_7, __pyx_n_s_receive_status_on_client, __pyx_t_1) < 0) __PYX_ERR(21, 108, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;

  /* "src/python/grpcio/grpc/_cython/_cygrpc/records.pyx.pxi":109
 *   receive_message = GRPC_OP_RECV_MESSAGE
 *   receive_status_on_client = GRPC_OP_RECV_STATUS_ON_CLIENT
 *   receive_close_on_server = GRPC_OP_RECV_CLOSE_ON_SERVER             # <<<<<<<<<<<<<<
 * 
 * GRPC_COMPRESSION_CHANNEL_DEFAULT_ALGORITHM= (
 */
  __pyx_t_1 = __Pyx_PyInt_From_grpc_op_type(GRPC_OP_RECV_CLOSE_ON_SERVER); if (unlikely(!__pyx_t_1)) __PYX_ERR(21, 109, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  if (__Pyx_SetNameInClass(__pyx_t_7, __pyx_n_s_receive_close_on_server, __pyx_t_1) < 0) __PYX_ERR(21, 109, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;

  /* "src/python/grpcio/grpc/_cython/_cygrpc/records.pyx.pxi":101
 * 
 * 
 * class OperationType:             # <<<<<<<<<<<<<<
 *   send_initial_metadata = GRPC_OP_SEND_INITIAL_METADATA
 *   send_message = GRPC_OP_SEND_MESSAGE
 */
  __pyx_t_1 = __Pyx_Py3ClassCreate(((PyObject*)&__Pyx_DefaultClassType), __pyx_n_s_OperationType, __pyx_empty_tuple, __pyx_t_7, NULL, 0, 1); if (unlikely(!__pyx_t_1)) __PYX_ERR(21, 101, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  if (PyDict_SetItem(__pyx_d, __pyx_n_s_OperationType, __pyx_t_1) < 0) __PYX_ERR(21, 101, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;

  /* "src/python/grpcio/grpc/_cython/_cygrpc/records.pyx.pxi":112
 * 
 * GRPC_COMPRESSION_CHANNEL_DEFAULT_ALGORITHM= (
 *   _GRPC_COMPRESSION_CHANNEL_DEFAULT_ALGORITHM)             # <<<<<<<<<<<<<<
 * 
 * GRPC_COMPRESSION_REQUEST_ALGORITHM_MD_KEY = (
 */
  __pyx_t_7 = __Pyx_PyBytes_FromString(GRPC_COMPRESSION_CHANNEL_DEFAULT_ALGORITHM); if (unlikely(!__pyx_t_7)) __PYX_ERR(21, 112, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_7);
  if (PyDict_SetItem(__pyx_d, __pyx_n_s_GRPC_COMPRESSION_CHANNEL_DEFAULT, __pyx_t_7) < 0) __PYX_ERR(21, 111, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;

  /* "src/python/grpcio/grpc/_cython/_cygrpc/records.pyx.pxi":115
 * 
 * GRPC_COMPRESSION_REQUEST_ALGORITHM_MD_KEY = (
 *   _GRPC_COMPRESSION_REQUEST_ALGORITHM_MD_KEY)             # <<<<<<<<<<<<<<
 * 
 * class CompressionAlgorithm:
 */
  __pyx_t_7 = __Pyx_PyBytes_FromString(GRPC_COMPRESSION_REQUEST_ALGORITHM_MD_KEY); if (unlikely(!__pyx_t_7)) __PYX_ERR(21, 115, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_7);
  if (PyDict_SetItem(__pyx_d, __pyx_n_s_GRPC_COMPRESSION_REQUEST_ALGORIT, __pyx_t_7) < 0) __PYX_ERR(21, 114, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;

  /* "src/python/grpcio/grpc/_cython/_cygrpc/records.pyx.pxi":117
 *   _GRPC_COMPRESSION_REQUEST_ALGORITHM_MD_KEY)
 * 
 * class CompressionAlgorithm:             # <<<<<<<<<<<<<<
 *   none = GRPC_COMPRESS_NONE
 *   deflate = GRPC_COMPRESS_DEFLATE
 */
  __pyx_t_7 = __Pyx_Py3MetaclassPrepare((PyObject *) NULL, __pyx_empty_tuple, __pyx_n_s_CompressionAlgorithm, __pyx_n_s_CompressionAlgorithm, (PyObject *) NULL, __pyx_n_s_grpc__cython_cygrpc, (PyObject *) NULL); if (unlikely(!__pyx_t_7)) __PYX_ERR(21, 117, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_7);

  /* "src/python/grpcio/grpc/_cython/_cygrpc/records.pyx.pxi":118
 * 
 * class CompressionAlgorithm:
 *   none = GRPC_COMPRESS_NONE             # <<<<<<<<<<<<<<
 *   deflate = GRPC_COMPRESS_DEFLATE
 *   gzip = GRPC_COMPRESS_GZIP
 */
  __pyx_t_1 = __Pyx_PyInt_From_grpc_compression_algorithm(GRPC_COMPRESS_NONE); if (unlikely(!__pyx_t_1)) __PYX_ERR(21, 118, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  if (__Pyx_SetNameInClass(__pyx_t_7, __pyx_n_s_none, __pyx_t_1) < 0) __PYX_ERR(21, 118, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;

  /* "src/python/grpcio/grpc/_cython/_cygrpc/records.pyx.pxi":119
 * class CompressionAlgorithm:
 *   none = GRPC_COMPRESS_NONE
 *   deflate = GRPC_COMPRESS_DEFLATE             # <<<<<<<<<<<<<<
 *   gzip = GRPC_COMPRESS_GZIP
 * 
 */
  __pyx_t_1 = __Pyx_PyInt_From_grpc_compression_algorithm(GRPC_COMPRESS_DEFLATE); if (unlikely(!__pyx_t_1)) __PYX_ERR(21, 119, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  if (__Pyx_SetNameInClass(__pyx_t_7, __pyx_n_s_deflate, __pyx_t_1) < 0) __PYX_ERR(21, 119, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;

  /* "src/python/grpcio/grpc/_cython/_cygrpc/records.pyx.pxi":120
 *   none = GRPC_COMPRESS_NONE
 *   deflate = GRPC_COMPRESS_DEFLATE
 *   gzip = GRPC_COMPRESS_GZIP             # <<<<<<<<<<<<<<
 * 
 * 
 */
  __pyx_t_1 = __Pyx_PyInt_From_grpc_compression_algorithm(GRPC_COMPRESS_GZIP); if (unlikely(!__pyx_t_1)) __PYX_ERR(21, 120, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  if (__Pyx_SetNameInClass(__pyx_t_7, __pyx_n_s_gzip, __pyx_t_1) < 0) __PYX_ERR(21, 120, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;

  /* "src/python/grpcio/grpc/_cython/_cygrpc/records.pyx.pxi":117
 *   _GRPC_COMPRESSION_REQUEST_ALGORITHM_MD_KEY)
 * 
 * class CompressionAlgorithm:             # <<<<<<<<<<<<<<
 *   none = GRPC_COMPRESS_NONE
 *   deflate = GRPC_COMPRESS_DEFLATE
 */
  __pyx_t_1 = __Pyx_Py3ClassCreate(((PyObject*)&__Pyx_DefaultClassType), __pyx_n_s_CompressionAlgorithm, __pyx_empty_tuple, __pyx_t_7, NULL, 0, 1); if (unlikely(!__pyx_t_1)) __PYX_ERR(21, 117, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  if (PyDict_SetItem(__pyx_d, __pyx_n_s_CompressionAlgorithm, __pyx_t_1) < 0) __PYX_ERR(21, 117, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;

  /* "src/python/grpcio/grpc/_cython/_cygrpc/records.pyx.pxi":123
 * 
 * 
 * class CompressionLevel:             # <<<<<<<<<<<<<<
 *   none = GRPC_COMPRESS_LEVEL_NONE
 *   low = GRPC_COMPRESS_LEVEL_LOW
 */
  __pyx_t_7 = __Pyx_Py3MetaclassPrepare((PyObject *) NULL, __pyx_empty_tuple, __pyx_n_s_CompressionLevel, __pyx_n_s_CompressionLevel, (PyObject *) NULL, __pyx_n_s_grpc__cython_cygrpc, (PyObject *) NULL); if (unlikely(!__pyx_t_7)) __PYX_ERR(21, 123, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_7);

  /* "src/python/grpcio/grpc/_cython/_cygrpc/records.pyx.pxi":124
 * 
 * class CompressionLevel:
 *   none = GRPC_COMPRESS_LEVEL_NONE             # <<<<<<<<<<<<<<
 *   low = GRPC_COMPRESS_LEVEL_LOW
 *   medium = GRPC_COMPRESS_LEVEL_MED
 */
  __pyx_t_1 = __Pyx_PyInt_From_grpc_compression_level(GRPC_COMPRESS_LEVEL_NONE); if (unlikely(!__pyx_t_1)) __PYX_ERR(21, 124, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  if (__Pyx_SetNameInClass(__pyx_t_7, __pyx_n_s_none, __pyx_t_1) < 0) __PYX_ERR(21, 124, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;

  /* "src/python/grpcio/grpc/_cython/_cygrpc/records.pyx.pxi":125
 * class CompressionLevel:
 *   none = GRPC_COMPRESS_LEVEL_NONE
 *   low = GRPC_COMPRESS_LEVEL_LOW             # <<<<<<<<<<<<<<
 *   medium = GRPC_COMPRESS_LEVEL_MED
 *   high = GRPC_COMPRESS_LEVEL_HIGH
 */
  __pyx_t_1 = __Pyx_PyInt_From_grpc_compression_level(GRPC_COMPRESS_LEVEL_LOW); if (unlikely(!__pyx_t_1)) __PYX_ERR(21, 125, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  if (__Pyx_SetNameInClass(__pyx_t_7, __pyx_n_s_low, __pyx_t_1) < 0) __PYX_ERR(21, 125, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;

  /* "src/python/grpcio/grpc/_cython/_cygrpc/records.pyx.pxi":126
 *   none = GRPC_COMPRESS_LEVEL_NONE
 *   low = GRPC_COMPRESS_LEVEL_LOW
 *   medium = GRPC_COMPRESS_LEVEL_MED             # <<<<<<<<<<<<<<
 *   high = GRPC_COMPRESS_LEVEL_HIGH
 * 
 */
  __pyx_t_1 = __Pyx_PyInt_From_grpc_compression_level(GRPC_COMPRESS_LEVEL_MED); if (unlikely(!__pyx_t_1)) __PYX_ERR(21, 126, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  if (__Pyx_SetNameInClass(__pyx_t_7, __pyx_n_s_medium, __pyx_t_1) < 0) __PYX_ERR(21, 126, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;

  /* "src/python/grpcio/grpc/_cython/_cygrpc/records.pyx.pxi":127
 *   low = GRPC_COMPRESS_LEVEL_LOW
 *   medium = GRPC_COMPRESS_LEVEL_MED
 *   high = GRPC_COMPRESS_LEVEL_HIGH             # <<<<<<<<<<<<<<
 * 
 * 
 */
  __pyx_t_1 = __Pyx_PyInt_From_grpc_compression_level(GRPC_COMPRESS_LEVEL_HIGH); if (unlikely(!__pyx_t_1)) __PYX_ERR(21, 127, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  if (__Pyx_SetNameInClass(__pyx_t_7, __pyx_n_s_high, __pyx_t_1) < 0) __PYX_ERR(21, 127, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;

  /* "src/python/grpcio/grpc/_cython/_cygrpc/records.pyx.pxi":123
 * 
 * 
 * class CompressionLevel:             # <<<<<<<<<<<<<<
 *   none = GRPC_COMPRESS_LEVEL_NONE
 *   low = GRPC_COMPRESS_LEVEL_LOW
 */
  __pyx_t_1 = __Pyx_Py3ClassCreate(((PyObject*)&__Pyx_DefaultClassType), __pyx_n_s_CompressionLevel, __pyx_empty_tuple, __pyx_t_7, NULL, 0, 1); if (unlikely(!__pyx_t_1)) __PYX_ERR(21, 123, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  if (PyDict_SetItem(__pyx_d, __pyx_n_s_CompressionLevel, __pyx_t_1) < 0) __PYX_ERR(21, 123, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;

  /* "src/python/grpcio/grpc/_cython/_cygrpc/records.pyx.pxi":192
 * 
 * 
 * def compression_algorithm_name(grpc_compression_algorithm algorithm):             # <<<<<<<<<<<<<<
 *   cdef const char* name
 *   with nogil:
 */
  __pyx_t_7 = PyCFunction_NewEx(&__pyx_mdef_4grpc_7_cython_6cygrpc_45compression_algorithm_name, NULL, __pyx_n_s_grpc__cython_cygrpc); if (unlikely(!__pyx_t_7)) __PYX_ERR(21, 192, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_7);
  if (PyDict_SetItem(__pyx_d, __pyx_n_s_compression_algorithm_name, __pyx_t_7) < 0) __PYX_ERR(21, 192, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;

  /* "src/python/grpcio/grpc/_cython/_cygrpc/security.pyx.pxi":17
 * from libc.string cimport memcpy
 * 
 * import pkgutil             # <<<<<<<<<<<<<<
 * 
 * 
 */
  __pyx_t_7 = __Pyx_Import(__pyx_n_s_pkgutil, 0, -1); if (unlikely(!__pyx_t_7)) __PYX_ERR(22, 17, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_7);
  if (PyDict_SetItem(__pyx_d, __pyx_n_s_pkgutil, __pyx_t_7) < 0) __PYX_ERR(22, 17, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;

  /* "src/python/grpcio/grpc/_cython/_cygrpc/security.pyx.pxi":36
 * 
 * 
 * def peer_identities(Call call):             # <<<<<<<<<<<<<<
 *   cdef grpc_auth_context* auth_context
 *   cdef grpc_auth_property_iterator properties
 */
  __pyx_t_7 = PyCFunction_NewEx(&__pyx_mdef_4grpc_7_cython_6cygrpc_47peer_identities, NULL, __pyx_n_s_grpc__cython_cygrpc); if (unlikely(!__pyx_t_7)) __PYX_ERR(22, 36, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_7);
  if (PyDict_SetItem(__pyx_d, __pyx_n_s_peer_identities, __pyx_t_7) < 0) __PYX_ERR(22, 36, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;

  /* "src/python/grpcio/grpc/_cython/_cygrpc/security.pyx.pxi":55
 *   return identities if identities else None
 * 
 * def peer_identity_key(Call call):             # <<<<<<<<<<<<<<
 *   cdef grpc_auth_context* auth_context
 *   cdef const char* c_key
 */
  __pyx_t_7 = PyCFunction_NewEx(&__pyx_mdef_4grpc_7_cython_6cygrpc_49peer_identity_key, NULL, __pyx_n_s_grpc__cython_cygrpc); if (unlikely(!__pyx_t_7)) __PYX_ERR(22, 55, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_7);
  if (PyDict_SetItem(__pyx_d, __pyx_n_s_peer_identity_key, __pyx_t_7) < 0) __PYX_ERR(22, 55, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;

  /* "src/python/grpcio/grpc/_cython/_cygrpc/security.pyx.pxi":69
 *   return key
 * 
 * def auth_context(Call call):             # <<<<<<<<<<<<<<
 *   cdef grpc_auth_context* auth_context
 *   cdef grpc_auth_property_iterator properties
 */
  __pyx_t_7 = PyCFunction_NewEx(&__pyx_mdef_4grpc_7_cython_6cygrpc_51auth_context, NULL, __pyx_n_s_grpc__cython_cygrpc); if (unlikely(!__pyx_t_7)) __PYX_ERR(22, 69, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_7);
  if (PyDict_SetItem(__pyx_d, __pyx_n_s_auth_context, __pyx_t_7) < 0) __PYX_ERR(22, 69, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;

  /* "src/python/grpcio/grpc/_cython/_cygrpc/vtable.pyx.pxi":34
 * 
 * cdef grpc_arg_pointer_vtable default_vtable
 * default_vtable.copy = &_copy_pointer             # <<<<<<<<<<<<<<
 * default_vtable.destroy = &_destroy_pointer
 * default_vtable.cmp = &_compare_pointer
 */
  __pyx_v_4grpc_7_cython_6cygrpc_default_vtable.copy = (&__pyx_f_4grpc_7_cython_6cygrpc__copy_pointer);

  /* "src/python/grpcio/grpc/_cython/_cygrpc/vtable.pyx.pxi":35
 * cdef grpc_arg_pointer_vtable default_vtable
 * default_vtable.copy = &_copy_pointer
 * default_vtable.destroy = &_destroy_pointer             # <<<<<<<<<<<<<<
 * default_vtable.cmp = &_compare_pointer
 */
  __pyx_v_4grpc_7_cython_6cygrpc_default_vtable.destroy = (&__pyx_f_4grpc_7_cython_6cygrpc__destroy_pointer);

  /* "src/python/grpcio/grpc/_cython/_cygrpc/vtable.pyx.pxi":36
 * default_vtable.copy = &_copy_pointer
 * default_vtable.destroy = &_destroy_pointer
 * default_vtable.cmp = &_compare_pointer             # <<<<<<<<<<<<<<
 */
  __pyx_v_4grpc_7_cython_6cygrpc_default_vtable.cmp = (&__pyx_f_4grpc_7_cython_6cygrpc__compare_pointer);

  /* "src/python/grpcio/grpc/_cython/_cygrpc/_hooks.pyx.pxi":19
 *   raise NotImplementedError("No custom hooks are implemented")
 * 
 * def install_context_from_request_call_event(RequestCallEvent event):             # <<<<<<<<<<<<<<
 *   pass
 * 
 */
  __pyx_t_7 = PyCFunction_NewEx(&__pyx_mdef_4grpc_7_cython_6cygrpc_53install_context_from_request_call_event, NULL, __pyx_n_s_grpc__cython_cygrpc); if (unlikely(!__pyx_t_7)) __PYX_ERR(26, 19, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_7);
  if (PyDict_SetItem(__pyx_d, __pyx_n_s_install_context_from_request_cal, __pyx_t_7) < 0) __PYX_ERR(26, 19, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;

  /* "src/python/grpcio/grpc/_cython/_cygrpc/_hooks.pyx.pxi":22
 *   pass
 * 
 * def uninstall_context():             # <<<<<<<<<<<<<<
 *   pass
 * 
 */
  __pyx_t_7 = PyCFunction_NewEx(&__pyx_mdef_4grpc_7_cython_6cygrpc_55uninstall_context, NULL, __pyx_n_s_grpc__cython_cygrpc); if (unlikely(!__pyx_t_7)) __PYX_ERR(26, 22, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_7);
  if (PyDict_SetItem(__pyx_d, __pyx_n_s_uninstall_context, __pyx_t_7) < 0) __PYX_ERR(26, 22, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;

  /* "src/python/grpcio/grpc/_cython/_cygrpc/_hooks.pyx.pxi":25
 *   pass
 * 
 * def build_census_context():             # <<<<<<<<<<<<<<
 *   pass
 * 
 */
  __pyx_t_7 = PyCFunction_NewEx(&__pyx_mdef_4grpc_7_cython_6cygrpc_57build_census_context, NULL, __pyx_n_s_grpc__cython_cygrpc); if (unlikely(!__pyx_t_7)) __PYX_ERR(26, 25, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_7);
  if (PyDict_SetItem(__pyx_d, __pyx_n_s_build_census_context, __pyx_t_7) < 0) __PYX_ERR(26, 25, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;

  /* "src/python/grpcio/grpc/_cython/_cygrpc/_hooks.pyx.pxi":31
 *   pass
 * 
 * def set_census_context_on_call(_CallState call_state, CensusContext census_ctx):             # <<<<<<<<<<<<<<
 *   pass
 * 
 */
  __pyx_t_7 = PyCFunction_NewEx(&__pyx_mdef_4grpc_7_cython_6cygrpc_59set_census_context_on_call, NULL, __pyx_n_s_grpc__cython_cygrpc); if (unlikely(!__pyx_t_7)) __PYX_ERR(26, 31, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_7);
  if (PyDict_SetItem(__pyx_d, __pyx_n_s_set_census_context_on_call, __pyx_t_7) < 0) __PYX_ERR(26, 31, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;

  /* "src/python/grpcio/grpc/_cython/_cygrpc/_hooks.pyx.pxi":34
 *   pass
 * 
 * def get_deadline_from_context():             # <<<<<<<<<<<<<<
 *   return None
 */
  __pyx_t_7 = PyCFunction_NewEx(&__pyx_mdef_4grpc_7_cython_6cygrpc_61get_deadline_from_context, NULL, __pyx_n_s_grpc__cython_cygrpc); if (unlikely(!__pyx_t_7)) __PYX_ERR(26, 34, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_7);
  if (PyDict_SetItem(__pyx_d, __pyx_n_s_get_deadline_from_context, __pyx_t_7) < 0) __PYX_ERR(26, 34, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;

  /* "src/python/grpcio/grpc/_cython/_cygrpc/grpc_gevent.pyx.pxi":17
 * 
 * from libc cimport string
 * import errno             # <<<<<<<<<<<<<<
 * import sys
 * gevent_g = None
 */
  __pyx_t_7 = __Pyx_Import(__pyx_n_s_errno, 0, -1); if (unlikely(!__pyx_t_7)) __PYX_ERR(6, 17, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_7);
  if (PyDict_SetItem(__pyx_d, __pyx_n_s_errno, __pyx_t_7) < 0) __PYX_ERR(6, 17, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;

  /* "src/python/grpcio/grpc/_cython/_cygrpc/grpc_gevent.pyx.pxi":18
 * from libc cimport string
 * import errno
 * import sys             # <<<<<<<<<<<<<<
 * gevent_g = None
 * gevent_socket = None
 */
  __pyx_t_7 = __Pyx_Import(__pyx_n_s_sys, 0, -1); if (unlikely(!__pyx_t_7)) __PYX_ERR(6, 18, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_7);
  if (PyDict_SetItem(__pyx_d, __pyx_n_s_sys, __pyx_t_7) < 0) __PYX_ERR(6, 18, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;

  /* "src/python/grpcio/grpc/_cython/_cygrpc/grpc_gevent.pyx.pxi":19
 * import errno
 * import sys
 * gevent_g = None             # <<<<<<<<<<<<<<
 * gevent_socket = None
 * gevent_hub = None
 */
  if (PyDict_SetItem(__pyx_d, __pyx_n_s_gevent_g, Py_None) < 0) __PYX_ERR(6, 19, __pyx_L1_error)

  /* "src/python/grpcio/grpc/_cython/_cygrpc/grpc_gevent.pyx.pxi":20
 * import sys
 * gevent_g = None
 * gevent_socket = None             # <<<<<<<<<<<<<<
 * gevent_hub = None
 * gevent_event = None
 */
  if (PyDict_SetItem(__pyx_d, __pyx_n_s_gevent_socket, Py_None) < 0) __PYX_ERR(6, 20, __pyx_L1_error)

  /* "src/python/grpcio/grpc/_cython/_cygrpc/grpc_gevent.pyx.pxi":21
 * gevent_g = None
 * gevent_socket = None
 * gevent_hub = None             # <<<<<<<<<<<<<<
 * gevent_event = None
 * g_event = None
 */
  if (PyDict_SetItem(__pyx_d, __pyx_n_s_gevent_hub, Py_None) < 0) __PYX_ERR(6, 21, __pyx_L1_error)

  /* "src/python/grpcio/grpc/_cython/_cygrpc/grpc_gevent.pyx.pxi":22
 * gevent_socket = None
 * gevent_hub = None
 * gevent_event = None             # <<<<<<<<<<<<<<
 * g_event = None
 * g_pool = None
 */
  if (PyDict_SetItem(__pyx_d, __pyx_n_s_gevent_event, Py_None) < 0) __PYX_ERR(6, 22, __pyx_L1_error)

  /* "src/python/grpcio/grpc/_cython/_cygrpc/grpc_gevent.pyx.pxi":23
 * gevent_hub = None
 * gevent_event = None
 * g_event = None             # <<<<<<<<<<<<<<
 * g_pool = None
 * 
 */
  if (PyDict_SetItem(__pyx_d, __pyx_n_s_g_event, Py_None) < 0) __PYX_ERR(6, 23, __pyx_L1_error)

  /* "src/python/grpcio/grpc/_cython/_cygrpc/grpc_gevent.pyx.pxi":24
 * gevent_event = None
 * g_event = None
 * g_pool = None             # <<<<<<<<<<<<<<
 * 
 * def _spawn_greenlet(*args):
 */
  if (PyDict_SetItem(__pyx_d, __pyx_n_s_g_pool, Py_None) < 0) __PYX_ERR(6, 24, __pyx_L1_error)

  /* "src/python/grpcio/grpc/_cython/_cygrpc/grpc_gevent.pyx.pxi":26
 * g_pool = None
 * 
 * def _spawn_greenlet(*args):             # <<<<<<<<<<<<<<
 *   greenlet = g_pool.spawn(*args)
 * 
 */
  __pyx_t_7 = PyCFunction_NewEx(&__pyx_mdef_4grpc_7_cython_6cygrpc_63_spawn_greenlet, NULL, __pyx_n_s_grpc__cython_cygrpc); if (unlikely(!__pyx_t_7)) __PYX_ERR(6, 26, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_7);
  if (PyDict_SetItem(__pyx_d, __pyx_n_s_spawn_greenlet, __pyx_t_7) < 0) __PYX_ERR(6, 26, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;

  /* "src/python/grpcio/grpc/_cython/_cygrpc/grpc_gevent.pyx.pxi":68
 *   g_event.set()
 * 
 * def socket_connect_async(socket_wrapper, addr_tuple):             # <<<<<<<<<<<<<<
 *   socket_connect_async_cython(socket_wrapper, addr_tuple)
 * 
 */
  __pyx_t_7 = PyCFunction_NewEx(&__pyx_mdef_4grpc_7_cython_6cygrpc_65socket_connect_async, NULL, __pyx_n_s_grpc__cython_cygrpc); if (unlikely(!__pyx_t_7)) __PYX_ERR(6, 68, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_7);
  if (PyDict_SetItem(__pyx_d, __pyx_n_s_socket_connect_async, __pyx_t_7) < 0) __PYX_ERR(6, 68, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;

  /* "src/python/grpcio/grpc/_cython/_cygrpc/grpc_gevent.pyx.pxi":108
 *   socket_wrapper.close_cb(socket)
 * 
 * def socket_sendmsg(socket, write_bytes):             # <<<<<<<<<<<<<<
 *   try:
 *     return socket.sendmsg(write_bytes)
 */
  __pyx_t_7 = PyCFunction_NewEx(&__pyx_mdef_4grpc_7_cython_6cygrpc_67socket_sendmsg, NULL, __pyx_n_s_grpc__cython_cygrpc); if (unlikely(!__pyx_t_7)) __PYX_ERR(6, 108, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_7);
  if (PyDict_SetItem(__pyx_d, __pyx_n_s_socket_sendmsg, __pyx_t_7) < 0) __PYX_ERR(6, 108, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;

  /* "src/python/grpcio/grpc/_cython/_cygrpc/grpc_gevent.pyx.pxi":133
 *   g_event.set()
 * 
 * def socket_write_async(socket_wrapper, write_bytes):             # <<<<<<<<<<<<<<
 *   socket_write_async_cython(socket_wrapper, write_bytes)
 * 
 */
  __pyx_t_7 = PyCFunction_NewEx(&__pyx_mdef_4grpc_7_cython_6cygrpc_69socket_write_async, NULL, __pyx_n_s_grpc__cython_cygrpc); if (unlikely(!__pyx_t_7)) __PYX_ERR(6, 133, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_7);
  if (PyDict_SetItem(__pyx_d, __pyx_n_s_socket_write_async, __pyx_t_7) < 0) __PYX_ERR(6, 133, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;

  /* "src/python/grpcio/grpc/_cython/_cygrpc/grpc_gevent.pyx.pxi":161
 *   g_event.set()
 * 
 * def socket_read_async(socket_wrapper):             # <<<<<<<<<<<<<<
 *   socket_read_async_cython(socket_wrapper)
 * 
 */
  __pyx_t_7 = PyCFunction_NewEx(&__pyx_mdef_4grpc_7_cython_6cygrpc_71socket_read_async, NULL, __pyx_n_s_grpc__cython_cygrpc); if (unlikely(!__pyx_t_7)) __PYX_ERR(6, 161, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_7);
  if (PyDict_SetItem(__pyx_d, __pyx_n_s_socket_read_async, __pyx_t_7) < 0) __PYX_ERR(6, 161, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;

  /* "src/python/grpcio/grpc/_cython/_cygrpc/grpc_gevent.pyx.pxi":200
 *   return grpc_error_none()
 * 
 * def applysockopts(s):             # <<<<<<<<<<<<<<
 *   s.setsockopt(gevent_socket.SOL_SOCKET, gevent_socket.SO_REUSEADDR, 1)
 *   s.setsockopt(gevent_socket.IPPROTO_TCP, gevent_socket.TCP_NODELAY, True)
 */
  __pyx_t_7 = PyCFunction_NewEx(&__pyx_mdef_4grpc_7_cython_6cygrpc_73applysockopts, NULL, __pyx_n_s_grpc__cython_cygrpc); if (unlikely(!__pyx_t_7)) __PYX_ERR(6, 200, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_7);
  if (PyDict_SetItem(__pyx_d, __pyx_n_s_applysockopts, __pyx_t_7) < 0) __PYX_ERR(6, 200, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;

  /* "src/python/grpcio/grpc/_cython/_cygrpc/grpc_gevent.pyx.pxi":249
 *    g_event.set()
 * 
 * def socket_accept_async(s):             # <<<<<<<<<<<<<<
 *   accept_callback_cython(s)
 * 
 */
  __pyx_t_7 = PyCFunction_NewEx(&__pyx_mdef_4grpc_7_cython_6cygrpc_75socket_accept_async, NULL, __pyx_n_s_grpc__cython_cygrpc); if (unlikely(!__pyx_t_7)) __PYX_ERR(6, 249, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_7);
  if (PyDict_SetItem(__pyx_d, __pyx_n_s_socket_accept_async, __pyx_t_7) < 0) __PYX_ERR(6, 249, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;

  /* "src/python/grpcio/grpc/_cython/_cygrpc/grpc_gevent.pyx.pxi":284
 *   g_event.set()
 * 
 * def socket_resolve_async_python(resolve_wrapper):             # <<<<<<<<<<<<<<
 *   socket_resolve_async_cython(resolve_wrapper)
 * 
 */
  __pyx_t_7 = PyCFunction_NewEx(&__pyx_mdef_4grpc_7_cython_6cygrpc_77socket_resolve_async_python, NULL, __pyx_n_s_grpc__cython_cygrpc); if (unlikely(!__pyx_t_7)) __PYX_ERR(6, 284, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_7);
  if (PyDict_SetItem(__pyx_d, __pyx_n_s_socket_resolve_async_python, __pyx_t_7) < 0) __PYX_ERR(6, 284, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;

  /* "src/python/grpcio/grpc/_cython/_cygrpc/grpc_gevent.pyx.pxi":352
 *   g_event.set()
 * 
 * def _run_loop(timeout_ms):             # <<<<<<<<<<<<<<
 *   timeout = timeout_ms / 1000.0
 *   if timeout_ms > 0:
 */
  __pyx_t_7 = PyCFunction_NewEx(&__pyx_mdef_4grpc_7_cython_6cygrpc_79_run_loop, NULL, __pyx_n_s_grpc__cython_cygrpc); if (unlikely(!__pyx_t_7)) __PYX_ERR(6, 352, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_7);
  if (PyDict_SetItem(__pyx_d, __pyx_n_s_run_loop, __pyx_t_7) < 0) __PYX_ERR(6, 352, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;

  /* "src/python/grpcio/grpc/_cython/_cygrpc/grpc_gevent.pyx.pxi":379
 * cdef grpc_custom_poller_vtable gevent_pollset_vtable
 * 
 * def init_grpc_gevent():             # <<<<<<<<<<<<<<
 *   # Lazily import gevent
 *   global gevent_socket
 */
  __pyx_t_7 = PyCFunction_NewEx(&__pyx_mdef_4grpc_7_cython_6cygrpc_81init_grpc_gevent, NULL, __pyx_n_s_grpc__cython_cygrpc); if (unlikely(!__pyx_t_7)) __PYX_ERR(6, 379, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_7);
  if (PyDict_SetItem(__pyx_d, __pyx_n_s_init_grpc_gevent, __pyx_t_7) < 0) __PYX_ERR(6, 379, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;

  /* "src/python/grpcio/grpc/_cython/_cygrpc/thread.pyx.pxi":15
 * # limitations under the License.
 * 
 * def _contextvars_supported():             # <<<<<<<<<<<<<<
 *     """Determines if the contextvars module is supported.
 * 
 */
  __pyx_t_7 = PyCFunction_NewEx(&__pyx_mdef_4grpc_7_cython_6cygrpc_83_contextvars_supported, NULL, __pyx_n_s_grpc__cython_cygrpc); if (unlikely(!__pyx_t_7)) __PYX_ERR(28, 15, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_7);
  if (PyDict_SetItem(__pyx_d, __pyx_n_s_contextvars_supported, __pyx_t_7) < 0) __PYX_ERR(28, 15, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;

  /* "src/python/grpcio/grpc/_cython/_cygrpc/thread.pyx.pxi":33
 * 
 * 
 * def _run_with_context(target):             # <<<<<<<<<<<<<<
 *     """Runs a callable with contextvars propagated.
 * 
 */
  __pyx_t_7 = PyCFunction_NewEx(&__pyx_mdef_4grpc_7_cython_6cygrpc_85_run_with_context, NULL, __pyx_n_s_grpc__cython_cygrpc); if (unlikely(!__pyx_t_7)) __PYX_ERR(28, 33, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_7);
  if (PyDict_SetItem(__pyx_d, __pyx_n_s_run_with_context, __pyx_t_7) < 0) __PYX_ERR(28, 33, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;

  /* "src/python/grpcio/grpc/_cython/_cygrpc/thread.pyx.pxi":48
 * 
 * 
 * if _contextvars_supported():             # <<<<<<<<<<<<<<
 *     import contextvars
 *     def _run_with_context(target):
 */
  __Pyx_GetModuleGlobalName(__pyx_t_7, __pyx_n_s_contextvars_supported); if (unlikely(!__pyx_t_7)) __PYX_ERR(28, 48, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_7);
  __pyx_t_1 = __Pyx_PyObject_CallNoArg(__pyx_t_7); if (unlikely(!__pyx_t_1)) __PYX_ERR(28, 48, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
  __pyx_t_8 = __Pyx_PyObject_IsTrue(__pyx_t_1); if (unlikely(__pyx_t_8 < 0)) __PYX_ERR(28, 48, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  if (__pyx_t_8) {

    /* "src/python/grpcio/grpc/_cython/_cygrpc/thread.pyx.pxi":49
 * 
 * if _contextvars_supported():
 *     import contextvars             # <<<<<<<<<<<<<<
 *     def _run_with_context(target):
 *         ctx = contextvars.copy_context()
 */
    __pyx_t_1 = __Pyx_Import(__pyx_n_s_contextvars, 0, -1); if (unlikely(!__pyx_t_1)) __PYX_ERR(28, 49, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_1);
    if (PyDict_SetItem(__pyx_d, __pyx_n_s_contextvars, __pyx_t_1) < 0) __PYX_ERR(28, 49, __pyx_L1_error)
    __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;

    /* "src/python/grpcio/grpc/_cython/_cygrpc/thread.pyx.pxi":50
 * if _contextvars_supported():
 *     import contextvars
 *     def _run_with_context(target):             # <<<<<<<<<<<<<<
 *         ctx = contextvars.copy_context()
 *         def _run(*args):
 */
    __pyx_t_1 = PyCFunction_NewEx(&__pyx_mdef_4grpc_7_cython_6cygrpc_87_run_with_context, NULL, __pyx_n_s_grpc__cython_cygrpc); if (unlikely(!__pyx_t_1)) __PYX_ERR(28, 50, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_1);
    if (PyDict_SetItem(__pyx_d, __pyx_n_s_run_with_context, __pyx_t_1) < 0) __PYX_ERR(28, 50, __pyx_L1_error)
    __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;

    /* "src/python/grpcio/grpc/_cython/_cygrpc/thread.pyx.pxi":48
 * 
 * 
 * if _contextvars_supported():             # <<<<<<<<<<<<<<
 *     import contextvars
 *     def _run_with_context(target):
 */
    goto __pyx_L8;
  }

  /* "src/python/grpcio/grpc/_cython/_cygrpc/thread.pyx.pxi":56
 *         return _run
 * else:
 *     def _run_with_context(target):             # <<<<<<<<<<<<<<
 *         def _run(*args):
 *             target(*args)
 */
  /*else*/ {
    __pyx_t_1 = PyCFunction_NewEx(&__pyx_mdef_4grpc_7_cython_6cygrpc_89_run_with_context, NULL, __pyx_n_s_grpc__cython_cygrpc); if (unlikely(!__pyx_t_1)) __PYX_ERR(28, 56, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_1);
    if (PyDict_SetItem(__pyx_d, __pyx_n_s_run_with_context, __pyx_t_1) < 0) __PYX_ERR(28, 56, __pyx_L1_error)
    __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  }
  __pyx_L8:;

  /* "src/python/grpcio/grpc/_cython/_cygrpc/fork_posix.pyx.pxi":16
 * 
 * 
 * _AWAIT_THREADS_TIMEOUT_SECONDS = 5             # <<<<<<<<<<<<<<
 * 
 * _TRUE_VALUES = ['yes',  'Yes',  'YES', 'true', 'True', 'TRUE', '1']
 */
  if (PyDict_SetItem(__pyx_d, __pyx_n_s_AWAIT_THREADS_TIMEOUT_SECONDS, __pyx_int_5) < 0) __PYX_ERR(1, 16, __pyx_L1_error)

  /* "src/python/grpcio/grpc/_cython/_cygrpc/fork_posix.pyx.pxi":18
 * _AWAIT_THREADS_TIMEOUT_SECONDS = 5
 * 
 * _TRUE_VALUES = ['yes',  'Yes',  'YES', 'true', 'True', 'TRUE', '1']             # <<<<<<<<<<<<<<
 * 
 * # This flag enables experimental support within gRPC Python for applications
 */
  __pyx_t_1 = PyList_New(7); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 18, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_INCREF(__pyx_n_s_yes);
  __Pyx_GIVEREF(__pyx_n_s_yes);
  PyList_SET_ITEM(__pyx_t_1, 0, __pyx_n_s_yes);
  __Pyx_INCREF(__pyx_n_s_Yes);
  __Pyx_GIVEREF(__pyx_n_s_Yes);
  PyList_SET_ITEM(__pyx_t_1, 1, __pyx_n_s_Yes);
  __Pyx_INCREF(__pyx_n_s_YES);
  __Pyx_GIVEREF(__pyx_n_s_YES);
  PyList_SET_ITEM(__pyx_t_1, 2, __pyx_n_s_YES);
  __Pyx_INCREF(__pyx_n_s_true);
  __Pyx_GIVEREF(__pyx_n_s_true);
  PyList_SET_ITEM(__pyx_t_1, 3, __pyx_n_s_true);
  __Pyx_INCREF(__pyx_n_s_True);
  __Pyx_GIVEREF(__pyx_n_s_True);
  PyList_SET_ITEM(__pyx_t_1, 4, __pyx_n_s_True);
  __Pyx_INCREF(__pyx_n_s_TRUE);
  __Pyx_GIVEREF(__pyx_n_s_TRUE);
  PyList_SET_ITEM(__pyx_t_1, 5, __pyx_n_s_TRUE);
  __Pyx_INCREF(__pyx_kp_s_1);
  __Pyx_GIVEREF(__pyx_kp_s_1);
  PyList_SET_ITEM(__pyx_t_1, 6, __pyx_kp_s_1);
  if (PyDict_SetItem(__pyx_d, __pyx_n_s_TRUE_VALUES, __pyx_t_1) < 0) __PYX_ERR(1, 18, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;

  /* "src/python/grpcio/grpc/_cython/_cygrpc/fork_posix.pyx.pxi":32
 * # This flag is also not supported for non-native IO manager.
 * _GRPC_ENABLE_FORK_SUPPORT = (
 *     os.environ.get('GRPC_ENABLE_FORK_SUPPORT', '0')             # <<<<<<<<<<<<<<
 *         .lower() in _TRUE_VALUES)
 * 
 */
  __Pyx_GetModuleGlobalName(__pyx_t_1, __pyx_n_s_os); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 32, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_t_7 = __Pyx_PyObject_GetAttrStr(__pyx_t_1, __pyx_n_s_environ); if (unlikely(!__pyx_t_7)) __PYX_ERR(1, 32, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_7);
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_t_7, __pyx_n_s_get); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 32, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
  __pyx_t_7 = __Pyx_PyObject_Call(__pyx_t_1, __pyx_tuple__288, NULL); if (unlikely(!__pyx_t_7)) __PYX_ERR(1, 32, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_7);
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;

  /* "src/python/grpcio/grpc/_cython/_cygrpc/fork_posix.pyx.pxi":33
 * _GRPC_ENABLE_FORK_SUPPORT = (
 *     os.environ.get('GRPC_ENABLE_FORK_SUPPORT', '0')
 *         .lower() in _TRUE_VALUES)             # <<<<<<<<<<<<<<
 * 
 * _fork_handler_failed = False
 */
  __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_t_7, __pyx_n_s_lower); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 33, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
  __pyx_t_7 = __Pyx_PyObject_CallNoArg(__pyx_t_1); if (unlikely(!__pyx_t_7)) __PYX_ERR(1, 33, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_7);
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  __Pyx_GetModuleGlobalName(__pyx_t_1, __pyx_n_s_TRUE_VALUES); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 33, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_t_8 = (__Pyx_PySequence_ContainsTF(__pyx_t_7, __pyx_t_1, Py_EQ)); if (unlikely(__pyx_t_8 < 0)) __PYX_ERR(1, 33, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  __pyx_t_1 = __Pyx_PyBool_FromLong(__pyx_t_8); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 33, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  if (PyDict_SetItem(__pyx_d, __pyx_n_s_GRPC_ENABLE_FORK_SUPPORT, __pyx_t_1) < 0) __PYX_ERR(1, 31, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;

  /* "src/python/grpcio/grpc/_cython/_cygrpc/fork_posix.pyx.pxi":35
 *         .lower() in _TRUE_VALUES)
 * 
 * _fork_handler_failed = False             # <<<<<<<<<<<<<<
 * 
 * cdef void __prefork() nogil:
 */
  if (PyDict_SetItem(__pyx_d, __pyx_n_s_fork_handler_failed, Py_False) < 0) __PYX_ERR(1, 35, __pyx_L1_error)

  /* "src/python/grpcio/grpc/_cython/_cygrpc/fork_posix.pyx.pxi":88
 * 
 * 
 * def fork_handlers_and_grpc_init():             # <<<<<<<<<<<<<<
 *     grpc_init()
 *     if _GRPC_ENABLE_FORK_SUPPORT:
 */
  __pyx_t_1 = PyCFunction_NewEx(&__pyx_mdef_4grpc_7_cython_6cygrpc_91fork_handlers_and_grpc_init, NULL, __pyx_n_s_grpc__cython_cygrpc); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 88, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  if (PyDict_SetItem(__pyx_d, __pyx_n_s_fork_handlers_and_grpc_init, __pyx_t_1) < 0) __PYX_ERR(1, 88, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;

  /* "src/python/grpcio/grpc/_cython/_cygrpc/fork_posix.pyx.pxi":99
 * 
 * 
 * class ForkManagedThread(object):             # <<<<<<<<<<<<<<
 *     def __init__(self, target, args=()):
 *         if _GRPC_ENABLE_FORK_SUPPORT:
 */
  __pyx_t_1 = __Pyx_CalculateMetaclass(NULL, __pyx_tuple__290); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 99, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_t_7 = __Pyx_Py3MetaclassPrepare(__pyx_t_1, __pyx_tuple__290, __pyx_n_s_ForkManagedThread, __pyx_n_s_ForkManagedThread, (PyObject *) NULL, __pyx_n_s_grpc__cython_cygrpc, (PyObject *) NULL); if (unlikely(!__pyx_t_7)) __PYX_ERR(1, 99, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_7);

  /* "src/python/grpcio/grpc/_cython/_cygrpc/fork_posix.pyx.pxi":100
 * 
 * class ForkManagedThread(object):
 *     def __init__(self, target, args=()):             # <<<<<<<<<<<<<<
 *         if _GRPC_ENABLE_FORK_SUPPORT:
 *             def managed_target(*args):
 */
  __pyx_t_6 = __Pyx_CyFunction_New(&__pyx_mdef_4grpc_7_cython_6cygrpc_17ForkManagedThread_1__init__, 0, __pyx_n_s_ForkManagedThread___init, NULL, __pyx_n_s_grpc__cython_cygrpc, __pyx_d, ((PyObject *)__pyx_codeobj__292)); if (unlikely(!__pyx_t_6)) __PYX_ERR(1, 100, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_6);
  __Pyx_CyFunction_SetDefaultsTuple(__pyx_t_6, __pyx_tuple__293);
  if (__Pyx_SetNameInClass(__pyx_t_7, __pyx_n_s_init, __pyx_t_6) < 0) __PYX_ERR(1, 100, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;

  /* "src/python/grpcio/grpc/_cython/_cygrpc/fork_posix.pyx.pxi":111
 *             self._thread = threading.Thread(target=_run_with_context(target), args=args)
 * 
 *     def setDaemon(self, daemonic):             # <<<<<<<<<<<<<<
 *         self._thread.daemon = daemonic
 * 
 */
  __pyx_t_6 = __Pyx_CyFunction_New(&__pyx_mdef_4grpc_7_cython_6cygrpc_17ForkManagedThread_3setDaemon, 0, __pyx_n_s_ForkManagedThread_setDaemon, NULL, __pyx_n_s_grpc__cython_cygrpc, __pyx_d, ((PyObject *)__pyx_codeobj__295)); if (unlikely(!__pyx_t_6)) __PYX_ERR(1, 111, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_6);
  if (__Pyx_SetNameInClass(__pyx_t_7, __pyx_n_s_setDaemon, __pyx_t_6) < 0) __PYX_ERR(1, 111, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;

  /* "src/python/grpcio/grpc/_cython/_cygrpc/fork_posix.pyx.pxi":114
 *         self._thread.daemon = daemonic
 * 
 *     def start(self):             # <<<<<<<<<<<<<<
 *         if _GRPC_ENABLE_FORK_SUPPORT:
 *             _fork_state.active_thread_count.increment()
 */
  __pyx_t_6 = __Pyx_CyFunction_New(&__pyx_mdef_4grpc_7_cython_6cygrpc_17ForkManagedThread_5start, 0, __pyx_n_s_ForkManagedThread_start, NULL, __pyx_n_s_grpc__cython_cygrpc, __pyx_d, ((PyObject *)__pyx_codeobj__297)); if (unlikely(!__pyx_t_6)) __PYX_ERR(1, 114, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_6);
  if (__Pyx_SetNameInClass(__pyx_t_7, __pyx_n_s_start, __pyx_t_6) < 0) __PYX_ERR(1, 114, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;

  /* "src/python/grpcio/grpc/_cython/_cygrpc/fork_posix.pyx.pxi":119
 *         self._thread.start()
 * 
 *     def join(self):             # <<<<<<<<<<<<<<
 *         self._thread.join()
 * 
 */
  __pyx_t_6 = __Pyx_CyFunction_New(&__pyx_mdef_4grpc_7_cython_6cygrpc_17ForkManagedThread_7join, 0, __pyx_n_s_ForkManagedThread_join, NULL, __pyx_n_s_grpc__cython_cygrpc, __pyx_d, ((PyObject *)__pyx_codeobj__299)); if (unlikely(!__pyx_t_6)) __PYX_ERR(1, 119, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_6);
  if (__Pyx_SetNameInClass(__pyx_t_7, __pyx_n_s_join, __pyx_t_6) < 0) __PYX_ERR(1, 119, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;

  /* "src/python/grpcio/grpc/_cython/_cygrpc/fork_posix.pyx.pxi":99
 * 
 * 
 * class ForkManagedThread(object):             # <<<<<<<<<<<<<<
 *     def __init__(self, target, args=()):
 *         if _GRPC_ENABLE_FORK_SUPPORT:
 */
  __pyx_t_6 = __Pyx_Py3ClassCreate(__pyx_t_1, __pyx_n_s_ForkManagedThread, __pyx_tuple__290, __pyx_t_7, NULL, 0, 1); if (unlikely(!__pyx_t_6)) __PYX_ERR(1, 99, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_6);
  if (PyDict_SetItem(__pyx_d, __pyx_n_s_ForkManagedThread, __pyx_t_6) < 0) __PYX_ERR(1, 99, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
  __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;

  /* "src/python/grpcio/grpc/_cython/_cygrpc/fork_posix.pyx.pxi":123
 * 
 * 
 * def block_if_fork_in_progress(postfork_state_to_reset=None):             # <<<<<<<<<<<<<<
 *     if _GRPC_ENABLE_FORK_SUPPORT:
 *         with _fork_state.fork_in_progress_condition:
 */
  __pyx_t_1 = PyCFunction_NewEx(&__pyx_mdef_4grpc_7_cython_6cygrpc_93block_if_fork_in_progress, NULL, __pyx_n_s_grpc__cython_cygrpc); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 123, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  if (PyDict_SetItem(__pyx_d, __pyx_n_s_block_if_fork_in_progress, __pyx_t_1) < 0) __PYX_ERR(1, 123, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;

  /* "src/python/grpcio/grpc/_cython/_cygrpc/fork_posix.pyx.pxi":135
 * 
 * 
 * def enter_user_request_generator():             # <<<<<<<<<<<<<<
 *     if _GRPC_ENABLE_FORK_SUPPORT:
 *         _fork_state.active_thread_count.decrement()
 */
  __pyx_t_1 = PyCFunction_NewEx(&__pyx_mdef_4grpc_7_cython_6cygrpc_95enter_user_request_generator, NULL, __pyx_n_s_grpc__cython_cygrpc); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 135, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  if (PyDict_SetItem(__pyx_d, __pyx_n_s_enter_user_request_generator, __pyx_t_1) < 0) __PYX_ERR(1, 135, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;

  /* "src/python/grpcio/grpc/_cython/_cygrpc/fork_posix.pyx.pxi":140
 * 
 * 
 * def return_from_user_request_generator():             # <<<<<<<<<<<<<<
 *     if _GRPC_ENABLE_FORK_SUPPORT:
 *         _fork_state.active_thread_count.increment()
 */
  __pyx_t_1 = PyCFunction_NewEx(&__pyx_mdef_4grpc_7_cython_6cygrpc_97return_from_user_request_generator, NULL, __pyx_n_s_grpc__cython_cygrpc); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 140, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  if (PyDict_SetItem(__pyx_d, __pyx_n_s_return_from_user_request_generat, __pyx_t_1) < 0) __PYX_ERR(1, 140, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;

  /* "src/python/grpcio/grpc/_cython/_cygrpc/fork_posix.pyx.pxi":146
 * 
 * 
 * def get_fork_epoch():             # <<<<<<<<<<<<<<
 *     return _fork_state.fork_epoch
 * 
 */
  __pyx_t_1 = PyCFunction_NewEx(&__pyx_mdef_4grpc_7_cython_6cygrpc_99get_fork_epoch, NULL, __pyx_n_s_grpc__cython_cygrpc); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 146, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  if (PyDict_SetItem(__pyx_d, __pyx_n_s_get_fork_epoch, __pyx_t_1) < 0) __PYX_ERR(1, 146, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;

  /* "src/python/grpcio/grpc/_cython/_cygrpc/fork_posix.pyx.pxi":150
 * 
 * 
 * def is_fork_support_enabled():             # <<<<<<<<<<<<<<
 *     return _GRPC_ENABLE_FORK_SUPPORT
 * 
 */
  __pyx_t_1 = PyCFunction_NewEx(&__pyx_mdef_4grpc_7_cython_6cygrpc_101is_fork_support_enabled, NULL, __pyx_n_s_grpc__cython_cygrpc); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 150, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  if (PyDict_SetItem(__pyx_d, __pyx_n_s_is_fork_support_enabled, __pyx_t_1) < 0) __PYX_ERR(1, 150, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;

  /* "src/python/grpcio/grpc/_cython/_cygrpc/fork_posix.pyx.pxi":154
 * 
 * 
 * def fork_register_channel(channel):             # <<<<<<<<<<<<<<
 *     if _GRPC_ENABLE_FORK_SUPPORT:
 *         _fork_state.channels.add(channel)
 */
  __pyx_t_1 = PyCFunction_NewEx(&__pyx_mdef_4grpc_7_cython_6cygrpc_103fork_register_channel, NULL, __pyx_n_s_grpc__cython_cygrpc); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 154, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  if (PyDict_SetItem(__pyx_d, __pyx_n_s_fork_register_channel, __pyx_t_1) < 0) __PYX_ERR(1, 154, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;

  /* "src/python/grpcio/grpc/_cython/_cygrpc/fork_posix.pyx.pxi":159
 * 
 * 
 * def fork_unregister_channel(channel):             # <<<<<<<<<<<<<<
 *     if _GRPC_ENABLE_FORK_SUPPORT:
 *         _fork_state.channels.discard(channel)
 */
  __pyx_t_1 = PyCFunction_NewEx(&__pyx_mdef_4grpc_7_cython_6cygrpc_105fork_unregister_channel, NULL, __pyx_n_s_grpc__cython_cygrpc); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 159, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  if (PyDict_SetItem(__pyx_d, __pyx_n_s_fork_unregister_channel, __pyx_t_1) < 0) __PYX_ERR(1, 159, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;

  /* "src/python/grpcio/grpc/_cython/_cygrpc/fork_posix.pyx.pxi":164
 * 
 * 
 * class _ActiveThreadCount(object):             # <<<<<<<<<<<<<<
 *     def __init__(self):
 *         self._num_active_threads = 0
 */
  __pyx_t_1 = __Pyx_CalculateMetaclass(NULL, __pyx_tuple__310); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 164, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_t_7 = __Pyx_Py3MetaclassPrepare(__pyx_t_1, __pyx_tuple__310, __pyx_n_s_ActiveThreadCount, __pyx_n_s_ActiveThreadCount, (PyObject *) NULL, __pyx_n_s_grpc__cython_cygrpc, (PyObject *) NULL); if (unlikely(!__pyx_t_7)) __PYX_ERR(1, 164, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_7);

  /* "src/python/grpcio/grpc/_cython/_cygrpc/fork_posix.pyx.pxi":165
 * 
 * class _ActiveThreadCount(object):
 *     def __init__(self):             # <<<<<<<<<<<<<<
 *         self._num_active_threads = 0
 *         self._condition = threading.Condition()
 */
  __pyx_t_6 = __Pyx_CyFunction_New(&__pyx_mdef_4grpc_7_cython_6cygrpc_18_ActiveThreadCount_1__init__, 0, __pyx_n_s_ActiveThreadCount___init, NULL, __pyx_n_s_grpc__cython_cygrpc, __pyx_d, ((PyObject *)__pyx_codeobj__312)); if (unlikely(!__pyx_t_6)) __PYX_ERR(1, 165, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_6);
  if (__Pyx_SetNameInClass(__pyx_t_7, __pyx_n_s_init, __pyx_t_6) < 0) __PYX_ERR(1, 165, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;

  /* "src/python/grpcio/grpc/_cython/_cygrpc/fork_posix.pyx.pxi":169
 *         self._condition = threading.Condition()
 * 
 *     def increment(self):             # <<<<<<<<<<<<<<
 *         with self._condition:
 *             self._num_active_threads += 1
 */
  __pyx_t_6 = __Pyx_CyFunction_New(&__pyx_mdef_4grpc_7_cython_6cygrpc_18_ActiveThreadCount_3increment, 0, __pyx_n_s_ActiveThreadCount_increment, NULL, __pyx_n_s_grpc__cython_cygrpc, __pyx_d, ((PyObject *)__pyx_codeobj__314)); if (unlikely(!__pyx_t_6)) __PYX_ERR(1, 169, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_6);
  if (__Pyx_SetNameInClass(__pyx_t_7, __pyx_n_s_increment, __pyx_t_6) < 0) __PYX_ERR(1, 169, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;

  /* "src/python/grpcio/grpc/_cython/_cygrpc/fork_posix.pyx.pxi":173
 *             self._num_active_threads += 1
 * 
 *     def decrement(self):             # <<<<<<<<<<<<<<
 *         with self._condition:
 *             self._num_active_threads -= 1
 */
  __pyx_t_6 = __Pyx_CyFunction_New(&__pyx_mdef_4grpc_7_cython_6cygrpc_18_ActiveThreadCount_5decrement, 0, __pyx_n_s_ActiveThreadCount_decrement, NULL, __pyx_n_s_grpc__cython_cygrpc, __pyx_d, ((PyObject *)__pyx_codeobj__316)); if (unlikely(!__pyx_t_6)) __PYX_ERR(1, 173, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_6);
  if (__Pyx_SetNameInClass(__pyx_t_7, __pyx_n_s_decrement, __pyx_t_6) < 0) __PYX_ERR(1, 173, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;

  /* "src/python/grpcio/grpc/_cython/_cygrpc/fork_posix.pyx.pxi":179
 *                 self._condition.notify_all()
 * 
 *     def await_zero_threads(self, timeout_secs):             # <<<<<<<<<<<<<<
 *         end_time = time.time() + timeout_secs
 *         wait_time = timeout_secs
 */
  __pyx_t_6 = __Pyx_CyFunction_New(&__pyx_mdef_4grpc_7_cython_6cygrpc_18_ActiveThreadCount_7await_zero_threads, 0, __pyx_n_s_ActiveThreadCount_await_zero_th, NULL, __pyx_n_s_grpc__cython_cygrpc, __pyx_d, ((PyObject *)__pyx_codeobj__318)); if (unlikely(!__pyx_t_6)) __PYX_ERR(1, 179, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_6);
  if (__Pyx_SetNameInClass(__pyx_t_7, __pyx_n_s_await_zero_threads, __pyx_t_6) < 0) __PYX_ERR(1, 179, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;

  /* "src/python/grpcio/grpc/_cython/_cygrpc/fork_posix.pyx.pxi":164
 * 
 * 
 * class _ActiveThreadCount(object):             # <<<<<<<<<<<<<<
 *     def __init__(self):
 *         self._num_active_threads = 0
 */
  __pyx_t_6 = __Pyx_Py3ClassCreate(__pyx_t_1, __pyx_n_s_ActiveThreadCount, __pyx_tuple__310, __pyx_t_7, NULL, 0, 1); if (unlikely(!__pyx_t_6)) __PYX_ERR(1, 164, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_6);
  if (PyDict_SetItem(__pyx_d, __pyx_n_s_ActiveThreadCount, __pyx_t_6) < 0) __PYX_ERR(1, 164, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
  __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;

  /* "src/python/grpcio/grpc/_cython/_cygrpc/fork_posix.pyx.pxi":196
 * 
 * 
 * class _ForkState(object):             # <<<<<<<<<<<<<<
 *     def __init__(self):
 *         self.fork_in_progress_condition = threading.Condition()
 */
  __pyx_t_1 = __Pyx_CalculateMetaclass(NULL, __pyx_tuple__319); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 196, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_t_7 = __Pyx_Py3MetaclassPrepare(__pyx_t_1, __pyx_tuple__319, __pyx_n_s_ForkState, __pyx_n_s_ForkState, (PyObject *) NULL, __pyx_n_s_grpc__cython_cygrpc, (PyObject *) NULL); if (unlikely(!__pyx_t_7)) __PYX_ERR(1, 196, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_7);

  /* "src/python/grpcio/grpc/_cython/_cygrpc/fork_posix.pyx.pxi":197
 * 
 * class _ForkState(object):
 *     def __init__(self):             # <<<<<<<<<<<<<<
 *         self.fork_in_progress_condition = threading.Condition()
 *         self.fork_in_progress = False
 */
  __pyx_t_6 = __Pyx_CyFunction_New(&__pyx_mdef_4grpc_7_cython_6cygrpc_10_ForkState_1__init__, 0, __pyx_n_s_ForkState___init, NULL, __pyx_n_s_grpc__cython_cygrpc, __pyx_d, ((PyObject *)__pyx_codeobj__321)); if (unlikely(!__pyx_t_6)) __PYX_ERR(1, 197, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_6);
  if (__Pyx_SetNameInClass(__pyx_t_7, __pyx_n_s_init, __pyx_t_6) < 0) __PYX_ERR(1, 197, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;

  /* "src/python/grpcio/grpc/_cython/_cygrpc/fork_posix.pyx.pxi":196
 * 
 * 
 * class _ForkState(object):             # <<<<<<<<<<<<<<
 *     def __init__(self):
 *         self.fork_in_progress_condition = threading.Condition()
 */
  __pyx_t_6 = __Pyx_Py3ClassCreate(__pyx_t_1, __pyx_n_s_ForkState, __pyx_tuple__319, __pyx_t_7, NULL, 0, 1); if (unlikely(!__pyx_t_6)) __PYX_ERR(1, 196, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_6);
  if (PyDict_SetItem(__pyx_d, __pyx_n_s_ForkState, __pyx_t_6) < 0) __PYX_ERR(1, 196, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
  __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;

  /* "src/python/grpcio/grpc/_cython/_cygrpc/fork_posix.pyx.pxi":208
 * 
 * 
 * _fork_state = _ForkState()             # <<<<<<<<<<<<<<
 */
  __Pyx_GetModuleGlobalName(__pyx_t_1, __pyx_n_s_ForkState); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 208, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_t_7 = __Pyx_PyObject_CallNoArg(__pyx_t_1); if (unlikely(!__pyx_t_7)) __PYX_ERR(1, 208, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_7);
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  if (PyDict_SetItem(__pyx_d, __pyx_n_s_fork_state, __pyx_t_7) < 0) __PYX_ERR(1, 208, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;

  /* "src/python/grpcio/grpc/_cython/_cygrpc/aio/common.pyx.pxi":55
 * 
 * 
 * class _EOF:             # <<<<<<<<<<<<<<
 * 
 *     def __bool__(self):
 */
  __pyx_t_7 = __Pyx_Py3MetaclassPrepare((PyObject *) NULL, __pyx_empty_tuple, __pyx_n_s_EOF_2, __pyx_n_s_EOF_2, (PyObject *) NULL, __pyx_n_s_grpc__cython_cygrpc, (PyObject *) NULL); if (unlikely(!__pyx_t_7)) __PYX_ERR(7, 55, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_7);

  /* "src/python/grpcio/grpc/_cython/_cygrpc/aio/common.pyx.pxi":57
 * class _EOF:
 * 
 *     def __bool__(self):             # <<<<<<<<<<<<<<
 *         return False
 * 
 */
  __pyx_t_1 = __Pyx_CyFunction_New(&__pyx_mdef_4grpc_7_cython_6cygrpc_4_EOF_1__bool__, 0, __pyx_n_s_EOF___bool, NULL, __pyx_n_s_grpc__cython_cygrpc, __pyx_d, ((PyObject *)__pyx_codeobj__323)); if (unlikely(!__pyx_t_1)) __PYX_ERR(7, 57, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  if (__Pyx_SetNameInClass(__pyx_t_7, __pyx_n_s_bool, __pyx_t_1) < 0) __PYX_ERR(7, 57, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;

  /* "src/python/grpcio/grpc/_cython/_cygrpc/aio/common.pyx.pxi":60
 *         return False
 * 
 *     def __len__(self):             # <<<<<<<<<<<<<<
 *         return 0
 * 
 */
  __pyx_t_1 = __Pyx_CyFunction_New(&__pyx_mdef_4grpc_7_cython_6cygrpc_4_EOF_3__len__, 0, __pyx_n_s_EOF___len, NULL, __pyx_n_s_grpc__cython_cygrpc, __pyx_d, ((PyObject *)__pyx_codeobj__325)); if (unlikely(!__pyx_t_1)) __PYX_ERR(7, 60, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  if (__Pyx_SetNameInClass(__pyx_t_7, __pyx_n_s_len, __pyx_t_1) < 0) __PYX_ERR(7, 60, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;

  /* "src/python/grpcio/grpc/_cython/_cygrpc/aio/common.pyx.pxi":63
 *         return 0
 * 
 *     def _repr(self) -> str:             # <<<<<<<<<<<<<<
 *         return '<grpc.aio.EOF>'
 * 
 */
  __pyx_t_1 = __Pyx_PyDict_NewPresized(1); if (unlikely(!__pyx_t_1)) __PYX_ERR(7, 63, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  if (PyDict_SetItem(__pyx_t_1, __pyx_n_s_return, __pyx_n_u_str) < 0) __PYX_ERR(7, 63, __pyx_L1_error)
  __pyx_t_6 = __Pyx_CyFunction_New(&__pyx_mdef_4grpc_7_cython_6cygrpc_4_EOF_5_repr, 0, __pyx_n_s_EOF__repr, NULL, __pyx_n_s_grpc__cython_cygrpc, __pyx_d, ((PyObject *)__pyx_codeobj__327)); if (unlikely(!__pyx_t_6)) __PYX_ERR(7, 63, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_6);
  __Pyx_CyFunction_SetAnnotationsDict(__pyx_t_6, __pyx_t_1);
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  if (__Pyx_SetNameInClass(__pyx_t_7, __pyx_n_s_repr, __pyx_t_6) < 0) __PYX_ERR(7, 63, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;

  /* "src/python/grpcio/grpc/_cython/_cygrpc/aio/common.pyx.pxi":66
 *         return '<grpc.aio.EOF>'
 * 
 *     def __repr__(self) -> str:             # <<<<<<<<<<<<<<
 *         return self._repr()
 * 
 */
  __pyx_t_6 = __Pyx_PyDict_NewPresized(1); if (unlikely(!__pyx_t_6)) __PYX_ERR(7, 66, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_6);
  if (PyDict_SetItem(__pyx_t_6, __pyx_n_s_return, __pyx_n_u_str) < 0) __PYX_ERR(7, 66, __pyx_L1_error)
  __pyx_t_1 = __Pyx_CyFunction_New(&__pyx_mdef_4grpc_7_cython_6cygrpc_4_EOF_7__repr__, 0, __pyx_n_s_EOF___repr, NULL, __pyx_n_s_grpc__cython_cygrpc, __pyx_d, ((PyObject *)__pyx_codeobj__329)); if (unlikely(!__pyx_t_1)) __PYX_ERR(7, 66, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_CyFunction_SetAnnotationsDict(__pyx_t_1, __pyx_t_6);
  __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
  if (__Pyx_SetNameInClass(__pyx_t_7, __pyx_n_s_repr_2, __pyx_t_1) < 0) __PYX_ERR(7, 66, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;

  /* "src/python/grpcio/grpc/_cython/_cygrpc/aio/common.pyx.pxi":69
 *         return self._repr()
 * 
 *     def __str__(self) -> str:             # <<<<<<<<<<<<<<
 *         return self._repr()
 * 
 */
  __pyx_t_1 = __Pyx_PyDict_NewPresized(1); if (unlikely(!__pyx_t_1)) __PYX_ERR(7, 69, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  if (PyDict_SetItem(__pyx_t_1, __pyx_n_s_return, __pyx_n_u_str) < 0) __PYX_ERR(7, 69, __pyx_L1_error)
  __pyx_t_6 = __Pyx_CyFunction_New(&__pyx_mdef_4grpc_7_cython_6cygrpc_4_EOF_9__str__, 0, __pyx_n_s_EOF___str, NULL, __pyx_n_s_grpc__cython_cygrpc, __pyx_d, ((PyObject *)__pyx_codeobj__331)); if (unlikely(!__pyx_t_6)) __PYX_ERR(7, 69, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_6);
  __Pyx_CyFunction_SetAnnotationsDict(__pyx_t_6, __pyx_t_1);
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  if (__Pyx_SetNameInClass(__pyx_t_7, __pyx_n_s_str_2, __pyx_t_6) < 0) __PYX_ERR(7, 69, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;

  /* "src/python/grpcio/grpc/_cython/_cygrpc/aio/common.pyx.pxi":55
 * 
 * 
 * class _EOF:             # <<<<<<<<<<<<<<
 * 
 *     def __bool__(self):
 */
  __pyx_t_6 = __Pyx_Py3ClassCreate(((PyObject*)&__Pyx_DefaultClassType), __pyx_n_s_EOF_2, __pyx_empty_tuple, __pyx_t_7, NULL, 0, 1); if (unlikely(!__pyx_t_6)) __PYX_ERR(7, 55, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_6);
  if (PyDict_SetItem(__pyx_d, __pyx_n_s_EOF_2, __pyx_t_6) < 0) __PYX_ERR(7, 55, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
  __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;

  /* "src/python/grpcio/grpc/_cython/_cygrpc/aio/common.pyx.pxi":73
 * 
 * 
 * EOF = _EOF()             # <<<<<<<<<<<<<<
 * 
 * _COMPRESSION_METADATA_STRING_MAPPING = {
 */
  __Pyx_GetModuleGlobalName(__pyx_t_7, __pyx_n_s_EOF_2); if (unlikely(!__pyx_t_7)) __PYX_ERR(7, 73, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_7);
  __pyx_t_6 = __Pyx_PyObject_CallNoArg(__pyx_t_7); if (unlikely(!__pyx_t_6)) __PYX_ERR(7, 73, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_6);
  __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
  if (PyDict_SetItem(__pyx_d, __pyx_n_s_EOF, __pyx_t_6) < 0) __PYX_ERR(7, 73, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;

  /* "src/python/grpcio/grpc/_cython/_cygrpc/aio/common.pyx.pxi":76
 * 
 * _COMPRESSION_METADATA_STRING_MAPPING = {
 *     CompressionAlgorithm.none: 'identity',             # <<<<<<<<<<<<<<
 *     CompressionAlgorithm.deflate: 'deflate',
 *     CompressionAlgorithm.gzip: 'gzip',
 */
  __pyx_t_6 = __Pyx_PyDict_NewPresized(3); if (unlikely(!__pyx_t_6)) __PYX_ERR(7, 76, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_6);
  __Pyx_GetModuleGlobalName(__pyx_t_7, __pyx_n_s_CompressionAlgorithm); if (unlikely(!__pyx_t_7)) __PYX_ERR(7, 76, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_7);
  __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_t_7, __pyx_n_s_none); if (unlikely(!__pyx_t_1)) __PYX_ERR(7, 76, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
  if (PyDict_SetItem(__pyx_t_6, __pyx_t_1, __pyx_n_s_identity) < 0) __PYX_ERR(7, 76, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;

  /* "src/python/grpcio/grpc/_cython/_cygrpc/aio/common.pyx.pxi":77
 * _COMPRESSION_METADATA_STRING_MAPPING = {
 *     CompressionAlgorithm.none: 'identity',
 *     CompressionAlgorithm.deflate: 'deflate',             # <<<<<<<<<<<<<<
 *     CompressionAlgorithm.gzip: 'gzip',
 * }
 */
  __Pyx_GetModuleGlobalName(__pyx_t_1, __pyx_n_s_CompressionAlgorithm); if (unlikely(!__pyx_t_1)) __PYX_ERR(7, 77, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_t_7 = __Pyx_PyObject_GetAttrStr(__pyx_t_1, __pyx_n_s_deflate); if (unlikely(!__pyx_t_7)) __PYX_ERR(7, 77, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_7);
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  if (PyDict_SetItem(__pyx_t_6, __pyx_t_7, __pyx_n_s_deflate) < 0) __PYX_ERR(7, 76, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;

  /* "src/python/grpcio/grpc/_cython/_cygrpc/aio/common.pyx.pxi":78
 *     CompressionAlgorithm.none: 'identity',
 *     CompressionAlgorithm.deflate: 'deflate',
 *     CompressionAlgorithm.gzip: 'gzip',             # <<<<<<<<<<<<<<
 * }
 * 
 */
  __Pyx_GetModuleGlobalName(__pyx_t_7, __pyx_n_s_CompressionAlgorithm); if (unlikely(!__pyx_t_7)) __PYX_ERR(7, 78, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_7);
  __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_t_7, __pyx_n_s_gzip); if (unlikely(!__pyx_t_1)) __PYX_ERR(7, 78, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
  if (PyDict_SetItem(__pyx_t_6, __pyx_t_1, __pyx_n_s_gzip) < 0) __PYX_ERR(7, 76, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  if (PyDict_SetItem(__pyx_d, __pyx_n_s_COMPRESSION_METADATA_STRING_MAP, __pyx_t_6) < 0) __PYX_ERR(7, 75, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;

  /* "src/python/grpcio/grpc/_cython/_cygrpc/aio/common.pyx.pxi":81
 * }
 * 
 * class BaseError(Exception):             # <<<<<<<<<<<<<<
 *     """The base class for exceptions generated by gRPC AsyncIO stack."""
 * 
 */
  __pyx_t_6 = PyTuple_New(1); if (unlikely(!__pyx_t_6)) __PYX_ERR(7, 81, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_6);
  __Pyx_INCREF(((PyObject *)(&((PyTypeObject*)PyExc_Exception)[0])));
  __Pyx_GIVEREF(((PyObject *)(&((PyTypeObject*)PyExc_Exception)[0])));
  PyTuple_SET_ITEM(__pyx_t_6, 0, ((PyObject *)(&((PyTypeObject*)PyExc_Exception)[0])));
  __pyx_t_1 = __Pyx_CalculateMetaclass(NULL, __pyx_t_6); if (unlikely(!__pyx_t_1)) __PYX_ERR(7, 81, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_t_7 = __Pyx_Py3MetaclassPrepare(__pyx_t_1, __pyx_t_6, __pyx_n_s_BaseError, __pyx_n_s_BaseError, (PyObject *) NULL, __pyx_n_s_grpc__cython_cygrpc, __pyx_kp_s_The_base_class_for_exceptions_ge); if (unlikely(!__pyx_t_7)) __PYX_ERR(7, 81, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_7);
  __pyx_t_9 = __Pyx_Py3ClassCreate(__pyx_t_1, __pyx_n_s_BaseError, __pyx_t_6, __pyx_t_7, NULL, 0, 1); if (unlikely(!__pyx_t_9)) __PYX_ERR(7, 81, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_9);
  if (PyDict_SetItem(__pyx_d, __pyx_n_s_BaseError, __pyx_t_9) < 0) __PYX_ERR(7, 81, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0;
  __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;

  /* "src/python/grpcio/grpc/_cython/_cygrpc/aio/common.pyx.pxi":85
 * 
 * 
 * class UsageError(BaseError):             # <<<<<<<<<<<<<<
 *     """Raised when the usage of API by applications is inappropriate.
 * 
 */
  __Pyx_GetModuleGlobalName(__pyx_t_6, __pyx_n_s_BaseError); if (unlikely(!__pyx_t_6)) __PYX_ERR(7, 85, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_6);
  __pyx_t_1 = PyTuple_New(1); if (unlikely(!__pyx_t_1)) __PYX_ERR(7, 85, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_GIVEREF(__pyx_t_6);
  PyTuple_SET_ITEM(__pyx_t_1, 0, __pyx_t_6);
  __pyx_t_6 = 0;
  __pyx_t_6 = __Pyx_CalculateMetaclass(NULL, __pyx_t_1); if (unlikely(!__pyx_t_6)) __PYX_ERR(7, 85, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_6);
  __pyx_t_7 = __Pyx_Py3MetaclassPrepare(__pyx_t_6, __pyx_t_1, __pyx_n_s_UsageError, __pyx_n_s_UsageError, (PyObject *) NULL, __pyx_n_s_grpc__cython_cygrpc, __pyx_kp_s_Raised_when_the_usage_of_API_by); if (unlikely(!__pyx_t_7)) __PYX_ERR(7, 85, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_7);
  __pyx_t_9 = __Pyx_Py3ClassCreate(__pyx_t_6, __pyx_n_s_UsageError, __pyx_t_1, __pyx_t_7, NULL, 0, 1); if (unlikely(!__pyx_t_9)) __PYX_ERR(7, 85, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_9);
  if (PyDict_SetItem(__pyx_d, __pyx_n_s_UsageError, __pyx_t_9) < 0) __PYX_ERR(7, 85, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0;
  __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
  __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;

  /* "src/python/grpcio/grpc/_cython/_cygrpc/aio/common.pyx.pxi":94
 * 
 * 
 * class AbortError(BaseError):             # <<<<<<<<<<<<<<
 *     """Raised when calling abort in servicer methods.
 * 
 */
  __Pyx_GetModuleGlobalName(__pyx_t_1, __pyx_n_s_BaseError); if (unlikely(!__pyx_t_1)) __PYX_ERR(7, 94, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_t_6 = PyTuple_New(1); if (unlikely(!__pyx_t_6)) __PYX_ERR(7, 94, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_6);
  __Pyx_GIVEREF(__pyx_t_1);
  PyTuple_SET_ITEM(__pyx_t_6, 0, __pyx_t_1);
  __pyx_t_1 = 0;
  __pyx_t_1 = __Pyx_CalculateMetaclass(NULL, __pyx_t_6); if (unlikely(!__pyx_t_1)) __PYX_ERR(7, 94, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_t_7 = __Pyx_Py3MetaclassPrepare(__pyx_t_1, __pyx_t_6, __pyx_n_s_AbortError, __pyx_n_s_AbortError, (PyObject *) NULL, __pyx_n_s_grpc__cython_cygrpc, __pyx_kp_s_Raised_when_calling_abort_in_ser); if (unlikely(!__pyx_t_7)) __PYX_ERR(7, 94, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_7);
  __pyx_t_9 = __Pyx_Py3ClassCreate(__pyx_t_1, __pyx_n_s_AbortError, __pyx_t_6, __pyx_t_7, NULL, 0, 1); if (unlikely(!__pyx_t_9)) __PYX_ERR(7, 94, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_9);
  if (PyDict_SetItem(__pyx_d, __pyx_n_s_AbortError, __pyx_t_9) < 0) __PYX_ERR(7, 94, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0;
  __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;

  /* "src/python/grpcio/grpc/_cython/_cygrpc/aio/common.pyx.pxi":102
 * 
 * 
 * class InternalError(BaseError):             # <<<<<<<<<<<<<<
 *     """Raised upon unexpected errors in native code."""
 * 
 */
  __Pyx_GetModuleGlobalName(__pyx_t_6, __pyx_n_s_BaseError); if (unlikely(!__pyx_t_6)) __PYX_ERR(7, 102, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_6);
  __pyx_t_1 = PyTuple_New(1); if (unlikely(!__pyx_t_1)) __PYX_ERR(7, 102, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_GIVEREF(__pyx_t_6);
  PyTuple_SET_ITEM(__pyx_t_1, 0, __pyx_t_6);
  __pyx_t_6 = 0;
  __pyx_t_6 = __Pyx_CalculateMetaclass(NULL, __pyx_t_1); if (unlikely(!__pyx_t_6)) __PYX_ERR(7, 102, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_6);
  __pyx_t_7 = __Pyx_Py3MetaclassPrepare(__pyx_t_6, __pyx_t_1, __pyx_n_s_InternalError, __pyx_n_s_InternalError, (PyObject *) NULL, __pyx_n_s_grpc__cython_cygrpc, __pyx_kp_s_Raised_upon_unexpected_errors_in); if (unlikely(!__pyx_t_7)) __PYX_ERR(7, 102, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_7);
  __pyx_t_9 = __Pyx_Py3ClassCreate(__pyx_t_6, __pyx_n_s_InternalError, __pyx_t_1, __pyx_t_7, NULL, 0, 1); if (unlikely(!__pyx_t_9)) __PYX_ERR(7, 102, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_9);
  if (PyDict_SetItem(__pyx_d, __pyx_n_s_InternalError, __pyx_t_9) < 0) __PYX_ERR(7, 102, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0;
  __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
  __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;

  /* "src/python/grpcio/grpc/_cython/_cygrpc/aio/common.pyx.pxi":106
 * 
 * 
 * def schedule_coro_threadsafe(object coro, object loop):             # <<<<<<<<<<<<<<
 *     try:
 *         return loop.create_task(coro)
 */
  __pyx_t_1 = PyCFunction_NewEx(&__pyx_mdef_4grpc_7_cython_6cygrpc_107schedule_coro_threadsafe, NULL, __pyx_n_s_grpc__cython_cygrpc); if (unlikely(!__pyx_t_1)) __PYX_ERR(7, 106, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  if (PyDict_SetItem(__pyx_d, __pyx_n_s_schedule_coro_threadsafe, __pyx_t_1) < 0) __PYX_ERR(7, 106, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;

  /* "src/python/grpcio/grpc/_cython/_cygrpc/aio/common.pyx.pxi":119
 * 
 * 
 * def async_generator_to_generator(object agen, object loop):             # <<<<<<<<<<<<<<
 *     """Converts an async generator into generator."""
 *     try:
 */
  __pyx_t_1 = PyCFunction_NewEx(&__pyx_mdef_4grpc_7_cython_6cygrpc_109async_generator_to_generator, NULL, __pyx_n_s_grpc__cython_cygrpc); if (unlikely(!__pyx_t_1)) __PYX_ERR(7, 119, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  if (PyDict_SetItem(__pyx_d, __pyx_n_s_async_generator_to_generator, __pyx_t_1) < 0) __PYX_ERR(7, 119, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;

  /* "src/python/grpcio/grpc/_cython/_cygrpc/aio/common.pyx.pxi":137
 * 
 * 
 * async def generator_to_async_generator(object gen, object loop, object thread_pool):             # <<<<<<<<<<<<<<
 *     """Converts a generator into async generator.
 * 
 */
  __pyx_t_1 = PyCFunction_NewEx(&__pyx_mdef_4grpc_7_cython_6cygrpc_112generator_to_async_generator, NULL, __pyx_n_s_grpc__cython_cygrpc); if (unlikely(!__pyx_t_1)) __PYX_ERR(7, 137, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  if (PyDict_SetItem(__pyx_d, __pyx_n_s_generator_to_async_generator, __pyx_t_1) < 0) __PYX_ERR(7, 137, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;

  /* "src/python/grpcio/grpc/_cython/_cygrpc/aio/common.pyx.pxi":172
 * 
 * 
 * if PY_MAJOR_VERSION >= 3 and PY_MINOR_VERSION >= 7:             # <<<<<<<<<<<<<<
 *     def get_working_loop():
 *         """Returns a running event loop.
 */
  __pyx_t_10 = ((PY_MAJOR_VERSION >= 3) != 0);
  if (__pyx_t_10) {
  } else {
    __pyx_t_8 = __pyx_t_10;
    goto __pyx_L10_bool_binop_done;
  }
  __pyx_t_10 = ((PY_MINOR_VERSION >= 7) != 0);
  __pyx_t_8 = __pyx_t_10;
  __pyx_L10_bool_binop_done:;
  if (__pyx_t_8) {

    /* "src/python/grpcio/grpc/_cython/_cygrpc/aio/common.pyx.pxi":173
 * 
 * if PY_MAJOR_VERSION >= 3 and PY_MINOR_VERSION >= 7:
 *     def get_working_loop():             # <<<<<<<<<<<<<<
 *         """Returns a running event loop.
 * 
 */
    __pyx_t_1 = PyCFunction_NewEx(&__pyx_mdef_4grpc_7_cython_6cygrpc_115get_working_loop, NULL, __pyx_n_s_grpc__cython_cygrpc); if (unlikely(!__pyx_t_1)) __PYX_ERR(7, 173, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_1);
    if (PyDict_SetItem(__pyx_d, __pyx_n_s_get_working_loop, __pyx_t_1) < 0) __PYX_ERR(7, 173, __pyx_L1_error)
    __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;

    /* "src/python/grpcio/grpc/_cython/_cygrpc/aio/common.pyx.pxi":172
 * 
 * 
 * if PY_MAJOR_VERSION >= 3 and PY_MINOR_VERSION >= 7:             # <<<<<<<<<<<<<<
 *     def get_working_loop():
 *         """Returns a running event loop.
 */
    goto __pyx_L9;
  }

  /* "src/python/grpcio/grpc/_cython/_cygrpc/aio/common.pyx.pxi":184
 *             return asyncio.get_event_loop()
 * else:
 *     def get_working_loop():             # <<<<<<<<<<<<<<
 *         """Returns a running event loop."""
 *         return asyncio.get_event_loop()
 */
  /*else*/ {
    __pyx_t_1 = PyCFunction_NewEx(&__pyx_mdef_4grpc_7_cython_6cygrpc_117get_working_loop, NULL, __pyx_n_s_grpc__cython_cygrpc); if (unlikely(!__pyx_t_1)) __PYX_ERR(7, 184, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_1);
    if (PyDict_SetItem(__pyx_d, __pyx_n_s_get_working_loop, __pyx_t_1) < 0) __PYX_ERR(7, 184, __pyx_L1_error)
    __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  }
  __pyx_L9:;

  /* "src/python/grpcio/grpc/_cython/_cygrpc/aio/completion_queue.pyx.pxi":15
 * # limitations under the License.
 * 
 * import socket             # <<<<<<<<<<<<<<
 * 
 * cdef gpr_timespec _GPR_INF_FUTURE = gpr_inf_future(GPR_CLOCK_REALTIME)
 */
  __pyx_t_1 = __Pyx_Import(__pyx_n_s_socket, 0, -1); if (unlikely(!__pyx_t_1)) __PYX_ERR(8, 15, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  if (PyDict_SetItem(__pyx_d, __pyx_n_s_socket, __pyx_t_1) < 0) __PYX_ERR(8, 15, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;

  /* "src/python/grpcio/grpc/_cython/_cygrpc/aio/completion_queue.pyx.pxi":17
 * import socket
 * 
 * cdef gpr_timespec _GPR_INF_FUTURE = gpr_inf_future(GPR_CLOCK_REALTIME)             # <<<<<<<<<<<<<<
 * cdef float _POLL_AWAKE_INTERVAL_S = 0.2
 * 
 */
  __pyx_v_4grpc_7_cython_6cygrpc__GPR_INF_FUTURE = gpr_inf_future(GPR_CLOCK_REALTIME);

  /* "src/python/grpcio/grpc/_cython/_cygrpc/aio/completion_queue.pyx.pxi":18
 * 
 * cdef gpr_timespec _GPR_INF_FUTURE = gpr_inf_future(GPR_CLOCK_REALTIME)
 * cdef float _POLL_AWAKE_INTERVAL_S = 0.2             # <<<<<<<<<<<<<<
 * 
 * # This bool indicates if the event loop impl can monitor a given fd, or has
 */
  __pyx_v_4grpc_7_cython_6cygrpc__POLL_AWAKE_INTERVAL_S = 0.2;

  /* "src/python/grpcio/grpc/_cython/_cygrpc/aio/completion_queue.pyx.pxi":22
 * # This bool indicates if the event loop impl can monitor a given fd, or has
 * # loop.add_reader method.
 * cdef bint _has_fd_monitoring = True             # <<<<<<<<<<<<<<
 * 
 * IF UNAME_SYSNAME == "Windows":
 */
  __pyx_v_4grpc_7_cython_6cygrpc__has_fd_monitoring = 1;

  /* "src/python/grpcio/grpc/_cython/_cygrpc/aio/completion_queue.pyx.pxi":34
 * 
 * 
 * def _handle_callback_wrapper(CallbackWrapper callback_wrapper, int success):             # <<<<<<<<<<<<<<
 *     CallbackWrapper.functor_run(callback_wrapper.c_functor(), success)
 * 
 */
  __pyx_t_1 = PyCFunction_NewEx(&__pyx_mdef_4grpc_7_cython_6cygrpc_119_handle_callback_wrapper, NULL, __pyx_n_s_grpc__cython_cygrpc); if (unlikely(!__pyx_t_1)) __PYX_ERR(8, 34, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  if (PyDict_SetItem(__pyx_d, __pyx_n_s_handle_callback_wrapper, __pyx_t_1) < 0) __PYX_ERR(8, 34, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;

  /* "src/python/grpcio/grpc/_cython/_cygrpc/aio/callback_common.pyx.pxi":70
 *     'grpc_completion_queue_shutdown',
 *     'Unknown',
 *     InternalError)             # <<<<<<<<<<<<<<
 * 
 * 
 */
  __Pyx_GetModuleGlobalName(__pyx_t_1, __pyx_n_s_InternalError); if (unlikely(!__pyx_t_1)) __PYX_ERR(31, 70, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);

  /* "src/python/grpcio/grpc/_cython/_cygrpc/aio/callback_common.pyx.pxi":67
 * 
 * 
 * cdef CallbackFailureHandler CQ_SHUTDOWN_FAILURE_HANDLER = CallbackFailureHandler(             # <<<<<<<<<<<<<<
 *     'grpc_completion_queue_shutdown',
 *     'Unknown',
 */
  __pyx_t_6 = PyTuple_New(3); if (unlikely(!__pyx_t_6)) __PYX_ERR(31, 67, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_6);
  __Pyx_INCREF(__pyx_n_s_grpc_completion_queue_shutdown);
  __Pyx_GIVEREF(__pyx_n_s_grpc_completion_queue_shutdown);
  PyTuple_SET_ITEM(__pyx_t_6, 0, __pyx_n_s_grpc_completion_queue_shutdown);
  __Pyx_INCREF(__pyx_n_s_Unknown);
  __Pyx_GIVEREF(__pyx_n_s_Unknown);
  PyTuple_SET_ITEM(__pyx_t_6, 1, __pyx_n_s_Unknown);
  __Pyx_GIVEREF(__pyx_t_1);
  PyTuple_SET_ITEM(__pyx_t_6, 2, __pyx_t_1);
  __pyx_t_1 = 0;
  __pyx_t_1 = __Pyx_PyObject_Call(((PyObject *)__pyx_ptype_4grpc_7_cython_6cygrpc_CallbackFailureHandler), __pyx_t_6, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(31, 67, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
  __Pyx_XGOTREF(((PyObject *)__pyx_v_4grpc_7_cython_6cygrpc_CQ_SHUTDOWN_FAILURE_HANDLER));
  __Pyx_DECREF_SET(__pyx_v_4grpc_7_cython_6cygrpc_CQ_SHUTDOWN_FAILURE_HANDLER, ((struct __pyx_obj_4grpc_7_cython_6cygrpc_CallbackFailureHandler *)__pyx_t_1));
  __Pyx_GIVEREF(__pyx_t_1);
  __pyx_t_1 = 0;

  /* "src/python/grpcio/grpc/_cython/_cygrpc/aio/callback_common.pyx.pxi":73
 * 
 * 
 * class ExecuteBatchError(InternalError):             # <<<<<<<<<<<<<<
 *     """Raised when execute batch returns a failure from Core."""
 * 
 */
  __Pyx_GetModuleGlobalName(__pyx_t_1, __pyx_n_s_InternalError); if (unlikely(!__pyx_t_1)) __PYX_ERR(31, 73, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_t_6 = PyTuple_New(1); if (unlikely(!__pyx_t_6)) __PYX_ERR(31, 73, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_6);
  __Pyx_GIVEREF(__pyx_t_1);
  PyTuple_SET_ITEM(__pyx_t_6, 0, __pyx_t_1);
  __pyx_t_1 = 0;
  __pyx_t_1 = __Pyx_CalculateMetaclass(NULL, __pyx_t_6); if (unlikely(!__pyx_t_1)) __PYX_ERR(31, 73, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_t_7 = __Pyx_Py3MetaclassPrepare(__pyx_t_1, __pyx_t_6, __pyx_n_s_ExecuteBatchError, __pyx_n_s_ExecuteBatchError, (PyObject *) NULL, __pyx_n_s_grpc__cython_cygrpc, __pyx_kp_s_Raised_when_execute_batch_return); if (unlikely(!__pyx_t_7)) __PYX_ERR(31, 73, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_7);
  __pyx_t_9 = __Pyx_Py3ClassCreate(__pyx_t_1, __pyx_n_s_ExecuteBatchError, __pyx_t_6, __pyx_t_7, NULL, 0, 1); if (unlikely(!__pyx_t_9)) __PYX_ERR(31, 73, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_9);
  if (PyDict_SetItem(__pyx_d, __pyx_n_s_ExecuteBatchError, __pyx_t_9) < 0) __PYX_ERR(31, 73, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0;
  __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;

  /* "src/python/grpcio/grpc/_cython/_cygrpc/aio/callback_common.pyx.pxi":77
 * 
 * 
 * async def execute_batch(GrpcCallWrapper grpc_call_wrapper,             # <<<<<<<<<<<<<<
 *                                tuple operations,
 *                                object loop):
 */
  __pyx_t_6 = PyCFunction_NewEx(&__pyx_mdef_4grpc_7_cython_6cygrpc_121execute_batch, NULL, __pyx_n_s_grpc__cython_cygrpc); if (unlikely(!__pyx_t_6)) __PYX_ERR(31, 77, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_6);
  if (PyDict_SetItem(__pyx_d, __pyx_n_s_execute_batch, __pyx_t_6) < 0) __PYX_ERR(31, 77, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;

  /* "src/python/grpcio/grpc/_cython/_cygrpc/aio/callback_common.pyx.pxi":114
 * 
 * 
 * async def _receive_message(GrpcCallWrapper grpc_call_wrapper,             # <<<<<<<<<<<<<<
 *                            object loop):
 *     """Retrives parsed messages from Core.
 */
  __pyx_t_6 = PyCFunction_NewEx(&__pyx_mdef_4grpc_7_cython_6cygrpc_124_receive_message, NULL, __pyx_n_s_grpc__cython_cygrpc); if (unlikely(!__pyx_t_6)) __PYX_ERR(31, 114, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_6);
  if (PyDict_SetItem(__pyx_d, __pyx_n_s_receive_message, __pyx_t_6) < 0) __PYX_ERR(31, 114, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;

  /* "src/python/grpcio/grpc/_cython/_cygrpc/aio/callback_common.pyx.pxi":138
 * 
 * 
 * async def _send_message(GrpcCallWrapper grpc_call_wrapper,             # <<<<<<<<<<<<<<
 *                         bytes message,
 *                         Operation send_initial_metadata_op,
 */
  __pyx_t_6 = PyCFunction_NewEx(&__pyx_mdef_4grpc_7_cython_6cygrpc_127_send_message, NULL, __pyx_n_s_grpc__cython_cygrpc); if (unlikely(!__pyx_t_6)) __PYX_ERR(31, 138, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_6);
  if (PyDict_SetItem(__pyx_d, __pyx_n_s_send_message, __pyx_t_6) < 0) __PYX_ERR(31, 138, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;

  /* "src/python/grpcio/grpc/_cython/_cygrpc/aio/callback_common.pyx.pxi":150
 * 
 * 
 * async def _send_initial_metadata(GrpcCallWrapper grpc_call_wrapper,             # <<<<<<<<<<<<<<
 *                                  tuple metadata,
 *                                  int flags,
 */
  __pyx_t_6 = PyCFunction_NewEx(&__pyx_mdef_4grpc_7_cython_6cygrpc_130_send_initial_metadata, NULL, __pyx_n_s_grpc__cython_cygrpc); if (unlikely(!__pyx_t_6)) __PYX_ERR(31, 150, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_6);
  if (PyDict_SetItem(__pyx_d, __pyx_n_s_send_initial_metadata, __pyx_t_6) < 0) __PYX_ERR(31, 150, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;

  /* "src/python/grpcio/grpc/_cython/_cygrpc/aio/callback_common.pyx.pxi":161
 * 
 * 
 * async def _receive_initial_metadata(GrpcCallWrapper grpc_call_wrapper,             # <<<<<<<<<<<<<<
 *                                     object loop):
 *     cdef ReceiveInitialMetadataOperation op = ReceiveInitialMetadataOperation(_EMPTY_FLAGS)
 */
  __pyx_t_6 = PyCFunction_NewEx(&__pyx_mdef_4grpc_7_cython_6cygrpc_133_receive_initial_metadata, NULL, __pyx_n_s_grpc__cython_cygrpc); if (unlikely(!__pyx_t_6)) __PYX_ERR(31, 161, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_6);
  if (PyDict_SetItem(__pyx_d, __pyx_n_s_receive_initial_metadata, __pyx_t_6) < 0) __PYX_ERR(31, 161, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;

  /* "src/python/grpcio/grpc/_cython/_cygrpc/aio/callback_common.pyx.pxi":168
 *     return op.initial_metadata()
 * 
 * async def _send_error_status_from_server(GrpcCallWrapper grpc_call_wrapper,             # <<<<<<<<<<<<<<
 *                                          grpc_status_code code,
 *                                          str details,
 */
  __pyx_t_6 = PyCFunction_NewEx(&__pyx_mdef_4grpc_7_cython_6cygrpc_136_send_error_status_from_server, NULL, __pyx_n_s_grpc__cython_cygrpc); if (unlikely(!__pyx_t_6)) __PYX_ERR(31, 168, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_6);
  if (PyDict_SetItem(__pyx_d, __pyx_n_s_send_error_status_from_server, __pyx_t_6) < 0) __PYX_ERR(31, 168, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;

  /* "src/python/grpcio/grpc/_cython/_cygrpc/aio/grpc_aio.pyx.pxi":15
 * # limitations under the License.
 * 
 * import enum             # <<<<<<<<<<<<<<
 * 
 * cdef str _GRPC_ASYNCIO_ENGINE = os.environ.get('GRPC_ASYNCIO_ENGINE', 'poller').upper()
 */
  __pyx_t_6 = __Pyx_Import(__pyx_n_s_enum, 0, -1); if (unlikely(!__pyx_t_6)) __PYX_ERR(32, 15, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_6);
  if (PyDict_SetItem(__pyx_d, __pyx_n_s_enum, __pyx_t_6) < 0) __PYX_ERR(32, 15, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;

  /* "src/python/grpcio/grpc/_cython/_cygrpc/aio/grpc_aio.pyx.pxi":17
 * import enum
 * 
 * cdef str _GRPC_ASYNCIO_ENGINE = os.environ.get('GRPC_ASYNCIO_ENGINE', 'poller').upper()             # <<<<<<<<<<<<<<
 * cdef _AioState _global_aio_state = _AioState()
 * 
 */
  __Pyx_GetModuleGlobalName(__pyx_t_6, __pyx_n_s_os); if (unlikely(!__pyx_t_6)) __PYX_ERR(32, 17, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_6);
  __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_t_6, __pyx_n_s_environ); if (unlikely(!__pyx_t_1)) __PYX_ERR(32, 17, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
  __pyx_t_6 = __Pyx_PyObject_GetAttrStr(__pyx_t_1, __pyx_n_s_get); if (unlikely(!__pyx_t_6)) __PYX_ERR(32, 17, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_6);
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  __pyx_t_1 = __Pyx_PyObject_Call(__pyx_t_6, __pyx_tuple__346, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(32, 17, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
  __pyx_t_6 = __Pyx_PyObject_GetAttrStr(__pyx_t_1, __pyx_n_s_upper); if (unlikely(!__pyx_t_6)) __PYX_ERR(32, 17, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_6);
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  __pyx_t_1 = __Pyx_PyObject_CallNoArg(__pyx_t_6); if (unlikely(!__pyx_t_1)) __PYX_ERR(32, 17, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
  if (!(likely(PyString_CheckExact(__pyx_t_1))||((__pyx_t_1) == Py_None)||(PyErr_Format(PyExc_TypeError, "Expected %.16s, got %.200s", "str", Py_TYPE(__pyx_t_1)->tp_name), 0))) __PYX_ERR(32, 17, __pyx_L1_error)
  __Pyx_XGOTREF(__pyx_v_4grpc_7_cython_6cygrpc__GRPC_ASYNCIO_ENGINE);
  __Pyx_DECREF_SET(__pyx_v_4grpc_7_cython_6cygrpc__GRPC_ASYNCIO_ENGINE, ((PyObject*)__pyx_t_1));
  __Pyx_GIVEREF(__pyx_t_1);
  __pyx_t_1 = 0;

  /* "src/python/grpcio/grpc/_cython/_cygrpc/aio/grpc_aio.pyx.pxi":18
 * 
 * cdef str _GRPC_ASYNCIO_ENGINE = os.environ.get('GRPC_ASYNCIO_ENGINE', 'poller').upper()
 * cdef _AioState _global_aio_state = _AioState()             # <<<<<<<<<<<<<<
 * 
 * 
 */
  __pyx_t_1 = __Pyx_PyObject_CallNoArg(((PyObject *)__pyx_ptype_4grpc_7_cython_6cygrpc__AioState)); if (unlikely(!__pyx_t_1)) __PYX_ERR(32, 18, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_XGOTREF(((PyObject *)__pyx_v_4grpc_7_cython_6cygrpc__global_aio_state));
  __Pyx_DECREF_SET(__pyx_v_4grpc_7_cython_6cygrpc__global_aio_state, ((struct __pyx_obj_4grpc_7_cython_6cygrpc__AioState *)__pyx_t_1));
  __Pyx_GIVEREF(__pyx_t_1);
  __pyx_t_1 = 0;

  /* "src/python/grpcio/grpc/_cython/_cygrpc/aio/grpc_aio.pyx.pxi":21
 * 
 * 
 * class AsyncIOEngine(enum.Enum):             # <<<<<<<<<<<<<<
 *     # NOTE(lidiz) the support for custom_io_manager is removed in favor of the
 *     # EventEngine project, which will be the only IO platform in Core.
 */
  __Pyx_GetModuleGlobalName(__pyx_t_1, __pyx_n_s_enum); if (unlikely(!__pyx_t_1)) __PYX_ERR(32, 21, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_t_6 = __Pyx_PyObject_GetAttrStr(__pyx_t_1, __pyx_n_s_Enum); if (unlikely(!__pyx_t_6)) __PYX_ERR(32, 21, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_6);
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  __pyx_t_1 = PyTuple_New(1); if (unlikely(!__pyx_t_1)) __PYX_ERR(32, 21, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_GIVEREF(__pyx_t_6);
  PyTuple_SET_ITEM(__pyx_t_1, 0, __pyx_t_6);
  __pyx_t_6 = 0;
  __pyx_t_6 = __Pyx_CalculateMetaclass(NULL, __pyx_t_1); if (unlikely(!__pyx_t_6)) __PYX_ERR(32, 21, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_6);
  __pyx_t_7 = __Pyx_Py3MetaclassPrepare(__pyx_t_6, __pyx_t_1, __pyx_n_s_AsyncIOEngine, __pyx_n_s_AsyncIOEngine, (PyObject *) NULL, __pyx_n_s_grpc__cython_cygrpc, (PyObject *) NULL); if (unlikely(!__pyx_t_7)) __PYX_ERR(32, 21, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_7);

  /* "src/python/grpcio/grpc/_cython/_cygrpc/aio/grpc_aio.pyx.pxi":24
 *     # NOTE(lidiz) the support for custom_io_manager is removed in favor of the
 *     # EventEngine project, which will be the only IO platform in Core.
 *     CUSTOM_IO_MANAGER = 'custom_io_manager'             # <<<<<<<<<<<<<<
 *     POLLER = 'poller'
 * 
 */
  if (__Pyx_SetNameInClass(__pyx_t_7, __pyx_n_s_CUSTOM_IO_MANAGER, __pyx_n_s_custom_io_manager) < 0) __PYX_ERR(32, 24, __pyx_L1_error)

  /* "src/python/grpcio/grpc/_cython/_cygrpc/aio/grpc_aio.pyx.pxi":25
 *     # EventEngine project, which will be the only IO platform in Core.
 *     CUSTOM_IO_MANAGER = 'custom_io_manager'
 *     POLLER = 'poller'             # <<<<<<<<<<<<<<
 * 
 * 
 */
  if (__Pyx_SetNameInClass(__pyx_t_7, __pyx_n_s_POLLER, __pyx_n_s_poller) < 0) __PYX_ERR(32, 25, __pyx_L1_error)

  /* "src/python/grpcio/grpc/_cython/_cygrpc/aio/grpc_aio.pyx.pxi":21
 * 
 * 
 * class AsyncIOEngine(enum.Enum):             # <<<<<<<<<<<<<<
 *     # NOTE(lidiz) the support for custom_io_manager is removed in favor of the
 *     # EventEngine project, which will be the only IO platform in Core.
 */
  __pyx_t_9 = __Pyx_Py3ClassCreate(__pyx_t_6, __pyx_n_s_AsyncIOEngine, __pyx_t_1, __pyx_t_7, NULL, 0, 1); if (unlikely(!__pyx_t_9)) __PYX_ERR(32, 21, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_9);
  if (PyDict_SetItem(__pyx_d, __pyx_n_s_AsyncIOEngine, __pyx_t_9) < 0) __PYX_ERR(32, 21, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0;
  __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
  __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;

  /* "src/python/grpcio/grpc/_cython/_cygrpc/aio/grpc_aio.pyx.pxi":68
 * 
 * 
 * def _grpc_shutdown_wrapper(_):             # <<<<<<<<<<<<<<
 *     """A thin Python wrapper of Core's shutdown function.
 * 
 */
  __pyx_t_1 = PyCFunction_NewEx(&__pyx_mdef_4grpc_7_cython_6cygrpc_139_grpc_shutdown_wrapper, NULL, __pyx_n_s_grpc__cython_cygrpc); if (unlikely(!__pyx_t_1)) __PYX_ERR(32, 68, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  if (PyDict_SetItem(__pyx_d, __pyx_n_s_grpc_shutdown_wrapper, __pyx_t_1) < 0) __PYX_ERR(32, 68, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;

  /* "src/python/grpcio/grpc/_cython/_cygrpc/aio/call.pyx.pxi":16
 * 
 * 
 * _EMPTY_FLAGS = 0             # <<<<<<<<<<<<<<
 * _EMPTY_MASK = 0
 * _IMMUTABLE_EMPTY_METADATA = tuple()
 */
  if (PyDict_SetItem(__pyx_d, __pyx_n_s_EMPTY_FLAGS, __pyx_int_0) < 0) __PYX_ERR(33, 16, __pyx_L1_error)

  /* "src/python/grpcio/grpc/_cython/_cygrpc/aio/call.pyx.pxi":17
 * 
 * _EMPTY_FLAGS = 0
 * _EMPTY_MASK = 0             # <<<<<<<<<<<<<<
 * _IMMUTABLE_EMPTY_METADATA = tuple()
 * 
 */
  if (PyDict_SetItem(__pyx_d, __pyx_n_s_EMPTY_MASK, __pyx_int_0) < 0) __PYX_ERR(33, 17, __pyx_L1_error)

  /* "src/python/grpcio/grpc/_cython/_cygrpc/aio/call.pyx.pxi":18
 * _EMPTY_FLAGS = 0
 * _EMPTY_MASK = 0
 * _IMMUTABLE_EMPTY_METADATA = tuple()             # <<<<<<<<<<<<<<
 * 
 * _UNKNOWN_CANCELLATION_DETAILS = 'RPC cancelled for unknown reason.'
 */
  __pyx_t_1 = __Pyx_PyObject_CallNoArg(((PyObject *)(&PyTuple_Type))); if (unlikely(!__pyx_t_1)) __PYX_ERR(33, 18, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  if (PyDict_SetItem(__pyx_d, __pyx_n_s_IMMUTABLE_EMPTY_METADATA, __pyx_t_1) < 0) __PYX_ERR(33, 18, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;

  /* "src/python/grpcio/grpc/_cython/_cygrpc/aio/call.pyx.pxi":20
 * _IMMUTABLE_EMPTY_METADATA = tuple()
 * 
 * _UNKNOWN_CANCELLATION_DETAILS = 'RPC cancelled for unknown reason.'             # <<<<<<<<<<<<<<
 * _OK_CALL_REPRESENTATION = ('<{} of RPC that terminated with:\n'
 *                            '\tstatus = {}\n'
 */
  if (PyDict_SetItem(__pyx_d, __pyx_n_s_UNKNOWN_CANCELLATION_DETAILS, __pyx_kp_s_RPC_cancelled_for_unknown_reason) < 0) __PYX_ERR(33, 20, __pyx_L1_error)

  /* "src/python/grpcio/grpc/_cython/_cygrpc/aio/call.pyx.pxi":21
 * 
 * _UNKNOWN_CANCELLATION_DETAILS = 'RPC cancelled for unknown reason.'
 * _OK_CALL_REPRESENTATION = ('<{} of RPC that terminated with:\n'             # <<<<<<<<<<<<<<
 *                            '\tstatus = {}\n'
 *                            '\tdetails = "{}"\n'
 */
  if (PyDict_SetItem(__pyx_d, __pyx_n_s_OK_CALL_REPRESENTATION, __pyx_kp_s_of_RPC_that_terminated_with_sta) < 0) __PYX_ERR(33, 21, __pyx_L1_error)

  /* "src/python/grpcio/grpc/_cython/_cygrpc/aio/call.pyx.pxi":26
 *                            '>')
 * 
 * _NON_OK_CALL_REPRESENTATION = ('<{} of RPC that terminated with:\n'             # <<<<<<<<<<<<<<
 *                                '\tstatus = {}\n'
 *                                '\tdetails = "{}"\n'
 */
  if (PyDict_SetItem(__pyx_d, __pyx_n_s_NON_OK_CALL_REPRESENTATION, __pyx_kp_s_of_RPC_that_terminated_with_sta_2) < 0) __PYX_ERR(33, 26, __pyx_L1_error)

  /* "src/python/grpcio/grpc/_cython/_cygrpc/aio/channel.pyx.pxi":17
 * 
 * 
 * class _WatchConnectivityFailed(Exception):             # <<<<<<<<<<<<<<
 *     """Dedicated exception class for watch connectivity failed.
 * 
 */
  __pyx_t_1 = PyTuple_New(1); if (unlikely(!__pyx_t_1)) __PYX_ERR(9, 17, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_INCREF(((PyObject *)(&((PyTypeObject*)PyExc_Exception)[0])));
  __Pyx_GIVEREF(((PyObject *)(&((PyTypeObject*)PyExc_Exception)[0])));
  PyTuple_SET_ITEM(__pyx_t_1, 0, ((PyObject *)(&((PyTypeObject*)PyExc_Exception)[0])));
  __pyx_t_6 = __Pyx_CalculateMetaclass(NULL, __pyx_t_1); if (unlikely(!__pyx_t_6)) __PYX_ERR(9, 17, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_6);
  __pyx_t_7 = __Pyx_Py3MetaclassPrepare(__pyx_t_6, __pyx_t_1, __pyx_n_s_WatchConnectivityFailed, __pyx_n_s_WatchConnectivityFailed, (PyObject *) NULL, __pyx_n_s_grpc__cython_cygrpc, __pyx_kp_s_Dedicated_exception_class_for_wa); if (unlikely(!__pyx_t_7)) __PYX_ERR(9, 17, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_7);
  __pyx_t_9 = __Pyx_Py3ClassCreate(__pyx_t_6, __pyx_n_s_WatchConnectivityFailed, __pyx_t_1, __pyx_t_7, NULL, 0, 1); if (unlikely(!__pyx_t_9)) __PYX_ERR(9, 17, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_9);
  if (PyDict_SetItem(__pyx_d, __pyx_n_s_WatchConnectivityFailed, __pyx_t_9) < 0) __PYX_ERR(9, 17, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0;
  __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
  __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;

  /* "src/python/grpcio/grpc/_cython/_cygrpc/aio/channel.pyx.pxi":25
 *     'watch_connectivity_state',
 *     'Timed out',
 *     _WatchConnectivityFailed)             # <<<<<<<<<<<<<<
 * 
 * 
 */
  __Pyx_GetModuleGlobalName(__pyx_t_1, __pyx_n_s_WatchConnectivityFailed); if (unlikely(!__pyx_t_1)) __PYX_ERR(9, 25, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);

  /* "src/python/grpcio/grpc/_cython/_cygrpc/aio/channel.pyx.pxi":22
 *     It might be failed due to deadline exceeded.
 *     """
 * cdef CallbackFailureHandler _WATCH_CONNECTIVITY_FAILURE_HANDLER = CallbackFailureHandler(             # <<<<<<<<<<<<<<
 *     'watch_connectivity_state',
 *     'Timed out',
 */
  __pyx_t_6 = PyTuple_New(3); if (unlikely(!__pyx_t_6)) __PYX_ERR(9, 22, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_6);
  __Pyx_INCREF(__pyx_n_s_watch_connectivity_state);
  __Pyx_GIVEREF(__pyx_n_s_watch_connectivity_state);
  PyTuple_SET_ITEM(__pyx_t_6, 0, __pyx_n_s_watch_connectivity_state);
  __Pyx_INCREF(__pyx_kp_s_Timed_out);
  __Pyx_GIVEREF(__pyx_kp_s_Timed_out);
  PyTuple_SET_ITEM(__pyx_t_6, 1, __pyx_kp_s_Timed_out);
  __Pyx_GIVEREF(__pyx_t_1);
  PyTuple_SET_ITEM(__pyx_t_6, 2, __pyx_t_1);
  __pyx_t_1 = 0;
  __pyx_t_1 = __Pyx_PyObject_Call(((PyObject *)__pyx_ptype_4grpc_7_cython_6cygrpc_CallbackFailureHandler), __pyx_t_6, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(9, 22, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
  __Pyx_XGOTREF(((PyObject *)__pyx_v_4grpc_7_cython_6cygrpc__WATCH_CONNECTIVITY_FAILURE_HANDLER));
  __Pyx_DECREF_SET(__pyx_v_4grpc_7_cython_6cygrpc__WATCH_CONNECTIVITY_FAILURE_HANDLER, ((struct __pyx_obj_4grpc_7_cython_6cygrpc_CallbackFailureHandler *)__pyx_t_1));
  __Pyx_GIVEREF(__pyx_t_1);
  __pyx_t_1 = 0;

  /* "src/python/grpcio/grpc/_cython/_cygrpc/aio/server.pyx.pxi":16
 * 
 * 
 * import inspect             # <<<<<<<<<<<<<<
 * import traceback
 * import functools
 */
  __pyx_t_1 = __Pyx_patch_inspect(__Pyx_Import(__pyx_n_s_inspect, 0, -1)); if (unlikely(!__pyx_t_1)) __PYX_ERR(10, 16, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  if (PyDict_SetItem(__pyx_d, __pyx_n_s_inspect, __pyx_t_1) < 0) __PYX_ERR(10, 16, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;

  /* "src/python/grpcio/grpc/_cython/_cygrpc/aio/server.pyx.pxi":17
 * 
 * import inspect
 * import traceback             # <<<<<<<<<<<<<<
 * import functools
 * 
 */
  __pyx_t_1 = __Pyx_Import(__pyx_n_s_traceback, 0, -1); if (unlikely(!__pyx_t_1)) __PYX_ERR(10, 17, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  if (PyDict_SetItem(__pyx_d, __pyx_n_s_traceback, __pyx_t_1) < 0) __PYX_ERR(10, 17, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;

  /* "src/python/grpcio/grpc/_cython/_cygrpc/aio/server.pyx.pxi":18
 * import inspect
 * import traceback
 * import functools             # <<<<<<<<<<<<<<
 * 
 * 
 */
  __pyx_t_1 = __Pyx_Import(__pyx_n_s_functools, 0, -1); if (unlikely(!__pyx_t_1)) __PYX_ERR(10, 18, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  if (PyDict_SetItem(__pyx_d, __pyx_n_s_functools, __pyx_t_1) < 0) __PYX_ERR(10, 18, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;

  /* "src/python/grpcio/grpc/_cython/_cygrpc/aio/server.pyx.pxi":21
 * 
 * 
 * cdef int _EMPTY_FLAG = 0             # <<<<<<<<<<<<<<
 * cdef str _RPC_FINISHED_DETAILS = 'RPC already finished.'
 * cdef str _SERVER_STOPPED_DETAILS = 'Server already stopped.'
 */
  __pyx_v_4grpc_7_cython_6cygrpc__EMPTY_FLAG = 0;

  /* "src/python/grpcio/grpc/_cython/_cygrpc/aio/server.pyx.pxi":22
 * 
 * cdef int _EMPTY_FLAG = 0
 * cdef str _RPC_FINISHED_DETAILS = 'RPC already finished.'             # <<<<<<<<<<<<<<
 * cdef str _SERVER_STOPPED_DETAILS = 'Server already stopped.'
 * 
 */
  __Pyx_INCREF(__pyx_kp_s_RPC_already_finished);
  __Pyx_XGOTREF(__pyx_v_4grpc_7_cython_6cygrpc__RPC_FINISHED_DETAILS);
  __Pyx_DECREF_SET(__pyx_v_4grpc_7_cython_6cygrpc__RPC_FINISHED_DETAILS, __pyx_kp_s_RPC_already_finished);
  __Pyx_GIVEREF(__pyx_kp_s_RPC_already_finished);

  /* "src/python/grpcio/grpc/_cython/_cygrpc/aio/server.pyx.pxi":23
 * cdef int _EMPTY_FLAG = 0
 * cdef str _RPC_FINISHED_DETAILS = 'RPC already finished.'
 * cdef str _SERVER_STOPPED_DETAILS = 'Server already stopped.'             # <<<<<<<<<<<<<<
 * 
 * cdef _augment_metadata(tuple metadata, object compression):
 */
  __Pyx_INCREF(__pyx_kp_s_Server_already_stopped);
  __Pyx_XGOTREF(__pyx_v_4grpc_7_cython_6cygrpc__SERVER_STOPPED_DETAILS);
  __Pyx_DECREF_SET(__pyx_v_4grpc_7_cython_6cygrpc__SERVER_STOPPED_DETAILS, __pyx_kp_s_Server_already_stopped);
  __Pyx_GIVEREF(__pyx_kp_s_Server_already_stopped);

  /* "src/python/grpcio/grpc/_cython/_cygrpc/aio/server.pyx.pxi":41
 * 
 * 
 * class _ServerStoppedError(BaseError):             # <<<<<<<<<<<<<<
 *     """Raised if the server is stopped."""
 * 
 */
  __Pyx_GetModuleGlobalName(__pyx_t_1, __pyx_n_s_BaseError); if (unlikely(!__pyx_t_1)) __PYX_ERR(10, 41, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_t_6 = PyTuple_New(1); if (unlikely(!__pyx_t_6)) __PYX_ERR(10, 41, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_6);
  __Pyx_GIVEREF(__pyx_t_1);
  PyTuple_SET_ITEM(__pyx_t_6, 0, __pyx_t_1);
  __pyx_t_1 = 0;
  __pyx_t_1 = __Pyx_CalculateMetaclass(NULL, __pyx_t_6); if (unlikely(!__pyx_t_1)) __PYX_ERR(10, 41, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_t_7 = __Pyx_Py3MetaclassPrepare(__pyx_t_1, __pyx_t_6, __pyx_n_s_ServerStoppedError, __pyx_n_s_ServerStoppedError, (PyObject *) NULL, __pyx_n_s_grpc__cython_cygrpc, __pyx_kp_s_Raised_if_the_server_is_stopped); if (unlikely(!__pyx_t_7)) __PYX_ERR(10, 41, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_7);
  __pyx_t_9 = __Pyx_Py3ClassCreate(__pyx_t_1, __pyx_n_s_ServerStoppedError, __pyx_t_6, __pyx_t_7, NULL, 0, 1); if (unlikely(!__pyx_t_9)) __PYX_ERR(10, 41, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_9);
  if (PyDict_SetItem(__pyx_d, __pyx_n_s_ServerStoppedError, __pyx_t_9) < 0) __PYX_ERR(10, 41, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0;
  __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;

  /* "src/python/grpcio/grpc/_cython/_cygrpc/aio/server.pyx.pxi":165
 *               object code,
 *               str details='',
 *               tuple trailing_metadata=_IMMUTABLE_EMPTY_METADATA):             # <<<<<<<<<<<<<<
 *         if self._rpc_state.abort_exception is not None:
 *             raise UsageError('Abort already called!')
 */
  __Pyx_GetModuleGlobalName(__pyx_t_6, __pyx_n_s_IMMUTABLE_EMPTY_METADATA); if (unlikely(!__pyx_t_6)) __PYX_ERR(10, 165, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_6);
  if (!(likely(PyTuple_CheckExact(__pyx_t_6))||((__pyx_t_6) == Py_None)||(PyErr_Format(PyExc_TypeError, "Expected %.16s, got %.200s", "tuple", Py_TYPE(__pyx_t_6)->tp_name), 0))) __PYX_ERR(10, 165, __pyx_L1_error)
  __pyx_k__174 = ((PyObject*)__pyx_t_6);
  __Pyx_GIVEREF(__pyx_t_6);
  __pyx_t_6 = 0;

  /* "src/python/grpcio/grpc/_cython/_cygrpc/aio/server.pyx.pxi":283
 *               object code,
 *               str details='',
 *               tuple trailing_metadata=_IMMUTABLE_EMPTY_METADATA):             # <<<<<<<<<<<<<<
 *         future = asyncio.run_coroutine_threadsafe(
 *             self._context.abort(code, details, trailing_metadata),
 */
  __Pyx_GetModuleGlobalName(__pyx_t_6, __pyx_n_s_IMMUTABLE_EMPTY_METADATA); if (unlikely(!__pyx_t_6)) __PYX_ERR(10, 283, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_6);
  if (!(likely(PyTuple_CheckExact(__pyx_t_6))||((__pyx_t_6) == Py_None)||(PyErr_Format(PyExc_TypeError, "Expected %.16s, got %.200s", "tuple", Py_TYPE(__pyx_t_6)->tp_name), 0))) __PYX_ERR(10, 283, __pyx_L1_error)
  __pyx_k__178 = ((PyObject*)__pyx_t_6);
  __Pyx_GIVEREF(__pyx_t_6);
  __pyx_t_6 = 0;

  /* "src/python/grpcio/grpc/_cython/_cygrpc/aio/server.pyx.pxi":333
 * 
 * 
 * async def _run_interceptor(object interceptors, object query_handler,             # <<<<<<<<<<<<<<
 *                            object handler_call_details):
 *     interceptor = next(interceptors, None)
 */
  __pyx_t_6 = PyCFunction_NewEx(&__pyx_mdef_4grpc_7_cython_6cygrpc_145_run_interceptor, NULL, __pyx_n_s_grpc__cython_cygrpc); if (unlikely(!__pyx_t_6)) __PYX_ERR(10, 333, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_6);
  if (PyDict_SetItem(__pyx_d, __pyx_n_s_run_interceptor, __pyx_t_6) < 0) __PYX_ERR(10, 333, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;

  /* "src/python/grpcio/grpc/_cython/_cygrpc/aio/server.pyx.pxi":344
 * 
 * 
 * def _is_async_handler(object handler):             # <<<<<<<<<<<<<<
 *     """Inspect if a method handler is async or sync."""
 *     return inspect.isawaitable(handler) or inspect.iscoroutinefunction(handler) or inspect.isasyncgenfunction(handler)
 */
  __pyx_t_6 = PyCFunction_NewEx(&__pyx_mdef_4grpc_7_cython_6cygrpc_148_is_async_handler, NULL, __pyx_n_s_grpc__cython_cygrpc); if (unlikely(!__pyx_t_6)) __PYX_ERR(10, 344, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_6);
  if (PyDict_SetItem(__pyx_d, __pyx_n_s_is_async_handler, __pyx_t_6) < 0) __PYX_ERR(10, 344, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;

  /* "src/python/grpcio/grpc/_cython/_cygrpc/aio/server.pyx.pxi":349
 * 
 * 
 * async def _find_method_handler(str method, tuple metadata, list generic_handlers,             # <<<<<<<<<<<<<<
 *                           tuple interceptors):
 *     def query_handlers(handler_call_details):
 */
  __pyx_t_6 = PyCFunction_NewEx(&__pyx_mdef_4grpc_7_cython_6cygrpc_150_find_method_handler, NULL, __pyx_n_s_grpc__cython_cygrpc); if (unlikely(!__pyx_t_6)) __PYX_ERR(10, 349, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_6);
  if (PyDict_SetItem(__pyx_d, __pyx_n_s_find_method_handler, __pyx_t_6) < 0) __PYX_ERR(10, 349, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;

  /* "src/python/grpcio/grpc/_cython/_cygrpc/aio/server.pyx.pxi":368
 * 
 * 
 * async def _finish_handler_with_unary_response(RPCState rpc_state,             # <<<<<<<<<<<<<<
 *                                               object unary_handler,
 *                                               object request,
 */
  __pyx_t_6 = PyCFunction_NewEx(&__pyx_mdef_4grpc_7_cython_6cygrpc_153_finish_handler_with_unary_response, NULL, __pyx_n_s_grpc__cython_cygrpc); if (unlikely(!__pyx_t_6)) __PYX_ERR(10, 368, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_6);
  if (PyDict_SetItem(__pyx_d, __pyx_n_s_finish_handler_with_unary_respo, __pyx_t_6) < 0) __PYX_ERR(10, 368, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;

  /* "src/python/grpcio/grpc/_cython/_cygrpc/aio/server.pyx.pxi":437
 * 
 * 
 * async def _finish_handler_with_stream_responses(RPCState rpc_state,             # <<<<<<<<<<<<<<
 *                                                 object stream_handler,
 *                                                 object request,
 */
  __pyx_t_6 = PyCFunction_NewEx(&__pyx_mdef_4grpc_7_cython_6cygrpc_156_finish_handler_with_stream_responses, NULL, __pyx_n_s_grpc__cython_cygrpc); if (unlikely(!__pyx_t_6)) __PYX_ERR(10, 437, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_6);
  if (PyDict_SetItem(__pyx_d, __pyx_n_s_finish_handler_with_stream_resp, __pyx_t_6) < 0) __PYX_ERR(10, 437, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;

  /* "src/python/grpcio/grpc/_cython/_cygrpc/aio/server.pyx.pxi":505
 * 
 * 
 * async def _handle_unary_unary_rpc(object method_handler,             # <<<<<<<<<<<<<<
 *                                   RPCState rpc_state,
 *                                   object loop):
 */
  __pyx_t_6 = PyCFunction_NewEx(&__pyx_mdef_4grpc_7_cython_6cygrpc_159_handle_unary_unary_rpc, NULL, __pyx_n_s_grpc__cython_cygrpc); if (unlikely(!__pyx_t_6)) __PYX_ERR(10, 505, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_6);
  if (PyDict_SetItem(__pyx_d, __pyx_n_s_handle_unary_unary_rpc, __pyx_t_6) < 0) __PYX_ERR(10, 505, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;

  /* "src/python/grpcio/grpc/_cython/_cygrpc/aio/server.pyx.pxi":539
 * 
 * 
 * async def _handle_unary_stream_rpc(object method_handler,             # <<<<<<<<<<<<<<
 *                                    RPCState rpc_state,
 *                                    object loop):
 */
  __pyx_t_6 = PyCFunction_NewEx(&__pyx_mdef_4grpc_7_cython_6cygrpc_162_handle_unary_stream_rpc, NULL, __pyx_n_s_grpc__cython_cygrpc); if (unlikely(!__pyx_t_6)) __PYX_ERR(10, 539, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_6);
  if (PyDict_SetItem(__pyx_d, __pyx_n_s_handle_unary_stream_rpc, __pyx_t_6) < 0) __PYX_ERR(10, 539, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;

  /* "src/python/grpcio/grpc/_cython/_cygrpc/aio/server.pyx.pxi":598
 * 
 * 
 * async def _handle_stream_unary_rpc(object method_handler,             # <<<<<<<<<<<<<<
 *                                    RPCState rpc_state,
 *                                    object loop):
 */
  __pyx_t_6 = PyCFunction_NewEx(&__pyx_mdef_4grpc_7_cython_6cygrpc_165_handle_stream_unary_rpc, NULL, __pyx_n_s_grpc__cython_cygrpc); if (unlikely(!__pyx_t_6)) __PYX_ERR(10, 598, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_6);
  if (PyDict_SetItem(__pyx_d, __pyx_n_s_handle_stream_unary_rpc, __pyx_t_6) < 0) __PYX_ERR(10, 598, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;

  /* "src/python/grpcio/grpc/_cython/_cygrpc/aio/server.pyx.pxi":630
 * 
 * 
 * async def _handle_stream_stream_rpc(object method_handler,             # <<<<<<<<<<<<<<
 *                                     RPCState rpc_state,
 *                                     object loop):
 */
  __pyx_t_6 = PyCFunction_NewEx(&__pyx_mdef_4grpc_7_cython_6cygrpc_168_handle_stream_stream_rpc, NULL, __pyx_n_s_grpc__cython_cygrpc); if (unlikely(!__pyx_t_6)) __PYX_ERR(10, 630, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_6);
  if (PyDict_SetItem(__pyx_d, __pyx_n_s_handle_stream_stream_rpc, __pyx_t_6) < 0) __PYX_ERR(10, 630, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;

  /* "src/python/grpcio/grpc/_cython/_cygrpc/aio/server.pyx.pxi":661
 * 
 * 
 * async def _handle_exceptions(RPCState rpc_state, object rpc_coro, object loop):             # <<<<<<<<<<<<<<
 *     try:
 *         try:
 */
  __pyx_t_6 = PyCFunction_NewEx(&__pyx_mdef_4grpc_7_cython_6cygrpc_171_handle_exceptions, NULL, __pyx_n_s_grpc__cython_cygrpc); if (unlikely(!__pyx_t_6)) __PYX_ERR(10, 661, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_6);
  if (PyDict_SetItem(__pyx_d, __pyx_n_s_handle_exceptions, __pyx_t_6) < 0) __PYX_ERR(10, 661, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;

  /* "src/python/grpcio/grpc/_cython/_cygrpc/aio/server.pyx.pxi":710
 * 
 * 
 * async def _handle_cancellation_from_core(object rpc_task,             # <<<<<<<<<<<<<<
 *                                          RPCState rpc_state,
 *                                          object loop):
 */
  __pyx_t_6 = PyCFunction_NewEx(&__pyx_mdef_4grpc_7_cython_6cygrpc_174_handle_cancellation_from_core, NULL, __pyx_n_s_grpc__cython_cygrpc); if (unlikely(!__pyx_t_6)) __PYX_ERR(10, 710, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_6);
  if (PyDict_SetItem(__pyx_d, __pyx_n_s_handle_cancellation_from_core, __pyx_t_6) < 0) __PYX_ERR(10, 710, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;

  /* "src/python/grpcio/grpc/_cython/_cygrpc/aio/server.pyx.pxi":727
 * 
 * 
 * async def _schedule_rpc_coro(object rpc_coro,             # <<<<<<<<<<<<<<
 *                              RPCState rpc_state,
 *                              object loop):
 */
  __pyx_t_6 = PyCFunction_NewEx(&__pyx_mdef_4grpc_7_cython_6cygrpc_177_schedule_rpc_coro, NULL, __pyx_n_s_grpc__cython_cygrpc); if (unlikely(!__pyx_t_6)) __PYX_ERR(10, 727, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_6);
  if (PyDict_SetItem(__pyx_d, __pyx_n_s_schedule_rpc_coro, __pyx_t_6) < 0) __PYX_ERR(10, 727, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;

  /* "src/python/grpcio/grpc/_cython/_cygrpc/aio/server.pyx.pxi":739
 * 
 * 
 * async def _handle_rpc(list generic_handlers, tuple interceptors,             # <<<<<<<<<<<<<<
 *                       RPCState rpc_state, object loop):
 *     cdef object method_handler
 */
  __pyx_t_6 = PyCFunction_NewEx(&__pyx_mdef_4grpc_7_cython_6cygrpc_180_handle_rpc, NULL, __pyx_n_s_grpc__cython_cygrpc); if (unlikely(!__pyx_t_6)) __PYX_ERR(10, 739, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_6);
  if (PyDict_SetItem(__pyx_d, __pyx_n_s_handle_rpc, __pyx_t_6) < 0) __PYX_ERR(10, 739, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;

  /* "src/python/grpcio/grpc/_cython/_cygrpc/aio/server.pyx.pxi":790
 * 
 * 
 * class _RequestCallError(Exception): pass             # <<<<<<<<<<<<<<
 * 
 * cdef CallbackFailureHandler REQUEST_CALL_FAILURE_HANDLER = CallbackFailureHandler(
 */
  __pyx_t_6 = PyTuple_New(1); if (unlikely(!__pyx_t_6)) __PYX_ERR(10, 790, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_6);
  __Pyx_INCREF(((PyObject *)(&((PyTypeObject*)PyExc_Exception)[0])));
  __Pyx_GIVEREF(((PyObject *)(&((PyTypeObject*)PyExc_Exception)[0])));
  PyTuple_SET_ITEM(__pyx_t_6, 0, ((PyObject *)(&((PyTypeObject*)PyExc_Exception)[0])));
  __pyx_t_1 = __Pyx_CalculateMetaclass(NULL, __pyx_t_6); if (unlikely(!__pyx_t_1)) __PYX_ERR(10, 790, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_t_7 = __Pyx_Py3MetaclassPrepare(__pyx_t_1, __pyx_t_6, __pyx_n_s_RequestCallError, __pyx_n_s_RequestCallError, (PyObject *) NULL, __pyx_n_s_grpc__cython_cygrpc, (PyObject *) NULL); if (unlikely(!__pyx_t_7)) __PYX_ERR(10, 790, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_7);
  __pyx_t_9 = __Pyx_Py3ClassCreate(__pyx_t_1, __pyx_n_s_RequestCallError, __pyx_t_6, __pyx_t_7, NULL, 0, 1); if (unlikely(!__pyx_t_9)) __PYX_ERR(10, 790, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_9);
  if (PyDict_SetItem(__pyx_d, __pyx_n_s_RequestCallError, __pyx_t_9) < 0) __PYX_ERR(10, 790, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0;
  __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;

  /* "src/python/grpcio/grpc/_cython/_cygrpc/aio/server.pyx.pxi":793
 * 
 * cdef CallbackFailureHandler REQUEST_CALL_FAILURE_HANDLER = CallbackFailureHandler(
 *     'grpc_server_request_call', None, _RequestCallError)             # <<<<<<<<<<<<<<
 * 
 * 
 */
  __Pyx_GetModuleGlobalName(__pyx_t_6, __pyx_n_s_RequestCallError); if (unlikely(!__pyx_t_6)) __PYX_ERR(10, 793, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_6);

  /* "src/python/grpcio/grpc/_cython/_cygrpc/aio/server.pyx.pxi":792
 * class _RequestCallError(Exception): pass
 * 
 * cdef CallbackFailureHandler REQUEST_CALL_FAILURE_HANDLER = CallbackFailureHandler(             # <<<<<<<<<<<<<<
 *     'grpc_server_request_call', None, _RequestCallError)
 * 
 */
  __pyx_t_1 = PyTuple_New(3); if (unlikely(!__pyx_t_1)) __PYX_ERR(10, 792, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_INCREF(__pyx_n_s_grpc_server_request_call);
  __Pyx_GIVEREF(__pyx_n_s_grpc_server_request_call);
  PyTuple_SET_ITEM(__pyx_t_1, 0, __pyx_n_s_grpc_server_request_call);
  __Pyx_INCREF(Py_None);
  __Pyx_GIVEREF(Py_None);
  PyTuple_SET_ITEM(__pyx_t_1, 1, Py_None);
  __Pyx_GIVEREF(__pyx_t_6);
  PyTuple_SET_ITEM(__pyx_t_1, 2, __pyx_t_6);
  __pyx_t_6 = 0;
  __pyx_t_6 = __Pyx_PyObject_Call(((PyObject *)__pyx_ptype_4grpc_7_cython_6cygrpc_CallbackFailureHandler), __pyx_t_1, NULL); if (unlikely(!__pyx_t_6)) __PYX_ERR(10, 792, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_6);
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  __Pyx_XGOTREF(((PyObject *)__pyx_v_4grpc_7_cython_6cygrpc_REQUEST_CALL_FAILURE_HANDLER));
  __Pyx_DECREF_SET(__pyx_v_4grpc_7_cython_6cygrpc_REQUEST_CALL_FAILURE_HANDLER, ((struct __pyx_obj_4grpc_7_cython_6cygrpc_CallbackFailureHandler *)__pyx_t_6));
  __Pyx_GIVEREF(__pyx_t_6);
  __pyx_t_6 = 0;

  /* "src/python/grpcio/grpc/_cython/_cygrpc/aio/server.pyx.pxi":799
 *     'grpc_server_shutdown_and_notify',
 *     None,
 *     InternalError)             # <<<<<<<<<<<<<<
 * 
 * 
 */
  __Pyx_GetModuleGlobalName(__pyx_t_6, __pyx_n_s_InternalError); if (unlikely(!__pyx_t_6)) __PYX_ERR(10, 799, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_6);

  /* "src/python/grpcio/grpc/_cython/_cygrpc/aio/server.pyx.pxi":796
 * 
 * 
 * cdef CallbackFailureHandler SERVER_SHUTDOWN_FAILURE_HANDLER = CallbackFailureHandler(             # <<<<<<<<<<<<<<
 *     'grpc_server_shutdown_and_notify',
 *     None,
 */
  __pyx_t_1 = PyTuple_New(3); if (unlikely(!__pyx_t_1)) __PYX_ERR(10, 796, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_INCREF(__pyx_n_s_grpc_server_shutdown_and_notify);
  __Pyx_GIVEREF(__pyx_n_s_grpc_server_shutdown_and_notify);
  PyTuple_SET_ITEM(__pyx_t_1, 0, __pyx_n_s_grpc_server_shutdown_and_notify);
  __Pyx_INCREF(Py_None);
  __Pyx_GIVEREF(Py_None);
  PyTuple_SET_ITEM(__pyx_t_1, 1, Py_None);
  __Pyx_GIVEREF(__pyx_t_6);
  PyTuple_SET_ITEM(__pyx_t_1, 2, __pyx_t_6);
  __pyx_t_6 = 0;
  __pyx_t_6 = __Pyx_PyObject_Call(((PyObject *)__pyx_ptype_4grpc_7_cython_6cygrpc_CallbackFailureHandler), __pyx_t_1, NULL); if (unlikely(!__pyx_t_6)) __PYX_ERR(10, 796, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_6);
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  __Pyx_XGOTREF(((PyObject *)__pyx_v_4grpc_7_cython_6cygrpc_SERVER_SHUTDOWN_FAILURE_HANDLER));
  __Pyx_DECREF_SET(__pyx_v_4grpc_7_cython_6cygrpc_SERVER_SHUTDOWN_FAILURE_HANDLER, ((struct __pyx_obj_4grpc_7_cython_6cygrpc_CallbackFailureHandler *)__pyx_t_6));
  __Pyx_GIVEREF(__pyx_t_6);
  __pyx_t_6 = 0;

  /* "grpc/_cython/cygrpc.pyx":96
 * 
 * 
 * _initialize()             # <<<<<<<<<<<<<<
 */
  __pyx_t_6 = __pyx_f_4grpc_7_cython_6cygrpc__initialize(); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 96, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_6);
  __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;

  /* "(tree fragment)":1
 * def __pyx_unpickle_ChannelCredentials(__pyx_type, long __pyx_checksum, __pyx_state):             # <<<<<<<<<<<<<<
 *     cdef object __pyx_PickleError
 *     cdef object __pyx_result
 */
  __pyx_t_6 = PyCFunction_NewEx(&__pyx_mdef_4grpc_7_cython_6cygrpc_183__pyx_unpickle_ChannelCredentials, NULL, __pyx_n_s_grpc__cython_cygrpc); if (unlikely(!__pyx_t_6)) __PYX_ERR(11, 1, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_6);
  if (PyDict_SetItem(__pyx_d, __pyx_n_s_pyx_unpickle_ChannelCredential, __pyx_t_6) < 0) __PYX_ERR(11, 1, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;

  /* "(tree fragment)":11
 *         __pyx_unpickle_ChannelCredentials__set_state(<ChannelCredentials> __pyx_result, __pyx_state)
 *     return __pyx_result
 * cdef __pyx_unpickle_ChannelCredentials__set_state(ChannelCredentials __pyx_result, tuple __pyx_state):             # <<<<<<<<<<<<<<
 *     if len(__pyx_state) > 0 and hasattr(__pyx_result, '__dict__'):
 *         __pyx_result.__dict__.update(__pyx_state[0])
 */
  __pyx_t_6 = PyCFunction_NewEx(&__pyx_mdef_4grpc_7_cython_6cygrpc_185__pyx_unpickle_InsecureChannelCredentials, NULL, __pyx_n_s_grpc__cython_cygrpc); if (unlikely(!__pyx_t_6)) __PYX_ERR(11, 1, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_6);
  if (PyDict_SetItem(__pyx_d, __pyx_n_s_pyx_unpickle_InsecureChannelCr, __pyx_t_6) < 0) __PYX_ERR(11, 1, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;

  /* "(tree fragment)":1
 * def __pyx_unpickle__Tag(__pyx_type, long __pyx_checksum, __pyx_state):             # <<<<<<<<<<<<<<
 *     cdef object __pyx_PickleError
 *     cdef object __pyx_result
 */
  __pyx_t_6 = PyCFunction_NewEx(&__pyx_mdef_4grpc_7_cython_6cygrpc_187__pyx_unpickle__Tag, NULL, __pyx_n_s_grpc__cython_cygrpc); if (unlikely(!__pyx_t_6)) __PYX_ERR(11, 1, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_6);
  if (PyDict_SetItem(__pyx_d, __pyx_n_s_pyx_unpickle__Tag, __pyx_t_6) < 0) __PYX_ERR(11, 1, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;

  /* "(tree fragment)":11
 *         __pyx_unpickle__Tag__set_state(<_Tag> __pyx_result, __pyx_state)
 *     return __pyx_result
 * cdef __pyx_unpickle__Tag__set_state(_Tag __pyx_result, tuple __pyx_state):             # <<<<<<<<<<<<<<
 *     if len(__pyx_state) > 0 and hasattr(__pyx_result, '__dict__'):
 *         __pyx_result.__dict__.update(__pyx_state[0])
 */
  __pyx_t_6 = PyCFunction_NewEx(&__pyx_mdef_4grpc_7_cython_6cygrpc_189__pyx_unpickle_CensusContext, NULL, __pyx_n_s_grpc__cython_cygrpc); if (unlikely(!__pyx_t_6)) __PYX_ERR(11, 1, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_6);
  if (PyDict_SetItem(__pyx_d, __pyx_n_s_pyx_unpickle_CensusContext, __pyx_t_6) < 0) __PYX_ERR(11, 1, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;

  /* "(tree fragment)":1
 * def __pyx_unpickle_AioServer(__pyx_type, long __pyx_checksum, __pyx_state):             # <<<<<<<<<<<<<<
 *     cdef object __pyx_PickleError
 *     cdef object __pyx_result
 */
  __pyx_t_6 = PyCFunction_NewEx(&__pyx_mdef_4grpc_7_cython_6cygrpc_191__pyx_unpickle_AioServer, NULL, __pyx_n_s_grpc__cython_cygrpc); if (unlikely(!__pyx_t_6)) __PYX_ERR(11, 1, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_6);
  if (PyDict_SetItem(__pyx_d, __pyx_n_s_pyx_unpickle_AioServer, __pyx_t_6) < 0) __PYX_ERR(11, 1, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;

  /* "grpc/_cython/cygrpc.pyx":1
 * # Copyright 2015 gRPC authors.             # <<<<<<<<<<<<<<
 * #
 * # Licensed under the Apache License, Version 2.0 (the "License");
 */
  __pyx_t_6 = __Pyx_PyDict_NewPresized(0); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 1, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_6);
  if (PyDict_SetItem(__pyx_d, __pyx_n_s_test, __pyx_t_6) < 0) __PYX_ERR(0, 1, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;

  /* "string.to_py":55
 * 
 * @cname("__pyx_convert_PyByteArray_string_to_py_std__in_string")
 * cdef inline object __pyx_convert_PyByteArray_string_to_py_std__in_string(const string& s):             # <<<<<<<<<<<<<<
 *     return __Pyx_PyByteArray_FromStringAndSize(s.data(), s.size())
 * 
 */

  /*--- Wrapped vars code ---*/

  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_XDECREF(__pyx_t_6);
  __Pyx_XDECREF(__pyx_t_7);
  __Pyx_XDECREF(__pyx_t_9);
  if (__pyx_m) {
    if (__pyx_d) {
      __Pyx_AddTraceback("init grpc._cython.cygrpc", __pyx_clineno, __pyx_lineno, __pyx_filename);
    }
    Py_CLEAR(__pyx_m);
  } else if (!PyErr_Occurred()) {
    PyErr_SetString(PyExc_ImportError, "init grpc._cython.cygrpc");
  }
  __pyx_L0:;
  __Pyx_RefNannyFinishContext();
  #if CYTHON_PEP489_MULTI_PHASE_INIT
  return (__pyx_m != NULL) ? 0 : -1;
  #elif PY_MAJOR_VERSION >= 3
  return __pyx_m;
  #else
  return;
  #endif
}

/* --- Runtime support code --- */
/* Refnanny */
#if CYTHON_REFNANNY
static __Pyx_RefNannyAPIStruct *__Pyx_RefNannyImportAPI(const char *modname) {
    PyObject *m = NULL, *p = NULL;
    void *r = NULL;
    m = PyImport_ImportModule(modname);
    if (!m) goto end;
    p = PyObject_GetAttrString(m, "RefNannyAPI");
    if (!p) goto end;
    r = PyLong_AsVoidPtr(p);
end:
    Py_XDECREF(p);
    Py_XDECREF(m);
    return (__Pyx_RefNannyAPIStruct *)r;
}
#endif

/* PyObjectGetAttrStr */
#if CYTHON_USE_TYPE_SLOTS
static CYTHON_INLINE PyObject* __Pyx_PyObject_GetAttrStr(PyObject* obj, PyObject* attr_name) {
    PyTypeObject* tp = Py_TYPE(obj);
    if (likely(tp->tp_getattro))
        return tp->tp_getattro(obj, attr_name);
#if PY_MAJOR_VERSION < 3
    if (likely(tp->tp_getattr))
        return tp->tp_getattr(obj, PyString_AS_STRING(attr_name));
#endif
    return PyObject_GetAttr(obj, attr_name);
}
#endif

/* GetBuiltinName */
static PyObject *__Pyx_GetBuiltinName(PyObject *name) {
    PyObject* result = __Pyx_PyObject_GetAttrStr(__pyx_b, name);
    if (unlikely(!result)) {
        PyErr_Format(PyExc_NameError,
#if PY_MAJOR_VERSION >= 3
            "name '%U' is not defined", name);
#else
            "name '%.200s' is not defined", PyString_AS_STRING(name));
#endif
    }
    return result;
}

/* PyCFunctionFastCall */
#if CYTHON_FAST_PYCCALL
static CYTHON_INLINE PyObject * __Pyx_PyCFunction_FastCall(PyObject *func_obj, PyObject **args, Py_ssize_t nargs) {
    PyCFunctionObject *func = (PyCFunctionObject*)func_obj;
    PyCFunction meth = PyCFunction_GET_FUNCTION(func);
    PyObject *self = PyCFunction_GET_SELF(func);
    int flags = PyCFunction_GET_FLAGS(func);
    assert(PyCFunction_Check(func));
    assert(METH_FASTCALL == (flags & ~(METH_CLASS | METH_STATIC | METH_COEXIST | METH_KEYWORDS | METH_STACKLESS)));
    assert(nargs >= 0);
    assert(nargs == 0 || args != NULL);
    /* _PyCFunction_FastCallDict() must not be called with an exception set,
       because it may clear it (directly or indirectly) and so the
       caller loses its exception */
    assert(!PyErr_Occurred());
    if ((PY_VERSION_HEX < 0x030700A0) || unlikely(flags & METH_KEYWORDS)) {
        return (*((__Pyx_PyCFunctionFastWithKeywords)(void*)meth)) (self, args, nargs, NULL);
    } else {
        return (*((__Pyx_PyCFunctionFast)(void*)meth)) (self, args, nargs);
    }
}
#endif

/* PyFunctionFastCall */
#if CYTHON_FAST_PYCALL
static PyObject* __Pyx_PyFunction_FastCallNoKw(PyCodeObject *co, PyObject **args, Py_ssize_t na,
                                               PyObject *globals) {
    PyFrameObject *f;
    PyThreadState *tstate = __Pyx_PyThreadState_Current;
    PyObject **fastlocals;
    Py_ssize_t i;
    PyObject *result;
    assert(globals != NULL);
    /* XXX Perhaps we should create a specialized
       PyFrame_New() that doesn't take locals, but does
       take builtins without sanity checking them.
       */
    assert(tstate != NULL);
    f = PyFrame_New(tstate, co, globals, NULL);
    if (f == NULL) {
        return NULL;
    }
    fastlocals = __Pyx_PyFrame_GetLocalsplus(f);
    for (i = 0; i < na; i++) {
        Py_INCREF(*args);
        fastlocals[i] = *args++;
    }
    result = PyEval_EvalFrameEx(f,0);
    ++tstate->recursion_depth;
    Py_DECREF(f);
    --tstate->recursion_depth;
    return result;
}
#if 1 || PY_VERSION_HEX < 0x030600B1
static PyObject *__Pyx_PyFunction_FastCallDict(PyObject *func, PyObject **args, Py_ssize_t nargs, PyObject *kwargs) {
    PyCodeObject *co = (PyCodeObject *)PyFunction_GET_CODE(func);
    PyObject *globals = PyFunction_GET_GLOBALS(func);
    PyObject *argdefs = PyFunction_GET_DEFAULTS(func);
    PyObject *closure;
#if PY_MAJOR_VERSION >= 3
    PyObject *kwdefs;
#endif
    PyObject *kwtuple, **k;
    PyObject **d;
    Py_ssize_t nd;
    Py_ssize_t nk;
    PyObject *result;
    assert(kwargs == NULL || PyDict_Check(kwargs));
    nk = kwargs ? PyDict_Size(kwargs) : 0;
    if (Py_EnterRecursiveCall((char*)" while calling a Python object")) {
        return NULL;
    }
    if (
#if PY_MAJOR_VERSION >= 3
            co->co_kwonlyargcount == 0 &&
#endif
            likely(kwargs == NULL || nk == 0) &&
            co->co_flags == (CO_OPTIMIZED | CO_NEWLOCALS | CO_NOFREE)) {
        if (argdefs == NULL && co->co_argcount == nargs) {
            result = __Pyx_PyFunction_FastCallNoKw(co, args, nargs, globals);
            goto done;
        }
        else if (nargs == 0 && argdefs != NULL
                 && co->co_argcount == Py_SIZE(argdefs)) {
            /* function called with no arguments, but all parameters have
               a default value: use default values as arguments .*/
            args = &PyTuple_GET_ITEM(argdefs, 0);
            result =__Pyx_PyFunction_FastCallNoKw(co, args, Py_SIZE(argdefs), globals);
            goto done;
        }
    }
    if (kwargs != NULL) {
        Py_ssize_t pos, i;
        kwtuple = PyTuple_New(2 * nk);
        if (kwtuple == NULL) {
            result = NULL;
            goto done;
        }
        k = &PyTuple_GET_ITEM(kwtuple, 0);
        pos = i = 0;
        while (PyDict_Next(kwargs, &pos, &k[i], &k[i+1])) {
            Py_INCREF(k[i]);
            Py_INCREF(k[i+1]);
            i += 2;
        }
        nk = i / 2;
    }
    else {
        kwtuple = NULL;
        k = NULL;
    }
    closure = PyFunction_GET_CLOSURE(func);
#if PY_MAJOR_VERSION >= 3
    kwdefs = PyFunction_GET_KW_DEFAULTS(func);
#endif
    if (argdefs != NULL) {
        d = &PyTuple_GET_ITEM(argdefs, 0);
        nd = Py_SIZE(argdefs);
    }
    else {
        d = NULL;
        nd = 0;
    }
#if PY_MAJOR_VERSION >= 3
    result = PyEval_EvalCodeEx((PyObject*)co, globals, (PyObject *)NULL,
                               args, (int)nargs,
                               k, (int)nk,
                               d, (int)nd, kwdefs, closure);
#else
    result = PyEval_EvalCodeEx(co, globals, (PyObject *)NULL,
                               args, (int)nargs,
                               k, (int)nk,
                               d, (int)nd, closure);
#endif
    Py_XDECREF(kwtuple);
done:
    Py_LeaveRecursiveCall();
    return result;
}
#endif
#endif

/* PyObjectCall */
#if CYTHON_COMPILING_IN_CPYTHON
static CYTHON_INLINE PyObject* __Pyx_PyObject_Call(PyObject *func, PyObject *arg, PyObject *kw) {
    PyObject *result;
    ternaryfunc call = Py_TYPE(func)->tp_call;
    if (unlikely(!call))
        return PyObject_Call(func, arg, kw);
    if (unlikely(Py_EnterRecursiveCall((char*)" while calling a Python object")))
        return NULL;
    result = (*call)(func, arg, kw);
    Py_LeaveRecursiveCall();
    if (unlikely(!result) && unlikely(!PyErr_Occurred())) {
        PyErr_SetString(
            PyExc_SystemError,
            "NULL result without error in PyObject_Call");
    }
    return result;
}
#endif

/* PyObjectCall2Args */
static CYTHON_UNUSED PyObject* __Pyx_PyObject_Call2Args(PyObject* function, PyObject* arg1, PyObject* arg2) {
    PyObject *args, *result = NULL;
    #if CYTHON_FAST_PYCALL
    if (PyFunction_Check(function)) {
        PyObject *args[2] = {arg1, arg2};
        return __Pyx_PyFunction_FastCall(function, args, 2);
    }
    #endif
    #if CYTHON_FAST_PYCCALL
    if (__Pyx_PyFastCFunction_Check(function)) {
        PyObject *args[2] = {arg1, arg2};
        return __Pyx_PyCFunction_FastCall(function, args, 2);
    }
    #endif
    args = PyTuple_New(2);
    if (unlikely(!args)) goto done;
    Py_INCREF(arg1);
    PyTuple_SET_ITEM(args, 0, arg1);
    Py_INCREF(arg2);
    PyTuple_SET_ITEM(args, 1, arg2);
    Py_INCREF(function);
    result = __Pyx_PyObject_Call(function, args, NULL);
    Py_DECREF(args);
    Py_DECREF(function);
done:
    return result;
}

/* PyObjectCallMethO */
#if CYTHON_COMPILING_IN_CPYTHON
static CYTHON_INLINE PyObject* __Pyx_PyObject_CallMethO(PyObject *func, PyObject *arg) {
    PyObject *self, *result;
    PyCFunction cfunc;
    cfunc = PyCFunction_GET_FUNCTION(func);
    self = PyCFunction_GET_SELF(func);
    if (unlikely(Py_EnterRecursiveCall((char*)" while calling a Python object")))
        return NULL;
    result = cfunc(self, arg);
    Py_LeaveRecursiveCall();
    if (unlikely(!result) && unlikely(!PyErr_Occurred())) {
        PyErr_SetString(
            PyExc_SystemError,
            "NULL result without error in PyObject_Call");
    }
    return result;
}
#endif

/* PyObjectCallOneArg */
#if CYTHON_COMPILING_IN_CPYTHON
static PyObject* __Pyx__PyObject_CallOneArg(PyObject *func, PyObject *arg) {
    PyObject *result;
    PyObject *args = PyTuple_New(1);
    if (unlikely(!args)) return NULL;
    Py_INCREF(arg);
    PyTuple_SET_ITEM(args, 0, arg);
    result = __Pyx_PyObject_Call(func, args, NULL);
    Py_DECREF(args);
    return result;
}
static CYTHON_INLINE PyObject* __Pyx_PyObject_CallOneArg(PyObject *func, PyObject *arg) {
#if CYTHON_FAST_PYCALL
    if (PyFunction_Check(func)) {
        return __Pyx_PyFunction_FastCall(func, &arg, 1);
    }
#endif
    if (likely(PyCFunction_Check(func))) {
        if (likely(PyCFunction_GET_FLAGS(func) & METH_O)) {
            return __Pyx_PyObject_CallMethO(func, arg);
#if CYTHON_FAST_PYCCALL
        } else if (__Pyx_PyFastCFunction_Check(func)) {
            return __Pyx_PyCFunction_FastCall(func, &arg, 1);
#endif
        }
    }
    return __Pyx__PyObject_CallOneArg(func, arg);
}
#else
static CYTHON_INLINE PyObject* __Pyx_PyObject_CallOneArg(PyObject *func, PyObject *arg) {
    PyObject *result;
    PyObject *args = PyTuple_Pack(1, arg);
    if (unlikely(!args)) return NULL;
    result = __Pyx_PyObject_Call(func, args, NULL);
    Py_DECREF(args);
    return result;
}
#endif

/* PyErrFetchRestore */
#if CYTHON_FAST_THREAD_STATE
static CYTHON_INLINE void __Pyx_ErrRestoreInState(PyThreadState *tstate, PyObject *type, PyObject *value, PyObject *tb) {
    PyObject *tmp_type, *tmp_value, *tmp_tb;
    tmp_type = tstate->curexc_type;
    tmp_value = tstate->curexc_value;
    tmp_tb = tstate->curexc_traceback;
    tstate->curexc_type = type;
    tstate->curexc_value = value;
    tstate->curexc_traceback = tb;
    Py_XDECREF(tmp_type);
    Py_XDECREF(tmp_value);
    Py_XDECREF(tmp_tb);
}
static CYTHON_INLINE void __Pyx_ErrFetchInState(PyThreadState *tstate, PyObject **type, PyObject **value, PyObject **tb) {
    *type = tstate->curexc_type;
    *value = tstate->curexc_value;
    *tb = tstate->curexc_traceback;
    tstate->curexc_type = 0;
    tstate->curexc_value = 0;
    tstate->curexc_traceback = 0;
}
#endif

/* RaiseException */
#if PY_MAJOR_VERSION < 3
static void __Pyx_Raise(PyObject *type, PyObject *value, PyObject *tb,
                        CYTHON_UNUSED PyObject *cause) {
    __Pyx_PyThreadState_declare
    Py_XINCREF(type);
    if (!value || value == Py_None)
        value = NULL;
    else
        Py_INCREF(value);
    if (!tb || tb == Py_None)
        tb = NULL;
    else {
        Py_INCREF(tb);
        if (!PyTraceBack_Check(tb)) {
            PyErr_SetString(PyExc_TypeError,
                "raise: arg 3 must be a traceback or None");
            goto raise_error;
        }
    }
    if (PyType_Check(type)) {
#if CYTHON_COMPILING_IN_PYPY
        if (!value) {
            Py_INCREF(Py_None);
            value = Py_None;
        }
#endif
        PyErr_NormalizeException(&type, &value, &tb);
    } else {
        if (value) {
            PyErr_SetString(PyExc_TypeError,
                "instance exception may not have a separate value");
            goto raise_error;
        }
        value = type;
        type = (PyObject*) Py_TYPE(type);
        Py_INCREF(type);
        if (!PyType_IsSubtype((PyTypeObject *)type, (PyTypeObject *)PyExc_BaseException)) {
            PyErr_SetString(PyExc_TypeError,
                "raise: exception class must be a subclass of BaseException");
            goto raise_error;
        }
    }
    __Pyx_PyThreadState_assign
    __Pyx_ErrRestore(type, value, tb);
    return;
raise_error:
    Py_XDECREF(value);
    Py_XDECREF(type);
    Py_XDECREF(tb);
    return;
}
#else
static void __Pyx_Raise(PyObject *type, PyObject *value, PyObject *tb, PyObject *cause) {
    PyObject* owned_instance = NULL;
    if (tb == Py_None) {
        tb = 0;
    } else if (tb && !PyTraceBack_Check(tb)) {
        PyErr_SetString(PyExc_TypeError,
            "raise: arg 3 must be a traceback or None");
        goto bad;
    }
    if (value == Py_None)
        value = 0;
    if (PyExceptionInstance_Check(type)) {
        if (value) {
            PyErr_SetString(PyExc_TypeError,
                "instance exception may not have a separate value");
            goto bad;
        }
        value = type;
        type = (PyObject*) Py_TYPE(value);
    } else if (PyExceptionClass_Check(type)) {
        PyObject *instance_class = NULL;
        if (value && PyExceptionInstance_Check(value)) {
            instance_class = (PyObject*) Py_TYPE(value);
            if (instance_class != type) {
                int is_subclass = PyObject_IsSubclass(instance_class, type);
                if (!is_subclass) {
                    instance_class = NULL;
                } else if (unlikely(is_subclass == -1)) {
                    goto bad;
                } else {
                    type = instance_class;
                }
            }
        }
        if (!instance_class) {
            PyObject *args;
            if (!value)
                args = PyTuple_New(0);
            else if (PyTuple_Check(value)) {
                Py_INCREF(value);
                args = value;
            } else
                args = PyTuple_Pack(1, value);
            if (!args)
                goto bad;
            owned_instance = PyObject_Call(type, args, NULL);
            Py_DECREF(args);
            if (!owned_instance)
                goto bad;
            value = owned_instance;
            if (!PyExceptionInstance_Check(value)) {
                PyErr_Format(PyExc_TypeError,
                             "calling %R should have returned an instance of "
                             "BaseException, not %R",
                             type, Py_TYPE(value));
                goto bad;
            }
        }
    } else {
        PyErr_SetString(PyExc_TypeError,
            "raise: exception class must be a subclass of BaseException");
        goto bad;
    }
    if (cause) {
        PyObject *fixed_cause;
        if (cause == Py_None) {
            fixed_cause = NULL;
        } else if (PyExceptionClass_Check(cause)) {
            fixed_cause = PyObject_CallObject(cause, NULL);
            if (fixed_cause == NULL)
                goto bad;
        } else if (PyExceptionInstance_Check(cause)) {
            fixed_cause = cause;
            Py_INCREF(fixed_cause);
        } else {
            PyErr_SetString(PyExc_TypeError,
                            "exception causes must derive from "
                            "BaseException");
            goto bad;
        }
        PyException_SetCause(value, fixed_cause);
    }
    PyErr_SetObject(type, value);
    if (tb) {
#if CYTHON_COMPILING_IN_PYPY
        PyObject *tmp_type, *tmp_value, *tmp_tb;
        PyErr_Fetch(&tmp_type, &tmp_value, &tmp_tb);
        Py_INCREF(tb);
        PyErr_Restore(tmp_type, tmp_value, tb);
        Py_XDECREF(tmp_tb);
#else
        PyThreadState *tstate = __Pyx_PyThreadState_Current;
        PyObject* tmp_tb = tstate->curexc_traceback;
        if (tb != tmp_tb) {
            Py_INCREF(tb);
            tstate->curexc_traceback = tb;
            Py_XDECREF(tmp_tb);
        }
#endif
    }
bad:
    Py_XDECREF(owned_instance);
    return;
}
#endif

/* decode_c_bytes */
static CYTHON_INLINE PyObject* __Pyx_decode_c_bytes(
         const char* cstring, Py_ssize_t length, Py_ssize_t start, Py_ssize_t stop,
         const char* encoding, const char* errors,
         PyObject* (*decode_func)(const char *s, Py_ssize_t size, const char *errors)) {
    if (unlikely((start < 0) | (stop < 0))) {
        if (start < 0) {
            start += length;
            if (start < 0)
                start = 0;
        }
        if (stop < 0)
            stop += length;
    }
    if (stop > length)
        stop = length;
    if (unlikely(stop <= start))
        return __Pyx_NewRef(__pyx_empty_unicode);
    length = stop - start;
    cstring += start;
    if (decode_func) {
        return decode_func(cstring, length, errors);
    } else {
        return PyUnicode_Decode(cstring, length, encoding, errors);
    }
}

/* GetTopmostException */
#if CYTHON_USE_EXC_INFO_STACK
static _PyErr_StackItem *
__Pyx_PyErr_GetTopmostException(PyThreadState *tstate)
{
    _PyErr_StackItem *exc_info = tstate->exc_info;
    while ((exc_info->exc_type == NULL || exc_info->exc_type == Py_None) &&
           exc_info->previous_item != NULL)
    {
        exc_info = exc_info->previous_item;
    }
    return exc_info;
}
#endif

/* SaveResetException */
#if CYTHON_FAST_THREAD_STATE
static CYTHON_INLINE void __Pyx__ExceptionSave(PyThreadState *tstate, PyObject **type, PyObject **value, PyObject **tb) {
    #if CYTHON_USE_EXC_INFO_STACK
    _PyErr_StackItem *exc_info = __Pyx_PyErr_GetTopmostException(tstate);
    *type = exc_info->exc_type;
    *value = exc_info->exc_value;
    *tb = exc_info->exc_traceback;
    #else
    *type = tstate->exc_type;
    *value = tstate->exc_value;
    *tb = tstate->exc_traceback;
    #endif
    Py_XINCREF(*type);
    Py_XINCREF(*value);
    Py_XINCREF(*tb);
}
static CYTHON_INLINE void __Pyx__ExceptionReset(PyThreadState *tstate, PyObject *type, PyObject *value, PyObject *tb) {
    PyObject *tmp_type, *tmp_value, *tmp_tb;
    #if CYTHON_USE_EXC_INFO_STACK
    _PyErr_StackItem *exc_info = tstate->exc_info;
    tmp_type = exc_info->exc_type;
    tmp_value = exc_info->exc_value;
    tmp_tb = exc_info->exc_traceback;
    exc_info->exc_type = type;
    exc_info->exc_value = value;
    exc_info->exc_traceback = tb;
    #else
    tmp_type = tstate->exc_type;
    tmp_value = tstate->exc_value;
    tmp_tb = tstate->exc_traceback;
    tstate->exc_type = type;
    tstate->exc_value = value;
    tstate->exc_traceback = tb;
    #endif
    Py_XDECREF(tmp_type);
    Py_XDECREF(tmp_value);
    Py_XDECREF(tmp_tb);
}
#endif

/* PyErrExceptionMatches */
#if CYTHON_FAST_THREAD_STATE
static int __Pyx_PyErr_ExceptionMatchesTuple(PyObject *exc_type, PyObject *tuple) {
    Py_ssize_t i, n;
    n = PyTuple_GET_SIZE(tuple);
#if PY_MAJOR_VERSION >= 3
    for (i=0; i<n; i++) {
        if (exc_type == PyTuple_GET_ITEM(tuple, i)) return 1;
    }
#endif
    for (i=0; i<n; i++) {
        if (__Pyx_PyErr_GivenExceptionMatches(exc_type, PyTuple_GET_ITEM(tuple, i))) return 1;
    }
    return 0;
}
static CYTHON_INLINE int __Pyx_PyErr_ExceptionMatchesInState(PyThreadState* tstate, PyObject* err) {
    PyObject *exc_type = tstate->curexc_type;
    if (exc_type == err) return 1;
    if (unlikely(!exc_type)) return 0;
    if (unlikely(PyTuple_Check(err)))
        return __Pyx_PyErr_ExceptionMatchesTuple(exc_type, err);
    return __Pyx_PyErr_GivenExceptionMatches(exc_type, err);
}
#endif

/* GetException */
#if CYTHON_FAST_THREAD_STATE
static int __Pyx__GetException(PyThreadState *tstate, PyObject **type, PyObject **value, PyObject **tb)
#else
static int __Pyx_GetException(PyObject **type, PyObject **value, PyObject **tb)
#endif
{
    PyObject *local_type, *local_value, *local_tb;
#if CYTHON_FAST_THREAD_STATE
    PyObject *tmp_type, *tmp_value, *tmp_tb;
    local_type = tstate->curexc_type;
    local_value = tstate->curexc_value;
    local_tb = tstate->curexc_traceback;
    tstate->curexc_type = 0;
    tstate->curexc_value = 0;
    tstate->curexc_traceback = 0;
#else
    PyErr_Fetch(&local_type, &local_value, &local_tb);
#endif
    PyErr_NormalizeException(&local_type, &local_value, &local_tb);
#if CYTHON_FAST_THREAD_STATE
    if (unlikely(tstate->curexc_type))
#else
    if (unlikely(PyErr_Occurred()))
#endif
        goto bad;
    #if PY_MAJOR_VERSION >= 3
    if (local_tb) {
        if (unlikely(PyException_SetTraceback(local_value, local_tb) < 0))
            goto bad;
    }
    #endif
    Py_XINCREF(local_tb);
    Py_XINCREF(local_type);
    Py_XINCREF(local_value);
    *type = local_type;
    *value = local_value;
    *tb = local_tb;
#if CYTHON_FAST_THREAD_STATE
    #if CYTHON_USE_EXC_INFO_STACK
    {
        _PyErr_StackItem *exc_info = tstate->exc_info;
        tmp_type = exc_info->exc_type;
        tmp_value = exc_info->exc_value;
        tmp_tb = exc_info->exc_traceback;
        exc_info->exc_type = local_type;
        exc_info->exc_value = local_value;
        exc_info->exc_traceback = local_tb;
    }
    #else
    tmp_type = tstate->exc_type;
    tmp_value = tstate->exc_value;
    tmp_tb = tstate->exc_traceback;
    tstate->exc_type = local_type;
    tstate->exc_value = local_value;
    tstate->exc_traceback = local_tb;
    #endif
    Py_XDECREF(tmp_type);
    Py_XDECREF(tmp_value);
    Py_XDECREF(tmp_tb);
#else
    PyErr_SetExcInfo(local_type, local_value, local_tb);
#endif
    return 0;
bad:
    *type = 0;
    *value = 0;
    *tb = 0;
    Py_XDECREF(local_type);
    Py_XDECREF(local_value);
    Py_XDECREF(local_tb);
    return -1;
}

/* PyDictVersioning */
#if CYTHON_USE_DICT_VERSIONS && CYTHON_USE_TYPE_SLOTS
static CYTHON_INLINE PY_UINT64_T __Pyx_get_tp_dict_version(PyObject *obj) {
    PyObject *dict = Py_TYPE(obj)->tp_dict;
    return likely(dict) ? __PYX_GET_DICT_VERSION(dict) : 0;
}
static CYTHON_INLINE PY_UINT64_T __Pyx_get_object_dict_version(PyObject *obj) {
    PyObject **dictptr = NULL;
    Py_ssize_t offset = Py_TYPE(obj)->tp_dictoffset;
    if (offset) {
#if CYTHON_COMPILING_IN_CPYTHON
        dictptr = (likely(offset > 0)) ? (PyObject **) ((char *)obj + offset) : _PyObject_GetDictPtr(obj);
#else
        dictptr = _PyObject_GetDictPtr(obj);
#endif
    }
    return (dictptr && *dictptr) ? __PYX_GET_DICT_VERSION(*dictptr) : 0;
}
static CYTHON_INLINE int __Pyx_object_dict_version_matches(PyObject* obj, PY_UINT64_T tp_dict_version, PY_UINT64_T obj_dict_version) {
    PyObject *dict = Py_TYPE(obj)->tp_dict;
    if (unlikely(!dict) || unlikely(tp_dict_version != __PYX_GET_DICT_VERSION(dict)))
        return 0;
    return obj_dict_version == __Pyx_get_object_dict_version(obj);
}
#endif

/* GetModuleGlobalName */
#if CYTHON_USE_DICT_VERSIONS
static PyObject *__Pyx__GetModuleGlobalName(PyObject *name, PY_UINT64_T *dict_version, PyObject **dict_cached_value)
#else
static CYTHON_INLINE PyObject *__Pyx__GetModuleGlobalName(PyObject *name)
#endif
{
    PyObject *result;
#if !CYTHON_AVOID_BORROWED_REFS
#if CYTHON_COMPILING_IN_CPYTHON && PY_VERSION_HEX >= 0x030500A1
    result = _PyDict_GetItem_KnownHash(__pyx_d, name, ((PyASCIIObject *) name)->hash);
    __PYX_UPDATE_DICT_CACHE(__pyx_d, result, *dict_cached_value, *dict_version)
    if (likely(result)) {
        return __Pyx_NewRef(result);
    } else if (unlikely(PyErr_Occurred())) {
        return NULL;
    }
#else
    result = PyDict_GetItem(__pyx_d, name);
    __PYX_UPDATE_DICT_CACHE(__pyx_d, result, *dict_cached_value, *dict_version)
    if (likely(result)) {
        return __Pyx_NewRef(result);
    }
#endif
#else
    result = PyObject_GetItem(__pyx_d, name);
    __PYX_UPDATE_DICT_CACHE(__pyx_d, result, *dict_cached_value, *dict_version)
    if (likely(result)) {
        return __Pyx_NewRef(result);
    }
    PyErr_Clear();
#endif
    return __Pyx_GetBuiltinName(name);
}

/* PyObjectCallNoArg */
#if CYTHON_COMPILING_IN_CPYTHON
static CYTHON_INLINE PyObject* __Pyx_PyObject_CallNoArg(PyObject *func) {
#if CYTHON_FAST_PYCALL
    if (PyFunction_Check(func)) {
        return __Pyx_PyFunction_FastCall(func, NULL, 0);
    }
#endif
#ifdef __Pyx_CyFunction_USED
    if (likely(PyCFunction_Check(func) || __Pyx_CyFunction_Check(func)))
#else
    if (likely(PyCFunction_Check(func)))
#endif
    {
        if (likely(PyCFunction_GET_FLAGS(func) & METH_NOARGS)) {
            return __Pyx_PyObject_CallMethO(func, NULL);
        }
    }
    return __Pyx_PyObject_Call(func, __pyx_empty_tuple, NULL);
}
#endif

/* GetItemInt */
static PyObject *__Pyx_GetItemInt_Generic(PyObject *o, PyObject* j) {
    PyObject *r;
    if (!j) return NULL;
    r = PyObject_GetItem(o, j);
    Py_DECREF(j);
    return r;
}
static CYTHON_INLINE PyObject *__Pyx_GetItemInt_List_Fast(PyObject *o, Py_ssize_t i,
                                                              CYTHON_NCP_UNUSED int wraparound,
                                                              CYTHON_NCP_UNUSED int boundscheck) {
#if CYTHON_ASSUME_SAFE_MACROS && !CYTHON_AVOID_BORROWED_REFS
    Py_ssize_t wrapped_i = i;
    if (wraparound & unlikely(i < 0)) {
        wrapped_i += PyList_GET_SIZE(o);
    }
    if ((!boundscheck) || likely(__Pyx_is_valid_index(wrapped_i, PyList_GET_SIZE(o)))) {
        PyObject *r = PyList_GET_ITEM(o, wrapped_i);
        Py_INCREF(r);
        return r;
    }
    return __Pyx_GetItemInt_Generic(o, PyInt_FromSsize_t(i));
#else
    return PySequence_GetItem(o, i);
#endif
}
static CYTHON_INLINE PyObject *__Pyx_GetItemInt_Tuple_Fast(PyObject *o, Py_ssize_t i,
                                                              CYTHON_NCP_UNUSED int wraparound,
                                                              CYTHON_NCP_UNUSED int boundscheck) {
#if CYTHON_ASSUME_SAFE_MACROS && !CYTHON_AVOID_BORROWED_REFS
    Py_ssize_t wrapped_i = i;
    if (wraparound & unlikely(i < 0)) {
        wrapped_i += PyTuple_GET_SIZE(o);
    }
    if ((!boundscheck) || likely(__Pyx_is_valid_index(wrapped_i, PyTuple_GET_SIZE(o)))) {
        PyObject *r = PyTuple_GET_ITEM(o, wrapped_i);
        Py_INCREF(r);
        return r;
    }
    return __Pyx_GetItemInt_Generic(o, PyInt_FromSsize_t(i));
#else
    return PySequence_GetItem(o, i);
#endif
}
static CYTHON_INLINE PyObject *__Pyx_GetItemInt_Fast(PyObject *o, Py_ssize_t i, int is_list,
                                                     CYTHON_NCP_UNUSED int wraparound,
                                                     CYTHON_NCP_UNUSED int boundscheck) {
#if CYTHON_ASSUME_SAFE_MACROS && !CYTHON_AVOID_BORROWED_REFS && CYTHON_USE_TYPE_SLOTS
    if (is_list || PyList_CheckExact(o)) {
        Py_ssize_t n = ((!wraparound) | likely(i >= 0)) ? i : i + PyList_GET_SIZE(o);
        if ((!boundscheck) || (likely(__Pyx_is_valid_index(n, PyList_GET_SIZE(o))))) {
            PyObject *r = PyList_GET_ITEM(o, n);
            Py_INCREF(r);
            return r;
        }
    }
    else if (PyTuple_CheckExact(o)) {
        Py_ssize_t n = ((!wraparound) | likely(i >= 0)) ? i : i + PyTuple_GET_SIZE(o);
        if ((!boundscheck) || likely(__Pyx_is_valid_index(n, PyTuple_GET_SIZE(o)))) {
            PyObject *r = PyTuple_GET_ITEM(o, n);
            Py_INCREF(r);
            return r;
        }
    } else {
        PySequenceMethods *m = Py_TYPE(o)->tp_as_sequence;
        if (likely(m && m->sq_item)) {
            if (wraparound && unlikely(i < 0) && likely(m->sq_length)) {
                Py_ssize_t l = m->sq_length(o);
                if (likely(l >= 0)) {
                    i += l;
                } else {
                    if (!PyErr_ExceptionMatches(PyExc_OverflowError))
                        return NULL;
                    PyErr_Clear();
                }
            }
            return m->sq_item(o, i);
        }
    }
#else
    if (is_list || PySequence_Check(o)) {
        return PySequence_GetItem(o, i);
    }
#endif
    return __Pyx_GetItemInt_Generic(o, PyInt_FromSsize_t(i));
}

/* ExtTypeTest */
static CYTHON_INLINE int __Pyx_TypeTest(PyObject *obj, PyTypeObject *type) {
    if (unlikely(!type)) {
        PyErr_SetString(PyExc_SystemError, "Missing type object");
        return 0;
    }
    if (likely(__Pyx_TypeCheck(obj, type)))
        return 1;
    PyErr_Format(PyExc_TypeError, "Cannot convert %.200s to %.200s",
                 Py_TYPE(obj)->tp_name, type->tp_name);
    return 0;
}

/* WriteUnraisableException */
static void __Pyx_WriteUnraisable(const char *name, CYTHON_UNUSED int clineno,
                                  CYTHON_UNUSED int lineno, CYTHON_UNUSED const char *filename,
                                  int full_traceback, CYTHON_UNUSED int nogil) {
    PyObject *old_exc, *old_val, *old_tb;
    PyObject *ctx;
    __Pyx_PyThreadState_declare
#ifdef WITH_THREAD
    PyGILState_STATE state;
    if (nogil)
        state = PyGILState_Ensure();
#ifdef _MSC_VER
    else state = (PyGILState_STATE)-1;
#endif
#endif
    __Pyx_PyThreadState_assign
    __Pyx_ErrFetch(&old_exc, &old_val, &old_tb);
    if (full_traceback) {
        Py_XINCREF(old_exc);
        Py_XINCREF(old_val);
        Py_XINCREF(old_tb);
        __Pyx_ErrRestore(old_exc, old_val, old_tb);
        PyErr_PrintEx(1);
    }
    #if PY_MAJOR_VERSION < 3
    ctx = PyString_FromString(name);
    #else
    ctx = PyUnicode_FromString(name);
    #endif
    __Pyx_ErrRestore(old_exc, old_val, old_tb);
    if (!ctx) {
        PyErr_WriteUnraisable(Py_None);
    } else {
        PyErr_WriteUnraisable(ctx);
        Py_DECREF(ctx);
    }
#ifdef WITH_THREAD
    if (nogil)
        PyGILState_Release(state);
#endif
}

/* RaiseTooManyValuesToUnpack */
static CYTHON_INLINE void __Pyx_RaiseTooManyValuesError(Py_ssize_t expected) {
    PyErr_Format(PyExc_ValueError,
                 "too many values to unpack (expected %" CYTHON_FORMAT_SSIZE_T "d)", expected);
}

/* RaiseNeedMoreValuesToUnpack */
static CYTHON_INLINE void __Pyx_RaiseNeedMoreValuesError(Py_ssize_t index) {
    PyErr_Format(PyExc_ValueError,
                 "need more than %" CYTHON_FORMAT_SSIZE_T "d value%.1s to unpack",
                 index, (index == 1) ? "" : "s");
}

/* IterFinish */
static CYTHON_INLINE int __Pyx_IterFinish(void) {
#if CYTHON_FAST_THREAD_STATE
    PyThreadState *tstate = __Pyx_PyThreadState_Current;
    PyObject* exc_type = tstate->curexc_type;
    if (unlikely(exc_type)) {
        if (likely(__Pyx_PyErr_GivenExceptionMatches(exc_type, PyExc_StopIteration))) {
            PyObject *exc_value, *exc_tb;
            exc_value = tstate->curexc_value;
            exc_tb = tstate->curexc_traceback;
            tstate->curexc_type = 0;
            tstate->curexc_value = 0;
            tstate->curexc_traceback = 0;
            Py_DECREF(exc_type);
            Py_XDECREF(exc_value);
            Py_XDECREF(exc_tb);
            return 0;
        } else {
            return -1;
        }
    }
    return 0;
#else
    if (unlikely(PyErr_Occurred())) {
        if (likely(PyErr_ExceptionMatches(PyExc_StopIteration))) {
            PyErr_Clear();
            return 0;
        } else {
            return -1;
        }
    }
    return 0;
#endif
}

/* UnpackItemEndCheck */
static int __Pyx_IternextUnpackEndCheck(PyObject *retval, Py_ssize_t expected) {
    if (unlikely(retval)) {
        Py_DECREF(retval);
        __Pyx_RaiseTooManyValuesError(expected);
        return -1;
    } else {
        return __Pyx_IterFinish();
    }
    return 0;
}

/* PyObjectGetMethod */
static int __Pyx_PyObject_GetMethod(PyObject *obj, PyObject *name, PyObject **method) {
    PyObject *attr;
#if CYTHON_UNPACK_METHODS && CYTHON_COMPILING_IN_CPYTHON && CYTHON_USE_PYTYPE_LOOKUP
    PyTypeObject *tp = Py_TYPE(obj);
    PyObject *descr;
    descrgetfunc f = NULL;
    PyObject **dictptr, *dict;
    int meth_found = 0;
    assert (*method == NULL);
    if (unlikely(tp->tp_getattro != PyObject_GenericGetAttr)) {
        attr = __Pyx_PyObject_GetAttrStr(obj, name);
        goto try_unpack;
    }
    if (unlikely(tp->tp_dict == NULL) && unlikely(PyType_Ready(tp) < 0)) {
        return 0;
    }
    descr = _PyType_Lookup(tp, name);
    if (likely(descr != NULL)) {
        Py_INCREF(descr);
#if PY_MAJOR_VERSION >= 3
        #ifdef __Pyx_CyFunction_USED
        if (likely(PyFunction_Check(descr) || (Py_TYPE(descr) == &PyMethodDescr_Type) || __Pyx_CyFunction_Check(descr)))
        #else
        if (likely(PyFunction_Check(descr) || (Py_TYPE(descr) == &PyMethodDescr_Type)))
        #endif
#else
        #ifdef __Pyx_CyFunction_USED
        if (likely(PyFunction_Check(descr) || __Pyx_CyFunction_Check(descr)))
        #else
        if (likely(PyFunction_Check(descr)))
        #endif
#endif
        {
            meth_found = 1;
        } else {
            f = Py_TYPE(descr)->tp_descr_get;
            if (f != NULL && PyDescr_IsData(descr)) {
                attr = f(descr, obj, (PyObject *)Py_TYPE(obj));
                Py_DECREF(descr);
                goto try_unpack;
            }
        }
    }
    dictptr = _PyObject_GetDictPtr(obj);
    if (dictptr != NULL && (dict = *dictptr) != NULL) {
        Py_INCREF(dict);
        attr = __Pyx_PyDict_GetItemStr(dict, name);
        if (attr != NULL) {
            Py_INCREF(attr);
            Py_DECREF(dict);
            Py_XDECREF(descr);
            goto try_unpack;
        }
        Py_DECREF(dict);
    }
    if (meth_found) {
        *method = descr;
        return 1;
    }
    if (f != NULL) {
        attr = f(descr, obj, (PyObject *)Py_TYPE(obj));
        Py_DECREF(descr);
        goto try_unpack;
    }
    if (descr != NULL) {
        *method = descr;
        return 0;
    }
    PyErr_Format(PyExc_AttributeError,
#if PY_MAJOR_VERSION >= 3
                 "'%.50s' object has no attribute '%U'",
                 tp->tp_name, name);
#else
                 "'%.50s' object has no attribute '%.400s'",
                 tp->tp_name, PyString_AS_STRING(name));
#endif
    return 0;
#else
    attr = __Pyx_PyObject_GetAttrStr(obj, name);
    goto try_unpack;
#endif
try_unpack:
#if CYTHON_UNPACK_METHODS
    if (likely(attr) && PyMethod_Check(attr) && likely(PyMethod_GET_SELF(attr) == obj)) {
        PyObject *function = PyMethod_GET_FUNCTION(attr);
        Py_INCREF(function);
        Py_DECREF(attr);
        *method = function;
        return 1;
    }
#endif
    *method = attr;
    return 0;
}

/* PyObjectCallMethod1 */
static PyObject* __Pyx__PyObject_CallMethod1(PyObject* method, PyObject* arg) {
    PyObject *result = __Pyx_PyObject_CallOneArg(method, arg);
    Py_DECREF(method);
    return result;
}
static PyObject* __Pyx_PyObject_CallMethod1(PyObject* obj, PyObject* method_name, PyObject* arg) {
    PyObject *method = NULL, *result;
    int is_method = __Pyx_PyObject_GetMethod(obj, method_name, &method);
    if (likely(is_method)) {
        result = __Pyx_PyObject_Call2Args(method, obj, arg);
        Py_DECREF(method);
        return result;
    }
    if (unlikely(!method)) return NULL;
    return __Pyx__PyObject_CallMethod1(method, arg);
}

/* append */
static CYTHON_INLINE int __Pyx_PyObject_Append(PyObject* L, PyObject* x) {
    if (likely(PyList_CheckExact(L))) {
        if (unlikely(__Pyx_PyList_Append(L, x) < 0)) return -1;
    } else {
        PyObject* retval = __Pyx_PyObject_CallMethod1(L, __pyx_n_s_append, x);
        if (unlikely(!retval))
            return -1;
        Py_DECREF(retval);
    }
    return 0;
}

/* GetAttr */
static CYTHON_INLINE PyObject *__Pyx_GetAttr(PyObject *o, PyObject *n) {
#if CYTHON_USE_TYPE_SLOTS
#if PY_MAJOR_VERSION >= 3
    if (likely(PyUnicode_Check(n)))
#else
    if (likely(PyString_Check(n)))
#endif
        return __Pyx_PyObject_GetAttrStr(o, n);
#endif
    return PyObject_GetAttr(o, n);
}

/* HasAttr */
static CYTHON_INLINE int __Pyx_HasAttr(PyObject *o, PyObject *n) {
    PyObject *r;
    if (unlikely(!__Pyx_PyBaseString_Check(n))) {
        PyErr_SetString(PyExc_TypeError,
                        "hasattr(): attribute name must be string");
        return -1;
    }
    r = __Pyx_GetAttr(o, n);
    if (unlikely(!r)) {
        PyErr_Clear();
        return 0;
    } else {
        Py_DECREF(r);
        return 1;
    }
}

/* RaiseDoubleKeywords */
static void __Pyx_RaiseDoubleKeywordsError(
    const char* func_name,
    PyObject* kw_name)
{
    PyErr_Format(PyExc_TypeError,
        #if PY_MAJOR_VERSION >= 3
        "%s() got multiple values for keyword argument '%U'", func_name, kw_name);
        #else
        "%s() got multiple values for keyword argument '%s'", func_name,
        PyString_AsString(kw_name));
        #endif
}

/* ParseKeywords */
static int __Pyx_ParseOptionalKeywords(
    PyObject *kwds,
    PyObject **argnames[],
    PyObject *kwds2,
    PyObject *values[],
    Py_ssize_t num_pos_args,
    const char* function_name)
{
    PyObject *key = 0, *value = 0;
    Py_ssize_t pos = 0;
    PyObject*** name;
    PyObject*** first_kw_arg = argnames + num_pos_args;
    while (PyDict_Next(kwds, &pos, &key, &value)) {
        name = first_kw_arg;
        while (*name && (**name != key)) name++;
        if (*name) {
            values[name-argnames] = value;
            continue;
        }
        name = first_kw_arg;
        #if PY_MAJOR_VERSION < 3
        if (likely(PyString_Check(key))) {
            while (*name) {
                if ((CYTHON_COMPILING_IN_PYPY || PyString_GET_SIZE(**name) == PyString_GET_SIZE(key))
                        && _PyString_Eq(**name, key)) {
                    values[name-argnames] = value;
                    break;
                }
                name++;
            }
            if (*name) continue;
            else {
                PyObject*** argname = argnames;
                while (argname != first_kw_arg) {
                    if ((**argname == key) || (
                            (CYTHON_COMPILING_IN_PYPY || PyString_GET_SIZE(**argname) == PyString_GET_SIZE(key))
                             && _PyString_Eq(**argname, key))) {
                        goto arg_passed_twice;
                    }
                    argname++;
                }
            }
        } else
        #endif
        if (likely(PyUnicode_Check(key))) {
            while (*name) {
                int cmp = (**name == key) ? 0 :
                #if !CYTHON_COMPILING_IN_PYPY && PY_MAJOR_VERSION >= 3
                    (__Pyx_PyUnicode_GET_LENGTH(**name) != __Pyx_PyUnicode_GET_LENGTH(key)) ? 1 :
                #endif
                    PyUnicode_Compare(**name, key);
                if (cmp < 0 && unlikely(PyErr_Occurred())) goto bad;
                if (cmp == 0) {
                    values[name-argnames] = value;
                    break;
                }
                name++;
            }
            if (*name) continue;
            else {
                PyObject*** argname = argnames;
                while (argname != first_kw_arg) {
                    int cmp = (**argname == key) ? 0 :
                    #if !CYTHON_COMPILING_IN_PYPY && PY_MAJOR_VERSION >= 3
                        (__Pyx_PyUnicode_GET_LENGTH(**argname) != __Pyx_PyUnicode_GET_LENGTH(key)) ? 1 :
                    #endif
                        PyUnicode_Compare(**argname, key);
                    if (cmp < 0 && unlikely(PyErr_Occurred())) goto bad;
                    if (cmp == 0) goto arg_passed_twice;
                    argname++;
                }
            }
        } else
            goto invalid_keyword_type;
        if (kwds2) {
            if (unlikely(PyDict_SetItem(kwds2, key, value))) goto bad;
        } else {
            goto invalid_keyword;
        }
    }
    return 0;
arg_passed_twice:
    __Pyx_RaiseDoubleKeywordsError(function_name, key);
    goto bad;
invalid_keyword_type:
    PyErr_Format(PyExc_TypeError,
        "%.200s() keywords must be strings", function_name);
    goto bad;
invalid_keyword:
    PyErr_Format(PyExc_TypeError,
    #if PY_MAJOR_VERSION < 3
        "%.200s() got an unexpected keyword argument '%.200s'",
        function_name, PyString_AsString(key));
    #else
        "%s() got an unexpected keyword argument '%U'",
        function_name, key);
    #endif
bad:
    return -1;
}

/* RaiseArgTupleInvalid */
static void __Pyx_RaiseArgtupleInvalid(
    const char* func_name,
    int exact,
    Py_ssize_t num_min,
    Py_ssize_t num_max,
    Py_ssize_t num_found)
{
    Py_ssize_t num_expected;
    const char *more_or_less;
    if (num_found < num_min) {
        num_expected = num_min;
        more_or_less = "at least";
    } else {
        num_expected = num_max;
        more_or_less = "at most";
    }
    if (exact) {
        more_or_less = "exactly";
    }
    PyErr_Format(PyExc_TypeError,
                 "%.200s() takes %.8s %" CYTHON_FORMAT_SSIZE_T "d positional argument%.1s (%" CYTHON_FORMAT_SSIZE_T "d given)",
                 func_name, more_or_less, num_expected,
                 (num_expected == 1) ? "" : "s", num_found);
}

/* PyIntBinop */
#if !CYTHON_COMPILING_IN_PYPY
static PyObject* __Pyx_PyInt_AddObjC(PyObject *op1, PyObject *op2, CYTHON_UNUSED long intval, int inplace, int zerodivision_check) {
    (void)inplace;
    (void)zerodivision_check;
    #if PY_MAJOR_VERSION < 3
    if (likely(PyInt_CheckExact(op1))) {
        const long b = intval;
        long x;
        long a = PyInt_AS_LONG(op1);
            x = (long)((unsigned long)a + b);
            if (likely((x^a) >= 0 || (x^b) >= 0))
                return PyInt_FromLong(x);
            return PyLong_Type.tp_as_number->nb_add(op1, op2);
    }
    #endif
    #if CYTHON_USE_PYLONG_INTERNALS
    if (likely(PyLong_CheckExact(op1))) {
        const long b = intval;
        long a, x;
#ifdef HAVE_LONG_LONG
        const PY_LONG_LONG llb = intval;
        PY_LONG_LONG lla, llx;
#endif
        const digit* digits = ((PyLongObject*)op1)->ob_digit;
        const Py_ssize_t size = Py_SIZE(op1);
        if (likely(__Pyx_sst_abs(size) <= 1)) {
            a = likely(size) ? digits[0] : 0;
            if (size == -1) a = -a;
        } else {
            switch (size) {
                case -2:
                    if (8 * sizeof(long) - 1 > 2 * PyLong_SHIFT) {
                        a = -(long) (((((unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0]));
                        break;
#ifdef HAVE_LONG_LONG
                    } else if (8 * sizeof(PY_LONG_LONG) - 1 > 2 * PyLong_SHIFT) {
                        lla = -(PY_LONG_LONG) (((((unsigned PY_LONG_LONG)digits[1]) << PyLong_SHIFT) | (unsigned PY_LONG_LONG)digits[0]));
                        goto long_long;
#endif
                    }
                    CYTHON_FALLTHROUGH;
                case 2:
                    if (8 * sizeof(long) - 1 > 2 * PyLong_SHIFT) {
                        a = (long) (((((unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0]));
                        break;
#ifdef HAVE_LONG_LONG
                    } else if (8 * sizeof(PY_LONG_LONG) - 1 > 2 * PyLong_SHIFT) {
                        lla = (PY_LONG_LONG) (((((unsigned PY_LONG_LONG)digits[1]) << PyLong_SHIFT) | (unsigned PY_LONG_LONG)digits[0]));
                        goto long_long;
#endif
                    }
                    CYTHON_FALLTHROUGH;
                case -3:
                    if (8 * sizeof(long) - 1 > 3 * PyLong_SHIFT) {
                        a = -(long) (((((((unsigned long)digits[2]) << PyLong_SHIFT) | (unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0]));
                        break;
#ifdef HAVE_LONG_LONG
                    } else if (8 * sizeof(PY_LONG_LONG) - 1 > 3 * PyLong_SHIFT) {
                        lla = -(PY_LONG_LONG) (((((((unsigned PY_LONG_LONG)digits[2]) << PyLong_SHIFT) | (unsigned PY_LONG_LONG)digits[1]) << PyLong_SHIFT) | (unsigned PY_LONG_LONG)digits[0]));
                        goto long_long;
#endif
                    }
                    CYTHON_FALLTHROUGH;
                case 3:
                    if (8 * sizeof(long) - 1 > 3 * PyLong_SHIFT) {
                        a = (long) (((((((unsigned long)digits[2]) << PyLong_SHIFT) | (unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0]));
                        break;
#ifdef HAVE_LONG_LONG
                    } else if (8 * sizeof(PY_LONG_LONG) - 1 > 3 * PyLong_SHIFT) {
                        lla = (PY_LONG_LONG) (((((((unsigned PY_LONG_LONG)digits[2]) << PyLong_SHIFT) | (unsigned PY_LONG_LONG)digits[1]) << PyLong_SHIFT) | (unsigned PY_LONG_LONG)digits[0]));
                        goto long_long;
#endif
                    }
                    CYTHON_FALLTHROUGH;
                case -4:
                    if (8 * sizeof(long) - 1 > 4 * PyLong_SHIFT) {
                        a = -(long) (((((((((unsigned long)digits[3]) << PyLong_SHIFT) | (unsigned long)digits[2]) << PyLong_SHIFT) | (unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0]));
                        break;
#ifdef HAVE_LONG_LONG
                    } else if (8 * sizeof(PY_LONG_LONG) - 1 > 4 * PyLong_SHIFT) {
                        lla = -(PY_LONG_LONG) (((((((((unsigned PY_LONG_LONG)digits[3]) << PyLong_SHIFT) | (unsigned PY_LONG_LONG)digits[2]) << PyLong_SHIFT) | (unsigned PY_LONG_LONG)digits[1]) << PyLong_SHIFT) | (unsigned PY_LONG_LONG)digits[0]));
                        goto long_long;
#endif
                    }
                    CYTHON_FALLTHROUGH;
                case 4:
                    if (8 * sizeof(long) - 1 > 4 * PyLong_SHIFT) {
                        a = (long) (((((((((unsigned long)digits[3]) << PyLong_SHIFT) | (unsigned long)digits[2]) << PyLong_SHIFT) | (unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0]));
                        break;
#ifdef HAVE_LONG_LONG
                    } else if (8 * sizeof(PY_LONG_LONG) - 1 > 4 * PyLong_SHIFT) {
                        lla = (PY_LONG_LONG) (((((((((unsigned PY_LONG_LONG)digits[3]) << PyLong_SHIFT) | (unsigned PY_LONG_LONG)digits[2]) << PyLong_SHIFT) | (unsigned PY_LONG_LONG)digits[1]) << PyLong_SHIFT) | (unsigned PY_LONG_LONG)digits[0]));
                        goto long_long;
#endif
                    }
                    CYTHON_FALLTHROUGH;
                default: return PyLong_Type.tp_as_number->nb_add(op1, op2);
            }
        }
                x = a + b;
            return PyLong_FromLong(x);
#ifdef HAVE_LONG_LONG
        long_long:
                llx = lla + llb;
            return PyLong_FromLongLong(llx);
#endif
        
        
    }
    #endif
    if (PyFloat_CheckExact(op1)) {
        const long b = intval;
        double a = PyFloat_AS_DOUBLE(op1);
            double result;
            PyFPE_START_PROTECT("add", return NULL)
            result = ((double)a) + (double)b;
            PyFPE_END_PROTECT(result)
            return PyFloat_FromDouble(result);
    }
    return (inplace ? PyNumber_InPlaceAdd : PyNumber_Add)(op1, op2);
}
#endif

/* KeywordStringCheck */
static int __Pyx_CheckKeywordStrings(
    PyObject *kwdict,
    const char* function_name,
    int kw_allowed)
{
    PyObject* key = 0;
    Py_ssize_t pos = 0;
#if CYTHON_COMPILING_IN_PYPY
    if (!kw_allowed && PyDict_Next(kwdict, &pos, &key, 0))
        goto invalid_keyword;
    return 1;
#else
    while (PyDict_Next(kwdict, &pos, &key, 0)) {
        #if PY_MAJOR_VERSION < 3
        if (unlikely(!PyString_Check(key)))
        #endif
            if (unlikely(!PyUnicode_Check(key)))
                goto invalid_keyword_type;
    }
    if ((!kw_allowed) && unlikely(key))
        goto invalid_keyword;
    return 1;
invalid_keyword_type:
    PyErr_Format(PyExc_TypeError,
        "%.200s() keywords must be strings", function_name);
    return 0;
#endif
invalid_keyword:
    PyErr_Format(PyExc_TypeError,
    #if PY_MAJOR_VERSION < 3
        "%.200s() got an unexpected keyword argument '%.200s'",
        function_name, PyString_AsString(key));
    #else
        "%s() got an unexpected keyword argument '%U'",
        function_name, key);
    #endif
    return 0;
}

/* ArgTypeTest */
static int __Pyx__ArgTypeTest(PyObject *obj, PyTypeObject *type, const char *name, int exact)
{
    if (unlikely(!type)) {
        PyErr_SetString(PyExc_SystemError, "Missing type object");
        return 0;
    }
    else if (exact) {
        #if PY_MAJOR_VERSION == 2
        if ((type == &PyBaseString_Type) && likely(__Pyx_PyBaseString_CheckExact(obj))) return 1;
        #endif
    }
    else {
        if (likely(__Pyx_TypeCheck(obj, type))) return 1;
    }
    PyErr_Format(PyExc_TypeError,
        "Argument '%.200s' has incorrect type (expected %.200s, got %.200s)",
        name, type->tp_name, Py_TYPE(obj)->tp_name);
    return 0;
}

/* RaiseNoneIterError */
static CYTHON_INLINE void __Pyx_RaiseNoneNotIterableError(void) {
    PyErr_SetString(PyExc_TypeError, "'NoneType' object is not iterable");
}

/* UnpackUnboundCMethod */
static int __Pyx_TryUnpackUnboundCMethod(__Pyx_CachedCFunction* target) {
    PyObject *method;
    method = __Pyx_PyObject_GetAttrStr(target->type, *target->method_name);
    if (unlikely(!method))
        return -1;
    target->method = method;
#if CYTHON_COMPILING_IN_CPYTHON
    #if PY_MAJOR_VERSION >= 3
    if (likely(__Pyx_TypeCheck(method, &PyMethodDescr_Type)))
    #endif
    {
        PyMethodDescrObject *descr = (PyMethodDescrObject*) method;
        target->func = descr->d_method->ml_meth;
        target->flag = descr->d_method->ml_flags & ~(METH_CLASS | METH_STATIC | METH_COEXIST | METH_STACKLESS);
    }
#endif
    return 0;
}

/* CallUnboundCMethod2 */
#if CYTHON_COMPILING_IN_CPYTHON && PY_VERSION_HEX >= 0x030600B1
static CYTHON_INLINE PyObject *__Pyx_CallUnboundCMethod2(__Pyx_CachedCFunction *cfunc, PyObject *self, PyObject *arg1, PyObject *arg2) {
    if (likely(cfunc->func)) {
        PyObject *args[2] = {arg1, arg2};
        if (cfunc->flag == METH_FASTCALL) {
            #if PY_VERSION_HEX >= 0x030700A0
            return (*(__Pyx_PyCFunctionFast)(void*)(PyCFunction)cfunc->func)(self, args, 2);
            #else
            return (*(__Pyx_PyCFunctionFastWithKeywords)(void*)(PyCFunction)cfunc->func)(self, args, 2, NULL);
            #endif
        }
        #if PY_VERSION_HEX >= 0x030700A0
        if (cfunc->flag == (METH_FASTCALL | METH_KEYWORDS))
            return (*(__Pyx_PyCFunctionFastWithKeywords)(void*)(PyCFunction)cfunc->func)(self, args, 2, NULL);
        #endif
    }
    return __Pyx__CallUnboundCMethod2(cfunc, self, arg1, arg2);
}
#endif
static PyObject* __Pyx__CallUnboundCMethod2(__Pyx_CachedCFunction* cfunc, PyObject* self, PyObject* arg1, PyObject* arg2){
    PyObject *args, *result = NULL;
    if (unlikely(!cfunc->func && !cfunc->method) && unlikely(__Pyx_TryUnpackUnboundCMethod(cfunc) < 0)) return NULL;
#if CYTHON_COMPILING_IN_CPYTHON
    if (cfunc->func && (cfunc->flag & METH_VARARGS)) {
        args = PyTuple_New(2);
        if (unlikely(!args)) goto bad;
        Py_INCREF(arg1);
        PyTuple_SET_ITEM(args, 0, arg1);
        Py_INCREF(arg2);
        PyTuple_SET_ITEM(args, 1, arg2);
        if (cfunc->flag & METH_KEYWORDS)
            result = (*(PyCFunctionWithKeywords)(void*)(PyCFunction)cfunc->func)(self, args, NULL);
        else
            result = (*cfunc->func)(self, args);
    } else {
        args = PyTuple_New(3);
        if (unlikely(!args)) goto bad;
        Py_INCREF(self);
        PyTuple_SET_ITEM(args, 0, self);
        Py_INCREF(arg1);
        PyTuple_SET_ITEM(args, 1, arg1);
        Py_INCREF(arg2);
        PyTuple_SET_ITEM(args, 2, arg2);
        result = __Pyx_PyObject_Call(cfunc->method, args, NULL);
    }
#else
    args = PyTuple_Pack(3, self, arg1, arg2);
    if (unlikely(!args)) goto bad;
    result = __Pyx_PyObject_Call(cfunc->method, args, NULL);
#endif
bad:
    Py_XDECREF(args);
    return result;
}

/* CallUnboundCMethod1 */
#if CYTHON_COMPILING_IN_CPYTHON
static CYTHON_INLINE PyObject* __Pyx_CallUnboundCMethod1(__Pyx_CachedCFunction* cfunc, PyObject* self, PyObject* arg) {
    if (likely(cfunc->func)) {
        int flag = cfunc->flag;
        if (flag == METH_O) {
            return (*(cfunc->func))(self, arg);
        } else if (PY_VERSION_HEX >= 0x030600B1 && flag == METH_FASTCALL) {
            if (PY_VERSION_HEX >= 0x030700A0) {
                return (*(__Pyx_PyCFunctionFast)(void*)(PyCFunction)cfunc->func)(self, &arg, 1);
            } else {
                return (*(__Pyx_PyCFunctionFastWithKeywords)(void*)(PyCFunction)cfunc->func)(self, &arg, 1, NULL);
            }
        } else if (PY_VERSION_HEX >= 0x030700A0 && flag == (METH_FASTCALL | METH_KEYWORDS)) {
            return (*(__Pyx_PyCFunctionFastWithKeywords)(void*)(PyCFunction)cfunc->func)(self, &arg, 1, NULL);
        }
    }
    return __Pyx__CallUnboundCMethod1(cfunc, self, arg);
}
#endif
static PyObject* __Pyx__CallUnboundCMethod1(__Pyx_CachedCFunction* cfunc, PyObject* self, PyObject* arg){
    PyObject *args, *result = NULL;
    if (unlikely(!cfunc->func && !cfunc->method) && unlikely(__Pyx_TryUnpackUnboundCMethod(cfunc) < 0)) return NULL;
#if CYTHON_COMPILING_IN_CPYTHON
    if (cfunc->func && (cfunc->flag & METH_VARARGS)) {
        args = PyTuple_New(1);
        if (unlikely(!args)) goto bad;
        Py_INCREF(arg);
        PyTuple_SET_ITEM(args, 0, arg);
        if (cfunc->flag & METH_KEYWORDS)
            result = (*(PyCFunctionWithKeywords)(void*)(PyCFunction)cfunc->func)(self, args, NULL);
        else
            result = (*cfunc->func)(self, args);
    } else {
        args = PyTuple_New(2);
        if (unlikely(!args)) goto bad;
        Py_INCREF(self);
        PyTuple_SET_ITEM(args, 0, self);
        Py_INCREF(arg);
        PyTuple_SET_ITEM(args, 1, arg);
        result = __Pyx_PyObject_Call(cfunc->method, args, NULL);
    }
#else
    args = PyTuple_Pack(2, self, arg);
    if (unlikely(!args)) goto bad;
    result = __Pyx_PyObject_Call(cfunc->method, args, NULL);
#endif
bad:
    Py_XDECREF(args);
    return result;
}

/* py_dict_pop */
static CYTHON_INLINE PyObject *__Pyx_PyDict_Pop(PyObject *d, PyObject *key, PyObject *default_value) {
#if CYTHON_COMPILING_IN_CPYTHON && PY_VERSION_HEX > 0x030600B3
    if ((1)) {
        return _PyDict_Pop(d, key, default_value);
    } else
#endif
    if (default_value) {
        return __Pyx_CallUnboundCMethod2(&__pyx_umethod_PyDict_Type_pop, d, key, default_value);
    } else {
        return __Pyx_CallUnboundCMethod1(&__pyx_umethod_PyDict_Type_pop, d, key);
    }
}

/* pyfrozenset_new */
static CYTHON_INLINE PyObject* __Pyx_PyFrozenSet_New(PyObject* it) {
    if (it) {
        PyObject* result;
#if CYTHON_COMPILING_IN_PYPY
        PyObject* args;
        args = PyTuple_Pack(1, it);
        if (unlikely(!args))
            return NULL;
        result = PyObject_Call((PyObject*)&PyFrozenSet_Type, args, NULL);
        Py_DECREF(args);
        return result;
#else
        if (PyFrozenSet_CheckExact(it)) {
            Py_INCREF(it);
            return it;
        }
        result = PyFrozenSet_New(it);
        if (unlikely(!result))
            return NULL;
        if ((PY_VERSION_HEX >= 0x031000A1) || likely(PySet_GET_SIZE(result)))
            return result;
        Py_DECREF(result);
#endif
    }
#if CYTHON_USE_TYPE_SLOTS
    return PyFrozenSet_Type.tp_new(&PyFrozenSet_Type, __pyx_empty_tuple, NULL);
#else
    return PyObject_Call((PyObject*)&PyFrozenSet_Type, __pyx_empty_tuple, NULL);
#endif
}

/* py_set_discard_unhashable */
static int __Pyx_PySet_DiscardUnhashable(PyObject *set, PyObject *key) {
    PyObject *tmpkey;
    int rv;
    if (likely(!PySet_Check(key) || !PyErr_ExceptionMatches(PyExc_TypeError)))
        return -1;
    PyErr_Clear();
    tmpkey = __Pyx_PyFrozenSet_New(key);
    if (tmpkey == NULL)
        return -1;
    rv = PySet_Discard(set, tmpkey);
    Py_DECREF(tmpkey);
    return rv;
}

/* py_set_remove */
static int __Pyx_PySet_RemoveNotFound(PyObject *set, PyObject *key, int found) {
    if (unlikely(found < 0)) {
        found = __Pyx_PySet_DiscardUnhashable(set, key);
    }
    if (likely(found == 0)) {
        PyObject *tup;
        tup = PyTuple_Pack(1, key);
        if (!tup)
            return -1;
        PyErr_SetObject(PyExc_KeyError, tup);
        Py_DECREF(tup);
        return -1;
    }
    return found;
}
static CYTHON_INLINE int __Pyx_PySet_Remove(PyObject *set, PyObject *key) {
    int found = PySet_Discard(set, key);
    if (unlikely(found != 1)) {
        return __Pyx_PySet_RemoveNotFound(set, key, found);
    }
    return 0;
}

/* None */
static CYTHON_INLINE void __Pyx_RaiseClosureNameError(const char *varname) {
    PyErr_Format(PyExc_NameError, "free variable '%s' referenced before assignment in enclosing scope", varname);
}

/* FetchCommonType */
static PyTypeObject* __Pyx_FetchCommonType(PyTypeObject* type) {
    PyObject* fake_module;
    PyTypeObject* cached_type = NULL;
    fake_module = PyImport_AddModule((char*) "_cython_" CYTHON_ABI);
    if (!fake_module) return NULL;
    Py_INCREF(fake_module);
    cached_type = (PyTypeObject*) PyObject_GetAttrString(fake_module, type->tp_name);
    if (cached_type) {
        if (!PyType_Check((PyObject*)cached_type)) {
            PyErr_Format(PyExc_TypeError,
                "Shared Cython type %.200s is not a type object",
                type->tp_name);
            goto bad;
        }
        if (cached_type->tp_basicsize != type->tp_basicsize) {
            PyErr_Format(PyExc_TypeError,
                "Shared Cython type %.200s has the wrong size, try recompiling",
                type->tp_name);
            goto bad;
        }
    } else {
        if (!PyErr_ExceptionMatches(PyExc_AttributeError)) goto bad;
        PyErr_Clear();
        if (PyType_Ready(type) < 0) goto bad;
        if (PyObject_SetAttrString(fake_module, type->tp_name, (PyObject*) type) < 0)
            goto bad;
        Py_INCREF(type);
        cached_type = type;
    }
done:
    Py_DECREF(fake_module);
    return cached_type;
bad:
    Py_XDECREF(cached_type);
    cached_type = NULL;
    goto done;
}

/* CythonFunctionShared */
#include <structmember.h>
static PyObject *
__Pyx_CyFunction_get_doc(__pyx_CyFunctionObject *op, CYTHON_UNUSED void *closure)
{
    if (unlikely(op->func_doc == NULL)) {
        if (op->func.m_ml->ml_doc) {
#if PY_MAJOR_VERSION >= 3
            op->func_doc = PyUnicode_FromString(op->func.m_ml->ml_doc);
#else
            op->func_doc = PyString_FromString(op->func.m_ml->ml_doc);
#endif
            if (unlikely(op->func_doc == NULL))
                return NULL;
        } else {
            Py_INCREF(Py_None);
            return Py_None;
        }
    }
    Py_INCREF(op->func_doc);
    return op->func_doc;
}
static int
__Pyx_CyFunction_set_doc(__pyx_CyFunctionObject *op, PyObject *value, CYTHON_UNUSED void *context)
{
    PyObject *tmp = op->func_doc;
    if (value == NULL) {
        value = Py_None;
    }
    Py_INCREF(value);
    op->func_doc = value;
    Py_XDECREF(tmp);
    return 0;
}
static PyObject *
__Pyx_CyFunction_get_name(__pyx_CyFunctionObject *op, CYTHON_UNUSED void *context)
{
    if (unlikely(op->func_name == NULL)) {
#if PY_MAJOR_VERSION >= 3
        op->func_name = PyUnicode_InternFromString(op->func.m_ml->ml_name);
#else
        op->func_name = PyString_InternFromString(op->func.m_ml->ml_name);
#endif
        if (unlikely(op->func_name == NULL))
            return NULL;
    }
    Py_INCREF(op->func_name);
    return op->func_name;
}
static int
__Pyx_CyFunction_set_name(__pyx_CyFunctionObject *op, PyObject *value, CYTHON_UNUSED void *context)
{
    PyObject *tmp;
#if PY_MAJOR_VERSION >= 3
    if (unlikely(value == NULL || !PyUnicode_Check(value)))
#else
    if (unlikely(value == NULL || !PyString_Check(value)))
#endif
    {
        PyErr_SetString(PyExc_TypeError,
                        "__name__ must be set to a string object");
        return -1;
    }
    tmp = op->func_name;
    Py_INCREF(value);
    op->func_name = value;
    Py_XDECREF(tmp);
    return 0;
}
static PyObject *
__Pyx_CyFunction_get_qualname(__pyx_CyFunctionObject *op, CYTHON_UNUSED void *context)
{
    Py_INCREF(op->func_qualname);
    return op->func_qualname;
}
static int
__Pyx_CyFunction_set_qualname(__pyx_CyFunctionObject *op, PyObject *value, CYTHON_UNUSED void *context)
{
    PyObject *tmp;
#if PY_MAJOR_VERSION >= 3
    if (unlikely(value == NULL || !PyUnicode_Check(value)))
#else
    if (unlikely(value == NULL || !PyString_Check(value)))
#endif
    {
        PyErr_SetString(PyExc_TypeError,
                        "__qualname__ must be set to a string object");
        return -1;
    }
    tmp = op->func_qualname;
    Py_INCREF(value);
    op->func_qualname = value;
    Py_XDECREF(tmp);
    return 0;
}
static PyObject *
__Pyx_CyFunction_get_self(__pyx_CyFunctionObject *m, CYTHON_UNUSED void *closure)
{
    PyObject *self;
    self = m->func_closure;
    if (self == NULL)
        self = Py_None;
    Py_INCREF(self);
    return self;
}
static PyObject *
__Pyx_CyFunction_get_dict(__pyx_CyFunctionObject *op, CYTHON_UNUSED void *context)
{
    if (unlikely(op->func_dict == NULL)) {
        op->func_dict = PyDict_New();
        if (unlikely(op->func_dict == NULL))
            return NULL;
    }
    Py_INCREF(op->func_dict);
    return op->func_dict;
}
static int
__Pyx_CyFunction_set_dict(__pyx_CyFunctionObject *op, PyObject *value, CYTHON_UNUSED void *context)
{
    PyObject *tmp;
    if (unlikely(value == NULL)) {
        PyErr_SetString(PyExc_TypeError,
               "function's dictionary may not be deleted");
        return -1;
    }
    if (unlikely(!PyDict_Check(value))) {
        PyErr_SetString(PyExc_TypeError,
               "setting function's dictionary to a non-dict");
        return -1;
    }
    tmp = op->func_dict;
    Py_INCREF(value);
    op->func_dict = value;
    Py_XDECREF(tmp);
    return 0;
}
static PyObject *
__Pyx_CyFunction_get_globals(__pyx_CyFunctionObject *op, CYTHON_UNUSED void *context)
{
    Py_INCREF(op->func_globals);
    return op->func_globals;
}
static PyObject *
__Pyx_CyFunction_get_closure(CYTHON_UNUSED __pyx_CyFunctionObject *op, CYTHON_UNUSED void *context)
{
    Py_INCREF(Py_None);
    return Py_None;
}
static PyObject *
__Pyx_CyFunction_get_code(__pyx_CyFunctionObject *op, CYTHON_UNUSED void *context)
{
    PyObject* result = (op->func_code) ? op->func_code : Py_None;
    Py_INCREF(result);
    return result;
}
static int
__Pyx_CyFunction_init_defaults(__pyx_CyFunctionObject *op) {
    int result = 0;
    PyObject *res = op->defaults_getter((PyObject *) op);
    if (unlikely(!res))
        return -1;
    #if CYTHON_ASSUME_SAFE_MACROS && !CYTHON_AVOID_BORROWED_REFS
    op->defaults_tuple = PyTuple_GET_ITEM(res, 0);
    Py_INCREF(op->defaults_tuple);
    op->defaults_kwdict = PyTuple_GET_ITEM(res, 1);
    Py_INCREF(op->defaults_kwdict);
    #else
    op->defaults_tuple = PySequence_ITEM(res, 0);
    if (unlikely(!op->defaults_tuple)) result = -1;
    else {
        op->defaults_kwdict = PySequence_ITEM(res, 1);
        if (unlikely(!op->defaults_kwdict)) result = -1;
    }
    #endif
    Py_DECREF(res);
    return result;
}
static int
__Pyx_CyFunction_set_defaults(__pyx_CyFunctionObject *op, PyObject* value, CYTHON_UNUSED void *context) {
    PyObject* tmp;
    if (!value) {
        value = Py_None;
    } else if (value != Py_None && !PyTuple_Check(value)) {
        PyErr_SetString(PyExc_TypeError,
                        "__defaults__ must be set to a tuple object");
        return -1;
    }
    Py_INCREF(value);
    tmp = op->defaults_tuple;
    op->defaults_tuple = value;
    Py_XDECREF(tmp);
    return 0;
}
static PyObject *
__Pyx_CyFunction_get_defaults(__pyx_CyFunctionObject *op, CYTHON_UNUSED void *context) {
    PyObject* result = op->defaults_tuple;
    if (unlikely(!result)) {
        if (op->defaults_getter) {
            if (__Pyx_CyFunction_init_defaults(op) < 0) return NULL;
            result = op->defaults_tuple;
        } else {
            result = Py_None;
        }
    }
    Py_INCREF(result);
    return result;
}
static int
__Pyx_CyFunction_set_kwdefaults(__pyx_CyFunctionObject *op, PyObject* value, CYTHON_UNUSED void *context) {
    PyObject* tmp;
    if (!value) {
        value = Py_None;
    } else if (value != Py_None && !PyDict_Check(value)) {
        PyErr_SetString(PyExc_TypeError,
                        "__kwdefaults__ must be set to a dict object");
        return -1;
    }
    Py_INCREF(value);
    tmp = op->defaults_kwdict;
    op->defaults_kwdict = value;
    Py_XDECREF(tmp);
    return 0;
}
static PyObject *
__Pyx_CyFunction_get_kwdefaults(__pyx_CyFunctionObject *op, CYTHON_UNUSED void *context) {
    PyObject* result = op->defaults_kwdict;
    if (unlikely(!result)) {
        if (op->defaults_getter) {
            if (__Pyx_CyFunction_init_defaults(op) < 0) return NULL;
            result = op->defaults_kwdict;
        } else {
            result = Py_None;
        }
    }
    Py_INCREF(result);
    return result;
}
static int
__Pyx_CyFunction_set_annotations(__pyx_CyFunctionObject *op, PyObject* value, CYTHON_UNUSED void *context) {
    PyObject* tmp;
    if (!value || value == Py_None) {
        value = NULL;
    } else if (!PyDict_Check(value)) {
        PyErr_SetString(PyExc_TypeError,
                        "__annotations__ must be set to a dict object");
        return -1;
    }
    Py_XINCREF(value);
    tmp = op->func_annotations;
    op->func_annotations = value;
    Py_XDECREF(tmp);
    return 0;
}
static PyObject *
__Pyx_CyFunction_get_annotations(__pyx_CyFunctionObject *op, CYTHON_UNUSED void *context) {
    PyObject* result = op->func_annotations;
    if (unlikely(!result)) {
        result = PyDict_New();
        if (unlikely(!result)) return NULL;
        op->func_annotations = result;
    }
    Py_INCREF(result);
    return result;
}
static PyGetSetDef __pyx_CyFunction_getsets[] = {
    {(char *) "func_doc", (getter)__Pyx_CyFunction_get_doc, (setter)__Pyx_CyFunction_set_doc, 0, 0},
    {(char *) "__doc__",  (getter)__Pyx_CyFunction_get_doc, (setter)__Pyx_CyFunction_set_doc, 0, 0},
    {(char *) "func_name", (getter)__Pyx_CyFunction_get_name, (setter)__Pyx_CyFunction_set_name, 0, 0},
    {(char *) "__name__", (getter)__Pyx_CyFunction_get_name, (setter)__Pyx_CyFunction_set_name, 0, 0},
    {(char *) "__qualname__", (getter)__Pyx_CyFunction_get_qualname, (setter)__Pyx_CyFunction_set_qualname, 0, 0},
    {(char *) "__self__", (getter)__Pyx_CyFunction_get_self, 0, 0, 0},
    {(char *) "func_dict", (getter)__Pyx_CyFunction_get_dict, (setter)__Pyx_CyFunction_set_dict, 0, 0},
    {(char *) "__dict__", (getter)__Pyx_CyFunction_get_dict, (setter)__Pyx_CyFunction_set_dict, 0, 0},
    {(char *) "func_globals", (getter)__Pyx_CyFunction_get_globals, 0, 0, 0},
    {(char *) "__globals__", (getter)__Pyx_CyFunction_get_globals, 0, 0, 0},
    {(char *) "func_closure", (getter)__Pyx_CyFunction_get_closure, 0, 0, 0},
    {(char *) "__closure__", (getter)__Pyx_CyFunction_get_closure, 0, 0, 0},
    {(char *) "func_code", (getter)__Pyx_CyFunction_get_code, 0, 0, 0},
    {(char *) "__code__", (getter)__Pyx_CyFunction_get_code, 0, 0, 0},
    {(char *) "func_defaults", (getter)__Pyx_CyFunction_get_defaults, (setter)__Pyx_CyFunction_set_defaults, 0, 0},
    {(char *) "__defaults__", (getter)__Pyx_CyFunction_get_defaults, (setter)__Pyx_CyFunction_set_defaults, 0, 0},
    {(char *) "__kwdefaults__", (getter)__Pyx_CyFunction_get_kwdefaults, (setter)__Pyx_CyFunction_set_kwdefaults, 0, 0},
    {(char *) "__annotations__", (getter)__Pyx_CyFunction_get_annotations, (setter)__Pyx_CyFunction_set_annotations, 0, 0},
    {0, 0, 0, 0, 0}
};
static PyMemberDef __pyx_CyFunction_members[] = {
    {(char *) "__module__", T_OBJECT, offsetof(PyCFunctionObject, m_module), PY_WRITE_RESTRICTED, 0},
    {0, 0, 0,  0, 0}
};
static PyObject *
__Pyx_CyFunction_reduce(__pyx_CyFunctionObject *m, CYTHON_UNUSED PyObject *args)
{
#if PY_MAJOR_VERSION >= 3
    Py_INCREF(m->func_qualname);
    return m->func_qualname;
#else
    return PyString_FromString(m->func.m_ml->ml_name);
#endif
}
static PyMethodDef __pyx_CyFunction_methods[] = {
    {"__reduce__", (PyCFunction)__Pyx_CyFunction_reduce, METH_VARARGS, 0},
    {0, 0, 0, 0}
};
#if PY_VERSION_HEX < 0x030500A0
#define __Pyx_CyFunction_weakreflist(cyfunc) ((cyfunc)->func_weakreflist)
#else
#define __Pyx_CyFunction_weakreflist(cyfunc) ((cyfunc)->func.m_weakreflist)
#endif
static PyObject *__Pyx_CyFunction_Init(__pyx_CyFunctionObject *op, PyMethodDef *ml, int flags, PyObject* qualname,
                                       PyObject *closure, PyObject *module, PyObject* globals, PyObject* code) {
    if (unlikely(op == NULL))
        return NULL;
    op->flags = flags;
    __Pyx_CyFunction_weakreflist(op) = NULL;
    op->func.m_ml = ml;
    op->func.m_self = (PyObject *) op;
    Py_XINCREF(closure);
    op->func_closure = closure;
    Py_XINCREF(module);
    op->func.m_module = module;
    op->func_dict = NULL;
    op->func_name = NULL;
    Py_INCREF(qualname);
    op->func_qualname = qualname;
    op->func_doc = NULL;
    op->func_classobj = NULL;
    op->func_globals = globals;
    Py_INCREF(op->func_globals);
    Py_XINCREF(code);
    op->func_code = code;
    op->defaults_pyobjects = 0;
    op->defaults_size = 0;
    op->defaults = NULL;
    op->defaults_tuple = NULL;
    op->defaults_kwdict = NULL;
    op->defaults_getter = NULL;
    op->func_annotations = NULL;
    return (PyObject *) op;
}
static int
__Pyx_CyFunction_clear(__pyx_CyFunctionObject *m)
{
    Py_CLEAR(m->func_closure);
    Py_CLEAR(m->func.m_module);
    Py_CLEAR(m->func_dict);
    Py_CLEAR(m->func_name);
    Py_CLEAR(m->func_qualname);
    Py_CLEAR(m->func_doc);
    Py_CLEAR(m->func_globals);
    Py_CLEAR(m->func_code);
    Py_CLEAR(m->func_classobj);
    Py_CLEAR(m->defaults_tuple);
    Py_CLEAR(m->defaults_kwdict);
    Py_CLEAR(m->func_annotations);
    if (m->defaults) {
        PyObject **pydefaults = __Pyx_CyFunction_Defaults(PyObject *, m);
        int i;
        for (i = 0; i < m->defaults_pyobjects; i++)
            Py_XDECREF(pydefaults[i]);
        PyObject_Free(m->defaults);
        m->defaults = NULL;
    }
    return 0;
}
static void __Pyx__CyFunction_dealloc(__pyx_CyFunctionObject *m)
{
    if (__Pyx_CyFunction_weakreflist(m) != NULL)
        PyObject_ClearWeakRefs((PyObject *) m);
    __Pyx_CyFunction_clear(m);
    PyObject_GC_Del(m);
}
static void __Pyx_CyFunction_dealloc(__pyx_CyFunctionObject *m)
{
    PyObject_GC_UnTrack(m);
    __Pyx__CyFunction_dealloc(m);
}
static int __Pyx_CyFunction_traverse(__pyx_CyFunctionObject *m, visitproc visit, void *arg)
{
    Py_VISIT(m->func_closure);
    Py_VISIT(m->func.m_module);
    Py_VISIT(m->func_dict);
    Py_VISIT(m->func_name);
    Py_VISIT(m->func_qualname);
    Py_VISIT(m->func_doc);
    Py_VISIT(m->func_globals);
    Py_VISIT(m->func_code);
    Py_VISIT(m->func_classobj);
    Py_VISIT(m->defaults_tuple);
    Py_VISIT(m->defaults_kwdict);
    if (m->defaults) {
        PyObject **pydefaults = __Pyx_CyFunction_Defaults(PyObject *, m);
        int i;
        for (i = 0; i < m->defaults_pyobjects; i++)
            Py_VISIT(pydefaults[i]);
    }
    return 0;
}
static PyObject *__Pyx_CyFunction_descr_get(PyObject *func, PyObject *obj, PyObject *type)
{
#if PY_MAJOR_VERSION < 3
    __pyx_CyFunctionObject *m = (__pyx_CyFunctionObject *) func;
    if (m->flags & __Pyx_CYFUNCTION_STATICMETHOD) {
        Py_INCREF(func);
        return func;
    }
    if (m->flags & __Pyx_CYFUNCTION_CLASSMETHOD) {
        if (type == NULL)
            type = (PyObject *)(Py_TYPE(obj));
        return __Pyx_PyMethod_New(func, type, (PyObject *)(Py_TYPE(type)));
    }
    if (obj == Py_None)
        obj = NULL;
#endif
    return __Pyx_PyMethod_New(func, obj, type);
}
static PyObject*
__Pyx_CyFunction_repr(__pyx_CyFunctionObject *op)
{
#if PY_MAJOR_VERSION >= 3
    return PyUnicode_FromFormat("<cyfunction %U at %p>",
                                op->func_qualname, (void *)op);
#else
    return PyString_FromFormat("<cyfunction %s at %p>",
                               PyString_AsString(op->func_qualname), (void *)op);
#endif
}
static PyObject * __Pyx_CyFunction_CallMethod(PyObject *func, PyObject *self, PyObject *arg, PyObject *kw) {
    PyCFunctionObject* f = (PyCFunctionObject*)func;
    PyCFunction meth = f->m_ml->ml_meth;
    Py_ssize_t size;
    switch (f->m_ml->ml_flags & (METH_VARARGS | METH_KEYWORDS | METH_NOARGS | METH_O)) {
    case METH_VARARGS:
        if (likely(kw == NULL || PyDict_Size(kw) == 0))
            return (*meth)(self, arg);
        break;
    case METH_VARARGS | METH_KEYWORDS:
        return (*(PyCFunctionWithKeywords)(void*)meth)(self, arg, kw);
    case METH_NOARGS:
        if (likely(kw == NULL || PyDict_Size(kw) == 0)) {
            size = PyTuple_GET_SIZE(arg);
            if (likely(size == 0))
                return (*meth)(self, NULL);
            PyErr_Format(PyExc_TypeError,
                "%.200s() takes no arguments (%" CYTHON_FORMAT_SSIZE_T "d given)",
                f->m_ml->ml_name, size);
            return NULL;
        }
        break;
    case METH_O:
        if (likely(kw == NULL || PyDict_Size(kw) == 0)) {
            size = PyTuple_GET_SIZE(arg);
            if (likely(size == 1)) {
                PyObject *result, *arg0;
                #if CYTHON_ASSUME_SAFE_MACROS && !CYTHON_AVOID_BORROWED_REFS
                arg0 = PyTuple_GET_ITEM(arg, 0);
                #else
                arg0 = PySequence_ITEM(arg, 0); if (unlikely(!arg0)) return NULL;
                #endif
                result = (*meth)(self, arg0);
                #if !(CYTHON_ASSUME_SAFE_MACROS && !CYTHON_AVOID_BORROWED_REFS)
                Py_DECREF(arg0);
                #endif
                return result;
            }
            PyErr_Format(PyExc_TypeError,
                "%.200s() takes exactly one argument (%" CYTHON_FORMAT_SSIZE_T "d given)",
                f->m_ml->ml_name, size);
            return NULL;
        }
        break;
    default:
        PyErr_SetString(PyExc_SystemError, "Bad call flags in "
                        "__Pyx_CyFunction_Call. METH_OLDARGS is no "
                        "longer supported!");
        return NULL;
    }
    PyErr_Format(PyExc_TypeError, "%.200s() takes no keyword arguments",
                 f->m_ml->ml_name);
    return NULL;
}
static CYTHON_INLINE PyObject *__Pyx_CyFunction_Call(PyObject *func, PyObject *arg, PyObject *kw) {
    return __Pyx_CyFunction_CallMethod(func, ((PyCFunctionObject*)func)->m_self, arg, kw);
}
static PyObject *__Pyx_CyFunction_CallAsMethod(PyObject *func, PyObject *args, PyObject *kw) {
    PyObject *result;
    __pyx_CyFunctionObject *cyfunc = (__pyx_CyFunctionObject *) func;
    if ((cyfunc->flags & __Pyx_CYFUNCTION_CCLASS) && !(cyfunc->flags & __Pyx_CYFUNCTION_STATICMETHOD)) {
        Py_ssize_t argc;
        PyObject *new_args;
        PyObject *self;
        argc = PyTuple_GET_SIZE(args);
        new_args = PyTuple_GetSlice(args, 1, argc);
        if (unlikely(!new_args))
            return NULL;
        self = PyTuple_GetItem(args, 0);
        if (unlikely(!self)) {
            Py_DECREF(new_args);
            return NULL;
        }
        result = __Pyx_CyFunction_CallMethod(func, self, new_args, kw);
        Py_DECREF(new_args);
    } else {
        result = __Pyx_CyFunction_Call(func, args, kw);
    }
    return result;
}
static PyTypeObject __pyx_CyFunctionType_type = {
    PyVarObject_HEAD_INIT(0, 0)
    "cython_function_or_method",
    sizeof(__pyx_CyFunctionObject),
    0,
    (destructor) __Pyx_CyFunction_dealloc,
    0,
    0,
    0,
#if PY_MAJOR_VERSION < 3
    0,
#else
    0,
#endif
    (reprfunc) __Pyx_CyFunction_repr,
    0,
    0,
    0,
    0,
    __Pyx_CyFunction_CallAsMethod,
    0,
    0,
    0,
    0,
    Py_TPFLAGS_DEFAULT | Py_TPFLAGS_HAVE_GC,
    0,
    (traverseproc) __Pyx_CyFunction_traverse,
    (inquiry) __Pyx_CyFunction_clear,
    0,
#if PY_VERSION_HEX < 0x030500A0
    offsetof(__pyx_CyFunctionObject, func_weakreflist),
#else
    offsetof(PyCFunctionObject, m_weakreflist),
#endif
    0,
    0,
    __pyx_CyFunction_methods,
    __pyx_CyFunction_members,
    __pyx_CyFunction_getsets,
    0,
    0,
    __Pyx_CyFunction_descr_get,
    0,
    offsetof(__pyx_CyFunctionObject, func_dict),
    0,
    0,
    0,
    0,
    0,
    0,
    0,
    0,
    0,
    0,
    0,
    0,
#if PY_VERSION_HEX >= 0x030400a1
    0,
#endif
#if PY_VERSION_HEX >= 0x030800b1
    0,
#endif
#if PY_VERSION_HEX >= 0x030800b4 && PY_VERSION_HEX < 0x03090000
    0,
#endif
};
static int __pyx_CyFunction_init(void) {
    __pyx_CyFunctionType = __Pyx_FetchCommonType(&__pyx_CyFunctionType_type);
    if (unlikely(__pyx_CyFunctionType == NULL)) {
        return -1;
    }
    return 0;
}
static CYTHON_INLINE void *__Pyx_CyFunction_InitDefaults(PyObject *func, size_t size, int pyobjects) {
    __pyx_CyFunctionObject *m = (__pyx_CyFunctionObject *) func;
    m->defaults = PyObject_Malloc(size);
    if (unlikely(!m->defaults))
        return PyErr_NoMemory();
    memset(m->defaults, 0, size);
    m->defaults_pyobjects = pyobjects;
    m->defaults_size = size;
    return m->defaults;
}
static CYTHON_INLINE void __Pyx_CyFunction_SetDefaultsTuple(PyObject *func, PyObject *tuple) {
    __pyx_CyFunctionObject *m = (__pyx_CyFunctionObject *) func;
    m->defaults_tuple = tuple;
    Py_INCREF(tuple);
}
static CYTHON_INLINE void __Pyx_CyFunction_SetDefaultsKwDict(PyObject *func, PyObject *dict) {
    __pyx_CyFunctionObject *m = (__pyx_CyFunctionObject *) func;
    m->defaults_kwdict = dict;
    Py_INCREF(dict);
}
static CYTHON_INLINE void __Pyx_CyFunction_SetAnnotationsDict(PyObject *func, PyObject *dict) {
    __pyx_CyFunctionObject *m = (__pyx_CyFunctionObject *) func;
    m->func_annotations = dict;
    Py_INCREF(dict);
}

/* CythonFunction */
static PyObject *__Pyx_CyFunction_New(PyMethodDef *ml, int flags, PyObject* qualname,
                                      PyObject *closure, PyObject *module, PyObject* globals, PyObject* code) {
    PyObject *op = __Pyx_CyFunction_Init(
        PyObject_GC_New(__pyx_CyFunctionObject, __pyx_CyFunctionType),
        ml, flags, qualname, closure, module, globals, code
    );
    if (likely(op)) {
        PyObject_GC_Track(op);
    }
    return op;
}

/* set_iter */
static CYTHON_INLINE PyObject* __Pyx_set_iterator(PyObject* iterable, int is_set,
                                                  Py_ssize_t* p_orig_length, int* p_source_is_set) {
#if CYTHON_COMPILING_IN_CPYTHON
    is_set = is_set || likely(PySet_CheckExact(iterable) || PyFrozenSet_CheckExact(iterable));
    *p_source_is_set = is_set;
    if (likely(is_set)) {
        *p_orig_length = PySet_Size(iterable);
        Py_INCREF(iterable);
        return iterable;
    }
#else
    (void)is_set;
    *p_source_is_set = 0;
#endif
    *p_orig_length = 0;
    return PyObject_GetIter(iterable);
}
static CYTHON_INLINE int __Pyx_set_iter_next(
        PyObject* iter_obj, Py_ssize_t orig_length,
        Py_ssize_t* ppos, PyObject **value,
        int source_is_set) {
    if (!CYTHON_COMPILING_IN_CPYTHON || unlikely(!source_is_set)) {
        *value = PyIter_Next(iter_obj);
        if (unlikely(!*value)) {
            return __Pyx_IterFinish();
        }
        (void)orig_length;
        (void)ppos;
        return 1;
    }
#if CYTHON_COMPILING_IN_CPYTHON
    if (unlikely(PySet_GET_SIZE(iter_obj) != orig_length)) {
        PyErr_SetString(
            PyExc_RuntimeError,
            "set changed size during iteration");
        return -1;
    }
    {
        Py_hash_t hash;
        int ret = _PySet_NextEntry(iter_obj, ppos, value, &hash);
        assert (ret != -1);
        if (likely(ret)) {
            Py_INCREF(*value);
            return 1;
        }
    }
#endif
    return 0;
}

/* CallUnboundCMethod0 */
static PyObject* __Pyx__CallUnboundCMethod0(__Pyx_CachedCFunction* cfunc, PyObject* self) {
    PyObject *args, *result = NULL;
    if (unlikely(!cfunc->method) && unlikely(__Pyx_TryUnpackUnboundCMethod(cfunc) < 0)) return NULL;
#if CYTHON_ASSUME_SAFE_MACROS
    args = PyTuple_New(1);
    if (unlikely(!args)) goto bad;
    Py_INCREF(self);
    PyTuple_SET_ITEM(args, 0, self);
#else
    args = PyTuple_Pack(1, self);
    if (unlikely(!args)) goto bad;
#endif
    result = __Pyx_PyObject_Call(cfunc->method, args, NULL);
    Py_DECREF(args);
bad:
    return result;
}

/* py_dict_values */
static CYTHON_INLINE PyObject* __Pyx_PyDict_Values(PyObject* d) {
    if (PY_MAJOR_VERSION >= 3)
        return __Pyx_CallUnboundCMethod0(&__pyx_umethod_PyDict_Type_values, d);
    else
        return PyDict_Values(d);
}

/* PyFloatBinop */
#if !CYTHON_COMPILING_IN_PYPY
static PyObject* __Pyx_PyFloat_AddObjC(PyObject *op1, PyObject *op2, double floatval, int inplace, int zerodivision_check) {
    const double b = floatval;
    double a, result;
    (void)inplace;
    (void)zerodivision_check;
    if (likely(PyFloat_CheckExact(op1))) {
        a = PyFloat_AS_DOUBLE(op1);
        
    } else
    #if PY_MAJOR_VERSION < 3
    if (likely(PyInt_CheckExact(op1))) {
        a = (double) PyInt_AS_LONG(op1);
        
    } else
    #endif
    if (likely(PyLong_CheckExact(op1))) {
        #if CYTHON_USE_PYLONG_INTERNALS
        const digit* digits = ((PyLongObject*)op1)->ob_digit;
        const Py_ssize_t size = Py_SIZE(op1);
        switch (size) {
            case  0: a = 0.0; break;
            case -1: a = -(double) digits[0]; break;
            case  1: a = (double) digits[0]; break;
            case -2:
            case 2:
                if (8 * sizeof(unsigned long) > 2 * PyLong_SHIFT && ((8 * sizeof(unsigned long) < 53) || (1 * PyLong_SHIFT < 53))) {
                    a = (double) (((((unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0]));
                    if ((8 * sizeof(unsigned long) < 53) || (2 * PyLong_SHIFT < 53) || (a < (double) ((PY_LONG_LONG)1 << 53))) {
                        if (size == -2)
                            a = -a;
                        break;
                    }
                }
                CYTHON_FALLTHROUGH;
            case -3:
            case 3:
                if (8 * sizeof(unsigned long) > 3 * PyLong_SHIFT && ((8 * sizeof(unsigned long) < 53) || (2 * PyLong_SHIFT < 53))) {
                    a = (double) (((((((unsigned long)digits[2]) << PyLong_SHIFT) | (unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0]));
                    if ((8 * sizeof(unsigned long) < 53) || (3 * PyLong_SHIFT < 53) || (a < (double) ((PY_LONG_LONG)1 << 53))) {
                        if (size == -3)
                            a = -a;
                        break;
                    }
                }
                CYTHON_FALLTHROUGH;
            case -4:
            case 4:
                if (8 * sizeof(unsigned long) > 4 * PyLong_SHIFT && ((8 * sizeof(unsigned long) < 53) || (3 * PyLong_SHIFT < 53))) {
                    a = (double) (((((((((unsigned long)digits[3]) << PyLong_SHIFT) | (unsigned long)digits[2]) << PyLong_SHIFT) | (unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0]));
                    if ((8 * sizeof(unsigned long) < 53) || (4 * PyLong_SHIFT < 53) || (a < (double) ((PY_LONG_LONG)1 << 53))) {
                        if (size == -4)
                            a = -a;
                        break;
                    }
                }
                CYTHON_FALLTHROUGH;
            default:
        #else
        {
        #endif
            a = PyLong_AsDouble(op1);
            if (unlikely(a == -1.0 && PyErr_Occurred())) return NULL;
            
        }
    } else {
        return (inplace ? PyNumber_InPlaceAdd : PyNumber_Add)(op1, op2);
    }
        
        PyFPE_START_PROTECT("add", return NULL)
        result = a + b;
        PyFPE_END_PROTECT(result)
        return PyFloat_FromDouble(result);
}
#endif

/* IterNext */
  static PyObject *__Pyx_PyIter_Next2Default(PyObject* defval) {
    PyObject* exc_type;
    __Pyx_PyThreadState_declare
    __Pyx_PyThreadState_assign
    exc_type = __Pyx_PyErr_Occurred();
    if (unlikely(exc_type)) {
        if (!defval || unlikely(!__Pyx_PyErr_GivenExceptionMatches(exc_type, PyExc_StopIteration)))
            return NULL;
        __Pyx_PyErr_Clear();
        Py_INCREF(defval);
        return defval;
    }
    if (defval) {
        Py_INCREF(defval);
        return defval;
    }
    __Pyx_PyErr_SetNone(PyExc_StopIteration);
    return NULL;
}
static void __Pyx_PyIter_Next_ErrorNoIterator(PyObject *iterator) {
    PyErr_Format(PyExc_TypeError,
        "%.200s object is not an iterator", Py_TYPE(iterator)->tp_name);
}
static CYTHON_INLINE PyObject *__Pyx_PyIter_Next2(PyObject* iterator, PyObject* defval) {
    PyObject* next;
    iternextfunc iternext = Py_TYPE(iterator)->tp_iternext;
    if (likely(iternext)) {
#if CYTHON_USE_TYPE_SLOTS
        next = iternext(iterator);
        if (likely(next))
            return next;
        #if PY_VERSION_HEX >= 0x02070000
        if (unlikely(iternext == &_PyObject_NextNotImplemented))
            return NULL;
        #endif
#else
        next = PyIter_Next(iterator);
        if (likely(next))
            return next;
#endif
    } else if (CYTHON_USE_TYPE_SLOTS || unlikely(!PyIter_Check(iterator))) {
        __Pyx_PyIter_Next_ErrorNoIterator(iterator);
        return NULL;
    }
#if !CYTHON_USE_TYPE_SLOTS
    else {
        next = PyIter_Next(iterator);
        if (likely(next))
            return next;
    }
#endif
    return __Pyx_PyIter_Next2Default(defval);
}

/* GetAttr3 */
  static PyObject *__Pyx_GetAttr3Default(PyObject *d) {
    __Pyx_PyThreadState_declare
    __Pyx_PyThreadState_assign
    if (unlikely(!__Pyx_PyErr_ExceptionMatches(PyExc_AttributeError)))
        return NULL;
    __Pyx_PyErr_Clear();
    Py_INCREF(d);
    return d;
}
static CYTHON_INLINE PyObject *__Pyx_GetAttr3(PyObject *o, PyObject *n, PyObject *d) {
    PyObject *r = __Pyx_GetAttr(o, n);
    return (likely(r)) ? r : __Pyx_GetAttr3Default(d);
}

/* PyIntCompare */
  static CYTHON_INLINE PyObject* __Pyx_PyInt_EqObjC(PyObject *op1, PyObject *op2, CYTHON_UNUSED long intval, CYTHON_UNUSED long inplace) {
    if (op1 == op2) {
        Py_RETURN_TRUE;
    }
    #if PY_MAJOR_VERSION < 3
    if (likely(PyInt_CheckExact(op1))) {
        const long b = intval;
        long a = PyInt_AS_LONG(op1);
        if (a == b) Py_RETURN_TRUE; else Py_RETURN_FALSE;
    }
    #endif
    #if CYTHON_USE_PYLONG_INTERNALS
    if (likely(PyLong_CheckExact(op1))) {
        int unequal;
        unsigned long uintval;
        Py_ssize_t size = Py_SIZE(op1);
        const digit* digits = ((PyLongObject*)op1)->ob_digit;
        if (intval == 0) {
            if (size == 0) Py_RETURN_TRUE; else Py_RETURN_FALSE;
        } else if (intval < 0) {
            if (size >= 0)
                Py_RETURN_FALSE;
            intval = -intval;
            size = -size;
        } else {
            if (size <= 0)
                Py_RETURN_FALSE;
        }
        uintval = (unsigned long) intval;
#if PyLong_SHIFT * 4 < SIZEOF_LONG*8
        if (uintval >> (PyLong_SHIFT * 4)) {
            unequal = (size != 5) || (digits[0] != (uintval & (unsigned long) PyLong_MASK))
                 | (digits[1] != ((uintval >> (1 * PyLong_SHIFT)) & (unsigned long) PyLong_MASK)) | (digits[2] != ((uintval >> (2 * PyLong_SHIFT)) & (unsigned long) PyLong_MASK)) | (digits[3] != ((uintval >> (3 * PyLong_SHIFT)) & (unsigned long) PyLong_MASK)) | (digits[4] != ((uintval >> (4 * PyLong_SHIFT)) & (unsigned long) PyLong_MASK));
        } else
#endif
#if PyLong_SHIFT * 3 < SIZEOF_LONG*8
        if (uintval >> (PyLong_SHIFT * 3)) {
            unequal = (size != 4) || (digits[0] != (uintval & (unsigned long) PyLong_MASK))
                 | (digits[1] != ((uintval >> (1 * PyLong_SHIFT)) & (unsigned long) PyLong_MASK)) | (digits[2] != ((uintval >> (2 * PyLong_SHIFT)) & (unsigned long) PyLong_MASK)) | (digits[3] != ((uintval >> (3 * PyLong_SHIFT)) & (unsigned long) PyLong_MASK));
        } else
#endif
#if PyLong_SHIFT * 2 < SIZEOF_LONG*8
        if (uintval >> (PyLong_SHIFT * 2)) {
            unequal = (size != 3) || (digits[0] != (uintval & (unsigned long) PyLong_MASK))
                 | (digits[1] != ((uintval >> (1 * PyLong_SHIFT)) & (unsigned long) PyLong_MASK)) | (digits[2] != ((uintval >> (2 * PyLong_SHIFT)) & (unsigned long) PyLong_MASK));
        } else
#endif
#if PyLong_SHIFT * 1 < SIZEOF_LONG*8
        if (uintval >> (PyLong_SHIFT * 1)) {
            unequal = (size != 2) || (digits[0] != (uintval & (unsigned long) PyLong_MASK))
                 | (digits[1] != ((uintval >> (1 * PyLong_SHIFT)) & (unsigned long) PyLong_MASK));
        } else
#endif
            unequal = (size != 1) || (((unsigned long) digits[0]) != (uintval & (unsigned long) PyLong_MASK));
        if (unequal == 0) Py_RETURN_TRUE; else Py_RETURN_FALSE;
    }
    #endif
    if (PyFloat_CheckExact(op1)) {
        const long b = intval;
        double a = PyFloat_AS_DOUBLE(op1);
        if ((double)a == (double)b) Py_RETURN_TRUE; else Py_RETURN_FALSE;
    }
    return (
        PyObject_RichCompare(op1, op2, Py_EQ));
}

/* BytesEquals */
  static CYTHON_INLINE int __Pyx_PyBytes_Equals(PyObject* s1, PyObject* s2, int equals) {
#if CYTHON_COMPILING_IN_PYPY
    return PyObject_RichCompareBool(s1, s2, equals);
#else
    if (s1 == s2) {
        return (equals == Py_EQ);
    } else if (PyBytes_CheckExact(s1) & PyBytes_CheckExact(s2)) {
        const char *ps1, *ps2;
        Py_ssize_t length = PyBytes_GET_SIZE(s1);
        if (length != PyBytes_GET_SIZE(s2))
            return (equals == Py_NE);
        ps1 = PyBytes_AS_STRING(s1);
        ps2 = PyBytes_AS_STRING(s2);
        if (ps1[0] != ps2[0]) {
            return (equals == Py_NE);
        } else if (length == 1) {
            return (equals == Py_EQ);
        } else {
            int result;
#if CYTHON_USE_UNICODE_INTERNALS
            Py_hash_t hash1, hash2;
            hash1 = ((PyBytesObject*)s1)->ob_shash;
            hash2 = ((PyBytesObject*)s2)->ob_shash;
            if (hash1 != hash2 && hash1 != -1 && hash2 != -1) {
                return (equals == Py_NE);
            }
#endif
            result = memcmp(ps1, ps2, (size_t)length);
            return (equals == Py_EQ) ? (result == 0) : (result != 0);
        }
    } else if ((s1 == Py_None) & PyBytes_CheckExact(s2)) {
        return (equals == Py_NE);
    } else if ((s2 == Py_None) & PyBytes_CheckExact(s1)) {
        return (equals == Py_NE);
    } else {
        int result;
        PyObject* py_result = PyObject_RichCompare(s1, s2, equals);
        if (!py_result)
            return -1;
        result = __Pyx_PyObject_IsTrue(py_result);
        Py_DECREF(py_result);
        return result;
    }
#endif
}

/* SliceObject */
  static CYTHON_INLINE PyObject* __Pyx_PyObject_GetSlice(PyObject* obj,
        Py_ssize_t cstart, Py_ssize_t cstop,
        PyObject** _py_start, PyObject** _py_stop, PyObject** _py_slice,
        int has_cstart, int has_cstop, CYTHON_UNUSED int wraparound) {
#if CYTHON_USE_TYPE_SLOTS
    PyMappingMethods* mp;
#if PY_MAJOR_VERSION < 3
    PySequenceMethods* ms = Py_TYPE(obj)->tp_as_sequence;
    if (likely(ms && ms->sq_slice)) {
        if (!has_cstart) {
            if (_py_start && (*_py_start != Py_None)) {
                cstart = __Pyx_PyIndex_AsSsize_t(*_py_start);
                if ((cstart == (Py_ssize_t)-1) && PyErr_Occurred()) goto bad;
            } else
                cstart = 0;
        }
        if (!has_cstop) {
            if (_py_stop && (*_py_stop != Py_None)) {
                cstop = __Pyx_PyIndex_AsSsize_t(*_py_stop);
                if ((cstop == (Py_ssize_t)-1) && PyErr_Occurred()) goto bad;
            } else
                cstop = PY_SSIZE_T_MAX;
        }
        if (wraparound && unlikely((cstart < 0) | (cstop < 0)) && likely(ms->sq_length)) {
            Py_ssize_t l = ms->sq_length(obj);
            if (likely(l >= 0)) {
                if (cstop < 0) {
                    cstop += l;
                    if (cstop < 0) cstop = 0;
                }
                if (cstart < 0) {
                    cstart += l;
                    if (cstart < 0) cstart = 0;
                }
            } else {
                if (!PyErr_ExceptionMatches(PyExc_OverflowError))
                    goto bad;
                PyErr_Clear();
            }
        }
        return ms->sq_slice(obj, cstart, cstop);
    }
#endif
    mp = Py_TYPE(obj)->tp_as_mapping;
    if (likely(mp && mp->mp_subscript))
#endif
    {
        PyObject* result;
        PyObject *py_slice, *py_start, *py_stop;
        if (_py_slice) {
            py_slice = *_py_slice;
        } else {
            PyObject* owned_start = NULL;
            PyObject* owned_stop = NULL;
            if (_py_start) {
                py_start = *_py_start;
            } else {
                if (has_cstart) {
                    owned_start = py_start = PyInt_FromSsize_t(cstart);
                    if (unlikely(!py_start)) goto bad;
                } else
                    py_start = Py_None;
            }
            if (_py_stop) {
                py_stop = *_py_stop;
            } else {
                if (has_cstop) {
                    owned_stop = py_stop = PyInt_FromSsize_t(cstop);
                    if (unlikely(!py_stop)) {
                        Py_XDECREF(owned_start);
                        goto bad;
                    }
                } else
                    py_stop = Py_None;
            }
            py_slice = PySlice_New(py_start, py_stop, Py_None);
            Py_XDECREF(owned_start);
            Py_XDECREF(owned_stop);
            if (unlikely(!py_slice)) goto bad;
        }
#if CYTHON_USE_TYPE_SLOTS
        result = mp->mp_subscript(obj, py_slice);
#else
        result = PyObject_GetItem(obj, py_slice);
#endif
        if (!_py_slice) {
            Py_DECREF(py_slice);
        }
        return result;
    }
    PyErr_Format(PyExc_TypeError,
        "'%.200s' object is unsliceable", Py_TYPE(obj)->tp_name);
bad:
    return NULL;
}

/* DictGetItem */
  #if PY_MAJOR_VERSION >= 3 && !CYTHON_COMPILING_IN_PYPY
static PyObject *__Pyx_PyDict_GetItem(PyObject *d, PyObject* key) {
    PyObject *value;
    value = PyDict_GetItemWithError(d, key);
    if (unlikely(!value)) {
        if (!PyErr_Occurred()) {
            if (unlikely(PyTuple_Check(key))) {
                PyObject* args = PyTuple_Pack(1, key);
                if (likely(args)) {
                    PyErr_SetObject(PyExc_KeyError, args);
                    Py_DECREF(args);
                }
            } else {
                PyErr_SetObject(PyExc_KeyError, key);
            }
        }
        return NULL;
    }
    Py_INCREF(value);
    return value;
}
#endif

/* StringJoin */
  #if !CYTHON_COMPILING_IN_CPYTHON
static CYTHON_INLINE PyObject* __Pyx_PyBytes_Join(PyObject* sep, PyObject* values) {
    return PyObject_CallMethodObjArgs(sep, __pyx_n_s_join, values, NULL);
}
#endif

/* SetItemInt */
  static int __Pyx_SetItemInt_Generic(PyObject *o, PyObject *j, PyObject *v) {
    int r;
    if (!j) return -1;
    r = PyObject_SetItem(o, j, v);
    Py_DECREF(j);
    return r;
}
static CYTHON_INLINE int __Pyx_SetItemInt_Fast(PyObject *o, Py_ssize_t i, PyObject *v, int is_list,
                                               CYTHON_NCP_UNUSED int wraparound, CYTHON_NCP_UNUSED int boundscheck) {
#if CYTHON_ASSUME_SAFE_MACROS && !CYTHON_AVOID_BORROWED_REFS && CYTHON_USE_TYPE_SLOTS
    if (is_list || PyList_CheckExact(o)) {
        Py_ssize_t n = (!wraparound) ? i : ((likely(i >= 0)) ? i : i + PyList_GET_SIZE(o));
        if ((!boundscheck) || likely(__Pyx_is_valid_index(n, PyList_GET_SIZE(o)))) {
            PyObject* old = PyList_GET_ITEM(o, n);
            Py_INCREF(v);
            PyList_SET_ITEM(o, n, v);
            Py_DECREF(old);
            return 1;
        }
    } else {
        PySequenceMethods *m = Py_TYPE(o)->tp_as_sequence;
        if (likely(m && m->sq_ass_item)) {
            if (wraparound && unlikely(i < 0) && likely(m->sq_length)) {
                Py_ssize_t l = m->sq_length(o);
                if (likely(l >= 0)) {
                    i += l;
                } else {
                    if (!PyErr_ExceptionMatches(PyExc_OverflowError))
                        return -1;
                    PyErr_Clear();
                }
            }
            return m->sq_ass_item(o, i, v);
        }
    }
#else
#if CYTHON_COMPILING_IN_PYPY
    if (is_list || (PySequence_Check(o) && !PyDict_Check(o)))
#else
    if (is_list || PySequence_Check(o))
#endif
    {
        return PySequence_SetItem(o, i, v);
    }
#endif
    return __Pyx_SetItemInt_Generic(o, PyInt_FromSsize_t(i), v);
}

/* FastTypeChecks */
  #if CYTHON_COMPILING_IN_CPYTHON
static int __Pyx_InBases(PyTypeObject *a, PyTypeObject *b) {
    while (a) {
        a = a->tp_base;
        if (a == b)
            return 1;
    }
    return b == &PyBaseObject_Type;
}
static CYTHON_INLINE int __Pyx_IsSubtype(PyTypeObject *a, PyTypeObject *b) {
    PyObject *mro;
    if (a == b) return 1;
    mro = a->tp_mro;
    if (likely(mro)) {
        Py_ssize_t i, n;
        n = PyTuple_GET_SIZE(mro);
        for (i = 0; i < n; i++) {
            if (PyTuple_GET_ITEM(mro, i) == (PyObject *)b)
                return 1;
        }
        return 0;
    }
    return __Pyx_InBases(a, b);
}
#if PY_MAJOR_VERSION == 2
static int __Pyx_inner_PyErr_GivenExceptionMatches2(PyObject *err, PyObject* exc_type1, PyObject* exc_type2) {
    PyObject *exception, *value, *tb;
    int res;
    __Pyx_PyThreadState_declare
    __Pyx_PyThreadState_assign
    __Pyx_ErrFetch(&exception, &value, &tb);
    res = exc_type1 ? PyObject_IsSubclass(err, exc_type1) : 0;
    if (unlikely(res == -1)) {
        PyErr_WriteUnraisable(err);
        res = 0;
    }
    if (!res) {
        res = PyObject_IsSubclass(err, exc_type2);
        if (unlikely(res == -1)) {
            PyErr_WriteUnraisable(err);
            res = 0;
        }
    }
    __Pyx_ErrRestore(exception, value, tb);
    return res;
}
#else
static CYTHON_INLINE int __Pyx_inner_PyErr_GivenExceptionMatches2(PyObject *err, PyObject* exc_type1, PyObject *exc_type2) {
    int res = exc_type1 ? __Pyx_IsSubtype((PyTypeObject*)err, (PyTypeObject*)exc_type1) : 0;
    if (!res) {
        res = __Pyx_IsSubtype((PyTypeObject*)err, (PyTypeObject*)exc_type2);
    }
    return res;
}
#endif
static int __Pyx_PyErr_GivenExceptionMatchesTuple(PyObject *exc_type, PyObject *tuple) {
    Py_ssize_t i, n;
    assert(PyExceptionClass_Check(exc_type));
    n = PyTuple_GET_SIZE(tuple);
#if PY_MAJOR_VERSION >= 3
    for (i=0; i<n; i++) {
        if (exc_type == PyTuple_GET_ITEM(tuple, i)) return 1;
    }
#endif
    for (i=0; i<n; i++) {
        PyObject *t = PyTuple_GET_ITEM(tuple, i);
        #if PY_MAJOR_VERSION < 3
        if (likely(exc_type == t)) return 1;
        #endif
        if (likely(PyExceptionClass_Check(t))) {
            if (__Pyx_inner_PyErr_GivenExceptionMatches2(exc_type, NULL, t)) return 1;
        } else {
        }
    }
    return 0;
}
static CYTHON_INLINE int __Pyx_PyErr_GivenExceptionMatches(PyObject *err, PyObject* exc_type) {
    if (likely(err == exc_type)) return 1;
    if (likely(PyExceptionClass_Check(err))) {
        if (likely(PyExceptionClass_Check(exc_type))) {
            return __Pyx_inner_PyErr_GivenExceptionMatches2(err, NULL, exc_type);
        } else if (likely(PyTuple_Check(exc_type))) {
            return __Pyx_PyErr_GivenExceptionMatchesTuple(err, exc_type);
        } else {
        }
    }
    return PyErr_GivenExceptionMatches(err, exc_type);
}
static CYTHON_INLINE int __Pyx_PyErr_GivenExceptionMatches2(PyObject *err, PyObject *exc_type1, PyObject *exc_type2) {
    assert(PyExceptionClass_Check(exc_type1));
    assert(PyExceptionClass_Check(exc_type2));
    if (likely(err == exc_type1 || err == exc_type2)) return 1;
    if (likely(PyExceptionClass_Check(err))) {
        return __Pyx_inner_PyErr_GivenExceptionMatches2(err, exc_type1, exc_type2);
    }
    return (PyErr_GivenExceptionMatches(err, exc_type1) || PyErr_GivenExceptionMatches(err, exc_type2));
}
#endif

/* PyFloatBinop */
  #if !CYTHON_COMPILING_IN_PYPY
static PyObject* __Pyx_PyFloat_DivideObjC(PyObject *op1, PyObject *op2, double floatval, int inplace, int zerodivision_check) {
    const double b = floatval;
    double a, result;
    (void)inplace;
    (void)zerodivision_check;
    if (likely(PyFloat_CheckExact(op1))) {
        a = PyFloat_AS_DOUBLE(op1);
        
    } else
    #if PY_MAJOR_VERSION < 3
    if (likely(PyInt_CheckExact(op1))) {
        a = (double) PyInt_AS_LONG(op1);
        
    } else
    #endif
    if (likely(PyLong_CheckExact(op1))) {
        #if CYTHON_USE_PYLONG_INTERNALS
        const digit* digits = ((PyLongObject*)op1)->ob_digit;
        const Py_ssize_t size = Py_SIZE(op1);
        switch (size) {
            case  0: a = 0.0; break;
            case -1: a = -(double) digits[0]; break;
            case  1: a = (double) digits[0]; break;
            case -2:
            case 2:
                if (8 * sizeof(unsigned long) > 2 * PyLong_SHIFT && ((8 * sizeof(unsigned long) < 53) || (1 * PyLong_SHIFT < 53))) {
                    a = (double) (((((unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0]));
                    if ((8 * sizeof(unsigned long) < 53) || (2 * PyLong_SHIFT < 53) || (a < (double) ((PY_LONG_LONG)1 << 53))) {
                        if (size == -2)
                            a = -a;
                        break;
                    }
                }
                CYTHON_FALLTHROUGH;
            case -3:
            case 3:
                if (8 * sizeof(unsigned long) > 3 * PyLong_SHIFT && ((8 * sizeof(unsigned long) < 53) || (2 * PyLong_SHIFT < 53))) {
                    a = (double) (((((((unsigned long)digits[2]) << PyLong_SHIFT) | (unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0]));
                    if ((8 * sizeof(unsigned long) < 53) || (3 * PyLong_SHIFT < 53) || (a < (double) ((PY_LONG_LONG)1 << 53))) {
                        if (size == -3)
                            a = -a;
                        break;
                    }
                }
                CYTHON_FALLTHROUGH;
            case -4:
            case 4:
                if (8 * sizeof(unsigned long) > 4 * PyLong_SHIFT && ((8 * sizeof(unsigned long) < 53) || (3 * PyLong_SHIFT < 53))) {
                    a = (double) (((((((((unsigned long)digits[3]) << PyLong_SHIFT) | (unsigned long)digits[2]) << PyLong_SHIFT) | (unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0]));
                    if ((8 * sizeof(unsigned long) < 53) || (4 * PyLong_SHIFT < 53) || (a < (double) ((PY_LONG_LONG)1 << 53))) {
                        if (size == -4)
                            a = -a;
                        break;
                    }
                }
                CYTHON_FALLTHROUGH;
            default:
        #else
        {
        #endif
            a = PyLong_AsDouble(op1);
            if (unlikely(a == -1.0 && PyErr_Occurred())) return NULL;
            
        }
    } else {
        return (inplace ? __Pyx_PyNumber_InPlaceDivide(op1, op2) : __Pyx_PyNumber_Divide(op1, op2));
    }
        
        PyFPE_START_PROTECT("divide", return NULL)
        result = a / b;
        PyFPE_END_PROTECT(result)
        return PyFloat_FromDouble(result);
}
#endif

/* SwapException */
    #if CYTHON_FAST_THREAD_STATE
static CYTHON_INLINE void __Pyx__ExceptionSwap(PyThreadState *tstate, PyObject **type, PyObject **value, PyObject **tb) {
    PyObject *tmp_type, *tmp_value, *tmp_tb;
    #if CYTHON_USE_EXC_INFO_STACK
    _PyErr_StackItem *exc_info = tstate->exc_info;
    tmp_type = exc_info->exc_type;
    tmp_value = exc_info->exc_value;
    tmp_tb = exc_info->exc_traceback;
    exc_info->exc_type = *type;
    exc_info->exc_value = *value;
    exc_info->exc_traceback = *tb;
    #else
    tmp_type = tstate->exc_type;
    tmp_value = tstate->exc_value;
    tmp_tb = tstate->exc_traceback;
    tstate->exc_type = *type;
    tstate->exc_value = *value;
    tstate->exc_traceback = *tb;
    #endif
    *type = tmp_type;
    *value = tmp_value;
    *tb = tmp_tb;
}
#else
static CYTHON_INLINE void __Pyx_ExceptionSwap(PyObject **type, PyObject **value, PyObject **tb) {
    PyObject *tmp_type, *tmp_value, *tmp_tb;
    PyErr_GetExcInfo(&tmp_type, &tmp_value, &tmp_tb);
    PyErr_SetExcInfo(*type, *value, *tb);
    *type = tmp_type;
    *value = tmp_value;
    *tb = tmp_tb;
}
#endif

/* Import */
    static PyObject *__Pyx_Import(PyObject *name, PyObject *from_list, int level) {
    PyObject *empty_list = 0;
    PyObject *module = 0;
    PyObject *global_dict = 0;
    PyObject *empty_dict = 0;
    PyObject *list;
    #if PY_MAJOR_VERSION < 3
    PyObject *py_import;
    py_import = __Pyx_PyObject_GetAttrStr(__pyx_b, __pyx_n_s_import);
    if (!py_import)
        goto bad;
    #endif
    if (from_list)
        list = from_list;
    else {
        empty_list = PyList_New(0);
        if (!empty_list)
            goto bad;
        list = empty_list;
    }
    global_dict = PyModule_GetDict(__pyx_m);
    if (!global_dict)
        goto bad;
    empty_dict = PyDict_New();
    if (!empty_dict)
        goto bad;
    {
        #if PY_MAJOR_VERSION >= 3
        if (level == -1) {
            if ((1) && (strchr(__Pyx_MODULE_NAME, '.'))) {
                module = PyImport_ImportModuleLevelObject(
                    name, global_dict, empty_dict, list, 1);
                if (!module) {
                    if (!PyErr_ExceptionMatches(PyExc_ImportError))
                        goto bad;
                    PyErr_Clear();
                }
            }
            level = 0;
        }
        #endif
        if (!module) {
            #if PY_MAJOR_VERSION < 3
            PyObject *py_level = PyInt_FromLong(level);
            if (!py_level)
                goto bad;
            module = PyObject_CallFunctionObjArgs(py_import,
                name, global_dict, empty_dict, list, py_level, (PyObject *)NULL);
            Py_DECREF(py_level);
            #else
            module = PyImport_ImportModuleLevelObject(
                name, global_dict, empty_dict, list, level);
            #endif
        }
    }
bad:
    #if PY_MAJOR_VERSION < 3
    Py_XDECREF(py_import);
    #endif
    Py_XDECREF(empty_list);
    Py_XDECREF(empty_dict);
    return module;
}

/* PyObjectSetAttrStr */
    #if CYTHON_USE_TYPE_SLOTS
static CYTHON_INLINE int __Pyx_PyObject_SetAttrStr(PyObject* obj, PyObject* attr_name, PyObject* value) {
    PyTypeObject* tp = Py_TYPE(obj);
    if (likely(tp->tp_setattro))
        return tp->tp_setattro(obj, attr_name, value);
#if PY_MAJOR_VERSION < 3
    if (likely(tp->tp_setattr))
        return tp->tp_setattr(obj, PyString_AS_STRING(attr_name), value);
#endif
    return PyObject_SetAttr(obj, attr_name, value);
}
#endif

/* PyIntBinop */
    #if !CYTHON_COMPILING_IN_PYPY
static PyObject* __Pyx_PyInt_SubtractObjC(PyObject *op1, PyObject *op2, CYTHON_UNUSED long intval, int inplace, int zerodivision_check) {
    (void)inplace;
    (void)zerodivision_check;
    #if PY_MAJOR_VERSION < 3
    if (likely(PyInt_CheckExact(op1))) {
        const long b = intval;
        long x;
        long a = PyInt_AS_LONG(op1);
            x = (long)((unsigned long)a - b);
            if (likely((x^a) >= 0 || (x^~b) >= 0))
                return PyInt_FromLong(x);
            return PyLong_Type.tp_as_number->nb_subtract(op1, op2);
    }
    #endif
    #if CYTHON_USE_PYLONG_INTERNALS
    if (likely(PyLong_CheckExact(op1))) {
        const long b = intval;
        long a, x;
#ifdef HAVE_LONG_LONG
        const PY_LONG_LONG llb = intval;
        PY_LONG_LONG lla, llx;
#endif
        const digit* digits = ((PyLongObject*)op1)->ob_digit;
        const Py_ssize_t size = Py_SIZE(op1);
        if (likely(__Pyx_sst_abs(size) <= 1)) {
            a = likely(size) ? digits[0] : 0;
            if (size == -1) a = -a;
        } else {
            switch (size) {
                case -2:
                    if (8 * sizeof(long) - 1 > 2 * PyLong_SHIFT) {
                        a = -(long) (((((unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0]));
                        break;
#ifdef HAVE_LONG_LONG
                    } else if (8 * sizeof(PY_LONG_LONG) - 1 > 2 * PyLong_SHIFT) {
                        lla = -(PY_LONG_LONG) (((((unsigned PY_LONG_LONG)digits[1]) << PyLong_SHIFT) | (unsigned PY_LONG_LONG)digits[0]));
                        goto long_long;
#endif
                    }
                    CYTHON_FALLTHROUGH;
                case 2:
                    if (8 * sizeof(long) - 1 > 2 * PyLong_SHIFT) {
                        a = (long) (((((unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0]));
                        break;
#ifdef HAVE_LONG_LONG
                    } else if (8 * sizeof(PY_LONG_LONG) - 1 > 2 * PyLong_SHIFT) {
                        lla = (PY_LONG_LONG) (((((unsigned PY_LONG_LONG)digits[1]) << PyLong_SHIFT) | (unsigned PY_LONG_LONG)digits[0]));
                        goto long_long;
#endif
                    }
                    CYTHON_FALLTHROUGH;
                case -3:
                    if (8 * sizeof(long) - 1 > 3 * PyLong_SHIFT) {
                        a = -(long) (((((((unsigned long)digits[2]) << PyLong_SHIFT) | (unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0]));
                        break;
#ifdef HAVE_LONG_LONG
                    } else if (8 * sizeof(PY_LONG_LONG) - 1 > 3 * PyLong_SHIFT) {
                        lla = -(PY_LONG_LONG) (((((((unsigned PY_LONG_LONG)digits[2]) << PyLong_SHIFT) | (unsigned PY_LONG_LONG)digits[1]) << PyLong_SHIFT) | (unsigned PY_LONG_LONG)digits[0]));
                        goto long_long;
#endif
                    }
                    CYTHON_FALLTHROUGH;
                case 3:
                    if (8 * sizeof(long) - 1 > 3 * PyLong_SHIFT) {
                        a = (long) (((((((unsigned long)digits[2]) << PyLong_SHIFT) | (unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0]));
                        break;
#ifdef HAVE_LONG_LONG
                    } else if (8 * sizeof(PY_LONG_LONG) - 1 > 3 * PyLong_SHIFT) {
                        lla = (PY_LONG_LONG) (((((((unsigned PY_LONG_LONG)digits[2]) << PyLong_SHIFT) | (unsigned PY_LONG_LONG)digits[1]) << PyLong_SHIFT) | (unsigned PY_LONG_LONG)digits[0]));
                        goto long_long;
#endif
                    }
                    CYTHON_FALLTHROUGH;
                case -4:
                    if (8 * sizeof(long) - 1 > 4 * PyLong_SHIFT) {
                        a = -(long) (((((((((unsigned long)digits[3]) << PyLong_SHIFT) | (unsigned long)digits[2]) << PyLong_SHIFT) | (unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0]));
                        break;
#ifdef HAVE_LONG_LONG
                    } else if (8 * sizeof(PY_LONG_LONG) - 1 > 4 * PyLong_SHIFT) {
                        lla = -(PY_LONG_LONG) (((((((((unsigned PY_LONG_LONG)digits[3]) << PyLong_SHIFT) | (unsigned PY_LONG_LONG)digits[2]) << PyLong_SHIFT) | (unsigned PY_LONG_LONG)digits[1]) << PyLong_SHIFT) | (unsigned PY_LONG_LONG)digits[0]));
                        goto long_long;
#endif
                    }
                    CYTHON_FALLTHROUGH;
                case 4:
                    if (8 * sizeof(long) - 1 > 4 * PyLong_SHIFT) {
                        a = (long) (((((((((unsigned long)digits[3]) << PyLong_SHIFT) | (unsigned long)digits[2]) << PyLong_SHIFT) | (unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0]));
                        break;
#ifdef HAVE_LONG_LONG
                    } else if (8 * sizeof(PY_LONG_LONG) - 1 > 4 * PyLong_SHIFT) {
                        lla = (PY_LONG_LONG) (((((((((unsigned PY_LONG_LONG)digits[3]) << PyLong_SHIFT) | (unsigned PY_LONG_LONG)digits[2]) << PyLong_SHIFT) | (unsigned PY_LONG_LONG)digits[1]) << PyLong_SHIFT) | (unsigned PY_LONG_LONG)digits[0]));
                        goto long_long;
#endif
                    }
                    CYTHON_FALLTHROUGH;
                default: return PyLong_Type.tp_as_number->nb_subtract(op1, op2);
            }
        }
                x = a - b;
            return PyLong_FromLong(x);
#ifdef HAVE_LONG_LONG
        long_long:
                llx = lla - llb;
            return PyLong_FromLongLong(llx);
#endif
        
        
    }
    #endif
    if (PyFloat_CheckExact(op1)) {
        const long b = intval;
        double a = PyFloat_AS_DOUBLE(op1);
            double result;
            PyFPE_START_PROTECT("subtract", return NULL)
            result = ((double)a) - (double)b;
            PyFPE_END_PROTECT(result)
            return PyFloat_FromDouble(result);
    }
    return (inplace ? PyNumber_InPlaceSubtract : PyNumber_Subtract)(op1, op2);
}
#endif

/* StopAsyncIteration */
    #if PY_VERSION_HEX < 0x030500B1
static PyTypeObject __Pyx__PyExc_StopAsyncIteration_type = {
    PyVarObject_HEAD_INIT(0, 0)
    "StopAsyncIteration",
    sizeof(PyBaseExceptionObject),
    0,
    0,
    0,
    0,
    0,
    0,
    0,
    0,
    0,
    0,
    0,
    0,
    0,
    0,
    0,
    0,
    Py_TPFLAGS_DEFAULT | Py_TPFLAGS_BASETYPE | Py_TPFLAGS_HAVE_GC,
    PyDoc_STR("Signal the end from iterator.__anext__()."),
    0,
    0,
    0,
    0,
    0,
    0,
    0,
    0,
    0,
    0,
    0,
    0,
    0,
    0,
    0,
    0,
    0,
    0,
    0,
    0,
    0,
    0,
    0,
    0,
    0,
    0,
#if PY_VERSION_HEX >= 0x030400a1
    0,
#endif
};
#endif
static int __pyx_StopAsyncIteration_init(void) {
#if PY_VERSION_HEX >= 0x030500B1
    __Pyx_PyExc_StopAsyncIteration = PyExc_StopAsyncIteration;
#else
    PyObject *builtins = PyEval_GetBuiltins();
    if (likely(builtins)) {
        PyObject *exc = PyMapping_GetItemString(builtins, (char*) "StopAsyncIteration");
        if (exc) {
            __Pyx_PyExc_StopAsyncIteration = exc;
            return 0;
        }
    }
    PyErr_Clear();
    __Pyx__PyExc_StopAsyncIteration_type.tp_traverse = ((PyTypeObject*)PyExc_BaseException)->tp_traverse;
    __Pyx__PyExc_StopAsyncIteration_type.tp_clear = ((PyTypeObject*)PyExc_BaseException)->tp_clear;
    __Pyx__PyExc_StopAsyncIteration_type.tp_dictoffset = ((PyTypeObject*)PyExc_BaseException)->tp_dictoffset;
    __Pyx__PyExc_StopAsyncIteration_type.tp_base = (PyTypeObject*)PyExc_Exception;
    __Pyx_PyExc_StopAsyncIteration = (PyObject*) __Pyx_FetchCommonType(&__Pyx__PyExc_StopAsyncIteration_type);
    if (unlikely(!__Pyx_PyExc_StopAsyncIteration))
        return -1;
    if (builtins && unlikely(PyMapping_SetItemString(builtins, (char*) "StopAsyncIteration", __Pyx_PyExc_StopAsyncIteration) < 0))
        return -1;
#endif
    return 0;
}

/* CoroutineBase */
    #include <structmember.h>
#include <frameobject.h>
#define __Pyx_Coroutine_Undelegate(gen) Py_CLEAR((gen)->yieldfrom)
static int __Pyx_PyGen__FetchStopIterationValue(CYTHON_UNUSED PyThreadState *__pyx_tstate, PyObject **pvalue) {
    PyObject *et, *ev, *tb;
    PyObject *value = NULL;
    __Pyx_ErrFetch(&et, &ev, &tb);
    if (!et) {
        Py_XDECREF(tb);
        Py_XDECREF(ev);
        Py_INCREF(Py_None);
        *pvalue = Py_None;
        return 0;
    }
    if (likely(et == PyExc_StopIteration)) {
        if (!ev) {
            Py_INCREF(Py_None);
            value = Py_None;
        }
#if PY_VERSION_HEX >= 0x030300A0
        else if (Py_TYPE(ev) == (PyTypeObject*)PyExc_StopIteration) {
            value = ((PyStopIterationObject *)ev)->value;
            Py_INCREF(value);
            Py_DECREF(ev);
        }
#endif
        else if (unlikely(PyTuple_Check(ev))) {
            if (PyTuple_GET_SIZE(ev) >= 1) {
#if CYTHON_ASSUME_SAFE_MACROS && !CYTHON_AVOID_BORROWED_REFS
                value = PyTuple_GET_ITEM(ev, 0);
                Py_INCREF(value);
#else
                value = PySequence_ITEM(ev, 0);
#endif
            } else {
                Py_INCREF(Py_None);
                value = Py_None;
            }
            Py_DECREF(ev);
        }
        else if (!__Pyx_TypeCheck(ev, (PyTypeObject*)PyExc_StopIteration)) {
            value = ev;
        }
        if (likely(value)) {
            Py_XDECREF(tb);
            Py_DECREF(et);
            *pvalue = value;
            return 0;
        }
    } else if (!__Pyx_PyErr_GivenExceptionMatches(et, PyExc_StopIteration)) {
        __Pyx_ErrRestore(et, ev, tb);
        return -1;
    }
    PyErr_NormalizeException(&et, &ev, &tb);
    if (unlikely(!PyObject_TypeCheck(ev, (PyTypeObject*)PyExc_StopIteration))) {
        __Pyx_ErrRestore(et, ev, tb);
        return -1;
    }
    Py_XDECREF(tb);
    Py_DECREF(et);
#if PY_VERSION_HEX >= 0x030300A0
    value = ((PyStopIterationObject *)ev)->value;
    Py_INCREF(value);
    Py_DECREF(ev);
#else
    {
        PyObject* args = __Pyx_PyObject_GetAttrStr(ev, __pyx_n_s_args);
        Py_DECREF(ev);
        if (likely(args)) {
            value = PySequence_GetItem(args, 0);
            Py_DECREF(args);
        }
        if (unlikely(!value)) {
            __Pyx_ErrRestore(NULL, NULL, NULL);
            Py_INCREF(Py_None);
            value = Py_None;
        }
    }
#endif
    *pvalue = value;
    return 0;
}
static CYTHON_INLINE
void __Pyx_Coroutine_ExceptionClear(__Pyx_ExcInfoStruct *exc_state) {
    PyObject *t, *v, *tb;
    t = exc_state->exc_type;
    v = exc_state->exc_value;
    tb = exc_state->exc_traceback;
    exc_state->exc_type = NULL;
    exc_state->exc_value = NULL;
    exc_state->exc_traceback = NULL;
    Py_XDECREF(t);
    Py_XDECREF(v);
    Py_XDECREF(tb);
}
#define __Pyx_Coroutine_AlreadyRunningError(gen)  (__Pyx__Coroutine_AlreadyRunningError(gen), (PyObject*)NULL)
static void __Pyx__Coroutine_AlreadyRunningError(CYTHON_UNUSED __pyx_CoroutineObject *gen) {
    const char *msg;
    if ((0)) {
    #ifdef __Pyx_Coroutine_USED
    } else if (__Pyx_Coroutine_Check((PyObject*)gen)) {
        msg = "coroutine already executing";
    #endif
    #ifdef __Pyx_AsyncGen_USED
    } else if (__Pyx_AsyncGen_CheckExact((PyObject*)gen)) {
        msg = "async generator already executing";
    #endif
    } else {
        msg = "generator already executing";
    }
    PyErr_SetString(PyExc_ValueError, msg);
}
#define __Pyx_Coroutine_NotStartedError(gen)  (__Pyx__Coroutine_NotStartedError(gen), (PyObject*)NULL)
static void __Pyx__Coroutine_NotStartedError(CYTHON_UNUSED PyObject *gen) {
    const char *msg;
    if ((0)) {
    #ifdef __Pyx_Coroutine_USED
    } else if (__Pyx_Coroutine_Check(gen)) {
        msg = "can't send non-None value to a just-started coroutine";
    #endif
    #ifdef __Pyx_AsyncGen_USED
    } else if (__Pyx_AsyncGen_CheckExact(gen)) {
        msg = "can't send non-None value to a just-started async generator";
    #endif
    } else {
        msg = "can't send non-None value to a just-started generator";
    }
    PyErr_SetString(PyExc_TypeError, msg);
}
#define __Pyx_Coroutine_AlreadyTerminatedError(gen, value, closing)  (__Pyx__Coroutine_AlreadyTerminatedError(gen, value, closing), (PyObject*)NULL)
static void __Pyx__Coroutine_AlreadyTerminatedError(CYTHON_UNUSED PyObject *gen, PyObject *value, CYTHON_UNUSED int closing) {
    #ifdef __Pyx_Coroutine_USED
    if (!closing && __Pyx_Coroutine_Check(gen)) {
        PyErr_SetString(PyExc_RuntimeError, "cannot reuse already awaited coroutine");
    } else
    #endif
    if (value) {
        #ifdef __Pyx_AsyncGen_USED
        if (__Pyx_AsyncGen_CheckExact(gen))
            PyErr_SetNone(__Pyx_PyExc_StopAsyncIteration);
        else
        #endif
        PyErr_SetNone(PyExc_StopIteration);
    }
}
static
PyObject *__Pyx_Coroutine_SendEx(__pyx_CoroutineObject *self, PyObject *value, int closing) {
    __Pyx_PyThreadState_declare
    PyThreadState *tstate;
    __Pyx_ExcInfoStruct *exc_state;
    PyObject *retval;
    assert(!self->is_running);
    if (unlikely(self->resume_label == 0)) {
        if (unlikely(value && value != Py_None)) {
            return __Pyx_Coroutine_NotStartedError((PyObject*)self);
        }
    }
    if (unlikely(self->resume_label == -1)) {
        return __Pyx_Coroutine_AlreadyTerminatedError((PyObject*)self, value, closing);
    }
#if CYTHON_FAST_THREAD_STATE
    __Pyx_PyThreadState_assign
    tstate = __pyx_tstate;
#else
    tstate = __Pyx_PyThreadState_Current;
#endif
    exc_state = &self->gi_exc_state;
    if (exc_state->exc_type) {
        #if CYTHON_COMPILING_IN_PYPY || CYTHON_COMPILING_IN_PYSTON
        #else
        if (exc_state->exc_traceback) {
            PyTracebackObject *tb = (PyTracebackObject *) exc_state->exc_traceback;
            PyFrameObject *f = tb->tb_frame;
            Py_XINCREF(tstate->frame);
            assert(f->f_back == NULL);
            f->f_back = tstate->frame;
        }
        #endif
    }
#if CYTHON_USE_EXC_INFO_STACK
    exc_state->previous_item = tstate->exc_info;
    tstate->exc_info = exc_state;
#else
    if (exc_state->exc_type) {
        __Pyx_ExceptionSwap(&exc_state->exc_type, &exc_state->exc_value, &exc_state->exc_traceback);
    } else {
        __Pyx_Coroutine_ExceptionClear(exc_state);
        __Pyx_ExceptionSave(&exc_state->exc_type, &exc_state->exc_value, &exc_state->exc_traceback);
    }
#endif
    self->is_running = 1;
    retval = self->body((PyObject *) self, tstate, value);
    self->is_running = 0;
#if CYTHON_USE_EXC_INFO_STACK
    exc_state = &self->gi_exc_state;
    tstate->exc_info = exc_state->previous_item;
    exc_state->previous_item = NULL;
    __Pyx_Coroutine_ResetFrameBackpointer(exc_state);
#endif
    return retval;
}
static CYTHON_INLINE void __Pyx_Coroutine_ResetFrameBackpointer(__Pyx_ExcInfoStruct *exc_state) {
    PyObject *exc_tb = exc_state->exc_traceback;
    if (likely(exc_tb)) {
#if CYTHON_COMPILING_IN_PYPY || CYTHON_COMPILING_IN_PYSTON
#else
        PyTracebackObject *tb = (PyTracebackObject *) exc_tb;
        PyFrameObject *f = tb->tb_frame;
        Py_CLEAR(f->f_back);
#endif
    }
}
static CYTHON_INLINE
PyObject *__Pyx_Coroutine_MethodReturn(CYTHON_UNUSED PyObject* gen, PyObject *retval) {
    if (unlikely(!retval)) {
        __Pyx_PyThreadState_declare
        __Pyx_PyThreadState_assign
        if (!__Pyx_PyErr_Occurred()) {
            PyObject *exc = PyExc_StopIteration;
            #ifdef __Pyx_AsyncGen_USED
            if (__Pyx_AsyncGen_CheckExact(gen))
                exc = __Pyx_PyExc_StopAsyncIteration;
            #endif
            __Pyx_PyErr_SetNone(exc);
        }
    }
    return retval;
}
#if CYTHON_COMPILING_IN_CPYTHON && PY_VERSION_HEX >= 0x03030000 && (defined(__linux__) || PY_VERSION_HEX >= 0x030600B3)
static CYTHON_INLINE
PyObject *__Pyx_PyGen_Send(PyGenObject *gen, PyObject *arg) {
#if PY_VERSION_HEX <= 0x030A00A1
    return _PyGen_Send(gen, arg);
#else
    PyObject *result;
    if (PyIter_Send((PyObject*)gen, arg ? arg : Py_None, &result) == PYGEN_RETURN) {
        if (PyAsyncGen_CheckExact(gen)) {
            assert(result == Py_None);
            PyErr_SetNone(PyExc_StopAsyncIteration);
        }
        else if (result == Py_None) {
            PyErr_SetNone(PyExc_StopIteration);
        }
        else {
            _PyGen_SetStopIterationValue(result);
        }
        Py_CLEAR(result);
    }
    return result;
#endif
}
#endif
static CYTHON_INLINE
PyObject *__Pyx_Coroutine_FinishDelegation(__pyx_CoroutineObject *gen) {
    PyObject *ret;
    PyObject *val = NULL;
    __Pyx_Coroutine_Undelegate(gen);
    __Pyx_PyGen__FetchStopIterationValue(__Pyx_PyThreadState_Current, &val);
    ret = __Pyx_Coroutine_SendEx(gen, val, 0);
    Py_XDECREF(val);
    return ret;
}
static PyObject *__Pyx_Coroutine_Send(PyObject *self, PyObject *value) {
    PyObject *retval;
    __pyx_CoroutineObject *gen = (__pyx_CoroutineObject*) self;
    PyObject *yf = gen->yieldfrom;
    if (unlikely(gen->is_running))
        return __Pyx_Coroutine_AlreadyRunningError(gen);
    if (yf) {
        PyObject *ret;
        gen->is_running = 1;
        #ifdef __Pyx_Generator_USED
        if (__Pyx_Generator_CheckExact(yf)) {
            ret = __Pyx_Coroutine_Send(yf, value);
        } else
        #endif
        #ifdef __Pyx_Coroutine_USED
        if (__Pyx_Coroutine_Check(yf)) {
            ret = __Pyx_Coroutine_Send(yf, value);
        } else
        #endif
        #ifdef __Pyx_AsyncGen_USED
        if (__pyx_PyAsyncGenASend_CheckExact(yf)) {
            ret = __Pyx_async_gen_asend_send(yf, value);
        } else
        #endif
        #if CYTHON_COMPILING_IN_CPYTHON && PY_VERSION_HEX >= 0x03030000 && (defined(__linux__) || PY_VERSION_HEX >= 0x030600B3)
        if (PyGen_CheckExact(yf)) {
            ret = __Pyx_PyGen_Send((PyGenObject*)yf, value == Py_None ? NULL : value);
        } else
        #endif
        #if CYTHON_COMPILING_IN_CPYTHON && PY_VERSION_HEX >= 0x03050000 && defined(PyCoro_CheckExact) && (defined(__linux__) || PY_VERSION_HEX >= 0x030600B3)
        if (PyCoro_CheckExact(yf)) {
            ret = __Pyx_PyGen_Send((PyGenObject*)yf, value == Py_None ? NULL : value);
        } else
        #endif
        {
            if (value == Py_None)
                ret = Py_TYPE(yf)->tp_iternext(yf);
            else
                ret = __Pyx_PyObject_CallMethod1(yf, __pyx_n_s_send, value);
        }
        gen->is_running = 0;
        if (likely(ret)) {
            return ret;
        }
        retval = __Pyx_Coroutine_FinishDelegation(gen);
    } else {
        retval = __Pyx_Coroutine_SendEx(gen, value, 0);
    }
    return __Pyx_Coroutine_MethodReturn(self, retval);
}
static int __Pyx_Coroutine_CloseIter(__pyx_CoroutineObject *gen, PyObject *yf) {
    PyObject *retval = NULL;
    int err = 0;
    #ifdef __Pyx_Generator_USED
    if (__Pyx_Generator_CheckExact(yf)) {
        retval = __Pyx_Coroutine_Close(yf);
        if (!retval)
            return -1;
    } else
    #endif
    #ifdef __Pyx_Coroutine_USED
    if (__Pyx_Coroutine_Check(yf)) {
        retval = __Pyx_Coroutine_Close(yf);
        if (!retval)
            return -1;
    } else
    if (__Pyx_CoroutineAwait_CheckExact(yf)) {
        retval = __Pyx_CoroutineAwait_Close((__pyx_CoroutineAwaitObject*)yf, NULL);
        if (!retval)
            return -1;
    } else
    #endif
    #ifdef __Pyx_AsyncGen_USED
    if (__pyx_PyAsyncGenASend_CheckExact(yf)) {
        retval = __Pyx_async_gen_asend_close(yf, NULL);
    } else
    if (__pyx_PyAsyncGenAThrow_CheckExact(yf)) {
        retval = __Pyx_async_gen_athrow_close(yf, NULL);
    } else
    #endif
    {
        PyObject *meth;
        gen->is_running = 1;
        meth = __Pyx_PyObject_GetAttrStr(yf, __pyx_n_s_close);
        if (unlikely(!meth)) {
            if (!PyErr_ExceptionMatches(PyExc_AttributeError)) {
                PyErr_WriteUnraisable(yf);
            }
            PyErr_Clear();
        } else {
            retval = PyObject_CallFunction(meth, NULL);
            Py_DECREF(meth);
            if (!retval)
                err = -1;
        }
        gen->is_running = 0;
    }
    Py_XDECREF(retval);
    return err;
}
static PyObject *__Pyx_Generator_Next(PyObject *self) {
    __pyx_CoroutineObject *gen = (__pyx_CoroutineObject*) self;
    PyObject *yf = gen->yieldfrom;
    if (unlikely(gen->is_running))
        return __Pyx_Coroutine_AlreadyRunningError(gen);
    if (yf) {
        PyObject *ret;
        gen->is_running = 1;
        #ifdef __Pyx_Generator_USED
        if (__Pyx_Generator_CheckExact(yf)) {
            ret = __Pyx_Generator_Next(yf);
        } else
        #endif
        #if CYTHON_COMPILING_IN_CPYTHON && PY_VERSION_HEX >= 0x03030000 && (defined(__linux__) || PY_VERSION_HEX >= 0x030600B3)
        if (PyGen_CheckExact(yf)) {
            ret = __Pyx_PyGen_Send((PyGenObject*)yf, NULL);
        } else
        #endif
        #ifdef __Pyx_Coroutine_USED
        if (__Pyx_Coroutine_Check(yf)) {
            ret = __Pyx_Coroutine_Send(yf, Py_None);
        } else
        #endif
            ret = Py_TYPE(yf)->tp_iternext(yf);
        gen->is_running = 0;
        if (likely(ret)) {
            return ret;
        }
        return __Pyx_Coroutine_FinishDelegation(gen);
    }
    return __Pyx_Coroutine_SendEx(gen, Py_None, 0);
}
static PyObject *__Pyx_Coroutine_Close_Method(PyObject *self, CYTHON_UNUSED PyObject *arg) {
    return __Pyx_Coroutine_Close(self);
}
static PyObject *__Pyx_Coroutine_Close(PyObject *self) {
    __pyx_CoroutineObject *gen = (__pyx_CoroutineObject *) self;
    PyObject *retval, *raised_exception;
    PyObject *yf = gen->yieldfrom;
    int err = 0;
    if (unlikely(gen->is_running))
        return __Pyx_Coroutine_AlreadyRunningError(gen);
    if (yf) {
        Py_INCREF(yf);
        err = __Pyx_Coroutine_CloseIter(gen, yf);
        __Pyx_Coroutine_Undelegate(gen);
        Py_DECREF(yf);
    }
    if (err == 0)
        PyErr_SetNone(PyExc_GeneratorExit);
    retval = __Pyx_Coroutine_SendEx(gen, NULL, 1);
    if (unlikely(retval)) {
        const char *msg;
        Py_DECREF(retval);
        if ((0)) {
        #ifdef __Pyx_Coroutine_USED
        } else if (__Pyx_Coroutine_Check(self)) {
            msg = "coroutine ignored GeneratorExit";
        #endif
        #ifdef __Pyx_AsyncGen_USED
        } else if (__Pyx_AsyncGen_CheckExact(self)) {
#if PY_VERSION_HEX < 0x03060000
            msg = "async generator ignored GeneratorExit - might require Python 3.6+ finalisation (PEP 525)";
#else
            msg = "async generator ignored GeneratorExit";
#endif
        #endif
        } else {
            msg = "generator ignored GeneratorExit";
        }
        PyErr_SetString(PyExc_RuntimeError, msg);
        return NULL;
    }
    raised_exception = PyErr_Occurred();
    if (likely(!raised_exception || __Pyx_PyErr_GivenExceptionMatches2(raised_exception, PyExc_GeneratorExit, PyExc_StopIteration))) {
        if (raised_exception) PyErr_Clear();
        Py_INCREF(Py_None);
        return Py_None;
    }
    return NULL;
}
static PyObject *__Pyx__Coroutine_Throw(PyObject *self, PyObject *typ, PyObject *val, PyObject *tb,
                                        PyObject *args, int close_on_genexit) {
    __pyx_CoroutineObject *gen = (__pyx_CoroutineObject *) self;
    PyObject *yf = gen->yieldfrom;
    if (unlikely(gen->is_running))
        return __Pyx_Coroutine_AlreadyRunningError(gen);
    if (yf) {
        PyObject *ret;
        Py_INCREF(yf);
        if (__Pyx_PyErr_GivenExceptionMatches(typ, PyExc_GeneratorExit) && close_on_genexit) {
            int err = __Pyx_Coroutine_CloseIter(gen, yf);
            Py_DECREF(yf);
            __Pyx_Coroutine_Undelegate(gen);
            if (err < 0)
                return __Pyx_Coroutine_MethodReturn(self, __Pyx_Coroutine_SendEx(gen, NULL, 0));
            goto throw_here;
        }
        gen->is_running = 1;
        if (0
        #ifdef __Pyx_Generator_USED
            || __Pyx_Generator_CheckExact(yf)
        #endif
        #ifdef __Pyx_Coroutine_USED
            || __Pyx_Coroutine_Check(yf)
        #endif
            ) {
            ret = __Pyx__Coroutine_Throw(yf, typ, val, tb, args, close_on_genexit);
        #ifdef __Pyx_Coroutine_USED
        } else if (__Pyx_CoroutineAwait_CheckExact(yf)) {
            ret = __Pyx__Coroutine_Throw(((__pyx_CoroutineAwaitObject*)yf)->coroutine, typ, val, tb, args, close_on_genexit);
        #endif
        } else {
            PyObject *meth = __Pyx_PyObject_GetAttrStr(yf, __pyx_n_s_throw);
            if (unlikely(!meth)) {
                Py_DECREF(yf);
                if (!PyErr_ExceptionMatches(PyExc_AttributeError)) {
                    gen->is_running = 0;
                    return NULL;
                }
                PyErr_Clear();
                __Pyx_Coroutine_Undelegate(gen);
                gen->is_running = 0;
                goto throw_here;
            }
            if (likely(args)) {
                ret = PyObject_CallObject(meth, args);
            } else {
                ret = PyObject_CallFunctionObjArgs(meth, typ, val, tb, NULL);
            }
            Py_DECREF(meth);
        }
        gen->is_running = 0;
        Py_DECREF(yf);
        if (!ret) {
            ret = __Pyx_Coroutine_FinishDelegation(gen);
        }
        return __Pyx_Coroutine_MethodReturn(self, ret);
    }
throw_here:
    __Pyx_Raise(typ, val, tb, NULL);
    return __Pyx_Coroutine_MethodReturn(self, __Pyx_Coroutine_SendEx(gen, NULL, 0));
}
static PyObject *__Pyx_Coroutine_Throw(PyObject *self, PyObject *args) {
    PyObject *typ;
    PyObject *val = NULL;
    PyObject *tb = NULL;
    if (!PyArg_UnpackTuple(args, (char *)"throw", 1, 3, &typ, &val, &tb))
        return NULL;
    return __Pyx__Coroutine_Throw(self, typ, val, tb, args, 1);
}
static CYTHON_INLINE int __Pyx_Coroutine_traverse_excstate(__Pyx_ExcInfoStruct *exc_state, visitproc visit, void *arg) {
    Py_VISIT(exc_state->exc_type);
    Py_VISIT(exc_state->exc_value);
    Py_VISIT(exc_state->exc_traceback);
    return 0;
}
static int __Pyx_Coroutine_traverse(__pyx_CoroutineObject *gen, visitproc visit, void *arg) {
    Py_VISIT(gen->closure);
    Py_VISIT(gen->classobj);
    Py_VISIT(gen->yieldfrom);
    return __Pyx_Coroutine_traverse_excstate(&gen->gi_exc_state, visit, arg);
}
static int __Pyx_Coroutine_clear(PyObject *self) {
    __pyx_CoroutineObject *gen = (__pyx_CoroutineObject *) self;
    Py_CLEAR(gen->closure);
    Py_CLEAR(gen->classobj);
    Py_CLEAR(gen->yieldfrom);
    __Pyx_Coroutine_ExceptionClear(&gen->gi_exc_state);
#ifdef __Pyx_AsyncGen_USED
    if (__Pyx_AsyncGen_CheckExact(self)) {
        Py_CLEAR(((__pyx_PyAsyncGenObject*)gen)->ag_finalizer);
    }
#endif
    Py_CLEAR(gen->gi_code);
    Py_CLEAR(gen->gi_frame);
    Py_CLEAR(gen->gi_name);
    Py_CLEAR(gen->gi_qualname);
    Py_CLEAR(gen->gi_modulename);
    return 0;
}
static void __Pyx_Coroutine_dealloc(PyObject *self) {
    __pyx_CoroutineObject *gen = (__pyx_CoroutineObject *) self;
    PyObject_GC_UnTrack(gen);
    if (gen->gi_weakreflist != NULL)
        PyObject_ClearWeakRefs(self);
    if (gen->resume_label >= 0) {
        PyObject_GC_Track(self);
#if PY_VERSION_HEX >= 0x030400a1 && CYTHON_USE_TP_FINALIZE
        if (PyObject_CallFinalizerFromDealloc(self))
#else
        Py_TYPE(gen)->tp_del(self);
        if (Py_REFCNT(self) > 0)
#endif
        {
            return;
        }
        PyObject_GC_UnTrack(self);
    }
#ifdef __Pyx_AsyncGen_USED
    if (__Pyx_AsyncGen_CheckExact(self)) {
        /* We have to handle this case for asynchronous generators
           right here, because this code has to be between UNTRACK
           and GC_Del. */
        Py_CLEAR(((__pyx_PyAsyncGenObject*)self)->ag_finalizer);
    }
#endif
    __Pyx_Coroutine_clear(self);
    PyObject_GC_Del(gen);
}
static void __Pyx_Coroutine_del(PyObject *self) {
    PyObject *error_type, *error_value, *error_traceback;
    __pyx_CoroutineObject *gen = (__pyx_CoroutineObject *) self;
    __Pyx_PyThreadState_declare
    if (gen->resume_label < 0) {
        return;
    }
#if !CYTHON_USE_TP_FINALIZE
    assert(self->ob_refcnt == 0);
    __Pyx_SET_REFCNT(self, 1);
#endif
    __Pyx_PyThreadState_assign
    __Pyx_ErrFetch(&error_type, &error_value, &error_traceback);
#ifdef __Pyx_AsyncGen_USED
    if (__Pyx_AsyncGen_CheckExact(self)) {
        __pyx_PyAsyncGenObject *agen = (__pyx_PyAsyncGenObject*)self;
        PyObject *finalizer = agen->ag_finalizer;
        if (finalizer && !agen->ag_closed) {
            PyObject *res = __Pyx_PyObject_CallOneArg(finalizer, self);
            if (unlikely(!res)) {
                PyErr_WriteUnraisable(self);
            } else {
                Py_DECREF(res);
            }
            __Pyx_ErrRestore(error_type, error_value, error_traceback);
            return;
        }
    }
#endif
    if (unlikely(gen->resume_label == 0 && !error_value)) {
#ifdef __Pyx_Coroutine_USED
#ifdef __Pyx_Generator_USED
    if (!__Pyx_Generator_CheckExact(self))
#endif
        {
        PyObject_GC_UnTrack(self);
#if PY_MAJOR_VERSION >= 3  || defined(PyErr_WarnFormat)
        if (unlikely(PyErr_WarnFormat(PyExc_RuntimeWarning, 1, "coroutine '%.50S' was never awaited", gen->gi_qualname) < 0))
            PyErr_WriteUnraisable(self);
#else
        {PyObject *msg;
        char *cmsg;
        #if CYTHON_COMPILING_IN_PYPY
        msg = NULL;
        cmsg = (char*) "coroutine was never awaited";
        #else
        char *cname;
        PyObject *qualname;
        qualname = gen->gi_qualname;
        cname = PyString_AS_STRING(qualname);
        msg = PyString_FromFormat("coroutine '%.50s' was never awaited", cname);
        if (unlikely(!msg)) {
            PyErr_Clear();
            cmsg = (char*) "coroutine was never awaited";
        } else {
            cmsg = PyString_AS_STRING(msg);
        }
        #endif
        if (unlikely(PyErr_WarnEx(PyExc_RuntimeWarning, cmsg, 1) < 0))
            PyErr_WriteUnraisable(self);
        Py_XDECREF(msg);}
#endif
        PyObject_GC_Track(self);
        }
#endif
    } else {
        PyObject *res = __Pyx_Coroutine_Close(self);
        if (unlikely(!res)) {
            if (PyErr_Occurred())
                PyErr_WriteUnraisable(self);
        } else {
            Py_DECREF(res);
        }
    }
    __Pyx_ErrRestore(error_type, error_value, error_traceback);
#if !CYTHON_USE_TP_FINALIZE
    assert(Py_REFCNT(self) > 0);
    if (--self->ob_refcnt == 0) {
        return;
    }
    {
        Py_ssize_t refcnt = Py_REFCNT(self);
        _Py_NewReference(self);
        __Pyx_SET_REFCNT(self, refcnt);
    }
#if CYTHON_COMPILING_IN_CPYTHON
    assert(PyType_IS_GC(Py_TYPE(self)) &&
           _Py_AS_GC(self)->gc.gc_refs != _PyGC_REFS_UNTRACKED);
    _Py_DEC_REFTOTAL;
#endif
#ifdef COUNT_ALLOCS
    --Py_TYPE(self)->tp_frees;
    --Py_TYPE(self)->tp_allocs;
#endif
#endif
}
static PyObject *
__Pyx_Coroutine_get_name(__pyx_CoroutineObject *self, CYTHON_UNUSED void *context)
{
    PyObject *name = self->gi_name;
    if (unlikely(!name)) name = Py_None;
    Py_INCREF(name);
    return name;
}
static int
__Pyx_Coroutine_set_name(__pyx_CoroutineObject *self, PyObject *value, CYTHON_UNUSED void *context)
{
    PyObject *tmp;
#if PY_MAJOR_VERSION >= 3
    if (unlikely(value == NULL || !PyUnicode_Check(value)))
#else
    if (unlikely(value == NULL || !PyString_Check(value)))
#endif
    {
        PyErr_SetString(PyExc_TypeError,
                        "__name__ must be set to a string object");
        return -1;
    }
    tmp = self->gi_name;
    Py_INCREF(value);
    self->gi_name = value;
    Py_XDECREF(tmp);
    return 0;
}
static PyObject *
__Pyx_Coroutine_get_qualname(__pyx_CoroutineObject *self, CYTHON_UNUSED void *context)
{
    PyObject *name = self->gi_qualname;
    if (unlikely(!name)) name = Py_None;
    Py_INCREF(name);
    return name;
}
static int
__Pyx_Coroutine_set_qualname(__pyx_CoroutineObject *self, PyObject *value, CYTHON_UNUSED void *context)
{
    PyObject *tmp;
#if PY_MAJOR_VERSION >= 3
    if (unlikely(value == NULL || !PyUnicode_Check(value)))
#else
    if (unlikely(value == NULL || !PyString_Check(value)))
#endif
    {
        PyErr_SetString(PyExc_TypeError,
                        "__qualname__ must be set to a string object");
        return -1;
    }
    tmp = self->gi_qualname;
    Py_INCREF(value);
    self->gi_qualname = value;
    Py_XDECREF(tmp);
    return 0;
}
static PyObject *
__Pyx_Coroutine_get_frame(__pyx_CoroutineObject *self, CYTHON_UNUSED void *context)
{
    PyObject *frame = self->gi_frame;
    if (!frame) {
        if (unlikely(!self->gi_code)) {
            Py_RETURN_NONE;
        }
        frame = (PyObject *) PyFrame_New(
            PyThreadState_Get(),            /*PyThreadState *tstate,*/
            (PyCodeObject*) self->gi_code,  /*PyCodeObject *code,*/
            __pyx_d,                 /*PyObject *globals,*/
            0                               /*PyObject *locals*/
        );
        if (unlikely(!frame))
            return NULL;
        self->gi_frame = frame;
    }
    Py_INCREF(frame);
    return frame;
}
static __pyx_CoroutineObject *__Pyx__Coroutine_New(
            PyTypeObject* type, __pyx_coroutine_body_t body, PyObject *code, PyObject *closure,
            PyObject *name, PyObject *qualname, PyObject *module_name) {
    __pyx_CoroutineObject *gen = PyObject_GC_New(__pyx_CoroutineObject, type);
    if (unlikely(!gen))
        return NULL;
    return __Pyx__Coroutine_NewInit(gen, body, code, closure, name, qualname, module_name);
}
static __pyx_CoroutineObject *__Pyx__Coroutine_NewInit(
            __pyx_CoroutineObject *gen, __pyx_coroutine_body_t body, PyObject *code, PyObject *closure,
            PyObject *name, PyObject *qualname, PyObject *module_name) {
    gen->body = body;
    gen->closure = closure;
    Py_XINCREF(closure);
    gen->is_running = 0;
    gen->resume_label = 0;
    gen->classobj = NULL;
    gen->yieldfrom = NULL;
    gen->gi_exc_state.exc_type = NULL;
    gen->gi_exc_state.exc_value = NULL;
    gen->gi_exc_state.exc_traceback = NULL;
#if CYTHON_USE_EXC_INFO_STACK
    gen->gi_exc_state.previous_item = NULL;
#endif
    gen->gi_weakreflist = NULL;
    Py_XINCREF(qualname);
    gen->gi_qualname = qualname;
    Py_XINCREF(name);
    gen->gi_name = name;
    Py_XINCREF(module_name);
    gen->gi_modulename = module_name;
    Py_XINCREF(code);
    gen->gi_code = code;
    gen->gi_frame = NULL;
    PyObject_GC_Track(gen);
    return gen;
}

/* PyObject_GenericGetAttrNoDict */
    #if CYTHON_USE_TYPE_SLOTS && CYTHON_USE_PYTYPE_LOOKUP && PY_VERSION_HEX < 0x03070000
static PyObject *__Pyx_RaiseGenericGetAttributeError(PyTypeObject *tp, PyObject *attr_name) {
    PyErr_Format(PyExc_AttributeError,
#if PY_MAJOR_VERSION >= 3
                 "'%.50s' object has no attribute '%U'",
                 tp->tp_name, attr_name);
#else
                 "'%.50s' object has no attribute '%.400s'",
                 tp->tp_name, PyString_AS_STRING(attr_name));
#endif
    return NULL;
}
static CYTHON_INLINE PyObject* __Pyx_PyObject_GenericGetAttrNoDict(PyObject* obj, PyObject* attr_name) {
    PyObject *descr;
    PyTypeObject *tp = Py_TYPE(obj);
    if (unlikely(!PyString_Check(attr_name))) {
        return PyObject_GenericGetAttr(obj, attr_name);
    }
    assert(!tp->tp_dictoffset);
    descr = _PyType_Lookup(tp, attr_name);
    if (unlikely(!descr)) {
        return __Pyx_RaiseGenericGetAttributeError(tp, attr_name);
    }
    Py_INCREF(descr);
    #if PY_MAJOR_VERSION < 3
    if (likely(PyType_HasFeature(Py_TYPE(descr), Py_TPFLAGS_HAVE_CLASS)))
    #endif
    {
        descrgetfunc f = Py_TYPE(descr)->tp_descr_get;
        if (unlikely(f)) {
            PyObject *res = f(descr, obj, (PyObject *)tp);
            Py_DECREF(descr);
            return res;
        }
    }
    return descr;
}
#endif

/* PatchModuleWithCoroutine */
    static PyObject* __Pyx_Coroutine_patch_module(PyObject* module, const char* py_code) {
#if defined(__Pyx_Generator_USED) || defined(__Pyx_Coroutine_USED)
    int result;
    PyObject *globals, *result_obj;
    globals = PyDict_New();  if (unlikely(!globals)) goto ignore;
    result = PyDict_SetItemString(globals, "_cython_coroutine_type",
    #ifdef __Pyx_Coroutine_USED
        (PyObject*)__pyx_CoroutineType);
    #else
        Py_None);
    #endif
    if (unlikely(result < 0)) goto ignore;
    result = PyDict_SetItemString(globals, "_cython_generator_type",
    #ifdef __Pyx_Generator_USED
        (PyObject*)__pyx_GeneratorType);
    #else
        Py_None);
    #endif
    if (unlikely(result < 0)) goto ignore;
    if (unlikely(PyDict_SetItemString(globals, "_module", module) < 0)) goto ignore;
    if (unlikely(PyDict_SetItemString(globals, "__builtins__", __pyx_b) < 0)) goto ignore;
    result_obj = PyRun_String(py_code, Py_file_input, globals, globals);
    if (unlikely(!result_obj)) goto ignore;
    Py_DECREF(result_obj);
    Py_DECREF(globals);
    return module;
ignore:
    Py_XDECREF(globals);
    PyErr_WriteUnraisable(module);
    if (unlikely(PyErr_WarnEx(PyExc_RuntimeWarning, "Cython module failed to patch module with custom type", 1) < 0)) {
        Py_DECREF(module);
        module = NULL;
    }
#else
    py_code++;
#endif
    return module;
}

/* PatchGeneratorABC */
    #ifndef CYTHON_REGISTER_ABCS
#define CYTHON_REGISTER_ABCS 1
#endif
#if defined(__Pyx_Generator_USED) || defined(__Pyx_Coroutine_USED)
static PyObject* __Pyx_patch_abc_module(PyObject *module);
static PyObject* __Pyx_patch_abc_module(PyObject *module) {
    module = __Pyx_Coroutine_patch_module(
        module, ""
"if _cython_generator_type is not None:\n"
"    try: Generator = _module.Generator\n"
"    except AttributeError: pass\n"
"    else: Generator.register(_cython_generator_type)\n"
"if _cython_coroutine_type is not None:\n"
"    try: Coroutine = _module.Coroutine\n"
"    except AttributeError: pass\n"
"    else: Coroutine.register(_cython_coroutine_type)\n"
    );
    return module;
}
#endif
static int __Pyx_patch_abc(void) {
#if defined(__Pyx_Generator_USED) || defined(__Pyx_Coroutine_USED)
    static int abc_patched = 0;
    if (CYTHON_REGISTER_ABCS && !abc_patched) {
        PyObject *module;
        module = PyImport_ImportModule((PY_MAJOR_VERSION >= 3) ? "collections.abc" : "collections");
        if (!module) {
            PyErr_WriteUnraisable(NULL);
            if (unlikely(PyErr_WarnEx(PyExc_RuntimeWarning,
                    ((PY_MAJOR_VERSION >= 3) ?
                        "Cython module failed to register with collections.abc module" :
                        "Cython module failed to register with collections module"), 1) < 0)) {
                return -1;
            }
        } else {
            module = __Pyx_patch_abc_module(module);
            abc_patched = 1;
            if (unlikely(!module))
                return -1;
            Py_DECREF(module);
        }
        module = PyImport_ImportModule("backports_abc");
        if (module) {
            module = __Pyx_patch_abc_module(module);
            Py_XDECREF(module);
        }
        if (!module) {
            PyErr_Clear();
        }
    }
#else
    if ((0)) __Pyx_Coroutine_patch_module(NULL, NULL);
#endif
    return 0;
}

/* Coroutine */
    static void __Pyx_CoroutineAwait_dealloc(PyObject *self) {
    PyObject_GC_UnTrack(self);
    Py_CLEAR(((__pyx_CoroutineAwaitObject*)self)->coroutine);
    PyObject_GC_Del(self);
}
static int __Pyx_CoroutineAwait_traverse(__pyx_CoroutineAwaitObject *self, visitproc visit, void *arg) {
    Py_VISIT(self->coroutine);
    return 0;
}
static int __Pyx_CoroutineAwait_clear(__pyx_CoroutineAwaitObject *self) {
    Py_CLEAR(self->coroutine);
    return 0;
}
static PyObject *__Pyx_CoroutineAwait_Next(__pyx_CoroutineAwaitObject *self) {
    return __Pyx_Generator_Next(self->coroutine);
}
static PyObject *__Pyx_CoroutineAwait_Send(__pyx_CoroutineAwaitObject *self, PyObject *value) {
    return __Pyx_Coroutine_Send(self->coroutine, value);
}
static PyObject *__Pyx_CoroutineAwait_Throw(__pyx_CoroutineAwaitObject *self, PyObject *args) {
    return __Pyx_Coroutine_Throw(self->coroutine, args);
}
static PyObject *__Pyx_CoroutineAwait_Close(__pyx_CoroutineAwaitObject *self, CYTHON_UNUSED PyObject *arg) {
    return __Pyx_Coroutine_Close(self->coroutine);
}
static PyObject *__Pyx_CoroutineAwait_self(PyObject *self) {
    Py_INCREF(self);
    return self;
}
#if !CYTHON_COMPILING_IN_PYPY
static PyObject *__Pyx_CoroutineAwait_no_new(CYTHON_UNUSED PyTypeObject *type, CYTHON_UNUSED PyObject *args, CYTHON_UNUSED PyObject *kwargs) {
    PyErr_SetString(PyExc_TypeError, "cannot instantiate type, use 'await coroutine' instead");
    return NULL;
}
#endif
static PyMethodDef __pyx_CoroutineAwait_methods[] = {
    {"send", (PyCFunction) __Pyx_CoroutineAwait_Send, METH_O,
     (char*) PyDoc_STR("send(arg) -> send 'arg' into coroutine,\nreturn next yielded value or raise StopIteration.")},
    {"throw", (PyCFunction) __Pyx_CoroutineAwait_Throw, METH_VARARGS,
     (char*) PyDoc_STR("throw(typ[,val[,tb]]) -> raise exception in coroutine,\nreturn next yielded value or raise StopIteration.")},
    {"close", (PyCFunction) __Pyx_CoroutineAwait_Close, METH_NOARGS,
     (char*) PyDoc_STR("close() -> raise GeneratorExit inside coroutine.")},
    {0, 0, 0, 0}
};
static PyTypeObject __pyx_CoroutineAwaitType_type = {
    PyVarObject_HEAD_INIT(0, 0)
    "coroutine_wrapper",
    sizeof(__pyx_CoroutineAwaitObject),
    0,
    (destructor) __Pyx_CoroutineAwait_dealloc,
    0,
    0,
    0,
    0,
    0,
    0,
    0,
    0,
    0,
    0,
    0,
    0,
    0,
    0,
    Py_TPFLAGS_DEFAULT | Py_TPFLAGS_HAVE_GC,
    PyDoc_STR("A wrapper object implementing __await__ for coroutines."),
    (traverseproc) __Pyx_CoroutineAwait_traverse,
    (inquiry) __Pyx_CoroutineAwait_clear,
    0,
    0,
    __Pyx_CoroutineAwait_self,
    (iternextfunc) __Pyx_CoroutineAwait_Next,
    __pyx_CoroutineAwait_methods,
    0                         ,
    0                      ,
    0,
    0,
    0,
    0,
    0,
    0,
    0,
#if !CYTHON_COMPILING_IN_PYPY
    __Pyx_CoroutineAwait_no_new,
#else
    0,
#endif
    0,
    0,
    0,
    0,
    0,
    0,
    0,
    0,
    0,
#if PY_VERSION_HEX >= 0x030400a1
    0,
#endif
#if PY_VERSION_HEX >= 0x030800b1
    0,
#endif
#if PY_VERSION_HEX >= 0x030800b4 && PY_VERSION_HEX < 0x03090000
    0,
#endif
};
#if PY_VERSION_HEX < 0x030500B1 || defined(__Pyx_IterableCoroutine_USED) || CYTHON_USE_ASYNC_SLOTS
static CYTHON_INLINE PyObject *__Pyx__Coroutine_await(PyObject *coroutine) {
    __pyx_CoroutineAwaitObject *await = PyObject_GC_New(__pyx_CoroutineAwaitObject, __pyx_CoroutineAwaitType);
    if (unlikely(!await)) return NULL;
    Py_INCREF(coroutine);
    await->coroutine = coroutine;
    PyObject_GC_Track(await);
    return (PyObject*)await;
}
#endif
#if PY_VERSION_HEX < 0x030500B1
static PyObject *__Pyx_Coroutine_await_method(PyObject *coroutine, CYTHON_UNUSED PyObject *arg) {
    return __Pyx__Coroutine_await(coroutine);
}
#endif
#if defined(__Pyx_IterableCoroutine_USED) || CYTHON_USE_ASYNC_SLOTS
static PyObject *__Pyx_Coroutine_await(PyObject *coroutine) {
    if (unlikely(!coroutine || !__Pyx_Coroutine_Check(coroutine))) {
        PyErr_SetString(PyExc_TypeError, "invalid input, expected coroutine");
        return NULL;
    }
    return __Pyx__Coroutine_await(coroutine);
}
#endif
#if CYTHON_COMPILING_IN_CPYTHON && PY_MAJOR_VERSION >= 3 && PY_VERSION_HEX < 0x030500B1
static PyObject *__Pyx_Coroutine_compare(PyObject *obj, PyObject *other, int op) {
    PyObject* result;
    switch (op) {
        case Py_EQ: result = (other == obj) ? Py_True : Py_False; break;
        case Py_NE: result = (other != obj) ? Py_True : Py_False; break;
        default:
            result = Py_NotImplemented;
    }
    Py_INCREF(result);
    return result;
}
#endif
static PyMethodDef __pyx_Coroutine_methods[] = {
    {"send", (PyCFunction) __Pyx_Coroutine_Send, METH_O,
     (char*) PyDoc_STR("send(arg) -> send 'arg' into coroutine,\nreturn next iterated value or raise StopIteration.")},
    {"throw", (PyCFunction) __Pyx_Coroutine_Throw, METH_VARARGS,
     (char*) PyDoc_STR("throw(typ[,val[,tb]]) -> raise exception in coroutine,\nreturn next iterated value or raise StopIteration.")},
    {"close", (PyCFunction) __Pyx_Coroutine_Close_Method, METH_NOARGS,
     (char*) PyDoc_STR("close() -> raise GeneratorExit inside coroutine.")},
#if PY_VERSION_HEX < 0x030500B1
    {"__await__", (PyCFunction) __Pyx_Coroutine_await_method, METH_NOARGS,
     (char*) PyDoc_STR("__await__() -> return an iterator to be used in await expression.")},
#endif
    {0, 0, 0, 0}
};
static PyMemberDef __pyx_Coroutine_memberlist[] = {
    {(char *) "cr_running", T_BOOL, offsetof(__pyx_CoroutineObject, is_running), READONLY, NULL},
    {(char*) "cr_await", T_OBJECT, offsetof(__pyx_CoroutineObject, yieldfrom), READONLY,
     (char*) PyDoc_STR("object being awaited, or None")},
    {(char*) "cr_code", T_OBJECT, offsetof(__pyx_CoroutineObject, gi_code), READONLY, NULL},
    {(char *) "__module__", T_OBJECT, offsetof(__pyx_CoroutineObject, gi_modulename), PY_WRITE_RESTRICTED, 0},
    {0, 0, 0, 0, 0}
};
static PyGetSetDef __pyx_Coroutine_getsets[] = {
    {(char *) "__name__", (getter)__Pyx_Coroutine_get_name, (setter)__Pyx_Coroutine_set_name,
     (char*) PyDoc_STR("name of the coroutine"), 0},
    {(char *) "__qualname__", (getter)__Pyx_Coroutine_get_qualname, (setter)__Pyx_Coroutine_set_qualname,
     (char*) PyDoc_STR("qualified name of the coroutine"), 0},
    {(char *) "cr_frame", (getter)__Pyx_Coroutine_get_frame, NULL,
     (char*) PyDoc_STR("Frame of the coroutine"), 0},
    {0, 0, 0, 0, 0}
};
#if CYTHON_USE_ASYNC_SLOTS
static __Pyx_PyAsyncMethodsStruct __pyx_Coroutine_as_async = {
    __Pyx_Coroutine_await,
    0,
    0,
};
#endif
static PyTypeObject __pyx_CoroutineType_type = {
    PyVarObject_HEAD_INIT(0, 0)
    "coroutine",
    sizeof(__pyx_CoroutineObject),
    0,
    (destructor) __Pyx_Coroutine_dealloc,
    0,
    0,
    0,
#if CYTHON_USE_ASYNC_SLOTS
    &__pyx_Coroutine_as_async,
#else
    0,
#endif
    0,
    0,
    0,
    0,
    0,
    0,
    0,
    0,
    0,
    0,
    Py_TPFLAGS_DEFAULT | Py_TPFLAGS_HAVE_GC | Py_TPFLAGS_HAVE_FINALIZE,
    0,
    (traverseproc) __Pyx_Coroutine_traverse,
    0,
#if CYTHON_USE_ASYNC_SLOTS && CYTHON_COMPILING_IN_CPYTHON && PY_MAJOR_VERSION >= 3 && PY_VERSION_HEX < 0x030500B1
    __Pyx_Coroutine_compare,
#else
    0,
#endif
    offsetof(__pyx_CoroutineObject, gi_weakreflist),
    0,
    0,
    __pyx_Coroutine_methods,
    __pyx_Coroutine_memberlist,
    __pyx_Coroutine_getsets,
    0,
    0,
    0,
    0,
    0,
    0,
    0,
    0,
    0,
    0,
    0,
    0,
    0,
    0,
    0,
#if CYTHON_USE_TP_FINALIZE
    0,
#else
    __Pyx_Coroutine_del,
#endif
    0,
#if CYTHON_USE_TP_FINALIZE
    __Pyx_Coroutine_del,
#elif PY_VERSION_HEX >= 0x030400a1
    0,
#endif
#if PY_VERSION_HEX >= 0x030800b1
    0,
#endif
#if PY_VERSION_HEX >= 0x030800b4 && PY_VERSION_HEX < 0x03090000
    0,
#endif
};
static int __pyx_Coroutine_init(void) {
    __pyx_CoroutineType_type.tp_getattro = __Pyx_PyObject_GenericGetAttrNoDict;
    __pyx_CoroutineType = __Pyx_FetchCommonType(&__pyx_CoroutineType_type);
    if (unlikely(!__pyx_CoroutineType))
        return -1;
#ifdef __Pyx_IterableCoroutine_USED
    if (unlikely(__pyx_IterableCoroutine_init() == -1))
        return -1;
#endif
    __pyx_CoroutineAwaitType = __Pyx_FetchCommonType(&__pyx_CoroutineAwaitType_type);
    if (unlikely(!__pyx_CoroutineAwaitType))
        return -1;
    return 0;
}

/* GetAwaitIter */
    static CYTHON_INLINE PyObject *__Pyx_Coroutine_GetAwaitableIter(PyObject *o) {
#ifdef __Pyx_Coroutine_USED
    if (__Pyx_Coroutine_Check(o)) {
        return __Pyx_NewRef(o);
    }
#endif
    return __Pyx__Coroutine_GetAwaitableIter(o);
}
static void __Pyx_Coroutine_AwaitableIterError(PyObject *source) {
#if PY_VERSION_HEX >= 0x030600B3 || defined(_PyErr_FormatFromCause)
    _PyErr_FormatFromCause(
        PyExc_TypeError,
        "'async for' received an invalid object "
        "from __anext__: %.100s",
        Py_TYPE(source)->tp_name);
#elif PY_MAJOR_VERSION >= 3
    PyObject *exc, *val, *val2, *tb;
    assert(PyErr_Occurred());
    PyErr_Fetch(&exc, &val, &tb);
    PyErr_NormalizeException(&exc, &val, &tb);
    if (tb != NULL) {
        PyException_SetTraceback(val, tb);
        Py_DECREF(tb);
    }
    Py_DECREF(exc);
    assert(!PyErr_Occurred());
    PyErr_Format(
        PyExc_TypeError,
        "'async for' received an invalid object "
        "from __anext__: %.100s",
        Py_TYPE(source)->tp_name);
    PyErr_Fetch(&exc, &val2, &tb);
    PyErr_NormalizeException(&exc, &val2, &tb);
    Py_INCREF(val);
    PyException_SetCause(val2, val);
    PyException_SetContext(val2, val);
    PyErr_Restore(exc, val2, tb);
#else
    source++;
#endif
}
static PyObject *__Pyx__Coroutine_GetAwaitableIter(PyObject *obj) {
    PyObject *res;
#if CYTHON_USE_ASYNC_SLOTS
    __Pyx_PyAsyncMethodsStruct* am = __Pyx_PyType_AsAsync(obj);
    if (likely(am && am->am_await)) {
        res = (*am->am_await)(obj);
    } else
#endif
#if PY_VERSION_HEX >= 0x030500B2 || defined(PyCoro_CheckExact)
    if (PyCoro_CheckExact(obj)) {
        return __Pyx_NewRef(obj);
    } else
#endif
#if CYTHON_COMPILING_IN_CPYTHON && defined(CO_ITERABLE_COROUTINE)
    if (PyGen_CheckExact(obj) && ((PyGenObject*)obj)->gi_code && ((PyCodeObject *)((PyGenObject*)obj)->gi_code)->co_flags & CO_ITERABLE_COROUTINE) {
        return __Pyx_NewRef(obj);
    } else
#endif
    {
        PyObject *method = NULL;
        int is_method = __Pyx_PyObject_GetMethod(obj, __pyx_n_s_await, &method);
        if (likely(is_method)) {
            res = __Pyx_PyObject_CallOneArg(method, obj);
        } else if (likely(method)) {
            res = __Pyx_PyObject_CallNoArg(method);
        } else
            goto slot_error;
        Py_DECREF(method);
    }
    if (unlikely(!res)) {
        __Pyx_Coroutine_AwaitableIterError(obj);
        goto bad;
    }
    if (unlikely(!PyIter_Check(res))) {
        PyErr_Format(PyExc_TypeError,
                     "__await__() returned non-iterator of type '%.100s'",
                     Py_TYPE(res)->tp_name);
        Py_CLEAR(res);
    } else {
        int is_coroutine = 0;
        #ifdef __Pyx_Coroutine_USED
        is_coroutine |= __Pyx_Coroutine_Check(res);
        #endif
        #if PY_VERSION_HEX >= 0x030500B2 || defined(PyCoro_CheckExact)
        is_coroutine |= PyCoro_CheckExact(res);
        #endif
        if (unlikely(is_coroutine)) {
            /* __await__ must return an *iterator*, not
               a coroutine or another awaitable (see PEP 492) */
            PyErr_SetString(PyExc_TypeError,
                            "__await__() returned a coroutine");
            Py_CLEAR(res);
        }
    }
    return res;
slot_error:
    PyErr_Format(PyExc_TypeError,
                 "object %.100s can't be used in 'await' expression",
                 Py_TYPE(obj)->tp_name);
bad:
    return NULL;
}

/* CoroutineYieldFrom */
    static PyObject* __Pyx__Coroutine_Yield_From_Generic(__pyx_CoroutineObject *gen, PyObject *source) {
    PyObject *retval;
    PyObject *source_gen = __Pyx__Coroutine_GetAwaitableIter(source);
    if (unlikely(!source_gen)) {
        return NULL;
    }
    if (__Pyx_Coroutine_Check(source_gen)) {
        retval = __Pyx_Generator_Next(source_gen);
    } else {
#if CYTHON_USE_TYPE_SLOTS
        retval = Py_TYPE(source_gen)->tp_iternext(source_gen);
#else
        retval = PyIter_Next(source_gen);
#endif
    }
    if (retval) {
        gen->yieldfrom = source_gen;
        return retval;
    }
    Py_DECREF(source_gen);
    return NULL;
}
static CYTHON_INLINE PyObject* __Pyx_Coroutine_Yield_From(__pyx_CoroutineObject *gen, PyObject *source) {
    PyObject *retval;
    if (__Pyx_Coroutine_Check(source)) {
        if (unlikely(((__pyx_CoroutineObject*)source)->yieldfrom)) {
            PyErr_SetString(
                PyExc_RuntimeError,
                "coroutine is being awaited already");
            return NULL;
        }
        retval = __Pyx_Generator_Next(source);
#ifdef __Pyx_AsyncGen_USED
    } else if (__pyx_PyAsyncGenASend_CheckExact(source)) {
        retval = __Pyx_async_gen_asend_iternext(source);
#endif
    } else {
        return __Pyx__Coroutine_Yield_From_Generic(gen, source);
    }
    if (retval) {
        Py_INCREF(source);
        gen->yieldfrom = source;
    }
    return retval;
}

/* PyObjectCallMethod0 */
    static PyObject* __Pyx_PyObject_CallMethod0(PyObject* obj, PyObject* method_name) {
    PyObject *method = NULL, *result = NULL;
    int is_method = __Pyx_PyObject_GetMethod(obj, method_name, &method);
    if (likely(is_method)) {
        result = __Pyx_PyObject_CallOneArg(method, obj);
        Py_DECREF(method);
        return result;
    }
    if (unlikely(!method)) goto bad;
    result = __Pyx_PyObject_CallNoArg(method);
    Py_DECREF(method);
bad:
    return result;
}

/* UnpackTupleError */
    static void __Pyx_UnpackTupleError(PyObject *t, Py_ssize_t index) {
    if (t == Py_None) {
      __Pyx_RaiseNoneNotIterableError();
    } else if (PyTuple_GET_SIZE(t) < index) {
      __Pyx_RaiseNeedMoreValuesError(PyTuple_GET_SIZE(t));
    } else {
      __Pyx_RaiseTooManyValuesError(index);
    }
}

/* UnpackTuple2 */
    static CYTHON_INLINE int __Pyx_unpack_tuple2_exact(
        PyObject* tuple, PyObject** pvalue1, PyObject** pvalue2, int decref_tuple) {
    PyObject *value1 = NULL, *value2 = NULL;
#if CYTHON_COMPILING_IN_PYPY
    value1 = PySequence_ITEM(tuple, 0);  if (unlikely(!value1)) goto bad;
    value2 = PySequence_ITEM(tuple, 1);  if (unlikely(!value2)) goto bad;
#else
    value1 = PyTuple_GET_ITEM(tuple, 0);  Py_INCREF(value1);
    value2 = PyTuple_GET_ITEM(tuple, 1);  Py_INCREF(value2);
#endif
    if (decref_tuple) {
        Py_DECREF(tuple);
    }
    *pvalue1 = value1;
    *pvalue2 = value2;
    return 0;
#if CYTHON_COMPILING_IN_PYPY
bad:
    Py_XDECREF(value1);
    Py_XDECREF(value2);
    if (decref_tuple) { Py_XDECREF(tuple); }
    return -1;
#endif
}
static int __Pyx_unpack_tuple2_generic(PyObject* tuple, PyObject** pvalue1, PyObject** pvalue2,
                                       int has_known_size, int decref_tuple) {
    Py_ssize_t index;
    PyObject *value1 = NULL, *value2 = NULL, *iter = NULL;
    iternextfunc iternext;
    iter = PyObject_GetIter(tuple);
    if (unlikely(!iter)) goto bad;
    if (decref_tuple) { Py_DECREF(tuple); tuple = NULL; }
    iternext = Py_TYPE(iter)->tp_iternext;
    value1 = iternext(iter); if (unlikely(!value1)) { index = 0; goto unpacking_failed; }
    value2 = iternext(iter); if (unlikely(!value2)) { index = 1; goto unpacking_failed; }
    if (!has_known_size && unlikely(__Pyx_IternextUnpackEndCheck(iternext(iter), 2))) goto bad;
    Py_DECREF(iter);
    *pvalue1 = value1;
    *pvalue2 = value2;
    return 0;
unpacking_failed:
    if (!has_known_size && __Pyx_IterFinish() == 0)
        __Pyx_RaiseNeedMoreValuesError(index);
bad:
    Py_XDECREF(iter);
    Py_XDECREF(value1);
    Py_XDECREF(value2);
    if (decref_tuple) { Py_XDECREF(tuple); }
    return -1;
}

/* dict_iter */
    static CYTHON_INLINE PyObject* __Pyx_dict_iterator(PyObject* iterable, int is_dict, PyObject* method_name,
                                                   Py_ssize_t* p_orig_length, int* p_source_is_dict) {
    is_dict = is_dict || likely(PyDict_CheckExact(iterable));
    *p_source_is_dict = is_dict;
    if (is_dict) {
#if !CYTHON_COMPILING_IN_PYPY
        *p_orig_length = PyDict_Size(iterable);
        Py_INCREF(iterable);
        return iterable;
#elif PY_MAJOR_VERSION >= 3
        static PyObject *py_items = NULL, *py_keys = NULL, *py_values = NULL;
        PyObject **pp = NULL;
        if (method_name) {
            const char *name = PyUnicode_AsUTF8(method_name);
            if (strcmp(name, "iteritems") == 0) pp = &py_items;
            else if (strcmp(name, "iterkeys") == 0) pp = &py_keys;
            else if (strcmp(name, "itervalues") == 0) pp = &py_values;
            if (pp) {
                if (!*pp) {
                    *pp = PyUnicode_FromString(name + 4);
                    if (!*pp)
                        return NULL;
                }
                method_name = *pp;
            }
        }
#endif
    }
    *p_orig_length = 0;
    if (method_name) {
        PyObject* iter;
        iterable = __Pyx_PyObject_CallMethod0(iterable, method_name);
        if (!iterable)
            return NULL;
#if !CYTHON_COMPILING_IN_PYPY
        if (PyTuple_CheckExact(iterable) || PyList_CheckExact(iterable))
            return iterable;
#endif
        iter = PyObject_GetIter(iterable);
        Py_DECREF(iterable);
        return iter;
    }
    return PyObject_GetIter(iterable);
}
static CYTHON_INLINE int __Pyx_dict_iter_next(
        PyObject* iter_obj, CYTHON_NCP_UNUSED Py_ssize_t orig_length, CYTHON_NCP_UNUSED Py_ssize_t* ppos,
        PyObject** pkey, PyObject** pvalue, PyObject** pitem, int source_is_dict) {
    PyObject* next_item;
#if !CYTHON_COMPILING_IN_PYPY
    if (source_is_dict) {
        PyObject *key, *value;
        if (unlikely(orig_length != PyDict_Size(iter_obj))) {
            PyErr_SetString(PyExc_RuntimeError, "dictionary changed size during iteration");
            return -1;
        }
        if (unlikely(!PyDict_Next(iter_obj, ppos, &key, &value))) {
            return 0;
        }
        if (pitem) {
            PyObject* tuple = PyTuple_New(2);
            if (unlikely(!tuple)) {
                return -1;
            }
            Py_INCREF(key);
            Py_INCREF(value);
            PyTuple_SET_ITEM(tuple, 0, key);
            PyTuple_SET_ITEM(tuple, 1, value);
            *pitem = tuple;
        } else {
            if (pkey) {
                Py_INCREF(key);
                *pkey = key;
            }
            if (pvalue) {
                Py_INCREF(value);
                *pvalue = value;
            }
        }
        return 1;
    } else if (PyTuple_CheckExact(iter_obj)) {
        Py_ssize_t pos = *ppos;
        if (unlikely(pos >= PyTuple_GET_SIZE(iter_obj))) return 0;
        *ppos = pos + 1;
        next_item = PyTuple_GET_ITEM(iter_obj, pos);
        Py_INCREF(next_item);
    } else if (PyList_CheckExact(iter_obj)) {
        Py_ssize_t pos = *ppos;
        if (unlikely(pos >= PyList_GET_SIZE(iter_obj))) return 0;
        *ppos = pos + 1;
        next_item = PyList_GET_ITEM(iter_obj, pos);
        Py_INCREF(next_item);
    } else
#endif
    {
        next_item = PyIter_Next(iter_obj);
        if (unlikely(!next_item)) {
            return __Pyx_IterFinish();
        }
    }
    if (pitem) {
        *pitem = next_item;
    } else if (pkey && pvalue) {
        if (__Pyx_unpack_tuple2(next_item, pkey, pvalue, source_is_dict, source_is_dict, 1))
            return -1;
    } else if (pkey) {
        *pkey = next_item;
    } else {
        *pvalue = next_item;
    }
    return 1;
}

/* dict_getitem_default */
    static PyObject* __Pyx_PyDict_GetItemDefault(PyObject* d, PyObject* key, PyObject* default_value) {
    PyObject* value;
#if PY_MAJOR_VERSION >= 3 && !CYTHON_COMPILING_IN_PYPY
    value = PyDict_GetItemWithError(d, key);
    if (unlikely(!value)) {
        if (unlikely(PyErr_Occurred()))
            return NULL;
        value = default_value;
    }
    Py_INCREF(value);
    if ((1));
#else
    if (PyString_CheckExact(key) || PyUnicode_CheckExact(key) || PyInt_CheckExact(key)) {
        value = PyDict_GetItem(d, key);
        if (unlikely(!value)) {
            value = default_value;
        }
        Py_INCREF(value);
    }
#endif
    else {
        if (default_value == Py_None)
            value = __Pyx_CallUnboundCMethod1(&__pyx_umethod_PyDict_Type_get, d, key);
        else
            value = __Pyx_CallUnboundCMethod2(&__pyx_umethod_PyDict_Type_get, d, key, default_value);
    }
    return value;
}

/* ReturnWithStopIteration */
    static void __Pyx__ReturnWithStopIteration(PyObject* value) {
    PyObject *exc, *args;
#if CYTHON_COMPILING_IN_CPYTHON || CYTHON_COMPILING_IN_PYSTON
    __Pyx_PyThreadState_declare
    if ((PY_VERSION_HEX >= 0x03030000 && PY_VERSION_HEX < 0x030500B1)
            || unlikely(PyTuple_Check(value) || PyExceptionInstance_Check(value))) {
        args = PyTuple_New(1);
        if (unlikely(!args)) return;
        Py_INCREF(value);
        PyTuple_SET_ITEM(args, 0, value);
        exc = PyType_Type.tp_call(PyExc_StopIteration, args, NULL);
        Py_DECREF(args);
        if (!exc) return;
    } else {
        Py_INCREF(value);
        exc = value;
    }
    #if CYTHON_FAST_THREAD_STATE
    __Pyx_PyThreadState_assign
    #if CYTHON_USE_EXC_INFO_STACK
    if (!__pyx_tstate->exc_info->exc_type)
    #else
    if (!__pyx_tstate->exc_type)
    #endif
    {
        Py_INCREF(PyExc_StopIteration);
        __Pyx_ErrRestore(PyExc_StopIteration, exc, NULL);
        return;
    }
    #endif
#else
    args = PyTuple_Pack(1, value);
    if (unlikely(!args)) return;
    exc = PyObject_Call(PyExc_StopIteration, args, NULL);
    Py_DECREF(args);
    if (unlikely(!exc)) return;
#endif
    PyErr_SetObject(PyExc_StopIteration, exc);
    Py_DECREF(exc);
}

/* ImportFrom */
    static PyObject* __Pyx_ImportFrom(PyObject* module, PyObject* name) {
    PyObject* value = __Pyx_PyObject_GetAttrStr(module, name);
    if (unlikely(!value) && PyErr_ExceptionMatches(PyExc_AttributeError)) {
        PyErr_Format(PyExc_ImportError,
        #if PY_MAJOR_VERSION < 3
            "cannot import name %.230s", PyString_AS_STRING(name));
        #else
            "cannot import name %S", name);
        #endif
    }
    return value;
}

/* ObjectGetItem */
    #if CYTHON_USE_TYPE_SLOTS
static PyObject *__Pyx_PyObject_GetIndex(PyObject *obj, PyObject* index) {
    PyObject *runerr;
    Py_ssize_t key_value;
    PySequenceMethods *m = Py_TYPE(obj)->tp_as_sequence;
    if (unlikely(!(m && m->sq_item))) {
        PyErr_Format(PyExc_TypeError, "'%.200s' object is not subscriptable", Py_TYPE(obj)->tp_name);
        return NULL;
    }
    key_value = __Pyx_PyIndex_AsSsize_t(index);
    if (likely(key_value != -1 || !(runerr = PyErr_Occurred()))) {
        return __Pyx_GetItemInt_Fast(obj, key_value, 0, 1, 1);
    }
    if (PyErr_GivenExceptionMatches(runerr, PyExc_OverflowError)) {
        PyErr_Clear();
        PyErr_Format(PyExc_IndexError, "cannot fit '%.200s' into an index-sized integer", Py_TYPE(index)->tp_name);
    }
    return NULL;
}
static PyObject *__Pyx_PyObject_GetItem(PyObject *obj, PyObject* key) {
    PyMappingMethods *m = Py_TYPE(obj)->tp_as_mapping;
    if (likely(m && m->mp_subscript)) {
        return m->mp_subscript(obj, key);
    }
    return __Pyx_PyObject_GetIndex(obj, key);
}
#endif

/* JoinPyUnicode */
    static PyObject* __Pyx_PyUnicode_Join(PyObject* value_tuple, Py_ssize_t value_count, Py_ssize_t result_ulength,
                                      CYTHON_UNUSED Py_UCS4 max_char) {
#if CYTHON_USE_UNICODE_INTERNALS && CYTHON_ASSUME_SAFE_MACROS && !CYTHON_AVOID_BORROWED_REFS
    PyObject *result_uval;
    int result_ukind;
    Py_ssize_t i, char_pos;
    void *result_udata;
#if CYTHON_PEP393_ENABLED
    result_uval = PyUnicode_New(result_ulength, max_char);
    if (unlikely(!result_uval)) return NULL;
    result_ukind = (max_char <= 255) ? PyUnicode_1BYTE_KIND : (max_char <= 65535) ? PyUnicode_2BYTE_KIND : PyUnicode_4BYTE_KIND;
    result_udata = PyUnicode_DATA(result_uval);
#else
    result_uval = PyUnicode_FromUnicode(NULL, result_ulength);
    if (unlikely(!result_uval)) return NULL;
    result_ukind = sizeof(Py_UNICODE);
    result_udata = PyUnicode_AS_UNICODE(result_uval);
#endif
    char_pos = 0;
    for (i=0; i < value_count; i++) {
        int ukind;
        Py_ssize_t ulength;
        void *udata;
        PyObject *uval = PyTuple_GET_ITEM(value_tuple, i);
        if (unlikely(__Pyx_PyUnicode_READY(uval)))
            goto bad;
        ulength = __Pyx_PyUnicode_GET_LENGTH(uval);
        if (unlikely(!ulength))
            continue;
        if (unlikely(char_pos + ulength < 0))
            goto overflow;
        ukind = __Pyx_PyUnicode_KIND(uval);
        udata = __Pyx_PyUnicode_DATA(uval);
        if (!CYTHON_PEP393_ENABLED || ukind == result_ukind) {
            memcpy((char *)result_udata + char_pos * result_ukind, udata, (size_t) (ulength * result_ukind));
        } else {
            #if CYTHON_COMPILING_IN_CPYTHON && PY_VERSION_HEX >= 0x030300F0 || defined(_PyUnicode_FastCopyCharacters)
            _PyUnicode_FastCopyCharacters(result_uval, char_pos, uval, 0, ulength);
            #else
            Py_ssize_t j;
            for (j=0; j < ulength; j++) {
                Py_UCS4 uchar = __Pyx_PyUnicode_READ(ukind, udata, j);
                __Pyx_PyUnicode_WRITE(result_ukind, result_udata, char_pos+j, uchar);
            }
            #endif
        }
        char_pos += ulength;
    }
    return result_uval;
overflow:
    PyErr_SetString(PyExc_OverflowError, "join() result is too long for a Python string");
bad:
    Py_DECREF(result_uval);
    return NULL;
#else
    result_ulength++;
    value_count++;
    return PyUnicode_Join(__pyx_empty_unicode, value_tuple);
#endif
}

/* UnicodeEquals */
    static CYTHON_INLINE int __Pyx_PyUnicode_Equals(PyObject* s1, PyObject* s2, int equals) {
#if CYTHON_COMPILING_IN_PYPY
    return PyObject_RichCompareBool(s1, s2, equals);
#else
#if PY_MAJOR_VERSION < 3
    PyObject* owned_ref = NULL;
#endif
    int s1_is_unicode, s2_is_unicode;
    if (s1 == s2) {
        goto return_eq;
    }
    s1_is_unicode = PyUnicode_CheckExact(s1);
    s2_is_unicode = PyUnicode_CheckExact(s2);
#if PY_MAJOR_VERSION < 3
    if ((s1_is_unicode & (!s2_is_unicode)) && PyString_CheckExact(s2)) {
        owned_ref = PyUnicode_FromObject(s2);
        if (unlikely(!owned_ref))
            return -1;
        s2 = owned_ref;
        s2_is_unicode = 1;
    } else if ((s2_is_unicode & (!s1_is_unicode)) && PyString_CheckExact(s1)) {
        owned_ref = PyUnicode_FromObject(s1);
        if (unlikely(!owned_ref))
            return -1;
        s1 = owned_ref;
        s1_is_unicode = 1;
    } else if (((!s2_is_unicode) & (!s1_is_unicode))) {
        return __Pyx_PyBytes_Equals(s1, s2, equals);
    }
#endif
    if (s1_is_unicode & s2_is_unicode) {
        Py_ssize_t length;
        int kind;
        void *data1, *data2;
        if (unlikely(__Pyx_PyUnicode_READY(s1) < 0) || unlikely(__Pyx_PyUnicode_READY(s2) < 0))
            return -1;
        length = __Pyx_PyUnicode_GET_LENGTH(s1);
        if (length != __Pyx_PyUnicode_GET_LENGTH(s2)) {
            goto return_ne;
        }
#if CYTHON_USE_UNICODE_INTERNALS
        {
            Py_hash_t hash1, hash2;
        #if CYTHON_PEP393_ENABLED
            hash1 = ((PyASCIIObject*)s1)->hash;
            hash2 = ((PyASCIIObject*)s2)->hash;
        #else
            hash1 = ((PyUnicodeObject*)s1)->hash;
            hash2 = ((PyUnicodeObject*)s2)->hash;
        #endif
            if (hash1 != hash2 && hash1 != -1 && hash2 != -1) {
                goto return_ne;
            }
        }
#endif
        kind = __Pyx_PyUnicode_KIND(s1);
        if (kind != __Pyx_PyUnicode_KIND(s2)) {
            goto return_ne;
        }
        data1 = __Pyx_PyUnicode_DATA(s1);
        data2 = __Pyx_PyUnicode_DATA(s2);
        if (__Pyx_PyUnicode_READ(kind, data1, 0) != __Pyx_PyUnicode_READ(kind, data2, 0)) {
            goto return_ne;
        } else if (length == 1) {
            goto return_eq;
        } else {
            int result = memcmp(data1, data2, (size_t)(length * kind));
            #if PY_MAJOR_VERSION < 3
            Py_XDECREF(owned_ref);
            #endif
            return (equals == Py_EQ) ? (result == 0) : (result != 0);
        }
    } else if ((s1 == Py_None) & s2_is_unicode) {
        goto return_ne;
    } else if ((s2 == Py_None) & s1_is_unicode) {
        goto return_ne;
    } else {
        int result;
        PyObject* py_result = PyObject_RichCompare(s1, s2, equals);
        #if PY_MAJOR_VERSION < 3
        Py_XDECREF(owned_ref);
        #endif
        if (!py_result)
            return -1;
        result = __Pyx_PyObject_IsTrue(py_result);
        Py_DECREF(py_result);
        return result;
    }
return_eq:
    #if PY_MAJOR_VERSION < 3
    Py_XDECREF(owned_ref);
    #endif
    return (equals == Py_EQ);
return_ne:
    #if PY_MAJOR_VERSION < 3
    Py_XDECREF(owned_ref);
    #endif
    return (equals == Py_NE);
#endif
}

/* AsyncIter */
    static PyObject *__Pyx_Coroutine_GetAsyncIter_Generic(PyObject *obj) {
#if PY_VERSION_HEX < 0x030500B1
    {
        PyObject *iter = __Pyx_PyObject_CallMethod0(obj, __pyx_n_s_aiter);
        if (likely(iter))
            return iter;
        if (!PyErr_ExceptionMatches(PyExc_AttributeError))
            return NULL;
    }
#else
    if ((0)) (void) __Pyx_PyObject_CallMethod0(obj, __pyx_n_s_aiter);
#endif
    PyErr_Format(PyExc_TypeError, "'async for' requires an object with __aiter__ method, got %.100s",
                 Py_TYPE(obj)->tp_name);
    return NULL;
}
static CYTHON_INLINE PyObject *__Pyx_Coroutine_GetAsyncIter(PyObject *obj) {
#ifdef __Pyx_AsyncGen_USED
    if (__Pyx_AsyncGen_CheckExact(obj)) {
        return __Pyx_NewRef(obj);
    }
#endif
#if CYTHON_USE_ASYNC_SLOTS
    {
        __Pyx_PyAsyncMethodsStruct* am = __Pyx_PyType_AsAsync(obj);
        if (likely(am && am->am_aiter)) {
            return (*am->am_aiter)(obj);
        }
    }
#endif
    return __Pyx_Coroutine_GetAsyncIter_Generic(obj);
}
static PyObject *__Pyx__Coroutine_AsyncIterNext(PyObject *obj) {
#if PY_VERSION_HEX < 0x030500B1
    {
        PyObject *value = __Pyx_PyObject_CallMethod0(obj, __pyx_n_s_anext);
        if (likely(value))
            return value;
    }
    if (PyErr_ExceptionMatches(PyExc_AttributeError))
#endif
        PyErr_Format(PyExc_TypeError, "'async for' requires an object with __anext__ method, got %.100s",
                     Py_TYPE(obj)->tp_name);
    return NULL;
}
static CYTHON_INLINE PyObject *__Pyx_Coroutine_AsyncIterNext(PyObject *obj) {
#ifdef __Pyx_AsyncGen_USED
    if (__Pyx_AsyncGen_CheckExact(obj)) {
        return __Pyx_async_gen_anext(obj);
    }
#endif
#if CYTHON_USE_ASYNC_SLOTS
    {
        __Pyx_PyAsyncMethodsStruct* am = __Pyx_PyType_AsAsync(obj);
        if (likely(am && am->am_anext)) {
            return (*am->am_anext)(obj);
        }
    }
#endif
    return __Pyx__Coroutine_AsyncIterNext(obj);
}

/* CallNextTpTraverse */
    static int __Pyx_call_next_tp_traverse(PyObject* obj, visitproc v, void *a, traverseproc current_tp_traverse) {
    PyTypeObject* type = Py_TYPE(obj);
    while (type && type->tp_traverse != current_tp_traverse)
        type = type->tp_base;
    while (type && type->tp_traverse == current_tp_traverse)
        type = type->tp_base;
    if (type && type->tp_traverse)
        return type->tp_traverse(obj, v, a);
    return 0;
}

/* CallNextTpClear */
    static void __Pyx_call_next_tp_clear(PyObject* obj, inquiry current_tp_clear) {
    PyTypeObject* type = Py_TYPE(obj);
    while (type && type->tp_clear != current_tp_clear)
        type = type->tp_base;
    while (type && type->tp_clear == current_tp_clear)
        type = type->tp_base;
    if (type && type->tp_clear)
        type->tp_clear(obj);
}

/* PyObject_GenericGetAttr */
    #if CYTHON_USE_TYPE_SLOTS && CYTHON_USE_PYTYPE_LOOKUP && PY_VERSION_HEX < 0x03070000
static PyObject* __Pyx_PyObject_GenericGetAttr(PyObject* obj, PyObject* attr_name) {
    if (unlikely(Py_TYPE(obj)->tp_dictoffset)) {
        return PyObject_GenericGetAttr(obj, attr_name);
    }
    return __Pyx_PyObject_GenericGetAttrNoDict(obj, attr_name);
}
#endif

/* SetVTable */
    static int __Pyx_SetVtable(PyObject *dict, void *vtable) {
#if PY_VERSION_HEX >= 0x02070000
    PyObject *ob = PyCapsule_New(vtable, 0, 0);
#else
    PyObject *ob = PyCObject_FromVoidPtr(vtable, 0);
#endif
    if (!ob)
        goto bad;
    if (PyDict_SetItem(dict, __pyx_n_s_pyx_vtable, ob) < 0)
        goto bad;
    Py_DECREF(ob);
    return 0;
bad:
    Py_XDECREF(ob);
    return -1;
}

/* PyObjectGetAttrStrNoError */
    static void __Pyx_PyObject_GetAttrStr_ClearAttributeError(void) {
    __Pyx_PyThreadState_declare
    __Pyx_PyThreadState_assign
    if (likely(__Pyx_PyErr_ExceptionMatches(PyExc_AttributeError)))
        __Pyx_PyErr_Clear();
}
static CYTHON_INLINE PyObject* __Pyx_PyObject_GetAttrStrNoError(PyObject* obj, PyObject* attr_name) {
    PyObject *result;
#if CYTHON_COMPILING_IN_CPYTHON && CYTHON_USE_TYPE_SLOTS && PY_VERSION_HEX >= 0x030700B1
    PyTypeObject* tp = Py_TYPE(obj);
    if (likely(tp->tp_getattro == PyObject_GenericGetAttr)) {
        return _PyObject_GenericGetAttrWithDict(obj, attr_name, NULL, 1);
    }
#endif
    result = __Pyx_PyObject_GetAttrStr(obj, attr_name);
    if (unlikely(!result)) {
        __Pyx_PyObject_GetAttrStr_ClearAttributeError();
    }
    return result;
}

/* SetupReduce */
    static int __Pyx_setup_reduce_is_named(PyObject* meth, PyObject* name) {
  int ret;
  PyObject *name_attr;
  name_attr = __Pyx_PyObject_GetAttrStr(meth, __pyx_n_s_name_2);
  if (likely(name_attr)) {
      ret = PyObject_RichCompareBool(name_attr, name, Py_EQ);
  } else {
      ret = -1;
  }
  if (unlikely(ret < 0)) {
      PyErr_Clear();
      ret = 0;
  }
  Py_XDECREF(name_attr);
  return ret;
}
static int __Pyx_setup_reduce(PyObject* type_obj) {
    int ret = 0;
    PyObject *object_reduce = NULL;
    PyObject *object_reduce_ex = NULL;
    PyObject *reduce = NULL;
    PyObject *reduce_ex = NULL;
    PyObject *reduce_cython = NULL;
    PyObject *setstate = NULL;
    PyObject *setstate_cython = NULL;
#if CYTHON_USE_PYTYPE_LOOKUP
    if (_PyType_Lookup((PyTypeObject*)type_obj, __pyx_n_s_getstate)) goto __PYX_GOOD;
#else
    if (PyObject_HasAttr(type_obj, __pyx_n_s_getstate)) goto __PYX_GOOD;
#endif
#if CYTHON_USE_PYTYPE_LOOKUP
    object_reduce_ex = _PyType_Lookup(&PyBaseObject_Type, __pyx_n_s_reduce_ex); if (!object_reduce_ex) goto __PYX_BAD;
#else
    object_reduce_ex = __Pyx_PyObject_GetAttrStr((PyObject*)&PyBaseObject_Type, __pyx_n_s_reduce_ex); if (!object_reduce_ex) goto __PYX_BAD;
#endif
    reduce_ex = __Pyx_PyObject_GetAttrStr(type_obj, __pyx_n_s_reduce_ex); if (unlikely(!reduce_ex)) goto __PYX_BAD;
    if (reduce_ex == object_reduce_ex) {
#if CYTHON_USE_PYTYPE_LOOKUP
        object_reduce = _PyType_Lookup(&PyBaseObject_Type, __pyx_n_s_reduce); if (!object_reduce) goto __PYX_BAD;
#else
        object_reduce = __Pyx_PyObject_GetAttrStr((PyObject*)&PyBaseObject_Type, __pyx_n_s_reduce); if (!object_reduce) goto __PYX_BAD;
#endif
        reduce = __Pyx_PyObject_GetAttrStr(type_obj, __pyx_n_s_reduce); if (unlikely(!reduce)) goto __PYX_BAD;
        if (reduce == object_reduce || __Pyx_setup_reduce_is_named(reduce, __pyx_n_s_reduce_cython)) {
            reduce_cython = __Pyx_PyObject_GetAttrStrNoError(type_obj, __pyx_n_s_reduce_cython);
            if (likely(reduce_cython)) {
                ret = PyDict_SetItem(((PyTypeObject*)type_obj)->tp_dict, __pyx_n_s_reduce, reduce_cython); if (unlikely(ret < 0)) goto __PYX_BAD;
                ret = PyDict_DelItem(((PyTypeObject*)type_obj)->tp_dict, __pyx_n_s_reduce_cython); if (unlikely(ret < 0)) goto __PYX_BAD;
            } else if (reduce == object_reduce || PyErr_Occurred()) {
                goto __PYX_BAD;
            }
            setstate = __Pyx_PyObject_GetAttrStr(type_obj, __pyx_n_s_setstate);
            if (!setstate) PyErr_Clear();
            if (!setstate || __Pyx_setup_reduce_is_named(setstate, __pyx_n_s_setstate_cython)) {
                setstate_cython = __Pyx_PyObject_GetAttrStrNoError(type_obj, __pyx_n_s_setstate_cython);
                if (likely(setstate_cython)) {
                    ret = PyDict_SetItem(((PyTypeObject*)type_obj)->tp_dict, __pyx_n_s_setstate, setstate_cython); if (unlikely(ret < 0)) goto __PYX_BAD;
                    ret = PyDict_DelItem(((PyTypeObject*)type_obj)->tp_dict, __pyx_n_s_setstate_cython); if (unlikely(ret < 0)) goto __PYX_BAD;
                } else if (!setstate || PyErr_Occurred()) {
                    goto __PYX_BAD;
                }
            }
            PyType_Modified((PyTypeObject*)type_obj);
        }
    }
    goto __PYX_GOOD;
__PYX_BAD:
    if (!PyErr_Occurred())
        PyErr_Format(PyExc_RuntimeError, "Unable to initialize pickling for %s", ((PyTypeObject*)type_obj)->tp_name);
    ret = -1;
__PYX_GOOD:
#if !CYTHON_USE_PYTYPE_LOOKUP
    Py_XDECREF(object_reduce);
    Py_XDECREF(object_reduce_ex);
#endif
    Py_XDECREF(reduce);
    Py_XDECREF(reduce_ex);
    Py_XDECREF(reduce_cython);
    Py_XDECREF(setstate);
    Py_XDECREF(setstate_cython);
    return ret;
}

/* TypeImport */
    #ifndef __PYX_HAVE_RT_ImportType
#define __PYX_HAVE_RT_ImportType
static PyTypeObject *__Pyx_ImportType(PyObject *module, const char *module_name, const char *class_name,
    size_t size, enum __Pyx_ImportType_CheckSize check_size)
{
    PyObject *result = 0;
    char warning[200];
    Py_ssize_t basicsize;
#ifdef Py_LIMITED_API
    PyObject *py_basicsize;
#endif
    result = PyObject_GetAttrString(module, class_name);
    if (!result)
        goto bad;
    if (!PyType_Check(result)) {
        PyErr_Format(PyExc_TypeError,
            "%.200s.%.200s is not a type object",
            module_name, class_name);
        goto bad;
    }
#ifndef Py_LIMITED_API
    basicsize = ((PyTypeObject *)result)->tp_basicsize;
#else
    py_basicsize = PyObject_GetAttrString(result, "__basicsize__");
    if (!py_basicsize)
        goto bad;
    basicsize = PyLong_AsSsize_t(py_basicsize);
    Py_DECREF(py_basicsize);
    py_basicsize = 0;
    if (basicsize == (Py_ssize_t)-1 && PyErr_Occurred())
        goto bad;
#endif
    if ((size_t)basicsize < size) {
        PyErr_Format(PyExc_ValueError,
            "%.200s.%.200s size changed, may indicate binary incompatibility. "
            "Expected %zd from C header, got %zd from PyObject",
            module_name, class_name, size, basicsize);
        goto bad;
    }
    if (check_size == __Pyx_ImportType_CheckSize_Error && (size_t)basicsize != size) {
        PyErr_Format(PyExc_ValueError,
            "%.200s.%.200s size changed, may indicate binary incompatibility. "
            "Expected %zd from C header, got %zd from PyObject",
            module_name, class_name, size, basicsize);
        goto bad;
    }
    else if (check_size == __Pyx_ImportType_CheckSize_Warn && (size_t)basicsize > size) {
        PyOS_snprintf(warning, sizeof(warning),
            "%s.%s size changed, may indicate binary incompatibility. "
            "Expected %zd from C header, got %zd from PyObject",
            module_name, class_name, size, basicsize);
        if (PyErr_WarnEx(NULL, warning, 0) < 0) goto bad;
    }
    return (PyTypeObject *)result;
bad:
    Py_XDECREF(result);
    return NULL;
}
#endif

/* PatchInspect */
    static PyObject* __Pyx_patch_inspect(PyObject* module) {
#if defined(__Pyx_Generator_USED) && (!defined(CYTHON_PATCH_INSPECT) || CYTHON_PATCH_INSPECT)
    static int inspect_patched = 0;
    if (unlikely((!inspect_patched) && module)) {
        module = __Pyx_Coroutine_patch_module(
            module, ""
"old_types = getattr(_module.isgenerator, '_cython_generator_types', None)\n"
"if old_types is None or not isinstance(old_types, set):\n"
"    old_types = set()\n"
"    def cy_wrap(orig_func, type=type, cython_generator_types=old_types):\n"
"        def cy_isgenerator(obj): return type(obj) in cython_generator_types or orig_func(obj)\n"
"        cy_isgenerator._cython_generator_types = cython_generator_types\n"
"        return cy_isgenerator\n"
"    _module.isgenerator = cy_wrap(_module.isgenerator)\n"
"old_types.add(_cython_generator_type)\n"
        );
        inspect_patched = 1;
    }
#else
    if ((0)) return __Pyx_Coroutine_patch_module(module, NULL);
#endif
    return module;
}

/* PatchAsyncIO */
    static PyObject* __Pyx_patch_asyncio(PyObject* module) {
#if PY_VERSION_HEX < 0x030500B2 &&\
        (defined(__Pyx_Coroutine_USED) || defined(__Pyx_Generator_USED)) &&\
        (!defined(CYTHON_PATCH_ASYNCIO) || CYTHON_PATCH_ASYNCIO)
    PyObject *patch_module = NULL;
    static int asyncio_patched = 0;
    if (unlikely((!asyncio_patched) && module)) {
        PyObject *package;
        package = __Pyx_Import(__pyx_n_s_asyncio_coroutines, NULL, 0);
        if (package) {
            patch_module = __Pyx_Coroutine_patch_module(
                PyObject_GetAttrString(package, "coroutines"), ""
"try:\n"
"    coro_types = _module._COROUTINE_TYPES\n"
"except AttributeError: pass\n"
"else:\n"
"    if _cython_coroutine_type is not None and _cython_coroutine_type not in coro_types:\n"
"        coro_types = tuple(coro_types) + (_cython_coroutine_type,)\n"
"    if _cython_generator_type is not None and _cython_generator_type not in coro_types:\n"
"        coro_types = tuple(coro_types) + (_cython_generator_type,)\n"
"_module._COROUTINE_TYPES = coro_types\n"
            );
        } else {
            PyErr_Clear();
            package = __Pyx_Import(__pyx_n_s_asyncio_tasks, NULL, 0);
            if (unlikely(!package)) goto asyncio_done;
            patch_module = __Pyx_Coroutine_patch_module(
                PyObject_GetAttrString(package, "tasks"), ""
"if hasattr(_module, 'iscoroutine'):\n"
"    old_types = getattr(_module.iscoroutine, '_cython_coroutine_types', None)\n"
"    if old_types is None or not isinstance(old_types, set):\n"
"        old_types = set()\n"
"        def cy_wrap(orig_func, type=type, cython_coroutine_types=old_types):\n"
"            def cy_iscoroutine(obj): return type(obj) in cython_coroutine_types or orig_func(obj)\n"
"            cy_iscoroutine._cython_coroutine_types = cython_coroutine_types\n"
"            return cy_iscoroutine\n"
"        _module.iscoroutine = cy_wrap(_module.iscoroutine)\n"
"    if _cython_coroutine_type is not None:\n"
"        old_types.add(_cython_coroutine_type)\n"
"    if _cython_generator_type is not None:\n"
"        old_types.add(_cython_generator_type)\n"
            );
        }
        Py_DECREF(package);
        if (unlikely(!patch_module)) goto ignore;
asyncio_done:
        PyErr_Clear();
        asyncio_patched = 1;
#ifdef __Pyx_Generator_USED
        {
            PyObject *inspect_module;
            if (patch_module) {
                inspect_module = PyObject_GetAttr(patch_module, __pyx_n_s_inspect);
                Py_DECREF(patch_module);
            } else {
                inspect_module = __Pyx_Import(__pyx_n_s_inspect, NULL, 0);
            }
            if (unlikely(!inspect_module)) goto ignore;
            inspect_module = __Pyx_patch_inspect(inspect_module);
            if (unlikely(!inspect_module)) {
                Py_DECREF(module);
                module = NULL;
            }
            Py_XDECREF(inspect_module);
        }
#else
        if ((0)) return __Pyx_patch_inspect(module);
#endif
    }
    return module;
ignore:
    PyErr_WriteUnraisable(module);
    if (unlikely(PyErr_WarnEx(PyExc_RuntimeWarning, "Cython module failed to patch asyncio package with custom generator type", 1) < 0)) {
        Py_DECREF(module);
        module = NULL;
    }
#else
    if ((0)) return __Pyx_patch_inspect(__Pyx_Coroutine_patch_module(module, NULL));
#endif
    return module;
}

/* CalculateMetaclass */
    static PyObject *__Pyx_CalculateMetaclass(PyTypeObject *metaclass, PyObject *bases) {
    Py_ssize_t i, nbases = PyTuple_GET_SIZE(bases);
    for (i=0; i < nbases; i++) {
        PyTypeObject *tmptype;
        PyObject *tmp = PyTuple_GET_ITEM(bases, i);
        tmptype = Py_TYPE(tmp);
#if PY_MAJOR_VERSION < 3
        if (tmptype == &PyClass_Type)
            continue;
#endif
        if (!metaclass) {
            metaclass = tmptype;
            continue;
        }
        if (PyType_IsSubtype(metaclass, tmptype))
            continue;
        if (PyType_IsSubtype(tmptype, metaclass)) {
            metaclass = tmptype;
            continue;
        }
        PyErr_SetString(PyExc_TypeError,
                        "metaclass conflict: "
                        "the metaclass of a derived class "
                        "must be a (non-strict) subclass "
                        "of the metaclasses of all its bases");
        return NULL;
    }
    if (!metaclass) {
#if PY_MAJOR_VERSION < 3
        metaclass = &PyClass_Type;
#else
        metaclass = &PyType_Type;
#endif
    }
    Py_INCREF((PyObject*) metaclass);
    return (PyObject*) metaclass;
}

/* Py3ClassCreate */
    static PyObject *__Pyx_Py3MetaclassPrepare(PyObject *metaclass, PyObject *bases, PyObject *name,
                                           PyObject *qualname, PyObject *mkw, PyObject *modname, PyObject *doc) {
    PyObject *ns;
    if (metaclass) {
        PyObject *prep = __Pyx_PyObject_GetAttrStr(metaclass, __pyx_n_s_prepare);
        if (prep) {
            PyObject *pargs = PyTuple_Pack(2, name, bases);
            if (unlikely(!pargs)) {
                Py_DECREF(prep);
                return NULL;
            }
            ns = PyObject_Call(prep, pargs, mkw);
            Py_DECREF(prep);
            Py_DECREF(pargs);
        } else {
            if (unlikely(!PyErr_ExceptionMatches(PyExc_AttributeError)))
                return NULL;
            PyErr_Clear();
            ns = PyDict_New();
        }
    } else {
        ns = PyDict_New();
    }
    if (unlikely(!ns))
        return NULL;
    if (unlikely(PyObject_SetItem(ns, __pyx_n_s_module, modname) < 0)) goto bad;
    if (unlikely(PyObject_SetItem(ns, __pyx_n_s_qualname, qualname) < 0)) goto bad;
    if (unlikely(doc && PyObject_SetItem(ns, __pyx_n_s_doc, doc) < 0)) goto bad;
    return ns;
bad:
    Py_DECREF(ns);
    return NULL;
}
static PyObject *__Pyx_Py3ClassCreate(PyObject *metaclass, PyObject *name, PyObject *bases,
                                      PyObject *dict, PyObject *mkw,
                                      int calculate_metaclass, int allow_py2_metaclass) {
    PyObject *result, *margs;
    PyObject *owned_metaclass = NULL;
    if (allow_py2_metaclass) {
        owned_metaclass = PyObject_GetItem(dict, __pyx_n_s_metaclass);
        if (owned_metaclass) {
            metaclass = owned_metaclass;
        } else if (likely(PyErr_ExceptionMatches(PyExc_KeyError))) {
            PyErr_Clear();
        } else {
            return NULL;
        }
    }
    if (calculate_metaclass && (!metaclass || PyType_Check(metaclass))) {
        metaclass = __Pyx_CalculateMetaclass((PyTypeObject*) metaclass, bases);
        Py_XDECREF(owned_metaclass);
        if (unlikely(!metaclass))
            return NULL;
        owned_metaclass = metaclass;
    }
    margs = PyTuple_Pack(3, name, bases, dict);
    if (unlikely(!margs)) {
        result = NULL;
    } else {
        result = PyObject_Call(metaclass, margs, mkw);
        Py_DECREF(margs);
    }
    Py_XDECREF(owned_metaclass);
    return result;
}

/* CLineInTraceback */
    #ifndef CYTHON_CLINE_IN_TRACEBACK
static int __Pyx_CLineForTraceback(CYTHON_NCP_UNUSED PyThreadState *tstate, int c_line) {
    PyObject *use_cline;
    PyObject *ptype, *pvalue, *ptraceback;
#if CYTHON_COMPILING_IN_CPYTHON
    PyObject **cython_runtime_dict;
#endif
    if (unlikely(!__pyx_cython_runtime)) {
        return c_line;
    }
    __Pyx_ErrFetchInState(tstate, &ptype, &pvalue, &ptraceback);
#if CYTHON_COMPILING_IN_CPYTHON
    cython_runtime_dict = _PyObject_GetDictPtr(__pyx_cython_runtime);
    if (likely(cython_runtime_dict)) {
        __PYX_PY_DICT_LOOKUP_IF_MODIFIED(
            use_cline, *cython_runtime_dict,
            __Pyx_PyDict_GetItemStr(*cython_runtime_dict, __pyx_n_s_cline_in_traceback))
    } else
#endif
    {
      PyObject *use_cline_obj = __Pyx_PyObject_GetAttrStr(__pyx_cython_runtime, __pyx_n_s_cline_in_traceback);
      if (use_cline_obj) {
        use_cline = PyObject_Not(use_cline_obj) ? Py_False : Py_True;
        Py_DECREF(use_cline_obj);
      } else {
        PyErr_Clear();
        use_cline = NULL;
      }
    }
    if (!use_cline) {
        c_line = 0;
        PyObject_SetAttr(__pyx_cython_runtime, __pyx_n_s_cline_in_traceback, Py_False);
    }
    else if (use_cline == Py_False || (use_cline != Py_True && PyObject_Not(use_cline) != 0)) {
        c_line = 0;
    }
    __Pyx_ErrRestoreInState(tstate, ptype, pvalue, ptraceback);
    return c_line;
}
#endif

/* CodeObjectCache */
    static int __pyx_bisect_code_objects(__Pyx_CodeObjectCacheEntry* entries, int count, int code_line) {
    int start = 0, mid = 0, end = count - 1;
    if (end >= 0 && code_line > entries[end].code_line) {
        return count;
    }
    while (start < end) {
        mid = start + (end - start) / 2;
        if (code_line < entries[mid].code_line) {
            end = mid;
        } else if (code_line > entries[mid].code_line) {
             start = mid + 1;
        } else {
            return mid;
        }
    }
    if (code_line <= entries[mid].code_line) {
        return mid;
    } else {
        return mid + 1;
    }
}
static PyCodeObject *__pyx_find_code_object(int code_line) {
    PyCodeObject* code_object;
    int pos;
    if (unlikely(!code_line) || unlikely(!__pyx_code_cache.entries)) {
        return NULL;
    }
    pos = __pyx_bisect_code_objects(__pyx_code_cache.entries, __pyx_code_cache.count, code_line);
    if (unlikely(pos >= __pyx_code_cache.count) || unlikely(__pyx_code_cache.entries[pos].code_line != code_line)) {
        return NULL;
    }
    code_object = __pyx_code_cache.entries[pos].code_object;
    Py_INCREF(code_object);
    return code_object;
}
static void __pyx_insert_code_object(int code_line, PyCodeObject* code_object) {
    int pos, i;
    __Pyx_CodeObjectCacheEntry* entries = __pyx_code_cache.entries;
    if (unlikely(!code_line)) {
        return;
    }
    if (unlikely(!entries)) {
        entries = (__Pyx_CodeObjectCacheEntry*)PyMem_Malloc(64*sizeof(__Pyx_CodeObjectCacheEntry));
        if (likely(entries)) {
            __pyx_code_cache.entries = entries;
            __pyx_code_cache.max_count = 64;
            __pyx_code_cache.count = 1;
            entries[0].code_line = code_line;
            entries[0].code_object = code_object;
            Py_INCREF(code_object);
        }
        return;
    }
    pos = __pyx_bisect_code_objects(__pyx_code_cache.entries, __pyx_code_cache.count, code_line);
    if ((pos < __pyx_code_cache.count) && unlikely(__pyx_code_cache.entries[pos].code_line == code_line)) {
        PyCodeObject* tmp = entries[pos].code_object;
        entries[pos].code_object = code_object;
        Py_DECREF(tmp);
        return;
    }
    if (__pyx_code_cache.count == __pyx_code_cache.max_count) {
        int new_max = __pyx_code_cache.max_count + 64;
        entries = (__Pyx_CodeObjectCacheEntry*)PyMem_Realloc(
            __pyx_code_cache.entries, ((size_t)new_max) * sizeof(__Pyx_CodeObjectCacheEntry));
        if (unlikely(!entries)) {
            return;
        }
        __pyx_code_cache.entries = entries;
        __pyx_code_cache.max_count = new_max;
    }
    for (i=__pyx_code_cache.count; i>pos; i--) {
        entries[i] = entries[i-1];
    }
    entries[pos].code_line = code_line;
    entries[pos].code_object = code_object;
    __pyx_code_cache.count++;
    Py_INCREF(code_object);
}

/* AddTraceback */
    #include "compile.h"
#include "frameobject.h"
#include "traceback.h"
static PyCodeObject* __Pyx_CreateCodeObjectForTraceback(
            const char *funcname, int c_line,
            int py_line, const char *filename) {
    PyCodeObject *py_code = 0;
    PyObject *py_srcfile = 0;
    PyObject *py_funcname = 0;
    #if PY_MAJOR_VERSION < 3
    py_srcfile = PyString_FromString(filename);
    #else
    py_srcfile = PyUnicode_FromString(filename);
    #endif
    if (!py_srcfile) goto bad;
    if (c_line) {
        #if PY_MAJOR_VERSION < 3
        py_funcname = PyString_FromFormat( "%s (%s:%d)", funcname, __pyx_cfilenm, c_line);
        #else
        py_funcname = PyUnicode_FromFormat( "%s (%s:%d)", funcname, __pyx_cfilenm, c_line);
        #endif
    }
    else {
        #if PY_MAJOR_VERSION < 3
        py_funcname = PyString_FromString(funcname);
        #else
        py_funcname = PyUnicode_FromString(funcname);
        #endif
    }
    if (!py_funcname) goto bad;
    py_code = __Pyx_PyCode_New(
        0,
        0,
        0,
        0,
        0,
        __pyx_empty_bytes, /*PyObject *code,*/
        __pyx_empty_tuple, /*PyObject *consts,*/
        __pyx_empty_tuple, /*PyObject *names,*/
        __pyx_empty_tuple, /*PyObject *varnames,*/
        __pyx_empty_tuple, /*PyObject *freevars,*/
        __pyx_empty_tuple, /*PyObject *cellvars,*/
        py_srcfile,   /*PyObject *filename,*/
        py_funcname,  /*PyObject *name,*/
        py_line,
        __pyx_empty_bytes  /*PyObject *lnotab*/
    );
    Py_DECREF(py_srcfile);
    Py_DECREF(py_funcname);
    return py_code;
bad:
    Py_XDECREF(py_srcfile);
    Py_XDECREF(py_funcname);
    return NULL;
}
static void __Pyx_AddTraceback(const char *funcname, int c_line,
                               int py_line, const char *filename) {
    PyCodeObject *py_code = 0;
    PyFrameObject *py_frame = 0;
    PyThreadState *tstate = __Pyx_PyThreadState_Current;
    if (c_line) {
        c_line = __Pyx_CLineForTraceback(tstate, c_line);
    }
    py_code = __pyx_find_code_object(c_line ? -c_line : py_line);
    if (!py_code) {
        py_code = __Pyx_CreateCodeObjectForTraceback(
            funcname, c_line, py_line, filename);
        if (!py_code) goto bad;
        __pyx_insert_code_object(c_line ? -c_line : py_line, py_code);
    }
    py_frame = PyFrame_New(
        tstate,            /*PyThreadState *tstate,*/
        py_code,           /*PyCodeObject *code,*/
        __pyx_d,    /*PyObject *globals,*/
        0                  /*PyObject *locals*/
    );
    if (!py_frame) goto bad;
    __Pyx_PyFrame_SetLineNumber(py_frame, py_line);
    PyTraceBack_Here(py_frame);
bad:
    Py_XDECREF(py_code);
    Py_XDECREF(py_frame);
}

/* CIntFromPyVerify */
    #define __PYX_VERIFY_RETURN_INT(target_type, func_type, func_value)\
    __PYX__VERIFY_RETURN_INT(target_type, func_type, func_value, 0)
#define __PYX_VERIFY_RETURN_INT_EXC(target_type, func_type, func_value)\
    __PYX__VERIFY_RETURN_INT(target_type, func_type, func_value, 1)
#define __PYX__VERIFY_RETURN_INT(target_type, func_type, func_value, exc)\
    {\
        func_type value = func_value;\
        if (sizeof(target_type) < sizeof(func_type)) {\
            if (unlikely(value != (func_type) (target_type) value)) {\
                func_type zero = 0;\
                if (exc && unlikely(value == (func_type)-1 && PyErr_Occurred()))\
                    return (target_type) -1;\
                if (is_unsigned && unlikely(value < zero))\
                    goto raise_neg_overflow;\
                else\
                    goto raise_overflow;\
            }\
        }\
        return (target_type) value;\
    }

/* CIntToPy */
    static CYTHON_INLINE PyObject* __Pyx_PyInt_From_enum____pyx_t_4grpc_7_cython_6cygrpc_AioServerStatus(enum __pyx_t_4grpc_7_cython_6cygrpc_AioServerStatus value) {
#ifdef __Pyx_HAS_GCC_DIAGNOSTIC
#pragma GCC diagnostic push
#pragma GCC diagnostic ignored "-Wconversion"
#endif
    const enum __pyx_t_4grpc_7_cython_6cygrpc_AioServerStatus neg_one = (enum __pyx_t_4grpc_7_cython_6cygrpc_AioServerStatus) -1, const_zero = (enum __pyx_t_4grpc_7_cython_6cygrpc_AioServerStatus) 0;
#ifdef __Pyx_HAS_GCC_DIAGNOSTIC
#pragma GCC diagnostic pop
#endif
    const int is_unsigned = neg_one > const_zero;
    if (is_unsigned) {
        if (sizeof(enum __pyx_t_4grpc_7_cython_6cygrpc_AioServerStatus) < sizeof(long)) {
            return PyInt_FromLong((long) value);
        } else if (sizeof(enum __pyx_t_4grpc_7_cython_6cygrpc_AioServerStatus) <= sizeof(unsigned long)) {
            return PyLong_FromUnsignedLong((unsigned long) value);
#ifdef HAVE_LONG_LONG
        } else if (sizeof(enum __pyx_t_4grpc_7_cython_6cygrpc_AioServerStatus) <= sizeof(unsigned PY_LONG_LONG)) {
            return PyLong_FromUnsignedLongLong((unsigned PY_LONG_LONG) value);
#endif
        }
    } else {
        if (sizeof(enum __pyx_t_4grpc_7_cython_6cygrpc_AioServerStatus) <= sizeof(long)) {
            return PyInt_FromLong((long) value);
#ifdef HAVE_LONG_LONG
        } else if (sizeof(enum __pyx_t_4grpc_7_cython_6cygrpc_AioServerStatus) <= sizeof(PY_LONG_LONG)) {
            return PyLong_FromLongLong((PY_LONG_LONG) value);
#endif
        }
    }
    {
        int one = 1; int little = (int)*(unsigned char *)&one;
        unsigned char *bytes = (unsigned char *)&value;
        return _PyLong_FromByteArray(bytes, sizeof(enum __pyx_t_4grpc_7_cython_6cygrpc_AioServerStatus),
                                     little, !is_unsigned);
    }
}

/* CIntFromPy */
    static CYTHON_INLINE enum __pyx_t_4grpc_7_cython_6cygrpc_AioServerStatus __Pyx_PyInt_As_enum____pyx_t_4grpc_7_cython_6cygrpc_AioServerStatus(PyObject *x) {
#ifdef __Pyx_HAS_GCC_DIAGNOSTIC
#pragma GCC diagnostic push
#pragma GCC diagnostic ignored "-Wconversion"
#endif
    const enum __pyx_t_4grpc_7_cython_6cygrpc_AioServerStatus neg_one = (enum __pyx_t_4grpc_7_cython_6cygrpc_AioServerStatus) -1, const_zero = (enum __pyx_t_4grpc_7_cython_6cygrpc_AioServerStatus) 0;
#ifdef __Pyx_HAS_GCC_DIAGNOSTIC
#pragma GCC diagnostic pop
#endif
    const int is_unsigned = neg_one > const_zero;
#if PY_MAJOR_VERSION < 3
    if (likely(PyInt_Check(x))) {
        if (sizeof(enum __pyx_t_4grpc_7_cython_6cygrpc_AioServerStatus) < sizeof(long)) {
            __PYX_VERIFY_RETURN_INT(enum __pyx_t_4grpc_7_cython_6cygrpc_AioServerStatus, long, PyInt_AS_LONG(x))
        } else {
            long val = PyInt_AS_LONG(x);
            if (is_unsigned && unlikely(val < 0)) {
                goto raise_neg_overflow;
            }
            return (enum __pyx_t_4grpc_7_cython_6cygrpc_AioServerStatus) val;
        }
    } else
#endif
    if (likely(PyLong_Check(x))) {
        if (is_unsigned) {
#if CYTHON_USE_PYLONG_INTERNALS
            const digit* digits = ((PyLongObject*)x)->ob_digit;
            switch (Py_SIZE(x)) {
                case  0: return (enum __pyx_t_4grpc_7_cython_6cygrpc_AioServerStatus) 0;
                case  1: __PYX_VERIFY_RETURN_INT(enum __pyx_t_4grpc_7_cython_6cygrpc_AioServerStatus, digit, digits[0])
                case 2:
                    if (8 * sizeof(enum __pyx_t_4grpc_7_cython_6cygrpc_AioServerStatus) > 1 * PyLong_SHIFT) {
                        if (8 * sizeof(unsigned long) > 2 * PyLong_SHIFT) {
                            __PYX_VERIFY_RETURN_INT(enum __pyx_t_4grpc_7_cython_6cygrpc_AioServerStatus, unsigned long, (((((unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0])))
                        } else if (8 * sizeof(enum __pyx_t_4grpc_7_cython_6cygrpc_AioServerStatus) >= 2 * PyLong_SHIFT) {
                            return (enum __pyx_t_4grpc_7_cython_6cygrpc_AioServerStatus) (((((enum __pyx_t_4grpc_7_cython_6cygrpc_AioServerStatus)digits[1]) << PyLong_SHIFT) | (enum __pyx_t_4grpc_7_cython_6cygrpc_AioServerStatus)digits[0]));
                        }
                    }
                    break;
                case 3:
                    if (8 * sizeof(enum __pyx_t_4grpc_7_cython_6cygrpc_AioServerStatus) > 2 * PyLong_SHIFT) {
                        if (8 * sizeof(unsigned long) > 3 * PyLong_SHIFT) {
                            __PYX_VERIFY_RETURN_INT(enum __pyx_t_4grpc_7_cython_6cygrpc_AioServerStatus, unsigned long, (((((((unsigned long)digits[2]) << PyLong_SHIFT) | (unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0])))
                        } else if (8 * sizeof(enum __pyx_t_4grpc_7_cython_6cygrpc_AioServerStatus) >= 3 * PyLong_SHIFT) {
                            return (enum __pyx_t_4grpc_7_cython_6cygrpc_AioServerStatus) (((((((enum __pyx_t_4grpc_7_cython_6cygrpc_AioServerStatus)digits[2]) << PyLong_SHIFT) | (enum __pyx_t_4grpc_7_cython_6cygrpc_AioServerStatus)digits[1]) << PyLong_SHIFT) | (enum __pyx_t_4grpc_7_cython_6cygrpc_AioServerStatus)digits[0]));
                        }
                    }
                    break;
                case 4:
                    if (8 * sizeof(enum __pyx_t_4grpc_7_cython_6cygrpc_AioServerStatus) > 3 * PyLong_SHIFT) {
                        if (8 * sizeof(unsigned long) > 4 * PyLong_SHIFT) {
                            __PYX_VERIFY_RETURN_INT(enum __pyx_t_4grpc_7_cython_6cygrpc_AioServerStatus, unsigned long, (((((((((unsigned long)digits[3]) << PyLong_SHIFT) | (unsigned long)digits[2]) << PyLong_SHIFT) | (unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0])))
                        } else if (8 * sizeof(enum __pyx_t_4grpc_7_cython_6cygrpc_AioServerStatus) >= 4 * PyLong_SHIFT) {
                            return (enum __pyx_t_4grpc_7_cython_6cygrpc_AioServerStatus) (((((((((enum __pyx_t_4grpc_7_cython_6cygrpc_AioServerStatus)digits[3]) << PyLong_SHIFT) | (enum __pyx_t_4grpc_7_cython_6cygrpc_AioServerStatus)digits[2]) << PyLong_SHIFT) | (enum __pyx_t_4grpc_7_cython_6cygrpc_AioServerStatus)digits[1]) << PyLong_SHIFT) | (enum __pyx_t_4grpc_7_cython_6cygrpc_AioServerStatus)digits[0]));
                        }
                    }
                    break;
            }
#endif
#if CYTHON_COMPILING_IN_CPYTHON
            if (unlikely(Py_SIZE(x) < 0)) {
                goto raise_neg_overflow;
            }
#else
            {
                int result = PyObject_RichCompareBool(x, Py_False, Py_LT);
                if (unlikely(result < 0))
                    return (enum __pyx_t_4grpc_7_cython_6cygrpc_AioServerStatus) -1;
                if (unlikely(result == 1))
                    goto raise_neg_overflow;
            }
#endif
            if (sizeof(enum __pyx_t_4grpc_7_cython_6cygrpc_AioServerStatus) <= sizeof(unsigned long)) {
                __PYX_VERIFY_RETURN_INT_EXC(enum __pyx_t_4grpc_7_cython_6cygrpc_AioServerStatus, unsigned long, PyLong_AsUnsignedLong(x))
#ifdef HAVE_LONG_LONG
            } else if (sizeof(enum __pyx_t_4grpc_7_cython_6cygrpc_AioServerStatus) <= sizeof(unsigned PY_LONG_LONG)) {
                __PYX_VERIFY_RETURN_INT_EXC(enum __pyx_t_4grpc_7_cython_6cygrpc_AioServerStatus, unsigned PY_LONG_LONG, PyLong_AsUnsignedLongLong(x))
#endif
            }
        } else {
#if CYTHON_USE_PYLONG_INTERNALS
            const digit* digits = ((PyLongObject*)x)->ob_digit;
            switch (Py_SIZE(x)) {
                case  0: return (enum __pyx_t_4grpc_7_cython_6cygrpc_AioServerStatus) 0;
                case -1: __PYX_VERIFY_RETURN_INT(enum __pyx_t_4grpc_7_cython_6cygrpc_AioServerStatus, sdigit, (sdigit) (-(sdigit)digits[0]))
                case  1: __PYX_VERIFY_RETURN_INT(enum __pyx_t_4grpc_7_cython_6cygrpc_AioServerStatus,  digit, +digits[0])
                case -2:
                    if (8 * sizeof(enum __pyx_t_4grpc_7_cython_6cygrpc_AioServerStatus) - 1 > 1 * PyLong_SHIFT) {
                        if (8 * sizeof(unsigned long) > 2 * PyLong_SHIFT) {
                            __PYX_VERIFY_RETURN_INT(enum __pyx_t_4grpc_7_cython_6cygrpc_AioServerStatus, long, -(long) (((((unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0])))
                        } else if (8 * sizeof(enum __pyx_t_4grpc_7_cython_6cygrpc_AioServerStatus) - 1 > 2 * PyLong_SHIFT) {
                            return (enum __pyx_t_4grpc_7_cython_6cygrpc_AioServerStatus) (((enum __pyx_t_4grpc_7_cython_6cygrpc_AioServerStatus)-1)*(((((enum __pyx_t_4grpc_7_cython_6cygrpc_AioServerStatus)digits[1]) << PyLong_SHIFT) | (enum __pyx_t_4grpc_7_cython_6cygrpc_AioServerStatus)digits[0])));
                        }
                    }
                    break;
                case 2:
                    if (8 * sizeof(enum __pyx_t_4grpc_7_cython_6cygrpc_AioServerStatus) > 1 * PyLong_SHIFT) {
                        if (8 * sizeof(unsigned long) > 2 * PyLong_SHIFT) {
                            __PYX_VERIFY_RETURN_INT(enum __pyx_t_4grpc_7_cython_6cygrpc_AioServerStatus, unsigned long, (((((unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0])))
                        } else if (8 * sizeof(enum __pyx_t_4grpc_7_cython_6cygrpc_AioServerStatus) - 1 > 2 * PyLong_SHIFT) {
                            return (enum __pyx_t_4grpc_7_cython_6cygrpc_AioServerStatus) ((((((enum __pyx_t_4grpc_7_cython_6cygrpc_AioServerStatus)digits[1]) << PyLong_SHIFT) | (enum __pyx_t_4grpc_7_cython_6cygrpc_AioServerStatus)digits[0])));
                        }
                    }
                    break;
                case -3:
                    if (8 * sizeof(enum __pyx_t_4grpc_7_cython_6cygrpc_AioServerStatus) - 1 > 2 * PyLong_SHIFT) {
                        if (8 * sizeof(unsigned long) > 3 * PyLong_SHIFT) {
                            __PYX_VERIFY_RETURN_INT(enum __pyx_t_4grpc_7_cython_6cygrpc_AioServerStatus, long, -(long) (((((((unsigned long)digits[2]) << PyLong_SHIFT) | (unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0])))
                        } else if (8 * sizeof(enum __pyx_t_4grpc_7_cython_6cygrpc_AioServerStatus) - 1 > 3 * PyLong_SHIFT) {
                            return (enum __pyx_t_4grpc_7_cython_6cygrpc_AioServerStatus) (((enum __pyx_t_4grpc_7_cython_6cygrpc_AioServerStatus)-1)*(((((((enum __pyx_t_4grpc_7_cython_6cygrpc_AioServerStatus)digits[2]) << PyLong_SHIFT) | (enum __pyx_t_4grpc_7_cython_6cygrpc_AioServerStatus)digits[1]) << PyLong_SHIFT) | (enum __pyx_t_4grpc_7_cython_6cygrpc_AioServerStatus)digits[0])));
                        }
                    }
                    break;
                case 3:
                    if (8 * sizeof(enum __pyx_t_4grpc_7_cython_6cygrpc_AioServerStatus) > 2 * PyLong_SHIFT) {
                        if (8 * sizeof(unsigned long) > 3 * PyLong_SHIFT) {
                            __PYX_VERIFY_RETURN_INT(enum __pyx_t_4grpc_7_cython_6cygrpc_AioServerStatus, unsigned long, (((((((unsigned long)digits[2]) << PyLong_SHIFT) | (unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0])))
                        } else if (8 * sizeof(enum __pyx_t_4grpc_7_cython_6cygrpc_AioServerStatus) - 1 > 3 * PyLong_SHIFT) {
                            return (enum __pyx_t_4grpc_7_cython_6cygrpc_AioServerStatus) ((((((((enum __pyx_t_4grpc_7_cython_6cygrpc_AioServerStatus)digits[2]) << PyLong_SHIFT) | (enum __pyx_t_4grpc_7_cython_6cygrpc_AioServerStatus)digits[1]) << PyLong_SHIFT) | (enum __pyx_t_4grpc_7_cython_6cygrpc_AioServerStatus)digits[0])));
                        }
                    }
                    break;
                case -4:
                    if (8 * sizeof(enum __pyx_t_4grpc_7_cython_6cygrpc_AioServerStatus) - 1 > 3 * PyLong_SHIFT) {
                        if (8 * sizeof(unsigned long) > 4 * PyLong_SHIFT) {
                            __PYX_VERIFY_RETURN_INT(enum __pyx_t_4grpc_7_cython_6cygrpc_AioServerStatus, long, -(long) (((((((((unsigned long)digits[3]) << PyLong_SHIFT) | (unsigned long)digits[2]) << PyLong_SHIFT) | (unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0])))
                        } else if (8 * sizeof(enum __pyx_t_4grpc_7_cython_6cygrpc_AioServerStatus) - 1 > 4 * PyLong_SHIFT) {
                            return (enum __pyx_t_4grpc_7_cython_6cygrpc_AioServerStatus) (((enum __pyx_t_4grpc_7_cython_6cygrpc_AioServerStatus)-1)*(((((((((enum __pyx_t_4grpc_7_cython_6cygrpc_AioServerStatus)digits[3]) << PyLong_SHIFT) | (enum __pyx_t_4grpc_7_cython_6cygrpc_AioServerStatus)digits[2]) << PyLong_SHIFT) | (enum __pyx_t_4grpc_7_cython_6cygrpc_AioServerStatus)digits[1]) << PyLong_SHIFT) | (enum __pyx_t_4grpc_7_cython_6cygrpc_AioServerStatus)digits[0])));
                        }
                    }
                    break;
                case 4:
                    if (8 * sizeof(enum __pyx_t_4grpc_7_cython_6cygrpc_AioServerStatus) > 3 * PyLong_SHIFT) {
                        if (8 * sizeof(unsigned long) > 4 * PyLong_SHIFT) {
                            __PYX_VERIFY_RETURN_INT(enum __pyx_t_4grpc_7_cython_6cygrpc_AioServerStatus, unsigned long, (((((((((unsigned long)digits[3]) << PyLong_SHIFT) | (unsigned long)digits[2]) << PyLong_SHIFT) | (unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0])))
                        } else if (8 * sizeof(enum __pyx_t_4grpc_7_cython_6cygrpc_AioServerStatus) - 1 > 4 * PyLong_SHIFT) {
                            return (enum __pyx_t_4grpc_7_cython_6cygrpc_AioServerStatus) ((((((((((enum __pyx_t_4grpc_7_cython_6cygrpc_AioServerStatus)digits[3]) << PyLong_SHIFT) | (enum __pyx_t_4grpc_7_cython_6cygrpc_AioServerStatus)digits[2]) << PyLong_SHIFT) | (enum __pyx_t_4grpc_7_cython_6cygrpc_AioServerStatus)digits[1]) << PyLong_SHIFT) | (enum __pyx_t_4grpc_7_cython_6cygrpc_AioServerStatus)digits[0])));
                        }
                    }
                    break;
            }
#endif
            if (sizeof(enum __pyx_t_4grpc_7_cython_6cygrpc_AioServerStatus) <= sizeof(long)) {
                __PYX_VERIFY_RETURN_INT_EXC(enum __pyx_t_4grpc_7_cython_6cygrpc_AioServerStatus, long, PyLong_AsLong(x))
#ifdef HAVE_LONG_LONG
            } else if (sizeof(enum __pyx_t_4grpc_7_cython_6cygrpc_AioServerStatus) <= sizeof(PY_LONG_LONG)) {
                __PYX_VERIFY_RETURN_INT_EXC(enum __pyx_t_4grpc_7_cython_6cygrpc_AioServerStatus, PY_LONG_LONG, PyLong_AsLongLong(x))
#endif
            }
        }
        {
#if CYTHON_COMPILING_IN_PYPY && !defined(_PyLong_AsByteArray)
            PyErr_SetString(PyExc_RuntimeError,
                            "_PyLong_AsByteArray() not available in PyPy, cannot convert large numbers");
#else
            enum __pyx_t_4grpc_7_cython_6cygrpc_AioServerStatus val;
            PyObject *v = __Pyx_PyNumber_IntOrLong(x);
 #if PY_MAJOR_VERSION < 3
            if (likely(v) && !PyLong_Check(v)) {
                PyObject *tmp = v;
                v = PyNumber_Long(tmp);
                Py_DECREF(tmp);
            }
 #endif
            if (likely(v)) {
                int one = 1; int is_little = (int)*(unsigned char *)&one;
                unsigned char *bytes = (unsigned char *)&val;
                int ret = _PyLong_AsByteArray((PyLongObject *)v,
                                              bytes, sizeof(val),
                                              is_little, !is_unsigned);
                Py_DECREF(v);
                if (likely(!ret))
                    return val;
            }
#endif
            return (enum __pyx_t_4grpc_7_cython_6cygrpc_AioServerStatus) -1;
        }
    } else {
        enum __pyx_t_4grpc_7_cython_6cygrpc_AioServerStatus val;
        PyObject *tmp = __Pyx_PyNumber_IntOrLong(x);
        if (!tmp) return (enum __pyx_t_4grpc_7_cython_6cygrpc_AioServerStatus) -1;
        val = __Pyx_PyInt_As_enum____pyx_t_4grpc_7_cython_6cygrpc_AioServerStatus(tmp);
        Py_DECREF(tmp);
        return val;
    }
raise_overflow:
    PyErr_SetString(PyExc_OverflowError,
        "value too large to convert to enum __pyx_t_4grpc_7_cython_6cygrpc_AioServerStatus");
    return (enum __pyx_t_4grpc_7_cython_6cygrpc_AioServerStatus) -1;
raise_neg_overflow:
    PyErr_SetString(PyExc_OverflowError,
        "can't convert negative value to enum __pyx_t_4grpc_7_cython_6cygrpc_AioServerStatus");
    return (enum __pyx_t_4grpc_7_cython_6cygrpc_AioServerStatus) -1;
}

/* CIntFromPy */
    static CYTHON_INLINE grpc_status_code __Pyx_PyInt_As_grpc_status_code(PyObject *x) {
#ifdef __Pyx_HAS_GCC_DIAGNOSTIC
#pragma GCC diagnostic push
#pragma GCC diagnostic ignored "-Wconversion"
#endif
    const grpc_status_code neg_one = (grpc_status_code) -1, const_zero = (grpc_status_code) 0;
#ifdef __Pyx_HAS_GCC_DIAGNOSTIC
#pragma GCC diagnostic pop
#endif
    const int is_unsigned = neg_one > const_zero;
#if PY_MAJOR_VERSION < 3
    if (likely(PyInt_Check(x))) {
        if (sizeof(grpc_status_code) < sizeof(long)) {
            __PYX_VERIFY_RETURN_INT(grpc_status_code, long, PyInt_AS_LONG(x))
        } else {
            long val = PyInt_AS_LONG(x);
            if (is_unsigned && unlikely(val < 0)) {
                goto raise_neg_overflow;
            }
            return (grpc_status_code) val;
        }
    } else
#endif
    if (likely(PyLong_Check(x))) {
        if (is_unsigned) {
#if CYTHON_USE_PYLONG_INTERNALS
            const digit* digits = ((PyLongObject*)x)->ob_digit;
            switch (Py_SIZE(x)) {
                case  0: return (grpc_status_code) 0;
                case  1: __PYX_VERIFY_RETURN_INT(grpc_status_code, digit, digits[0])
                case 2:
                    if (8 * sizeof(grpc_status_code) > 1 * PyLong_SHIFT) {
                        if (8 * sizeof(unsigned long) > 2 * PyLong_SHIFT) {
                            __PYX_VERIFY_RETURN_INT(grpc_status_code, unsigned long, (((((unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0])))
                        } else if (8 * sizeof(grpc_status_code) >= 2 * PyLong_SHIFT) {
                            return (grpc_status_code) (((((grpc_status_code)digits[1]) << PyLong_SHIFT) | (grpc_status_code)digits[0]));
                        }
                    }
                    break;
                case 3:
                    if (8 * sizeof(grpc_status_code) > 2 * PyLong_SHIFT) {
                        if (8 * sizeof(unsigned long) > 3 * PyLong_SHIFT) {
                            __PYX_VERIFY_RETURN_INT(grpc_status_code, unsigned long, (((((((unsigned long)digits[2]) << PyLong_SHIFT) | (unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0])))
                        } else if (8 * sizeof(grpc_status_code) >= 3 * PyLong_SHIFT) {
                            return (grpc_status_code) (((((((grpc_status_code)digits[2]) << PyLong_SHIFT) | (grpc_status_code)digits[1]) << PyLong_SHIFT) | (grpc_status_code)digits[0]));
                        }
                    }
                    break;
                case 4:
                    if (8 * sizeof(grpc_status_code) > 3 * PyLong_SHIFT) {
                        if (8 * sizeof(unsigned long) > 4 * PyLong_SHIFT) {
                            __PYX_VERIFY_RETURN_INT(grpc_status_code, unsigned long, (((((((((unsigned long)digits[3]) << PyLong_SHIFT) | (unsigned long)digits[2]) << PyLong_SHIFT) | (unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0])))
                        } else if (8 * sizeof(grpc_status_code) >= 4 * PyLong_SHIFT) {
                            return (grpc_status_code) (((((((((grpc_status_code)digits[3]) << PyLong_SHIFT) | (grpc_status_code)digits[2]) << PyLong_SHIFT) | (grpc_status_code)digits[1]) << PyLong_SHIFT) | (grpc_status_code)digits[0]));
                        }
                    }
                    break;
            }
#endif
#if CYTHON_COMPILING_IN_CPYTHON
            if (unlikely(Py_SIZE(x) < 0)) {
                goto raise_neg_overflow;
            }
#else
            {
                int result = PyObject_RichCompareBool(x, Py_False, Py_LT);
                if (unlikely(result < 0))
                    return (grpc_status_code) -1;
                if (unlikely(result == 1))
                    goto raise_neg_overflow;
            }
#endif
            if (sizeof(grpc_status_code) <= sizeof(unsigned long)) {
                __PYX_VERIFY_RETURN_INT_EXC(grpc_status_code, unsigned long, PyLong_AsUnsignedLong(x))
#ifdef HAVE_LONG_LONG
            } else if (sizeof(grpc_status_code) <= sizeof(unsigned PY_LONG_LONG)) {
                __PYX_VERIFY_RETURN_INT_EXC(grpc_status_code, unsigned PY_LONG_LONG, PyLong_AsUnsignedLongLong(x))
#endif
            }
        } else {
#if CYTHON_USE_PYLONG_INTERNALS
            const digit* digits = ((PyLongObject*)x)->ob_digit;
            switch (Py_SIZE(x)) {
                case  0: return (grpc_status_code) 0;
                case -1: __PYX_VERIFY_RETURN_INT(grpc_status_code, sdigit, (sdigit) (-(sdigit)digits[0]))
                case  1: __PYX_VERIFY_RETURN_INT(grpc_status_code,  digit, +digits[0])
                case -2:
                    if (8 * sizeof(grpc_status_code) - 1 > 1 * PyLong_SHIFT) {
                        if (8 * sizeof(unsigned long) > 2 * PyLong_SHIFT) {
                            __PYX_VERIFY_RETURN_INT(grpc_status_code, long, -(long) (((((unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0])))
                        } else if (8 * sizeof(grpc_status_code) - 1 > 2 * PyLong_SHIFT) {
                            return (grpc_status_code) (((grpc_status_code)-1)*(((((grpc_status_code)digits[1]) << PyLong_SHIFT) | (grpc_status_code)digits[0])));
                        }
                    }
                    break;
                case 2:
                    if (8 * sizeof(grpc_status_code) > 1 * PyLong_SHIFT) {
                        if (8 * sizeof(unsigned long) > 2 * PyLong_SHIFT) {
                            __PYX_VERIFY_RETURN_INT(grpc_status_code, unsigned long, (((((unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0])))
                        } else if (8 * sizeof(grpc_status_code) - 1 > 2 * PyLong_SHIFT) {
                            return (grpc_status_code) ((((((grpc_status_code)digits[1]) << PyLong_SHIFT) | (grpc_status_code)digits[0])));
                        }
                    }
                    break;
                case -3:
                    if (8 * sizeof(grpc_status_code) - 1 > 2 * PyLong_SHIFT) {
                        if (8 * sizeof(unsigned long) > 3 * PyLong_SHIFT) {
                            __PYX_VERIFY_RETURN_INT(grpc_status_code, long, -(long) (((((((unsigned long)digits[2]) << PyLong_SHIFT) | (unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0])))
                        } else if (8 * sizeof(grpc_status_code) - 1 > 3 * PyLong_SHIFT) {
                            return (grpc_status_code) (((grpc_status_code)-1)*(((((((grpc_status_code)digits[2]) << PyLong_SHIFT) | (grpc_status_code)digits[1]) << PyLong_SHIFT) | (grpc_status_code)digits[0])));
                        }
                    }
                    break;
                case 3:
                    if (8 * sizeof(grpc_status_code) > 2 * PyLong_SHIFT) {
                        if (8 * sizeof(unsigned long) > 3 * PyLong_SHIFT) {
                            __PYX_VERIFY_RETURN_INT(grpc_status_code, unsigned long, (((((((unsigned long)digits[2]) << PyLong_SHIFT) | (unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0])))
                        } else if (8 * sizeof(grpc_status_code) - 1 > 3 * PyLong_SHIFT) {
                            return (grpc_status_code) ((((((((grpc_status_code)digits[2]) << PyLong_SHIFT) | (grpc_status_code)digits[1]) << PyLong_SHIFT) | (grpc_status_code)digits[0])));
                        }
                    }
                    break;
                case -4:
                    if (8 * sizeof(grpc_status_code) - 1 > 3 * PyLong_SHIFT) {
                        if (8 * sizeof(unsigned long) > 4 * PyLong_SHIFT) {
                            __PYX_VERIFY_RETURN_INT(grpc_status_code, long, -(long) (((((((((unsigned long)digits[3]) << PyLong_SHIFT) | (unsigned long)digits[2]) << PyLong_SHIFT) | (unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0])))
                        } else if (8 * sizeof(grpc_status_code) - 1 > 4 * PyLong_SHIFT) {
                            return (grpc_status_code) (((grpc_status_code)-1)*(((((((((grpc_status_code)digits[3]) << PyLong_SHIFT) | (grpc_status_code)digits[2]) << PyLong_SHIFT) | (grpc_status_code)digits[1]) << PyLong_SHIFT) | (grpc_status_code)digits[0])));
                        }
                    }
                    break;
                case 4:
                    if (8 * sizeof(grpc_status_code) > 3 * PyLong_SHIFT) {
                        if (8 * sizeof(unsigned long) > 4 * PyLong_SHIFT) {
                            __PYX_VERIFY_RETURN_INT(grpc_status_code, unsigned long, (((((((((unsigned long)digits[3]) << PyLong_SHIFT) | (unsigned long)digits[2]) << PyLong_SHIFT) | (unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0])))
                        } else if (8 * sizeof(grpc_status_code) - 1 > 4 * PyLong_SHIFT) {
                            return (grpc_status_code) ((((((((((grpc_status_code)digits[3]) << PyLong_SHIFT) | (grpc_status_code)digits[2]) << PyLong_SHIFT) | (grpc_status_code)digits[1]) << PyLong_SHIFT) | (grpc_status_code)digits[0])));
                        }
                    }
                    break;
            }
#endif
            if (sizeof(grpc_status_code) <= sizeof(long)) {
                __PYX_VERIFY_RETURN_INT_EXC(grpc_status_code, long, PyLong_AsLong(x))
#ifdef HAVE_LONG_LONG
            } else if (sizeof(grpc_status_code) <= sizeof(PY_LONG_LONG)) {
                __PYX_VERIFY_RETURN_INT_EXC(grpc_status_code, PY_LONG_LONG, PyLong_AsLongLong(x))
#endif
            }
        }
        {
#if CYTHON_COMPILING_IN_PYPY && !defined(_PyLong_AsByteArray)
            PyErr_SetString(PyExc_RuntimeError,
                            "_PyLong_AsByteArray() not available in PyPy, cannot convert large numbers");
#else
            grpc_status_code val;
            PyObject *v = __Pyx_PyNumber_IntOrLong(x);
 #if PY_MAJOR_VERSION < 3
            if (likely(v) && !PyLong_Check(v)) {
                PyObject *tmp = v;
                v = PyNumber_Long(tmp);
                Py_DECREF(tmp);
            }
 #endif
            if (likely(v)) {
                int one = 1; int is_little = (int)*(unsigned char *)&one;
                unsigned char *bytes = (unsigned char *)&val;
                int ret = _PyLong_AsByteArray((PyLongObject *)v,
                                              bytes, sizeof(val),
                                              is_little, !is_unsigned);
                Py_DECREF(v);
                if (likely(!ret))
                    return val;
            }
#endif
            return (grpc_status_code) -1;
        }
    } else {
        grpc_status_code val;
        PyObject *tmp = __Pyx_PyNumber_IntOrLong(x);
        if (!tmp) return (grpc_status_code) -1;
        val = __Pyx_PyInt_As_grpc_status_code(tmp);
        Py_DECREF(tmp);
        return val;
    }
raise_overflow:
    PyErr_SetString(PyExc_OverflowError,
        "value too large to convert to grpc_status_code");
    return (grpc_status_code) -1;
raise_neg_overflow:
    PyErr_SetString(PyExc_OverflowError,
        "can't convert negative value to grpc_status_code");
    return (grpc_status_code) -1;
}

/* CIntFromPy */
    static CYTHON_INLINE int __Pyx_PyInt_As_int(PyObject *x) {
#ifdef __Pyx_HAS_GCC_DIAGNOSTIC
#pragma GCC diagnostic push
#pragma GCC diagnostic ignored "-Wconversion"
#endif
    const int neg_one = (int) -1, const_zero = (int) 0;
#ifdef __Pyx_HAS_GCC_DIAGNOSTIC
#pragma GCC diagnostic pop
#endif
    const int is_unsigned = neg_one > const_zero;
#if PY_MAJOR_VERSION < 3
    if (likely(PyInt_Check(x))) {
        if (sizeof(int) < sizeof(long)) {
            __PYX_VERIFY_RETURN_INT(int, long, PyInt_AS_LONG(x))
        } else {
            long val = PyInt_AS_LONG(x);
            if (is_unsigned && unlikely(val < 0)) {
                goto raise_neg_overflow;
            }
            return (int) val;
        }
    } else
#endif
    if (likely(PyLong_Check(x))) {
        if (is_unsigned) {
#if CYTHON_USE_PYLONG_INTERNALS
            const digit* digits = ((PyLongObject*)x)->ob_digit;
            switch (Py_SIZE(x)) {
                case  0: return (int) 0;
                case  1: __PYX_VERIFY_RETURN_INT(int, digit, digits[0])
                case 2:
                    if (8 * sizeof(int) > 1 * PyLong_SHIFT) {
                        if (8 * sizeof(unsigned long) > 2 * PyLong_SHIFT) {
                            __PYX_VERIFY_RETURN_INT(int, unsigned long, (((((unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0])))
                        } else if (8 * sizeof(int) >= 2 * PyLong_SHIFT) {
                            return (int) (((((int)digits[1]) << PyLong_SHIFT) | (int)digits[0]));
                        }
                    }
                    break;
                case 3:
                    if (8 * sizeof(int) > 2 * PyLong_SHIFT) {
                        if (8 * sizeof(unsigned long) > 3 * PyLong_SHIFT) {
                            __PYX_VERIFY_RETURN_INT(int, unsigned long, (((((((unsigned long)digits[2]) << PyLong_SHIFT) | (unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0])))
                        } else if (8 * sizeof(int) >= 3 * PyLong_SHIFT) {
                            return (int) (((((((int)digits[2]) << PyLong_SHIFT) | (int)digits[1]) << PyLong_SHIFT) | (int)digits[0]));
                        }
                    }
                    break;
                case 4:
                    if (8 * sizeof(int) > 3 * PyLong_SHIFT) {
                        if (8 * sizeof(unsigned long) > 4 * PyLong_SHIFT) {
                            __PYX_VERIFY_RETURN_INT(int, unsigned long, (((((((((unsigned long)digits[3]) << PyLong_SHIFT) | (unsigned long)digits[2]) << PyLong_SHIFT) | (unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0])))
                        } else if (8 * sizeof(int) >= 4 * PyLong_SHIFT) {
                            return (int) (((((((((int)digits[3]) << PyLong_SHIFT) | (int)digits[2]) << PyLong_SHIFT) | (int)digits[1]) << PyLong_SHIFT) | (int)digits[0]));
                        }
                    }
                    break;
            }
#endif
#if CYTHON_COMPILING_IN_CPYTHON
            if (unlikely(Py_SIZE(x) < 0)) {
                goto raise_neg_overflow;
            }
#else
            {
                int result = PyObject_RichCompareBool(x, Py_False, Py_LT);
                if (unlikely(result < 0))
                    return (int) -1;
                if (unlikely(result == 1))
                    goto raise_neg_overflow;
            }
#endif
            if (sizeof(int) <= sizeof(unsigned long)) {
                __PYX_VERIFY_RETURN_INT_EXC(int, unsigned long, PyLong_AsUnsignedLong(x))
#ifdef HAVE_LONG_LONG
            } else if (sizeof(int) <= sizeof(unsigned PY_LONG_LONG)) {
                __PYX_VERIFY_RETURN_INT_EXC(int, unsigned PY_LONG_LONG, PyLong_AsUnsignedLongLong(x))
#endif
            }
        } else {
#if CYTHON_USE_PYLONG_INTERNALS
            const digit* digits = ((PyLongObject*)x)->ob_digit;
            switch (Py_SIZE(x)) {
                case  0: return (int) 0;
                case -1: __PYX_VERIFY_RETURN_INT(int, sdigit, (sdigit) (-(sdigit)digits[0]))
                case  1: __PYX_VERIFY_RETURN_INT(int,  digit, +digits[0])
                case -2:
                    if (8 * sizeof(int) - 1 > 1 * PyLong_SHIFT) {
                        if (8 * sizeof(unsigned long) > 2 * PyLong_SHIFT) {
                            __PYX_VERIFY_RETURN_INT(int, long, -(long) (((((unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0])))
                        } else if (8 * sizeof(int) - 1 > 2 * PyLong_SHIFT) {
                            return (int) (((int)-1)*(((((int)digits[1]) << PyLong_SHIFT) | (int)digits[0])));
                        }
                    }
                    break;
                case 2:
                    if (8 * sizeof(int) > 1 * PyLong_SHIFT) {
                        if (8 * sizeof(unsigned long) > 2 * PyLong_SHIFT) {
                            __PYX_VERIFY_RETURN_INT(int, unsigned long, (((((unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0])))
                        } else if (8 * sizeof(int) - 1 > 2 * PyLong_SHIFT) {
                            return (int) ((((((int)digits[1]) << PyLong_SHIFT) | (int)digits[0])));
                        }
                    }
                    break;
                case -3:
                    if (8 * sizeof(int) - 1 > 2 * PyLong_SHIFT) {
                        if (8 * sizeof(unsigned long) > 3 * PyLong_SHIFT) {
                            __PYX_VERIFY_RETURN_INT(int, long, -(long) (((((((unsigned long)digits[2]) << PyLong_SHIFT) | (unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0])))
                        } else if (8 * sizeof(int) - 1 > 3 * PyLong_SHIFT) {
                            return (int) (((int)-1)*(((((((int)digits[2]) << PyLong_SHIFT) | (int)digits[1]) << PyLong_SHIFT) | (int)digits[0])));
                        }
                    }
                    break;
                case 3:
                    if (8 * sizeof(int) > 2 * PyLong_SHIFT) {
                        if (8 * sizeof(unsigned long) > 3 * PyLong_SHIFT) {
                            __PYX_VERIFY_RETURN_INT(int, unsigned long, (((((((unsigned long)digits[2]) << PyLong_SHIFT) | (unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0])))
                        } else if (8 * sizeof(int) - 1 > 3 * PyLong_SHIFT) {
                            return (int) ((((((((int)digits[2]) << PyLong_SHIFT) | (int)digits[1]) << PyLong_SHIFT) | (int)digits[0])));
                        }
                    }
                    break;
                case -4:
                    if (8 * sizeof(int) - 1 > 3 * PyLong_SHIFT) {
                        if (8 * sizeof(unsigned long) > 4 * PyLong_SHIFT) {
                            __PYX_VERIFY_RETURN_INT(int, long, -(long) (((((((((unsigned long)digits[3]) << PyLong_SHIFT) | (unsigned long)digits[2]) << PyLong_SHIFT) | (unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0])))
                        } else if (8 * sizeof(int) - 1 > 4 * PyLong_SHIFT) {
                            return (int) (((int)-1)*(((((((((int)digits[3]) << PyLong_SHIFT) | (int)digits[2]) << PyLong_SHIFT) | (int)digits[1]) << PyLong_SHIFT) | (int)digits[0])));
                        }
                    }
                    break;
                case 4:
                    if (8 * sizeof(int) > 3 * PyLong_SHIFT) {
                        if (8 * sizeof(unsigned long) > 4 * PyLong_SHIFT) {
                            __PYX_VERIFY_RETURN_INT(int, unsigned long, (((((((((unsigned long)digits[3]) << PyLong_SHIFT) | (unsigned long)digits[2]) << PyLong_SHIFT) | (unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0])))
                        } else if (8 * sizeof(int) - 1 > 4 * PyLong_SHIFT) {
                            return (int) ((((((((((int)digits[3]) << PyLong_SHIFT) | (int)digits[2]) << PyLong_SHIFT) | (int)digits[1]) << PyLong_SHIFT) | (int)digits[0])));
                        }
                    }
                    break;
            }
#endif
            if (sizeof(int) <= sizeof(long)) {
                __PYX_VERIFY_RETURN_INT_EXC(int, long, PyLong_AsLong(x))
#ifdef HAVE_LONG_LONG
            } else if (sizeof(int) <= sizeof(PY_LONG_LONG)) {
                __PYX_VERIFY_RETURN_INT_EXC(int, PY_LONG_LONG, PyLong_AsLongLong(x))
#endif
            }
        }
        {
#if CYTHON_COMPILING_IN_PYPY && !defined(_PyLong_AsByteArray)
            PyErr_SetString(PyExc_RuntimeError,
                            "_PyLong_AsByteArray() not available in PyPy, cannot convert large numbers");
#else
            int val;
            PyObject *v = __Pyx_PyNumber_IntOrLong(x);
 #if PY_MAJOR_VERSION < 3
            if (likely(v) && !PyLong_Check(v)) {
                PyObject *tmp = v;
                v = PyNumber_Long(tmp);
                Py_DECREF(tmp);
            }
 #endif
            if (likely(v)) {
                int one = 1; int is_little = (int)*(unsigned char *)&one;
                unsigned char *bytes = (unsigned char *)&val;
                int ret = _PyLong_AsByteArray((PyLongObject *)v,
                                              bytes, sizeof(val),
                                              is_little, !is_unsigned);
                Py_DECREF(v);
                if (likely(!ret))
                    return val;
            }
#endif
            return (int) -1;
        }
    } else {
        int val;
        PyObject *tmp = __Pyx_PyNumber_IntOrLong(x);
        if (!tmp) return (int) -1;
        val = __Pyx_PyInt_As_int(tmp);
        Py_DECREF(tmp);
        return val;
    }
raise_overflow:
    PyErr_SetString(PyExc_OverflowError,
        "value too large to convert to int");
    return (int) -1;
raise_neg_overflow:
    PyErr_SetString(PyExc_OverflowError,
        "can't convert negative value to int");
    return (int) -1;
}

/* CIntFromPy */
    static CYTHON_INLINE grpc_connectivity_state __Pyx_PyInt_As_grpc_connectivity_state(PyObject *x) {
#ifdef __Pyx_HAS_GCC_DIAGNOSTIC
#pragma GCC diagnostic push
#pragma GCC diagnostic ignored "-Wconversion"
#endif
    const grpc_connectivity_state neg_one = (grpc_connectivity_state) -1, const_zero = (grpc_connectivity_state) 0;
#ifdef __Pyx_HAS_GCC_DIAGNOSTIC
#pragma GCC diagnostic pop
#endif
    const int is_unsigned = neg_one > const_zero;
#if PY_MAJOR_VERSION < 3
    if (likely(PyInt_Check(x))) {
        if (sizeof(grpc_connectivity_state) < sizeof(long)) {
            __PYX_VERIFY_RETURN_INT(grpc_connectivity_state, long, PyInt_AS_LONG(x))
        } else {
            long val = PyInt_AS_LONG(x);
            if (is_unsigned && unlikely(val < 0)) {
                goto raise_neg_overflow;
            }
            return (grpc_connectivity_state) val;
        }
    } else
#endif
    if (likely(PyLong_Check(x))) {
        if (is_unsigned) {
#if CYTHON_USE_PYLONG_INTERNALS
            const digit* digits = ((PyLongObject*)x)->ob_digit;
            switch (Py_SIZE(x)) {
                case  0: return (grpc_connectivity_state) 0;
                case  1: __PYX_VERIFY_RETURN_INT(grpc_connectivity_state, digit, digits[0])
                case 2:
                    if (8 * sizeof(grpc_connectivity_state) > 1 * PyLong_SHIFT) {
                        if (8 * sizeof(unsigned long) > 2 * PyLong_SHIFT) {
                            __PYX_VERIFY_RETURN_INT(grpc_connectivity_state, unsigned long, (((((unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0])))
                        } else if (8 * sizeof(grpc_connectivity_state) >= 2 * PyLong_SHIFT) {
                            return (grpc_connectivity_state) (((((grpc_connectivity_state)digits[1]) << PyLong_SHIFT) | (grpc_connectivity_state)digits[0]));
                        }
                    }
                    break;
                case 3:
                    if (8 * sizeof(grpc_connectivity_state) > 2 * PyLong_SHIFT) {
                        if (8 * sizeof(unsigned long) > 3 * PyLong_SHIFT) {
                            __PYX_VERIFY_RETURN_INT(grpc_connectivity_state, unsigned long, (((((((unsigned long)digits[2]) << PyLong_SHIFT) | (unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0])))
                        } else if (8 * sizeof(grpc_connectivity_state) >= 3 * PyLong_SHIFT) {
                            return (grpc_connectivity_state) (((((((grpc_connectivity_state)digits[2]) << PyLong_SHIFT) | (grpc_connectivity_state)digits[1]) << PyLong_SHIFT) | (grpc_connectivity_state)digits[0]));
                        }
                    }
                    break;
                case 4:
                    if (8 * sizeof(grpc_connectivity_state) > 3 * PyLong_SHIFT) {
                        if (8 * sizeof(unsigned long) > 4 * PyLong_SHIFT) {
                            __PYX_VERIFY_RETURN_INT(grpc_connectivity_state, unsigned long, (((((((((unsigned long)digits[3]) << PyLong_SHIFT) | (unsigned long)digits[2]) << PyLong_SHIFT) | (unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0])))
                        } else if (8 * sizeof(grpc_connectivity_state) >= 4 * PyLong_SHIFT) {
                            return (grpc_connectivity_state) (((((((((grpc_connectivity_state)digits[3]) << PyLong_SHIFT) | (grpc_connectivity_state)digits[2]) << PyLong_SHIFT) | (grpc_connectivity_state)digits[1]) << PyLong_SHIFT) | (grpc_connectivity_state)digits[0]));
                        }
                    }
                    break;
            }
#endif
#if CYTHON_COMPILING_IN_CPYTHON
            if (unlikely(Py_SIZE(x) < 0)) {
                goto raise_neg_overflow;
            }
#else
            {
                int result = PyObject_RichCompareBool(x, Py_False, Py_LT);
                if (unlikely(result < 0))
                    return (grpc_connectivity_state) -1;
                if (unlikely(result == 1))
                    goto raise_neg_overflow;
            }
#endif
            if (sizeof(grpc_connectivity_state) <= sizeof(unsigned long)) {
                __PYX_VERIFY_RETURN_INT_EXC(grpc_connectivity_state, unsigned long, PyLong_AsUnsignedLong(x))
#ifdef HAVE_LONG_LONG
            } else if (sizeof(grpc_connectivity_state) <= sizeof(unsigned PY_LONG_LONG)) {
                __PYX_VERIFY_RETURN_INT_EXC(grpc_connectivity_state, unsigned PY_LONG_LONG, PyLong_AsUnsignedLongLong(x))
#endif
            }
        } else {
#if CYTHON_USE_PYLONG_INTERNALS
            const digit* digits = ((PyLongObject*)x)->ob_digit;
            switch (Py_SIZE(x)) {
                case  0: return (grpc_connectivity_state) 0;
                case -1: __PYX_VERIFY_RETURN_INT(grpc_connectivity_state, sdigit, (sdigit) (-(sdigit)digits[0]))
                case  1: __PYX_VERIFY_RETURN_INT(grpc_connectivity_state,  digit, +digits[0])
                case -2:
                    if (8 * sizeof(grpc_connectivity_state) - 1 > 1 * PyLong_SHIFT) {
                        if (8 * sizeof(unsigned long) > 2 * PyLong_SHIFT) {
                            __PYX_VERIFY_RETURN_INT(grpc_connectivity_state, long, -(long) (((((unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0])))
                        } else if (8 * sizeof(grpc_connectivity_state) - 1 > 2 * PyLong_SHIFT) {
                            return (grpc_connectivity_state) (((grpc_connectivity_state)-1)*(((((grpc_connectivity_state)digits[1]) << PyLong_SHIFT) | (grpc_connectivity_state)digits[0])));
                        }
                    }
                    break;
                case 2:
                    if (8 * sizeof(grpc_connectivity_state) > 1 * PyLong_SHIFT) {
                        if (8 * sizeof(unsigned long) > 2 * PyLong_SHIFT) {
                            __PYX_VERIFY_RETURN_INT(grpc_connectivity_state, unsigned long, (((((unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0])))
                        } else if (8 * sizeof(grpc_connectivity_state) - 1 > 2 * PyLong_SHIFT) {
                            return (grpc_connectivity_state) ((((((grpc_connectivity_state)digits[1]) << PyLong_SHIFT) | (grpc_connectivity_state)digits[0])));
                        }
                    }
                    break;
                case -3:
                    if (8 * sizeof(grpc_connectivity_state) - 1 > 2 * PyLong_SHIFT) {
                        if (8 * sizeof(unsigned long) > 3 * PyLong_SHIFT) {
                            __PYX_VERIFY_RETURN_INT(grpc_connectivity_state, long, -(long) (((((((unsigned long)digits[2]) << PyLong_SHIFT) | (unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0])))
                        } else if (8 * sizeof(grpc_connectivity_state) - 1 > 3 * PyLong_SHIFT) {
                            return (grpc_connectivity_state) (((grpc_connectivity_state)-1)*(((((((grpc_connectivity_state)digits[2]) << PyLong_SHIFT) | (grpc_connectivity_state)digits[1]) << PyLong_SHIFT) | (grpc_connectivity_state)digits[0])));
                        }
                    }
                    break;
                case 3:
                    if (8 * sizeof(grpc_connectivity_state) > 2 * PyLong_SHIFT) {
                        if (8 * sizeof(unsigned long) > 3 * PyLong_SHIFT) {
                            __PYX_VERIFY_RETURN_INT(grpc_connectivity_state, unsigned long, (((((((unsigned long)digits[2]) << PyLong_SHIFT) | (unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0])))
                        } else if (8 * sizeof(grpc_connectivity_state) - 1 > 3 * PyLong_SHIFT) {
                            return (grpc_connectivity_state) ((((((((grpc_connectivity_state)digits[2]) << PyLong_SHIFT) | (grpc_connectivity_state)digits[1]) << PyLong_SHIFT) | (grpc_connectivity_state)digits[0])));
                        }
                    }
                    break;
                case -4:
                    if (8 * sizeof(grpc_connectivity_state) - 1 > 3 * PyLong_SHIFT) {
                        if (8 * sizeof(unsigned long) > 4 * PyLong_SHIFT) {
                            __PYX_VERIFY_RETURN_INT(grpc_connectivity_state, long, -(long) (((((((((unsigned long)digits[3]) << PyLong_SHIFT) | (unsigned long)digits[2]) << PyLong_SHIFT) | (unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0])))
                        } else if (8 * sizeof(grpc_connectivity_state) - 1 > 4 * PyLong_SHIFT) {
                            return (grpc_connectivity_state) (((grpc_connectivity_state)-1)*(((((((((grpc_connectivity_state)digits[3]) << PyLong_SHIFT) | (grpc_connectivity_state)digits[2]) << PyLong_SHIFT) | (grpc_connectivity_state)digits[1]) << PyLong_SHIFT) | (grpc_connectivity_state)digits[0])));
                        }
                    }
                    break;
                case 4:
                    if (8 * sizeof(grpc_connectivity_state) > 3 * PyLong_SHIFT) {
                        if (8 * sizeof(unsigned long) > 4 * PyLong_SHIFT) {
                            __PYX_VERIFY_RETURN_INT(grpc_connectivity_state, unsigned long, (((((((((unsigned long)digits[3]) << PyLong_SHIFT) | (unsigned long)digits[2]) << PyLong_SHIFT) | (unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0])))
                        } else if (8 * sizeof(grpc_connectivity_state) - 1 > 4 * PyLong_SHIFT) {
                            return (grpc_connectivity_state) ((((((((((grpc_connectivity_state)digits[3]) << PyLong_SHIFT) | (grpc_connectivity_state)digits[2]) << PyLong_SHIFT) | (grpc_connectivity_state)digits[1]) << PyLong_SHIFT) | (grpc_connectivity_state)digits[0])));
                        }
                    }
                    break;
            }
#endif
            if (sizeof(grpc_connectivity_state) <= sizeof(long)) {
                __PYX_VERIFY_RETURN_INT_EXC(grpc_connectivity_state, long, PyLong_AsLong(x))
#ifdef HAVE_LONG_LONG
            } else if (sizeof(grpc_connectivity_state) <= sizeof(PY_LONG_LONG)) {
                __PYX_VERIFY_RETURN_INT_EXC(grpc_connectivity_state, PY_LONG_LONG, PyLong_AsLongLong(x))
#endif
            }
        }
        {
#if CYTHON_COMPILING_IN_PYPY && !defined(_PyLong_AsByteArray)
            PyErr_SetString(PyExc_RuntimeError,
                            "_PyLong_AsByteArray() not available in PyPy, cannot convert large numbers");
#else
            grpc_connectivity_state val;
            PyObject *v = __Pyx_PyNumber_IntOrLong(x);
 #if PY_MAJOR_VERSION < 3
            if (likely(v) && !PyLong_Check(v)) {
                PyObject *tmp = v;
                v = PyNumber_Long(tmp);
                Py_DECREF(tmp);
            }
 #endif
            if (likely(v)) {
                int one = 1; int is_little = (int)*(unsigned char *)&one;
                unsigned char *bytes = (unsigned char *)&val;
                int ret = _PyLong_AsByteArray((PyLongObject *)v,
                                              bytes, sizeof(val),
                                              is_little, !is_unsigned);
                Py_DECREF(v);
                if (likely(!ret))
                    return val;
            }
#endif
            return (grpc_connectivity_state) -1;
        }
    } else {
        grpc_connectivity_state val;
        PyObject *tmp = __Pyx_PyNumber_IntOrLong(x);
        if (!tmp) return (grpc_connectivity_state) -1;
        val = __Pyx_PyInt_As_grpc_connectivity_state(tmp);
        Py_DECREF(tmp);
        return val;
    }
raise_overflow:
    PyErr_SetString(PyExc_OverflowError,
        "value too large to convert to grpc_connectivity_state");
    return (grpc_connectivity_state) -1;
raise_neg_overflow:
    PyErr_SetString(PyExc_OverflowError,
        "can't convert negative value to grpc_connectivity_state");
    return (grpc_connectivity_state) -1;
}

/* CIntToPy */
    static CYTHON_INLINE PyObject* __Pyx_PyInt_From_grpc_local_connect_type(grpc_local_connect_type value) {
#ifdef __Pyx_HAS_GCC_DIAGNOSTIC
#pragma GCC diagnostic push
#pragma GCC diagnostic ignored "-Wconversion"
#endif
    const grpc_local_connect_type neg_one = (grpc_local_connect_type) -1, const_zero = (grpc_local_connect_type) 0;
#ifdef __Pyx_HAS_GCC_DIAGNOSTIC
#pragma GCC diagnostic pop
#endif
    const int is_unsigned = neg_one > const_zero;
    if (is_unsigned) {
        if (sizeof(grpc_local_connect_type) < sizeof(long)) {
            return PyInt_FromLong((long) value);
        } else if (sizeof(grpc_local_connect_type) <= sizeof(unsigned long)) {
            return PyLong_FromUnsignedLong((unsigned long) value);
#ifdef HAVE_LONG_LONG
        } else if (sizeof(grpc_local_connect_type) <= sizeof(unsigned PY_LONG_LONG)) {
            return PyLong_FromUnsignedLongLong((unsigned PY_LONG_LONG) value);
#endif
        }
    } else {
        if (sizeof(grpc_local_connect_type) <= sizeof(long)) {
            return PyInt_FromLong((long) value);
#ifdef HAVE_LONG_LONG
        } else if (sizeof(grpc_local_connect_type) <= sizeof(PY_LONG_LONG)) {
            return PyLong_FromLongLong((PY_LONG_LONG) value);
#endif
        }
    }
    {
        int one = 1; int little = (int)*(unsigned char *)&one;
        unsigned char *bytes = (unsigned char *)&value;
        return _PyLong_FromByteArray(bytes, sizeof(grpc_local_connect_type),
                                     little, !is_unsigned);
    }
}

/* CIntFromPy */
    static CYTHON_INLINE grpc_local_connect_type __Pyx_PyInt_As_grpc_local_connect_type(PyObject *x) {
#ifdef __Pyx_HAS_GCC_DIAGNOSTIC
#pragma GCC diagnostic push
#pragma GCC diagnostic ignored "-Wconversion"
#endif
    const grpc_local_connect_type neg_one = (grpc_local_connect_type) -1, const_zero = (grpc_local_connect_type) 0;
#ifdef __Pyx_HAS_GCC_DIAGNOSTIC
#pragma GCC diagnostic pop
#endif
    const int is_unsigned = neg_one > const_zero;
#if PY_MAJOR_VERSION < 3
    if (likely(PyInt_Check(x))) {
        if (sizeof(grpc_local_connect_type) < sizeof(long)) {
            __PYX_VERIFY_RETURN_INT(grpc_local_connect_type, long, PyInt_AS_LONG(x))
        } else {
            long val = PyInt_AS_LONG(x);
            if (is_unsigned && unlikely(val < 0)) {
                goto raise_neg_overflow;
            }
            return (grpc_local_connect_type) val;
        }
    } else
#endif
    if (likely(PyLong_Check(x))) {
        if (is_unsigned) {
#if CYTHON_USE_PYLONG_INTERNALS
            const digit* digits = ((PyLongObject*)x)->ob_digit;
            switch (Py_SIZE(x)) {
                case  0: return (grpc_local_connect_type) 0;
                case  1: __PYX_VERIFY_RETURN_INT(grpc_local_connect_type, digit, digits[0])
                case 2:
                    if (8 * sizeof(grpc_local_connect_type) > 1 * PyLong_SHIFT) {
                        if (8 * sizeof(unsigned long) > 2 * PyLong_SHIFT) {
                            __PYX_VERIFY_RETURN_INT(grpc_local_connect_type, unsigned long, (((((unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0])))
                        } else if (8 * sizeof(grpc_local_connect_type) >= 2 * PyLong_SHIFT) {
                            return (grpc_local_connect_type) (((((grpc_local_connect_type)digits[1]) << PyLong_SHIFT) | (grpc_local_connect_type)digits[0]));
                        }
                    }
                    break;
                case 3:
                    if (8 * sizeof(grpc_local_connect_type) > 2 * PyLong_SHIFT) {
                        if (8 * sizeof(unsigned long) > 3 * PyLong_SHIFT) {
                            __PYX_VERIFY_RETURN_INT(grpc_local_connect_type, unsigned long, (((((((unsigned long)digits[2]) << PyLong_SHIFT) | (unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0])))
                        } else if (8 * sizeof(grpc_local_connect_type) >= 3 * PyLong_SHIFT) {
                            return (grpc_local_connect_type) (((((((grpc_local_connect_type)digits[2]) << PyLong_SHIFT) | (grpc_local_connect_type)digits[1]) << PyLong_SHIFT) | (grpc_local_connect_type)digits[0]));
                        }
                    }
                    break;
                case 4:
                    if (8 * sizeof(grpc_local_connect_type) > 3 * PyLong_SHIFT) {
                        if (8 * sizeof(unsigned long) > 4 * PyLong_SHIFT) {
                            __PYX_VERIFY_RETURN_INT(grpc_local_connect_type, unsigned long, (((((((((unsigned long)digits[3]) << PyLong_SHIFT) | (unsigned long)digits[2]) << PyLong_SHIFT) | (unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0])))
                        } else if (8 * sizeof(grpc_local_connect_type) >= 4 * PyLong_SHIFT) {
                            return (grpc_local_connect_type) (((((((((grpc_local_connect_type)digits[3]) << PyLong_SHIFT) | (grpc_local_connect_type)digits[2]) << PyLong_SHIFT) | (grpc_local_connect_type)digits[1]) << PyLong_SHIFT) | (grpc_local_connect_type)digits[0]));
                        }
                    }
                    break;
            }
#endif
#if CYTHON_COMPILING_IN_CPYTHON
            if (unlikely(Py_SIZE(x) < 0)) {
                goto raise_neg_overflow;
            }
#else
            {
                int result = PyObject_RichCompareBool(x, Py_False, Py_LT);
                if (unlikely(result < 0))
                    return (grpc_local_connect_type) -1;
                if (unlikely(result == 1))
                    goto raise_neg_overflow;
            }
#endif
            if (sizeof(grpc_local_connect_type) <= sizeof(unsigned long)) {
                __PYX_VERIFY_RETURN_INT_EXC(grpc_local_connect_type, unsigned long, PyLong_AsUnsignedLong(x))
#ifdef HAVE_LONG_LONG
            } else if (sizeof(grpc_local_connect_type) <= sizeof(unsigned PY_LONG_LONG)) {
                __PYX_VERIFY_RETURN_INT_EXC(grpc_local_connect_type, unsigned PY_LONG_LONG, PyLong_AsUnsignedLongLong(x))
#endif
            }
        } else {
#if CYTHON_USE_PYLONG_INTERNALS
            const digit* digits = ((PyLongObject*)x)->ob_digit;
            switch (Py_SIZE(x)) {
                case  0: return (grpc_local_connect_type) 0;
                case -1: __PYX_VERIFY_RETURN_INT(grpc_local_connect_type, sdigit, (sdigit) (-(sdigit)digits[0]))
                case  1: __PYX_VERIFY_RETURN_INT(grpc_local_connect_type,  digit, +digits[0])
                case -2:
                    if (8 * sizeof(grpc_local_connect_type) - 1 > 1 * PyLong_SHIFT) {
                        if (8 * sizeof(unsigned long) > 2 * PyLong_SHIFT) {
                            __PYX_VERIFY_RETURN_INT(grpc_local_connect_type, long, -(long) (((((unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0])))
                        } else if (8 * sizeof(grpc_local_connect_type) - 1 > 2 * PyLong_SHIFT) {
                            return (grpc_local_connect_type) (((grpc_local_connect_type)-1)*(((((grpc_local_connect_type)digits[1]) << PyLong_SHIFT) | (grpc_local_connect_type)digits[0])));
                        }
                    }
                    break;
                case 2:
                    if (8 * sizeof(grpc_local_connect_type) > 1 * PyLong_SHIFT) {
                        if (8 * sizeof(unsigned long) > 2 * PyLong_SHIFT) {
                            __PYX_VERIFY_RETURN_INT(grpc_local_connect_type, unsigned long, (((((unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0])))
                        } else if (8 * sizeof(grpc_local_connect_type) - 1 > 2 * PyLong_SHIFT) {
                            return (grpc_local_connect_type) ((((((grpc_local_connect_type)digits[1]) << PyLong_SHIFT) | (grpc_local_connect_type)digits[0])));
                        }
                    }
                    break;
                case -3:
                    if (8 * sizeof(grpc_local_connect_type) - 1 > 2 * PyLong_SHIFT) {
                        if (8 * sizeof(unsigned long) > 3 * PyLong_SHIFT) {
                            __PYX_VERIFY_RETURN_INT(grpc_local_connect_type, long, -(long) (((((((unsigned long)digits[2]) << PyLong_SHIFT) | (unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0])))
                        } else if (8 * sizeof(grpc_local_connect_type) - 1 > 3 * PyLong_SHIFT) {
                            return (grpc_local_connect_type) (((grpc_local_connect_type)-1)*(((((((grpc_local_connect_type)digits[2]) << PyLong_SHIFT) | (grpc_local_connect_type)digits[1]) << PyLong_SHIFT) | (grpc_local_connect_type)digits[0])));
                        }
                    }
                    break;
                case 3:
                    if (8 * sizeof(grpc_local_connect_type) > 2 * PyLong_SHIFT) {
                        if (8 * sizeof(unsigned long) > 3 * PyLong_SHIFT) {
                            __PYX_VERIFY_RETURN_INT(grpc_local_connect_type, unsigned long, (((((((unsigned long)digits[2]) << PyLong_SHIFT) | (unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0])))
                        } else if (8 * sizeof(grpc_local_connect_type) - 1 > 3 * PyLong_SHIFT) {
                            return (grpc_local_connect_type) ((((((((grpc_local_connect_type)digits[2]) << PyLong_SHIFT) | (grpc_local_connect_type)digits[1]) << PyLong_SHIFT) | (grpc_local_connect_type)digits[0])));
                        }
                    }
                    break;
                case -4:
                    if (8 * sizeof(grpc_local_connect_type) - 1 > 3 * PyLong_SHIFT) {
                        if (8 * sizeof(unsigned long) > 4 * PyLong_SHIFT) {
                            __PYX_VERIFY_RETURN_INT(grpc_local_connect_type, long, -(long) (((((((((unsigned long)digits[3]) << PyLong_SHIFT) | (unsigned long)digits[2]) << PyLong_SHIFT) | (unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0])))
                        } else if (8 * sizeof(grpc_local_connect_type) - 1 > 4 * PyLong_SHIFT) {
                            return (grpc_local_connect_type) (((grpc_local_connect_type)-1)*(((((((((grpc_local_connect_type)digits[3]) << PyLong_SHIFT) | (grpc_local_connect_type)digits[2]) << PyLong_SHIFT) | (grpc_local_connect_type)digits[1]) << PyLong_SHIFT) | (grpc_local_connect_type)digits[0])));
                        }
                    }
                    break;
                case 4:
                    if (8 * sizeof(grpc_local_connect_type) > 3 * PyLong_SHIFT) {
                        if (8 * sizeof(unsigned long) > 4 * PyLong_SHIFT) {
                            __PYX_VERIFY_RETURN_INT(grpc_local_connect_type, unsigned long, (((((((((unsigned long)digits[3]) << PyLong_SHIFT) | (unsigned long)digits[2]) << PyLong_SHIFT) | (unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0])))
                        } else if (8 * sizeof(grpc_local_connect_type) - 1 > 4 * PyLong_SHIFT) {
                            return (grpc_local_connect_type) ((((((((((grpc_local_connect_type)digits[3]) << PyLong_SHIFT) | (grpc_local_connect_type)digits[2]) << PyLong_SHIFT) | (grpc_local_connect_type)digits[1]) << PyLong_SHIFT) | (grpc_local_connect_type)digits[0])));
                        }
                    }
                    break;
            }
#endif
            if (sizeof(grpc_local_connect_type) <= sizeof(long)) {
                __PYX_VERIFY_RETURN_INT_EXC(grpc_local_connect_type, long, PyLong_AsLong(x))
#ifdef HAVE_LONG_LONG
            } else if (sizeof(grpc_local_connect_type) <= sizeof(PY_LONG_LONG)) {
                __PYX_VERIFY_RETURN_INT_EXC(grpc_local_connect_type, PY_LONG_LONG, PyLong_AsLongLong(x))
#endif
            }
        }
        {
#if CYTHON_COMPILING_IN_PYPY && !defined(_PyLong_AsByteArray)
            PyErr_SetString(PyExc_RuntimeError,
                            "_PyLong_AsByteArray() not available in PyPy, cannot convert large numbers");
#else
            grpc_local_connect_type val;
            PyObject *v = __Pyx_PyNumber_IntOrLong(x);
 #if PY_MAJOR_VERSION < 3
            if (likely(v) && !PyLong_Check(v)) {
                PyObject *tmp = v;
                v = PyNumber_Long(tmp);
                Py_DECREF(tmp);
            }
 #endif
            if (likely(v)) {
                int one = 1; int is_little = (int)*(unsigned char *)&one;
                unsigned char *bytes = (unsigned char *)&val;
                int ret = _PyLong_AsByteArray((PyLongObject *)v,
                                              bytes, sizeof(val),
                                              is_little, !is_unsigned);
                Py_DECREF(v);
                if (likely(!ret))
                    return val;
            }
#endif
            return (grpc_local_connect_type) -1;
        }
    } else {
        grpc_local_connect_type val;
        PyObject *tmp = __Pyx_PyNumber_IntOrLong(x);
        if (!tmp) return (grpc_local_connect_type) -1;
        val = __Pyx_PyInt_As_grpc_local_connect_type(tmp);
        Py_DECREF(tmp);
        return val;
    }
raise_overflow:
    PyErr_SetString(PyExc_OverflowError,
        "value too large to convert to grpc_local_connect_type");
    return (grpc_local_connect_type) -1;
raise_neg_overflow:
    PyErr_SetString(PyExc_OverflowError,
        "can't convert negative value to grpc_local_connect_type");
    return (grpc_local_connect_type) -1;
}

/* CIntFromPy */
    static CYTHON_INLINE grpc_completion_type __Pyx_PyInt_As_grpc_completion_type(PyObject *x) {
#ifdef __Pyx_HAS_GCC_DIAGNOSTIC
#pragma GCC diagnostic push
#pragma GCC diagnostic ignored "-Wconversion"
#endif
    const grpc_completion_type neg_one = (grpc_completion_type) -1, const_zero = (grpc_completion_type) 0;
#ifdef __Pyx_HAS_GCC_DIAGNOSTIC
#pragma GCC diagnostic pop
#endif
    const int is_unsigned = neg_one > const_zero;
#if PY_MAJOR_VERSION < 3
    if (likely(PyInt_Check(x))) {
        if (sizeof(grpc_completion_type) < sizeof(long)) {
            __PYX_VERIFY_RETURN_INT(grpc_completion_type, long, PyInt_AS_LONG(x))
        } else {
            long val = PyInt_AS_LONG(x);
            if (is_unsigned && unlikely(val < 0)) {
                goto raise_neg_overflow;
            }
            return (grpc_completion_type) val;
        }
    } else
#endif
    if (likely(PyLong_Check(x))) {
        if (is_unsigned) {
#if CYTHON_USE_PYLONG_INTERNALS
            const digit* digits = ((PyLongObject*)x)->ob_digit;
            switch (Py_SIZE(x)) {
                case  0: return (grpc_completion_type) 0;
                case  1: __PYX_VERIFY_RETURN_INT(grpc_completion_type, digit, digits[0])
                case 2:
                    if (8 * sizeof(grpc_completion_type) > 1 * PyLong_SHIFT) {
                        if (8 * sizeof(unsigned long) > 2 * PyLong_SHIFT) {
                            __PYX_VERIFY_RETURN_INT(grpc_completion_type, unsigned long, (((((unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0])))
                        } else if (8 * sizeof(grpc_completion_type) >= 2 * PyLong_SHIFT) {
                            return (grpc_completion_type) (((((grpc_completion_type)digits[1]) << PyLong_SHIFT) | (grpc_completion_type)digits[0]));
                        }
                    }
                    break;
                case 3:
                    if (8 * sizeof(grpc_completion_type) > 2 * PyLong_SHIFT) {
                        if (8 * sizeof(unsigned long) > 3 * PyLong_SHIFT) {
                            __PYX_VERIFY_RETURN_INT(grpc_completion_type, unsigned long, (((((((unsigned long)digits[2]) << PyLong_SHIFT) | (unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0])))
                        } else if (8 * sizeof(grpc_completion_type) >= 3 * PyLong_SHIFT) {
                            return (grpc_completion_type) (((((((grpc_completion_type)digits[2]) << PyLong_SHIFT) | (grpc_completion_type)digits[1]) << PyLong_SHIFT) | (grpc_completion_type)digits[0]));
                        }
                    }
                    break;
                case 4:
                    if (8 * sizeof(grpc_completion_type) > 3 * PyLong_SHIFT) {
                        if (8 * sizeof(unsigned long) > 4 * PyLong_SHIFT) {
                            __PYX_VERIFY_RETURN_INT(grpc_completion_type, unsigned long, (((((((((unsigned long)digits[3]) << PyLong_SHIFT) | (unsigned long)digits[2]) << PyLong_SHIFT) | (unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0])))
                        } else if (8 * sizeof(grpc_completion_type) >= 4 * PyLong_SHIFT) {
                            return (grpc_completion_type) (((((((((grpc_completion_type)digits[3]) << PyLong_SHIFT) | (grpc_completion_type)digits[2]) << PyLong_SHIFT) | (grpc_completion_type)digits[1]) << PyLong_SHIFT) | (grpc_completion_type)digits[0]));
                        }
                    }
                    break;
            }
#endif
#if CYTHON_COMPILING_IN_CPYTHON
            if (unlikely(Py_SIZE(x) < 0)) {
                goto raise_neg_overflow;
            }
#else
            {
                int result = PyObject_RichCompareBool(x, Py_False, Py_LT);
                if (unlikely(result < 0))
                    return (grpc_completion_type) -1;
                if (unlikely(result == 1))
                    goto raise_neg_overflow;
            }
#endif
            if (sizeof(grpc_completion_type) <= sizeof(unsigned long)) {
                __PYX_VERIFY_RETURN_INT_EXC(grpc_completion_type, unsigned long, PyLong_AsUnsignedLong(x))
#ifdef HAVE_LONG_LONG
            } else if (sizeof(grpc_completion_type) <= sizeof(unsigned PY_LONG_LONG)) {
                __PYX_VERIFY_RETURN_INT_EXC(grpc_completion_type, unsigned PY_LONG_LONG, PyLong_AsUnsignedLongLong(x))
#endif
            }
        } else {
#if CYTHON_USE_PYLONG_INTERNALS
            const digit* digits = ((PyLongObject*)x)->ob_digit;
            switch (Py_SIZE(x)) {
                case  0: return (grpc_completion_type) 0;
                case -1: __PYX_VERIFY_RETURN_INT(grpc_completion_type, sdigit, (sdigit) (-(sdigit)digits[0]))
                case  1: __PYX_VERIFY_RETURN_INT(grpc_completion_type,  digit, +digits[0])
                case -2:
                    if (8 * sizeof(grpc_completion_type) - 1 > 1 * PyLong_SHIFT) {
                        if (8 * sizeof(unsigned long) > 2 * PyLong_SHIFT) {
                            __PYX_VERIFY_RETURN_INT(grpc_completion_type, long, -(long) (((((unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0])))
                        } else if (8 * sizeof(grpc_completion_type) - 1 > 2 * PyLong_SHIFT) {
                            return (grpc_completion_type) (((grpc_completion_type)-1)*(((((grpc_completion_type)digits[1]) << PyLong_SHIFT) | (grpc_completion_type)digits[0])));
                        }
                    }
                    break;
                case 2:
                    if (8 * sizeof(grpc_completion_type) > 1 * PyLong_SHIFT) {
                        if (8 * sizeof(unsigned long) > 2 * PyLong_SHIFT) {
                            __PYX_VERIFY_RETURN_INT(grpc_completion_type, unsigned long, (((((unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0])))
                        } else if (8 * sizeof(grpc_completion_type) - 1 > 2 * PyLong_SHIFT) {
                            return (grpc_completion_type) ((((((grpc_completion_type)digits[1]) << PyLong_SHIFT) | (grpc_completion_type)digits[0])));
                        }
                    }
                    break;
                case -3:
                    if (8 * sizeof(grpc_completion_type) - 1 > 2 * PyLong_SHIFT) {
                        if (8 * sizeof(unsigned long) > 3 * PyLong_SHIFT) {
                            __PYX_VERIFY_RETURN_INT(grpc_completion_type, long, -(long) (((((((unsigned long)digits[2]) << PyLong_SHIFT) | (unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0])))
                        } else if (8 * sizeof(grpc_completion_type) - 1 > 3 * PyLong_SHIFT) {
                            return (grpc_completion_type) (((grpc_completion_type)-1)*(((((((grpc_completion_type)digits[2]) << PyLong_SHIFT) | (grpc_completion_type)digits[1]) << PyLong_SHIFT) | (grpc_completion_type)digits[0])));
                        }
                    }
                    break;
                case 3:
                    if (8 * sizeof(grpc_completion_type) > 2 * PyLong_SHIFT) {
                        if (8 * sizeof(unsigned long) > 3 * PyLong_SHIFT) {
                            __PYX_VERIFY_RETURN_INT(grpc_completion_type, unsigned long, (((((((unsigned long)digits[2]) << PyLong_SHIFT) | (unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0])))
                        } else if (8 * sizeof(grpc_completion_type) - 1 > 3 * PyLong_SHIFT) {
                            return (grpc_completion_type) ((((((((grpc_completion_type)digits[2]) << PyLong_SHIFT) | (grpc_completion_type)digits[1]) << PyLong_SHIFT) | (grpc_completion_type)digits[0])));
                        }
                    }
                    break;
                case -4:
                    if (8 * sizeof(grpc_completion_type) - 1 > 3 * PyLong_SHIFT) {
                        if (8 * sizeof(unsigned long) > 4 * PyLong_SHIFT) {
                            __PYX_VERIFY_RETURN_INT(grpc_completion_type, long, -(long) (((((((((unsigned long)digits[3]) << PyLong_SHIFT) | (unsigned long)digits[2]) << PyLong_SHIFT) | (unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0])))
                        } else if (8 * sizeof(grpc_completion_type) - 1 > 4 * PyLong_SHIFT) {
                            return (grpc_completion_type) (((grpc_completion_type)-1)*(((((((((grpc_completion_type)digits[3]) << PyLong_SHIFT) | (grpc_completion_type)digits[2]) << PyLong_SHIFT) | (grpc_completion_type)digits[1]) << PyLong_SHIFT) | (grpc_completion_type)digits[0])));
                        }
                    }
                    break;
                case 4:
                    if (8 * sizeof(grpc_completion_type) > 3 * PyLong_SHIFT) {
                        if (8 * sizeof(unsigned long) > 4 * PyLong_SHIFT) {
                            __PYX_VERIFY_RETURN_INT(grpc_completion_type, unsigned long, (((((((((unsigned long)digits[3]) << PyLong_SHIFT) | (unsigned long)digits[2]) << PyLong_SHIFT) | (unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0])))
                        } else if (8 * sizeof(grpc_completion_type) - 1 > 4 * PyLong_SHIFT) {
                            return (grpc_completion_type) ((((((((((grpc_completion_type)digits[3]) << PyLong_SHIFT) | (grpc_completion_type)digits[2]) << PyLong_SHIFT) | (grpc_completion_type)digits[1]) << PyLong_SHIFT) | (grpc_completion_type)digits[0])));
                        }
                    }
                    break;
            }
#endif
            if (sizeof(grpc_completion_type) <= sizeof(long)) {
                __PYX_VERIFY_RETURN_INT_EXC(grpc_completion_type, long, PyLong_AsLong(x))
#ifdef HAVE_LONG_LONG
            } else if (sizeof(grpc_completion_type) <= sizeof(PY_LONG_LONG)) {
                __PYX_VERIFY_RETURN_INT_EXC(grpc_completion_type, PY_LONG_LONG, PyLong_AsLongLong(x))
#endif
            }
        }
        {
#if CYTHON_COMPILING_IN_PYPY && !defined(_PyLong_AsByteArray)
            PyErr_SetString(PyExc_RuntimeError,
                            "_PyLong_AsByteArray() not available in PyPy, cannot convert large numbers");
#else
            grpc_completion_type val;
            PyObject *v = __Pyx_PyNumber_IntOrLong(x);
 #if PY_MAJOR_VERSION < 3
            if (likely(v) && !PyLong_Check(v)) {
                PyObject *tmp = v;
                v = PyNumber_Long(tmp);
                Py_DECREF(tmp);
            }
 #endif
            if (likely(v)) {
                int one = 1; int is_little = (int)*(unsigned char *)&one;
                unsigned char *bytes = (unsigned char *)&val;
                int ret = _PyLong_AsByteArray((PyLongObject *)v,
                                              bytes, sizeof(val),
                                              is_little, !is_unsigned);
                Py_DECREF(v);
                if (likely(!ret))
                    return val;
            }
#endif
            return (grpc_completion_type) -1;
        }
    } else {
        grpc_completion_type val;
        PyObject *tmp = __Pyx_PyNumber_IntOrLong(x);
        if (!tmp) return (grpc_completion_type) -1;
        val = __Pyx_PyInt_As_grpc_completion_type(tmp);
        Py_DECREF(tmp);
        return val;
    }
raise_overflow:
    PyErr_SetString(PyExc_OverflowError,
        "value too large to convert to grpc_completion_type");
    return (grpc_completion_type) -1;
raise_neg_overflow:
    PyErr_SetString(PyExc_OverflowError,
        "can't convert negative value to grpc_completion_type");
    return (grpc_completion_type) -1;
}

/* CIntToPy */
    static CYTHON_INLINE PyObject* __Pyx_PyInt_From_int(int value) {
#ifdef __Pyx_HAS_GCC_DIAGNOSTIC
#pragma GCC diagnostic push
#pragma GCC diagnostic ignored "-Wconversion"
#endif
    const int neg_one = (int) -1, const_zero = (int) 0;
#ifdef __Pyx_HAS_GCC_DIAGNOSTIC
#pragma GCC diagnostic pop
#endif
    const int is_unsigned = neg_one > const_zero;
    if (is_unsigned) {
        if (sizeof(int) < sizeof(long)) {
            return PyInt_FromLong((long) value);
        } else if (sizeof(int) <= sizeof(unsigned long)) {
            return PyLong_FromUnsignedLong((unsigned long) value);
#ifdef HAVE_LONG_LONG
        } else if (sizeof(int) <= sizeof(unsigned PY_LONG_LONG)) {
            return PyLong_FromUnsignedLongLong((unsigned PY_LONG_LONG) value);
#endif
        }
    } else {
        if (sizeof(int) <= sizeof(long)) {
            return PyInt_FromLong((long) value);
#ifdef HAVE_LONG_LONG
        } else if (sizeof(int) <= sizeof(PY_LONG_LONG)) {
            return PyLong_FromLongLong((PY_LONG_LONG) value);
#endif
        }
    }
    {
        int one = 1; int little = (int)*(unsigned char *)&one;
        unsigned char *bytes = (unsigned char *)&value;
        return _PyLong_FromByteArray(bytes, sizeof(int),
                                     little, !is_unsigned);
    }
}

/* CIntToPy */
    static CYTHON_INLINE PyObject* __Pyx_PyInt_From_grpc_connectivity_state(grpc_connectivity_state value) {
#ifdef __Pyx_HAS_GCC_DIAGNOSTIC
#pragma GCC diagnostic push
#pragma GCC diagnostic ignored "-Wconversion"
#endif
    const grpc_connectivity_state neg_one = (grpc_connectivity_state) -1, const_zero = (grpc_connectivity_state) 0;
#ifdef __Pyx_HAS_GCC_DIAGNOSTIC
#pragma GCC diagnostic pop
#endif
    const int is_unsigned = neg_one > const_zero;
    if (is_unsigned) {
        if (sizeof(grpc_connectivity_state) < sizeof(long)) {
            return PyInt_FromLong((long) value);
        } else if (sizeof(grpc_connectivity_state) <= sizeof(unsigned long)) {
            return PyLong_FromUnsignedLong((unsigned long) value);
#ifdef HAVE_LONG_LONG
        } else if (sizeof(grpc_connectivity_state) <= sizeof(unsigned PY_LONG_LONG)) {
            return PyLong_FromUnsignedLongLong((unsigned PY_LONG_LONG) value);
#endif
        }
    } else {
        if (sizeof(grpc_connectivity_state) <= sizeof(long)) {
            return PyInt_FromLong((long) value);
#ifdef HAVE_LONG_LONG
        } else if (sizeof(grpc_connectivity_state) <= sizeof(PY_LONG_LONG)) {
            return PyLong_FromLongLong((PY_LONG_LONG) value);
#endif
        }
    }
    {
        int one = 1; int little = (int)*(unsigned char *)&one;
        unsigned char *bytes = (unsigned char *)&value;
        return _PyLong_FromByteArray(bytes, sizeof(grpc_connectivity_state),
                                     little, !is_unsigned);
    }
}

/* CIntToPy */
    static CYTHON_INLINE PyObject* __Pyx_PyInt_From_grpc_status_code(grpc_status_code value) {
#ifdef __Pyx_HAS_GCC_DIAGNOSTIC
#pragma GCC diagnostic push
#pragma GCC diagnostic ignored "-Wconversion"
#endif
    const grpc_status_code neg_one = (grpc_status_code) -1, const_zero = (grpc_status_code) 0;
#ifdef __Pyx_HAS_GCC_DIAGNOSTIC
#pragma GCC diagnostic pop
#endif
    const int is_unsigned = neg_one > const_zero;
    if (is_unsigned) {
        if (sizeof(grpc_status_code) < sizeof(long)) {
            return PyInt_FromLong((long) value);
        } else if (sizeof(grpc_status_code) <= sizeof(unsigned long)) {
            return PyLong_FromUnsignedLong((unsigned long) value);
#ifdef HAVE_LONG_LONG
        } else if (sizeof(grpc_status_code) <= sizeof(unsigned PY_LONG_LONG)) {
            return PyLong_FromUnsignedLongLong((unsigned PY_LONG_LONG) value);
#endif
        }
    } else {
        if (sizeof(grpc_status_code) <= sizeof(long)) {
            return PyInt_FromLong((long) value);
#ifdef HAVE_LONG_LONG
        } else if (sizeof(grpc_status_code) <= sizeof(PY_LONG_LONG)) {
            return PyLong_FromLongLong((PY_LONG_LONG) value);
#endif
        }
    }
    {
        int one = 1; int little = (int)*(unsigned char *)&one;
        unsigned char *bytes = (unsigned char *)&value;
        return _PyLong_FromByteArray(bytes, sizeof(grpc_status_code),
                                     little, !is_unsigned);
    }
}

/* CIntToPy */
    static CYTHON_INLINE PyObject* __Pyx_PyInt_From_grpc_call_error(grpc_call_error value) {
#ifdef __Pyx_HAS_GCC_DIAGNOSTIC
#pragma GCC diagnostic push
#pragma GCC diagnostic ignored "-Wconversion"
#endif
    const grpc_call_error neg_one = (grpc_call_error) -1, const_zero = (grpc_call_error) 0;
#ifdef __Pyx_HAS_GCC_DIAGNOSTIC
#pragma GCC diagnostic pop
#endif
    const int is_unsigned = neg_one > const_zero;
    if (is_unsigned) {
        if (sizeof(grpc_call_error) < sizeof(long)) {
            return PyInt_FromLong((long) value);
        } else if (sizeof(grpc_call_error) <= sizeof(unsigned long)) {
            return PyLong_FromUnsignedLong((unsigned long) value);
#ifdef HAVE_LONG_LONG
        } else if (sizeof(grpc_call_error) <= sizeof(unsigned PY_LONG_LONG)) {
            return PyLong_FromUnsignedLongLong((unsigned PY_LONG_LONG) value);
#endif
        }
    } else {
        if (sizeof(grpc_call_error) <= sizeof(long)) {
            return PyInt_FromLong((long) value);
#ifdef HAVE_LONG_LONG
        } else if (sizeof(grpc_call_error) <= sizeof(PY_LONG_LONG)) {
            return PyLong_FromLongLong((PY_LONG_LONG) value);
#endif
        }
    }
    {
        int one = 1; int little = (int)*(unsigned char *)&one;
        unsigned char *bytes = (unsigned char *)&value;
        return _PyLong_FromByteArray(bytes, sizeof(grpc_call_error),
                                     little, !is_unsigned);
    }
}

/* CIntToPy */
    static CYTHON_INLINE PyObject* __Pyx_PyInt_From_grpc_completion_type(grpc_completion_type value) {
#ifdef __Pyx_HAS_GCC_DIAGNOSTIC
#pragma GCC diagnostic push
#pragma GCC diagnostic ignored "-Wconversion"
#endif
    const grpc_completion_type neg_one = (grpc_completion_type) -1, const_zero = (grpc_completion_type) 0;
#ifdef __Pyx_HAS_GCC_DIAGNOSTIC
#pragma GCC diagnostic pop
#endif
    const int is_unsigned = neg_one > const_zero;
    if (is_unsigned) {
        if (sizeof(grpc_completion_type) < sizeof(long)) {
            return PyInt_FromLong((long) value);
        } else if (sizeof(grpc_completion_type) <= sizeof(unsigned long)) {
            return PyLong_FromUnsignedLong((unsigned long) value);
#ifdef HAVE_LONG_LONG
        } else if (sizeof(grpc_completion_type) <= sizeof(unsigned PY_LONG_LONG)) {
            return PyLong_FromUnsignedLongLong((unsigned PY_LONG_LONG) value);
#endif
        }
    } else {
        if (sizeof(grpc_completion_type) <= sizeof(long)) {
            return PyInt_FromLong((long) value);
#ifdef HAVE_LONG_LONG
        } else if (sizeof(grpc_completion_type) <= sizeof(PY_LONG_LONG)) {
            return PyLong_FromLongLong((PY_LONG_LONG) value);
#endif
        }
    }
    {
        int one = 1; int little = (int)*(unsigned char *)&one;
        unsigned char *bytes = (unsigned char *)&value;
        return _PyLong_FromByteArray(bytes, sizeof(grpc_completion_type),
                                     little, !is_unsigned);
    }
}

/* CIntToPy */
    static CYTHON_INLINE PyObject* __Pyx_PyInt_From_grpc_op_type(grpc_op_type value) {
#ifdef __Pyx_HAS_GCC_DIAGNOSTIC
#pragma GCC diagnostic push
#pragma GCC diagnostic ignored "-Wconversion"
#endif
    const grpc_op_type neg_one = (grpc_op_type) -1, const_zero = (grpc_op_type) 0;
#ifdef __Pyx_HAS_GCC_DIAGNOSTIC
#pragma GCC diagnostic pop
#endif
    const int is_unsigned = neg_one > const_zero;
    if (is_unsigned) {
        if (sizeof(grpc_op_type) < sizeof(long)) {
            return PyInt_FromLong((long) value);
        } else if (sizeof(grpc_op_type) <= sizeof(unsigned long)) {
            return PyLong_FromUnsignedLong((unsigned long) value);
#ifdef HAVE_LONG_LONG
        } else if (sizeof(grpc_op_type) <= sizeof(unsigned PY_LONG_LONG)) {
            return PyLong_FromUnsignedLongLong((unsigned PY_LONG_LONG) value);
#endif
        }
    } else {
        if (sizeof(grpc_op_type) <= sizeof(long)) {
            return PyInt_FromLong((long) value);
#ifdef HAVE_LONG_LONG
        } else if (sizeof(grpc_op_type) <= sizeof(PY_LONG_LONG)) {
            return PyLong_FromLongLong((PY_LONG_LONG) value);
#endif
        }
    }
    {
        int one = 1; int little = (int)*(unsigned char *)&one;
        unsigned char *bytes = (unsigned char *)&value;
        return _PyLong_FromByteArray(bytes, sizeof(grpc_op_type),
                                     little, !is_unsigned);
    }
}

/* CIntToPy */
    static CYTHON_INLINE PyObject* __Pyx_PyInt_From_grpc_compression_algorithm(grpc_compression_algorithm value) {
#ifdef __Pyx_HAS_GCC_DIAGNOSTIC
#pragma GCC diagnostic push
#pragma GCC diagnostic ignored "-Wconversion"
#endif
    const grpc_compression_algorithm neg_one = (grpc_compression_algorithm) -1, const_zero = (grpc_compression_algorithm) 0;
#ifdef __Pyx_HAS_GCC_DIAGNOSTIC
#pragma GCC diagnostic pop
#endif
    const int is_unsigned = neg_one > const_zero;
    if (is_unsigned) {
        if (sizeof(grpc_compression_algorithm) < sizeof(long)) {
            return PyInt_FromLong((long) value);
        } else if (sizeof(grpc_compression_algorithm) <= sizeof(unsigned long)) {
            return PyLong_FromUnsignedLong((unsigned long) value);
#ifdef HAVE_LONG_LONG
        } else if (sizeof(grpc_compression_algorithm) <= sizeof(unsigned PY_LONG_LONG)) {
            return PyLong_FromUnsignedLongLong((unsigned PY_LONG_LONG) value);
#endif
        }
    } else {
        if (sizeof(grpc_compression_algorithm) <= sizeof(long)) {
            return PyInt_FromLong((long) value);
#ifdef HAVE_LONG_LONG
        } else if (sizeof(grpc_compression_algorithm) <= sizeof(PY_LONG_LONG)) {
            return PyLong_FromLongLong((PY_LONG_LONG) value);
#endif
        }
    }
    {
        int one = 1; int little = (int)*(unsigned char *)&one;
        unsigned char *bytes = (unsigned char *)&value;
        return _PyLong_FromByteArray(bytes, sizeof(grpc_compression_algorithm),
                                     little, !is_unsigned);
    }
}

/* CIntToPy */
    static CYTHON_INLINE PyObject* __Pyx_PyInt_From_grpc_compression_level(grpc_compression_level value) {
#ifdef __Pyx_HAS_GCC_DIAGNOSTIC
#pragma GCC diagnostic push
#pragma GCC diagnostic ignored "-Wconversion"
#endif
    const grpc_compression_level neg_one = (grpc_compression_level) -1, const_zero = (grpc_compression_level) 0;
#ifdef __Pyx_HAS_GCC_DIAGNOSTIC
#pragma GCC diagnostic pop
#endif
    const int is_unsigned = neg_one > const_zero;
    if (is_unsigned) {
        if (sizeof(grpc_compression_level) < sizeof(long)) {
            return PyInt_FromLong((long) value);
        } else if (sizeof(grpc_compression_level) <= sizeof(unsigned long)) {
            return PyLong_FromUnsignedLong((unsigned long) value);
#ifdef HAVE_LONG_LONG
        } else if (sizeof(grpc_compression_level) <= sizeof(unsigned PY_LONG_LONG)) {
            return PyLong_FromUnsignedLongLong((unsigned PY_LONG_LONG) value);
#endif
        }
    } else {
        if (sizeof(grpc_compression_level) <= sizeof(long)) {
            return PyInt_FromLong((long) value);
#ifdef HAVE_LONG_LONG
        } else if (sizeof(grpc_compression_level) <= sizeof(PY_LONG_LONG)) {
            return PyLong_FromLongLong((PY_LONG_LONG) value);
#endif
        }
    }
    {
        int one = 1; int little = (int)*(unsigned char *)&one;
        unsigned char *bytes = (unsigned char *)&value;
        return _PyLong_FromByteArray(bytes, sizeof(grpc_compression_level),
                                     little, !is_unsigned);
    }
}

/* CIntFromPy */
    static CYTHON_INLINE grpc_compression_algorithm __Pyx_PyInt_As_grpc_compression_algorithm(PyObject *x) {
#ifdef __Pyx_HAS_GCC_DIAGNOSTIC
#pragma GCC diagnostic push
#pragma GCC diagnostic ignored "-Wconversion"
#endif
    const grpc_compression_algorithm neg_one = (grpc_compression_algorithm) -1, const_zero = (grpc_compression_algorithm) 0;
#ifdef __Pyx_HAS_GCC_DIAGNOSTIC
#pragma GCC diagnostic pop
#endif
    const int is_unsigned = neg_one > const_zero;
#if PY_MAJOR_VERSION < 3
    if (likely(PyInt_Check(x))) {
        if (sizeof(grpc_compression_algorithm) < sizeof(long)) {
            __PYX_VERIFY_RETURN_INT(grpc_compression_algorithm, long, PyInt_AS_LONG(x))
        } else {
            long val = PyInt_AS_LONG(x);
            if (is_unsigned && unlikely(val < 0)) {
                goto raise_neg_overflow;
            }
            return (grpc_compression_algorithm) val;
        }
    } else
#endif
    if (likely(PyLong_Check(x))) {
        if (is_unsigned) {
#if CYTHON_USE_PYLONG_INTERNALS
            const digit* digits = ((PyLongObject*)x)->ob_digit;
            switch (Py_SIZE(x)) {
                case  0: return (grpc_compression_algorithm) 0;
                case  1: __PYX_VERIFY_RETURN_INT(grpc_compression_algorithm, digit, digits[0])
                case 2:
                    if (8 * sizeof(grpc_compression_algorithm) > 1 * PyLong_SHIFT) {
                        if (8 * sizeof(unsigned long) > 2 * PyLong_SHIFT) {
                            __PYX_VERIFY_RETURN_INT(grpc_compression_algorithm, unsigned long, (((((unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0])))
                        } else if (8 * sizeof(grpc_compression_algorithm) >= 2 * PyLong_SHIFT) {
                            return (grpc_compression_algorithm) (((((grpc_compression_algorithm)digits[1]) << PyLong_SHIFT) | (grpc_compression_algorithm)digits[0]));
                        }
                    }
                    break;
                case 3:
                    if (8 * sizeof(grpc_compression_algorithm) > 2 * PyLong_SHIFT) {
                        if (8 * sizeof(unsigned long) > 3 * PyLong_SHIFT) {
                            __PYX_VERIFY_RETURN_INT(grpc_compression_algorithm, unsigned long, (((((((unsigned long)digits[2]) << PyLong_SHIFT) | (unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0])))
                        } else if (8 * sizeof(grpc_compression_algorithm) >= 3 * PyLong_SHIFT) {
                            return (grpc_compression_algorithm) (((((((grpc_compression_algorithm)digits[2]) << PyLong_SHIFT) | (grpc_compression_algorithm)digits[1]) << PyLong_SHIFT) | (grpc_compression_algorithm)digits[0]));
                        }
                    }
                    break;
                case 4:
                    if (8 * sizeof(grpc_compression_algorithm) > 3 * PyLong_SHIFT) {
                        if (8 * sizeof(unsigned long) > 4 * PyLong_SHIFT) {
                            __PYX_VERIFY_RETURN_INT(grpc_compression_algorithm, unsigned long, (((((((((unsigned long)digits[3]) << PyLong_SHIFT) | (unsigned long)digits[2]) << PyLong_SHIFT) | (unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0])))
                        } else if (8 * sizeof(grpc_compression_algorithm) >= 4 * PyLong_SHIFT) {
                            return (grpc_compression_algorithm) (((((((((grpc_compression_algorithm)digits[3]) << PyLong_SHIFT) | (grpc_compression_algorithm)digits[2]) << PyLong_SHIFT) | (grpc_compression_algorithm)digits[1]) << PyLong_SHIFT) | (grpc_compression_algorithm)digits[0]));
                        }
                    }
                    break;
            }
#endif
#if CYTHON_COMPILING_IN_CPYTHON
            if (unlikely(Py_SIZE(x) < 0)) {
                goto raise_neg_overflow;
            }
#else
            {
                int result = PyObject_RichCompareBool(x, Py_False, Py_LT);
                if (unlikely(result < 0))
                    return (grpc_compression_algorithm) -1;
                if (unlikely(result == 1))
                    goto raise_neg_overflow;
            }
#endif
            if (sizeof(grpc_compression_algorithm) <= sizeof(unsigned long)) {
                __PYX_VERIFY_RETURN_INT_EXC(grpc_compression_algorithm, unsigned long, PyLong_AsUnsignedLong(x))
#ifdef HAVE_LONG_LONG
            } else if (sizeof(grpc_compression_algorithm) <= sizeof(unsigned PY_LONG_LONG)) {
                __PYX_VERIFY_RETURN_INT_EXC(grpc_compression_algorithm, unsigned PY_LONG_LONG, PyLong_AsUnsignedLongLong(x))
#endif
            }
        } else {
#if CYTHON_USE_PYLONG_INTERNALS
            const digit* digits = ((PyLongObject*)x)->ob_digit;
            switch (Py_SIZE(x)) {
                case  0: return (grpc_compression_algorithm) 0;
                case -1: __PYX_VERIFY_RETURN_INT(grpc_compression_algorithm, sdigit, (sdigit) (-(sdigit)digits[0]))
                case  1: __PYX_VERIFY_RETURN_INT(grpc_compression_algorithm,  digit, +digits[0])
                case -2:
                    if (8 * sizeof(grpc_compression_algorithm) - 1 > 1 * PyLong_SHIFT) {
                        if (8 * sizeof(unsigned long) > 2 * PyLong_SHIFT) {
                            __PYX_VERIFY_RETURN_INT(grpc_compression_algorithm, long, -(long) (((((unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0])))
                        } else if (8 * sizeof(grpc_compression_algorithm) - 1 > 2 * PyLong_SHIFT) {
                            return (grpc_compression_algorithm) (((grpc_compression_algorithm)-1)*(((((grpc_compression_algorithm)digits[1]) << PyLong_SHIFT) | (grpc_compression_algorithm)digits[0])));
                        }
                    }
                    break;
                case 2:
                    if (8 * sizeof(grpc_compression_algorithm) > 1 * PyLong_SHIFT) {
                        if (8 * sizeof(unsigned long) > 2 * PyLong_SHIFT) {
                            __PYX_VERIFY_RETURN_INT(grpc_compression_algorithm, unsigned long, (((((unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0])))
                        } else if (8 * sizeof(grpc_compression_algorithm) - 1 > 2 * PyLong_SHIFT) {
                            return (grpc_compression_algorithm) ((((((grpc_compression_algorithm)digits[1]) << PyLong_SHIFT) | (grpc_compression_algorithm)digits[0])));
                        }
                    }
                    break;
                case -3:
                    if (8 * sizeof(grpc_compression_algorithm) - 1 > 2 * PyLong_SHIFT) {
                        if (8 * sizeof(unsigned long) > 3 * PyLong_SHIFT) {
                            __PYX_VERIFY_RETURN_INT(grpc_compression_algorithm, long, -(long) (((((((unsigned long)digits[2]) << PyLong_SHIFT) | (unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0])))
                        } else if (8 * sizeof(grpc_compression_algorithm) - 1 > 3 * PyLong_SHIFT) {
                            return (grpc_compression_algorithm) (((grpc_compression_algorithm)-1)*(((((((grpc_compression_algorithm)digits[2]) << PyLong_SHIFT) | (grpc_compression_algorithm)digits[1]) << PyLong_SHIFT) | (grpc_compression_algorithm)digits[0])));
                        }
                    }
                    break;
                case 3:
                    if (8 * sizeof(grpc_compression_algorithm) > 2 * PyLong_SHIFT) {
                        if (8 * sizeof(unsigned long) > 3 * PyLong_SHIFT) {
                            __PYX_VERIFY_RETURN_INT(grpc_compression_algorithm, unsigned long, (((((((unsigned long)digits[2]) << PyLong_SHIFT) | (unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0])))
                        } else if (8 * sizeof(grpc_compression_algorithm) - 1 > 3 * PyLong_SHIFT) {
                            return (grpc_compression_algorithm) ((((((((grpc_compression_algorithm)digits[2]) << PyLong_SHIFT) | (grpc_compression_algorithm)digits[1]) << PyLong_SHIFT) | (grpc_compression_algorithm)digits[0])));
                        }
                    }
                    break;
                case -4:
                    if (8 * sizeof(grpc_compression_algorithm) - 1 > 3 * PyLong_SHIFT) {
                        if (8 * sizeof(unsigned long) > 4 * PyLong_SHIFT) {
                            __PYX_VERIFY_RETURN_INT(grpc_compression_algorithm, long, -(long) (((((((((unsigned long)digits[3]) << PyLong_SHIFT) | (unsigned long)digits[2]) << PyLong_SHIFT) | (unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0])))
                        } else if (8 * sizeof(grpc_compression_algorithm) - 1 > 4 * PyLong_SHIFT) {
                            return (grpc_compression_algorithm) (((grpc_compression_algorithm)-1)*(((((((((grpc_compression_algorithm)digits[3]) << PyLong_SHIFT) | (grpc_compression_algorithm)digits[2]) << PyLong_SHIFT) | (grpc_compression_algorithm)digits[1]) << PyLong_SHIFT) | (grpc_compression_algorithm)digits[0])));
                        }
                    }
                    break;
                case 4:
                    if (8 * sizeof(grpc_compression_algorithm) > 3 * PyLong_SHIFT) {
                        if (8 * sizeof(unsigned long) > 4 * PyLong_SHIFT) {
                            __PYX_VERIFY_RETURN_INT(grpc_compression_algorithm, unsigned long, (((((((((unsigned long)digits[3]) << PyLong_SHIFT) | (unsigned long)digits[2]) << PyLong_SHIFT) | (unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0])))
                        } else if (8 * sizeof(grpc_compression_algorithm) - 1 > 4 * PyLong_SHIFT) {
                            return (grpc_compression_algorithm) ((((((((((grpc_compression_algorithm)digits[3]) << PyLong_SHIFT) | (grpc_compression_algorithm)digits[2]) << PyLong_SHIFT) | (grpc_compression_algorithm)digits[1]) << PyLong_SHIFT) | (grpc_compression_algorithm)digits[0])));
                        }
                    }
                    break;
            }
#endif
            if (sizeof(grpc_compression_algorithm) <= sizeof(long)) {
                __PYX_VERIFY_RETURN_INT_EXC(grpc_compression_algorithm, long, PyLong_AsLong(x))
#ifdef HAVE_LONG_LONG
            } else if (sizeof(grpc_compression_algorithm) <= sizeof(PY_LONG_LONG)) {
                __PYX_VERIFY_RETURN_INT_EXC(grpc_compression_algorithm, PY_LONG_LONG, PyLong_AsLongLong(x))
#endif
            }
        }
        {
#if CYTHON_COMPILING_IN_PYPY && !defined(_PyLong_AsByteArray)
            PyErr_SetString(PyExc_RuntimeError,
                            "_PyLong_AsByteArray() not available in PyPy, cannot convert large numbers");
#else
            grpc_compression_algorithm val;
            PyObject *v = __Pyx_PyNumber_IntOrLong(x);
 #if PY_MAJOR_VERSION < 3
            if (likely(v) && !PyLong_Check(v)) {
                PyObject *tmp = v;
                v = PyNumber_Long(tmp);
                Py_DECREF(tmp);
            }
 #endif
            if (likely(v)) {
                int one = 1; int is_little = (int)*(unsigned char *)&one;
                unsigned char *bytes = (unsigned char *)&val;
                int ret = _PyLong_AsByteArray((PyLongObject *)v,
                                              bytes, sizeof(val),
                                              is_little, !is_unsigned);
                Py_DECREF(v);
                if (likely(!ret))
                    return val;
            }
#endif
            return (grpc_compression_algorithm) -1;
        }
    } else {
        grpc_compression_algorithm val;
        PyObject *tmp = __Pyx_PyNumber_IntOrLong(x);
        if (!tmp) return (grpc_compression_algorithm) -1;
        val = __Pyx_PyInt_As_grpc_compression_algorithm(tmp);
        Py_DECREF(tmp);
        return val;
    }
raise_overflow:
    PyErr_SetString(PyExc_OverflowError,
        "value too large to convert to grpc_compression_algorithm");
    return (grpc_compression_algorithm) -1;
raise_neg_overflow:
    PyErr_SetString(PyExc_OverflowError,
        "can't convert negative value to grpc_compression_algorithm");
    return (grpc_compression_algorithm) -1;
}

/* CIntFromPy */
    static CYTHON_INLINE long __Pyx_PyInt_As_long(PyObject *x) {
#ifdef __Pyx_HAS_GCC_DIAGNOSTIC
#pragma GCC diagnostic push
#pragma GCC diagnostic ignored "-Wconversion"
#endif
    const long neg_one = (long) -1, const_zero = (long) 0;
#ifdef __Pyx_HAS_GCC_DIAGNOSTIC
#pragma GCC diagnostic pop
#endif
    const int is_unsigned = neg_one > const_zero;
#if PY_MAJOR_VERSION < 3
    if (likely(PyInt_Check(x))) {
        if (sizeof(long) < sizeof(long)) {
            __PYX_VERIFY_RETURN_INT(long, long, PyInt_AS_LONG(x))
        } else {
            long val = PyInt_AS_LONG(x);
            if (is_unsigned && unlikely(val < 0)) {
                goto raise_neg_overflow;
            }
            return (long) val;
        }
    } else
#endif
    if (likely(PyLong_Check(x))) {
        if (is_unsigned) {
#if CYTHON_USE_PYLONG_INTERNALS
            const digit* digits = ((PyLongObject*)x)->ob_digit;
            switch (Py_SIZE(x)) {
                case  0: return (long) 0;
                case  1: __PYX_VERIFY_RETURN_INT(long, digit, digits[0])
                case 2:
                    if (8 * sizeof(long) > 1 * PyLong_SHIFT) {
                        if (8 * sizeof(unsigned long) > 2 * PyLong_SHIFT) {
                            __PYX_VERIFY_RETURN_INT(long, unsigned long, (((((unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0])))
                        } else if (8 * sizeof(long) >= 2 * PyLong_SHIFT) {
                            return (long) (((((long)digits[1]) << PyLong_SHIFT) | (long)digits[0]));
                        }
                    }
                    break;
                case 3:
                    if (8 * sizeof(long) > 2 * PyLong_SHIFT) {
                        if (8 * sizeof(unsigned long) > 3 * PyLong_SHIFT) {
                            __PYX_VERIFY_RETURN_INT(long, unsigned long, (((((((unsigned long)digits[2]) << PyLong_SHIFT) | (unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0])))
                        } else if (8 * sizeof(long) >= 3 * PyLong_SHIFT) {
                            return (long) (((((((long)digits[2]) << PyLong_SHIFT) | (long)digits[1]) << PyLong_SHIFT) | (long)digits[0]));
                        }
                    }
                    break;
                case 4:
                    if (8 * sizeof(long) > 3 * PyLong_SHIFT) {
                        if (8 * sizeof(unsigned long) > 4 * PyLong_SHIFT) {
                            __PYX_VERIFY_RETURN_INT(long, unsigned long, (((((((((unsigned long)digits[3]) << PyLong_SHIFT) | (unsigned long)digits[2]) << PyLong_SHIFT) | (unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0])))
                        } else if (8 * sizeof(long) >= 4 * PyLong_SHIFT) {
                            return (long) (((((((((long)digits[3]) << PyLong_SHIFT) | (long)digits[2]) << PyLong_SHIFT) | (long)digits[1]) << PyLong_SHIFT) | (long)digits[0]));
                        }
                    }
                    break;
            }
#endif
#if CYTHON_COMPILING_IN_CPYTHON
            if (unlikely(Py_SIZE(x) < 0)) {
                goto raise_neg_overflow;
            }
#else
            {
                int result = PyObject_RichCompareBool(x, Py_False, Py_LT);
                if (unlikely(result < 0))
                    return (long) -1;
                if (unlikely(result == 1))
                    goto raise_neg_overflow;
            }
#endif
            if (sizeof(long) <= sizeof(unsigned long)) {
                __PYX_VERIFY_RETURN_INT_EXC(long, unsigned long, PyLong_AsUnsignedLong(x))
#ifdef HAVE_LONG_LONG
            } else if (sizeof(long) <= sizeof(unsigned PY_LONG_LONG)) {
                __PYX_VERIFY_RETURN_INT_EXC(long, unsigned PY_LONG_LONG, PyLong_AsUnsignedLongLong(x))
#endif
            }
        } else {
#if CYTHON_USE_PYLONG_INTERNALS
            const digit* digits = ((PyLongObject*)x)->ob_digit;
            switch (Py_SIZE(x)) {
                case  0: return (long) 0;
                case -1: __PYX_VERIFY_RETURN_INT(long, sdigit, (sdigit) (-(sdigit)digits[0]))
                case  1: __PYX_VERIFY_RETURN_INT(long,  digit, +digits[0])
                case -2:
                    if (8 * sizeof(long) - 1 > 1 * PyLong_SHIFT) {
                        if (8 * sizeof(unsigned long) > 2 * PyLong_SHIFT) {
                            __PYX_VERIFY_RETURN_INT(long, long, -(long) (((((unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0])))
                        } else if (8 * sizeof(long) - 1 > 2 * PyLong_SHIFT) {
                            return (long) (((long)-1)*(((((long)digits[1]) << PyLong_SHIFT) | (long)digits[0])));
                        }
                    }
                    break;
                case 2:
                    if (8 * sizeof(long) > 1 * PyLong_SHIFT) {
                        if (8 * sizeof(unsigned long) > 2 * PyLong_SHIFT) {
                            __PYX_VERIFY_RETURN_INT(long, unsigned long, (((((unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0])))
                        } else if (8 * sizeof(long) - 1 > 2 * PyLong_SHIFT) {
                            return (long) ((((((long)digits[1]) << PyLong_SHIFT) | (long)digits[0])));
                        }
                    }
                    break;
                case -3:
                    if (8 * sizeof(long) - 1 > 2 * PyLong_SHIFT) {
                        if (8 * sizeof(unsigned long) > 3 * PyLong_SHIFT) {
                            __PYX_VERIFY_RETURN_INT(long, long, -(long) (((((((unsigned long)digits[2]) << PyLong_SHIFT) | (unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0])))
                        } else if (8 * sizeof(long) - 1 > 3 * PyLong_SHIFT) {
                            return (long) (((long)-1)*(((((((long)digits[2]) << PyLong_SHIFT) | (long)digits[1]) << PyLong_SHIFT) | (long)digits[0])));
                        }
                    }
                    break;
                case 3:
                    if (8 * sizeof(long) > 2 * PyLong_SHIFT) {
                        if (8 * sizeof(unsigned long) > 3 * PyLong_SHIFT) {
                            __PYX_VERIFY_RETURN_INT(long, unsigned long, (((((((unsigned long)digits[2]) << PyLong_SHIFT) | (unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0])))
                        } else if (8 * sizeof(long) - 1 > 3 * PyLong_SHIFT) {
                            return (long) ((((((((long)digits[2]) << PyLong_SHIFT) | (long)digits[1]) << PyLong_SHIFT) | (long)digits[0])));
                        }
                    }
                    break;
                case -4:
                    if (8 * sizeof(long) - 1 > 3 * PyLong_SHIFT) {
                        if (8 * sizeof(unsigned long) > 4 * PyLong_SHIFT) {
                            __PYX_VERIFY_RETURN_INT(long, long, -(long) (((((((((unsigned long)digits[3]) << PyLong_SHIFT) | (unsigned long)digits[2]) << PyLong_SHIFT) | (unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0])))
                        } else if (8 * sizeof(long) - 1 > 4 * PyLong_SHIFT) {
                            return (long) (((long)-1)*(((((((((long)digits[3]) << PyLong_SHIFT) | (long)digits[2]) << PyLong_SHIFT) | (long)digits[1]) << PyLong_SHIFT) | (long)digits[0])));
                        }
                    }
                    break;
                case 4:
                    if (8 * sizeof(long) > 3 * PyLong_SHIFT) {
                        if (8 * sizeof(unsigned long) > 4 * PyLong_SHIFT) {
                            __PYX_VERIFY_RETURN_INT(long, unsigned long, (((((((((unsigned long)digits[3]) << PyLong_SHIFT) | (unsigned long)digits[2]) << PyLong_SHIFT) | (unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0])))
                        } else if (8 * sizeof(long) - 1 > 4 * PyLong_SHIFT) {
                            return (long) ((((((((((long)digits[3]) << PyLong_SHIFT) | (long)digits[2]) << PyLong_SHIFT) | (long)digits[1]) << PyLong_SHIFT) | (long)digits[0])));
                        }
                    }
                    break;
            }
#endif
            if (sizeof(long) <= sizeof(long)) {
                __PYX_VERIFY_RETURN_INT_EXC(long, long, PyLong_AsLong(x))
#ifdef HAVE_LONG_LONG
            } else if (sizeof(long) <= sizeof(PY_LONG_LONG)) {
                __PYX_VERIFY_RETURN_INT_EXC(long, PY_LONG_LONG, PyLong_AsLongLong(x))
#endif
            }
        }
        {
#if CYTHON_COMPILING_IN_PYPY && !defined(_PyLong_AsByteArray)
            PyErr_SetString(PyExc_RuntimeError,
                            "_PyLong_AsByteArray() not available in PyPy, cannot convert large numbers");
#else
            long val;
            PyObject *v = __Pyx_PyNumber_IntOrLong(x);
 #if PY_MAJOR_VERSION < 3
            if (likely(v) && !PyLong_Check(v)) {
                PyObject *tmp = v;
                v = PyNumber_Long(tmp);
                Py_DECREF(tmp);
            }
 #endif
            if (likely(v)) {
                int one = 1; int is_little = (int)*(unsigned char *)&one;
                unsigned char *bytes = (unsigned char *)&val;
                int ret = _PyLong_AsByteArray((PyLongObject *)v,
                                              bytes, sizeof(val),
                                              is_little, !is_unsigned);
                Py_DECREF(v);
                if (likely(!ret))
                    return val;
            }
#endif
            return (long) -1;
        }
    } else {
        long val;
        PyObject *tmp = __Pyx_PyNumber_IntOrLong(x);
        if (!tmp) return (long) -1;
        val = __Pyx_PyInt_As_long(tmp);
        Py_DECREF(tmp);
        return val;
    }
raise_overflow:
    PyErr_SetString(PyExc_OverflowError,
        "value too large to convert to long");
    return (long) -1;
raise_neg_overflow:
    PyErr_SetString(PyExc_OverflowError,
        "can't convert negative value to long");
    return (long) -1;
}

/* CIntToPy */
    static CYTHON_INLINE PyObject* __Pyx_PyInt_From_long(long value) {
#ifdef __Pyx_HAS_GCC_DIAGNOSTIC
#pragma GCC diagnostic push
#pragma GCC diagnostic ignored "-Wconversion"
#endif
    const long neg_one = (long) -1, const_zero = (long) 0;
#ifdef __Pyx_HAS_GCC_DIAGNOSTIC
#pragma GCC diagnostic pop
#endif
    const int is_unsigned = neg_one > const_zero;
    if (is_unsigned) {
        if (sizeof(long) < sizeof(long)) {
            return PyInt_FromLong((long) value);
        } else if (sizeof(long) <= sizeof(unsigned long)) {
            return PyLong_FromUnsignedLong((unsigned long) value);
#ifdef HAVE_LONG_LONG
        } else if (sizeof(long) <= sizeof(unsigned PY_LONG_LONG)) {
            return PyLong_FromUnsignedLongLong((unsigned PY_LONG_LONG) value);
#endif
        }
    } else {
        if (sizeof(long) <= sizeof(long)) {
            return PyInt_FromLong((long) value);
#ifdef HAVE_LONG_LONG
        } else if (sizeof(long) <= sizeof(PY_LONG_LONG)) {
            return PyLong_FromLongLong((PY_LONG_LONG) value);
#endif
        }
    }
    {
        int one = 1; int little = (int)*(unsigned char *)&one;
        unsigned char *bytes = (unsigned char *)&value;
        return _PyLong_FromByteArray(bytes, sizeof(long),
                                     little, !is_unsigned);
    }
}

/* CIntFromPy */
    static CYTHON_INLINE grpc_call_error __Pyx_PyInt_As_grpc_call_error(PyObject *x) {
#ifdef __Pyx_HAS_GCC_DIAGNOSTIC
#pragma GCC diagnostic push
#pragma GCC diagnostic ignored "-Wconversion"
#endif
    const grpc_call_error neg_one = (grpc_call_error) -1, const_zero = (grpc_call_error) 0;
#ifdef __Pyx_HAS_GCC_DIAGNOSTIC
#pragma GCC diagnostic pop
#endif
    const int is_unsigned = neg_one > const_zero;
#if PY_MAJOR_VERSION < 3
    if (likely(PyInt_Check(x))) {
        if (sizeof(grpc_call_error) < sizeof(long)) {
            __PYX_VERIFY_RETURN_INT(grpc_call_error, long, PyInt_AS_LONG(x))
        } else {
            long val = PyInt_AS_LONG(x);
            if (is_unsigned && unlikely(val < 0)) {
                goto raise_neg_overflow;
            }
            return (grpc_call_error) val;
        }
    } else
#endif
    if (likely(PyLong_Check(x))) {
        if (is_unsigned) {
#if CYTHON_USE_PYLONG_INTERNALS
            const digit* digits = ((PyLongObject*)x)->ob_digit;
            switch (Py_SIZE(x)) {
                case  0: return (grpc_call_error) 0;
                case  1: __PYX_VERIFY_RETURN_INT(grpc_call_error, digit, digits[0])
                case 2:
                    if (8 * sizeof(grpc_call_error) > 1 * PyLong_SHIFT) {
                        if (8 * sizeof(unsigned long) > 2 * PyLong_SHIFT) {
                            __PYX_VERIFY_RETURN_INT(grpc_call_error, unsigned long, (((((unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0])))
                        } else if (8 * sizeof(grpc_call_error) >= 2 * PyLong_SHIFT) {
                            return (grpc_call_error) (((((grpc_call_error)digits[1]) << PyLong_SHIFT) | (grpc_call_error)digits[0]));
                        }
                    }
                    break;
                case 3:
                    if (8 * sizeof(grpc_call_error) > 2 * PyLong_SHIFT) {
                        if (8 * sizeof(unsigned long) > 3 * PyLong_SHIFT) {
                            __PYX_VERIFY_RETURN_INT(grpc_call_error, unsigned long, (((((((unsigned long)digits[2]) << PyLong_SHIFT) | (unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0])))
                        } else if (8 * sizeof(grpc_call_error) >= 3 * PyLong_SHIFT) {
                            return (grpc_call_error) (((((((grpc_call_error)digits[2]) << PyLong_SHIFT) | (grpc_call_error)digits[1]) << PyLong_SHIFT) | (grpc_call_error)digits[0]));
                        }
                    }
                    break;
                case 4:
                    if (8 * sizeof(grpc_call_error) > 3 * PyLong_SHIFT) {
                        if (8 * sizeof(unsigned long) > 4 * PyLong_SHIFT) {
                            __PYX_VERIFY_RETURN_INT(grpc_call_error, unsigned long, (((((((((unsigned long)digits[3]) << PyLong_SHIFT) | (unsigned long)digits[2]) << PyLong_SHIFT) | (unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0])))
                        } else if (8 * sizeof(grpc_call_error) >= 4 * PyLong_SHIFT) {
                            return (grpc_call_error) (((((((((grpc_call_error)digits[3]) << PyLong_SHIFT) | (grpc_call_error)digits[2]) << PyLong_SHIFT) | (grpc_call_error)digits[1]) << PyLong_SHIFT) | (grpc_call_error)digits[0]));
                        }
                    }
                    break;
            }
#endif
#if CYTHON_COMPILING_IN_CPYTHON
            if (unlikely(Py_SIZE(x) < 0)) {
                goto raise_neg_overflow;
            }
#else
            {
                int result = PyObject_RichCompareBool(x, Py_False, Py_LT);
                if (unlikely(result < 0))
                    return (grpc_call_error) -1;
                if (unlikely(result == 1))
                    goto raise_neg_overflow;
            }
#endif
            if (sizeof(grpc_call_error) <= sizeof(unsigned long)) {
                __PYX_VERIFY_RETURN_INT_EXC(grpc_call_error, unsigned long, PyLong_AsUnsignedLong(x))
#ifdef HAVE_LONG_LONG
            } else if (sizeof(grpc_call_error) <= sizeof(unsigned PY_LONG_LONG)) {
                __PYX_VERIFY_RETURN_INT_EXC(grpc_call_error, unsigned PY_LONG_LONG, PyLong_AsUnsignedLongLong(x))
#endif
            }
        } else {
#if CYTHON_USE_PYLONG_INTERNALS
            const digit* digits = ((PyLongObject*)x)->ob_digit;
            switch (Py_SIZE(x)) {
                case  0: return (grpc_call_error) 0;
                case -1: __PYX_VERIFY_RETURN_INT(grpc_call_error, sdigit, (sdigit) (-(sdigit)digits[0]))
                case  1: __PYX_VERIFY_RETURN_INT(grpc_call_error,  digit, +digits[0])
                case -2:
                    if (8 * sizeof(grpc_call_error) - 1 > 1 * PyLong_SHIFT) {
                        if (8 * sizeof(unsigned long) > 2 * PyLong_SHIFT) {
                            __PYX_VERIFY_RETURN_INT(grpc_call_error, long, -(long) (((((unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0])))
                        } else if (8 * sizeof(grpc_call_error) - 1 > 2 * PyLong_SHIFT) {
                            return (grpc_call_error) (((grpc_call_error)-1)*(((((grpc_call_error)digits[1]) << PyLong_SHIFT) | (grpc_call_error)digits[0])));
                        }
                    }
                    break;
                case 2:
                    if (8 * sizeof(grpc_call_error) > 1 * PyLong_SHIFT) {
                        if (8 * sizeof(unsigned long) > 2 * PyLong_SHIFT) {
                            __PYX_VERIFY_RETURN_INT(grpc_call_error, unsigned long, (((((unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0])))
                        } else if (8 * sizeof(grpc_call_error) - 1 > 2 * PyLong_SHIFT) {
                            return (grpc_call_error) ((((((grpc_call_error)digits[1]) << PyLong_SHIFT) | (grpc_call_error)digits[0])));
                        }
                    }
                    break;
                case -3:
                    if (8 * sizeof(grpc_call_error) - 1 > 2 * PyLong_SHIFT) {
                        if (8 * sizeof(unsigned long) > 3 * PyLong_SHIFT) {
                            __PYX_VERIFY_RETURN_INT(grpc_call_error, long, -(long) (((((((unsigned long)digits[2]) << PyLong_SHIFT) | (unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0])))
                        } else if (8 * sizeof(grpc_call_error) - 1 > 3 * PyLong_SHIFT) {
                            return (grpc_call_error) (((grpc_call_error)-1)*(((((((grpc_call_error)digits[2]) << PyLong_SHIFT) | (grpc_call_error)digits[1]) << PyLong_SHIFT) | (grpc_call_error)digits[0])));
                        }
                    }
                    break;
                case 3:
                    if (8 * sizeof(grpc_call_error) > 2 * PyLong_SHIFT) {
                        if (8 * sizeof(unsigned long) > 3 * PyLong_SHIFT) {
                            __PYX_VERIFY_RETURN_INT(grpc_call_error, unsigned long, (((((((unsigned long)digits[2]) << PyLong_SHIFT) | (unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0])))
                        } else if (8 * sizeof(grpc_call_error) - 1 > 3 * PyLong_SHIFT) {
                            return (grpc_call_error) ((((((((grpc_call_error)digits[2]) << PyLong_SHIFT) | (grpc_call_error)digits[1]) << PyLong_SHIFT) | (grpc_call_error)digits[0])));
                        }
                    }
                    break;
                case -4:
                    if (8 * sizeof(grpc_call_error) - 1 > 3 * PyLong_SHIFT) {
                        if (8 * sizeof(unsigned long) > 4 * PyLong_SHIFT) {
                            __PYX_VERIFY_RETURN_INT(grpc_call_error, long, -(long) (((((((((unsigned long)digits[3]) << PyLong_SHIFT) | (unsigned long)digits[2]) << PyLong_SHIFT) | (unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0])))
                        } else if (8 * sizeof(grpc_call_error) - 1 > 4 * PyLong_SHIFT) {
                            return (grpc_call_error) (((grpc_call_error)-1)*(((((((((grpc_call_error)digits[3]) << PyLong_SHIFT) | (grpc_call_error)digits[2]) << PyLong_SHIFT) | (grpc_call_error)digits[1]) << PyLong_SHIFT) | (grpc_call_error)digits[0])));
                        }
                    }
                    break;
                case 4:
                    if (8 * sizeof(grpc_call_error) > 3 * PyLong_SHIFT) {
                        if (8 * sizeof(unsigned long) > 4 * PyLong_SHIFT) {
                            __PYX_VERIFY_RETURN_INT(grpc_call_error, unsigned long, (((((((((unsigned long)digits[3]) << PyLong_SHIFT) | (unsigned long)digits[2]) << PyLong_SHIFT) | (unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0])))
                        } else if (8 * sizeof(grpc_call_error) - 1 > 4 * PyLong_SHIFT) {
                            return (grpc_call_error) ((((((((((grpc_call_error)digits[3]) << PyLong_SHIFT) | (grpc_call_error)digits[2]) << PyLong_SHIFT) | (grpc_call_error)digits[1]) << PyLong_SHIFT) | (grpc_call_error)digits[0])));
                        }
                    }
                    break;
            }
#endif
            if (sizeof(grpc_call_error) <= sizeof(long)) {
                __PYX_VERIFY_RETURN_INT_EXC(grpc_call_error, long, PyLong_AsLong(x))
#ifdef HAVE_LONG_LONG
            } else if (sizeof(grpc_call_error) <= sizeof(PY_LONG_LONG)) {
                __PYX_VERIFY_RETURN_INT_EXC(grpc_call_error, PY_LONG_LONG, PyLong_AsLongLong(x))
#endif
            }
        }
        {
#if CYTHON_COMPILING_IN_PYPY && !defined(_PyLong_AsByteArray)
            PyErr_SetString(PyExc_RuntimeError,
                            "_PyLong_AsByteArray() not available in PyPy, cannot convert large numbers");
#else
            grpc_call_error val;
            PyObject *v = __Pyx_PyNumber_IntOrLong(x);
 #if PY_MAJOR_VERSION < 3
            if (likely(v) && !PyLong_Check(v)) {
                PyObject *tmp = v;
                v = PyNumber_Long(tmp);
                Py_DECREF(tmp);
            }
 #endif
            if (likely(v)) {
                int one = 1; int is_little = (int)*(unsigned char *)&one;
                unsigned char *bytes = (unsigned char *)&val;
                int ret = _PyLong_AsByteArray((PyLongObject *)v,
                                              bytes, sizeof(val),
                                              is_little, !is_unsigned);
                Py_DECREF(v);
                if (likely(!ret))
                    return val;
            }
#endif
            return (grpc_call_error) -1;
        }
    } else {
        grpc_call_error val;
        PyObject *tmp = __Pyx_PyNumber_IntOrLong(x);
        if (!tmp) return (grpc_call_error) -1;
        val = __Pyx_PyInt_As_grpc_call_error(tmp);
        Py_DECREF(tmp);
        return val;
    }
raise_overflow:
    PyErr_SetString(PyExc_OverflowError,
        "value too large to convert to grpc_call_error");
    return (grpc_call_error) -1;
raise_neg_overflow:
    PyErr_SetString(PyExc_OverflowError,
        "can't convert negative value to grpc_call_error");
    return (grpc_call_error) -1;
}

/* CIntFromPy */
    static CYTHON_INLINE size_t __Pyx_PyInt_As_size_t(PyObject *x) {
#ifdef __Pyx_HAS_GCC_DIAGNOSTIC
#pragma GCC diagnostic push
#pragma GCC diagnostic ignored "-Wconversion"
#endif
    const size_t neg_one = (size_t) -1, const_zero = (size_t) 0;
#ifdef __Pyx_HAS_GCC_DIAGNOSTIC
#pragma GCC diagnostic pop
#endif
    const int is_unsigned = neg_one > const_zero;
#if PY_MAJOR_VERSION < 3
    if (likely(PyInt_Check(x))) {
        if (sizeof(size_t) < sizeof(long)) {
            __PYX_VERIFY_RETURN_INT(size_t, long, PyInt_AS_LONG(x))
        } else {
            long val = PyInt_AS_LONG(x);
            if (is_unsigned && unlikely(val < 0)) {
                goto raise_neg_overflow;
            }
            return (size_t) val;
        }
    } else
#endif
    if (likely(PyLong_Check(x))) {
        if (is_unsigned) {
#if CYTHON_USE_PYLONG_INTERNALS
            const digit* digits = ((PyLongObject*)x)->ob_digit;
            switch (Py_SIZE(x)) {
                case  0: return (size_t) 0;
                case  1: __PYX_VERIFY_RETURN_INT(size_t, digit, digits[0])
                case 2:
                    if (8 * sizeof(size_t) > 1 * PyLong_SHIFT) {
                        if (8 * sizeof(unsigned long) > 2 * PyLong_SHIFT) {
                            __PYX_VERIFY_RETURN_INT(size_t, unsigned long, (((((unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0])))
                        } else if (8 * sizeof(size_t) >= 2 * PyLong_SHIFT) {
                            return (size_t) (((((size_t)digits[1]) << PyLong_SHIFT) | (size_t)digits[0]));
                        }
                    }
                    break;
                case 3:
                    if (8 * sizeof(size_t) > 2 * PyLong_SHIFT) {
                        if (8 * sizeof(unsigned long) > 3 * PyLong_SHIFT) {
                            __PYX_VERIFY_RETURN_INT(size_t, unsigned long, (((((((unsigned long)digits[2]) << PyLong_SHIFT) | (unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0])))
                        } else if (8 * sizeof(size_t) >= 3 * PyLong_SHIFT) {
                            return (size_t) (((((((size_t)digits[2]) << PyLong_SHIFT) | (size_t)digits[1]) << PyLong_SHIFT) | (size_t)digits[0]));
                        }
                    }
                    break;
                case 4:
                    if (8 * sizeof(size_t) > 3 * PyLong_SHIFT) {
                        if (8 * sizeof(unsigned long) > 4 * PyLong_SHIFT) {
                            __PYX_VERIFY_RETURN_INT(size_t, unsigned long, (((((((((unsigned long)digits[3]) << PyLong_SHIFT) | (unsigned long)digits[2]) << PyLong_SHIFT) | (unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0])))
                        } else if (8 * sizeof(size_t) >= 4 * PyLong_SHIFT) {
                            return (size_t) (((((((((size_t)digits[3]) << PyLong_SHIFT) | (size_t)digits[2]) << PyLong_SHIFT) | (size_t)digits[1]) << PyLong_SHIFT) | (size_t)digits[0]));
                        }
                    }
                    break;
            }
#endif
#if CYTHON_COMPILING_IN_CPYTHON
            if (unlikely(Py_SIZE(x) < 0)) {
                goto raise_neg_overflow;
            }
#else
            {
                int result = PyObject_RichCompareBool(x, Py_False, Py_LT);
                if (unlikely(result < 0))
                    return (size_t) -1;
                if (unlikely(result == 1))
                    goto raise_neg_overflow;
            }
#endif
            if (sizeof(size_t) <= sizeof(unsigned long)) {
                __PYX_VERIFY_RETURN_INT_EXC(size_t, unsigned long, PyLong_AsUnsignedLong(x))
#ifdef HAVE_LONG_LONG
            } else if (sizeof(size_t) <= sizeof(unsigned PY_LONG_LONG)) {
                __PYX_VERIFY_RETURN_INT_EXC(size_t, unsigned PY_LONG_LONG, PyLong_AsUnsignedLongLong(x))
#endif
            }
        } else {
#if CYTHON_USE_PYLONG_INTERNALS
            const digit* digits = ((PyLongObject*)x)->ob_digit;
            switch (Py_SIZE(x)) {
                case  0: return (size_t) 0;
                case -1: __PYX_VERIFY_RETURN_INT(size_t, sdigit, (sdigit) (-(sdigit)digits[0]))
                case  1: __PYX_VERIFY_RETURN_INT(size_t,  digit, +digits[0])
                case -2:
                    if (8 * sizeof(size_t) - 1 > 1 * PyLong_SHIFT) {
                        if (8 * sizeof(unsigned long) > 2 * PyLong_SHIFT) {
                            __PYX_VERIFY_RETURN_INT(size_t, long, -(long) (((((unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0])))
                        } else if (8 * sizeof(size_t) - 1 > 2 * PyLong_SHIFT) {
                            return (size_t) (((size_t)-1)*(((((size_t)digits[1]) << PyLong_SHIFT) | (size_t)digits[0])));
                        }
                    }
                    break;
                case 2:
                    if (8 * sizeof(size_t) > 1 * PyLong_SHIFT) {
                        if (8 * sizeof(unsigned long) > 2 * PyLong_SHIFT) {
                            __PYX_VERIFY_RETURN_INT(size_t, unsigned long, (((((unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0])))
                        } else if (8 * sizeof(size_t) - 1 > 2 * PyLong_SHIFT) {
                            return (size_t) ((((((size_t)digits[1]) << PyLong_SHIFT) | (size_t)digits[0])));
                        }
                    }
                    break;
                case -3:
                    if (8 * sizeof(size_t) - 1 > 2 * PyLong_SHIFT) {
                        if (8 * sizeof(unsigned long) > 3 * PyLong_SHIFT) {
                            __PYX_VERIFY_RETURN_INT(size_t, long, -(long) (((((((unsigned long)digits[2]) << PyLong_SHIFT) | (unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0])))
                        } else if (8 * sizeof(size_t) - 1 > 3 * PyLong_SHIFT) {
                            return (size_t) (((size_t)-1)*(((((((size_t)digits[2]) << PyLong_SHIFT) | (size_t)digits[1]) << PyLong_SHIFT) | (size_t)digits[0])));
                        }
                    }
                    break;
                case 3:
                    if (8 * sizeof(size_t) > 2 * PyLong_SHIFT) {
                        if (8 * sizeof(unsigned long) > 3 * PyLong_SHIFT) {
                            __PYX_VERIFY_RETURN_INT(size_t, unsigned long, (((((((unsigned long)digits[2]) << PyLong_SHIFT) | (unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0])))
                        } else if (8 * sizeof(size_t) - 1 > 3 * PyLong_SHIFT) {
                            return (size_t) ((((((((size_t)digits[2]) << PyLong_SHIFT) | (size_t)digits[1]) << PyLong_SHIFT) | (size_t)digits[0])));
                        }
                    }
                    break;
                case -4:
                    if (8 * sizeof(size_t) - 1 > 3 * PyLong_SHIFT) {
                        if (8 * sizeof(unsigned long) > 4 * PyLong_SHIFT) {
                            __PYX_VERIFY_RETURN_INT(size_t, long, -(long) (((((((((unsigned long)digits[3]) << PyLong_SHIFT) | (unsigned long)digits[2]) << PyLong_SHIFT) | (unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0])))
                        } else if (8 * sizeof(size_t) - 1 > 4 * PyLong_SHIFT) {
                            return (size_t) (((size_t)-1)*(((((((((size_t)digits[3]) << PyLong_SHIFT) | (size_t)digits[2]) << PyLong_SHIFT) | (size_t)digits[1]) << PyLong_SHIFT) | (size_t)digits[0])));
                        }
                    }
                    break;
                case 4:
                    if (8 * sizeof(size_t) > 3 * PyLong_SHIFT) {
                        if (8 * sizeof(unsigned long) > 4 * PyLong_SHIFT) {
                            __PYX_VERIFY_RETURN_INT(size_t, unsigned long, (((((((((unsigned long)digits[3]) << PyLong_SHIFT) | (unsigned long)digits[2]) << PyLong_SHIFT) | (unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0])))
                        } else if (8 * sizeof(size_t) - 1 > 4 * PyLong_SHIFT) {
                            return (size_t) ((((((((((size_t)digits[3]) << PyLong_SHIFT) | (size_t)digits[2]) << PyLong_SHIFT) | (size_t)digits[1]) << PyLong_SHIFT) | (size_t)digits[0])));
                        }
                    }
                    break;
            }
#endif
            if (sizeof(size_t) <= sizeof(long)) {
                __PYX_VERIFY_RETURN_INT_EXC(size_t, long, PyLong_AsLong(x))
#ifdef HAVE_LONG_LONG
            } else if (sizeof(size_t) <= sizeof(PY_LONG_LONG)) {
                __PYX_VERIFY_RETURN_INT_EXC(size_t, PY_LONG_LONG, PyLong_AsLongLong(x))
#endif
            }
        }
        {
#if CYTHON_COMPILING_IN_PYPY && !defined(_PyLong_AsByteArray)
            PyErr_SetString(PyExc_RuntimeError,
                            "_PyLong_AsByteArray() not available in PyPy, cannot convert large numbers");
#else
            size_t val;
            PyObject *v = __Pyx_PyNumber_IntOrLong(x);
 #if PY_MAJOR_VERSION < 3
            if (likely(v) && !PyLong_Check(v)) {
                PyObject *tmp = v;
                v = PyNumber_Long(tmp);
                Py_DECREF(tmp);
            }
 #endif
            if (likely(v)) {
                int one = 1; int is_little = (int)*(unsigned char *)&one;
                unsigned char *bytes = (unsigned char *)&val;
                int ret = _PyLong_AsByteArray((PyLongObject *)v,
                                              bytes, sizeof(val),
                                              is_little, !is_unsigned);
                Py_DECREF(v);
                if (likely(!ret))
                    return val;
            }
#endif
            return (size_t) -1;
        }
    } else {
        size_t val;
        PyObject *tmp = __Pyx_PyNumber_IntOrLong(x);
        if (!tmp) return (size_t) -1;
        val = __Pyx_PyInt_As_size_t(tmp);
        Py_DECREF(tmp);
        return val;
    }
raise_overflow:
    PyErr_SetString(PyExc_OverflowError,
        "value too large to convert to size_t");
    return (size_t) -1;
raise_neg_overflow:
    PyErr_SetString(PyExc_OverflowError,
        "can't convert negative value to size_t");
    return (size_t) -1;
}

/* CIntToPy */
    static CYTHON_INLINE PyObject* __Pyx_PyInt_From_unsigned_int(unsigned int value) {
#ifdef __Pyx_HAS_GCC_DIAGNOSTIC
#pragma GCC diagnostic push
#pragma GCC diagnostic ignored "-Wconversion"
#endif
    const unsigned int neg_one = (unsigned int) -1, const_zero = (unsigned int) 0;
#ifdef __Pyx_HAS_GCC_DIAGNOSTIC
#pragma GCC diagnostic pop
#endif
    const int is_unsigned = neg_one > const_zero;
    if (is_unsigned) {
        if (sizeof(unsigned int) < sizeof(long)) {
            return PyInt_FromLong((long) value);
        } else if (sizeof(unsigned int) <= sizeof(unsigned long)) {
            return PyLong_FromUnsignedLong((unsigned long) value);
#ifdef HAVE_LONG_LONG
        } else if (sizeof(unsigned int) <= sizeof(unsigned PY_LONG_LONG)) {
            return PyLong_FromUnsignedLongLong((unsigned PY_LONG_LONG) value);
#endif
        }
    } else {
        if (sizeof(unsigned int) <= sizeof(long)) {
            return PyInt_FromLong((long) value);
#ifdef HAVE_LONG_LONG
        } else if (sizeof(unsigned int) <= sizeof(PY_LONG_LONG)) {
            return PyLong_FromLongLong((PY_LONG_LONG) value);
#endif
        }
    }
    {
        int one = 1; int little = (int)*(unsigned char *)&one;
        unsigned char *bytes = (unsigned char *)&value;
        return _PyLong_FromByteArray(bytes, sizeof(unsigned int),
                                     little, !is_unsigned);
    }
}

/* CIntFromPy */
    static CYTHON_INLINE unsigned int __Pyx_PyInt_As_unsigned_int(PyObject *x) {
#ifdef __Pyx_HAS_GCC_DIAGNOSTIC
#pragma GCC diagnostic push
#pragma GCC diagnostic ignored "-Wconversion"
#endif
    const unsigned int neg_one = (unsigned int) -1, const_zero = (unsigned int) 0;
#ifdef __Pyx_HAS_GCC_DIAGNOSTIC
#pragma GCC diagnostic pop
#endif
    const int is_unsigned = neg_one > const_zero;
#if PY_MAJOR_VERSION < 3
    if (likely(PyInt_Check(x))) {
        if (sizeof(unsigned int) < sizeof(long)) {
            __PYX_VERIFY_RETURN_INT(unsigned int, long, PyInt_AS_LONG(x))
        } else {
            long val = PyInt_AS_LONG(x);
            if (is_unsigned && unlikely(val < 0)) {
                goto raise_neg_overflow;
            }
            return (unsigned int) val;
        }
    } else
#endif
    if (likely(PyLong_Check(x))) {
        if (is_unsigned) {
#if CYTHON_USE_PYLONG_INTERNALS
            const digit* digits = ((PyLongObject*)x)->ob_digit;
            switch (Py_SIZE(x)) {
                case  0: return (unsigned int) 0;
                case  1: __PYX_VERIFY_RETURN_INT(unsigned int, digit, digits[0])
                case 2:
                    if (8 * sizeof(unsigned int) > 1 * PyLong_SHIFT) {
                        if (8 * sizeof(unsigned long) > 2 * PyLong_SHIFT) {
                            __PYX_VERIFY_RETURN_INT(unsigned int, unsigned long, (((((unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0])))
                        } else if (8 * sizeof(unsigned int) >= 2 * PyLong_SHIFT) {
                            return (unsigned int) (((((unsigned int)digits[1]) << PyLong_SHIFT) | (unsigned int)digits[0]));
                        }
                    }
                    break;
                case 3:
                    if (8 * sizeof(unsigned int) > 2 * PyLong_SHIFT) {
                        if (8 * sizeof(unsigned long) > 3 * PyLong_SHIFT) {
                            __PYX_VERIFY_RETURN_INT(unsigned int, unsigned long, (((((((unsigned long)digits[2]) << PyLong_SHIFT) | (unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0])))
                        } else if (8 * sizeof(unsigned int) >= 3 * PyLong_SHIFT) {
                            return (unsigned int) (((((((unsigned int)digits[2]) << PyLong_SHIFT) | (unsigned int)digits[1]) << PyLong_SHIFT) | (unsigned int)digits[0]));
                        }
                    }
                    break;
                case 4:
                    if (8 * sizeof(unsigned int) > 3 * PyLong_SHIFT) {
                        if (8 * sizeof(unsigned long) > 4 * PyLong_SHIFT) {
                            __PYX_VERIFY_RETURN_INT(unsigned int, unsigned long, (((((((((unsigned long)digits[3]) << PyLong_SHIFT) | (unsigned long)digits[2]) << PyLong_SHIFT) | (unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0])))
                        } else if (8 * sizeof(unsigned int) >= 4 * PyLong_SHIFT) {
                            return (unsigned int) (((((((((unsigned int)digits[3]) << PyLong_SHIFT) | (unsigned int)digits[2]) << PyLong_SHIFT) | (unsigned int)digits[1]) << PyLong_SHIFT) | (unsigned int)digits[0]));
                        }
                    }
                    break;
            }
#endif
#if CYTHON_COMPILING_IN_CPYTHON
            if (unlikely(Py_SIZE(x) < 0)) {
                goto raise_neg_overflow;
            }
#else
            {
                int result = PyObject_RichCompareBool(x, Py_False, Py_LT);
                if (unlikely(result < 0))
                    return (unsigned int) -1;
                if (unlikely(result == 1))
                    goto raise_neg_overflow;
            }
#endif
            if (sizeof(unsigned int) <= sizeof(unsigned long)) {
                __PYX_VERIFY_RETURN_INT_EXC(unsigned int, unsigned long, PyLong_AsUnsignedLong(x))
#ifdef HAVE_LONG_LONG
            } else if (sizeof(unsigned int) <= sizeof(unsigned PY_LONG_LONG)) {
                __PYX_VERIFY_RETURN_INT_EXC(unsigned int, unsigned PY_LONG_LONG, PyLong_AsUnsignedLongLong(x))
#endif
            }
        } else {
#if CYTHON_USE_PYLONG_INTERNALS
            const digit* digits = ((PyLongObject*)x)->ob_digit;
            switch (Py_SIZE(x)) {
                case  0: return (unsigned int) 0;
                case -1: __PYX_VERIFY_RETURN_INT(unsigned int, sdigit, (sdigit) (-(sdigit)digits[0]))
                case  1: __PYX_VERIFY_RETURN_INT(unsigned int,  digit, +digits[0])
                case -2:
                    if (8 * sizeof(unsigned int) - 1 > 1 * PyLong_SHIFT) {
                        if (8 * sizeof(unsigned long) > 2 * PyLong_SHIFT) {
                            __PYX_VERIFY_RETURN_INT(unsigned int, long, -(long) (((((unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0])))
                        } else if (8 * sizeof(unsigned int) - 1 > 2 * PyLong_SHIFT) {
                            return (unsigned int) (((unsigned int)-1)*(((((unsigned int)digits[1]) << PyLong_SHIFT) | (unsigned int)digits[0])));
                        }
                    }
                    break;
                case 2:
                    if (8 * sizeof(unsigned int) > 1 * PyLong_SHIFT) {
                        if (8 * sizeof(unsigned long) > 2 * PyLong_SHIFT) {
                            __PYX_VERIFY_RETURN_INT(unsigned int, unsigned long, (((((unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0])))
                        } else if (8 * sizeof(unsigned int) - 1 > 2 * PyLong_SHIFT) {
                            return (unsigned int) ((((((unsigned int)digits[1]) << PyLong_SHIFT) | (unsigned int)digits[0])));
                        }
                    }
                    break;
                case -3:
                    if (8 * sizeof(unsigned int) - 1 > 2 * PyLong_SHIFT) {
                        if (8 * sizeof(unsigned long) > 3 * PyLong_SHIFT) {
                            __PYX_VERIFY_RETURN_INT(unsigned int, long, -(long) (((((((unsigned long)digits[2]) << PyLong_SHIFT) | (unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0])))
                        } else if (8 * sizeof(unsigned int) - 1 > 3 * PyLong_SHIFT) {
                            return (unsigned int) (((unsigned int)-1)*(((((((unsigned int)digits[2]) << PyLong_SHIFT) | (unsigned int)digits[1]) << PyLong_SHIFT) | (unsigned int)digits[0])));
                        }
                    }
                    break;
                case 3:
                    if (8 * sizeof(unsigned int) > 2 * PyLong_SHIFT) {
                        if (8 * sizeof(unsigned long) > 3 * PyLong_SHIFT) {
                            __PYX_VERIFY_RETURN_INT(unsigned int, unsigned long, (((((((unsigned long)digits[2]) << PyLong_SHIFT) | (unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0])))
                        } else if (8 * sizeof(unsigned int) - 1 > 3 * PyLong_SHIFT) {
                            return (unsigned int) ((((((((unsigned int)digits[2]) << PyLong_SHIFT) | (unsigned int)digits[1]) << PyLong_SHIFT) | (unsigned int)digits[0])));
                        }
                    }
                    break;
                case -4:
                    if (8 * sizeof(unsigned int) - 1 > 3 * PyLong_SHIFT) {
                        if (8 * sizeof(unsigned long) > 4 * PyLong_SHIFT) {
                            __PYX_VERIFY_RETURN_INT(unsigned int, long, -(long) (((((((((unsigned long)digits[3]) << PyLong_SHIFT) | (unsigned long)digits[2]) << PyLong_SHIFT) | (unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0])))
                        } else if (8 * sizeof(unsigned int) - 1 > 4 * PyLong_SHIFT) {
                            return (unsigned int) (((unsigned int)-1)*(((((((((unsigned int)digits[3]) << PyLong_SHIFT) | (unsigned int)digits[2]) << PyLong_SHIFT) | (unsigned int)digits[1]) << PyLong_SHIFT) | (unsigned int)digits[0])));
                        }
                    }
                    break;
                case 4:
                    if (8 * sizeof(unsigned int) > 3 * PyLong_SHIFT) {
                        if (8 * sizeof(unsigned long) > 4 * PyLong_SHIFT) {
                            __PYX_VERIFY_RETURN_INT(unsigned int, unsigned long, (((((((((unsigned long)digits[3]) << PyLong_SHIFT) | (unsigned long)digits[2]) << PyLong_SHIFT) | (unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0])))
                        } else if (8 * sizeof(unsigned int) - 1 > 4 * PyLong_SHIFT) {
                            return (unsigned int) ((((((((((unsigned int)digits[3]) << PyLong_SHIFT) | (unsigned int)digits[2]) << PyLong_SHIFT) | (unsigned int)digits[1]) << PyLong_SHIFT) | (unsigned int)digits[0])));
                        }
                    }
                    break;
            }
#endif
            if (sizeof(unsigned int) <= sizeof(long)) {
                __PYX_VERIFY_RETURN_INT_EXC(unsigned int, long, PyLong_AsLong(x))
#ifdef HAVE_LONG_LONG
            } else if (sizeof(unsigned int) <= sizeof(PY_LONG_LONG)) {
                __PYX_VERIFY_RETURN_INT_EXC(unsigned int, PY_LONG_LONG, PyLong_AsLongLong(x))
#endif
            }
        }
        {
#if CYTHON_COMPILING_IN_PYPY && !defined(_PyLong_AsByteArray)
            PyErr_SetString(PyExc_RuntimeError,
                            "_PyLong_AsByteArray() not available in PyPy, cannot convert large numbers");
#else
            unsigned int val;
            PyObject *v = __Pyx_PyNumber_IntOrLong(x);
 #if PY_MAJOR_VERSION < 3
            if (likely(v) && !PyLong_Check(v)) {
                PyObject *tmp = v;
                v = PyNumber_Long(tmp);
                Py_DECREF(tmp);
            }
 #endif
            if (likely(v)) {
                int one = 1; int is_little = (int)*(unsigned char *)&one;
                unsigned char *bytes = (unsigned char *)&val;
                int ret = _PyLong_AsByteArray((PyLongObject *)v,
                                              bytes, sizeof(val),
                                              is_little, !is_unsigned);
                Py_DECREF(v);
                if (likely(!ret))
                    return val;
            }
#endif
            return (unsigned int) -1;
        }
    } else {
        unsigned int val;
        PyObject *tmp = __Pyx_PyNumber_IntOrLong(x);
        if (!tmp) return (unsigned int) -1;
        val = __Pyx_PyInt_As_unsigned_int(tmp);
        Py_DECREF(tmp);
        return val;
    }
raise_overflow:
    PyErr_SetString(PyExc_OverflowError,
        "value too large to convert to unsigned int");
    return (unsigned int) -1;
raise_neg_overflow:
    PyErr_SetString(PyExc_OverflowError,
        "can't convert negative value to unsigned int");
    return (unsigned int) -1;
}

/* Generator */
    static PyMethodDef __pyx_Generator_methods[] = {
    {"send", (PyCFunction) __Pyx_Coroutine_Send, METH_O,
     (char*) PyDoc_STR("send(arg) -> send 'arg' into generator,\nreturn next yielded value or raise StopIteration.")},
    {"throw", (PyCFunction) __Pyx_Coroutine_Throw, METH_VARARGS,
     (char*) PyDoc_STR("throw(typ[,val[,tb]]) -> raise exception in generator,\nreturn next yielded value or raise StopIteration.")},
    {"close", (PyCFunction) __Pyx_Coroutine_Close_Method, METH_NOARGS,
     (char*) PyDoc_STR("close() -> raise GeneratorExit inside generator.")},
    {0, 0, 0, 0}
};
static PyMemberDef __pyx_Generator_memberlist[] = {
    {(char *) "gi_running", T_BOOL, offsetof(__pyx_CoroutineObject, is_running), READONLY, NULL},
    {(char*) "gi_yieldfrom", T_OBJECT, offsetof(__pyx_CoroutineObject, yieldfrom), READONLY,
     (char*) PyDoc_STR("object being iterated by 'yield from', or None")},
    {(char*) "gi_code", T_OBJECT, offsetof(__pyx_CoroutineObject, gi_code), READONLY, NULL},
    {0, 0, 0, 0, 0}
};
static PyGetSetDef __pyx_Generator_getsets[] = {
    {(char *) "__name__", (getter)__Pyx_Coroutine_get_name, (setter)__Pyx_Coroutine_set_name,
     (char*) PyDoc_STR("name of the generator"), 0},
    {(char *) "__qualname__", (getter)__Pyx_Coroutine_get_qualname, (setter)__Pyx_Coroutine_set_qualname,
     (char*) PyDoc_STR("qualified name of the generator"), 0},
    {(char *) "gi_frame", (getter)__Pyx_Coroutine_get_frame, NULL,
     (char*) PyDoc_STR("Frame of the generator"), 0},
    {0, 0, 0, 0, 0}
};
static PyTypeObject __pyx_GeneratorType_type = {
    PyVarObject_HEAD_INIT(0, 0)
    "generator",
    sizeof(__pyx_CoroutineObject),
    0,
    (destructor) __Pyx_Coroutine_dealloc,
    0,
    0,
    0,
    0,
    0,
    0,
    0,
    0,
    0,
    0,
    0,
    0,
    0,
    0,
    Py_TPFLAGS_DEFAULT | Py_TPFLAGS_HAVE_GC | Py_TPFLAGS_HAVE_FINALIZE,
    0,
    (traverseproc) __Pyx_Coroutine_traverse,
    0,
    0,
    offsetof(__pyx_CoroutineObject, gi_weakreflist),
    0,
    (iternextfunc) __Pyx_Generator_Next,
    __pyx_Generator_methods,
    __pyx_Generator_memberlist,
    __pyx_Generator_getsets,
    0,
    0,
    0,
    0,
    0,
    0,
    0,
    0,
    0,
    0,
    0,
    0,
    0,
    0,
    0,
#if CYTHON_USE_TP_FINALIZE
    0,
#else
    __Pyx_Coroutine_del,
#endif
    0,
#if CYTHON_USE_TP_FINALIZE
    __Pyx_Coroutine_del,
#elif PY_VERSION_HEX >= 0x030400a1
    0,
#endif
#if PY_VERSION_HEX >= 0x030800b1
    0,
#endif
#if PY_VERSION_HEX >= 0x030800b4 && PY_VERSION_HEX < 0x03090000
    0,
#endif
};
static int __pyx_Generator_init(void) {
    __pyx_GeneratorType_type.tp_getattro = __Pyx_PyObject_GenericGetAttrNoDict;
    __pyx_GeneratorType_type.tp_iter = PyObject_SelfIter;
    __pyx_GeneratorType = __Pyx_FetchCommonType(&__pyx_GeneratorType_type);
    if (unlikely(!__pyx_GeneratorType)) {
        return -1;
    }
    return 0;
}

/* AsyncGeneratorInitFinalizer */
    #if PY_VERSION_HEX < 0x030600B0
static int __Pyx_async_gen_init_hooks(__pyx_PyAsyncGenObject *o) {
#if 0
    PyThreadState *tstate;
    PyObject *finalizer;
    PyObject *firstiter;
#endif
    if (likely(o->ag_hooks_inited)) {
        return 0;
    }
    o->ag_hooks_inited = 1;
#if 0
    tstate = __Pyx_PyThreadState_Current;
    finalizer = tstate->async_gen_finalizer;
    if (finalizer) {
        Py_INCREF(finalizer);
        o->ag_finalizer = finalizer;
    }
    firstiter = tstate->async_gen_firstiter;
    if (firstiter) {
        PyObject *res;
        Py_INCREF(firstiter);
        res = __Pyx_PyObject_CallOneArg(firstiter, (PyObject*)o);
        Py_DECREF(firstiter);
        if (res == NULL) {
            return 1;
        }
        Py_DECREF(res);
    }
#endif
    return 0;
}
#endif

/* AsyncGenerator */
    PyDoc_STRVAR(__Pyx_async_gen_send_doc,
"send(arg) -> send 'arg' into generator,\n\
return next yielded value or raise StopIteration.");
PyDoc_STRVAR(__Pyx_async_gen_close_doc,
"close() -> raise GeneratorExit inside generator.");
PyDoc_STRVAR(__Pyx_async_gen_throw_doc,
"throw(typ[,val[,tb]]) -> raise exception in generator,\n\
return next yielded value or raise StopIteration.");
PyDoc_STRVAR(__Pyx_async_gen_await_doc,
"__await__() -> return a representation that can be passed into the 'await' expression.");
static PyObject *__Pyx_async_gen_asend_new(__pyx_PyAsyncGenObject *, PyObject *);
static PyObject *__Pyx_async_gen_athrow_new(__pyx_PyAsyncGenObject *, PyObject *);
static const char *__Pyx_NON_INIT_CORO_MSG = "can't send non-None value to a just-started coroutine";
static const char *__Pyx_ASYNC_GEN_IGNORED_EXIT_MSG = "async generator ignored GeneratorExit";
typedef enum {
    __PYX_AWAITABLE_STATE_INIT,
    __PYX_AWAITABLE_STATE_ITER,
    __PYX_AWAITABLE_STATE_CLOSED,
} __pyx_AwaitableState;
typedef struct {
    PyObject_HEAD
    __pyx_PyAsyncGenObject *ags_gen;
    PyObject *ags_sendval;
    __pyx_AwaitableState ags_state;
} __pyx_PyAsyncGenASend;
typedef struct {
    PyObject_HEAD
    __pyx_PyAsyncGenObject *agt_gen;
    PyObject *agt_args;
    __pyx_AwaitableState agt_state;
} __pyx_PyAsyncGenAThrow;
typedef struct {
    PyObject_HEAD
    PyObject *agw_val;
} __pyx__PyAsyncGenWrappedValue;
#ifndef _PyAsyncGen_MAXFREELIST
#define _PyAsyncGen_MAXFREELIST 80
#endif
static __pyx__PyAsyncGenWrappedValue *__Pyx_ag_value_freelist[_PyAsyncGen_MAXFREELIST];
static int __Pyx_ag_value_freelist_free = 0;
static __pyx_PyAsyncGenASend *__Pyx_ag_asend_freelist[_PyAsyncGen_MAXFREELIST];
static int __Pyx_ag_asend_freelist_free = 0;
#define __pyx__PyAsyncGenWrappedValue_CheckExact(o)\
                    (Py_TYPE(o) == __pyx__PyAsyncGenWrappedValueType)
static int
__Pyx_async_gen_traverse(__pyx_PyAsyncGenObject *gen, visitproc visit, void *arg)
{
    Py_VISIT(gen->ag_finalizer);
    return __Pyx_Coroutine_traverse((__pyx_CoroutineObject*)gen, visit, arg);
}
static PyObject *
__Pyx_async_gen_repr(__pyx_CoroutineObject *o)
{
    return PyUnicode_FromFormat("<async_generator object %S at %p>",
                                o->gi_qualname ? o->gi_qualname : Py_None, o);
}
#if PY_VERSION_HEX >= 0x030600B0
static int
__Pyx_async_gen_init_hooks(__pyx_PyAsyncGenObject *o)
{
    PyThreadState *tstate;
    PyObject *finalizer;
    PyObject *firstiter;
    if (o->ag_hooks_inited) {
        return 0;
    }
    o->ag_hooks_inited = 1;
    tstate = __Pyx_PyThreadState_Current;
    finalizer = tstate->async_gen_finalizer;
    if (finalizer) {
        Py_INCREF(finalizer);
        o->ag_finalizer = finalizer;
    }
    firstiter = tstate->async_gen_firstiter;
    if (firstiter) {
        PyObject *res;
#if CYTHON_UNPACK_METHODS
        PyObject *self;
#endif
        Py_INCREF(firstiter);
#if CYTHON_UNPACK_METHODS
        if (likely(PyMethod_Check(firstiter)) && likely((self = PyMethod_GET_SELF(firstiter)) != NULL)) {
            PyObject *function = PyMethod_GET_FUNCTION(firstiter);
            res = __Pyx_PyObject_Call2Args(function, self, (PyObject*)o);
        } else
#endif
        res = __Pyx_PyObject_CallOneArg(firstiter, (PyObject*)o);
        Py_DECREF(firstiter);
        if (unlikely(res == NULL)) {
            return 1;
        }
        Py_DECREF(res);
    }
    return 0;
}
#endif
static PyObject *
__Pyx_async_gen_anext(PyObject *g)
{
    __pyx_PyAsyncGenObject *o = (__pyx_PyAsyncGenObject*) g;
    if (__Pyx_async_gen_init_hooks(o)) {
        return NULL;
    }
    return __Pyx_async_gen_asend_new(o, NULL);
}
static PyObject *
__Pyx_async_gen_anext_method(PyObject *g, CYTHON_UNUSED PyObject *arg) {
    return __Pyx_async_gen_anext(g);
}
static PyObject *
__Pyx_async_gen_asend(__pyx_PyAsyncGenObject *o, PyObject *arg)
{
    if (__Pyx_async_gen_init_hooks(o)) {
        return NULL;
    }
    return __Pyx_async_gen_asend_new(o, arg);
}
static PyObject *
__Pyx_async_gen_aclose(__pyx_PyAsyncGenObject *o, CYTHON_UNUSED PyObject *arg)
{
    if (__Pyx_async_gen_init_hooks(o)) {
        return NULL;
    }
    return __Pyx_async_gen_athrow_new(o, NULL);
}
static PyObject *
__Pyx_async_gen_athrow(__pyx_PyAsyncGenObject *o, PyObject *args)
{
    if (__Pyx_async_gen_init_hooks(o)) {
        return NULL;
    }
    return __Pyx_async_gen_athrow_new(o, args);
}
static PyObject *
__Pyx_async_gen_self_method(PyObject *g, CYTHON_UNUSED PyObject *arg) {
    return __Pyx_NewRef(g);
}
static PyGetSetDef __Pyx_async_gen_getsetlist[] = {
    {(char*) "__name__", (getter)__Pyx_Coroutine_get_name, (setter)__Pyx_Coroutine_set_name,
     (char*) PyDoc_STR("name of the async generator"), 0},
    {(char*) "__qualname__", (getter)__Pyx_Coroutine_get_qualname, (setter)__Pyx_Coroutine_set_qualname,
     (char*) PyDoc_STR("qualified name of the async generator"), 0},
    {0, 0, 0, 0, 0}
};
static PyMemberDef __Pyx_async_gen_memberlist[] = {
    {(char*) "ag_running", T_BOOL,   offsetof(__pyx_CoroutineObject, is_running), READONLY, NULL},
    {(char*) "ag_await", T_OBJECT, offsetof(__pyx_CoroutineObject, yieldfrom), READONLY,
     (char*) PyDoc_STR("object being awaited on, or None")},
    {0, 0, 0, 0, 0}
};
PyDoc_STRVAR(__Pyx_async_aclose_doc,
"aclose() -> raise GeneratorExit inside generator.");
PyDoc_STRVAR(__Pyx_async_asend_doc,
"asend(v) -> send 'v' in generator.");
PyDoc_STRVAR(__Pyx_async_athrow_doc,
"athrow(typ[,val[,tb]]) -> raise exception in generator.");
PyDoc_STRVAR(__Pyx_async_aiter_doc,
"__aiter__(v) -> return an asynchronous iterator.");
PyDoc_STRVAR(__Pyx_async_anext_doc,
"__anext__(v) -> continue asynchronous iteration and return the next element.");
static PyMethodDef __Pyx_async_gen_methods[] = {
    {"asend", (PyCFunction)__Pyx_async_gen_asend, METH_O, __Pyx_async_asend_doc},
    {"athrow",(PyCFunction)__Pyx_async_gen_athrow, METH_VARARGS, __Pyx_async_athrow_doc},
    {"aclose", (PyCFunction)__Pyx_async_gen_aclose, METH_NOARGS, __Pyx_async_aclose_doc},
    {"__aiter__", (PyCFunction)__Pyx_async_gen_self_method, METH_NOARGS, __Pyx_async_aiter_doc},
    {"__anext__", (PyCFunction)__Pyx_async_gen_anext_method, METH_NOARGS, __Pyx_async_anext_doc},
    {0, 0, 0, 0}
};
#if CYTHON_USE_ASYNC_SLOTS
static __Pyx_PyAsyncMethodsStruct __Pyx_async_gen_as_async = {
    0,
    PyObject_SelfIter,
    (unaryfunc)__Pyx_async_gen_anext
};
#endif
static PyTypeObject __pyx_AsyncGenType_type = {
    PyVarObject_HEAD_INIT(0, 0)
    "async_generator",
    sizeof(__pyx_PyAsyncGenObject),
    0,
    (destructor)__Pyx_Coroutine_dealloc,
    0,
    0,
    0,
#if CYTHON_USE_ASYNC_SLOTS
    &__Pyx_async_gen_as_async,
#else
    0,
#endif
    (reprfunc)__Pyx_async_gen_repr,
    0,
    0,
    0,
    0,
    0,
    0,
    0,
    0,
    0,
    Py_TPFLAGS_DEFAULT | Py_TPFLAGS_HAVE_GC |
        Py_TPFLAGS_HAVE_FINALIZE,
    0,
    (traverseproc)__Pyx_async_gen_traverse,
    0,
#if CYTHON_USE_ASYNC_SLOTS && CYTHON_COMPILING_IN_CPYTHON && PY_MAJOR_VERSION >= 3 && PY_VERSION_HEX < 0x030500B1
    __Pyx_Coroutine_compare,
#else
    0,
#endif
    offsetof(__pyx_CoroutineObject, gi_weakreflist),
    0,
    0,
    __Pyx_async_gen_methods,
    __Pyx_async_gen_memberlist,
    __Pyx_async_gen_getsetlist,
    0,
    0,
    0,
    0,
    0,
    0,
    0,
    0,
    0,
    0,
    0,
    0,
    0,
    0,
    0,
#if CYTHON_USE_TP_FINALIZE
    0,
#else
    __Pyx_Coroutine_del,
#endif
    0,
#if CYTHON_USE_TP_FINALIZE
    __Pyx_Coroutine_del,
#elif PY_VERSION_HEX >= 0x030400a1
    0,
#endif
#if PY_VERSION_HEX >= 0x030800b1
    0,
#endif
#if PY_VERSION_HEX >= 0x030800b4 && PY_VERSION_HEX < 0x03090000
    0,
#endif
};
static int
__Pyx_PyAsyncGen_ClearFreeLists(void)
{
    int ret = __Pyx_ag_value_freelist_free + __Pyx_ag_asend_freelist_free;
    while (__Pyx_ag_value_freelist_free) {
        __pyx__PyAsyncGenWrappedValue *o;
        o = __Pyx_ag_value_freelist[--__Pyx_ag_value_freelist_free];
        assert(__pyx__PyAsyncGenWrappedValue_CheckExact(o));
        PyObject_GC_Del(o);
    }
    while (__Pyx_ag_asend_freelist_free) {
        __pyx_PyAsyncGenASend *o;
        o = __Pyx_ag_asend_freelist[--__Pyx_ag_asend_freelist_free];
        assert(Py_TYPE(o) == __pyx__PyAsyncGenASendType);
        PyObject_GC_Del(o);
    }
    return ret;
}
static void
__Pyx_PyAsyncGen_Fini(void)
{
    __Pyx_PyAsyncGen_ClearFreeLists();
}
static PyObject *
__Pyx_async_gen_unwrap_value(__pyx_PyAsyncGenObject *gen, PyObject *result)
{
    if (result == NULL) {
        PyObject *exc_type = PyErr_Occurred();
        if (!exc_type) {
            PyErr_SetNone(__Pyx_PyExc_StopAsyncIteration);
            gen->ag_closed = 1;
        } else if (__Pyx_PyErr_GivenExceptionMatches2(exc_type, __Pyx_PyExc_StopAsyncIteration, PyExc_GeneratorExit)) {
            gen->ag_closed = 1;
        }
        return NULL;
    }
    if (__pyx__PyAsyncGenWrappedValue_CheckExact(result)) {
        __Pyx_ReturnWithStopIteration(((__pyx__PyAsyncGenWrappedValue*)result)->agw_val);
        Py_DECREF(result);
        return NULL;
    }
    return result;
}
static void
__Pyx_async_gen_asend_dealloc(__pyx_PyAsyncGenASend *o)
{
    PyObject_GC_UnTrack((PyObject *)o);
    Py_CLEAR(o->ags_gen);
    Py_CLEAR(o->ags_sendval);
    if (__Pyx_ag_asend_freelist_free < _PyAsyncGen_MAXFREELIST) {
        assert(__pyx_PyAsyncGenASend_CheckExact(o));
        __Pyx_ag_asend_freelist[__Pyx_ag_asend_freelist_free++] = o;
    } else {
        PyObject_GC_Del(o);
    }
}
static int
__Pyx_async_gen_asend_traverse(__pyx_PyAsyncGenASend *o, visitproc visit, void *arg)
{
    Py_VISIT(o->ags_gen);
    Py_VISIT(o->ags_sendval);
    return 0;
}
static PyObject *
__Pyx_async_gen_asend_send(PyObject *g, PyObject *arg)
{
    __pyx_PyAsyncGenASend *o = (__pyx_PyAsyncGenASend*) g;
    PyObject *result;
    if (unlikely(o->ags_state == __PYX_AWAITABLE_STATE_CLOSED)) {
        PyErr_SetNone(PyExc_StopIteration);
        return NULL;
    }
    if (o->ags_state == __PYX_AWAITABLE_STATE_INIT) {
        if (arg == NULL || arg == Py_None) {
            arg = o->ags_sendval ? o->ags_sendval : Py_None;
        }
        o->ags_state = __PYX_AWAITABLE_STATE_ITER;
    }
    result = __Pyx_Coroutine_Send((PyObject*)o->ags_gen, arg);
    result = __Pyx_async_gen_unwrap_value(o->ags_gen, result);
    if (result == NULL) {
        o->ags_state = __PYX_AWAITABLE_STATE_CLOSED;
    }
    return result;
}
static CYTHON_INLINE PyObject *
__Pyx_async_gen_asend_iternext(PyObject *o)
{
    return __Pyx_async_gen_asend_send(o, Py_None);
}
static PyObject *
__Pyx_async_gen_asend_throw(__pyx_PyAsyncGenASend *o, PyObject *args)
{
    PyObject *result;
    if (unlikely(o->ags_state == __PYX_AWAITABLE_STATE_CLOSED)) {
        PyErr_SetNone(PyExc_StopIteration);
        return NULL;
    }
    result = __Pyx_Coroutine_Throw((PyObject*)o->ags_gen, args);
    result = __Pyx_async_gen_unwrap_value(o->ags_gen, result);
    if (result == NULL) {
        o->ags_state = __PYX_AWAITABLE_STATE_CLOSED;
    }
    return result;
}
static PyObject *
__Pyx_async_gen_asend_close(PyObject *g, CYTHON_UNUSED PyObject *args)
{
    __pyx_PyAsyncGenASend *o = (__pyx_PyAsyncGenASend*) g;
    o->ags_state = __PYX_AWAITABLE_STATE_CLOSED;
    Py_RETURN_NONE;
}
static PyMethodDef __Pyx_async_gen_asend_methods[] = {
    {"send", (PyCFunction)__Pyx_async_gen_asend_send, METH_O, __Pyx_async_gen_send_doc},
    {"throw", (PyCFunction)__Pyx_async_gen_asend_throw, METH_VARARGS, __Pyx_async_gen_throw_doc},
    {"close", (PyCFunction)__Pyx_async_gen_asend_close, METH_NOARGS, __Pyx_async_gen_close_doc},
    {"__await__", (PyCFunction)__Pyx_async_gen_self_method, METH_NOARGS, __Pyx_async_gen_await_doc},
    {0, 0, 0, 0}
};
#if CYTHON_USE_ASYNC_SLOTS
static __Pyx_PyAsyncMethodsStruct __Pyx_async_gen_asend_as_async = {
    PyObject_SelfIter,
    0,
    0
};
#endif
static PyTypeObject __pyx__PyAsyncGenASendType_type = {
    PyVarObject_HEAD_INIT(0, 0)
    "async_generator_asend",
    sizeof(__pyx_PyAsyncGenASend),
    0,
    (destructor)__Pyx_async_gen_asend_dealloc,
    0,
    0,
    0,
#if CYTHON_USE_ASYNC_SLOTS
    &__Pyx_async_gen_asend_as_async,
#else
    0,
#endif
    0,
    0,
    0,
    0,
    0,
    0,
    0,
    0,
    0,
    0,
    Py_TPFLAGS_DEFAULT | Py_TPFLAGS_HAVE_GC,
    0,
    (traverseproc)__Pyx_async_gen_asend_traverse,
    0,
#if CYTHON_USE_ASYNC_SLOTS && CYTHON_COMPILING_IN_CPYTHON && PY_MAJOR_VERSION >= 3 && PY_VERSION_HEX < 0x030500B1
    __Pyx_Coroutine_compare,
#else
    0,
#endif
    0,
    PyObject_SelfIter,
    (iternextfunc)__Pyx_async_gen_asend_iternext,
    __Pyx_async_gen_asend_methods,
    0,
    0,
    0,
    0,
    0,
    0,
    0,
    0,
    0,
    0,
    0,
    0,
    0,
    0,
    0,
    0,
    0,
    0,
    0,
#if PY_VERSION_HEX >= 0x030400a1
    0,
#endif
#if PY_VERSION_HEX >= 0x030800b1
    0,
#endif
#if PY_VERSION_HEX >= 0x030800b4 && PY_VERSION_HEX < 0x03090000
    0,
#endif
};
static PyObject *
__Pyx_async_gen_asend_new(__pyx_PyAsyncGenObject *gen, PyObject *sendval)
{
    __pyx_PyAsyncGenASend *o;
    if (__Pyx_ag_asend_freelist_free) {
        __Pyx_ag_asend_freelist_free--;
        o = __Pyx_ag_asend_freelist[__Pyx_ag_asend_freelist_free];
        _Py_NewReference((PyObject *)o);
    } else {
        o = PyObject_GC_New(__pyx_PyAsyncGenASend, __pyx__PyAsyncGenASendType);
        if (o == NULL) {
            return NULL;
        }
    }
    Py_INCREF(gen);
    o->ags_gen = gen;
    Py_XINCREF(sendval);
    o->ags_sendval = sendval;
    o->ags_state = __PYX_AWAITABLE_STATE_INIT;
    PyObject_GC_Track((PyObject*)o);
    return (PyObject*)o;
}
static void
__Pyx_async_gen_wrapped_val_dealloc(__pyx__PyAsyncGenWrappedValue *o)
{
    PyObject_GC_UnTrack((PyObject *)o);
    Py_CLEAR(o->agw_val);
    if (__Pyx_ag_value_freelist_free < _PyAsyncGen_MAXFREELIST) {
        assert(__pyx__PyAsyncGenWrappedValue_CheckExact(o));
        __Pyx_ag_value_freelist[__Pyx_ag_value_freelist_free++] = o;
    } else {
        PyObject_GC_Del(o);
    }
}
static int
__Pyx_async_gen_wrapped_val_traverse(__pyx__PyAsyncGenWrappedValue *o,
                                     visitproc visit, void *arg)
{
    Py_VISIT(o->agw_val);
    return 0;
}
static PyTypeObject __pyx__PyAsyncGenWrappedValueType_type = {
    PyVarObject_HEAD_INIT(0, 0)
    "async_generator_wrapped_value",
    sizeof(__pyx__PyAsyncGenWrappedValue),
    0,
    (destructor)__Pyx_async_gen_wrapped_val_dealloc,
    0,
    0,
    0,
    0,
    0,
    0,
    0,
    0,
    0,
    0,
    0,
    0,
    0,
    0,
    Py_TPFLAGS_DEFAULT | Py_TPFLAGS_HAVE_GC,
    0,
    (traverseproc)__Pyx_async_gen_wrapped_val_traverse,
    0,
    0,
    0,
    0,
    0,
    0,
    0,
    0,
    0,
    0,
    0,
    0,
    0,
    0,
    0,
    0,
    0,
    0,
    0,
    0,
    0,
    0,
    0,
    0,
    0,
#if PY_VERSION_HEX >= 0x030400a1
    0,
#endif
#if PY_VERSION_HEX >= 0x030800b1
    0,
#endif
#if PY_VERSION_HEX >= 0x030800b4 && PY_VERSION_HEX < 0x03090000
    0,
#endif
};
static PyObject *
__Pyx__PyAsyncGenValueWrapperNew(PyObject *val)
{
    __pyx__PyAsyncGenWrappedValue *o;
    assert(val);
    if (__Pyx_ag_value_freelist_free) {
        __Pyx_ag_value_freelist_free--;
        o = __Pyx_ag_value_freelist[__Pyx_ag_value_freelist_free];
        assert(__pyx__PyAsyncGenWrappedValue_CheckExact(o));
        _Py_NewReference((PyObject*)o);
    } else {
        o = PyObject_GC_New(__pyx__PyAsyncGenWrappedValue, __pyx__PyAsyncGenWrappedValueType);
        if (unlikely(!o)) {
            Py_DECREF(val);
            return NULL;
        }
    }
    o->agw_val = val;
    PyObject_GC_Track((PyObject*)o);
    return (PyObject*)o;
}
static void
__Pyx_async_gen_athrow_dealloc(__pyx_PyAsyncGenAThrow *o)
{
    PyObject_GC_UnTrack((PyObject *)o);
    Py_CLEAR(o->agt_gen);
    Py_CLEAR(o->agt_args);
    PyObject_GC_Del(o);
}
static int
__Pyx_async_gen_athrow_traverse(__pyx_PyAsyncGenAThrow *o, visitproc visit, void *arg)
{
    Py_VISIT(o->agt_gen);
    Py_VISIT(o->agt_args);
    return 0;
}
static PyObject *
__Pyx_async_gen_athrow_send(__pyx_PyAsyncGenAThrow *o, PyObject *arg)
{
    __pyx_CoroutineObject *gen = (__pyx_CoroutineObject*)o->agt_gen;
    PyObject *retval;
    if (o->agt_state == __PYX_AWAITABLE_STATE_CLOSED) {
        PyErr_SetNone(PyExc_StopIteration);
        return NULL;
    }
    if (o->agt_state == __PYX_AWAITABLE_STATE_INIT) {
        if (o->agt_gen->ag_closed) {
            PyErr_SetNone(PyExc_StopIteration);
            return NULL;
        }
        if (arg != Py_None) {
            PyErr_SetString(PyExc_RuntimeError, __Pyx_NON_INIT_CORO_MSG);
            return NULL;
        }
        o->agt_state = __PYX_AWAITABLE_STATE_ITER;
        if (o->agt_args == NULL) {
            o->agt_gen->ag_closed = 1;
            retval = __Pyx__Coroutine_Throw((PyObject*)gen,
                                /* Do not close generator when
                                   PyExc_GeneratorExit is passed */
                                PyExc_GeneratorExit, NULL, NULL, NULL, 0);
            if (retval && __pyx__PyAsyncGenWrappedValue_CheckExact(retval)) {
                Py_DECREF(retval);
                goto yield_close;
            }
        } else {
            PyObject *typ;
            PyObject *tb = NULL;
            PyObject *val = NULL;
            if (!PyArg_UnpackTuple(o->agt_args, "athrow", 1, 3,
                                   &typ, &val, &tb)) {
                return NULL;
            }
            retval = __Pyx__Coroutine_Throw((PyObject*)gen,
                                typ, val, tb, o->agt_args, 0);
            retval = __Pyx_async_gen_unwrap_value(o->agt_gen, retval);
        }
        if (retval == NULL) {
            goto check_error;
        }
        return retval;
    }
    assert (o->agt_state == __PYX_AWAITABLE_STATE_ITER);
    retval = __Pyx_Coroutine_Send((PyObject *)gen, arg);
    if (o->agt_args) {
        return __Pyx_async_gen_unwrap_value(o->agt_gen, retval);
    } else {
        if (retval) {
            if (__pyx__PyAsyncGenWrappedValue_CheckExact(retval)) {
                Py_DECREF(retval);
                goto yield_close;
            }
            else {
                return retval;
            }
        }
        else {
            goto check_error;
        }
    }
yield_close:
    PyErr_SetString(
        PyExc_RuntimeError, __Pyx_ASYNC_GEN_IGNORED_EXIT_MSG);
    return NULL;
check_error:
    if (PyErr_ExceptionMatches(__Pyx_PyExc_StopAsyncIteration)) {
        o->agt_state = __PYX_AWAITABLE_STATE_CLOSED;
        if (o->agt_args == NULL) {
            PyErr_Clear();
            PyErr_SetNone(PyExc_StopIteration);
        }
    }
    else if (PyErr_ExceptionMatches(PyExc_GeneratorExit)) {
        o->agt_state = __PYX_AWAITABLE_STATE_CLOSED;
        PyErr_Clear();
        PyErr_SetNone(PyExc_StopIteration);
    }
    return NULL;
}
static PyObject *
__Pyx_async_gen_athrow_throw(__pyx_PyAsyncGenAThrow *o, PyObject *args)
{
    PyObject *retval;
    if (o->agt_state == __PYX_AWAITABLE_STATE_INIT) {
        PyErr_SetString(PyExc_RuntimeError, __Pyx_NON_INIT_CORO_MSG);
        return NULL;
    }
    if (o->agt_state == __PYX_AWAITABLE_STATE_CLOSED) {
        PyErr_SetNone(PyExc_StopIteration);
        return NULL;
    }
    retval = __Pyx_Coroutine_Throw((PyObject*)o->agt_gen, args);
    if (o->agt_args) {
        return __Pyx_async_gen_unwrap_value(o->agt_gen, retval);
    } else {
        if (retval && __pyx__PyAsyncGenWrappedValue_CheckExact(retval)) {
            Py_DECREF(retval);
            PyErr_SetString(PyExc_RuntimeError, __Pyx_ASYNC_GEN_IGNORED_EXIT_MSG);
            return NULL;
        }
        return retval;
    }
}
static PyObject *
__Pyx_async_gen_athrow_iternext(__pyx_PyAsyncGenAThrow *o)
{
    return __Pyx_async_gen_athrow_send(o, Py_None);
}
static PyObject *
__Pyx_async_gen_athrow_close(PyObject *g, CYTHON_UNUSED PyObject *args)
{
    __pyx_PyAsyncGenAThrow *o = (__pyx_PyAsyncGenAThrow*) g;
    o->agt_state = __PYX_AWAITABLE_STATE_CLOSED;
    Py_RETURN_NONE;
}
static PyMethodDef __Pyx_async_gen_athrow_methods[] = {
    {"send", (PyCFunction)__Pyx_async_gen_athrow_send, METH_O, __Pyx_async_gen_send_doc},
    {"throw", (PyCFunction)__Pyx_async_gen_athrow_throw, METH_VARARGS, __Pyx_async_gen_throw_doc},
    {"close", (PyCFunction)__Pyx_async_gen_athrow_close, METH_NOARGS, __Pyx_async_gen_close_doc},
    {"__await__", (PyCFunction)__Pyx_async_gen_self_method, METH_NOARGS, __Pyx_async_gen_await_doc},
    {0, 0, 0, 0}
};
#if CYTHON_USE_ASYNC_SLOTS
static __Pyx_PyAsyncMethodsStruct __Pyx_async_gen_athrow_as_async = {
    PyObject_SelfIter,
    0,
    0
};
#endif
static PyTypeObject __pyx__PyAsyncGenAThrowType_type = {
    PyVarObject_HEAD_INIT(0, 0)
    "async_generator_athrow",
    sizeof(__pyx_PyAsyncGenAThrow),
    0,
    (destructor)__Pyx_async_gen_athrow_dealloc,
    0,
    0,
    0,
#if CYTHON_USE_ASYNC_SLOTS
    &__Pyx_async_gen_athrow_as_async,
#else
    0,
#endif
    0,
    0,
    0,
    0,
    0,
    0,
    0,
    0,
    0,
    0,
    Py_TPFLAGS_DEFAULT | Py_TPFLAGS_HAVE_GC,
    0,
    (traverseproc)__Pyx_async_gen_athrow_traverse,
    0,
#if CYTHON_USE_ASYNC_SLOTS && CYTHON_COMPILING_IN_CPYTHON && PY_MAJOR_VERSION >= 3 && PY_VERSION_HEX < 0x030500B1
    __Pyx_Coroutine_compare,
#else
    0,
#endif
    0,
    PyObject_SelfIter,
    (iternextfunc)__Pyx_async_gen_athrow_iternext,
    __Pyx_async_gen_athrow_methods,
    0,
    0,
    0,
    0,
    0,
    0,
    0,
    0,
    0,
    0,
    0,
    0,
    0,
    0,
    0,
    0,
    0,
    0,
    0,
#if PY_VERSION_HEX >= 0x030400a1
    0,
#endif
#if PY_VERSION_HEX >= 0x030800b1
    0,
#endif
#if PY_VERSION_HEX >= 0x030800b4 && PY_VERSION_HEX < 0x03090000
    0,
#endif
};
static PyObject *
__Pyx_async_gen_athrow_new(__pyx_PyAsyncGenObject *gen, PyObject *args)
{
    __pyx_PyAsyncGenAThrow *o;
    o = PyObject_GC_New(__pyx_PyAsyncGenAThrow, __pyx__PyAsyncGenAThrowType);
    if (o == NULL) {
        return NULL;
    }
    o->agt_gen = gen;
    o->agt_args = args;
    o->agt_state = __PYX_AWAITABLE_STATE_INIT;
    Py_INCREF(gen);
    Py_XINCREF(args);
    PyObject_GC_Track((PyObject*)o);
    return (PyObject*)o;
}
static int __pyx_AsyncGen_init(void) {
    __pyx_AsyncGenType_type.tp_getattro = __Pyx_PyObject_GenericGetAttrNoDict;
    __pyx__PyAsyncGenWrappedValueType_type.tp_getattro = __Pyx_PyObject_GenericGetAttrNoDict;
    __pyx__PyAsyncGenAThrowType_type.tp_getattro = __Pyx_PyObject_GenericGetAttrNoDict;
    __pyx__PyAsyncGenASendType_type.tp_getattro = __Pyx_PyObject_GenericGetAttrNoDict;
    __pyx_AsyncGenType = __Pyx_FetchCommonType(&__pyx_AsyncGenType_type);
    if (unlikely(!__pyx_AsyncGenType))
        return -1;
    __pyx__PyAsyncGenAThrowType = __Pyx_FetchCommonType(&__pyx__PyAsyncGenAThrowType_type);
    if (unlikely(!__pyx__PyAsyncGenAThrowType))
        return -1;
    __pyx__PyAsyncGenWrappedValueType = __Pyx_FetchCommonType(&__pyx__PyAsyncGenWrappedValueType_type);
    if (unlikely(!__pyx__PyAsyncGenWrappedValueType))
        return -1;
    __pyx__PyAsyncGenASendType = __Pyx_FetchCommonType(&__pyx__PyAsyncGenASendType_type);
    if (unlikely(!__pyx__PyAsyncGenASendType))
        return -1;
    return 0;
}

/* AsyncGen */
    

/* CheckBinaryVersion */
    static int __Pyx_check_binary_version(void) {
    char ctversion[4], rtversion[4];
    PyOS_snprintf(ctversion, 4, "%d.%d", PY_MAJOR_VERSION, PY_MINOR_VERSION);
    PyOS_snprintf(rtversion, 4, "%s", Py_GetVersion());
    if (ctversion[0] != rtversion[0] || ctversion[2] != rtversion[2]) {
        char message[200];
        PyOS_snprintf(message, sizeof(message),
                      "compiletime version %s of module '%.100s' "
                      "does not match runtime version %s",
                      ctversion, __Pyx_MODULE_NAME, rtversion);
        return PyErr_WarnEx(NULL, message, 1);
    }
    return 0;
}

/* VoidPtrExport */
    static int __Pyx_ExportVoidPtr(PyObject *name, void *p, const char *sig) {
    PyObject *d;
    PyObject *cobj = 0;
    d = PyDict_GetItem(__pyx_d, __pyx_n_s_pyx_capi);
    Py_XINCREF(d);
    if (!d) {
        d = PyDict_New();
        if (!d)
            goto bad;
        if (__Pyx_PyObject_SetAttrStr(__pyx_m, __pyx_n_s_pyx_capi, d) < 0)
            goto bad;
    }
#if PY_VERSION_HEX >= 0x02070000
    cobj = PyCapsule_New(p, sig, 0);
#else
    cobj = PyCObject_FromVoidPtrAndDesc(p, (void *)sig, 0);
#endif
    if (!cobj)
        goto bad;
    if (PyDict_SetItem(d, name, cobj) < 0)
        goto bad;
    Py_DECREF(cobj);
    Py_DECREF(d);
    return 0;
bad:
    Py_XDECREF(cobj);
    Py_XDECREF(d);
    return -1;
}

/* FunctionExport */
    static int __Pyx_ExportFunction(const char *name, void (*f)(void), const char *sig) {
    PyObject *d = 0;
    PyObject *cobj = 0;
    union {
        void (*fp)(void);
        void *p;
    } tmp;
    d = PyObject_GetAttrString(__pyx_m, (char *)"__pyx_capi__");
    if (!d) {
        PyErr_Clear();
        d = PyDict_New();
        if (!d)
            goto bad;
        Py_INCREF(d);
        if (PyModule_AddObject(__pyx_m, (char *)"__pyx_capi__", d) < 0)
            goto bad;
    }
    tmp.fp = f;
#if PY_VERSION_HEX >= 0x02070000
    cobj = PyCapsule_New(tmp.p, sig, 0);
#else
    cobj = PyCObject_FromVoidPtrAndDesc(tmp.p, (void *)sig, 0);
#endif
    if (!cobj)
        goto bad;
    if (PyDict_SetItemString(d, name, cobj) < 0)
        goto bad;
    Py_DECREF(cobj);
    Py_DECREF(d);
    return 0;
bad:
    Py_XDECREF(cobj);
    Py_XDECREF(d);
    return -1;
}

/* InitStrings */
    static int __Pyx_InitStrings(__Pyx_StringTabEntry *t) {
    while (t->p) {
        #if PY_MAJOR_VERSION < 3
        if (t->is_unicode) {
            *t->p = PyUnicode_DecodeUTF8(t->s, t->n - 1, NULL);
        } else if (t->intern) {
            *t->p = PyString_InternFromString(t->s);
        } else {
            *t->p = PyString_FromStringAndSize(t->s, t->n - 1);
        }
        #else
        if (t->is_unicode | t->is_str) {
            if (t->intern) {
                *t->p = PyUnicode_InternFromString(t->s);
            } else if (t->encoding) {
                *t->p = PyUnicode_Decode(t->s, t->n - 1, t->encoding, NULL);
            } else {
                *t->p = PyUnicode_FromStringAndSize(t->s, t->n - 1);
            }
        } else {
            *t->p = PyBytes_FromStringAndSize(t->s, t->n - 1);
        }
        #endif
        if (!*t->p)
            return -1;
        if (PyObject_Hash(*t->p) == -1)
            return -1;
        ++t;
    }
    return 0;
}

static CYTHON_INLINE PyObject* __Pyx_PyUnicode_FromString(const char* c_str) {
    return __Pyx_PyUnicode_FromStringAndSize(c_str, (Py_ssize_t)strlen(c_str));
}
static CYTHON_INLINE const char* __Pyx_PyObject_AsString(PyObject* o) {
    Py_ssize_t ignore;
    return __Pyx_PyObject_AsStringAndSize(o, &ignore);
}
#if __PYX_DEFAULT_STRING_ENCODING_IS_ASCII || __PYX_DEFAULT_STRING_ENCODING_IS_DEFAULT
#if !CYTHON_PEP393_ENABLED
static const char* __Pyx_PyUnicode_AsStringAndSize(PyObject* o, Py_ssize_t *length) {
    char* defenc_c;
    PyObject* defenc = _PyUnicode_AsDefaultEncodedString(o, NULL);
    if (!defenc) return NULL;
    defenc_c = PyBytes_AS_STRING(defenc);
#if __PYX_DEFAULT_STRING_ENCODING_IS_ASCII
    {
        char* end = defenc_c + PyBytes_GET_SIZE(defenc);
        char* c;
        for (c = defenc_c; c < end; c++) {
            if ((unsigned char) (*c) >= 128) {
                PyUnicode_AsASCIIString(o);
                return NULL;
            }
        }
    }
#endif
    *length = PyBytes_GET_SIZE(defenc);
    return defenc_c;
}
#else
static CYTHON_INLINE const char* __Pyx_PyUnicode_AsStringAndSize(PyObject* o, Py_ssize_t *length) {
    if (unlikely(__Pyx_PyUnicode_READY(o) == -1)) return NULL;
#if __PYX_DEFAULT_STRING_ENCODING_IS_ASCII
    if (likely(PyUnicode_IS_ASCII(o))) {
        *length = PyUnicode_GET_LENGTH(o);
        return PyUnicode_AsUTF8(o);
    } else {
        PyUnicode_AsASCIIString(o);
        return NULL;
    }
#else
    return PyUnicode_AsUTF8AndSize(o, length);
#endif
}
#endif
#endif
static CYTHON_INLINE const char* __Pyx_PyObject_AsStringAndSize(PyObject* o, Py_ssize_t *length) {
#if __PYX_DEFAULT_STRING_ENCODING_IS_ASCII || __PYX_DEFAULT_STRING_ENCODING_IS_DEFAULT
    if (
#if PY_MAJOR_VERSION < 3 && __PYX_DEFAULT_STRING_ENCODING_IS_ASCII
            __Pyx_sys_getdefaultencoding_not_ascii &&
#endif
            PyUnicode_Check(o)) {
        return __Pyx_PyUnicode_AsStringAndSize(o, length);
    } else
#endif
#if (!CYTHON_COMPILING_IN_PYPY) || (defined(PyByteArray_AS_STRING) && defined(PyByteArray_GET_SIZE))
    if (PyByteArray_Check(o)) {
        *length = PyByteArray_GET_SIZE(o);
        return PyByteArray_AS_STRING(o);
    } else
#endif
    {
        char* result;
        int r = PyBytes_AsStringAndSize(o, &result, length);
        if (unlikely(r < 0)) {
            return NULL;
        } else {
            return result;
        }
    }
}
static CYTHON_INLINE int __Pyx_PyObject_IsTrue(PyObject* x) {
   int is_true = x == Py_True;
   if (is_true | (x == Py_False) | (x == Py_None)) return is_true;
   else return PyObject_IsTrue(x);
}
static CYTHON_INLINE int __Pyx_PyObject_IsTrueAndDecref(PyObject* x) {
    int retval;
    if (unlikely(!x)) return -1;
    retval = __Pyx_PyObject_IsTrue(x);
    Py_DECREF(x);
    return retval;
}
static PyObject* __Pyx_PyNumber_IntOrLongWrongResultType(PyObject* result, const char* type_name) {
#if PY_MAJOR_VERSION >= 3
    if (PyLong_Check(result)) {
        if (PyErr_WarnFormat(PyExc_DeprecationWarning, 1,
                "__int__ returned non-int (type %.200s).  "
                "The ability to return an instance of a strict subclass of int "
                "is deprecated, and may be removed in a future version of Python.",
                Py_TYPE(result)->tp_name)) {
            Py_DECREF(result);
            return NULL;
        }
        return result;
    }
#endif
    PyErr_Format(PyExc_TypeError,
                 "__%.4s__ returned non-%.4s (type %.200s)",
                 type_name, type_name, Py_TYPE(result)->tp_name);
    Py_DECREF(result);
    return NULL;
}
static CYTHON_INLINE PyObject* __Pyx_PyNumber_IntOrLong(PyObject* x) {
#if CYTHON_USE_TYPE_SLOTS
  PyNumberMethods *m;
#endif
  const char *name = NULL;
  PyObject *res = NULL;
#if PY_MAJOR_VERSION < 3
  if (likely(PyInt_Check(x) || PyLong_Check(x)))
#else
  if (likely(PyLong_Check(x)))
#endif
    return __Pyx_NewRef(x);
#if CYTHON_USE_TYPE_SLOTS
  m = Py_TYPE(x)->tp_as_number;
  #if PY_MAJOR_VERSION < 3
  if (m && m->nb_int) {
    name = "int";
    res = m->nb_int(x);
  }
  else if (m && m->nb_long) {
    name = "long";
    res = m->nb_long(x);
  }
  #else
  if (likely(m && m->nb_int)) {
    name = "int";
    res = m->nb_int(x);
  }
  #endif
#else
  if (!PyBytes_CheckExact(x) && !PyUnicode_CheckExact(x)) {
    res = PyNumber_Int(x);
  }
#endif
  if (likely(res)) {
#if PY_MAJOR_VERSION < 3
    if (unlikely(!PyInt_Check(res) && !PyLong_Check(res))) {
#else
    if (unlikely(!PyLong_CheckExact(res))) {
#endif
        return __Pyx_PyNumber_IntOrLongWrongResultType(res, name);
    }
  }
  else if (!PyErr_Occurred()) {
    PyErr_SetString(PyExc_TypeError,
                    "an integer is required");
  }
  return res;
}
static CYTHON_INLINE Py_ssize_t __Pyx_PyIndex_AsSsize_t(PyObject* b) {
  Py_ssize_t ival;
  PyObject *x;
#if PY_MAJOR_VERSION < 3
  if (likely(PyInt_CheckExact(b))) {
    if (sizeof(Py_ssize_t) >= sizeof(long))
        return PyInt_AS_LONG(b);
    else
        return PyInt_AsSsize_t(b);
  }
#endif
  if (likely(PyLong_CheckExact(b))) {
    #if CYTHON_USE_PYLONG_INTERNALS
    const digit* digits = ((PyLongObject*)b)->ob_digit;
    const Py_ssize_t size = Py_SIZE(b);
    if (likely(__Pyx_sst_abs(size) <= 1)) {
        ival = likely(size) ? digits[0] : 0;
        if (size == -1) ival = -ival;
        return ival;
    } else {
      switch (size) {
         case 2:
           if (8 * sizeof(Py_ssize_t) > 2 * PyLong_SHIFT) {
             return (Py_ssize_t) (((((size_t)digits[1]) << PyLong_SHIFT) | (size_t)digits[0]));
           }
           break;
         case -2:
           if (8 * sizeof(Py_ssize_t) > 2 * PyLong_SHIFT) {
             return -(Py_ssize_t) (((((size_t)digits[1]) << PyLong_SHIFT) | (size_t)digits[0]));
           }
           break;
         case 3:
           if (8 * sizeof(Py_ssize_t) > 3 * PyLong_SHIFT) {
             return (Py_ssize_t) (((((((size_t)digits[2]) << PyLong_SHIFT) | (size_t)digits[1]) << PyLong_SHIFT) | (size_t)digits[0]));
           }
           break;
         case -3:
           if (8 * sizeof(Py_ssize_t) > 3 * PyLong_SHIFT) {
             return -(Py_ssize_t) (((((((size_t)digits[2]) << PyLong_SHIFT) | (size_t)digits[1]) << PyLong_SHIFT) | (size_t)digits[0]));
           }
           break;
         case 4:
           if (8 * sizeof(Py_ssize_t) > 4 * PyLong_SHIFT) {
             return (Py_ssize_t) (((((((((size_t)digits[3]) << PyLong_SHIFT) | (size_t)digits[2]) << PyLong_SHIFT) | (size_t)digits[1]) << PyLong_SHIFT) | (size_t)digits[0]));
           }
           break;
         case -4:
           if (8 * sizeof(Py_ssize_t) > 4 * PyLong_SHIFT) {
             return -(Py_ssize_t) (((((((((size_t)digits[3]) << PyLong_SHIFT) | (size_t)digits[2]) << PyLong_SHIFT) | (size_t)digits[1]) << PyLong_SHIFT) | (size_t)digits[0]));
           }
           break;
      }
    }
    #endif
    return PyLong_AsSsize_t(b);
  }
  x = PyNumber_Index(b);
  if (!x) return -1;
  ival = PyInt_AsSsize_t(x);
  Py_DECREF(x);
  return ival;
}
static CYTHON_INLINE PyObject * __Pyx_PyBool_FromLong(long b) {
  return b ? __Pyx_NewRef(Py_True) : __Pyx_NewRef(Py_False);
}
static CYTHON_INLINE PyObject * __Pyx_PyInt_FromSize_t(size_t ival) {
    return PyInt_FromSize_t(ival);
}


#endif /* Py_PYTHON_H */
