# Generated by the protocol buffer compiler.  DO NOT EDIT!
# source: api/api_proto/users.proto

import sys
_b=sys.version_info[0]<3 and (lambda x:x) or (lambda x:x.encode('latin1'))
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
# @@protoc_insertion_point(imports)

_sym_db = _symbol_database.Default()


from api.api_proto import user_objects_pb2 as api_dot_api__proto_dot_user__objects__pb2
from api.api_proto import common_pb2 as api_dot_api__proto_dot_common__pb2


DESCRIPTOR = _descriptor.FileDescriptor(
  name='api/api_proto/users.proto',
  package='monorail',
  syntax='proto3',
  serialized_options=None,
  serialized_pb=_b('\n\x19\x61pi/api_proto/users.proto\x12\x08monorail\x1a api/api_proto/user_objects.proto\x1a\x1a\x61pi/api_proto/common.proto\"R\n\x1aListReferencedUsersRequest\x12\x0e\n\x06\x65mails\x18\x02 \x03(\t\x12$\n\tuser_refs\x18\x03 \x03(\x0b\x32\x11.monorail.UserRef\"<\n\x1bListReferencedUsersResponse\x12\x1d\n\x05users\x18\x01 \x03(\x0b\x32\x0e.monorail.User\"5\n\x0eGetUserRequest\x12#\n\x08user_ref\x18\x02 \x01(\x0b\x32\x11.monorail.UserRef\"<\n\x15GetMembershipsRequest\x12#\n\x08user_ref\x18\x02 \x01(\x0b\x32\x11.monorail.UserRef\"?\n\x16GetMembershipsResponse\x12%\n\ngroup_refs\x18\x01 \x03(\x0b\x32\x11.monorail.UserRef\"=\n\x16GetSavedQueriesRequest\x12#\n\x08user_ref\x18\x02 \x01(\x0b\x32\x11.monorail.UserRef\"F\n\x17GetSavedQueriesResponse\x12+\n\rsaved_queries\x18\x01 \x03(\x0b\x32\x14.monorail.SavedQuery\">\n\x17GetUserStarCountRequest\x12#\n\x08user_ref\x18\x02 \x01(\x0b\x32\x11.monorail.UserRef\".\n\x18GetUserStarCountResponse\x12\x12\n\nstar_count\x18\x01 \x01(\r\"G\n\x0fStarUserRequest\x12#\n\x08user_ref\x18\x02 \x01(\x0b\x32\x11.monorail.UserRef\x12\x0f\n\x07starred\x18\x03 \x01(\x08\"&\n\x10StarUserResponse\x12\x12\n\nstar_count\x18\x01 \x01(\r\"7\n\x1fSetExpandPermsPreferenceRequest\x12\x14\n\x0c\x65xpand_perms\x18\x02 \x01(\x08\"\"\n SetExpandPermsPreferenceResponse\":\n\x13GetUserPrefsRequest\x12#\n\x08user_ref\x18\x02 \x01(\x0b\x32\x11.monorail.UserRef\">\n\x14GetUserPrefsResponse\x12&\n\x05prefs\x18\x01 \x03(\x0b\x32\x17.monorail.UserPrefValue\"b\n\x13SetUserPrefsRequest\x12#\n\x08user_ref\x18\x02 \x01(\x0b\x32\x11.monorail.UserRef\x12&\n\x05prefs\x18\x03 \x03(\x0b\x32\x17.monorail.UserPrefValue\"\x16\n\x14SetUserPrefsResponse\"*\n\x19InviteLinkedParentRequest\x12\r\n\x05\x65mail\x18\x02 \x01(\t\"\x1c\n\x1aInviteLinkedParentResponse\")\n\x18\x41\x63\x63\x65ptLinkedChildRequest\x12\r\n\x05\x65mail\x18\x02 \x01(\t\"\x1b\n\x19\x41\x63\x63\x65ptLinkedChildResponse\"\\\n\x15UnlinkAccountsRequest\x12!\n\x06parent\x18\x02 \x01(\x0b\x32\x11.monorail.UserRef\x12 \n\x05\x63hild\x18\x03 \x01(\x0b\x32\x11.monorail.UserRef\"\x18\n\x16UnlinkAccountsResponse\"?\n\x17GetUsersProjectsRequest\x12$\n\tuser_refs\x18\x01 \x03(\x0b\x32\x11.monorail.UserRef\"J\n\x18GetUsersProjectsResponse\x12.\n\x0eusers_projects\x18\x01 \x03(\x0b\x32\x16.monorail.UserProjects\"#\n\x12\x45xpungeUserRequest\x12\r\n\x05\x65mail\x18\x01 \x01(\t\"\x15\n\x13\x45xpungeUserResponse2\xd3\t\n\x05Users\x12\x35\n\x07GetUser\x12\x18.monorail.GetUserRequest\x1a\x0e.monorail.User\"\x00\x12\x64\n\x13ListReferencedUsers\x12$.monorail.ListReferencedUsersRequest\x1a%.monorail.ListReferencedUsersResponse\"\x00\x12U\n\x0eGetMemberships\x12\x1f.monorail.GetMembershipsRequest\x1a .monorail.GetMembershipsResponse\"\x00\x12X\n\x0fGetSavedQueries\x12 .monorail.GetSavedQueriesRequest\x1a!.monorail.GetSavedQueriesResponse\"\x00\x12[\n\x10GetUserStarCount\x12!.monorail.GetUserStarCountRequest\x1a\".monorail.GetUserStarCountResponse\"\x00\x12\x43\n\x08StarUser\x12\x19.monorail.StarUserRequest\x1a\x1a.monorail.StarUserResponse\"\x00\x12O\n\x0cGetUserPrefs\x12\x1d.monorail.GetUserPrefsRequest\x1a\x1e.monorail.GetUserPrefsResponse\"\x00\x12O\n\x0cSetUserPrefs\x12\x1d.monorail.SetUserPrefsRequest\x1a\x1e.monorail.SetUserPrefsResponse\"\x00\x12s\n\x18SetExpandPermsPreference\x12).monorail.SetExpandPermsPreferenceRequest\x1a*.monorail.SetExpandPermsPreferenceResponse\"\x00\x12\x61\n\x12InviteLinkedParent\x12#.monorail.InviteLinkedParentRequest\x1a$.monorail.InviteLinkedParentResponse\"\x00\x12^\n\x11\x41\x63\x63\x65ptLinkedChild\x12\".monorail.AcceptLinkedChildRequest\x1a#.monorail.AcceptLinkedChildResponse\"\x00\x12U\n\x0eUnlinkAccounts\x12\x1f.monorail.UnlinkAccountsRequest\x1a .monorail.UnlinkAccountsResponse\"\x00\x12[\n\x10GetUsersProjects\x12!.monorail.GetUsersProjectsRequest\x1a\".monorail.GetUsersProjectsResponse\"\x00\x12L\n\x0b\x45xpungeUser\x12\x1c.monorail.ExpungeUserRequest\x1a\x1d.monorail.ExpungeUserResponse\"\x00\x62\x06proto3')
  ,
  dependencies=[api_dot_api__proto_dot_user__objects__pb2.DESCRIPTOR,api_dot_api__proto_dot_common__pb2.DESCRIPTOR,])




_LISTREFERENCEDUSERSREQUEST = _descriptor.Descriptor(
  name='ListReferencedUsersRequest',
  full_name='monorail.ListReferencedUsersRequest',
  filename=None,
  file=DESCRIPTOR,
  containing_type=None,
  fields=[
    _descriptor.FieldDescriptor(
      name='emails', full_name='monorail.ListReferencedUsersRequest.emails', index=0,
      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,
      serialized_options=None, file=DESCRIPTOR),
    _descriptor.FieldDescriptor(
      name='user_refs', full_name='monorail.ListReferencedUsersRequest.user_refs', index=1,
      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,
      serialized_options=None, file=DESCRIPTOR),
  ],
  extensions=[
  ],
  nested_types=[],
  enum_types=[
  ],
  serialized_options=None,
  is_extendable=False,
  syntax='proto3',
  extension_ranges=[],
  oneofs=[
  ],
  serialized_start=101,
  serialized_end=183,
)


_LISTREFERENCEDUSERSRESPONSE = _descriptor.Descriptor(
  name='ListReferencedUsersResponse',
  full_name='monorail.ListReferencedUsersResponse',
  filename=None,
  file=DESCRIPTOR,
  containing_type=None,
  fields=[
    _descriptor.FieldDescriptor(
      name='users', full_name='monorail.ListReferencedUsersResponse.users', 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,
      serialized_options=None, file=DESCRIPTOR),
  ],
  extensions=[
  ],
  nested_types=[],
  enum_types=[
  ],
  serialized_options=None,
  is_extendable=False,
  syntax='proto3',
  extension_ranges=[],
  oneofs=[
  ],
  serialized_start=185,
  serialized_end=245,
)


_GETUSERREQUEST = _descriptor.Descriptor(
  name='GetUserRequest',
  full_name='monorail.GetUserRequest',
  filename=None,
  file=DESCRIPTOR,
  containing_type=None,
  fields=[
    _descriptor.FieldDescriptor(
      name='user_ref', full_name='monorail.GetUserRequest.user_ref', index=0,
      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,
      serialized_options=None, file=DESCRIPTOR),
  ],
  extensions=[
  ],
  nested_types=[],
  enum_types=[
  ],
  serialized_options=None,
  is_extendable=False,
  syntax='proto3',
  extension_ranges=[],
  oneofs=[
  ],
  serialized_start=247,
  serialized_end=300,
)


_GETMEMBERSHIPSREQUEST = _descriptor.Descriptor(
  name='GetMembershipsRequest',
  full_name='monorail.GetMembershipsRequest',
  filename=None,
  file=DESCRIPTOR,
  containing_type=None,
  fields=[
    _descriptor.FieldDescriptor(
      name='user_ref', full_name='monorail.GetMembershipsRequest.user_ref', index=0,
      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,
      serialized_options=None, file=DESCRIPTOR),
  ],
  extensions=[
  ],
  nested_types=[],
  enum_types=[
  ],
  serialized_options=None,
  is_extendable=False,
  syntax='proto3',
  extension_ranges=[],
  oneofs=[
  ],
  serialized_start=302,
  serialized_end=362,
)


_GETMEMBERSHIPSRESPONSE = _descriptor.Descriptor(
  name='GetMembershipsResponse',
  full_name='monorail.GetMembershipsResponse',
  filename=None,
  file=DESCRIPTOR,
  containing_type=None,
  fields=[
    _descriptor.FieldDescriptor(
      name='group_refs', full_name='monorail.GetMembershipsResponse.group_refs', 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,
      serialized_options=None, file=DESCRIPTOR),
  ],
  extensions=[
  ],
  nested_types=[],
  enum_types=[
  ],
  serialized_options=None,
  is_extendable=False,
  syntax='proto3',
  extension_ranges=[],
  oneofs=[
  ],
  serialized_start=364,
  serialized_end=427,
)


_GETSAVEDQUERIESREQUEST = _descriptor.Descriptor(
  name='GetSavedQueriesRequest',
  full_name='monorail.GetSavedQueriesRequest',
  filename=None,
  file=DESCRIPTOR,
  containing_type=None,
  fields=[
    _descriptor.FieldDescriptor(
      name='user_ref', full_name='monorail.GetSavedQueriesRequest.user_ref', index=0,
      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,
      serialized_options=None, file=DESCRIPTOR),
  ],
  extensions=[
  ],
  nested_types=[],
  enum_types=[
  ],
  serialized_options=None,
  is_extendable=False,
  syntax='proto3',
  extension_ranges=[],
  oneofs=[
  ],
  serialized_start=429,
  serialized_end=490,
)


_GETSAVEDQUERIESRESPONSE = _descriptor.Descriptor(
  name='GetSavedQueriesResponse',
  full_name='monorail.GetSavedQueriesResponse',
  filename=None,
  file=DESCRIPTOR,
  containing_type=None,
  fields=[
    _descriptor.FieldDescriptor(
      name='saved_queries', full_name='monorail.GetSavedQueriesResponse.saved_queries', 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,
      serialized_options=None, file=DESCRIPTOR),
  ],
  extensions=[
  ],
  nested_types=[],
  enum_types=[
  ],
  serialized_options=None,
  is_extendable=False,
  syntax='proto3',
  extension_ranges=[],
  oneofs=[
  ],
  serialized_start=492,
  serialized_end=562,
)


_GETUSERSTARCOUNTREQUEST = _descriptor.Descriptor(
  name='GetUserStarCountRequest',
  full_name='monorail.GetUserStarCountRequest',
  filename=None,
  file=DESCRIPTOR,
  containing_type=None,
  fields=[
    _descriptor.FieldDescriptor(
      name='user_ref', full_name='monorail.GetUserStarCountRequest.user_ref', index=0,
      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,
      serialized_options=None, file=DESCRIPTOR),
  ],
  extensions=[
  ],
  nested_types=[],
  enum_types=[
  ],
  serialized_options=None,
  is_extendable=False,
  syntax='proto3',
  extension_ranges=[],
  oneofs=[
  ],
  serialized_start=564,
  serialized_end=626,
)


_GETUSERSTARCOUNTRESPONSE = _descriptor.Descriptor(
  name='GetUserStarCountResponse',
  full_name='monorail.GetUserStarCountResponse',
  filename=None,
  file=DESCRIPTOR,
  containing_type=None,
  fields=[
    _descriptor.FieldDescriptor(
      name='star_count', full_name='monorail.GetUserStarCountResponse.star_count', index=0,
      number=1, 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,
      serialized_options=None, file=DESCRIPTOR),
  ],
  extensions=[
  ],
  nested_types=[],
  enum_types=[
  ],
  serialized_options=None,
  is_extendable=False,
  syntax='proto3',
  extension_ranges=[],
  oneofs=[
  ],
  serialized_start=628,
  serialized_end=674,
)


_STARUSERREQUEST = _descriptor.Descriptor(
  name='StarUserRequest',
  full_name='monorail.StarUserRequest',
  filename=None,
  file=DESCRIPTOR,
  containing_type=None,
  fields=[
    _descriptor.FieldDescriptor(
      name='user_ref', full_name='monorail.StarUserRequest.user_ref', index=0,
      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,
      serialized_options=None, file=DESCRIPTOR),
    _descriptor.FieldDescriptor(
      name='starred', full_name='monorail.StarUserRequest.starred', index=1,
      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,
      serialized_options=None, file=DESCRIPTOR),
  ],
  extensions=[
  ],
  nested_types=[],
  enum_types=[
  ],
  serialized_options=None,
  is_extendable=False,
  syntax='proto3',
  extension_ranges=[],
  oneofs=[
  ],
  serialized_start=676,
  serialized_end=747,
)


_STARUSERRESPONSE = _descriptor.Descriptor(
  name='StarUserResponse',
  full_name='monorail.StarUserResponse',
  filename=None,
  file=DESCRIPTOR,
  containing_type=None,
  fields=[
    _descriptor.FieldDescriptor(
      name='star_count', full_name='monorail.StarUserResponse.star_count', index=0,
      number=1, 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,
      serialized_options=None, file=DESCRIPTOR),
  ],
  extensions=[
  ],
  nested_types=[],
  enum_types=[
  ],
  serialized_options=None,
  is_extendable=False,
  syntax='proto3',
  extension_ranges=[],
  oneofs=[
  ],
  serialized_start=749,
  serialized_end=787,
)


_SETEXPANDPERMSPREFERENCEREQUEST = _descriptor.Descriptor(
  name='SetExpandPermsPreferenceRequest',
  full_name='monorail.SetExpandPermsPreferenceRequest',
  filename=None,
  file=DESCRIPTOR,
  containing_type=None,
  fields=[
    _descriptor.FieldDescriptor(
      name='expand_perms', full_name='monorail.SetExpandPermsPreferenceRequest.expand_perms', index=0,
      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,
      serialized_options=None, file=DESCRIPTOR),
  ],
  extensions=[
  ],
  nested_types=[],
  enum_types=[
  ],
  serialized_options=None,
  is_extendable=False,
  syntax='proto3',
  extension_ranges=[],
  oneofs=[
  ],
  serialized_start=789,
  serialized_end=844,
)


_SETEXPANDPERMSPREFERENCERESPONSE = _descriptor.Descriptor(
  name='SetExpandPermsPreferenceResponse',
  full_name='monorail.SetExpandPermsPreferenceResponse',
  filename=None,
  file=DESCRIPTOR,
  containing_type=None,
  fields=[
  ],
  extensions=[
  ],
  nested_types=[],
  enum_types=[
  ],
  serialized_options=None,
  is_extendable=False,
  syntax='proto3',
  extension_ranges=[],
  oneofs=[
  ],
  serialized_start=846,
  serialized_end=880,
)


_GETUSERPREFSREQUEST = _descriptor.Descriptor(
  name='GetUserPrefsRequest',
  full_name='monorail.GetUserPrefsRequest',
  filename=None,
  file=DESCRIPTOR,
  containing_type=None,
  fields=[
    _descriptor.FieldDescriptor(
      name='user_ref', full_name='monorail.GetUserPrefsRequest.user_ref', index=0,
      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,
      serialized_options=None, file=DESCRIPTOR),
  ],
  extensions=[
  ],
  nested_types=[],
  enum_types=[
  ],
  serialized_options=None,
  is_extendable=False,
  syntax='proto3',
  extension_ranges=[],
  oneofs=[
  ],
  serialized_start=882,
  serialized_end=940,
)


_GETUSERPREFSRESPONSE = _descriptor.Descriptor(
  name='GetUserPrefsResponse',
  full_name='monorail.GetUserPrefsResponse',
  filename=None,
  file=DESCRIPTOR,
  containing_type=None,
  fields=[
    _descriptor.FieldDescriptor(
      name='prefs', full_name='monorail.GetUserPrefsResponse.prefs', 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,
      serialized_options=None, file=DESCRIPTOR),
  ],
  extensions=[
  ],
  nested_types=[],
  enum_types=[
  ],
  serialized_options=None,
  is_extendable=False,
  syntax='proto3',
  extension_ranges=[],
  oneofs=[
  ],
  serialized_start=942,
  serialized_end=1004,
)


_SETUSERPREFSREQUEST = _descriptor.Descriptor(
  name='SetUserPrefsRequest',
  full_name='monorail.SetUserPrefsRequest',
  filename=None,
  file=DESCRIPTOR,
  containing_type=None,
  fields=[
    _descriptor.FieldDescriptor(
      name='user_ref', full_name='monorail.SetUserPrefsRequest.user_ref', index=0,
      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,
      serialized_options=None, file=DESCRIPTOR),
    _descriptor.FieldDescriptor(
      name='prefs', full_name='monorail.SetUserPrefsRequest.prefs', index=1,
      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,
      serialized_options=None, file=DESCRIPTOR),
  ],
  extensions=[
  ],
  nested_types=[],
  enum_types=[
  ],
  serialized_options=None,
  is_extendable=False,
  syntax='proto3',
  extension_ranges=[],
  oneofs=[
  ],
  serialized_start=1006,
  serialized_end=1104,
)


_SETUSERPREFSRESPONSE = _descriptor.Descriptor(
  name='SetUserPrefsResponse',
  full_name='monorail.SetUserPrefsResponse',
  filename=None,
  file=DESCRIPTOR,
  containing_type=None,
  fields=[
  ],
  extensions=[
  ],
  nested_types=[],
  enum_types=[
  ],
  serialized_options=None,
  is_extendable=False,
  syntax='proto3',
  extension_ranges=[],
  oneofs=[
  ],
  serialized_start=1106,
  serialized_end=1128,
)


_INVITELINKEDPARENTREQUEST = _descriptor.Descriptor(
  name='InviteLinkedParentRequest',
  full_name='monorail.InviteLinkedParentRequest',
  filename=None,
  file=DESCRIPTOR,
  containing_type=None,
  fields=[
    _descriptor.FieldDescriptor(
      name='email', full_name='monorail.InviteLinkedParentRequest.email', index=0,
      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,
      serialized_options=None, file=DESCRIPTOR),
  ],
  extensions=[
  ],
  nested_types=[],
  enum_types=[
  ],
  serialized_options=None,
  is_extendable=False,
  syntax='proto3',
  extension_ranges=[],
  oneofs=[
  ],
  serialized_start=1130,
  serialized_end=1172,
)


_INVITELINKEDPARENTRESPONSE = _descriptor.Descriptor(
  name='InviteLinkedParentResponse',
  full_name='monorail.InviteLinkedParentResponse',
  filename=None,
  file=DESCRIPTOR,
  containing_type=None,
  fields=[
  ],
  extensions=[
  ],
  nested_types=[],
  enum_types=[
  ],
  serialized_options=None,
  is_extendable=False,
  syntax='proto3',
  extension_ranges=[],
  oneofs=[
  ],
  serialized_start=1174,
  serialized_end=1202,
)


_ACCEPTLINKEDCHILDREQUEST = _descriptor.Descriptor(
  name='AcceptLinkedChildRequest',
  full_name='monorail.AcceptLinkedChildRequest',
  filename=None,
  file=DESCRIPTOR,
  containing_type=None,
  fields=[
    _descriptor.FieldDescriptor(
      name='email', full_name='monorail.AcceptLinkedChildRequest.email', index=0,
      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,
      serialized_options=None, file=DESCRIPTOR),
  ],
  extensions=[
  ],
  nested_types=[],
  enum_types=[
  ],
  serialized_options=None,
  is_extendable=False,
  syntax='proto3',
  extension_ranges=[],
  oneofs=[
  ],
  serialized_start=1204,
  serialized_end=1245,
)


_ACCEPTLINKEDCHILDRESPONSE = _descriptor.Descriptor(
  name='AcceptLinkedChildResponse',
  full_name='monorail.AcceptLinkedChildResponse',
  filename=None,
  file=DESCRIPTOR,
  containing_type=None,
  fields=[
  ],
  extensions=[
  ],
  nested_types=[],
  enum_types=[
  ],
  serialized_options=None,
  is_extendable=False,
  syntax='proto3',
  extension_ranges=[],
  oneofs=[
  ],
  serialized_start=1247,
  serialized_end=1274,
)


_UNLINKACCOUNTSREQUEST = _descriptor.Descriptor(
  name='UnlinkAccountsRequest',
  full_name='monorail.UnlinkAccountsRequest',
  filename=None,
  file=DESCRIPTOR,
  containing_type=None,
  fields=[
    _descriptor.FieldDescriptor(
      name='parent', full_name='monorail.UnlinkAccountsRequest.parent', index=0,
      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,
      serialized_options=None, file=DESCRIPTOR),
    _descriptor.FieldDescriptor(
      name='child', full_name='monorail.UnlinkAccountsRequest.child', index=1,
      number=3, 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,
      serialized_options=None, file=DESCRIPTOR),
  ],
  extensions=[
  ],
  nested_types=[],
  enum_types=[
  ],
  serialized_options=None,
  is_extendable=False,
  syntax='proto3',
  extension_ranges=[],
  oneofs=[
  ],
  serialized_start=1276,
  serialized_end=1368,
)


_UNLINKACCOUNTSRESPONSE = _descriptor.Descriptor(
  name='UnlinkAccountsResponse',
  full_name='monorail.UnlinkAccountsResponse',
  filename=None,
  file=DESCRIPTOR,
  containing_type=None,
  fields=[
  ],
  extensions=[
  ],
  nested_types=[],
  enum_types=[
  ],
  serialized_options=None,
  is_extendable=False,
  syntax='proto3',
  extension_ranges=[],
  oneofs=[
  ],
  serialized_start=1370,
  serialized_end=1394,
)


_GETUSERSPROJECTSREQUEST = _descriptor.Descriptor(
  name='GetUsersProjectsRequest',
  full_name='monorail.GetUsersProjectsRequest',
  filename=None,
  file=DESCRIPTOR,
  containing_type=None,
  fields=[
    _descriptor.FieldDescriptor(
      name='user_refs', full_name='monorail.GetUsersProjectsRequest.user_refs', 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,
      serialized_options=None, file=DESCRIPTOR),
  ],
  extensions=[
  ],
  nested_types=[],
  enum_types=[
  ],
  serialized_options=None,
  is_extendable=False,
  syntax='proto3',
  extension_ranges=[],
  oneofs=[
  ],
  serialized_start=1396,
  serialized_end=1459,
)


_GETUSERSPROJECTSRESPONSE = _descriptor.Descriptor(
  name='GetUsersProjectsResponse',
  full_name='monorail.GetUsersProjectsResponse',
  filename=None,
  file=DESCRIPTOR,
  containing_type=None,
  fields=[
    _descriptor.FieldDescriptor(
      name='users_projects', full_name='monorail.GetUsersProjectsResponse.users_projects', 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,
      serialized_options=None, file=DESCRIPTOR),
  ],
  extensions=[
  ],
  nested_types=[],
  enum_types=[
  ],
  serialized_options=None,
  is_extendable=False,
  syntax='proto3',
  extension_ranges=[],
  oneofs=[
  ],
  serialized_start=1461,
  serialized_end=1535,
)


_EXPUNGEUSERREQUEST = _descriptor.Descriptor(
  name='ExpungeUserRequest',
  full_name='monorail.ExpungeUserRequest',
  filename=None,
  file=DESCRIPTOR,
  containing_type=None,
  fields=[
    _descriptor.FieldDescriptor(
      name='email', full_name='monorail.ExpungeUserRequest.email', 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,
      serialized_options=None, file=DESCRIPTOR),
  ],
  extensions=[
  ],
  nested_types=[],
  enum_types=[
  ],
  serialized_options=None,
  is_extendable=False,
  syntax='proto3',
  extension_ranges=[],
  oneofs=[
  ],
  serialized_start=1537,
  serialized_end=1572,
)


_EXPUNGEUSERRESPONSE = _descriptor.Descriptor(
  name='ExpungeUserResponse',
  full_name='monorail.ExpungeUserResponse',
  filename=None,
  file=DESCRIPTOR,
  containing_type=None,
  fields=[
  ],
  extensions=[
  ],
  nested_types=[],
  enum_types=[
  ],
  serialized_options=None,
  is_extendable=False,
  syntax='proto3',
  extension_ranges=[],
  oneofs=[
  ],
  serialized_start=1574,
  serialized_end=1595,
)

_LISTREFERENCEDUSERSREQUEST.fields_by_name['user_refs'].message_type = api_dot_api__proto_dot_common__pb2._USERREF
_LISTREFERENCEDUSERSRESPONSE.fields_by_name['users'].message_type = api_dot_api__proto_dot_user__objects__pb2._USER
_GETUSERREQUEST.fields_by_name['user_ref'].message_type = api_dot_api__proto_dot_common__pb2._USERREF
_GETMEMBERSHIPSREQUEST.fields_by_name['user_ref'].message_type = api_dot_api__proto_dot_common__pb2._USERREF
_GETMEMBERSHIPSRESPONSE.fields_by_name['group_refs'].message_type = api_dot_api__proto_dot_common__pb2._USERREF
_GETSAVEDQUERIESREQUEST.fields_by_name['user_ref'].message_type = api_dot_api__proto_dot_common__pb2._USERREF
_GETSAVEDQUERIESRESPONSE.fields_by_name['saved_queries'].message_type = api_dot_api__proto_dot_common__pb2._SAVEDQUERY
_GETUSERSTARCOUNTREQUEST.fields_by_name['user_ref'].message_type = api_dot_api__proto_dot_common__pb2._USERREF
_STARUSERREQUEST.fields_by_name['user_ref'].message_type = api_dot_api__proto_dot_common__pb2._USERREF
_GETUSERPREFSREQUEST.fields_by_name['user_ref'].message_type = api_dot_api__proto_dot_common__pb2._USERREF
_GETUSERPREFSRESPONSE.fields_by_name['prefs'].message_type = api_dot_api__proto_dot_user__objects__pb2._USERPREFVALUE
_SETUSERPREFSREQUEST.fields_by_name['user_ref'].message_type = api_dot_api__proto_dot_common__pb2._USERREF
_SETUSERPREFSREQUEST.fields_by_name['prefs'].message_type = api_dot_api__proto_dot_user__objects__pb2._USERPREFVALUE
_UNLINKACCOUNTSREQUEST.fields_by_name['parent'].message_type = api_dot_api__proto_dot_common__pb2._USERREF
_UNLINKACCOUNTSREQUEST.fields_by_name['child'].message_type = api_dot_api__proto_dot_common__pb2._USERREF
_GETUSERSPROJECTSREQUEST.fields_by_name['user_refs'].message_type = api_dot_api__proto_dot_common__pb2._USERREF
_GETUSERSPROJECTSRESPONSE.fields_by_name['users_projects'].message_type = api_dot_api__proto_dot_user__objects__pb2._USERPROJECTS
DESCRIPTOR.message_types_by_name['ListReferencedUsersRequest'] = _LISTREFERENCEDUSERSREQUEST
DESCRIPTOR.message_types_by_name['ListReferencedUsersResponse'] = _LISTREFERENCEDUSERSRESPONSE
DESCRIPTOR.message_types_by_name['GetUserRequest'] = _GETUSERREQUEST
DESCRIPTOR.message_types_by_name['GetMembershipsRequest'] = _GETMEMBERSHIPSREQUEST
DESCRIPTOR.message_types_by_name['GetMembershipsResponse'] = _GETMEMBERSHIPSRESPONSE
DESCRIPTOR.message_types_by_name['GetSavedQueriesRequest'] = _GETSAVEDQUERIESREQUEST
DESCRIPTOR.message_types_by_name['GetSavedQueriesResponse'] = _GETSAVEDQUERIESRESPONSE
DESCRIPTOR.message_types_by_name['GetUserStarCountRequest'] = _GETUSERSTARCOUNTREQUEST
DESCRIPTOR.message_types_by_name['GetUserStarCountResponse'] = _GETUSERSTARCOUNTRESPONSE
DESCRIPTOR.message_types_by_name['StarUserRequest'] = _STARUSERREQUEST
DESCRIPTOR.message_types_by_name['StarUserResponse'] = _STARUSERRESPONSE
DESCRIPTOR.message_types_by_name['SetExpandPermsPreferenceRequest'] = _SETEXPANDPERMSPREFERENCEREQUEST
DESCRIPTOR.message_types_by_name['SetExpandPermsPreferenceResponse'] = _SETEXPANDPERMSPREFERENCERESPONSE
DESCRIPTOR.message_types_by_name['GetUserPrefsRequest'] = _GETUSERPREFSREQUEST
DESCRIPTOR.message_types_by_name['GetUserPrefsResponse'] = _GETUSERPREFSRESPONSE
DESCRIPTOR.message_types_by_name['SetUserPrefsRequest'] = _SETUSERPREFSREQUEST
DESCRIPTOR.message_types_by_name['SetUserPrefsResponse'] = _SETUSERPREFSRESPONSE
DESCRIPTOR.message_types_by_name['InviteLinkedParentRequest'] = _INVITELINKEDPARENTREQUEST
DESCRIPTOR.message_types_by_name['InviteLinkedParentResponse'] = _INVITELINKEDPARENTRESPONSE
DESCRIPTOR.message_types_by_name['AcceptLinkedChildRequest'] = _ACCEPTLINKEDCHILDREQUEST
DESCRIPTOR.message_types_by_name['AcceptLinkedChildResponse'] = _ACCEPTLINKEDCHILDRESPONSE
DESCRIPTOR.message_types_by_name['UnlinkAccountsRequest'] = _UNLINKACCOUNTSREQUEST
DESCRIPTOR.message_types_by_name['UnlinkAccountsResponse'] = _UNLINKACCOUNTSRESPONSE
DESCRIPTOR.message_types_by_name['GetUsersProjectsRequest'] = _GETUSERSPROJECTSREQUEST
DESCRIPTOR.message_types_by_name['GetUsersProjectsResponse'] = _GETUSERSPROJECTSRESPONSE
DESCRIPTOR.message_types_by_name['ExpungeUserRequest'] = _EXPUNGEUSERREQUEST
DESCRIPTOR.message_types_by_name['ExpungeUserResponse'] = _EXPUNGEUSERRESPONSE
_sym_db.RegisterFileDescriptor(DESCRIPTOR)

ListReferencedUsersRequest = _reflection.GeneratedProtocolMessageType('ListReferencedUsersRequest', (_message.Message,), dict(
  DESCRIPTOR = _LISTREFERENCEDUSERSREQUEST,
  __module__ = 'api.api_proto.users_pb2'
  # @@protoc_insertion_point(class_scope:monorail.ListReferencedUsersRequest)
  ))
_sym_db.RegisterMessage(ListReferencedUsersRequest)

ListReferencedUsersResponse = _reflection.GeneratedProtocolMessageType('ListReferencedUsersResponse', (_message.Message,), dict(
  DESCRIPTOR = _LISTREFERENCEDUSERSRESPONSE,
  __module__ = 'api.api_proto.users_pb2'
  # @@protoc_insertion_point(class_scope:monorail.ListReferencedUsersResponse)
  ))
_sym_db.RegisterMessage(ListReferencedUsersResponse)

GetUserRequest = _reflection.GeneratedProtocolMessageType('GetUserRequest', (_message.Message,), dict(
  DESCRIPTOR = _GETUSERREQUEST,
  __module__ = 'api.api_proto.users_pb2'
  # @@protoc_insertion_point(class_scope:monorail.GetUserRequest)
  ))
_sym_db.RegisterMessage(GetUserRequest)

GetMembershipsRequest = _reflection.GeneratedProtocolMessageType('GetMembershipsRequest', (_message.Message,), dict(
  DESCRIPTOR = _GETMEMBERSHIPSREQUEST,
  __module__ = 'api.api_proto.users_pb2'
  # @@protoc_insertion_point(class_scope:monorail.GetMembershipsRequest)
  ))
_sym_db.RegisterMessage(GetMembershipsRequest)

GetMembershipsResponse = _reflection.GeneratedProtocolMessageType('GetMembershipsResponse', (_message.Message,), dict(
  DESCRIPTOR = _GETMEMBERSHIPSRESPONSE,
  __module__ = 'api.api_proto.users_pb2'
  # @@protoc_insertion_point(class_scope:monorail.GetMembershipsResponse)
  ))
_sym_db.RegisterMessage(GetMembershipsResponse)

GetSavedQueriesRequest = _reflection.GeneratedProtocolMessageType('GetSavedQueriesRequest', (_message.Message,), dict(
  DESCRIPTOR = _GETSAVEDQUERIESREQUEST,
  __module__ = 'api.api_proto.users_pb2'
  # @@protoc_insertion_point(class_scope:monorail.GetSavedQueriesRequest)
  ))
_sym_db.RegisterMessage(GetSavedQueriesRequest)

GetSavedQueriesResponse = _reflection.GeneratedProtocolMessageType('GetSavedQueriesResponse', (_message.Message,), dict(
  DESCRIPTOR = _GETSAVEDQUERIESRESPONSE,
  __module__ = 'api.api_proto.users_pb2'
  # @@protoc_insertion_point(class_scope:monorail.GetSavedQueriesResponse)
  ))
_sym_db.RegisterMessage(GetSavedQueriesResponse)

GetUserStarCountRequest = _reflection.GeneratedProtocolMessageType('GetUserStarCountRequest', (_message.Message,), dict(
  DESCRIPTOR = _GETUSERSTARCOUNTREQUEST,
  __module__ = 'api.api_proto.users_pb2'
  # @@protoc_insertion_point(class_scope:monorail.GetUserStarCountRequest)
  ))
_sym_db.RegisterMessage(GetUserStarCountRequest)

GetUserStarCountResponse = _reflection.GeneratedProtocolMessageType('GetUserStarCountResponse', (_message.Message,), dict(
  DESCRIPTOR = _GETUSERSTARCOUNTRESPONSE,
  __module__ = 'api.api_proto.users_pb2'
  # @@protoc_insertion_point(class_scope:monorail.GetUserStarCountResponse)
  ))
_sym_db.RegisterMessage(GetUserStarCountResponse)

StarUserRequest = _reflection.GeneratedProtocolMessageType('StarUserRequest', (_message.Message,), dict(
  DESCRIPTOR = _STARUSERREQUEST,
  __module__ = 'api.api_proto.users_pb2'
  # @@protoc_insertion_point(class_scope:monorail.StarUserRequest)
  ))
_sym_db.RegisterMessage(StarUserRequest)

StarUserResponse = _reflection.GeneratedProtocolMessageType('StarUserResponse', (_message.Message,), dict(
  DESCRIPTOR = _STARUSERRESPONSE,
  __module__ = 'api.api_proto.users_pb2'
  # @@protoc_insertion_point(class_scope:monorail.StarUserResponse)
  ))
_sym_db.RegisterMessage(StarUserResponse)

SetExpandPermsPreferenceRequest = _reflection.GeneratedProtocolMessageType('SetExpandPermsPreferenceRequest', (_message.Message,), dict(
  DESCRIPTOR = _SETEXPANDPERMSPREFERENCEREQUEST,
  __module__ = 'api.api_proto.users_pb2'
  # @@protoc_insertion_point(class_scope:monorail.SetExpandPermsPreferenceRequest)
  ))
_sym_db.RegisterMessage(SetExpandPermsPreferenceRequest)

SetExpandPermsPreferenceResponse = _reflection.GeneratedProtocolMessageType('SetExpandPermsPreferenceResponse', (_message.Message,), dict(
  DESCRIPTOR = _SETEXPANDPERMSPREFERENCERESPONSE,
  __module__ = 'api.api_proto.users_pb2'
  # @@protoc_insertion_point(class_scope:monorail.SetExpandPermsPreferenceResponse)
  ))
_sym_db.RegisterMessage(SetExpandPermsPreferenceResponse)

GetUserPrefsRequest = _reflection.GeneratedProtocolMessageType('GetUserPrefsRequest', (_message.Message,), dict(
  DESCRIPTOR = _GETUSERPREFSREQUEST,
  __module__ = 'api.api_proto.users_pb2'
  # @@protoc_insertion_point(class_scope:monorail.GetUserPrefsRequest)
  ))
_sym_db.RegisterMessage(GetUserPrefsRequest)

GetUserPrefsResponse = _reflection.GeneratedProtocolMessageType('GetUserPrefsResponse', (_message.Message,), dict(
  DESCRIPTOR = _GETUSERPREFSRESPONSE,
  __module__ = 'api.api_proto.users_pb2'
  # @@protoc_insertion_point(class_scope:monorail.GetUserPrefsResponse)
  ))
_sym_db.RegisterMessage(GetUserPrefsResponse)

SetUserPrefsRequest = _reflection.GeneratedProtocolMessageType('SetUserPrefsRequest', (_message.Message,), dict(
  DESCRIPTOR = _SETUSERPREFSREQUEST,
  __module__ = 'api.api_proto.users_pb2'
  # @@protoc_insertion_point(class_scope:monorail.SetUserPrefsRequest)
  ))
_sym_db.RegisterMessage(SetUserPrefsRequest)

SetUserPrefsResponse = _reflection.GeneratedProtocolMessageType('SetUserPrefsResponse', (_message.Message,), dict(
  DESCRIPTOR = _SETUSERPREFSRESPONSE,
  __module__ = 'api.api_proto.users_pb2'
  # @@protoc_insertion_point(class_scope:monorail.SetUserPrefsResponse)
  ))
_sym_db.RegisterMessage(SetUserPrefsResponse)

InviteLinkedParentRequest = _reflection.GeneratedProtocolMessageType('InviteLinkedParentRequest', (_message.Message,), dict(
  DESCRIPTOR = _INVITELINKEDPARENTREQUEST,
  __module__ = 'api.api_proto.users_pb2'
  # @@protoc_insertion_point(class_scope:monorail.InviteLinkedParentRequest)
  ))
_sym_db.RegisterMessage(InviteLinkedParentRequest)

InviteLinkedParentResponse = _reflection.GeneratedProtocolMessageType('InviteLinkedParentResponse', (_message.Message,), dict(
  DESCRIPTOR = _INVITELINKEDPARENTRESPONSE,
  __module__ = 'api.api_proto.users_pb2'
  # @@protoc_insertion_point(class_scope:monorail.InviteLinkedParentResponse)
  ))
_sym_db.RegisterMessage(InviteLinkedParentResponse)

AcceptLinkedChildRequest = _reflection.GeneratedProtocolMessageType('AcceptLinkedChildRequest', (_message.Message,), dict(
  DESCRIPTOR = _ACCEPTLINKEDCHILDREQUEST,
  __module__ = 'api.api_proto.users_pb2'
  # @@protoc_insertion_point(class_scope:monorail.AcceptLinkedChildRequest)
  ))
_sym_db.RegisterMessage(AcceptLinkedChildRequest)

AcceptLinkedChildResponse = _reflection.GeneratedProtocolMessageType('AcceptLinkedChildResponse', (_message.Message,), dict(
  DESCRIPTOR = _ACCEPTLINKEDCHILDRESPONSE,
  __module__ = 'api.api_proto.users_pb2'
  # @@protoc_insertion_point(class_scope:monorail.AcceptLinkedChildResponse)
  ))
_sym_db.RegisterMessage(AcceptLinkedChildResponse)

UnlinkAccountsRequest = _reflection.GeneratedProtocolMessageType('UnlinkAccountsRequest', (_message.Message,), dict(
  DESCRIPTOR = _UNLINKACCOUNTSREQUEST,
  __module__ = 'api.api_proto.users_pb2'
  # @@protoc_insertion_point(class_scope:monorail.UnlinkAccountsRequest)
  ))
_sym_db.RegisterMessage(UnlinkAccountsRequest)

UnlinkAccountsResponse = _reflection.GeneratedProtocolMessageType('UnlinkAccountsResponse', (_message.Message,), dict(
  DESCRIPTOR = _UNLINKACCOUNTSRESPONSE,
  __module__ = 'api.api_proto.users_pb2'
  # @@protoc_insertion_point(class_scope:monorail.UnlinkAccountsResponse)
  ))
_sym_db.RegisterMessage(UnlinkAccountsResponse)

GetUsersProjectsRequest = _reflection.GeneratedProtocolMessageType('GetUsersProjectsRequest', (_message.Message,), dict(
  DESCRIPTOR = _GETUSERSPROJECTSREQUEST,
  __module__ = 'api.api_proto.users_pb2'
  # @@protoc_insertion_point(class_scope:monorail.GetUsersProjectsRequest)
  ))
_sym_db.RegisterMessage(GetUsersProjectsRequest)

GetUsersProjectsResponse = _reflection.GeneratedProtocolMessageType('GetUsersProjectsResponse', (_message.Message,), dict(
  DESCRIPTOR = _GETUSERSPROJECTSRESPONSE,
  __module__ = 'api.api_proto.users_pb2'
  # @@protoc_insertion_point(class_scope:monorail.GetUsersProjectsResponse)
  ))
_sym_db.RegisterMessage(GetUsersProjectsResponse)

ExpungeUserRequest = _reflection.GeneratedProtocolMessageType('ExpungeUserRequest', (_message.Message,), dict(
  DESCRIPTOR = _EXPUNGEUSERREQUEST,
  __module__ = 'api.api_proto.users_pb2'
  # @@protoc_insertion_point(class_scope:monorail.ExpungeUserRequest)
  ))
_sym_db.RegisterMessage(ExpungeUserRequest)

ExpungeUserResponse = _reflection.GeneratedProtocolMessageType('ExpungeUserResponse', (_message.Message,), dict(
  DESCRIPTOR = _EXPUNGEUSERRESPONSE,
  __module__ = 'api.api_proto.users_pb2'
  # @@protoc_insertion_point(class_scope:monorail.ExpungeUserResponse)
  ))
_sym_db.RegisterMessage(ExpungeUserResponse)



_USERS = _descriptor.ServiceDescriptor(
  name='Users',
  full_name='monorail.Users',
  file=DESCRIPTOR,
  index=0,
  serialized_options=None,
  serialized_start=1598,
  serialized_end=2833,
  methods=[
  _descriptor.MethodDescriptor(
    name='GetUser',
    full_name='monorail.Users.GetUser',
    index=0,
    containing_service=None,
    input_type=_GETUSERREQUEST,
    output_type=api_dot_api__proto_dot_user__objects__pb2._USER,
    serialized_options=None,
  ),
  _descriptor.MethodDescriptor(
    name='ListReferencedUsers',
    full_name='monorail.Users.ListReferencedUsers',
    index=1,
    containing_service=None,
    input_type=_LISTREFERENCEDUSERSREQUEST,
    output_type=_LISTREFERENCEDUSERSRESPONSE,
    serialized_options=None,
  ),
  _descriptor.MethodDescriptor(
    name='GetMemberships',
    full_name='monorail.Users.GetMemberships',
    index=2,
    containing_service=None,
    input_type=_GETMEMBERSHIPSREQUEST,
    output_type=_GETMEMBERSHIPSRESPONSE,
    serialized_options=None,
  ),
  _descriptor.MethodDescriptor(
    name='GetSavedQueries',
    full_name='monorail.Users.GetSavedQueries',
    index=3,
    containing_service=None,
    input_type=_GETSAVEDQUERIESREQUEST,
    output_type=_GETSAVEDQUERIESRESPONSE,
    serialized_options=None,
  ),
  _descriptor.MethodDescriptor(
    name='GetUserStarCount',
    full_name='monorail.Users.GetUserStarCount',
    index=4,
    containing_service=None,
    input_type=_GETUSERSTARCOUNTREQUEST,
    output_type=_GETUSERSTARCOUNTRESPONSE,
    serialized_options=None,
  ),
  _descriptor.MethodDescriptor(
    name='StarUser',
    full_name='monorail.Users.StarUser',
    index=5,
    containing_service=None,
    input_type=_STARUSERREQUEST,
    output_type=_STARUSERRESPONSE,
    serialized_options=None,
  ),
  _descriptor.MethodDescriptor(
    name='GetUserPrefs',
    full_name='monorail.Users.GetUserPrefs',
    index=6,
    containing_service=None,
    input_type=_GETUSERPREFSREQUEST,
    output_type=_GETUSERPREFSRESPONSE,
    serialized_options=None,
  ),
  _descriptor.MethodDescriptor(
    name='SetUserPrefs',
    full_name='monorail.Users.SetUserPrefs',
    index=7,
    containing_service=None,
    input_type=_SETUSERPREFSREQUEST,
    output_type=_SETUSERPREFSRESPONSE,
    serialized_options=None,
  ),
  _descriptor.MethodDescriptor(
    name='SetExpandPermsPreference',
    full_name='monorail.Users.SetExpandPermsPreference',
    index=8,
    containing_service=None,
    input_type=_SETEXPANDPERMSPREFERENCEREQUEST,
    output_type=_SETEXPANDPERMSPREFERENCERESPONSE,
    serialized_options=None,
  ),
  _descriptor.MethodDescriptor(
    name='InviteLinkedParent',
    full_name='monorail.Users.InviteLinkedParent',
    index=9,
    containing_service=None,
    input_type=_INVITELINKEDPARENTREQUEST,
    output_type=_INVITELINKEDPARENTRESPONSE,
    serialized_options=None,
  ),
  _descriptor.MethodDescriptor(
    name='AcceptLinkedChild',
    full_name='monorail.Users.AcceptLinkedChild',
    index=10,
    containing_service=None,
    input_type=_ACCEPTLINKEDCHILDREQUEST,
    output_type=_ACCEPTLINKEDCHILDRESPONSE,
    serialized_options=None,
  ),
  _descriptor.MethodDescriptor(
    name='UnlinkAccounts',
    full_name='monorail.Users.UnlinkAccounts',
    index=11,
    containing_service=None,
    input_type=_UNLINKACCOUNTSREQUEST,
    output_type=_UNLINKACCOUNTSRESPONSE,
    serialized_options=None,
  ),
  _descriptor.MethodDescriptor(
    name='GetUsersProjects',
    full_name='monorail.Users.GetUsersProjects',
    index=12,
    containing_service=None,
    input_type=_GETUSERSPROJECTSREQUEST,
    output_type=_GETUSERSPROJECTSRESPONSE,
    serialized_options=None,
  ),
  _descriptor.MethodDescriptor(
    name='ExpungeUser',
    full_name='monorail.Users.ExpungeUser',
    index=13,
    containing_service=None,
    input_type=_EXPUNGEUSERREQUEST,
    output_type=_EXPUNGEUSERRESPONSE,
    serialized_options=None,
  ),
])
_sym_db.RegisterServiceDescriptor(_USERS)

DESCRIPTOR.services_by_name['Users'] = _USERS

# @@protoc_insertion_point(module_scope)
