Generate cellular transmit power prefs from cellular and proximity sensor.

Add a proximity sensor topology for the existing proximity sensor
hardware topology, containing no fields, just representing the presence
of a proximity sensor (all existing proximity sensor topologies
represent sensor presence), allowing software config generation to
incorporate that information. Add an optional cellular field for dynamic
power reduction config, either with a GPIO or a setting to use modem
manager, as well as an optional bool for whether tablet mode should feed
into cellular power reduction decisions, defaulting to true for
convertibles and ignored for form factors not supporting tablet mode.

If a cellular topology has a dynamic power reduction config, generate
relevant prefs: enable set-cellular-transmit-power-for-proximity if a
proximity sensor is present; enable
set-cellular-transmit-power-for-tablet-mode if requested or defaulted to
true. If either of those prefs is enabled (and thus some form of
cellular dynamic power reduction is enabled), use the configured GPIO if
one is specified for set-cellular-transmit-power-dpr-gpio; otherwise,
enable use-modemmanager-for-dynamic-sar.

BUG=b:196188522
TEST=./run_py_unittests.sh

Cq-Depend: chrome-internal:4661918,chrome-internal:4662213,chrome-internal:4662233,chrome-internal:4662253
Cq-Depend: chrome-internal:4662214
Change-Id: I20445e1ff35c9dec54308c604059b195331c5d8d
Reviewed-on: https://chromium-review.googlesource.com/c/chromiumos/config/+/3161898
Reviewed-by: Andrew Lamb <andrewlamb@chromium.org>
Reviewed-by: Madhav <madhavadas@google.com>
Reviewed-by: Victor Ding <victording@chromium.org>
Commit-Queue: Sam McNally <sammc@chromium.org>
diff --git a/generated/descriptors.json b/generated/descriptors.json
index 3d1e181..6f5e7de 100644
--- a/generated/descriptors.json
+++ b/generated/descriptors.json
@@ -2674,6 +2674,14 @@
               "number": 36,
               "type": "TYPE_MESSAGE",
               "typeName": ".chromiumos.config.api.HardwareFeatures.PowerSupply"
+            },
+            {
+              "jsonName": "proximity",
+              "label": "LABEL_OPTIONAL",
+              "name": "proximity",
+              "number": 37,
+              "type": "TYPE_MESSAGE",
+              "typeName": ".chromiumos.config.api.HardwareFeatures.Proximity"
             }
           ],
           "name": "HardwareFeatures",
@@ -2797,9 +2805,53 @@
                   "name": "attach_apn_required",
                   "number": 4,
                   "type": "TYPE_BOOL"
+                },
+                {
+                  "jsonName": "dynamicPowerReductionConfig",
+                  "label": "LABEL_OPTIONAL",
+                  "name": "dynamic_power_reduction_config",
+                  "number": 5,
+                  "type": "TYPE_MESSAGE",
+                  "typeName": ".chromiumos.config.api.HardwareFeatures.Cellular.DynamicPowerReductionConfig"
                 }
               ],
-              "name": "Cellular"
+              "name": "Cellular",
+              "nestedType": [
+                {
+                  "field": [
+                    {
+                      "jsonName": "gpio",
+                      "label": "LABEL_OPTIONAL",
+                      "name": "gpio",
+                      "number": 1,
+                      "oneofIndex": 0,
+                      "type": "TYPE_UINT32"
+                    },
+                    {
+                      "jsonName": "modemManager",
+                      "label": "LABEL_OPTIONAL",
+                      "name": "modem_manager",
+                      "number": 2,
+                      "oneofIndex": 0,
+                      "type": "TYPE_BOOL"
+                    },
+                    {
+                      "jsonName": "tabletMode",
+                      "label": "LABEL_OPTIONAL",
+                      "name": "tablet_mode",
+                      "number": 3,
+                      "type": "TYPE_MESSAGE",
+                      "typeName": ".google.protobuf.BoolValue"
+                    }
+                  ],
+                  "name": "DynamicPowerReductionConfig",
+                  "oneofDecl": [
+                    {
+                      "name": "dynamic_power_reduction_config"
+                    }
+                  ]
+                }
+              ]
             },
             {
               "field": [
@@ -4100,6 +4152,9 @@
                 }
               ],
               "name": "PowerSupply"
+            },
+            {
+              "name": "Proximity"
             }
           ]
         }
diff --git a/go/api/topology.pb.go b/go/api/topology.pb.go
index 627d99c..408e102 100644
--- a/go/api/topology.pb.go
+++ b/go/api/topology.pb.go
@@ -1021,7 +1021,7 @@
 // an unspecified value and from the 0-value; this can be down with
 // messages or enums. Each field also defines how multiple values should be
 // combined.
-// NEXT TAG: 31
+// NEXT TAG: 38
 type HardwareFeatures struct {
 	// USB-C properties
 	UsbC *HardwareFeatures_UsbC `protobuf:"bytes,1,opt,name=usb_c,json=usbC,proto3" json:"usb_c,omitempty"`
@@ -1083,6 +1083,7 @@
 	Poe *HardwareFeatures_PoE `protobuf:"bytes,35,opt,name=poe,proto3" json:"poe,omitempty"`
 	// Power supply properties
 	PowerSupply          *HardwareFeatures_PowerSupply `protobuf:"bytes,36,opt,name=power_supply,json=powerSupply,proto3" json:"power_supply,omitempty"`
+	Proximity            *HardwareFeatures_Proximity   `protobuf:"bytes,37,opt,name=proximity,proto3" json:"proximity,omitempty"`
 	XXX_NoUnkeyedLiteral struct{}                      `json:"-"`
 	XXX_unrecognized     []byte                        `json:"-"`
 	XXX_sizecache        int32                         `json:"-"`
@@ -1365,6 +1366,13 @@
 	return nil
 }
 
+func (m *HardwareFeatures) GetProximity() *HardwareFeatures_Proximity {
+	if m != nil {
+		return m.Proximity
+	}
+	return nil
+}
+
 type HardwareFeatures_Count struct {
 	Value                uint32   `protobuf:"varint,1,opt,name=value,proto3" json:"value,omitempty"`
 	XXX_NoUnkeyedLiteral struct{} `json:"-"`
@@ -1554,10 +1562,12 @@
 	// Cellular type
 	Type HardwareFeatures_Cellular_CellularType `protobuf:"varint,3,opt,name=type,proto3,enum=chromiumos.config.api.HardwareFeatures_Cellular_CellularType" json:"type,omitempty"`
 	// bool to enable the cellular feature Attach APN.
-	AttachApnRequired    bool     `protobuf:"varint,4,opt,name=attach_apn_required,json=attachApnRequired,proto3" json:"attach_apn_required,omitempty"`
-	XXX_NoUnkeyedLiteral struct{} `json:"-"`
-	XXX_unrecognized     []byte   `json:"-"`
-	XXX_sizecache        int32    `json:"-"`
+	AttachApnRequired bool `protobuf:"varint,4,opt,name=attach_apn_required,json=attachApnRequired,proto3" json:"attach_apn_required,omitempty"`
+	// Optional config for dynamic power reduction control.
+	DynamicPowerReductionConfig *HardwareFeatures_Cellular_DynamicPowerReductionConfig `protobuf:"bytes,5,opt,name=dynamic_power_reduction_config,json=dynamicPowerReductionConfig,proto3" json:"dynamic_power_reduction_config,omitempty"`
+	XXX_NoUnkeyedLiteral        struct{}                                               `json:"-"`
+	XXX_unrecognized            []byte                                                 `json:"-"`
+	XXX_sizecache               int32                                                  `json:"-"`
 }
 
 func (m *HardwareFeatures_Cellular) Reset()         { *m = HardwareFeatures_Cellular{} }
@@ -1613,6 +1623,109 @@
 	return false
 }
 
+func (m *HardwareFeatures_Cellular) GetDynamicPowerReductionConfig() *HardwareFeatures_Cellular_DynamicPowerReductionConfig {
+	if m != nil {
+		return m.DynamicPowerReductionConfig
+	}
+	return nil
+}
+
+type HardwareFeatures_Cellular_DynamicPowerReductionConfig struct {
+	// Types that are valid to be assigned to DynamicPowerReductionConfig:
+	//	*HardwareFeatures_Cellular_DynamicPowerReductionConfig_Gpio
+	//	*HardwareFeatures_Cellular_DynamicPowerReductionConfig_ModemManager
+	DynamicPowerReductionConfig isHardwareFeatures_Cellular_DynamicPowerReductionConfig_DynamicPowerReductionConfig `protobuf_oneof:"dynamic_power_reduction_config"`
+	// Whether tablet mode should be a trigger for dynamic power reduction.
+	// If unset, the value will be true for convertibles.
+	TabletMode           *wrappers.BoolValue `protobuf:"bytes,3,opt,name=tablet_mode,json=tabletMode,proto3" json:"tablet_mode,omitempty"`
+	XXX_NoUnkeyedLiteral struct{}            `json:"-"`
+	XXX_unrecognized     []byte              `json:"-"`
+	XXX_sizecache        int32               `json:"-"`
+}
+
+func (m *HardwareFeatures_Cellular_DynamicPowerReductionConfig) Reset() {
+	*m = HardwareFeatures_Cellular_DynamicPowerReductionConfig{}
+}
+func (m *HardwareFeatures_Cellular_DynamicPowerReductionConfig) String() string {
+	return proto.CompactTextString(m)
+}
+func (*HardwareFeatures_Cellular_DynamicPowerReductionConfig) ProtoMessage() {}
+func (*HardwareFeatures_Cellular_DynamicPowerReductionConfig) Descriptor() ([]byte, []int) {
+	return fileDescriptor_9bdbf9c393c85c5f, []int{2, 3, 0}
+}
+
+func (m *HardwareFeatures_Cellular_DynamicPowerReductionConfig) XXX_Unmarshal(b []byte) error {
+	return xxx_messageInfo_HardwareFeatures_Cellular_DynamicPowerReductionConfig.Unmarshal(m, b)
+}
+func (m *HardwareFeatures_Cellular_DynamicPowerReductionConfig) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
+	return xxx_messageInfo_HardwareFeatures_Cellular_DynamicPowerReductionConfig.Marshal(b, m, deterministic)
+}
+func (m *HardwareFeatures_Cellular_DynamicPowerReductionConfig) XXX_Merge(src proto.Message) {
+	xxx_messageInfo_HardwareFeatures_Cellular_DynamicPowerReductionConfig.Merge(m, src)
+}
+func (m *HardwareFeatures_Cellular_DynamicPowerReductionConfig) XXX_Size() int {
+	return xxx_messageInfo_HardwareFeatures_Cellular_DynamicPowerReductionConfig.Size(m)
+}
+func (m *HardwareFeatures_Cellular_DynamicPowerReductionConfig) XXX_DiscardUnknown() {
+	xxx_messageInfo_HardwareFeatures_Cellular_DynamicPowerReductionConfig.DiscardUnknown(m)
+}
+
+var xxx_messageInfo_HardwareFeatures_Cellular_DynamicPowerReductionConfig proto.InternalMessageInfo
+
+type isHardwareFeatures_Cellular_DynamicPowerReductionConfig_DynamicPowerReductionConfig interface {
+	isHardwareFeatures_Cellular_DynamicPowerReductionConfig_DynamicPowerReductionConfig()
+}
+
+type HardwareFeatures_Cellular_DynamicPowerReductionConfig_Gpio struct {
+	Gpio uint32 `protobuf:"varint,1,opt,name=gpio,proto3,oneof"`
+}
+
+type HardwareFeatures_Cellular_DynamicPowerReductionConfig_ModemManager struct {
+	ModemManager bool `protobuf:"varint,2,opt,name=modem_manager,json=modemManager,proto3,oneof"`
+}
+
+func (*HardwareFeatures_Cellular_DynamicPowerReductionConfig_Gpio) isHardwareFeatures_Cellular_DynamicPowerReductionConfig_DynamicPowerReductionConfig() {
+}
+
+func (*HardwareFeatures_Cellular_DynamicPowerReductionConfig_ModemManager) isHardwareFeatures_Cellular_DynamicPowerReductionConfig_DynamicPowerReductionConfig() {
+}
+
+func (m *HardwareFeatures_Cellular_DynamicPowerReductionConfig) GetDynamicPowerReductionConfig() isHardwareFeatures_Cellular_DynamicPowerReductionConfig_DynamicPowerReductionConfig {
+	if m != nil {
+		return m.DynamicPowerReductionConfig
+	}
+	return nil
+}
+
+func (m *HardwareFeatures_Cellular_DynamicPowerReductionConfig) GetGpio() uint32 {
+	if x, ok := m.GetDynamicPowerReductionConfig().(*HardwareFeatures_Cellular_DynamicPowerReductionConfig_Gpio); ok {
+		return x.Gpio
+	}
+	return 0
+}
+
+func (m *HardwareFeatures_Cellular_DynamicPowerReductionConfig) GetModemManager() bool {
+	if x, ok := m.GetDynamicPowerReductionConfig().(*HardwareFeatures_Cellular_DynamicPowerReductionConfig_ModemManager); ok {
+		return x.ModemManager
+	}
+	return false
+}
+
+func (m *HardwareFeatures_Cellular_DynamicPowerReductionConfig) GetTabletMode() *wrappers.BoolValue {
+	if m != nil {
+		return m.TabletMode
+	}
+	return nil
+}
+
+// XXX_OneofWrappers is for the internal use of the proto package.
+func (*HardwareFeatures_Cellular_DynamicPowerReductionConfig) XXX_OneofWrappers() []interface{} {
+	return []interface{}{
+		(*HardwareFeatures_Cellular_DynamicPowerReductionConfig_Gpio)(nil),
+		(*HardwareFeatures_Cellular_DynamicPowerReductionConfig_ModemManager)(nil),
+	}
+}
+
 type HardwareFeatures_Hdmi struct {
 	// If native HDMI support is present on system.
 	Present              HardwareFeatures_Present `protobuf:"varint,1,opt,name=present,proto3,enum=chromiumos.config.api.HardwareFeatures_Present" json:"present,omitempty"`
@@ -3488,6 +3601,37 @@
 	return 0
 }
 
+type HardwareFeatures_Proximity struct {
+	XXX_NoUnkeyedLiteral struct{} `json:"-"`
+	XXX_unrecognized     []byte   `json:"-"`
+	XXX_sizecache        int32    `json:"-"`
+}
+
+func (m *HardwareFeatures_Proximity) Reset()         { *m = HardwareFeatures_Proximity{} }
+func (m *HardwareFeatures_Proximity) String() string { return proto.CompactTextString(m) }
+func (*HardwareFeatures_Proximity) ProtoMessage()    {}
+func (*HardwareFeatures_Proximity) Descriptor() ([]byte, []int) {
+	return fileDescriptor_9bdbf9c393c85c5f, []int{2, 36}
+}
+
+func (m *HardwareFeatures_Proximity) XXX_Unmarshal(b []byte) error {
+	return xxx_messageInfo_HardwareFeatures_Proximity.Unmarshal(m, b)
+}
+func (m *HardwareFeatures_Proximity) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
+	return xxx_messageInfo_HardwareFeatures_Proximity.Marshal(b, m, deterministic)
+}
+func (m *HardwareFeatures_Proximity) XXX_Merge(src proto.Message) {
+	xxx_messageInfo_HardwareFeatures_Proximity.Merge(m, src)
+}
+func (m *HardwareFeatures_Proximity) XXX_Size() int {
+	return xxx_messageInfo_HardwareFeatures_Proximity.Size(m)
+}
+func (m *HardwareFeatures_Proximity) XXX_DiscardUnknown() {
+	xxx_messageInfo_HardwareFeatures_Proximity.DiscardUnknown(m)
+}
+
+var xxx_messageInfo_HardwareFeatures_Proximity proto.InternalMessageInfo
+
 func init() {
 	proto.RegisterEnum("chromiumos.config.api.Topology_Type", Topology_Type_name, Topology_Type_value)
 	proto.RegisterEnum("chromiumos.config.api.Duration_Type", Duration_Type_name, Duration_Type_value)
@@ -3520,6 +3664,7 @@
 	proto.RegisterType((*HardwareFeatures_UsbC_Port)(nil), "chromiumos.config.api.HardwareFeatures.UsbC.Port")
 	proto.RegisterType((*HardwareFeatures_UsbA)(nil), "chromiumos.config.api.HardwareFeatures.UsbA")
 	proto.RegisterType((*HardwareFeatures_Cellular)(nil), "chromiumos.config.api.HardwareFeatures.Cellular")
+	proto.RegisterType((*HardwareFeatures_Cellular_DynamicPowerReductionConfig)(nil), "chromiumos.config.api.HardwareFeatures.Cellular.DynamicPowerReductionConfig")
 	proto.RegisterType((*HardwareFeatures_Hdmi)(nil), "chromiumos.config.api.HardwareFeatures.Hdmi")
 	proto.RegisterType((*HardwareFeatures_FirmwareConfiguration)(nil), "chromiumos.config.api.HardwareFeatures.FirmwareConfiguration")
 	proto.RegisterType((*HardwareFeatures_Audio)(nil), "chromiumos.config.api.HardwareFeatures.Audio")
@@ -3556,6 +3701,7 @@
 	proto.RegisterType((*HardwareFeatures_Hps)(nil), "chromiumos.config.api.HardwareFeatures.Hps")
 	proto.RegisterType((*HardwareFeatures_PoE)(nil), "chromiumos.config.api.HardwareFeatures.PoE")
 	proto.RegisterType((*HardwareFeatures_PowerSupply)(nil), "chromiumos.config.api.HardwareFeatures.PowerSupply")
+	proto.RegisterType((*HardwareFeatures_Proximity)(nil), "chromiumos.config.api.HardwareFeatures.Proximity")
 }
 
 func init() {
@@ -3563,275 +3709,284 @@
 }
 
 var fileDescriptor_9bdbf9c393c85c5f = []byte{
-	// 4310 bytes of a gzipped FileDescriptorProto
-	0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xb4, 0x5b, 0xcb, 0x73, 0xe3, 0xd8,
-	0x5a, 0xc7, 0x8f, 0x24, 0xf6, 0x67, 0x3b, 0x39, 0x39, 0x9d, 0xee, 0xf6, 0x78, 0xee, 0xcc, 0x34,
-	0x66, 0xa8, 0xdb, 0x75, 0xb9, 0xa4, 0x93, 0x74, 0xf7, 0x4c, 0x7a, 0x98, 0xb9, 0x5c, 0x45, 0x56,
-	0x62, 0x4f, 0xdb, 0x96, 0xfb, 0x48, 0x4e, 0x3a, 0x33, 0x53, 0xa8, 0x14, 0x49, 0x4e, 0x74, 0xdb,
-	0xb6, 0x84, 0x24, 0x77, 0x3a, 0xb0, 0x61, 0xc7, 0x82, 0x05, 0x4b, 0x1e, 0x55, 0xb7, 0xa0, 0x0a,
-	0xaa, 0x58, 0x52, 0x45, 0x41, 0x15, 0x77, 0x4d, 0x51, 0x05, 0x0b, 0xd8, 0xf0, 0x07, 0xc0, 0x82,
-	0x2a, 0xe0, 0xbf, 0xa0, 0xce, 0x43, 0xb2, 0x9c, 0x4e, 0xd3, 0xb6, 0x27, 0x6c, 0x12, 0x9d, 0xc7,
-	0xef, 0xa7, 0x73, 0xbe, 0xa3, 0xef, 0x9c, 0xef, 0x71, 0x0c, 0x9f, 0x5a, 0x17, 0x81, 0x37, 0x72,
-	0x27, 0x23, 0x2f, 0x7c, 0x64, 0x79, 0xe3, 0x81, 0x7b, 0xfe, 0xc8, 0xf4, 0xdd, 0x47, 0x91, 0xe7,
-	0x7b, 0x43, 0xef, 0xfc, 0x6a, 0xdb, 0x0f, 0xbc, 0xc8, 0xc3, 0x77, 0xa7, 0xbd, 0xb6, 0x79, 0xaf,
-	0x6d, 0xd3, 0x77, 0x6b, 0xbf, 0x7a, 0x33, 0xd8, 0xf2, 0x46, 0xbe, 0x37, 0x76, 0xc6, 0x11, 0x47,
-	0xd7, 0x3e, 0x3e, 0xf7, 0xbc, 0xf3, 0xa1, 0xf3, 0x88, 0x95, 0xce, 0x26, 0x83, 0x47, 0x97, 0x81,
-	0xe9, 0xfb, 0x4e, 0x10, 0xf2, 0xf6, 0xfa, 0xbf, 0xae, 0x42, 0x41, 0x17, 0x2f, 0xc4, 0xeb, 0x90,
-	0x75, 0xed, 0x6a, 0xe6, 0x41, 0xe6, 0x61, 0x91, 0x64, 0x5d, 0x1b, 0xef, 0x43, 0x3e, 0xba, 0xf2,
-	0x9d, 0x6a, 0xf6, 0x41, 0xe6, 0xe1, 0xfa, 0xde, 0xa7, 0xdb, 0x37, 0x8e, 0x64, 0x3b, 0x86, 0x6f,
-	0xeb, 0x57, 0xbe, 0x43, 0x18, 0x02, 0x13, 0x28, 0xd9, 0x4e, 0x68, 0x05, 0xae, 0x1f, 0xb9, 0xde,
-	0xb8, 0x9a, 0x7b, 0x90, 0x7b, 0x58, 0xda, 0xdb, 0x79, 0x1f, 0x41, 0x63, 0x0a, 0x51, 0xc6, 0x51,
-	0x70, 0x45, 0xd2, 0x24, 0x98, 0x00, 0xba, 0x30, 0x03, 0xfb, 0xd2, 0x0c, 0x1c, 0x63, 0xe0, 0x98,
-	0xd1, 0x24, 0x70, 0xaa, 0xf9, 0x07, 0x99, 0x87, 0xa5, 0xbd, 0x1f, 0xbe, 0x83, 0xb8, 0x29, 0xba,
-	0x1f, 0xf2, 0xde, 0x21, 0xd9, 0xb8, 0x98, 0xad, 0xa9, 0xfd, 0x04, 0xd0, 0xf5, 0x97, 0x62, 0x04,
-	0xb9, 0x57, 0xce, 0x95, 0x10, 0x03, 0x7d, 0xc4, 0x5b, 0xb0, 0xf2, 0xda, 0x1c, 0x4e, 0xb8, 0x20,
-	0x8a, 0x84, 0x17, 0xbe, 0xc8, 0xee, 0x67, 0xea, 0x7f, 0x98, 0x87, 0x3c, 0x9d, 0x36, 0x46, 0x50,
-	0xd6, 0x4f, 0x7b, 0x8a, 0xd1, 0xef, 0x3e, 0xef, 0xaa, 0x27, 0x5d, 0xf4, 0x4b, 0x18, 0x60, 0x55,
-	0x93, 0x89, 0xa2, 0x74, 0x51, 0x06, 0x6f, 0x40, 0xe9, 0x50, 0x25, 0x1d, 0xe3, 0x50, 0x92, 0x75,
-	0x95, 0xa0, 0x2c, 0x2e, 0xc2, 0x8a, 0xd4, 0x6f, 0xb4, 0x54, 0x94, 0x63, 0xfd, 0xf4, 0xd3, 0x76,
-	0x5f, 0x43, 0x79, 0x5c, 0x86, 0xc2, 0x73, 0xe5, 0xf4, 0x40, 0x95, 0x48, 0x03, 0xad, 0xe0, 0x12,
-	0xac, 0xe9, 0x4d, 0x85, 0x74, 0xa4, 0x36, 0x5a, 0xa5, 0xdd, 0x64, 0xa9, 0xa3, 0x10, 0x09, 0xad,
-	0xe1, 0x87, 0xf0, 0xa9, 0x24, 0xcb, 0x4a, 0x5b, 0x21, 0x6a, 0x47, 0xd1, 0x15, 0x62, 0x1c, 0x9d,
-	0x12, 0x55, 0x93, 0xd5, 0x9e, 0x62, 0x74, 0xa4, 0xa3, 0xae, 0xa2, 0xf3, 0x6a, 0x54, 0x60, 0x2f,
-	0x6e, 0x75, 0x8f, 0x14, 0xd2, 0x23, 0xad, 0xae, 0x8e, 0x8a, 0x78, 0x0b, 0x50, 0x8f, 0xa8, 0x2f,
-	0x5b, 0x9d, 0x96, 0x7e, 0x6a, 0x68, 0x4a, 0x57, 0x53, 0x09, 0x02, 0x8c, 0x61, 0xbd, 0x21, 0xf5,
-	0x8f, 0x9a, 0x94, 0x8b, 0xbf, 0xbd, 0x84, 0xab, 0xb0, 0xd5, 0x55, 0xbb, 0xc6, 0xb1, 0xda, 0x96,
-	0xf4, 0x56, 0x5b, 0x31, 0x34, 0x5d, 0x25, 0xd2, 0x91, 0x82, 0xca, 0x78, 0x0d, 0x72, 0x44, 0xea,
-	0xa0, 0x0a, 0x2e, 0x40, 0xfe, 0xa4, 0x75, 0xd8, 0x42, 0xeb, 0x94, 0x40, 0x56, 0xda, 0xed, 0x7e,
-	0x5b, 0x8a, 0x09, 0x36, 0x70, 0x05, 0x8a, 0x5a, 0xc3, 0x20, 0x8a, 0xd4, 0x50, 0x08, 0x42, 0xf8,
-	0x0e, 0x6c, 0x74, 0x54, 0x3a, 0x1f, 0xd6, 0x6e, 0xf4, 0xb5, 0x03, 0xb4, 0x49, 0xfb, 0x1c, 0xb4,
-	0xfb, 0x8a, 0xae, 0xaa, 0x7a, 0x13, 0x61, 0xbc, 0x0e, 0x70, 0x20, 0x11, 0xa2, 0xb4, 0xbf, 0x96,
-	0xe4, 0xe7, 0xe8, 0x0e, 0x95, 0x6a, 0x4f, 0x3d, 0xa1, 0x83, 0xea, 0xeb, 0xba, 0xda, 0x45, 0x5b,
-	0x78, 0x13, 0x2a, 0xc7, 0x6a, 0xbb, 0xdf, 0x51, 0xe2, 0xaa, 0xbb, 0x78, 0x15, 0xb2, 0x8a, 0x8c,
-	0xee, 0x51, 0x99, 0xea, 0x6a, 0x5f, 0x6e, 0xa2, 0xfb, 0x74, 0x84, 0x7a, 0xaf, 0x83, 0xaa, 0xb8,
-	0x06, 0xf7, 0x3a, 0x2d, 0x99, 0xa8, 0xbd, 0xa6, 0xda, 0x55, 0x8c, 0x4e, 0x5f, 0x57, 0x0c, 0xed,
-	0xa4, 0xa5, 0xcb, 0x4d, 0xf4, 0x01, 0x15, 0xef, 0x81, 0xa4, 0xeb, 0x0a, 0x39, 0x45, 0x35, 0x3a,
-	0x95, 0x66, 0xa3, 0xd3, 0x42, 0x1f, 0x52, 0xac, 0xa6, 0xca, 0xe8, 0x07, 0xf4, 0xa1, 0xd9, 0xd3,
-	0xd0, 0x47, 0x74, 0x14, 0x8d, 0x9e, 0x21, 0xab, 0xdd, 0x63, 0x85, 0x50, 0xb1, 0x7e, 0x4c, 0x9b,
-	0x7a, 0xaa, 0x82, 0x3e, 0x99, 0x0e, 0x50, 0xeb, 0xf7, 0x7a, 0xed, 0x53, 0xf4, 0xa0, 0xfe, 0x77,
-	0x19, 0x28, 0x34, 0x26, 0x81, 0xc9, 0x3e, 0xd9, 0x58, 0x81, 0x32, 0xff, 0xa7, 0x02, 0xc5, 0xdd,
-	0xd3, 0x0a, 0x34, 0xf3, 0xc9, 0xad, 0x88, 0x4f, 0xae, 0x7e, 0xfa, 0xce, 0xaf, 0x0d, 0x41, 0xb9,
-	0xd3, 0x6a, 0xb7, 0x5b, 0x9a, 0x22, 0xab, 0xdd, 0x86, 0x86, 0x32, 0x74, 0x7a, 0x71, 0x21, 0x4b,
-	0x0b, 0x9d, 0x56, 0xb7, 0xaf, 0x2b, 0x1a, 0xca, 0x51, 0x41, 0x35, 0xd5, 0x3e, 0xa1, 0x1f, 0x5c,
-	0x01, 0xf2, 0x0d, 0xe9, 0x54, 0x43, 0x2b, 0xf5, 0x7f, 0x37, 0x01, 0x5d, 0xd7, 0x17, 0x2c, 0xc1,
-	0xca, 0x24, 0x3c, 0x33, 0x2c, 0x36, 0x81, 0xd2, 0xde, 0x8f, 0xe7, 0xd4, 0xb3, 0xed, 0x7e, 0x78,
-	0x26, 0x93, 0xfc, 0x24, 0x3c, 0x93, 0x63, 0x0a, 0x93, 0x4d, 0x64, 0x31, 0x0a, 0x89, 0x51, 0x48,
-	0xb8, 0x0d, 0x05, 0xcb, 0x19, 0x0e, 0x27, 0x43, 0x33, 0xa8, 0xe6, 0x18, 0xcb, 0xce, 0xbc, 0x2c,
-	0xb2, 0xc0, 0x91, 0x84, 0x01, 0xff, 0x14, 0xf2, 0x17, 0xf6, 0xc8, 0x15, 0x5b, 0xc7, 0xdc, 0xe3,
-	0x69, 0xda, 0x23, 0x97, 0x30, 0x24, 0xfe, 0x06, 0x8a, 0x83, 0x4b, 0x83, 0x77, 0xae, 0xae, 0x30,
-	0x9a, 0xaf, 0xe6, 0xa5, 0x39, 0x74, 0x83, 0x11, 0xad, 0x90, 0x59, 0x1f, 0xb1, 0xf0, 0xa4, 0x30,
-	0xb8, 0xe4, 0x15, 0x58, 0x86, 0x15, 0x73, 0x62, 0xbb, 0x5e, 0x75, 0x95, 0xf1, 0xfe, 0xfa, 0xbc,
-	0xbc, 0x12, 0x05, 0x11, 0x8e, 0xc5, 0x87, 0xb0, 0x6a, 0x99, 0x23, 0x27, 0x30, 0xab, 0x6b, 0x8c,
-	0x65, 0x7b, 0x6e, 0x71, 0x31, 0x14, 0x11, 0x68, 0xfc, 0x2d, 0x54, 0x4c, 0xcb, 0x72, 0x86, 0x4e,
-	0xe0, 0x8d, 0x9c, 0xc8, 0x09, 0xaa, 0x05, 0x46, 0xf7, 0x74, 0xee, 0x41, 0xa5, 0xc1, 0x64, 0x96,
-	0x0b, 0xab, 0x50, 0x3c, 0xbf, 0x0a, 0xbc, 0xd0, 0xf2, 0x7c, 0xa7, 0x5a, 0x64, 0xc4, 0xbb, 0xf3,
-	0x12, 0x1f, 0xc5, 0x40, 0x32, 0xe5, 0xc0, 0x2f, 0xa1, 0x3c, 0x32, 0xcf, 0xc7, 0x4e, 0x24, 0x06,
-	0x0b, 0x8c, 0xf3, 0xc9, 0xbc, 0x9c, 0x9d, 0x14, 0x96, 0xcc, 0x30, 0xe1, 0x63, 0x28, 0x0f, 0xdd,
-	0xf3, 0x8b, 0xc8, 0x08, 0x9d, 0x71, 0xe8, 0x05, 0xd5, 0x12, 0x63, 0x7e, 0x3c, 0x2f, 0x73, 0x9b,
-	0x62, 0x35, 0x06, 0x25, 0xa5, 0xe1, 0xb4, 0x40, 0xd7, 0x29, 0xb4, 0x02, 0xc7, 0x19, 0x57, 0xcb,
-	0x8b, 0xad, 0x93, 0xc6, 0x50, 0x44, 0xa0, 0xb1, 0x06, 0xa5, 0x81, 0x17, 0x8c, 0x8c, 0x81, 0x69,
-	0x45, 0x5e, 0x50, 0xad, 0x30, 0xb2, 0xbd, 0xb9, 0x3f, 0x49, 0x2f, 0x18, 0x1d, 0x32, 0x24, 0x81,
-	0x41, 0xf2, 0xcc, 0x06, 0x17, 0x5d, 0x0d, 0x27, 0x61, 0x75, 0x7d, 0xc1, 0xc1, 0x31, 0x14, 0x11,
-	0x68, 0xaa, 0xbd, 0xaf, 0x9c, 0xab, 0x33, 0xcf, 0x0c, 0xec, 0xea, 0xc6, 0x62, 0xda, 0xfb, 0x5c,
-	0xe0, 0x48, 0xc2, 0x40, 0x47, 0x35, 0x72, 0x46, 0x5e, 0x70, 0x55, 0x45, 0x8b, 0x8d, 0xaa, 0xc3,
-	0x50, 0x44, 0xa0, 0x71, 0x1f, 0x4a, 0x03, 0x77, 0x7c, 0xee, 0x04, 0x7e, 0xe0, 0x8e, 0xa3, 0xea,
-	0xe6, 0x62, 0x2b, 0x7a, 0x38, 0x85, 0x92, 0x34, 0x0f, 0x6e, 0xc1, 0x5a, 0x18, 0x79, 0x81, 0x79,
-	0xee, 0x54, 0x31, 0xa3, 0x7c, 0x34, 0xbf, 0xd4, 0x18, 0x8c, 0xc4, 0x78, 0xaa, 0x1f, 0x67, 0xc3,
-	0x89, 0x13, 0x79, 0x5e, 0x74, 0x51, 0xbd, 0xb3, 0x98, 0x7e, 0x1c, 0xc4, 0x40, 0x32, 0xe5, 0xc0,
-	0x04, 0xe0, 0xcc, 0x0c, 0x02, 0x67, 0xf8, 0x33, 0xd3, 0x7a, 0x55, 0xdd, 0x5a, 0xec, 0x23, 0x39,
-	0x60, 0xc8, 0xaf, 0x4d, 0xeb, 0x15, 0x49, 0xb1, 0xd0, 0xcd, 0xf4, 0xd2, 0x1d, 0xb8, 0xd5, 0xfb,
-	0x8b, 0x6d, 0xa6, 0x27, 0xee, 0xc0, 0x25, 0x0c, 0x89, 0x5f, 0x40, 0xd9, 0xf7, 0x2e, 0x9d, 0xc0,
-	0x38, 0x9b, 0x44, 0x91, 0x37, 0xae, 0xde, 0x5d, 0x6c, 0x59, 0x0f, 0x18, 0x8a, 0x94, 0x18, 0x07,
-	0x2f, 0x60, 0x0d, 0x2a, 0xaf, 0xbd, 0xe1, 0x64, 0xe4, 0xc4, 0x9c, 0xf7, 0x96, 0xe2, 0x2c, 0x73,
-	0x12, 0x41, 0xfa, 0x0a, 0xee, 0x38, 0xa3, 0x33, 0xc7, 0xb6, 0x1d, 0x9b, 0x6e, 0xfd, 0x51, 0xe0,
-	0x0d, 0x87, 0x4e, 0x50, 0xad, 0x32, 0xea, 0x2f, 0xe6, 0xa5, 0x56, 0x04, 0x85, 0x9c, 0x30, 0x10,
-	0xec, 0xbc, 0x55, 0x87, 0x27, 0x70, 0x3f, 0x0a, 0x26, 0x61, 0xe4, 0xd8, 0x86, 0x3f, 0x34, 0x23,
-	0xa6, 0xdc, 0x23, 0xcf, 0x9e, 0x0c, 0x9d, 0xea, 0x07, 0x8b, 0x9d, 0x37, 0x3a, 0xa7, 0xe9, 0x09,
-	0x96, 0x0e, 0x23, 0x21, 0x77, 0xa3, 0x9b, 0xaa, 0xe9, 0x17, 0x72, 0xe1, 0x45, 0x97, 0x5e, 0x60,
-	0xbb, 0xe3, 0xf3, 0x6a, 0x6d, 0xb1, 0x2f, 0xa4, 0x99, 0x20, 0x49, 0x8a, 0x85, 0x6a, 0x84, 0xed,
-	0x86, 0xfe, 0xd0, 0xbc, 0xaa, 0x7e, 0xb8, 0x98, 0x46, 0x34, 0x38, 0x8c, 0xc4, 0x78, 0xba, 0x93,
-	0x44, 0xde, 0xc4, 0xba, 0xf0, 0x4d, 0xbb, 0xfa, 0x83, 0xc5, 0x76, 0x12, 0x5d, 0xe0, 0x48, 0xc2,
-	0x80, 0x03, 0xb8, 0x37, 0x72, 0xad, 0xc0, 0xf3, 0x2f, 0xbc, 0xb1, 0x63, 0x8c, 0x26, 0x91, 0x63,
-	0x84, 0x97, 0x6e, 0x64, 0x5d, 0x54, 0x3f, 0x62, 0xdc, 0x5f, 0xce, 0xbd, 0xb3, 0x24, 0x2c, 0x9d,
-	0x49, 0xe4, 0x68, 0x8c, 0x83, 0x6c, 0x8d, 0x6e, 0xa8, 0xa5, 0xc2, 0x38, 0x33, 0xa3, 0xc8, 0x09,
-	0xae, 0xaa, 0x1f, 0x2f, 0x26, 0x8c, 0x03, 0x0e, 0x23, 0x31, 0x1e, 0x7f, 0x07, 0xeb, 0x7e, 0xe0,
-	0xbe, 0x36, 0xad, 0x2b, 0x43, 0x9c, 0x21, 0x9f, 0x2c, 0x76, 0x38, 0xf7, 0x38, 0x5a, 0x1c, 0x25,
-	0x15, 0x3f, 0x5d, 0xc4, 0x5f, 0x41, 0x2e, 0xf4, 0xac, 0xea, 0x03, 0x46, 0xf9, 0x6b, 0x73, 0xef,
-	0x61, 0x9e, 0x45, 0x28, 0x0e, 0x1b, 0x50, 0xb6, 0x7d, 0xaa, 0x26, 0xaf, 0x9d, 0x80, 0x1e, 0xc5,
-	0xbf, 0xbc, 0x98, 0x44, 0xc5, 0xca, 0xf7, 0xbc, 0x20, 0x92, 0x63, 0x0e, 0x52, 0xb2, 0xfd, 0xa4,
-	0x40, 0xc7, 0x77, 0xe1, 0x87, 0xd5, 0xfa, 0x62, 0xe3, 0x6b, 0xfa, 0x21, 0xa1, 0x38, 0x0a, 0xf7,
-	0x3d, 0xa7, 0xfa, 0x2b, 0x8b, 0xc1, 0x7b, 0x9e, 0x42, 0x28, 0x8e, 0xda, 0x03, 0x7c, 0xcf, 0x0a,
-	0x27, 0xbe, 0x3f, 0xbc, 0xaa, 0x7e, 0xba, 0xd8, 0xe9, 0xd1, 0xa3, 0x58, 0x8d, 0x41, 0xc5, 0xc6,
-	0xc5, 0x0b, 0xb5, 0x8f, 0x60, 0x45, 0xf6, 0x26, 0xe3, 0x68, 0x6a, 0xfd, 0x53, 0xbb, 0xbb, 0x22,
-	0xac, 0xff, 0xda, 0xdf, 0x66, 0x21, 0x4f, 0x2d, 0x6b, 0x6a, 0x24, 0x5a, 0xb4, 0x9f, 0x30, 0xcb,
-	0xe7, 0x36, 0x12, 0x19, 0x39, 0xe1, 0x58, 0x7c, 0x04, 0x2b, 0xbe, 0x17, 0x44, 0x61, 0x35, 0xcb,
-	0x9c, 0xf3, 0xdd, 0x45, 0x6c, 0xfb, 0x6d, 0xba, 0x34, 0x84, 0xe3, 0x6b, 0x3f, 0xcf, 0x40, 0x9e,
-	0x96, 0x71, 0x0f, 0x0a, 0xbe, 0x17, 0xba, 0xcc, 0xe3, 0xe7, 0x1e, 0xcf, 0x93, 0xf9, 0x45, 0x12,
-	0x44, 0x3d, 0x81, 0x25, 0x09, 0x0b, 0x96, 0x61, 0xdd, 0x1d, 0xdb, 0xce, 0x1b, 0xc3, 0x7b, 0xed,
-	0x04, 0x81, 0x6b, 0x3b, 0xc2, 0x8b, 0xf8, 0xc1, 0x36, 0x0f, 0x6b, 0x6c, 0xc7, 0x61, 0x8d, 0xed,
-	0x7e, 0x6b, 0x1c, 0x3d, 0xde, 0x3b, 0xa6, 0x72, 0x22, 0x15, 0x86, 0x51, 0x05, 0xa4, 0xf6, 0x9c,
-	0x49, 0x4d, 0xba, 0x15, 0xa9, 0xd5, 0xfe, 0x26, 0x0b, 0x85, 0xd8, 0xa9, 0xa0, 0xea, 0xec, 0x07,
-	0x4e, 0xe8, 0x08, 0xce, 0xf5, 0xf9, 0xd5, 0xb9, 0xc7, 0x61, 0x24, 0xc6, 0xd3, 0x15, 0x1f, 0x79,
-	0xb6, 0x33, 0x8c, 0x43, 0x0c, 0xac, 0x80, 0x5f, 0x08, 0xff, 0x31, 0xc7, 0xd8, 0xbf, 0x5a, 0xd4,
-	0xeb, 0x49, 0x1e, 0x52, 0x8e, 0xe5, 0x36, 0xdc, 0x31, 0xa3, 0xc8, 0xb4, 0x2e, 0x0c, 0xd3, 0x1f,
-	0x1b, 0x81, 0xf3, 0xdb, 0x13, 0x37, 0x70, 0x6c, 0xe6, 0x0d, 0x15, 0xc8, 0x26, 0x6f, 0x92, 0xfc,
-	0x31, 0x11, 0x0d, 0xf5, 0x03, 0x28, 0xa7, 0x59, 0xf0, 0x06, 0x94, 0xba, 0xaa, 0x6e, 0xf4, 0x88,
-	0xa2, 0x29, 0x5d, 0x9d, 0x7b, 0x9e, 0x89, 0xeb, 0xdf, 0xd6, 0x15, 0x1e, 0xed, 0x48, 0x6a, 0x9e,
-	0x1e, 0xa1, 0x6c, 0xed, 0x05, 0xe4, 0xa9, 0xfb, 0x74, 0x8b, 0xf2, 0xaa, 0x49, 0x70, 0xf7, 0x46,
-	0x57, 0xea, 0x66, 0xd5, 0xc1, 0x18, 0xf2, 0x23, 0x33, 0x7c, 0xc5, 0xa4, 0x5b, 0x21, 0xec, 0xb9,
-	0xf6, 0x67, 0x65, 0x58, 0x61, 0x6e, 0x13, 0x3e, 0x85, 0x12, 0x73, 0x9c, 0x0c, 0xcb, 0xb3, 0x1d,
-	0x4b, 0x8c, 0x6d, 0x7f, 0x21, 0xd7, 0x8b, 0xff, 0x95, 0x29, 0x9e, 0x80, 0x99, 0x3c, 0xe3, 0x97,
-	0x50, 0x0a, 0x7d, 0xc7, 0x7c, 0xe5, 0x04, 0x86, 0x39, 0xf2, 0x45, 0x24, 0xed, 0xf3, 0x05, 0xa9,
-	0x47, 0xfe, 0xd0, 0x1d, 0xb8, 0x4e, 0x40, 0x40, 0x70, 0x49, 0x23, 0x1f, 0x9b, 0xb0, 0x71, 0xe1,
-	0x98, 0x36, 0x3f, 0xbe, 0xf8, 0xc0, 0x73, 0xdf, 0x73, 0xe0, 0xeb, 0x09, 0x21, 0x1f, 0xbc, 0x0e,
-	0xeb, 0x43, 0xd7, 0x36, 0xa6, 0x47, 0x99, 0x70, 0x9a, 0x17, 0x54, 0x9d, 0xca, 0xd0, 0xb5, 0xa7,
-	0x87, 0x24, 0x3e, 0x86, 0x8d, 0x33, 0x33, 0x74, 0xd2, 0xb4, 0x2b, 0xcb, 0xd0, 0xae, 0x53, 0x96,
-	0x14, 0xef, 0x09, 0x6c, 0xa6, 0x44, 0xcd, 0x25, 0x26, 0xdc, 0xe8, 0x1f, 0xbd, 0x83, 0x59, 0x4e,
-	0xa2, 0xa5, 0x53, 0x19, 0xa3, 0xa9, 0x8c, 0x79, 0x0d, 0xfe, 0x16, 0xca, 0x96, 0x19, 0xd8, 0xc2,
-	0xe3, 0x0f, 0xab, 0x6b, 0x6c, 0xc3, 0x5c, 0x50, 0xcc, 0xb2, 0x19, 0xd8, 0xfc, 0x4b, 0x25, 0x25,
-	0x2b, 0x79, 0x0e, 0xb1, 0x05, 0x25, 0x2b, 0x30, 0xc3, 0x38, 0x9c, 0x50, 0x60, 0x4b, 0x78, 0xb0,
-	0xd4, 0x12, 0xd2, 0x6e, 0x5a, 0x14, 0x4c, 0x2c, 0xda, 0x46, 0x80, 0xd2, 0xf2, 0xca, 0xda, 0x5f,
-	0xe5, 0x00, 0xa6, 0x03, 0xc0, 0x1f, 0x42, 0x91, 0x4d, 0x68, 0x6c, 0x8e, 0x1c, 0x11, 0xe7, 0x2c,
-	0xd0, 0x8a, 0xae, 0x39, 0x72, 0xf0, 0x6f, 0x00, 0x4c, 0xac, 0x91, 0x11, 0x4e, 0x06, 0x03, 0xf7,
-	0xcd, 0x3b, 0xf7, 0x5b, 0x2d, 0x0a, 0xdc, 0xf1, 0x39, 0xdf, 0x6f, 0x8b, 0x13, 0x6b, 0xa4, 0xb1,
-	0xee, 0xd8, 0xe4, 0x60, 0x31, 0x99, 0xdc, 0xad, 0x4d, 0x86, 0xbe, 0x42, 0x0c, 0xfe, 0x9a, 0xc0,
-	0xf2, 0xff, 0x1f, 0x02, 0xc3, 0x97, 0x70, 0x2f, 0xf4, 0x26, 0x63, 0xdb, 0x60, 0x72, 0x72, 0xc7,
-	0x6e, 0x94, 0x8e, 0xf7, 0xdc, 0xce, 0xfb, 0xee, 0xb0, 0x37, 0xd0, 0x65, 0x69, 0x8d, 0xdd, 0x88,
-	0xb7, 0xd6, 0x7f, 0x9e, 0x01, 0x98, 0x6a, 0x24, 0xbe, 0x0f, 0x77, 0x58, 0x9c, 0xd8, 0x90, 0xd5,
-	0x86, 0x22, 0xcf, 0x46, 0x97, 0x89, 0xfe, 0xf4, 0xb3, 0xfd, 0x3d, 0x94, 0xc1, 0x65, 0x28, 0x48,
-	0x6d, 0x99, 0x16, 0x5a, 0x3c, 0xd4, 0x27, 0x4a, 0x3c, 0xb8, 0xdc, 0x90, 0x3e, 0xdf, 0xdb, 0x7d,
-	0x86, 0x0a, 0xb8, 0x02, 0xc5, 0xae, 0xd4, 0xdf, 0xdf, 0x6f, 0xef, 0x3d, 0x3d, 0x40, 0x40, 0xfb,
-	0xc9, 0xda, 0x93, 0xbd, 0xf6, 0x93, 0x3d, 0x54, 0xc2, 0xeb, 0x00, 0x31, 0xc5, 0xb1, 0x86, 0xca,
-	0xb4, 0xf1, 0x44, 0x6e, 0x3c, 0x7b, 0xbc, 0xff, 0x14, 0x55, 0xea, 0xf9, 0x42, 0x1e, 0xad, 0xd5,
-	0xf3, 0x85, 0x22, 0x2a, 0xd6, 0xff, 0x24, 0x03, 0xc5, 0xa9, 0x66, 0xdc, 0x85, 0x4d, 0xa9, 0xd3,
-	0x6b, 0xb7, 0x0e, 0x5b, 0x0a, 0x49, 0x0d, 0xae, 0x0c, 0x85, 0x8e, 0xf4, 0xf2, 0xd9, 0xfe, 0xe3,
-	0xa7, 0x9f, 0xf3, 0xa0, 0x36, 0x2f, 0x7d, 0xfe, 0x18, 0xad, 0x4c, 0x4b, 0x9f, 0xed, 0xf0, 0xa8,
-	0x36, 0xd1, 0x77, 0x77, 0x76, 0x9f, 0xa2, 0x35, 0x31, 0xf0, 0xdd, 0x9d, 0xdd, 0x5d, 0x54, 0xa4,
-	0x05, 0xde, 0xd0, 0xe3, 0x43, 0xe5, 0x2d, 0xcf, 0x50, 0x69, 0x4a, 0xf0, 0x6c, 0x07, 0x95, 0xeb,
-	0xf9, 0x42, 0x06, 0xe5, 0xea, 0xf9, 0x42, 0x01, 0x15, 0xea, 0x2a, 0x6c, 0xdd, 0x24, 0x68, 0xfc,
-	0x09, 0x7c, 0x18, 0x0b, 0xb1, 0x7b, 0xd8, 0x3a, 0x32, 0x34, 0x9d, 0xf4, 0x65, 0xbd, 0x4f, 0x14,
-	0xa3, 0xab, 0x76, 0x15, 0x2e, 0xcc, 0x86, 0xa2, 0xb5, 0x8e, 0xba, 0x28, 0xc3, 0xe2, 0xec, 0x6a,
-	0xa7, 0xa3, 0x76, 0x51, 0xb6, 0xf6, 0x47, 0x6b, 0xb0, 0xca, 0x43, 0x62, 0x58, 0x85, 0x35, 0xdb,
-	0x79, 0xed, 0x5a, 0x4e, 0x58, 0xcd, 0x33, 0xf5, 0x7f, 0xba, 0x58, 0x4c, 0x6d, 0xbb, 0xc1, 0xd0,
-	0x24, 0x66, 0xa9, 0xfd, 0x57, 0x0e, 0x56, 0x79, 0x1d, 0x3e, 0x86, 0xa2, 0x3b, 0x8e, 0x9c, 0x60,
-	0x60, 0x5a, 0x71, 0xae, 0x65, 0x7f, 0x41, 0xf6, 0x56, 0x8c, 0x27, 0x53, 0x2a, 0xdc, 0x81, 0xd5,
-	0x81, 0x69, 0x51, 0x57, 0x8e, 0x2b, 0xe2, 0xa2, 0x43, 0x3e, 0x64, 0x60, 0x22, 0x48, 0xf0, 0x77,
-	0x50, 0xf2, 0x02, 0xd7, 0x19, 0x47, 0xec, 0xa0, 0x15, 0x8a, 0xf7, 0xc5, 0x82, 0x9c, 0xea, 0x94,
-	0x81, 0xa4, 0xe9, 0xe8, 0xb9, 0x3d, 0x18, 0x9a, 0xe7, 0x21, 0x53, 0xb0, 0x0a, 0xe1, 0x05, 0x8c,
-	0x20, 0xe7, 0xda, 0x61, 0x75, 0xf5, 0x41, 0xee, 0x61, 0x91, 0xd0, 0x47, 0x7c, 0x9c, 0xf2, 0x7b,
-	0xb8, 0xbb, 0xb6, 0xb6, 0x9c, 0x29, 0x91, 0x78, 0x3c, 0xdc, 0x35, 0x7b, 0x09, 0x28, 0xe5, 0x0e,
-	0x72, 0x43, 0xb1, 0xb0, 0xcc, 0xb1, 0xb4, 0x31, 0xa5, 0x61, 0x15, 0xf5, 0x16, 0x14, 0x93, 0xe5,
-	0xa1, 0x1a, 0xd3, 0xea, 0xea, 0x0a, 0x39, 0x94, 0xe4, 0x74, 0xf8, 0x7e, 0x13, 0x2a, 0xa9, 0x6a,
-	0xed, 0x00, 0x65, 0x30, 0x86, 0xf5, 0x69, 0x55, 0xa7, 0xd5, 0x6b, 0xa1, 0x6c, 0xfd, 0x37, 0x61,
-	0x95, 0x2f, 0x0a, 0x6d, 0x3d, 0x94, 0xe4, 0x56, 0xf7, 0x68, 0x36, 0x07, 0x20, 0xea, 0x0e, 0x89,
-	0xda, 0xd5, 0x45, 0xde, 0x89, 0xd7, 0x1c, 0x48, 0xf2, 0x73, 0x94, 0xad, 0x5f, 0x42, 0x29, 0xb5,
-	0x02, 0x74, 0x7b, 0x51, 0x49, 0x4b, 0xe9, 0xea, 0x92, 0xde, 0x52, 0xbb, 0xb3, 0xe3, 0x49, 0x37,
-	0xec, 0xf0, 0xf1, 0xa4, 0xab, 0x9e, 0xed, 0xa0, 0x2c, 0xbe, 0x03, 0x1b, 0xe9, 0xba, 0xdd, 0xfd,
-	0x1d, 0x94, 0xbb, 0x5e, 0xb9, 0xf7, 0xf9, 0x0e, 0xca, 0xd7, 0x3b, 0xb0, 0x72, 0xc8, 0x56, 0x74,
-	0x1d, 0xe0, 0xb0, 0x2d, 0x1d, 0x69, 0xb1, 0xee, 0xdd, 0x87, 0x3b, 0xbc, 0xac, 0xf5, 0x7b, 0x3d,
-	0x95, 0xe8, 0xc6, 0xee, 0xce, 0xfe, 0x4e, 0x0f, 0x65, 0xf0, 0x87, 0x70, 0x7f, 0xb6, 0x41, 0xea,
-	0xeb, 0xea, 0xa1, 0x2a, 0xf7, 0x35, 0x94, 0xad, 0xfd, 0x4b, 0x06, 0x2a, 0x33, 0xd1, 0x65, 0xfc,
-	0x1d, 0x6c, 0x52, 0x5b, 0x65, 0x36, 0x5e, 0xbd, 0xa4, 0x95, 0x89, 0x86, 0xae, 0x3d, 0xcb, 0xfe,
-	0x5b, 0x80, 0x99, 0xcd, 0x32, 0x4b, 0x9f, 0x5d, 0x8e, 0x7e, 0x93, 0x52, 0xcd, 0xf0, 0xd7, 0x7e,
-	0x91, 0x81, 0x62, 0x12, 0xd4, 0xc6, 0x3a, 0x50, 0x93, 0xc9, 0x98, 0x86, 0xc7, 0x97, 0x9c, 0x47,
-	0x79, 0xe8, 0xda, 0x53, 0xd6, 0x63, 0x60, 0x16, 0x53, 0x8a, 0x76, 0xc9, 0xf1, 0x57, 0x28, 0x4d,
-	0xc2, 0x5b, 0xfb, 0xa7, 0x0c, 0x94, 0xd3, 0xc1, 0x73, 0xfc, 0x0d, 0x20, 0x66, 0x36, 0xa6, 0x83,
-	0xf1, 0x4b, 0xce, 0x60, 0x83, 0x9a, 0x8e, 0x69, 0xee, 0xef, 0x60, 0x93, 0x1b, 0x8f, 0x69, 0xf2,
-	0x25, 0xe7, 0x81, 0x98, 0x01, 0x99, 0x22, 0xaa, 0xfd, 0x43, 0x06, 0x4a, 0xa9, 0x68, 0x3d, 0x7e,
-	0x09, 0x74, 0x00, 0x06, 0x8b, 0xd9, 0x8b, 0xd8, 0xff, 0x92, 0x13, 0xa1, 0x86, 0x74, 0x7b, 0x4a,
-	0x43, 0x65, 0xc4, 0xe6, 0x91, 0xa6, 0x5e, 0x72, 0x1a, 0xcc, 0x9a, 0x4e, 0x71, 0xd7, 0xfe, 0x39,
-	0x03, 0xab, 0x22, 0x8e, 0x63, 0x01, 0xf2, 0xcd, 0xb1, 0x33, 0x34, 0xfc, 0xc0, 0xf3, 0x9d, 0x20,
-	0x72, 0x9d, 0x50, 0xa4, 0xd0, 0xf6, 0xdf, 0x6b, 0x12, 0xc7, 0x51, 0x18, 0x8a, 0xdf, 0xee, 0x25,
-	0x78, 0xb2, 0xc1, 0x18, 0xa7, 0x15, 0xf4, 0x73, 0x65, 0x51, 0x35, 0x16, 0x0e, 0xf1, 0x82, 0x68,
-	0xd9, 0x89, 0x94, 0x19, 0x8b, 0xc6, 0x49, 0xbe, 0xa6, 0x27, 0x7b, 0xb6, 0xf6, 0x07, 0x59, 0x80,
-	0x69, 0x82, 0x02, 0x9f, 0xcd, 0x66, 0x3a, 0xf8, 0x62, 0x48, 0x8b, 0x67, 0x3a, 0x52, 0x8f, 0xcc,
-	0x37, 0x4e, 0x25, 0x3e, 0xea, 0x7f, 0x9c, 0x81, 0xf5, 0xd9, 0x66, 0xb6, 0x49, 0x4d, 0xf3, 0xf7,
-	0xa9, 0x7d, 0xb2, 0x02, 0x45, 0xb9, 0x2d, 0x75, 0xb4, 0xa6, 0xd2, 0x6e, 0x0b, 0xcf, 0x97, 0xa7,
-	0x89, 0x5b, 0x07, 0x6d, 0x05, 0x65, 0xe9, 0x6e, 0xd7, 0x50, 0x74, 0x49, 0x6e, 0x4a, 0xb4, 0x9c,
-	0xa3, 0x65, 0xb9, 0x49, 0xd4, 0x8e, 0x72, 0x20, 0x69, 0x0a, 0xca, 0x33, 0x3c, 0x2f, 0xab, 0x2f,
-	0xd1, 0x4a, 0xaa, 0xd8, 0xd2, 0xd1, 0x2a, 0xa3, 0x63, 0x45, 0xad, 0x2d, 0xe9, 0x0a, 0x5a, 0xab,
-	0xfd, 0x05, 0x5d, 0x59, 0x9e, 0x56, 0x79, 0x91, 0xa4, 0x67, 0xb8, 0x10, 0x9e, 0x2d, 0x96, 0x9e,
-	0x11, 0xff, 0xd8, 0xe4, 0x05, 0x51, 0xfd, 0x10, 0x60, 0x5a, 0x4b, 0xf7, 0x7b, 0x7e, 0x2f, 0x21,
-	0x35, 0xdd, 0x02, 0xe4, 0xd9, 0xb6, 0xcd, 0x6c, 0x4e, 0x76, 0x3a, 0x75, 0xa5, 0x36, 0xca, 0xd2,
-	0x92, 0xf2, 0x52, 0x94, 0x72, 0xb5, 0xff, 0xce, 0x41, 0x21, 0x4e, 0xdd, 0xe0, 0x33, 0xa8, 0xc4,
-	0xc9, 0x1b, 0x23, 0x95, 0x0b, 0xff, 0x6a, 0xd1, 0x1c, 0x50, 0xf2, 0xc0, 0x86, 0x5c, 0x7e, 0x95,
-	0x2a, 0xe1, 0x0e, 0x14, 0xcf, 0x4c, 0xeb, 0x15, 0xd3, 0xa5, 0x65, 0x3f, 0xbe, 0x29, 0x03, 0x26,
-	0xd7, 0x52, 0x12, 0xb9, 0xe5, 0x18, 0x67, 0x72, 0x12, 0x3d, 0x28, 0x8d, 0x27, 0x23, 0x27, 0x70,
-	0x2d, 0xc3, 0x37, 0x6d, 0x61, 0x3c, 0x2d, 0x4c, 0x09, 0x82, 0xa3, 0x67, 0xda, 0x78, 0x07, 0xb6,
-	0x92, 0x21, 0x1b, 0x93, 0xd0, 0x09, 0x8c, 0x30, 0x72, 0x7c, 0x6a, 0x3f, 0xe5, 0x1e, 0x66, 0x08,
-	0x4e, 0xda, 0xfa, 0xa1, 0x13, 0x68, 0xb4, 0xa5, 0xfe, 0x02, 0xca, 0x69, 0x21, 0xe2, 0x0f, 0xe0,
-	0x6e, 0x7c, 0xdb, 0xc4, 0xb8, 0x76, 0x9d, 0x20, 0xbd, 0xbc, 0x99, 0x64, 0xd9, 0xdf, 0xfa, 0x9e,
-	0x6b, 0x1a, 0xac, 0xf2, 0xc4, 0x1a, 0x8f, 0xed, 0x78, 0x03, 0x77, 0xe8, 0x88, 0xf8, 0xda, 0xa3,
-	0xf7, 0x6e, 0x30, 0x1c, 0x49, 0xb7, 0x16, 0x0a, 0x23, 0x31, 0xbe, 0xf6, 0x9f, 0x59, 0x28, 0xa5,
-	0x32, 0x6c, 0xf8, 0x25, 0x14, 0x86, 0x9e, 0x65, 0xa6, 0xe2, 0x8a, 0x5f, 0x2e, 0x91, 0xa8, 0xdb,
-	0x6e, 0x0b, 0x0e, 0x92, 0xb0, 0x51, 0xa3, 0x93, 0x27, 0x26, 0x45, 0xd4, 0x8d, 0x7f, 0xb2, 0x1f,
-	0x01, 0x04, 0x9e, 0xf1, 0xda, 0x09, 0x42, 0x57, 0xac, 0x7e, 0x91, 0x14, 0x03, 0xef, 0x98, 0x57,
-	0xd4, 0xff, 0x31, 0x03, 0x85, 0xf6, 0x94, 0x01, 0xb5, 0x55, 0xf9, 0xba, 0xf9, 0xf4, 0x01, 0xdc,
-	0x4d, 0xdf, 0x5b, 0x31, 0x74, 0xb5, 0x67, 0xb4, 0x95, 0x43, 0x6a, 0x92, 0x55, 0x61, 0x2b, 0x11,
-	0xfa, 0x81, 0xaa, 0xeb, 0x6a, 0x87, 0xb7, 0x64, 0x67, 0x96, 0x43, 0xb4, 0x90, 0xd6, 0x51, 0x53,
-	0x47, 0x39, 0x7c, 0x0f, 0xf0, 0x74, 0xa5, 0xd4, 0x9e, 0xa8, 0xcf, 0x5f, 0x0f, 0xc6, 0xad, 0xd0,
-	0xf5, 0x61, 0x6d, 0x86, 0xd6, 0x6a, 0x28, 0x68, 0x95, 0x6e, 0x28, 0x94, 0x9d, 0x17, 0x99, 0x8b,
-	0x15, 0xf7, 0x2d, 0xd4, 0x7e, 0x17, 0xd6, 0x44, 0xd2, 0x11, 0x9f, 0x40, 0x59, 0xa4, 0x1d, 0xd3,
-	0x3a, 0xfa, 0xe4, 0xbd, 0x2b, 0x28, 0xf0, 0xf1, 0x7f, 0xa6, 0x9a, 0xa5, 0x70, 0x5a, 0xc0, 0xf7,
-	0x61, 0x2d, 0x74, 0x7f, 0xc7, 0x31, 0xce, 0xcf, 0x44, 0xe8, 0x6d, 0x95, 0x16, 0x8f, 0xce, 0x6a,
-	0x7f, 0x9e, 0x81, 0x62, 0x92, 0xa5, 0xc4, 0x4d, 0x28, 0x26, 0x17, 0xd7, 0xc4, 0xe7, 0xf3, 0xfe,
-	0x90, 0x4d, 0x2a, 0xc9, 0x99, 0x80, 0xd3, 0x21, 0xc6, 0xec, 0xf7, 0x0c, 0x31, 0x9e, 0x00, 0x4c,
-	0xb3, 0x9e, 0xb7, 0x19, 0xbb, 0xfc, 0xd3, 0x2c, 0xe4, 0x4f, 0xdc, 0x81, 0x8b, 0x87, 0x50, 0x15,
-	0x47, 0xa6, 0x63, 0x1b, 0x97, 0x43, 0x73, 0x6c, 0xb0, 0xf8, 0x8a, 0xe5, 0x0d, 0xe9, 0xae, 0x9e,
-	0x7b, 0xb8, 0xfe, 0xce, 0xec, 0xdb, 0x54, 0x0a, 0x94, 0x68, 0xfb, 0xa4, 0x2d, 0x75, 0x7b, 0x02,
-	0x4a, 0xee, 0x25, 0x9c, 0x27, 0x43, 0x73, 0x1c, 0x57, 0xd3, 0x63, 0x1a, 0x2e, 0xdd, 0x81, 0x6b,
-	0x58, 0x17, 0xae, 0xcf, 0xa3, 0xfe, 0x0b, 0xb8, 0x84, 0xfc, 0x35, 0xee, 0xc0, 0x95, 0x2f, 0x5c,
-	0x9f, 0x14, 0x2f, 0xc5, 0x53, 0x58, 0xef, 0x42, 0x21, 0xae, 0xa6, 0xce, 0xcd, 0x49, 0xeb, 0xb0,
-	0x65, 0xc8, 0xcd, 0x56, 0x2f, 0xa5, 0x0d, 0xac, 0x9a, 0x28, 0x6d, 0x45, 0xd3, 0x8c, 0xfd, 0xcf,
-	0x94, 0xc6, 0xfe, 0xce, 0x6e, 0x03, 0x65, 0xa8, 0xea, 0x24, 0xd5, 0x44, 0x91, 0xda, 0xba, 0xf2,
-	0x1c, 0x65, 0x6b, 0x7f, 0x9f, 0x85, 0x55, 0xb1, 0x67, 0x76, 0x60, 0x35, 0x70, 0xce, 0xa7, 0x5a,
-	0xff, 0x74, 0xb1, 0x04, 0xee, 0x36, 0x61, 0x60, 0x22, 0x48, 0xf0, 0x11, 0xe4, 0x1d, 0xfb, 0x3c,
-	0xb6, 0x7a, 0x1f, 0x2f, 0x48, 0xa6, 0xd8, 0xe7, 0x0e, 0x61, 0x04, 0xb8, 0x96, 0xca, 0x73, 0xd0,
-	0xdd, 0x21, 0x3b, 0xcd, 0x58, 0xd4, 0x3f, 0x83, 0x55, 0xfe, 0x5a, 0x7a, 0x7e, 0x12, 0xe5, 0x68,
-	0x76, 0x5f, 0x48, 0xdf, 0x09, 0x4c, 0xdf, 0xf5, 0xcb, 0xd6, 0x0f, 0x20, 0x4f, 0xdf, 0x40, 0x7d,
-	0x38, 0xa5, 0x71, 0xa4, 0xcc, 0x9e, 0xb9, 0x62, 0xeb, 0x28, 0xc2, 0x0a, 0x57, 0xfc, 0x2c, 0xbb,
-	0xe0, 0xa6, 0xf6, 0x78, 0x80, 0x87, 0xef, 0x15, 0x28, 0x5f, 0xfb, 0xbd, 0x3c, 0xe0, 0xb7, 0x13,
-	0xcc, 0xb7, 0x99, 0xa5, 0xf8, 0x19, 0xac, 0x39, 0x96, 0x91, 0xba, 0x13, 0xfa, 0x62, 0xf9, 0xc4,
-	0xf7, 0x0d, 0x55, 0xdc, 0x1a, 0x71, 0x2c, 0xb6, 0x75, 0x1c, 0x41, 0xde, 0x37, 0x83, 0x48, 0x98,
-	0xab, 0x8f, 0xdf, 0xab, 0x08, 0x37, 0xa4, 0xd6, 0x19, 0x01, 0xfe, 0x16, 0x36, 0xc5, 0x75, 0x51,
-	0x36, 0x72, 0xcb, 0xb0, 0x46, 0x4b, 0x1f, 0xc0, 0x1b, 0x82, 0x89, 0x8e, 0xd0, 0x92, 0x47, 0x36,
-	0x96, 0x20, 0x67, 0x9d, 0xb9, 0x22, 0x2a, 0xb8, 0x30, 0x1d, 0xc5, 0xd6, 0xbf, 0x86, 0x7b, 0x37,
-	0x8b, 0x82, 0x7a, 0xd2, 0x8a, 0x7c, 0xfd, 0x68, 0xae, 0x40, 0x51, 0x91, 0x0d, 0x6e, 0x17, 0xf2,
-	0xcf, 0x48, 0x91, 0x8d, 0x93, 0x56, 0x5b, 0x56, 0x51, 0xb6, 0xf6, 0x3f, 0x19, 0xb8, 0x7b, 0x63,
-	0xca, 0x1f, 0x07, 0x50, 0x88, 0xfc, 0x51, 0x7a, 0x7b, 0x3f, 0xf9, 0x5e, 0x77, 0x08, 0x6e, 0xae,
-	0x65, 0x2b, 0xb8, 0x16, 0xf9, 0x23, 0xfa, 0x50, 0xff, 0x0e, 0x3e, 0x78, 0x67, 0x2f, 0xaa, 0xfe,
-	0x7a, 0xaf, 0x73, 0x7d, 0x76, 0x1b, 0x50, 0xd2, 0x9b, 0x2d, 0xd2, 0x30, 0x7a, 0x12, 0xd1, 0x4f,
-	0xf9, 0x35, 0xc6, 0x23, 0x4d, 0x36, 0x9a, 0xbb, 0x07, 0x3c, 0xb6, 0xc9, 0x0b, 0x0d, 0x94, 0xa3,
-	0xfb, 0x73, 0x73, 0xe6, 0x9e, 0xc1, 0x6d, 0xed, 0xcf, 0x7f, 0x9d, 0x81, 0x35, 0xe1, 0xfc, 0xe0,
-	0xe6, 0xcc, 0x0d, 0xce, 0x27, 0x0b, 0x66, 0xb0, 0x53, 0x37, 0x3a, 0xeb, 0xdf, 0xbc, 0xf3, 0xee,
-	0xe6, 0x26, 0x54, 0x58, 0x4d, 0xca, 0xe2, 0x8a, 0xab, 0x12, 0xab, 0x3a, 0x8b, 0x6b, 0x70, 0x6f,
-	0xa6, 0x97, 0x91, 0xb2, 0xb8, 0xfb, 0x50, 0x88, 0x6f, 0x38, 0xdc, 0xa6, 0x20, 0x4c, 0xd8, 0xea,
-	0xbc, 0xe3, 0x1a, 0xc3, 0x6d, 0xbd, 0xe2, 0x17, 0xab, 0xb0, 0x26, 0xee, 0x36, 0xdc, 0xe6, 0x46,
-	0xa5, 0x43, 0x61, 0xe8, 0x0e, 0x9c, 0xc8, 0x1d, 0xc5, 0x29, 0xe3, 0xfd, 0x05, 0x6f, 0x5a, 0x6c,
-	0xb7, 0x05, 0x9e, 0x24, 0x4c, 0x94, 0xd5, 0xba, 0x30, 0x83, 0xf3, 0x38, 0xa4, 0xba, 0x04, 0xab,
-	0x2c, 0xf0, 0x24, 0x61, 0xaa, 0xfd, 0x47, 0x16, 0x0a, 0xf1, 0xcb, 0xf0, 0x01, 0x94, 0xc3, 0x0b,
-	0xd7, 0xf7, 0xdd, 0xf1, 0xb9, 0x31, 0x72, 0xc7, 0xc2, 0x18, 0xfa, 0xe4, 0x3d, 0x37, 0x87, 0x49,
-	0x29, 0x06, 0x75, 0xdc, 0x31, 0x56, 0x60, 0xdd, 0x76, 0x1c, 0xdf, 0x08, 0x87, 0xf4, 0x2f, 0x65,
-	0xc9, 0xce, 0xc7, 0x52, 0xa6, 0x30, 0x8d, 0xa2, 0x28, 0xcd, 0x4f, 0xa1, 0x14, 0x4e, 0x42, 0xdf,
-	0x19, 0xdb, 0x8c, 0x23, 0x37, 0x1f, 0x07, 0x08, 0x0c, 0x65, 0x38, 0x82, 0x8d, 0xe1, 0xc4, 0x72,
-	0xed, 0xd4, 0x48, 0xf2, 0xf3, 0xb1, 0x54, 0x18, 0x2e, 0x19, 0xca, 0x4f, 0x00, 0x4c, 0x2b, 0x72,
-	0x5f, 0x3b, 0x8c, 0x63, 0x65, 0x3e, 0x8e, 0x22, 0x87, 0x74, 0xdc, 0x71, 0xed, 0xdf, 0x32, 0x50,
-	0x88, 0x25, 0x9f, 0x26, 0x33, 0xdf, 0xcc, 0x2b, 0xe0, 0x98, 0xcc, 0x7c, 0x33, 0x23, 0x17, 0xf3,
-	0xcd, 0xbc, 0xb2, 0x4d, 0xe4, 0x62, 0xbe, 0xb9, 0xbe, 0x40, 0xe6, 0x9b, 0x79, 0x85, 0x9b, 0x5a,
-	0x20, 0xf3, 0x4d, 0xed, 0x1b, 0xa8, 0xcc, 0x5c, 0xe2, 0xb9, 0x4d, 0xbd, 0x54, 0x21, 0xa7, 0x79,
-	0x16, 0x6e, 0x42, 0x41, 0x9c, 0x78, 0xb1, 0x45, 0xfa, 0xe3, 0xf7, 0x3b, 0x05, 0x9e, 0xb5, 0x2d,
-	0x88, 0x49, 0x82, 0xae, 0x8d, 0x60, 0xeb, 0xa6, 0x6b, 0x3d, 0xb8, 0x0f, 0x90, 0xdc, 0x13, 0xe2,
-	0xef, 0x78, 0x77, 0x6e, 0xe5, 0xed, 0xd8, 0xd4, 0xcc, 0x0d, 0xa1, 0x14, 0x51, 0xad, 0x07, 0xb9,
-	0xa6, 0x1f, 0xde, 0xa6, 0x44, 0x7a, 0x90, 0xeb, 0x79, 0xca, 0x6d, 0x32, 0xfe, 0x7e, 0x06, 0x4a,
-	0xa9, 0xbb, 0x40, 0x58, 0x9d, 0xb9, 0xa0, 0xb9, 0x24, 0x7b, 0xfa, 0x76, 0xe6, 0x0f, 0x01, 0x4d,
-	0xc2, 0x33, 0xaa, 0x33, 0x86, 0x69, 0x19, 0x97, 0x66, 0xc4, 0x6e, 0xfb, 0x64, 0x1e, 0xae, 0x90,
-	0xca, 0x24, 0x3c, 0xeb, 0xb8, 0x63, 0xc9, 0x3a, 0xa1, 0x95, 0xf5, 0x2f, 0x61, 0x4d, 0xe0, 0xa9,
-	0xcd, 0x21, 0x5c, 0xc4, 0xd4, 0x09, 0x95, 0xf2, 0x1b, 0x33, 0xd7, 0x9d, 0xce, 0x6c, 0xfd, 0x2f,
-	0x33, 0x50, 0x4e, 0x5f, 0xe0, 0xa1, 0xdd, 0xdf, 0x63, 0xbf, 0x16, 0x20, 0xcf, 0x32, 0x12, 0xec,
-	0xc7, 0x08, 0x3c, 0x5b, 0x91, 0xa7, 0xce, 0x2b, 0x73, 0x56, 0x79, 0x79, 0x25, 0x71, 0x5e, 0x59,
-	0x4f, 0x16, 0x0d, 0xe3, 0xbe, 0x2d, 0x6f, 0x5f, 0x9b, 0x3a, 0xbb, 0xac, 0x03, 0x4b, 0x70, 0xd2,
-	0x27, 0xee, 0x4f, 0x17, 0xf9, 0x8f, 0x49, 0xe4, 0xe7, 0xc2, 0x59, 0x86, 0x83, 0x1f, 0x7d, 0xf3,
-	0xf0, 0xdc, 0x4b, 0xc4, 0xb9, 0xed, 0x05, 0xe7, 0x8f, 0xde, 0xfe, 0x0d, 0xd5, 0xb9, 0xf7, 0xc8,
-	0xf4, 0xdd, 0xb3, 0x55, 0xe6, 0x88, 0x3d, 0xfe, 0xdf, 0x00, 0x00, 0x00, 0xff, 0xff, 0xdf, 0x77,
-	0x8f, 0x47, 0xa3, 0x35, 0x00, 0x00,
+	// 4455 bytes of a gzipped FileDescriptorProto
+	0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xb4, 0x5b, 0xcb, 0x6f, 0xe3, 0x48,
+	0x7a, 0x1f, 0x3d, 0x6c, 0x4b, 0x9f, 0x24, 0xbb, 0x5c, 0xed, 0xee, 0xd6, 0xa8, 0xe7, 0xd1, 0x51,
+	0x66, 0xb0, 0x8d, 0xcd, 0xc6, 0x6d, 0xbb, 0xbb, 0x67, 0xdc, 0xb3, 0x33, 0x9b, 0xa5, 0x28, 0xda,
+	0xd2, 0xb4, 0x24, 0xaa, 0x8b, 0x94, 0xdd, 0x9e, 0x19, 0x84, 0xa0, 0xc9, 0x92, 0xcc, 0x6d, 0x49,
+	0x64, 0x48, 0xaa, 0xdd, 0x4e, 0x2e, 0x41, 0x2e, 0x39, 0x04, 0x41, 0x90, 0x53, 0x1e, 0xc0, 0x22,
+	0x01, 0x12, 0x20, 0xc7, 0x5c, 0x12, 0x20, 0x7b, 0x0e, 0x02, 0x24, 0x87, 0xe4, 0x92, 0x7f, 0x20,
+	0x87, 0x00, 0x49, 0xfe, 0x8b, 0xa0, 0xaa, 0x48, 0x89, 0x72, 0xbb, 0xb7, 0x25, 0x8f, 0xf7, 0x62,
+	0xb3, 0x1e, 0xbf, 0x1f, 0xab, 0xbe, 0x62, 0x7d, 0xf5, 0x3d, 0x4a, 0xf0, 0x89, 0x75, 0xe6, 0xbb,
+	0x23, 0x67, 0x32, 0x72, 0x83, 0x87, 0x96, 0x3b, 0xee, 0x3b, 0x83, 0x87, 0xa6, 0xe7, 0x3c, 0x0c,
+	0x5d, 0xcf, 0x1d, 0xba, 0x83, 0x8b, 0x6d, 0xcf, 0x77, 0x43, 0x17, 0xdf, 0x9e, 0xf5, 0xda, 0x16,
+	0xbd, 0xb6, 0x4d, 0xcf, 0xa9, 0x7c, 0x7a, 0x35, 0xd8, 0x72, 0x47, 0x9e, 0x3b, 0xa6, 0xe3, 0x50,
+	0xa0, 0x2b, 0x1f, 0x0d, 0x5c, 0x77, 0x30, 0xa4, 0x0f, 0x79, 0xe9, 0x74, 0xd2, 0x7f, 0x78, 0xee,
+	0x9b, 0x9e, 0x47, 0xfd, 0x40, 0xb4, 0x57, 0xff, 0x63, 0x15, 0x72, 0x7a, 0xf4, 0x42, 0xbc, 0x0e,
+	0x69, 0xc7, 0x2e, 0xa7, 0xee, 0xa7, 0x1e, 0xe4, 0x49, 0xda, 0xb1, 0xf1, 0x3e, 0x64, 0xc3, 0x0b,
+	0x8f, 0x96, 0xd3, 0xf7, 0x53, 0x0f, 0xd6, 0xf7, 0x3e, 0xd9, 0xbe, 0x72, 0x24, 0xdb, 0x31, 0x7c,
+	0x5b, 0xbf, 0xf0, 0x28, 0xe1, 0x08, 0x4c, 0xa0, 0x60, 0xd3, 0xc0, 0xf2, 0x1d, 0x2f, 0x74, 0xdc,
+	0x71, 0x39, 0x73, 0x3f, 0xf3, 0xa0, 0xb0, 0xb7, 0xf3, 0x2e, 0x82, 0xfa, 0x0c, 0xa2, 0x8c, 0x43,
+	0xff, 0x82, 0x24, 0x49, 0x30, 0x01, 0x74, 0x66, 0xfa, 0xf6, 0xb9, 0xe9, 0x53, 0xa3, 0x4f, 0xcd,
+	0x70, 0xe2, 0xd3, 0x72, 0xf6, 0x7e, 0xea, 0x41, 0x61, 0xef, 0x07, 0x6f, 0x21, 0x6e, 0x44, 0xdd,
+	0x0f, 0x44, 0xef, 0x80, 0x6c, 0x9c, 0xcd, 0xd7, 0x54, 0x7e, 0x02, 0xe8, 0xf2, 0x4b, 0x31, 0x82,
+	0xcc, 0x4b, 0x7a, 0x11, 0x89, 0x81, 0x3d, 0xe2, 0x2d, 0x58, 0x79, 0x65, 0x0e, 0x27, 0x42, 0x10,
+	0x79, 0x22, 0x0a, 0x5f, 0xa4, 0xf7, 0x53, 0xd5, 0x3f, 0xc9, 0x42, 0x96, 0x4d, 0x1b, 0x23, 0x28,
+	0xea, 0x27, 0x5d, 0xc5, 0xe8, 0x75, 0x9e, 0x75, 0xd4, 0xe3, 0x0e, 0x7a, 0x0f, 0x03, 0xac, 0x6a,
+	0x32, 0x51, 0x94, 0x0e, 0x4a, 0xe1, 0x0d, 0x28, 0x1c, 0xa8, 0xa4, 0x6d, 0x1c, 0x48, 0xb2, 0xae,
+	0x12, 0x94, 0xc6, 0x79, 0x58, 0x91, 0x7a, 0xf5, 0xa6, 0x8a, 0x32, 0xbc, 0x9f, 0x7e, 0xd2, 0xea,
+	0x69, 0x28, 0x8b, 0x8b, 0x90, 0x7b, 0xa6, 0x9c, 0xd4, 0x54, 0x89, 0xd4, 0xd1, 0x0a, 0x2e, 0xc0,
+	0x9a, 0xde, 0x50, 0x48, 0x5b, 0x6a, 0xa1, 0x55, 0xd6, 0x4d, 0x96, 0xda, 0x0a, 0x91, 0xd0, 0x1a,
+	0x7e, 0x00, 0x9f, 0x48, 0xb2, 0xac, 0xb4, 0x14, 0xa2, 0xb6, 0x15, 0x5d, 0x21, 0xc6, 0xe1, 0x09,
+	0x51, 0x35, 0x59, 0xed, 0x2a, 0x46, 0x5b, 0x3a, 0xec, 0x28, 0xba, 0xa8, 0x46, 0x39, 0xfe, 0xe2,
+	0x66, 0xe7, 0x50, 0x21, 0x5d, 0xd2, 0xec, 0xe8, 0x28, 0x8f, 0xb7, 0x00, 0x75, 0x89, 0xfa, 0xa2,
+	0xd9, 0x6e, 0xea, 0x27, 0x86, 0xa6, 0x74, 0x34, 0x95, 0x20, 0xc0, 0x18, 0xd6, 0xeb, 0x52, 0xef,
+	0xb0, 0xc1, 0xb8, 0xc4, 0xdb, 0x0b, 0xb8, 0x0c, 0x5b, 0x1d, 0xb5, 0x63, 0x1c, 0xa9, 0x2d, 0x49,
+	0x6f, 0xb6, 0x14, 0x43, 0xd3, 0x55, 0x22, 0x1d, 0x2a, 0xa8, 0x88, 0xd7, 0x20, 0x43, 0xa4, 0x36,
+	0x2a, 0xe1, 0x1c, 0x64, 0x8f, 0x9b, 0x07, 0x4d, 0xb4, 0xce, 0x08, 0x64, 0xa5, 0xd5, 0xea, 0xb5,
+	0xa4, 0x98, 0x60, 0x03, 0x97, 0x20, 0xaf, 0xd5, 0x0d, 0xa2, 0x48, 0x75, 0x85, 0x20, 0x84, 0x6f,
+	0xc1, 0x46, 0x5b, 0x65, 0xf3, 0xe1, 0xed, 0x46, 0x4f, 0xab, 0xa1, 0x4d, 0xd6, 0xa7, 0xd6, 0xea,
+	0x29, 0xba, 0xaa, 0xea, 0x0d, 0x84, 0xf1, 0x3a, 0x40, 0x4d, 0x22, 0x44, 0x69, 0x7d, 0x2d, 0xc9,
+	0xcf, 0xd0, 0x2d, 0x26, 0xd5, 0xae, 0x7a, 0xcc, 0x06, 0xd5, 0xd3, 0x75, 0xb5, 0x83, 0xb6, 0xf0,
+	0x26, 0x94, 0x8e, 0xd4, 0x56, 0xaf, 0xad, 0xc4, 0x55, 0xb7, 0xf1, 0x2a, 0xa4, 0x15, 0x19, 0xdd,
+	0x61, 0x32, 0xd5, 0xd5, 0x9e, 0xdc, 0x40, 0x77, 0xd9, 0x08, 0xf5, 0x6e, 0x1b, 0x95, 0x71, 0x05,
+	0xee, 0xb4, 0x9b, 0x32, 0x51, 0xbb, 0x0d, 0xb5, 0xa3, 0x18, 0xed, 0x9e, 0xae, 0x18, 0xda, 0x71,
+	0x53, 0x97, 0x1b, 0xe8, 0x7d, 0x26, 0xde, 0x9a, 0xa4, 0xeb, 0x0a, 0x39, 0x41, 0x15, 0x36, 0x95,
+	0x46, 0xbd, 0xdd, 0x44, 0xf7, 0x18, 0x56, 0x53, 0x65, 0xf4, 0x01, 0x7b, 0x68, 0x74, 0x35, 0xf4,
+	0x21, 0x1b, 0x45, 0xbd, 0x6b, 0xc8, 0x6a, 0xe7, 0x48, 0x21, 0x4c, 0xac, 0x1f, 0xb1, 0xa6, 0xae,
+	0xaa, 0xa0, 0x8f, 0x67, 0x03, 0xd4, 0x7a, 0xdd, 0x6e, 0xeb, 0x04, 0xdd, 0xaf, 0xfe, 0x63, 0x0a,
+	0x72, 0xf5, 0x89, 0x6f, 0xf2, 0x4f, 0x36, 0xde, 0x40, 0xa9, 0x5f, 0xba, 0x81, 0xe2, 0xee, 0xc9,
+	0x0d, 0x34, 0xf7, 0xc9, 0xad, 0x44, 0x9f, 0x5c, 0xf5, 0xe4, 0xad, 0x5f, 0x1b, 0x82, 0x62, 0xbb,
+	0xd9, 0x6a, 0x35, 0x35, 0x45, 0x56, 0x3b, 0x75, 0x0d, 0xa5, 0xd8, 0xf4, 0xe2, 0x42, 0x9a, 0x15,
+	0xda, 0xcd, 0x4e, 0x4f, 0x57, 0x34, 0x94, 0x61, 0x82, 0x6a, 0xa8, 0x3d, 0xc2, 0x3e, 0xb8, 0x1c,
+	0x64, 0xeb, 0xd2, 0x89, 0x86, 0x56, 0xaa, 0x7f, 0x4c, 0x01, 0x5d, 0xde, 0x2f, 0x58, 0x82, 0x95,
+	0x49, 0x70, 0x6a, 0x58, 0x7c, 0x02, 0x85, 0xbd, 0x1f, 0x2d, 0xb8, 0xcf, 0xb6, 0x7b, 0xc1, 0xa9,
+	0x4c, 0xb2, 0x93, 0xe0, 0x54, 0x8e, 0x29, 0x4c, 0x3e, 0x91, 0xe5, 0x28, 0x24, 0x4e, 0x21, 0xe1,
+	0x16, 0xe4, 0x2c, 0x3a, 0x1c, 0x4e, 0x86, 0xa6, 0x5f, 0xce, 0x70, 0x96, 0x9d, 0x45, 0x59, 0xe4,
+	0x08, 0x47, 0xa6, 0x0c, 0xf8, 0xa7, 0x90, 0x3d, 0xb3, 0x47, 0x4e, 0xa4, 0x3a, 0x16, 0x1e, 0x4f,
+	0xc3, 0x1e, 0x39, 0x84, 0x23, 0xf1, 0x37, 0x90, 0xef, 0x9f, 0x1b, 0xa2, 0x73, 0x79, 0x85, 0xd3,
+	0x7c, 0xb5, 0x28, 0xcd, 0x81, 0xe3, 0x8f, 0x58, 0x85, 0xcc, 0xfb, 0x44, 0x0b, 0x4f, 0x72, 0xfd,
+	0x73, 0x51, 0x81, 0x65, 0x58, 0x31, 0x27, 0xb6, 0xe3, 0x96, 0x57, 0x39, 0xef, 0x6f, 0x2e, 0xca,
+	0x2b, 0x31, 0x10, 0x11, 0x58, 0x7c, 0x00, 0xab, 0x96, 0x39, 0xa2, 0xbe, 0x59, 0x5e, 0xe3, 0x2c,
+	0xdb, 0x0b, 0x8b, 0x8b, 0xa3, 0x48, 0x84, 0xc6, 0xdf, 0x42, 0xc9, 0xb4, 0x2c, 0x3a, 0xa4, 0xbe,
+	0x3b, 0xa2, 0x21, 0xf5, 0xcb, 0x39, 0x4e, 0xf7, 0x64, 0xe1, 0x41, 0x25, 0xc1, 0x64, 0x9e, 0x0b,
+	0xab, 0x90, 0x1f, 0x5c, 0xf8, 0x6e, 0x60, 0xb9, 0x1e, 0x2d, 0xe7, 0x39, 0xf1, 0xee, 0xa2, 0xc4,
+	0x87, 0x31, 0x90, 0xcc, 0x38, 0xf0, 0x0b, 0x28, 0x8e, 0xcc, 0xc1, 0x98, 0x86, 0xd1, 0x60, 0x81,
+	0x73, 0x3e, 0x5e, 0x94, 0xb3, 0x9d, 0xc0, 0x92, 0x39, 0x26, 0x7c, 0x04, 0xc5, 0xa1, 0x33, 0x38,
+	0x0b, 0x8d, 0x80, 0x8e, 0x03, 0xd7, 0x2f, 0x17, 0x38, 0xf3, 0xa3, 0x45, 0x99, 0x5b, 0x0c, 0xab,
+	0x71, 0x28, 0x29, 0x0c, 0x67, 0x05, 0xb6, 0x4e, 0x81, 0xe5, 0x53, 0x3a, 0x2e, 0x17, 0x97, 0x5b,
+	0x27, 0x8d, 0xa3, 0x48, 0x84, 0xc6, 0x1a, 0x14, 0xfa, 0xae, 0x3f, 0x32, 0xfa, 0xa6, 0x15, 0xba,
+	0x7e, 0xb9, 0xc4, 0xc9, 0xf6, 0x16, 0xfe, 0x24, 0x5d, 0x7f, 0x74, 0xc0, 0x91, 0x04, 0xfa, 0xd3,
+	0x67, 0x3e, 0xb8, 0xf0, 0x62, 0x38, 0x09, 0xca, 0xeb, 0x4b, 0x0e, 0x8e, 0xa3, 0x48, 0x84, 0x66,
+	0xbb, 0xf7, 0x25, 0xbd, 0x38, 0x75, 0x4d, 0xdf, 0x2e, 0x6f, 0x2c, 0xb7, 0x7b, 0x9f, 0x45, 0x38,
+	0x32, 0x65, 0x60, 0xa3, 0x1a, 0xd1, 0x91, 0xeb, 0x5f, 0x94, 0xd1, 0x72, 0xa3, 0x6a, 0x73, 0x14,
+	0x89, 0xd0, 0xb8, 0x07, 0x85, 0xbe, 0x33, 0x1e, 0x50, 0xdf, 0xf3, 0x9d, 0x71, 0x58, 0xde, 0x5c,
+	0x6e, 0x45, 0x0f, 0x66, 0x50, 0x92, 0xe4, 0xc1, 0x4d, 0x58, 0x0b, 0x42, 0xd7, 0x37, 0x07, 0xb4,
+	0x8c, 0x39, 0xe5, 0xc3, 0xc5, 0xa5, 0xc6, 0x61, 0x24, 0xc6, 0xb3, 0xfd, 0x71, 0x3a, 0x9c, 0xd0,
+	0xd0, 0x75, 0xc3, 0xb3, 0xf2, 0xad, 0xe5, 0xf6, 0x47, 0x2d, 0x06, 0x92, 0x19, 0x07, 0x26, 0x00,
+	0xa7, 0xa6, 0xef, 0xd3, 0xe1, 0xcf, 0x4c, 0xeb, 0x65, 0x79, 0x6b, 0xb9, 0x8f, 0xa4, 0xc6, 0x91,
+	0x5f, 0x9b, 0xd6, 0x4b, 0x92, 0x60, 0x61, 0xca, 0xf4, 0xdc, 0xe9, 0x3b, 0xe5, 0xbb, 0xcb, 0x29,
+	0xd3, 0x63, 0xa7, 0xef, 0x10, 0x8e, 0xc4, 0xcf, 0xa1, 0xe8, 0xb9, 0xe7, 0xd4, 0x37, 0x4e, 0x27,
+	0x61, 0xe8, 0x8e, 0xcb, 0xb7, 0x97, 0x5b, 0xd6, 0x1a, 0x47, 0x91, 0x02, 0xe7, 0x10, 0x05, 0xac,
+	0x41, 0xe9, 0x95, 0x3b, 0x9c, 0x8c, 0x68, 0xcc, 0x79, 0xe7, 0x5a, 0x9c, 0x45, 0x41, 0x12, 0x91,
+	0xbe, 0x84, 0x5b, 0x74, 0x74, 0x4a, 0x6d, 0x9b, 0xda, 0x4c, 0xf5, 0x87, 0xbe, 0x3b, 0x1c, 0x52,
+	0xbf, 0x5c, 0xe6, 0xd4, 0x5f, 0x2c, 0x4a, 0xad, 0x44, 0x14, 0xf2, 0x94, 0x81, 0x60, 0xfa, 0x46,
+	0x1d, 0x9e, 0xc0, 0xdd, 0xd0, 0x9f, 0x04, 0x21, 0xb5, 0x0d, 0x6f, 0x68, 0x86, 0x7c, 0x73, 0x8f,
+	0x5c, 0x7b, 0x32, 0xa4, 0xe5, 0xf7, 0x97, 0x3b, 0x6f, 0x74, 0x41, 0xd3, 0x8d, 0x58, 0xda, 0x9c,
+	0x84, 0xdc, 0x0e, 0xaf, 0xaa, 0x66, 0x5f, 0xc8, 0x99, 0x1b, 0x9e, 0xbb, 0xbe, 0xed, 0x8c, 0x07,
+	0xe5, 0xca, 0x72, 0x5f, 0x48, 0x63, 0x8a, 0x24, 0x09, 0x16, 0xb6, 0x23, 0x6c, 0x27, 0xf0, 0x86,
+	0xe6, 0x45, 0xf9, 0xde, 0x72, 0x3b, 0xa2, 0x2e, 0x60, 0x24, 0xc6, 0x33, 0x4d, 0x12, 0xba, 0x13,
+	0xeb, 0xcc, 0x33, 0xed, 0xf2, 0x07, 0xcb, 0x69, 0x12, 0x3d, 0xc2, 0x91, 0x29, 0x03, 0xf6, 0xe1,
+	0xce, 0xc8, 0xb1, 0x7c, 0xd7, 0x3b, 0x73, 0xc7, 0xd4, 0x18, 0x4d, 0x42, 0x6a, 0x04, 0xe7, 0x4e,
+	0x68, 0x9d, 0x95, 0x3f, 0xe4, 0xdc, 0x5f, 0x2e, 0xac, 0x59, 0xa6, 0x2c, 0xed, 0x49, 0x48, 0x35,
+	0xce, 0x41, 0xb6, 0x46, 0x57, 0xd4, 0x32, 0x61, 0x9c, 0x9a, 0x61, 0x48, 0xfd, 0x8b, 0xf2, 0x47,
+	0xcb, 0x09, 0xa3, 0x26, 0x60, 0x24, 0xc6, 0xe3, 0xef, 0x60, 0xdd, 0xf3, 0x9d, 0x57, 0xa6, 0x75,
+	0x61, 0x44, 0x67, 0xc8, 0xc7, 0xcb, 0x1d, 0xce, 0x5d, 0x81, 0x8e, 0x8e, 0x92, 0x92, 0x97, 0x2c,
+	0xe2, 0xaf, 0x20, 0x13, 0xb8, 0x56, 0xf9, 0x3e, 0xa7, 0xfc, 0x8d, 0x85, 0x75, 0x98, 0x6b, 0x11,
+	0x86, 0xc3, 0x06, 0x14, 0x6d, 0x8f, 0x6d, 0x93, 0x57, 0xd4, 0x67, 0x47, 0xf1, 0xaf, 0x2d, 0x27,
+	0xd1, 0x68, 0xe5, 0xbb, 0xae, 0x1f, 0xca, 0x31, 0x07, 0x29, 0xd8, 0xde, 0xb4, 0xc0, 0xc6, 0x77,
+	0xe6, 0x05, 0xe5, 0xea, 0x72, 0xe3, 0x6b, 0x78, 0x01, 0x61, 0x38, 0x06, 0xf7, 0x5c, 0x5a, 0xfe,
+	0xf5, 0xe5, 0xe0, 0x5d, 0x57, 0x21, 0x0c, 0xc7, 0xec, 0x01, 0xa1, 0xb3, 0x82, 0x89, 0xe7, 0x0d,
+	0x2f, 0xca, 0x9f, 0x2c, 0x77, 0x7a, 0x74, 0x19, 0x56, 0xe3, 0xd0, 0x48, 0x71, 0x89, 0x02, 0x53,
+	0xf9, 0x9e, 0xef, 0xbe, 0x76, 0x46, 0x4e, 0x78, 0x51, 0xfe, 0x74, 0x39, 0x95, 0xdf, 0x8d, 0x81,
+	0x64, 0xc6, 0x51, 0xf9, 0x10, 0x56, 0x64, 0x77, 0x32, 0x0e, 0x67, 0xee, 0x04, 0x33, 0xe4, 0x4b,
+	0x91, 0x3b, 0x51, 0xf9, 0x87, 0x34, 0x64, 0x99, 0xa9, 0xce, 0xac, 0x4e, 0x8b, 0xf5, 0x8b, 0xec,
+	0xfc, 0x85, 0xad, 0x4e, 0x4e, 0x4e, 0x04, 0x16, 0x1f, 0xc2, 0x8a, 0xe7, 0xfa, 0x61, 0x50, 0x4e,
+	0x73, 0x6f, 0x7f, 0x77, 0x19, 0x67, 0x61, 0x9b, 0xad, 0x35, 0x11, 0xf8, 0xca, 0xcf, 0x53, 0x90,
+	0x65, 0x65, 0xdc, 0x85, 0x9c, 0xe7, 0x06, 0x0e, 0x0f, 0x21, 0x08, 0x17, 0xea, 0xf1, 0xe2, 0x32,
+	0xf6, 0xc3, 0x6e, 0x84, 0x25, 0x53, 0x16, 0x2c, 0xc3, 0xba, 0x33, 0xb6, 0xe9, 0x6b, 0xc3, 0x7d,
+	0x45, 0x7d, 0xdf, 0xb1, 0x69, 0xe4, 0x96, 0x7c, 0xb0, 0x2d, 0xe2, 0x24, 0xdb, 0x71, 0x9c, 0x64,
+	0xbb, 0xd7, 0x1c, 0x87, 0x8f, 0xf6, 0x8e, 0x98, 0x9c, 0x48, 0x89, 0x63, 0xd4, 0x08, 0x52, 0x79,
+	0xc6, 0xa5, 0x26, 0xdd, 0x88, 0xd4, 0x2a, 0x7f, 0xb0, 0x02, 0xb9, 0xd8, 0x4b, 0x61, 0xfa, 0xc1,
+	0xf3, 0x69, 0x40, 0x23, 0xce, 0xf5, 0xc5, 0xf5, 0x43, 0x57, 0xc0, 0x48, 0x8c, 0x67, 0x2b, 0x3e,
+	0x72, 0x6d, 0x3a, 0x8c, 0x63, 0x16, 0xbc, 0x80, 0x9f, 0x47, 0x0e, 0x69, 0x86, 0xb3, 0x7f, 0xb5,
+	0xac, 0x1b, 0x35, 0x7d, 0x48, 0x78, 0xaa, 0xdb, 0x70, 0xcb, 0x0c, 0x43, 0xd3, 0x3a, 0x33, 0x4c,
+	0x6f, 0x6c, 0xf8, 0xf4, 0x77, 0x26, 0x8e, 0x4f, 0x6d, 0xee, 0x5e, 0xe5, 0xc8, 0xa6, 0x68, 0x92,
+	0xbc, 0x31, 0x89, 0x1a, 0xf0, 0x9f, 0xa6, 0xe0, 0x23, 0xfb, 0x62, 0x6c, 0x8e, 0x1c, 0xcb, 0x10,
+	0xbb, 0xc8, 0xa7, 0xf6, 0xc4, 0x62, 0xcb, 0x33, 0xef, 0x53, 0xb5, 0x96, 0x1e, 0x5d, 0x5d, 0xd0,
+	0xf2, 0xfd, 0x45, 0x62, 0x52, 0xe1, 0x58, 0x91, 0x7b, 0xf6, 0xdb, 0x1b, 0x2b, 0xbf, 0x48, 0xc1,
+	0xbd, 0x5f, 0x02, 0xc6, 0x5b, 0x90, 0x1d, 0x78, 0x8e, 0x2b, 0x76, 0x4f, 0xe3, 0x3d, 0xc2, 0x4b,
+	0xf8, 0x53, 0x28, 0x31, 0xa9, 0x8e, 0x8c, 0x91, 0x39, 0x36, 0x07, 0xd4, 0xe7, 0xa2, 0xce, 0x35,
+	0xde, 0x23, 0x45, 0x5e, 0xdd, 0x16, 0xb5, 0xf8, 0xc7, 0x50, 0x08, 0xcd, 0xd3, 0x21, 0x0d, 0xd9,
+	0x11, 0x4e, 0x23, 0x0f, 0xb6, 0xf2, 0xc6, 0x07, 0x57, 0x73, 0xdd, 0xa1, 0xf8, 0xdc, 0x40, 0x74,
+	0x6f, 0xbb, 0x36, 0xad, 0xdd, 0x7f, 0x97, 0xb0, 0xaa, 0x35, 0x28, 0x26, 0x57, 0x05, 0x6f, 0x40,
+	0xa1, 0xa3, 0xea, 0x46, 0x97, 0x28, 0x9a, 0xd2, 0xd1, 0x45, 0x68, 0x60, 0x1a, 0x9b, 0x69, 0xe9,
+	0x8a, 0x08, 0x47, 0x4d, 0x6b, 0x9e, 0x1c, 0xa2, 0x74, 0xe5, 0x39, 0x64, 0x99, 0x7f, 0x7b, 0x83,
+	0xdf, 0x5f, 0x45, 0x82, 0xdb, 0x57, 0xfa, 0xba, 0x57, 0xab, 0x22, 0x8c, 0x21, 0x3b, 0x32, 0x83,
+	0x97, 0x5c, 0x84, 0x25, 0xc2, 0x9f, 0x2b, 0x7f, 0x55, 0x84, 0x15, 0xee, 0xd7, 0xe2, 0x13, 0x28,
+	0x70, 0xcf, 0xd6, 0xb0, 0x5c, 0x9b, 0x5a, 0xd1, 0xd8, 0xf6, 0x97, 0xf2, 0x8d, 0xc5, 0x5f, 0x99,
+	0xe1, 0x09, 0x98, 0xd3, 0x67, 0xfc, 0x02, 0x0a, 0x81, 0x47, 0xcd, 0x97, 0xd4, 0x37, 0xcc, 0x91,
+	0x17, 0x85, 0x3a, 0x3f, 0x5f, 0x92, 0x7a, 0xe4, 0x0d, 0x9d, 0xbe, 0x43, 0x7d, 0x02, 0x11, 0x97,
+	0x34, 0xf2, 0xb0, 0x09, 0x1b, 0x67, 0xd4, 0xb4, 0x85, 0x7d, 0x21, 0x06, 0x9e, 0xf9, 0x9e, 0x03,
+	0x5f, 0x9f, 0x12, 0x8a, 0xc1, 0xeb, 0xb0, 0x3e, 0x74, 0x6c, 0x63, 0x66, 0x6b, 0x44, 0x51, 0x8d,
+	0x25, 0x55, 0x51, 0x69, 0xe8, 0xd8, 0x33, 0x2b, 0x06, 0x1f, 0xc1, 0xc6, 0xa9, 0x19, 0xd0, 0x24,
+	0xed, 0xca, 0x75, 0x68, 0xd7, 0x19, 0x4b, 0x82, 0xf7, 0x18, 0x36, 0x13, 0xa2, 0x16, 0x12, 0x8b,
+	0xe2, 0x1c, 0x3f, 0x7c, 0x0b, 0xb3, 0x3c, 0x0d, 0x67, 0xcf, 0x64, 0x8c, 0x66, 0x32, 0x16, 0x35,
+	0xf8, 0x5b, 0x28, 0x5a, 0xa6, 0x6f, 0x47, 0x3b, 0x22, 0x28, 0xaf, 0xf1, 0x03, 0x68, 0x49, 0x31,
+	0xcb, 0xa6, 0x6f, 0x47, 0xba, 0xa2, 0x60, 0x4d, 0x9f, 0x03, 0x6c, 0x41, 0xc1, 0xf2, 0xcd, 0x20,
+	0xd6, 0x4d, 0x39, 0xbe, 0x84, 0xb5, 0x6b, 0x2d, 0x21, 0xeb, 0xa6, 0x85, 0xfe, 0xc4, 0x62, 0x6d,
+	0x04, 0x18, 0x6d, 0xa4, 0x80, 0xfe, 0x2e, 0x03, 0x30, 0x1b, 0x00, 0xbe, 0x07, 0x79, 0x3e, 0xa1,
+	0xb1, 0x39, 0xa2, 0x51, 0x20, 0x3a, 0xc7, 0x2a, 0x3a, 0xe6, 0x88, 0xe2, 0x1f, 0x03, 0x4c, 0xac,
+	0x91, 0x11, 0x4c, 0xfa, 0x7d, 0xe7, 0xf5, 0x5b, 0xcf, 0x2f, 0x2d, 0xf4, 0x9d, 0xf1, 0x40, 0x28,
+	0x94, 0xfc, 0xc4, 0x1a, 0x69, 0xbc, 0x3b, 0x36, 0x05, 0x38, 0x9a, 0x4c, 0xe6, 0xc6, 0x26, 0xc3,
+	0x5e, 0x11, 0x0d, 0xfe, 0x92, 0xc0, 0xb2, 0xbf, 0x0a, 0x81, 0xe1, 0x73, 0xb8, 0x13, 0xb8, 0x93,
+	0xb1, 0x6d, 0x70, 0x39, 0x39, 0x63, 0x27, 0x4c, 0x1e, 0x1e, 0x37, 0xf3, 0xbe, 0x5b, 0xfc, 0x0d,
+	0x6c, 0x59, 0x9a, 0x63, 0x27, 0x14, 0xad, 0xd5, 0x9f, 0xa7, 0x00, 0x66, 0x3b, 0x12, 0xdf, 0x85,
+	0x5b, 0x3c, 0x90, 0x6f, 0xc8, 0x6a, 0x5d, 0x91, 0xe7, 0xc3, 0xff, 0x44, 0x7f, 0xf2, 0xd9, 0xfe,
+	0x1e, 0x4a, 0xe1, 0x22, 0xe4, 0xa4, 0x96, 0xcc, 0x0a, 0x4d, 0x11, 0x8b, 0x8d, 0x4a, 0x22, 0xfa,
+	0x5f, 0x97, 0x3e, 0xdf, 0xdb, 0x7d, 0x8a, 0x72, 0xb8, 0x04, 0xf9, 0x8e, 0xd4, 0xdb, 0xdf, 0x6f,
+	0xed, 0x3d, 0xa9, 0x21, 0x60, 0xfd, 0x64, 0xed, 0xf1, 0x5e, 0xeb, 0xf1, 0x1e, 0x2a, 0xe0, 0x75,
+	0x80, 0x98, 0xe2, 0x48, 0x43, 0x45, 0xd6, 0x78, 0x2c, 0xd7, 0x9f, 0x3e, 0xda, 0x7f, 0x82, 0x4a,
+	0xd5, 0x6c, 0x2e, 0x8b, 0xd6, 0xaa, 0xd9, 0x5c, 0x1e, 0xe5, 0xab, 0x7f, 0x91, 0x82, 0xfc, 0x6c,
+	0x67, 0xdc, 0x86, 0x4d, 0xa9, 0xdd, 0x6d, 0x35, 0x0f, 0x9a, 0x0a, 0x49, 0x0c, 0xae, 0x08, 0xb9,
+	0xb6, 0xf4, 0xe2, 0xe9, 0xfe, 0xa3, 0x27, 0x9f, 0x8b, 0xac, 0x83, 0x28, 0x7d, 0xfe, 0x08, 0xad,
+	0xcc, 0x4a, 0x9f, 0xed, 0x88, 0xb4, 0x03, 0xd1, 0x77, 0x77, 0x76, 0x9f, 0xa0, 0xb5, 0x68, 0xe0,
+	0xbb, 0x3b, 0xbb, 0xbb, 0x28, 0xcf, 0x0a, 0xa2, 0xa1, 0x2b, 0x86, 0x2a, 0x5a, 0x9e, 0xa2, 0xc2,
+	0x8c, 0xe0, 0xe9, 0x0e, 0x2a, 0x56, 0xb3, 0xb9, 0x14, 0xca, 0x54, 0xb3, 0xb9, 0x1c, 0xca, 0x55,
+	0x55, 0xd8, 0xba, 0x4a, 0xd0, 0xf8, 0x63, 0xb8, 0x17, 0x0b, 0xb1, 0x73, 0xd0, 0x3c, 0x34, 0x34,
+	0x9d, 0xf4, 0x64, 0xbd, 0x47, 0x14, 0xa3, 0xa3, 0x76, 0x14, 0x21, 0xcc, 0xba, 0xa2, 0x35, 0x0f,
+	0x3b, 0x28, 0xc5, 0x13, 0x21, 0x6a, 0xbb, 0xad, 0x76, 0x50, 0xba, 0xf2, 0x67, 0x6b, 0xb0, 0x2a,
+	0x62, 0x96, 0x58, 0x85, 0x35, 0x9b, 0xbe, 0x72, 0x2c, 0x1a, 0x94, 0xb3, 0x7c, 0xfb, 0x3f, 0x59,
+	0x2e, 0xe8, 0xb9, 0x5d, 0xe7, 0x68, 0x12, 0xb3, 0x54, 0xfe, 0x27, 0x03, 0xab, 0xa2, 0x0e, 0x1f,
+	0x41, 0xde, 0x19, 0x87, 0xd4, 0xef, 0x9b, 0x56, 0x9c, 0x0c, 0xdb, 0x5f, 0x92, 0xbd, 0x19, 0xe3,
+	0xc9, 0x8c, 0x0a, 0xb7, 0x61, 0xb5, 0x6f, 0x5a, 0xcc, 0xd7, 0x16, 0x1b, 0x71, 0xd9, 0x21, 0x1f,
+	0x70, 0x30, 0x89, 0x48, 0xf0, 0x77, 0x50, 0x70, 0x7d, 0x87, 0x8e, 0x43, 0x7e, 0xd0, 0x46, 0x1b,
+	0xef, 0x8b, 0x25, 0x39, 0xd5, 0x19, 0x03, 0x49, 0xd2, 0xb1, 0x73, 0xbb, 0x3f, 0x34, 0x07, 0x01,
+	0xdf, 0x60, 0x25, 0x22, 0x0a, 0x18, 0x41, 0xc6, 0xb1, 0x83, 0xf2, 0xea, 0xfd, 0xcc, 0x83, 0x3c,
+	0x61, 0x8f, 0xf8, 0x28, 0xe1, 0x98, 0x0a, 0x7f, 0x7a, 0xed, 0x7a, 0xa6, 0xc4, 0xd4, 0x25, 0x15,
+	0xbe, 0xf3, 0x0b, 0x40, 0x09, 0x7f, 0x5d, 0x18, 0xde, 0xb9, 0xeb, 0x1c, 0x4b, 0x1b, 0x33, 0x1a,
+	0x5e, 0x51, 0x6d, 0x42, 0x7e, 0xba, 0x3c, 0x6c, 0xc7, 0x34, 0x3b, 0xba, 0x42, 0x0e, 0x24, 0x39,
+	0x99, 0x5f, 0xd9, 0x84, 0x52, 0xa2, 0x5a, 0xab, 0xa1, 0x14, 0xc6, 0xb0, 0x3e, 0xab, 0x6a, 0x37,
+	0xbb, 0x4d, 0x94, 0xae, 0xfe, 0x16, 0xac, 0x8a, 0x45, 0x61, 0xad, 0x07, 0x92, 0xdc, 0xec, 0x1c,
+	0xce, 0x27, 0x69, 0xa2, 0xba, 0x03, 0xa2, 0x76, 0xf4, 0x28, 0x31, 0x28, 0x6a, 0x6a, 0x92, 0xfc,
+	0x0c, 0xa5, 0xab, 0xe7, 0x50, 0x48, 0xac, 0x00, 0x53, 0x2f, 0x2a, 0x69, 0x2a, 0x1d, 0x5d, 0xd2,
+	0x9b, 0x6a, 0x67, 0x7e, 0x3c, 0xc9, 0x86, 0x1d, 0x31, 0x9e, 0x64, 0xd5, 0xd3, 0x1d, 0x94, 0xc6,
+	0xb7, 0x60, 0x23, 0x59, 0xb7, 0xbb, 0xbf, 0x83, 0x32, 0x97, 0x2b, 0xf7, 0x3e, 0xdf, 0x41, 0xd9,
+	0x6a, 0x1b, 0x56, 0x0e, 0xf8, 0x8a, 0xae, 0x03, 0x1c, 0xb4, 0xa4, 0x43, 0x2d, 0xde, 0x7b, 0x77,
+	0xe1, 0x96, 0x28, 0x6b, 0xbd, 0x6e, 0x57, 0x25, 0xba, 0xb1, 0xbb, 0xb3, 0xbf, 0xd3, 0x45, 0x29,
+	0x7c, 0x0f, 0xee, 0xce, 0x37, 0x48, 0x3d, 0x5d, 0x3d, 0x50, 0xe5, 0x9e, 0x86, 0xd2, 0x95, 0x7f,
+	0x4f, 0x41, 0x69, 0x2e, 0xfc, 0x8f, 0xbf, 0x83, 0x4d, 0x66, 0xab, 0xcc, 0x27, 0x14, 0xae, 0x69,
+	0x65, 0xa2, 0xa1, 0x63, 0xcf, 0xb3, 0xff, 0x36, 0x60, 0x6e, 0xb3, 0xcc, 0xd3, 0xa7, 0xaf, 0x47,
+	0xbf, 0xc9, 0xa8, 0xe6, 0xf8, 0x99, 0x87, 0x90, 0x9f, 0x66, 0x1d, 0xb0, 0x0e, 0xcc, 0x64, 0x32,
+	0x66, 0xf9, 0x8b, 0x6b, 0xce, 0xa3, 0x38, 0x74, 0xec, 0x19, 0xeb, 0x11, 0x70, 0x8b, 0x29, 0x41,
+	0x7b, 0xcd, 0xf1, 0x97, 0x18, 0xcd, 0x94, 0xb7, 0xf2, 0xaf, 0x29, 0x28, 0x26, 0xb3, 0x1b, 0xf8,
+	0x1b, 0x40, 0xdc, 0x6c, 0x4c, 0x66, 0x4b, 0xae, 0x39, 0x83, 0x0d, 0x66, 0x3a, 0x26, 0xb9, 0xbf,
+	0x83, 0x4d, 0x61, 0x3c, 0x26, 0xc9, 0xaf, 0x39, 0x0f, 0xc4, 0x0d, 0xc8, 0x04, 0x51, 0xe5, 0x9f,
+	0x53, 0x50, 0x48, 0xa4, 0x53, 0xf0, 0x0b, 0x60, 0x03, 0x30, 0x78, 0x52, 0x25, 0x4a, 0xce, 0x5c,
+	0x73, 0x22, 0xcc, 0x90, 0x6e, 0xcd, 0x68, 0x98, 0x8c, 0xf8, 0x3c, 0x92, 0xd4, 0xd7, 0x9c, 0x06,
+	0xb7, 0xa6, 0x13, 0xdc, 0x95, 0x7f, 0x4b, 0xc1, 0x6a, 0x14, 0x68, 0xb3, 0x00, 0x79, 0xe6, 0x98,
+	0x0e, 0x0d, 0xcf, 0x77, 0x3d, 0xea, 0x87, 0x0e, 0x0d, 0x22, 0x0f, 0x71, 0xff, 0x9d, 0x26, 0x71,
+	0x1c, 0x26, 0x63, 0xf8, 0xed, 0xee, 0x14, 0x4f, 0x36, 0x38, 0xe3, 0xac, 0x82, 0x7d, 0xae, 0x3c,
+	0xec, 0xc9, 0xe3, 0x55, 0xae, 0x1f, 0x5e, 0x77, 0x22, 0x45, 0xce, 0xa2, 0x09, 0x92, 0xaf, 0xd9,
+	0xc9, 0x9e, 0xae, 0xfc, 0x51, 0x1a, 0x60, 0x96, 0x41, 0xc2, 0xa7, 0xf3, 0xa9, 0x28, 0xb1, 0x18,
+	0xd2, 0xf2, 0xa9, 0xa8, 0xc4, 0x23, 0x8f, 0x35, 0x24, 0x32, 0x53, 0xd5, 0x3f, 0x4f, 0xc1, 0xfa,
+	0x7c, 0x33, 0x57, 0x52, 0xb3, 0x0b, 0x16, 0x09, 0x3d, 0x59, 0x82, 0xbc, 0xdc, 0x92, 0xda, 0x5a,
+	0x43, 0x69, 0xb5, 0x22, 0xcf, 0x57, 0xe4, 0xf1, 0x9b, 0xb5, 0x96, 0x82, 0xd2, 0x4c, 0xdb, 0xd5,
+	0x15, 0x5d, 0x92, 0x1b, 0x12, 0x2b, 0x67, 0x58, 0x59, 0x6e, 0x10, 0xb5, 0xad, 0xd4, 0x24, 0x4d,
+	0x41, 0x59, 0x8e, 0x17, 0x65, 0xf5, 0x05, 0x5a, 0x49, 0x14, 0x9b, 0x3a, 0x5a, 0xe5, 0x74, 0xbc,
+	0xa8, 0xb5, 0x24, 0x5d, 0x41, 0x6b, 0x95, 0xbf, 0x61, 0x2b, 0x2b, 0xf2, 0x5e, 0xcf, 0xa7, 0xf9,
+	0x33, 0x21, 0x84, 0xa7, 0xcb, 0xe5, 0xcf, 0xa2, 0x7f, 0x7c, 0xf2, 0x11, 0x51, 0xf5, 0x00, 0x60,
+	0x56, 0xcb, 0xf4, 0xbd, 0xb8, 0x38, 0x92, 0x98, 0x6e, 0x0e, 0xb2, 0x5c, 0x6d, 0x73, 0x9b, 0x93,
+	0x9f, 0x4e, 0x1d, 0xa9, 0x85, 0xd2, 0xac, 0xa4, 0xbc, 0x88, 0x4a, 0x99, 0xca, 0xff, 0x66, 0x20,
+	0x17, 0xe7, 0xd6, 0xf0, 0x29, 0x94, 0xe2, 0xec, 0x9a, 0x91, 0xb8, 0xac, 0xf0, 0xd5, 0xb2, 0x49,
+	0xba, 0xe9, 0x03, 0x1f, 0x72, 0xf1, 0x65, 0xa2, 0x84, 0xdb, 0x90, 0x3f, 0x35, 0xad, 0x97, 0x7c,
+	0x2f, 0x5d, 0xf7, 0xe3, 0x9b, 0x31, 0x60, 0x72, 0x29, 0x67, 0x94, 0xb9, 0x1e, 0xe3, 0x5c, 0xd2,
+	0xa8, 0x0b, 0x85, 0xf1, 0x64, 0x44, 0x7d, 0xc7, 0x32, 0x3c, 0xd3, 0x8e, 0x8c, 0xa7, 0xa5, 0x29,
+	0x21, 0xe2, 0xe8, 0x9a, 0x36, 0xde, 0x81, 0xad, 0xe9, 0x90, 0x8d, 0x49, 0x40, 0x7d, 0x23, 0x08,
+	0xa9, 0xc7, 0xec, 0xa7, 0xcc, 0x83, 0x14, 0xc1, 0xd3, 0xb6, 0x5e, 0x40, 0x7d, 0x8d, 0xb5, 0x54,
+	0x9f, 0x43, 0x31, 0x29, 0x44, 0xfc, 0x3e, 0xdc, 0x8e, 0xaf, 0x03, 0x19, 0x97, 0xee, 0x7b, 0x24,
+	0x97, 0x37, 0x35, 0x5d, 0xf6, 0x37, 0xbe, 0xe7, 0x8a, 0x06, 0xab, 0x22, 0xf3, 0x29, 0x62, 0x3b,
+	0x6e, 0xdf, 0x19, 0xd2, 0x28, 0x5e, 0xf9, 0xf0, 0x9d, 0x0a, 0x46, 0x20, 0x99, 0x6a, 0x61, 0x30,
+	0x12, 0xe3, 0x2b, 0xff, 0x9d, 0x86, 0x42, 0x22, 0x05, 0x8a, 0x5f, 0x40, 0x6e, 0xe8, 0x5a, 0x66,
+	0x22, 0x4e, 0xfb, 0xe5, 0x35, 0x32, 0xa9, 0xdb, 0xad, 0x88, 0x83, 0x4c, 0xd9, 0x98, 0xd1, 0x29,
+	0x32, 0xc7, 0x51, 0x14, 0x53, 0x7c, 0xb2, 0x1f, 0x02, 0xf8, 0xae, 0xf1, 0x8a, 0xfa, 0x81, 0x13,
+	0xad, 0x7e, 0x9e, 0xe4, 0x7d, 0xf7, 0x48, 0x54, 0x54, 0xff, 0x25, 0x05, 0xb9, 0xd6, 0x8c, 0x01,
+	0xb5, 0x54, 0xf9, 0xb2, 0xf9, 0xf4, 0x3e, 0xdc, 0x4e, 0x5e, 0x2c, 0x32, 0x74, 0xb5, 0x6b, 0xb4,
+	0x94, 0x03, 0x66, 0x92, 0x95, 0x61, 0x6b, 0x2a, 0xf4, 0x9a, 0xaa, 0xeb, 0x6a, 0x5b, 0xb4, 0xa4,
+	0xe7, 0x96, 0x23, 0x6a, 0x21, 0xcd, 0xc3, 0x86, 0x8e, 0x32, 0xf8, 0x0e, 0xe0, 0xd9, 0x4a, 0xa9,
+	0xdd, 0xa8, 0x3e, 0x7b, 0x39, 0x18, 0xb7, 0xc2, 0xd6, 0x87, 0xb7, 0x19, 0x5a, 0xb3, 0xae, 0xa0,
+	0x55, 0xa6, 0x50, 0x18, 0xbb, 0x28, 0x72, 0x17, 0x2b, 0xee, 0x9b, 0xab, 0xfc, 0x1e, 0xac, 0x45,
+	0x59, 0x61, 0x7c, 0x0c, 0xc5, 0x28, 0x2f, 0x9c, 0xdc, 0xa3, 0x8f, 0xdf, 0xb9, 0x82, 0x11, 0x3e,
+	0xfe, 0xcf, 0xb7, 0x66, 0x21, 0x98, 0x15, 0xf0, 0x5d, 0x58, 0x0b, 0x9c, 0xdf, 0xa5, 0xc6, 0xe0,
+	0x34, 0x0a, 0xbd, 0xad, 0xb2, 0xe2, 0xe1, 0x69, 0xe5, 0xaf, 0x53, 0x90, 0x9f, 0xa6, 0x91, 0x71,
+	0x03, 0xf2, 0xd3, 0x9b, 0x85, 0xd1, 0xe7, 0xf3, 0xee, 0x90, 0x4d, 0x22, 0x0b, 0x3d, 0x05, 0x27,
+	0x43, 0x8c, 0xe9, 0xef, 0x19, 0x62, 0x3c, 0x06, 0x98, 0xa5, 0xa5, 0x6f, 0x32, 0x76, 0xf9, 0x97,
+	0x69, 0xc8, 0x1e, 0x3b, 0x7d, 0x07, 0x0f, 0xa1, 0x1c, 0x1d, 0x99, 0xd4, 0x36, 0xce, 0x87, 0xe6,
+	0xd8, 0xe0, 0xf1, 0x15, 0xcb, 0x1d, 0x32, 0xad, 0x9e, 0x79, 0xb0, 0xfe, 0xd6, 0xf4, 0xe8, 0x4c,
+	0x0a, 0x8c, 0x68, 0xfb, 0xb8, 0x25, 0x75, 0xba, 0x11, 0x94, 0xdc, 0x99, 0x72, 0x1e, 0x0f, 0xcd,
+	0x71, 0x5c, 0xcd, 0x8e, 0x69, 0x38, 0x77, 0xfa, 0x8e, 0x61, 0x9d, 0x39, 0x9e, 0xc8, 0xa2, 0x2c,
+	0xe1, 0x12, 0x8a, 0xd7, 0x38, 0x7d, 0x47, 0x3e, 0x73, 0x3c, 0x92, 0x3f, 0x8f, 0x9e, 0x82, 0x6a,
+	0x07, 0x72, 0x71, 0x35, 0x73, 0x6e, 0x8e, 0x9b, 0x07, 0x4d, 0x43, 0x6e, 0x34, 0xbb, 0x89, 0xdd,
+	0xc0, 0xab, 0x89, 0xd2, 0x52, 0x34, 0xcd, 0xd8, 0xff, 0x4c, 0xa9, 0xef, 0xef, 0xec, 0xd6, 0x51,
+	0x8a, 0x6d, 0x9d, 0x69, 0x35, 0x51, 0xa4, 0x96, 0xae, 0x3c, 0x43, 0xe9, 0xca, 0x3f, 0xa5, 0x61,
+	0x35, 0xd2, 0x99, 0x6d, 0x58, 0xf5, 0xe9, 0x60, 0xb6, 0xeb, 0x9f, 0x2c, 0x97, 0x61, 0xdf, 0x26,
+	0x1c, 0x4c, 0x22, 0x12, 0x7c, 0x08, 0x59, 0x6a, 0x0f, 0x62, 0xab, 0xf7, 0xd1, 0x92, 0x64, 0x8a,
+	0x3d, 0xa0, 0x84, 0x13, 0xe0, 0x4a, 0x22, 0x6f, 0xc4, 0xb4, 0x43, 0x7a, 0x96, 0x01, 0xaa, 0x7e,
+	0x06, 0xab, 0xe2, 0xb5, 0xec, 0xfc, 0x24, 0xca, 0xe1, 0xbc, 0x5e, 0x48, 0x5e, 0xda, 0x4c, 0x5e,
+	0xc6, 0x4c, 0x57, 0x6b, 0x90, 0x65, 0x6f, 0x60, 0x3e, 0x9c, 0x52, 0x3f, 0x54, 0xe6, 0xcf, 0xdc,
+	0x48, 0x75, 0xe4, 0x61, 0x45, 0x6c, 0xfc, 0x34, 0xbf, 0x81, 0xa8, 0x76, 0x45, 0x80, 0x47, 0xe8,
+	0x0a, 0x94, 0xad, 0xfc, 0x7e, 0x16, 0xf0, 0x9b, 0x37, 0x00, 0x6e, 0x32, 0xeb, 0xf3, 0x33, 0x58,
+	0xa3, 0x96, 0x91, 0xb8, 0xb4, 0xfb, 0xfc, 0xfa, 0x37, 0x13, 0xae, 0xa8, 0x12, 0xd6, 0x08, 0xb5,
+	0xb8, 0xea, 0x38, 0x84, 0xac, 0x67, 0xfa, 0x61, 0x64, 0xae, 0x3e, 0x7a, 0xe7, 0x46, 0xb8, 0xe2,
+	0xee, 0x03, 0x27, 0xc0, 0xdf, 0xc2, 0x66, 0x74, 0x9f, 0x97, 0x8f, 0xdc, 0x32, 0xac, 0xd1, 0xb5,
+	0x0f, 0xe0, 0x8d, 0x88, 0x89, 0x8d, 0xd0, 0x92, 0x47, 0x36, 0x96, 0x20, 0x63, 0x9d, 0x3a, 0x51,
+	0x54, 0x70, 0x69, 0x3a, 0x86, 0xad, 0x7e, 0x0d, 0x77, 0xae, 0x16, 0x05, 0xf3, 0xa4, 0x15, 0xf9,
+	0xf2, 0xd1, 0x5c, 0x82, 0xbc, 0x22, 0x1b, 0xc2, 0x2e, 0x14, 0x9f, 0x91, 0x22, 0x1b, 0xc7, 0xcd,
+	0x96, 0xac, 0xa2, 0x74, 0xe5, 0xff, 0x52, 0x70, 0xfb, 0xca, 0x3b, 0x19, 0xd8, 0x87, 0x5c, 0xe8,
+	0x8d, 0x92, 0xea, 0xfd, 0xf8, 0x7b, 0x5d, 0xf2, 0xb8, 0xba, 0x96, 0xaf, 0xe0, 0x5a, 0xe8, 0x8d,
+	0xd8, 0x43, 0xf5, 0x3b, 0x78, 0xff, 0xad, 0xbd, 0xd8, 0xf6, 0xd7, 0xbb, 0xed, 0xcb, 0xb3, 0xdb,
+	0x80, 0x82, 0xde, 0x68, 0x92, 0xba, 0xd1, 0x95, 0x88, 0x7e, 0x22, 0xee, 0x99, 0x1e, 0x6a, 0xb2,
+	0xd1, 0xd8, 0xad, 0x89, 0xd8, 0xa6, 0x28, 0xd4, 0x51, 0x86, 0xe9, 0xe7, 0xc6, 0xdc, 0x45, 0x90,
+	0x9b, 0xd2, 0xcf, 0x7f, 0x9f, 0x82, 0xb5, 0xc8, 0xf9, 0xc1, 0x8d, 0xb9, 0x2b, 0xb6, 0x8f, 0x97,
+	0xbc, 0x62, 0x90, 0xb8, 0x72, 0x5b, 0xfd, 0xe6, 0xad, 0x97, 0x6b, 0x37, 0xa1, 0xc4, 0x6b, 0x12,
+	0x16, 0x57, 0x5c, 0x35, 0xb5, 0xaa, 0xd3, 0xb8, 0x02, 0x77, 0xe6, 0x7a, 0x19, 0x09, 0x8b, 0xbb,
+	0x07, 0xb9, 0xf8, 0x0a, 0xca, 0x4d, 0x0a, 0xc2, 0x84, 0xad, 0xf6, 0x5b, 0xee, 0x99, 0xdc, 0xd4,
+	0x2b, 0x7e, 0xb1, 0x0a, 0x6b, 0xd1, 0xe5, 0x93, 0x9b, 0x54, 0x54, 0x3a, 0xe4, 0x86, 0x4e, 0x9f,
+	0x86, 0xce, 0x28, 0x4e, 0xc1, 0xef, 0x2f, 0x79, 0x15, 0x66, 0xbb, 0x15, 0xe1, 0xc9, 0x94, 0x89,
+	0xb1, 0x5a, 0x67, 0xa6, 0x3f, 0x88, 0x43, 0xaa, 0xd7, 0x60, 0x95, 0x23, 0x3c, 0x99, 0x32, 0x55,
+	0xfe, 0x2b, 0x0d, 0xb9, 0xf8, 0x65, 0xb8, 0x06, 0xc5, 0xe0, 0xcc, 0xf1, 0x3c, 0x67, 0x3c, 0x30,
+	0x46, 0xce, 0x38, 0x32, 0x86, 0x3e, 0x7e, 0xc7, 0xd5, 0x6e, 0x52, 0x88, 0x41, 0x6d, 0x67, 0x8c,
+	0x15, 0x58, 0xb7, 0x29, 0xf5, 0x8c, 0x60, 0xc8, 0xfe, 0x32, 0x96, 0xf4, 0x62, 0x2c, 0x45, 0x06,
+	0xd3, 0x18, 0x8a, 0xd1, 0xfc, 0x14, 0x0a, 0xc1, 0x24, 0xf0, 0xe8, 0xd8, 0xe6, 0x1c, 0x99, 0xc5,
+	0x38, 0x20, 0xc2, 0x30, 0x86, 0x43, 0xd8, 0x18, 0x4e, 0x2c, 0xc7, 0x4e, 0x8c, 0x24, 0xbb, 0x18,
+	0x4b, 0x89, 0xe3, 0xa6, 0x43, 0xf9, 0x09, 0x80, 0x69, 0x85, 0xce, 0x2b, 0xca, 0x39, 0x56, 0x16,
+	0xe3, 0xc8, 0x0b, 0x48, 0xdb, 0x19, 0x57, 0xfe, 0x33, 0x05, 0xb9, 0x58, 0xf2, 0x49, 0x32, 0xf3,
+	0xf5, 0xa2, 0x02, 0x8e, 0xc9, 0xcc, 0xd7, 0x73, 0x72, 0x31, 0x5f, 0x2f, 0x2a, 0xdb, 0xa9, 0x5c,
+	0xcc, 0xd7, 0x97, 0x17, 0xc8, 0x7c, 0xbd, 0xa8, 0x70, 0x13, 0x0b, 0x64, 0xbe, 0xae, 0x7c, 0x03,
+	0xa5, 0xb9, 0x5b, 0x56, 0x37, 0xb9, 0x2f, 0x55, 0xc8, 0x68, 0xae, 0x85, 0x1b, 0x90, 0x8b, 0x4e,
+	0xbc, 0xd8, 0x22, 0xfd, 0xd1, 0xbb, 0x9d, 0x02, 0xd7, 0xda, 0x8e, 0x88, 0xc9, 0x14, 0x5d, 0x19,
+	0xc1, 0xd6, 0x55, 0xf7, 0xae, 0x70, 0x0f, 0x60, 0x7a, 0x91, 0x4b, 0xbc, 0xe3, 0xed, 0xb9, 0x95,
+	0x37, 0x63, 0x53, 0x73, 0x57, 0xb8, 0x12, 0x44, 0x95, 0x2e, 0x64, 0x1a, 0x5e, 0x70, 0x93, 0x12,
+	0xe9, 0x42, 0xa6, 0xeb, 0x2a, 0x37, 0xc9, 0xf8, 0x87, 0x29, 0x28, 0x74, 0xe7, 0xee, 0x67, 0x25,
+	0x6f, 0xd0, 0x5e, 0x93, 0x3d, 0x79, 0x7d, 0xf6, 0x07, 0x80, 0x26, 0xc1, 0x29, 0xdb, 0x33, 0x86,
+	0x69, 0x19, 0xe7, 0x66, 0xc8, 0x6f, 0x4f, 0xa5, 0x1e, 0xac, 0x90, 0xd2, 0x24, 0x38, 0x6d, 0x3b,
+	0x63, 0xc9, 0x3a, 0x66, 0x95, 0x95, 0x02, 0xe4, 0xa7, 0x17, 0xbc, 0xaa, 0x5f, 0xc2, 0x5a, 0x44,
+	0xc6, 0x0c, 0x90, 0xc8, 0x5f, 0x4c, 0x1c, 0x57, 0x09, 0x27, 0x32, 0x75, 0xd9, 0x03, 0x4d, 0x57,
+	0xff, 0x36, 0x05, 0xc5, 0xe4, 0xed, 0x28, 0xd6, 0xfd, 0x1d, 0xc6, 0x6c, 0x0e, 0xb2, 0x3c, 0x3d,
+	0xc1, 0x7f, 0x3a, 0x22, 0x52, 0x17, 0x59, 0xe6, 0xc9, 0x72, 0xcf, 0x55, 0x94, 0x57, 0xa6, 0x9e,
+	0x2c, 0xef, 0xc9, 0x43, 0x63, 0xc2, 0xd1, 0x15, 0xed, 0x6b, 0x33, 0xcf, 0x97, 0x77, 0xe0, 0xd9,
+	0x4e, 0xf6, 0x24, 0x9c, 0xeb, 0xbc, 0xf8, 0xe9, 0x8f, 0xfc, 0x2c, 0xf2, 0x9c, 0xa1, 0xf6, 0xc3,
+	0x6f, 0x1e, 0x0c, 0xdc, 0xa9, 0x6c, 0xb7, 0x5d, 0x7f, 0xf0, 0xf0, 0xcd, 0x5f, 0xbc, 0x0d, 0xdc,
+	0x87, 0xa6, 0xe7, 0x9c, 0xae, 0x72, 0xaf, 0xec, 0xd1, 0xff, 0x07, 0x00, 0x00, 0xff, 0xff, 0x44,
+	0x5f, 0x95, 0xeb, 0x51, 0x37, 0x00, 0x00,
 }
diff --git a/payload_utils/cros_config_proto_converter.py b/payload_utils/cros_config_proto_converter.py
index 8ddc4fc..dc94add 100755
--- a/payload_utils/cros_config_proto_converter.py
+++ b/payload_utils/cros_config_proto_converter.py
@@ -262,6 +262,39 @@
   return result
 
 
+def _build_derived_connectivity_power_prefs(config: Config) -> dict:
+  present = topology_pb2.HardwareFeatures.PRESENT
+  hw_features = config.hw_design_config.hardware_features
+  form_factor = hw_features.form_factor.form_factor
+  result = {}
+
+  if (hw_features.cellular.present == present and
+      hw_features.cellular.HasField('dynamic_power_reduction_config')):
+    dpr_config = hw_features.cellular.dynamic_power_reduction_config
+    result['set-cellular-transmit-power-for-proximity'] = (
+        hw_features.HasField('proximity'))
+    if form_factor in (topology_pb2.HardwareFeatures.FormFactor.CONVERTIBLE,
+                       topology_pb2.HardwareFeatures.FormFactor.DETACHABLE):
+      if dpr_config.HasField('tablet_mode'):
+        result['set-cellular-transmit-power-for-tablet-mode'] = (
+            dpr_config.tablet_mode.value)
+      else:
+        result['set-cellular-transmit-power-for-tablet-mode'] = (
+            form_factor == topology_pb2.HardwareFeatures.FormFactor.CONVERTIBLE)
+    else:
+      result['set-cellular-transmit-power-for-tablet-mode'] = False
+
+    if (result['set-cellular-transmit-power-for-tablet-mode'] or
+        result['set-cellular-transmit-power-for-proximity']):
+      if dpr_config.HasField('gpio'):
+        result['set-cellular-transmit-power-dpr-gpio'] = (
+            wrappers_pb2.UInt32Value(value=dpr_config.gpio))
+      elif dpr_config.HasField('modem_manager'):
+        result['use-modemmanager-for-dynamic-sar'] = True
+
+  return result
+
+
 def _build_derived_power_prefs(config: Config) -> dict:
   """Builds a partial 'power' property derived from hardware features."""
   present = topology_pb2.HardwareFeatures.PRESENT
@@ -336,6 +369,7 @@
 
   result.update(
       _build_derived_platform_power_prefs(config.program.platform.capabilities))
+  result.update(_build_derived_connectivity_power_prefs(config))
 
   result['usb-min-ac-watts'] = hw_features.power_supply.usb_min_ac_watts
 
diff --git a/payload_utils/test_data/fake_project.json b/payload_utils/test_data/fake_project.json
index 73c5145..c400012 100644
--- a/payload_utils/test_data/fake_project.json
+++ b/payload_utils/test_data/fake_project.json
@@ -506,10 +506,12 @@
           "disable-dark-resume": "0",
           "internal-backlight-no-als-ac-brightness": "80.0",
           "internal-backlight-no-als-battery-brightness": "63.0",
+          "set-cellular-transmit-power-for-tablet-mode": "1",
           "set-wifi-transmit-power-for-tablet-mode": "1",
           "suspend-to-idle": "1",
           "turn-off-screen-timeout-ms": "3000",
           "usb-min-ac-watts": "20",
+          "use-modemmanager-for-dynamic-sar": "1",
           "wake-on-dp": "1"
         },
         "ui": {
@@ -659,7 +661,7 @@
           "smbios-name-match": "PROJECT_B"
         },
         "modem": {
-          "firmware-variant": "fakemodemb"
+          "firmware-variant": "fakemodem"
         },
         "name": "project_b",
         "power": {
@@ -668,6 +670,8 @@
           "disable-dark-resume": "0",
           "internal-backlight-no-als-ac-brightness": "80.0",
           "internal-backlight-no-als-battery-brightness": "63.0",
+          "set-cellular-transmit-power-dpr-gpio": "0",
+          "set-cellular-transmit-power-for-tablet-mode": "1",
           "set-wifi-transmit-power-for-tablet-mode": "1",
           "suspend-to-idle": "1",
           "turn-off-screen-timeout-ms": "3000",
@@ -956,7 +960,7 @@
             "zephyr-ec": "projects/fake/fake"
           },
           "ec-ro-image": "bcs://Fake_EC.11111.2.0.tbz2",
-          "firmware-config": 90913,
+          "firmware-config": 90914,
           "image-name": "fake",
           "main-ro-image": "bcs://Fake.11111.0.0.tbz2",
           "main-rw-image": "bcs://Fake.11111.2.3.tbz2",
@@ -977,14 +981,19 @@
           "sku-id": 64,
           "smbios-name-match": "PROJECT_WL"
         },
+        "modem": {
+          "firmware-variant": "project_wl"
+        },
         "name": "project_wl",
         "power": {
           "battery-poll-interval-initial-ms": "1000",
-          "charging-ports": "CROS_USBPD_CHARGER0 LEFT_BACK\nCROS_USBPD_CHARGER1 RIGHT\nCROS_USBPD_CHARGER2 LEFT_FRONT",
+          "charging-ports": "CROS_USBPD_CHARGER0 LEFT_BACK\nCROS_USBPD_CHARGER1 LEFT_FRONT",
           "disable-dark-resume": "0",
           "internal-backlight-no-als-ac-brightness": "80.1",
           "internal-backlight-no-als-battery-brightness": "63.2",
           "min-visible-backlight-level": "1000",
+          "set-cellular-transmit-power-dpr-gpio": "20",
+          "set-cellular-transmit-power-for-proximity": "1",
           "set-wifi-transmit-power-for-tablet-mode": "1",
           "suspend-to-idle": "1",
           "turn-off-screen-timeout-ms": "0",
@@ -1091,7 +1100,7 @@
             "zephyr-ec": "projects/fake/fake"
           },
           "ec-ro-image": "bcs://Fake_EC.11111.2.0.tbz2",
-          "firmware-config": 90913,
+          "firmware-config": 90914,
           "image-name": "fake",
           "main-ro-image": "bcs://Fake.11111.0.0.tbz2",
           "main-rw-image": "bcs://Fake.11111.2.3.tbz2",
@@ -1113,14 +1122,19 @@
           "smbios-name-match": "PROJECT_WL",
           "whitelabel-tag": "loema"
         },
+        "modem": {
+          "firmware-variant": "project_wl"
+        },
         "name": "project_wl",
         "power": {
           "battery-poll-interval-initial-ms": "1000",
-          "charging-ports": "CROS_USBPD_CHARGER0 LEFT_BACK\nCROS_USBPD_CHARGER1 RIGHT\nCROS_USBPD_CHARGER2 LEFT_FRONT",
+          "charging-ports": "CROS_USBPD_CHARGER0 LEFT_BACK\nCROS_USBPD_CHARGER1 LEFT_FRONT",
           "disable-dark-resume": "0",
           "internal-backlight-no-als-ac-brightness": "80.1",
           "internal-backlight-no-als-battery-brightness": "63.2",
           "min-visible-backlight-level": "1000",
+          "set-cellular-transmit-power-dpr-gpio": "20",
+          "set-cellular-transmit-power-for-proximity": "1",
           "set-wifi-transmit-power-for-tablet-mode": "1",
           "suspend-to-idle": "1",
           "turn-off-screen-timeout-ms": "0",
@@ -1227,7 +1241,7 @@
             "zephyr-ec": "projects/fake/fake"
           },
           "ec-ro-image": "bcs://Fake_EC.11111.2.0.tbz2",
-          "firmware-config": 90913,
+          "firmware-config": 90914,
           "image-name": "fake",
           "main-ro-image": "bcs://Fake.11111.0.0.tbz2",
           "main-rw-image": "bcs://Fake.11111.2.3.tbz2",
@@ -1249,14 +1263,19 @@
           "smbios-name-match": "PROJECT_WL",
           "whitelabel-tag": "loemb"
         },
+        "modem": {
+          "firmware-variant": "project_wl"
+        },
         "name": "project_wl",
         "power": {
           "battery-poll-interval-initial-ms": "1000",
-          "charging-ports": "CROS_USBPD_CHARGER0 LEFT_BACK\nCROS_USBPD_CHARGER1 RIGHT\nCROS_USBPD_CHARGER2 LEFT_FRONT",
+          "charging-ports": "CROS_USBPD_CHARGER0 LEFT_BACK\nCROS_USBPD_CHARGER1 LEFT_FRONT",
           "disable-dark-resume": "0",
           "internal-backlight-no-als-ac-brightness": "80.1",
           "internal-backlight-no-als-battery-brightness": "63.2",
           "min-visible-backlight-level": "1000",
+          "set-cellular-transmit-power-dpr-gpio": "20",
+          "set-cellular-transmit-power-for-proximity": "1",
           "set-wifi-transmit-power-for-tablet-mode": "1",
           "suspend-to-idle": "1",
           "turn-off-screen-timeout-ms": "0",
@@ -1363,7 +1382,7 @@
             "zephyr-ec": "projects/fake/fake"
           },
           "ec-ro-image": "bcs://Fake_EC.11111.2.0.tbz2",
-          "firmware-config": 90913,
+          "firmware-config": 90914,
           "image-name": "fake",
           "main-ro-image": "bcs://Fake.11111.0.0.tbz2",
           "main-rw-image": "bcs://Fake.11111.2.3.tbz2",
@@ -1385,14 +1404,19 @@
           "smbios-name-match": "PROJECT_WL",
           "whitelabel-tag": "loemc"
         },
+        "modem": {
+          "firmware-variant": "project_wl"
+        },
         "name": "project_wl",
         "power": {
           "battery-poll-interval-initial-ms": "1000",
-          "charging-ports": "CROS_USBPD_CHARGER0 LEFT_BACK\nCROS_USBPD_CHARGER1 RIGHT\nCROS_USBPD_CHARGER2 LEFT_FRONT",
+          "charging-ports": "CROS_USBPD_CHARGER0 LEFT_BACK\nCROS_USBPD_CHARGER1 LEFT_FRONT",
           "disable-dark-resume": "0",
           "internal-backlight-no-als-ac-brightness": "80.1",
           "internal-backlight-no-als-battery-brightness": "63.2",
           "min-visible-backlight-level": "1000",
+          "set-cellular-transmit-power-dpr-gpio": "20",
+          "set-cellular-transmit-power-for-proximity": "1",
           "set-wifi-transmit-power-for-tablet-mode": "1",
           "suspend-to-idle": "1",
           "turn-off-screen-timeout-ms": "0",
@@ -1530,6 +1554,9 @@
           "smbios-name-match": "PROJECT_REBRAND",
           "whitelabel-tag": "branda"
         },
+        "modem": {
+          "firmware-variant": "project_rebrand"
+        },
         "name": "project_rebrand",
         "power": {
           "battery-poll-interval-initial-ms": "1000",
@@ -1665,6 +1692,9 @@
           "sku-id": 128,
           "smbios-name-match": "PROJECT_BOX"
         },
+        "modem": {
+          "firmware-variant": "fakemodem"
+        },
         "name": "project_box",
         "power": {
           "battery-poll-interval-initial-ms": "1000",
diff --git a/payload_utils/test_data/model_sku.json b/payload_utils/test_data/model_sku.json
index 92c33b4..098ce5f 100644
--- a/payload_utils/test_data/model_sku.json
+++ b/payload_utils/test_data/model_sku.json
@@ -13,7 +13,7 @@
       "component.has_lte": true,
       "component.has_mother_board_usb_a": 0,
       "component.has_mother_board_usb_c": 2,
-      "component.has_proximity_sensor": true,
+      "component.has_proximity_sensor": null,
       "component.has_sd_reader": true,
       "component.has_stylus": true,
       "component.has_tabletmode": false,
@@ -39,7 +39,7 @@
       "component.has_lte": true,
       "component.has_mother_board_usb_a": 0,
       "component.has_mother_board_usb_c": 2,
-      "component.has_proximity_sensor": true,
+      "component.has_proximity_sensor": null,
       "component.has_rear_camera": false,
       "component.has_sd_reader": true,
       "component.has_stylus": true,
@@ -89,7 +89,7 @@
       "component.has_lte": true,
       "component.has_mother_board_usb_a": 0,
       "component.has_mother_board_usb_c": 2,
-      "component.has_proximity_sensor": true,
+      "component.has_proximity_sensor": null,
       "component.has_rear_camera": false,
       "component.has_sd_reader": true,
       "component.has_stylus": true,
@@ -132,10 +132,9 @@
       "component.has_keyboard_backlight": false,
       "component.has_lid_gyroscope": null,
       "component.has_lid_magnetometer": null,
-      "component.has_lte": false,
       "component.has_mother_board_usb_a": 0,
       "component.has_mother_board_usb_c": 2,
-      "component.has_proximity_sensor": true,
+      "component.has_proximity_sensor": null,
       "component.has_rear_camera": null,
       "component.has_sd_reader": true,
       "component.has_stylus": false,
@@ -183,7 +182,7 @@
       "component.has_lte": false,
       "component.has_mother_board_usb_a": 0,
       "component.has_mother_board_usb_c": 2,
-      "component.has_proximity_sensor": true,
+      "component.has_proximity_sensor": null,
       "component.has_rear_camera": false,
       "component.has_sd_reader": true,
       "component.has_stylus": true,
@@ -230,10 +229,10 @@
       "component.has_lid_accelerometer": null,
       "component.has_lid_gyroscope": null,
       "component.has_lid_magnetometer": null,
-      "component.has_lte": false,
+      "component.has_lte": true,
       "component.has_mother_board_usb_a": 0,
       "component.has_mother_board_usb_c": 2,
-      "component.has_proximity_sensor": true,
+      "component.has_proximity_sensor": null,
       "component.has_rear_camera": false,
       "component.has_sd_reader": true,
       "component.has_stylus": false,
@@ -274,14 +273,14 @@
       "component.has_base_gyroscope": true,
       "component.has_base_magnetometer": true,
       "component.has_daughter_board_usb_a": 0,
-      "component.has_daughter_board_usb_c": 1,
+      "component.has_daughter_board_usb_c": 0,
       "component.has_fingerprint": false,
       "component.has_front_camera": true,
       "component.has_keyboard_backlight": false,
       "component.has_lid_accelerometer": null,
       "component.has_lid_gyroscope": null,
       "component.has_lid_magnetometer": null,
-      "component.has_lte": false,
+      "component.has_lte": true,
       "component.has_mother_board_usb_a": 0,
       "component.has_mother_board_usb_c": 2,
       "component.has_proximity_sensor": true,
@@ -306,7 +305,7 @@
         [
           "usb_host",
           "==",
-          3
+          2
         ],
         [
           "stylus",
@@ -316,7 +315,7 @@
       ],
       "component.speaker_amp": "AMPLIFIER_UNKNOWN",
       "custom_type": "whitelabel",
-      "fw_config": 90913
+      "fw_config": 90914
     }
   },
   "product_sku": {
@@ -396,6 +395,7 @@
         "component.has_base_gyroscope": true,
         "component.has_base_magnetometer": true,
         "component.has_lid_accelerometer": null,
+        "component.has_lte": true,
         "component.speaker_amp": "MAX98373",
         "fw_config": 90897
       },
@@ -404,6 +404,7 @@
         "component.has_base_gyroscope": true,
         "component.has_base_magnetometer": true,
         "component.has_lid_accelerometer": null,
+        "component.has_lte": false,
         "component.speaker_amp": "AMPLIFIER_UNKNOWN",
         "fw_config": 90897
       },
@@ -412,6 +413,7 @@
         "component.has_base_gyroscope": null,
         "component.has_base_magnetometer": null,
         "component.has_lid_accelerometer": true,
+        "component.has_lte": false,
         "component.speaker_amp": "MAX98373",
         "fw_config": 90113
       }
diff --git a/proto/chromiumos/config/api/topology.proto b/proto/chromiumos/config/api/topology.proto
index ccc89b2..38acff4 100644
--- a/proto/chromiumos/config/api/topology.proto
+++ b/proto/chromiumos/config/api/topology.proto
@@ -103,7 +103,7 @@
 // an unspecified value and from the 0-value; this can be down with
 // messages or enums. Each field also defines how multiple values should be
 // combined.
-// NEXT TAG: 31
+// NEXT TAG: 38
 message HardwareFeatures {
   enum Present {
     PRESENT_UNKNOWN = 0;
@@ -150,10 +150,10 @@
       // The position of the port on the chassis.
       PortPosition position = 1;
 
-			// The 0-indexed index of this USB-C port. If set, this is used as the
-			// port index rather than numbering the motherboard ports in order
-			// followed by daughter board ports, in the order they are specified.
-			// This value must be in the range [0, number_of_usb_c_ports).
+      // The 0-indexed index of this USB-C port. If set, this is used as the
+      // port index rather than numbering the motherboard ports in order
+      // followed by daughter board ports, in the order they are specified.
+      // This value must be in the range [0, number_of_usb_c_ports).
       google.protobuf.UInt32Value index_override = 2;
     }
   }
@@ -186,6 +186,23 @@
       CELLULAR_LTE = 1;
       CELLULAR_5G = 2;
     }
+
+    // Optional config for dynamic power reduction control.
+    DynamicPowerReductionConfig dynamic_power_reduction_config = 5;
+    message DynamicPowerReductionConfig {
+      oneof dynamic_power_reduction_config {
+        // A uint identifying the GPIO to use to toggle dynamic power
+        // reduction.
+        uint32 gpio = 1;
+
+        // A dummy value identifying that modem manager should be used to
+        // toggle dynamic power reduction.
+        bool modem_manager = 2;
+      }
+      // Whether tablet mode should be a trigger for dynamic power reduction.
+      // If unset, the value will be true for convertibles.
+      google.protobuf.BoolValue tablet_mode = 3;
+    }
   }
 
   // HDMI properties
@@ -710,4 +727,8 @@
     // higher-power USB adapter.
     int32 usb_min_ac_watts = 2;
   }
+
+  Proximity proximity = 37;
+  message Proximity {
+  }
 }
diff --git a/python/chromiumos/config/api/topology_pb2.py b/python/chromiumos/config/api/topology_pb2.py
index d9f8b9f..bdd764f 100644
--- a/python/chromiumos/config/api/topology_pb2.py
+++ b/python/chromiumos/config/api/topology_pb2.py
@@ -21,7 +21,7 @@
   package='chromiumos.config.api',
   syntax='proto3',
   serialized_options=_b('Z(go.chromium.org/chromiumos/config/go/api'),
-  serialized_pb=_b('\n$chromiumos/config/api/topology.proto\x12\x15\x63hromiumos.config.api\x1a%chromiumos/config/api/component.proto\x1a\x1egoogle/protobuf/wrappers.proto\"\x9a\x06\n\x08Topology\x12\n\n\x02id\x18\x01 \x01(\t\x12\x32\n\x04type\x18\x02 \x01(\x0e\x32$.chromiumos.config.api.Topology.Type\x12\x45\n\x0b\x64\x65scription\x18\x03 \x03(\x0b\x32\x30.chromiumos.config.api.Topology.DescriptionEntry\x12\x41\n\x10hardware_feature\x18\x04 \x01(\x0b\x32\'.chromiumos.config.api.HardwareFeatures\x1a\x32\n\x10\x44\x65scriptionEntry\x12\x0b\n\x03key\x18\x01 \x01(\t\x12\r\n\x05value\x18\x02 \x01(\t:\x02\x38\x01\"\x8f\x04\n\x04Type\x12\x10\n\x0cTYPE_UNKNOWN\x10\x00\x12\n\n\x06SCREEN\x10\x01\x12\x0f\n\x0b\x46ORM_FACTOR\x10\x02\x12\t\n\x05\x41UDIO\x10\x03\x12\n\n\x06STYLUS\x10\x04\x12\x0c\n\x08KEYBOARD\x10\x05\x12\x0b\n\x07THERMAL\x10\x06\x12\n\n\x06\x43\x41MERA\x10\x07\x12(\n$ACCELEROMETER_GYROSCOPE_MAGNETOMETER\x10\x08\x12\x0f\n\x0b\x46INGERPRINT\x10\t\x12\x14\n\x10PROXIMITY_SENSOR\x10\n\x12\x12\n\x0e\x44\x41UGHTER_BOARD\x10\x0b\x12\x18\n\x14NON_VOLATILE_STORAGE\x10\x0c\x12\x07\n\x03RAM\x10\r\x12\x08\n\x04WIFI\x10\x0e\x12\x12\n\x0e\x43\x45LLULAR_BOARD\x10\x0f\x12\r\n\tSD_READER\x10\x10\x12\x13\n\x0fMOTHERBOARD_USB\x10\x11\x12\r\n\tBLUETOOTH\x10\x12\x12\x0e\n\nBARRELJACK\x10\x13\x12\x10\n\x0cPOWER_BUTTON\x10\x14\x12\x11\n\rVOLUME_BUTTON\x10\x15\x12\x06\n\x02\x45\x43\x10\x16\x12\t\n\x05TOUCH\x10\x17\x12\x07\n\x03TPM\x10\x18\x12\x1a\n\x16MICROPHONE_MUTE_SWITCH\x10\x19\x12\x0b\n\x07\x42\x41TTERY\x10\x1a\x12\x08\n\x04HDMI\x10\x1b\x12\x07\n\x03SOC\x10\x1c\x12\x07\n\x03HPS\x10\x1d\x12\x10\n\x0c\x44P_CONVERTER\x10\x1e\x12\x07\n\x03POE\x10\x1f\x12\x10\n\x0cPOWER_SUPPLY\x10 \"\xa8\x01\n\x08\x44uration\x12\x32\n\x04type\x18\x01 \x01(\x0e\x32$.chromiumos.config.api.Duration.Type\x12\r\n\x05value\x18\x02 \x01(\x05\"Y\n\x04Type\x12\x10\n\x0cTYPE_UNKNOWN\x10\x00\x12\x10\n\x0cMILLISECONDS\x10\x01\x12\x0b\n\x07SECONDS\x10\x02\x12\x0b\n\x07MINUTES\x10\x03\x12\t\n\x05HOURS\x10\x04\x12\x08\n\x04\x44\x41YS\x10\x05\"\xa4V\n\x10HardwareFeatures\x12;\n\x05usb_c\x18\x01 \x01(\x0b\x32,.chromiumos.config.api.HardwareFeatures.UsbC\x12;\n\x05usb_a\x18\x02 \x01(\x0b\x32,.chromiumos.config.api.HardwareFeatures.UsbA\x12\x42\n\x08\x63\x65llular\x18\x03 \x01(\x0b\x32\x30.chromiumos.config.api.HardwareFeatures.Cellular\x12:\n\x04hdmi\x18\x04 \x01(\x0b\x32,.chromiumos.config.api.HardwareFeatures.Hdmi\x12P\n\tfw_config\x18\x05 \x01(\x0b\x32=.chromiumos.config.api.HardwareFeatures.FirmwareConfiguration\x12<\n\x05\x61udio\x18\x06 \x01(\x0b\x32-.chromiumos.config.api.HardwareFeatures.Audio\x12>\n\x06\x63\x61mera\x18\x07 \x01(\x0b\x32..chromiumos.config.api.HardwareFeatures.Camera\x12L\n\raccelerometer\x18\x08 \x01(\x0b\x32\x35.chromiumos.config.api.HardwareFeatures.Accelerometer\x12\x44\n\tgyroscope\x18\t \x01(\x0b\x32\x31.chromiumos.config.api.HardwareFeatures.Gyroscope\x12J\n\x0cmagnetometer\x18\n \x01(\x0b\x32\x34.chromiumos.config.api.HardwareFeatures.Magnetometer\x12I\n\x0clight_sensor\x18\x0b \x01(\x0b\x32\x33.chromiumos.config.api.HardwareFeatures.LightSensor\x12>\n\x06screen\x18\x0c \x01(\x0b\x32..chromiumos.config.api.HardwareFeatures.Screen\x12G\n\x0b\x66orm_factor\x18\r \x01(\x0b\x32\x32.chromiumos.config.api.HardwareFeatures.FormFactor\x12>\n\x06stylus\x18\x0e \x01(\x0b\x32..chromiumos.config.api.HardwareFeatures.Stylus\x12\x42\n\x08keyboard\x18\x0f \x01(\x0b\x32\x30.chromiumos.config.api.HardwareFeatures.Keyboard\x12>\n\x06memory\x18\x10 \x01(\x0b\x32..chromiumos.config.api.HardwareFeatures.Memory\x12H\n\x0b\x66ingerprint\x18\x11 \x01(\x0b\x32\x33.chromiumos.config.api.HardwareFeatures.Fingerprint\x12@\n\x07storage\x18\x12 \x01(\x0b\x32/.chromiumos.config.api.HardwareFeatures.Storage\x12\x44\n\tbluetooth\x18\x13 \x01(\x0b\x32\x31.chromiumos.config.api.HardwareFeatures.Bluetooth\x12\x46\n\nbarreljack\x18\x14 \x01(\x0b\x32\x32.chromiumos.config.api.HardwareFeatures.BarrelJack\x12:\n\x04wifi\x18\x17 \x01(\x0b\x32,.chromiumos.config.api.HardwareFeatures.Wifi\x12\x44\n\x0cpower_button\x18\x15 \x01(\x0b\x32..chromiumos.config.api.HardwareFeatures.Button\x12\x45\n\rvolume_button\x18\x16 \x01(\x0b\x32..chromiumos.config.api.HardwareFeatures.Button\x12W\n\x13\x65mbedded_controller\x18\x18 \x01(\x0b\x32:.chromiumos.config.api.HardwareFeatures.EmbeddedController\x12^\n\x17trusted_platform_module\x18\x19 \x01(\x0b\x32=.chromiumos.config.api.HardwareFeatures.TrustedPlatformModule\x12\x46\n\nhotwording\x18\x1a \x01(\x0b\x32\x32.chromiumos.config.api.HardwareFeatures.Hotwording\x12@\n\x07\x64isplay\x18\x1b \x01(\x0b\x32/.chromiumos.config.api.HardwareFeatures.Display\x12\x42\n\x08touchpad\x18\x1c \x01(\x0b\x32\x30.chromiumos.config.api.HardwareFeatures.Touchpad\x12\\\n\x16microphone_mute_switch\x18\x1d \x01(\x0b\x32<.chromiumos.config.api.HardwareFeatures.MicrophoneMuteSwitch\x12@\n\x07\x62\x61ttery\x18\x1e \x01(\x0b\x32/.chromiumos.config.api.HardwareFeatures.Battery\x12M\n\x0eprivacy_screen\x18\x1f \x01(\x0b\x32\x35.chromiumos.config.api.HardwareFeatures.PrivacyScreen\x12\x38\n\x03soc\x18  \x01(\x0b\x32+.chromiumos.config.api.HardwareFeatures.Soc\x12R\n\x0c\x64p_converter\x18! \x01(\x0b\x32<.chromiumos.config.api.HardwareFeatures.DisplayPortConverter\x12\x38\n\x03hps\x18\" \x01(\x0b\x32+.chromiumos.config.api.HardwareFeatures.Hps\x12\x38\n\x03poe\x18# \x01(\x0b\x32+.chromiumos.config.api.HardwareFeatures.PoE\x12I\n\x0cpower_supply\x18$ \x01(\x0b\x32\x33.chromiumos.config.api.HardwareFeatures.PowerSupply\x1a\x16\n\x05\x43ount\x12\r\n\x05value\x18\x01 \x01(\r\x1a\x8d\x02\n\x04UsbC\x12<\n\x05\x63ount\x18\x01 \x01(\x0b\x32-.chromiumos.config.api.HardwareFeatures.Count\x12@\n\x05ports\x18\x02 \x03(\x0b\x32\x31.chromiumos.config.api.HardwareFeatures.UsbC.Port\x1a\x84\x01\n\x04Port\x12\x46\n\x08position\x18\x01 \x01(\x0e\x32\x34.chromiumos.config.api.HardwareFeatures.PortPosition\x12\x34\n\x0eindex_override\x18\x02 \x01(\x0b\x32\x1c.google.protobuf.UInt32Value\x1a\x44\n\x04UsbA\x12<\n\x05\x63ount\x18\x01 \x01(\x0b\x32-.chromiumos.config.api.HardwareFeatures.Count\x1a\x89\x02\n\x08\x43\x65llular\x12@\n\x07present\x18\x01 \x01(\x0e\x32/.chromiumos.config.api.HardwareFeatures.Present\x12\r\n\x05model\x18\x02 \x01(\t\x12K\n\x04type\x18\x03 \x01(\x0e\x32=.chromiumos.config.api.HardwareFeatures.Cellular.CellularType\x12\x1b\n\x13\x61ttach_apn_required\x18\x04 \x01(\x08\"B\n\x0c\x43\x65llularType\x12\x0f\n\x0bNOT_PRESENT\x10\x00\x12\x10\n\x0c\x43\x45LLULAR_LTE\x10\x01\x12\x0f\n\x0b\x43\x45LLULAR_5G\x10\x02\x1aH\n\x04Hdmi\x12@\n\x07present\x18\x01 \x01(\x0e\x32/.chromiumos.config.api.HardwareFeatures.Present\x1a\x34\n\x15\x46irmwareConfiguration\x12\r\n\x05value\x18\x01 \x01(\r\x12\x0c\n\x04mask\x18\x02 \x01(\r\x1a\xec\n\n\x05\x41udio\x12M\n\x0b\x61udio_codec\x18\x01 \x01(\x0e\x32\x38.chromiumos.config.api.HardwareFeatures.Audio.AudioCodec\x12L\n\x0bspeaker_amp\x18\x02 \x01(\x0e\x32\x37.chromiumos.config.api.HardwareFeatures.Audio.Amplifier\x12Q\n\x0fheadphone_codec\x18\x03 \x01(\x0e\x32\x38.chromiumos.config.api.HardwareFeatures.Audio.AudioCodec\x12\x45\n\x0elid_microphone\x18\x04 \x01(\x0b\x32-.chromiumos.config.api.HardwareFeatures.Count\x12\x46\n\x0f\x62\x61se_microphone\x18\x05 \x01(\x0b\x32-.chromiumos.config.api.HardwareFeatures.Count\x12\x45\n\x11speaker_amplifier\x18\x06 \x01(\x0b\x32*.chromiumos.config.api.Component.Amplifier\x12N\n\x0c\x63\x61rd_configs\x18\x07 \x03(\x0b\x32\x38.chromiumos.config.api.HardwareFeatures.Audio.CardConfig\x12W\n\x0b\x63ras_config\x18\x08 \x01(\x0e\x32\x42.chromiumos.config.api.HardwareFeatures.Audio.AudioConfigStructure\x1a\xe6\x02\n\nCardConfig\x12\x11\n\tcard_name\x18\x01 \x01(\t\x12\x30\n\nucm_suffix\x18\x02 \x01(\x0b\x32\x1c.google.protobuf.StringValue\x12V\n\nucm_config\x18\x03 \x01(\x0e\x32\x42.chromiumos.config.api.HardwareFeatures.Audio.AudioConfigStructure\x12W\n\x0b\x63ras_config\x18\x04 \x01(\x0e\x32\x42.chromiumos.config.api.HardwareFeatures.Audio.AudioConfigStructure\x12\x62\n\x16sound_card_init_config\x18\x05 \x01(\x0e\x32\x42.chromiumos.config.api.HardwareFeatures.Audio.AudioConfigStructure\"\x9d\x01\n\nAudioCodec\x12\x17\n\x13\x41UDIO_CODEC_UNKNOWN\x10\x00\x12\n\n\x06RT5682\x10\x01\x12\x0c\n\x08\x41LC5682I\x10\x02\x12\x0b\n\x07\x41LC5682\x10\x03\x12\n\n\x06\x44\x41\x37\x32\x31\x39\x10\x08\x12\r\n\tNAU88L25B\x10\n\x12\x0b\n\x07\x43S42L42\x10\x0b\x12\x0e\n\nALC5682IVS\x10\x0c\x12\x0b\n\x07WCD9385\x10\r\"\x04\x08\x04\x10\x07\"\x04\x08\t\x10\t\"\x99\x01\n\tAmplifier\x12\x15\n\x11\x41MPLIFIER_UNKNOWN\x10\x00\x12\x0c\n\x08MAX98357\x10\x04\x12\x0c\n\x08MAX98373\x10\x05\x12\x0c\n\x08MAX98360\x10\x06\x12\n\n\x06RT1015\x10\x07\x12\x0b\n\x07\x41LC1011\x10\t\x12\x0b\n\x07RT1015P\x10\n\x12\x0b\n\x07\x41LC1019\x10\x0b\x12\x0c\n\x08MAX98390\x10\x0c\"\x04\x08\x01\x10\x03\"\x04\x08\x08\x10\x08\"O\n\x14\x41udioConfigStructure\x12\x1f\n\x1b\x41UDIO_CONFIG_STRUCTURE_NONE\x10\x00\x12\n\n\x06\x44\x45SIGN\x10\x01\x12\n\n\x06\x43OMMON\x10\x02\x1a\xc2\x06\n\x06\x43\x61mera\x12\x46\n\x07\x64\x65vices\x18\x04 \x03(\x0b\x32\x35.chromiumos.config.api.HardwareFeatures.Camera.Device\x1a\x9b\x03\n\x06\x44\x65vice\x12K\n\tinterface\x18\x02 \x01(\x0e\x32\x38.chromiumos.config.api.HardwareFeatures.Camera.Interface\x12\x45\n\x06\x66\x61\x63ing\x18\x03 \x01(\x0e\x32\x35.chromiumos.config.api.HardwareFeatures.Camera.Facing\x12O\n\x0borientation\x18\x04 \x01(\x0e\x32:.chromiumos.config.api.HardwareFeatures.Camera.Orientation\x12\r\n\x05\x66lags\x18\x05 \x01(\r\x12\x0b\n\x03ids\x18\x06 \x03(\t\x12G\n\x0eprivacy_switch\x18\x07 \x01(\x0e\x32/.chromiumos.config.api.HardwareFeatures.Present\x12G\n\x10microphone_count\x18\x08 \x01(\x0b\x32-.chromiumos.config.api.HardwareFeatures.Count\"I\n\tInterface\x12\x15\n\x11INTERFACE_UNKNOWN\x10\x00\x12\x11\n\rINTERFACE_USB\x10\x01\x12\x12\n\x0eINTERFACE_MIPI\x10\x02\"?\n\x06\x46\x61\x63ing\x12\x12\n\x0e\x46\x41\x43ING_UNKNOWN\x10\x00\x12\x10\n\x0c\x46\x41\x43ING_FRONT\x10\x01\x12\x0f\n\x0b\x46\x41\x43ING_BACK\x10\x02\"w\n\x0bOrientation\x12\x17\n\x13ORIENTATION_UNKNOWN\x10\x00\x12\x11\n\rORIENTATION_0\x10\x01\x12\x12\n\x0eORIENTATION_90\x10\x02\x12\x13\n\x0fORIENTATION_180\x10\x03\x12\x13\n\x0fORIENTATION_270\x10\x04\"M\n\x05\x46lags\x12\x0e\n\nFLAGS_NONE\x10\x00\x12\x17\n\x13\x46LAGS_SUPPORT_1080P\x10\x01\x12\x1b\n\x17\x46LAGS_SUPPORT_AUTOFOCUS\x10\x02\x1a\xa8\x01\n\rAccelerometer\x12J\n\x11lid_accelerometer\x18\x01 \x01(\x0e\x32/.chromiumos.config.api.HardwareFeatures.Present\x12K\n\x12\x62\x61se_accelerometer\x18\x02 \x01(\x0e\x32/.chromiumos.config.api.HardwareFeatures.Present\x1a\x9c\x01\n\tGyroscope\x12\x46\n\rlid_gyroscope\x18\x01 \x01(\x0e\x32/.chromiumos.config.api.HardwareFeatures.Present\x12G\n\x0e\x62\x61se_gyroscope\x18\x02 \x01(\x0e\x32/.chromiumos.config.api.HardwareFeatures.Present\x1a\xa5\x01\n\x0cMagnetometer\x12I\n\x10lid_magnetometer\x18\x01 \x01(\x0e\x32/.chromiumos.config.api.HardwareFeatures.Present\x12J\n\x11\x62\x61se_magnetometer\x18\x02 \x01(\x0e\x32/.chromiumos.config.api.HardwareFeatures.Present\x1a\xa2\x01\n\x0bLightSensor\x12H\n\x0flid_lightsensor\x18\x01 \x01(\x0e\x32/.chromiumos.config.api.HardwareFeatures.Present\x12I\n\x10\x62\x61se_lightsensor\x18\x02 \x01(\x0e\x32/.chromiumos.config.api.HardwareFeatures.Present\x1a\xaa\x01\n\x06Screen\x12R\n\x10panel_properties\x18\x03 \x01(\x0b\x32\x38.chromiumos.config.api.Component.DisplayPanel.Properties\x12\x46\n\rtouch_support\x18\x02 \x01(\x0e\x32/.chromiumos.config.api.HardwareFeatures.PresentJ\x04\x08\x01\x10\x02\x1a\xff\x01\n\nFormFactor\x12V\n\x0b\x66orm_factor\x18\x01 \x01(\x0e\x32\x41.chromiumos.config.api.HardwareFeatures.FormFactor.FormFactorType\"\x98\x01\n\x0e\x46ormFactorType\x12\x17\n\x13\x46ORM_FACTOR_UNKNOWN\x10\x00\x12\r\n\tCLAMSHELL\x10\x01\x12\x0f\n\x0b\x43ONVERTIBLE\x10\x02\x12\x0e\n\nDETACHABLE\x10\x03\x12\x0e\n\nCHROMEBASE\x10\x04\x12\r\n\tCHROMEBOX\x10\x05\x12\r\n\tCHROMEBIT\x10\x06\x12\x0f\n\x0b\x43HROMESLATE\x10\x07\x1a\x9b\x01\n\x06Stylus\x12I\n\x06stylus\x18\x01 \x01(\x0e\x32\x39.chromiumos.config.api.HardwareFeatures.Stylus.StylusType\"F\n\nStylusType\x12\x12\n\x0eSTYLUS_UNKNOWN\x10\x00\x12\x08\n\x04NONE\x10\x01\x12\x0c\n\x08INTERNAL\x10\x02\x12\x0c\n\x08\x45XTERNAL\x10\x03\x1a\xa2\x03\n\x08Keyboard\x12T\n\rkeyboard_type\x18\x01 \x01(\x0e\x32=.chromiumos.config.api.HardwareFeatures.Keyboard.KeyboardType\x12\x42\n\tbacklight\x18\x02 \x01(\x0e\x32/.chromiumos.config.api.HardwareFeatures.Present\x12\x45\n\x0cpower_button\x18\x03 \x01(\x0e\x32/.chromiumos.config.api.HardwareFeatures.Present\x12\x44\n\x0bnumeric_pad\x18\x04 \x01(\x0e\x32/.chromiumos.config.api.HardwareFeatures.Present\x12\x1c\n\x14\x62\x61\x63klight_user_steps\x18\x05 \x03(\x01\"Q\n\x0cKeyboardType\x12\x19\n\x15KEYBOARD_TYPE_UNKNOWN\x10\x00\x12\x0c\n\x08INTERNAL\x10\x01\x12\x08\n\x04NONE\x10\x02\x12\x0e\n\nDETACHABLE\x10\x03\x1aJ\n\x06Memory\x12@\n\x07profile\x18\x01 \x01(\x0b\x32/.chromiumos.config.api.Component.Memory.Profile\x1a\xc8\x02\n\x0b\x46ingerprint\x12N\n\x08location\x18\x01 \x01(\x0e\x32<.chromiumos.config.api.HardwareFeatures.Fingerprint.Location\x12\r\n\x05\x62oard\x18\x02 \x01(\t\x12\x12\n\nro_version\x18\x03 \x01(\t\"\xc5\x01\n\x08Location\x12\x14\n\x10LOCATION_UNKNOWN\x10\x00\x12\x19\n\x15POWER_BUTTON_TOP_LEFT\x10\x01\x12\x18\n\x14KEYBOARD_BOTTOM_LEFT\x10\x02\x12\x19\n\x15KEYBOARD_BOTTOM_RIGHT\x10\x03\x12\x16\n\x12KEYBOARD_TOP_RIGHT\x10\x04\x12\x0f\n\x0bNOT_PRESENT\x10\x05\x12\x0e\n\nRIGHT_SIDE\x10\x06\x12\r\n\tLEFT_SIDE\x10\x07\x12\x0b\n\x07PRESENT\x10\x08\x1a\x66\n\x07Storage\x12J\n\x0cstorage_type\x18\x01 \x01(\x0e\x32\x34.chromiumos.config.api.Component.Storage.StorageType\x12\x0f\n\x07size_gb\x18\x02 \x01(\r\x1a\x8c\x01\n\tBluetooth\x12=\n\tcomponent\x18\x01 \x01(\x0b\x32*.chromiumos.config.api.Component.Bluetooth\x12@\n\x07present\x18\x02 \x01(\x0e\x32/.chromiumos.config.api.HardwareFeatures.Present\x1aN\n\nBarrelJack\x12@\n\x07present\x18\x01 \x01(\x0e\x32/.chromiumos.config.api.HardwareFeatures.Present\x1a\xf7\x01\n\x04Wifi\x12T\n\x18supported_wlan_protocols\x18\x01 \x03(\x0e\x32\x32.chromiumos.config.api.Component.Wifi.WLANProtocol\x12I\n\nwifi_chips\x18\x02 \x03(\x0e\x32\x35.chromiumos.config.api.HardwareFeatures.Wifi.WifiChip\"N\n\x08WifiChip\x12\x15\n\x11WIFI_CHIP_UNKNOWN\x10\x00\x12\x15\n\x11WIRELESS_86ED801D\x10\x01\x12\x14\n\x10WIRELESS_REALTEK\x10\x02\x1a\xa0\x02\n\x06\x42utton\x12\x45\n\x06region\x18\x01 \x01(\x0e\x32\x35.chromiumos.config.api.HardwareFeatures.Button.Region\x12\x41\n\x04\x65\x64ge\x18\x02 \x01(\x0e\x32\x33.chromiumos.config.api.HardwareFeatures.Button.Edge\x12\x10\n\x08position\x18\x03 \x01(\x02\"6\n\x06Region\x12\x12\n\x0eREGION_UNKNOWN\x10\x00\x12\n\n\x06SCREEN\x10\x01\x12\x0c\n\x08KEYBOARD\x10\x02\"B\n\x04\x45\x64ge\x12\x10\n\x0c\x45\x44GE_UNKNOWN\x10\x00\x12\x08\n\x04LEFT\x10\x01\x12\t\n\x05RIGHT\x10\x02\x12\x07\n\x03TOP\x10\x03\x12\n\n\x06\x42OTTOM\x10\x04\x1a\xd3\x03\n\x12\x45mbeddedController\x12@\n\x07present\x18\x01 \x01(\x0e\x32/.chromiumos.config.api.HardwareFeatures.Present\x12\x62\n\x07\x65\x63_type\x18\x02 \x01(\x0e\x32Q.chromiumos.config.api.HardwareFeatures.EmbeddedController.EmbeddedControllerType\x12\x41\n\x04part\x18\x03 \x01(\x0b\x32\x33.chromiumos.config.api.Component.EmbeddedController\x12J\n\x11\x66\x65\x61ture_typec_cmd\x18\x04 \x01(\x0e\x32/.chromiumos.config.api.HardwareFeatures.Present\x12<\n\x03\x63\x62i\x18\x05 \x01(\x0e\x32/.chromiumos.config.api.HardwareFeatures.Present\"J\n\x16\x45mbeddedControllerType\x12\x13\n\x0f\x45\x43_TYPE_UNKNOWN\x10\x00\x12\r\n\tEC_CHROME\x10\x01\x12\x0c\n\x08\x45\x43_WILCO\x10\x02\x1a\xe0\x01\n\x15TrustedPlatformModule\x12i\n\x08tpm_type\x18\x01 \x01(\x0e\x32W.chromiumos.config.api.HardwareFeatures.TrustedPlatformModule.TrustedPlatformModuleType\"\\\n\x19TrustedPlatformModuleType\x12\x14\n\x10TPM_TYPE_UNKNOWN\x10\x00\x12\x0f\n\x0bTHIRD_PARTY\x10\x01\x12\x0b\n\x07GSC_H1B\x10\x02\x12\x0b\n\x07GSC_H1D\x10\x03\x1aN\n\nHotwording\x12@\n\x07present\x18\x01 \x01(\x0e\x32/.chromiumos.config.api.HardwareFeatures.Present\x1a\xa9\x01\n\x07\x44isplay\x12\x42\n\x04type\x18\x01 \x01(\x0e\x32\x34.chromiumos.config.api.HardwareFeatures.Display.Type\"Z\n\x04Type\x12\x10\n\x0cTYPE_UNKNOWN\x10\x00\x12\x11\n\rTYPE_INTERNAL\x10\x01\x12\x11\n\rTYPE_EXTERNAL\x10\x02\x12\x1a\n\x16TYPE_INTERNAL_EXTERNAL\x10\x03\x1aL\n\x08Touchpad\x12@\n\x07present\x18\x01 \x01(\x0e\x32/.chromiumos.config.api.HardwareFeatures.Present\x1aX\n\x14MicrophoneMuteSwitch\x12@\n\x07present\x18\x01 \x01(\x0e\x32/.chromiumos.config.api.HardwareFeatures.Present\x1a\xb6\x05\n\x07\x42\x61ttery\x12@\n\x07present\x18\x01 \x01(\x0e\x32/.chromiumos.config.api.HardwareFeatures.Present\x12J\n\x08lifetime\x18\x02 \x01(\x0b\x32\x38.chromiumos.config.api.HardwareFeatures.Battery.Lifetime\x12J\n\x08\x63harging\x18\x03 \x01(\x0b\x32\x38.chromiumos.config.api.HardwareFeatures.Battery.Charging\x1a\x9f\x02\n\x08Lifetime\x12\x35\n\x0cshipping_min\x18\x01 \x01(\x0b\x32\x1f.chromiumos.config.api.Duration\x12\x37\n\x0e\x64\x65\x65p_sleep_min\x18\x02 \x01(\x0b\x32\x1f.chromiumos.config.api.Duration\x12\x34\n\x0bsuspend_min\x18\x03 \x01(\x0b\x32\x1f.chromiumos.config.api.Duration\x12\x38\n\x0flucid_sleep_min\x18\x04 \x01(\x0b\x32\x1f.chromiumos.config.api.Duration\x12\x33\n\nactive_min\x18\x05 \x01(\x0b\x32\x1f.chromiumos.config.api.Duration\x1a\xae\x01\n\x08\x43harging\x12\x33\n\nactive_max\x18\x01 \x01(\x0b\x32\x1f.chromiumos.config.api.Duration\x12\x34\n\x0bsuspend_max\x18\x02 \x01(\x0b\x32\x1f.chromiumos.config.api.Duration\x12\x37\n\x0e\x64\x65\x65p_sleep_max\x18\x03 \x01(\x0b\x32\x1f.chromiumos.config.api.Duration\x1aQ\n\rPrivacyScreen\x12@\n\x07present\x18\x01 \x01(\x0e\x32/.chromiumos.config.api.HardwareFeatures.Present\x1a\x45\n\x03Soc\x12>\n\x08\x66\x65\x61tures\x18\x01 \x03(\x0e\x32,.chromiumos.config.api.Component.Soc.Feature\x1a\x61\n\x14\x44isplayPortConverter\x12I\n\nconverters\x18\x01 \x03(\x0b\x32\x35.chromiumos.config.api.Component.DisplayPortConverter\x1aG\n\x03Hps\x12@\n\x07present\x18\x01 \x01(\x0e\x32/.chromiumos.config.api.HardwareFeatures.Present\x1aG\n\x03PoE\x12@\n\x07present\x18\x01 \x01(\x0e\x32/.chromiumos.config.api.HardwareFeatures.Present\x1al\n\x0bPowerSupply\x12\x43\n\nbarreljack\x18\x01 \x01(\x0e\x32/.chromiumos.config.api.HardwareFeatures.Present\x12\x18\n\x10usb_min_ac_watts\x18\x02 \x01(\x05\"<\n\x07Present\x12\x13\n\x0fPRESENT_UNKNOWN\x10\x00\x12\x0b\n\x07PRESENT\x10\x01\x12\x0f\n\x0bNOT_PRESENT\x10\x02\"\xa4\x01\n\x0cPortPosition\x12\x0b\n\x07UNKNOWN\x10\x00\x12\x08\n\x04LEFT\x10\x01\x12\t\n\x05RIGHT\x10\x02\x12\x08\n\x04\x42\x41\x43K\x10\x03\x12\t\n\x05\x46RONT\x10\x04\x12\x0e\n\nLEFT_FRONT\x10\x05\x12\r\n\tLEFT_BACK\x10\x06\x12\x0f\n\x0bRIGHT_FRONT\x10\x07\x12\x0e\n\nRIGHT_BACK\x10\x08\x12\r\n\tBACK_LEFT\x10\t\x12\x0e\n\nBACK_RIGHT\x10\nB*Z(go.chromium.org/chromiumos/config/go/apib\x06proto3')
+  serialized_pb=_b('\n$chromiumos/config/api/topology.proto\x12\x15\x63hromiumos.config.api\x1a%chromiumos/config/api/component.proto\x1a\x1egoogle/protobuf/wrappers.proto\"\x9a\x06\n\x08Topology\x12\n\n\x02id\x18\x01 \x01(\t\x12\x32\n\x04type\x18\x02 \x01(\x0e\x32$.chromiumos.config.api.Topology.Type\x12\x45\n\x0b\x64\x65scription\x18\x03 \x03(\x0b\x32\x30.chromiumos.config.api.Topology.DescriptionEntry\x12\x41\n\x10hardware_feature\x18\x04 \x01(\x0b\x32\'.chromiumos.config.api.HardwareFeatures\x1a\x32\n\x10\x44\x65scriptionEntry\x12\x0b\n\x03key\x18\x01 \x01(\t\x12\r\n\x05value\x18\x02 \x01(\t:\x02\x38\x01\"\x8f\x04\n\x04Type\x12\x10\n\x0cTYPE_UNKNOWN\x10\x00\x12\n\n\x06SCREEN\x10\x01\x12\x0f\n\x0b\x46ORM_FACTOR\x10\x02\x12\t\n\x05\x41UDIO\x10\x03\x12\n\n\x06STYLUS\x10\x04\x12\x0c\n\x08KEYBOARD\x10\x05\x12\x0b\n\x07THERMAL\x10\x06\x12\n\n\x06\x43\x41MERA\x10\x07\x12(\n$ACCELEROMETER_GYROSCOPE_MAGNETOMETER\x10\x08\x12\x0f\n\x0b\x46INGERPRINT\x10\t\x12\x14\n\x10PROXIMITY_SENSOR\x10\n\x12\x12\n\x0e\x44\x41UGHTER_BOARD\x10\x0b\x12\x18\n\x14NON_VOLATILE_STORAGE\x10\x0c\x12\x07\n\x03RAM\x10\r\x12\x08\n\x04WIFI\x10\x0e\x12\x12\n\x0e\x43\x45LLULAR_BOARD\x10\x0f\x12\r\n\tSD_READER\x10\x10\x12\x13\n\x0fMOTHERBOARD_USB\x10\x11\x12\r\n\tBLUETOOTH\x10\x12\x12\x0e\n\nBARRELJACK\x10\x13\x12\x10\n\x0cPOWER_BUTTON\x10\x14\x12\x11\n\rVOLUME_BUTTON\x10\x15\x12\x06\n\x02\x45\x43\x10\x16\x12\t\n\x05TOUCH\x10\x17\x12\x07\n\x03TPM\x10\x18\x12\x1a\n\x16MICROPHONE_MUTE_SWITCH\x10\x19\x12\x0b\n\x07\x42\x41TTERY\x10\x1a\x12\x08\n\x04HDMI\x10\x1b\x12\x07\n\x03SOC\x10\x1c\x12\x07\n\x03HPS\x10\x1d\x12\x10\n\x0c\x44P_CONVERTER\x10\x1e\x12\x07\n\x03POE\x10\x1f\x12\x10\n\x0cPOWER_SUPPLY\x10 \"\xa8\x01\n\x08\x44uration\x12\x32\n\x04type\x18\x01 \x01(\x0e\x32$.chromiumos.config.api.Duration.Type\x12\r\n\x05value\x18\x02 \x01(\x05\"Y\n\x04Type\x12\x10\n\x0cTYPE_UNKNOWN\x10\x00\x12\x10\n\x0cMILLISECONDS\x10\x01\x12\x0b\n\x07SECONDS\x10\x02\x12\x0b\n\x07MINUTES\x10\x03\x12\t\n\x05HOURS\x10\x04\x12\x08\n\x04\x44\x41YS\x10\x05\"\x89Y\n\x10HardwareFeatures\x12;\n\x05usb_c\x18\x01 \x01(\x0b\x32,.chromiumos.config.api.HardwareFeatures.UsbC\x12;\n\x05usb_a\x18\x02 \x01(\x0b\x32,.chromiumos.config.api.HardwareFeatures.UsbA\x12\x42\n\x08\x63\x65llular\x18\x03 \x01(\x0b\x32\x30.chromiumos.config.api.HardwareFeatures.Cellular\x12:\n\x04hdmi\x18\x04 \x01(\x0b\x32,.chromiumos.config.api.HardwareFeatures.Hdmi\x12P\n\tfw_config\x18\x05 \x01(\x0b\x32=.chromiumos.config.api.HardwareFeatures.FirmwareConfiguration\x12<\n\x05\x61udio\x18\x06 \x01(\x0b\x32-.chromiumos.config.api.HardwareFeatures.Audio\x12>\n\x06\x63\x61mera\x18\x07 \x01(\x0b\x32..chromiumos.config.api.HardwareFeatures.Camera\x12L\n\raccelerometer\x18\x08 \x01(\x0b\x32\x35.chromiumos.config.api.HardwareFeatures.Accelerometer\x12\x44\n\tgyroscope\x18\t \x01(\x0b\x32\x31.chromiumos.config.api.HardwareFeatures.Gyroscope\x12J\n\x0cmagnetometer\x18\n \x01(\x0b\x32\x34.chromiumos.config.api.HardwareFeatures.Magnetometer\x12I\n\x0clight_sensor\x18\x0b \x01(\x0b\x32\x33.chromiumos.config.api.HardwareFeatures.LightSensor\x12>\n\x06screen\x18\x0c \x01(\x0b\x32..chromiumos.config.api.HardwareFeatures.Screen\x12G\n\x0b\x66orm_factor\x18\r \x01(\x0b\x32\x32.chromiumos.config.api.HardwareFeatures.FormFactor\x12>\n\x06stylus\x18\x0e \x01(\x0b\x32..chromiumos.config.api.HardwareFeatures.Stylus\x12\x42\n\x08keyboard\x18\x0f \x01(\x0b\x32\x30.chromiumos.config.api.HardwareFeatures.Keyboard\x12>\n\x06memory\x18\x10 \x01(\x0b\x32..chromiumos.config.api.HardwareFeatures.Memory\x12H\n\x0b\x66ingerprint\x18\x11 \x01(\x0b\x32\x33.chromiumos.config.api.HardwareFeatures.Fingerprint\x12@\n\x07storage\x18\x12 \x01(\x0b\x32/.chromiumos.config.api.HardwareFeatures.Storage\x12\x44\n\tbluetooth\x18\x13 \x01(\x0b\x32\x31.chromiumos.config.api.HardwareFeatures.Bluetooth\x12\x46\n\nbarreljack\x18\x14 \x01(\x0b\x32\x32.chromiumos.config.api.HardwareFeatures.BarrelJack\x12:\n\x04wifi\x18\x17 \x01(\x0b\x32,.chromiumos.config.api.HardwareFeatures.Wifi\x12\x44\n\x0cpower_button\x18\x15 \x01(\x0b\x32..chromiumos.config.api.HardwareFeatures.Button\x12\x45\n\rvolume_button\x18\x16 \x01(\x0b\x32..chromiumos.config.api.HardwareFeatures.Button\x12W\n\x13\x65mbedded_controller\x18\x18 \x01(\x0b\x32:.chromiumos.config.api.HardwareFeatures.EmbeddedController\x12^\n\x17trusted_platform_module\x18\x19 \x01(\x0b\x32=.chromiumos.config.api.HardwareFeatures.TrustedPlatformModule\x12\x46\n\nhotwording\x18\x1a \x01(\x0b\x32\x32.chromiumos.config.api.HardwareFeatures.Hotwording\x12@\n\x07\x64isplay\x18\x1b \x01(\x0b\x32/.chromiumos.config.api.HardwareFeatures.Display\x12\x42\n\x08touchpad\x18\x1c \x01(\x0b\x32\x30.chromiumos.config.api.HardwareFeatures.Touchpad\x12\\\n\x16microphone_mute_switch\x18\x1d \x01(\x0b\x32<.chromiumos.config.api.HardwareFeatures.MicrophoneMuteSwitch\x12@\n\x07\x62\x61ttery\x18\x1e \x01(\x0b\x32/.chromiumos.config.api.HardwareFeatures.Battery\x12M\n\x0eprivacy_screen\x18\x1f \x01(\x0b\x32\x35.chromiumos.config.api.HardwareFeatures.PrivacyScreen\x12\x38\n\x03soc\x18  \x01(\x0b\x32+.chromiumos.config.api.HardwareFeatures.Soc\x12R\n\x0c\x64p_converter\x18! \x01(\x0b\x32<.chromiumos.config.api.HardwareFeatures.DisplayPortConverter\x12\x38\n\x03hps\x18\" \x01(\x0b\x32+.chromiumos.config.api.HardwareFeatures.Hps\x12\x38\n\x03poe\x18# \x01(\x0b\x32+.chromiumos.config.api.HardwareFeatures.PoE\x12I\n\x0cpower_supply\x18$ \x01(\x0b\x32\x33.chromiumos.config.api.HardwareFeatures.PowerSupply\x12\x44\n\tproximity\x18% \x01(\x0b\x32\x31.chromiumos.config.api.HardwareFeatures.Proximity\x1a\x16\n\x05\x43ount\x12\r\n\x05value\x18\x01 \x01(\r\x1a\x8d\x02\n\x04UsbC\x12<\n\x05\x63ount\x18\x01 \x01(\x0b\x32-.chromiumos.config.api.HardwareFeatures.Count\x12@\n\x05ports\x18\x02 \x03(\x0b\x32\x31.chromiumos.config.api.HardwareFeatures.UsbC.Port\x1a\x84\x01\n\x04Port\x12\x46\n\x08position\x18\x01 \x01(\x0e\x32\x34.chromiumos.config.api.HardwareFeatures.PortPosition\x12\x34\n\x0eindex_override\x18\x02 \x01(\x0b\x32\x1c.google.protobuf.UInt32Value\x1a\x44\n\x04UsbA\x12<\n\x05\x63ount\x18\x01 \x01(\x0b\x32-.chromiumos.config.api.HardwareFeatures.Count\x1a\x9b\x04\n\x08\x43\x65llular\x12@\n\x07present\x18\x01 \x01(\x0e\x32/.chromiumos.config.api.HardwareFeatures.Present\x12\r\n\x05model\x18\x02 \x01(\t\x12K\n\x04type\x18\x03 \x01(\x0e\x32=.chromiumos.config.api.HardwareFeatures.Cellular.CellularType\x12\x1b\n\x13\x61ttach_apn_required\x18\x04 \x01(\x08\x12t\n\x1e\x64ynamic_power_reduction_config\x18\x05 \x01(\x0b\x32L.chromiumos.config.api.HardwareFeatures.Cellular.DynamicPowerReductionConfig\x1a\x99\x01\n\x1b\x44ynamicPowerReductionConfig\x12\x0e\n\x04gpio\x18\x01 \x01(\rH\x00\x12\x17\n\rmodem_manager\x18\x02 \x01(\x08H\x00\x12/\n\x0btablet_mode\x18\x03 \x01(\x0b\x32\x1a.google.protobuf.BoolValueB \n\x1e\x64ynamic_power_reduction_config\"B\n\x0c\x43\x65llularType\x12\x0f\n\x0bNOT_PRESENT\x10\x00\x12\x10\n\x0c\x43\x45LLULAR_LTE\x10\x01\x12\x0f\n\x0b\x43\x45LLULAR_5G\x10\x02\x1aH\n\x04Hdmi\x12@\n\x07present\x18\x01 \x01(\x0e\x32/.chromiumos.config.api.HardwareFeatures.Present\x1a\x34\n\x15\x46irmwareConfiguration\x12\r\n\x05value\x18\x01 \x01(\r\x12\x0c\n\x04mask\x18\x02 \x01(\r\x1a\xec\n\n\x05\x41udio\x12M\n\x0b\x61udio_codec\x18\x01 \x01(\x0e\x32\x38.chromiumos.config.api.HardwareFeatures.Audio.AudioCodec\x12L\n\x0bspeaker_amp\x18\x02 \x01(\x0e\x32\x37.chromiumos.config.api.HardwareFeatures.Audio.Amplifier\x12Q\n\x0fheadphone_codec\x18\x03 \x01(\x0e\x32\x38.chromiumos.config.api.HardwareFeatures.Audio.AudioCodec\x12\x45\n\x0elid_microphone\x18\x04 \x01(\x0b\x32-.chromiumos.config.api.HardwareFeatures.Count\x12\x46\n\x0f\x62\x61se_microphone\x18\x05 \x01(\x0b\x32-.chromiumos.config.api.HardwareFeatures.Count\x12\x45\n\x11speaker_amplifier\x18\x06 \x01(\x0b\x32*.chromiumos.config.api.Component.Amplifier\x12N\n\x0c\x63\x61rd_configs\x18\x07 \x03(\x0b\x32\x38.chromiumos.config.api.HardwareFeatures.Audio.CardConfig\x12W\n\x0b\x63ras_config\x18\x08 \x01(\x0e\x32\x42.chromiumos.config.api.HardwareFeatures.Audio.AudioConfigStructure\x1a\xe6\x02\n\nCardConfig\x12\x11\n\tcard_name\x18\x01 \x01(\t\x12\x30\n\nucm_suffix\x18\x02 \x01(\x0b\x32\x1c.google.protobuf.StringValue\x12V\n\nucm_config\x18\x03 \x01(\x0e\x32\x42.chromiumos.config.api.HardwareFeatures.Audio.AudioConfigStructure\x12W\n\x0b\x63ras_config\x18\x04 \x01(\x0e\x32\x42.chromiumos.config.api.HardwareFeatures.Audio.AudioConfigStructure\x12\x62\n\x16sound_card_init_config\x18\x05 \x01(\x0e\x32\x42.chromiumos.config.api.HardwareFeatures.Audio.AudioConfigStructure\"\x9d\x01\n\nAudioCodec\x12\x17\n\x13\x41UDIO_CODEC_UNKNOWN\x10\x00\x12\n\n\x06RT5682\x10\x01\x12\x0c\n\x08\x41LC5682I\x10\x02\x12\x0b\n\x07\x41LC5682\x10\x03\x12\n\n\x06\x44\x41\x37\x32\x31\x39\x10\x08\x12\r\n\tNAU88L25B\x10\n\x12\x0b\n\x07\x43S42L42\x10\x0b\x12\x0e\n\nALC5682IVS\x10\x0c\x12\x0b\n\x07WCD9385\x10\r\"\x04\x08\x04\x10\x07\"\x04\x08\t\x10\t\"\x99\x01\n\tAmplifier\x12\x15\n\x11\x41MPLIFIER_UNKNOWN\x10\x00\x12\x0c\n\x08MAX98357\x10\x04\x12\x0c\n\x08MAX98373\x10\x05\x12\x0c\n\x08MAX98360\x10\x06\x12\n\n\x06RT1015\x10\x07\x12\x0b\n\x07\x41LC1011\x10\t\x12\x0b\n\x07RT1015P\x10\n\x12\x0b\n\x07\x41LC1019\x10\x0b\x12\x0c\n\x08MAX98390\x10\x0c\"\x04\x08\x01\x10\x03\"\x04\x08\x08\x10\x08\"O\n\x14\x41udioConfigStructure\x12\x1f\n\x1b\x41UDIO_CONFIG_STRUCTURE_NONE\x10\x00\x12\n\n\x06\x44\x45SIGN\x10\x01\x12\n\n\x06\x43OMMON\x10\x02\x1a\xc2\x06\n\x06\x43\x61mera\x12\x46\n\x07\x64\x65vices\x18\x04 \x03(\x0b\x32\x35.chromiumos.config.api.HardwareFeatures.Camera.Device\x1a\x9b\x03\n\x06\x44\x65vice\x12K\n\tinterface\x18\x02 \x01(\x0e\x32\x38.chromiumos.config.api.HardwareFeatures.Camera.Interface\x12\x45\n\x06\x66\x61\x63ing\x18\x03 \x01(\x0e\x32\x35.chromiumos.config.api.HardwareFeatures.Camera.Facing\x12O\n\x0borientation\x18\x04 \x01(\x0e\x32:.chromiumos.config.api.HardwareFeatures.Camera.Orientation\x12\r\n\x05\x66lags\x18\x05 \x01(\r\x12\x0b\n\x03ids\x18\x06 \x03(\t\x12G\n\x0eprivacy_switch\x18\x07 \x01(\x0e\x32/.chromiumos.config.api.HardwareFeatures.Present\x12G\n\x10microphone_count\x18\x08 \x01(\x0b\x32-.chromiumos.config.api.HardwareFeatures.Count\"I\n\tInterface\x12\x15\n\x11INTERFACE_UNKNOWN\x10\x00\x12\x11\n\rINTERFACE_USB\x10\x01\x12\x12\n\x0eINTERFACE_MIPI\x10\x02\"?\n\x06\x46\x61\x63ing\x12\x12\n\x0e\x46\x41\x43ING_UNKNOWN\x10\x00\x12\x10\n\x0c\x46\x41\x43ING_FRONT\x10\x01\x12\x0f\n\x0b\x46\x41\x43ING_BACK\x10\x02\"w\n\x0bOrientation\x12\x17\n\x13ORIENTATION_UNKNOWN\x10\x00\x12\x11\n\rORIENTATION_0\x10\x01\x12\x12\n\x0eORIENTATION_90\x10\x02\x12\x13\n\x0fORIENTATION_180\x10\x03\x12\x13\n\x0fORIENTATION_270\x10\x04\"M\n\x05\x46lags\x12\x0e\n\nFLAGS_NONE\x10\x00\x12\x17\n\x13\x46LAGS_SUPPORT_1080P\x10\x01\x12\x1b\n\x17\x46LAGS_SUPPORT_AUTOFOCUS\x10\x02\x1a\xa8\x01\n\rAccelerometer\x12J\n\x11lid_accelerometer\x18\x01 \x01(\x0e\x32/.chromiumos.config.api.HardwareFeatures.Present\x12K\n\x12\x62\x61se_accelerometer\x18\x02 \x01(\x0e\x32/.chromiumos.config.api.HardwareFeatures.Present\x1a\x9c\x01\n\tGyroscope\x12\x46\n\rlid_gyroscope\x18\x01 \x01(\x0e\x32/.chromiumos.config.api.HardwareFeatures.Present\x12G\n\x0e\x62\x61se_gyroscope\x18\x02 \x01(\x0e\x32/.chromiumos.config.api.HardwareFeatures.Present\x1a\xa5\x01\n\x0cMagnetometer\x12I\n\x10lid_magnetometer\x18\x01 \x01(\x0e\x32/.chromiumos.config.api.HardwareFeatures.Present\x12J\n\x11\x62\x61se_magnetometer\x18\x02 \x01(\x0e\x32/.chromiumos.config.api.HardwareFeatures.Present\x1a\xa2\x01\n\x0bLightSensor\x12H\n\x0flid_lightsensor\x18\x01 \x01(\x0e\x32/.chromiumos.config.api.HardwareFeatures.Present\x12I\n\x10\x62\x61se_lightsensor\x18\x02 \x01(\x0e\x32/.chromiumos.config.api.HardwareFeatures.Present\x1a\xaa\x01\n\x06Screen\x12R\n\x10panel_properties\x18\x03 \x01(\x0b\x32\x38.chromiumos.config.api.Component.DisplayPanel.Properties\x12\x46\n\rtouch_support\x18\x02 \x01(\x0e\x32/.chromiumos.config.api.HardwareFeatures.PresentJ\x04\x08\x01\x10\x02\x1a\xff\x01\n\nFormFactor\x12V\n\x0b\x66orm_factor\x18\x01 \x01(\x0e\x32\x41.chromiumos.config.api.HardwareFeatures.FormFactor.FormFactorType\"\x98\x01\n\x0e\x46ormFactorType\x12\x17\n\x13\x46ORM_FACTOR_UNKNOWN\x10\x00\x12\r\n\tCLAMSHELL\x10\x01\x12\x0f\n\x0b\x43ONVERTIBLE\x10\x02\x12\x0e\n\nDETACHABLE\x10\x03\x12\x0e\n\nCHROMEBASE\x10\x04\x12\r\n\tCHROMEBOX\x10\x05\x12\r\n\tCHROMEBIT\x10\x06\x12\x0f\n\x0b\x43HROMESLATE\x10\x07\x1a\x9b\x01\n\x06Stylus\x12I\n\x06stylus\x18\x01 \x01(\x0e\x32\x39.chromiumos.config.api.HardwareFeatures.Stylus.StylusType\"F\n\nStylusType\x12\x12\n\x0eSTYLUS_UNKNOWN\x10\x00\x12\x08\n\x04NONE\x10\x01\x12\x0c\n\x08INTERNAL\x10\x02\x12\x0c\n\x08\x45XTERNAL\x10\x03\x1a\xa2\x03\n\x08Keyboard\x12T\n\rkeyboard_type\x18\x01 \x01(\x0e\x32=.chromiumos.config.api.HardwareFeatures.Keyboard.KeyboardType\x12\x42\n\tbacklight\x18\x02 \x01(\x0e\x32/.chromiumos.config.api.HardwareFeatures.Present\x12\x45\n\x0cpower_button\x18\x03 \x01(\x0e\x32/.chromiumos.config.api.HardwareFeatures.Present\x12\x44\n\x0bnumeric_pad\x18\x04 \x01(\x0e\x32/.chromiumos.config.api.HardwareFeatures.Present\x12\x1c\n\x14\x62\x61\x63klight_user_steps\x18\x05 \x03(\x01\"Q\n\x0cKeyboardType\x12\x19\n\x15KEYBOARD_TYPE_UNKNOWN\x10\x00\x12\x0c\n\x08INTERNAL\x10\x01\x12\x08\n\x04NONE\x10\x02\x12\x0e\n\nDETACHABLE\x10\x03\x1aJ\n\x06Memory\x12@\n\x07profile\x18\x01 \x01(\x0b\x32/.chromiumos.config.api.Component.Memory.Profile\x1a\xc8\x02\n\x0b\x46ingerprint\x12N\n\x08location\x18\x01 \x01(\x0e\x32<.chromiumos.config.api.HardwareFeatures.Fingerprint.Location\x12\r\n\x05\x62oard\x18\x02 \x01(\t\x12\x12\n\nro_version\x18\x03 \x01(\t\"\xc5\x01\n\x08Location\x12\x14\n\x10LOCATION_UNKNOWN\x10\x00\x12\x19\n\x15POWER_BUTTON_TOP_LEFT\x10\x01\x12\x18\n\x14KEYBOARD_BOTTOM_LEFT\x10\x02\x12\x19\n\x15KEYBOARD_BOTTOM_RIGHT\x10\x03\x12\x16\n\x12KEYBOARD_TOP_RIGHT\x10\x04\x12\x0f\n\x0bNOT_PRESENT\x10\x05\x12\x0e\n\nRIGHT_SIDE\x10\x06\x12\r\n\tLEFT_SIDE\x10\x07\x12\x0b\n\x07PRESENT\x10\x08\x1a\x66\n\x07Storage\x12J\n\x0cstorage_type\x18\x01 \x01(\x0e\x32\x34.chromiumos.config.api.Component.Storage.StorageType\x12\x0f\n\x07size_gb\x18\x02 \x01(\r\x1a\x8c\x01\n\tBluetooth\x12=\n\tcomponent\x18\x01 \x01(\x0b\x32*.chromiumos.config.api.Component.Bluetooth\x12@\n\x07present\x18\x02 \x01(\x0e\x32/.chromiumos.config.api.HardwareFeatures.Present\x1aN\n\nBarrelJack\x12@\n\x07present\x18\x01 \x01(\x0e\x32/.chromiumos.config.api.HardwareFeatures.Present\x1a\xf7\x01\n\x04Wifi\x12T\n\x18supported_wlan_protocols\x18\x01 \x03(\x0e\x32\x32.chromiumos.config.api.Component.Wifi.WLANProtocol\x12I\n\nwifi_chips\x18\x02 \x03(\x0e\x32\x35.chromiumos.config.api.HardwareFeatures.Wifi.WifiChip\"N\n\x08WifiChip\x12\x15\n\x11WIFI_CHIP_UNKNOWN\x10\x00\x12\x15\n\x11WIRELESS_86ED801D\x10\x01\x12\x14\n\x10WIRELESS_REALTEK\x10\x02\x1a\xa0\x02\n\x06\x42utton\x12\x45\n\x06region\x18\x01 \x01(\x0e\x32\x35.chromiumos.config.api.HardwareFeatures.Button.Region\x12\x41\n\x04\x65\x64ge\x18\x02 \x01(\x0e\x32\x33.chromiumos.config.api.HardwareFeatures.Button.Edge\x12\x10\n\x08position\x18\x03 \x01(\x02\"6\n\x06Region\x12\x12\n\x0eREGION_UNKNOWN\x10\x00\x12\n\n\x06SCREEN\x10\x01\x12\x0c\n\x08KEYBOARD\x10\x02\"B\n\x04\x45\x64ge\x12\x10\n\x0c\x45\x44GE_UNKNOWN\x10\x00\x12\x08\n\x04LEFT\x10\x01\x12\t\n\x05RIGHT\x10\x02\x12\x07\n\x03TOP\x10\x03\x12\n\n\x06\x42OTTOM\x10\x04\x1a\xd3\x03\n\x12\x45mbeddedController\x12@\n\x07present\x18\x01 \x01(\x0e\x32/.chromiumos.config.api.HardwareFeatures.Present\x12\x62\n\x07\x65\x63_type\x18\x02 \x01(\x0e\x32Q.chromiumos.config.api.HardwareFeatures.EmbeddedController.EmbeddedControllerType\x12\x41\n\x04part\x18\x03 \x01(\x0b\x32\x33.chromiumos.config.api.Component.EmbeddedController\x12J\n\x11\x66\x65\x61ture_typec_cmd\x18\x04 \x01(\x0e\x32/.chromiumos.config.api.HardwareFeatures.Present\x12<\n\x03\x63\x62i\x18\x05 \x01(\x0e\x32/.chromiumos.config.api.HardwareFeatures.Present\"J\n\x16\x45mbeddedControllerType\x12\x13\n\x0f\x45\x43_TYPE_UNKNOWN\x10\x00\x12\r\n\tEC_CHROME\x10\x01\x12\x0c\n\x08\x45\x43_WILCO\x10\x02\x1a\xe0\x01\n\x15TrustedPlatformModule\x12i\n\x08tpm_type\x18\x01 \x01(\x0e\x32W.chromiumos.config.api.HardwareFeatures.TrustedPlatformModule.TrustedPlatformModuleType\"\\\n\x19TrustedPlatformModuleType\x12\x14\n\x10TPM_TYPE_UNKNOWN\x10\x00\x12\x0f\n\x0bTHIRD_PARTY\x10\x01\x12\x0b\n\x07GSC_H1B\x10\x02\x12\x0b\n\x07GSC_H1D\x10\x03\x1aN\n\nHotwording\x12@\n\x07present\x18\x01 \x01(\x0e\x32/.chromiumos.config.api.HardwareFeatures.Present\x1a\xa9\x01\n\x07\x44isplay\x12\x42\n\x04type\x18\x01 \x01(\x0e\x32\x34.chromiumos.config.api.HardwareFeatures.Display.Type\"Z\n\x04Type\x12\x10\n\x0cTYPE_UNKNOWN\x10\x00\x12\x11\n\rTYPE_INTERNAL\x10\x01\x12\x11\n\rTYPE_EXTERNAL\x10\x02\x12\x1a\n\x16TYPE_INTERNAL_EXTERNAL\x10\x03\x1aL\n\x08Touchpad\x12@\n\x07present\x18\x01 \x01(\x0e\x32/.chromiumos.config.api.HardwareFeatures.Present\x1aX\n\x14MicrophoneMuteSwitch\x12@\n\x07present\x18\x01 \x01(\x0e\x32/.chromiumos.config.api.HardwareFeatures.Present\x1a\xb6\x05\n\x07\x42\x61ttery\x12@\n\x07present\x18\x01 \x01(\x0e\x32/.chromiumos.config.api.HardwareFeatures.Present\x12J\n\x08lifetime\x18\x02 \x01(\x0b\x32\x38.chromiumos.config.api.HardwareFeatures.Battery.Lifetime\x12J\n\x08\x63harging\x18\x03 \x01(\x0b\x32\x38.chromiumos.config.api.HardwareFeatures.Battery.Charging\x1a\x9f\x02\n\x08Lifetime\x12\x35\n\x0cshipping_min\x18\x01 \x01(\x0b\x32\x1f.chromiumos.config.api.Duration\x12\x37\n\x0e\x64\x65\x65p_sleep_min\x18\x02 \x01(\x0b\x32\x1f.chromiumos.config.api.Duration\x12\x34\n\x0bsuspend_min\x18\x03 \x01(\x0b\x32\x1f.chromiumos.config.api.Duration\x12\x38\n\x0flucid_sleep_min\x18\x04 \x01(\x0b\x32\x1f.chromiumos.config.api.Duration\x12\x33\n\nactive_min\x18\x05 \x01(\x0b\x32\x1f.chromiumos.config.api.Duration\x1a\xae\x01\n\x08\x43harging\x12\x33\n\nactive_max\x18\x01 \x01(\x0b\x32\x1f.chromiumos.config.api.Duration\x12\x34\n\x0bsuspend_max\x18\x02 \x01(\x0b\x32\x1f.chromiumos.config.api.Duration\x12\x37\n\x0e\x64\x65\x65p_sleep_max\x18\x03 \x01(\x0b\x32\x1f.chromiumos.config.api.Duration\x1aQ\n\rPrivacyScreen\x12@\n\x07present\x18\x01 \x01(\x0e\x32/.chromiumos.config.api.HardwareFeatures.Present\x1a\x45\n\x03Soc\x12>\n\x08\x66\x65\x61tures\x18\x01 \x03(\x0e\x32,.chromiumos.config.api.Component.Soc.Feature\x1a\x61\n\x14\x44isplayPortConverter\x12I\n\nconverters\x18\x01 \x03(\x0b\x32\x35.chromiumos.config.api.Component.DisplayPortConverter\x1aG\n\x03Hps\x12@\n\x07present\x18\x01 \x01(\x0e\x32/.chromiumos.config.api.HardwareFeatures.Present\x1aG\n\x03PoE\x12@\n\x07present\x18\x01 \x01(\x0e\x32/.chromiumos.config.api.HardwareFeatures.Present\x1al\n\x0bPowerSupply\x12\x43\n\nbarreljack\x18\x01 \x01(\x0e\x32/.chromiumos.config.api.HardwareFeatures.Present\x12\x18\n\x10usb_min_ac_watts\x18\x02 \x01(\x05\x1a\x0b\n\tProximity\"<\n\x07Present\x12\x13\n\x0fPRESENT_UNKNOWN\x10\x00\x12\x0b\n\x07PRESENT\x10\x01\x12\x0f\n\x0bNOT_PRESENT\x10\x02\"\xa4\x01\n\x0cPortPosition\x12\x0b\n\x07UNKNOWN\x10\x00\x12\x08\n\x04LEFT\x10\x01\x12\t\n\x05RIGHT\x10\x02\x12\x08\n\x04\x42\x41\x43K\x10\x03\x12\t\n\x05\x46RONT\x10\x04\x12\x0e\n\nLEFT_FRONT\x10\x05\x12\r\n\tLEFT_BACK\x10\x06\x12\x0f\n\x0bRIGHT_FRONT\x10\x07\x12\x0e\n\nRIGHT_BACK\x10\x08\x12\r\n\tBACK_LEFT\x10\t\x12\x0e\n\nBACK_RIGHT\x10\nB*Z(go.chromium.org/chromiumos/config/go/apib\x06proto3')
   ,
   dependencies=[chromiumos_dot_config_dot_api_dot_component__pb2.DESCRIPTOR,google_dot_protobuf_dot_wrappers__pb2.DESCRIPTOR,])
 
@@ -232,8 +232,8 @@
   ],
   containing_type=None,
   serialized_options=None,
-  serialized_start=4225,
-  serialized_end=4291,
+  serialized_start=4569,
+  serialized_end=4635,
 )
 _sym_db.RegisterEnumDescriptor(_HARDWAREFEATURES_CELLULAR_CELLULARTYPE)
 
@@ -282,8 +282,8 @@
   ],
   containing_type=None,
   serialized_options=None,
-  serialized_start=5416,
-  serialized_end=5573,
+  serialized_start=5760,
+  serialized_end=5917,
 )
 _sym_db.RegisterEnumDescriptor(_HARDWAREFEATURES_AUDIO_AUDIOCODEC)
 
@@ -332,8 +332,8 @@
   ],
   containing_type=None,
   serialized_options=None,
-  serialized_start=5576,
-  serialized_end=5729,
+  serialized_start=5920,
+  serialized_end=6073,
 )
 _sym_db.RegisterEnumDescriptor(_HARDWAREFEATURES_AUDIO_AMPLIFIER)
 
@@ -358,8 +358,8 @@
   ],
   containing_type=None,
   serialized_options=None,
-  serialized_start=5731,
-  serialized_end=5810,
+  serialized_start=6075,
+  serialized_end=6154,
 )
 _sym_db.RegisterEnumDescriptor(_HARDWAREFEATURES_AUDIO_AUDIOCONFIGSTRUCTURE)
 
@@ -384,8 +384,8 @@
   ],
   containing_type=None,
   serialized_options=None,
-  serialized_start=6309,
-  serialized_end=6382,
+  serialized_start=6653,
+  serialized_end=6726,
 )
 _sym_db.RegisterEnumDescriptor(_HARDWAREFEATURES_CAMERA_INTERFACE)
 
@@ -410,8 +410,8 @@
   ],
   containing_type=None,
   serialized_options=None,
-  serialized_start=6384,
-  serialized_end=6447,
+  serialized_start=6728,
+  serialized_end=6791,
 )
 _sym_db.RegisterEnumDescriptor(_HARDWAREFEATURES_CAMERA_FACING)
 
@@ -444,8 +444,8 @@
   ],
   containing_type=None,
   serialized_options=None,
-  serialized_start=6449,
-  serialized_end=6568,
+  serialized_start=6793,
+  serialized_end=6912,
 )
 _sym_db.RegisterEnumDescriptor(_HARDWAREFEATURES_CAMERA_ORIENTATION)
 
@@ -470,8 +470,8 @@
   ],
   containing_type=None,
   serialized_options=None,
-  serialized_start=6570,
-  serialized_end=6647,
+  serialized_start=6914,
+  serialized_end=6991,
 )
 _sym_db.RegisterEnumDescriptor(_HARDWAREFEATURES_CAMERA_FLAGS)
 
@@ -516,8 +516,8 @@
   ],
   containing_type=None,
   serialized_options=None,
-  serialized_start=7589,
-  serialized_end=7741,
+  serialized_start=7933,
+  serialized_end=8085,
 )
 _sym_db.RegisterEnumDescriptor(_HARDWAREFEATURES_FORMFACTOR_FORMFACTORTYPE)
 
@@ -546,8 +546,8 @@
   ],
   containing_type=None,
   serialized_options=None,
-  serialized_start=7829,
-  serialized_end=7899,
+  serialized_start=8173,
+  serialized_end=8243,
 )
 _sym_db.RegisterEnumDescriptor(_HARDWAREFEATURES_STYLUS_STYLUSTYPE)
 
@@ -576,8 +576,8 @@
   ],
   containing_type=None,
   serialized_options=None,
-  serialized_start=8239,
-  serialized_end=8320,
+  serialized_start=8583,
+  serialized_end=8664,
 )
 _sym_db.RegisterEnumDescriptor(_HARDWAREFEATURES_KEYBOARD_KEYBOARDTYPE)
 
@@ -626,8 +626,8 @@
   ],
   containing_type=None,
   serialized_options=None,
-  serialized_start=8530,
-  serialized_end=8727,
+  serialized_start=8874,
+  serialized_end=9071,
 )
 _sym_db.RegisterEnumDescriptor(_HARDWAREFEATURES_FINGERPRINT_LOCATION)
 
@@ -652,8 +652,8 @@
   ],
   containing_type=None,
   serialized_options=None,
-  serialized_start=9226,
-  serialized_end=9304,
+  serialized_start=9570,
+  serialized_end=9648,
 )
 _sym_db.RegisterEnumDescriptor(_HARDWAREFEATURES_WIFI_WIFICHIP)
 
@@ -678,8 +678,8 @@
   ],
   containing_type=None,
   serialized_options=None,
-  serialized_start=9473,
-  serialized_end=9527,
+  serialized_start=9817,
+  serialized_end=9871,
 )
 _sym_db.RegisterEnumDescriptor(_HARDWAREFEATURES_BUTTON_REGION)
 
@@ -712,8 +712,8 @@
   ],
   containing_type=None,
   serialized_options=None,
-  serialized_start=9529,
-  serialized_end=9595,
+  serialized_start=9873,
+  serialized_end=9939,
 )
 _sym_db.RegisterEnumDescriptor(_HARDWAREFEATURES_BUTTON_EDGE)
 
@@ -738,8 +738,8 @@
   ],
   containing_type=None,
   serialized_options=None,
-  serialized_start=9991,
-  serialized_end=10065,
+  serialized_start=10335,
+  serialized_end=10409,
 )
 _sym_db.RegisterEnumDescriptor(_HARDWAREFEATURES_EMBEDDEDCONTROLLER_EMBEDDEDCONTROLLERTYPE)
 
@@ -768,8 +768,8 @@
   ],
   containing_type=None,
   serialized_options=None,
-  serialized_start=10200,
-  serialized_end=10292,
+  serialized_start=10544,
+  serialized_end=10636,
 )
 _sym_db.RegisterEnumDescriptor(_HARDWAREFEATURES_TRUSTEDPLATFORMMODULE_TRUSTEDPLATFORMMODULETYPE)
 
@@ -798,8 +798,8 @@
   ],
   containing_type=None,
   serialized_options=None,
-  serialized_start=10454,
-  serialized_end=10544,
+  serialized_start=10798,
+  serialized_end=10888,
 )
 _sym_db.RegisterEnumDescriptor(_HARDWAREFEATURES_DISPLAY_TYPE)
 
@@ -824,8 +824,8 @@
   ],
   containing_type=None,
   serialized_options=None,
-  serialized_start=11920,
-  serialized_end=11980,
+  serialized_start=12277,
+  serialized_end=12337,
 )
 _sym_db.RegisterEnumDescriptor(_HARDWAREFEATURES_PRESENT)
 
@@ -882,8 +882,8 @@
   ],
   containing_type=None,
   serialized_options=None,
-  serialized_start=11983,
-  serialized_end=12147,
+  serialized_start=12340,
+  serialized_end=12504,
 )
 _sym_db.RegisterEnumDescriptor(_HARDWAREFEATURES_PORTPOSITION)
 
@@ -1043,8 +1043,8 @@
   extension_ranges=[],
   oneofs=[
   ],
-  serialized_start=3659,
-  serialized_end=3681,
+  serialized_start=3729,
+  serialized_end=3751,
 )
 
 _HARDWAREFEATURES_USBC_PORT = _descriptor.Descriptor(
@@ -1080,8 +1080,8 @@
   extension_ranges=[],
   oneofs=[
   ],
-  serialized_start=3821,
-  serialized_end=3953,
+  serialized_start=3891,
+  serialized_end=4023,
 )
 
 _HARDWAREFEATURES_USBC = _descriptor.Descriptor(
@@ -1117,8 +1117,8 @@
   extension_ranges=[],
   oneofs=[
   ],
-  serialized_start=3684,
-  serialized_end=3953,
+  serialized_start=3754,
+  serialized_end=4023,
 )
 
 _HARDWAREFEATURES_USBA = _descriptor.Descriptor(
@@ -1147,8 +1147,55 @@
   extension_ranges=[],
   oneofs=[
   ],
-  serialized_start=3955,
-  serialized_end=4023,
+  serialized_start=4025,
+  serialized_end=4093,
+)
+
+_HARDWAREFEATURES_CELLULAR_DYNAMICPOWERREDUCTIONCONFIG = _descriptor.Descriptor(
+  name='DynamicPowerReductionConfig',
+  full_name='chromiumos.config.api.HardwareFeatures.Cellular.DynamicPowerReductionConfig',
+  filename=None,
+  file=DESCRIPTOR,
+  containing_type=None,
+  fields=[
+    _descriptor.FieldDescriptor(
+      name='gpio', full_name='chromiumos.config.api.HardwareFeatures.Cellular.DynamicPowerReductionConfig.gpio', index=0,
+      number=1, type=13, cpp_type=3, label=1,
+      has_default_value=False, default_value=0,
+      message_type=None, enum_type=None, containing_type=None,
+      is_extension=False, extension_scope=None,
+      serialized_options=None, file=DESCRIPTOR),
+    _descriptor.FieldDescriptor(
+      name='modem_manager', full_name='chromiumos.config.api.HardwareFeatures.Cellular.DynamicPowerReductionConfig.modem_manager', index=1,
+      number=2, type=8, cpp_type=7, label=1,
+      has_default_value=False, default_value=False,
+      message_type=None, enum_type=None, containing_type=None,
+      is_extension=False, extension_scope=None,
+      serialized_options=None, file=DESCRIPTOR),
+    _descriptor.FieldDescriptor(
+      name='tablet_mode', full_name='chromiumos.config.api.HardwareFeatures.Cellular.DynamicPowerReductionConfig.tablet_mode', index=2,
+      number=3, type=11, cpp_type=10, label=1,
+      has_default_value=False, default_value=None,
+      message_type=None, enum_type=None, containing_type=None,
+      is_extension=False, extension_scope=None,
+      serialized_options=None, file=DESCRIPTOR),
+  ],
+  extensions=[
+  ],
+  nested_types=[],
+  enum_types=[
+  ],
+  serialized_options=None,
+  is_extendable=False,
+  syntax='proto3',
+  extension_ranges=[],
+  oneofs=[
+    _descriptor.OneofDescriptor(
+      name='dynamic_power_reduction_config', full_name='chromiumos.config.api.HardwareFeatures.Cellular.DynamicPowerReductionConfig.dynamic_power_reduction_config',
+      index=0, containing_type=None, fields=[]),
+  ],
+  serialized_start=4414,
+  serialized_end=4567,
 )
 
 _HARDWAREFEATURES_CELLULAR = _descriptor.Descriptor(
@@ -1186,10 +1233,17 @@
       message_type=None, enum_type=None, containing_type=None,
       is_extension=False, extension_scope=None,
       serialized_options=None, file=DESCRIPTOR),
+    _descriptor.FieldDescriptor(
+      name='dynamic_power_reduction_config', full_name='chromiumos.config.api.HardwareFeatures.Cellular.dynamic_power_reduction_config', index=4,
+      number=5, type=11, cpp_type=10, label=1,
+      has_default_value=False, default_value=None,
+      message_type=None, enum_type=None, containing_type=None,
+      is_extension=False, extension_scope=None,
+      serialized_options=None, file=DESCRIPTOR),
   ],
   extensions=[
   ],
-  nested_types=[],
+  nested_types=[_HARDWAREFEATURES_CELLULAR_DYNAMICPOWERREDUCTIONCONFIG, ],
   enum_types=[
     _HARDWAREFEATURES_CELLULAR_CELLULARTYPE,
   ],
@@ -1199,8 +1253,8 @@
   extension_ranges=[],
   oneofs=[
   ],
-  serialized_start=4026,
-  serialized_end=4291,
+  serialized_start=4096,
+  serialized_end=4635,
 )
 
 _HARDWAREFEATURES_HDMI = _descriptor.Descriptor(
@@ -1229,8 +1283,8 @@
   extension_ranges=[],
   oneofs=[
   ],
-  serialized_start=4293,
-  serialized_end=4365,
+  serialized_start=4637,
+  serialized_end=4709,
 )
 
 _HARDWAREFEATURES_FIRMWARECONFIGURATION = _descriptor.Descriptor(
@@ -1266,8 +1320,8 @@
   extension_ranges=[],
   oneofs=[
   ],
-  serialized_start=4367,
-  serialized_end=4419,
+  serialized_start=4711,
+  serialized_end=4763,
 )
 
 _HARDWAREFEATURES_AUDIO_CARDCONFIG = _descriptor.Descriptor(
@@ -1324,8 +1378,8 @@
   extension_ranges=[],
   oneofs=[
   ],
-  serialized_start=5055,
-  serialized_end=5413,
+  serialized_start=5399,
+  serialized_end=5757,
 )
 
 _HARDWAREFEATURES_AUDIO = _descriptor.Descriptor(
@@ -1406,8 +1460,8 @@
   extension_ranges=[],
   oneofs=[
   ],
-  serialized_start=4422,
-  serialized_end=5810,
+  serialized_start=4766,
+  serialized_end=6154,
 )
 
 _HARDWAREFEATURES_CAMERA_DEVICE = _descriptor.Descriptor(
@@ -1478,8 +1532,8 @@
   extension_ranges=[],
   oneofs=[
   ],
-  serialized_start=5896,
-  serialized_end=6307,
+  serialized_start=6240,
+  serialized_end=6651,
 )
 
 _HARDWAREFEATURES_CAMERA = _descriptor.Descriptor(
@@ -1512,8 +1566,8 @@
   extension_ranges=[],
   oneofs=[
   ],
-  serialized_start=5813,
-  serialized_end=6647,
+  serialized_start=6157,
+  serialized_end=6991,
 )
 
 _HARDWAREFEATURES_ACCELEROMETER = _descriptor.Descriptor(
@@ -1549,8 +1603,8 @@
   extension_ranges=[],
   oneofs=[
   ],
-  serialized_start=6650,
-  serialized_end=6818,
+  serialized_start=6994,
+  serialized_end=7162,
 )
 
 _HARDWAREFEATURES_GYROSCOPE = _descriptor.Descriptor(
@@ -1586,8 +1640,8 @@
   extension_ranges=[],
   oneofs=[
   ],
-  serialized_start=6821,
-  serialized_end=6977,
+  serialized_start=7165,
+  serialized_end=7321,
 )
 
 _HARDWAREFEATURES_MAGNETOMETER = _descriptor.Descriptor(
@@ -1623,8 +1677,8 @@
   extension_ranges=[],
   oneofs=[
   ],
-  serialized_start=6980,
-  serialized_end=7145,
+  serialized_start=7324,
+  serialized_end=7489,
 )
 
 _HARDWAREFEATURES_LIGHTSENSOR = _descriptor.Descriptor(
@@ -1660,8 +1714,8 @@
   extension_ranges=[],
   oneofs=[
   ],
-  serialized_start=7148,
-  serialized_end=7310,
+  serialized_start=7492,
+  serialized_end=7654,
 )
 
 _HARDWAREFEATURES_SCREEN = _descriptor.Descriptor(
@@ -1697,8 +1751,8 @@
   extension_ranges=[],
   oneofs=[
   ],
-  serialized_start=7313,
-  serialized_end=7483,
+  serialized_start=7657,
+  serialized_end=7827,
 )
 
 _HARDWAREFEATURES_FORMFACTOR = _descriptor.Descriptor(
@@ -1728,8 +1782,8 @@
   extension_ranges=[],
   oneofs=[
   ],
-  serialized_start=7486,
-  serialized_end=7741,
+  serialized_start=7830,
+  serialized_end=8085,
 )
 
 _HARDWAREFEATURES_STYLUS = _descriptor.Descriptor(
@@ -1759,8 +1813,8 @@
   extension_ranges=[],
   oneofs=[
   ],
-  serialized_start=7744,
-  serialized_end=7899,
+  serialized_start=8088,
+  serialized_end=8243,
 )
 
 _HARDWAREFEATURES_KEYBOARD = _descriptor.Descriptor(
@@ -1818,8 +1872,8 @@
   extension_ranges=[],
   oneofs=[
   ],
-  serialized_start=7902,
-  serialized_end=8320,
+  serialized_start=8246,
+  serialized_end=8664,
 )
 
 _HARDWAREFEATURES_MEMORY = _descriptor.Descriptor(
@@ -1848,8 +1902,8 @@
   extension_ranges=[],
   oneofs=[
   ],
-  serialized_start=8322,
-  serialized_end=8396,
+  serialized_start=8666,
+  serialized_end=8740,
 )
 
 _HARDWAREFEATURES_FINGERPRINT = _descriptor.Descriptor(
@@ -1893,8 +1947,8 @@
   extension_ranges=[],
   oneofs=[
   ],
-  serialized_start=8399,
-  serialized_end=8727,
+  serialized_start=8743,
+  serialized_end=9071,
 )
 
 _HARDWAREFEATURES_STORAGE = _descriptor.Descriptor(
@@ -1930,8 +1984,8 @@
   extension_ranges=[],
   oneofs=[
   ],
-  serialized_start=8729,
-  serialized_end=8831,
+  serialized_start=9073,
+  serialized_end=9175,
 )
 
 _HARDWAREFEATURES_BLUETOOTH = _descriptor.Descriptor(
@@ -1967,8 +2021,8 @@
   extension_ranges=[],
   oneofs=[
   ],
-  serialized_start=8834,
-  serialized_end=8974,
+  serialized_start=9178,
+  serialized_end=9318,
 )
 
 _HARDWAREFEATURES_BARRELJACK = _descriptor.Descriptor(
@@ -1997,8 +2051,8 @@
   extension_ranges=[],
   oneofs=[
   ],
-  serialized_start=8976,
-  serialized_end=9054,
+  serialized_start=9320,
+  serialized_end=9398,
 )
 
 _HARDWAREFEATURES_WIFI = _descriptor.Descriptor(
@@ -2035,8 +2089,8 @@
   extension_ranges=[],
   oneofs=[
   ],
-  serialized_start=9057,
-  serialized_end=9304,
+  serialized_start=9401,
+  serialized_end=9648,
 )
 
 _HARDWAREFEATURES_BUTTON = _descriptor.Descriptor(
@@ -2081,8 +2135,8 @@
   extension_ranges=[],
   oneofs=[
   ],
-  serialized_start=9307,
-  serialized_end=9595,
+  serialized_start=9651,
+  serialized_end=9939,
 )
 
 _HARDWAREFEATURES_EMBEDDEDCONTROLLER = _descriptor.Descriptor(
@@ -2140,8 +2194,8 @@
   extension_ranges=[],
   oneofs=[
   ],
-  serialized_start=9598,
-  serialized_end=10065,
+  serialized_start=9942,
+  serialized_end=10409,
 )
 
 _HARDWAREFEATURES_TRUSTEDPLATFORMMODULE = _descriptor.Descriptor(
@@ -2171,8 +2225,8 @@
   extension_ranges=[],
   oneofs=[
   ],
-  serialized_start=10068,
-  serialized_end=10292,
+  serialized_start=10412,
+  serialized_end=10636,
 )
 
 _HARDWAREFEATURES_HOTWORDING = _descriptor.Descriptor(
@@ -2201,8 +2255,8 @@
   extension_ranges=[],
   oneofs=[
   ],
-  serialized_start=10294,
-  serialized_end=10372,
+  serialized_start=10638,
+  serialized_end=10716,
 )
 
 _HARDWAREFEATURES_DISPLAY = _descriptor.Descriptor(
@@ -2232,8 +2286,8 @@
   extension_ranges=[],
   oneofs=[
   ],
-  serialized_start=10375,
-  serialized_end=10544,
+  serialized_start=10719,
+  serialized_end=10888,
 )
 
 _HARDWAREFEATURES_TOUCHPAD = _descriptor.Descriptor(
@@ -2262,8 +2316,8 @@
   extension_ranges=[],
   oneofs=[
   ],
-  serialized_start=10546,
-  serialized_end=10622,
+  serialized_start=10890,
+  serialized_end=10966,
 )
 
 _HARDWAREFEATURES_MICROPHONEMUTESWITCH = _descriptor.Descriptor(
@@ -2292,8 +2346,8 @@
   extension_ranges=[],
   oneofs=[
   ],
-  serialized_start=10624,
-  serialized_end=10712,
+  serialized_start=10968,
+  serialized_end=11056,
 )
 
 _HARDWAREFEATURES_BATTERY_LIFETIME = _descriptor.Descriptor(
@@ -2350,8 +2404,8 @@
   extension_ranges=[],
   oneofs=[
   ],
-  serialized_start=10945,
-  serialized_end=11232,
+  serialized_start=11289,
+  serialized_end=11576,
 )
 
 _HARDWAREFEATURES_BATTERY_CHARGING = _descriptor.Descriptor(
@@ -2394,8 +2448,8 @@
   extension_ranges=[],
   oneofs=[
   ],
-  serialized_start=11235,
-  serialized_end=11409,
+  serialized_start=11579,
+  serialized_end=11753,
 )
 
 _HARDWAREFEATURES_BATTERY = _descriptor.Descriptor(
@@ -2438,8 +2492,8 @@
   extension_ranges=[],
   oneofs=[
   ],
-  serialized_start=10715,
-  serialized_end=11409,
+  serialized_start=11059,
+  serialized_end=11753,
 )
 
 _HARDWAREFEATURES_PRIVACYSCREEN = _descriptor.Descriptor(
@@ -2468,8 +2522,8 @@
   extension_ranges=[],
   oneofs=[
   ],
-  serialized_start=11411,
-  serialized_end=11492,
+  serialized_start=11755,
+  serialized_end=11836,
 )
 
 _HARDWAREFEATURES_SOC = _descriptor.Descriptor(
@@ -2498,8 +2552,8 @@
   extension_ranges=[],
   oneofs=[
   ],
-  serialized_start=11494,
-  serialized_end=11563,
+  serialized_start=11838,
+  serialized_end=11907,
 )
 
 _HARDWAREFEATURES_DISPLAYPORTCONVERTER = _descriptor.Descriptor(
@@ -2528,8 +2582,8 @@
   extension_ranges=[],
   oneofs=[
   ],
-  serialized_start=11565,
-  serialized_end=11662,
+  serialized_start=11909,
+  serialized_end=12006,
 )
 
 _HARDWAREFEATURES_HPS = _descriptor.Descriptor(
@@ -2558,8 +2612,8 @@
   extension_ranges=[],
   oneofs=[
   ],
-  serialized_start=11664,
-  serialized_end=11735,
+  serialized_start=12008,
+  serialized_end=12079,
 )
 
 _HARDWAREFEATURES_POE = _descriptor.Descriptor(
@@ -2588,8 +2642,8 @@
   extension_ranges=[],
   oneofs=[
   ],
-  serialized_start=11737,
-  serialized_end=11808,
+  serialized_start=12081,
+  serialized_end=12152,
 )
 
 _HARDWAREFEATURES_POWERSUPPLY = _descriptor.Descriptor(
@@ -2625,8 +2679,31 @@
   extension_ranges=[],
   oneofs=[
   ],
-  serialized_start=11810,
-  serialized_end=11918,
+  serialized_start=12154,
+  serialized_end=12262,
+)
+
+_HARDWAREFEATURES_PROXIMITY = _descriptor.Descriptor(
+  name='Proximity',
+  full_name='chromiumos.config.api.HardwareFeatures.Proximity',
+  filename=None,
+  file=DESCRIPTOR,
+  containing_type=None,
+  fields=[
+  ],
+  extensions=[
+  ],
+  nested_types=[],
+  enum_types=[
+  ],
+  serialized_options=None,
+  is_extendable=False,
+  syntax='proto3',
+  extension_ranges=[],
+  oneofs=[
+  ],
+  serialized_start=12264,
+  serialized_end=12275,
 )
 
 _HARDWAREFEATURES = _descriptor.Descriptor(
@@ -2888,10 +2965,17 @@
       message_type=None, enum_type=None, containing_type=None,
       is_extension=False, extension_scope=None,
       serialized_options=None, file=DESCRIPTOR),
+    _descriptor.FieldDescriptor(
+      name='proximity', full_name='chromiumos.config.api.HardwareFeatures.proximity', index=36,
+      number=37, type=11, cpp_type=10, label=1,
+      has_default_value=False, default_value=None,
+      message_type=None, enum_type=None, containing_type=None,
+      is_extension=False, extension_scope=None,
+      serialized_options=None, file=DESCRIPTOR),
   ],
   extensions=[
   ],
-  nested_types=[_HARDWAREFEATURES_COUNT, _HARDWAREFEATURES_USBC, _HARDWAREFEATURES_USBA, _HARDWAREFEATURES_CELLULAR, _HARDWAREFEATURES_HDMI, _HARDWAREFEATURES_FIRMWARECONFIGURATION, _HARDWAREFEATURES_AUDIO, _HARDWAREFEATURES_CAMERA, _HARDWAREFEATURES_ACCELEROMETER, _HARDWAREFEATURES_GYROSCOPE, _HARDWAREFEATURES_MAGNETOMETER, _HARDWAREFEATURES_LIGHTSENSOR, _HARDWAREFEATURES_SCREEN, _HARDWAREFEATURES_FORMFACTOR, _HARDWAREFEATURES_STYLUS, _HARDWAREFEATURES_KEYBOARD, _HARDWAREFEATURES_MEMORY, _HARDWAREFEATURES_FINGERPRINT, _HARDWAREFEATURES_STORAGE, _HARDWAREFEATURES_BLUETOOTH, _HARDWAREFEATURES_BARRELJACK, _HARDWAREFEATURES_WIFI, _HARDWAREFEATURES_BUTTON, _HARDWAREFEATURES_EMBEDDEDCONTROLLER, _HARDWAREFEATURES_TRUSTEDPLATFORMMODULE, _HARDWAREFEATURES_HOTWORDING, _HARDWAREFEATURES_DISPLAY, _HARDWAREFEATURES_TOUCHPAD, _HARDWAREFEATURES_MICROPHONEMUTESWITCH, _HARDWAREFEATURES_BATTERY, _HARDWAREFEATURES_PRIVACYSCREEN, _HARDWAREFEATURES_SOC, _HARDWAREFEATURES_DISPLAYPORTCONVERTER, _HARDWAREFEATURES_HPS, _HARDWAREFEATURES_POE, _HARDWAREFEATURES_POWERSUPPLY, ],
+  nested_types=[_HARDWAREFEATURES_COUNT, _HARDWAREFEATURES_USBC, _HARDWAREFEATURES_USBA, _HARDWAREFEATURES_CELLULAR, _HARDWAREFEATURES_HDMI, _HARDWAREFEATURES_FIRMWARECONFIGURATION, _HARDWAREFEATURES_AUDIO, _HARDWAREFEATURES_CAMERA, _HARDWAREFEATURES_ACCELEROMETER, _HARDWAREFEATURES_GYROSCOPE, _HARDWAREFEATURES_MAGNETOMETER, _HARDWAREFEATURES_LIGHTSENSOR, _HARDWAREFEATURES_SCREEN, _HARDWAREFEATURES_FORMFACTOR, _HARDWAREFEATURES_STYLUS, _HARDWAREFEATURES_KEYBOARD, _HARDWAREFEATURES_MEMORY, _HARDWAREFEATURES_FINGERPRINT, _HARDWAREFEATURES_STORAGE, _HARDWAREFEATURES_BLUETOOTH, _HARDWAREFEATURES_BARRELJACK, _HARDWAREFEATURES_WIFI, _HARDWAREFEATURES_BUTTON, _HARDWAREFEATURES_EMBEDDEDCONTROLLER, _HARDWAREFEATURES_TRUSTEDPLATFORMMODULE, _HARDWAREFEATURES_HOTWORDING, _HARDWAREFEATURES_DISPLAY, _HARDWAREFEATURES_TOUCHPAD, _HARDWAREFEATURES_MICROPHONEMUTESWITCH, _HARDWAREFEATURES_BATTERY, _HARDWAREFEATURES_PRIVACYSCREEN, _HARDWAREFEATURES_SOC, _HARDWAREFEATURES_DISPLAYPORTCONVERTER, _HARDWAREFEATURES_HPS, _HARDWAREFEATURES_POE, _HARDWAREFEATURES_POWERSUPPLY, _HARDWAREFEATURES_PROXIMITY, ],
   enum_types=[
     _HARDWAREFEATURES_PRESENT,
     _HARDWAREFEATURES_PORTPOSITION,
@@ -2903,7 +2987,7 @@
   oneofs=[
   ],
   serialized_start=1103,
-  serialized_end=12147,
+  serialized_end=12504,
 )
 
 _TOPOLOGY_DESCRIPTIONENTRY.containing_type = _TOPOLOGY
@@ -2922,8 +3006,17 @@
 _HARDWAREFEATURES_USBC.containing_type = _HARDWAREFEATURES
 _HARDWAREFEATURES_USBA.fields_by_name['count'].message_type = _HARDWAREFEATURES_COUNT
 _HARDWAREFEATURES_USBA.containing_type = _HARDWAREFEATURES
+_HARDWAREFEATURES_CELLULAR_DYNAMICPOWERREDUCTIONCONFIG.fields_by_name['tablet_mode'].message_type = google_dot_protobuf_dot_wrappers__pb2._BOOLVALUE
+_HARDWAREFEATURES_CELLULAR_DYNAMICPOWERREDUCTIONCONFIG.containing_type = _HARDWAREFEATURES_CELLULAR
+_HARDWAREFEATURES_CELLULAR_DYNAMICPOWERREDUCTIONCONFIG.oneofs_by_name['dynamic_power_reduction_config'].fields.append(
+  _HARDWAREFEATURES_CELLULAR_DYNAMICPOWERREDUCTIONCONFIG.fields_by_name['gpio'])
+_HARDWAREFEATURES_CELLULAR_DYNAMICPOWERREDUCTIONCONFIG.fields_by_name['gpio'].containing_oneof = _HARDWAREFEATURES_CELLULAR_DYNAMICPOWERREDUCTIONCONFIG.oneofs_by_name['dynamic_power_reduction_config']
+_HARDWAREFEATURES_CELLULAR_DYNAMICPOWERREDUCTIONCONFIG.oneofs_by_name['dynamic_power_reduction_config'].fields.append(
+  _HARDWAREFEATURES_CELLULAR_DYNAMICPOWERREDUCTIONCONFIG.fields_by_name['modem_manager'])
+_HARDWAREFEATURES_CELLULAR_DYNAMICPOWERREDUCTIONCONFIG.fields_by_name['modem_manager'].containing_oneof = _HARDWAREFEATURES_CELLULAR_DYNAMICPOWERREDUCTIONCONFIG.oneofs_by_name['dynamic_power_reduction_config']
 _HARDWAREFEATURES_CELLULAR.fields_by_name['present'].enum_type = _HARDWAREFEATURES_PRESENT
 _HARDWAREFEATURES_CELLULAR.fields_by_name['type'].enum_type = _HARDWAREFEATURES_CELLULAR_CELLULARTYPE
+_HARDWAREFEATURES_CELLULAR.fields_by_name['dynamic_power_reduction_config'].message_type = _HARDWAREFEATURES_CELLULAR_DYNAMICPOWERREDUCTIONCONFIG
 _HARDWAREFEATURES_CELLULAR.containing_type = _HARDWAREFEATURES
 _HARDWAREFEATURES_CELLULAR_CELLULARTYPE.containing_type = _HARDWAREFEATURES_CELLULAR
 _HARDWAREFEATURES_HDMI.fields_by_name['present'].enum_type = _HARDWAREFEATURES_PRESENT
@@ -3051,6 +3144,7 @@
 _HARDWAREFEATURES_POE.containing_type = _HARDWAREFEATURES
 _HARDWAREFEATURES_POWERSUPPLY.fields_by_name['barreljack'].enum_type = _HARDWAREFEATURES_PRESENT
 _HARDWAREFEATURES_POWERSUPPLY.containing_type = _HARDWAREFEATURES
+_HARDWAREFEATURES_PROXIMITY.containing_type = _HARDWAREFEATURES
 _HARDWAREFEATURES.fields_by_name['usb_c'].message_type = _HARDWAREFEATURES_USBC
 _HARDWAREFEATURES.fields_by_name['usb_a'].message_type = _HARDWAREFEATURES_USBA
 _HARDWAREFEATURES.fields_by_name['cellular'].message_type = _HARDWAREFEATURES_CELLULAR
@@ -3087,6 +3181,7 @@
 _HARDWAREFEATURES.fields_by_name['hps'].message_type = _HARDWAREFEATURES_HPS
 _HARDWAREFEATURES.fields_by_name['poe'].message_type = _HARDWAREFEATURES_POE
 _HARDWAREFEATURES.fields_by_name['power_supply'].message_type = _HARDWAREFEATURES_POWERSUPPLY
+_HARDWAREFEATURES.fields_by_name['proximity'].message_type = _HARDWAREFEATURES_PROXIMITY
 _HARDWAREFEATURES_PRESENT.containing_type = _HARDWAREFEATURES
 _HARDWAREFEATURES_PORTPOSITION.containing_type = _HARDWAREFEATURES
 DESCRIPTOR.message_types_by_name['Topology'] = _TOPOLOGY
@@ -3147,6 +3242,13 @@
   ,
 
   Cellular = _reflection.GeneratedProtocolMessageType('Cellular', (_message.Message,), dict(
+
+    DynamicPowerReductionConfig = _reflection.GeneratedProtocolMessageType('DynamicPowerReductionConfig', (_message.Message,), dict(
+      DESCRIPTOR = _HARDWAREFEATURES_CELLULAR_DYNAMICPOWERREDUCTIONCONFIG,
+      __module__ = 'chromiumos.config.api.topology_pb2'
+      # @@protoc_insertion_point(class_scope:chromiumos.config.api.HardwareFeatures.Cellular.DynamicPowerReductionConfig)
+      ))
+    ,
     DESCRIPTOR = _HARDWAREFEATURES_CELLULAR,
     __module__ = 'chromiumos.config.api.topology_pb2'
     # @@protoc_insertion_point(class_scope:chromiumos.config.api.HardwareFeatures.Cellular)
@@ -3404,6 +3506,13 @@
     # @@protoc_insertion_point(class_scope:chromiumos.config.api.HardwareFeatures.PowerSupply)
     ))
   ,
+
+  Proximity = _reflection.GeneratedProtocolMessageType('Proximity', (_message.Message,), dict(
+    DESCRIPTOR = _HARDWAREFEATURES_PROXIMITY,
+    __module__ = 'chromiumos.config.api.topology_pb2'
+    # @@protoc_insertion_point(class_scope:chromiumos.config.api.HardwareFeatures.Proximity)
+    ))
+  ,
   DESCRIPTOR = _HARDWAREFEATURES,
   __module__ = 'chromiumos.config.api.topology_pb2'
   # @@protoc_insertion_point(class_scope:chromiumos.config.api.HardwareFeatures)
@@ -3414,6 +3523,7 @@
 _sym_db.RegisterMessage(HardwareFeatures.UsbC.Port)
 _sym_db.RegisterMessage(HardwareFeatures.UsbA)
 _sym_db.RegisterMessage(HardwareFeatures.Cellular)
+_sym_db.RegisterMessage(HardwareFeatures.Cellular.DynamicPowerReductionConfig)
 _sym_db.RegisterMessage(HardwareFeatures.Hdmi)
 _sym_db.RegisterMessage(HardwareFeatures.FirmwareConfiguration)
 _sym_db.RegisterMessage(HardwareFeatures.Audio)
@@ -3450,6 +3560,7 @@
 _sym_db.RegisterMessage(HardwareFeatures.Hps)
 _sym_db.RegisterMessage(HardwareFeatures.PoE)
 _sym_db.RegisterMessage(HardwareFeatures.PowerSupply)
+_sym_db.RegisterMessage(HardwareFeatures.Proximity)
 
 
 DESCRIPTOR._options = None
diff --git a/test/project/fake/fake/config.star b/test/project/fake/fake/config.star
index 6e28696..76c84ad 100755
--- a/test/project/fake/fake/config.star
+++ b/test/project/fake/fake/config.star
@@ -170,6 +170,7 @@
 _NO_FINGERPRINT = hw_topo.create_fingerprint("NONE", "No finger print sensor", location = hw_topo.fp_loc.NOT_PRESENT)
 _HPS = hw_topo.create_hps("HPS", "Default Hps", present = True)
 _PROXIMITY_SENSOR = hw_topo.create_proximity_sensor("PROXIMITY_SENSOR", "Default proximity_sensor")
+_NO_PROXIMITY_SENSOR = None
 _DAUGHTER_BOARD = hw_topo.create_daughter_board(
     "Default DB",
     "Default daughter_board",
@@ -179,8 +180,9 @@
 )
 _NON_VOLATILE_STORAGE = hw_topo.create_non_volatile_storage("NON_VOLATILE_STORAGE", "Default non_volatile_storage", storage_type = hw_topo.storage.EMMC)
 _WIFI = hw_topo.create_wifi("WIFI", "Default wifi", fw_configs = [hw_topo.make_fw_config(program.fw_masks.WIFI_SAR_ID, 6)])
-_LTE_BOARD = hw_topo.create_cellular_board("LTE_BOARD", "Default cellular_board", present = True, type = hw_topo.cellular.CELLULAR_LTE)
-_LTE_BOARD_WITH_MODEL = hw_topo.create_cellular_board("LTE_BOARD_MODEL", "Default cellular_board w/ model", present = True, type = hw_topo.cellular.CELLULAR_LTE, model = "FakeModem")
+_LTE_BOARD = hw_topo.create_cellular_board("LTE_BOARD", "Default cellular_board", present = True, type = hw_topo.cellular.CELLULAR_LTE, dynamic_power_reduction_config = hw_topo.make_cellular_dynamic_power_reduction_config(modem_manager = True))
+_LTE_BOARD_WITH_MODEL = hw_topo.create_cellular_board("LTE_BOARD_MODEL", "Default cellular_board w/ model", present = True, type = hw_topo.cellular.CELLULAR_LTE, model = "FakeModem", dynamic_power_reduction_config = hw_topo.make_cellular_dynamic_power_reduction_config(gpio = 0, tablet_mode = True))
+_LTE_BOARD_WITH_NO_DPR = hw_topo.create_cellular_board("LTE_BOARD_NO_DPR", "Default cellular_board without dynamic power reduction config", present = True, type = hw_topo.cellular.CELLULAR_LTE, dynamic_power_reduction_config = None)
 _SD_READER = hw_topo.create_sd_reader("SD_READER", "Default sd_reader")
 _MOTHERBOARD_USB = hw_topo.create_motherboard_usb(
     "MOTHERBOARD_USB",
@@ -243,7 +245,8 @@
         hdmi = None,
         hps = None,
         audio = None,
-        power_supply = None):
+        power_supply = None,
+        proximity_sensor = None):
     return hw_topo.create_hardware_topology(
         bluetooth = bluetooth if bluetooth else None,
         barreljack = barreljack if barreljack else None,
@@ -259,7 +262,7 @@
         daughter_board = daughter_board if daughter_board else _DAUGHTER_BOARD,
         motherboard_usb = _MOTHERBOARD_USB,
         non_volatile_storage = _NON_VOLATILE_STORAGE,
-        proximity_sensor = _PROXIMITY_SENSOR,
+        proximity_sensor = proximity_sensor if proximity_sensor else _NO_PROXIMITY_SENSOR,
         sd_reader = _SD_READER,
         thermal = _THERMAL,
         wifi = _WIFI,
@@ -647,6 +650,8 @@
         form_factor = _FORM_FACTOR_DETACHABLE,
         screen = _TOUCHSCREEN,
         stylus = _STYLUS,
+        cellular_board = _LTE_BOARD_WITH_MODEL,
+        proximity_sensor = _NO_PROXIMITY_SENSOR,
     ),
     bluetooth = _SC_BLUETOOTH,
     firmware = sc.create_fw_payloads_by_names(
@@ -739,6 +744,15 @@
     config_id = 64,
     hardware_topology = create_hardware_topology(
         camera = _CAMERA1,
+        daughter_board = hw_topo.create_daughter_board(
+            "LTE DB",
+            "LTE daughter_board",
+            fw_configs = [hw_topo.make_fw_config(program.fw_masks.DB, 2)],
+            cellular_support = True,
+            cellular_type = hw_topo.cellular.CELLULAR_LTE,
+            cellular_dynamic_power_reduction_config = hw_topo.make_cellular_dynamic_power_reduction_config(gpio = 20, tablet_mode = True),
+        ),
+        proximity_sensor = _PROXIMITY_SENSOR,
     ),
     audio = [sc.create_audio(
         _AUDIO_CARD,
@@ -769,6 +783,7 @@
     config_id = 65,
     hardware_topology = create_hardware_topology(
         camera = _CAMERA1,
+        cellular_board = _LTE_BOARD_WITH_NO_DPR,
     ),
     firmware = sc.create_fw_payloads_by_names(
         "Fake",
@@ -800,6 +815,8 @@
             bj_present = True,
         ),
         camera = _CAMERA0,
+        cellular_board = _LTE_BOARD_WITH_MODEL,
+        proximity_sensor = _NO_PROXIMITY_SENSOR,
     ),
     firmware = sc.create_fw_payloads_by_names(
         "Fake",
diff --git a/test/project/fake/fake/factory/generated/model_sku.json b/test/project/fake/fake/factory/generated/model_sku.json
index 92c33b4..098ce5f 100644
--- a/test/project/fake/fake/factory/generated/model_sku.json
+++ b/test/project/fake/fake/factory/generated/model_sku.json
@@ -13,7 +13,7 @@
       "component.has_lte": true,
       "component.has_mother_board_usb_a": 0,
       "component.has_mother_board_usb_c": 2,
-      "component.has_proximity_sensor": true,
+      "component.has_proximity_sensor": null,
       "component.has_sd_reader": true,
       "component.has_stylus": true,
       "component.has_tabletmode": false,
@@ -39,7 +39,7 @@
       "component.has_lte": true,
       "component.has_mother_board_usb_a": 0,
       "component.has_mother_board_usb_c": 2,
-      "component.has_proximity_sensor": true,
+      "component.has_proximity_sensor": null,
       "component.has_rear_camera": false,
       "component.has_sd_reader": true,
       "component.has_stylus": true,
@@ -89,7 +89,7 @@
       "component.has_lte": true,
       "component.has_mother_board_usb_a": 0,
       "component.has_mother_board_usb_c": 2,
-      "component.has_proximity_sensor": true,
+      "component.has_proximity_sensor": null,
       "component.has_rear_camera": false,
       "component.has_sd_reader": true,
       "component.has_stylus": true,
@@ -132,10 +132,9 @@
       "component.has_keyboard_backlight": false,
       "component.has_lid_gyroscope": null,
       "component.has_lid_magnetometer": null,
-      "component.has_lte": false,
       "component.has_mother_board_usb_a": 0,
       "component.has_mother_board_usb_c": 2,
-      "component.has_proximity_sensor": true,
+      "component.has_proximity_sensor": null,
       "component.has_rear_camera": null,
       "component.has_sd_reader": true,
       "component.has_stylus": false,
@@ -183,7 +182,7 @@
       "component.has_lte": false,
       "component.has_mother_board_usb_a": 0,
       "component.has_mother_board_usb_c": 2,
-      "component.has_proximity_sensor": true,
+      "component.has_proximity_sensor": null,
       "component.has_rear_camera": false,
       "component.has_sd_reader": true,
       "component.has_stylus": true,
@@ -230,10 +229,10 @@
       "component.has_lid_accelerometer": null,
       "component.has_lid_gyroscope": null,
       "component.has_lid_magnetometer": null,
-      "component.has_lte": false,
+      "component.has_lte": true,
       "component.has_mother_board_usb_a": 0,
       "component.has_mother_board_usb_c": 2,
-      "component.has_proximity_sensor": true,
+      "component.has_proximity_sensor": null,
       "component.has_rear_camera": false,
       "component.has_sd_reader": true,
       "component.has_stylus": false,
@@ -274,14 +273,14 @@
       "component.has_base_gyroscope": true,
       "component.has_base_magnetometer": true,
       "component.has_daughter_board_usb_a": 0,
-      "component.has_daughter_board_usb_c": 1,
+      "component.has_daughter_board_usb_c": 0,
       "component.has_fingerprint": false,
       "component.has_front_camera": true,
       "component.has_keyboard_backlight": false,
       "component.has_lid_accelerometer": null,
       "component.has_lid_gyroscope": null,
       "component.has_lid_magnetometer": null,
-      "component.has_lte": false,
+      "component.has_lte": true,
       "component.has_mother_board_usb_a": 0,
       "component.has_mother_board_usb_c": 2,
       "component.has_proximity_sensor": true,
@@ -306,7 +305,7 @@
         [
           "usb_host",
           "==",
-          3
+          2
         ],
         [
           "stylus",
@@ -316,7 +315,7 @@
       ],
       "component.speaker_amp": "AMPLIFIER_UNKNOWN",
       "custom_type": "whitelabel",
-      "fw_config": 90913
+      "fw_config": 90914
     }
   },
   "product_sku": {
@@ -396,6 +395,7 @@
         "component.has_base_gyroscope": true,
         "component.has_base_magnetometer": true,
         "component.has_lid_accelerometer": null,
+        "component.has_lte": true,
         "component.speaker_amp": "MAX98373",
         "fw_config": 90897
       },
@@ -404,6 +404,7 @@
         "component.has_base_gyroscope": true,
         "component.has_base_magnetometer": true,
         "component.has_lid_accelerometer": null,
+        "component.has_lte": false,
         "component.speaker_amp": "AMPLIFIER_UNKNOWN",
         "fw_config": 90897
       },
@@ -412,6 +413,7 @@
         "component.has_base_gyroscope": null,
         "component.has_base_magnetometer": null,
         "component.has_lid_accelerometer": true,
+        "component.has_lte": false,
         "component.speaker_amp": "MAX98373",
         "fw_config": 90113
       }
diff --git a/test/project/fake/fake/generated/config.jsonproto b/test/project/fake/fake/generated/config.jsonproto
index 4985721..3221a4e 100644
--- a/test/project/fake/fake/generated/config.jsonproto
+++ b/test/project/fake/fake/generated/config.jsonproto
@@ -216,6 +216,9 @@
               ]
             },
             "cellular": {
+              "dynamicPowerReductionConfig": {
+                "modemManager": true
+              },
               "present": 1,
               "type": 1
             },
@@ -432,6 +435,9 @@
               },
               "hardwareFeature": {
                 "cellular": {
+                  "dynamicPowerReductionConfig": {
+                    "modemManager": true
+                  },
                   "present": 1,
                   "type": 1
                 }
@@ -619,14 +625,6 @@
               "id": "POWER_SUPPLY",
               "type": 32
             },
-            "proximitySensor": {
-              "description": {
-                "EN": "Default proximity_sensor"
-              },
-              "hardwareFeature": {},
-              "id": "PROXIMITY_SENSOR",
-              "type": 10
-            },
             "screen": {
               "description": {
                 "EN": "Touchscreen"
@@ -793,6 +791,10 @@
               ]
             },
             "cellular": {
+              "dynamicPowerReductionConfig": {
+                "gpio": 0,
+                "tabletMode": true
+              },
               "model": "FakeModem",
               "present": 1,
               "type": 1
@@ -986,6 +988,10 @@
               },
               "hardwareFeature": {
                 "cellular": {
+                  "dynamicPowerReductionConfig": {
+                    "gpio": 0,
+                    "tabletMode": true
+                  },
                   "model": "FakeModem",
                   "present": 1,
                   "type": 1
@@ -1148,14 +1154,6 @@
               "id": "POWER_SUPPLY",
               "type": 32
             },
-            "proximitySensor": {
-              "description": {
-                "EN": "Default proximity_sensor"
-              },
-              "hardwareFeature": {},
-              "id": "PROXIMITY_SENSOR",
-              "type": 10
-            },
             "screen": {
               "description": {
                 "EN": "Touchscreen"
@@ -1335,6 +1333,9 @@
               ]
             },
             "cellular": {
+              "dynamicPowerReductionConfig": {
+                "modemManager": true
+              },
               "present": 1,
               "type": 1
             },
@@ -1527,6 +1528,9 @@
               },
               "hardwareFeature": {
                 "cellular": {
+                  "dynamicPowerReductionConfig": {
+                    "modemManager": true
+                  },
                   "present": 1,
                   "type": 1
                 }
@@ -1681,14 +1685,6 @@
               "id": "POWER_SUPPLY",
               "type": 32
             },
-            "proximitySensor": {
-              "description": {
-                "EN": "Default proximity_sensor"
-              },
-              "hardwareFeature": {},
-              "id": "PROXIMITY_SENSOR",
-              "type": 10
-            },
             "screen": {
               "description": {
                 "EN": "Touchscreen"
@@ -1870,7 +1866,11 @@
               ]
             },
             "cellular": {
-              "model": "FakeModemB",
+              "dynamicPowerReductionConfig": {
+                "gpio": 0,
+                "tabletMode": true
+              },
+              "model": "FakeModem",
               "present": 1,
               "type": 1
             },
@@ -2054,6 +2054,24 @@
               "id": "CAMERA1",
               "type": 7
             },
+            "cellularBoard": {
+              "description": {
+                "EN": "Default cellular_board w/ model"
+              },
+              "hardwareFeature": {
+                "cellular": {
+                  "dynamicPowerReductionConfig": {
+                    "gpio": 0,
+                    "tabletMode": true
+                  },
+                  "model": "FakeModem",
+                  "present": 1,
+                  "type": 1
+                }
+              },
+              "id": "LTE_BOARD_MODEL",
+              "type": 15
+            },
             "daughterBoard": {
               "description": {
                 "EN": "Non-default daughter_board with LTE"
@@ -2193,14 +2211,6 @@
               "id": "POWER_SUPPLY",
               "type": 32
             },
-            "proximitySensor": {
-              "description": {
-                "EN": "Default proximity_sensor"
-              },
-              "hardwareFeature": {},
-              "id": "PROXIMITY_SENSOR",
-              "type": 10
-            },
             "screen": {
               "description": {
                 "EN": "Touchscreen"
@@ -2710,14 +2720,6 @@
               "id": "POWER_SUPPLY",
               "type": 32
             },
-            "proximitySensor": {
-              "description": {
-                "EN": "Default proximity_sensor"
-              },
-              "hardwareFeature": {},
-              "id": "PROXIMITY_SENSOR",
-              "type": 10
-            },
             "screen": {
               "description": {
                 "EN": "Touchscreen"
@@ -2887,7 +2889,12 @@
               ]
             },
             "cellular": {
-              "present": 2
+              "dynamicPowerReductionConfig": {
+                "gpio": 20,
+                "tabletMode": true
+              },
+              "present": 1,
+              "type": 1
             },
             "fingerprint": {
               "location": 5
@@ -2897,7 +2904,7 @@
             },
             "fwConfig": {
               "mask": 131071,
-              "value": 90913
+              "value": 90914
             },
             "gyroscope": {
               "baseGyroscope": 1
@@ -2923,6 +2930,7 @@
               "barreljack": 2,
               "usbMinAcWatts": 20
             },
+            "proximity": {},
             "screen": {
               "panelProperties": {
                 "alsSteps": [
@@ -2958,7 +2966,7 @@
             },
             "usbC": {
               "count": {
-                "value": 3
+                "value": 2
               },
               "ports": [
                 {
@@ -2966,10 +2974,6 @@
                 },
                 {
                   "position": 5
-                },
-                {
-                  "indexOverride": 1,
-                  "position": 2
                 }
               ]
             },
@@ -3052,15 +3056,20 @@
             },
             "daughterBoard": {
               "description": {
-                "EN": "Default daughter_board"
+                "EN": "LTE daughter_board"
               },
               "hardwareFeature": {
                 "cellular": {
-                  "present": 2
+                  "dynamicPowerReductionConfig": {
+                    "gpio": 20,
+                    "tabletMode": true
+                  },
+                  "present": 1,
+                  "type": 1
                 },
                 "fwConfig": {
                   "mask": 15,
-                  "value": 1
+                  "value": 2
                 },
                 "hdmi": {
                   "present": 2
@@ -3069,18 +3078,10 @@
                   "count": {}
                 },
                 "usbC": {
-                  "count": {
-                    "value": 1
-                  },
-                  "ports": [
-                    {
-                      "indexOverride": 1,
-                      "position": 2
-                    }
-                  ]
+                  "count": {}
                 }
               },
-              "id": "Default DB",
+              "id": "LTE DB",
               "type": 11
             },
             "ec": {
@@ -3200,7 +3201,9 @@
               "description": {
                 "EN": "Default proximity_sensor"
               },
-              "hardwareFeature": {},
+              "hardwareFeature": {
+                "proximity": {}
+              },
               "id": "PROXIMITY_SENSOR",
               "type": 10
             },
@@ -3363,7 +3366,8 @@
               ]
             },
             "cellular": {
-              "present": 2
+              "present": 1,
+              "type": 1
             },
             "fingerprint": {
               "location": 5
@@ -3526,6 +3530,19 @@
               "id": "CAMERA1",
               "type": 7
             },
+            "cellularBoard": {
+              "description": {
+                "EN": "Default cellular_board without dynamic power reduction config"
+              },
+              "hardwareFeature": {
+                "cellular": {
+                  "present": 1,
+                  "type": 1
+                }
+              },
+              "id": "LTE_BOARD_NO_DPR",
+              "type": 15
+            },
             "daughterBoard": {
               "description": {
                 "EN": "Default daughter_board"
@@ -3672,14 +3689,6 @@
               "id": "POWER_SUPPLY",
               "type": 32
             },
-            "proximitySensor": {
-              "description": {
-                "EN": "Default proximity_sensor"
-              },
-              "hardwareFeature": {},
-              "id": "PROXIMITY_SENSOR",
-              "type": 10
-            },
             "screen": {
               "description": {
                 "EN": "Default screen"
@@ -3827,7 +3836,13 @@
               "speakerAmp": 5
             },
             "cellular": {
-              "present": 2
+              "dynamicPowerReductionConfig": {
+                "gpio": 0,
+                "tabletMode": true
+              },
+              "model": "FakeModem",
+              "present": 1,
+              "type": 1
             },
             "fingerprint": {
               "location": 5
@@ -3979,6 +3994,24 @@
               "id": "CAMERA0",
               "type": 7
             },
+            "cellularBoard": {
+              "description": {
+                "EN": "Default cellular_board w/ model"
+              },
+              "hardwareFeature": {
+                "cellular": {
+                  "dynamicPowerReductionConfig": {
+                    "gpio": 0,
+                    "tabletMode": true
+                  },
+                  "model": "FakeModem",
+                  "present": 1,
+                  "type": 1
+                }
+              },
+              "id": "LTE_BOARD_MODEL",
+              "type": 15
+            },
             "daughterBoard": {
               "description": {
                 "EN": "Default daughter_board"
@@ -4125,14 +4158,6 @@
               "id": "BJ_POWER_SUPPLY",
               "type": 32
             },
-            "proximitySensor": {
-              "description": {
-                "EN": "Default proximity_sensor"
-              },
-              "hardwareFeature": {},
-              "id": "PROXIMITY_SENSOR",
-              "type": 10
-            },
             "screen": {
               "description": {
                 "EN": "Default screen"
@@ -4554,14 +4579,6 @@
               "id": "POWER_SUPPLY",
               "type": 32
             },
-            "proximitySensor": {
-              "description": {
-                "EN": "Default proximity_sensor"
-              },
-              "hardwareFeature": {},
-              "id": "PROXIMITY_SENSOR",
-              "type": 10
-            },
             "screen": {
               "description": {
                 "EN": "Default screen"
@@ -4965,14 +4982,6 @@
               "id": "POWER_SUPPLY",
               "type": 32
             },
-            "proximitySensor": {
-              "description": {
-                "EN": "Default proximity_sensor"
-              },
-              "hardwareFeature": {},
-              "id": "PROXIMITY_SENSOR",
-              "type": 10
-            },
             "screen": {
               "description": {
                 "EN": "Default screen"
diff --git a/test/project/fake/fake/sw_build_config/platform/chromeos-config/generated/project-config.json b/test/project/fake/fake/sw_build_config/platform/chromeos-config/generated/project-config.json
index 5c343a9..57e8801 100644
--- a/test/project/fake/fake/sw_build_config/platform/chromeos-config/generated/project-config.json
+++ b/test/project/fake/fake/sw_build_config/platform/chromeos-config/generated/project-config.json
@@ -572,10 +572,12 @@
           "disable-dark-resume": "0",
           "internal-backlight-no-als-ac-brightness": "80.0",
           "internal-backlight-no-als-battery-brightness": "63.0",
+          "set-cellular-transmit-power-for-tablet-mode": "1",
           "set-wifi-transmit-power-for-tablet-mode": "1",
           "suspend-to-idle": "1",
           "turn-off-screen-timeout-ms": "3000",
           "usb-min-ac-watts": "20",
+          "use-modemmanager-for-dynamic-sar": "1",
           "wake-on-dp": "1"
         },
         "thermal": {
@@ -764,7 +766,7 @@
           "smbios-name-match": "PROJECT_B"
         },
         "modem": {
-          "firmware-variant": "fakemodemb"
+          "firmware-variant": "fakemodem"
         },
         "name": "project_b",
         "power": {
@@ -773,6 +775,8 @@
           "disable-dark-resume": "0",
           "internal-backlight-no-als-ac-brightness": "80.0",
           "internal-backlight-no-als-battery-brightness": "63.0",
+          "set-cellular-transmit-power-dpr-gpio": "0",
+          "set-cellular-transmit-power-for-tablet-mode": "1",
           "set-wifi-transmit-power-for-tablet-mode": "1",
           "suspend-to-idle": "1",
           "turn-off-screen-timeout-ms": "3000",
@@ -1127,7 +1131,7 @@
             "zephyr-ec": "projects/fake/fake"
           },
           "ec-ro-image": "bcs://Fake_EC.11111.2.0.tbz2",
-          "firmware-config": 90913,
+          "firmware-config": 90914,
           "image-name": "fake",
           "main-ro-image": "bcs://Fake.11111.0.0.tbz2",
           "main-rw-image": "bcs://Fake.11111.2.3.tbz2",
@@ -1148,14 +1152,19 @@
           "sku-id": 64,
           "smbios-name-match": "PROJECT_WL"
         },
+        "modem": {
+          "firmware-variant": "project_wl"
+        },
         "name": "project_wl",
         "power": {
           "battery-poll-interval-initial-ms": "1000",
-          "charging-ports": "CROS_USBPD_CHARGER0 LEFT_BACK\nCROS_USBPD_CHARGER1 RIGHT\nCROS_USBPD_CHARGER2 LEFT_FRONT",
+          "charging-ports": "CROS_USBPD_CHARGER0 LEFT_BACK\nCROS_USBPD_CHARGER1 LEFT_FRONT",
           "disable-dark-resume": "0",
           "internal-backlight-no-als-ac-brightness": "80.1",
           "internal-backlight-no-als-battery-brightness": "63.2",
           "min-visible-backlight-level": "1000",
+          "set-cellular-transmit-power-dpr-gpio": "20",
+          "set-cellular-transmit-power-for-proximity": "1",
           "set-wifi-transmit-power-for-tablet-mode": "1",
           "suspend-to-idle": "1",
           "turn-off-screen-timeout-ms": "0",
@@ -1295,7 +1304,7 @@
             "zephyr-ec": "projects/fake/fake"
           },
           "ec-ro-image": "bcs://Fake_EC.11111.2.0.tbz2",
-          "firmware-config": 90913,
+          "firmware-config": 90914,
           "image-name": "fake",
           "main-ro-image": "bcs://Fake.11111.0.0.tbz2",
           "main-rw-image": "bcs://Fake.11111.2.3.tbz2",
@@ -1317,14 +1326,19 @@
           "smbios-name-match": "PROJECT_WL",
           "whitelabel-tag": "loema"
         },
+        "modem": {
+          "firmware-variant": "project_wl"
+        },
         "name": "project_wl",
         "power": {
           "battery-poll-interval-initial-ms": "1000",
-          "charging-ports": "CROS_USBPD_CHARGER0 LEFT_BACK\nCROS_USBPD_CHARGER1 RIGHT\nCROS_USBPD_CHARGER2 LEFT_FRONT",
+          "charging-ports": "CROS_USBPD_CHARGER0 LEFT_BACK\nCROS_USBPD_CHARGER1 LEFT_FRONT",
           "disable-dark-resume": "0",
           "internal-backlight-no-als-ac-brightness": "80.1",
           "internal-backlight-no-als-battery-brightness": "63.2",
           "min-visible-backlight-level": "1000",
+          "set-cellular-transmit-power-dpr-gpio": "20",
+          "set-cellular-transmit-power-for-proximity": "1",
           "set-wifi-transmit-power-for-tablet-mode": "1",
           "suspend-to-idle": "1",
           "turn-off-screen-timeout-ms": "0",
@@ -1464,7 +1478,7 @@
             "zephyr-ec": "projects/fake/fake"
           },
           "ec-ro-image": "bcs://Fake_EC.11111.2.0.tbz2",
-          "firmware-config": 90913,
+          "firmware-config": 90914,
           "image-name": "fake",
           "main-ro-image": "bcs://Fake.11111.0.0.tbz2",
           "main-rw-image": "bcs://Fake.11111.2.3.tbz2",
@@ -1486,14 +1500,19 @@
           "smbios-name-match": "PROJECT_WL",
           "whitelabel-tag": "loemb"
         },
+        "modem": {
+          "firmware-variant": "project_wl"
+        },
         "name": "project_wl",
         "power": {
           "battery-poll-interval-initial-ms": "1000",
-          "charging-ports": "CROS_USBPD_CHARGER0 LEFT_BACK\nCROS_USBPD_CHARGER1 RIGHT\nCROS_USBPD_CHARGER2 LEFT_FRONT",
+          "charging-ports": "CROS_USBPD_CHARGER0 LEFT_BACK\nCROS_USBPD_CHARGER1 LEFT_FRONT",
           "disable-dark-resume": "0",
           "internal-backlight-no-als-ac-brightness": "80.1",
           "internal-backlight-no-als-battery-brightness": "63.2",
           "min-visible-backlight-level": "1000",
+          "set-cellular-transmit-power-dpr-gpio": "20",
+          "set-cellular-transmit-power-for-proximity": "1",
           "set-wifi-transmit-power-for-tablet-mode": "1",
           "suspend-to-idle": "1",
           "turn-off-screen-timeout-ms": "0",
@@ -1633,7 +1652,7 @@
             "zephyr-ec": "projects/fake/fake"
           },
           "ec-ro-image": "bcs://Fake_EC.11111.2.0.tbz2",
-          "firmware-config": 90913,
+          "firmware-config": 90914,
           "image-name": "fake",
           "main-ro-image": "bcs://Fake.11111.0.0.tbz2",
           "main-rw-image": "bcs://Fake.11111.2.3.tbz2",
@@ -1655,14 +1674,19 @@
           "smbios-name-match": "PROJECT_WL",
           "whitelabel-tag": "loemc"
         },
+        "modem": {
+          "firmware-variant": "project_wl"
+        },
         "name": "project_wl",
         "power": {
           "battery-poll-interval-initial-ms": "1000",
-          "charging-ports": "CROS_USBPD_CHARGER0 LEFT_BACK\nCROS_USBPD_CHARGER1 RIGHT\nCROS_USBPD_CHARGER2 LEFT_FRONT",
+          "charging-ports": "CROS_USBPD_CHARGER0 LEFT_BACK\nCROS_USBPD_CHARGER1 LEFT_FRONT",
           "disable-dark-resume": "0",
           "internal-backlight-no-als-ac-brightness": "80.1",
           "internal-backlight-no-als-battery-brightness": "63.2",
           "min-visible-backlight-level": "1000",
+          "set-cellular-transmit-power-dpr-gpio": "20",
+          "set-cellular-transmit-power-for-proximity": "1",
           "set-wifi-transmit-power-for-tablet-mode": "1",
           "suspend-to-idle": "1",
           "turn-off-screen-timeout-ms": "0",
@@ -1833,6 +1857,9 @@
           "smbios-name-match": "PROJECT_REBRAND",
           "whitelabel-tag": "branda"
         },
+        "modem": {
+          "firmware-variant": "project_rebrand"
+        },
         "name": "project_rebrand",
         "power": {
           "battery-poll-interval-initial-ms": "1000",
@@ -2001,6 +2028,9 @@
           "sku-id": 128,
           "smbios-name-match": "PROJECT_BOX"
         },
+        "modem": {
+          "firmware-variant": "fakemodem"
+        },
         "name": "project_box",
         "power": {
           "battery-poll-interval-initial-ms": "1000",
diff --git a/util/hw_topology.star b/util/hw_topology.star
index d8065fe..3ca4084 100644
--- a/util/hw_topology.star
+++ b/util/hw_topology.star
@@ -708,6 +708,8 @@
     """Builds a Topology proto for a proximity sensor."""
     hw_features = topo_pb.HardwareFeatures()
 
+    hw_features.proximity = {}
+
     _accumulate_fw_configs(hw_features, fw_configs)
 
     return topo_pb.Topology(
@@ -741,6 +743,7 @@
         cellular_support = False,
         cellular_model = None,
         cellular_type = _CELLULAR.NOT_PRESENT,
+        cellular_dynamic_power_reduction_config = None,
         hdmi_support = False,
         side = None,
         usbc_ports = None):
@@ -755,6 +758,7 @@
     hw_features.cellular.present = _bool_to_present(cellular_support)
     hw_features.cellular.model = cellular_model
     hw_features.cellular.type = cellular_type
+    hw_features.cellular.dynamic_power_reduction_config = cellular_dynamic_power_reduction_config
 
     hw_features.hdmi.present = _bool_to_present(hdmi_support)
 
@@ -800,7 +804,8 @@
         type = _CELLULAR.NOT_PRESENT,
         fw_configs = [],
         model = None,
-        attach_apn_required = None):
+        attach_apn_required = None,
+        dynamic_power_reduction_config = None):
     """Builds a Topology proto for a Cellular board."""
     hw_features = topo_pb.HardwareFeatures()
 
@@ -808,6 +813,7 @@
     hw_features.cellular.model = model
     hw_features.cellular.type = type
     hw_features.cellular.attach_apn_required = attach_apn_required
+    hw_features.cellular.dynamic_power_reduction_config = dynamic_power_reduction_config
 
     _accumulate_fw_configs(hw_features, fw_configs)
 
@@ -818,6 +824,24 @@
         hardware_feature = hw_features,
     )
 
+def _make_cellular_dynamic_power_reduction_config(
+        gpio = None,
+        modem_manager = False,
+        tablet_mode = None):
+    """Builds a configuration for cellular dynamic power reduction."""
+    config = topo_pb.HardwareFeatures.Cellular.DynamicPowerReductionConfig()
+
+    if gpio != None:
+        config.gpio = gpio
+    elif modem_manager:
+        config.modem_manager = True
+    else:
+        fail("A Cellular.DynamicPowerReductionConfig must configure a GPIO or the use of modem manager.")
+
+    if tablet_mode:
+        config.tablet_mode.value = tablet_mode
+    return config
+
 def _create_sd_reader(id, description, fw_configs = []):
     """Builds a Topology proto for a SD reader."""
     hw_features = topo_pb.HardwareFeatures()
@@ -1310,6 +1334,8 @@
         existing_cellular.model = new_cellular.model
         existing_cellular.type = new_cellular.type
         existing_cellular.attach_apn_required = new_cellular.attach_apn_required
+        if proto.has(new_cellular, "dynamic_power_reduction_config"):
+            existing_cellular.dynamic_power_reduction_config = new_cellular.dynamic_power_reduction_config
 
 def _accumulate_hdmi(existing_hdmi, new_hdmi):
     existing_hdmi.present = _accumulate_presence(existing_hdmi.present, new_hdmi.present)
@@ -1399,6 +1425,9 @@
     # Handle all possible proximity sensor hardware features attributes
     _accumulate_fw_config(result.fw_config, copy.proximity_sensor.hardware_feature.fw_config)
 
+    if proto.has(copy.proximity_sensor.hardware_feature, "proximity"):
+        result.proximity = copy.proximity_sensor.hardware_feature.proximity
+
     # Handle all possible hdmi hardware features attributes
     _accumulate_fw_config(result.fw_config, copy.hdmi.hardware_feature.fw_config)
 
@@ -1519,6 +1548,7 @@
     create_poe = _create_poe,
     convert_to_hw_features = _convert_to_hw_features,
     make_camera_device = _make_camera_device,
+    make_cellular_dynamic_power_reduction_config = _make_cellular_dynamic_power_reduction_config,
     make_fw_config = _make_fw_config,
     ff = hw_feat.form_factor,
     amplifier = _AMPLIFIER,