diff --git a/proto/gopherjs/grpc.pb.gopherjs.go b/proto/gopherjs/grpc.pb.gopherjs.go index 34b2b9c..a0c26d9 100644 --- a/proto/gopherjs/grpc.pb.gopherjs.go +++ b/proto/gopherjs/grpc.pb.gopherjs.go @@ -51,6 +51,7 @@ GadgetSettings GadgetSettingsEthernet GadgetSettingsUMS + EthernetRequestSettingsStorage DeployedEthernetInterfaceSettings EthernetInterfaceSettings DHCPServerSettings @@ -4500,6 +4501,88 @@ func (m *GadgetSettingsUMS) Unmarshal(rawBytes []byte) (*GadgetSettingsUMS, erro } // Ethernet Interface Settings +type EthernetRequestSettingsStorage struct { + TemplateName string + Settings *EthernetInterfaceSettings +} + +// GetTemplateName gets the TemplateName of the EthernetRequestSettingsStorage. +func (m *EthernetRequestSettingsStorage) GetTemplateName() (x string) { + if m == nil { + return x + } + return m.TemplateName +} + +// GetSettings gets the Settings of the EthernetRequestSettingsStorage. +func (m *EthernetRequestSettingsStorage) GetSettings() (x *EthernetInterfaceSettings) { + if m == nil { + return x + } + return m.Settings +} + +// MarshalToWriter marshals EthernetRequestSettingsStorage to the provided writer. +func (m *EthernetRequestSettingsStorage) MarshalToWriter(writer jspb.Writer) { + if m == nil { + return + } + + if len(m.TemplateName) > 0 { + writer.WriteString(1, m.TemplateName) + } + + if m.Settings != nil { + writer.WriteMessage(2, func() { + m.Settings.MarshalToWriter(writer) + }) + } + + return +} + +// Marshal marshals EthernetRequestSettingsStorage to a slice of bytes. +func (m *EthernetRequestSettingsStorage) Marshal() []byte { + writer := jspb.NewWriter() + m.MarshalToWriter(writer) + return writer.GetResult() +} + +// UnmarshalFromReader unmarshals a EthernetRequestSettingsStorage from the provided reader. +func (m *EthernetRequestSettingsStorage) UnmarshalFromReader(reader jspb.Reader) *EthernetRequestSettingsStorage { + for reader.Next() { + if m == nil { + m = &EthernetRequestSettingsStorage{} + } + + switch reader.GetFieldNumber() { + case 1: + m.TemplateName = reader.ReadString() + case 2: + reader.ReadMessage(func() { + m.Settings = m.Settings.UnmarshalFromReader(reader) + }) + default: + reader.SkipField() + } + } + + return m +} + +// Unmarshal unmarshals a EthernetRequestSettingsStorage from a slice of bytes. +func (m *EthernetRequestSettingsStorage) Unmarshal(rawBytes []byte) (*EthernetRequestSettingsStorage, error) { + reader := jspb.NewReader(rawBytes) + + m = m.UnmarshalFromReader(reader) + + if err := reader.Err(); err != nil { + return nil, err + } + + return m, nil +} + type DeployedEthernetInterfaceSettings struct { List []*EthernetInterfaceSettings } @@ -5177,10 +5260,6 @@ type P4WNP1Client interface { GetLEDSettings(ctx context.Context, in *Empty, opts ...grpcweb.CallOption) (*LEDSettings, error) SetLEDSettings(ctx context.Context, in *LEDSettings, opts ...grpcweb.CallOption) (*Empty, error) MountUMSFile(ctx context.Context, in *GadgetSettingsUMS, opts ...grpcweb.CallOption) (*Empty, error) - // Ethernet - DeployEthernetInterfaceSettings(ctx context.Context, in *EthernetInterfaceSettings, opts ...grpcweb.CallOption) (*Empty, error) - GetAllDeployedEthernetInterfaceSettings(ctx context.Context, in *Empty, opts ...grpcweb.CallOption) (*DeployedEthernetInterfaceSettings, error) - GetDeployedEthernetInterfaceSettings(ctx context.Context, in *StringMessage, opts ...grpcweb.CallOption) (*EthernetInterfaceSettings, error) // HIDScript / job management HIDRunScript(ctx context.Context, in *HIDScriptRequest, opts ...grpcweb.CallOption) (*HIDScriptResult, error) HIDRunScriptJob(ctx context.Context, in *HIDScriptRequest, opts ...grpcweb.CallOption) (*HIDScriptJob, error) @@ -5202,12 +5281,19 @@ type P4WNP1Client interface { DeployWiFiSettings(ctx context.Context, in *WiFiSettings, opts ...grpcweb.CallOption) (*WiFiState, error) GetWiFiState(ctx context.Context, in *Empty, opts ...grpcweb.CallOption) (*WiFiState, error) ListenWiFiStateChanges(ctx context.Context, in *Empty, opts ...grpcweb.CallOption) (*WiFiState, error) - // ToDo: Template requests (store, load, listStored) StoreWifiSettings(ctx context.Context, in *WifiRequestSettingsStorage, opts ...grpcweb.CallOption) (*Empty, error) GetStoredWifiSettings(ctx context.Context, in *StringMessage, opts ...grpcweb.CallOption) (*WiFiSettings, error) DeployStoredWifiSettings(ctx context.Context, in *StringMessage, opts ...grpcweb.CallOption) (*WiFiState, error) StoreDeployedWifiSettings(ctx context.Context, in *StringMessage, opts ...grpcweb.CallOption) (*Empty, error) ListStoredWifiSettings(ctx context.Context, in *Empty, opts ...grpcweb.CallOption) (*StringMessageArray, error) + // Ethernet + DeployEthernetInterfaceSettings(ctx context.Context, in *EthernetInterfaceSettings, opts ...grpcweb.CallOption) (*Empty, error) + GetAllDeployedEthernetInterfaceSettings(ctx context.Context, in *Empty, opts ...grpcweb.CallOption) (*DeployedEthernetInterfaceSettings, error) + GetDeployedEthernetInterfaceSettings(ctx context.Context, in *StringMessage, opts ...grpcweb.CallOption) (*EthernetInterfaceSettings, error) + StoreEthernetInterfaceSettings(ctx context.Context, in *EthernetRequestSettingsStorage, opts ...grpcweb.CallOption) (*Empty, error) + GetStoredEthernetInterfaceSettings(ctx context.Context, in *StringMessage, opts ...grpcweb.CallOption) (*EthernetInterfaceSettings, error) + DeployStoredEthernetInterfaceSettings(ctx context.Context, in *StringMessage, opts ...grpcweb.CallOption) (*Empty, error) + ListStoredEthernetInterfaceSettings(ctx context.Context, in *Empty, opts ...grpcweb.CallOption) (*StringMessageArray, error) // TriggerActions GetDeployedTriggerActionSet(ctx context.Context, in *Empty, opts ...grpcweb.CallOption) (*TriggerActionSet, error) DeployTriggerActionSetReplace(ctx context.Context, in *TriggerActionSet, opts ...grpcweb.CallOption) (*TriggerActionSet, error) @@ -5295,33 +5381,6 @@ func (c *p4WNP1Client) MountUMSFile(ctx context.Context, in *GadgetSettingsUMS, return new(Empty).Unmarshal(resp) } -func (c *p4WNP1Client) DeployEthernetInterfaceSettings(ctx context.Context, in *EthernetInterfaceSettings, opts ...grpcweb.CallOption) (*Empty, error) { - resp, err := c.client.RPCCall(ctx, "DeployEthernetInterfaceSettings", in.Marshal(), opts...) - if err != nil { - return nil, err - } - - return new(Empty).Unmarshal(resp) -} - -func (c *p4WNP1Client) GetAllDeployedEthernetInterfaceSettings(ctx context.Context, in *Empty, opts ...grpcweb.CallOption) (*DeployedEthernetInterfaceSettings, error) { - resp, err := c.client.RPCCall(ctx, "GetAllDeployedEthernetInterfaceSettings", in.Marshal(), opts...) - if err != nil { - return nil, err - } - - return new(DeployedEthernetInterfaceSettings).Unmarshal(resp) -} - -func (c *p4WNP1Client) GetDeployedEthernetInterfaceSettings(ctx context.Context, in *StringMessage, opts ...grpcweb.CallOption) (*EthernetInterfaceSettings, error) { - resp, err := c.client.RPCCall(ctx, "GetDeployedEthernetInterfaceSettings", in.Marshal(), opts...) - if err != nil { - return nil, err - } - - return new(EthernetInterfaceSettings).Unmarshal(resp) -} - func (c *p4WNP1Client) HIDRunScript(ctx context.Context, in *HIDScriptRequest, opts ...grpcweb.CallOption) (*HIDScriptResult, error) { resp, err := c.client.RPCCall(ctx, "HIDRunScript", in.Marshal(), opts...) if err != nil { @@ -5534,6 +5593,69 @@ func (c *p4WNP1Client) ListStoredWifiSettings(ctx context.Context, in *Empty, op return new(StringMessageArray).Unmarshal(resp) } +func (c *p4WNP1Client) DeployEthernetInterfaceSettings(ctx context.Context, in *EthernetInterfaceSettings, opts ...grpcweb.CallOption) (*Empty, error) { + resp, err := c.client.RPCCall(ctx, "DeployEthernetInterfaceSettings", in.Marshal(), opts...) + if err != nil { + return nil, err + } + + return new(Empty).Unmarshal(resp) +} + +func (c *p4WNP1Client) GetAllDeployedEthernetInterfaceSettings(ctx context.Context, in *Empty, opts ...grpcweb.CallOption) (*DeployedEthernetInterfaceSettings, error) { + resp, err := c.client.RPCCall(ctx, "GetAllDeployedEthernetInterfaceSettings", in.Marshal(), opts...) + if err != nil { + return nil, err + } + + return new(DeployedEthernetInterfaceSettings).Unmarshal(resp) +} + +func (c *p4WNP1Client) GetDeployedEthernetInterfaceSettings(ctx context.Context, in *StringMessage, opts ...grpcweb.CallOption) (*EthernetInterfaceSettings, error) { + resp, err := c.client.RPCCall(ctx, "GetDeployedEthernetInterfaceSettings", in.Marshal(), opts...) + if err != nil { + return nil, err + } + + return new(EthernetInterfaceSettings).Unmarshal(resp) +} + +func (c *p4WNP1Client) StoreEthernetInterfaceSettings(ctx context.Context, in *EthernetRequestSettingsStorage, opts ...grpcweb.CallOption) (*Empty, error) { + resp, err := c.client.RPCCall(ctx, "StoreEthernetInterfaceSettings", in.Marshal(), opts...) + if err != nil { + return nil, err + } + + return new(Empty).Unmarshal(resp) +} + +func (c *p4WNP1Client) GetStoredEthernetInterfaceSettings(ctx context.Context, in *StringMessage, opts ...grpcweb.CallOption) (*EthernetInterfaceSettings, error) { + resp, err := c.client.RPCCall(ctx, "GetStoredEthernetInterfaceSettings", in.Marshal(), opts...) + if err != nil { + return nil, err + } + + return new(EthernetInterfaceSettings).Unmarshal(resp) +} + +func (c *p4WNP1Client) DeployStoredEthernetInterfaceSettings(ctx context.Context, in *StringMessage, opts ...grpcweb.CallOption) (*Empty, error) { + resp, err := c.client.RPCCall(ctx, "DeployStoredEthernetInterfaceSettings", in.Marshal(), opts...) + if err != nil { + return nil, err + } + + return new(Empty).Unmarshal(resp) +} + +func (c *p4WNP1Client) ListStoredEthernetInterfaceSettings(ctx context.Context, in *Empty, opts ...grpcweb.CallOption) (*StringMessageArray, error) { + resp, err := c.client.RPCCall(ctx, "ListStoredEthernetInterfaceSettings", in.Marshal(), opts...) + if err != nil { + return nil, err + } + + return new(StringMessageArray).Unmarshal(resp) +} + func (c *p4WNP1Client) GetDeployedTriggerActionSet(ctx context.Context, in *Empty, opts ...grpcweb.CallOption) (*TriggerActionSet, error) { resp, err := c.client.RPCCall(ctx, "GetDeployedTriggerActionSet", in.Marshal(), opts...) if err != nil { diff --git a/proto/grpc.pb.go b/proto/grpc.pb.go index 44b9b99..3ce6e14 100644 --- a/proto/grpc.pb.go +++ b/proto/grpc.pb.go @@ -51,6 +51,7 @@ It has these top-level messages: GadgetSettings GadgetSettingsEthernet GadgetSettingsUMS + EthernetRequestSettingsStorage DeployedEthernetInterfaceSettings EthernetInterfaceSettings DHCPServerSettings @@ -385,7 +386,7 @@ func (x EthernetInterfaceSettings_Mode) String() string { return proto.EnumName(EthernetInterfaceSettings_Mode_name, int32(x)) } func (EthernetInterfaceSettings_Mode) EnumDescriptor() ([]byte, []int) { - return fileDescriptor0, []int{44, 0} + return fileDescriptor0, []int{45, 0} } // Triggers, Actions and resulting TriggerActions @@ -2229,6 +2230,30 @@ func (m *GadgetSettingsUMS) GetFile() string { } // Ethernet Interface Settings +type EthernetRequestSettingsStorage struct { + TemplateName string `protobuf:"bytes,1,opt,name=TemplateName" json:"TemplateName,omitempty"` + Settings *EthernetInterfaceSettings `protobuf:"bytes,2,opt,name=settings" json:"settings,omitempty"` +} + +func (m *EthernetRequestSettingsStorage) Reset() { *m = EthernetRequestSettingsStorage{} } +func (m *EthernetRequestSettingsStorage) String() string { return proto.CompactTextString(m) } +func (*EthernetRequestSettingsStorage) ProtoMessage() {} +func (*EthernetRequestSettingsStorage) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{43} } + +func (m *EthernetRequestSettingsStorage) GetTemplateName() string { + if m != nil { + return m.TemplateName + } + return "" +} + +func (m *EthernetRequestSettingsStorage) GetSettings() *EthernetInterfaceSettings { + if m != nil { + return m.Settings + } + return nil +} + type DeployedEthernetInterfaceSettings struct { List []*EthernetInterfaceSettings `protobuf:"bytes,1,rep,name=list" json:"list,omitempty"` } @@ -2237,7 +2262,7 @@ func (m *DeployedEthernetInterfaceSettings) Reset() { *m = DeployedEther func (m *DeployedEthernetInterfaceSettings) String() string { return proto.CompactTextString(m) } func (*DeployedEthernetInterfaceSettings) ProtoMessage() {} func (*DeployedEthernetInterfaceSettings) Descriptor() ([]byte, []int) { - return fileDescriptor0, []int{43} + return fileDescriptor0, []int{44} } func (m *DeployedEthernetInterfaceSettings) GetList() []*EthernetInterfaceSettings { @@ -2260,7 +2285,7 @@ type EthernetInterfaceSettings struct { func (m *EthernetInterfaceSettings) Reset() { *m = EthernetInterfaceSettings{} } func (m *EthernetInterfaceSettings) String() string { return proto.CompactTextString(m) } func (*EthernetInterfaceSettings) ProtoMessage() {} -func (*EthernetInterfaceSettings) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{44} } +func (*EthernetInterfaceSettings) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{45} } func (m *EthernetInterfaceSettings) GetName() string { if m != nil { @@ -2328,7 +2353,7 @@ type DHCPServerSettings struct { func (m *DHCPServerSettings) Reset() { *m = DHCPServerSettings{} } func (m *DHCPServerSettings) String() string { return proto.CompactTextString(m) } func (*DHCPServerSettings) ProtoMessage() {} -func (*DHCPServerSettings) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{45} } +func (*DHCPServerSettings) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{46} } func (m *DHCPServerSettings) GetListenPort() uint32 { if m != nil { @@ -2403,7 +2428,7 @@ type DHCPServerRange struct { func (m *DHCPServerRange) Reset() { *m = DHCPServerRange{} } func (m *DHCPServerRange) String() string { return proto.CompactTextString(m) } func (*DHCPServerRange) ProtoMessage() {} -func (*DHCPServerRange) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{46} } +func (*DHCPServerRange) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{47} } func (m *DHCPServerRange) GetRangeLower() string { if m != nil { @@ -2435,7 +2460,7 @@ type DHCPServerStaticHost struct { func (m *DHCPServerStaticHost) Reset() { *m = DHCPServerStaticHost{} } func (m *DHCPServerStaticHost) String() string { return proto.CompactTextString(m) } func (*DHCPServerStaticHost) ProtoMessage() {} -func (*DHCPServerStaticHost) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{47} } +func (*DHCPServerStaticHost) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{48} } func (m *DHCPServerStaticHost) GetMac() string { if m != nil { @@ -2457,7 +2482,7 @@ type Empty struct { func (m *Empty) Reset() { *m = Empty{} } func (m *Empty) String() string { return proto.CompactTextString(m) } func (*Empty) ProtoMessage() {} -func (*Empty) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{48} } +func (*Empty) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{49} } func init() { proto.RegisterType((*TriggerActionSet)(nil), "P4wnP1_grpc.TriggerActionSet") @@ -2503,6 +2528,7 @@ func init() { proto.RegisterType((*GadgetSettings)(nil), "P4wnP1_grpc.GadgetSettings") proto.RegisterType((*GadgetSettingsEthernet)(nil), "P4wnP1_grpc.GadgetSettingsEthernet") proto.RegisterType((*GadgetSettingsUMS)(nil), "P4wnP1_grpc.GadgetSettingsUMS") + proto.RegisterType((*EthernetRequestSettingsStorage)(nil), "P4wnP1_grpc.EthernetRequestSettingsStorage") proto.RegisterType((*DeployedEthernetInterfaceSettings)(nil), "P4wnP1_grpc.DeployedEthernetInterfaceSettings") proto.RegisterType((*EthernetInterfaceSettings)(nil), "P4wnP1_grpc.EthernetInterfaceSettings") proto.RegisterType((*DHCPServerSettings)(nil), "P4wnP1_grpc.DHCPServerSettings") @@ -2540,10 +2566,6 @@ type P4WNP1Client interface { GetLEDSettings(ctx context.Context, in *Empty, opts ...grpc.CallOption) (*LEDSettings, error) SetLEDSettings(ctx context.Context, in *LEDSettings, opts ...grpc.CallOption) (*Empty, error) MountUMSFile(ctx context.Context, in *GadgetSettingsUMS, opts ...grpc.CallOption) (*Empty, error) - // Ethernet - DeployEthernetInterfaceSettings(ctx context.Context, in *EthernetInterfaceSettings, opts ...grpc.CallOption) (*Empty, error) - GetAllDeployedEthernetInterfaceSettings(ctx context.Context, in *Empty, opts ...grpc.CallOption) (*DeployedEthernetInterfaceSettings, error) - GetDeployedEthernetInterfaceSettings(ctx context.Context, in *StringMessage, opts ...grpc.CallOption) (*EthernetInterfaceSettings, error) // HIDScript / job management HIDRunScript(ctx context.Context, in *HIDScriptRequest, opts ...grpc.CallOption) (*HIDScriptResult, error) HIDRunScriptJob(ctx context.Context, in *HIDScriptRequest, opts ...grpc.CallOption) (*HIDScriptJob, error) @@ -2565,12 +2587,19 @@ type P4WNP1Client interface { DeployWiFiSettings(ctx context.Context, in *WiFiSettings, opts ...grpc.CallOption) (*WiFiState, error) GetWiFiState(ctx context.Context, in *Empty, opts ...grpc.CallOption) (*WiFiState, error) ListenWiFiStateChanges(ctx context.Context, in *Empty, opts ...grpc.CallOption) (*WiFiState, error) - // ToDo: Template requests (store, load, listStored) StoreWifiSettings(ctx context.Context, in *WifiRequestSettingsStorage, opts ...grpc.CallOption) (*Empty, error) GetStoredWifiSettings(ctx context.Context, in *StringMessage, opts ...grpc.CallOption) (*WiFiSettings, error) DeployStoredWifiSettings(ctx context.Context, in *StringMessage, opts ...grpc.CallOption) (*WiFiState, error) StoreDeployedWifiSettings(ctx context.Context, in *StringMessage, opts ...grpc.CallOption) (*Empty, error) ListStoredWifiSettings(ctx context.Context, in *Empty, opts ...grpc.CallOption) (*StringMessageArray, error) + // Ethernet + DeployEthernetInterfaceSettings(ctx context.Context, in *EthernetInterfaceSettings, opts ...grpc.CallOption) (*Empty, error) + GetAllDeployedEthernetInterfaceSettings(ctx context.Context, in *Empty, opts ...grpc.CallOption) (*DeployedEthernetInterfaceSettings, error) + GetDeployedEthernetInterfaceSettings(ctx context.Context, in *StringMessage, opts ...grpc.CallOption) (*EthernetInterfaceSettings, error) + StoreEthernetInterfaceSettings(ctx context.Context, in *EthernetRequestSettingsStorage, opts ...grpc.CallOption) (*Empty, error) + GetStoredEthernetInterfaceSettings(ctx context.Context, in *StringMessage, opts ...grpc.CallOption) (*EthernetInterfaceSettings, error) + DeployStoredEthernetInterfaceSettings(ctx context.Context, in *StringMessage, opts ...grpc.CallOption) (*Empty, error) + ListStoredEthernetInterfaceSettings(ctx context.Context, in *Empty, opts ...grpc.CallOption) (*StringMessageArray, error) // TriggerActions GetDeployedTriggerActionSet(ctx context.Context, in *Empty, opts ...grpc.CallOption) (*TriggerActionSet, error) DeployTriggerActionSetReplace(ctx context.Context, in *TriggerActionSet, opts ...grpc.CallOption) (*TriggerActionSet, error) @@ -2655,33 +2684,6 @@ func (c *p4WNP1Client) MountUMSFile(ctx context.Context, in *GadgetSettingsUMS, return out, nil } -func (c *p4WNP1Client) DeployEthernetInterfaceSettings(ctx context.Context, in *EthernetInterfaceSettings, opts ...grpc.CallOption) (*Empty, error) { - out := new(Empty) - err := grpc.Invoke(ctx, "/P4wnP1_grpc.P4WNP1/DeployEthernetInterfaceSettings", in, out, c.cc, opts...) - if err != nil { - return nil, err - } - return out, nil -} - -func (c *p4WNP1Client) GetAllDeployedEthernetInterfaceSettings(ctx context.Context, in *Empty, opts ...grpc.CallOption) (*DeployedEthernetInterfaceSettings, error) { - out := new(DeployedEthernetInterfaceSettings) - err := grpc.Invoke(ctx, "/P4wnP1_grpc.P4WNP1/GetAllDeployedEthernetInterfaceSettings", in, out, c.cc, opts...) - if err != nil { - return nil, err - } - return out, nil -} - -func (c *p4WNP1Client) GetDeployedEthernetInterfaceSettings(ctx context.Context, in *StringMessage, opts ...grpc.CallOption) (*EthernetInterfaceSettings, error) { - out := new(EthernetInterfaceSettings) - err := grpc.Invoke(ctx, "/P4wnP1_grpc.P4WNP1/GetDeployedEthernetInterfaceSettings", in, out, c.cc, opts...) - if err != nil { - return nil, err - } - return out, nil -} - func (c *p4WNP1Client) HIDRunScript(ctx context.Context, in *HIDScriptRequest, opts ...grpc.CallOption) (*HIDScriptResult, error) { out := new(HIDScriptResult) err := grpc.Invoke(ctx, "/P4wnP1_grpc.P4WNP1/HIDRunScript", in, out, c.cc, opts...) @@ -2894,6 +2896,69 @@ func (c *p4WNP1Client) ListStoredWifiSettings(ctx context.Context, in *Empty, op return out, nil } +func (c *p4WNP1Client) DeployEthernetInterfaceSettings(ctx context.Context, in *EthernetInterfaceSettings, opts ...grpc.CallOption) (*Empty, error) { + out := new(Empty) + err := grpc.Invoke(ctx, "/P4wnP1_grpc.P4WNP1/DeployEthernetInterfaceSettings", in, out, c.cc, opts...) + if err != nil { + return nil, err + } + return out, nil +} + +func (c *p4WNP1Client) GetAllDeployedEthernetInterfaceSettings(ctx context.Context, in *Empty, opts ...grpc.CallOption) (*DeployedEthernetInterfaceSettings, error) { + out := new(DeployedEthernetInterfaceSettings) + err := grpc.Invoke(ctx, "/P4wnP1_grpc.P4WNP1/GetAllDeployedEthernetInterfaceSettings", in, out, c.cc, opts...) + if err != nil { + return nil, err + } + return out, nil +} + +func (c *p4WNP1Client) GetDeployedEthernetInterfaceSettings(ctx context.Context, in *StringMessage, opts ...grpc.CallOption) (*EthernetInterfaceSettings, error) { + out := new(EthernetInterfaceSettings) + err := grpc.Invoke(ctx, "/P4wnP1_grpc.P4WNP1/GetDeployedEthernetInterfaceSettings", in, out, c.cc, opts...) + if err != nil { + return nil, err + } + return out, nil +} + +func (c *p4WNP1Client) StoreEthernetInterfaceSettings(ctx context.Context, in *EthernetRequestSettingsStorage, opts ...grpc.CallOption) (*Empty, error) { + out := new(Empty) + err := grpc.Invoke(ctx, "/P4wnP1_grpc.P4WNP1/StoreEthernetInterfaceSettings", in, out, c.cc, opts...) + if err != nil { + return nil, err + } + return out, nil +} + +func (c *p4WNP1Client) GetStoredEthernetInterfaceSettings(ctx context.Context, in *StringMessage, opts ...grpc.CallOption) (*EthernetInterfaceSettings, error) { + out := new(EthernetInterfaceSettings) + err := grpc.Invoke(ctx, "/P4wnP1_grpc.P4WNP1/GetStoredEthernetInterfaceSettings", in, out, c.cc, opts...) + if err != nil { + return nil, err + } + return out, nil +} + +func (c *p4WNP1Client) DeployStoredEthernetInterfaceSettings(ctx context.Context, in *StringMessage, opts ...grpc.CallOption) (*Empty, error) { + out := new(Empty) + err := grpc.Invoke(ctx, "/P4wnP1_grpc.P4WNP1/DeployStoredEthernetInterfaceSettings", in, out, c.cc, opts...) + if err != nil { + return nil, err + } + return out, nil +} + +func (c *p4WNP1Client) ListStoredEthernetInterfaceSettings(ctx context.Context, in *Empty, opts ...grpc.CallOption) (*StringMessageArray, error) { + out := new(StringMessageArray) + err := grpc.Invoke(ctx, "/P4wnP1_grpc.P4WNP1/ListStoredEthernetInterfaceSettings", in, out, c.cc, opts...) + if err != nil { + return nil, err + } + return out, nil +} + func (c *p4WNP1Client) GetDeployedTriggerActionSet(ctx context.Context, in *Empty, opts ...grpc.CallOption) (*TriggerActionSet, error) { out := new(TriggerActionSet) err := grpc.Invoke(ctx, "/P4wnP1_grpc.P4WNP1/GetDeployedTriggerActionSet", in, out, c.cc, opts...) @@ -2995,10 +3060,6 @@ type P4WNP1Server interface { GetLEDSettings(context.Context, *Empty) (*LEDSettings, error) SetLEDSettings(context.Context, *LEDSettings) (*Empty, error) MountUMSFile(context.Context, *GadgetSettingsUMS) (*Empty, error) - // Ethernet - DeployEthernetInterfaceSettings(context.Context, *EthernetInterfaceSettings) (*Empty, error) - GetAllDeployedEthernetInterfaceSettings(context.Context, *Empty) (*DeployedEthernetInterfaceSettings, error) - GetDeployedEthernetInterfaceSettings(context.Context, *StringMessage) (*EthernetInterfaceSettings, error) // HIDScript / job management HIDRunScript(context.Context, *HIDScriptRequest) (*HIDScriptResult, error) HIDRunScriptJob(context.Context, *HIDScriptRequest) (*HIDScriptJob, error) @@ -3020,12 +3081,19 @@ type P4WNP1Server interface { DeployWiFiSettings(context.Context, *WiFiSettings) (*WiFiState, error) GetWiFiState(context.Context, *Empty) (*WiFiState, error) ListenWiFiStateChanges(context.Context, *Empty) (*WiFiState, error) - // ToDo: Template requests (store, load, listStored) StoreWifiSettings(context.Context, *WifiRequestSettingsStorage) (*Empty, error) GetStoredWifiSettings(context.Context, *StringMessage) (*WiFiSettings, error) DeployStoredWifiSettings(context.Context, *StringMessage) (*WiFiState, error) StoreDeployedWifiSettings(context.Context, *StringMessage) (*Empty, error) ListStoredWifiSettings(context.Context, *Empty) (*StringMessageArray, error) + // Ethernet + DeployEthernetInterfaceSettings(context.Context, *EthernetInterfaceSettings) (*Empty, error) + GetAllDeployedEthernetInterfaceSettings(context.Context, *Empty) (*DeployedEthernetInterfaceSettings, error) + GetDeployedEthernetInterfaceSettings(context.Context, *StringMessage) (*EthernetInterfaceSettings, error) + StoreEthernetInterfaceSettings(context.Context, *EthernetRequestSettingsStorage) (*Empty, error) + GetStoredEthernetInterfaceSettings(context.Context, *StringMessage) (*EthernetInterfaceSettings, error) + DeployStoredEthernetInterfaceSettings(context.Context, *StringMessage) (*Empty, error) + ListStoredEthernetInterfaceSettings(context.Context, *Empty) (*StringMessageArray, error) // TriggerActions GetDeployedTriggerActionSet(context.Context, *Empty) (*TriggerActionSet, error) DeployTriggerActionSetReplace(context.Context, *TriggerActionSet) (*TriggerActionSet, error) @@ -3169,60 +3237,6 @@ func _P4WNP1_MountUMSFile_Handler(srv interface{}, ctx context.Context, dec func return interceptor(ctx, in, info, handler) } -func _P4WNP1_DeployEthernetInterfaceSettings_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { - in := new(EthernetInterfaceSettings) - if err := dec(in); err != nil { - return nil, err - } - if interceptor == nil { - return srv.(P4WNP1Server).DeployEthernetInterfaceSettings(ctx, in) - } - info := &grpc.UnaryServerInfo{ - Server: srv, - FullMethod: "/P4wnP1_grpc.P4WNP1/DeployEthernetInterfaceSettings", - } - handler := func(ctx context.Context, req interface{}) (interface{}, error) { - return srv.(P4WNP1Server).DeployEthernetInterfaceSettings(ctx, req.(*EthernetInterfaceSettings)) - } - return interceptor(ctx, in, info, handler) -} - -func _P4WNP1_GetAllDeployedEthernetInterfaceSettings_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { - in := new(Empty) - if err := dec(in); err != nil { - return nil, err - } - if interceptor == nil { - return srv.(P4WNP1Server).GetAllDeployedEthernetInterfaceSettings(ctx, in) - } - info := &grpc.UnaryServerInfo{ - Server: srv, - FullMethod: "/P4wnP1_grpc.P4WNP1/GetAllDeployedEthernetInterfaceSettings", - } - handler := func(ctx context.Context, req interface{}) (interface{}, error) { - return srv.(P4WNP1Server).GetAllDeployedEthernetInterfaceSettings(ctx, req.(*Empty)) - } - return interceptor(ctx, in, info, handler) -} - -func _P4WNP1_GetDeployedEthernetInterfaceSettings_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { - in := new(StringMessage) - if err := dec(in); err != nil { - return nil, err - } - if interceptor == nil { - return srv.(P4WNP1Server).GetDeployedEthernetInterfaceSettings(ctx, in) - } - info := &grpc.UnaryServerInfo{ - Server: srv, - FullMethod: "/P4wnP1_grpc.P4WNP1/GetDeployedEthernetInterfaceSettings", - } - handler := func(ctx context.Context, req interface{}) (interface{}, error) { - return srv.(P4WNP1Server).GetDeployedEthernetInterfaceSettings(ctx, req.(*StringMessage)) - } - return interceptor(ctx, in, info, handler) -} - func _P4WNP1_HIDRunScript_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { in := new(HIDScriptRequest) if err := dec(in); err != nil { @@ -3604,6 +3618,132 @@ func _P4WNP1_ListStoredWifiSettings_Handler(srv interface{}, ctx context.Context return interceptor(ctx, in, info, handler) } +func _P4WNP1_DeployEthernetInterfaceSettings_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { + in := new(EthernetInterfaceSettings) + if err := dec(in); err != nil { + return nil, err + } + if interceptor == nil { + return srv.(P4WNP1Server).DeployEthernetInterfaceSettings(ctx, in) + } + info := &grpc.UnaryServerInfo{ + Server: srv, + FullMethod: "/P4wnP1_grpc.P4WNP1/DeployEthernetInterfaceSettings", + } + handler := func(ctx context.Context, req interface{}) (interface{}, error) { + return srv.(P4WNP1Server).DeployEthernetInterfaceSettings(ctx, req.(*EthernetInterfaceSettings)) + } + return interceptor(ctx, in, info, handler) +} + +func _P4WNP1_GetAllDeployedEthernetInterfaceSettings_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { + in := new(Empty) + if err := dec(in); err != nil { + return nil, err + } + if interceptor == nil { + return srv.(P4WNP1Server).GetAllDeployedEthernetInterfaceSettings(ctx, in) + } + info := &grpc.UnaryServerInfo{ + Server: srv, + FullMethod: "/P4wnP1_grpc.P4WNP1/GetAllDeployedEthernetInterfaceSettings", + } + handler := func(ctx context.Context, req interface{}) (interface{}, error) { + return srv.(P4WNP1Server).GetAllDeployedEthernetInterfaceSettings(ctx, req.(*Empty)) + } + return interceptor(ctx, in, info, handler) +} + +func _P4WNP1_GetDeployedEthernetInterfaceSettings_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { + in := new(StringMessage) + if err := dec(in); err != nil { + return nil, err + } + if interceptor == nil { + return srv.(P4WNP1Server).GetDeployedEthernetInterfaceSettings(ctx, in) + } + info := &grpc.UnaryServerInfo{ + Server: srv, + FullMethod: "/P4wnP1_grpc.P4WNP1/GetDeployedEthernetInterfaceSettings", + } + handler := func(ctx context.Context, req interface{}) (interface{}, error) { + return srv.(P4WNP1Server).GetDeployedEthernetInterfaceSettings(ctx, req.(*StringMessage)) + } + return interceptor(ctx, in, info, handler) +} + +func _P4WNP1_StoreEthernetInterfaceSettings_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { + in := new(EthernetRequestSettingsStorage) + if err := dec(in); err != nil { + return nil, err + } + if interceptor == nil { + return srv.(P4WNP1Server).StoreEthernetInterfaceSettings(ctx, in) + } + info := &grpc.UnaryServerInfo{ + Server: srv, + FullMethod: "/P4wnP1_grpc.P4WNP1/StoreEthernetInterfaceSettings", + } + handler := func(ctx context.Context, req interface{}) (interface{}, error) { + return srv.(P4WNP1Server).StoreEthernetInterfaceSettings(ctx, req.(*EthernetRequestSettingsStorage)) + } + return interceptor(ctx, in, info, handler) +} + +func _P4WNP1_GetStoredEthernetInterfaceSettings_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { + in := new(StringMessage) + if err := dec(in); err != nil { + return nil, err + } + if interceptor == nil { + return srv.(P4WNP1Server).GetStoredEthernetInterfaceSettings(ctx, in) + } + info := &grpc.UnaryServerInfo{ + Server: srv, + FullMethod: "/P4wnP1_grpc.P4WNP1/GetStoredEthernetInterfaceSettings", + } + handler := func(ctx context.Context, req interface{}) (interface{}, error) { + return srv.(P4WNP1Server).GetStoredEthernetInterfaceSettings(ctx, req.(*StringMessage)) + } + return interceptor(ctx, in, info, handler) +} + +func _P4WNP1_DeployStoredEthernetInterfaceSettings_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { + in := new(StringMessage) + if err := dec(in); err != nil { + return nil, err + } + if interceptor == nil { + return srv.(P4WNP1Server).DeployStoredEthernetInterfaceSettings(ctx, in) + } + info := &grpc.UnaryServerInfo{ + Server: srv, + FullMethod: "/P4wnP1_grpc.P4WNP1/DeployStoredEthernetInterfaceSettings", + } + handler := func(ctx context.Context, req interface{}) (interface{}, error) { + return srv.(P4WNP1Server).DeployStoredEthernetInterfaceSettings(ctx, req.(*StringMessage)) + } + return interceptor(ctx, in, info, handler) +} + +func _P4WNP1_ListStoredEthernetInterfaceSettings_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { + in := new(Empty) + if err := dec(in); err != nil { + return nil, err + } + if interceptor == nil { + return srv.(P4WNP1Server).ListStoredEthernetInterfaceSettings(ctx, in) + } + info := &grpc.UnaryServerInfo{ + Server: srv, + FullMethod: "/P4wnP1_grpc.P4WNP1/ListStoredEthernetInterfaceSettings", + } + handler := func(ctx context.Context, req interface{}) (interface{}, error) { + return srv.(P4WNP1Server).ListStoredEthernetInterfaceSettings(ctx, req.(*Empty)) + } + return interceptor(ctx, in, info, handler) +} + func _P4WNP1_GetDeployedTriggerActionSet_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { in := new(Empty) if err := dec(in); err != nil { @@ -3816,18 +3956,6 @@ var _P4WNP1_serviceDesc = grpc.ServiceDesc{ MethodName: "MountUMSFile", Handler: _P4WNP1_MountUMSFile_Handler, }, - { - MethodName: "DeployEthernetInterfaceSettings", - Handler: _P4WNP1_DeployEthernetInterfaceSettings_Handler, - }, - { - MethodName: "GetAllDeployedEthernetInterfaceSettings", - Handler: _P4WNP1_GetAllDeployedEthernetInterfaceSettings_Handler, - }, - { - MethodName: "GetDeployedEthernetInterfaceSettings", - Handler: _P4WNP1_GetDeployedEthernetInterfaceSettings_Handler, - }, { MethodName: "HIDRunScript", Handler: _P4WNP1_HIDRunScript_Handler, @@ -3908,6 +4036,34 @@ var _P4WNP1_serviceDesc = grpc.ServiceDesc{ MethodName: "ListStoredWifiSettings", Handler: _P4WNP1_ListStoredWifiSettings_Handler, }, + { + MethodName: "DeployEthernetInterfaceSettings", + Handler: _P4WNP1_DeployEthernetInterfaceSettings_Handler, + }, + { + MethodName: "GetAllDeployedEthernetInterfaceSettings", + Handler: _P4WNP1_GetAllDeployedEthernetInterfaceSettings_Handler, + }, + { + MethodName: "GetDeployedEthernetInterfaceSettings", + Handler: _P4WNP1_GetDeployedEthernetInterfaceSettings_Handler, + }, + { + MethodName: "StoreEthernetInterfaceSettings", + Handler: _P4WNP1_StoreEthernetInterfaceSettings_Handler, + }, + { + MethodName: "GetStoredEthernetInterfaceSettings", + Handler: _P4WNP1_GetStoredEthernetInterfaceSettings_Handler, + }, + { + MethodName: "DeployStoredEthernetInterfaceSettings", + Handler: _P4WNP1_DeployStoredEthernetInterfaceSettings_Handler, + }, + { + MethodName: "ListStoredEthernetInterfaceSettings", + Handler: _P4WNP1_ListStoredEthernetInterfaceSettings_Handler, + }, { MethodName: "GetDeployedTriggerActionSet", Handler: _P4WNP1_GetDeployedTriggerActionSet_Handler, @@ -3962,230 +4118,233 @@ var _P4WNP1_serviceDesc = grpc.ServiceDesc{ func init() { proto.RegisterFile("grpc.proto", fileDescriptor0) } var fileDescriptor0 = []byte{ - // 3587 bytes of a gzipped FileDescriptorProto - 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xb4, 0x5a, 0x4b, 0x73, 0x23, 0xc9, - 0x71, 0xc6, 0x83, 0x0f, 0x20, 0x01, 0x10, 0xcd, 0x1a, 0x92, 0x83, 0xe1, 0x3c, 0xb7, 0xb5, 0x5a, - 0x8d, 0x29, 0x8b, 0xbb, 0xcb, 0xe5, 0xce, 0xae, 0x36, 0x24, 0xaf, 0xf0, 0x06, 0x66, 0xf0, 0x8a, - 0x6a, 0x60, 0x69, 0x5b, 0x11, 0x82, 0x9a, 0xdd, 0x45, 0xb0, 0x35, 0x40, 0x37, 0xdc, 0x5d, 0xe0, - 0x2c, 0x7d, 0x90, 0x23, 0x7c, 0xf6, 0xdd, 0x37, 0xff, 0x04, 0xdf, 0x6c, 0xff, 0x22, 0xdf, 0x7d, - 0xf1, 0xd9, 0x8e, 0xaa, 0xea, 0x37, 0x1b, 0xe0, 0xec, 0x4c, 0xe8, 0x96, 0x95, 0x9d, 0xf5, 0x55, - 0x55, 0x66, 0x56, 0x66, 0x56, 0x02, 0x00, 0x33, 0x7b, 0xa9, 0x9d, 0x2e, 0x6d, 0x8b, 0x5a, 0xa8, - 0x30, 0x3a, 0x7f, 0x67, 0x8e, 0xbe, 0x9c, 0x32, 0x96, 0xfc, 0x27, 0x90, 0xc6, 0xb6, 0x31, 0x9b, - 0x11, 0xbb, 0xaa, 0x51, 0xc3, 0x32, 0x15, 0x42, 0x51, 0x0d, 0xf6, 0x22, 0x3c, 0xa7, 0x92, 0x7e, - 0x91, 0x7d, 0x59, 0x38, 0x3b, 0x3e, 0x0d, 0xcd, 0x3c, 0x8d, 0x88, 0xe0, 0xd8, 0x0c, 0x84, 0x60, - 0x6b, 0xa0, 0x2e, 0x48, 0x25, 0xf3, 0x22, 0xfd, 0x32, 0x8f, 0x39, 0x2d, 0xff, 0x27, 0x40, 0x29, - 0x22, 0x86, 0xf6, 0x20, 0x63, 0xe8, 0x95, 0xf4, 0x8b, 0xf4, 0xcb, 0x12, 0xce, 0x18, 0x3a, 0xaa, - 0xc0, 0xae, 0x65, 0x12, 0xe5, 0xda, 0xa2, 0x7c, 0x62, 0x0e, 0x7b, 0x43, 0x74, 0x0c, 0x39, 0xc3, - 0x61, 0xb3, 0x6e, 0x48, 0x25, 0xcb, 0x3f, 0xf9, 0x63, 0xf4, 0x04, 0xf2, 0xc6, 0x62, 0xb1, 0xa2, - 0xea, 0xe5, 0x9c, 0x54, 0xb6, 0xf8, 0xc7, 0x80, 0x81, 0x7a, 0xb0, 0xe7, 0x10, 0xfb, 0xc6, 0xd0, - 0x88, 0x42, 0x55, 0x9b, 0x12, 0xbd, 0xb2, 0xfd, 0x22, 0xfd, 0xb2, 0x70, 0x26, 0x27, 0x9d, 0x46, - 0x89, 0x48, 0x76, 0x52, 0x38, 0x36, 0x17, 0xfd, 0x2d, 0xa0, 0x95, 0x73, 0xd9, 0x56, 0xf5, 0x19, - 0xa1, 0x75, 0xcb, 0x34, 0x89, 0xc6, 0x10, 0x77, 0x38, 0xe2, 0x67, 0x49, 0x88, 0x13, 0xa5, 0x16, - 0x93, 0xee, 0xa4, 0x70, 0x02, 0x06, 0x52, 0xe1, 0xd0, 0xe7, 0x36, 0x0c, 0x47, 0xf3, 0xc1, 0x77, - 0x39, 0xf8, 0x5f, 0x6d, 0x04, 0x0f, 0x4f, 0xe8, 0xa4, 0x70, 0x32, 0x12, 0xea, 0x42, 0xe9, 0x9d, - 0x71, 0x65, 0x54, 0x47, 0x9e, 0x26, 0x72, 0x1c, 0xfa, 0x93, 0x24, 0xe8, 0x8b, 0xb0, 0x60, 0x27, - 0x85, 0xa3, 0x33, 0x99, 0x1e, 0x18, 0xc3, 0xdf, 0x7e, 0xd5, 0x51, 0xa8, 0x5a, 0xc9, 0xaf, 0xd7, - 0xc3, 0xc5, 0x1d, 0x69, 0xa6, 0x87, 0xbb, 0x18, 0xe8, 0x3b, 0xc8, 0x39, 0xce, 0x75, 0xcf, 0x9a, - 0x19, 0x66, 0x05, 0x38, 0xde, 0x93, 0x44, 0x4b, 0x29, 0x1d, 0x2e, 0xd3, 0x49, 0x61, 0x5f, 0x1e, - 0x61, 0x90, 0xf4, 0x6b, 0x6d, 0xd9, 0x23, 0xaa, 0x43, 0xda, 0xb6, 0x6a, 0xb2, 0x33, 0x16, 0x38, - 0xc6, 0xa7, 0x49, 0x18, 0x8d, 0x4e, 0x7d, 0x14, 0x96, 0xed, 0xa4, 0xf0, 0x9d, 0xf9, 0xa8, 0x05, - 0xc5, 0x99, 0x6d, 0xad, 0x96, 0x98, 0x68, 0x84, 0x79, 0x5f, 0x91, 0xe3, 0xbd, 0x48, 0xc2, 0x6b, - 0x87, 0xe4, 0x3a, 0x29, 0x1c, 0x99, 0x87, 0xfe, 0x00, 0x07, 0xe1, 0xb1, 0x42, 0xfe, 0x61, 0x45, - 0x4c, 0x8d, 0x54, 0x4a, 0x1c, 0xef, 0xe5, 0x7d, 0x78, 0x9e, 0x7c, 0x27, 0x85, 0x13, 0x71, 0xd0, - 0x39, 0xec, 0xcc, 0x96, 0x86, 0xd5, 0x35, 0x2b, 0x7b, 0x1c, 0x31, 0xf1, 0xb6, 0xb6, 0x47, 0xdd, - 0x61, 0x97, 0xe9, 0xcc, 0x95, 0x45, 0x0d, 0x80, 0x4b, 0xd5, 0xb9, 0x56, 0x34, 0xdb, 0x58, 0xd2, - 0x4a, 0x39, 0xe1, 0x66, 0xb8, 0x71, 0x81, 0xd9, 0xbd, 0xe6, 0x4b, 0x76, 0xd2, 0x38, 0x34, 0x0f, - 0x55, 0x21, 0x7f, 0x6d, 0xe8, 0x2e, 0x88, 0x94, 0xe0, 0x54, 0x21, 0x90, 0x4e, 0xb7, 0xe1, 0x63, - 0x04, 0xb3, 0x90, 0x06, 0x47, 0x3a, 0x59, 0xce, 0xad, 0x5b, 0x85, 0x50, 0x6a, 0x98, 0x33, 0x67, - 0x4c, 0x16, 0xcb, 0xb9, 0x4a, 0x49, 0x65, 0x3f, 0xc1, 0xff, 0x05, 0x5e, 0x23, 0x71, 0x42, 0x27, - 0x8d, 0xd7, 0x40, 0xa1, 0x13, 0xc8, 0xce, 0xad, 0x59, 0x05, 0x71, 0xc4, 0xa3, 0x04, 0xc4, 0x9e, - 0x35, 0xeb, 0xa4, 0x31, 0x13, 0x42, 0xaf, 0x60, 0x97, 0xe9, 0x68, 0xb8, 0xa2, 0x95, 0x07, 0x09, - 0x0a, 0x15, 0xf2, 0x4c, 0x9f, 0xc3, 0x15, 0x3b, 0x8a, 0x27, 0x8c, 0x7e, 0x03, 0x79, 0x6e, 0x1f, - 0x85, 0x98, 0x7a, 0xe5, 0x20, 0xc1, 0x81, 0xdd, 0x99, 0x9e, 0x0c, 0x53, 0x83, 0x3f, 0xa1, 0x96, - 0x87, 0x5d, 0xd7, 0x54, 0xb5, 0x1c, 0xec, 0x08, 0x51, 0xf9, 0x21, 0x1c, 0x26, 0xc6, 0x27, 0xf9, - 0x31, 0x3c, 0x5a, 0x1b, 0x66, 0xe4, 0x67, 0xf0, 0x64, 0x53, 0x98, 0x90, 0x8f, 0xe0, 0x20, 0xe9, - 0xae, 0x87, 0x40, 0xef, 0xde, 0x59, 0xf9, 0x73, 0x28, 0xc7, 0x2e, 0x20, 0x0b, 0xbf, 0x73, 0x46, - 0x4c, 0x1c, 0x62, 0xf3, 0x58, 0x9e, 0xc7, 0x01, 0x43, 0x7e, 0x04, 0x0f, 0xd7, 0xdc, 0x36, 0xb9, - 0x0b, 0x0f, 0x12, 0x1c, 0x9d, 0xe1, 0x71, 0x7d, 0xf0, 0xfc, 0xe1, 0xe2, 0xf9, 0x0c, 0x74, 0x00, - 0xdb, 0x37, 0xea, 0x7c, 0x25, 0x32, 0xcb, 0x36, 0x16, 0x03, 0xf9, 0x9f, 0xe0, 0xf1, 0x86, 0x3b, - 0x73, 0x0f, 0xe4, 0x09, 0x48, 0xdd, 0x99, 0x69, 0xd9, 0x64, 0xb8, 0xa2, 0xc3, 0xab, 0xa1, 0xad, - 0x13, 0xdb, 0x4d, 0x3f, 0x77, 0xf8, 0xe8, 0x08, 0x76, 0xf8, 0x8a, 0x4e, 0x25, 0xfb, 0x22, 0xfb, - 0x72, 0x1b, 0xbb, 0x23, 0xf9, 0xbf, 0xd2, 0x7e, 0x6e, 0x13, 0x77, 0x0c, 0x9d, 0x0a, 0xff, 0x19, - 0xac, 0x16, 0x7c, 0xc5, 0xbd, 0xb3, 0x83, 0x88, 0x17, 0x30, 0xa9, 0xc1, 0x6a, 0x81, 0x3d, 0x21, - 0xf4, 0x5b, 0x80, 0xe5, 0x6a, 0x3e, 0x9f, 0x2c, 0x1b, 0xd6, 0x3b, 0x93, 0xaf, 0xbf, 0x77, 0xf6, - 0xf4, 0xce, 0x94, 0xae, 0x39, 0xf2, 0x85, 0x70, 0x68, 0x02, 0xfa, 0x06, 0x40, 0x5c, 0xe9, 0xa6, - 0x3e, 0x13, 0x29, 0x72, 0xef, 0xec, 0x61, 0xc2, 0x74, 0xf6, 0x19, 0x87, 0x44, 0xe5, 0x6f, 0xe0, - 0x30, 0xf1, 0x8a, 0xa3, 0x67, 0x00, 0x0e, 0xa7, 0x42, 0x5a, 0x0b, 0x71, 0xe4, 0x57, 0x70, 0x90, - 0x74, 0xad, 0xef, 0x9d, 0xf7, 0xbf, 0x69, 0x78, 0xb2, 0xe9, 0xfe, 0x22, 0x19, 0x8a, 0xd4, 0xa5, - 0x43, 0x10, 0x11, 0x1e, 0x7a, 0x0d, 0x5b, 0xf4, 0x76, 0x49, 0x5c, 0x3d, 0xbd, 0x7a, 0xef, 0xe0, - 0x70, 0xea, 0x11, 0xe3, 0xdb, 0x25, 0xc1, 0x1c, 0x43, 0x26, 0x50, 0x0c, 0x73, 0xd1, 0x3e, 0x94, - 0x5a, 0x93, 0x5e, 0x6f, 0xaa, 0x34, 0xc7, 0xe3, 0xee, 0xa0, 0xad, 0x48, 0x29, 0x54, 0x80, 0xdd, - 0x41, 0x73, 0x7c, 0x31, 0xc4, 0x6f, 0xa4, 0x34, 0xca, 0xc1, 0xd6, 0x45, 0xb7, 0xd5, 0x95, 0x32, - 0x68, 0x17, 0xb2, 0x13, 0xa5, 0x26, 0x65, 0x51, 0x09, 0xf2, 0xb5, 0xde, 0xa4, 0x39, 0x1e, 0x0e, - 0xc7, 0x1d, 0x69, 0x0b, 0x3d, 0x80, 0xf2, 0x18, 0x77, 0xdb, 0xed, 0x26, 0x9e, 0x56, 0xeb, 0xe3, - 0xee, 0x70, 0xa0, 0x48, 0xdb, 0x72, 0x01, 0xf2, 0x7e, 0x90, 0x91, 0x97, 0x50, 0x8a, 0x44, 0x90, - 0x9f, 0xec, 0x2e, 0x9f, 0x87, 0xef, 0xc1, 0xde, 0xd9, 0xa3, 0x3b, 0xd2, 0xc3, 0x15, 0xfd, 0x81, - 0x09, 0x78, 0x57, 0xa4, 0x09, 0xe5, 0x58, 0xe4, 0xf9, 0xa0, 0x9b, 0xf6, 0x0e, 0x8e, 0x59, 0x58, - 0xc0, 0xec, 0x6a, 0x39, 0xd4, 0x53, 0xaf, 0x42, 0x2d, 0x5b, 0x9d, 0x71, 0xd3, 0x8d, 0x13, 0x4c, - 0x17, 0xe6, 0xa1, 0xaf, 0x21, 0xe7, 0xb8, 0xd3, 0x38, 0x74, 0x21, 0xb6, 0xf9, 0x0b, 0xa3, 0x65, - 0x78, 0xb8, 0xd8, 0x17, 0x95, 0xff, 0x35, 0x0b, 0xc5, 0xf0, 0x27, 0x56, 0x62, 0x9a, 0xc1, 0x1a, - 0x9c, 0x66, 0x65, 0xa2, 0x6e, 0x38, 0xac, 0xee, 0xd3, 0xdd, 0x2b, 0xec, 0x8f, 0x99, 0x5f, 0xda, - 0x64, 0xb6, 0x9a, 0xab, 0xd4, 0xb2, 0x6f, 0xf9, 0x0d, 0xc9, 0xe3, 0x10, 0x07, 0x7d, 0x0f, 0xc5, - 0x77, 0x96, 0xfd, 0xd6, 0x30, 0x67, 0xd3, 0x85, 0xa5, 0x8b, 0x4a, 0x72, 0x2f, 0x16, 0xbb, 0xd9, - 0x06, 0x2e, 0x84, 0x50, 0xdf, 0xd2, 0x09, 0x2e, 0xbc, 0x0b, 0x06, 0xe8, 0x15, 0xe4, 0xd5, 0x15, - 0xbd, 0x16, 0xb3, 0xb7, 0x13, 0xcc, 0xc2, 0x66, 0x57, 0x57, 0xf4, 0x9a, 0x4f, 0xcd, 0xa9, 0x2e, - 0xc5, 0xaa, 0x5e, 0xed, 0x5a, 0x35, 0x4d, 0x32, 0xe7, 0x85, 0x64, 0x09, 0x7b, 0x43, 0x74, 0x0a, - 0x3b, 0xea, 0x72, 0x5a, 0x53, 0x14, 0xb7, 0x08, 0x7c, 0x78, 0x07, 0xae, 0xa6, 0x28, 0xf5, 0xab, - 0x19, 0xde, 0x56, 0x97, 0x35, 0x45, 0x41, 0xdf, 0x43, 0x59, 0x9b, 0x1b, 0xc4, 0xa4, 0x6c, 0xce, - 0x74, 0x6e, 0x38, 0xb4, 0x92, 0xe3, 0xa5, 0xfb, 0xda, 0x89, 0x25, 0x21, 0x5f, 0x53, 0x94, 0x9e, - 0xe1, 0x50, 0xf4, 0x98, 0x27, 0x72, 0x32, 0x75, 0x1c, 0x43, 0xe7, 0xd5, 0x5c, 0x0e, 0xe7, 0x18, - 0x43, 0x71, 0x0c, 0x9d, 0xc5, 0x3e, 0x93, 0xfc, 0xb8, 0xb0, 0x4c, 0x5e, 0xb3, 0xe4, 0xb0, 0x3b, - 0x92, 0xff, 0x3d, 0x0d, 0x79, 0x6e, 0x19, 0xca, 0x6e, 0xef, 0x29, 0x6c, 0x71, 0x05, 0x08, 0x2f, - 0x3e, 0xbe, 0x6b, 0x5a, 0x26, 0xc5, 0x35, 0xc0, 0xe5, 0xc2, 0xa7, 0xcf, 0x44, 0x4f, 0x8f, 0x60, - 0x8b, 0xef, 0x43, 0x98, 0x8a, 0xd3, 0xa8, 0x0e, 0x65, 0x6d, 0x65, 0xdb, 0xc4, 0xf4, 0x5d, 0x8f, - 0xdb, 0x69, 0xa3, 0x0f, 0xc5, 0x67, 0xc8, 0x67, 0x00, 0x81, 0x0a, 0xd8, 0x32, 0x8a, 0xd2, 0x6d, - 0x78, 0x7e, 0xc4, 0x68, 0x24, 0x41, 0x76, 0xa4, 0xbc, 0x71, 0x5f, 0x2f, 0x8c, 0x94, 0x3f, 0x81, - 0x92, 0x42, 0x6d, 0x66, 0x6a, 0xe2, 0x38, 0xcc, 0xd5, 0x25, 0xc8, 0x2e, 0x9c, 0x99, 0x3b, 0x8b, - 0x91, 0xf2, 0x17, 0x80, 0x22, 0x22, 0x55, 0xdb, 0x56, 0x6f, 0x99, 0x4b, 0x2e, 0x9c, 0x19, 0xa7, - 0xf9, 0x3b, 0x2a, 0x8f, 0xfd, 0xb1, 0x7c, 0x0a, 0xc5, 0xe6, 0x0d, 0x31, 0xa9, 0x7b, 0x9b, 0x98, - 0x8b, 0x32, 0xa3, 0x11, 0x93, 0xc5, 0x21, 0x0e, 0x9d, 0xc5, 0x21, 0x8e, 0xac, 0x02, 0x70, 0x79, - 0x7e, 0xb1, 0xd1, 0x31, 0xec, 0x52, 0x87, 0x2f, 0x28, 0x76, 0xd1, 0x49, 0x61, 0x8f, 0x81, 0x8e, - 0x60, 0x9b, 0x5e, 0x5a, 0x96, 0xd0, 0x69, 0xae, 0x93, 0xc2, 0x62, 0x88, 0x2a, 0xb0, 0x43, 0x0d, - 0x93, 0xbe, 0x3a, 0xe7, 0x5a, 0xcd, 0xb2, 0x4a, 0x50, 0x8c, 0x6b, 0xdb, 0x90, 0xbd, 0x51, 0xe7, - 0x72, 0x0f, 0xb6, 0xf9, 0x12, 0x4c, 0x2d, 0x34, 0xd8, 0x05, 0xa7, 0xd1, 0xe7, 0x7e, 0xf6, 0xcb, - 0x24, 0xb8, 0x55, 0xb0, 0x35, 0x3f, 0x2d, 0xfe, 0x11, 0x0e, 0xd8, 0xdd, 0x6f, 0x18, 0xf6, 0xd0, - 0x6e, 0x19, 0x73, 0xe2, 0x1d, 0x54, 0x82, 0xac, 0x6e, 0x78, 0xd5, 0x02, 0x23, 0x99, 0x73, 0x2d, - 0x6d, 0x72, 0x65, 0xfc, 0xe8, 0x2a, 0xdd, 0x1d, 0x31, 0x95, 0x58, 0xe6, 0xfc, 0xb6, 0x65, 0xcd, - 0x59, 0x5a, 0x16, 0x4f, 0xbf, 0x10, 0x87, 0xa5, 0xaf, 0xd8, 0x0a, 0xce, 0xd2, 0x32, 0x1d, 0x22, - 0xae, 0xbb, 0xb3, 0x9a, 0xd3, 0x91, 0x4a, 0xaf, 0xbd, 0x34, 0x14, 0x70, 0xe4, 0x7f, 0x49, 0x43, - 0x19, 0x13, 0x55, 0x0f, 0x6f, 0xeb, 0x6b, 0xd8, 0xb9, 0x12, 0x0b, 0xa5, 0x13, 0xf2, 0x6f, 0x55, - 0xd3, 0x88, 0xe3, 0x18, 0x97, 0x73, 0x22, 0xd6, 0xc6, 0xae, 0x30, 0x33, 0xf1, 0x95, 0x31, 0x27, - 0x66, 0xf0, 0xe0, 0xf5, 0xc7, 0x2c, 0x8a, 0x3a, 0x2c, 0x3f, 0x0a, 0x7d, 0x63, 0x31, 0x60, 0xe7, - 0x9f, 0x13, 0x93, 0xbb, 0x6e, 0x16, 0x33, 0x52, 0x6e, 0x80, 0x14, 0xec, 0xc6, 0x3d, 0xc2, 0x13, - 0xc8, 0xdb, 0x44, 0xd5, 0xeb, 0xd6, 0xca, 0xa4, 0xae, 0x1d, 0x02, 0x06, 0x33, 0x90, 0xae, 0x52, - 0x95, 0xaf, 0x58, 0xc4, 0x9c, 0x96, 0xff, 0x23, 0x0d, 0xd2, 0x85, 0x6d, 0x50, 0xf2, 0x17, 0x3e, - 0xd5, 0x11, 0x0b, 0x4c, 0x4b, 0x56, 0xe1, 0x0a, 0x8b, 0xb8, 0x23, 0x16, 0xff, 0x17, 0x2b, 0x87, - 0x0e, 0x2c, 0xda, 0xfc, 0x91, 0x45, 0x1f, 0xf1, 0x1a, 0x8f, 0xf0, 0xfc, 0x7d, 0x6f, 0x87, 0xf6, - 0xfd, 0x73, 0x28, 0xb3, 0x1d, 0x77, 0xcd, 0x2b, 0xcb, 0xdb, 0x35, 0x82, 0xad, 0x65, 0x60, 0x39, - 0x4e, 0xcb, 0x7f, 0x06, 0x29, 0x10, 0x73, 0x95, 0x94, 0x94, 0x06, 0x58, 0xe4, 0x30, 0xfe, 0x51, - 0x6c, 0x3b, 0x8b, 0x39, 0xcd, 0x78, 0x3c, 0x2e, 0x65, 0x79, 0x90, 0xf1, 0x63, 0xcf, 0xc2, 0xd2, - 0xc7, 0xc6, 0x82, 0xb8, 0xa6, 0xf0, 0x86, 0xcc, 0x6c, 0x86, 0xd3, 0x30, 0x6c, 0xbe, 0xcb, 0x1c, - 0x16, 0x03, 0xf9, 0xef, 0x41, 0xf2, 0xeb, 0x9c, 0xd0, 0x9d, 0x15, 0xc5, 0x4d, 0xd8, 0xcf, 0x02, - 0x0e, 0xfa, 0x0c, 0xf6, 0xa8, 0xb1, 0x20, 0xd6, 0x8a, 0x2a, 0x44, 0xb3, 0x4c, 0xdd, 0x71, 0xc3, - 0x5c, 0x8c, 0x2b, 0x3f, 0x83, 0xa2, 0x8f, 0xfd, 0xda, 0xba, 0x8c, 0xf7, 0x46, 0xe4, 0x4f, 0x43, - 0x6b, 0xbf, 0xb6, 0x2e, 0x79, 0xb8, 0x96, 0x20, 0x6b, 0xe8, 0xa2, 0x3d, 0x53, 0xc2, 0x8c, 0x94, - 0x7f, 0x80, 0x4a, 0xa7, 0xdb, 0xc0, 0x2b, 0xd3, 0x34, 0xcc, 0xd9, 0x6b, 0xeb, 0x92, 0x47, 0x5b, - 0xcc, 0xbd, 0x3e, 0x84, 0x98, 0xe5, 0xdd, 0x16, 0x04, 0x5b, 0x37, 0x8b, 0xae, 0xee, 0x69, 0x89, - 0xd1, 0xcc, 0xb0, 0x8e, 0xb5, 0xb2, 0x35, 0xe2, 0x46, 0x5d, 0x77, 0x24, 0xff, 0x19, 0xca, 0xa1, - 0x93, 0x73, 0xb8, 0x5f, 0x42, 0xf6, 0x4f, 0xd6, 0x25, 0xc7, 0x8b, 0x87, 0xdf, 0xf0, 0x46, 0x31, - 0x93, 0x62, 0x5a, 0x32, 0x9c, 0x96, 0x61, 0x1a, 0xce, 0xb5, 0x9f, 0x9a, 0x43, 0x9c, 0xe0, 0xb6, - 0xbe, 0x76, 0x2c, 0x33, 0x48, 0xce, 0x1e, 0x47, 0x3e, 0x85, 0x42, 0xaf, 0xd9, 0xf0, 0x73, 0xff, - 0x73, 0x28, 0x5c, 0xce, 0x0d, 0xf3, 0xed, 0x54, 0xf3, 0xef, 0x46, 0x09, 0x03, 0x67, 0xf1, 0xcb, - 0x21, 0xff, 0xf7, 0x16, 0xec, 0x89, 0x37, 0x8f, 0x3f, 0xa7, 0x02, 0xbb, 0xc4, 0x14, 0xa5, 0x41, - 0x5a, 0x34, 0x97, 0xdc, 0x21, 0x53, 0xe3, 0x8d, 0xa1, 0x7b, 0xd1, 0xfe, 0xc6, 0xe0, 0x9c, 0xa5, - 0x9f, 0x79, 0x18, 0xc9, 0x3d, 0x5b, 0x35, 0x57, 0x57, 0xaa, 0x46, 0x57, 0x36, 0xb1, 0xb9, 0xbf, - 0xe4, 0x71, 0x84, 0xc7, 0x56, 0x58, 0xda, 0x96, 0xbe, 0xd2, 0x28, 0x77, 0x9b, 0x3c, 0xf6, 0x86, - 0x5c, 0xad, 0xc4, 0x36, 0x54, 0x91, 0xe1, 0x99, 0x5a, 0xf9, 0x08, 0x3d, 0x83, 0xc2, 0xca, 0x21, - 0xd3, 0x7a, 0xa3, 0x3e, 0x6d, 0xd6, 0xfb, 0x3c, 0xcb, 0xe7, 0x70, 0x7e, 0xe5, 0x90, 0x7a, 0xa3, - 0xde, 0xac, 0xf7, 0x59, 0x3e, 0x66, 0xdf, 0xf1, 0xa0, 0xd1, 0x55, 0x78, 0xb7, 0x26, 0x87, 0x73, - 0x2b, 0x87, 0xf0, 0x31, 0x7a, 0x09, 0x12, 0xfb, 0xd8, 0xe9, 0x36, 0xa6, 0x6f, 0x9a, 0x7f, 0x57, - 0x1b, 0x56, 0x71, 0xc3, 0xcd, 0xd9, 0x7b, 0x2b, 0x87, 0x74, 0xba, 0x0d, 0x8f, 0x8b, 0x64, 0x28, - 0x79, 0x92, 0xfd, 0xe1, 0x44, 0x69, 0xf2, 0xc6, 0x4a, 0x0e, 0x17, 0x84, 0x18, 0x67, 0x79, 0x5b, - 0x61, 0x32, 0xb8, 0x7a, 0xc1, 0xdb, 0x26, 0x62, 0x2b, 0xcc, 0x9f, 0xaa, 0x17, 0xe8, 0x21, 0xec, - 0xb2, 0xef, 0x93, 0xbe, 0xc2, 0x5b, 0x20, 0x39, 0xbc, 0xb3, 0x72, 0xc8, 0xa4, 0xaf, 0xa0, 0xa7, - 0x00, 0xec, 0x83, 0xd2, 0xc4, 0xdd, 0x6a, 0xcf, 0x2d, 0x0d, 0xd8, 0x3c, 0xc1, 0x40, 0xaf, 0x61, - 0xcf, 0x36, 0x75, 0xc3, 0x99, 0xfa, 0x45, 0x9f, 0xe8, 0x4f, 0xfc, 0x2c, 0x5a, 0xb1, 0x46, 0x6c, - 0xd5, 0xa4, 0xd7, 0xc4, 0x36, 0x09, 0xc5, 0x25, 0x3e, 0xd5, 0x37, 0x61, 0x1f, 0x24, 0x4d, 0xd7, - 0xa6, 0x44, 0x5b, 0x04, 0x68, 0xe5, 0xf7, 0x47, 0xdb, 0xd3, 0x74, 0xad, 0xa9, 0x2d, 0x7c, 0xb8, - 0x2a, 0x14, 0x57, 0x8b, 0xd0, 0xc6, 0x44, 0xe7, 0xe2, 0xd9, 0x06, 0xa8, 0x49, 0x5f, 0xc1, 0x85, - 0xd5, 0xc2, 0xdf, 0x91, 0x3c, 0x82, 0xa3, 0xe4, 0xc5, 0x78, 0x29, 0x65, 0x39, 0x74, 0xaa, 0xea, - 0xba, 0x97, 0xe8, 0x72, 0x8c, 0x51, 0xd5, 0x75, 0x1b, 0x3d, 0x82, 0x9c, 0x4e, 0x6e, 0xc4, 0x37, - 0xe1, 0x76, 0xbb, 0x3a, 0xb9, 0x61, 0x9f, 0xe4, 0xdf, 0xc2, 0xfe, 0x9d, 0x35, 0x59, 0x38, 0xd2, - 0x74, 0xdb, 0x5a, 0xb8, 0x9e, 0x2b, 0x06, 0xec, 0x02, 0xb3, 0x88, 0xec, 0x35, 0x59, 0x19, 0x2d, - 0x4f, 0xe1, 0x13, 0xf1, 0xf2, 0x21, 0xba, 0xb7, 0x95, 0xae, 0x49, 0x89, 0x7d, 0xa5, 0x6a, 0xc4, - 0x3f, 0xf8, 0x77, 0xb0, 0xc5, 0x8b, 0x43, 0xd1, 0xd7, 0x8d, 0xf6, 0xeb, 0xd6, 0xce, 0xc2, 0x7c, - 0x8e, 0xfc, 0xcf, 0x59, 0x78, 0xb4, 0x1e, 0x39, 0x29, 0x1a, 0x7f, 0xef, 0x46, 0x5e, 0xf1, 0x52, - 0xf9, 0xe5, 0xfb, 0xad, 0x76, 0x1a, 0x2a, 0x11, 0x59, 0xf0, 0x58, 0x32, 0xe5, 0x10, 0xc7, 0x39, - 0xf7, 0x82, 0x43, 0xc0, 0x61, 0x99, 0xca, 0x24, 0x74, 0xa1, 0x3a, 0x6f, 0xcf, 0xdd, 0x7b, 0xe9, - 0x8f, 0xc3, 0xb7, 0x7e, 0x3b, 0x7a, 0xeb, 0x87, 0x80, 0xf4, 0x6b, 0x6d, 0xa9, 0x10, 0xfb, 0x86, - 0xd8, 0x7e, 0x35, 0x29, 0x5a, 0xb9, 0xcf, 0x23, 0x9b, 0x6c, 0x74, 0xea, 0xa3, 0xa8, 0x18, 0x4e, - 0x98, 0x8a, 0x3e, 0x85, 0x92, 0xe7, 0x4a, 0x5d, 0x73, 0xe2, 0x10, 0xf7, 0x3a, 0x47, 0x99, 0x72, - 0x1d, 0xb6, 0x78, 0xd5, 0x0f, 0xb0, 0xd3, 0xaf, 0x0e, 0x26, 0xd5, 0x9e, 0x94, 0x42, 0x65, 0x28, - 0xb0, 0x35, 0xa6, 0xf5, 0x5e, 0xb7, 0x39, 0x18, 0x4b, 0x69, 0x9f, 0xa1, 0x34, 0xf1, 0x0f, 0x4d, - 0x2c, 0x65, 0xd8, 0x03, 0x73, 0x32, 0xe8, 0x57, 0x07, 0xd5, 0x76, 0xb3, 0x21, 0x65, 0xe5, 0xff, - 0xcb, 0x02, 0xba, 0xbb, 0xab, 0xa0, 0x7e, 0x1c, 0x59, 0xb6, 0x1f, 0x15, 0x03, 0x0e, 0x7a, 0x09, - 0x65, 0x31, 0xf2, 0xd5, 0xed, 0xfa, 0x4e, 0x9c, 0xcd, 0x9b, 0x3a, 0x44, 0x75, 0x78, 0x1d, 0xe1, - 0x6a, 0x3c, 0x60, 0xa0, 0x13, 0x90, 0x4c, 0x8b, 0xb2, 0xa7, 0x8c, 0x65, 0x1b, 0x54, 0xe5, 0x5d, - 0x79, 0x91, 0xea, 0xef, 0xf0, 0xd1, 0x29, 0x20, 0xdd, 0x1a, 0x58, 0xb4, 0x66, 0x98, 0x7a, 0xb0, - 0xac, 0xb0, 0x45, 0xc2, 0x17, 0x96, 0x2f, 0x35, 0x75, 0x3e, 0xbf, 0x54, 0xb5, 0xb7, 0x6e, 0x43, - 0x51, 0x84, 0xcc, 0x18, 0x17, 0x9d, 0xc3, 0x8e, 0xad, 0x9a, 0x33, 0xe2, 0x54, 0x76, 0xb9, 0x17, - 0x3f, 0x59, 0x63, 0x32, 0xcc, 0x84, 0xb0, 0x2b, 0x8b, 0x5a, 0xb0, 0x6b, 0x2d, 0xc5, 0x8f, 0x1a, - 0xe2, 0x65, 0xf4, 0xd7, 0xf7, 0x58, 0xfa, 0x74, 0x28, 0xc4, 0x9b, 0x26, 0xb5, 0x6f, 0xb1, 0x37, - 0x19, 0xd5, 0xa1, 0xe0, 0xb0, 0x03, 0x6a, 0x1d, 0xcb, 0xa1, 0x4e, 0x25, 0xcf, 0xb1, 0x3e, 0x59, - 0x87, 0xe5, 0x4b, 0xe2, 0xf0, 0xac, 0xe3, 0xef, 0xa0, 0x18, 0x46, 0x67, 0x59, 0xe7, 0x2d, 0xb9, - 0x75, 0xed, 0xc6, 0xc8, 0xe8, 0x1b, 0x3c, 0xef, 0xbe, 0xc1, 0xbf, 0xcb, 0x7c, 0x9b, 0x96, 0x2d, - 0x28, 0xc7, 0xce, 0xc8, 0x73, 0x28, 0x23, 0x7a, 0xd6, 0x3b, 0xbf, 0x13, 0x17, 0xe2, 0xf8, 0xdf, - 0x27, 0xcb, 0x25, 0xf1, 0xc2, 0x4e, 0x88, 0xe3, 0xdb, 0x9c, 0xd7, 0x43, 0x61, 0x9b, 0x33, 0x86, - 0xfc, 0x2d, 0x1c, 0x24, 0x9d, 0x88, 0xbf, 0x83, 0x54, 0xcd, 0x7f, 0x07, 0xa9, 0x1a, 0xaf, 0x33, - 0x96, 0x2e, 0x7e, 0xc6, 0x58, 0xca, 0xbb, 0xb0, 0xdd, 0x5c, 0x2c, 0xe9, 0xed, 0xc9, 0xaf, 0x40, - 0x8a, 0xf7, 0xb0, 0xd0, 0x0e, 0x64, 0x26, 0x23, 0x29, 0x85, 0x72, 0xb0, 0xd5, 0x18, 0x5e, 0x0c, - 0xa4, 0x34, 0xda, 0x85, 0xec, 0xb0, 0xd5, 0x92, 0x32, 0x27, 0x9f, 0x03, 0x04, 0x3d, 0x2b, 0x76, - 0x5f, 0x70, 0x57, 0xe9, 0x0e, 0xda, 0xa2, 0x1d, 0xd3, 0xaa, 0xf6, 0x7a, 0x6c, 0xc0, 0xdb, 0x31, - 0xb5, 0xe1, 0xb8, 0x23, 0x65, 0x4e, 0xfe, 0x27, 0x0d, 0xbb, 0x6e, 0xa3, 0x04, 0xe5, 0x61, 0x7b, - 0x30, 0xe9, 0x4f, 0xbf, 0x94, 0x52, 0x1e, 0x79, 0x26, 0xa5, 0x3d, 0xf2, 0x2b, 0x29, 0xe3, 0x91, - 0xe7, 0x52, 0xd6, 0x23, 0xbf, 0x96, 0xb6, 0x3c, 0xf2, 0x95, 0xb4, 0xed, 0x91, 0xdf, 0x48, 0x3b, - 0x1e, 0xf9, 0xad, 0xb4, 0xeb, 0x91, 0xbf, 0x96, 0x72, 0x6c, 0x47, 0x7c, 0x89, 0x2f, 0xa4, 0xbc, - 0x4f, 0x7f, 0x29, 0x81, 0x4f, 0x9f, 0x49, 0x05, 0x9f, 0xfe, 0x4a, 0x2a, 0xfa, 0xf4, 0xb9, 0x54, - 0xf2, 0xe9, 0xaf, 0xa5, 0x3d, 0x9f, 0x7e, 0x25, 0x95, 0x7d, 0xfa, 0x1b, 0x49, 0xf2, 0xe9, 0x6f, - 0xa5, 0x7d, 0x9f, 0xfe, 0xb5, 0x84, 0x3c, 0xfa, 0xec, 0x0b, 0xe9, 0xc1, 0xc9, 0xaf, 0xa0, 0x18, - 0x6e, 0xf6, 0x30, 0xe5, 0xf5, 0x86, 0x17, 0x42, 0x9f, 0x9d, 0x6e, 0xbb, 0x23, 0xa5, 0x99, 0xf8, - 0x78, 0xd8, 0x6e, 0xf7, 0x9a, 0x52, 0xe6, 0xa4, 0x01, 0xe5, 0x58, 0x0b, 0x83, 0xe9, 0x72, 0x32, - 0x78, 0x33, 0x60, 0xba, 0x4f, 0x31, 0x6b, 0x54, 0x47, 0xc2, 0x06, 0xca, 0xb8, 0x2a, 0x65, 0xd0, - 0x03, 0x28, 0x2b, 0xe3, 0xea, 0xb4, 0x55, 0xed, 0xf6, 0x86, 0x3f, 0x34, 0xf1, 0xb4, 0x3a, 0x92, - 0xb2, 0x27, 0x0d, 0x28, 0x45, 0x5e, 0xf2, 0xe8, 0x10, 0xf6, 0x99, 0xd4, 0x60, 0x38, 0x9e, 0xd6, - 0x87, 0x83, 0x41, 0xb3, 0x3e, 0x6e, 0x36, 0x84, 0xe2, 0xab, 0xa3, 0xe9, 0x84, 0x01, 0xee, 0x43, - 0x89, 0x49, 0x04, 0x5f, 0x33, 0x27, 0x9f, 0x89, 0x7e, 0x8e, 0xd7, 0x10, 0x41, 0x45, 0xc8, 0x5d, - 0x8c, 0xaa, 0x67, 0xd3, 0x91, 0xf2, 0x46, 0xec, 0x7f, 0x38, 0x6a, 0x0e, 0xa4, 0xf4, 0xc9, 0xdf, - 0x80, 0x14, 0x7f, 0xa3, 0xb0, 0xfd, 0x8d, 0xfb, 0xcc, 0x6d, 0x24, 0x28, 0xd6, 0xaa, 0x4a, 0x67, - 0xaa, 0xd4, 0x71, 0x77, 0x34, 0x56, 0x44, 0xe8, 0x64, 0x35, 0x8c, 0xc7, 0xc8, 0x9c, 0xfd, 0xdb, - 0x31, 0xec, 0x8c, 0xce, 0x2f, 0x06, 0xa3, 0x2f, 0x51, 0x1f, 0x2a, 0x6d, 0x42, 0xbd, 0xfc, 0x18, - 0x49, 0xb3, 0x08, 0x45, 0xf3, 0x12, 0x73, 0xd8, 0xe3, 0xc7, 0x1b, 0x4a, 0x01, 0x39, 0x85, 0x3a, - 0xf0, 0x40, 0x60, 0x7d, 0x34, 0x52, 0x0b, 0xf6, 0xdb, 0x84, 0xc6, 0x0a, 0xd6, 0x0f, 0xc0, 0x19, - 0xc2, 0xbe, 0x72, 0x07, 0x67, 0xd3, 0x9c, 0xfb, 0x00, 0x7f, 0x07, 0x7b, 0x6d, 0x42, 0xc3, 0xa5, - 0x77, 0xd2, 0xae, 0x2a, 0x11, 0x5e, 0x48, 0x5a, 0x20, 0x28, 0x51, 0x84, 0xb5, 0xd2, 0xc7, 0x09, - 0xd8, 0x72, 0x0a, 0x35, 0xa0, 0xd8, 0x67, 0x45, 0xfd, 0xa4, 0xaf, 0xf0, 0xec, 0x73, 0x4f, 0x81, - 0xb6, 0x06, 0x65, 0x0a, 0xcf, 0x85, 0xb1, 0xd6, 0x17, 0x2f, 0xef, 0x59, 0x08, 0xad, 0x59, 0xc0, - 0x82, 0x5f, 0xb4, 0x09, 0xad, 0xce, 0xe7, 0xf7, 0xd7, 0x5f, 0x49, 0x3a, 0x3c, 0x8d, 0x26, 0x8f, - 0xfb, 0x30, 0xe4, 0x14, 0x9a, 0xc3, 0xa7, 0x21, 0x6f, 0x5e, 0xbf, 0x5a, 0xb4, 0x07, 0x17, 0x69, - 0x51, 0x1d, 0xbf, 0xe7, 0x91, 0xe5, 0x14, 0xea, 0xf3, 0xf7, 0x29, 0x5e, 0x99, 0x6e, 0xfe, 0x7d, - 0x9a, 0xfc, 0xe2, 0x73, 0x9f, 0xc5, 0xc7, 0x4f, 0xd6, 0x7d, 0x66, 0x4f, 0x3a, 0x0e, 0x57, 0x0e, - 0xc3, 0xb1, 0x17, 0xef, 0x3d, 0x88, 0xeb, 0x9f, 0x98, 0x72, 0x0a, 0x61, 0x38, 0xec, 0x74, 0x1b, - 0x6d, 0x42, 0x83, 0x77, 0xa7, 0x78, 0xa5, 0xae, 0x9f, 0x75, 0xef, 0x16, 0x9b, 0x80, 0x3a, 0xdd, - 0x46, 0x5d, 0x35, 0x35, 0x32, 0x0f, 0x76, 0xb9, 0x01, 0x30, 0xd9, 0x2f, 0x06, 0xf0, 0x50, 0x6c, - 0xcd, 0x7d, 0x95, 0xfb, 0xf2, 0xc9, 0x7e, 0xf0, 0x74, 0x2d, 0x3e, 0x7b, 0xf2, 0xcb, 0x29, 0x54, - 0x83, 0x23, 0x7f, 0x5b, 0xd5, 0xf9, 0xfc, 0x1e, 0xb8, 0xe4, 0x3d, 0xfd, 0xde, 0x53, 0x57, 0xac, - 0x53, 0xb0, 0xe9, 0x74, 0x3f, 0x8f, 0x7f, 0x4a, 0xec, 0x32, 0xf0, 0x0d, 0x16, 0x5a, 0x8a, 0xdf, - 0x85, 0x8a, 0x99, 0x35, 0xde, 0x9d, 0x5a, 0xb3, 0xc1, 0x37, 0x00, 0x2d, 0xc5, 0x6b, 0x88, 0xa1, - 0xa8, 0xa5, 0x62, 0x5d, 0xbb, 0x98, 0xc6, 0xe2, 0x5d, 0x34, 0x6e, 0x81, 0x52, 0x4b, 0x69, 0x13, - 0xea, 0xf5, 0x8e, 0x62, 0x78, 0xb1, 0xce, 0x53, 0x0c, 0x2f, 0xde, 0x70, 0x92, 0x53, 0xe8, 0x8f, - 0x70, 0xd8, 0x52, 0xea, 0x36, 0x51, 0x29, 0x89, 0xf4, 0x1e, 0x51, 0xec, 0x9f, 0x14, 0x09, 0x9d, - 0xcf, 0x63, 0x79, 0x93, 0x88, 0xbf, 0xc2, 0xef, 0xa0, 0xc0, 0xbb, 0xa9, 0x3d, 0x5e, 0x96, 0xc7, - 0xac, 0x12, 0x6e, 0x19, 0xc7, 0xd5, 0xc7, 0x3e, 0xc9, 0xa9, 0x2f, 0xd2, 0xa8, 0x0d, 0x85, 0xa6, - 0x76, 0xed, 0x77, 0xd3, 0x36, 0xc5, 0x80, 0x0d, 0xdf, 0xe4, 0x14, 0xea, 0x02, 0x12, 0x21, 0x26, - 0xf2, 0xe3, 0xcb, 0xfa, 0x76, 0xfb, 0xf1, 0x51, 0x72, 0xcb, 0x5f, 0x4e, 0xa1, 0xdf, 0x40, 0xb1, - 0x4d, 0x68, 0xf0, 0x53, 0x41, 0x92, 0xbf, 0xae, 0x9f, 0xdd, 0x82, 0x23, 0xa1, 0x0e, 0x9f, 0x59, - 0xbf, 0x16, 0x45, 0xfd, 0x4f, 0xc3, 0xc1, 0xb0, 0xaf, 0x50, 0xcb, 0x26, 0x17, 0xc6, 0x55, 0x70, - 0x9e, 0x5f, 0xc4, 0xc4, 0xd7, 0xfd, 0xc2, 0xb5, 0xc6, 0x5d, 0x47, 0x70, 0xc8, 0x62, 0x0f, 0x83, - 0xd5, 0x23, 0xb8, 0x9b, 0xf4, 0xbe, 0x5e, 0x87, 0x1c, 0xb1, 0xe2, 0xfe, 0x82, 0xf9, 0xd3, 0x40, - 0xd7, 0x9f, 0xbb, 0x0f, 0x8f, 0x38, 0x96, 0x97, 0x30, 0xde, 0x1b, 0x32, 0xf9, 0xc8, 0x43, 0x61, - 0x8e, 0x84, 0xed, 0x25, 0x99, 0xe3, 0xf9, 0x7a, 0x7c, 0xf1, 0x53, 0x08, 0xb3, 0xcb, 0xe3, 0x50, - 0x3a, 0xbb, 0xf3, 0xaf, 0xb4, 0xfb, 0x63, 0x65, 0x7c, 0x0a, 0x4f, 0xfa, 0x4f, 0x05, 0x60, 0xfc, - 0x1b, 0x26, 0xcb, 0x39, 0x7b, 0x6d, 0x6e, 0x46, 0xb8, 0x7f, 0x81, 0xdf, 0xc3, 0xa3, 0xe4, 0x05, - 0xaa, 0xba, 0xfe, 0xd1, 0xe0, 0x7f, 0x80, 0x27, 0xeb, 0x76, 0xbf, 0xb0, 0x6e, 0x3e, 0x7e, 0xf3, - 0x63, 0x78, 0x1c, 0x98, 0x30, 0xfe, 0xfd, 0x83, 0xed, 0xd8, 0x83, 0x43, 0x8e, 0x78, 0xc7, 0x82, - 0xf7, 0x6c, 0x37, 0xd9, 0xcd, 0x2e, 0xe1, 0x67, 0xe1, 0x7b, 0xb0, 0xce, 0x8e, 0x9b, 0xfc, 0xf7, - 0x3d, 0xf4, 0xfc, 0x7c, 0xd3, 0x1a, 0xcc, 0x94, 0x1f, 0x85, 0xdf, 0x87, 0x83, 0x40, 0xcf, 0x7e, - 0x4e, 0xfd, 0x60, 0x05, 0x0f, 0xe0, 0x30, 0x80, 0x0b, 0xfe, 0xb0, 0xf1, 0xa1, 0x78, 0x97, 0x3b, - 0xfc, 0x7f, 0xa1, 0x5f, 0xfd, 0x7f, 0x00, 0x00, 0x00, 0xff, 0xff, 0xaa, 0xe7, 0x13, 0x02, 0x25, - 0x2a, 0x00, 0x00, + // 3646 bytes of a gzipped FileDescriptorProto + 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xb4, 0x5a, 0x49, 0x77, 0x23, 0x47, + 0x72, 0xc6, 0xc2, 0x05, 0x08, 0x00, 0x44, 0x31, 0x9b, 0x64, 0xa3, 0xd9, 0xab, 0x4a, 0xcb, 0xd0, + 0x1c, 0x0f, 0x25, 0x51, 0x54, 0x4b, 0xa3, 0x37, 0x63, 0x0d, 0x76, 0xa0, 0x1b, 0xdb, 0xcb, 0x02, + 0x44, 0x8f, 0xc7, 0x6f, 0x30, 0xc5, 0xaa, 0x24, 0x58, 0x6a, 0xa0, 0x0a, 0xae, 0x85, 0x2d, 0xfa, + 0x30, 0x7e, 0xcf, 0x27, 0x1f, 0x7c, 0xf7, 0x5f, 0xf0, 0xc9, 0x37, 0xdb, 0xbf, 0xc8, 0x77, 0x5f, + 0x7c, 0xf6, 0xbc, 0xcc, 0xac, 0x9d, 0x05, 0x90, 0xdd, 0xfd, 0x74, 0x8b, 0x8c, 0x8a, 0xfc, 0x32, + 0x32, 0x22, 0x32, 0x32, 0x32, 0x00, 0x80, 0x99, 0xb9, 0x54, 0x4e, 0x96, 0xa6, 0x61, 0x1b, 0xa8, + 0x30, 0x3a, 0x7b, 0xab, 0x8f, 0xbe, 0x9c, 0x52, 0x96, 0xf8, 0x23, 0x08, 0x63, 0x53, 0x9b, 0xcd, + 0x88, 0x59, 0x55, 0x6c, 0xcd, 0xd0, 0x25, 0x62, 0xa3, 0x1a, 0xec, 0x44, 0x78, 0x56, 0x25, 0xfd, + 0x22, 0x7b, 0x54, 0x38, 0x3d, 0x3c, 0x09, 0xcd, 0x3c, 0x89, 0x88, 0xe0, 0xd8, 0x0c, 0x84, 0x60, + 0x63, 0x20, 0x2f, 0x48, 0x25, 0xf3, 0x22, 0x7d, 0x94, 0xc7, 0x8c, 0x16, 0xff, 0x0b, 0xa0, 0x14, + 0x11, 0x43, 0x3b, 0x90, 0xd1, 0xd4, 0x4a, 0xfa, 0x45, 0xfa, 0xa8, 0x84, 0x33, 0x9a, 0x8a, 0x2a, + 0xb0, 0x6d, 0xe8, 0x44, 0xba, 0x32, 0x6c, 0x36, 0x31, 0x87, 0xbd, 0x21, 0x3a, 0x84, 0x9c, 0x66, + 0xd1, 0x59, 0xd7, 0xa4, 0x92, 0x65, 0x9f, 0xfc, 0x31, 0x7a, 0x02, 0x79, 0x6d, 0xb1, 0x70, 0x6c, + 0xf9, 0x62, 0x4e, 0x2a, 0x1b, 0xec, 0x63, 0xc0, 0x40, 0x3d, 0xd8, 0xb1, 0x88, 0x79, 0xad, 0x29, + 0x44, 0xb2, 0x65, 0xd3, 0x26, 0x6a, 0x65, 0xf3, 0x45, 0xfa, 0xa8, 0x70, 0x2a, 0x26, 0xed, 0x46, + 0x8a, 0x48, 0x76, 0x52, 0x38, 0x36, 0x17, 0xfd, 0x2d, 0x20, 0xc7, 0xba, 0x68, 0xcb, 0xea, 0x8c, + 0xd8, 0x75, 0x43, 0xd7, 0x89, 0x42, 0x11, 0xb7, 0x18, 0xe2, 0x67, 0x49, 0x88, 0x13, 0xa9, 0x16, + 0x93, 0xee, 0xa4, 0x70, 0x02, 0x06, 0x92, 0x61, 0xdf, 0xe7, 0x36, 0x34, 0x4b, 0xf1, 0xc1, 0xb7, + 0x19, 0xf8, 0x5f, 0xad, 0x05, 0x0f, 0x4f, 0xe8, 0xa4, 0x70, 0x32, 0x12, 0xea, 0x42, 0xe9, 0xad, + 0x76, 0xa9, 0x55, 0x47, 0x9e, 0x25, 0x72, 0x0c, 0xfa, 0xa3, 0x24, 0xe8, 0xf3, 0xb0, 0x60, 0x27, + 0x85, 0xa3, 0x33, 0xa9, 0x1d, 0x28, 0xc3, 0x57, 0xbf, 0x6a, 0x49, 0xb6, 0x5c, 0xc9, 0xaf, 0xb6, + 0xc3, 0xf9, 0x2d, 0x69, 0x6a, 0x87, 0xdb, 0x18, 0xe8, 0x3b, 0xc8, 0x59, 0xd6, 0x55, 0xcf, 0x98, + 0x69, 0x7a, 0x05, 0x18, 0xde, 0x93, 0x44, 0x4f, 0x49, 0x1d, 0x26, 0xd3, 0x49, 0x61, 0x5f, 0x1e, + 0x61, 0x10, 0xd4, 0x2b, 0x65, 0xd9, 0x23, 0xb2, 0x45, 0xda, 0xa6, 0xac, 0xd3, 0x3d, 0x16, 0x18, + 0xc6, 0x27, 0x49, 0x18, 0x8d, 0x4e, 0x7d, 0x14, 0x96, 0xed, 0xa4, 0xf0, 0xad, 0xf9, 0xa8, 0x05, + 0xc5, 0x99, 0x69, 0x38, 0x4b, 0x4c, 0x14, 0x42, 0xa3, 0xaf, 0xc8, 0xf0, 0x5e, 0x24, 0xe1, 0xb5, + 0x43, 0x72, 0x9d, 0x14, 0x8e, 0xcc, 0x43, 0x7f, 0x84, 0xbd, 0xf0, 0x58, 0x22, 0xff, 0xe0, 0x10, + 0x5d, 0x21, 0x95, 0x12, 0xc3, 0x3b, 0xba, 0x0b, 0xcf, 0x93, 0xef, 0xa4, 0x70, 0x22, 0x0e, 0x3a, + 0x83, 0xad, 0xd9, 0x52, 0x33, 0xba, 0x7a, 0x65, 0x87, 0x21, 0x26, 0x9e, 0xd6, 0xf6, 0xa8, 0x3b, + 0xec, 0x52, 0x9b, 0xb9, 0xb2, 0xa8, 0x01, 0x70, 0x21, 0x5b, 0x57, 0x92, 0x62, 0x6a, 0x4b, 0xbb, + 0x52, 0x4e, 0x38, 0x19, 0x6e, 0x5e, 0xa0, 0x7e, 0xaf, 0xf9, 0x92, 0x9d, 0x34, 0x0e, 0xcd, 0x43, + 0x55, 0xc8, 0x5f, 0x69, 0xaa, 0x0b, 0x22, 0x24, 0x04, 0x55, 0x08, 0xa4, 0xd3, 0x6d, 0xf8, 0x18, + 0xc1, 0x2c, 0xa4, 0xc0, 0x81, 0x4a, 0x96, 0x73, 0xe3, 0x46, 0x22, 0xb6, 0xad, 0xe9, 0x33, 0x6b, + 0x4c, 0x16, 0xcb, 0xb9, 0x6c, 0x93, 0xca, 0x6e, 0x42, 0xfc, 0x73, 0xbc, 0x46, 0xe2, 0x84, 0x4e, + 0x1a, 0xaf, 0x80, 0x42, 0xc7, 0x90, 0x9d, 0x1b, 0xb3, 0x0a, 0x62, 0x88, 0x07, 0x09, 0x88, 0x3d, + 0x63, 0xd6, 0x49, 0x63, 0x2a, 0x84, 0x5e, 0xc2, 0x36, 0xb5, 0xd1, 0xd0, 0xb1, 0x2b, 0x0f, 0x12, + 0x0c, 0xca, 0xe5, 0xa9, 0x3d, 0x87, 0x0e, 0xdd, 0x8a, 0x27, 0x8c, 0x7e, 0x03, 0x79, 0xe6, 0x1f, + 0x89, 0xe8, 0x6a, 0x65, 0x2f, 0x21, 0x80, 0xdd, 0x99, 0x9e, 0x0c, 0x35, 0x83, 0x3f, 0xa1, 0x96, + 0x87, 0x6d, 0xd7, 0x55, 0xb5, 0x1c, 0x6c, 0x71, 0x51, 0xf1, 0x21, 0xec, 0x27, 0xe6, 0x27, 0xf1, + 0x31, 0x3c, 0x5a, 0x99, 0x66, 0xc4, 0x67, 0xf0, 0x64, 0x5d, 0x9a, 0x10, 0x0f, 0x60, 0x2f, 0xe9, + 0xac, 0x87, 0x40, 0x6f, 0x9f, 0x59, 0xf1, 0x73, 0x28, 0xc7, 0x0e, 0x20, 0x4d, 0xbf, 0x73, 0x4a, + 0x4c, 0x2c, 0x62, 0xb2, 0x5c, 0x9e, 0xc7, 0x01, 0x43, 0x7c, 0x04, 0x0f, 0x57, 0x9c, 0x36, 0xb1, + 0x0b, 0x0f, 0x12, 0x02, 0x9d, 0xe2, 0x31, 0x7b, 0xb0, 0xfb, 0xc3, 0xc5, 0xf3, 0x19, 0x68, 0x0f, + 0x36, 0xaf, 0xe5, 0xb9, 0xc3, 0x6f, 0x96, 0x4d, 0xcc, 0x07, 0xe2, 0x3f, 0xc1, 0xe3, 0x35, 0x67, + 0xe6, 0x0e, 0xc8, 0x63, 0x10, 0xba, 0x33, 0xdd, 0x30, 0xc9, 0xd0, 0xb1, 0x87, 0x97, 0x43, 0x53, + 0x25, 0xa6, 0x7b, 0xfd, 0xdc, 0xe2, 0xa3, 0x03, 0xd8, 0x62, 0x2b, 0x5a, 0x95, 0xec, 0x8b, 0xec, + 0xd1, 0x26, 0x76, 0x47, 0xe2, 0x7f, 0xa7, 0xfd, 0xbb, 0x8d, 0x9f, 0x31, 0x74, 0xc2, 0xe3, 0x67, + 0xe0, 0x2c, 0xd8, 0x8a, 0x3b, 0xa7, 0x7b, 0x91, 0x28, 0xa0, 0x52, 0x03, 0x67, 0x81, 0x3d, 0x21, + 0xf4, 0x5b, 0x80, 0xa5, 0x33, 0x9f, 0x4f, 0x96, 0x0d, 0xe3, 0xad, 0xce, 0xd6, 0xdf, 0x39, 0x7d, + 0x7a, 0x6b, 0x4a, 0x57, 0x1f, 0xf9, 0x42, 0x38, 0x34, 0x01, 0x7d, 0x03, 0xc0, 0x8f, 0x74, 0x53, + 0x9d, 0xf1, 0x2b, 0x72, 0xe7, 0xf4, 0x61, 0xc2, 0x74, 0xfa, 0x19, 0x87, 0x44, 0xc5, 0x6f, 0x60, + 0x3f, 0xf1, 0x88, 0xa3, 0x67, 0x00, 0x16, 0xa3, 0x42, 0x56, 0x0b, 0x71, 0xc4, 0x97, 0xb0, 0x97, + 0x74, 0xac, 0xef, 0x9c, 0xf7, 0x7f, 0x69, 0x78, 0xb2, 0xee, 0xfc, 0x22, 0x11, 0x8a, 0xb6, 0x4b, + 0x87, 0x20, 0x22, 0x3c, 0xf4, 0x0a, 0x36, 0xec, 0x9b, 0x25, 0x71, 0xed, 0xf4, 0xf2, 0xde, 0xc9, + 0xe1, 0xc4, 0x23, 0xc6, 0x37, 0x4b, 0x82, 0x19, 0x86, 0x48, 0xa0, 0x18, 0xe6, 0xa2, 0x5d, 0x28, + 0xb5, 0x26, 0xbd, 0xde, 0x54, 0x6a, 0x8e, 0xc7, 0xdd, 0x41, 0x5b, 0x12, 0x52, 0xa8, 0x00, 0xdb, + 0x83, 0xe6, 0xf8, 0x7c, 0x88, 0x5f, 0x0b, 0x69, 0x94, 0x83, 0x8d, 0xf3, 0x6e, 0xab, 0x2b, 0x64, + 0xd0, 0x36, 0x64, 0x27, 0x52, 0x4d, 0xc8, 0xa2, 0x12, 0xe4, 0x6b, 0xbd, 0x49, 0x73, 0x3c, 0x1c, + 0x8e, 0x3b, 0xc2, 0x06, 0x7a, 0x00, 0xe5, 0x31, 0xee, 0xb6, 0xdb, 0x4d, 0x3c, 0xad, 0xd6, 0xc7, + 0xdd, 0xe1, 0x40, 0x12, 0x36, 0xc5, 0x02, 0xe4, 0xfd, 0x24, 0x23, 0x2e, 0xa1, 0x14, 0xc9, 0x20, + 0xef, 0x1c, 0x2e, 0x9f, 0x87, 0xcf, 0xc1, 0xce, 0xe9, 0xa3, 0x5b, 0xd2, 0x43, 0xc7, 0xfe, 0x81, + 0x0a, 0x78, 0x47, 0xa4, 0x09, 0xe5, 0x58, 0xe6, 0x79, 0xaf, 0x93, 0xf6, 0x16, 0x0e, 0x69, 0x5a, + 0xc0, 0xf4, 0x68, 0x59, 0xb6, 0x67, 0x5e, 0xc9, 0x36, 0x4c, 0x79, 0xc6, 0x5c, 0x37, 0x4e, 0x70, + 0x5d, 0x98, 0x87, 0xbe, 0x86, 0x9c, 0xe5, 0x4e, 0x63, 0xd0, 0x85, 0x98, 0xf2, 0xe7, 0x5a, 0x4b, + 0xf3, 0x70, 0xb1, 0x2f, 0x2a, 0xfe, 0x5b, 0x16, 0x8a, 0xe1, 0x4f, 0xb4, 0xc4, 0xd4, 0x83, 0x35, + 0x18, 0x4d, 0xcb, 0x44, 0x55, 0xb3, 0x68, 0xdd, 0xa7, 0xba, 0x47, 0xd8, 0x1f, 0xd3, 0xb8, 0x34, + 0xc9, 0xcc, 0x99, 0xcb, 0xb6, 0x61, 0xde, 0xb0, 0x13, 0x92, 0xc7, 0x21, 0x0e, 0xfa, 0x1e, 0x8a, + 0x6f, 0x0d, 0xf3, 0x8d, 0xa6, 0xcf, 0xa6, 0x0b, 0x43, 0xe5, 0x95, 0xe4, 0x4e, 0x2c, 0x77, 0x53, + 0x05, 0xce, 0xb9, 0x50, 0xdf, 0x50, 0x09, 0x2e, 0xbc, 0x0d, 0x06, 0xe8, 0x25, 0xe4, 0x65, 0xc7, + 0xbe, 0xe2, 0xb3, 0x37, 0x13, 0xdc, 0x42, 0x67, 0x57, 0x1d, 0xfb, 0x8a, 0x4d, 0xcd, 0xc9, 0x2e, + 0x45, 0xab, 0x5e, 0xe5, 0x4a, 0xd6, 0x75, 0x32, 0x67, 0x85, 0x64, 0x09, 0x7b, 0x43, 0x74, 0x02, + 0x5b, 0xf2, 0x72, 0x5a, 0x93, 0x24, 0xb7, 0x08, 0x7c, 0x78, 0x0b, 0xae, 0x26, 0x49, 0xf5, 0xcb, + 0x19, 0xde, 0x94, 0x97, 0x35, 0x49, 0x42, 0xdf, 0x43, 0x59, 0x99, 0x6b, 0x44, 0xb7, 0xe9, 0x9c, + 0xe9, 0x5c, 0xb3, 0xec, 0x4a, 0x8e, 0x95, 0xee, 0x2b, 0x27, 0x96, 0xb8, 0x7c, 0x4d, 0x92, 0x7a, + 0x9a, 0x65, 0xa3, 0xc7, 0xec, 0x22, 0x27, 0x53, 0xcb, 0xd2, 0x54, 0x56, 0xcd, 0xe5, 0x70, 0x8e, + 0x32, 0x24, 0x4b, 0x53, 0x69, 0xee, 0xd3, 0xc9, 0x4f, 0x0b, 0x43, 0x67, 0x35, 0x4b, 0x0e, 0xbb, + 0x23, 0xf1, 0x3f, 0xd2, 0x90, 0x67, 0x9e, 0xb1, 0xe9, 0xe9, 0x3d, 0x81, 0x0d, 0x66, 0x00, 0x1e, + 0xc5, 0x87, 0xb7, 0x5d, 0x4b, 0xa5, 0x98, 0x05, 0x98, 0x5c, 0x78, 0xf7, 0x99, 0xe8, 0xee, 0x11, + 0x6c, 0x30, 0x3d, 0xb8, 0xab, 0x18, 0x8d, 0xea, 0x50, 0x56, 0x1c, 0xd3, 0x24, 0xba, 0x1f, 0x7a, + 0xcc, 0x4f, 0x6b, 0x63, 0x28, 0x3e, 0x43, 0x3c, 0x05, 0x08, 0x4c, 0x40, 0x97, 0x91, 0xa4, 0x6e, + 0xc3, 0x8b, 0x23, 0x4a, 0x23, 0x01, 0xb2, 0x23, 0xe9, 0xb5, 0xfb, 0x7a, 0xa1, 0xa4, 0xf8, 0x11, + 0x94, 0x24, 0xdb, 0xa4, 0xae, 0x26, 0x96, 0x45, 0x43, 0x5d, 0x80, 0xec, 0xc2, 0x9a, 0xb9, 0xb3, + 0x28, 0x29, 0x7e, 0x01, 0x28, 0x22, 0x52, 0x35, 0x4d, 0xf9, 0x86, 0x86, 0xe4, 0xc2, 0x9a, 0x31, + 0x9a, 0xbd, 0xa3, 0xf2, 0xd8, 0x1f, 0x8b, 0x27, 0x50, 0x6c, 0x5e, 0x13, 0xdd, 0x76, 0x4f, 0x13, + 0x0d, 0x51, 0xea, 0x34, 0xa2, 0xd3, 0x3c, 0xc4, 0xa0, 0xb3, 0x38, 0xc4, 0x11, 0x65, 0x00, 0x26, + 0xcf, 0x0e, 0x36, 0x3a, 0x84, 0x6d, 0xdb, 0x62, 0x0b, 0x72, 0x2d, 0x3a, 0x29, 0xec, 0x31, 0xd0, + 0x01, 0x6c, 0xda, 0x17, 0x86, 0xc1, 0x6d, 0x9a, 0xeb, 0xa4, 0x30, 0x1f, 0xa2, 0x0a, 0x6c, 0xd9, + 0x9a, 0x6e, 0xbf, 0x3c, 0x63, 0x56, 0xcd, 0xd2, 0x4a, 0x90, 0x8f, 0x6b, 0x9b, 0x90, 0xbd, 0x96, + 0xe7, 0x62, 0x0f, 0x36, 0xd9, 0x12, 0xd4, 0x2c, 0x76, 0xa0, 0x05, 0xa3, 0xd1, 0xe7, 0xfe, 0xed, + 0x97, 0x49, 0x08, 0xab, 0x40, 0x35, 0xff, 0x5a, 0xfc, 0x13, 0xec, 0xd1, 0xb3, 0xdf, 0xd0, 0xcc, + 0xa1, 0xd9, 0xd2, 0xe6, 0xc4, 0xdb, 0xa8, 0x00, 0x59, 0x55, 0xf3, 0xaa, 0x05, 0x4a, 0xd2, 0xe0, + 0x5a, 0x9a, 0xe4, 0x52, 0xfb, 0xc9, 0x35, 0xba, 0x3b, 0xa2, 0x26, 0x31, 0xf4, 0xf9, 0x4d, 0xcb, + 0x98, 0xd3, 0x6b, 0x99, 0x3f, 0xfd, 0x42, 0x1c, 0x7a, 0x7d, 0xc5, 0x56, 0xb0, 0x96, 0x86, 0x6e, + 0x11, 0x7e, 0xdc, 0x2d, 0x67, 0x6e, 0x8f, 0x64, 0xfb, 0xca, 0xbb, 0x86, 0x02, 0x8e, 0xf8, 0xaf, + 0x69, 0x28, 0x63, 0x22, 0xab, 0x61, 0xb5, 0xbe, 0x86, 0xad, 0x4b, 0xbe, 0x50, 0x3a, 0xe1, 0xfe, + 0xad, 0x2a, 0x0a, 0xb1, 0x2c, 0xed, 0x62, 0x4e, 0xf8, 0xda, 0xd8, 0x15, 0xa6, 0x2e, 0xbe, 0xd4, + 0xe6, 0x44, 0x0f, 0x1e, 0xbc, 0xfe, 0x98, 0x66, 0x51, 0x8b, 0xde, 0x8f, 0xdc, 0xde, 0x98, 0x0f, + 0xe8, 0xfe, 0xe7, 0x44, 0x67, 0xa1, 0x9b, 0xc5, 0x94, 0x14, 0x1b, 0x20, 0x04, 0xda, 0xb8, 0x5b, + 0x78, 0x02, 0x79, 0x93, 0xc8, 0x6a, 0xdd, 0x70, 0x74, 0xdb, 0xf5, 0x43, 0xc0, 0xa0, 0x0e, 0x52, + 0x65, 0x5b, 0x66, 0x2b, 0x16, 0x31, 0xa3, 0xc5, 0xff, 0x4c, 0x83, 0x70, 0x6e, 0x6a, 0x36, 0xf9, + 0x99, 0x77, 0x75, 0x40, 0x13, 0xd3, 0x92, 0x56, 0xb8, 0xdc, 0x23, 0xee, 0x88, 0xe6, 0xff, 0x85, + 0x63, 0xd9, 0x03, 0xc3, 0x6e, 0xfe, 0x44, 0xb3, 0x0f, 0x7f, 0x8d, 0x47, 0x78, 0xbe, 0xde, 0x9b, + 0x21, 0xbd, 0x3f, 0x85, 0x32, 0xd5, 0xb8, 0xab, 0x5f, 0x1a, 0x9e, 0xd6, 0x08, 0x36, 0x96, 0x81, + 0xe7, 0x18, 0x2d, 0xfe, 0x19, 0x84, 0x40, 0xcc, 0x35, 0x52, 0xd2, 0x35, 0x40, 0x33, 0x87, 0xf6, + 0x8f, 0x5c, 0xed, 0x2c, 0x66, 0x34, 0xe5, 0xb1, 0xbc, 0x94, 0x65, 0x49, 0xc6, 0xcf, 0x3d, 0x0b, + 0x43, 0x1d, 0x6b, 0x0b, 0xe2, 0xba, 0xc2, 0x1b, 0x52, 0xb7, 0x69, 0x56, 0x43, 0x33, 0x99, 0x96, + 0x39, 0xcc, 0x07, 0xe2, 0xdf, 0x81, 0xe0, 0xd7, 0x39, 0xa1, 0x33, 0xcb, 0x8b, 0x9b, 0x70, 0x9c, + 0x05, 0x1c, 0xf4, 0x19, 0xec, 0xd8, 0xda, 0x82, 0x18, 0x8e, 0x2d, 0x11, 0xc5, 0xd0, 0x55, 0xcb, + 0x4d, 0x73, 0x31, 0xae, 0xf8, 0x0c, 0x8a, 0x3e, 0xf6, 0x2b, 0xe3, 0x22, 0xde, 0x1b, 0x11, 0x3f, + 0x09, 0xad, 0xfd, 0xca, 0xb8, 0x60, 0xe9, 0x5a, 0x80, 0xac, 0xa6, 0xf2, 0xf6, 0x4c, 0x09, 0x53, + 0x52, 0xfc, 0x01, 0x2a, 0x9d, 0x6e, 0x03, 0x3b, 0xba, 0xae, 0xe9, 0xb3, 0x57, 0xc6, 0x05, 0xcb, + 0xb6, 0x98, 0x45, 0x7d, 0x08, 0x31, 0xcb, 0xba, 0x2d, 0x08, 0x36, 0xae, 0x17, 0x5d, 0xd5, 0xb3, + 0x12, 0xa5, 0xa9, 0x63, 0x2d, 0xc3, 0x31, 0x15, 0xe2, 0x66, 0x5d, 0x77, 0x24, 0xfe, 0x19, 0xca, + 0xa1, 0x9d, 0x33, 0xb8, 0x5f, 0x42, 0xf6, 0x47, 0xe3, 0x82, 0xe1, 0xc5, 0xd3, 0x6f, 0x58, 0x51, + 0x4c, 0xa5, 0xa8, 0x95, 0x34, 0xab, 0xa5, 0xe9, 0x9a, 0x75, 0xe5, 0x5f, 0xcd, 0x21, 0x4e, 0x70, + 0x5a, 0x5f, 0x59, 0x86, 0x1e, 0x5c, 0xce, 0x1e, 0x47, 0x3c, 0x81, 0x42, 0xaf, 0xd9, 0xf0, 0xef, + 0xfe, 0xe7, 0x50, 0xb8, 0x98, 0x6b, 0xfa, 0x9b, 0xa9, 0xe2, 0x9f, 0x8d, 0x12, 0x06, 0xc6, 0x62, + 0x87, 0x43, 0xfc, 0x9f, 0x0d, 0xd8, 0xe1, 0x6f, 0x1e, 0x7f, 0x4e, 0x05, 0xb6, 0x89, 0xce, 0x4b, + 0x83, 0x34, 0x6f, 0x2e, 0xb9, 0x43, 0x6a, 0xc6, 0x6b, 0x4d, 0xf5, 0xb2, 0xfd, 0xb5, 0xc6, 0x38, + 0x4b, 0xff, 0xe6, 0xa1, 0x24, 0x8b, 0x6c, 0x59, 0x77, 0x2e, 0x65, 0xc5, 0x76, 0x4c, 0x62, 0xb2, + 0x78, 0xc9, 0xe3, 0x08, 0x8f, 0xae, 0xb0, 0x34, 0x0d, 0xd5, 0x51, 0x6c, 0x16, 0x36, 0x79, 0xec, + 0x0d, 0x99, 0x59, 0x89, 0xa9, 0xc9, 0xfc, 0x86, 0xa7, 0x66, 0x65, 0x23, 0xf4, 0x0c, 0x0a, 0x8e, + 0x45, 0xa6, 0xf5, 0x46, 0x7d, 0xda, 0xac, 0xf7, 0xd9, 0x2d, 0x9f, 0xc3, 0x79, 0xc7, 0x22, 0xf5, + 0x46, 0xbd, 0x59, 0xef, 0xd3, 0xfb, 0x98, 0x7e, 0xc7, 0x83, 0x46, 0x57, 0x62, 0xdd, 0x9a, 0x1c, + 0xce, 0x39, 0x16, 0x61, 0x63, 0x74, 0x04, 0x02, 0xfd, 0xd8, 0xe9, 0x36, 0xa6, 0xaf, 0x9b, 0xbf, + 0xaf, 0x0d, 0xab, 0xb8, 0xe1, 0xde, 0xd9, 0x3b, 0x8e, 0x45, 0x3a, 0xdd, 0x86, 0xc7, 0x45, 0x22, + 0x94, 0x3c, 0xc9, 0xfe, 0x70, 0x22, 0x35, 0x59, 0x63, 0x25, 0x87, 0x0b, 0x5c, 0x8c, 0xb1, 0x3c, + 0x55, 0xa8, 0x0c, 0xae, 0x9e, 0xb3, 0xb6, 0x09, 0x57, 0x85, 0xc6, 0x53, 0xf5, 0x1c, 0x3d, 0x84, + 0x6d, 0xfa, 0x7d, 0xd2, 0x97, 0x58, 0x0b, 0x24, 0x87, 0xb7, 0x1c, 0x8b, 0x4c, 0xfa, 0x12, 0x7a, + 0x0a, 0x40, 0x3f, 0x48, 0x4d, 0xdc, 0xad, 0xf6, 0xdc, 0xd2, 0x80, 0xce, 0xe3, 0x0c, 0xf4, 0x0a, + 0x76, 0x4c, 0x5d, 0xd5, 0xac, 0xa9, 0x5f, 0xf4, 0xf1, 0xfe, 0xc4, 0xc7, 0xd1, 0x8a, 0x35, 0xe2, + 0xab, 0xa6, 0x7d, 0x45, 0x4c, 0x9d, 0xd8, 0xb8, 0xc4, 0xa6, 0xfa, 0x2e, 0xec, 0x83, 0xa0, 0xa8, + 0xca, 0x94, 0x28, 0x8b, 0x00, 0xad, 0x7c, 0x7f, 0xb4, 0x1d, 0x45, 0x55, 0x9a, 0xca, 0xc2, 0x87, + 0xab, 0x42, 0xd1, 0x59, 0x84, 0x14, 0xe3, 0x9d, 0x8b, 0x67, 0x6b, 0xa0, 0x26, 0x7d, 0x09, 0x17, + 0x9c, 0x85, 0xaf, 0x91, 0x38, 0x82, 0x83, 0xe4, 0xc5, 0x58, 0x29, 0x65, 0x58, 0xf6, 0x54, 0x56, + 0x55, 0xef, 0xa2, 0xcb, 0x51, 0x46, 0x55, 0x55, 0x4d, 0xf4, 0x08, 0x72, 0x2a, 0xb9, 0xe6, 0xdf, + 0x78, 0xd8, 0x6d, 0xab, 0xe4, 0x9a, 0x7e, 0x12, 0x7f, 0x0b, 0xbb, 0xb7, 0xd6, 0xa4, 0xe9, 0x48, + 0x51, 0x4d, 0x63, 0xe1, 0x46, 0x2e, 0x1f, 0xd0, 0x03, 0x4c, 0x33, 0xb2, 0xd7, 0x64, 0xa5, 0xb4, + 0xf8, 0x2f, 0x69, 0x78, 0xe6, 0x6f, 0xf8, 0xfd, 0x8b, 0xf4, 0xda, 0xad, 0x22, 0x3d, 0xda, 0xd5, + 0xf3, 0x96, 0xe8, 0xea, 0x36, 0x31, 0x2f, 0x65, 0x85, 0x24, 0x54, 0xec, 0x53, 0xf8, 0x88, 0x3f, + 0xc2, 0x88, 0xba, 0x52, 0x1c, 0x7d, 0x07, 0x1b, 0xac, 0x4e, 0xe5, 0x2d, 0xe6, 0xfb, 0x2e, 0xc2, + 0xe6, 0x88, 0xff, 0x9c, 0x85, 0x47, 0xab, 0x91, 0x93, 0x2e, 0x86, 0xef, 0xdd, 0x4b, 0x80, 0x3f, + 0x9a, 0x7e, 0x79, 0xbf, 0xd5, 0x4e, 0x42, 0xd5, 0x2a, 0xcd, 0x63, 0x4b, 0xea, 0x27, 0x62, 0x59, + 0x67, 0x5e, 0x9e, 0x0a, 0x38, 0xf4, 0xd2, 0xd4, 0x89, 0xbd, 0x90, 0xad, 0x37, 0x67, 0x6e, 0x8a, + 0xf0, 0xc7, 0xe1, 0x04, 0xb4, 0x19, 0x4d, 0x40, 0x43, 0x40, 0xea, 0x95, 0xb2, 0x94, 0x88, 0x79, + 0x4d, 0x4c, 0xbf, 0xb0, 0xe5, 0x5d, 0xe5, 0xe7, 0x11, 0x25, 0x1b, 0x9d, 0xfa, 0x28, 0x2a, 0x86, + 0x13, 0xa6, 0xa2, 0x4f, 0xa0, 0xe4, 0xb9, 0xa1, 0xab, 0x4f, 0x2c, 0xe2, 0x66, 0x96, 0x28, 0x53, + 0xac, 0xc3, 0x06, 0x7b, 0x80, 0x00, 0x6c, 0xf5, 0xab, 0x83, 0x49, 0xb5, 0x27, 0xa4, 0x50, 0x19, + 0x0a, 0x74, 0x8d, 0x69, 0xbd, 0xd7, 0x6d, 0x0e, 0xc6, 0x42, 0xda, 0x67, 0x48, 0x4d, 0xfc, 0x43, + 0x13, 0x0b, 0x19, 0xfa, 0xd6, 0x9d, 0x0c, 0xfa, 0xd5, 0x41, 0xb5, 0xdd, 0x6c, 0x08, 0x59, 0xf1, + 0xff, 0xb3, 0x80, 0x6e, 0x6b, 0x15, 0x94, 0xb2, 0x23, 0xc3, 0xf4, 0x13, 0x74, 0xc0, 0x41, 0x47, + 0x50, 0xe6, 0x23, 0xdf, 0xdc, 0x6e, 0x18, 0xc7, 0xd9, 0xac, 0xbf, 0x44, 0x64, 0x8b, 0x95, 0x34, + 0xae, 0xc5, 0x03, 0x06, 0x3a, 0x06, 0x41, 0x37, 0x6c, 0xfa, 0xaa, 0x32, 0x4c, 0xcd, 0x96, 0xd9, + 0x0f, 0x04, 0xbc, 0xea, 0xb8, 0xc5, 0x47, 0x27, 0x80, 0x54, 0x63, 0x60, 0xd8, 0x35, 0x4d, 0x57, + 0x83, 0x65, 0xb9, 0x2f, 0x12, 0xbe, 0xd0, 0xab, 0x5b, 0x91, 0xe7, 0xf3, 0x0b, 0x59, 0x79, 0xe3, + 0xf6, 0x36, 0x79, 0xf6, 0x8e, 0x71, 0xd1, 0x19, 0x6c, 0x99, 0xb2, 0x3e, 0x23, 0x56, 0x65, 0x9b, + 0x45, 0xf1, 0x93, 0x15, 0x2e, 0xc3, 0x54, 0x08, 0xbb, 0xb2, 0xa8, 0x05, 0xdb, 0xc6, 0x92, 0xff, + 0xbe, 0xc2, 0x1f, 0x69, 0x7f, 0x7d, 0x87, 0xa7, 0x4f, 0x86, 0x5c, 0xbc, 0xa9, 0xdb, 0xe6, 0x0d, + 0xf6, 0x26, 0xa3, 0x3a, 0x14, 0x2c, 0xba, 0x41, 0xa5, 0x63, 0x58, 0xb6, 0x55, 0xc9, 0x33, 0xac, + 0x8f, 0x56, 0x61, 0xf9, 0x92, 0x38, 0x3c, 0xeb, 0xf0, 0x3b, 0x28, 0x86, 0xd1, 0xe9, 0x05, 0xf8, + 0x86, 0xdc, 0xb8, 0x7e, 0xa3, 0x64, 0xb4, 0x1d, 0x90, 0x77, 0xdb, 0x01, 0xdf, 0x65, 0xbe, 0x4d, + 0x8b, 0x06, 0x94, 0x63, 0x7b, 0x64, 0xd7, 0x39, 0x25, 0x7a, 0xc6, 0x5b, 0xbf, 0x29, 0x18, 0xe2, + 0xf8, 0xdf, 0x27, 0xcb, 0x25, 0xf1, 0x32, 0x60, 0x88, 0xe3, 0xfb, 0x9c, 0x95, 0x66, 0x61, 0x9f, + 0x53, 0x86, 0xf8, 0x2d, 0xec, 0x25, 0xed, 0x88, 0x3d, 0xc9, 0x64, 0xc5, 0x7f, 0x92, 0xc9, 0x0a, + 0x2b, 0x79, 0x96, 0x2e, 0x7e, 0x46, 0x5b, 0x8a, 0xdb, 0xb0, 0xd9, 0x5c, 0x2c, 0xed, 0x9b, 0xe3, + 0x5f, 0x81, 0x10, 0x6f, 0xa7, 0xa1, 0x2d, 0xc8, 0x4c, 0x46, 0x42, 0x0a, 0xe5, 0x60, 0xa3, 0x31, + 0x3c, 0x1f, 0x08, 0x69, 0xb4, 0x0d, 0xd9, 0x61, 0xab, 0x25, 0x64, 0x8e, 0x3f, 0x07, 0x08, 0xda, + 0x67, 0xf4, 0xbc, 0xe0, 0xae, 0xd4, 0x1d, 0xb4, 0x79, 0x67, 0xa8, 0x55, 0xed, 0xf5, 0xe8, 0x80, + 0x75, 0x86, 0x6a, 0xc3, 0x71, 0x47, 0xc8, 0x1c, 0xff, 0x6f, 0x1a, 0xb6, 0xdd, 0x9e, 0x0d, 0xca, + 0xc3, 0xe6, 0x60, 0xd2, 0x9f, 0x7e, 0x29, 0xa4, 0x3c, 0xf2, 0x54, 0x48, 0x7b, 0xe4, 0x57, 0x42, + 0xc6, 0x23, 0xcf, 0x84, 0xac, 0x47, 0x7e, 0x2d, 0x6c, 0x78, 0xe4, 0x4b, 0x61, 0xd3, 0x23, 0xbf, + 0x11, 0xb6, 0x3c, 0xf2, 0x5b, 0x61, 0xdb, 0x23, 0x7f, 0x2d, 0xe4, 0xa8, 0x46, 0x6c, 0x89, 0x2f, + 0x84, 0xbc, 0x4f, 0x7f, 0x29, 0x80, 0x4f, 0x9f, 0x0a, 0x05, 0x9f, 0xfe, 0x4a, 0x28, 0xfa, 0xf4, + 0x99, 0x50, 0xf2, 0xe9, 0xaf, 0x85, 0x1d, 0x9f, 0x7e, 0x29, 0x94, 0x7d, 0xfa, 0x1b, 0x41, 0xf0, + 0xe9, 0x6f, 0x85, 0x5d, 0x9f, 0xfe, 0xb5, 0x80, 0x3c, 0xfa, 0xf4, 0x0b, 0xe1, 0xc1, 0xf1, 0xaf, + 0xa0, 0x18, 0xee, 0x3b, 0x51, 0xe3, 0xf5, 0x86, 0xe7, 0xdc, 0x9e, 0x9d, 0x6e, 0xbb, 0x23, 0xa4, + 0xa9, 0xf8, 0x78, 0xd8, 0x6e, 0xf7, 0x9a, 0x42, 0xe6, 0xb8, 0x01, 0xe5, 0x58, 0x37, 0x85, 0xda, + 0x72, 0x32, 0x78, 0x3d, 0xa0, 0xb6, 0x4f, 0x51, 0x6f, 0x54, 0x47, 0xdc, 0x07, 0xd2, 0xb8, 0x2a, + 0x64, 0xd0, 0x03, 0x28, 0x4b, 0xe3, 0xea, 0xb4, 0x55, 0xed, 0xf6, 0x86, 0x3f, 0x34, 0xf1, 0xb4, + 0x3a, 0x12, 0xb2, 0xc7, 0x0d, 0x28, 0x45, 0x9a, 0x0a, 0x68, 0x1f, 0x76, 0xa9, 0xd4, 0x60, 0x38, + 0x9e, 0xd6, 0x87, 0x83, 0x41, 0xb3, 0x3e, 0x6e, 0x36, 0xb8, 0xe1, 0xab, 0xa3, 0xe9, 0x84, 0x02, + 0xee, 0x42, 0x89, 0x4a, 0x04, 0x5f, 0x33, 0xc7, 0x9f, 0xf1, 0xd6, 0x92, 0xd7, 0x9b, 0x41, 0x45, + 0xc8, 0x9d, 0x8f, 0xaa, 0xa7, 0xd3, 0x91, 0xf4, 0x9a, 0xeb, 0x3f, 0x1c, 0x35, 0x07, 0x42, 0xfa, + 0xf8, 0x6f, 0x40, 0x88, 0x3f, 0x97, 0xa8, 0x7e, 0xe3, 0x3e, 0x0d, 0x1b, 0x01, 0x8a, 0xb5, 0xaa, + 0xd4, 0x99, 0x4a, 0x75, 0xdc, 0x1d, 0x8d, 0x25, 0x9e, 0x3a, 0x69, 0x39, 0xe5, 0x31, 0x32, 0xa7, + 0xff, 0xfe, 0x14, 0xb6, 0x46, 0x67, 0xe7, 0x83, 0xd1, 0x97, 0xa8, 0x0f, 0x95, 0x36, 0xb1, 0xbd, + 0xfb, 0x31, 0x72, 0xe3, 0x23, 0x14, 0xbd, 0x97, 0x68, 0xc0, 0x1e, 0x3e, 0x5e, 0x53, 0x95, 0x88, + 0x29, 0xd4, 0x81, 0x07, 0x1c, 0xeb, 0x83, 0x91, 0x5a, 0xb0, 0xdb, 0x26, 0x76, 0xac, 0x76, 0x7e, + 0x0f, 0x9c, 0x21, 0xec, 0x4a, 0xb7, 0x70, 0xd6, 0xcd, 0xb9, 0x0b, 0xf0, 0x77, 0xb0, 0xd3, 0x26, + 0x76, 0xf8, 0x15, 0x90, 0xa4, 0x55, 0x25, 0xc2, 0x0b, 0x49, 0x73, 0x04, 0x29, 0x8a, 0xb0, 0x52, + 0xfa, 0x30, 0x01, 0x5b, 0x4c, 0xa1, 0x06, 0x14, 0xfb, 0xf4, 0x7d, 0x31, 0xe9, 0x4b, 0xec, 0xf6, + 0xb9, 0xa3, 0x56, 0x5c, 0x81, 0xd2, 0x67, 0x4f, 0x3d, 0xec, 0xe8, 0xee, 0xfd, 0xf1, 0x34, 0xf9, + 0xf1, 0xe4, 0x96, 0x6f, 0x87, 0x4f, 0x56, 0x7d, 0xa6, 0xaf, 0x23, 0x06, 0x57, 0x0e, 0xc3, 0xd1, + 0xc7, 0xe3, 0x1d, 0x88, 0xab, 0x5f, 0x6b, 0x62, 0x0a, 0x61, 0xd8, 0xef, 0x74, 0x1b, 0x6d, 0x62, + 0x07, 0x4f, 0x38, 0xfe, 0xe0, 0x5b, 0x3d, 0xeb, 0x4e, 0x15, 0x9b, 0x80, 0x3a, 0xdd, 0x46, 0x5d, + 0xd6, 0x15, 0x32, 0x0f, 0xb4, 0x5c, 0x03, 0x98, 0x6c, 0xb8, 0x01, 0x3c, 0xe4, 0xaa, 0xb9, 0x0f, + 0x5c, 0x5f, 0x3e, 0x39, 0x16, 0x9e, 0xae, 0xc4, 0xa7, 0xaf, 0x67, 0x31, 0x85, 0x6a, 0x70, 0xe0, + 0xab, 0x55, 0x9d, 0xcf, 0xef, 0x80, 0x4b, 0xd6, 0xe9, 0x0f, 0x9e, 0xb9, 0x62, 0x8f, 0xee, 0x75, + 0xbb, 0xfb, 0x34, 0xfe, 0x29, 0xf1, 0xc1, 0xce, 0x14, 0x2c, 0xb4, 0x24, 0xbf, 0xa1, 0x13, 0x73, + 0x6b, 0xbc, 0xd1, 0xb3, 0x42, 0xc1, 0xd7, 0x00, 0x2d, 0xc9, 0xeb, 0x2d, 0xa1, 0xa8, 0xa7, 0x62, + 0x0d, 0xb0, 0x98, 0xc5, 0xe2, 0x0d, 0x29, 0xe6, 0x81, 0x52, 0x4b, 0x6a, 0x13, 0xdb, 0x6b, 0xc3, + 0xc4, 0xf0, 0x62, 0x4d, 0x9c, 0x18, 0x5e, 0xbc, 0x77, 0x23, 0xa6, 0xd0, 0x9f, 0x60, 0xbf, 0x25, + 0xd5, 0x4d, 0x22, 0xdb, 0x24, 0xd2, 0xc6, 0x43, 0xb1, 0x3f, 0x25, 0x24, 0x34, 0x11, 0x0f, 0xc5, + 0x75, 0x22, 0xfe, 0x0a, 0xbf, 0x83, 0x02, 0x6b, 0x4c, 0xf6, 0x58, 0x59, 0x19, 0xf3, 0x4a, 0xb8, + 0xfb, 0x1a, 0x37, 0x1f, 0xfd, 0x24, 0xa6, 0xbe, 0x48, 0xa3, 0x36, 0x14, 0x9a, 0xca, 0x95, 0xdf, + 0x98, 0x8a, 0xb6, 0xb4, 0x23, 0x1d, 0xdf, 0xc3, 0x35, 0xdf, 0xc4, 0x14, 0xea, 0x02, 0xe2, 0x49, + 0x3a, 0xf2, 0x3b, 0xc6, 0xea, 0xce, 0xf5, 0xe1, 0x41, 0x72, 0xf7, 0x5c, 0x4c, 0xa1, 0xdf, 0x40, + 0xb1, 0x4d, 0xec, 0xa0, 0xeb, 0x9e, 0x14, 0xaf, 0xab, 0x67, 0xb7, 0xe0, 0x80, 0x9b, 0xc3, 0x67, + 0xd6, 0xaf, 0x78, 0x51, 0xfa, 0x6e, 0x38, 0x18, 0x76, 0xe9, 0xa3, 0x92, 0x9c, 0x6b, 0x97, 0xc1, + 0x7e, 0x7e, 0x11, 0x13, 0x5f, 0xf5, 0x63, 0xd1, 0x8a, 0x70, 0x1d, 0xc1, 0x3e, 0xcd, 0x3d, 0x14, + 0x56, 0x8d, 0xe0, 0xae, 0xb3, 0xfb, 0x6a, 0x1b, 0x32, 0xc4, 0x8a, 0xfb, 0x63, 0xe0, 0xbb, 0x81, + 0xae, 0xde, 0x77, 0x1f, 0x1e, 0x31, 0x2c, 0xef, 0xfa, 0xbe, 0x37, 0x64, 0xf2, 0x96, 0x87, 0xdc, + 0x1d, 0x09, 0xea, 0x25, 0xb9, 0xe3, 0xf9, 0x6a, 0x7c, 0xfe, 0xab, 0x42, 0x0a, 0x4d, 0xe1, 0x39, + 0x57, 0x6d, 0xf5, 0xeb, 0xf8, 0x9e, 0x2f, 0xed, 0x15, 0x1a, 0x1b, 0xf0, 0x8b, 0x36, 0xb1, 0xab, + 0xf3, 0xf9, 0xdd, 0x0f, 0xfc, 0xa4, 0x2d, 0x9c, 0x44, 0x5f, 0x27, 0x77, 0x61, 0x88, 0x29, 0x34, + 0x87, 0x4f, 0x42, 0xe5, 0xd2, 0xea, 0xd5, 0xd6, 0x19, 0xff, 0x9e, 0x5b, 0x16, 0x53, 0x48, 0x81, + 0x67, 0xcc, 0x19, 0xab, 0xd7, 0x49, 0x6e, 0x1d, 0xbc, 0x53, 0xa0, 0xff, 0x08, 0xa2, 0x1f, 0xe8, + 0x3f, 0xf7, 0x86, 0x7e, 0x0f, 0x9f, 0x86, 0x8f, 0xc0, 0xfb, 0x2d, 0x97, 0xbc, 0x8d, 0xbf, 0x87, + 0x8f, 0x83, 0xe0, 0x7d, 0xb7, 0x30, 0xb8, 0x47, 0x24, 0x63, 0x78, 0x1c, 0xf2, 0xfb, 0xad, 0xbf, + 0x2a, 0xde, 0x7d, 0xeb, 0xc7, 0xa7, 0xb0, 0xd3, 0xf1, 0x94, 0x03, 0xc6, 0xbf, 0x61, 0xb2, 0x9c, + 0xd3, 0x77, 0xff, 0x7a, 0x84, 0xbb, 0x17, 0xf8, 0x03, 0x3c, 0x4a, 0x5e, 0xa0, 0xaa, 0xaa, 0x1f, + 0x0c, 0xfe, 0x47, 0x78, 0xb2, 0x4a, 0xfb, 0x85, 0x71, 0xfd, 0xe1, 0xca, 0x8f, 0xe1, 0x71, 0xe0, + 0xcf, 0xf8, 0xf7, 0xf7, 0xf6, 0x63, 0x0f, 0xf6, 0x19, 0xe2, 0x2d, 0x0f, 0xde, 0xa1, 0x6e, 0x72, + 0xcc, 0x5d, 0xc0, 0xc7, 0xe1, 0x70, 0x5e, 0xe5, 0xc7, 0x75, 0xc1, 0x7c, 0x0f, 0x3b, 0x3f, 0x5f, + 0xb7, 0x06, 0x75, 0xe5, 0x07, 0xe1, 0xf7, 0x61, 0x2f, 0xb0, 0xb3, 0x5f, 0x1d, 0xbe, 0xb7, 0x81, + 0x07, 0xb0, 0x1f, 0xc0, 0x05, 0xff, 0xe2, 0x79, 0x5f, 0xbc, 0x8b, 0x2d, 0xf6, 0x67, 0xe1, 0xaf, + 0xfe, 0x12, 0x00, 0x00, 0xff, 0xff, 0x59, 0x2e, 0x44, 0x8b, 0x3a, 0x2c, 0x00, 0x00, } diff --git a/proto/grpc.proto b/proto/grpc.proto index a277901..d99eca7 100644 --- a/proto/grpc.proto +++ b/proto/grpc.proto @@ -12,11 +12,6 @@ service P4WNP1 { rpc SetLEDSettings (LEDSettings) returns (Empty) { } rpc MountUMSFile (GadgetSettingsUMS) returns (Empty) { } - //Ethernet - rpc DeployEthernetInterfaceSettings (EthernetInterfaceSettings) returns (Empty) { } - rpc GetAllDeployedEthernetInterfaceSettings (Empty) returns (DeployedEthernetInterfaceSettings) { } - rpc GetDeployedEthernetInterfaceSettings (StringMessage) returns (EthernetInterfaceSettings) { } //StringMessage has to contain the interface name - //HIDScript / job management rpc HIDRunScript (HIDScriptRequest) returns (HIDScriptResult) { } rpc HIDRunScriptJob (HIDScriptRequest) returns (HIDScriptJob) { } @@ -27,8 +22,8 @@ service P4WNP1 { rpc HIDGetRunningJobState (HIDScriptJob) returns (HIDRunningJobStateResult) { } //FileSystem - rpc FSWriteFile (WriteFileRequest) returns (Empty) { } - rpc FSReadFile (ReadFileRequest) returns (ReadFileResponse) { } + rpc FSWriteFile (WriteFileRequest) returns (Empty) {} + rpc FSReadFile (ReadFileRequest) returns (ReadFileResponse) {} rpc FSGetFileInfo (FileInfoRequest) returns (FileInfoResponse) { } rpc FSCreateTempDirOrFile (TempDirOrFileRequest) returns (TempDirOrFileResponse) { } @@ -41,14 +36,27 @@ service P4WNP1 { // WiFi rpc DeployWiFiSettings (WiFiSettings) returns (WiFiState) {} rpc GetWiFiState (Empty) returns (WiFiState) {} - rpc ListenWiFiStateChanges (Empty) returns (WiFiState) {} - // ToDo: Template requests (store, load, listStored) + rpc ListenWiFiStateChanges (Empty) returns (WiFiState) {} //ToDo: Check usage + rpc StoreWifiSettings(WifiRequestSettingsStorage) returns (Empty) {} rpc GetStoredWifiSettings(StringMessage) returns (WiFiSettings) {} rpc DeployStoredWifiSettings(StringMessage) returns (WiFiState) {} rpc StoreDeployedWifiSettings(StringMessage) returns (Empty) {} rpc ListStoredWifiSettings(Empty) returns (StringMessageArray) {} + //Ethernet + rpc DeployEthernetInterfaceSettings (EthernetInterfaceSettings) returns (Empty) { } + rpc GetAllDeployedEthernetInterfaceSettings (Empty) returns (DeployedEthernetInterfaceSettings) { } + rpc GetDeployedEthernetInterfaceSettings (StringMessage) returns (EthernetInterfaceSettings) { } //StringMessage has to contain the interface name + + rpc StoreEthernetInterfaceSettings(EthernetRequestSettingsStorage) returns (Empty) {} + rpc GetStoredEthernetInterfaceSettings(StringMessage) returns (EthernetInterfaceSettings) {} + rpc DeployStoredEthernetInterfaceSettings(StringMessage) returns (Empty) {} + rpc ListStoredEthernetInterfaceSettings(Empty) returns (StringMessageArray) {} + //ToDo: Store&Load for EthernetInterfaceSettingsList (multiple interfaces) + + + // TriggerActions rpc GetDeployedTriggerActionSet(Empty) returns (TriggerActionSet) {} rpc DeployTriggerActionSetReplace(TriggerActionSet) returns (TriggerActionSet) {} // Replaces registered TriggerActions with given set, returns a set ONLY OF ADDED TriggerActions (with assigned IDs) @@ -193,10 +201,6 @@ message ActionGroupSend { int32 value = 2; } - - - - message WifiRequestSettingsStorage { string TemplateName = 1; WiFiSettings settings = 2; @@ -392,6 +396,12 @@ message GadgetSettingsUMS { /* End USB Gadget */ /* Ethernet Interface Settings */ +message EthernetRequestSettingsStorage { + string TemplateName = 1; + EthernetInterfaceSettings settings = 2; +} + + message DeployedEthernetInterfaceSettings { repeated EthernetInterfaceSettings list = 1; } diff --git a/service/rpc_server.go b/service/rpc_server.go index 77e6cce..210e640 100644 --- a/service/rpc_server.go +++ b/service/rpc_server.go @@ -30,6 +30,7 @@ var ( const ( cSTORE_PREFIX_WIFI_SETTINGS = "ws_" + cSTORE_PREFIX_ETHERNET_INTERFACE_SETTINGS = "eis_" cSTORE_PREFIX_TRIGGER_ACTION_SET = "tas_" ) @@ -136,8 +137,6 @@ func (s *server) DeployTriggerActionSetRemove(ctx context.Context, removeTas *pb return } - - func (s *server) Start() error { return nil } @@ -196,35 +195,6 @@ func (s *server) ListenWiFiStateChanges(ctx context.Context, empty *pb.Empty) (w panic("implement me") } -func (s *server) GetDeployedEthernetInterfaceSettings(ctx context.Context, req *pb.StringMessage) (resp *pb.EthernetInterfaceSettings, err error) { - if mi,err := s.rootSvc.SubSysNetwork.GetManagedInterface(req.Msg); err == nil { - return mi.GetState().CurrentSettings, nil - } else { - return nil, errors.New(fmt.Sprintf("No stored (or used) settings for ethernet interface '%s'", req.Msg)) - } - /* - if settings,exist := ServiceState.StoredNetworkSettings[req.Msg]; exist && settings.SettingsInUse { - return settings, nil - } else { - return nil, errors.New(fmt.Sprintf("No stored (or used) settings for ethernet interface '%s'", req.Msg)) - } - */ -} - -func (s *server) GetAllDeployedEthernetInterfaceSettings(ctx context.Context, empty *pb.Empty) (resp *pb.DeployedEthernetInterfaceSettings, err error) { - miList := s.rootSvc.SubSysNetwork.GetManagedInterfaceNames() - deployed := make([]*pb.EthernetInterfaceSettings,len(miList)) - for idx,name := range miList { - mi,err := s.rootSvc.SubSysNetwork.GetManagedInterface(name) - if err != nil { return nil,err } - deployed[idx] = mi.GetState().CurrentSettings - } - resp = &pb.DeployedEthernetInterfaceSettings{ - List: deployed, - } - return resp, nil -} - func (s *server) EchoRequest(ctx context.Context, req *pb.StringMessage) (resp *pb.StringMessage, err error) { return &pb.StringMessage{Msg:req.Msg}, nil } @@ -437,6 +407,34 @@ func (s *server) HIDGetScriptJobResult(ctx context.Context, sJob *pb.HIDScriptJo return scriptRes,nil } +func (s *server) GetDeployedEthernetInterfaceSettings(ctx context.Context, req *pb.StringMessage) (resp *pb.EthernetInterfaceSettings, err error) { + if mi,err := s.rootSvc.SubSysNetwork.GetManagedInterface(req.Msg); err == nil { + return mi.GetState().CurrentSettings, nil + } else { + return nil, errors.New(fmt.Sprintf("No stored (or used) settings for ethernet interface '%s'", req.Msg)) + } + /* + if settings,exist := ServiceState.StoredNetworkSettings[req.Msg]; exist && settings.SettingsInUse { + return settings, nil + } else { + return nil, errors.New(fmt.Sprintf("No stored (or used) settings for ethernet interface '%s'", req.Msg)) + } + */ +} + +func (s *server) GetAllDeployedEthernetInterfaceSettings(ctx context.Context, empty *pb.Empty) (resp *pb.DeployedEthernetInterfaceSettings, err error) { + miList := s.rootSvc.SubSysNetwork.GetManagedInterfaceNames() + deployed := make([]*pb.EthernetInterfaceSettings,len(miList)) + for idx,name := range miList { + mi,err := s.rootSvc.SubSysNetwork.GetManagedInterface(name) + if err != nil { return nil,err } + deployed[idx] = mi.GetState().CurrentSettings + } + resp = &pb.DeployedEthernetInterfaceSettings{ + List: deployed, + } + return resp, nil +} func (s *server) DeployEthernetInterfaceSettings(ctx context.Context, es *pb.EthernetInterfaceSettings) (empty *pb.Empty, err error) { log.Printf("Trying to deploy ethernet interface settings %v", es) @@ -453,6 +451,35 @@ func (s *server) DeployEthernetInterfaceSettings(ctx context.Context, es *pb.Eth return } +func (s *server) StoreEthernetInterfaceSettings(ctx context.Context, req *pb.EthernetRequestSettingsStorage) (empty *pb.Empty, err error) { + empty = &pb.Empty{} + ifName := req.Settings.Name + storageKey := cSTORE_PREFIX_ETHERNET_INTERFACE_SETTINGS + ifName + "_" + req.TemplateName + err = s.rootSvc.SubSysDataStore.Put(storageKey, req.Settings, true) + return +} + +func (s *server) GetStoredEthernetInterfaceSettings(ctx context.Context, m *pb.StringMessage) (eis *pb.EthernetInterfaceSettings, err error) { + eis = &pb.EthernetInterfaceSettings{} + err = s.rootSvc.SubSysDataStore.Get(cSTORE_PREFIX_ETHERNET_INTERFACE_SETTINGS + m.Msg, eis) + return +} + +func (s *server) DeployStoredEthernetInterfaceSettings(ctx context.Context, msg *pb.StringMessage) (empty *pb.Empty, err error) { + eis,err := s.GetStoredEthernetInterfaceSettings(ctx, msg) + if err != nil { return empty,err } + return s.DeployEthernetInterfaceSettings(ctx, eis) +} + +func (s *server) ListStoredEthernetInterfaceSettings(ctx context.Context, empty *pb.Empty) (messages *pb.StringMessageArray, err error) { + res,err := s.rootSvc.SubSysDataStore.KeysPrefix(cSTORE_PREFIX_ETHERNET_INTERFACE_SETTINGS, true) + if err != nil { return messages,err } + messages = &pb.StringMessageArray{ + MsgArray: res, + } + return +} + func (s *server) MountUMSFile(ctx context.Context, gsu *pb.GadgetSettingsUMS) (*pb.Empty, error) { log.Printf("Trying to mount iamge `%s` to UMS ...", gsu.File) err := MountUMSFile(gsu.File) diff --git a/web_client/hvueComponentWiFi.go b/web_client/hvueComponentWiFi.go index a4c9ff7..7a3bacb 100644 --- a/web_client/hvueComponentWiFi.go +++ b/web_client/hvueComponentWiFi.go @@ -17,10 +17,12 @@ func InitComponentsWiFi() { *js.Object ShowStoreModal bool `js:"showStoreModal"` ShowLoadModal bool `js:"showLoadModal"` + ShowDeployStoredModal bool `js:"showDeployStoredModal"` TemplateName string `js:"templateName"` }{Object: O()} data.ShowStoreModal = false data.ShowLoadModal = false + data.ShowDeployStoredModal = false data.TemplateName = "" return &data }), @@ -156,6 +158,11 @@ func InitComponentsWiFi() { println("Loading :", name.String()) vm.Get("$store").Call("dispatch", VUEX_ACTION_LOAD_WIFI_SETTINGS, name) }), + hvue.Method("deployStored", + func(vm *hvue.VM, name *js.Object) { + println("Loading :", name.String()) + vm.Get("$store").Call("dispatch", VUEX_ACTION_DEPLOY_STORED_WIFI_SETTINGS, name) + }), hvue.Computed("deploying", func(vm *hvue.VM) interface{} { return vm.Get("$store").Get("state").Get("deployingWifiSettings") @@ -171,6 +178,7 @@ const templateWiFi = `
+
@@ -189,8 +197,9 @@ const templateWiFi = ` - - + + + diff --git a/web_client/hvueComponentsNetwork.go b/web_client/hvueComponentsNetwork.go index 47d644b..320b6d4 100644 --- a/web_client/hvueComponentsNetwork.go +++ b/web_client/hvueComponentsNetwork.go @@ -30,10 +30,24 @@ func InitComponentsNetwork() { hvue.NewComponent( "network", hvue.Template(templateNetwork), + hvue.DataFunc(func(vm *hvue.VM) interface{} { + data := &struct { + *js.Object + CurrentInterface *jsEthernetInterfaceSettings `js:"current"` + ShowStoreModal bool `js:"showStoreModal"` + ShowLoadModal bool `js:"showLoadModal"` + ShowDeployStoredModal bool `js:"showDeployStoredModal"` + }{Object: O()} + data.CurrentInterface = &jsEthernetInterfaceSettings{Object: O()} + data.ShowStoreModal = false + data.ShowLoadModal = false + data.ShowDeployStoredModal = false + return data + }), + hvue.Computed("interfaces", func(vm *hvue.VM) interface{} { return vm.Get("$store").Get("state").Get("InterfaceSettings").Get("interfaces") }), - // converts interface array to array which could be used with Quasar q-select (every object item has label and value) hvue.Computed("selectOptionsInterface", func(vm *hvue.VM) interface{} { selectIf := js.Global.Get("Array").New() @@ -64,20 +78,53 @@ func InitComponentsNetwork() { hvue.Method("deploy", func(vm *hvue.VM, ifaceSettings *jsEthernetInterfaceSettings) { vm.Get("$store").Call("dispatch", VUEX_ACTION_DEPLOY_ETHERNET_INTERFACE_SETTINGS, ifaceSettings) }), + hvue.Method("updateStoredSettingsList", + func(vm *hvue.VM) { + vm.Store.Call("dispatch", VUEX_ACTION_UPDATE_STORED_ETHERNET_INTERFACE_SETTINGS_LIST) + }), + hvue.Method("store", + func(vm *hvue.VM, name *js.Object) { + sReq := NewEthernetRequestSettingsStorage() + sReq.TemplateName = name.String() + sReq.Settings = &jsEthernetInterfaceSettings{ + Object: vm.Get("current"), + } + println("Storing :", sReq) + vm.Get("$store").Call("dispatch", VUEX_ACTION_STORE_ETHERNET_INTERFACE_SETTINGS, sReq) + vm.Set("showStoreModal", false) + }), + hvue.Method("load", + func(vm *hvue.VM, name *js.Object) { + println("Loading :", name.String()) + vm.Get("$store").Call("dispatch", VUEX_ACTION_LOAD_ETHERNET_INTERFACE_SETTINGS, name) + }), + hvue.Method("deployStored", + func(vm *hvue.VM, name *js.Object) { + println("Loading :", name.String()) + vm.Get("$store").Call("dispatch", VUEX_ACTION_DEPLOY_STORED_ETHERNET_INTERFACE_SETTINGS, name) + }), + + hvue.Mounted(func(vm *hvue.VM) { + // update network interface + promise := vm.Store.Call("dispatch", VUEX_ACTION_UPDATE_ALL_ETHERNET_INTERFACE_SETTINGS) + + promise.Call("then", + func() { + println("Mounting network interface settings, try to select first interface") + // current" could be an empty settings object, set to first interface of computed property "interfaces" (if there is one) + interfaces := vm.Get("$store").Get("state").Get("InterfaceSettings").Get("interfaces") + if interfaces.Length() > 0 { + hvue.Set(vm, "current", interfaces.Index(0)) + println("... current is", vm.Get("current")) + } else { + println("... No interface found") + } + }, + func() { + println("error in THEN ") + }, + ) - hvue.DataFunc(func(vm *hvue.VM) interface{} { - data := &struct { - *js.Object - CurrentInterface *jsEthernetInterfaceSettings `js:"current"` - }{Object: O()} - data.CurrentInterface = &jsEthernetInterfaceSettings{Object: js.Undefined} - return data - }), - hvue.Created(func(vm *hvue.VM) { - // data field "current" is still undefined, set to first interface of computed property "interfaces" (if there is one) - if vm.Get("interfaces").Length() > 0 { - hvue.Set(vm, "current", vm.Get("interfaces").Index(0)) - } }), ) @@ -220,7 +267,12 @@ func InitComponentsNetwork() { const templateNetwork = ` + + + +
+
@@ -229,6 +281,10 @@ const templateNetwork = ` + + + + diff --git a/web_client/jsDataHandling.go b/web_client/jsDataHandling.go index 32af275..261b0f4 100644 --- a/web_client/jsDataHandling.go +++ b/web_client/jsDataHandling.go @@ -581,6 +581,34 @@ func NewWifiSettings() *jsWiFiSettings { } /* Network Settings */ +type jsEthernetRequestSettingsStorage struct { + *js.Object + TemplateName string `js:"TemplateName"` + Settings *jsEthernetInterfaceSettings `js:"Settings"` +} + +func (rs *jsEthernetRequestSettingsStorage) toGo() *pb.EthernetRequestSettingsStorage { + return &pb.EthernetRequestSettingsStorage{ + Settings: rs.Settings.toGo(), + TemplateName: rs.TemplateName, + } +} + +func (rs *jsEthernetRequestSettingsStorage) fromGo(src *pb.EthernetRequestSettingsStorage) { + rs.TemplateName = src.TemplateName + rs.Settings = &jsEthernetInterfaceSettings{Object:O()} + rs.Settings.fromGo(src.Settings) +} + +func NewEthernetRequestSettingsStorage() *jsEthernetRequestSettingsStorage { + res := &jsEthernetRequestSettingsStorage{Object:O()} + res.TemplateName = "" + res.Settings = &jsEthernetInterfaceSettings{Object:O()} + return res +} + + + type jsEthernetSettingsList struct { *js.Object Interfaces *js.Object `js:"interfaces"` //every object property represents an EthernetSettings struct, the key is the interface name @@ -596,6 +624,28 @@ func (isl *jsEthernetSettingsList) fromGo(src *pb.DeployedEthernetInterfaceSetti } } +func (isl *jsEthernetSettingsList) updateSingleInterface(updatedSettings *jsEthernetInterfaceSettings) { + //Options array (converted from map) + for i:=0; i