text: # Generated by the protocol buffer compiler.  DO NOT EDIT!
  # source: otis.proto
  
  import sys
  _b=sys.version_info[0]<3 and (lambda x:x) or (lambda x:x.encode('latin1'))
  from google.protobuf.internal import enum_type_wrapper
  from google.protobuf import descriptor as _descriptor
  from google.protobuf import message as _message
  from google.protobuf import reflection as _reflection
  from google.protobuf import symbol_database as _symbol_database
  from google.protobuf import descriptor_pb2
  # @@protoc_insertion_point(imports)
  
  _sym_db = _symbol_database.Default()
  
  
  
  
  DESCRIPTOR = _descriptor.FileDescriptor(
    name='otis.proto',
    package='otis',
    syntax='proto3',
    serialized_pb=_b('\n\notis.proto\x12\x04otis\"\x8c\x01\n\x04Path\x12\r\n\x05parts\x18\x01 \x03(\t\x12\x0f\n\x07\x63olumns\x18\x02 \x03(\t\x12!\n\x04type\x18\x03 \x01(\x0e\x32\x13.otis.Path.PathType\x12!\n\x08\x63hildren\x18\x04 \x03(\x0b\x32\x0f.otis.PathChild\"\x1e\n\x08PathType\x12\x08\n\x04LEAF\x10\x00\x12\x08\n\x04NODE\x10\x01\":\n\tPathChild\x12\x0c\n\x04path\x18\x01 \x01(\t\"\x1f\n\tChildType\x12\x08\n\x04LEAF\x10\x00\x12\x08\n\x04NODE\x10\x01\"V\n\x07Request\x12\n\n\x02id\x18\x01 \x01(\t\x12\x10\n\x08priority\x18\x02 \x01(\r\x12\x0e\n\x06window\x18\x03 \x01(\r\x12\x0f\n\x07\x63ontent\x18\x04 \x01(\x0c\x12\x0c\n\x04mime\x18\x05 \x01(\t\"\\\n\x05Reply\x12\n\n\x02id\x18\x01 \x01(\t\x12\r\n\x05\x65rror\x18\x02 \x01(\t\x12\x0c\n\x04more\x18\x03 \x01(\x08\x12\x0b\n\x03seq\x18\x04 \x01(\x04\x12\x0f\n\x07\x63ontent\x18\x05 \x01(\x0c\x12\x0c\n\x04mime\x18\x06 \x01(\t\"\x1b\n\x0bPingRequest\x12\x0c\n\x04ping\x18\x01 \x01(\t\"\x19\n\tPongReply\x12\x0c\n\x04pong\x18\x01 \x01(\t\":\n\x0bPathRequest\x12\x19\n\x05paths\x18\x01 \x03(\x0b\x32\n.otis.Path\x12\x10\n\x08\x63hildren\x18\x02 \x01(\x08\"&\n\tPathReply\x12\x19\n\x05paths\x18\x01 \x03(\x0b\x32\n.otis.Path\"j\n\x11TimeSeriesRequest\x12\n\n\x02id\x18\x01 \x01(\t\x12\x0e\n\x06offset\x18\x03 \x01(\x05\x12\r\n\x05limit\x18\x04 \x01(\x05\x12\x19\n\x05paths\x18\x05 \x03(\x0b\x32\n.otis.Path\x12\x0f\n\x07\x63olumns\x18\x06 \x03(\t\"_\n\x0fTimeSeriesReply\x12\n\n\x02id\x18\x01 \x01(\t\x12%\n\x0btime_series\x18\x02 \x03(\x0b\x32\x10.otis.TimeSeries\x12\x19\n\x05paths\x18\x03 \x03(\x0b\x32\n.otis.Path\"\xab\x03\n\nTimeSeries\x12\n\n\x02id\x18\x01 \x01(\t\x12\x0f\n\x07version\x18\x02 \x01(\t\x12(\n\x07\x63olumns\x18\x03 \x03(\x0b\x32\x17.otis.TimeSeries.Column\x12!\n\x08metadata\x18\x04 \x01(\x0b\x32\x0f.otis.KeyValues\x1a\xb2\x02\n\x06\x43olumn\x12\x0f\n\x07\x64oubles\x18\x01 \x03(\x01\x12\x0e\n\x06\x66loats\x18\x02 \x03(\x02\x12\x0e\n\x06int32s\x18\x03 \x03(\x05\x12\x0e\n\x06int64s\x18\x04 \x03(\x03\x12\x0f\n\x07uint32s\x18\x05 \x03(\r\x12\x0f\n\x07uint64s\x18\x06 \x03(\x04\x12\x0f\n\x07sint32s\x18\x07 \x03(\x11\x12\x0f\n\x07sint64s\x18\x08 \x03(\x12\x12\x10\n\x08\x66ixed32s\x18\t \x03(\x07\x12\x10\n\x08\x66ixed64s\x18\n \x03(\x06\x12\x11\n\tsfixed32s\x18\x0b \x03(\x0f\x12\x11\n\tsfixed64s\x18\x0c \x03(\x10\x12\r\n\x05\x62ools\x18\r \x03(\x08\x12\x0f\n\x07strings\x18\x0e \x03(\t\x12\x11\n\traw_bytes\x18\x0f \x03(\x0c\x12\x18\n\x04type\x18\x10 \x01(\x0e\x32\n.otis.Type\x12\x0c\n\x04name\x18\x11 \x01(\t\"3\n\tKeyValues\x12&\n\nkey_values\x18\x01 \x03(\x0b\x32\x12.otis.KeyValuePair\"8\n\x0cKeyValuePair\x12\x0b\n\x03key\x18\x01 \x01(\t\x12\x1b\n\x06values\x18\x02 \x01(\x0b\x32\x0b.otis.Value\"\xa3\x02\n\x05Value\x12\x0f\n\x07\x64oubles\x18\x01 \x03(\x01\x12\x0e\n\x06\x66loats\x18\x02 \x03(\x02\x12\x0e\n\x06int32s\x18\x03 \x03(\x05\x12\x0e\n\x06int64s\x18\x04 \x03(\x03\x12\x0f\n\x07uint32s\x18\x05 \x03(\r\x12\x0f\n\x07uint64s\x18\x06 \x03(\x04\x12\x0f\n\x07sint32s\x18\x07 \x03(\x11\x12\x0f\n\x07sint64s\x18\x08 \x03(\x12\x12\x10\n\x08\x66ixed32s\x18\t \x03(\x07\x12\x10\n\x08\x66ixed64s\x18\n \x03(\x06\x12\x11\n\tsfixed32s\x18\x0b \x03(\x0f\x12\x11\n\tsfixed64s\x18\x0c \x03(\x10\x12\r\n\x05\x62ools\x18\r \x03(\x08\x12\x0f\n\x07strings\x18\x0e \x03(\t\x12\x11\n\traw_bytes\x18\x0f \x03(\x0c\x12\x18\n\x04type\x18\x10 \x01(\x0e\x32\n.otis.Type*\x94\x02\n\x04Type\x12\x0f\n\x0bTYPE_DOUBLE\x10\x00\x12\x0e\n\nTYPE_FLOAT\x10\x01\x12\x0e\n\nTYPE_INT64\x10\x02\x12\x0f\n\x0bTYPE_UINT64\x10\x03\x12\x0e\n\nTYPE_INT32\x10\x04\x12\x10\n\x0cTYPE_FIXED64\x10\x05\x12\x10\n\x0cTYPE_FIXED32\x10\x06\x12\r\n\tTYPE_BOOL\x10\x07\x12\x0f\n\x0bTYPE_STRING\x10\x08\x12\x0e\n\nTYPE_BYTES\x10\t\x12\x0f\n\x0bTYPE_UINT32\x10\n\x12\r\n\tTYPE_ENUM\x10\x0b\x12\x11\n\rTYPE_SFIXED32\x10\x0c\x12\x11\n\rTYPE_SFIXED64\x10\r\x12\x0f\n\x0bTYPE_SINT32\x10\x0e\x12\x0f\n\x0bTYPE_SINT64\x10\x0f\x32W\n\x07OtisRpc\x12!\n\x03RPC\x12\r.otis.Request\x1a\x0b.otis.Reply\x12)\n\tRpcStream\x12\r.otis.Request\x1a\x0b.otis.Reply0\x01\x42\x10\n\x0eorg.otis.protob\x06proto3')
  )
  _sym_db.RegisterFileDescriptor(DESCRIPTOR)
  
  _TYPE = _descriptor.EnumDescriptor(
    name='Type',
    full_name='otis.Type',
    filename=None,
    file=DESCRIPTOR,
    values=[
      _descriptor.EnumValueDescriptor(
        name='TYPE_DOUBLE', index=0, number=0,
        options=None,
        type=None),
      _descriptor.EnumValueDescriptor(
        name='TYPE_FLOAT', index=1, number=1,
        options=None,
        type=None),
      _descriptor.EnumValueDescriptor(
        name='TYPE_INT64', index=2, number=2,
        options=None,
        type=None),
      _descriptor.EnumValueDescriptor(
        name='TYPE_UINT64', index=3, number=3,
        options=None,
        type=None),
      _descriptor.EnumValueDescriptor(
        name='TYPE_INT32', index=4, number=4,
        options=None,
        type=None),
      _descriptor.EnumValueDescriptor(
        name='TYPE_FIXED64', index=5, number=5,
        options=None,
        type=None),
      _descriptor.EnumValueDescriptor(
        name='TYPE_FIXED32', index=6, number=6,
        options=None,
        type=None),
      _descriptor.EnumValueDescriptor(
        name='TYPE_BOOL', index=7, number=7,
        options=None,
        type=None),
      _descriptor.EnumValueDescriptor(
        name='TYPE_STRING', index=8, number=8,
        options=None,
        type=None),
      _descriptor.EnumValueDescriptor(
        name='TYPE_BYTES', index=9, number=9,
        options=None,
        type=None),
      _descriptor.EnumValueDescriptor(
        name='TYPE_UINT32', index=10, number=10,
        options=None,
        type=None),
      _descriptor.EnumValueDescriptor(
        name='TYPE_ENUM', index=11, number=11,
        options=None,
        type=None),
      _descriptor.EnumValueDescriptor(
        name='TYPE_SFIXED32', index=12, number=12,
        options=None,
        type=None),
      _descriptor.EnumValueDescriptor(
        name='TYPE_SFIXED64', index=13, number=13,
        options=None,
        type=None),
      _descriptor.EnumValueDescriptor(
        name='TYPE_SINT32', index=14, number=14,
        options=None,
        type=None),
      _descriptor.EnumValueDescriptor(
        name='TYPE_SINT64', index=15, number=15,
        options=None,
        type=None),
    ],
    containing_type=None,
    options=None,
    serialized_start=1602,
    serialized_end=1878,
  )
  _sym_db.RegisterEnumDescriptor(_TYPE)
  
  Type = enum_type_wrapper.EnumTypeWrapper(_TYPE)
  TYPE_DOUBLE = 0
  TYPE_FLOAT = 1
  TYPE_INT64 = 2
  TYPE_UINT64 = 3
  TYPE_INT32 = 4
  TYPE_FIXED64 = 5
  TYPE_FIXED32 = 6
  TYPE_BOOL = 7
  TYPE_STRING = 8
  TYPE_BYTES = 9
  TYPE_UINT32 = 10
  TYPE_ENUM = 11
  TYPE_SFIXED32 = 12
  TYPE_SFIXED64 = 13
  TYPE_SINT32 = 14
  TYPE_SINT64 = 15
  
  
  _PATH_PATHTYPE = _descriptor.EnumDescriptor(
    name='PathType',
    full_name='otis.Path.PathType',
    filename=None,
    file=DESCRIPTOR,
    values=[
      _descriptor.EnumValueDescriptor(
        name='LEAF', index=0, number=0,
        options=None,
        type=None),
      _descriptor.EnumValueDescriptor(
        name='NODE', index=1, number=1,
        options=None,
        type=None),
    ],
    containing_type=None,
    options=None,
    serialized_start=131,
    serialized_end=161,
  )
  _sym_db.RegisterEnumDescriptor(_PATH_PATHTYPE)
  
  _PATHCHILD_CHILDTYPE = _descriptor.EnumDescriptor(
    name='ChildType',
    full_name='otis.PathChild.ChildType',
    filename=None,
    file=DESCRIPTOR,
    values=[
      _descriptor.EnumValueDescriptor(
        name='LEAF', index=0, number=0,
        options=None,
        type=None),
      _descriptor.EnumValueDescriptor(
        name='NODE', index=1, number=1,
        options=None,
        type=None),
    ],
    containing_type=None,
    options=None,
    serialized_start=190,
    serialized_end=221,
  )
  _sym_db.RegisterEnumDescriptor(_PATHCHILD_CHILDTYPE)
  
  
  _PATH = _descriptor.Descriptor(
    name='Path',
    full_name='otis.Path',
    filename=None,
    file=DESCRIPTOR,
    containing_type=None,
    fields=[
      _descriptor.FieldDescriptor(
        name='parts', full_name='otis.Path.parts', index=0,
        number=1, type=9, cpp_type=9, label=3,
        has_default_value=False, default_value=[],
        message_type=None, enum_type=None, containing_type=None,
        is_extension=False, extension_scope=None,
        options=None),
      _descriptor.FieldDescriptor(
        name='columns', full_name='otis.Path.columns', index=1,
        number=2, type=9, cpp_type=9, label=3,
        has_default_value=False, default_value=[],
        message_type=None, enum_type=None, containing_type=None,
        is_extension=False, extension_scope=None,
        options=None),
      _descriptor.FieldDescriptor(
        name='type', full_name='otis.Path.type', index=2,
        number=3, type=14, cpp_type=8, label=1,
        has_default_value=False, default_value=0,
        message_type=None, enum_type=None, containing_type=None,
        is_extension=False, extension_scope=None,
        options=None),
      _descriptor.FieldDescriptor(
        name='children', full_name='otis.Path.children', index=3,
        number=4, type=11, cpp_type=10, label=3,
        has_default_value=False, default_value=[],
        message_type=None, enum_type=None, containing_type=None,
        is_extension=False, extension_scope=None,
        options=None),
    ],
    extensions=[
    ],
    nested_types=[],
    enum_types=[
      _PATH_PATHTYPE,
    ],
    options=None,
    is_extendable=False,
    syntax='proto3',
    extension_ranges=[],
    oneofs=[
    ],
    serialized_start=21,
    serialized_end=161,
  )
  
  
  _PATHCHILD = _descriptor.Descriptor(
    name='PathChild',
    full_name='otis.PathChild',
    filename=None,
    file=DESCRIPTOR,
    containing_type=None,
    fields=[
      _descriptor.FieldDescriptor(
        name='path', full_name='otis.PathChild.path', index=0,
        number=1, type=9, cpp_type=9, label=1,
        has_default_value=False, default_value=_b("").decode('utf-8'),
        message_type=None, enum_type=None, containing_type=None,
        is_extension=False, extension_scope=None,
        options=None),
    ],
    extensions=[
    ],
    nested_types=[],
    enum_types=[
      _PATHCHILD_CHILDTYPE,
    ],
    options=None,
    is_extendable=False,
    syntax='proto3',
    extension_ranges=[],
    oneofs=[
    ],
    serialized_start=163,
    serialized_end=221,
  )
  
  
  _REQUEST = _descriptor.Descriptor(
    name='Request',
    full_name='otis.Request',
    filename=None,
    file=DESCRIPTOR,
    containing_type=None,
    fields=[
      _descriptor.FieldDescriptor(
        name='id', full_name='otis.Request.id', index=0,
        number=1, type=9, cpp_type=9, label=1,
        has_default_value=False, default_value=_b("").decode('utf-8'),
        message_type=None, enum_type=None, containing_type=None,
        is_extension=False, extension_scope=None,
        options=None),
      _descriptor.FieldDescriptor(
        name='priority', full_name='otis.Request.priority', index=1,
        number=2, type=13, cpp_type=3, label=1,
        has_default_value=False, default_value=0,
        message_type=None, enum_type=None, containing_type=None,
        is_extension=False, extension_scope=None,
        options=None),
      _descriptor.FieldDescriptor(
        name='window', full_name='otis.Request.window', index=2,
        number=3, type=13, cpp_type=3, label=1,
        has_default_value=False, default_value=0,
        message_type=None, enum_type=None, containing_type=None,
        is_extension=False, extension_scope=None,
        options=None),
      _descriptor.FieldDescriptor(
        name='content', full_name='otis.Request.content', index=3,
        number=4, type=12, cpp_type=9, label=1,
        has_default_value=False, default_value=_b(""),
        message_type=None, enum_type=None, containing_type=None,
        is_extension=False, extension_scope=None,
        options=None),
      _descriptor.FieldDescriptor(
        name='mime', full_name='otis.Request.mime', index=4,
        number=5, type=9, cpp_type=9, label=1,
        has_default_value=False, default_value=_b("").decode('utf-8'),
        message_type=None, enum_type=None, containing_type=None,
        is_extension=False, extension_scope=None,
        options=None),
    ],
    extensions=[
    ],
    nested_types=[],
    enum_types=[
    ],
    options=None,
    is_extendable=False,
    syntax='proto3',
    extension_ranges=[],
    oneofs=[
    ],
    serialized_start=223,
    serialized_end=309,
  )
  
  
  _REPLY = _descriptor.Descriptor(
    name='Reply',
    full_name='otis.Reply',
    filename=None,
    file=DESCRIPTOR,
    containing_type=None,
    fields=[
      _descriptor.FieldDescriptor(
        name='id', full_name='otis.Reply.id', index=0,
        number=1, type=9, cpp_type=9, label=1,
        has_default_value=False, default_value=_b("").decode('utf-8'),
        message_type=None, enum_type=None, containing_type=None,
        is_extension=False, extension_scope=None,
        options=None),
      _descriptor.FieldDescriptor(
        name='error', full_name='otis.Reply.error', index=1,
        number=2, type=9, cpp_type=9, label=1,
        has_default_value=False, default_value=_b("").decode('utf-8'),
        message_type=None, enum_type=None, containing_type=None,
        is_extension=False, extension_scope=None,
        options=None),
      _descriptor.FieldDescriptor(
        name='more', full_name='otis.Reply.more', index=2,
        number=3, type=8, cpp_type=7, label=1,
        has_default_value=False, default_value=False,
        message_type=None, enum_type=None, containing_type=None,
        is_extension=False, extension_scope=None,
        options=None),
      _descriptor.FieldDescriptor(
        name='seq', full_name='otis.Reply.seq', index=3,
        number=4, type=4, cpp_type=4, label=1,
        has_default_value=False, default_value=0,
        message_type=None, enum_type=None, containing_type=None,
        is_extension=False, extension_scope=None,
        options=None),
      _descriptor.FieldDescriptor(
        name='content', full_name='otis.Reply.content', index=4,
        number=5, type=12, cpp_type=9, label=1,
        has_default_value=False, default_value=_b(""),
        message_type=None, enum_type=None, containing_type=None,
        is_extension=False, extension_scope=None,
        options=None),
      _descriptor.FieldDescriptor(
        name='mime', full_name='otis.Reply.mime', index=5,
        number=6, type=9, cpp_type=9, label=1,
        has_default_value=False, default_value=_b("").decode('utf-8'),
        message_type=None, enum_type=None, containing_type=None,
        is_extension=False, extension_scope=None,
        options=None),
    ],
    extensions=[
    ],
    nested_types=[],
    enum_types=[
    ],
    options=None,
    is_extendable=False,
    syntax='proto3',
    extension_ranges=[],
    oneofs=[
    ],
    serialized_start=311,
    serialized_end=403,
  )
  
  
  _PINGREQUEST = _descriptor.Descriptor(
    name='PingRequest',
    full_name='otis.PingRequest',
    filename=None,
    file=DESCRIPTOR,
    containing_type=None,
    fields=[
      _descriptor.FieldDescriptor(
        name='ping', full_name='otis.PingRequest.ping', index=0,
        number=1, type=9, cpp_type=9, label=1,
        has_default_value=False, default_value=_b("").decode('utf-8'),
        message_type=None, enum_type=None, containing_type=None,
        is_extension=False, extension_scope=None,
        options=None),
    ],
    extensions=[
    ],
    nested_types=[],
    enum_types=[
    ],
    options=None,
    is_extendable=False,
    syntax='proto3',
    extension_ranges=[],
    oneofs=[
    ],
    serialized_start=405,
    serialized_end=432,
  )
  
  
  _PONGREPLY = _descriptor.Descriptor(
    name='PongReply',
    full_name='otis.PongReply',
    filename=None,
    file=DESCRIPTOR,
    containing_type=None,
    fields=[
      _descriptor.FieldDescriptor(
        name='pong', full_name='otis.PongReply.pong', index=0,
        number=1, type=9, cpp_type=9, label=1,
        has_default_value=False, default_value=_b("").decode('utf-8'),
        message_type=None, enum_type=None, containing_type=None,
        is_extension=False, extension_scope=None,
        options=None),
    ],
    extensions=[
    ],
    nested_types=[],
    enum_types=[
    ],
    options=None,
    is_extendable=False,
    syntax='proto3',
    extension_ranges=[],
    oneofs=[
    ],
    serialized_start=434,
    serialized_end=459,
  )
  
  
  _PATHREQUEST = _descriptor.Descriptor(
    name='PathRequest',
    full_name='otis.PathRequest',
    filename=None,
    file=DESCRIPTOR,
    containing_type=None,
    fields=[
      _descriptor.FieldDescriptor(
        name='paths', full_name='otis.PathRequest.paths', index=0,
        number=1, type=11, cpp_type=10, label=3,
        has_default_value=False, default_value=[],
        message_type=None, enum_type=None, containing_type=None,
        is_extension=False, extension_scope=None,
        options=None),
      _descriptor.FieldDescriptor(
        name='children', full_name='otis.PathRequest.children', index=1,
        number=2, type=8, cpp_type=7, label=1,
        has_default_value=False, default_value=False,
        message_type=None, enum_type=None, containing_type=None,
        is_extension=False, extension_scope=None,
        options=None),
    ],
    extensions=[
    ],
    nested_types=[],
    enum_types=[
    ],
    options=None,
    is_extendable=False,
    syntax='proto3',
    extension_ranges=[],
    oneofs=[
    ],
    serialized_start=461,
    serialized_end=519,
  )
  
  
  _PATHREPLY = _descriptor.Descriptor(
    name='PathReply',
    full_name='otis.PathReply',
    filename=None,
    file=DESCRIPTOR,
    containing_type=None,
    fields=[
      _descriptor.FieldDescriptor(
        name='paths', full_name='otis.PathReply.paths', index=0,
        number=1, type=11, cpp_type=10, label=3,
        has_default_value=False, default_value=[],
        message_type=None, enum_type=None, containing_type=None,
        is_extension=False, extension_scope=None,
        options=None),
    ],
    extensions=[
    ],
    nested_types=[],
    enum_types=[
    ],
    options=None,
    is_extendable=False,
    syntax='proto3',
    extension_ranges=[],
    oneofs=[
    ],
    serialized_start=521,
    serialized_end=559,
  )
  
  
  _TIMESERIESREQUEST = _descriptor.Descriptor(
    name='TimeSeriesRequest',
    full_name='otis.TimeSeriesRequest',
    filename=None,
    file=DESCRIPTOR,
    containing_type=None,
    fields=[
      _descriptor.FieldDescriptor(
        name='id', full_name='otis.TimeSeriesRequest.id', index=0,
        number=1, type=9, cpp_type=9, label=1,
        has_default_value=False, default_value=_b("").decode('utf-8'),
        message_type=None, enum_type=None, containing_type=None,
        is_extension=False, extension_scope=None,
        options=None),
      _descriptor.FieldDescriptor(
        name='offset', full_name='otis.TimeSeriesRequest.offset', index=1,
        number=3, type=5, cpp_type=1, label=1,
        has_default_value=False, default_value=0,
        message_type=None, enum_type=None, containing_type=None,
        is_extension=False, extension_scope=None,
        options=None),
      _descriptor.FieldDescriptor(
        name='limit', full_name='otis.TimeSeriesRequest.limit', index=2,
        number=4, type=5, cpp_type=1, label=1,
        has_default_value=False, default_value=0,
        message_type=None, enum_type=None, containing_type=None,
        is_extension=False, extension_scope=None,
        options=None),
      _descriptor.FieldDescriptor(
        name='paths', full_name='otis.TimeSeriesRequest.paths', index=3,
        number=5, type=11, cpp_type=10, label=3,
        has_default_value=False, default_value=[],
        message_type=None, enum_type=None, containing_type=None,
        is_extension=False, extension_scope=None,
        options=None),
      _descriptor.FieldDescriptor(
        name='columns', full_name='otis.TimeSeriesRequest.columns', index=4,
        number=6, type=9, cpp_type=9, label=3,
        has_default_value=False, default_value=[],
        message_type=None, enum_type=None, containing_type=None,
        is_extension=False, extension_scope=None,
        options=None),
    ],
    extensions=[
    ],
    nested_types=[],
    enum_types=[
    ],
    options=None,
    is_extendable=False,
    syntax='proto3',
    extension_ranges=[],
    oneofs=[
    ],
    serialized_start=561,
    serialized_end=667,
  )
  
  
  _TIMESERIESREPLY = _descriptor.Descriptor(
    name='TimeSeriesReply',
    full_name='otis.TimeSeriesReply',
    filename=None,
    file=DESCRIPTOR,
    containing_type=None,
    fields=[
      _descriptor.FieldDescriptor(
        name='id', full_name='otis.TimeSeriesReply.id', index=0,
        number=1, type=9, cpp_type=9, label=1,
        has_default_value=False, default_value=_b("").decode('utf-8'),
        message_type=None, enum_type=None, containing_type=None,
        is_extension=False, extension_scope=None,
        options=None),
      _descriptor.FieldDescriptor(
        name='time_series', full_name='otis.TimeSeriesReply.time_series', index=1,
        number=2, type=11, cpp_type=10, label=3,
        has_default_value=False, default_value=[],
        message_type=None, enum_type=None, containing_type=None,
        is_extension=False, extension_scope=None,
        options=None),
      _descriptor.FieldDescriptor(
        name='paths', full_name='otis.TimeSeriesReply.paths', index=2,
        number=3, type=11, cpp_type=10, label=3,
        has_default_value=False, default_value=[],
        message_type=None, enum_type=None, containing_type=None,
        is_extension=False, extension_scope=None,
        options=None),
    ],
    extensions=[
    ],
    nested_types=[],
    enum_types=[
    ],
    options=None,
    is_extendable=False,
    syntax='proto3',
    extension_ranges=[],
    oneofs=[
    ],
    serialized_start=669,
    serialized_end=764,
  )
  
  
  _TIMESERIES_COLUMN = _descriptor.Descriptor(
    name='Column',
    full_name='otis.TimeSeries.Column',
    filename=None,
    file=DESCRIPTOR,
    containing_type=None,
    fields=[
      _descriptor.FieldDescriptor(
        name='doubles', full_name='otis.TimeSeries.Column.doubles', index=0,
        number=1, type=1, cpp_type=5, label=3,
        has_default_value=False, default_value=[],
        message_type=None, enum_type=None, containing_type=None,
        is_extension=False, extension_scope=None,
        options=None),
      _descriptor.FieldDescriptor(
        name='floats', full_name='otis.TimeSeries.Column.floats', index=1,
        number=2, type=2, cpp_type=6, label=3,
        has_default_value=False, default_value=[],
        message_type=None, enum_type=None, containing_type=None,
        is_extension=False, extension_scope=None,
        options=None),
      _descriptor.FieldDescriptor(
        name='int32s', full_name='otis.TimeSeries.Column.int32s', index=2,
        number=3, type=5, cpp_type=1, label=3,
        has_default_value=False, default_value=[],
        message_type=None, enum_type=None, containing_type=None,
        is_extension=False, extension_scope=None,
        options=None),
      _descriptor.FieldDescriptor(
        name='int64s', full_name='otis.TimeSeries.Column.int64s', index=3,
        number=4, type=3, cpp_type=2, label=3,
        has_default_value=False, default_value=[],
        message_type=None, enum_type=None, containing_type=None,
        is_extension=False, extension_scope=None,
        options=None),
      _descriptor.FieldDescriptor(
        name='uint32s', full_name='otis.TimeSeries.Column.uint32s', index=4,
        number=5, type=13, cpp_type=3, label=3,
        has_default_value=False, default_value=[],
        message_type=None, enum_type=None, containing_type=None,
        is_extension=False, extension_scope=None,
        options=None),
      _descriptor.FieldDescriptor(
        name='uint64s', full_name='otis.TimeSeries.Column.uint64s', index=5,
        number=6, type=4, cpp_type=4, label=3,
        has_default_value=False, default_value=[],
        message_type=None, enum_type=None, containing_type=None,
        is_extension=False, extension_scope=None,
        options=None),
      _descriptor.FieldDescriptor(
        name='sint32s', full_name='otis.TimeSeries.Column.sint32s', index=6,
        number=7, type=17, cpp_type=1, label=3,
        has_default_value=False, default_value=[],
        message_type=None, enum_type=None, containing_type=None,
        is_extension=False, extension_scope=None,
        options=None),
      _descriptor.FieldDescriptor(
        name='sint64s', full_name='otis.TimeSeries.Column.sint64s', index=7,
        number=8, type=18, cpp_type=2, label=3,
        has_default_value=False, default_value=[],
        message_type=None, enum_type=None, containing_type=None,
        is_extension=False, extension_scope=None,
        options=None),
      _descriptor.FieldDescriptor(
        name='fixed32s', full_name='otis.TimeSeries.Column.fixed32s', index=8,
        number=9, type=7, cpp_type=3, label=3,
        has_default_value=False, default_value=[],
        message_type=None, enum_type=None, containing_type=None,
        is_extension=False, extension_scope=None,
        options=None),
      _descriptor.FieldDescriptor(
        name='fixed64s', full_name='otis.TimeSeries.Column.fixed64s', index=9,
        number=10, type=6, cpp_type=4, label=3,
        has_default_value=False, default_value=[],
        message_type=None, enum_type=None, containing_type=None,
        is_extension=False, extension_scope=None,
        options=None),
      _descriptor.FieldDescriptor(
        name='sfixed32s', full_name='otis.TimeSeries.Column.sfixed32s', index=10,
        number=11, type=15, cpp_type=1, label=3,
        has_default_value=False, default_value=[],
        message_type=None, enum_type=None, containing_type=None,
        is_extension=False, extension_scope=None,
        options=None),
      _descriptor.FieldDescriptor(
        name='sfixed64s', full_name='otis.TimeSeries.Column.sfixed64s', index=11,
        number=12, type=16, cpp_type=2, label=3,
        has_default_value=False, default_value=[],
        message_type=None, enum_type=None, containing_type=None,
        is_extension=False, extension_scope=None,
        options=None),
      _descriptor.FieldDescriptor(
        name='bools', full_name='otis.TimeSeries.Column.bools', index=12,
        number=13, type=8, cpp_type=7, label=3,
        has_default_value=False, default_value=[],
        message_type=None, enum_type=None, containing_type=None,
        is_extension=False, extension_scope=None,
        options=None),
      _descriptor.FieldDescriptor(
        name='strings', full_name='otis.TimeSeries.Column.strings', index=13,
        number=14, type=9, cpp_type=9, label=3,
        has_default_value=False, default_value=[],
        message_type=None, enum_type=None, containing_type=None,
        is_extension=False, extension_scope=None,
        options=None),
      _descriptor.FieldDescriptor(
        name='raw_bytes', full_name='otis.TimeSeries.Column.raw_bytes', index=14,
        number=15, type=12, cpp_type=9, label=3,
        has_default_value=False, default_value=[],
        message_type=None, enum_type=None, containing_type=None,
        is_extension=False, extension_scope=None,
        options=None),
      _descriptor.FieldDescriptor(
        name='type', full_name='otis.TimeSeries.Column.type', index=15,
        number=16, type=14, cpp_type=8, label=1,
        has_default_value=False, default_value=0,
        message_type=None, enum_type=None, containing_type=None,
        is_extension=False, extension_scope=None,
        options=None),
      _descriptor.FieldDescriptor(
        name='name', full_name='otis.TimeSeries.Column.name', index=16,
        number=17, type=9, cpp_type=9, label=1,
        has_default_value=False, default_value=_b("").decode('utf-8'),
        message_type=None, enum_type=None, containing_type=None,
        is_extension=False, extension_scope=None,
        options=None),
    ],
    extensions=[
    ],
    nested_types=[],
    enum_types=[
    ],
    options=None,
    is_extendable=False,
    syntax='proto3',
    extension_ranges=[],
    oneofs=[
    ],
    serialized_start=888,
    serialized_end=1194,
  )
  
  _TIMESERIES = _descriptor.Descriptor(
    name='TimeSeries',
    full_name='otis.TimeSeries',
    filename=None,
    file=DESCRIPTOR,
    containing_type=None,
    fields=[
      _descriptor.FieldDescriptor(
        name='id', full_name='otis.TimeSeries.id', index=0,
        number=1, type=9, cpp_type=9, label=1,
        has_default_value=False, default_value=_b("").decode('utf-8'),
        message_type=None, enum_type=None, containing_type=None,
        is_extension=False, extension_scope=None,
        options=None),
      _descriptor.FieldDescriptor(
        name='version', full_name='otis.TimeSeries.version', index=1,
        number=2, type=9, cpp_type=9, label=1,
        has_default_value=False, default_value=_b("").decode('utf-8'),
        message_type=None, enum_type=None, containing_type=None,
        is_extension=False, extension_scope=None,
        options=None),
      _descriptor.FieldDescriptor(
        name='columns', full_name='otis.TimeSeries.columns', index=2,
        number=3, type=11, cpp_type=10, label=3,
        has_default_value=False, default_value=[],
        message_type=None, enum_type=None, containing_type=None,
        is_extension=False, extension_scope=None,
        options=None),
      _descriptor.FieldDescriptor(
        name='metadata', full_name='otis.TimeSeries.metadata', index=3,
        number=4, type=11, cpp_type=10, label=1,
        has_default_value=False, default_value=None,
        message_type=None, enum_type=None, containing_type=None,
        is_extension=False, extension_scope=None,
        options=None),
    ],
    extensions=[
    ],
    nested_types=[_TIMESERIES_COLUMN, ],
    enum_types=[
    ],
    options=None,
    is_extendable=False,
    syntax='proto3',
    extension_ranges=[],
    oneofs=[
    ],
    serialized_start=767,
    serialized_end=1194,
  )
  
  
  _KEYVALUES = _descriptor.Descriptor(
    name='KeyValues',
    full_name='otis.KeyValues',
    filename=None,
    file=DESCRIPTOR,
    containing_type=None,
    fields=[
      _descriptor.FieldDescriptor(
        name='key_values', full_name='otis.KeyValues.key_values', index=0,
        number=1, type=11, cpp_type=10, label=3,
        has_default_value=False, default_value=[],
        message_type=None, enum_type=None, containing_type=None,
        is_extension=False, extension_scope=None,
        options=None),
    ],
    extensions=[
    ],
    nested_types=[],
    enum_types=[
    ],
    options=None,
    is_extendable=False,
    syntax='proto3',
    extension_ranges=[],
    oneofs=[
    ],
    serialized_start=1196,
    serialized_end=1247,
  )
  
  
  _KEYVALUEPAIR = _descriptor.Descriptor(
    name='KeyValuePair',
    full_name='otis.KeyValuePair',
    filename=None,
    file=DESCRIPTOR,
    containing_type=None,
    fields=[
      _descriptor.FieldDescriptor(
        name='key', full_name='otis.KeyValuePair.key', index=0,
        number=1, type=9, cpp_type=9, label=1,
        has_default_value=False, default_value=_b("").decode('utf-8'),
        message_type=None, enum_type=None, containing_type=None,
        is_extension=False, extension_scope=None,
        options=None),
      _descriptor.FieldDescriptor(
        name='values', full_name='otis.KeyValuePair.values', index=1,
        number=2, type=11, cpp_type=10, label=1,
        has_default_value=False, default_value=None,
        message_type=None, enum_type=None, containing_type=None,
        is_extension=False, extension_scope=None,
        options=None),
    ],
    extensions=[
    ],
    nested_types=[],
    enum_types=[
    ],
    options=None,
    is_extendable=False,
    syntax='proto3',
    extension_ranges=[],
    oneofs=[
    ],
    serialized_start=1249,
    serialized_end=1305,
  )
  
  
  _VALUE = _descriptor.Descriptor(
    name='Value',
    full_name='otis.Value',
    filename=None,
    file=DESCRIPTOR,
    containing_type=None,
    fields=[
      _descriptor.FieldDescriptor(
        name='doubles', full_name='otis.Value.doubles', index=0,
        number=1, type=1, cpp_type=5, label=3,
        has_default_value=False, default_value=[],
        message_type=None, enum_type=None, containing_type=None,
        is_extension=False, extension_scope=None,
        options=None),
      _descriptor.FieldDescriptor(
        name='floats', full_name='otis.Value.floats', index=1,
        number=2, type=2, cpp_type=6, label=3,
        has_default_value=False, default_value=[],
        message_type=None, enum_type=None, containing_type=None,
        is_extension=False, extension_scope=None,
        options=None),
      _descriptor.FieldDescriptor(
        name='int32s', full_name='otis.Value.int32s', index=2,
        number=3, type=5, cpp_type=1, label=3,
        has_default_value=False, default_value=[],
        message_type=None, enum_type=None, containing_type=None,
        is_extension=False, extension_scope=None,
        options=None),
      _descriptor.FieldDescriptor(
        name='int64s', full_name='otis.Value.int64s', index=3,
        number=4, type=3, cpp_type=2, label=3,
        has_default_value=False, default_value=[],
        message_type=None, enum_type=None, containing_type=None,
        is_extension=False, extension_scope=None,
        options=None),
      _descriptor.FieldDescriptor(
        name='uint32s', full_name='otis.Value.uint32s', index=4,
        number=5, type=13, cpp_type=3, label=3,
        has_default_value=False, default_value=[],
        message_type=None, enum_type=None, containing_type=None,
        is_extension=False, extension_scope=None,
        options=None),
      _descriptor.FieldDescriptor(
        name='uint64s', full_name='otis.Value.uint64s', index=5,
        number=6, type=4, cpp_type=4, label=3,
        has_default_value=False, default_value=[],
        message_type=None, enum_type=None, containing_type=None,
        is_extension=False, extension_scope=None,
        options=None),
      _descriptor.FieldDescriptor(
        name='sint32s', full_name='otis.Value.sint32s', index=6,
        number=7, type=17, cpp_type=1, label=3,
        has_default_value=False, default_value=[],
        message_type=None, enum_type=None, containing_type=None,
        is_extension=False, extension_scope=None,
        options=None),
      _descriptor.FieldDescriptor(
        name='sint64s', full_name='otis.Value.sint64s', index=7,
        number=8, type=18, cpp_type=2, label=3,
        has_default_value=False, default_value=[],
        message_type=None, enum_type=None, containing_type=None,
        is_extension=False, extension_scope=None,
        options=None),
      _descriptor.FieldDescriptor(
        name='fixed32s', full_name='otis.Value.fixed32s', index=8,
        number=9, type=7, cpp_type=3, label=3,
        has_default_value=False, default_value=[],
        message_type=None, enum_type=None, containing_type=None,
        is_extension=False, extension_scope=None,
        options=None),
      _descriptor.FieldDescriptor(
        name='fixed64s', full_name='otis.Value.fixed64s', index=9,
        number=10, type=6, cpp_type=4, label=3,
        has_default_value=False, default_value=[],
        message_type=None, enum_type=None, containing_type=None,
        is_extension=False, extension_scope=None,
        options=None),
      _descriptor.FieldDescriptor(
        name='sfixed32s', full_name='otis.Value.sfixed32s', index=10,
        number=11, type=15, cpp_type=1, label=3,
        has_default_value=False, default_value=[],
        message_type=None, enum_type=None, containing_type=None,
        is_extension=False, extension_scope=None,
        options=None),
      _descriptor.FieldDescriptor(
        name='sfixed64s', full_name='otis.Value.sfixed64s', index=11,
        number=12, type=16, cpp_type=2, label=3,
        has_default_value=False, default_value=[],
        message_type=None, enum_type=None, containing_type=None,
        is_extension=False, extension_scope=None,
        options=None),
      _descriptor.FieldDescriptor(
        name='bools', full_name='otis.Value.bools', index=12,
        number=13, type=8, cpp_type=7, label=3,
        has_default_value=False, default_value=[],
        message_type=None, enum_type=None, containing_type=None,
        is_extension=False, extension_scope=None,
        options=None),
      _descriptor.FieldDescriptor(
        name='strings', full_name='otis.Value.strings', index=13,
        number=14, type=9, cpp_type=9, label=3,
        has_default_value=False, default_value=[],
        message_type=None, enum_type=None, containing_type=None,
        is_extension=False, extension_scope=None,
        options=None),
      _descriptor.FieldDescriptor(
        name='raw_bytes', full_name='otis.Value.raw_bytes', index=14,
        number=15, type=12, cpp_type=9, label=3,
        has_default_value=False, default_value=[],
        message_type=None, enum_type=None, containing_type=None,
        is_extension=False, extension_scope=None,
        options=None),
      _descriptor.FieldDescriptor(
        name='type', full_name='otis.Value.type', index=15,
        number=16, type=14, cpp_type=8, label=1,
        has_default_value=False, default_value=0,
        message_type=None, enum_type=None, containing_type=None,
        is_extension=False, extension_scope=None,
        options=None),
    ],
    extensions=[
    ],
    nested_types=[],
    enum_types=[
    ],
    options=None,
    is_extendable=False,
    syntax='proto3',
    extension_ranges=[],
    oneofs=[
    ],
    serialized_start=1308,
    serialized_end=1599,
  )
  
  _PATH.fields_by_name['type'].enum_type = _PATH_PATHTYPE
  _PATH.fields_by_name['children'].message_type = _PATHCHILD
  _PATH_PATHTYPE.containing_type = _PATH
  _PATHCHILD_CHILDTYPE.containing_type = _PATHCHILD
  _PATHREQUEST.fields_by_name['paths'].message_type = _PATH
  _PATHREPLY.fields_by_name['paths'].message_type = _PATH
  _TIMESERIESREQUEST.fields_by_name['paths'].message_type = _PATH
  _TIMESERIESREPLY.fields_by_name['time_series'].message_type = _TIMESERIES
  _TIMESERIESREPLY.fields_by_name['paths'].message_type = _PATH
  _TIMESERIES_COLUMN.fields_by_name['type'].enum_type = _TYPE
  _TIMESERIES_COLUMN.containing_type = _TIMESERIES
  _TIMESERIES.fields_by_name['columns'].message_type = _TIMESERIES_COLUMN
  _TIMESERIES.fields_by_name['metadata'].message_type = _KEYVALUES
  _KEYVALUES.fields_by_name['key_values'].message_type = _KEYVALUEPAIR
  _KEYVALUEPAIR.fields_by_name['values'].message_type = _VALUE
  _VALUE.fields_by_name['type'].enum_type = _TYPE
  DESCRIPTOR.message_types_by_name['Path'] = _PATH
  DESCRIPTOR.message_types_by_name['PathChild'] = _PATHCHILD
  DESCRIPTOR.message_types_by_name['Request'] = _REQUEST
  DESCRIPTOR.message_types_by_name['Reply'] = _REPLY
  DESCRIPTOR.message_types_by_name['PingRequest'] = _PINGREQUEST
  DESCRIPTOR.message_types_by_name['PongReply'] = _PONGREPLY
  DESCRIPTOR.message_types_by_name['PathRequest'] = _PATHREQUEST
  DESCRIPTOR.message_types_by_name['PathReply'] = _PATHREPLY
  DESCRIPTOR.message_types_by_name['TimeSeriesRequest'] = _TIMESERIESREQUEST
  DESCRIPTOR.message_types_by_name['TimeSeriesReply'] = _TIMESERIESREPLY
  DESCRIPTOR.message_types_by_name['TimeSeries'] = _TIMESERIES
  DESCRIPTOR.message_types_by_name['KeyValues'] = _KEYVALUES
  DESCRIPTOR.message_types_by_name['KeyValuePair'] = _KEYVALUEPAIR
  DESCRIPTOR.message_types_by_name['Value'] = _VALUE
  DESCRIPTOR.enum_types_by_name['Type'] = _TYPE
  
  Path = _reflection.GeneratedProtocolMessageType('Path', (_message.Message,), dict(
    DESCRIPTOR = _PATH,
    __module__ = 'otis_pb2'
    # @@protoc_insertion_point(class_scope:otis.Path)
    ))
  _sym_db.RegisterMessage(Path)
  
  PathChild = _reflection.GeneratedProtocolMessageType('PathChild', (_message.Message,), dict(
    DESCRIPTOR = _PATHCHILD,
    __module__ = 'otis_pb2'
    # @@protoc_insertion_point(class_scope:otis.PathChild)
    ))
  _sym_db.RegisterMessage(PathChild)
  
  Request = _reflection.GeneratedProtocolMessageType('Request', (_message.Message,), dict(
    DESCRIPTOR = _REQUEST,
    __module__ = 'otis_pb2'
    # @@protoc_insertion_point(class_scope:otis.Request)
    ))
  _sym_db.RegisterMessage(Request)
  
  Reply = _reflection.GeneratedProtocolMessageType('Reply', (_message.Message,), dict(
    DESCRIPTOR = _REPLY,
    __module__ = 'otis_pb2'
    # @@protoc_insertion_point(class_scope:otis.Reply)
    ))
  _sym_db.RegisterMessage(Reply)
  
  PingRequest = _reflection.GeneratedProtocolMessageType('PingRequest', (_message.Message,), dict(
    DESCRIPTOR = _PINGREQUEST,
    __module__ = 'otis_pb2'
    # @@protoc_insertion_point(class_scope:otis.PingRequest)
    ))
  _sym_db.RegisterMessage(PingRequest)
  
  PongReply = _reflection.GeneratedProtocolMessageType('PongReply', (_message.Message,), dict(
    DESCRIPTOR = _PONGREPLY,
    __module__ = 'otis_pb2'
    # @@protoc_insertion_point(class_scope:otis.PongReply)
    ))
  _sym_db.RegisterMessage(PongReply)
  
  PathRequest = _reflection.GeneratedProtocolMessageType('PathRequest', (_message.Message,), dict(
    DESCRIPTOR = _PATHREQUEST,
    __module__ = 'otis_pb2'
    # @@protoc_insertion_point(class_scope:otis.PathRequest)
    ))
  _sym_db.RegisterMessage(PathRequest)
  
  PathReply = _reflection.GeneratedProtocolMessageType('PathReply', (_message.Message,), dict(
    DESCRIPTOR = _PATHREPLY,
    __module__ = 'otis_pb2'
    # @@protoc_insertion_point(class_scope:otis.PathReply)
    ))
  _sym_db.RegisterMessage(PathReply)
  
  TimeSeriesRequest = _reflection.GeneratedProtocolMessageType('TimeSeriesRequest', (_message.Message,), dict(
    DESCRIPTOR = _TIMESERIESREQUEST,
    __module__ = 'otis_pb2'
    # @@protoc_insertion_point(class_scope:otis.TimeSeriesRequest)
    ))
  _sym_db.RegisterMessage(TimeSeriesRequest)
  
  TimeSeriesReply = _reflection.GeneratedProtocolMessageType('TimeSeriesReply', (_message.Message,), dict(
    DESCRIPTOR = _TIMESERIESREPLY,
    __module__ = 'otis_pb2'
    # @@protoc_insertion_point(class_scope:otis.TimeSeriesReply)
    ))
  _sym_db.RegisterMessage(TimeSeriesReply)
  
  TimeSeries = _reflection.GeneratedProtocolMessageType('TimeSeries', (_message.Message,), dict(
  
    Column = _reflection.GeneratedProtocolMessageType('Column', (_message.Message,), dict(
      DESCRIPTOR = _TIMESERIES_COLUMN,
      __module__ = 'otis_pb2'
      # @@protoc_insertion_point(class_scope:otis.TimeSeries.Column)
      ))
    ,
    DESCRIPTOR = _TIMESERIES,
    __module__ = 'otis_pb2'
    # @@protoc_insertion_point(class_scope:otis.TimeSeries)
    ))
  _sym_db.RegisterMessage(TimeSeries)
  _sym_db.RegisterMessage(TimeSeries.Column)
  
  KeyValues = _reflection.GeneratedProtocolMessageType('KeyValues', (_message.Message,), dict(
    DESCRIPTOR = _KEYVALUES,
    __module__ = 'otis_pb2'
    # @@protoc_insertion_point(class_scope:otis.KeyValues)
    ))
  _sym_db.RegisterMessage(KeyValues)
  
  KeyValuePair = _reflection.GeneratedProtocolMessageType('KeyValuePair', (_message.Message,), dict(
    DESCRIPTOR = _KEYVALUEPAIR,
    __module__ = 'otis_pb2'
    # @@protoc_insertion_point(class_scope:otis.KeyValuePair)
    ))
  _sym_db.RegisterMessage(KeyValuePair)
  
  Value = _reflection.GeneratedProtocolMessageType('Value', (_message.Message,), dict(
    DESCRIPTOR = _VALUE,
    __module__ = 'otis_pb2'
    # @@protoc_insertion_point(class_scope:otis.Value)
    ))
  _sym_db.RegisterMessage(Value)
  
  
  DESCRIPTOR.has_options = True
  DESCRIPTOR._options = _descriptor._ParseOptions(descriptor_pb2.FileOptions(), _b('\n\016org.otis.proto'))
  import grpc
  from grpc.beta import implementations as beta_implementations
  from grpc.beta import interfaces as beta_interfaces
  from grpc.framework.common import cardinality
  from grpc.framework.interfaces.face import utilities as face_utilities
  
  
  class OtisRpcStub(object):
  
    def __init__(self, channel):
      """Constructor.
  
      Args:
        channel: A grpc.Channel.
      """
      self.RPC = channel.unary_unary(
          '/otis.OtisRpc/RPC',
          request_serializer=Request.SerializeToString,
          response_deserializer=Reply.FromString,
          )
      self.RpcStream = channel.unary_stream(
          '/otis.OtisRpc/RpcStream',
          request_serializer=Request.SerializeToString,
          response_deserializer=Reply.FromString,
          )
  
  
  class OtisRpcServicer(object):
  
    def RPC(self, request, context):
      context.set_code(grpc.StatusCode.UNIMPLEMENTED)
      context.set_details('Method not implemented!')
      raise NotImplementedError('Method not implemented!')
  
    def RpcStream(self, request, context):
      context.set_code(grpc.StatusCode.UNIMPLEMENTED)
      context.set_details('Method not implemented!')
      raise NotImplementedError('Method not implemented!')
  
  
  def add_OtisRpcServicer_to_server(servicer, server):
    rpc_method_handlers = {
        'RPC': grpc.unary_unary_rpc_method_handler(
            servicer.RPC,
            request_deserializer=Request.FromString,
            response_serializer=Reply.SerializeToString,
        ),
        'RpcStream': grpc.unary_stream_rpc_method_handler(
            servicer.RpcStream,
            request_deserializer=Request.FromString,
            response_serializer=Reply.SerializeToString,
        ),
    }
    generic_handler = grpc.method_handlers_generic_handler(
        'otis.OtisRpc', rpc_method_handlers)
    server.add_generic_rpc_handlers((generic_handler,))
  
  
  class BetaOtisRpcServicer(object):
    def RPC(self, request, context):
      context.code(beta_interfaces.StatusCode.UNIMPLEMENTED)
    def RpcStream(self, request, context):
      context.code(beta_interfaces.StatusCode.UNIMPLEMENTED)
  
  
  class BetaOtisRpcStub(object):
    def RPC(self, request, timeout, metadata=None, with_call=False, protocol_options=None):
      raise NotImplementedError()
    RPC.future = None
    def RpcStream(self, request, timeout, metadata=None, with_call=False, protocol_options=None):
      raise NotImplementedError()
  
  
  def beta_create_OtisRpc_server(servicer, pool=None, pool_size=None, default_timeout=None, maximum_timeout=None):
    request_deserializers = {
      ('otis.OtisRpc', 'RPC'): Request.FromString,
      ('otis.OtisRpc', 'RpcStream'): Request.FromString,
    }
    response_serializers = {
      ('otis.OtisRpc', 'RPC'): Reply.SerializeToString,
      ('otis.OtisRpc', 'RpcStream'): Reply.SerializeToString,
    }
    method_implementations = {
      ('otis.OtisRpc', 'RPC'): face_utilities.unary_unary_inline(servicer.RPC),
      ('otis.OtisRpc', 'RpcStream'): face_utilities.unary_stream_inline(servicer.RpcStream),
    }
    server_options = beta_implementations.server_options(request_deserializers=request_deserializers, response_serializers=response_serializers, thread_pool=pool, thread_pool_size=pool_size, default_timeout=default_timeout, maximum_timeout=maximum_timeout)
    return beta_implementations.server(method_implementations, options=server_options)
  
  
  def beta_create_OtisRpc_stub(channel, host=None, metadata_transformer=None, pool=None, pool_size=None):
    request_serializers = {
      ('otis.OtisRpc', 'RPC'): Request.SerializeToString,
      ('otis.OtisRpc', 'RpcStream'): Request.SerializeToString,
    }
    response_deserializers = {
      ('otis.OtisRpc', 'RPC'): Reply.FromString,
      ('otis.OtisRpc', 'RpcStream'): Reply.FromString,
    }
    cardinalities = {
      'RPC': cardinality.Cardinality.UNARY_UNARY,
      'RpcStream': cardinality.Cardinality.UNARY_STREAM,
    }
    stub_options = beta_implementations.stub_options(host=host, metadata_transformer=metadata_transformer, request_serializers=request_serializers, response_deserializers=response_deserializers, thread_pool=pool, thread_pool_size=pool_size)
    return beta_implementations.dynamic_stub(channel, 'otis.OtisRpc', cardinalities, options=stub_options)
  # @@protoc_insertion_point(module_scope)
  