[VOL-5181] introduce pon distance in DMI

Change-Id: I229f39a81d75627237736174e92e2cfc19de12f4
diff --git a/VERSION b/VERSION
index 850e742..141f2e8 100644
--- a/VERSION
+++ b/VERSION
@@ -1 +1 @@
-1.14.0
+1.15.0
diff --git a/cpp/dmi/hw.pb.cc b/cpp/dmi/hw.pb.cc
index ddf179b..1982b55 100644
--- a/cpp/dmi/hw.pb.cc
+++ b/cpp/dmi/hw.pb.cc
@@ -17,6 +17,7 @@
 #include <google/protobuf/port_def.inc>
 
 extern PROTOBUF_INTERNAL_EXPORT_dmi_2fhw_2eproto ::google::protobuf::internal::SCCInfo<0> scc_info_ContainerComponentAttributes_dmi_2fhw_2eproto;
+extern PROTOBUF_INTERNAL_EXPORT_dmi_2fhw_2eproto ::google::protobuf::internal::SCCInfo<0> scc_info_PonDistance_dmi_2fhw_2eproto;
 extern PROTOBUF_INTERNAL_EXPORT_dmi_2fhw_2eproto ::google::protobuf::internal::SCCInfo<0> scc_info_PonIdConfig_dmi_2fhw_2eproto;
 extern PROTOBUF_INTERNAL_EXPORT_dmi_2fhw_2eproto ::google::protobuf::internal::SCCInfo<0> scc_info_PsuComponentAttributes_dmi_2fhw_2eproto;
 extern PROTOBUF_INTERNAL_EXPORT_dmi_2fhw_2eproto ::google::protobuf::internal::SCCInfo<0> scc_info_TransceiverComponentChangeAttributes_dmi_2fhw_2eproto;
@@ -25,8 +26,8 @@
 extern PROTOBUF_INTERNAL_EXPORT_dmi_2fhw_2eproto ::google::protobuf::internal::SCCInfo<0> scc_info_Uuid_dmi_2fhw_2eproto;
 extern PROTOBUF_INTERNAL_EXPORT_dmi_2fhw_2eproto ::google::protobuf::internal::SCCInfo<1> scc_info_ComponentSensorData_dmi_2fhw_2eproto;
 extern PROTOBUF_INTERNAL_EXPORT_dmi_2fhw_2eproto ::google::protobuf::internal::SCCInfo<1> scc_info_ComponentState_dmi_2fhw_2eproto;
-extern PROTOBUF_INTERNAL_EXPORT_dmi_2fhw_2eproto ::google::protobuf::internal::SCCInfo<1> scc_info_PortComponentAttributes_dmi_2fhw_2eproto;
-extern PROTOBUF_INTERNAL_EXPORT_dmi_2fhw_2eproto ::google::protobuf::internal::SCCInfo<1> scc_info_PortComponentChangeAttributes_dmi_2fhw_2eproto;
+extern PROTOBUF_INTERNAL_EXPORT_dmi_2fhw_2eproto ::google::protobuf::internal::SCCInfo<2> scc_info_PortComponentAttributes_dmi_2fhw_2eproto;
+extern PROTOBUF_INTERNAL_EXPORT_dmi_2fhw_2eproto ::google::protobuf::internal::SCCInfo<2> scc_info_PortComponentChangeAttributes_dmi_2fhw_2eproto;
 extern PROTOBUF_INTERNAL_EXPORT_dmi_2fhw_2eproto ::google::protobuf::internal::SCCInfo<9> scc_info_Component_dmi_2fhw_2eproto;
 extern PROTOBUF_INTERNAL_EXPORT_google_2fprotobuf_2ftimestamp_2eproto ::google::protobuf::internal::SCCInfo<0> scc_info_Timestamp_google_2fprotobuf_2ftimestamp_2eproto;
 namespace dmi {
@@ -54,6 +55,10 @@
  public:
   ::google::protobuf::internal::ExplicitlyConstructed<PortComponentAttributes> _instance;
 } _PortComponentAttributes_default_instance_;
+class PonDistanceDefaultTypeInternal {
+ public:
+  ::google::protobuf::internal::ExplicitlyConstructed<PonDistance> _instance;
+} _PonDistance_default_instance_;
 class PortComponentChangeAttributesDefaultTypeInternal {
  public:
   ::google::protobuf::internal::ExplicitlyConstructed<PortComponentChangeAttributes> _instance;
@@ -181,9 +186,24 @@
   ::dmi::PortComponentAttributes::InitAsDefaultInstance();
 }
 
-::google::protobuf::internal::SCCInfo<1> scc_info_PortComponentAttributes_dmi_2fhw_2eproto =
-    {{ATOMIC_VAR_INIT(::google::protobuf::internal::SCCInfoBase::kUninitialized), 1, InitDefaultsPortComponentAttributes_dmi_2fhw_2eproto}, {
-      &scc_info_PonIdConfig_dmi_2fhw_2eproto.base,}};
+::google::protobuf::internal::SCCInfo<2> scc_info_PortComponentAttributes_dmi_2fhw_2eproto =
+    {{ATOMIC_VAR_INIT(::google::protobuf::internal::SCCInfoBase::kUninitialized), 2, InitDefaultsPortComponentAttributes_dmi_2fhw_2eproto}, {
+      &scc_info_PonIdConfig_dmi_2fhw_2eproto.base,
+      &scc_info_PonDistance_dmi_2fhw_2eproto.base,}};
+
+static void InitDefaultsPonDistance_dmi_2fhw_2eproto() {
+  GOOGLE_PROTOBUF_VERIFY_VERSION;
+
+  {
+    void* ptr = &::dmi::_PonDistance_default_instance_;
+    new (ptr) ::dmi::PonDistance();
+    ::google::protobuf::internal::OnShutdownDestroyMessage(ptr);
+  }
+  ::dmi::PonDistance::InitAsDefaultInstance();
+}
+
+::google::protobuf::internal::SCCInfo<0> scc_info_PonDistance_dmi_2fhw_2eproto =
+    {{ATOMIC_VAR_INIT(::google::protobuf::internal::SCCInfoBase::kUninitialized), 0, InitDefaultsPonDistance_dmi_2fhw_2eproto}, {}};
 
 static void InitDefaultsPortComponentChangeAttributes_dmi_2fhw_2eproto() {
   GOOGLE_PROTOBUF_VERIFY_VERSION;
@@ -196,9 +216,10 @@
   ::dmi::PortComponentChangeAttributes::InitAsDefaultInstance();
 }
 
-::google::protobuf::internal::SCCInfo<1> scc_info_PortComponentChangeAttributes_dmi_2fhw_2eproto =
-    {{ATOMIC_VAR_INIT(::google::protobuf::internal::SCCInfoBase::kUninitialized), 1, InitDefaultsPortComponentChangeAttributes_dmi_2fhw_2eproto}, {
-      &scc_info_PonIdConfig_dmi_2fhw_2eproto.base,}};
+::google::protobuf::internal::SCCInfo<2> scc_info_PortComponentChangeAttributes_dmi_2fhw_2eproto =
+    {{ATOMIC_VAR_INIT(::google::protobuf::internal::SCCInfoBase::kUninitialized), 2, InitDefaultsPortComponentChangeAttributes_dmi_2fhw_2eproto}, {
+      &scc_info_PonIdConfig_dmi_2fhw_2eproto.base,
+      &scc_info_PonDistance_dmi_2fhw_2eproto.base,}};
 
 static void InitDefaultsTransceiverComponentChangeAttributes_dmi_2fhw_2eproto() {
   GOOGLE_PROTOBUF_VERIFY_VERSION;
@@ -334,6 +355,7 @@
   ::google::protobuf::internal::InitSCC(&scc_info_ComponentState_dmi_2fhw_2eproto.base);
   ::google::protobuf::internal::InitSCC(&scc_info_ComponentSensorData_dmi_2fhw_2eproto.base);
   ::google::protobuf::internal::InitSCC(&scc_info_PortComponentAttributes_dmi_2fhw_2eproto.base);
+  ::google::protobuf::internal::InitSCC(&scc_info_PonDistance_dmi_2fhw_2eproto.base);
   ::google::protobuf::internal::InitSCC(&scc_info_PortComponentChangeAttributes_dmi_2fhw_2eproto.base);
   ::google::protobuf::internal::InitSCC(&scc_info_TransceiverComponentChangeAttributes_dmi_2fhw_2eproto.base);
   ::google::protobuf::internal::InitSCC(&scc_info_PonIdConfig_dmi_2fhw_2eproto.base);
@@ -345,7 +367,7 @@
   ::google::protobuf::internal::InitSCC(&scc_info_ModifiableComponent_dmi_2fhw_2eproto.base);
 }
 
-::google::protobuf::Metadata file_level_metadata_dmi_2fhw_2eproto[15];
+::google::protobuf::Metadata file_level_metadata_dmi_2fhw_2eproto[16];
 const ::google::protobuf::EnumDescriptor* file_level_enum_descriptors_dmi_2fhw_2eproto[15];
 constexpr ::google::protobuf::ServiceDescriptor const** file_level_service_descriptors_dmi_2fhw_2eproto = nullptr;
 
@@ -405,12 +427,21 @@
   PROTOBUF_FIELD_OFFSET(::dmi::PortComponentAttributes, mapping_label_),
   PROTOBUF_FIELD_OFFSET(::dmi::PortComponentAttributes, pon_id_config_),
   PROTOBUF_FIELD_OFFSET(::dmi::PortComponentAttributes, speed_autonegotiation_),
+  PROTOBUF_FIELD_OFFSET(::dmi::PortComponentAttributes, distance_),
+  ~0u,  // no _has_bits_
+  PROTOBUF_FIELD_OFFSET(::dmi::PonDistance, _internal_metadata_),
+  ~0u,  // no _extensions_
+  ~0u,  // no _oneof_case_
+  ~0u,  // no _weak_field_map_
+  PROTOBUF_FIELD_OFFSET(::dmi::PonDistance, max_distance_),
+  PROTOBUF_FIELD_OFFSET(::dmi::PonDistance, max_differential_distance_),
   ~0u,  // no _has_bits_
   PROTOBUF_FIELD_OFFSET(::dmi::PortComponentChangeAttributes, _internal_metadata_),
   ~0u,  // no _extensions_
   ~0u,  // no _oneof_case_
   ~0u,  // no _weak_field_map_
   PROTOBUF_FIELD_OFFSET(::dmi::PortComponentChangeAttributes, pon_id_config_),
+  PROTOBUF_FIELD_OFFSET(::dmi::PortComponentChangeAttributes, distance_),
   ~0u,  // no _has_bits_
   PROTOBUF_FIELD_OFFSET(::dmi::TransceiverComponentChangeAttributes, _internal_metadata_),
   ~0u,  // no _extensions_
@@ -512,15 +543,16 @@
   { 18, -1, sizeof(::dmi::ComponentState)},
   { 29, -1, sizeof(::dmi::ComponentSensorData)},
   { 43, -1, sizeof(::dmi::PortComponentAttributes)},
-  { 55, -1, sizeof(::dmi::PortComponentChangeAttributes)},
-  { 61, -1, sizeof(::dmi::TransceiverComponentChangeAttributes)},
-  { 67, -1, sizeof(::dmi::PonIdConfig)},
-  { 74, -1, sizeof(::dmi::ContainerComponentAttributes)},
-  { 80, -1, sizeof(::dmi::PsuComponentAttributes)},
-  { 86, -1, sizeof(::dmi::TransceiverComponentsAttributes)},
-  { 100, -1, sizeof(::dmi::Component)},
-  { 130, -1, sizeof(::dmi::Hardware)},
-  { 138, -1, sizeof(::dmi::ModifiableComponent)},
+  { 56, -1, sizeof(::dmi::PonDistance)},
+  { 63, -1, sizeof(::dmi::PortComponentChangeAttributes)},
+  { 70, -1, sizeof(::dmi::TransceiverComponentChangeAttributes)},
+  { 76, -1, sizeof(::dmi::PonIdConfig)},
+  { 83, -1, sizeof(::dmi::ContainerComponentAttributes)},
+  { 89, -1, sizeof(::dmi::PsuComponentAttributes)},
+  { 95, -1, sizeof(::dmi::TransceiverComponentsAttributes)},
+  { 109, -1, sizeof(::dmi::Component)},
+  { 139, -1, sizeof(::dmi::Hardware)},
+  { 147, -1, sizeof(::dmi::ModifiableComponent)},
 };
 
 static ::google::protobuf::Message const * const file_default_instances[] = {
@@ -530,6 +562,7 @@
   reinterpret_cast<const ::google::protobuf::Message*>(&::dmi::_ComponentState_default_instance_),
   reinterpret_cast<const ::google::protobuf::Message*>(&::dmi::_ComponentSensorData_default_instance_),
   reinterpret_cast<const ::google::protobuf::Message*>(&::dmi::_PortComponentAttributes_default_instance_),
+  reinterpret_cast<const ::google::protobuf::Message*>(&::dmi::_PonDistance_default_instance_),
   reinterpret_cast<const ::google::protobuf::Message*>(&::dmi::_PortComponentChangeAttributes_default_instance_),
   reinterpret_cast<const ::google::protobuf::Message*>(&::dmi::_TransceiverComponentChangeAttributes_default_instance_),
   reinterpret_cast<const ::google::protobuf::Message*>(&::dmi::_PonIdConfig_default_instance_),
@@ -544,7 +577,7 @@
 ::google::protobuf::internal::AssignDescriptorsTable assign_descriptors_table_dmi_2fhw_2eproto = {
   {}, AddDescriptors_dmi_2fhw_2eproto, "dmi/hw.proto", schemas,
   file_default_instances, TableStruct_dmi_2fhw_2eproto::offsets,
-  file_level_metadata_dmi_2fhw_2eproto, 15, file_level_enum_descriptors_dmi_2fhw_2eproto, file_level_service_descriptors_dmi_2fhw_2eproto,
+  file_level_metadata_dmi_2fhw_2eproto, 16, file_level_enum_descriptors_dmi_2fhw_2eproto, file_level_service_descriptors_dmi_2fhw_2eproto,
 };
 
 const char descriptor_table_protodef_dmi_2fhw_2eproto[] =
@@ -566,7 +599,7 @@
   "atus\022\025\n\runits_display\030\006 \001(\t\022-\n\ttimestamp"
   "\030\007 \001(\0132\032.google.protobuf.Timestamp\022\031\n\021va"
   "lue_update_rate\030\010 \001(\r\022\021\n\tdata_type\030\t \001(\t"
-  "\"\341\005\n\027PortComponentAttributes\022B\n\016connecto"
+  "\"\205\006\n\027PortComponentAttributes\022B\n\016connecto"
   "r_type\030\001 \001(\0162*.dmi.PortComponentAttribut"
   "es.ConnectorType\0221\n\005speed\030\002 \001(\0162\".dmi.Po"
   "rtComponentAttributes.Speed\0227\n\010protocol\030"
@@ -574,145 +607,148 @@
   "ocol\022\026\n\016physical_label\030\004 \001(\t\022\025\n\rmapping_"
   "label\030\005 \001(\t\022\'\n\rpon_id_config\030\006 \001(\0132\020.dmi"
   ".PonIdConfig\022\035\n\025speed_autonegotiation\030\007 "
-  "\001(\010\"p\n\rConnectorType\022\034\n\030CONNECTOR_TYPE_U"
-  "NDEFINED\020\000\022\010\n\004RJ45\020\001\022\014\n\010FIBER_LC\020\002\022\017\n\013FI"
-  "BER_SC_PC\020\003\022\r\n\tFIBER_MPO\020\004\022\t\n\005RS232\020\005\"\256\001"
-  "\n\005Speed\022\023\n\017SPEED_UNDEFINED\020\000\022\013\n\007DYNAMIC\020"
-  "\001\022\r\n\tGIGABIT_1\020\002\022\016\n\nGIGABIT_10\020\003\022\016\n\nGIGA"
-  "BIT_25\020\004\022\016\n\nGIGABIT_40\020\005\022\017\n\013GIGABIT_100\020"
-  "\006\022\017\n\013GIGABIT_400\020\007\022\020\n\014MEGABIT_2500\020\010\022\020\n\014"
-  "MEGABIT_1250\020\t\"|\n\010Protocol\022\026\n\022PROTOCOL_U"
-  "NDEFINED\020\000\022\014\n\010ETHERNET\020\001\022\010\n\004GPON\020\002\022\t\n\005XG"
-  "PON\020\003\022\n\n\006XGSPON\020\004\022\t\n\005GFAST\020\005\022\n\n\006SERIAL\020\006"
-  "\022\010\n\004EPON\020\007\022\010\n\004BITS\020\010\"H\n\035PortComponentCha"
-  "ngeAttributes\022\'\n\rpon_id_config\030\001 \001(\0132\020.d"
-  "mi.PonIdConfig\"P\n$TransceiverComponentCh"
-  "angeAttributes\022(\n\ntrans_type\030\001 \001(\0162\024.dmi"
-  ".TransceiverType\"B\n\013PonIdConfig\022\016\n\006pon_i"
-  "d\030\001 \001(\014\022#\n\033pon_id_transmit_periodicity\030\002"
-  " \001(\r\"6\n\034ContainerComponentAttributes\022\026\n\016"
-  "physical_label\030\001 \001(\t\"\263\001\n\026PsuComponentAtt"
-  "ributes\022G\n\021supported_voltage\030\001 \001(\0162,.dmi"
-  ".PsuComponentAttributes.SupportedVoltage"
-  "\"P\n\020SupportedVoltage\022\037\n\033SUPPORTED_VOLTAG"
-  "E_UNDEFINED\020\000\022\007\n\003V48\020\001\022\010\n\004V230\020\002\022\010\n\004V115"
-  "\020\003\"\253\004\n\037TransceiverComponentsAttributes\022D"
-  "\n\013form_factor\030\001 \001(\0162/.dmi.TransceiverCom"
-  "ponentsAttributes.FormFactor\022(\n\ntrans_ty"
-  "pe\030\002 \001(\0162\024.dmi.TransceiverType\022\024\n\014max_di"
-  "stance\030\003 \001(\r\022+\n\022max_distance_scale\030\004 \001(\016"
-  "2\017.dmi.ValueScale\022\025\n\rrx_wavelength\030\005 \003(\r"
-  "\022\025\n\rtx_wavelength\030\006 \003(\r\022)\n\020wavelength_sc"
-  "ale\030\007 \001(\0162\017.dmi.ValueScale\022\020\n\010tx_power\030\010"
-  " \003(\005\022\'\n\016tx_power_scale\030\t \001(\0162\017.dmi.Value"
-  "Scale\"\300\001\n\nFormFactor\022\027\n\023FORM_FACTOR_UNKN"
-  "OWN\020\000\022\010\n\004QSFP\020\001\022\r\n\tQSFP_PLUS\020\002\022\n\n\006QSFP28"
-  "\020\003\022\007\n\003SFP\020\004\022\014\n\010SFP_PLUS\020\005\022\007\n\003XFP\020\006\022\010\n\004CF"
-  "P4\020\007\022\010\n\004CFP2\020\010\022\010\n\004CPAK\020\t\022\006\n\002X2\020\n\022\t\n\005OTHE"
-  "R\020\013\022\007\n\003CFP\020\014\022\014\n\010CFP2_ACO\020\r\022\014\n\010CFP2_DCO\020\016"
-  "\"\350\005\n\tComponent\022\014\n\004name\030\001 \001(\t\022!\n\005class\030\002 "
-  "\001(\0162\022.dmi.ComponentType\022\023\n\013description\030\003"
-  " \001(\t\022\016\n\006parent\030\004 \001(\t\022\026\n\016parent_rel_pos\030\005"
-  " \001(\005\022 \n\010children\030\006 \003(\0132\016.dmi.Component\022\024"
-  "\n\014hardware_rev\030\007 \001(\t\022\024\n\014firmware_rev\030\010 \001"
-  "(\t\022\024\n\014software_rev\030\t \001(\t\022\022\n\nserial_num\030\n"
-  " \001(\t\022\020\n\010mfg_name\030\013 \001(\t\022\022\n\nmodel_name\030\014 \001"
-  "(\t\022\r\n\005alias\030\r \001(\t\022\020\n\010asset_id\030\016 \001(\t\022\016\n\006i"
-  "s_fru\030\017 \001(\010\022,\n\010mfg_date\030\020 \001(\0132\032.google.p"
-  "rotobuf.Timestamp\022\025\n\003uri\030\021 \001(\0132\010.dmi.Uri"
-  "\022\027\n\004uuid\030\022 \001(\0132\t.dmi.Uuid\022\"\n\005state\030\023 \001(\013"
-  "2\023.dmi.ComponentState\022-\n\013sensor_data\030\024 \003"
-  "(\0132\030.dmi.ComponentSensorData\0221\n\tport_att"
-  "r\0302 \001(\0132\034.dmi.PortComponentAttributesH\000\022"
-  ";\n\016container_attr\0303 \001(\0132!.dmi.ContainerC"
-  "omponentAttributesH\000\022/\n\010psu_attr\0304 \001(\0132\033"
-  ".dmi.PsuComponentAttributesH\000\022@\n\020transce"
-  "iver_attr\0305 \001(\0132$.dmi.TransceiverCompone"
-  "ntsAttributesH\000B\n\n\010specific\"\212\001\n\010Hardware"
-  "\022/\n\013last_change\030\001 \001(\0132\032.google.protobuf."
-  "Timestamp\022\034\n\004root\030\002 \001(\0132\016.dmi.Component\022"
-  "/\n\013last_booted\030\003 \001(\0132\032.google.protobuf.T"
-  "imestamp\"\351\002\n\023ModifiableComponent\022\014\n\004name"
-  "\030\001 \001(\t\022!\n\005class\030\002 \001(\0162\022.dmi.ComponentTyp"
-  "e\022\036\n\006parent\030\003 \001(\0132\016.dmi.Component\022\026\n\016par"
-  "ent_rel_pos\030\004 \001(\005\022\r\n\005alias\030\005 \001(\t\022\020\n\010asse"
-  "t_id\030\006 \001(\t\022\025\n\003uri\030\007 \001(\0132\010.dmi.Uri\022-\n\013adm"
-  "in_state\030\010 \001(\0162\030.dmi.ComponentAdminState"
-  "\0227\n\tport_attr\0302 \001(\0132\".dmi.PortComponentC"
-  "hangeAttributesH\000\022=\n\010trx_attr\0303 \001(\0132).dm"
-  "i.TransceiverComponentChangeAttributesH\000"
-  "B\n\n\010specific*\264\003\n\rComponentType\022\034\n\030COMPON"
-  "ENT_TYPE_UNDEFINED\020\000\022\032\n\026COMPONENT_TYPE_U"
-  "NKNOWN\020\001\022\032\n\026COMPONENT_TYPE_CHASSIS\020\002\022\034\n\030"
-  "COMPONENT_TYPE_BACKPLANE\020\003\022\034\n\030COMPONENT_"
-  "TYPE_CONTAINER\020\004\022\037\n\033COMPONENT_TYPE_POWER"
-  "_SUPPLY\020\005\022\026\n\022COMPONENT_TYPE_FAN\020\006\022\031\n\025COM"
-  "PONENT_TYPE_SENSOR\020\007\022\031\n\025COMPONENT_TYPE_M"
-  "ODULE\020\010\022\027\n\023COMPONENT_TYPE_PORT\020\t\022\026\n\022COMP"
-  "ONENT_TYPE_CPU\020\n\022\032\n\026COMPONENT_TYPE_BATTE"
-  "RY\020\013\022\032\n\026COMPONENT_TYPE_STORAGE\020\014\022\031\n\025COMP"
-  "ONENT_TYPE_MEMORY\020\r\022\036\n\032COMPONENT_TYPE_TR"
-  "ANSCEIVER\020\016*\263\001\n\023ComponentAdminState\022\036\n\032C"
-  "OMP_ADMIN_STATE_UNDEFINED\020\000\022\034\n\030COMP_ADMI"
-  "N_STATE_UNKNOWN\020\001\022\033\n\027COMP_ADMIN_STATE_LO"
-  "CKED\020\002\022\"\n\036COMP_ADMIN_STATE_SHUTTING_DOWN"
-  "\020\003\022\035\n\031COMP_ADMIN_STATE_UNLOCKED\020\004*\250\001\n\022Co"
-  "mponentOperState\022\035\n\031COMP_OPER_STATE_UNDE"
-  "FINED\020\000\022\033\n\027COMP_OPER_STATE_UNKNOWN\020\001\022\034\n\030"
-  "COMP_OPER_STATE_DISABLED\020\002\022\033\n\027COMP_OPER_"
-  "STATE_ENABLED\020\003\022\033\n\027COMP_OPER_STATE_TESTI"
-  "NG\020\004*\246\001\n\023ComponentUsageState\022\036\n\032COMP_USA"
-  "GE_STATE_UNDEFINED\020\000\022\034\n\030COMP_USAGE_STATE"
-  "_UNKNOWN\020\001\022\031\n\025COMP_USAGE_STATE_IDLE\020\002\022\033\n"
-  "\027COMP_USAGE_STATE_ACTIVE\020\003\022\031\n\025COMP_USAGE"
-  "_STATE_BUSY\020\004*\217\002\n\023ComponentAlarmState\022\036\n"
-  "\032COMP_ALARM_STATE_UNDEFINED\020\000\022\034\n\030COMP_AL"
-  "ARM_STATE_UNKNOWN\020\001\022!\n\035COMP_ALARM_STATE_"
-  "UNDER_REPAIR\020\002\022\035\n\031COMP_ALARM_STATE_CRITI"
-  "CAL\020\003\022\032\n\026COMP_ALARM_STATE_MAJOR\020\004\022\032\n\026COM"
-  "P_ALARM_STATE_MINOR\020\005\022\034\n\030COMP_ALARM_STAT"
-  "E_WARNING\020\006\022\"\n\036COMP_ALARM_STATE_INDETERM"
-  "INATE\020\007*\274\001\n\025ComponentStandbyState\022 \n\034COM"
-  "P_STANDBY_STATE_UNDEFINED\020\000\022\036\n\032COMP_STAN"
-  "DBY_STATE_UNKNOWN\020\001\022\032\n\026COMP_STANDBY_STAT"
-  "E_HOT\020\002\022\033\n\027COMP_STANDBY_STATE_COLD\020\003\022(\n$"
-  "COMP_STANDBY_STATE_PROVIDING_SERVICE\020\004*\235"
-  "\003\n\rDataValueType\022\030\n\024VALUE_TYPE_UNDEFINED"
-  "\020\000\022\024\n\020VALUE_TYPE_OTHER\020\001\022\026\n\022VALUE_TYPE_U"
-  "NKNOWN\020\002\022\027\n\023VALUE_TYPE_VOLTS_AC\020\003\022\027\n\023VAL"
-  "UE_TYPE_VOLTS_DC\020\004\022\026\n\022VALUE_TYPE_AMPERES"
-  "\020\005\022\024\n\020VALUE_TYPE_WATTS\020\006\022\024\n\020VALUE_TYPE_H"
-  "ERTZ\020\007\022\026\n\022VALUE_TYPE_CELSIUS\020\010\022\031\n\025VALUE_"
-  "TYPE_PERCENT_RH\020\t\022\022\n\016VALUE_TYPE_RPM\020\n\022\022\n"
-  "\016VALUE_TYPE_CMM\020\013\022\032\n\026VALUE_TYPE_TRUTH_VA"
-  "LUE\020\014\022\026\n\022VALUE_TYPE_PERCENT\020\r\022\025\n\021VALUE_T"
-  "YPE_METERS\020\016\022\024\n\020VALUE_TYPE_BYTES\020\017\022\022\n\016VA"
-  "LUE_TYPE_DBM\020\020*\244\003\n\nValueScale\022\031\n\025VALUE_S"
-  "CALE_UNDEFINED\020\000\022\025\n\021VALUE_SCALE_YOCTO\020\001\022"
-  "\025\n\021VALUE_SCALE_ZEPTO\020\002\022\024\n\020VALUE_SCALE_AT"
-  "TO\020\003\022\025\n\021VALUE_SCALE_FEMTO\020\004\022\024\n\020VALUE_SCA"
-  "LE_PICO\020\005\022\024\n\020VALUE_SCALE_NANO\020\006\022\025\n\021VALUE"
-  "_SCALE_MICRO\020\007\022\025\n\021VALUE_SCALE_MILLI\020\010\022\025\n"
-  "\021VALUE_SCALE_UNITS\020\t\022\024\n\020VALUE_SCALE_KILO"
-  "\020\n\022\024\n\020VALUE_SCALE_MEGA\020\013\022\024\n\020VALUE_SCALE_"
-  "GIGA\020\014\022\024\n\020VALUE_SCALE_TERA\020\r\022\024\n\020VALUE_SC"
-  "ALE_PETA\020\016\022\023\n\017VALUE_SCALE_EXA\020\017\022\025\n\021VALUE"
-  "_SCALE_ZETTA\020\020\022\025\n\021VALUE_SCALE_YOTTA\020\021*\202\001"
-  "\n\014SensorStatus\022\033\n\027SENSOR_STATUS_UNDEFINE"
-  "D\020\000\022\024\n\020SENSOR_STATUS_OK\020\001\022\035\n\031SENSOR_STAT"
-  "US_UNAVAILABLE\020\002\022 \n\034SENSOR_STATUS_NONOPE"
-  "RATIONAL\020\003*\244\001\n\017TransceiverType\022\022\n\016TYPE_U"
-  "NDEFINED\020\000\022\014\n\010ETHERNET\020\001\022\010\n\004GPON\020\002\022\t\n\005XG"
-  "PON\020\003\022\n\n\006XGSPON\020\004\022\010\n\004CPON\020\005\022\013\n\007NG_PON2\020\006"
-  "\022\010\n\004EPON\020\007\022\025\n\021COMBO_GPON_XGSPON\020\010\022\026\n\021TYP"
-  "E_NOT_DETECTED\020\377\001B;Z9github.com/opencord"
-  "/device-management-interface/v3/go/dmib\006"
-  "proto3"
+  "\001(\010\022\"\n\010distance\030\010 \001(\0132\020.dmi.PonDistance\""
+  "p\n\rConnectorType\022\034\n\030CONNECTOR_TYPE_UNDEF"
+  "INED\020\000\022\010\n\004RJ45\020\001\022\014\n\010FIBER_LC\020\002\022\017\n\013FIBER_"
+  "SC_PC\020\003\022\r\n\tFIBER_MPO\020\004\022\t\n\005RS232\020\005\"\256\001\n\005Sp"
+  "eed\022\023\n\017SPEED_UNDEFINED\020\000\022\013\n\007DYNAMIC\020\001\022\r\n"
+  "\tGIGABIT_1\020\002\022\016\n\nGIGABIT_10\020\003\022\016\n\nGIGABIT_"
+  "25\020\004\022\016\n\nGIGABIT_40\020\005\022\017\n\013GIGABIT_100\020\006\022\017\n"
+  "\013GIGABIT_400\020\007\022\020\n\014MEGABIT_2500\020\010\022\020\n\014MEGA"
+  "BIT_1250\020\t\"|\n\010Protocol\022\026\n\022PROTOCOL_UNDEF"
+  "INED\020\000\022\014\n\010ETHERNET\020\001\022\010\n\004GPON\020\002\022\t\n\005XGPON\020"
+  "\003\022\n\n\006XGSPON\020\004\022\t\n\005GFAST\020\005\022\n\n\006SERIAL\020\006\022\010\n\004"
+  "EPON\020\007\022\010\n\004BITS\020\010\"F\n\013PonDistance\022\024\n\014max_d"
+  "istance\030\001 \001(\r\022!\n\031max_differential_distan"
+  "ce\030\002 \001(\r\"l\n\035PortComponentChangeAttribute"
+  "s\022\'\n\rpon_id_config\030\001 \001(\0132\020.dmi.PonIdConf"
+  "ig\022\"\n\010distance\030\002 \001(\0132\020.dmi.PonDistance\"P"
+  "\n$TransceiverComponentChangeAttributes\022("
+  "\n\ntrans_type\030\001 \001(\0162\024.dmi.TransceiverType"
+  "\"B\n\013PonIdConfig\022\016\n\006pon_id\030\001 \001(\014\022#\n\033pon_i"
+  "d_transmit_periodicity\030\002 \001(\r\"6\n\034Containe"
+  "rComponentAttributes\022\026\n\016physical_label\030\001"
+  " \001(\t\"\263\001\n\026PsuComponentAttributes\022G\n\021suppo"
+  "rted_voltage\030\001 \001(\0162,.dmi.PsuComponentAtt"
+  "ributes.SupportedVoltage\"P\n\020SupportedVol"
+  "tage\022\037\n\033SUPPORTED_VOLTAGE_UNDEFINED\020\000\022\007\n"
+  "\003V48\020\001\022\010\n\004V230\020\002\022\010\n\004V115\020\003\"\253\004\n\037Transceiv"
+  "erComponentsAttributes\022D\n\013form_factor\030\001 "
+  "\001(\0162/.dmi.TransceiverComponentsAttribute"
+  "s.FormFactor\022(\n\ntrans_type\030\002 \001(\0162\024.dmi.T"
+  "ransceiverType\022\024\n\014max_distance\030\003 \001(\r\022+\n\022"
+  "max_distance_scale\030\004 \001(\0162\017.dmi.ValueScal"
+  "e\022\025\n\rrx_wavelength\030\005 \003(\r\022\025\n\rtx_wavelengt"
+  "h\030\006 \003(\r\022)\n\020wavelength_scale\030\007 \001(\0162\017.dmi."
+  "ValueScale\022\020\n\010tx_power\030\010 \003(\005\022\'\n\016tx_power"
+  "_scale\030\t \001(\0162\017.dmi.ValueScale\"\300\001\n\nFormFa"
+  "ctor\022\027\n\023FORM_FACTOR_UNKNOWN\020\000\022\010\n\004QSFP\020\001\022"
+  "\r\n\tQSFP_PLUS\020\002\022\n\n\006QSFP28\020\003\022\007\n\003SFP\020\004\022\014\n\010S"
+  "FP_PLUS\020\005\022\007\n\003XFP\020\006\022\010\n\004CFP4\020\007\022\010\n\004CFP2\020\010\022\010"
+  "\n\004CPAK\020\t\022\006\n\002X2\020\n\022\t\n\005OTHER\020\013\022\007\n\003CFP\020\014\022\014\n\010"
+  "CFP2_ACO\020\r\022\014\n\010CFP2_DCO\020\016\"\350\005\n\tComponent\022\014"
+  "\n\004name\030\001 \001(\t\022!\n\005class\030\002 \001(\0162\022.dmi.Compon"
+  "entType\022\023\n\013description\030\003 \001(\t\022\016\n\006parent\030\004"
+  " \001(\t\022\026\n\016parent_rel_pos\030\005 \001(\005\022 \n\010children"
+  "\030\006 \003(\0132\016.dmi.Component\022\024\n\014hardware_rev\030\007"
+  " \001(\t\022\024\n\014firmware_rev\030\010 \001(\t\022\024\n\014software_r"
+  "ev\030\t \001(\t\022\022\n\nserial_num\030\n \001(\t\022\020\n\010mfg_name"
+  "\030\013 \001(\t\022\022\n\nmodel_name\030\014 \001(\t\022\r\n\005alias\030\r \001("
+  "\t\022\020\n\010asset_id\030\016 \001(\t\022\016\n\006is_fru\030\017 \001(\010\022,\n\010m"
+  "fg_date\030\020 \001(\0132\032.google.protobuf.Timestam"
+  "p\022\025\n\003uri\030\021 \001(\0132\010.dmi.Uri\022\027\n\004uuid\030\022 \001(\0132\t"
+  ".dmi.Uuid\022\"\n\005state\030\023 \001(\0132\023.dmi.Component"
+  "State\022-\n\013sensor_data\030\024 \003(\0132\030.dmi.Compone"
+  "ntSensorData\0221\n\tport_attr\0302 \001(\0132\034.dmi.Po"
+  "rtComponentAttributesH\000\022;\n\016container_att"
+  "r\0303 \001(\0132!.dmi.ContainerComponentAttribut"
+  "esH\000\022/\n\010psu_attr\0304 \001(\0132\033.dmi.PsuComponen"
+  "tAttributesH\000\022@\n\020transceiver_attr\0305 \001(\0132"
+  "$.dmi.TransceiverComponentsAttributesH\000B"
+  "\n\n\010specific\"\212\001\n\010Hardware\022/\n\013last_change\030"
+  "\001 \001(\0132\032.google.protobuf.Timestamp\022\034\n\004roo"
+  "t\030\002 \001(\0132\016.dmi.Component\022/\n\013last_booted\030\003"
+  " \001(\0132\032.google.protobuf.Timestamp\"\351\002\n\023Mod"
+  "ifiableComponent\022\014\n\004name\030\001 \001(\t\022!\n\005class\030"
+  "\002 \001(\0162\022.dmi.ComponentType\022\036\n\006parent\030\003 \001("
+  "\0132\016.dmi.Component\022\026\n\016parent_rel_pos\030\004 \001("
+  "\005\022\r\n\005alias\030\005 \001(\t\022\020\n\010asset_id\030\006 \001(\t\022\025\n\003ur"
+  "i\030\007 \001(\0132\010.dmi.Uri\022-\n\013admin_state\030\010 \001(\0162\030"
+  ".dmi.ComponentAdminState\0227\n\tport_attr\0302 "
+  "\001(\0132\".dmi.PortComponentChangeAttributesH"
+  "\000\022=\n\010trx_attr\0303 \001(\0132).dmi.TransceiverCom"
+  "ponentChangeAttributesH\000B\n\n\010specific*\264\003\n"
+  "\rComponentType\022\034\n\030COMPONENT_TYPE_UNDEFIN"
+  "ED\020\000\022\032\n\026COMPONENT_TYPE_UNKNOWN\020\001\022\032\n\026COMP"
+  "ONENT_TYPE_CHASSIS\020\002\022\034\n\030COMPONENT_TYPE_B"
+  "ACKPLANE\020\003\022\034\n\030COMPONENT_TYPE_CONTAINER\020\004"
+  "\022\037\n\033COMPONENT_TYPE_POWER_SUPPLY\020\005\022\026\n\022COM"
+  "PONENT_TYPE_FAN\020\006\022\031\n\025COMPONENT_TYPE_SENS"
+  "OR\020\007\022\031\n\025COMPONENT_TYPE_MODULE\020\010\022\027\n\023COMPO"
+  "NENT_TYPE_PORT\020\t\022\026\n\022COMPONENT_TYPE_CPU\020\n"
+  "\022\032\n\026COMPONENT_TYPE_BATTERY\020\013\022\032\n\026COMPONEN"
+  "T_TYPE_STORAGE\020\014\022\031\n\025COMPONENT_TYPE_MEMOR"
+  "Y\020\r\022\036\n\032COMPONENT_TYPE_TRANSCEIVER\020\016*\263\001\n\023"
+  "ComponentAdminState\022\036\n\032COMP_ADMIN_STATE_"
+  "UNDEFINED\020\000\022\034\n\030COMP_ADMIN_STATE_UNKNOWN\020"
+  "\001\022\033\n\027COMP_ADMIN_STATE_LOCKED\020\002\022\"\n\036COMP_A"
+  "DMIN_STATE_SHUTTING_DOWN\020\003\022\035\n\031COMP_ADMIN"
+  "_STATE_UNLOCKED\020\004*\250\001\n\022ComponentOperState"
+  "\022\035\n\031COMP_OPER_STATE_UNDEFINED\020\000\022\033\n\027COMP_"
+  "OPER_STATE_UNKNOWN\020\001\022\034\n\030COMP_OPER_STATE_"
+  "DISABLED\020\002\022\033\n\027COMP_OPER_STATE_ENABLED\020\003\022"
+  "\033\n\027COMP_OPER_STATE_TESTING\020\004*\246\001\n\023Compone"
+  "ntUsageState\022\036\n\032COMP_USAGE_STATE_UNDEFIN"
+  "ED\020\000\022\034\n\030COMP_USAGE_STATE_UNKNOWN\020\001\022\031\n\025CO"
+  "MP_USAGE_STATE_IDLE\020\002\022\033\n\027COMP_USAGE_STAT"
+  "E_ACTIVE\020\003\022\031\n\025COMP_USAGE_STATE_BUSY\020\004*\217\002"
+  "\n\023ComponentAlarmState\022\036\n\032COMP_ALARM_STAT"
+  "E_UNDEFINED\020\000\022\034\n\030COMP_ALARM_STATE_UNKNOW"
+  "N\020\001\022!\n\035COMP_ALARM_STATE_UNDER_REPAIR\020\002\022\035"
+  "\n\031COMP_ALARM_STATE_CRITICAL\020\003\022\032\n\026COMP_AL"
+  "ARM_STATE_MAJOR\020\004\022\032\n\026COMP_ALARM_STATE_MI"
+  "NOR\020\005\022\034\n\030COMP_ALARM_STATE_WARNING\020\006\022\"\n\036C"
+  "OMP_ALARM_STATE_INDETERMINATE\020\007*\274\001\n\025Comp"
+  "onentStandbyState\022 \n\034COMP_STANDBY_STATE_"
+  "UNDEFINED\020\000\022\036\n\032COMP_STANDBY_STATE_UNKNOW"
+  "N\020\001\022\032\n\026COMP_STANDBY_STATE_HOT\020\002\022\033\n\027COMP_"
+  "STANDBY_STATE_COLD\020\003\022(\n$COMP_STANDBY_STA"
+  "TE_PROVIDING_SERVICE\020\004*\235\003\n\rDataValueType"
+  "\022\030\n\024VALUE_TYPE_UNDEFINED\020\000\022\024\n\020VALUE_TYPE"
+  "_OTHER\020\001\022\026\n\022VALUE_TYPE_UNKNOWN\020\002\022\027\n\023VALU"
+  "E_TYPE_VOLTS_AC\020\003\022\027\n\023VALUE_TYPE_VOLTS_DC"
+  "\020\004\022\026\n\022VALUE_TYPE_AMPERES\020\005\022\024\n\020VALUE_TYPE"
+  "_WATTS\020\006\022\024\n\020VALUE_TYPE_HERTZ\020\007\022\026\n\022VALUE_"
+  "TYPE_CELSIUS\020\010\022\031\n\025VALUE_TYPE_PERCENT_RH\020"
+  "\t\022\022\n\016VALUE_TYPE_RPM\020\n\022\022\n\016VALUE_TYPE_CMM\020"
+  "\013\022\032\n\026VALUE_TYPE_TRUTH_VALUE\020\014\022\026\n\022VALUE_T"
+  "YPE_PERCENT\020\r\022\025\n\021VALUE_TYPE_METERS\020\016\022\024\n\020"
+  "VALUE_TYPE_BYTES\020\017\022\022\n\016VALUE_TYPE_DBM\020\020*\244"
+  "\003\n\nValueScale\022\031\n\025VALUE_SCALE_UNDEFINED\020\000"
+  "\022\025\n\021VALUE_SCALE_YOCTO\020\001\022\025\n\021VALUE_SCALE_Z"
+  "EPTO\020\002\022\024\n\020VALUE_SCALE_ATTO\020\003\022\025\n\021VALUE_SC"
+  "ALE_FEMTO\020\004\022\024\n\020VALUE_SCALE_PICO\020\005\022\024\n\020VAL"
+  "UE_SCALE_NANO\020\006\022\025\n\021VALUE_SCALE_MICRO\020\007\022\025"
+  "\n\021VALUE_SCALE_MILLI\020\010\022\025\n\021VALUE_SCALE_UNI"
+  "TS\020\t\022\024\n\020VALUE_SCALE_KILO\020\n\022\024\n\020VALUE_SCAL"
+  "E_MEGA\020\013\022\024\n\020VALUE_SCALE_GIGA\020\014\022\024\n\020VALUE_"
+  "SCALE_TERA\020\r\022\024\n\020VALUE_SCALE_PETA\020\016\022\023\n\017VA"
+  "LUE_SCALE_EXA\020\017\022\025\n\021VALUE_SCALE_ZETTA\020\020\022\025"
+  "\n\021VALUE_SCALE_YOTTA\020\021*\202\001\n\014SensorStatus\022\033"
+  "\n\027SENSOR_STATUS_UNDEFINED\020\000\022\024\n\020SENSOR_ST"
+  "ATUS_OK\020\001\022\035\n\031SENSOR_STATUS_UNAVAILABLE\020\002"
+  "\022 \n\034SENSOR_STATUS_NONOPERATIONAL\020\003*\244\001\n\017T"
+  "ransceiverType\022\022\n\016TYPE_UNDEFINED\020\000\022\014\n\010ET"
+  "HERNET\020\001\022\010\n\004GPON\020\002\022\t\n\005XGPON\020\003\022\n\n\006XGSPON\020"
+  "\004\022\010\n\004CPON\020\005\022\013\n\007NG_PON2\020\006\022\010\n\004EPON\020\007\022\025\n\021CO"
+  "MBO_GPON_XGSPON\020\010\022\026\n\021TYPE_NOT_DETECTED\020\377"
+  "\001B;Z9github.com/opencord/device-manageme"
+  "nt-interface/v3/go/dmib\006proto3"
   ;
 ::google::protobuf::internal::DescriptorTable descriptor_table_dmi_2fhw_2eproto = {
   false, InitDefaults_dmi_2fhw_2eproto, 
   descriptor_table_protodef_dmi_2fhw_2eproto,
-  "dmi/hw.proto", &assign_descriptors_table_dmi_2fhw_2eproto, 6366,
+  "dmi/hw.proto", &assign_descriptors_table_dmi_2fhw_2eproto, 6510,
 };
 
 void AddDescriptors_dmi_2fhw_2eproto() {
@@ -3236,16 +3272,23 @@
 void PortComponentAttributes::InitAsDefaultInstance() {
   ::dmi::_PortComponentAttributes_default_instance_._instance.get_mutable()->pon_id_config_ = const_cast< ::dmi::PonIdConfig*>(
       ::dmi::PonIdConfig::internal_default_instance());
+  ::dmi::_PortComponentAttributes_default_instance_._instance.get_mutable()->distance_ = const_cast< ::dmi::PonDistance*>(
+      ::dmi::PonDistance::internal_default_instance());
 }
 class PortComponentAttributes::HasBitSetters {
  public:
   static const ::dmi::PonIdConfig& pon_id_config(const PortComponentAttributes* msg);
+  static const ::dmi::PonDistance& distance(const PortComponentAttributes* msg);
 };
 
 const ::dmi::PonIdConfig&
 PortComponentAttributes::HasBitSetters::pon_id_config(const PortComponentAttributes* msg) {
   return *msg->pon_id_config_;
 }
+const ::dmi::PonDistance&
+PortComponentAttributes::HasBitSetters::distance(const PortComponentAttributes* msg) {
+  return *msg->distance_;
+}
 #if !defined(_MSC_VER) || _MSC_VER >= 1900
 const int PortComponentAttributes::kConnectorTypeFieldNumber;
 const int PortComponentAttributes::kSpeedFieldNumber;
@@ -3254,6 +3297,7 @@
 const int PortComponentAttributes::kMappingLabelFieldNumber;
 const int PortComponentAttributes::kPonIdConfigFieldNumber;
 const int PortComponentAttributes::kSpeedAutonegotiationFieldNumber;
+const int PortComponentAttributes::kDistanceFieldNumber;
 #endif  // !defined(_MSC_VER) || _MSC_VER >= 1900
 
 PortComponentAttributes::PortComponentAttributes()
@@ -3278,6 +3322,11 @@
   } else {
     pon_id_config_ = nullptr;
   }
+  if (from.has_distance()) {
+    distance_ = new ::dmi::PonDistance(*from.distance_);
+  } else {
+    distance_ = nullptr;
+  }
   ::memcpy(&connector_type_, &from.connector_type_,
     static_cast<size_t>(reinterpret_cast<char*>(&speed_autonegotiation_) -
     reinterpret_cast<char*>(&connector_type_)) + sizeof(speed_autonegotiation_));
@@ -3303,6 +3352,7 @@
   physical_label_.DestroyNoArena(&::google::protobuf::internal::GetEmptyStringAlreadyInited());
   mapping_label_.DestroyNoArena(&::google::protobuf::internal::GetEmptyStringAlreadyInited());
   if (this != internal_default_instance()) delete pon_id_config_;
+  if (this != internal_default_instance()) delete distance_;
 }
 
 void PortComponentAttributes::SetCachedSize(int size) const {
@@ -3326,6 +3376,10 @@
     delete pon_id_config_;
   }
   pon_id_config_ = nullptr;
+  if (GetArenaNoVirtual() == nullptr && distance_ != nullptr) {
+    delete distance_;
+  }
+  distance_ = nullptr;
   ::memset(&connector_type_, 0, static_cast<size_t>(
       reinterpret_cast<char*>(&speed_autonegotiation_) -
       reinterpret_cast<char*>(&connector_type_)) + sizeof(speed_autonegotiation_));
@@ -3421,6 +3475,19 @@
         GOOGLE_PROTOBUF_PARSER_ASSERT(ptr);
         break;
       }
+      // .dmi.PonDistance distance = 8;
+      case 8: {
+        if (static_cast<::google::protobuf::uint8>(tag) != 66) goto handle_unusual;
+        ptr = ::google::protobuf::io::ReadSize(ptr, &size);
+        GOOGLE_PROTOBUF_PARSER_ASSERT(ptr);
+        parser_till_end = ::dmi::PonDistance::_InternalParse;
+        object = msg->mutable_distance();
+        if (size > end - ptr) goto len_delim_till_end;
+        ptr += size;
+        GOOGLE_PROTOBUF_PARSER_ASSERT(ctx->ParseExactRange(
+            {parser_till_end, object}, ptr - size, ptr));
+        break;
+      }
       default: {
       handle_unusual:
         if ((tag & 7) == 4 || tag == 0) {
@@ -3551,6 +3618,17 @@
         break;
       }
 
+      // .dmi.PonDistance distance = 8;
+      case 8: {
+        if (static_cast< ::google::protobuf::uint8>(tag) == (66 & 0xFF)) {
+          DO_(::google::protobuf::internal::WireFormatLite::ReadMessage(
+               input, mutable_distance()));
+        } else {
+          goto handle_unusual;
+        }
+        break;
+      }
+
       default: {
       handle_unusual:
         if (tag == 0) {
@@ -3627,6 +3705,12 @@
     ::google::protobuf::internal::WireFormatLite::WriteBool(7, this->speed_autonegotiation(), output);
   }
 
+  // .dmi.PonDistance distance = 8;
+  if (this->has_distance()) {
+    ::google::protobuf::internal::WireFormatLite::WriteMessageMaybeToArray(
+      8, HasBitSetters::distance(this), output);
+  }
+
   if (_internal_metadata_.have_unknown_fields()) {
     ::google::protobuf::internal::WireFormat::SerializeUnknownFields(
         _internal_metadata_.unknown_fields(), output);
@@ -3692,6 +3776,13 @@
     target = ::google::protobuf::internal::WireFormatLite::WriteBoolToArray(7, this->speed_autonegotiation(), target);
   }
 
+  // .dmi.PonDistance distance = 8;
+  if (this->has_distance()) {
+    target = ::google::protobuf::internal::WireFormatLite::
+      InternalWriteMessageToArray(
+        8, HasBitSetters::distance(this), target);
+  }
+
   if (_internal_metadata_.have_unknown_fields()) {
     target = ::google::protobuf::internal::WireFormat::SerializeUnknownFieldsToArray(
         _internal_metadata_.unknown_fields(), target);
@@ -3734,6 +3825,13 @@
         *pon_id_config_);
   }
 
+  // .dmi.PonDistance distance = 8;
+  if (this->has_distance()) {
+    total_size += 1 +
+      ::google::protobuf::internal::WireFormatLite::MessageSize(
+        *distance_);
+  }
+
   // .dmi.PortComponentAttributes.ConnectorType connector_type = 1;
   if (this->connector_type() != 0) {
     total_size += 1 +
@@ -3795,6 +3893,9 @@
   if (from.has_pon_id_config()) {
     mutable_pon_id_config()->::dmi::PonIdConfig::MergeFrom(from.pon_id_config());
   }
+  if (from.has_distance()) {
+    mutable_distance()->::dmi::PonDistance::MergeFrom(from.distance());
+  }
   if (from.connector_type() != 0) {
     set_connector_type(from.connector_type());
   }
@@ -3839,6 +3940,7 @@
   mapping_label_.Swap(&other->mapping_label_, &::google::protobuf::internal::GetEmptyStringAlreadyInited(),
     GetArenaNoVirtual());
   swap(pon_id_config_, other->pon_id_config_);
+  swap(distance_, other->distance_);
   swap(connector_type_, other->connector_type_);
   swap(speed_, other->speed_);
   swap(protocol_, other->protocol_);
@@ -3853,21 +3955,337 @@
 
 // ===================================================================
 
+void PonDistance::InitAsDefaultInstance() {
+}
+class PonDistance::HasBitSetters {
+ public:
+};
+
+#if !defined(_MSC_VER) || _MSC_VER >= 1900
+const int PonDistance::kMaxDistanceFieldNumber;
+const int PonDistance::kMaxDifferentialDistanceFieldNumber;
+#endif  // !defined(_MSC_VER) || _MSC_VER >= 1900
+
+PonDistance::PonDistance()
+  : ::google::protobuf::Message(), _internal_metadata_(nullptr) {
+  SharedCtor();
+  // @@protoc_insertion_point(constructor:dmi.PonDistance)
+}
+PonDistance::PonDistance(const PonDistance& from)
+  : ::google::protobuf::Message(),
+      _internal_metadata_(nullptr) {
+  _internal_metadata_.MergeFrom(from._internal_metadata_);
+  ::memcpy(&max_distance_, &from.max_distance_,
+    static_cast<size_t>(reinterpret_cast<char*>(&max_differential_distance_) -
+    reinterpret_cast<char*>(&max_distance_)) + sizeof(max_differential_distance_));
+  // @@protoc_insertion_point(copy_constructor:dmi.PonDistance)
+}
+
+void PonDistance::SharedCtor() {
+  ::memset(&max_distance_, 0, static_cast<size_t>(
+      reinterpret_cast<char*>(&max_differential_distance_) -
+      reinterpret_cast<char*>(&max_distance_)) + sizeof(max_differential_distance_));
+}
+
+PonDistance::~PonDistance() {
+  // @@protoc_insertion_point(destructor:dmi.PonDistance)
+  SharedDtor();
+}
+
+void PonDistance::SharedDtor() {
+}
+
+void PonDistance::SetCachedSize(int size) const {
+  _cached_size_.Set(size);
+}
+const PonDistance& PonDistance::default_instance() {
+  ::google::protobuf::internal::InitSCC(&::scc_info_PonDistance_dmi_2fhw_2eproto.base);
+  return *internal_default_instance();
+}
+
+
+void PonDistance::Clear() {
+// @@protoc_insertion_point(message_clear_start:dmi.PonDistance)
+  ::google::protobuf::uint32 cached_has_bits = 0;
+  // Prevent compiler warnings about cached_has_bits being unused
+  (void) cached_has_bits;
+
+  ::memset(&max_distance_, 0, static_cast<size_t>(
+      reinterpret_cast<char*>(&max_differential_distance_) -
+      reinterpret_cast<char*>(&max_distance_)) + sizeof(max_differential_distance_));
+  _internal_metadata_.Clear();
+}
+
+#if GOOGLE_PROTOBUF_ENABLE_EXPERIMENTAL_PARSER
+const char* PonDistance::_InternalParse(const char* begin, const char* end, void* object,
+                  ::google::protobuf::internal::ParseContext* ctx) {
+  auto msg = static_cast<PonDistance*>(object);
+  ::google::protobuf::int32 size; (void)size;
+  int depth; (void)depth;
+  ::google::protobuf::uint32 tag;
+  ::google::protobuf::internal::ParseFunc parser_till_end; (void)parser_till_end;
+  auto ptr = begin;
+  while (ptr < end) {
+    ptr = ::google::protobuf::io::Parse32(ptr, &tag);
+    GOOGLE_PROTOBUF_PARSER_ASSERT(ptr);
+    switch (tag >> 3) {
+      // uint32 max_distance = 1;
+      case 1: {
+        if (static_cast<::google::protobuf::uint8>(tag) != 8) goto handle_unusual;
+        msg->set_max_distance(::google::protobuf::internal::ReadVarint(&ptr));
+        GOOGLE_PROTOBUF_PARSER_ASSERT(ptr);
+        break;
+      }
+      // uint32 max_differential_distance = 2;
+      case 2: {
+        if (static_cast<::google::protobuf::uint8>(tag) != 16) goto handle_unusual;
+        msg->set_max_differential_distance(::google::protobuf::internal::ReadVarint(&ptr));
+        GOOGLE_PROTOBUF_PARSER_ASSERT(ptr);
+        break;
+      }
+      default: {
+      handle_unusual:
+        if ((tag & 7) == 4 || tag == 0) {
+          ctx->EndGroup(tag);
+          return ptr;
+        }
+        auto res = UnknownFieldParse(tag, {_InternalParse, msg},
+          ptr, end, msg->_internal_metadata_.mutable_unknown_fields(), ctx);
+        ptr = res.first;
+        GOOGLE_PROTOBUF_PARSER_ASSERT(ptr != nullptr);
+        if (res.second) return ptr;
+      }
+    }  // switch
+  }  // while
+  return ptr;
+}
+#else  // GOOGLE_PROTOBUF_ENABLE_EXPERIMENTAL_PARSER
+bool PonDistance::MergePartialFromCodedStream(
+    ::google::protobuf::io::CodedInputStream* input) {
+#define DO_(EXPRESSION) if (!PROTOBUF_PREDICT_TRUE(EXPRESSION)) goto failure
+  ::google::protobuf::uint32 tag;
+  // @@protoc_insertion_point(parse_start:dmi.PonDistance)
+  for (;;) {
+    ::std::pair<::google::protobuf::uint32, bool> p = input->ReadTagWithCutoffNoLastTag(127u);
+    tag = p.first;
+    if (!p.second) goto handle_unusual;
+    switch (::google::protobuf::internal::WireFormatLite::GetTagFieldNumber(tag)) {
+      // uint32 max_distance = 1;
+      case 1: {
+        if (static_cast< ::google::protobuf::uint8>(tag) == (8 & 0xFF)) {
+
+          DO_((::google::protobuf::internal::WireFormatLite::ReadPrimitive<
+                   ::google::protobuf::uint32, ::google::protobuf::internal::WireFormatLite::TYPE_UINT32>(
+                 input, &max_distance_)));
+        } else {
+          goto handle_unusual;
+        }
+        break;
+      }
+
+      // uint32 max_differential_distance = 2;
+      case 2: {
+        if (static_cast< ::google::protobuf::uint8>(tag) == (16 & 0xFF)) {
+
+          DO_((::google::protobuf::internal::WireFormatLite::ReadPrimitive<
+                   ::google::protobuf::uint32, ::google::protobuf::internal::WireFormatLite::TYPE_UINT32>(
+                 input, &max_differential_distance_)));
+        } else {
+          goto handle_unusual;
+        }
+        break;
+      }
+
+      default: {
+      handle_unusual:
+        if (tag == 0) {
+          goto success;
+        }
+        DO_(::google::protobuf::internal::WireFormat::SkipField(
+              input, tag, _internal_metadata_.mutable_unknown_fields()));
+        break;
+      }
+    }
+  }
+success:
+  // @@protoc_insertion_point(parse_success:dmi.PonDistance)
+  return true;
+failure:
+  // @@protoc_insertion_point(parse_failure:dmi.PonDistance)
+  return false;
+#undef DO_
+}
+#endif  // GOOGLE_PROTOBUF_ENABLE_EXPERIMENTAL_PARSER
+
+void PonDistance::SerializeWithCachedSizes(
+    ::google::protobuf::io::CodedOutputStream* output) const {
+  // @@protoc_insertion_point(serialize_start:dmi.PonDistance)
+  ::google::protobuf::uint32 cached_has_bits = 0;
+  (void) cached_has_bits;
+
+  // uint32 max_distance = 1;
+  if (this->max_distance() != 0) {
+    ::google::protobuf::internal::WireFormatLite::WriteUInt32(1, this->max_distance(), output);
+  }
+
+  // uint32 max_differential_distance = 2;
+  if (this->max_differential_distance() != 0) {
+    ::google::protobuf::internal::WireFormatLite::WriteUInt32(2, this->max_differential_distance(), output);
+  }
+
+  if (_internal_metadata_.have_unknown_fields()) {
+    ::google::protobuf::internal::WireFormat::SerializeUnknownFields(
+        _internal_metadata_.unknown_fields(), output);
+  }
+  // @@protoc_insertion_point(serialize_end:dmi.PonDistance)
+}
+
+::google::protobuf::uint8* PonDistance::InternalSerializeWithCachedSizesToArray(
+    ::google::protobuf::uint8* target) const {
+  // @@protoc_insertion_point(serialize_to_array_start:dmi.PonDistance)
+  ::google::protobuf::uint32 cached_has_bits = 0;
+  (void) cached_has_bits;
+
+  // uint32 max_distance = 1;
+  if (this->max_distance() != 0) {
+    target = ::google::protobuf::internal::WireFormatLite::WriteUInt32ToArray(1, this->max_distance(), target);
+  }
+
+  // uint32 max_differential_distance = 2;
+  if (this->max_differential_distance() != 0) {
+    target = ::google::protobuf::internal::WireFormatLite::WriteUInt32ToArray(2, this->max_differential_distance(), target);
+  }
+
+  if (_internal_metadata_.have_unknown_fields()) {
+    target = ::google::protobuf::internal::WireFormat::SerializeUnknownFieldsToArray(
+        _internal_metadata_.unknown_fields(), target);
+  }
+  // @@protoc_insertion_point(serialize_to_array_end:dmi.PonDistance)
+  return target;
+}
+
+size_t PonDistance::ByteSizeLong() const {
+// @@protoc_insertion_point(message_byte_size_start:dmi.PonDistance)
+  size_t total_size = 0;
+
+  if (_internal_metadata_.have_unknown_fields()) {
+    total_size +=
+      ::google::protobuf::internal::WireFormat::ComputeUnknownFieldsSize(
+        _internal_metadata_.unknown_fields());
+  }
+  ::google::protobuf::uint32 cached_has_bits = 0;
+  // Prevent compiler warnings about cached_has_bits being unused
+  (void) cached_has_bits;
+
+  // uint32 max_distance = 1;
+  if (this->max_distance() != 0) {
+    total_size += 1 +
+      ::google::protobuf::internal::WireFormatLite::UInt32Size(
+        this->max_distance());
+  }
+
+  // uint32 max_differential_distance = 2;
+  if (this->max_differential_distance() != 0) {
+    total_size += 1 +
+      ::google::protobuf::internal::WireFormatLite::UInt32Size(
+        this->max_differential_distance());
+  }
+
+  int cached_size = ::google::protobuf::internal::ToCachedSize(total_size);
+  SetCachedSize(cached_size);
+  return total_size;
+}
+
+void PonDistance::MergeFrom(const ::google::protobuf::Message& from) {
+// @@protoc_insertion_point(generalized_merge_from_start:dmi.PonDistance)
+  GOOGLE_DCHECK_NE(&from, this);
+  const PonDistance* source =
+      ::google::protobuf::DynamicCastToGenerated<PonDistance>(
+          &from);
+  if (source == nullptr) {
+  // @@protoc_insertion_point(generalized_merge_from_cast_fail:dmi.PonDistance)
+    ::google::protobuf::internal::ReflectionOps::Merge(from, this);
+  } else {
+  // @@protoc_insertion_point(generalized_merge_from_cast_success:dmi.PonDistance)
+    MergeFrom(*source);
+  }
+}
+
+void PonDistance::MergeFrom(const PonDistance& from) {
+// @@protoc_insertion_point(class_specific_merge_from_start:dmi.PonDistance)
+  GOOGLE_DCHECK_NE(&from, this);
+  _internal_metadata_.MergeFrom(from._internal_metadata_);
+  ::google::protobuf::uint32 cached_has_bits = 0;
+  (void) cached_has_bits;
+
+  if (from.max_distance() != 0) {
+    set_max_distance(from.max_distance());
+  }
+  if (from.max_differential_distance() != 0) {
+    set_max_differential_distance(from.max_differential_distance());
+  }
+}
+
+void PonDistance::CopyFrom(const ::google::protobuf::Message& from) {
+// @@protoc_insertion_point(generalized_copy_from_start:dmi.PonDistance)
+  if (&from == this) return;
+  Clear();
+  MergeFrom(from);
+}
+
+void PonDistance::CopyFrom(const PonDistance& from) {
+// @@protoc_insertion_point(class_specific_copy_from_start:dmi.PonDistance)
+  if (&from == this) return;
+  Clear();
+  MergeFrom(from);
+}
+
+bool PonDistance::IsInitialized() const {
+  return true;
+}
+
+void PonDistance::Swap(PonDistance* other) {
+  if (other == this) return;
+  InternalSwap(other);
+}
+void PonDistance::InternalSwap(PonDistance* other) {
+  using std::swap;
+  _internal_metadata_.Swap(&other->_internal_metadata_);
+  swap(max_distance_, other->max_distance_);
+  swap(max_differential_distance_, other->max_differential_distance_);
+}
+
+::google::protobuf::Metadata PonDistance::GetMetadata() const {
+  ::google::protobuf::internal::AssignDescriptors(&::assign_descriptors_table_dmi_2fhw_2eproto);
+  return ::file_level_metadata_dmi_2fhw_2eproto[kIndexInFileMessages];
+}
+
+
+// ===================================================================
+
 void PortComponentChangeAttributes::InitAsDefaultInstance() {
   ::dmi::_PortComponentChangeAttributes_default_instance_._instance.get_mutable()->pon_id_config_ = const_cast< ::dmi::PonIdConfig*>(
       ::dmi::PonIdConfig::internal_default_instance());
+  ::dmi::_PortComponentChangeAttributes_default_instance_._instance.get_mutable()->distance_ = const_cast< ::dmi::PonDistance*>(
+      ::dmi::PonDistance::internal_default_instance());
 }
 class PortComponentChangeAttributes::HasBitSetters {
  public:
   static const ::dmi::PonIdConfig& pon_id_config(const PortComponentChangeAttributes* msg);
+  static const ::dmi::PonDistance& distance(const PortComponentChangeAttributes* msg);
 };
 
 const ::dmi::PonIdConfig&
 PortComponentChangeAttributes::HasBitSetters::pon_id_config(const PortComponentChangeAttributes* msg) {
   return *msg->pon_id_config_;
 }
+const ::dmi::PonDistance&
+PortComponentChangeAttributes::HasBitSetters::distance(const PortComponentChangeAttributes* msg) {
+  return *msg->distance_;
+}
 #if !defined(_MSC_VER) || _MSC_VER >= 1900
 const int PortComponentChangeAttributes::kPonIdConfigFieldNumber;
+const int PortComponentChangeAttributes::kDistanceFieldNumber;
 #endif  // !defined(_MSC_VER) || _MSC_VER >= 1900
 
 PortComponentChangeAttributes::PortComponentChangeAttributes()
@@ -3884,13 +4302,20 @@
   } else {
     pon_id_config_ = nullptr;
   }
+  if (from.has_distance()) {
+    distance_ = new ::dmi::PonDistance(*from.distance_);
+  } else {
+    distance_ = nullptr;
+  }
   // @@protoc_insertion_point(copy_constructor:dmi.PortComponentChangeAttributes)
 }
 
 void PortComponentChangeAttributes::SharedCtor() {
   ::google::protobuf::internal::InitSCC(
       &scc_info_PortComponentChangeAttributes_dmi_2fhw_2eproto.base);
-  pon_id_config_ = nullptr;
+  ::memset(&pon_id_config_, 0, static_cast<size_t>(
+      reinterpret_cast<char*>(&distance_) -
+      reinterpret_cast<char*>(&pon_id_config_)) + sizeof(distance_));
 }
 
 PortComponentChangeAttributes::~PortComponentChangeAttributes() {
@@ -3900,6 +4325,7 @@
 
 void PortComponentChangeAttributes::SharedDtor() {
   if (this != internal_default_instance()) delete pon_id_config_;
+  if (this != internal_default_instance()) delete distance_;
 }
 
 void PortComponentChangeAttributes::SetCachedSize(int size) const {
@@ -3921,6 +4347,10 @@
     delete pon_id_config_;
   }
   pon_id_config_ = nullptr;
+  if (GetArenaNoVirtual() == nullptr && distance_ != nullptr) {
+    delete distance_;
+  }
+  distance_ = nullptr;
   _internal_metadata_.Clear();
 }
 
@@ -3950,6 +4380,19 @@
             {parser_till_end, object}, ptr - size, ptr));
         break;
       }
+      // .dmi.PonDistance distance = 2;
+      case 2: {
+        if (static_cast<::google::protobuf::uint8>(tag) != 18) goto handle_unusual;
+        ptr = ::google::protobuf::io::ReadSize(ptr, &size);
+        GOOGLE_PROTOBUF_PARSER_ASSERT(ptr);
+        parser_till_end = ::dmi::PonDistance::_InternalParse;
+        object = msg->mutable_distance();
+        if (size > end - ptr) goto len_delim_till_end;
+        ptr += size;
+        GOOGLE_PROTOBUF_PARSER_ASSERT(ctx->ParseExactRange(
+            {parser_till_end, object}, ptr - size, ptr));
+        break;
+      }
       default: {
       handle_unusual:
         if ((tag & 7) == 4 || tag == 0) {
@@ -3991,6 +4434,17 @@
         break;
       }
 
+      // .dmi.PonDistance distance = 2;
+      case 2: {
+        if (static_cast< ::google::protobuf::uint8>(tag) == (18 & 0xFF)) {
+          DO_(::google::protobuf::internal::WireFormatLite::ReadMessage(
+               input, mutable_distance()));
+        } else {
+          goto handle_unusual;
+        }
+        break;
+      }
+
       default: {
       handle_unusual:
         if (tag == 0) {
@@ -4024,6 +4478,12 @@
       1, HasBitSetters::pon_id_config(this), output);
   }
 
+  // .dmi.PonDistance distance = 2;
+  if (this->has_distance()) {
+    ::google::protobuf::internal::WireFormatLite::WriteMessageMaybeToArray(
+      2, HasBitSetters::distance(this), output);
+  }
+
   if (_internal_metadata_.have_unknown_fields()) {
     ::google::protobuf::internal::WireFormat::SerializeUnknownFields(
         _internal_metadata_.unknown_fields(), output);
@@ -4044,6 +4504,13 @@
         1, HasBitSetters::pon_id_config(this), target);
   }
 
+  // .dmi.PonDistance distance = 2;
+  if (this->has_distance()) {
+    target = ::google::protobuf::internal::WireFormatLite::
+      InternalWriteMessageToArray(
+        2, HasBitSetters::distance(this), target);
+  }
+
   if (_internal_metadata_.have_unknown_fields()) {
     target = ::google::protobuf::internal::WireFormat::SerializeUnknownFieldsToArray(
         _internal_metadata_.unknown_fields(), target);
@@ -4072,6 +4539,13 @@
         *pon_id_config_);
   }
 
+  // .dmi.PonDistance distance = 2;
+  if (this->has_distance()) {
+    total_size += 1 +
+      ::google::protobuf::internal::WireFormatLite::MessageSize(
+        *distance_);
+  }
+
   int cached_size = ::google::protobuf::internal::ToCachedSize(total_size);
   SetCachedSize(cached_size);
   return total_size;
@@ -4102,6 +4576,9 @@
   if (from.has_pon_id_config()) {
     mutable_pon_id_config()->::dmi::PonIdConfig::MergeFrom(from.pon_id_config());
   }
+  if (from.has_distance()) {
+    mutable_distance()->::dmi::PonDistance::MergeFrom(from.distance());
+  }
 }
 
 void PortComponentChangeAttributes::CopyFrom(const ::google::protobuf::Message& from) {
@@ -4130,6 +4607,7 @@
   using std::swap;
   _internal_metadata_.Swap(&other->_internal_metadata_);
   swap(pon_id_config_, other->pon_id_config_);
+  swap(distance_, other->distance_);
 }
 
 ::google::protobuf::Metadata PortComponentChangeAttributes::GetMetadata() const {
@@ -9284,6 +9762,9 @@
 template<> PROTOBUF_NOINLINE ::dmi::PortComponentAttributes* Arena::CreateMaybeMessage< ::dmi::PortComponentAttributes >(Arena* arena) {
   return Arena::CreateInternal< ::dmi::PortComponentAttributes >(arena);
 }
+template<> PROTOBUF_NOINLINE ::dmi::PonDistance* Arena::CreateMaybeMessage< ::dmi::PonDistance >(Arena* arena) {
+  return Arena::CreateInternal< ::dmi::PonDistance >(arena);
+}
 template<> PROTOBUF_NOINLINE ::dmi::PortComponentChangeAttributes* Arena::CreateMaybeMessage< ::dmi::PortComponentChangeAttributes >(Arena* arena) {
   return Arena::CreateInternal< ::dmi::PortComponentChangeAttributes >(arena);
 }
diff --git a/cpp/dmi/hw.pb.h b/cpp/dmi/hw.pb.h
index cff4653..78ebca2 100644
--- a/cpp/dmi/hw.pb.h
+++ b/cpp/dmi/hw.pb.h
@@ -43,7 +43,7 @@
     PROTOBUF_SECTION_VARIABLE(protodesc_cold);
   static const ::google::protobuf::internal::AuxillaryParseTableField aux[]
     PROTOBUF_SECTION_VARIABLE(protodesc_cold);
-  static const ::google::protobuf::internal::ParseTable schema[15]
+  static const ::google::protobuf::internal::ParseTable schema[16]
     PROTOBUF_SECTION_VARIABLE(protodesc_cold);
   static const ::google::protobuf::internal::FieldMetadata field_metadata[];
   static const ::google::protobuf::internal::SerializationTable serialization_table[];
@@ -72,6 +72,9 @@
 class ModifiableComponent;
 class ModifiableComponentDefaultTypeInternal;
 extern ModifiableComponentDefaultTypeInternal _ModifiableComponent_default_instance_;
+class PonDistance;
+class PonDistanceDefaultTypeInternal;
+extern PonDistanceDefaultTypeInternal _PonDistance_default_instance_;
 class PonIdConfig;
 class PonIdConfigDefaultTypeInternal;
 extern PonIdConfigDefaultTypeInternal _PonIdConfig_default_instance_;
@@ -106,6 +109,7 @@
 template<> ::dmi::Hardware* Arena::CreateMaybeMessage<::dmi::Hardware>(Arena*);
 template<> ::dmi::HardwareID* Arena::CreateMaybeMessage<::dmi::HardwareID>(Arena*);
 template<> ::dmi::ModifiableComponent* Arena::CreateMaybeMessage<::dmi::ModifiableComponent>(Arena*);
+template<> ::dmi::PonDistance* Arena::CreateMaybeMessage<::dmi::PonDistance>(Arena*);
 template<> ::dmi::PonIdConfig* Arena::CreateMaybeMessage<::dmi::PonIdConfig>(Arena*);
 template<> ::dmi::PortComponentAttributes* Arena::CreateMaybeMessage<::dmi::PortComponentAttributes>(Arena*);
 template<> ::dmi::PortComponentChangeAttributes* Arena::CreateMaybeMessage<::dmi::PortComponentChangeAttributes>(Arena*);
@@ -1481,6 +1485,15 @@
   ::dmi::PonIdConfig* mutable_pon_id_config();
   void set_allocated_pon_id_config(::dmi::PonIdConfig* pon_id_config);
 
+  // .dmi.PonDistance distance = 8;
+  bool has_distance() const;
+  void clear_distance();
+  static const int kDistanceFieldNumber = 8;
+  const ::dmi::PonDistance& distance() const;
+  ::dmi::PonDistance* release_distance();
+  ::dmi::PonDistance* mutable_distance();
+  void set_allocated_distance(::dmi::PonDistance* distance);
+
   // .dmi.PortComponentAttributes.ConnectorType connector_type = 1;
   void clear_connector_type();
   static const int kConnectorTypeFieldNumber = 1;
@@ -1513,6 +1526,7 @@
   ::google::protobuf::internal::ArenaStringPtr physical_label_;
   ::google::protobuf::internal::ArenaStringPtr mapping_label_;
   ::dmi::PonIdConfig* pon_id_config_;
+  ::dmi::PonDistance* distance_;
   int connector_type_;
   int speed_;
   int protocol_;
@@ -1522,6 +1536,125 @@
 };
 // -------------------------------------------------------------------
 
+class PonDistance final :
+    public ::google::protobuf::Message /* @@protoc_insertion_point(class_definition:dmi.PonDistance) */ {
+ public:
+  PonDistance();
+  virtual ~PonDistance();
+
+  PonDistance(const PonDistance& from);
+
+  inline PonDistance& operator=(const PonDistance& from) {
+    CopyFrom(from);
+    return *this;
+  }
+  #if LANG_CXX11
+  PonDistance(PonDistance&& from) noexcept
+    : PonDistance() {
+    *this = ::std::move(from);
+  }
+
+  inline PonDistance& operator=(PonDistance&& from) noexcept {
+    if (GetArenaNoVirtual() == from.GetArenaNoVirtual()) {
+      if (this != &from) InternalSwap(&from);
+    } else {
+      CopyFrom(from);
+    }
+    return *this;
+  }
+  #endif
+  static const ::google::protobuf::Descriptor* descriptor() {
+    return default_instance().GetDescriptor();
+  }
+  static const PonDistance& default_instance();
+
+  static void InitAsDefaultInstance();  // FOR INTERNAL USE ONLY
+  static inline const PonDistance* internal_default_instance() {
+    return reinterpret_cast<const PonDistance*>(
+               &_PonDistance_default_instance_);
+  }
+  static constexpr int kIndexInFileMessages =
+    6;
+
+  void Swap(PonDistance* other);
+  friend void swap(PonDistance& a, PonDistance& b) {
+    a.Swap(&b);
+  }
+
+  // implements Message ----------------------------------------------
+
+  inline PonDistance* New() const final {
+    return CreateMaybeMessage<PonDistance>(nullptr);
+  }
+
+  PonDistance* New(::google::protobuf::Arena* arena) const final {
+    return CreateMaybeMessage<PonDistance>(arena);
+  }
+  void CopyFrom(const ::google::protobuf::Message& from) final;
+  void MergeFrom(const ::google::protobuf::Message& from) final;
+  void CopyFrom(const PonDistance& from);
+  void MergeFrom(const PonDistance& from);
+  PROTOBUF_ATTRIBUTE_REINITIALIZES void Clear() final;
+  bool IsInitialized() const final;
+
+  size_t ByteSizeLong() const final;
+  #if GOOGLE_PROTOBUF_ENABLE_EXPERIMENTAL_PARSER
+  static const char* _InternalParse(const char* begin, const char* end, void* object, ::google::protobuf::internal::ParseContext* ctx);
+  ::google::protobuf::internal::ParseFunc _ParseFunc() const final { return _InternalParse; }
+  #else
+  bool MergePartialFromCodedStream(
+      ::google::protobuf::io::CodedInputStream* input) final;
+  #endif  // GOOGLE_PROTOBUF_ENABLE_EXPERIMENTAL_PARSER
+  void SerializeWithCachedSizes(
+      ::google::protobuf::io::CodedOutputStream* output) const final;
+  ::google::protobuf::uint8* InternalSerializeWithCachedSizesToArray(
+      ::google::protobuf::uint8* target) const final;
+  int GetCachedSize() const final { return _cached_size_.Get(); }
+
+  private:
+  void SharedCtor();
+  void SharedDtor();
+  void SetCachedSize(int size) const final;
+  void InternalSwap(PonDistance* other);
+  private:
+  inline ::google::protobuf::Arena* GetArenaNoVirtual() const {
+    return nullptr;
+  }
+  inline void* MaybeArenaPtr() const {
+    return nullptr;
+  }
+  public:
+
+  ::google::protobuf::Metadata GetMetadata() const final;
+
+  // nested types ----------------------------------------------------
+
+  // accessors -------------------------------------------------------
+
+  // uint32 max_distance = 1;
+  void clear_max_distance();
+  static const int kMaxDistanceFieldNumber = 1;
+  ::google::protobuf::uint32 max_distance() const;
+  void set_max_distance(::google::protobuf::uint32 value);
+
+  // uint32 max_differential_distance = 2;
+  void clear_max_differential_distance();
+  static const int kMaxDifferentialDistanceFieldNumber = 2;
+  ::google::protobuf::uint32 max_differential_distance() const;
+  void set_max_differential_distance(::google::protobuf::uint32 value);
+
+  // @@protoc_insertion_point(class_scope:dmi.PonDistance)
+ private:
+  class HasBitSetters;
+
+  ::google::protobuf::internal::InternalMetadataWithArena _internal_metadata_;
+  ::google::protobuf::uint32 max_distance_;
+  ::google::protobuf::uint32 max_differential_distance_;
+  mutable ::google::protobuf::internal::CachedSize _cached_size_;
+  friend struct ::TableStruct_dmi_2fhw_2eproto;
+};
+// -------------------------------------------------------------------
+
 class PortComponentChangeAttributes final :
     public ::google::protobuf::Message /* @@protoc_insertion_point(class_definition:dmi.PortComponentChangeAttributes) */ {
  public:
@@ -1560,7 +1693,7 @@
                &_PortComponentChangeAttributes_default_instance_);
   }
   static constexpr int kIndexInFileMessages =
-    6;
+    7;
 
   void Swap(PortComponentChangeAttributes* other);
   friend void swap(PortComponentChangeAttributes& a, PortComponentChangeAttributes& b) {
@@ -1626,12 +1759,22 @@
   ::dmi::PonIdConfig* mutable_pon_id_config();
   void set_allocated_pon_id_config(::dmi::PonIdConfig* pon_id_config);
 
+  // .dmi.PonDistance distance = 2;
+  bool has_distance() const;
+  void clear_distance();
+  static const int kDistanceFieldNumber = 2;
+  const ::dmi::PonDistance& distance() const;
+  ::dmi::PonDistance* release_distance();
+  ::dmi::PonDistance* mutable_distance();
+  void set_allocated_distance(::dmi::PonDistance* distance);
+
   // @@protoc_insertion_point(class_scope:dmi.PortComponentChangeAttributes)
  private:
   class HasBitSetters;
 
   ::google::protobuf::internal::InternalMetadataWithArena _internal_metadata_;
   ::dmi::PonIdConfig* pon_id_config_;
+  ::dmi::PonDistance* distance_;
   mutable ::google::protobuf::internal::CachedSize _cached_size_;
   friend struct ::TableStruct_dmi_2fhw_2eproto;
 };
@@ -1675,7 +1818,7 @@
                &_TransceiverComponentChangeAttributes_default_instance_);
   }
   static constexpr int kIndexInFileMessages =
-    7;
+    8;
 
   void Swap(TransceiverComponentChangeAttributes* other);
   friend void swap(TransceiverComponentChangeAttributes& a, TransceiverComponentChangeAttributes& b) {
@@ -1787,7 +1930,7 @@
                &_PonIdConfig_default_instance_);
   }
   static constexpr int kIndexInFileMessages =
-    8;
+    9;
 
   void Swap(PonIdConfig* other);
   friend void swap(PonIdConfig& a, PonIdConfig& b) {
@@ -1914,7 +2057,7 @@
                &_ContainerComponentAttributes_default_instance_);
   }
   static constexpr int kIndexInFileMessages =
-    9;
+    10;
 
   void Swap(ContainerComponentAttributes* other);
   friend void swap(ContainerComponentAttributes& a, ContainerComponentAttributes& b) {
@@ -2034,7 +2177,7 @@
                &_PsuComponentAttributes_default_instance_);
   }
   static constexpr int kIndexInFileMessages =
-    10;
+    11;
 
   void Swap(PsuComponentAttributes* other);
   friend void swap(PsuComponentAttributes& a, PsuComponentAttributes& b) {
@@ -2176,7 +2319,7 @@
                &_TransceiverComponentsAttributes_default_instance_);
   }
   static constexpr int kIndexInFileMessages =
-    11;
+    12;
 
   void Swap(TransceiverComponentsAttributes* other);
   friend void swap(TransceiverComponentsAttributes& a, TransceiverComponentsAttributes& b) {
@@ -2425,7 +2568,7 @@
                &_Component_default_instance_);
   }
   static constexpr int kIndexInFileMessages =
-    12;
+    13;
 
   void Swap(Component* other);
   friend void swap(Component& a, Component& b) {
@@ -2836,7 +2979,7 @@
                &_Hardware_default_instance_);
   }
   static constexpr int kIndexInFileMessages =
-    13;
+    14;
 
   void Swap(Hardware* other);
   friend void swap(Hardware& a, Hardware& b) {
@@ -2977,7 +3120,7 @@
                &_ModifiableComponent_default_instance_);
   }
   static constexpr int kIndexInFileMessages =
-    14;
+    15;
 
   void Swap(ModifiableComponent* other);
   friend void swap(ModifiableComponent& a, ModifiableComponent& b) {
@@ -3913,6 +4056,89 @@
   // @@protoc_insertion_point(field_set:dmi.PortComponentAttributes.speed_autonegotiation)
 }
 
+// .dmi.PonDistance distance = 8;
+inline bool PortComponentAttributes::has_distance() const {
+  return this != internal_default_instance() && distance_ != nullptr;
+}
+inline void PortComponentAttributes::clear_distance() {
+  if (GetArenaNoVirtual() == nullptr && distance_ != nullptr) {
+    delete distance_;
+  }
+  distance_ = nullptr;
+}
+inline const ::dmi::PonDistance& PortComponentAttributes::distance() const {
+  const ::dmi::PonDistance* p = distance_;
+  // @@protoc_insertion_point(field_get:dmi.PortComponentAttributes.distance)
+  return p != nullptr ? *p : *reinterpret_cast<const ::dmi::PonDistance*>(
+      &::dmi::_PonDistance_default_instance_);
+}
+inline ::dmi::PonDistance* PortComponentAttributes::release_distance() {
+  // @@protoc_insertion_point(field_release:dmi.PortComponentAttributes.distance)
+  
+  ::dmi::PonDistance* temp = distance_;
+  distance_ = nullptr;
+  return temp;
+}
+inline ::dmi::PonDistance* PortComponentAttributes::mutable_distance() {
+  
+  if (distance_ == nullptr) {
+    auto* p = CreateMaybeMessage<::dmi::PonDistance>(GetArenaNoVirtual());
+    distance_ = p;
+  }
+  // @@protoc_insertion_point(field_mutable:dmi.PortComponentAttributes.distance)
+  return distance_;
+}
+inline void PortComponentAttributes::set_allocated_distance(::dmi::PonDistance* distance) {
+  ::google::protobuf::Arena* message_arena = GetArenaNoVirtual();
+  if (message_arena == nullptr) {
+    delete distance_;
+  }
+  if (distance) {
+    ::google::protobuf::Arena* submessage_arena = nullptr;
+    if (message_arena != submessage_arena) {
+      distance = ::google::protobuf::internal::GetOwnedMessage(
+          message_arena, distance, submessage_arena);
+    }
+    
+  } else {
+    
+  }
+  distance_ = distance;
+  // @@protoc_insertion_point(field_set_allocated:dmi.PortComponentAttributes.distance)
+}
+
+// -------------------------------------------------------------------
+
+// PonDistance
+
+// uint32 max_distance = 1;
+inline void PonDistance::clear_max_distance() {
+  max_distance_ = 0u;
+}
+inline ::google::protobuf::uint32 PonDistance::max_distance() const {
+  // @@protoc_insertion_point(field_get:dmi.PonDistance.max_distance)
+  return max_distance_;
+}
+inline void PonDistance::set_max_distance(::google::protobuf::uint32 value) {
+  
+  max_distance_ = value;
+  // @@protoc_insertion_point(field_set:dmi.PonDistance.max_distance)
+}
+
+// uint32 max_differential_distance = 2;
+inline void PonDistance::clear_max_differential_distance() {
+  max_differential_distance_ = 0u;
+}
+inline ::google::protobuf::uint32 PonDistance::max_differential_distance() const {
+  // @@protoc_insertion_point(field_get:dmi.PonDistance.max_differential_distance)
+  return max_differential_distance_;
+}
+inline void PonDistance::set_max_differential_distance(::google::protobuf::uint32 value) {
+  
+  max_differential_distance_ = value;
+  // @@protoc_insertion_point(field_set:dmi.PonDistance.max_differential_distance)
+}
+
 // -------------------------------------------------------------------
 
 // PortComponentChangeAttributes
@@ -3968,6 +4194,57 @@
   // @@protoc_insertion_point(field_set_allocated:dmi.PortComponentChangeAttributes.pon_id_config)
 }
 
+// .dmi.PonDistance distance = 2;
+inline bool PortComponentChangeAttributes::has_distance() const {
+  return this != internal_default_instance() && distance_ != nullptr;
+}
+inline void PortComponentChangeAttributes::clear_distance() {
+  if (GetArenaNoVirtual() == nullptr && distance_ != nullptr) {
+    delete distance_;
+  }
+  distance_ = nullptr;
+}
+inline const ::dmi::PonDistance& PortComponentChangeAttributes::distance() const {
+  const ::dmi::PonDistance* p = distance_;
+  // @@protoc_insertion_point(field_get:dmi.PortComponentChangeAttributes.distance)
+  return p != nullptr ? *p : *reinterpret_cast<const ::dmi::PonDistance*>(
+      &::dmi::_PonDistance_default_instance_);
+}
+inline ::dmi::PonDistance* PortComponentChangeAttributes::release_distance() {
+  // @@protoc_insertion_point(field_release:dmi.PortComponentChangeAttributes.distance)
+  
+  ::dmi::PonDistance* temp = distance_;
+  distance_ = nullptr;
+  return temp;
+}
+inline ::dmi::PonDistance* PortComponentChangeAttributes::mutable_distance() {
+  
+  if (distance_ == nullptr) {
+    auto* p = CreateMaybeMessage<::dmi::PonDistance>(GetArenaNoVirtual());
+    distance_ = p;
+  }
+  // @@protoc_insertion_point(field_mutable:dmi.PortComponentChangeAttributes.distance)
+  return distance_;
+}
+inline void PortComponentChangeAttributes::set_allocated_distance(::dmi::PonDistance* distance) {
+  ::google::protobuf::Arena* message_arena = GetArenaNoVirtual();
+  if (message_arena == nullptr) {
+    delete distance_;
+  }
+  if (distance) {
+    ::google::protobuf::Arena* submessage_arena = nullptr;
+    if (message_arena != submessage_arena) {
+      distance = ::google::protobuf::internal::GetOwnedMessage(
+          message_arena, distance, submessage_arena);
+    }
+    
+  } else {
+    
+  }
+  distance_ = distance;
+  // @@protoc_insertion_point(field_set_allocated:dmi.PortComponentChangeAttributes.distance)
+}
+
 // -------------------------------------------------------------------
 
 // TransceiverComponentChangeAttributes
@@ -5947,6 +6224,8 @@
 
 // -------------------------------------------------------------------
 
+// -------------------------------------------------------------------
+
 
 // @@protoc_insertion_point(namespace_scope)
 
diff --git a/dmi.pb b/dmi.pb
index 0b9440f..8149550 100644
--- a/dmi.pb
+++ b/dmi.pb
Binary files differ
diff --git a/go/dmi/hw.pb.go b/go/dmi/hw.pb.go
index c41bac2..e65e7c9 100644
--- a/go/dmi/hw.pb.go
+++ b/go/dmi/hw.pb.go
@@ -648,7 +648,7 @@
 }
 
 func (PsuComponentAttributes_SupportedVoltage) EnumDescriptor() ([]byte, []int) {
-	return fileDescriptor_d7c33d745c4ab367, []int{10, 0}
+	return fileDescriptor_d7c33d745c4ab367, []int{11, 0}
 }
 
 type TransceiverComponentsAttributes_FormFactor int32
@@ -712,7 +712,7 @@
 }
 
 func (TransceiverComponentsAttributes_FormFactor) EnumDescriptor() ([]byte, []int) {
-	return fileDescriptor_d7c33d745c4ab367, []int{11, 0}
+	return fileDescriptor_d7c33d745c4ab367, []int{12, 0}
 }
 
 type Uuid struct {
@@ -1026,6 +1026,7 @@
 	MappingLabel         string       `protobuf:"bytes,5,opt,name=mapping_label,json=mappingLabel,proto3" json:"mapping_label,omitempty"`
 	PonIdConfig          *PonIdConfig `protobuf:"bytes,6,opt,name=pon_id_config,json=ponIdConfig,proto3" json:"pon_id_config,omitempty"`
 	SpeedAutonegotiation bool         `protobuf:"varint,7,opt,name=speed_autonegotiation,json=speedAutonegotiation,proto3" json:"speed_autonegotiation,omitempty"`
+	Distance             *PonDistance `protobuf:"bytes,8,opt,name=distance,proto3" json:"distance,omitempty"`
 	XXX_NoUnkeyedLiteral struct{}     `json:"-"`
 	XXX_unrecognized     []byte       `json:"-"`
 	XXX_sizecache        int32        `json:"-"`
@@ -1105,8 +1106,73 @@
 	return false
 }
 
+func (m *PortComponentAttributes) GetDistance() *PonDistance {
+	if m != nil {
+		return m.Distance
+	}
+	return nil
+}
+
+type PonDistance struct {
+	//
+	// The ITU-T G.987.x series of Recommendations addresses the linear extent parameters of XG-PON
+	// using the single concept of fibre distance. An ONU is characterized by its fibre distance, and for
+	// each pair of ONUs on the same OLT PON interface, the differential fibre distance is the difference
+	// between the two individual fibre distances. Each specific PMD layer parameter set contains a
+	// provision to support a specific maximum fibre distance. The XG-PON TC layer specification
+	// contains a provision to support specific ranges of maximum fibre distance and maximum
+	// differential fibre distance. These ranges can be configurable for a given system. One can expect that
+	// for each XG-PON deployment, the configured TC layer maximum fibre distance will match the
+	// maximum fibre distance supported by the selected PMD layer parameter set.
+	MaxDistance             uint32   `protobuf:"varint,1,opt,name=max_distance,json=maxDistance,proto3" json:"max_distance,omitempty"`
+	MaxDifferentialDistance uint32   `protobuf:"varint,2,opt,name=max_differential_distance,json=maxDifferentialDistance,proto3" json:"max_differential_distance,omitempty"`
+	XXX_NoUnkeyedLiteral    struct{} `json:"-"`
+	XXX_unrecognized        []byte   `json:"-"`
+	XXX_sizecache           int32    `json:"-"`
+}
+
+func (m *PonDistance) Reset()         { *m = PonDistance{} }
+func (m *PonDistance) String() string { return proto.CompactTextString(m) }
+func (*PonDistance) ProtoMessage()    {}
+func (*PonDistance) Descriptor() ([]byte, []int) {
+	return fileDescriptor_d7c33d745c4ab367, []int{6}
+}
+
+func (m *PonDistance) XXX_Unmarshal(b []byte) error {
+	return xxx_messageInfo_PonDistance.Unmarshal(m, b)
+}
+func (m *PonDistance) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
+	return xxx_messageInfo_PonDistance.Marshal(b, m, deterministic)
+}
+func (m *PonDistance) XXX_Merge(src proto.Message) {
+	xxx_messageInfo_PonDistance.Merge(m, src)
+}
+func (m *PonDistance) XXX_Size() int {
+	return xxx_messageInfo_PonDistance.Size(m)
+}
+func (m *PonDistance) XXX_DiscardUnknown() {
+	xxx_messageInfo_PonDistance.DiscardUnknown(m)
+}
+
+var xxx_messageInfo_PonDistance proto.InternalMessageInfo
+
+func (m *PonDistance) GetMaxDistance() uint32 {
+	if m != nil {
+		return m.MaxDistance
+	}
+	return 0
+}
+
+func (m *PonDistance) GetMaxDifferentialDistance() uint32 {
+	if m != nil {
+		return m.MaxDifferentialDistance
+	}
+	return 0
+}
+
 type PortComponentChangeAttributes struct {
 	PonIdConfig          *PonIdConfig `protobuf:"bytes,1,opt,name=pon_id_config,json=ponIdConfig,proto3" json:"pon_id_config,omitempty"`
+	Distance             *PonDistance `protobuf:"bytes,2,opt,name=distance,proto3" json:"distance,omitempty"`
 	XXX_NoUnkeyedLiteral struct{}     `json:"-"`
 	XXX_unrecognized     []byte       `json:"-"`
 	XXX_sizecache        int32        `json:"-"`
@@ -1116,7 +1182,7 @@
 func (m *PortComponentChangeAttributes) String() string { return proto.CompactTextString(m) }
 func (*PortComponentChangeAttributes) ProtoMessage()    {}
 func (*PortComponentChangeAttributes) Descriptor() ([]byte, []int) {
-	return fileDescriptor_d7c33d745c4ab367, []int{6}
+	return fileDescriptor_d7c33d745c4ab367, []int{7}
 }
 
 func (m *PortComponentChangeAttributes) XXX_Unmarshal(b []byte) error {
@@ -1144,6 +1210,13 @@
 	return nil
 }
 
+func (m *PortComponentChangeAttributes) GetDistance() *PonDistance {
+	if m != nil {
+		return m.Distance
+	}
+	return nil
+}
+
 type TransceiverComponentChangeAttributes struct {
 	TransType            TransceiverType `protobuf:"varint,1,opt,name=trans_type,json=transType,proto3,enum=dmi.TransceiverType" json:"trans_type,omitempty"`
 	XXX_NoUnkeyedLiteral struct{}        `json:"-"`
@@ -1155,7 +1228,7 @@
 func (m *TransceiverComponentChangeAttributes) String() string { return proto.CompactTextString(m) }
 func (*TransceiverComponentChangeAttributes) ProtoMessage()    {}
 func (*TransceiverComponentChangeAttributes) Descriptor() ([]byte, []int) {
-	return fileDescriptor_d7c33d745c4ab367, []int{7}
+	return fileDescriptor_d7c33d745c4ab367, []int{8}
 }
 
 func (m *TransceiverComponentChangeAttributes) XXX_Unmarshal(b []byte) error {
@@ -1198,7 +1271,7 @@
 func (m *PonIdConfig) String() string { return proto.CompactTextString(m) }
 func (*PonIdConfig) ProtoMessage()    {}
 func (*PonIdConfig) Descriptor() ([]byte, []int) {
-	return fileDescriptor_d7c33d745c4ab367, []int{8}
+	return fileDescriptor_d7c33d745c4ab367, []int{9}
 }
 
 func (m *PonIdConfig) XXX_Unmarshal(b []byte) error {
@@ -1244,7 +1317,7 @@
 func (m *ContainerComponentAttributes) String() string { return proto.CompactTextString(m) }
 func (*ContainerComponentAttributes) ProtoMessage()    {}
 func (*ContainerComponentAttributes) Descriptor() ([]byte, []int) {
-	return fileDescriptor_d7c33d745c4ab367, []int{9}
+	return fileDescriptor_d7c33d745c4ab367, []int{10}
 }
 
 func (m *ContainerComponentAttributes) XXX_Unmarshal(b []byte) error {
@@ -1283,7 +1356,7 @@
 func (m *PsuComponentAttributes) String() string { return proto.CompactTextString(m) }
 func (*PsuComponentAttributes) ProtoMessage()    {}
 func (*PsuComponentAttributes) Descriptor() ([]byte, []int) {
-	return fileDescriptor_d7c33d745c4ab367, []int{10}
+	return fileDescriptor_d7c33d745c4ab367, []int{11}
 }
 
 func (m *PsuComponentAttributes) XXX_Unmarshal(b []byte) error {
@@ -1335,7 +1408,7 @@
 func (m *TransceiverComponentsAttributes) String() string { return proto.CompactTextString(m) }
 func (*TransceiverComponentsAttributes) ProtoMessage()    {}
 func (*TransceiverComponentsAttributes) Descriptor() ([]byte, []int) {
-	return fileDescriptor_d7c33d745c4ab367, []int{11}
+	return fileDescriptor_d7c33d745c4ab367, []int{12}
 }
 
 func (m *TransceiverComponentsAttributes) XXX_Unmarshal(b []byte) error {
@@ -1462,7 +1535,7 @@
 func (m *Component) String() string { return proto.CompactTextString(m) }
 func (*Component) ProtoMessage()    {}
 func (*Component) Descriptor() ([]byte, []int) {
-	return fileDescriptor_d7c33d745c4ab367, []int{12}
+	return fileDescriptor_d7c33d745c4ab367, []int{13}
 }
 
 func (m *Component) XXX_Unmarshal(b []byte) error {
@@ -1713,7 +1786,7 @@
 func (m *Hardware) String() string { return proto.CompactTextString(m) }
 func (*Hardware) ProtoMessage()    {}
 func (*Hardware) Descriptor() ([]byte, []int) {
-	return fileDescriptor_d7c33d745c4ab367, []int{13}
+	return fileDescriptor_d7c33d745c4ab367, []int{14}
 }
 
 func (m *Hardware) XXX_Unmarshal(b []byte) error {
@@ -1782,7 +1855,7 @@
 func (m *ModifiableComponent) String() string { return proto.CompactTextString(m) }
 func (*ModifiableComponent) ProtoMessage()    {}
 func (*ModifiableComponent) Descriptor() ([]byte, []int) {
-	return fileDescriptor_d7c33d745c4ab367, []int{14}
+	return fileDescriptor_d7c33d745c4ab367, []int{15}
 }
 
 func (m *ModifiableComponent) XXX_Unmarshal(b []byte) error {
@@ -1926,6 +1999,7 @@
 	proto.RegisterType((*ComponentState)(nil), "dmi.ComponentState")
 	proto.RegisterType((*ComponentSensorData)(nil), "dmi.ComponentSensorData")
 	proto.RegisterType((*PortComponentAttributes)(nil), "dmi.PortComponentAttributes")
+	proto.RegisterType((*PonDistance)(nil), "dmi.PonDistance")
 	proto.RegisterType((*PortComponentChangeAttributes)(nil), "dmi.PortComponentChangeAttributes")
 	proto.RegisterType((*TransceiverComponentChangeAttributes)(nil), "dmi.TransceiverComponentChangeAttributes")
 	proto.RegisterType((*PonIdConfig)(nil), "dmi.PonIdConfig")
@@ -1940,184 +2014,188 @@
 func init() { proto.RegisterFile("dmi/hw.proto", fileDescriptor_d7c33d745c4ab367) }
 
 var fileDescriptor_d7c33d745c4ab367 = []byte{
-	// 2864 bytes of a gzipped FileDescriptorProto
-	0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xac, 0x58, 0x4f, 0x93, 0xdb, 0xc6,
-	0xb1, 0x17, 0x97, 0xff, 0x9b, 0xe4, 0xee, 0xec, 0xe8, 0x1f, 0xad, 0x3f, 0xb6, 0xcc, 0x27, 0xbb,
-	0xe4, 0x7d, 0xcf, 0xbb, 0xab, 0x95, 0xf4, 0x4a, 0x7e, 0x2e, 0xd7, 0x2b, 0x10, 0x04, 0x77, 0x61,
-	0x91, 0x00, 0x3c, 0x00, 0x57, 0x5a, 0xe7, 0x80, 0xc2, 0x92, 0x58, 0x0a, 0x55, 0x24, 0x80, 0x02,
-	0xc0, 0xd5, 0xaa, 0x2a, 0xa7, 0x54, 0xee, 0xf9, 0x04, 0xb9, 0x39, 0x29, 0x9f, 0x72, 0x49, 0x8e,
-	0x39, 0x38, 0x87, 0x7c, 0x88, 0x7c, 0x86, 0x7c, 0x88, 0xa4, 0x66, 0x06, 0x20, 0x41, 0x10, 0x92,
-	0xe5, 0xaa, 0xdc, 0x66, 0xba, 0x7f, 0xdd, 0xd3, 0xd3, 0xdd, 0xd3, 0x33, 0x3d, 0xd0, 0x9c, 0xcc,
-	0x9d, 0x83, 0xd7, 0x6f, 0xf6, 0xfd, 0xc0, 0x8b, 0x3c, 0x5c, 0x9c, 0xcc, 0x9d, 0x3b, 0x9f, 0x4c,
-	0x3d, 0x6f, 0x3a, 0xb3, 0x0f, 0x18, 0xe9, 0x7c, 0x71, 0x71, 0x10, 0x39, 0x73, 0x3b, 0x8c, 0xac,
-	0xb9, 0xcf, 0x51, 0x9d, 0x3b, 0x50, 0x1a, 0x2d, 0x9c, 0x09, 0xc6, 0x50, 0x5a, 0x2c, 0x9c, 0x49,
-	0xbb, 0xf0, 0xa0, 0xf0, 0xa8, 0x4e, 0xd8, 0xb8, 0xf3, 0xdf, 0x00, 0x27, 0x56, 0x30, 0x79, 0x63,
-	0x05, 0xb6, 0xdc, 0xc3, 0xf7, 0x53, 0x88, 0xc6, 0x51, 0x7d, 0x7f, 0x32, 0x77, 0xf6, 0xa9, 0x68,
-	0x0c, 0xbe, 0x0d, 0xc5, 0x51, 0xe0, 0x60, 0x04, 0xc5, 0x45, 0xe0, 0xc4, 0x6a, 0xe8, 0xb0, 0xf3,
-	0xdb, 0x22, 0x6c, 0x8b, 0xde, 0xdc, 0xf7, 0x5c, 0xdb, 0x8d, 0xf4, 0xc8, 0x8a, 0x6c, 0x7c, 0x02,
-	0x38, 0xa4, 0x03, 0x73, 0x66, 0x85, 0x91, 0x39, 0x7e, 0x6d, 0xb9, 0x53, 0x3b, 0x51, 0x7c, 0x67,
-	0x9f, 0x9b, 0xbc, 0x9f, 0x98, 0xbc, 0x6f, 0x24, 0x26, 0x13, 0xc4, 0xa4, 0x06, 0x56, 0x18, 0x89,
-	0x5c, 0x06, 0x7f, 0x05, 0x0d, 0x6b, 0x32, 0x77, 0x5c, 0x93, 0x71, 0xda, 0x5b, 0x0f, 0x0a, 0x8f,
-	0xb6, 0x8f, 0xda, 0xcc, 0xb6, 0xe5, 0x9a, 0x02, 0x05, 0xb0, 0x85, 0x09, 0x58, 0xcb, 0x31, 0xfe,
-	0x5f, 0x00, 0xcf, 0xb7, 0x83, 0x58, 0xb2, 0xc8, 0x24, 0x6f, 0xaf, 0x4b, 0xaa, 0xbe, 0x1d, 0x70,
-	0xc1, 0xba, 0x97, 0x0c, 0xe9, 0x92, 0x8b, 0xd0, 0x9a, 0xda, 0xb1, 0x60, 0x29, 0x6f, 0xc9, 0x11,
-	0x05, 0xc4, 0x4b, 0x2e, 0x96, 0x63, 0x66, 0xed, 0xcc, 0x0a, 0xe6, 0xb1, 0x68, 0x39, 0xd7, 0x5a,
-	0x0a, 0x48, 0xac, 0x5d, 0x8e, 0xf1, 0xff, 0x43, 0x2b, 0x8c, 0x2c, 0x77, 0x72, 0xfe, 0x36, 0x16,
-	0xae, 0x30, 0xe1, 0x3b, 0xeb, 0xc2, 0x3a, 0x87, 0x70, 0xf1, 0x66, 0x98, 0x9a, 0x75, 0xfe, 0xb9,
-	0x05, 0xd7, 0x57, 0x38, 0xdb, 0x0d, 0xbd, 0xa0, 0x67, 0x45, 0x16, 0xbe, 0x01, 0xe5, 0x4b, 0x6b,
-	0xb6, 0xb0, 0x99, 0xfb, 0xcb, 0x84, 0x4f, 0xf0, 0xe7, 0x50, 0x8a, 0xde, 0xfa, 0x89, 0x43, 0x31,
-	0x5b, 0x85, 0xc2, 0x4f, 0x29, 0xd7, 0x78, 0xeb, 0xdb, 0x84, 0xf1, 0xf1, 0x67, 0x50, 0x0e, 0xc7,
-	0xd6, 0x2c, 0xf1, 0xdf, 0x0e, 0x03, 0x32, 0x90, 0x4e, 0xc9, 0x84, 0x73, 0xf1, 0x3d, 0xa8, 0xfb,
-	0x81, 0x3d, 0x76, 0x42, 0xc7, 0x73, 0x99, 0xc7, 0xca, 0x64, 0x45, 0xc0, 0x5f, 0x40, 0x85, 0xee,
-	0x69, 0x11, 0xc6, 0x1e, 0xd9, 0x65, 0x5a, 0xb8, 0x8d, 0x3a, 0x63, 0x90, 0x18, 0x80, 0xff, 0x0b,
-	0x5a, 0x0b, 0xd7, 0x89, 0x42, 0x73, 0xe2, 0x84, 0xfe, 0xcc, 0x7a, 0xcb, 0xdc, 0x50, 0x27, 0x4d,
-	0x46, 0xec, 0x71, 0x1a, 0x7e, 0x0e, 0xf5, 0x65, 0x9a, 0xb7, 0xab, 0x3f, 0x9b, 0x55, 0x2b, 0x30,
-	0xde, 0x83, 0x5d, 0xb6, 0x7f, 0x73, 0xe1, 0x4f, 0x68, 0x7e, 0x06, 0xd4, 0xd3, 0xb5, 0x07, 0x85,
-	0x47, 0x2d, 0xb2, 0xc3, 0x18, 0x23, 0x46, 0x27, 0x34, 0x22, 0x77, 0xa1, 0x3e, 0xb1, 0x22, 0xcb,
-	0x64, 0x7e, 0xaa, 0x33, 0x33, 0x6a, 0x94, 0x40, 0xbd, 0xd3, 0xf9, 0x5b, 0x05, 0x6e, 0x6b, 0x5e,
-	0x10, 0xad, 0xc2, 0x1a, 0x45, 0x81, 0x73, 0xbe, 0x88, 0xec, 0x10, 0x7f, 0x07, 0xdb, 0x63, 0xcf,
-	0x75, 0xed, 0x71, 0xe4, 0x05, 0x5c, 0xba, 0xc0, 0xb6, 0xbd, 0xc7, 0xb6, 0xfd, 0x0e, 0xa9, 0x7d,
-	0x31, 0x11, 0x61, 0xde, 0x6f, 0x8d, 0xd3, 0x53, 0xfc, 0x1c, 0xca, 0xa1, 0x6f, 0xdb, 0x93, 0x38,
-	0x5e, 0x9d, 0xf7, 0x6a, 0xd2, 0x29, 0x92, 0x70, 0x01, 0x2c, 0x40, 0x8d, 0xb9, 0x64, 0xec, 0xcd,
-	0xe2, 0x18, 0x7e, 0xf6, 0x5e, 0x61, 0x2d, 0x06, 0x93, 0xa5, 0x18, 0xfe, 0x0c, 0xb6, 0xfd, 0xd7,
-	0x6f, 0x43, 0x67, 0x6c, 0xcd, 0xcc, 0x99, 0x75, 0x6e, 0xcf, 0x58, 0x84, 0xeb, 0xa4, 0x95, 0x50,
-	0x07, 0x94, 0x48, 0x43, 0x37, 0xb7, 0x7c, 0xdf, 0x71, 0xa7, 0x31, 0xaa, 0xcc, 0x43, 0x17, 0x13,
-	0x39, 0xe8, 0x29, 0xb4, 0x7c, 0xcf, 0x35, 0x9d, 0x89, 0x39, 0xf6, 0xdc, 0x0b, 0x67, 0xca, 0xe2,
-	0xdb, 0x38, 0x42, 0xb1, 0x4d, 0xae, 0x3c, 0x11, 0x19, 0x9d, 0x34, 0xfc, 0xd5, 0x04, 0x3f, 0x81,
-	0x9b, 0x6c, 0x37, 0xa6, 0xb5, 0x88, 0x3c, 0xd7, 0x9e, 0x7a, 0x91, 0x63, 0x45, 0x34, 0xd5, 0x68,
-	0xf0, 0x6b, 0xe4, 0x06, 0x63, 0x0a, 0xeb, 0xbc, 0x8e, 0x0f, 0xad, 0x35, 0x9f, 0xe2, 0x7b, 0xd0,
-	0x16, 0x55, 0x45, 0x91, 0x44, 0x43, 0x25, 0xa6, 0x71, 0xa6, 0x49, 0xe6, 0x48, 0xe9, 0x49, 0x7d,
-	0x59, 0x91, 0x7a, 0xe8, 0x1a, 0xae, 0x41, 0x89, 0x7c, 0xfb, 0xf4, 0x19, 0x2a, 0xe0, 0x26, 0xd4,
-	0xfa, 0x72, 0x57, 0x22, 0xe6, 0x40, 0x44, 0x5b, 0x78, 0x07, 0x1a, 0x7c, 0xa6, 0x8b, 0xa6, 0x26,
-	0xa2, 0x22, 0x6e, 0x41, 0x9d, 0x13, 0x86, 0x9a, 0x8a, 0x4a, 0xb8, 0x0e, 0x65, 0xa2, 0x1f, 0x3d,
-	0x39, 0x42, 0xe5, 0xce, 0x9f, 0x0a, 0x50, 0x66, 0xce, 0xc7, 0xd7, 0x61, 0x47, 0xd7, 0x24, 0xa9,
-	0xb7, 0xb6, 0x42, 0x03, 0xaa, 0xbd, 0x33, 0x45, 0x18, 0xca, 0x22, 0x2a, 0x50, 0x2d, 0xc7, 0xf2,
-	0xb1, 0xd0, 0x95, 0x0d, 0xf3, 0x31, 0xda, 0xc2, 0xdb, 0x00, 0xcb, 0xe9, 0x21, 0x2a, 0xa6, 0xe7,
-	0x47, 0xcf, 0x50, 0x29, 0x3d, 0x7f, 0x7a, 0x88, 0xca, 0xd4, 0xaa, 0x15, 0xfe, 0x10, 0x55, 0xd2,
-	0x84, 0xa7, 0x87, 0x87, 0xa8, 0x8a, 0x11, 0x34, 0x87, 0x52, 0xa2, 0xe1, 0xf0, 0x10, 0xd5, 0xd2,
-	0x94, 0xc7, 0x47, 0xcf, 0x0e, 0x51, 0xbd, 0xf3, 0x6b, 0xa8, 0x25, 0xf1, 0xc6, 0xb7, 0x00, 0x6b,
-	0x44, 0x35, 0x54, 0x51, 0x1d, 0xac, 0x59, 0xdd, 0x84, 0x9a, 0x64, 0x9c, 0x48, 0x44, 0x91, 0x0c,
-	0x54, 0xa0, 0x5e, 0x3a, 0xd6, 0x54, 0x05, 0x6d, 0xd1, 0x7d, 0xbf, 0x62, 0xc3, 0x22, 0x06, 0xa8,
-	0xbc, 0x3a, 0xd6, 0xe9, 0x98, 0xb9, 0xe3, 0xb8, 0x2f, 0xe8, 0x06, 0x2a, 0x53, 0xb2, 0x2e, 0x11,
-	0x59, 0x18, 0xa0, 0x0a, 0x95, 0x93, 0x28, 0xa0, 0x4a, 0x47, 0x5d, 0xd9, 0xd0, 0x51, 0xad, 0x33,
-	0x82, 0xfb, 0x6b, 0x59, 0xc8, 0x6b, 0x7e, 0xea, 0x20, 0x6d, 0x24, 0x4b, 0xe1, 0x03, 0x92, 0xa5,
-	0xf3, 0x2b, 0x78, 0x68, 0x04, 0x96, 0x1b, 0x8e, 0x6d, 0xe7, 0xd2, 0x0e, 0xde, 0xad, 0xfd, 0x09,
-	0x40, 0x44, 0x71, 0xe9, 0x23, 0x7a, 0x83, 0xa9, 0x4e, 0x89, 0xb3, 0xc3, 0x58, 0x67, 0x38, 0x76,
-	0xee, 0xc7, 0xd0, 0x48, 0x2d, 0x8c, 0x6f, 0x42, 0x85, 0x5b, 0xc8, 0xe4, 0x9b, 0xa4, 0xcc, 0x0c,
-	0xc1, 0xdf, 0xc0, 0xdd, 0xd8, 0x70, 0x26, 0x39, 0x77, 0x22, 0xd3, 0xb7, 0x03, 0xc7, 0x9b, 0x38,
-	0x63, 0x27, 0x7a, 0xcb, 0x0e, 0x71, 0x8b, 0xb4, 0x19, 0xd6, 0x88, 0x01, 0xda, 0x8a, 0xdf, 0x91,
-	0xe0, 0x9e, 0xe8, 0xb9, 0x91, 0xe5, 0xb8, 0x29, 0xfb, 0x53, 0x96, 0x6f, 0x1e, 0xc8, 0x42, 0xce,
-	0x81, 0xec, 0xfc, 0xbd, 0x00, 0xb7, 0xb4, 0x70, 0x91, 0xa7, 0xe1, 0x0c, 0x76, 0xc3, 0x85, 0xef,
-	0x7b, 0x41, 0x64, 0x4f, 0xcc, 0x4b, 0x6f, 0x16, 0x59, 0xd3, 0xc4, 0x05, 0xff, 0xc3, 0xbd, 0x9b,
-	0x2b, 0xb7, 0xaf, 0x27, 0x42, 0xa7, 0x5c, 0x86, 0xa0, 0x30, 0x43, 0xe9, 0x68, 0x80, 0xb2, 0x28,
-	0xfc, 0x09, 0xdc, 0xd5, 0x47, 0x9a, 0xa6, 0x12, 0x43, 0xea, 0x99, 0xa7, 0xea, 0xc0, 0x10, 0x8e,
-	0xd7, 0x0f, 0x5f, 0x15, 0x8a, 0xa7, 0x4f, 0x9f, 0xf3, 0xfc, 0x3a, 0x3d, 0x7a, 0x72, 0x88, 0xb6,
-	0xd8, 0xe8, 0xf1, 0xe3, 0x67, 0xa8, 0xd8, 0xf9, 0x43, 0x19, 0x3e, 0xc9, 0x8b, 0x68, 0x98, 0xda,
-	0x90, 0x06, 0x8d, 0x0b, 0x2f, 0x98, 0x9b, 0x17, 0x16, 0x3d, 0xee, 0xf1, 0x56, 0x0e, 0xb2, 0xd1,
-	0xcc, 0x13, 0xdd, 0xef, 0x7b, 0xc1, 0xbc, 0xcf, 0xc4, 0x08, 0x5c, 0x2c, 0xc7, 0x99, 0xf4, 0xd8,
-	0xfa, 0xa0, 0xf4, 0xc0, 0x9f, 0x42, 0x73, 0x6e, 0x5d, 0xd1, 0xcb, 0x2b, 0xb2, 0xdc, 0x31, 0xbf,
-	0x35, 0x5b, 0xa4, 0x31, 0xb7, 0xae, 0x7a, 0x31, 0x09, 0x7f, 0x03, 0x38, 0x0d, 0x31, 0xf9, 0xf5,
-	0x5a, 0xca, 0xbf, 0x5e, 0x51, 0x4a, 0x92, 0x51, 0x68, 0x95, 0x0d, 0xae, 0xcc, 0x37, 0xd6, 0xa5,
-	0x3d, 0xb3, 0xdd, 0x69, 0xf4, 0xba, 0x5d, 0x7e, 0x50, 0x7c, 0xd4, 0x22, 0xcd, 0xe0, 0xea, 0xe5,
-	0x92, 0x46, 0x41, 0xd1, 0x1a, 0xa8, 0xc2, 0x41, 0x51, 0x1a, 0xf4, 0x7f, 0x80, 0x56, 0x88, 0xd8,
-	0x8c, 0x6a, 0xbe, 0x19, 0x3b, 0x2b, 0x20, 0xb7, 0xe2, 0x23, 0xa8, 0x45, 0x57, 0xa6, 0xef, 0xbd,
-	0xb1, 0x83, 0x76, 0xed, 0x41, 0xf1, 0x51, 0x99, 0x54, 0xa3, 0x2b, 0x8d, 0x4e, 0xf1, 0x33, 0xd8,
-	0x4e, 0x58, 0xb1, 0xd2, 0x7a, 0xbe, 0xd2, 0x66, 0x2c, 0xc1, 0x66, 0x9d, 0x9f, 0x0a, 0x00, 0xab,
-	0x48, 0xe0, 0xdb, 0x70, 0xbd, 0xaf, 0x92, 0xa1, 0xd9, 0x17, 0x58, 0xb5, 0x1e, 0x29, 0x2f, 0x14,
-	0xf5, 0xa5, 0xc2, 0xcb, 0xf4, 0x77, 0x7a, 0x5f, 0xe3, 0x15, 0x94, 0x8e, 0x4c, 0x6d, 0x30, 0xd2,
-	0xd1, 0x16, 0xad, 0x36, 0x74, 0x7a, 0xf4, 0x1c, 0x15, 0x69, 0x3a, 0x51, 0x4c, 0x89, 0x16, 0xaf,
-	0x25, 0xa4, 0x4c, 0xc9, 0xaf, 0xfa, 0x1a, 0xaf, 0x46, 0x62, 0x5f, 0x7b, 0xca, 0xab, 0x91, 0xd8,
-	0xd7, 0x8e, 0x50, 0x8d, 0x8d, 0x34, 0xe1, 0x05, 0xaa, 0xe3, 0x0a, 0x6c, 0xbd, 0x3a, 0x42, 0x40,
-	0x4b, 0x99, 0x4a, 0x2b, 0x1f, 0x6a, 0x50, 0x49, 0xb1, 0xaf, 0xa1, 0x26, 0x55, 0x48, 0xf1, 0xa6,
-	0x20, 0xaa, 0xa8, 0xb5, 0x9c, 0xf5, 0x44, 0x15, 0x6d, 0x77, 0xfe, 0x51, 0x85, 0xfa, 0x32, 0xc3,
-	0xe8, 0x83, 0xdb, 0xb5, 0xe6, 0x76, 0xf2, 0xe0, 0xa6, 0x63, 0xfc, 0x08, 0xca, 0xe3, 0x99, 0x15,
-	0x86, 0x6b, 0xcf, 0xae, 0xa5, 0x08, 0x4b, 0x26, 0x0e, 0xc0, 0x0f, 0xa0, 0x31, 0xb1, 0xc3, 0x71,
-	0xe0, 0xf8, 0xec, 0x9e, 0x2b, 0x32, 0x25, 0x69, 0x12, 0xbe, 0x05, 0x15, 0xdf, 0x0a, 0x6c, 0x37,
-	0x8a, 0x6f, 0xe3, 0x78, 0x86, 0x1f, 0xc2, 0x36, 0x1f, 0x99, 0x81, 0x3d, 0x33, 0x7d, 0x8f, 0x3f,
-	0xba, 0xca, 0xa4, 0xc9, 0xa9, 0xc4, 0x9e, 0x69, 0x5e, 0x88, 0xf7, 0xa0, 0x36, 0x7e, 0xed, 0xcc,
-	0x26, 0x81, 0xed, 0xb2, 0xe4, 0x68, 0x1c, 0x6d, 0xaf, 0x1b, 0x43, 0x96, 0x7c, 0x9a, 0xd4, 0xaf,
-	0xe3, 0x36, 0xc1, 0x0c, 0xec, 0x4b, 0x96, 0x24, 0x75, 0xd2, 0x48, 0x68, 0xc4, 0xbe, 0xa4, 0x90,
-	0x0b, 0x27, 0x98, 0x2f, 0x21, 0x35, 0x0e, 0x49, 0x68, 0x31, 0x24, 0xf4, 0x2e, 0xa2, 0x25, 0x84,
-	0xbf, 0xa8, 0x1a, 0x09, 0x8d, 0x42, 0xee, 0x03, 0x84, 0x76, 0xe0, 0x58, 0x33, 0xd3, 0x5d, 0xcc,
-	0xdb, 0xc0, 0x00, 0x75, 0x4e, 0x51, 0x16, 0x73, 0x9a, 0x74, 0xf3, 0x8b, 0xa9, 0xc9, 0xbc, 0xda,
-	0x60, 0xcc, 0xea, 0xfc, 0x62, 0xaa, 0x50, 0xc7, 0xde, 0x07, 0x98, 0x7b, 0x13, 0x7b, 0xc6, 0x99,
-	0x4d, 0x2e, 0xc9, 0x28, 0x8c, 0x7d, 0x03, 0xca, 0xd6, 0xcc, 0xb1, 0xc2, 0x76, 0x8b, 0x71, 0xf8,
-	0x84, 0xea, 0xb3, 0xc2, 0xd0, 0x8e, 0x68, 0xf9, 0xde, 0xe6, 0xfa, 0xd8, 0x5c, 0x9e, 0xd0, 0xba,
-	0xee, 0x84, 0xe6, 0x45, 0xb0, 0x68, 0xef, 0xb0, 0x17, 0x46, 0xd9, 0x09, 0xfb, 0xc1, 0x02, 0x3f,
-	0xe3, 0x16, 0xd0, 0x27, 0x62, 0x1b, 0xfd, 0xec, 0xbb, 0x93, 0x5a, 0xd7, 0xa3, 0x2f, 0xc9, 0x3b,
-	0xbc, 0x67, 0xda, 0x65, 0x12, 0x35, 0xde, 0x58, 0x05, 0x0e, 0xeb, 0x9e, 0x96, 0x5d, 0x17, 0xce,
-	0xed, 0xba, 0xf0, 0x17, 0x50, 0xe6, 0xed, 0xc0, 0x75, 0xc6, 0xbf, 0xbe, 0xd1, 0x0e, 0x44, 0xf4,
-	0x0d, 0x9e, 0x34, 0x1f, 0x21, 0x7b, 0x52, 0x53, 0xfb, 0xac, 0xf6, 0x0d, 0x16, 0xd5, 0x4c, 0xf3,
-	0xb1, 0xea, 0x0b, 0x08, 0x84, 0xab, 0x1e, 0xe1, 0x6b, 0xa8, 0xd3, 0x82, 0x6d, 0x5a, 0x51, 0x14,
-	0xb4, 0x8f, 0xd8, 0x4a, 0xf7, 0xde, 0xf7, 0x4a, 0x3c, 0xb9, 0x46, 0x6a, 0x54, 0x80, 0x52, 0xf0,
-	0xb7, 0xec, 0xb9, 0xcb, 0x6f, 0x2b, 0xae, 0xe1, 0x09, 0xd3, 0xf0, 0x69, 0xbc, 0xf4, 0xbb, 0x2f,
-	0xb2, 0x93, 0x6b, 0xec, 0x9d, 0xcb, 0xf9, 0x4c, 0xd7, 0x73, 0xa8, 0xf9, 0xe1, 0x82, 0x6b, 0x79,
-	0xca, 0xb4, 0xdc, 0x7d, 0xcf, 0x75, 0x74, 0x72, 0x8d, 0x54, 0xfd, 0x70, 0xc1, 0x24, 0xbf, 0x03,
-	0x14, 0xad, 0xea, 0x32, 0xd7, 0xf0, 0x8c, 0x69, 0x78, 0xf8, 0x21, 0xb7, 0xc0, 0xc9, 0x35, 0xb2,
-	0x93, 0x92, 0xa7, 0x8c, 0x2e, 0x40, 0x2d, 0xf4, 0xed, 0xb1, 0x73, 0xe1, 0x8c, 0x3b, 0x3f, 0x16,
-	0xa0, 0x96, 0xf4, 0xca, 0xf8, 0x6b, 0x68, 0xa4, 0x1a, 0xdb, 0x0f, 0xe8, 0x6b, 0x61, 0xb6, 0x6c,
-	0x69, 0x71, 0x07, 0x4a, 0x81, 0xe7, 0x45, 0xac, 0x04, 0x6c, 0x9e, 0x3a, 0xc6, 0x5b, 0x2e, 0x70,
-	0xee, 0x79, 0x91, 0x3d, 0x61, 0xa7, 0xff, 0x03, 0x16, 0xe8, 0x32, 0x74, 0xe7, 0xa7, 0x22, 0x5c,
-	0x1f, 0x7a, 0x13, 0xe7, 0xc2, 0xb1, 0xce, 0x67, 0xf6, 0x7f, 0xaa, 0x20, 0x7d, 0xbe, 0x2c, 0x37,
-	0xc5, 0x5c, 0xc3, 0xdf, 0x5d, 0x7e, 0x4a, 0x39, 0xe5, 0x67, 0x79, 0x20, 0xcb, 0xef, 0x3a, 0x90,
-	0x95, 0xf5, 0x03, 0x19, 0x1f, 0xa1, 0x6a, 0xde, 0x11, 0xca, 0xfc, 0x11, 0xd4, 0x7e, 0xc1, 0x1f,
-	0x81, 0xb0, 0x99, 0xf8, 0x39, 0xbd, 0x55, 0xf6, 0xe9, 0xb8, 0x96, 0xfe, 0x7d, 0xa8, 0x45, 0xc1,
-	0x55, 0x3a, 0xf1, 0xbf, 0x78, 0x67, 0xc2, 0xe5, 0x28, 0xaa, 0x46, 0xc1, 0x55, 0x36, 0xdb, 0xf6,
-	0xfe, 0x52, 0xa4, 0xbd, 0x4b, 0x2a, 0x0a, 0xbc, 0x77, 0x19, 0x6a, 0xaa, 0x22, 0x29, 0xc6, 0x66,
-	0xef, 0x72, 0x07, 0x6e, 0x6d, 0x70, 0xf9, 0x85, 0x59, 0xc8, 0xe1, 0x89, 0x27, 0x82, 0xae, 0xcb,
-	0xf4, 0xce, 0xdc, 0xd4, 0xda, 0x15, 0xc4, 0x17, 0xda, 0x40, 0x50, 0x24, 0x54, 0xcc, 0xe1, 0x8a,
-	0xaa, 0x62, 0x08, 0xb2, 0x22, 0x11, 0x54, 0xa2, 0x6f, 0xba, 0x0c, 0x57, 0x53, 0x5f, 0xd2, 0x36,
-	0x69, 0xa4, 0x69, 0x83, 0x33, 0x54, 0xa6, 0x0d, 0x45, 0x06, 0xd0, 0x17, 0x14, 0x54, 0xc1, 0x1f,
-	0xc1, 0xcd, 0x0c, 0x5d, 0x97, 0x14, 0x5d, 0x25, 0xa8, 0x9a, 0xc3, 0x1a, 0xaa, 0xbd, 0xd1, 0x40,
-	0x42, 0x35, 0xfa, 0x20, 0xd8, 0x58, 0x8e, 0x18, 0xa8, 0x9e, 0xb3, 0x8c, 0xa8, 0x8d, 0x10, 0xe4,
-	0xec, 0xbb, 0x2b, 0x18, 0x86, 0x44, 0xce, 0x50, 0x23, 0x87, 0xa7, 0x1b, 0x2a, 0x11, 0x8e, 0x25,
-	0xd4, 0xcc, 0xb3, 0x41, 0x1a, 0xaa, 0xe4, 0x0c, 0xb5, 0xf0, 0xc7, 0x70, 0x27, 0xc3, 0x32, 0x88,
-	0xa0, 0xe8, 0xa2, 0x24, 0x9f, 0x4a, 0x04, 0x6d, 0xef, 0xfd, 0xb9, 0x90, 0xfa, 0x82, 0x59, 0x65,
-	0x5c, 0x22, 0x67, 0x0a, 0xbd, 0xa1, 0xac, 0x98, 0xba, 0x21, 0x18, 0xeb, 0xe1, 0x8b, 0x1d, 0x9d,
-	0xe1, 0x27, 0x01, 0xbc, 0x0b, 0xb7, 0x37, 0xb8, 0x03, 0x55, 0x7c, 0x21, 0xf5, 0xd0, 0x16, 0xee,
-	0xc0, 0xc7, 0x1b, 0x4c, 0xfd, 0x64, 0x64, 0x18, 0xb2, 0x72, 0x6c, 0xf6, 0xa8, 0x82, 0x22, 0xbe,
-	0x0f, 0x1f, 0xe5, 0xa8, 0x8f, 0x55, 0x94, 0xf6, 0x7e, 0x2c, 0x00, 0xde, 0xfc, 0x11, 0x5b, 0x4a,
-	0xa9, 0x1a, 0x0d, 0xea, 0x86, 0xcd, 0x89, 0x55, 0x6b, 0xec, 0xc4, 0xe4, 0x64, 0x43, 0x29, 0x66,
-	0x4f, 0xd6, 0x85, 0xee, 0x80, 0xd9, 0x9c, 0x23, 0x2a, 0x29, 0x9c, 0x59, 0xcc, 0x63, 0x1a, 0x92,
-	0x4e, 0xb7, 0x83, 0x4a, 0x7b, 0x7f, 0x4c, 0x3b, 0x78, 0xf5, 0x07, 0xb7, 0x74, 0xf0, 0x48, 0xa7,
-	0x8d, 0xc5, 0xbb, 0x1d, 0xbc, 0xce, 0x4f, 0xac, 0x8d, 0x23, 0xbe, 0xc6, 0x95, 0x7b, 0x03, 0x29,
-	0x65, 0x6a, 0x9a, 0x25, 0x88, 0x86, 0x7c, 0x4a, 0xcf, 0x47, 0x9e, 0x5c, 0x77, 0xa4, 0x9f, 0xa1,
-	0xd2, 0xde, 0xef, 0xd2, 0x9f, 0x71, 0xab, 0x1f, 0xbf, 0x55, 0x26, 0x0c, 0x04, 0x32, 0x7c, 0x5f,
-	0x26, 0xac, 0xf1, 0x13, 0x43, 0x3f, 0x85, 0xfb, 0xb9, 0xd2, 0xc4, 0x24, 0x92, 0x26, 0xc8, 0x04,
-	0x6d, 0xad, 0x62, 0x9d, 0x82, 0x88, 0x44, 0x36, 0x64, 0x51, 0x18, 0xa0, 0x62, 0x92, 0xf8, 0x6b,
-	0xec, 0xa1, 0xf0, 0xad, 0x4a, 0x0f, 0x74, 0x2e, 0x4f, 0x56, 0x54, 0x82, 0xca, 0xb9, 0x76, 0xbd,
-	0x14, 0x88, 0x42, 0xc3, 0x52, 0x59, 0x25, 0x61, 0x8a, 0x2b, 0x2b, 0x3d, 0xc9, 0x90, 0xc8, 0x50,
-	0x56, 0x04, 0x43, 0x42, 0xd5, 0xbd, 0xbf, 0x16, 0xe0, 0x66, 0xee, 0x37, 0x26, 0x7e, 0x00, 0xf7,
-	0x98, 0xb4, 0x6e, 0x08, 0x4a, 0xaf, 0x7b, 0x96, 0xe3, 0x95, 0xc4, 0x6b, 0x59, 0x44, 0xa6, 0xc4,
-	0x65, 0xf8, 0x27, 0xaa, 0x91, 0x8a, 0xe0, 0x3a, 0x4f, 0x54, 0x07, 0x34, 0xd9, 0x1e, 0xc1, 0xc3,
-	0x1c, 0xa6, 0x46, 0xd4, 0x53, 0xb9, 0x47, 0x0f, 0x90, 0x2e, 0x91, 0x53, 0x59, 0x94, 0x50, 0x69,
-	0xef, 0xf7, 0x45, 0x68, 0xad, 0xfd, 0x8f, 0xe2, 0x36, 0xdc, 0x38, 0x15, 0x06, 0x23, 0x69, 0xb3,
-	0x1a, 0xdf, 0x00, 0x94, 0xe2, 0xf0, 0x16, 0xa2, 0x40, 0xeb, 0xd4, 0x1a, 0x9e, 0x1b, 0xbf, 0x45,
-	0x0b, 0x5b, 0x8a, 0x4e, 0x9b, 0x63, 0xdd, 0x14, 0x44, 0x54, 0xcc, 0x65, 0xf4, 0x44, 0x54, 0xca,
-	0x68, 0x12, 0x86, 0x9a, 0x44, 0x24, 0xda, 0xde, 0xac, 0xaf, 0xfb, 0x52, 0x30, 0x0c, 0x1d, 0x55,
-	0x32, 0xd4, 0x13, 0x89, 0x18, 0xdf, 0xa3, 0x6a, 0x46, 0x87, 0x28, 0x0d, 0x74, 0x79, 0xa4, 0xa3,
-	0x1a, 0xcd, 0xe9, 0x14, 0x5d, 0x93, 0x88, 0x48, 0x6b, 0x1d, 0x39, 0x41, 0x75, 0x8c, 0x61, 0x3b,
-	0xc5, 0x22, 0xda, 0x10, 0x41, 0x86, 0x26, 0x0e, 0x87, 0xbc, 0xb8, 0xa6, 0x68, 0x06, 0x19, 0x19,
-	0x27, 0x26, 0x23, 0xa0, 0x66, 0x66, 0xd9, 0x58, 0x3d, 0x6a, 0xe1, 0x9b, 0xb0, 0x9b, 0xa2, 0x0f,
-	0x69, 0xe6, 0xe8, 0x68, 0x3b, 0x63, 0x7b, 0xf7, 0xcc, 0x90, 0x74, 0xb4, 0x93, 0x59, 0xb4, 0xd7,
-	0x1d, 0x22, 0xb4, 0xf7, 0x43, 0x11, 0x60, 0xd5, 0x5b, 0xae, 0xb6, 0xa1, 0x8b, 0xc2, 0x60, 0x3d,
-	0x3a, 0xcb, 0xa5, 0x38, 0xeb, 0x4c, 0x15, 0x0d, 0x15, 0x15, 0xb2, 0xe4, 0xef, 0x25, 0xcd, 0x50,
-	0xd1, 0xd6, 0xca, 0x02, 0x4e, 0x16, 0x0c, 0x43, 0x45, 0xc5, 0x2c, 0xb8, 0x2f, 0x0d, 0x0d, 0x15,
-	0x95, 0xb2, 0x60, 0x4d, 0x16, 0xd5, 0x74, 0x58, 0x38, 0x55, 0x11, 0x14, 0x15, 0x55, 0xb2, 0x2a,
-	0x86, 0xb2, 0x48, 0x54, 0x54, 0xdd, 0x24, 0x0f, 0x06, 0x32, 0xaa, 0x65, 0xc9, 0x23, 0x45, 0x36,
-	0x74, 0x54, 0xcf, 0xaa, 0x7e, 0x21, 0x0f, 0x54, 0x04, 0x59, 0xea, 0x50, 0x3a, 0x16, 0x50, 0x23,
-	0x4b, 0x3d, 0x96, 0x8f, 0x05, 0xd4, 0xcc, 0x52, 0x0d, 0x89, 0x08, 0xa8, 0xb5, 0xb1, 0x11, 0xc9,
-	0x10, 0xd0, 0x36, 0xbe, 0x0e, 0x3b, 0x69, 0xaa, 0xf4, 0x4a, 0x40, 0x3b, 0x9b, 0x7e, 0x33, 0x0c,
-	0x01, 0xa1, 0x4d, 0x2f, 0x53, 0xf2, 0xee, 0xde, 0x6f, 0x0a, 0xd0, 0x4c, 0xff, 0xfb, 0xd3, 0xe3,
-	0xc9, 0x6f, 0x7f, 0x76, 0xf6, 0x46, 0x7a, 0xf6, 0x20, 0xad, 0x33, 0xd5, 0x17, 0xa8, 0x40, 0x4b,
-	0x5c, 0x56, 0x44, 0x38, 0x15, 0xe4, 0x01, 0xbd, 0x41, 0xd0, 0x16, 0x2d, 0x27, 0xeb, 0x6c, 0x45,
-	0x55, 0xe8, 0x65, 0x22, 0x18, 0xb2, 0xaa, 0xd0, 0x22, 0xb8, 0xf7, 0x43, 0x01, 0x76, 0x32, 0x7f,
-	0x38, 0x34, 0xa7, 0x36, 0xce, 0xf1, 0x2f, 0xfc, 0xf9, 0x64, 0x1f, 0x08, 0xaa, 0x82, 0xca, 0xb8,
-	0x01, 0x55, 0xe5, 0xd8, 0xd4, 0x54, 0xe5, 0x68, 0xed, 0xe7, 0xf3, 0x26, 0xec, 0x8a, 0xea, 0xb0,
-	0xab, 0x9a, 0x54, 0xd8, 0x8c, 0xe5, 0x6a, 0xf8, 0x16, 0xec, 0xb2, 0xa5, 0x15, 0xd5, 0x30, 0x69,
-	0xcd, 0x14, 0x0d, 0xa9, 0x87, 0xfe, 0x55, 0xe8, 0x7e, 0xfd, 0xfd, 0x57, 0x53, 0x27, 0x7a, 0xbd,
-	0x38, 0xdf, 0x1f, 0x7b, 0xf3, 0x03, 0xcf, 0xb7, 0xdd, 0xb1, 0x17, 0x4c, 0x0e, 0x26, 0xf6, 0xa5,
-	0x33, 0xb6, 0xbf, 0x9c, 0x5b, 0xae, 0x35, 0xb5, 0xe7, 0xb6, 0x1b, 0x7d, 0xe9, 0xb8, 0x91, 0x1d,
-	0x5c, 0x58, 0x63, 0xfb, 0xe0, 0xf2, 0xc9, 0xc1, 0xd4, 0x3b, 0x98, 0xcc, 0x9d, 0xf3, 0x0a, 0x6b,
-	0x12, 0x9e, 0xfc, 0x3b, 0x00, 0x00, 0xff, 0xff, 0xd9, 0xff, 0x19, 0x03, 0x33, 0x1c, 0x00, 0x00,
+	// 2916 bytes of a gzipped FileDescriptorProto
+	0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xac, 0x59, 0xcd, 0x92, 0xdb, 0xc6,
+	0x11, 0x16, 0xff, 0xc9, 0x26, 0xb9, 0x3b, 0x3b, 0xfa, 0xa3, 0xfe, 0x6c, 0x99, 0x91, 0x5d, 0xf2,
+	0xc6, 0xde, 0x5d, 0xad, 0xa4, 0x94, 0x6c, 0x97, 0x2b, 0x85, 0x05, 0xc1, 0x5d, 0x58, 0x24, 0x00,
+	0x0f, 0xc0, 0x95, 0xd6, 0x39, 0xa0, 0xb0, 0x24, 0x48, 0xa1, 0x8a, 0x24, 0x58, 0x00, 0xb8, 0x5a,
+	0x55, 0xe5, 0x94, 0xe4, 0x9e, 0x27, 0xc8, 0xcd, 0x49, 0xf9, 0x94, 0x4b, 0x72, 0xcc, 0xc1, 0x97,
+	0x3c, 0x44, 0x9e, 0x21, 0x87, 0x3c, 0x42, 0x52, 0x33, 0x03, 0x80, 0x20, 0x08, 0xc9, 0x72, 0x55,
+	0x6e, 0x33, 0xdd, 0x5f, 0xf7, 0xf4, 0x74, 0xf7, 0xf4, 0x4c, 0x03, 0xd0, 0x18, 0xcd, 0x9c, 0xfd,
+	0x57, 0xaf, 0xf7, 0x16, 0x9e, 0x1b, 0xb8, 0xb8, 0x30, 0x9a, 0x39, 0xb7, 0x3f, 0x9c, 0xb8, 0xee,
+	0x64, 0x6a, 0xef, 0x33, 0xd2, 0xf9, 0x72, 0xbc, 0x1f, 0x38, 0x33, 0xdb, 0x0f, 0xac, 0xd9, 0x82,
+	0xa3, 0xda, 0xb7, 0xa1, 0x38, 0x58, 0x3a, 0x23, 0x8c, 0xa1, 0xb8, 0x5c, 0x3a, 0xa3, 0x56, 0xee,
+	0x7e, 0xee, 0x61, 0x8d, 0xb0, 0x71, 0xfb, 0x97, 0x00, 0x27, 0x96, 0x37, 0x7a, 0x6d, 0x79, 0xb6,
+	0xdc, 0xc1, 0xf7, 0x12, 0x88, 0xfa, 0x61, 0x6d, 0x6f, 0x34, 0x73, 0xf6, 0xa8, 0x68, 0x08, 0xbe,
+	0x09, 0x85, 0x81, 0xe7, 0x60, 0x04, 0x85, 0xa5, 0xe7, 0x84, 0x6a, 0xe8, 0xb0, 0xfd, 0x87, 0x02,
+	0x6c, 0x89, 0xee, 0x6c, 0xe1, 0xce, 0xed, 0x79, 0xa0, 0x07, 0x56, 0x60, 0xe3, 0x13, 0xc0, 0x3e,
+	0x1d, 0x98, 0x53, 0xcb, 0x0f, 0xcc, 0xe1, 0x2b, 0x6b, 0x3e, 0xb1, 0x23, 0xc5, 0xb7, 0xf7, 0xb8,
+	0xc9, 0x7b, 0x91, 0xc9, 0x7b, 0x46, 0x64, 0x32, 0x41, 0x4c, 0xaa, 0x67, 0xf9, 0x81, 0xc8, 0x65,
+	0xf0, 0x17, 0x50, 0xb7, 0x46, 0x33, 0x67, 0x6e, 0x32, 0x4e, 0x2b, 0x7f, 0x3f, 0xf7, 0x70, 0xeb,
+	0xb0, 0xc5, 0x6c, 0x8b, 0xd7, 0x14, 0x28, 0x80, 0x2d, 0x4c, 0xc0, 0x8a, 0xc7, 0xf8, 0x57, 0x00,
+	0xee, 0xc2, 0xf6, 0x42, 0xc9, 0x02, 0x93, 0xbc, 0xb9, 0x2e, 0xa9, 0x2e, 0x6c, 0x8f, 0x0b, 0xd6,
+	0xdc, 0x68, 0x48, 0x97, 0x5c, 0xfa, 0xd6, 0xc4, 0x0e, 0x05, 0x8b, 0x59, 0x4b, 0x0e, 0x28, 0x20,
+	0x5c, 0x72, 0x19, 0x8f, 0x99, 0xb5, 0x53, 0xcb, 0x9b, 0x85, 0xa2, 0xa5, 0x4c, 0x6b, 0x29, 0x20,
+	0xb2, 0x36, 0x1e, 0xe3, 0x5f, 0x43, 0xd3, 0x0f, 0xac, 0xf9, 0xe8, 0xfc, 0x4d, 0x28, 0x5c, 0x66,
+	0xc2, 0xb7, 0xd7, 0x85, 0x75, 0x0e, 0xe1, 0xe2, 0x0d, 0x3f, 0x31, 0x6b, 0xff, 0x3b, 0x0f, 0x57,
+	0x57, 0x38, 0x7b, 0xee, 0xbb, 0x5e, 0xc7, 0x0a, 0x2c, 0x7c, 0x0d, 0x4a, 0x17, 0xd6, 0x74, 0x69,
+	0x33, 0xf7, 0x97, 0x08, 0x9f, 0xe0, 0x4f, 0xa0, 0x18, 0xbc, 0x59, 0x44, 0x0e, 0xc5, 0x6c, 0x15,
+	0x0a, 0x3f, 0xa5, 0x5c, 0xe3, 0xcd, 0xc2, 0x26, 0x8c, 0x8f, 0x3f, 0x86, 0x92, 0x3f, 0xb4, 0xa6,
+	0x91, 0xff, 0xb6, 0x19, 0x90, 0x81, 0x74, 0x4a, 0x26, 0x9c, 0x8b, 0xef, 0x42, 0x6d, 0xe1, 0xd9,
+	0x43, 0xc7, 0x77, 0xdc, 0x39, 0xf3, 0x58, 0x89, 0xac, 0x08, 0xf8, 0x53, 0x28, 0xd3, 0x3d, 0x2d,
+	0xfd, 0xd0, 0x23, 0x3b, 0x4c, 0x0b, 0xb7, 0x51, 0x67, 0x0c, 0x12, 0x02, 0xf0, 0x2f, 0xa0, 0xb9,
+	0x9c, 0x3b, 0x81, 0x6f, 0x8e, 0x1c, 0x7f, 0x31, 0xb5, 0xde, 0x30, 0x37, 0xd4, 0x48, 0x83, 0x11,
+	0x3b, 0x9c, 0x86, 0x9f, 0x41, 0x2d, 0x4e, 0xf3, 0x56, 0xe5, 0x27, 0xb3, 0x6a, 0x05, 0xc6, 0xbb,
+	0xb0, 0xc3, 0xf6, 0x6f, 0x2e, 0x17, 0x23, 0x9a, 0x9f, 0x1e, 0xf5, 0x74, 0xf5, 0x7e, 0xee, 0x61,
+	0x93, 0x6c, 0x33, 0xc6, 0x80, 0xd1, 0x09, 0x8d, 0xc8, 0x1d, 0xa8, 0x8d, 0xac, 0xc0, 0x32, 0x99,
+	0x9f, 0x6a, 0xcc, 0x8c, 0x2a, 0x25, 0x50, 0xef, 0xb4, 0xff, 0x53, 0x86, 0x9b, 0x9a, 0xeb, 0x05,
+	0xab, 0xb0, 0x06, 0x81, 0xe7, 0x9c, 0x2f, 0x03, 0xdb, 0xc7, 0xdf, 0xc2, 0xd6, 0xd0, 0x9d, 0xcf,
+	0xed, 0x61, 0xe0, 0x7a, 0x5c, 0x3a, 0xc7, 0xb6, 0xbd, 0xcb, 0xb6, 0xfd, 0x16, 0xa9, 0x3d, 0x31,
+	0x12, 0x61, 0xde, 0x6f, 0x0e, 0x93, 0x53, 0xfc, 0x0c, 0x4a, 0xfe, 0xc2, 0xb6, 0x47, 0x61, 0xbc,
+	0xda, 0xef, 0xd4, 0xa4, 0x53, 0x24, 0xe1, 0x02, 0x58, 0x80, 0x2a, 0x73, 0xc9, 0xd0, 0x9d, 0x86,
+	0x31, 0xfc, 0xf8, 0x9d, 0xc2, 0x5a, 0x08, 0x26, 0xb1, 0x18, 0xfe, 0x18, 0xb6, 0x16, 0xaf, 0xde,
+	0xf8, 0xce, 0xd0, 0x9a, 0x9a, 0x53, 0xeb, 0xdc, 0x9e, 0xb2, 0x08, 0xd7, 0x48, 0x33, 0xa2, 0xf6,
+	0x28, 0x91, 0x86, 0x6e, 0x66, 0x2d, 0x16, 0xce, 0x7c, 0x12, 0xa2, 0x4a, 0x3c, 0x74, 0x21, 0x91,
+	0x83, 0x9e, 0x40, 0x73, 0xe1, 0xce, 0x4d, 0x67, 0x64, 0x0e, 0xdd, 0xf9, 0xd8, 0x99, 0xb0, 0xf8,
+	0xd6, 0x0f, 0x51, 0x68, 0xd3, 0x5c, 0x1e, 0x89, 0x8c, 0x4e, 0xea, 0x8b, 0xd5, 0x04, 0x3f, 0x86,
+	0xeb, 0x6c, 0x37, 0xa6, 0xb5, 0x0c, 0xdc, 0xb9, 0x3d, 0x71, 0x03, 0xc7, 0x0a, 0x68, 0xaa, 0xd1,
+	0xe0, 0x57, 0xc9, 0x35, 0xc6, 0x14, 0xd6, 0x79, 0xf8, 0x33, 0xa8, 0x8e, 0x1c, 0x7a, 0x44, 0x86,
+	0x3c, 0xc4, 0x89, 0x55, 0x3a, 0x21, 0x9d, 0xc4, 0x88, 0xf6, 0x02, 0x9a, 0x6b, 0x11, 0xc0, 0x77,
+	0xa1, 0x25, 0xaa, 0x8a, 0x22, 0x89, 0x86, 0x4a, 0x4c, 0xe3, 0x4c, 0x93, 0xcc, 0x81, 0xd2, 0x91,
+	0xba, 0xb2, 0x22, 0x75, 0xd0, 0x15, 0x5c, 0x85, 0x22, 0xf9, 0xe6, 0xc9, 0x53, 0x94, 0xc3, 0x0d,
+	0xa8, 0x76, 0xe5, 0x23, 0x89, 0x98, 0x3d, 0x11, 0xe5, 0xf1, 0x36, 0xd4, 0xf9, 0x4c, 0x17, 0x4d,
+	0x4d, 0x44, 0x05, 0xdc, 0x84, 0x1a, 0x27, 0xf4, 0x35, 0x15, 0x15, 0x71, 0x0d, 0x4a, 0x44, 0x3f,
+	0x7c, 0x7c, 0x88, 0x4a, 0xed, 0xbf, 0xe6, 0xa0, 0xc4, 0x42, 0x85, 0xaf, 0xc2, 0xb6, 0xae, 0x49,
+	0x52, 0x67, 0x6d, 0x85, 0x3a, 0x54, 0x3a, 0x67, 0x8a, 0xd0, 0x97, 0x45, 0x94, 0xa3, 0x5a, 0x8e,
+	0xe5, 0x63, 0xe1, 0x48, 0x36, 0xcc, 0x47, 0x28, 0x8f, 0xb7, 0x00, 0xe2, 0xe9, 0x01, 0x2a, 0x24,
+	0xe7, 0x87, 0x4f, 0x51, 0x31, 0x39, 0x7f, 0x72, 0x80, 0x4a, 0xd4, 0xaa, 0x15, 0xfe, 0x00, 0x95,
+	0x93, 0x84, 0x27, 0x07, 0x07, 0xa8, 0x82, 0x11, 0x34, 0xfa, 0x52, 0xa4, 0xe1, 0xe0, 0x00, 0x55,
+	0x93, 0x94, 0x47, 0x87, 0x4f, 0x0f, 0x50, 0xad, 0xfd, 0x5b, 0xa8, 0x46, 0xd9, 0x81, 0x6f, 0x00,
+	0xd6, 0x88, 0x6a, 0xa8, 0xa2, 0xda, 0x5b, 0xb3, 0xba, 0x01, 0x55, 0xc9, 0x38, 0x91, 0x88, 0x22,
+	0x19, 0x28, 0x47, 0xbd, 0x74, 0xac, 0xa9, 0x0a, 0xca, 0xd3, 0x7d, 0xbf, 0x64, 0xc3, 0x02, 0x06,
+	0x28, 0xbf, 0x3c, 0xd6, 0xe9, 0x98, 0xb9, 0xe3, 0xb8, 0x2b, 0xe8, 0x06, 0x2a, 0x51, 0xb2, 0x2e,
+	0x11, 0x59, 0xe8, 0xa1, 0x32, 0x95, 0x93, 0x28, 0xa0, 0x42, 0x47, 0x47, 0xb2, 0xa1, 0xa3, 0x6a,
+	0x7b, 0x0a, 0xf5, 0x44, 0xe4, 0xf0, 0x47, 0xd0, 0x98, 0x59, 0x97, 0x66, 0x1c, 0xe1, 0x1c, 0x3b,
+	0xc4, 0xf5, 0x99, 0x75, 0x19, 0x43, 0xbe, 0x84, 0x5b, 0x1c, 0x32, 0x1e, 0xdb, 0x9e, 0x3d, 0x0f,
+	0x1c, 0x6b, 0xba, 0xc2, 0xe7, 0x19, 0xfe, 0x26, 0xc3, 0xaf, 0xf8, 0x91, 0x6c, 0xfb, 0xf7, 0x39,
+	0xb8, 0xb7, 0x76, 0x44, 0xf8, 0x85, 0x94, 0x38, 0xe5, 0x1b, 0x99, 0x9c, 0x7b, 0x9f, 0x4c, 0x4e,
+	0x26, 0x65, 0xfe, 0x27, 0x93, 0xf2, 0x37, 0xf0, 0xc0, 0xf0, 0xac, 0xb9, 0x3f, 0xb4, 0x9d, 0x0b,
+	0xdb, 0x7b, 0xbb, 0x2d, 0x8f, 0x01, 0x02, 0x8a, 0x4b, 0x56, 0x9b, 0x6b, 0x4c, 0x6f, 0x42, 0x9c,
+	0xd5, 0x95, 0x1a, 0xc3, 0xb1, 0x12, 0x36, 0x64, 0x0e, 0x8d, 0x2d, 0xbb, 0x0e, 0x65, 0xbe, 0x1f,
+	0x26, 0xdf, 0x20, 0x25, 0x66, 0x36, 0xfe, 0x1a, 0xee, 0x84, 0xdb, 0x64, 0x92, 0x33, 0x27, 0x30,
+	0x17, 0xb6, 0xe7, 0xb8, 0x23, 0x67, 0xe8, 0x04, 0x6f, 0x42, 0x37, 0xb6, 0x18, 0xd6, 0x08, 0x01,
+	0xda, 0x8a, 0xdf, 0x96, 0xe0, 0xae, 0xe8, 0xce, 0x03, 0xcb, 0x99, 0x27, 0xec, 0x4f, 0x58, 0xbe,
+	0x59, 0x5b, 0x72, 0x19, 0xb5, 0xa5, 0xfd, 0xcf, 0x1c, 0xdc, 0xd0, 0xfc, 0x65, 0x96, 0x86, 0x33,
+	0xd8, 0xf1, 0x97, 0x8b, 0x85, 0xeb, 0x05, 0xf6, 0xc8, 0xbc, 0x70, 0xa7, 0x81, 0x35, 0x89, 0x5c,
+	0xf0, 0x19, 0x77, 0x6d, 0xa6, 0xdc, 0x9e, 0x1e, 0x09, 0x9d, 0x72, 0x19, 0x82, 0xfc, 0x14, 0xa5,
+	0xad, 0x01, 0x4a, 0xa3, 0xf0, 0x87, 0x70, 0x47, 0x1f, 0x68, 0x9a, 0x4a, 0x0c, 0xa9, 0x63, 0x9e,
+	0xaa, 0x3d, 0x43, 0x38, 0x5e, 0xaf, 0x0c, 0x15, 0x28, 0x9c, 0x3e, 0x79, 0xc6, 0x93, 0xff, 0xf4,
+	0xf0, 0xf1, 0x01, 0xca, 0xb3, 0xd1, 0xa3, 0x47, 0x4f, 0x51, 0xa1, 0xfd, 0xe7, 0x12, 0x7c, 0x98,
+	0x15, 0x51, 0x3f, 0xb1, 0x21, 0x0d, 0xea, 0x63, 0xd7, 0x9b, 0x99, 0x63, 0x8b, 0xd6, 0xa2, 0x70,
+	0x2b, 0xfb, 0xe9, 0x68, 0x66, 0x89, 0xee, 0x75, 0x5d, 0x6f, 0xd6, 0x65, 0x62, 0x04, 0xc6, 0xf1,
+	0x38, 0x95, 0x1e, 0xf9, 0xf7, 0x4a, 0x8f, 0x8d, 0x03, 0x56, 0xd8, 0x3c, 0x60, 0x5f, 0x03, 0x4e,
+	0x42, 0x4c, 0xfe, 0x52, 0x28, 0x66, 0xbf, 0x14, 0x50, 0x42, 0x92, 0x51, 0xe8, 0x85, 0xe1, 0x5d,
+	0x9a, 0xaf, 0xad, 0x0b, 0x7b, 0x6a, 0xcf, 0x27, 0xc1, 0xab, 0x56, 0xe9, 0x7e, 0xe1, 0x61, 0x93,
+	0x34, 0xbc, 0xcb, 0x17, 0x31, 0x8d, 0x82, 0x82, 0x35, 0x50, 0x99, 0x83, 0x82, 0x24, 0xe8, 0x4b,
+	0x40, 0x2b, 0x44, 0x68, 0x46, 0x25, 0xdb, 0x8c, 0xed, 0x15, 0x90, 0x5b, 0x71, 0x0b, 0xaa, 0xc1,
+	0xa5, 0xb9, 0x70, 0x5f, 0xdb, 0x5e, 0xab, 0x7a, 0xbf, 0xf0, 0xb0, 0x44, 0x2a, 0xc1, 0xa5, 0x46,
+	0xa7, 0xf8, 0x29, 0x6c, 0x45, 0xac, 0x50, 0x69, 0x2d, 0x5b, 0x69, 0x23, 0x94, 0x60, 0xb3, 0xf6,
+	0x8f, 0x39, 0x80, 0x55, 0x24, 0xf0, 0x4d, 0xb8, 0xda, 0x55, 0x49, 0xdf, 0xec, 0x0a, 0xec, 0x2a,
+	0x19, 0x28, 0xcf, 0x15, 0xf5, 0x85, 0xc2, 0xef, 0x90, 0x6f, 0xf5, 0xae, 0xc6, 0xcb, 0x3b, 0x1d,
+	0x99, 0x5a, 0x6f, 0xa0, 0xa3, 0x3c, 0x2d, 0x85, 0x74, 0x7a, 0xf8, 0x0c, 0x15, 0x68, 0x3a, 0x51,
+	0x4c, 0x91, 0x56, 0xd6, 0x18, 0x52, 0xa2, 0xe4, 0x97, 0x5d, 0x8d, 0x97, 0x4a, 0xb1, 0xab, 0x3d,
+	0xe1, 0xa5, 0x52, 0xec, 0x6a, 0x87, 0xa8, 0xca, 0x46, 0x9a, 0xf0, 0x1c, 0xd5, 0x70, 0x19, 0xf2,
+	0x2f, 0x0f, 0x11, 0xd0, 0x3a, 0xab, 0xd2, 0xb2, 0x8c, 0xea, 0x54, 0x52, 0xec, 0x6a, 0xa8, 0x41,
+	0x15, 0x52, 0xbc, 0x29, 0x88, 0x2a, 0x6a, 0xc6, 0xb3, 0x8e, 0xa8, 0xa2, 0xad, 0xf6, 0xbf, 0x2a,
+	0x50, 0x8b, 0x33, 0x8c, 0xf6, 0x0e, 0x73, 0x6b, 0x66, 0x47, 0xbd, 0x03, 0x1d, 0xe3, 0x87, 0x50,
+	0x1a, 0x4e, 0x2d, 0xdf, 0x5f, 0x7b, 0x41, 0xc6, 0x22, 0x2c, 0x99, 0x38, 0x00, 0xdf, 0x87, 0xfa,
+	0xc8, 0xf6, 0x87, 0x9e, 0xb3, 0x60, 0x57, 0x76, 0x81, 0x29, 0x49, 0x92, 0xf0, 0x0d, 0x28, 0x2f,
+	0x2c, 0x5a, 0x81, 0xc3, 0x87, 0x45, 0x38, 0xc3, 0x0f, 0x60, 0x8b, 0x8f, 0x4c, 0xcf, 0x9e, 0x9a,
+	0x0b, 0x97, 0xbf, 0x1f, 0x4b, 0xa4, 0xc1, 0xa9, 0xc4, 0x9e, 0x6a, 0xae, 0x8f, 0x77, 0xa1, 0x3a,
+	0x7c, 0xe5, 0x4c, 0x47, 0x9e, 0x3d, 0x67, 0xc9, 0x51, 0x3f, 0xdc, 0x5a, 0x37, 0x86, 0xc4, 0x7c,
+	0x9a, 0xd4, 0xaf, 0xc2, 0x8e, 0xc7, 0xf4, 0xec, 0x0b, 0x96, 0x24, 0x35, 0x52, 0x8f, 0x68, 0xc4,
+	0xbe, 0xa0, 0x90, 0xb1, 0xe3, 0xcd, 0x62, 0x48, 0x95, 0x43, 0x22, 0x5a, 0x08, 0xf1, 0xdd, 0x71,
+	0x10, 0x43, 0xf8, 0xe3, 0xb0, 0x1e, 0xd1, 0x28, 0xe4, 0x1e, 0x80, 0x6f, 0x7b, 0xf4, 0xc6, 0x99,
+	0x2f, 0x67, 0x2d, 0x60, 0x80, 0x1a, 0xa7, 0x28, 0xcb, 0x19, 0x4d, 0xba, 0xd9, 0x78, 0x62, 0x32,
+	0xaf, 0xd6, 0x19, 0xb3, 0x32, 0x1b, 0x4f, 0x14, 0xea, 0xd8, 0x7b, 0x00, 0x33, 0x77, 0x64, 0x4f,
+	0x39, 0xb3, 0xc1, 0x25, 0x19, 0x85, 0xb1, 0xaf, 0x41, 0xc9, 0x9a, 0x3a, 0x96, 0xdf, 0x6a, 0x32,
+	0x0e, 0x9f, 0x50, 0x7d, 0x96, 0xef, 0xdb, 0x01, 0x2d, 0xdf, 0x5b, 0x5c, 0x1f, 0x9b, 0xcb, 0x23,
+	0x5a, 0xd7, 0x1d, 0xdf, 0x1c, 0x7b, 0xcb, 0xd6, 0x36, 0x7b, 0x2c, 0x95, 0x1c, 0xbf, 0xeb, 0x2d,
+	0xf1, 0x53, 0x6e, 0x01, 0x7d, 0xed, 0xb6, 0xd0, 0x4f, 0x3e, 0xa1, 0xa9, 0x75, 0x1d, 0xfa, 0x28,
+	0xbe, 0xcd, 0xdb, 0xbf, 0x1d, 0x26, 0x51, 0xe5, 0x3d, 0xa2, 0xe7, 0xb0, 0x46, 0x30, 0x6e, 0x20,
+	0x71, 0x66, 0x03, 0x89, 0x3f, 0x85, 0x12, 0xef, 0x6c, 0xae, 0x32, 0xfe, 0xd5, 0x8d, 0xce, 0x26,
+	0xa0, 0xed, 0x44, 0xd4, 0x47, 0xf9, 0xac, 0x3b, 0xa0, 0xf6, 0x59, 0xad, 0x6b, 0x2c, 0xaa, 0xa9,
+	0x3e, 0x6a, 0xd5, 0xe2, 0x10, 0xf0, 0x57, 0xed, 0xce, 0x57, 0x50, 0xa3, 0x05, 0xdb, 0xb4, 0x82,
+	0xc0, 0x6b, 0x1d, 0xb2, 0x95, 0xee, 0xbe, 0xeb, 0xc1, 0x7b, 0x72, 0x85, 0x54, 0xa9, 0x00, 0xa5,
+	0xe0, 0x6f, 0xd8, 0xcb, 0x9d, 0xdf, 0x56, 0x5c, 0xc3, 0x63, 0xa6, 0xe1, 0xa3, 0x70, 0xe9, 0xb7,
+	0x5f, 0x64, 0x27, 0x57, 0xd8, 0x93, 0x9d, 0xf3, 0x99, 0xae, 0x67, 0x50, 0x5d, 0xf8, 0x4b, 0xae,
+	0xe5, 0x09, 0xd3, 0x72, 0xe7, 0x1d, 0xd7, 0xd1, 0xc9, 0x15, 0x52, 0x59, 0xf8, 0x4b, 0x26, 0xf9,
+	0x2d, 0xa0, 0x60, 0x55, 0x97, 0xb9, 0x86, 0xa7, 0x4c, 0xc3, 0x83, 0xf7, 0xb9, 0x05, 0x4e, 0xae,
+	0x90, 0xed, 0x84, 0x3c, 0x65, 0x1c, 0x01, 0x54, 0xfd, 0x85, 0x3d, 0x74, 0xc6, 0xce, 0xb0, 0xfd,
+	0x43, 0x0e, 0xaa, 0x51, 0xdb, 0x8f, 0xbf, 0x82, 0x7a, 0xa2, 0x47, 0x7f, 0x8f, 0x16, 0x1d, 0xa6,
+	0x71, 0x77, 0x8e, 0xdb, 0x50, 0xf4, 0x5c, 0x37, 0x08, 0x1f, 0x32, 0xe9, 0x53, 0xc7, 0x78, 0xf1,
+	0x02, 0xe7, 0xae, 0x1b, 0xd8, 0x23, 0x76, 0xfa, 0xdf, 0x63, 0x81, 0x23, 0x86, 0x6e, 0xff, 0x58,
+	0x80, 0xab, 0x7d, 0x77, 0xe4, 0x8c, 0x1d, 0xeb, 0x7c, 0x6a, 0xff, 0xbf, 0x0a, 0xd2, 0x27, 0x71,
+	0xb9, 0x29, 0x64, 0x1a, 0xfe, 0xf6, 0xf2, 0x53, 0xcc, 0x28, 0x3f, 0xf1, 0x81, 0x2c, 0xbd, 0xed,
+	0x40, 0x96, 0xd7, 0x0f, 0x64, 0x78, 0x84, 0x2a, 0x59, 0x47, 0x28, 0xf5, 0xb9, 0xa3, 0xfa, 0x33,
+	0x3e, 0x77, 0x08, 0x9b, 0x89, 0x9f, 0xd1, 0x26, 0xa6, 0x9f, 0x8e, 0x6b, 0xe9, 0xdf, 0x85, 0x6a,
+	0xe0, 0x5d, 0x26, 0x13, 0xff, 0xd3, 0xb7, 0x26, 0x5c, 0x86, 0xa2, 0x4a, 0xe0, 0x5d, 0xa6, 0xb3,
+	0x6d, 0xf7, 0xef, 0x05, 0xda, 0x58, 0x25, 0xa2, 0xc0, 0x1b, 0xab, 0xbe, 0xa6, 0x2a, 0x92, 0x62,
+	0x6c, 0x36, 0x56, 0xb7, 0xe1, 0xc6, 0x06, 0x97, 0x5f, 0x98, 0xb9, 0x0c, 0x9e, 0x78, 0x22, 0xe8,
+	0xba, 0x4c, 0xef, 0xcc, 0x4d, 0xad, 0x47, 0x82, 0xf8, 0x5c, 0xeb, 0x09, 0x8a, 0x84, 0x0a, 0x19,
+	0x5c, 0x51, 0x55, 0x0c, 0x41, 0x56, 0x24, 0x82, 0x8a, 0xf4, 0x4d, 0x97, 0xe2, 0x6a, 0xea, 0x0b,
+	0xda, 0xc3, 0x0d, 0x34, 0xad, 0x77, 0x86, 0x4a, 0xb4, 0xdb, 0x49, 0x01, 0xba, 0x82, 0x82, 0xca,
+	0xf8, 0x16, 0x5c, 0x4f, 0xd1, 0x75, 0x49, 0xd1, 0x55, 0x82, 0x2a, 0x19, 0xac, 0xbe, 0xda, 0x19,
+	0xf4, 0x24, 0x54, 0xa5, 0x0f, 0x82, 0x8d, 0xe5, 0x88, 0x81, 0x6a, 0x19, 0xcb, 0x88, 0xda, 0x00,
+	0x41, 0xc6, 0xbe, 0x8f, 0x04, 0xc3, 0x90, 0xc8, 0x19, 0xaa, 0x67, 0xf0, 0x74, 0x43, 0x25, 0xc2,
+	0xb1, 0x84, 0x1a, 0x59, 0x36, 0x48, 0x7d, 0x95, 0x9c, 0xa1, 0x26, 0xfe, 0x00, 0x6e, 0xa7, 0x58,
+	0x06, 0x11, 0x14, 0x5d, 0x94, 0xe4, 0x53, 0x89, 0xa0, 0xad, 0xdd, 0xbf, 0xe5, 0x12, 0x5f, 0x93,
+	0x56, 0x19, 0x17, 0xc9, 0x99, 0x42, 0xa7, 0x2f, 0x2b, 0xa6, 0x6e, 0x08, 0xc6, 0x7a, 0xf8, 0x42,
+	0x47, 0xa7, 0xf8, 0x51, 0x00, 0xef, 0xc0, 0xcd, 0x0d, 0x6e, 0x4f, 0x15, 0x9f, 0x4b, 0x1d, 0x94,
+	0xc7, 0x6d, 0xf8, 0x60, 0x83, 0xa9, 0x9f, 0x0c, 0x0c, 0x43, 0x56, 0x8e, 0xcd, 0x0e, 0x55, 0x50,
+	0xc0, 0xf7, 0xe0, 0x56, 0x86, 0xfa, 0x50, 0x45, 0x71, 0xf7, 0x87, 0x1c, 0xe0, 0xcd, 0x8f, 0x7b,
+	0xb1, 0x94, 0xaa, 0xd1, 0xa0, 0x6e, 0xd8, 0x1c, 0x59, 0xb5, 0xc6, 0x8e, 0x4c, 0x8e, 0x36, 0x94,
+	0x60, 0x76, 0x64, 0x5d, 0x38, 0xea, 0x31, 0x9b, 0x33, 0x44, 0x25, 0x85, 0x33, 0x0b, 0x59, 0x4c,
+	0x43, 0xd2, 0xe9, 0x76, 0x50, 0x71, 0xf7, 0x2f, 0x49, 0x07, 0xaf, 0x3e, 0x27, 0xc6, 0x0e, 0x1e,
+	0xe8, 0xb4, 0xb1, 0x78, 0xbb, 0x83, 0xd7, 0xf9, 0x91, 0xb5, 0x61, 0xc4, 0xd7, 0xb8, 0x72, 0xa7,
+	0x27, 0x25, 0x4c, 0x4d, 0xb2, 0x04, 0xd1, 0x90, 0x4f, 0xe9, 0xf9, 0xc8, 0x92, 0x3b, 0x1a, 0xe8,
+	0x67, 0xa8, 0xb8, 0xfb, 0xc7, 0xe4, 0x77, 0xc5, 0xd5, 0xc7, 0xcb, 0x55, 0x26, 0xf4, 0x04, 0xd2,
+	0x7f, 0x57, 0x26, 0xac, 0xf1, 0x23, 0x43, 0x3f, 0x82, 0x7b, 0x99, 0xd2, 0xc4, 0x24, 0x92, 0x26,
+	0xc8, 0x04, 0xe5, 0x57, 0xb1, 0x4e, 0x40, 0x44, 0x22, 0x1b, 0xb2, 0x28, 0xf4, 0x50, 0x21, 0x4a,
+	0xfc, 0x35, 0x76, 0x5f, 0xf8, 0x46, 0xa5, 0x07, 0x3a, 0x93, 0x27, 0x2b, 0x2a, 0x41, 0xa5, 0x4c,
+	0xbb, 0x5e, 0x08, 0x44, 0xa1, 0x61, 0x29, 0xaf, 0x92, 0x30, 0xc1, 0x95, 0x95, 0x8e, 0x64, 0x48,
+	0xa4, 0x2f, 0x2b, 0x82, 0x21, 0xa1, 0xca, 0xee, 0x3f, 0x72, 0x70, 0x3d, 0xf3, 0x8b, 0x2c, 0xbe,
+	0x0f, 0x77, 0x99, 0xb4, 0x6e, 0x08, 0x4a, 0xe7, 0xe8, 0x2c, 0xc3, 0x2b, 0x91, 0xd7, 0xd2, 0x88,
+	0x54, 0x89, 0x4b, 0xf1, 0x4f, 0x54, 0x23, 0x11, 0xc1, 0x75, 0x9e, 0xa8, 0xf6, 0x68, 0xb2, 0x3d,
+	0x84, 0x07, 0x19, 0x4c, 0x8d, 0xa8, 0xa7, 0x72, 0x87, 0x1e, 0x20, 0x5d, 0x22, 0xa7, 0xb2, 0x28,
+	0xa1, 0xe2, 0xee, 0x9f, 0x0a, 0xd0, 0x5c, 0xfb, 0xd4, 0x8b, 0x5b, 0x70, 0xed, 0x54, 0xe8, 0x0d,
+	0xa4, 0xcd, 0x6a, 0x7c, 0x0d, 0x50, 0x82, 0xc3, 0x5b, 0x88, 0x1c, 0xad, 0x53, 0x6b, 0x78, 0x6e,
+	0x7c, 0x9e, 0x16, 0xb6, 0x04, 0x9d, 0x36, 0xc7, 0xba, 0x29, 0x88, 0xa8, 0x90, 0xc9, 0xe8, 0x88,
+	0xa8, 0x98, 0xd2, 0x24, 0xf4, 0x35, 0x89, 0x48, 0xb4, 0xbd, 0x59, 0x5f, 0xf7, 0x85, 0x60, 0x18,
+	0x3a, 0x2a, 0xa7, 0xa8, 0x27, 0x12, 0x31, 0xbe, 0x43, 0x95, 0x94, 0x0e, 0x51, 0xea, 0xe9, 0xf2,
+	0x40, 0x47, 0x55, 0x9a, 0xd3, 0x09, 0xba, 0x26, 0x11, 0x91, 0xd6, 0x3a, 0x72, 0x82, 0x6a, 0x18,
+	0xc3, 0x56, 0x82, 0x45, 0xb4, 0x3e, 0x82, 0x14, 0x4d, 0xec, 0xf7, 0x79, 0x71, 0x4d, 0xd0, 0x0c,
+	0x32, 0x30, 0x4e, 0x4c, 0x46, 0x40, 0x8d, 0xd4, 0xb2, 0xa1, 0x7a, 0xd4, 0xc4, 0xd7, 0x61, 0x27,
+	0x41, 0xef, 0xd3, 0xcc, 0xd1, 0xd1, 0x56, 0xca, 0xf6, 0xa3, 0x33, 0x43, 0xd2, 0xd1, 0x76, 0x6a,
+	0xd1, 0xce, 0x51, 0x1f, 0xa1, 0xdd, 0xef, 0x0b, 0x00, 0xab, 0xde, 0x72, 0xb5, 0x0d, 0x5d, 0x14,
+	0x7a, 0xeb, 0xd1, 0x89, 0x97, 0xe2, 0xac, 0x33, 0x55, 0x34, 0x54, 0x94, 0x4b, 0x93, 0xbf, 0x93,
+	0x34, 0x43, 0x45, 0xf9, 0x95, 0x05, 0x9c, 0x2c, 0x18, 0x86, 0x8a, 0x0a, 0x69, 0x70, 0x57, 0xea,
+	0x1b, 0x2a, 0x2a, 0xa6, 0xc1, 0x9a, 0x2c, 0xaa, 0xc9, 0xb0, 0x70, 0xaa, 0x22, 0x28, 0x2a, 0x2a,
+	0xa7, 0x55, 0xf4, 0x65, 0x91, 0xa8, 0xa8, 0xb2, 0x49, 0xee, 0xf5, 0x64, 0x54, 0x4d, 0x93, 0x07,
+	0x8a, 0x6c, 0xe8, 0xa8, 0x96, 0x56, 0xfd, 0x5c, 0xee, 0xa9, 0x08, 0xd2, 0xd4, 0xbe, 0x74, 0x2c,
+	0xa0, 0x7a, 0x9a, 0x7a, 0x2c, 0x1f, 0x0b, 0xa8, 0x91, 0xa6, 0x1a, 0x12, 0x11, 0x50, 0x73, 0x63,
+	0x23, 0x92, 0x21, 0xa0, 0x2d, 0x7c, 0x15, 0xb6, 0x93, 0x54, 0xe9, 0xa5, 0x80, 0xb6, 0x37, 0xfd,
+	0x66, 0x18, 0x02, 0x42, 0x9b, 0x5e, 0xa6, 0xe4, 0x9d, 0xdd, 0xdf, 0xe5, 0xa0, 0x91, 0xfc, 0x85,
+	0x41, 0x8f, 0x27, 0xbf, 0xfd, 0xd9, 0xd9, 0x1b, 0xe8, 0xe9, 0x83, 0xb4, 0xce, 0x54, 0x9f, 0xa3,
+	0x1c, 0x2d, 0x71, 0x69, 0x11, 0xe1, 0x54, 0x90, 0x7b, 0xf4, 0x06, 0x41, 0x79, 0x5a, 0x4e, 0xd6,
+	0xd9, 0x8a, 0xaa, 0xd0, 0xcb, 0x44, 0x30, 0x64, 0x55, 0xa1, 0x45, 0x70, 0xf7, 0xfb, 0x1c, 0x6c,
+	0xa7, 0xbe, 0xe1, 0xd0, 0x9c, 0xda, 0x38, 0xc7, 0x3f, 0xf3, 0xb3, 0x2c, 0xfb, 0x80, 0xa0, 0x2a,
+	0xa8, 0x84, 0xeb, 0x50, 0x51, 0x8e, 0x4d, 0x4d, 0x55, 0x0e, 0xd7, 0x3e, 0xcb, 0x5e, 0x87, 0x1d,
+	0x51, 0xed, 0x1f, 0xa9, 0x26, 0x15, 0x36, 0x43, 0xb9, 0x2a, 0xbe, 0x01, 0x3b, 0x6c, 0x69, 0x45,
+	0x35, 0x4c, 0x5a, 0x33, 0x45, 0x43, 0xea, 0xa0, 0xff, 0xe6, 0x8e, 0xbe, 0xfa, 0xee, 0x8b, 0x89,
+	0x13, 0xbc, 0x5a, 0x9e, 0xef, 0x0d, 0xdd, 0xd9, 0xbe, 0xbb, 0xb0, 0xe7, 0x43, 0xd7, 0x1b, 0xed,
+	0x8f, 0xec, 0x0b, 0x67, 0x68, 0x7f, 0x3e, 0xb3, 0xe6, 0xd6, 0xc4, 0x9e, 0xd9, 0xf3, 0xe0, 0x73,
+	0x67, 0x1e, 0xd8, 0xde, 0xd8, 0x1a, 0xda, 0xfb, 0x17, 0x8f, 0xf7, 0x27, 0xee, 0xfe, 0x68, 0xe6,
+	0x9c, 0x97, 0x59, 0x93, 0xf0, 0xf8, 0x7f, 0x01, 0x00, 0x00, 0xff, 0xff, 0xd2, 0x3c, 0xcb, 0xef,
+	0xfe, 0x1c, 0x00, 0x00,
 }
diff --git a/protos/dmi/hw.proto b/protos/dmi/hw.proto
index c41d8a2..f7f15b3 100644
--- a/protos/dmi/hw.proto
+++ b/protos/dmi/hw.proto
@@ -208,10 +208,27 @@
     string mapping_label = 5;

     PonIdConfig pon_id_config = 6;

     bool speed_autonegotiation = 7; //Only valid for ethernet type port components. True if enabled, false otherwise.

+    PonDistance  distance = 8; //Pon max distance and max differential reach distance.

 }

 

+message PonDistance {

+    /*

+     * The ITU-T G.987.x series of Recommendations addresses the linear extent parameters of XG-PON

+     * using the single concept of fibre distance. An ONU is characterized by its fibre distance, and for

+     * each pair of ONUs on the same OLT PON interface, the differential fibre distance is the difference

+     * between the two individual fibre distances. Each specific PMD layer parameter set contains a

+     * provision to support a specific maximum fibre distance. The XG-PON TC layer specification

+     * contains a provision to support specific ranges of maximum fibre distance and maximum

+     * differential fibre distance. These ranges can be configurable for a given system. One can expect that

+     * for each XG-PON deployment, the configured TC layer maximum fibre distance will match the

+     * maximum fibre distance supported by the selected PMD layer parameter set.

+    */

+    uint32 max_distance = 1;  //Distance in kilometers the maximum logical distance on an ONU on the PON

+    uint32 max_differential_distance = 2;  // maximum distance between the closest ONU to the farthest ONU in km.

+}

 message PortComponentChangeAttributes {

     PonIdConfig pon_id_config = 1;

+    PonDistance  distance = 2; //Pon max distance and max differential reach distance.

 }

 

 message TransceiverComponentChangeAttributes {

diff --git a/python/dmi/hw_pb2.py b/python/dmi/hw_pb2.py
index d838136..43657e9 100644
--- a/python/dmi/hw_pb2.py
+++ b/python/dmi/hw_pb2.py
@@ -16,7 +16,7 @@
 from google.protobuf import timestamp_pb2 as google_dot_protobuf_dot_timestamp__pb2
 
 
-DESCRIPTOR = _descriptor_pool.Default().AddSerializedFile(b'\n\x0c\x64mi/hw.proto\x12\x03\x64mi\x1a\x1fgoogle/protobuf/timestamp.proto\"\x14\n\x04Uuid\x12\x0c\n\x04uuid\x18\x01 \x01(\t\"%\n\nHardwareID\x12\x17\n\x04uuid\x18\x01 \x01(\x0b\x32\t.dmi.Uuid\"\x12\n\x03Uri\x12\x0b\n\x03uri\x18\x01 \x01(\t\"\xb5\x02\n\x0e\x43omponentState\x12\x36\n\x12state_last_changed\x18\x01 \x01(\x0b\x32\x1a.google.protobuf.Timestamp\x12-\n\x0b\x61\x64min_state\x18\x02 \x01(\x0e\x32\x18.dmi.ComponentAdminState\x12+\n\noper_state\x18\x03 \x01(\x0e\x32\x17.dmi.ComponentOperState\x12-\n\x0busage_state\x18\x04 \x01(\x0e\x32\x18.dmi.ComponentUsageState\x12-\n\x0b\x61larm_state\x18\x05 \x01(\x0e\x32\x18.dmi.ComponentAlarmState\x12\x31\n\rstandby_state\x18\x06 \x01(\x0e\x32\x1a.dmi.ComponentStandbyState\"\x90\x02\n\x13\x43omponentSensorData\x12\r\n\x05value\x18\x01 \x01(\x05\x12 \n\x04type\x18\x02 \x01(\x0e\x32\x12.dmi.DataValueType\x12\x1e\n\x05scale\x18\x03 \x01(\x0e\x32\x0f.dmi.ValueScale\x12\x11\n\tprecision\x18\x04 \x01(\x05\x12!\n\x06status\x18\x05 \x01(\x0e\x32\x11.dmi.SensorStatus\x12\x15\n\runits_display\x18\x06 \x01(\t\x12-\n\ttimestamp\x18\x07 \x01(\x0b\x32\x1a.google.protobuf.Timestamp\x12\x19\n\x11value_update_rate\x18\x08 \x01(\r\x12\x11\n\tdata_type\x18\t \x01(\t\"\xe1\x05\n\x17PortComponentAttributes\x12\x42\n\x0e\x63onnector_type\x18\x01 \x01(\x0e\x32*.dmi.PortComponentAttributes.ConnectorType\x12\x31\n\x05speed\x18\x02 \x01(\x0e\x32\".dmi.PortComponentAttributes.Speed\x12\x37\n\x08protocol\x18\x03 \x01(\x0e\x32%.dmi.PortComponentAttributes.Protocol\x12\x16\n\x0ephysical_label\x18\x04 \x01(\t\x12\x15\n\rmapping_label\x18\x05 \x01(\t\x12\'\n\rpon_id_config\x18\x06 \x01(\x0b\x32\x10.dmi.PonIdConfig\x12\x1d\n\x15speed_autonegotiation\x18\x07 \x01(\x08\"p\n\rConnectorType\x12\x1c\n\x18\x43ONNECTOR_TYPE_UNDEFINED\x10\x00\x12\x08\n\x04RJ45\x10\x01\x12\x0c\n\x08\x46IBER_LC\x10\x02\x12\x0f\n\x0b\x46IBER_SC_PC\x10\x03\x12\r\n\tFIBER_MPO\x10\x04\x12\t\n\x05RS232\x10\x05\"\xae\x01\n\x05Speed\x12\x13\n\x0fSPEED_UNDEFINED\x10\x00\x12\x0b\n\x07\x44YNAMIC\x10\x01\x12\r\n\tGIGABIT_1\x10\x02\x12\x0e\n\nGIGABIT_10\x10\x03\x12\x0e\n\nGIGABIT_25\x10\x04\x12\x0e\n\nGIGABIT_40\x10\x05\x12\x0f\n\x0bGIGABIT_100\x10\x06\x12\x0f\n\x0bGIGABIT_400\x10\x07\x12\x10\n\x0cMEGABIT_2500\x10\x08\x12\x10\n\x0cMEGABIT_1250\x10\t\"|\n\x08Protocol\x12\x16\n\x12PROTOCOL_UNDEFINED\x10\x00\x12\x0c\n\x08\x45THERNET\x10\x01\x12\x08\n\x04GPON\x10\x02\x12\t\n\x05XGPON\x10\x03\x12\n\n\x06XGSPON\x10\x04\x12\t\n\x05GFAST\x10\x05\x12\n\n\x06SERIAL\x10\x06\x12\x08\n\x04\x45PON\x10\x07\x12\x08\n\x04\x42ITS\x10\x08\"H\n\x1dPortComponentChangeAttributes\x12\'\n\rpon_id_config\x18\x01 \x01(\x0b\x32\x10.dmi.PonIdConfig\"P\n$TransceiverComponentChangeAttributes\x12(\n\ntrans_type\x18\x01 \x01(\x0e\x32\x14.dmi.TransceiverType\"B\n\x0bPonIdConfig\x12\x0e\n\x06pon_id\x18\x01 \x01(\x0c\x12#\n\x1bpon_id_transmit_periodicity\x18\x02 \x01(\r\"6\n\x1c\x43ontainerComponentAttributes\x12\x16\n\x0ephysical_label\x18\x01 \x01(\t\"\xb3\x01\n\x16PsuComponentAttributes\x12G\n\x11supported_voltage\x18\x01 \x01(\x0e\x32,.dmi.PsuComponentAttributes.SupportedVoltage\"P\n\x10SupportedVoltage\x12\x1f\n\x1bSUPPORTED_VOLTAGE_UNDEFINED\x10\x00\x12\x07\n\x03V48\x10\x01\x12\x08\n\x04V230\x10\x02\x12\x08\n\x04V115\x10\x03\"\xab\x04\n\x1fTransceiverComponentsAttributes\x12\x44\n\x0b\x66orm_factor\x18\x01 \x01(\x0e\x32/.dmi.TransceiverComponentsAttributes.FormFactor\x12(\n\ntrans_type\x18\x02 \x01(\x0e\x32\x14.dmi.TransceiverType\x12\x14\n\x0cmax_distance\x18\x03 \x01(\r\x12+\n\x12max_distance_scale\x18\x04 \x01(\x0e\x32\x0f.dmi.ValueScale\x12\x15\n\rrx_wavelength\x18\x05 \x03(\r\x12\x15\n\rtx_wavelength\x18\x06 \x03(\r\x12)\n\x10wavelength_scale\x18\x07 \x01(\x0e\x32\x0f.dmi.ValueScale\x12\x10\n\x08tx_power\x18\x08 \x03(\x05\x12\'\n\x0etx_power_scale\x18\t \x01(\x0e\x32\x0f.dmi.ValueScale\"\xc0\x01\n\nFormFactor\x12\x17\n\x13\x46ORM_FACTOR_UNKNOWN\x10\x00\x12\x08\n\x04QSFP\x10\x01\x12\r\n\tQSFP_PLUS\x10\x02\x12\n\n\x06QSFP28\x10\x03\x12\x07\n\x03SFP\x10\x04\x12\x0c\n\x08SFP_PLUS\x10\x05\x12\x07\n\x03XFP\x10\x06\x12\x08\n\x04\x43\x46P4\x10\x07\x12\x08\n\x04\x43\x46P2\x10\x08\x12\x08\n\x04\x43PAK\x10\t\x12\x06\n\x02X2\x10\n\x12\t\n\x05OTHER\x10\x0b\x12\x07\n\x03\x43\x46P\x10\x0c\x12\x0c\n\x08\x43\x46P2_ACO\x10\r\x12\x0c\n\x08\x43\x46P2_DCO\x10\x0e\"\xe8\x05\n\tComponent\x12\x0c\n\x04name\x18\x01 \x01(\t\x12!\n\x05\x63lass\x18\x02 \x01(\x0e\x32\x12.dmi.ComponentType\x12\x13\n\x0b\x64\x65scription\x18\x03 \x01(\t\x12\x0e\n\x06parent\x18\x04 \x01(\t\x12\x16\n\x0eparent_rel_pos\x18\x05 \x01(\x05\x12 \n\x08\x63hildren\x18\x06 \x03(\x0b\x32\x0e.dmi.Component\x12\x14\n\x0chardware_rev\x18\x07 \x01(\t\x12\x14\n\x0c\x66irmware_rev\x18\x08 \x01(\t\x12\x14\n\x0csoftware_rev\x18\t \x01(\t\x12\x12\n\nserial_num\x18\n \x01(\t\x12\x10\n\x08mfg_name\x18\x0b \x01(\t\x12\x12\n\nmodel_name\x18\x0c \x01(\t\x12\r\n\x05\x61lias\x18\r \x01(\t\x12\x10\n\x08\x61sset_id\x18\x0e \x01(\t\x12\x0e\n\x06is_fru\x18\x0f \x01(\x08\x12,\n\x08mfg_date\x18\x10 \x01(\x0b\x32\x1a.google.protobuf.Timestamp\x12\x15\n\x03uri\x18\x11 \x01(\x0b\x32\x08.dmi.Uri\x12\x17\n\x04uuid\x18\x12 \x01(\x0b\x32\t.dmi.Uuid\x12\"\n\x05state\x18\x13 \x01(\x0b\x32\x13.dmi.ComponentState\x12-\n\x0bsensor_data\x18\x14 \x03(\x0b\x32\x18.dmi.ComponentSensorData\x12\x31\n\tport_attr\x18\x32 \x01(\x0b\x32\x1c.dmi.PortComponentAttributesH\x00\x12;\n\x0e\x63ontainer_attr\x18\x33 \x01(\x0b\x32!.dmi.ContainerComponentAttributesH\x00\x12/\n\x08psu_attr\x18\x34 \x01(\x0b\x32\x1b.dmi.PsuComponentAttributesH\x00\x12@\n\x10transceiver_attr\x18\x35 \x01(\x0b\x32$.dmi.TransceiverComponentsAttributesH\x00\x42\n\n\x08specific\"\x8a\x01\n\x08Hardware\x12/\n\x0blast_change\x18\x01 \x01(\x0b\x32\x1a.google.protobuf.Timestamp\x12\x1c\n\x04root\x18\x02 \x01(\x0b\x32\x0e.dmi.Component\x12/\n\x0blast_booted\x18\x03 \x01(\x0b\x32\x1a.google.protobuf.Timestamp\"\xe9\x02\n\x13ModifiableComponent\x12\x0c\n\x04name\x18\x01 \x01(\t\x12!\n\x05\x63lass\x18\x02 \x01(\x0e\x32\x12.dmi.ComponentType\x12\x1e\n\x06parent\x18\x03 \x01(\x0b\x32\x0e.dmi.Component\x12\x16\n\x0eparent_rel_pos\x18\x04 \x01(\x05\x12\r\n\x05\x61lias\x18\x05 \x01(\t\x12\x10\n\x08\x61sset_id\x18\x06 \x01(\t\x12\x15\n\x03uri\x18\x07 \x01(\x0b\x32\x08.dmi.Uri\x12-\n\x0b\x61\x64min_state\x18\x08 \x01(\x0e\x32\x18.dmi.ComponentAdminState\x12\x37\n\tport_attr\x18\x32 \x01(\x0b\x32\".dmi.PortComponentChangeAttributesH\x00\x12=\n\x08trx_attr\x18\x33 \x01(\x0b\x32).dmi.TransceiverComponentChangeAttributesH\x00\x42\n\n\x08specific*\xb4\x03\n\rComponentType\x12\x1c\n\x18\x43OMPONENT_TYPE_UNDEFINED\x10\x00\x12\x1a\n\x16\x43OMPONENT_TYPE_UNKNOWN\x10\x01\x12\x1a\n\x16\x43OMPONENT_TYPE_CHASSIS\x10\x02\x12\x1c\n\x18\x43OMPONENT_TYPE_BACKPLANE\x10\x03\x12\x1c\n\x18\x43OMPONENT_TYPE_CONTAINER\x10\x04\x12\x1f\n\x1b\x43OMPONENT_TYPE_POWER_SUPPLY\x10\x05\x12\x16\n\x12\x43OMPONENT_TYPE_FAN\x10\x06\x12\x19\n\x15\x43OMPONENT_TYPE_SENSOR\x10\x07\x12\x19\n\x15\x43OMPONENT_TYPE_MODULE\x10\x08\x12\x17\n\x13\x43OMPONENT_TYPE_PORT\x10\t\x12\x16\n\x12\x43OMPONENT_TYPE_CPU\x10\n\x12\x1a\n\x16\x43OMPONENT_TYPE_BATTERY\x10\x0b\x12\x1a\n\x16\x43OMPONENT_TYPE_STORAGE\x10\x0c\x12\x19\n\x15\x43OMPONENT_TYPE_MEMORY\x10\r\x12\x1e\n\x1a\x43OMPONENT_TYPE_TRANSCEIVER\x10\x0e*\xb3\x01\n\x13\x43omponentAdminState\x12\x1e\n\x1a\x43OMP_ADMIN_STATE_UNDEFINED\x10\x00\x12\x1c\n\x18\x43OMP_ADMIN_STATE_UNKNOWN\x10\x01\x12\x1b\n\x17\x43OMP_ADMIN_STATE_LOCKED\x10\x02\x12\"\n\x1e\x43OMP_ADMIN_STATE_SHUTTING_DOWN\x10\x03\x12\x1d\n\x19\x43OMP_ADMIN_STATE_UNLOCKED\x10\x04*\xa8\x01\n\x12\x43omponentOperState\x12\x1d\n\x19\x43OMP_OPER_STATE_UNDEFINED\x10\x00\x12\x1b\n\x17\x43OMP_OPER_STATE_UNKNOWN\x10\x01\x12\x1c\n\x18\x43OMP_OPER_STATE_DISABLED\x10\x02\x12\x1b\n\x17\x43OMP_OPER_STATE_ENABLED\x10\x03\x12\x1b\n\x17\x43OMP_OPER_STATE_TESTING\x10\x04*\xa6\x01\n\x13\x43omponentUsageState\x12\x1e\n\x1a\x43OMP_USAGE_STATE_UNDEFINED\x10\x00\x12\x1c\n\x18\x43OMP_USAGE_STATE_UNKNOWN\x10\x01\x12\x19\n\x15\x43OMP_USAGE_STATE_IDLE\x10\x02\x12\x1b\n\x17\x43OMP_USAGE_STATE_ACTIVE\x10\x03\x12\x19\n\x15\x43OMP_USAGE_STATE_BUSY\x10\x04*\x8f\x02\n\x13\x43omponentAlarmState\x12\x1e\n\x1a\x43OMP_ALARM_STATE_UNDEFINED\x10\x00\x12\x1c\n\x18\x43OMP_ALARM_STATE_UNKNOWN\x10\x01\x12!\n\x1d\x43OMP_ALARM_STATE_UNDER_REPAIR\x10\x02\x12\x1d\n\x19\x43OMP_ALARM_STATE_CRITICAL\x10\x03\x12\x1a\n\x16\x43OMP_ALARM_STATE_MAJOR\x10\x04\x12\x1a\n\x16\x43OMP_ALARM_STATE_MINOR\x10\x05\x12\x1c\n\x18\x43OMP_ALARM_STATE_WARNING\x10\x06\x12\"\n\x1e\x43OMP_ALARM_STATE_INDETERMINATE\x10\x07*\xbc\x01\n\x15\x43omponentStandbyState\x12 \n\x1c\x43OMP_STANDBY_STATE_UNDEFINED\x10\x00\x12\x1e\n\x1a\x43OMP_STANDBY_STATE_UNKNOWN\x10\x01\x12\x1a\n\x16\x43OMP_STANDBY_STATE_HOT\x10\x02\x12\x1b\n\x17\x43OMP_STANDBY_STATE_COLD\x10\x03\x12(\n$COMP_STANDBY_STATE_PROVIDING_SERVICE\x10\x04*\x9d\x03\n\rDataValueType\x12\x18\n\x14VALUE_TYPE_UNDEFINED\x10\x00\x12\x14\n\x10VALUE_TYPE_OTHER\x10\x01\x12\x16\n\x12VALUE_TYPE_UNKNOWN\x10\x02\x12\x17\n\x13VALUE_TYPE_VOLTS_AC\x10\x03\x12\x17\n\x13VALUE_TYPE_VOLTS_DC\x10\x04\x12\x16\n\x12VALUE_TYPE_AMPERES\x10\x05\x12\x14\n\x10VALUE_TYPE_WATTS\x10\x06\x12\x14\n\x10VALUE_TYPE_HERTZ\x10\x07\x12\x16\n\x12VALUE_TYPE_CELSIUS\x10\x08\x12\x19\n\x15VALUE_TYPE_PERCENT_RH\x10\t\x12\x12\n\x0eVALUE_TYPE_RPM\x10\n\x12\x12\n\x0eVALUE_TYPE_CMM\x10\x0b\x12\x1a\n\x16VALUE_TYPE_TRUTH_VALUE\x10\x0c\x12\x16\n\x12VALUE_TYPE_PERCENT\x10\r\x12\x15\n\x11VALUE_TYPE_METERS\x10\x0e\x12\x14\n\x10VALUE_TYPE_BYTES\x10\x0f\x12\x12\n\x0eVALUE_TYPE_DBM\x10\x10*\xa4\x03\n\nValueScale\x12\x19\n\x15VALUE_SCALE_UNDEFINED\x10\x00\x12\x15\n\x11VALUE_SCALE_YOCTO\x10\x01\x12\x15\n\x11VALUE_SCALE_ZEPTO\x10\x02\x12\x14\n\x10VALUE_SCALE_ATTO\x10\x03\x12\x15\n\x11VALUE_SCALE_FEMTO\x10\x04\x12\x14\n\x10VALUE_SCALE_PICO\x10\x05\x12\x14\n\x10VALUE_SCALE_NANO\x10\x06\x12\x15\n\x11VALUE_SCALE_MICRO\x10\x07\x12\x15\n\x11VALUE_SCALE_MILLI\x10\x08\x12\x15\n\x11VALUE_SCALE_UNITS\x10\t\x12\x14\n\x10VALUE_SCALE_KILO\x10\n\x12\x14\n\x10VALUE_SCALE_MEGA\x10\x0b\x12\x14\n\x10VALUE_SCALE_GIGA\x10\x0c\x12\x14\n\x10VALUE_SCALE_TERA\x10\r\x12\x14\n\x10VALUE_SCALE_PETA\x10\x0e\x12\x13\n\x0fVALUE_SCALE_EXA\x10\x0f\x12\x15\n\x11VALUE_SCALE_ZETTA\x10\x10\x12\x15\n\x11VALUE_SCALE_YOTTA\x10\x11*\x82\x01\n\x0cSensorStatus\x12\x1b\n\x17SENSOR_STATUS_UNDEFINED\x10\x00\x12\x14\n\x10SENSOR_STATUS_OK\x10\x01\x12\x1d\n\x19SENSOR_STATUS_UNAVAILABLE\x10\x02\x12 \n\x1cSENSOR_STATUS_NONOPERATIONAL\x10\x03*\xa4\x01\n\x0fTransceiverType\x12\x12\n\x0eTYPE_UNDEFINED\x10\x00\x12\x0c\n\x08\x45THERNET\x10\x01\x12\x08\n\x04GPON\x10\x02\x12\t\n\x05XGPON\x10\x03\x12\n\n\x06XGSPON\x10\x04\x12\x08\n\x04\x43PON\x10\x05\x12\x0b\n\x07NG_PON2\x10\x06\x12\x08\n\x04\x45PON\x10\x07\x12\x15\n\x11\x43OMBO_GPON_XGSPON\x10\x08\x12\x16\n\x11TYPE_NOT_DETECTED\x10\xff\x01\x42;Z9github.com/opencord/device-management-interface/v3/go/dmib\x06proto3')
+DESCRIPTOR = _descriptor_pool.Default().AddSerializedFile(b'\n\x0c\x64mi/hw.proto\x12\x03\x64mi\x1a\x1fgoogle/protobuf/timestamp.proto\"\x14\n\x04Uuid\x12\x0c\n\x04uuid\x18\x01 \x01(\t\"%\n\nHardwareID\x12\x17\n\x04uuid\x18\x01 \x01(\x0b\x32\t.dmi.Uuid\"\x12\n\x03Uri\x12\x0b\n\x03uri\x18\x01 \x01(\t\"\xb5\x02\n\x0e\x43omponentState\x12\x36\n\x12state_last_changed\x18\x01 \x01(\x0b\x32\x1a.google.protobuf.Timestamp\x12-\n\x0b\x61\x64min_state\x18\x02 \x01(\x0e\x32\x18.dmi.ComponentAdminState\x12+\n\noper_state\x18\x03 \x01(\x0e\x32\x17.dmi.ComponentOperState\x12-\n\x0busage_state\x18\x04 \x01(\x0e\x32\x18.dmi.ComponentUsageState\x12-\n\x0b\x61larm_state\x18\x05 \x01(\x0e\x32\x18.dmi.ComponentAlarmState\x12\x31\n\rstandby_state\x18\x06 \x01(\x0e\x32\x1a.dmi.ComponentStandbyState\"\x90\x02\n\x13\x43omponentSensorData\x12\r\n\x05value\x18\x01 \x01(\x05\x12 \n\x04type\x18\x02 \x01(\x0e\x32\x12.dmi.DataValueType\x12\x1e\n\x05scale\x18\x03 \x01(\x0e\x32\x0f.dmi.ValueScale\x12\x11\n\tprecision\x18\x04 \x01(\x05\x12!\n\x06status\x18\x05 \x01(\x0e\x32\x11.dmi.SensorStatus\x12\x15\n\runits_display\x18\x06 \x01(\t\x12-\n\ttimestamp\x18\x07 \x01(\x0b\x32\x1a.google.protobuf.Timestamp\x12\x19\n\x11value_update_rate\x18\x08 \x01(\r\x12\x11\n\tdata_type\x18\t \x01(\t\"\x85\x06\n\x17PortComponentAttributes\x12\x42\n\x0e\x63onnector_type\x18\x01 \x01(\x0e\x32*.dmi.PortComponentAttributes.ConnectorType\x12\x31\n\x05speed\x18\x02 \x01(\x0e\x32\".dmi.PortComponentAttributes.Speed\x12\x37\n\x08protocol\x18\x03 \x01(\x0e\x32%.dmi.PortComponentAttributes.Protocol\x12\x16\n\x0ephysical_label\x18\x04 \x01(\t\x12\x15\n\rmapping_label\x18\x05 \x01(\t\x12\'\n\rpon_id_config\x18\x06 \x01(\x0b\x32\x10.dmi.PonIdConfig\x12\x1d\n\x15speed_autonegotiation\x18\x07 \x01(\x08\x12\"\n\x08\x64istance\x18\x08 \x01(\x0b\x32\x10.dmi.PonDistance\"p\n\rConnectorType\x12\x1c\n\x18\x43ONNECTOR_TYPE_UNDEFINED\x10\x00\x12\x08\n\x04RJ45\x10\x01\x12\x0c\n\x08\x46IBER_LC\x10\x02\x12\x0f\n\x0b\x46IBER_SC_PC\x10\x03\x12\r\n\tFIBER_MPO\x10\x04\x12\t\n\x05RS232\x10\x05\"\xae\x01\n\x05Speed\x12\x13\n\x0fSPEED_UNDEFINED\x10\x00\x12\x0b\n\x07\x44YNAMIC\x10\x01\x12\r\n\tGIGABIT_1\x10\x02\x12\x0e\n\nGIGABIT_10\x10\x03\x12\x0e\n\nGIGABIT_25\x10\x04\x12\x0e\n\nGIGABIT_40\x10\x05\x12\x0f\n\x0bGIGABIT_100\x10\x06\x12\x0f\n\x0bGIGABIT_400\x10\x07\x12\x10\n\x0cMEGABIT_2500\x10\x08\x12\x10\n\x0cMEGABIT_1250\x10\t\"|\n\x08Protocol\x12\x16\n\x12PROTOCOL_UNDEFINED\x10\x00\x12\x0c\n\x08\x45THERNET\x10\x01\x12\x08\n\x04GPON\x10\x02\x12\t\n\x05XGPON\x10\x03\x12\n\n\x06XGSPON\x10\x04\x12\t\n\x05GFAST\x10\x05\x12\n\n\x06SERIAL\x10\x06\x12\x08\n\x04\x45PON\x10\x07\x12\x08\n\x04\x42ITS\x10\x08\"F\n\x0bPonDistance\x12\x14\n\x0cmax_distance\x18\x01 \x01(\r\x12!\n\x19max_differential_distance\x18\x02 \x01(\r\"l\n\x1dPortComponentChangeAttributes\x12\'\n\rpon_id_config\x18\x01 \x01(\x0b\x32\x10.dmi.PonIdConfig\x12\"\n\x08\x64istance\x18\x02 \x01(\x0b\x32\x10.dmi.PonDistance\"P\n$TransceiverComponentChangeAttributes\x12(\n\ntrans_type\x18\x01 \x01(\x0e\x32\x14.dmi.TransceiverType\"B\n\x0bPonIdConfig\x12\x0e\n\x06pon_id\x18\x01 \x01(\x0c\x12#\n\x1bpon_id_transmit_periodicity\x18\x02 \x01(\r\"6\n\x1c\x43ontainerComponentAttributes\x12\x16\n\x0ephysical_label\x18\x01 \x01(\t\"\xb3\x01\n\x16PsuComponentAttributes\x12G\n\x11supported_voltage\x18\x01 \x01(\x0e\x32,.dmi.PsuComponentAttributes.SupportedVoltage\"P\n\x10SupportedVoltage\x12\x1f\n\x1bSUPPORTED_VOLTAGE_UNDEFINED\x10\x00\x12\x07\n\x03V48\x10\x01\x12\x08\n\x04V230\x10\x02\x12\x08\n\x04V115\x10\x03\"\xab\x04\n\x1fTransceiverComponentsAttributes\x12\x44\n\x0b\x66orm_factor\x18\x01 \x01(\x0e\x32/.dmi.TransceiverComponentsAttributes.FormFactor\x12(\n\ntrans_type\x18\x02 \x01(\x0e\x32\x14.dmi.TransceiverType\x12\x14\n\x0cmax_distance\x18\x03 \x01(\r\x12+\n\x12max_distance_scale\x18\x04 \x01(\x0e\x32\x0f.dmi.ValueScale\x12\x15\n\rrx_wavelength\x18\x05 \x03(\r\x12\x15\n\rtx_wavelength\x18\x06 \x03(\r\x12)\n\x10wavelength_scale\x18\x07 \x01(\x0e\x32\x0f.dmi.ValueScale\x12\x10\n\x08tx_power\x18\x08 \x03(\x05\x12\'\n\x0etx_power_scale\x18\t \x01(\x0e\x32\x0f.dmi.ValueScale\"\xc0\x01\n\nFormFactor\x12\x17\n\x13\x46ORM_FACTOR_UNKNOWN\x10\x00\x12\x08\n\x04QSFP\x10\x01\x12\r\n\tQSFP_PLUS\x10\x02\x12\n\n\x06QSFP28\x10\x03\x12\x07\n\x03SFP\x10\x04\x12\x0c\n\x08SFP_PLUS\x10\x05\x12\x07\n\x03XFP\x10\x06\x12\x08\n\x04\x43\x46P4\x10\x07\x12\x08\n\x04\x43\x46P2\x10\x08\x12\x08\n\x04\x43PAK\x10\t\x12\x06\n\x02X2\x10\n\x12\t\n\x05OTHER\x10\x0b\x12\x07\n\x03\x43\x46P\x10\x0c\x12\x0c\n\x08\x43\x46P2_ACO\x10\r\x12\x0c\n\x08\x43\x46P2_DCO\x10\x0e\"\xe8\x05\n\tComponent\x12\x0c\n\x04name\x18\x01 \x01(\t\x12!\n\x05\x63lass\x18\x02 \x01(\x0e\x32\x12.dmi.ComponentType\x12\x13\n\x0b\x64\x65scription\x18\x03 \x01(\t\x12\x0e\n\x06parent\x18\x04 \x01(\t\x12\x16\n\x0eparent_rel_pos\x18\x05 \x01(\x05\x12 \n\x08\x63hildren\x18\x06 \x03(\x0b\x32\x0e.dmi.Component\x12\x14\n\x0chardware_rev\x18\x07 \x01(\t\x12\x14\n\x0c\x66irmware_rev\x18\x08 \x01(\t\x12\x14\n\x0csoftware_rev\x18\t \x01(\t\x12\x12\n\nserial_num\x18\n \x01(\t\x12\x10\n\x08mfg_name\x18\x0b \x01(\t\x12\x12\n\nmodel_name\x18\x0c \x01(\t\x12\r\n\x05\x61lias\x18\r \x01(\t\x12\x10\n\x08\x61sset_id\x18\x0e \x01(\t\x12\x0e\n\x06is_fru\x18\x0f \x01(\x08\x12,\n\x08mfg_date\x18\x10 \x01(\x0b\x32\x1a.google.protobuf.Timestamp\x12\x15\n\x03uri\x18\x11 \x01(\x0b\x32\x08.dmi.Uri\x12\x17\n\x04uuid\x18\x12 \x01(\x0b\x32\t.dmi.Uuid\x12\"\n\x05state\x18\x13 \x01(\x0b\x32\x13.dmi.ComponentState\x12-\n\x0bsensor_data\x18\x14 \x03(\x0b\x32\x18.dmi.ComponentSensorData\x12\x31\n\tport_attr\x18\x32 \x01(\x0b\x32\x1c.dmi.PortComponentAttributesH\x00\x12;\n\x0e\x63ontainer_attr\x18\x33 \x01(\x0b\x32!.dmi.ContainerComponentAttributesH\x00\x12/\n\x08psu_attr\x18\x34 \x01(\x0b\x32\x1b.dmi.PsuComponentAttributesH\x00\x12@\n\x10transceiver_attr\x18\x35 \x01(\x0b\x32$.dmi.TransceiverComponentsAttributesH\x00\x42\n\n\x08specific\"\x8a\x01\n\x08Hardware\x12/\n\x0blast_change\x18\x01 \x01(\x0b\x32\x1a.google.protobuf.Timestamp\x12\x1c\n\x04root\x18\x02 \x01(\x0b\x32\x0e.dmi.Component\x12/\n\x0blast_booted\x18\x03 \x01(\x0b\x32\x1a.google.protobuf.Timestamp\"\xe9\x02\n\x13ModifiableComponent\x12\x0c\n\x04name\x18\x01 \x01(\t\x12!\n\x05\x63lass\x18\x02 \x01(\x0e\x32\x12.dmi.ComponentType\x12\x1e\n\x06parent\x18\x03 \x01(\x0b\x32\x0e.dmi.Component\x12\x16\n\x0eparent_rel_pos\x18\x04 \x01(\x05\x12\r\n\x05\x61lias\x18\x05 \x01(\t\x12\x10\n\x08\x61sset_id\x18\x06 \x01(\t\x12\x15\n\x03uri\x18\x07 \x01(\x0b\x32\x08.dmi.Uri\x12-\n\x0b\x61\x64min_state\x18\x08 \x01(\x0e\x32\x18.dmi.ComponentAdminState\x12\x37\n\tport_attr\x18\x32 \x01(\x0b\x32\".dmi.PortComponentChangeAttributesH\x00\x12=\n\x08trx_attr\x18\x33 \x01(\x0b\x32).dmi.TransceiverComponentChangeAttributesH\x00\x42\n\n\x08specific*\xb4\x03\n\rComponentType\x12\x1c\n\x18\x43OMPONENT_TYPE_UNDEFINED\x10\x00\x12\x1a\n\x16\x43OMPONENT_TYPE_UNKNOWN\x10\x01\x12\x1a\n\x16\x43OMPONENT_TYPE_CHASSIS\x10\x02\x12\x1c\n\x18\x43OMPONENT_TYPE_BACKPLANE\x10\x03\x12\x1c\n\x18\x43OMPONENT_TYPE_CONTAINER\x10\x04\x12\x1f\n\x1b\x43OMPONENT_TYPE_POWER_SUPPLY\x10\x05\x12\x16\n\x12\x43OMPONENT_TYPE_FAN\x10\x06\x12\x19\n\x15\x43OMPONENT_TYPE_SENSOR\x10\x07\x12\x19\n\x15\x43OMPONENT_TYPE_MODULE\x10\x08\x12\x17\n\x13\x43OMPONENT_TYPE_PORT\x10\t\x12\x16\n\x12\x43OMPONENT_TYPE_CPU\x10\n\x12\x1a\n\x16\x43OMPONENT_TYPE_BATTERY\x10\x0b\x12\x1a\n\x16\x43OMPONENT_TYPE_STORAGE\x10\x0c\x12\x19\n\x15\x43OMPONENT_TYPE_MEMORY\x10\r\x12\x1e\n\x1a\x43OMPONENT_TYPE_TRANSCEIVER\x10\x0e*\xb3\x01\n\x13\x43omponentAdminState\x12\x1e\n\x1a\x43OMP_ADMIN_STATE_UNDEFINED\x10\x00\x12\x1c\n\x18\x43OMP_ADMIN_STATE_UNKNOWN\x10\x01\x12\x1b\n\x17\x43OMP_ADMIN_STATE_LOCKED\x10\x02\x12\"\n\x1e\x43OMP_ADMIN_STATE_SHUTTING_DOWN\x10\x03\x12\x1d\n\x19\x43OMP_ADMIN_STATE_UNLOCKED\x10\x04*\xa8\x01\n\x12\x43omponentOperState\x12\x1d\n\x19\x43OMP_OPER_STATE_UNDEFINED\x10\x00\x12\x1b\n\x17\x43OMP_OPER_STATE_UNKNOWN\x10\x01\x12\x1c\n\x18\x43OMP_OPER_STATE_DISABLED\x10\x02\x12\x1b\n\x17\x43OMP_OPER_STATE_ENABLED\x10\x03\x12\x1b\n\x17\x43OMP_OPER_STATE_TESTING\x10\x04*\xa6\x01\n\x13\x43omponentUsageState\x12\x1e\n\x1a\x43OMP_USAGE_STATE_UNDEFINED\x10\x00\x12\x1c\n\x18\x43OMP_USAGE_STATE_UNKNOWN\x10\x01\x12\x19\n\x15\x43OMP_USAGE_STATE_IDLE\x10\x02\x12\x1b\n\x17\x43OMP_USAGE_STATE_ACTIVE\x10\x03\x12\x19\n\x15\x43OMP_USAGE_STATE_BUSY\x10\x04*\x8f\x02\n\x13\x43omponentAlarmState\x12\x1e\n\x1a\x43OMP_ALARM_STATE_UNDEFINED\x10\x00\x12\x1c\n\x18\x43OMP_ALARM_STATE_UNKNOWN\x10\x01\x12!\n\x1d\x43OMP_ALARM_STATE_UNDER_REPAIR\x10\x02\x12\x1d\n\x19\x43OMP_ALARM_STATE_CRITICAL\x10\x03\x12\x1a\n\x16\x43OMP_ALARM_STATE_MAJOR\x10\x04\x12\x1a\n\x16\x43OMP_ALARM_STATE_MINOR\x10\x05\x12\x1c\n\x18\x43OMP_ALARM_STATE_WARNING\x10\x06\x12\"\n\x1e\x43OMP_ALARM_STATE_INDETERMINATE\x10\x07*\xbc\x01\n\x15\x43omponentStandbyState\x12 \n\x1c\x43OMP_STANDBY_STATE_UNDEFINED\x10\x00\x12\x1e\n\x1a\x43OMP_STANDBY_STATE_UNKNOWN\x10\x01\x12\x1a\n\x16\x43OMP_STANDBY_STATE_HOT\x10\x02\x12\x1b\n\x17\x43OMP_STANDBY_STATE_COLD\x10\x03\x12(\n$COMP_STANDBY_STATE_PROVIDING_SERVICE\x10\x04*\x9d\x03\n\rDataValueType\x12\x18\n\x14VALUE_TYPE_UNDEFINED\x10\x00\x12\x14\n\x10VALUE_TYPE_OTHER\x10\x01\x12\x16\n\x12VALUE_TYPE_UNKNOWN\x10\x02\x12\x17\n\x13VALUE_TYPE_VOLTS_AC\x10\x03\x12\x17\n\x13VALUE_TYPE_VOLTS_DC\x10\x04\x12\x16\n\x12VALUE_TYPE_AMPERES\x10\x05\x12\x14\n\x10VALUE_TYPE_WATTS\x10\x06\x12\x14\n\x10VALUE_TYPE_HERTZ\x10\x07\x12\x16\n\x12VALUE_TYPE_CELSIUS\x10\x08\x12\x19\n\x15VALUE_TYPE_PERCENT_RH\x10\t\x12\x12\n\x0eVALUE_TYPE_RPM\x10\n\x12\x12\n\x0eVALUE_TYPE_CMM\x10\x0b\x12\x1a\n\x16VALUE_TYPE_TRUTH_VALUE\x10\x0c\x12\x16\n\x12VALUE_TYPE_PERCENT\x10\r\x12\x15\n\x11VALUE_TYPE_METERS\x10\x0e\x12\x14\n\x10VALUE_TYPE_BYTES\x10\x0f\x12\x12\n\x0eVALUE_TYPE_DBM\x10\x10*\xa4\x03\n\nValueScale\x12\x19\n\x15VALUE_SCALE_UNDEFINED\x10\x00\x12\x15\n\x11VALUE_SCALE_YOCTO\x10\x01\x12\x15\n\x11VALUE_SCALE_ZEPTO\x10\x02\x12\x14\n\x10VALUE_SCALE_ATTO\x10\x03\x12\x15\n\x11VALUE_SCALE_FEMTO\x10\x04\x12\x14\n\x10VALUE_SCALE_PICO\x10\x05\x12\x14\n\x10VALUE_SCALE_NANO\x10\x06\x12\x15\n\x11VALUE_SCALE_MICRO\x10\x07\x12\x15\n\x11VALUE_SCALE_MILLI\x10\x08\x12\x15\n\x11VALUE_SCALE_UNITS\x10\t\x12\x14\n\x10VALUE_SCALE_KILO\x10\n\x12\x14\n\x10VALUE_SCALE_MEGA\x10\x0b\x12\x14\n\x10VALUE_SCALE_GIGA\x10\x0c\x12\x14\n\x10VALUE_SCALE_TERA\x10\r\x12\x14\n\x10VALUE_SCALE_PETA\x10\x0e\x12\x13\n\x0fVALUE_SCALE_EXA\x10\x0f\x12\x15\n\x11VALUE_SCALE_ZETTA\x10\x10\x12\x15\n\x11VALUE_SCALE_YOTTA\x10\x11*\x82\x01\n\x0cSensorStatus\x12\x1b\n\x17SENSOR_STATUS_UNDEFINED\x10\x00\x12\x14\n\x10SENSOR_STATUS_OK\x10\x01\x12\x1d\n\x19SENSOR_STATUS_UNAVAILABLE\x10\x02\x12 \n\x1cSENSOR_STATUS_NONOPERATIONAL\x10\x03*\xa4\x01\n\x0fTransceiverType\x12\x12\n\x0eTYPE_UNDEFINED\x10\x00\x12\x0c\n\x08\x45THERNET\x10\x01\x12\x08\n\x04GPON\x10\x02\x12\t\n\x05XGPON\x10\x03\x12\n\n\x06XGSPON\x10\x04\x12\x08\n\x04\x43PON\x10\x05\x12\x0b\n\x07NG_PON2\x10\x06\x12\x08\n\x04\x45PON\x10\x07\x12\x15\n\x11\x43OMBO_GPON_XGSPON\x10\x08\x12\x16\n\x11TYPE_NOT_DETECTED\x10\xff\x01\x42;Z9github.com/opencord/device-management-interface/v3/go/dmib\x06proto3')
 
 _COMPONENTTYPE = DESCRIPTOR.enum_types_by_name['ComponentType']
 ComponentType = enum_type_wrapper.EnumTypeWrapper(_COMPONENTTYPE)
@@ -138,6 +138,7 @@
 _COMPONENTSTATE = DESCRIPTOR.message_types_by_name['ComponentState']
 _COMPONENTSENSORDATA = DESCRIPTOR.message_types_by_name['ComponentSensorData']
 _PORTCOMPONENTATTRIBUTES = DESCRIPTOR.message_types_by_name['PortComponentAttributes']
+_PONDISTANCE = DESCRIPTOR.message_types_by_name['PonDistance']
 _PORTCOMPONENTCHANGEATTRIBUTES = DESCRIPTOR.message_types_by_name['PortComponentChangeAttributes']
 _TRANSCEIVERCOMPONENTCHANGEATTRIBUTES = DESCRIPTOR.message_types_by_name['TransceiverComponentChangeAttributes']
 _PONIDCONFIG = DESCRIPTOR.message_types_by_name['PonIdConfig']
@@ -194,6 +195,13 @@
   })
 _sym_db.RegisterMessage(PortComponentAttributes)
 
+PonDistance = _reflection.GeneratedProtocolMessageType('PonDistance', (_message.Message,), {
+  'DESCRIPTOR' : _PONDISTANCE,
+  '__module__' : 'dmi.hw_pb2'
+  # @@protoc_insertion_point(class_scope:dmi.PonDistance)
+  })
+_sym_db.RegisterMessage(PonDistance)
+
 PortComponentChangeAttributes = _reflection.GeneratedProtocolMessageType('PortComponentChangeAttributes', (_message.Message,), {
   'DESCRIPTOR' : _PORTCOMPONENTCHANGEATTRIBUTES,
   '__module__' : 'dmi.hw_pb2'
@@ -261,26 +269,26 @@
 
   DESCRIPTOR._options = None
   DESCRIPTOR._serialized_options = b'Z9github.com/opencord/device-management-interface/v3/go/dmi'
-  _COMPONENTTYPE._serialized_start=3735
-  _COMPONENTTYPE._serialized_end=4171
-  _COMPONENTADMINSTATE._serialized_start=4174
-  _COMPONENTADMINSTATE._serialized_end=4353
-  _COMPONENTOPERSTATE._serialized_start=4356
-  _COMPONENTOPERSTATE._serialized_end=4524
-  _COMPONENTUSAGESTATE._serialized_start=4527
-  _COMPONENTUSAGESTATE._serialized_end=4693
-  _COMPONENTALARMSTATE._serialized_start=4696
-  _COMPONENTALARMSTATE._serialized_end=4967
-  _COMPONENTSTANDBYSTATE._serialized_start=4970
-  _COMPONENTSTANDBYSTATE._serialized_end=5158
-  _DATAVALUETYPE._serialized_start=5161
-  _DATAVALUETYPE._serialized_end=5574
-  _VALUESCALE._serialized_start=5577
-  _VALUESCALE._serialized_end=5997
-  _SENSORSTATUS._serialized_start=6000
-  _SENSORSTATUS._serialized_end=6130
-  _TRANSCEIVERTYPE._serialized_start=6133
-  _TRANSCEIVERTYPE._serialized_end=6297
+  _COMPONENTTYPE._serialized_start=3879
+  _COMPONENTTYPE._serialized_end=4315
+  _COMPONENTADMINSTATE._serialized_start=4318
+  _COMPONENTADMINSTATE._serialized_end=4497
+  _COMPONENTOPERSTATE._serialized_start=4500
+  _COMPONENTOPERSTATE._serialized_end=4668
+  _COMPONENTUSAGESTATE._serialized_start=4671
+  _COMPONENTUSAGESTATE._serialized_end=4837
+  _COMPONENTALARMSTATE._serialized_start=4840
+  _COMPONENTALARMSTATE._serialized_end=5111
+  _COMPONENTSTANDBYSTATE._serialized_start=5114
+  _COMPONENTSTANDBYSTATE._serialized_end=5302
+  _DATAVALUETYPE._serialized_start=5305
+  _DATAVALUETYPE._serialized_end=5718
+  _VALUESCALE._serialized_start=5721
+  _VALUESCALE._serialized_end=6141
+  _SENSORSTATUS._serialized_start=6144
+  _SENSORSTATUS._serialized_end=6274
+  _TRANSCEIVERTYPE._serialized_start=6277
+  _TRANSCEIVERTYPE._serialized_end=6441
   _UUID._serialized_start=54
   _UUID._serialized_end=74
   _HARDWAREID._serialized_start=76
@@ -292,33 +300,35 @@
   _COMPONENTSENSORDATA._serialized_start=448
   _COMPONENTSENSORDATA._serialized_end=720
   _PORTCOMPONENTATTRIBUTES._serialized_start=723
-  _PORTCOMPONENTATTRIBUTES._serialized_end=1460
-  _PORTCOMPONENTATTRIBUTES_CONNECTORTYPE._serialized_start=1045
-  _PORTCOMPONENTATTRIBUTES_CONNECTORTYPE._serialized_end=1157
-  _PORTCOMPONENTATTRIBUTES_SPEED._serialized_start=1160
-  _PORTCOMPONENTATTRIBUTES_SPEED._serialized_end=1334
-  _PORTCOMPONENTATTRIBUTES_PROTOCOL._serialized_start=1336
-  _PORTCOMPONENTATTRIBUTES_PROTOCOL._serialized_end=1460
-  _PORTCOMPONENTCHANGEATTRIBUTES._serialized_start=1462
-  _PORTCOMPONENTCHANGEATTRIBUTES._serialized_end=1534
-  _TRANSCEIVERCOMPONENTCHANGEATTRIBUTES._serialized_start=1536
-  _TRANSCEIVERCOMPONENTCHANGEATTRIBUTES._serialized_end=1616
-  _PONIDCONFIG._serialized_start=1618
-  _PONIDCONFIG._serialized_end=1684
-  _CONTAINERCOMPONENTATTRIBUTES._serialized_start=1686
-  _CONTAINERCOMPONENTATTRIBUTES._serialized_end=1740
-  _PSUCOMPONENTATTRIBUTES._serialized_start=1743
-  _PSUCOMPONENTATTRIBUTES._serialized_end=1922
-  _PSUCOMPONENTATTRIBUTES_SUPPORTEDVOLTAGE._serialized_start=1842
-  _PSUCOMPONENTATTRIBUTES_SUPPORTEDVOLTAGE._serialized_end=1922
-  _TRANSCEIVERCOMPONENTSATTRIBUTES._serialized_start=1925
-  _TRANSCEIVERCOMPONENTSATTRIBUTES._serialized_end=2480
-  _TRANSCEIVERCOMPONENTSATTRIBUTES_FORMFACTOR._serialized_start=2288
-  _TRANSCEIVERCOMPONENTSATTRIBUTES_FORMFACTOR._serialized_end=2480
-  _COMPONENT._serialized_start=2483
-  _COMPONENT._serialized_end=3227
-  _HARDWARE._serialized_start=3230
-  _HARDWARE._serialized_end=3368
-  _MODIFIABLECOMPONENT._serialized_start=3371
-  _MODIFIABLECOMPONENT._serialized_end=3732
+  _PORTCOMPONENTATTRIBUTES._serialized_end=1496
+  _PORTCOMPONENTATTRIBUTES_CONNECTORTYPE._serialized_start=1081
+  _PORTCOMPONENTATTRIBUTES_CONNECTORTYPE._serialized_end=1193
+  _PORTCOMPONENTATTRIBUTES_SPEED._serialized_start=1196
+  _PORTCOMPONENTATTRIBUTES_SPEED._serialized_end=1370
+  _PORTCOMPONENTATTRIBUTES_PROTOCOL._serialized_start=1372
+  _PORTCOMPONENTATTRIBUTES_PROTOCOL._serialized_end=1496
+  _PONDISTANCE._serialized_start=1498
+  _PONDISTANCE._serialized_end=1568
+  _PORTCOMPONENTCHANGEATTRIBUTES._serialized_start=1570
+  _PORTCOMPONENTCHANGEATTRIBUTES._serialized_end=1678
+  _TRANSCEIVERCOMPONENTCHANGEATTRIBUTES._serialized_start=1680
+  _TRANSCEIVERCOMPONENTCHANGEATTRIBUTES._serialized_end=1760
+  _PONIDCONFIG._serialized_start=1762
+  _PONIDCONFIG._serialized_end=1828
+  _CONTAINERCOMPONENTATTRIBUTES._serialized_start=1830
+  _CONTAINERCOMPONENTATTRIBUTES._serialized_end=1884
+  _PSUCOMPONENTATTRIBUTES._serialized_start=1887
+  _PSUCOMPONENTATTRIBUTES._serialized_end=2066
+  _PSUCOMPONENTATTRIBUTES_SUPPORTEDVOLTAGE._serialized_start=1986
+  _PSUCOMPONENTATTRIBUTES_SUPPORTEDVOLTAGE._serialized_end=2066
+  _TRANSCEIVERCOMPONENTSATTRIBUTES._serialized_start=2069
+  _TRANSCEIVERCOMPONENTSATTRIBUTES._serialized_end=2624
+  _TRANSCEIVERCOMPONENTSATTRIBUTES_FORMFACTOR._serialized_start=2432
+  _TRANSCEIVERCOMPONENTSATTRIBUTES_FORMFACTOR._serialized_end=2624
+  _COMPONENT._serialized_start=2627
+  _COMPONENT._serialized_end=3371
+  _HARDWARE._serialized_start=3374
+  _HARDWARE._serialized_end=3512
+  _MODIFIABLECOMPONENT._serialized_start=3515
+  _MODIFIABLECOMPONENT._serialized_end=3876
 # @@protoc_insertion_point(module_scope)