github.com/livekit/protocol@v1.16.1-0.20240517185851-47e4c6bba773/rpc/io.psrpc.go (about)

     1  // Code generated by protoc-gen-psrpc v0.5.1, DO NOT EDIT.
     2  // source: rpc/io.proto
     3  
     4  package rpc
     5  
     6  import (
     7  	"context"
     8  
     9  	"github.com/livekit/psrpc"
    10  	"github.com/livekit/psrpc/pkg/client"
    11  	"github.com/livekit/psrpc/pkg/info"
    12  	"github.com/livekit/psrpc/pkg/rand"
    13  	"github.com/livekit/psrpc/pkg/server"
    14  	"github.com/livekit/psrpc/version"
    15  )
    16  import google_protobuf "google.golang.org/protobuf/types/known/emptypb"
    17  import livekit2 "github.com/livekit/protocol/livekit"
    18  import livekit3 "github.com/livekit/protocol/livekit"
    19  
    20  var _ = version.PsrpcVersion_0_5
    21  
    22  // =======================
    23  // IOInfo Client Interface
    24  // =======================
    25  
    26  type IOInfoClient interface {
    27  	// egress
    28  	CreateEgress(ctx context.Context, req *livekit2.EgressInfo, opts ...psrpc.RequestOption) (*google_protobuf.Empty, error)
    29  
    30  	UpdateEgress(ctx context.Context, req *livekit2.EgressInfo, opts ...psrpc.RequestOption) (*google_protobuf.Empty, error)
    31  
    32  	GetEgress(ctx context.Context, req *GetEgressRequest, opts ...psrpc.RequestOption) (*livekit2.EgressInfo, error)
    33  
    34  	ListEgress(ctx context.Context, req *livekit2.ListEgressRequest, opts ...psrpc.RequestOption) (*livekit2.ListEgressResponse, error)
    35  
    36  	UpdateMetrics(ctx context.Context, req *UpdateMetricsRequest, opts ...psrpc.RequestOption) (*google_protobuf.Empty, error)
    37  
    38  	// ingress
    39  	CreateIngress(ctx context.Context, req *livekit3.IngressInfo, opts ...psrpc.RequestOption) (*google_protobuf.Empty, error)
    40  
    41  	GetIngressInfo(ctx context.Context, req *GetIngressInfoRequest, opts ...psrpc.RequestOption) (*GetIngressInfoResponse, error)
    42  
    43  	UpdateIngressState(ctx context.Context, req *UpdateIngressStateRequest, opts ...psrpc.RequestOption) (*google_protobuf.Empty, error)
    44  
    45  	// sip
    46  	GetSIPTrunkAuthentication(ctx context.Context, req *GetSIPTrunkAuthenticationRequest, opts ...psrpc.RequestOption) (*GetSIPTrunkAuthenticationResponse, error)
    47  
    48  	EvaluateSIPDispatchRules(ctx context.Context, req *EvaluateSIPDispatchRulesRequest, opts ...psrpc.RequestOption) (*EvaluateSIPDispatchRulesResponse, error)
    49  }
    50  
    51  // ===========================
    52  // IOInfo ServerImpl Interface
    53  // ===========================
    54  
    55  type IOInfoServerImpl interface {
    56  	// egress
    57  	CreateEgress(context.Context, *livekit2.EgressInfo) (*google_protobuf.Empty, error)
    58  
    59  	UpdateEgress(context.Context, *livekit2.EgressInfo) (*google_protobuf.Empty, error)
    60  
    61  	GetEgress(context.Context, *GetEgressRequest) (*livekit2.EgressInfo, error)
    62  
    63  	ListEgress(context.Context, *livekit2.ListEgressRequest) (*livekit2.ListEgressResponse, error)
    64  
    65  	UpdateMetrics(context.Context, *UpdateMetricsRequest) (*google_protobuf.Empty, error)
    66  
    67  	// ingress
    68  	CreateIngress(context.Context, *livekit3.IngressInfo) (*google_protobuf.Empty, error)
    69  
    70  	GetIngressInfo(context.Context, *GetIngressInfoRequest) (*GetIngressInfoResponse, error)
    71  
    72  	UpdateIngressState(context.Context, *UpdateIngressStateRequest) (*google_protobuf.Empty, error)
    73  
    74  	// sip
    75  	GetSIPTrunkAuthentication(context.Context, *GetSIPTrunkAuthenticationRequest) (*GetSIPTrunkAuthenticationResponse, error)
    76  
    77  	EvaluateSIPDispatchRules(context.Context, *EvaluateSIPDispatchRulesRequest) (*EvaluateSIPDispatchRulesResponse, error)
    78  }
    79  
    80  // =======================
    81  // IOInfo Server Interface
    82  // =======================
    83  
    84  type IOInfoServer interface {
    85  
    86  	// Close and wait for pending RPCs to complete
    87  	Shutdown()
    88  
    89  	// Close immediately, without waiting for pending RPCs
    90  	Kill()
    91  }
    92  
    93  // =============
    94  // IOInfo Client
    95  // =============
    96  
    97  type iOInfoClient struct {
    98  	client *client.RPCClient
    99  }
   100  
   101  // NewIOInfoClient creates a psrpc client that implements the IOInfoClient interface.
   102  func NewIOInfoClient(bus psrpc.MessageBus, opts ...psrpc.ClientOption) (IOInfoClient, error) {
   103  	sd := &info.ServiceDefinition{
   104  		Name: "IOInfo",
   105  		ID:   rand.NewClientID(),
   106  	}
   107  
   108  	sd.RegisterMethod("CreateEgress", false, false, true, true)
   109  	sd.RegisterMethod("UpdateEgress", false, false, true, true)
   110  	sd.RegisterMethod("GetEgress", false, false, true, true)
   111  	sd.RegisterMethod("ListEgress", false, false, true, true)
   112  	sd.RegisterMethod("UpdateMetrics", false, false, true, true)
   113  	sd.RegisterMethod("CreateIngress", false, false, true, true)
   114  	sd.RegisterMethod("GetIngressInfo", false, false, true, true)
   115  	sd.RegisterMethod("UpdateIngressState", false, false, true, true)
   116  	sd.RegisterMethod("GetSIPTrunkAuthentication", false, false, true, true)
   117  	sd.RegisterMethod("EvaluateSIPDispatchRules", false, false, true, true)
   118  
   119  	rpcClient, err := client.NewRPCClient(sd, bus, opts...)
   120  	if err != nil {
   121  		return nil, err
   122  	}
   123  
   124  	return &iOInfoClient{
   125  		client: rpcClient,
   126  	}, nil
   127  }
   128  
   129  func (c *iOInfoClient) CreateEgress(ctx context.Context, req *livekit2.EgressInfo, opts ...psrpc.RequestOption) (*google_protobuf.Empty, error) {
   130  	return client.RequestSingle[*google_protobuf.Empty](ctx, c.client, "CreateEgress", nil, req, opts...)
   131  }
   132  
   133  func (c *iOInfoClient) UpdateEgress(ctx context.Context, req *livekit2.EgressInfo, opts ...psrpc.RequestOption) (*google_protobuf.Empty, error) {
   134  	return client.RequestSingle[*google_protobuf.Empty](ctx, c.client, "UpdateEgress", nil, req, opts...)
   135  }
   136  
   137  func (c *iOInfoClient) GetEgress(ctx context.Context, req *GetEgressRequest, opts ...psrpc.RequestOption) (*livekit2.EgressInfo, error) {
   138  	return client.RequestSingle[*livekit2.EgressInfo](ctx, c.client, "GetEgress", nil, req, opts...)
   139  }
   140  
   141  func (c *iOInfoClient) ListEgress(ctx context.Context, req *livekit2.ListEgressRequest, opts ...psrpc.RequestOption) (*livekit2.ListEgressResponse, error) {
   142  	return client.RequestSingle[*livekit2.ListEgressResponse](ctx, c.client, "ListEgress", nil, req, opts...)
   143  }
   144  
   145  func (c *iOInfoClient) UpdateMetrics(ctx context.Context, req *UpdateMetricsRequest, opts ...psrpc.RequestOption) (*google_protobuf.Empty, error) {
   146  	return client.RequestSingle[*google_protobuf.Empty](ctx, c.client, "UpdateMetrics", nil, req, opts...)
   147  }
   148  
   149  func (c *iOInfoClient) CreateIngress(ctx context.Context, req *livekit3.IngressInfo, opts ...psrpc.RequestOption) (*google_protobuf.Empty, error) {
   150  	return client.RequestSingle[*google_protobuf.Empty](ctx, c.client, "CreateIngress", nil, req, opts...)
   151  }
   152  
   153  func (c *iOInfoClient) GetIngressInfo(ctx context.Context, req *GetIngressInfoRequest, opts ...psrpc.RequestOption) (*GetIngressInfoResponse, error) {
   154  	return client.RequestSingle[*GetIngressInfoResponse](ctx, c.client, "GetIngressInfo", nil, req, opts...)
   155  }
   156  
   157  func (c *iOInfoClient) UpdateIngressState(ctx context.Context, req *UpdateIngressStateRequest, opts ...psrpc.RequestOption) (*google_protobuf.Empty, error) {
   158  	return client.RequestSingle[*google_protobuf.Empty](ctx, c.client, "UpdateIngressState", nil, req, opts...)
   159  }
   160  
   161  func (c *iOInfoClient) GetSIPTrunkAuthentication(ctx context.Context, req *GetSIPTrunkAuthenticationRequest, opts ...psrpc.RequestOption) (*GetSIPTrunkAuthenticationResponse, error) {
   162  	return client.RequestSingle[*GetSIPTrunkAuthenticationResponse](ctx, c.client, "GetSIPTrunkAuthentication", nil, req, opts...)
   163  }
   164  
   165  func (c *iOInfoClient) EvaluateSIPDispatchRules(ctx context.Context, req *EvaluateSIPDispatchRulesRequest, opts ...psrpc.RequestOption) (*EvaluateSIPDispatchRulesResponse, error) {
   166  	return client.RequestSingle[*EvaluateSIPDispatchRulesResponse](ctx, c.client, "EvaluateSIPDispatchRules", nil, req, opts...)
   167  }
   168  
   169  // =============
   170  // IOInfo Server
   171  // =============
   172  
   173  type iOInfoServer struct {
   174  	svc IOInfoServerImpl
   175  	rpc *server.RPCServer
   176  }
   177  
   178  // NewIOInfoServer builds a RPCServer that will route requests
   179  // to the corresponding method in the provided svc implementation.
   180  func NewIOInfoServer(svc IOInfoServerImpl, bus psrpc.MessageBus, opts ...psrpc.ServerOption) (IOInfoServer, error) {
   181  	sd := &info.ServiceDefinition{
   182  		Name: "IOInfo",
   183  		ID:   rand.NewServerID(),
   184  	}
   185  
   186  	s := server.NewRPCServer(sd, bus, opts...)
   187  
   188  	sd.RegisterMethod("CreateEgress", false, false, true, true)
   189  	var err error
   190  	err = server.RegisterHandler(s, "CreateEgress", nil, svc.CreateEgress, nil)
   191  	if err != nil {
   192  		s.Close(false)
   193  		return nil, err
   194  	}
   195  
   196  	sd.RegisterMethod("UpdateEgress", false, false, true, true)
   197  	err = server.RegisterHandler(s, "UpdateEgress", nil, svc.UpdateEgress, nil)
   198  	if err != nil {
   199  		s.Close(false)
   200  		return nil, err
   201  	}
   202  
   203  	sd.RegisterMethod("GetEgress", false, false, true, true)
   204  	err = server.RegisterHandler(s, "GetEgress", nil, svc.GetEgress, nil)
   205  	if err != nil {
   206  		s.Close(false)
   207  		return nil, err
   208  	}
   209  
   210  	sd.RegisterMethod("ListEgress", false, false, true, true)
   211  	err = server.RegisterHandler(s, "ListEgress", nil, svc.ListEgress, nil)
   212  	if err != nil {
   213  		s.Close(false)
   214  		return nil, err
   215  	}
   216  
   217  	sd.RegisterMethod("UpdateMetrics", false, false, true, true)
   218  	err = server.RegisterHandler(s, "UpdateMetrics", nil, svc.UpdateMetrics, nil)
   219  	if err != nil {
   220  		s.Close(false)
   221  		return nil, err
   222  	}
   223  
   224  	sd.RegisterMethod("CreateIngress", false, false, true, true)
   225  	err = server.RegisterHandler(s, "CreateIngress", nil, svc.CreateIngress, nil)
   226  	if err != nil {
   227  		s.Close(false)
   228  		return nil, err
   229  	}
   230  
   231  	sd.RegisterMethod("GetIngressInfo", false, false, true, true)
   232  	err = server.RegisterHandler(s, "GetIngressInfo", nil, svc.GetIngressInfo, nil)
   233  	if err != nil {
   234  		s.Close(false)
   235  		return nil, err
   236  	}
   237  
   238  	sd.RegisterMethod("UpdateIngressState", false, false, true, true)
   239  	err = server.RegisterHandler(s, "UpdateIngressState", nil, svc.UpdateIngressState, nil)
   240  	if err != nil {
   241  		s.Close(false)
   242  		return nil, err
   243  	}
   244  
   245  	sd.RegisterMethod("GetSIPTrunkAuthentication", false, false, true, true)
   246  	err = server.RegisterHandler(s, "GetSIPTrunkAuthentication", nil, svc.GetSIPTrunkAuthentication, nil)
   247  	if err != nil {
   248  		s.Close(false)
   249  		return nil, err
   250  	}
   251  
   252  	sd.RegisterMethod("EvaluateSIPDispatchRules", false, false, true, true)
   253  	err = server.RegisterHandler(s, "EvaluateSIPDispatchRules", nil, svc.EvaluateSIPDispatchRules, nil)
   254  	if err != nil {
   255  		s.Close(false)
   256  		return nil, err
   257  	}
   258  
   259  	return &iOInfoServer{
   260  		svc: svc,
   261  		rpc: s,
   262  	}, nil
   263  }
   264  
   265  func (s *iOInfoServer) Shutdown() {
   266  	s.rpc.Close(false)
   267  }
   268  
   269  func (s *iOInfoServer) Kill() {
   270  	s.rpc.Close(true)
   271  }
   272  
   273  var psrpcFileDescriptor3 = []byte{
   274  	// 1099 bytes of a gzipped FileDescriptorProto
   275  	0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0x9c, 0x56, 0x5f, 0x53, 0x23, 0x45,
   276  	0x10, 0x37, 0x7f, 0x8f, 0x74, 0x80, 0xcb, 0xcd, 0x85, 0x33, 0x17, 0xca, 0x23, 0x97, 0x13, 0x45,
   277  	0xad, 0xda, 0x28, 0x3e, 0x68, 0x69, 0x59, 0x25, 0xe4, 0x22, 0xae, 0x72, 0x10, 0x17, 0xf2, 0xa0,
   278  	0x2f, 0xeb, 0xb0, 0x3b, 0x2c, 0x23, 0x9b, 0x9d, 0x75, 0x66, 0x16, 0x8e, 0x4f, 0xa0, 0xaf, 0x7e,
   279  	0x03, 0x5f, 0x7c, 0xf1, 0xeb, 0xf9, 0x05, 0xac, 0xf9, 0xb3, 0x61, 0x81, 0xe4, 0xb0, 0x7c, 0xdb,
   280  	0xf9, 0xf5, 0xaf, 0x7b, 0x7e, 0xdd, 0x3d, 0xe9, 0x0e, 0x2c, 0xf3, 0x34, 0x18, 0x50, 0xe6, 0xa4,
   281  	0x9c, 0x49, 0x86, 0x2a, 0x3c, 0x0d, 0xba, 0xed, 0x98, 0x5e, 0x90, 0x73, 0x2a, 0x7d, 0x12, 0x71,
   282  	0x22, 0x84, 0x31, 0x75, 0xd7, 0x72, 0x94, 0x26, 0x45, 0x78, 0x3d, 0x62, 0x2c, 0x8a, 0xc9, 0x40,
   283  	0x9f, 0x4e, 0xb2, 0xd3, 0x01, 0x99, 0xa6, 0xf2, 0xca, 0x18, 0xfb, 0x03, 0x68, 0xed, 0x11, 0x39,
   284  	0xd2, 0x7c, 0x8f, 0xfc, 0x9a, 0x11, 0x21, 0xd1, 0x3a, 0x34, 0x4c, 0x5c, 0x9f, 0x86, 0x9d, 0x52,
   285  	0xaf, 0xb4, 0xd5, 0xf0, 0x96, 0x0c, 0xe0, 0x86, 0xfd, 0xdf, 0x4a, 0xd0, 0x9e, 0xa4, 0x21, 0x96,
   286  	0xe4, 0x15, 0x91, 0x9c, 0x06, 0x33, 0xaf, 0xf7, 0xa1, 0x4a, 0x93, 0x53, 0xa6, 0x1d, 0x9a, 0xdb,
   287  	0x8f, 0x1d, 0x2b, 0xc6, 0x31, 0xb1, 0xdd, 0xe4, 0x94, 0x79, 0x9a, 0x80, 0xfa, 0xb0, 0x82, 0x2f,
   288  	0x22, 0x3f, 0x48, 0x33, 0x3f, 0x13, 0x38, 0x22, 0x9d, 0x4a, 0xaf, 0xb4, 0x55, 0xf6, 0x9a, 0xf8,
   289  	0x22, 0x1a, 0xa6, 0xd9, 0x44, 0x41, 0x8a, 0x33, 0xc5, 0xaf, 0x0b, 0x9c, 0xaa, 0xe1, 0x4c, 0xf1,
   290  	0xeb, 0x9c, 0xd3, 0x9f, 0xc0, 0xda, 0x1e, 0x91, 0x6e, 0x72, 0x1d, 0xdf, 0x2a, 0x79, 0x07, 0xc0,
   291  	0x56, 0xe0, 0x3a, 0x81, 0x86, 0x45, 0xdc, 0x50, 0x99, 0x85, 0xe4, 0x04, 0x4f, 0xfd, 0x73, 0x72,
   292  	0xd5, 0x29, 0x1b, 0xb3, 0x41, 0xbe, 0x27, 0x57, 0xfd, 0xdf, 0xcb, 0xf0, 0xe4, 0x76, 0x5c, 0x91,
   293  	0xb2, 0x44, 0x10, 0xb4, 0x75, 0x23, 0xc5, 0xf6, 0x2c, 0xc5, 0x22, 0xd7, 0xe4, 0xd8, 0x86, 0x9a,
   294  	0x64, 0xe7, 0x24, 0xb1, 0xe1, 0xcd, 0x01, 0xad, 0x41, 0xfd, 0x52, 0xf8, 0x19, 0x8f, 0x75, 0xca,
   295  	0x0d, 0xaf, 0x76, 0x29, 0x26, 0x3c, 0x46, 0x13, 0x58, 0x8d, 0x59, 0x14, 0xd1, 0x24, 0xf2, 0x4f,
   296  	0x29, 0x89, 0x43, 0xd1, 0xa9, 0xf6, 0x2a, 0x5b, 0xcd, 0x6d, 0xc7, 0xe1, 0x69, 0xe0, 0xcc, 0xd7,
   297  	0xe2, 0xec, 0x1b, 0x8f, 0x6f, 0xb4, 0xc3, 0x28, 0x91, 0xfc, 0xca, 0x5b, 0x89, 0x8b, 0x58, 0xf7,
   298  	0x6b, 0x40, 0x77, 0x49, 0xa8, 0x05, 0x15, 0x95, 0xb6, 0xa9, 0x8a, 0xfa, 0x54, 0x5a, 0x2f, 0x70,
   299  	0x9c, 0x91, 0x5c, 0xab, 0x3e, 0x7c, 0x51, 0xfe, 0xbc, 0xd4, 0x8f, 0xe0, 0xa9, 0x69, 0xb5, 0x15,
   300  	0x70, 0x24, 0xb1, 0x24, 0xff, 0xb1, 0xca, 0x1f, 0x41, 0x4d, 0x28, 0xba, 0x8e, 0xda, 0xdc, 0x5e,
   301  	0xbb, 0x5d, 0x2c, 0x13, 0xcb, 0x70, 0xfa, 0x7f, 0x96, 0xa0, 0xb7, 0x47, 0xe4, 0x91, 0x3b, 0x3e,
   302  	0xe6, 0x59, 0x72, 0xbe, 0x93, 0xc9, 0x33, 0x92, 0x48, 0x1a, 0x60, 0x49, 0x59, 0x92, 0x5f, 0xf8,
   303  	0x0c, 0x9a, 0x82, 0xa6, 0x7e, 0x80, 0xe3, 0x58, 0xdd, 0x58, 0xb7, 0x8d, 0xa3, 0xe9, 0x10, 0xc7,
   304  	0xb1, 0x1b, 0x22, 0x04, 0xd5, 0x53, 0xce, 0xa6, 0x36, 0x0d, 0xfd, 0x8d, 0x56, 0xa1, 0x2c, 0x99,
   305  	0xad, 0x76, 0x59, 0x32, 0xb4, 0x01, 0x4d, 0xc1, 0x03, 0x1f, 0x87, 0xa1, 0xd2, 0xa0, 0x5f, 0x55,
   306  	0xc3, 0x03, 0xc1, 0x83, 0x1d, 0x83, 0xa0, 0xb7, 0xe1, 0x81, 0x64, 0xfe, 0x19, 0x13, 0xb2, 0x53,
   307  	0xd3, 0xc6, 0xba, 0x64, 0xdf, 0x32, 0x21, 0xfb, 0x7f, 0x94, 0xe0, 0xf9, 0x1b, 0x24, 0xda, 0x17,
   308  	0xd2, 0x85, 0xa5, 0x4c, 0x10, 0x9e, 0xe0, 0x29, 0xc9, 0x7f, 0x39, 0xf9, 0x59, 0xd9, 0x52, 0x2c,
   309  	0xc4, 0x25, 0xe3, 0xa1, 0xd5, 0x38, 0x3b, 0x2b, 0xed, 0x21, 0x67, 0xa9, 0x56, 0xba, 0xe4, 0xe9,
   310  	0x6f, 0xd4, 0x83, 0x65, 0x95, 0xaf, 0x54, 0xd7, 0xa9, 0x84, 0x73, 0xb1, 0x34, 0xd5, 0x0a, 0xdc,
   311  	0xb0, 0xff, 0x77, 0x19, 0x36, 0x46, 0xaa, 0x5d, 0x58, 0x92, 0x23, 0x77, 0xfc, 0x92, 0x8a, 0x14,
   312  	0xcb, 0xe0, 0xcc, 0xcb, 0x62, 0x22, 0x16, 0x54, 0x6d, 0xe9, 0x76, 0xd5, 0x3e, 0x06, 0xa4, 0xec,
   313  	0x29, 0xe6, 0x92, 0x06, 0x34, 0xc5, 0x89, 0x9c, 0xb5, 0x73, 0xb7, 0xdc, 0x29, 0x79, 0x2d, 0x41,
   314  	0xd3, 0xf1, 0xb5, 0xd1, 0x0d, 0xd1, 0x26, 0xac, 0xaa, 0x68, 0xea, 0xb9, 0x26, 0xd9, 0xf4, 0x84,
   315  	0x70, 0x9b, 0xcd, 0x8a, 0x45, 0x0f, 0x34, 0x88, 0x5e, 0x80, 0x06, 0x48, 0x98, 0xb3, 0x4c, 0x17,
   316  	0x96, 0x0d, 0x68, 0x49, 0xf7, 0xf6, 0xa3, 0x05, 0x95, 0x94, 0x26, 0xb6, 0x17, 0xea, 0x53, 0xfd,
   317  	0x88, 0x12, 0xe6, 0x2b, 0xb0, 0xae, 0x8b, 0x55, 0x4b, 0xd8, 0x98, 0x26, 0x2a, 0x92, 0xbd, 0x4e,
   318  	0x37, 0xef, 0x81, 0x89, 0x64, 0x20, 0xdd, 0xc0, 0xbf, 0x2a, 0xd0, 0x5b, 0x5c, 0x2c, 0xdb, 0xbf,
   319  	0x75, 0x68, 0x70, 0xc6, 0xa6, 0x7e, 0xb1, 0x81, 0x0a, 0x38, 0x50, 0x0d, 0xfc, 0x04, 0xda, 0x37,
   320  	0xcb, 0xa4, 0x1e, 0x80, 0xcc, 0x47, 0xc8, 0xe3, 0xb4, 0x58, 0x25, 0x63, 0x42, 0x1f, 0x40, 0xab,
   321  	0xe8, 0xa2, 0xc3, 0x1a, 0x69, 0x0f, 0x0b, 0xf8, 0xbc, 0xe8, 0x53, 0x22, 0x71, 0x88, 0x25, 0xb6,
   322  	0x1d, 0x2b, 0x46, 0x7f, 0x65, 0x4d, 0xe8, 0x05, 0x34, 0xb9, 0x69, 0xb3, 0xae, 0x87, 0x7e, 0x3c,
   323  	0xba, 0x69, 0x60, 0x61, 0x55, 0x98, 0xd9, 0x28, 0xaa, 0xce, 0x1f, 0x45, 0xb5, 0xe2, 0x28, 0x72,
   324  	0xa0, 0xce, 0x89, 0xc8, 0x62, 0xa9, 0x8b, 0xbb, 0xba, 0xfd, 0x44, 0x8f, 0xa0, 0x62, 0xb9, 0xb4,
   325  	0xd5, 0xb3, 0xac, 0x3b, 0x6f, 0xb4, 0x71, 0xfb, 0x8d, 0xa2, 0x01, 0xb4, 0x15, 0x23, 0xb4, 0xfe,
   326  	0x3e, 0xcf, 0x62, 0xa2, 0x98, 0xa0, 0x99, 0x8f, 0x04, 0x4d, 0x8b, 0x9d, 0x70, 0xc3, 0x0f, 0x7f,
   327  	0x86, 0x47, 0x77, 0xee, 0x43, 0x1d, 0x68, 0xef, 0x8f, 0xf6, 0x76, 0x86, 0x3f, 0xfa, 0x3b, 0xc3,
   328  	0xe1, 0x68, 0x7c, 0xec, 0x1f, 0x7a, 0xfe, 0xd8, 0x3d, 0x68, 0xbd, 0x85, 0x00, 0xea, 0x06, 0x6a,
   329  	0x95, 0xd0, 0x43, 0x68, 0x7a, 0xa3, 0x1f, 0x26, 0xa3, 0xa3, 0x63, 0x6d, 0x2c, 0x2b, 0xa3, 0x37,
   330  	0xfa, 0x6e, 0x34, 0x3c, 0x6e, 0x55, 0xd0, 0x12, 0x54, 0x5f, 0x7a, 0x87, 0xe3, 0x56, 0x75, 0xfb,
   331  	0x9f, 0x1a, 0xd4, 0xdd, 0x43, 0x35, 0x4d, 0xd1, 0x97, 0xb0, 0x3c, 0xe4, 0x04, 0x4b, 0x62, 0xb6,
   332  	0x14, 0x9a, 0xb7, 0xb6, 0xba, 0x4f, 0x1c, 0xb3, 0x41, 0x9d, 0x7c, 0x83, 0x3a, 0x23, 0xb5, 0x41,
   333  	0x95, 0xb3, 0x19, 0x8f, 0xff, 0xc7, 0xf9, 0x33, 0x68, 0xcc, 0x16, 0x2f, 0x5a, 0xcb, 0x27, 0xfd,
   334  	0x8d, 0x45, 0xdc, 0x9d, 0x17, 0x10, 0x8d, 0x00, 0xf6, 0xa9, 0xc8, 0x3d, 0xbb, 0x33, 0xca, 0x35,
   335  	0x98, 0xbb, 0xaf, 0xcf, 0xb5, 0xd9, 0x97, 0xbe, 0x0b, 0x2b, 0x37, 0xd6, 0x38, 0x7a, 0xaa, 0x35,
   336  	0xcc, 0x5b, 0xed, 0x0b, 0x73, 0xf8, 0x0a, 0x56, 0x4c, 0xf5, 0xec, 0x4c, 0x47, 0x73, 0x57, 0xe2,
   337  	0x42, 0x77, 0x17, 0x56, 0x6f, 0x2e, 0x37, 0xd4, 0x9d, 0xbb, 0xf1, 0xf2, 0x6c, 0x16, 0x6f, 0x43,
   338  	0xb4, 0x0f, 0xe8, 0xee, 0xa6, 0x42, 0xcf, 0x0a, 0x29, 0xcd, 0x59, 0x61, 0x0b, 0x85, 0xfd, 0x02,
   339  	0x4f, 0x17, 0x8e, 0x7a, 0xb4, 0x99, 0xeb, 0x78, 0xe3, 0xb6, 0xea, 0xbe, 0x77, 0x1f, 0xcd, 0x2a,
   340  	0x8f, 0xa0, 0xb3, 0x68, 0x2a, 0xa1, 0x77, 0x75, 0x8c, 0x7b, 0x26, 0x7c, 0x77, 0xf3, 0x1e, 0x96,
   341  	0xb9, 0x68, 0xf7, 0xf9, 0x4f, 0x1b, 0x11, 0x95, 0x67, 0xd9, 0x89, 0x13, 0xb0, 0xe9, 0xc0, 0xf6,
   342  	0xc9, 0xfc, 0x29, 0x0c, 0x58, 0x3c, 0xe0, 0x69, 0x70, 0x52, 0xd7, 0xa7, 0x4f, 0xff, 0x0d, 0x00,
   343  	0x00, 0xff, 0xff, 0x26, 0x91, 0x00, 0xf5, 0x72, 0x0a, 0x00, 0x00,
   344  }