# -*- coding: utf-8 -*-
# Generated by the protocol buffer compiler.  DO NOT EDIT!
# source: chromiumos/storage_path.proto
"""Generated protocol buffer code."""
from chromite.third_party.google.protobuf.internal import builder as _builder
from chromite.third_party.google.protobuf import descriptor as _descriptor
from chromite.third_party.google.protobuf import descriptor_pool as _descriptor_pool
from chromite.third_party.google.protobuf import symbol_database as _symbol_database
# @@protoc_insertion_point(imports)

_sym_db = _symbol_database.Default()




DESCRIPTOR = _descriptor_pool.Default().AddSerializedFile(b'\n\x1d\x63hromiumos/storage_path.proto\x12\nchromiumos\"\x89\x01\n\x0bStoragePath\x12\x33\n\thost_type\x18\x01 \x01(\x0e\x32 .chromiumos.StoragePath.HostType\x12\x0c\n\x04path\x18\x02 \x01(\t\"7\n\x08HostType\x12\x18\n\x14HOSTTYPE_UNSPECIFIED\x10\x00\x12\t\n\x05LOCAL\x10\x01\x12\x06\n\x02GS\x10\x02\x42\x33Z1go.chromium.org/chromiumos/config/go;storage_pathb\x06proto3')

_builder.BuildMessageAndEnumDescriptors(DESCRIPTOR, globals())
_builder.BuildTopDescriptorsAndMessages(DESCRIPTOR, 'chromiumos.storage_path_pb2', globals())
if _descriptor._USE_C_DESCRIPTORS == False:

  DESCRIPTOR._options = None
  DESCRIPTOR._serialized_options = b'Z1go.chromium.org/chromiumos/config/go;storage_path'
  _STORAGEPATH._serialized_start=46
  _STORAGEPATH._serialized_end=183
  _STORAGEPATH_HOSTTYPE._serialized_start=128
  _STORAGEPATH_HOSTTYPE._serialized_end=183
# @@protoc_insertion_point(module_scope)
