diff --git a/base/gnfd/gnfd_service.go b/base/gnfd/gnfd_service.go index 34a19acb0..079596103 100644 --- a/base/gnfd/gnfd_service.go +++ b/base/gnfd/gnfd_service.go @@ -509,6 +509,36 @@ func (g *Gnfd) QueryBucketInfo(ctx context.Context, bucket string) (bucketInfo * return resp.GetBucketInfo(), nil } +// QueryBucketExtraInfo returns the bucket extra info by name. +func (g *Gnfd) QueryBucketExtraInfo(ctx context.Context, bucket string) (bucketInfo *storagetypes.BucketExtraInfo, err error) { + startTime := time.Now() + defer func() { + if err != nil { + metrics.GnfdChainCounter.WithLabelValues(ChainFailureQueryBucketInfo).Inc() + metrics.GnfdChainTime.WithLabelValues(ChainFailureQueryBucketInfo).Observe( + time.Since(startTime).Seconds()) + metrics.GnfdChainCounter.WithLabelValues(ChainFailureTotal).Inc() + metrics.GnfdChainTime.WithLabelValues(ChainFailureTotal).Observe( + time.Since(startTime).Seconds()) + return + } + metrics.GnfdChainCounter.WithLabelValues(ChainSuccessQueryBucketInfo).Inc() + metrics.GnfdChainTime.WithLabelValues(ChainSuccessQueryBucketInfo).Observe( + time.Since(startTime).Seconds()) + metrics.GnfdChainCounter.WithLabelValues(ChainSuccessTotal).Inc() + metrics.GnfdChainTime.WithLabelValues(ChainSuccessTotal).Observe( + time.Since(startTime).Seconds()) + }() + + client := g.getCurrentClient().GnfdClient() + resp, err := client.HeadBucket(ctx, &storagetypes.QueryHeadBucketRequest{BucketName: bucket}) + if err != nil { + log.CtxErrorw(ctx, "failed to query bucket", "bucket_name", bucket, "error", err) + return nil, err + } + return resp.GetExtraInfo(), nil +} + // QueryBucketInfoById returns the bucket info by name. func (g *Gnfd) QueryBucketInfoById(ctx context.Context, bucketId uint64) (bucketInfo *storagetypes.BucketInfo, err error) { startTime := time.Now() diff --git a/core/consensus/consensus.go b/core/consensus/consensus.go index 9c6e7c9a1..7407c0511 100644 --- a/core/consensus/consensus.go +++ b/core/consensus/consensus.go @@ -51,6 +51,8 @@ type Consensus interface { QueryStorageParamsByTimestamp(ctx context.Context, timestamp int64) (params *storagetypes.Params, err error) // QueryBucketInfo returns the bucket info by bucket name. QueryBucketInfo(ctx context.Context, bucket string) (*storagetypes.BucketInfo, error) + // QueryBucketExtraInfo returns the bucket extra info by bucket name. + QueryBucketExtraInfo(ctx context.Context, bucket string) (bucketInfo *storagetypes.BucketExtraInfo, err error) // QueryBucketInfoById returns the bucket info by bucket id. QueryBucketInfoById(ctx context.Context, bucketId uint64) (bucketInfo *storagetypes.BucketInfo, err error) // QueryObjectInfo returns the object info by bucket and object name. @@ -136,6 +138,9 @@ func (*NullConsensus) QueryStorageParamsByTimestamp(context.Context, int64) (*st func (*NullConsensus) QueryBucketInfo(context.Context, string) (*storagetypes.BucketInfo, error) { return nil, nil } +func (*NullConsensus) QueryBucketExtraInfo(context.Context, string) (*storagetypes.BucketExtraInfo, error) { + return nil, nil +} func (*NullConsensus) QueryBucketInfoById(context.Context, uint64) (*storagetypes.BucketInfo, error) { return nil, nil } diff --git a/core/consensus/consensus_mock.go b/core/consensus/consensus_mock.go index ee6bd26be..5aed06a85 100644 --- a/core/consensus/consensus_mock.go +++ b/core/consensus/consensus_mock.go @@ -209,6 +209,21 @@ func (mr *MockConsensusMockRecorder) ListenRejectUnSealObject(ctx, objectID, tim return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "ListenRejectUnSealObject", reflect.TypeOf((*MockConsensus)(nil).ListenRejectUnSealObject), ctx, objectID, timeoutHeight) } +// QueryBucketExtraInfo mocks base method. +func (m *MockConsensus) QueryBucketExtraInfo(ctx context.Context, bucket string) (*types1.BucketExtraInfo, error) { + m.ctrl.T.Helper() + ret := m.ctrl.Call(m, "QueryBucketExtraInfo", ctx, bucket) + ret0, _ := ret[0].(*types1.BucketExtraInfo) + ret1, _ := ret[1].(error) + return ret0, ret1 +} + +// QueryBucketExtraInfo indicates an expected call of QueryBucketExtraInfo. +func (mr *MockConsensusMockRecorder) QueryBucketExtraInfo(ctx, bucket any) *gomock.Call { + mr.mock.ctrl.T.Helper() + return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "QueryBucketExtraInfo", reflect.TypeOf((*MockConsensus)(nil).QueryBucketExtraInfo), ctx, bucket) +} + // QueryBucketInfo mocks base method. func (m *MockConsensus) QueryBucketInfo(ctx context.Context, bucket string) (*types1.BucketInfo, error) { m.ctrl.T.Helper() diff --git a/core/consensus/consensus_test.go b/core/consensus/consensus_test.go index fc6c3bac0..be645c7d8 100644 --- a/core/consensus/consensus_test.go +++ b/core/consensus/consensus_test.go @@ -24,6 +24,7 @@ func TestNullConsensus(t *testing.T) { _, _ = nc.QueryStorageParams(context.TODO()) _, _ = nc.QueryStorageParamsByTimestamp(context.TODO(), 0) _, _ = nc.QueryBucketInfo(context.TODO(), "") + _, _ = nc.QueryBucketExtraInfo(context.TODO(), "") _, _ = nc.QueryBucketInfoById(context.TODO(), 0) _, _ = nc.QueryObjectInfo(context.TODO(), "", "") _, _ = nc.QueryObjectInfoByID(context.TODO(), "") diff --git a/go.mod b/go.mod index a5499ed5a..198ca292b 100644 --- a/go.mod +++ b/go.mod @@ -10,7 +10,7 @@ require ( github.com/aliyun/credentials-go v1.3.0 github.com/avast/retry-go/v4 v4.3.1 github.com/aws/aws-sdk-go v1.44.159 - github.com/bnb-chain/greenfield v1.4.1-0.20240313092637-df143c62cbb5 + github.com/bnb-chain/greenfield v1.5.1-0.20240314113148-e4cc584f6da2 github.com/bnb-chain/greenfield-common/go v0.0.0-20240228080631-2683b0ee669a github.com/bytedance/gopkg v0.0.0-20221122125632-68358b8ecec6 github.com/cometbft/cometbft v0.37.2 @@ -124,7 +124,7 @@ require ( github.com/gogo/protobuf v1.3.2 // indirect github.com/golang-jwt/jwt/v4 v4.3.0 // indirect github.com/golang/glog v1.1.0 // indirect - github.com/golang/mock v1.6.0 + github.com/golang/mock v1.6.0 // indirect github.com/golang/protobuf v1.5.3 // indirect github.com/golang/snappy v0.0.4 // indirect github.com/google/btree v1.1.2 // indirect @@ -306,7 +306,7 @@ replace ( github.com/confio/ics23/go => github.com/cosmos/cosmos-sdk/ics23/go v0.8.0 github.com/cosmos/cosmos-sdk => github.com/bnb-chain/greenfield-cosmos-sdk v1.4.1-0.20240305064839-3cb07f5a365c github.com/cosmos/iavl => github.com/bnb-chain/greenfield-iavl v0.20.1 - github.com/forbole/juno/v4 => github.com/bnb-chain/juno/v4 v4.0.0-20240221084449-8b5ee76301fa + github.com/forbole/juno/v4 => github.com/bnb-chain/juno/v4 v4.0.0-20240326082854-3c67c32eb2be github.com/gogo/protobuf => github.com/regen-network/protobuf v1.3.3-alpha.regen.1 github.com/syndtr/goleveldb => github.com/syndtr/goleveldb v1.0.1-0.20210819022825-2ae1ddf74ef7 ) diff --git a/go.sum b/go.sum index bb350cad4..64cd825ee 100644 --- a/go.sum +++ b/go.sum @@ -176,8 +176,8 @@ github.com/bgentry/speakeasy v0.1.1-0.20220910012023-760eaf8b6816/go.mod h1:+zsy github.com/bits-and-blooms/bitset v1.2.0 h1:Kn4yilvwNtMACtf1eYDlG8H77R07mZSPbMjLyS07ChA= github.com/bits-and-blooms/bitset v1.2.0/go.mod h1:gIdJ4wp64HaoK2YrL1Q5/N7Y16edYb8uY+O0FJTyyDA= github.com/bmizerany/pat v0.0.0-20170815010413-6226ea591a40/go.mod h1:8rLXio+WjiTceGBHIoTvn60HIbs7Hm7bcHjyrSqYB9c= -github.com/bnb-chain/greenfield v1.4.1-0.20240313092637-df143c62cbb5 h1:xR5qjFrUesFAw3YTndfhHPauiFLRy7nEoX9rMtCbrrs= -github.com/bnb-chain/greenfield v1.4.1-0.20240313092637-df143c62cbb5/go.mod h1:N45Dfmj0EwL4xiKtpVvX1AkeER1CtKR0vMF+Nr9gLbE= +github.com/bnb-chain/greenfield v1.5.1-0.20240314113148-e4cc584f6da2 h1:y2eM3EGsVjCaHKLDrfZ5n0gtFZuDza2BEwQvaQJlzFM= +github.com/bnb-chain/greenfield v1.5.1-0.20240314113148-e4cc584f6da2/go.mod h1:z970om1k0EPmDFCUvxZpufQz3a1bOP7QriaZbaywaVY= github.com/bnb-chain/greenfield-cometbft v1.2.0 h1:LTStppZS9WkVj0TfEYKkk5OAQDGfYlUefWByr7Zr018= github.com/bnb-chain/greenfield-cometbft v1.2.0/go.mod h1:WVOEZ59UYM2XePQH47/IQfcInspDn8wbRXhFSJrbU1c= github.com/bnb-chain/greenfield-cometbft-db v0.8.1-alpha.1 h1:XcWulGacHVRiSCx90Q8Y//ajOrLNBQWR/KDB89dy3cU= @@ -192,8 +192,8 @@ github.com/bnb-chain/greenfield-cosmos-sdk/math v0.0.0-20231206043955-0855e0965b github.com/bnb-chain/greenfield-cosmos-sdk/math v0.0.0-20231206043955-0855e0965bc8/go.mod h1:An0MllWJY6PxibUpnwGk8jOm+a/qIxlKmL5Zyp9NnaM= github.com/bnb-chain/greenfield-iavl v0.20.1 h1:y3L64GU99otNp27/xLVBTDbv4eroR6CzoYz0rbaVotM= github.com/bnb-chain/greenfield-iavl v0.20.1/go.mod h1:oLksTs8dfh7DYIKBro7hbRQ+ewls7ghJ27pIXlbEXyI= -github.com/bnb-chain/juno/v4 v4.0.0-20240221084449-8b5ee76301fa h1:bkNYQmoiE0ZpigBawuqX+UOJziBboDqD8Z3REYMpIzI= -github.com/bnb-chain/juno/v4 v4.0.0-20240221084449-8b5ee76301fa/go.mod h1:p+KkPIHURpqUJOdXanhhYgZpTLQxGZWkrAwtUaOuPlM= +github.com/bnb-chain/juno/v4 v4.0.0-20240326082854-3c67c32eb2be h1:yympDqs1gg3oUgSTm31ybKhvWgsEySvqC7LO1npVvRc= +github.com/bnb-chain/juno/v4 v4.0.0-20240326082854-3c67c32eb2be/go.mod h1:p+KkPIHURpqUJOdXanhhYgZpTLQxGZWkrAwtUaOuPlM= github.com/boltdb/bolt v1.3.1/go.mod h1:clJnj/oiGkjum5o1McbSZDSLxVThjynRyGBgiAx27Ps= github.com/bradfitz/go-smtpd v0.0.0-20170404230938-deb6d6237625/go.mod h1:HYsPBTaaSFSlLx/70C2HPIMNZpVV8+vt/A+FMnYP11g= github.com/bradfitz/gomemcache v0.0.0-20170208213004-1952afaa557d/go.mod h1:PmM6Mmwb0LSuEubjR8N7PtNe1KxZLtOUHtbeikc5h60= diff --git a/modular/authenticator/authenticator.go b/modular/authenticator/authenticator.go index c3071b42f..7039bdb35 100644 --- a/modular/authenticator/authenticator.go +++ b/modular/authenticator/authenticator.go @@ -45,6 +45,7 @@ var ( ErrInvalidAddressOrDomainOrPublicKey = gfsperrors.Register(module.AuthenticationModularName, http.StatusBadRequest, 20017, "userAddress, domain or publicKey can't be null") ErrInvalidPublicKeyLength = gfsperrors.Register(module.AuthenticationModularName, http.StatusBadRequest, 20018, "The length of publicKeys must be less or equal to 100") ErrPublicKeyNotExist = gfsperrors.Register(module.AuthenticationModularName, http.StatusBadRequest, 20019, "The publicKey was not registered") + ErrBucketIsRateLimited = gfsperrors.Register(module.AuthenticationModularName, http.StatusBadRequest, 20020, "bucket is rate limited") ) func ErrUnexpectedObjectStatusWithDetail(objectName string, expectedStatus storagetypes.ObjectStatus, actualStatus storagetypes.ObjectStatus) *gfsperrors.GfSpError { @@ -441,6 +442,17 @@ func (a *AuthenticationModular) VerifyAuthentication( } return false, ErrConsensusWithDetail("failed to get bucket and object info from consensus, error: " + err.Error()) } + bucketExtraInfo, err := a.baseApp.Consensus().QueryBucketExtraInfo(ctx, bucket) + if err != nil { + log.CtxErrorw(ctx, "failed to get bucket extra info from consensus", "error", err) + if strings.Contains(err.Error(), "No such bucket") { + return false, ErrNoSuchBucket + } + return false, ErrConsensusWithDetail("failed to get bucket extra info from consensus, error: " + err.Error()) + } + if bucketExtraInfo.IsRateLimited { + return false, ErrBucketIsRateLimited + } spID, err := a.getSPID() if err != nil { return false, ErrConsensusWithDetail("getSPID error: " + err.Error()) diff --git a/modular/authenticator/authenticator_test.go b/modular/authenticator/authenticator_test.go index 72bd5cbf5..50676b268 100644 --- a/modular/authenticator/authenticator_test.go +++ b/modular/authenticator/authenticator_test.go @@ -847,7 +847,9 @@ func VerifyObjectAndBucketAndSPID(t *testing.T, authType coremodule.AuthOpType) // object exists but get SP ID returns error mockedConsensus = consensus.NewMockConsensus(ctrl) mockedConsensus.EXPECT().QueryBucketInfoAndObjectInfo(gomock.Any(), gomock.Any(), gomock.Any()).Return(&storagetypes.BucketInfo{}, &storagetypes.ObjectInfo{}, nil).Times(1) - + if authType == coremodule.AuthOpTypeGetObject { + mockedConsensus.EXPECT().QueryBucketExtraInfo(gomock.Any(), gomock.Any()).Return(&storagetypes.BucketExtraInfo{IsRateLimited: false}, nil).Times(1) + } mockedConsensus.EXPECT().QuerySP(gomock.Any(), gomock.Any()).Return(nil, errors.New("error")).Times(1) a.baseApp.SetConsensus(mockedConsensus) _, err = a.VerifyAuthentication(context.Background(), authType, userAddress, "test_bucket", "test_object") @@ -856,6 +858,9 @@ func VerifyObjectAndBucketAndSPID(t *testing.T, authType coremodule.AuthOpType) // QueryVirtualGroupFamily returns error mockedConsensus = consensus.NewMockConsensus(ctrl) mockedConsensus.EXPECT().QueryBucketInfoAndObjectInfo(gomock.Any(), gomock.Any(), gomock.Any()).Return(&storagetypes.BucketInfo{}, &storagetypes.ObjectInfo{}, nil).Times(1) + if authType == coremodule.AuthOpTypeGetObject { + mockedConsensus.EXPECT().QueryBucketExtraInfo(gomock.Any(), gomock.Any()).Return(&storagetypes.BucketExtraInfo{IsRateLimited: false}, nil).Times(1) + } mockedConsensus.EXPECT().QuerySP(gomock.Any(), gomock.Any()).Return(&sptypes.StorageProvider{ Id: 1, }, nil).Times(1) @@ -867,6 +872,9 @@ func VerifyObjectAndBucketAndSPID(t *testing.T, authType coremodule.AuthOpType) // bucketSPID != spID mockedConsensus = consensus.NewMockConsensus(ctrl) mockedConsensus.EXPECT().QueryBucketInfoAndObjectInfo(gomock.Any(), gomock.Any(), gomock.Any()).Return(&storagetypes.BucketInfo{}, &storagetypes.ObjectInfo{}, nil).Times(1) + if authType == coremodule.AuthOpTypeGetObject { + mockedConsensus.EXPECT().QueryBucketExtraInfo(gomock.Any(), gomock.Any()).Return(&storagetypes.BucketExtraInfo{IsRateLimited: false}, nil).Times(1) + } mockedConsensus.EXPECT().QuerySP(gomock.Any(), gomock.Any()).Return(&sptypes.StorageProvider{ Id: 1, }, nil).Times(0) // the SPID query result is cached already in above tests @@ -980,6 +988,7 @@ func Test_VerifyAuth_GetObject(t *testing.T) { mockedConsensus.EXPECT().QueryBucketInfoAndObjectInfo(gomock.Any(), gomock.Any(), gomock.Any()).Return(&storagetypes.BucketInfo{}, &storagetypes.ObjectInfo{ ObjectStatus: storagetypes.OBJECT_STATUS_CREATED, }, nil).Times(1) + mockedConsensus.EXPECT().QueryBucketExtraInfo(gomock.Any(), gomock.Any()).Return(&storagetypes.BucketExtraInfo{IsRateLimited: false}, nil).Times(1) mockedConsensus.EXPECT().QuerySP(gomock.Any(), gomock.Any()).Return(&sptypes.StorageProvider{ Id: 1, }, nil).Times(1) @@ -996,6 +1005,7 @@ func Test_VerifyAuth_GetObject(t *testing.T) { mockedConsensus.EXPECT().QueryBucketInfoAndObjectInfo(gomock.Any(), gomock.Any(), gomock.Any()).Return(&storagetypes.BucketInfo{}, &storagetypes.ObjectInfo{ ObjectStatus: storagetypes.OBJECT_STATUS_SEALED, }, nil).Times(1) + mockedConsensus.EXPECT().QueryBucketExtraInfo(gomock.Any(), gomock.Any()).Return(&storagetypes.BucketExtraInfo{IsRateLimited: false}, nil).Times(1) mockedConsensus.EXPECT().QuerySP(gomock.Any(), gomock.Any()).Return(&sptypes.StorageProvider{ Id: 1, }, nil).Times(0) // the SPID query result is cached already in above tests @@ -1012,6 +1022,7 @@ func Test_VerifyAuth_GetObject(t *testing.T) { mockedConsensus.EXPECT().QueryBucketInfoAndObjectInfo(gomock.Any(), gomock.Any(), gomock.Any()).Return(&storagetypes.BucketInfo{}, &storagetypes.ObjectInfo{ ObjectStatus: storagetypes.OBJECT_STATUS_SEALED, }, nil).Times(1) + mockedConsensus.EXPECT().QueryBucketExtraInfo(gomock.Any(), gomock.Any()).Return(&storagetypes.BucketExtraInfo{IsRateLimited: false}, nil).Times(1) mockedConsensus.EXPECT().QuerySP(gomock.Any(), gomock.Any()).Return(&sptypes.StorageProvider{ Id: 1, }, nil).Times(0) // the SPID query result is cached already in above tests @@ -1030,6 +1041,7 @@ func Test_VerifyAuth_GetObject(t *testing.T) { mockedConsensus.EXPECT().QueryBucketInfoAndObjectInfo(gomock.Any(), gomock.Any(), gomock.Any()).Return(&storagetypes.BucketInfo{}, &storagetypes.ObjectInfo{ ObjectStatus: storagetypes.OBJECT_STATUS_SEALED, }, nil).Times(1) + mockedConsensus.EXPECT().QueryBucketExtraInfo(gomock.Any(), gomock.Any()).Return(&storagetypes.BucketExtraInfo{IsRateLimited: false}, nil).Times(1) mockedConsensus.EXPECT().QuerySP(gomock.Any(), gomock.Any()).Return(&sptypes.StorageProvider{ Id: 1, }, nil).Times(0) // the SPID query result is cached already in above tests @@ -1053,6 +1065,7 @@ func Test_VerifyAuth_GetObject(t *testing.T) { mockedConsensus.EXPECT().QueryBucketInfoAndObjectInfo(gomock.Any(), gomock.Any(), gomock.Any()).Return(&storagetypes.BucketInfo{}, &storagetypes.ObjectInfo{ ObjectStatus: storagetypes.OBJECT_STATUS_SEALED, }, nil).Times(1) + mockedConsensus.EXPECT().QueryBucketExtraInfo(gomock.Any(), gomock.Any()).Return(&storagetypes.BucketExtraInfo{IsRateLimited: false}, nil).Times(1) mockedConsensus.EXPECT().QuerySP(gomock.Any(), gomock.Any()).Return(&sptypes.StorageProvider{ Id: 1, }, nil).Times(0) // the SPID query result is cached already in above tests diff --git a/modular/blocksyncer/database/bucket.go b/modular/blocksyncer/database/bucket.go index 24703c94b..4839660aa 100644 --- a/modular/blocksyncer/database/bucket.go +++ b/modular/blocksyncer/database/bucket.go @@ -113,3 +113,17 @@ func (db *DB) UpdateChargeSizeToSQL(ctx context.Context, objectID common.Hash, b finalSql := fmt.Sprintf(sql, operation, tableName, tableName) return finalSql, vars } + +// GetBucketByBucketName get bucket by bucket name +func (db *DB) GetBucketByBucketName(ctx context.Context, bucketName string) (*models.Bucket, error) { + var ( + bucket *models.Bucket + err error + ) + err = db.Db.WithContext(ctx).Table((&models.Bucket{}).TableName()). + Where("bucket_name = ? AND removed = ?", bucketName, false).Take(&bucket).Error + if err != nil { + return nil, err + } + return bucket, nil +} diff --git a/modular/blocksyncer/modules/bucket/bucket_handle.go b/modular/blocksyncer/modules/bucket/bucket_handle.go index 88a7ba589..ea2f73208 100644 --- a/modular/blocksyncer/modules/bucket/bucket_handle.go +++ b/modular/blocksyncer/modules/bucket/bucket_handle.go @@ -31,6 +31,27 @@ var BucketEvents = map[string]bool{ EventCompleteMigrationBucket: true, } +type OffChainStatus int + +const ( + OffChainStatusIsLimited OffChainStatus = 1 << iota // 1 +) + +// AddStatus updates the current status by adding the specified status to it. +func AddStatus(currentStatus int, statusToAdd int) int { + return currentStatus | statusToAdd +} + +// RemoveStatus removes the specified status from the current status. +func RemoveStatus(currentStatus int, statusToRemove int) int { + return currentStatus &^ statusToRemove +} + +// IsStatusSet checks if the specified status is set in the current status. +func IsStatusSet(currentStatus int, statusToCheck int) bool { + return currentStatus&statusToCheck == statusToCheck +} + func (m *Module) ExtractEventStatements(ctx context.Context, block *tmctypes.ResultBlock, txHash common.Hash, event sdk.Event) (map[string][]interface{}, error) { if !BucketEvents[event.Type] { return nil, nil diff --git a/modular/blocksyncer/modules/payment/payment_handler.go b/modular/blocksyncer/modules/payment/payment_handler.go index 84d67fdd1..153f96a23 100644 --- a/modular/blocksyncer/modules/payment/payment_handler.go +++ b/modular/blocksyncer/modules/payment/payment_handler.go @@ -4,11 +4,14 @@ import ( "context" "errors" + bucketmodule "github.com/bnb-chain/greenfield-storage-provider/modular/blocksyncer/modules/bucket" paymenttypes "github.com/bnb-chain/greenfield/x/payment/types" + storagetypes "github.com/bnb-chain/greenfield/x/storage/types" abci "github.com/cometbft/cometbft/abci/types" tmctypes "github.com/cometbft/cometbft/rpc/core/types" sdk "github.com/cosmos/cosmos-sdk/types" "github.com/cosmos/gogoproto/proto" + "gorm.io/gorm" "github.com/forbole/juno/v4/common" "github.com/forbole/juno/v4/log" @@ -16,13 +19,15 @@ import ( ) var ( - EventPaymentAccountUpdate = proto.MessageName(&paymenttypes.EventPaymentAccountUpdate{}) - EventStreamRecordUpdate = proto.MessageName(&paymenttypes.EventStreamRecordUpdate{}) + EventPaymentAccountUpdate = proto.MessageName(&paymenttypes.EventPaymentAccountUpdate{}) + EventStreamRecordUpdate = proto.MessageName(&paymenttypes.EventStreamRecordUpdate{}) + EventBucketFlowRateLimitStatus = proto.MessageName(&storagetypes.EventBucketFlowRateLimitStatus{}) ) var PaymentEvents = map[string]bool{ - EventPaymentAccountUpdate: true, - EventStreamRecordUpdate: true, + EventPaymentAccountUpdate: true, + EventStreamRecordUpdate: true, + EventBucketFlowRateLimitStatus: true, } func (m *Module) ExtractEventStatements(ctx context.Context, block *tmctypes.ResultBlock, txHash common.Hash, event sdk.Event) (map[string][]interface{}, error) { @@ -51,6 +56,13 @@ func (m *Module) ExtractEventStatements(ctx context.Context, block *tmctypes.Res return nil, errors.New("update stream record event assert error") } return m.handleEventStreamRecordUpdate(ctx, streamRecordUpdate), nil + case EventBucketFlowRateLimitStatus: + bucketFlowRateLimitStatus, ok := typedEvent.(*storagetypes.EventBucketFlowRateLimitStatus) + if !ok { + log.Errorw("type assert error", "type", "EventBucketFlowRateLimitStatus", "event", typedEvent) + return nil, errors.New("bucket flow rate limit status event assert error") + } + return m.handleEventBucketFlowRateLimitStatus(ctx, block, txHash, bucketFlowRateLimitStatus), nil } return nil, nil } @@ -92,3 +104,31 @@ func (m *Module) handleEventStreamRecordUpdate(ctx context.Context, streamRecord k: v, } } + +func (m *Module) handleEventBucketFlowRateLimitStatus(ctx context.Context, block *tmctypes.ResultBlock, txHash common.Hash, bucketFlowRateLimitStatus *storagetypes.EventBucketFlowRateLimitStatus) map[string][]interface{} { + bucket, err := m.db.GetBucketByBucketName(ctx, bucketFlowRateLimitStatus.BucketName) + if err != nil { + if err == gorm.ErrRecordNotFound { + return nil + } + } + var offChainStatus int + if bucketFlowRateLimitStatus.IsLimited { + offChainStatus = bucketmodule.AddStatus(bucket.OffChainStatus, int(bucketmodule.OffChainStatusIsLimited)) + } else { + offChainStatus = bucketmodule.RemoveStatus(bucket.OffChainStatus, int(bucketmodule.OffChainStatusIsLimited)) + } + bucketStatus := &models.Bucket{ + BucketName: bucketFlowRateLimitStatus.BucketName, + OffChainStatus: offChainStatus, + + UpdateAt: block.Block.Height, + UpdateTxHash: txHash, + UpdateTime: block.Block.Time.UTC().Unix(), + } + + k, v := m.db.UpdateBucketByNameToSQL(ctx, bucketStatus) + return map[string][]interface{}{ + k: v, + } +} diff --git a/modular/blocksyncer/test/case.json b/modular/blocksyncer/test/case.json index 6bdaedfde..3e9e1c1ed 100644 --- a/modular/blocksyncer/test/case.json +++ b/modular/blocksyncer/test/case.json @@ -333,5 +333,10 @@ "name": "create, seal, updateObjectContent, cancelUpdate, updateObjectContent, rejectSeal, updateObjectContent, seal in 1 block", "block": "{\"block\":{\"header\":{\"height\":\"67\",\"time\":\"2024-01-17T06:18:31.636521739Z\"},\"data\":{\"txs\":[\"Cq0FCuQBCiMvZ3JlZW5maWVsZC5zdG9yYWdlLk1zZ0NyZWF0ZUJ1Y2tldBK8AQoqMHgyQzg4MDkxOTA1NTgyYUY1RjExOEM1QzlhMzNmNDdCOTQ0NWU3OEJCEgtwaHVnd2x5MWdycRgCKioweDM5OTdEYWY1ODBhNzk0MTJkYkRjQmE3NWE3MzNDMThFOEVhOTNlRTYyUAj///////////8BEAQaQYH8RBS7gDWwzg3YMRdOQ04+HgP6DnjcxUCADQUe+DJyWSNhbpVTW0qosYDAeCweKcTLNGTemV9KoaLI/vLY3tEAOOgHCsMDCiMvZ3JlZW5maWVsZC5zdG9yYWdlLk1zZ0NyZWF0ZU9iamVjdBKbAwoqMHgyQzg4MDkxOTA1NTgyYUY1RjExOEM1QzlhMzNmNDdCOTQ0NWU3OEJCEgtwaHVnd2x5MWdycRoIajVsZ25nY2YggKCLBSgCMhF0ZXh0L2V2ZW50LXN0cmVhbTpOCP///////////wEaQT0B4qIe9u9FEEPwubTDkoSsAwwpAdCzLA+ZHUOFHrcjKwfmgqT9PNEAq3jvAi6hBILrZLK2+DxPCBJuwcgKWPkBQiBu7JIaLEIxb0a/EQSAXNdDOJlseYlxINoPDVOjin75T0IgbuySGixCMW9GvxEEgFzXQziZbHmJcSDaDw1To4p++U9CIG7skhosQjFvRr8RBIBc10M4mWx5iXEg2g8NU6OKfvlPQiBu7JIaLEIxb0a/EQSAXNdDOJlseYlxINoPDVOjin75T0IgbuySGixCMW9GvxEEgFzXQziZbHmJcSDaDw1To4p++U9CIG7skhosQjFvRr8RBIBc10M4mWx5iXEg2g8NU6OKfvlPQiBu7JIaLEIxb0a/EQSAXNdDOJlseYlxINoPDVOjin75TxJ2ClYKTQomL2Nvc21vcy5jcnlwdG8uZXRoLmV0aHNlY3AyNTZrMS5QdWJLZXkSIwohAq7A3ny9ZwxjfT8306MErwaWR7h2Thsci6Fpn2C/N9yhEgUKAwjIBRIcChYKA0JOQhIPMTAwMDAwMDAwMDAwMDAwEKCcARpBvimCa9As0YE4nsIYvFDEFpKuB/UUfWz1vHmcMnzZ7XIxOn0Oioq4GeiFyVw9Loysze4lvUFtgAw9MR167p4r6QA=\",\"CtABCs0BCiEvZ3JlZW5maWVsZC5zdG9yYWdlLk1zZ1NlYWxPYmplY3QSpwEKKjB4YzU4OTBmNTE3ZUUwN0Q1YUFFNDg3MkQ0NWM1YTcxRUY3ZTExYTQzNhILcGh1Z3dseTFncnEaCGo1bGduZ2NmIAQqYI3hitJb5gxXFhjwWMXWSWYzVzxABsgmn5jIgAZkw2ZQBWT0kqlAMy/3y5xk7YOV9xkC7vj2PifXQwpJo1k2RRLdJBHfoY0tyWf1wBSvxMbmqyZoVsLu05GttbSeuHnfxRJ4ClgKTQomL2Nvc21vcy5jcnlwdG8uZXRoLmV0aHNlY3AyNTZrMS5QdWJLZXkSIwohA6uHMSxtcZpDhVBOnyOk4D4mf91A8P3Q8ByyN3/dVfp4EgUKAwjIBRgCEhwKFgoDQk5CEg8xMDAwMDAwMDAwMDAwMDAQoJwBGkGPTNltc7oqWKsgq98gClFmc1gjnqbqwR+ljV7VGOrqHC4bq0bwXnQhLx8zHUTIEa6mRIqFp1U+Oqd6p9lmT6ElAA==\",\"CuADCuQCCiovZ3JlZW5maWVsZC5zdG9yYWdlLk1zZ1VwZGF0ZU9iamVjdENvbnRlbnQStQIKKjB4MkM4ODA5MTkwNTU4MmFGNUYxMThDNUM5YTMzZjQ3Qjk0NDVlNzhCQhILcGh1Z3dseTFncnEaCGo1bGduZ2NmIICQQTIgAlHQDThmcsFQcqMRtWiBvUcOK7Q1qmGMpFfrREVrWqEyIAJR0A04ZnLBUHKjEbVogb1HDiu0NaphjKRX60RFa1qhMiACUdANOGZywVByoxG1aIG9Rw4rtDWqYYykV+tERWtaoTIgAlHQDThmcsFQcqMRtWiBvUcOK7Q1qmGMpFfrREVrWqEyIAJR0A04ZnLBUHKjEbVogb1HDiu0NaphjKRX60RFa1qhMiACUdANOGZywVByoxG1aIG9Rw4rtDWqYYykV+tERWtaoTIgAlHQDThmcsFQcqMRtWiBvUcOK7Q1qmGMpFfrREVrWqEKdwowL2dyZWVuZmllbGQuc3RvcmFnZS5Nc2dDYW5jZWxVcGRhdGVPYmplY3RDb250ZW50EkMKKjB4MkM4ODA5MTkwNTU4MmFGNUYxMThDNUM5YTMzZjQ3Qjk0NDVlNzhCQhILcGh1Z3dseTFncnEaCGo1bGduZ2NmEngKWApNCiYvY29zbW9zLmNyeXB0by5ldGguZXRoc2VjcDI1NmsxLlB1YktleRIjCiECrsDefL1nDGN9PzfTowSvBpZHuHZOGxyLoWmfYL833KESBQoDCMgFGAESHAoWCgNCTkISDzEwMDAwMDAwMDAwMDAwMBCgnAEaQbB25MnseDv9p7hYyDT9/gYhUf9jOUbkK0Y3WYha0VJyEfQxRlHs93Pd9wzoZC2Ji7uu7qUII4O0haaLg9A4TmwB\",\"CucCCuQCCiovZ3JlZW5maWVsZC5zdG9yYWdlLk1zZ1VwZGF0ZU9iamVjdENvbnRlbnQStQIKKjB4MkM4ODA5MTkwNTU4MmFGNUYxMThDNUM5YTMzZjQ3Qjk0NDVlNzhCQhILcGh1Z3dseTFncnEaCGo1bGduZ2NmIICQQTIgAlHQDThmcsFQcqMRtWiBvUcOK7Q1qmGMpFfrREVrWqEyIAJR0A04ZnLBUHKjEbVogb1HDiu0NaphjKRX60RFa1qhMiACUdANOGZywVByoxG1aIG9Rw4rtDWqYYykV+tERWtaoTIgAlHQDThmcsFQcqMRtWiBvUcOK7Q1qmGMpFfrREVrWqEyIAJR0A04ZnLBUHKjEbVogb1HDiu0NaphjKRX60RFa1qhMiACUdANOGZywVByoxG1aIG9Rw4rtDWqYYykV+tERWtaoTIgAlHQDThmcsFQcqMRtWiBvUcOK7Q1qmGMpFfrREVrWqESeApYCk0KJi9jb3Ntb3MuY3J5cHRvLmV0aC5ldGhzZWNwMjU2azEuUHViS2V5EiMKIQKuwN58vWcMY30/N9OjBK8Glke4dk4bHIuhaZ9gvzfcoRIFCgMIyAUYAhIcChYKA0JOQhIPMTAwMDAwMDAwMDAwMDAwEKCcARpBxuS1hHbCaNJtB8scH1l2oYT80Tr86DlxSBLB4KTvuphhjum/GYJkBJJQJuHrzkU/5oxQnuAUOQlnfVwsVbVJgAE=\",\"CnAKbgonL2dyZWVuZmllbGQuc3RvcmFnZS5Nc2dSZWplY3RTZWFsT2JqZWN0EkMKKjB4YzU4OTBmNTE3ZUUwN0Q1YUFFNDg3MkQ0NWM1YTcxRUY3ZTExYTQzNhILcGh1Z3dseTFncnEaCGo1bGduZ2NmEngKWApNCiYvY29zbW9zLmNyeXB0by5ldGguZXRoc2VjcDI1NmsxLlB1YktleRIjCiEDq4cxLG1xmkOFUE6fI6TgPiZ/3UDw/dDwHLI3f91V+ngSBQoDCMgFGAMSHAoWCgNCTkISDzEwMDAwMDAwMDAwMDAwMBCgnAEaQQuu6tOXpl7cZ5nL6e7401xvrnOPDzIE/4BQnkS9+ArBJXEEiY7Bgji41rsnOzbmgVx0yXuBpfu6D6oiKwknZJEA\",\"CucCCuQCCiovZ3JlZW5maWVsZC5zdG9yYWdlLk1zZ1VwZGF0ZU9iamVjdENvbnRlbnQStQIKKjB4MkM4ODA5MTkwNTU4MmFGNUYxMThDNUM5YTMzZjQ3Qjk0NDVlNzhCQhILcGh1Z3dseTFncnEaCGo1bGduZ2NmIICQQTIgAlHQDThmcsFQcqMRtWiBvUcOK7Q1qmGMpFfrREVrWqEyIAJR0A04ZnLBUHKjEbVogb1HDiu0NaphjKRX60RFa1qhMiACUdANOGZywVByoxG1aIG9Rw4rtDWqYYykV+tERWtaoTIgAlHQDThmcsFQcqMRtWiBvUcOK7Q1qmGMpFfrREVrWqEyIAJR0A04ZnLBUHKjEbVogb1HDiu0NaphjKRX60RFa1qhMiACUdANOGZywVByoxG1aIG9Rw4rtDWqYYykV+tERWtaoTIgAlHQDThmcsFQcqMRtWiBvUcOK7Q1qmGMpFfrREVrWqESeApYCk0KJi9jb3Ntb3MuY3J5cHRvLmV0aC5ldGhzZWNwMjU2azEuUHViS2V5EiMKIQKuwN58vWcMY30/N9OjBK8Glke4dk4bHIuhaZ9gvzfcoRIFCgMIyAUYAxIcChYKA0JOQhIPMTAwMDAwMDAwMDAwMDAwEKCcARpBcSuJzLOl+r3DV00QNY1IgOzlcsUpKwPoDxBgQpwZt7x+WncUn4XL4avv0syu864fsF/DFBRez2Wbm2dcvKeGIwA=\",\"CtABCs0BCiEvZ3JlZW5maWVsZC5zdG9yYWdlLk1zZ1NlYWxPYmplY3QSpwEKKjB4YzU4OTBmNTE3ZUUwN0Q1YUFFNDg3MkQ0NWM1YTcxRUY3ZTExYTQzNhILcGh1Z3dseTFncnEaCGo1bGduZ2NmIAQqYK5/Ebk6ydoqbeCZVCF4dE195Ib13+ZY0EOuPvjJXc77n6Sy3f7ysfjUkixHMsS1LAT7+5g+yKriGtfXl6hTq35tWJpiR42TiMr/Q6pAd71vWwPNq9ikl6xctNrzhlVIVBJ4ClgKTQomL2Nvc21vcy5jcnlwdG8uZXRoLmV0aHNlY3AyNTZrMS5QdWJLZXkSIwohA6uHMSxtcZpDhVBOnyOk4D4mf91A8P3Q8ByyN3/dVfp4EgUKAwjIBRgEEhwKFgoDQk5CEg8xMDAwMDAwMDAwMDAwMDAQoJwBGkE4COgJhN234K6SnJK2TxnHOOEVTQDFsK/V/TKvydQupQ8TykPeVdt+MY5EkZIbS4+e2TiD500G0N9vF/SvFPPxAQ==\"]}}}", "block_results": "{\"height\":\"67\",\"txs_results\":[{\"events\":[{\"type\":\"coin_spent\",\"attributes\":[{\"key\":\"spender\",\"value\":\"0x2C88091905582aF5F118C5C9a33f47B9445e78BB\",\"index\":true},{\"key\":\"amount\",\"value\":\"100000000000000BNB\",\"index\":true}]},{\"type\":\"coin_received\",\"attributes\":[{\"key\":\"receiver\",\"value\":\"0xf1829676DB577682E944fc3493d451B67Ff3E29F\",\"index\":true},{\"key\":\"amount\",\"value\":\"100000000000000BNB\",\"index\":true}]},{\"type\":\"transfer\",\"attributes\":[{\"key\":\"recipient\",\"value\":\"0xf1829676DB577682E944fc3493d451B67Ff3E29F\",\"index\":true},{\"key\":\"sender\",\"value\":\"0x2C88091905582aF5F118C5C9a33f47B9445e78BB\",\"index\":true},{\"key\":\"amount\",\"value\":\"100000000000000BNB\",\"index\":true}]},{\"type\":\"message\",\"attributes\":[{\"key\":\"sender\",\"value\":\"0x2C88091905582aF5F118C5C9a33f47B9445e78BB\",\"index\":true}]},{\"type\":\"tx\",\"attributes\":[{\"key\":\"fee\",\"value\":\"100000000000000BNB\",\"index\":true},{\"key\":\"fee_payer\",\"value\":\"0x2C88091905582aF5F118C5C9a33f47B9445e78BB\",\"index\":true}]},{\"type\":\"tx\",\"attributes\":[{\"key\":\"acc_seq\",\"value\":\"0x2C88091905582aF5F118C5C9a33f47B9445e78BB/0\",\"index\":true}]},{\"type\":\"tx\",\"attributes\":[{\"key\":\"signature\",\"value\":\"vimCa9As0YE4nsIYvFDEFpKuB/UUfWz1vHmcMnzZ7XIxOn0Oioq4GeiFyVw9Loysze4lvUFtgAw9MR167p4r6QA=\",\"index\":true}]},{\"type\":\"message\",\"attributes\":[{\"key\":\"action\",\"value\":\"/greenfield.storage.MsgCreateBucket\",\"index\":true},{\"key\":\"sender\",\"value\":\"0x2C88091905582aF5F118C5C9a33f47B9445e78BB\",\"index\":true},{\"key\":\"module\",\"value\":\"storage\",\"index\":true}]},{\"type\":\"coin_spent\",\"attributes\":[{\"key\":\"spender\",\"value\":\"0x2C88091905582aF5F118C5C9a33f47B9445e78BB\",\"index\":true},{\"key\":\"amount\",\"value\":\"6060000BNB\",\"index\":true}]},{\"type\":\"coin_received\",\"attributes\":[{\"key\":\"receiver\",\"value\":\"0x040fFD5925D40E11c67b7238A7fc9957850B8b9a\",\"index\":true},{\"key\":\"amount\",\"value\":\"6060000BNB\",\"index\":true}]},{\"type\":\"transfer\",\"attributes\":[{\"key\":\"recipient\",\"value\":\"0x040fFD5925D40E11c67b7238A7fc9957850B8b9a\",\"index\":true},{\"key\":\"sender\",\"value\":\"0x2C88091905582aF5F118C5C9a33f47B9445e78BB\",\"index\":true},{\"key\":\"amount\",\"value\":\"6060000BNB\",\"index\":true}]},{\"type\":\"message\",\"attributes\":[{\"key\":\"sender\",\"value\":\"0x2C88091905582aF5F118C5C9a33f47B9445e78BB\",\"index\":true}]},{\"type\":\"greenfield.payment.EventDeposit\",\"attributes\":[{\"key\":\"amount\",\"value\":\"\\\"6060000\\\"\",\"index\":true},{\"key\":\"from\",\"value\":\"\\\"0x2C88091905582aF5F118C5C9a33f47B9445e78BB\\\"\",\"index\":true},{\"key\":\"to\",\"value\":\"\\\"0x2C88091905582aF5F118C5C9a33f47B9445e78BB\\\"\",\"index\":true}]},{\"type\":\"greenfield.payment.EventStreamRecordUpdate\",\"attributes\":[{\"key\":\"account\",\"value\":\"\\\"0x2C88091905582aF5F118C5C9a33f47B9445e78BB\\\"\",\"index\":true},{\"key\":\"buffer_balance\",\"value\":\"\\\"6060000\\\"\",\"index\":true},{\"key\":\"crud_timestamp\",\"value\":\"\\\"1707127418\\\"\",\"index\":true},{\"key\":\"frozen_netflow_rate\",\"value\":\"\\\"0\\\"\",\"index\":true},{\"key\":\"lock_balance\",\"value\":\"\\\"0\\\"\",\"index\":true},{\"key\":\"netflow_rate\",\"value\":\"\\\"-101000\\\"\",\"index\":true},{\"key\":\"settle_timestamp\",\"value\":\"\\\"1707127448\\\"\",\"index\":true},{\"key\":\"static_balance\",\"value\":\"\\\"0\\\"\",\"index\":true},{\"key\":\"status\",\"value\":\"\\\"STREAM_ACCOUNT_STATUS_ACTIVE\\\"\",\"index\":true}]},{\"type\":\"greenfield.payment.EventStreamRecordUpdate\",\"attributes\":[{\"key\":\"account\",\"value\":\"\\\"0x8D720138eC1f2006dbe283C9A0f6eCe4B5c2fF1e\\\"\",\"index\":true},{\"key\":\"buffer_balance\",\"value\":\"\\\"0\\\"\",\"index\":true},{\"key\":\"crud_timestamp\",\"value\":\"\\\"1707127418\\\"\",\"index\":true},{\"key\":\"frozen_netflow_rate\",\"value\":\"\\\"0\\\"\",\"index\":true},{\"key\":\"lock_balance\",\"value\":\"\\\"0\\\"\",\"index\":true},{\"key\":\"netflow_rate\",\"value\":\"\\\"300000\\\"\",\"index\":true},{\"key\":\"settle_timestamp\",\"value\":\"\\\"0\\\"\",\"index\":true},{\"key\":\"static_balance\",\"value\":\"\\\"352900000\\\"\",\"index\":true},{\"key\":\"status\",\"value\":\"\\\"STREAM_ACCOUNT_STATUS_ACTIVE\\\"\",\"index\":true}]},{\"type\":\"greenfield.payment.EventStreamRecordUpdate\",\"attributes\":[{\"key\":\"account\",\"value\":\"\\\"0xdF5F0588f6B09f0B9E58D3426252db25Dc74E7a1\\\"\",\"index\":true},{\"key\":\"buffer_balance\",\"value\":\"\\\"0\\\"\",\"index\":true},{\"key\":\"crud_timestamp\",\"value\":\"\\\"1707127418\\\"\",\"index\":true},{\"key\":\"frozen_netflow_rate\",\"value\":\"\\\"0\\\"\",\"index\":true},{\"key\":\"lock_balance\",\"value\":\"\\\"0\\\"\",\"index\":true},{\"key\":\"netflow_rate\",\"value\":\"\\\"5505776280\\\"\",\"index\":true},{\"key\":\"settle_timestamp\",\"value\":\"\\\"0\\\"\",\"index\":true},{\"key\":\"static_balance\",\"value\":\"\\\"2297754463520\\\"\",\"index\":true},{\"key\":\"status\",\"value\":\"\\\"STREAM_ACCOUNT_STATUS_ACTIVE\\\"\",\"index\":true}]},{\"type\":\"greenfield.storage.EventCreateBucket\",\"attributes\":[{\"key\":\"bucket_id\",\"value\":\"\\\"15\\\"\",\"index\":true},{\"key\":\"bucket_name\",\"value\":\"\\\"phugwly1grq\\\"\",\"index\":true},{\"key\":\"charged_read_quota\",\"value\":\"\\\"1000\\\"\",\"index\":true},{\"key\":\"create_at\",\"value\":\"\\\"1707127418\\\"\",\"index\":true},{\"key\":\"global_virtual_group_family_id\",\"value\":\"4\",\"index\":true},{\"key\":\"owner\",\"value\":\"\\\"0x2C88091905582aF5F118C5C9a33f47B9445e78BB\\\"\",\"index\":true},{\"key\":\"payment_address\",\"value\":\"\\\"0x2C88091905582aF5F118C5C9a33f47B9445e78BB\\\"\",\"index\":true},{\"key\":\"primary_sp_id\",\"value\":\"1\",\"index\":true},{\"key\":\"source_type\",\"value\":\"\\\"SOURCE_TYPE_ORIGIN\\\"\",\"index\":true},{\"key\":\"status\",\"value\":\"\\\"BUCKET_STATUS_CREATED\\\"\",\"index\":true},{\"key\":\"visibility\",\"value\":\"\\\"VISIBILITY_TYPE_PRIVATE\\\"\",\"index\":true}]},{\"type\":\"message\",\"attributes\":[{\"key\":\"action\",\"value\":\"/greenfield.storage.MsgCreateObject\",\"index\":true},{\"key\":\"sender\",\"value\":\"0x2C88091905582aF5F118C5C9a33f47B9445e78BB\",\"index\":true},{\"key\":\"module\",\"value\":\"storage\",\"index\":true}]},{\"type\":\"coin_spent\",\"attributes\":[{\"key\":\"spender\",\"value\":\"0x2C88091905582aF5F118C5C9a33f47B9445e78BB\",\"index\":true},{\"key\":\"amount\",\"value\":\"11121637785600BNB\",\"index\":true}]},{\"type\":\"coin_received\",\"attributes\":[{\"key\":\"receiver\",\"value\":\"0x040fFD5925D40E11c67b7238A7fc9957850B8b9a\",\"index\":true},{\"key\":\"amount\",\"value\":\"11121637785600BNB\",\"index\":true}]},{\"type\":\"transfer\",\"attributes\":[{\"key\":\"recipient\",\"value\":\"0x040fFD5925D40E11c67b7238A7fc9957850B8b9a\",\"index\":true},{\"key\":\"sender\",\"value\":\"0x2C88091905582aF5F118C5C9a33f47B9445e78BB\",\"index\":true},{\"key\":\"amount\",\"value\":\"11121637785600BNB\",\"index\":true}]},{\"type\":\"message\",\"attributes\":[{\"key\":\"sender\",\"value\":\"0x2C88091905582aF5F118C5C9a33f47B9445e78BB\",\"index\":true}]},{\"type\":\"greenfield.payment.EventDeposit\",\"attributes\":[{\"key\":\"amount\",\"value\":\"\\\"11121637785600\\\"\",\"index\":true},{\"key\":\"from\",\"value\":\"\\\"0x2C88091905582aF5F118C5C9a33f47B9445e78BB\\\"\",\"index\":true},{\"key\":\"to\",\"value\":\"\\\"0x2C88091905582aF5F118C5C9a33f47B9445e78BB\\\"\",\"index\":true}]},{\"type\":\"greenfield.payment.EventStreamRecordUpdate\",\"attributes\":[{\"key\":\"account\",\"value\":\"\\\"0x2C88091905582aF5F118C5C9a33f47B9445e78BB\\\"\",\"index\":true},{\"key\":\"buffer_balance\",\"value\":\"\\\"6060000\\\"\",\"index\":true},{\"key\":\"crud_timestamp\",\"value\":\"\\\"1707127418\\\"\",\"index\":true},{\"key\":\"frozen_netflow_rate\",\"value\":\"\\\"0\\\"\",\"index\":true},{\"key\":\"lock_balance\",\"value\":\"\\\"11121637785600\\\"\",\"index\":true},{\"key\":\"netflow_rate\",\"value\":\"\\\"-101000\\\"\",\"index\":true},{\"key\":\"settle_timestamp\",\"value\":\"\\\"1707127448\\\"\",\"index\":true},{\"key\":\"static_balance\",\"value\":\"\\\"0\\\"\",\"index\":true},{\"key\":\"status\",\"value\":\"\\\"STREAM_ACCOUNT_STATUS_ACTIVE\\\"\",\"index\":true}]},{\"type\":\"greenfield.storage.EventCreateObject\",\"attributes\":[{\"key\":\"bucket_id\",\"value\":\"\\\"15\\\"\",\"index\":true},{\"key\":\"bucket_name\",\"value\":\"\\\"phugwly1grq\\\"\",\"index\":true},{\"key\":\"checksums\",\"value\":\"[\\\"buySGixCMW9GvxEEgFzXQziZbHmJcSDaDw1To4p++U8=\\\",\\\"buySGixCMW9GvxEEgFzXQziZbHmJcSDaDw1To4p++U8=\\\",\\\"buySGixCMW9GvxEEgFzXQziZbHmJcSDaDw1To4p++U8=\\\",\\\"buySGixCMW9GvxEEgFzXQziZbHmJcSDaDw1To4p++U8=\\\",\\\"buySGixCMW9GvxEEgFzXQziZbHmJcSDaDw1To4p++U8=\\\",\\\"buySGixCMW9GvxEEgFzXQziZbHmJcSDaDw1To4p++U8=\\\",\\\"buySGixCMW9GvxEEgFzXQziZbHmJcSDaDw1To4p++U8=\\\"]\",\"index\":true},{\"key\":\"content_type\",\"value\":\"\\\"text/event-stream\\\"\",\"index\":true},{\"key\":\"create_at\",\"value\":\"\\\"1707127418\\\"\",\"index\":true},{\"key\":\"creator\",\"value\":\"\\\"0x2C88091905582aF5F118C5C9a33f47B9445e78BB\\\"\",\"index\":true},{\"key\":\"local_virtual_group_id\",\"value\":\"0\",\"index\":true},{\"key\":\"object_id\",\"value\":\"\\\"13\\\"\",\"index\":true},{\"key\":\"object_name\",\"value\":\"\\\"j5lgngcf\\\"\",\"index\":true},{\"key\":\"owner\",\"value\":\"\\\"0x2C88091905582aF5F118C5C9a33f47B9445e78BB\\\"\",\"index\":true},{\"key\":\"payload_size\",\"value\":\"\\\"10670080\\\"\",\"index\":true},{\"key\":\"primary_sp_id\",\"value\":\"1\",\"index\":true},{\"key\":\"redundancy_type\",\"value\":\"\\\"REDUNDANCY_EC_TYPE\\\"\",\"index\":true},{\"key\":\"source_type\",\"value\":\"\\\"SOURCE_TYPE_ORIGIN\\\"\",\"index\":true},{\"key\":\"status\",\"value\":\"\\\"OBJECT_STATUS_CREATED\\\"\",\"index\":true},{\"key\":\"visibility\",\"value\":\"\\\"VISIBILITY_TYPE_PRIVATE\\\"\",\"index\":true}]}],\"codespace\":\"\"},{\"code\":0,\"data\":\"EisKKS9ncmVlbmZpZWxkLnN0b3JhZ2UuTXNnU2VhbE9iamVjdFJlc3BvbnNlGggAAAAAAAE+Ag==\",\"log\":\"[{\\\"msg_index\\\":0,\\\"events\\\":[{\\\"type\\\":\\\"message\\\",\\\"attributes\\\":[{\\\"key\\\":\\\"action\\\",\\\"value\\\":\\\"/greenfield.storage.MsgSealObject\\\"},{\\\"key\\\":\\\"sender\\\",\\\"value\\\":\\\"0xc5890f517eE07D5aAE4872D45c5a71EF7e11a436\\\"},{\\\"key\\\":\\\"module\\\",\\\"value\\\":\\\"storage\\\"}]},{\\\"type\\\":\\\"greenfield.payment.EventStreamRecordUpdate\\\",\\\"attributes\\\":[{\\\"key\\\":\\\"account\\\",\\\"value\\\":\\\"\\\\\\\"0x2C88091905582aF5F118C5C9a33f47B9445e78BB\\\\\\\"\\\"},{\\\"key\\\":\\\"buffer_balance\\\",\\\"value\\\":\\\"\\\\\\\"6060000\\\\\\\"\\\"},{\\\"key\\\":\\\"crud_timestamp\\\",\\\"value\\\":\\\"\\\\\\\"1707127418\\\\\\\"\\\"},{\\\"key\\\":\\\"frozen_netflow_rate\\\",\\\"value\\\":\\\"\\\\\\\"0\\\\\\\"\\\"},{\\\"key\\\":\\\"lock_balance\\\",\\\"value\\\":\\\"\\\\\\\"0\\\\\\\"\\\"},{\\\"key\\\":\\\"netflow_rate\\\",\\\"value\\\":\\\"\\\\\\\"-101000\\\\\\\"\\\"},{\\\"key\\\":\\\"settle_timestamp\\\",\\\"value\\\":\\\"\\\\\\\"1817242673\\\\\\\"\\\"},{\\\"key\\\":\\\"static_balance\\\",\\\"value\\\":\\\"\\\\\\\"11121637785600\\\\\\\"\\\"},{\\\"key\\\":\\\"status\\\",\\\"value\\\":\\\"\\\\\\\"STREAM_ACCOUNT_STATUS_ACTIVE\\\\\\\"\\\"}]},{\\\"type\\\":\\\"greenfield.payment.EventStreamRecordUpdate\\\",\\\"attributes\\\":[{\\\"key\\\":\\\"account\\\",\\\"value\\\":\\\"\\\\\\\"0x2C88091905582aF5F118C5C9a33f47B9445e78BB\\\\\\\"\\\"},{\\\"key\\\":\\\"buffer_balance\\\",\\\"value\\\":\\\"\\\\\\\"11121643845600\\\\\\\"\\\"},{\\\"key\\\":\\\"crud_timestamp\\\",\\\"value\\\":\\\"\\\\\\\"1707127418\\\\\\\"\\\"},{\\\"key\\\":\\\"frozen_netflow_rate\\\",\\\"value\\\":\\\"\\\\\\\"0\\\\\\\"\\\"},{\\\"key\\\":\\\"lock_balance\\\",\\\"value\\\":\\\"\\\\\\\"0\\\\\\\"\\\"},{\\\"key\\\":\\\"netflow_rate\\\",\\\"value\\\":\\\"\\\\\\\"-185360730760\\\\\\\"\\\"},{\\\"key\\\":\\\"settle_timestamp\\\",\\\"value\\\":\\\"\\\\\\\"1707127448\\\\\\\"\\\"},{\\\"key\\\":\\\"static_balance\\\",\\\"value\\\":\\\"\\\\\\\"0\\\\\\\"\\\"},{\\\"key\\\":\\\"status\\\",\\\"value\\\":\\\"\\\\\\\"STREAM_ACCOUNT_STATUS_ACTIVE\\\\\\\"\\\"}]},{\\\"type\\\":\\\"greenfield.payment.EventStreamRecordUpdate\\\",\\\"attributes\\\":[{\\\"key\\\":\\\"account\\\",\\\"value\\\":\\\"\\\\\\\"0x8D720138eC1f2006dbe283C9A0f6eCe4B5c2fF1e\\\\\\\"\\\"},{\\\"key\\\":\\\"buffer_balance\\\",\\\"value\\\":\\\"\\\\\\\"0\\\\\\\"\\\"},{\\\"key\\\":\\\"crud_timestamp\\\",\\\"value\\\":\\\"\\\\\\\"1707127418\\\\\\\"\\\"},{\\\"key\\\":\\\"frozen_netflow_rate\\\",\\\"value\\\":\\\"\\\\\\\"0\\\\\\\"\\\"},{\\\"key\\\":\\\"lock_balance\\\",\\\"value\\\":\\\"\\\\\\\"0\\\\\\\"\\\"},{\\\"key\\\":\\\"netflow_rate\\\",\\\"value\\\":\\\"\\\\\\\"106701100000\\\\\\\"\\\"},{\\\"key\\\":\\\"settle_timestamp\\\",\\\"value\\\":\\\"\\\\\\\"0\\\\\\\"\\\"},{\\\"key\\\":\\\"static_balance\\\",\\\"value\\\":\\\"\\\\\\\"352900000\\\\\\\"\\\"},{\\\"key\\\":\\\"status\\\",\\\"value\\\":\\\"\\\\\\\"STREAM_ACCOUNT_STATUS_ACTIVE\\\\\\\"\\\"}]},{\\\"type\\\":\\\"greenfield.payment.EventStreamRecordUpdate\\\",\\\"attributes\\\":[{\\\"key\\\":\\\"account\\\",\\\"value\\\":\\\"\\\\\\\"0xc2500339568AEB167147B1755FA90ede5175A9eF\\\\\\\"\\\"},{\\\"key\\\":\\\"buffer_balance\\\",\\\"value\\\":\\\"\\\\\\\"0\\\\\\\"\\\"},{\\\"key\\\":\\\"crud_timestamp\\\",\\\"value\\\":\\\"\\\\\\\"1707127418\\\\\\\"\\\"},{\\\"key\\\":\\\"frozen_netflow_rate\\\",\\\"value\\\":\\\"\\\\\\\"0\\\\\\\"\\\"},{\\\"key\\\":\\\"lock_balance\\\",\\\"value\\\":\\\"\\\\\\\"0\\\\\\\"\\\"},{\\\"key\\\":\\\"netflow_rate\\\",\\\"value\\\":\\\"\\\\\\\"76824576000\\\\\\\"\\\"},{\\\"key\\\":\\\"settle_timestamp\\\",\\\"value\\\":\\\"\\\\\\\"0\\\\\\\"\\\"},{\\\"key\\\":\\\"static_balance\\\",\\\"value\\\":\\\"\\\\\\\"0\\\\\\\"\\\"},{\\\"key\\\":\\\"status\\\",\\\"value\\\":\\\"\\\\\\\"STREAM_ACCOUNT_STATUS_ACTIVE\\\\\\\"\\\"}]},{\\\"type\\\":\\\"greenfield.payment.EventStreamRecordUpdate\\\",\\\"attributes\\\":[{\\\"key\\\":\\\"account\\\",\\\"value\\\":\\\"\\\\\\\"0xdF5F0588f6B09f0B9E58D3426252db25Dc74E7a1\\\\\\\"\\\"},{\\\"key\\\":\\\"buffer_balance\\\",\\\"value\\\":\\\"\\\\\\\"0\\\\\\\"\\\"},{\\\"key\\\":\\\"crud_timestamp\\\",\\\"value\\\":\\\"\\\\\\\"1707127418\\\\\\\"\\\"},{\\\"key\\\":\\\"frozen_netflow_rate\\\",\\\"value\\\":\\\"\\\\\\\"0\\\\\\\"\\\"},{\\\"key\\\":\\\"lock_balance\\\",\\\"value\\\":\\\"\\\\\\\"0\\\\\\\"\\\"},{\\\"key\\\":\\\"netflow_rate\\\",\\\"value\\\":\\\"\\\\\\\"7341030040\\\\\\\"\\\"},{\\\"key\\\":\\\"settle_timestamp\\\",\\\"value\\\":\\\"\\\\\\\"0\\\\\\\"\\\"},{\\\"key\\\":\\\"static_balance\\\",\\\"value\\\":\\\"\\\\\\\"2297754463520\\\\\\\"\\\"},{\\\"key\\\":\\\"status\\\",\\\"value\\\":\\\"\\\\\\\"STREAM_ACCOUNT_STATUS_ACTIVE\\\\\\\"\\\"}]},{\\\"type\\\":\\\"greenfield.virtualgroup.EventUpdateGlobalVirtualGroup\\\",\\\"attributes\\\":[{\\\"key\\\":\\\"id\\\",\\\"value\\\":\\\"4\\\"},{\\\"key\\\":\\\"primary_sp_id\\\",\\\"value\\\":\\\"1\\\"},{\\\"key\\\":\\\"secondary_sp_ids\\\",\\\"value\\\":\\\"[3,4,5,6,7,2]\\\"},{\\\"key\\\":\\\"store_size\\\",\\\"value\\\":\\\"\\\\\\\"10670080\\\\\\\"\\\"},{\\\"key\\\":\\\"total_deposit\\\",\\\"value\\\":\\\"\\\\\\\"1000000000000000000\\\\\\\"\\\"}]},{\\\"type\\\":\\\"greenfield.virtualgroup.EventCreateLocalVirtualGroup\\\",\\\"attributes\\\":[{\\\"key\\\":\\\"bucket_id\\\",\\\"value\\\":\\\"\\\\\\\"15\\\\\\\"\\\"},{\\\"key\\\":\\\"global_virtual_group_id\\\",\\\"value\\\":\\\"4\\\"},{\\\"key\\\":\\\"id\\\",\\\"value\\\":\\\"1\\\"},{\\\"key\\\":\\\"stored_size\\\",\\\"value\\\":\\\"\\\\\\\"10670080\\\\\\\"\\\"}]},{\\\"type\\\":\\\"greenfield.storage.EventSealObject\\\",\\\"attributes\\\":[{\\\"key\\\":\\\"bucket_name\\\",\\\"value\\\":\\\"\\\\\\\"phugwly1grq\\\\\\\"\\\"},{\\\"key\\\":\\\"global_virtual_group_id\\\",\\\"value\\\":\\\"4\\\"},{\\\"key\\\":\\\"local_virtual_group_id\\\",\\\"value\\\":\\\"1\\\"},{\\\"key\\\":\\\"object_id\\\",\\\"value\\\":\\\"\\\\\\\"13\\\\\\\"\\\"},{\\\"key\\\":\\\"object_name\\\",\\\"value\\\":\\\"\\\\\\\"j5lgngcf\\\\\\\"\\\"},{\\\"key\\\":\\\"operator\\\",\\\"value\\\":\\\"\\\\\\\"0xc5890f517eE07D5aAE4872D45c5a71EF7e11a436\\\\\\\"\\\"},{\\\"key\\\":\\\"status\\\",\\\"value\\\":\\\"\\\\\\\"OBJECT_STATUS_SEALED\\\\\\\"\\\"}]}]}]\",\"info\":\"\",\"gas_wanted\":\"20000\",\"gas_used\":\"120\",\"events\":[{\"type\":\"coin_spent\",\"attributes\":[{\"key\":\"spender\",\"value\":\"0xc5890f517eE07D5aAE4872D45c5a71EF7e11a436\",\"index\":true},{\"key\":\"amount\",\"value\":\"100000000000000BNB\",\"index\":true}]},{\"type\":\"coin_received\",\"attributes\":[{\"key\":\"receiver\",\"value\":\"0xf1829676DB577682E944fc3493d451B67Ff3E29F\",\"index\":true},{\"key\":\"amount\",\"value\":\"100000000000000BNB\",\"index\":true}]},{\"type\":\"transfer\",\"attributes\":[{\"key\":\"recipient\",\"value\":\"0xf1829676DB577682E944fc3493d451B67Ff3E29F\",\"index\":true},{\"key\":\"sender\",\"value\":\"0xc5890f517eE07D5aAE4872D45c5a71EF7e11a436\",\"index\":true},{\"key\":\"amount\",\"value\":\"100000000000000BNB\",\"index\":true}]},{\"type\":\"message\",\"attributes\":[{\"key\":\"sender\",\"value\":\"0xc5890f517eE07D5aAE4872D45c5a71EF7e11a436\",\"index\":true}]},{\"type\":\"tx\",\"attributes\":[{\"key\":\"fee\",\"value\":\"100000000000000BNB\",\"index\":true},{\"key\":\"fee_payer\",\"value\":\"0xc5890f517eE07D5aAE4872D45c5a71EF7e11a436\",\"index\":true}]},{\"type\":\"tx\",\"attributes\":[{\"key\":\"acc_seq\",\"value\":\"0xc5890f517eE07D5aAE4872D45c5a71EF7e11a436/2\",\"index\":true}]},{\"type\":\"tx\",\"attributes\":[{\"key\":\"signature\",\"value\":\"j0zZbXO6KlirIKvfIApRZnNYI56m6sEfpY1e1Rjq6hwuG6tG8F50IS8fMx1EyBGupkSKhadVPjqneqfZZk+hJQA=\",\"index\":true}]},{\"type\":\"message\",\"attributes\":[{\"key\":\"action\",\"value\":\"/greenfield.storage.MsgSealObject\",\"index\":true},{\"key\":\"sender\",\"value\":\"0xc5890f517eE07D5aAE4872D45c5a71EF7e11a436\",\"index\":true},{\"key\":\"module\",\"value\":\"storage\",\"index\":true}]},{\"type\":\"greenfield.payment.EventStreamRecordUpdate\",\"attributes\":[{\"key\":\"account\",\"value\":\"\\\"0x2C88091905582aF5F118C5C9a33f47B9445e78BB\\\"\",\"index\":true},{\"key\":\"buffer_balance\",\"value\":\"\\\"6060000\\\"\",\"index\":true},{\"key\":\"crud_timestamp\",\"value\":\"\\\"1707127418\\\"\",\"index\":true},{\"key\":\"frozen_netflow_rate\",\"value\":\"\\\"0\\\"\",\"index\":true},{\"key\":\"lock_balance\",\"value\":\"\\\"0\\\"\",\"index\":true},{\"key\":\"netflow_rate\",\"value\":\"\\\"-101000\\\"\",\"index\":true},{\"key\":\"settle_timestamp\",\"value\":\"\\\"1817242673\\\"\",\"index\":true},{\"key\":\"static_balance\",\"value\":\"\\\"11121637785600\\\"\",\"index\":true},{\"key\":\"status\",\"value\":\"\\\"STREAM_ACCOUNT_STATUS_ACTIVE\\\"\",\"index\":true}]},{\"type\":\"greenfield.payment.EventStreamRecordUpdate\",\"attributes\":[{\"key\":\"account\",\"value\":\"\\\"0x2C88091905582aF5F118C5C9a33f47B9445e78BB\\\"\",\"index\":true},{\"key\":\"buffer_balance\",\"value\":\"\\\"11121643845600\\\"\",\"index\":true},{\"key\":\"crud_timestamp\",\"value\":\"\\\"1707127418\\\"\",\"index\":true},{\"key\":\"frozen_netflow_rate\",\"value\":\"\\\"0\\\"\",\"index\":true},{\"key\":\"lock_balance\",\"value\":\"\\\"0\\\"\",\"index\":true},{\"key\":\"netflow_rate\",\"value\":\"\\\"-185360730760\\\"\",\"index\":true},{\"key\":\"settle_timestamp\",\"value\":\"\\\"1707127448\\\"\",\"index\":true},{\"key\":\"static_balance\",\"value\":\"\\\"0\\\"\",\"index\":true},{\"key\":\"status\",\"value\":\"\\\"STREAM_ACCOUNT_STATUS_ACTIVE\\\"\",\"index\":true}]},{\"type\":\"greenfield.payment.EventStreamRecordUpdate\",\"attributes\":[{\"key\":\"account\",\"value\":\"\\\"0x8D720138eC1f2006dbe283C9A0f6eCe4B5c2fF1e\\\"\",\"index\":true},{\"key\":\"buffer_balance\",\"value\":\"\\\"0\\\"\",\"index\":true},{\"key\":\"crud_timestamp\",\"value\":\"\\\"1707127418\\\"\",\"index\":true},{\"key\":\"frozen_netflow_rate\",\"value\":\"\\\"0\\\"\",\"index\":true},{\"key\":\"lock_balance\",\"value\":\"\\\"0\\\"\",\"index\":true},{\"key\":\"netflow_rate\",\"value\":\"\\\"106701100000\\\"\",\"index\":true},{\"key\":\"settle_timestamp\",\"value\":\"\\\"0\\\"\",\"index\":true},{\"key\":\"static_balance\",\"value\":\"\\\"352900000\\\"\",\"index\":true},{\"key\":\"status\",\"value\":\"\\\"STREAM_ACCOUNT_STATUS_ACTIVE\\\"\",\"index\":true}]},{\"type\":\"greenfield.payment.EventStreamRecordUpdate\",\"attributes\":[{\"key\":\"account\",\"value\":\"\\\"0xc2500339568AEB167147B1755FA90ede5175A9eF\\\"\",\"index\":true},{\"key\":\"buffer_balance\",\"value\":\"\\\"0\\\"\",\"index\":true},{\"key\":\"crud_timestamp\",\"value\":\"\\\"1707127418\\\"\",\"index\":true},{\"key\":\"frozen_netflow_rate\",\"value\":\"\\\"0\\\"\",\"index\":true},{\"key\":\"lock_balance\",\"value\":\"\\\"0\\\"\",\"index\":true},{\"key\":\"netflow_rate\",\"value\":\"\\\"76824576000\\\"\",\"index\":true},{\"key\":\"settle_timestamp\",\"value\":\"\\\"0\\\"\",\"index\":true},{\"key\":\"static_balance\",\"value\":\"\\\"0\\\"\",\"index\":true},{\"key\":\"status\",\"value\":\"\\\"STREAM_ACCOUNT_STATUS_ACTIVE\\\"\",\"index\":true}]},{\"type\":\"greenfield.payment.EventStreamRecordUpdate\",\"attributes\":[{\"key\":\"account\",\"value\":\"\\\"0xdF5F0588f6B09f0B9E58D3426252db25Dc74E7a1\\\"\",\"index\":true},{\"key\":\"buffer_balance\",\"value\":\"\\\"0\\\"\",\"index\":true},{\"key\":\"crud_timestamp\",\"value\":\"\\\"1707127418\\\"\",\"index\":true},{\"key\":\"frozen_netflow_rate\",\"value\":\"\\\"0\\\"\",\"index\":true},{\"key\":\"lock_balance\",\"value\":\"\\\"0\\\"\",\"index\":true},{\"key\":\"netflow_rate\",\"value\":\"\\\"7341030040\\\"\",\"index\":true},{\"key\":\"settle_timestamp\",\"value\":\"\\\"0\\\"\",\"index\":true},{\"key\":\"static_balance\",\"value\":\"\\\"2297754463520\\\"\",\"index\":true},{\"key\":\"status\",\"value\":\"\\\"STREAM_ACCOUNT_STATUS_ACTIVE\\\"\",\"index\":true}]},{\"type\":\"greenfield.virtualgroup.EventUpdateGlobalVirtualGroup\",\"attributes\":[{\"key\":\"id\",\"value\":\"4\",\"index\":true},{\"key\":\"primary_sp_id\",\"value\":\"1\",\"index\":true},{\"key\":\"secondary_sp_ids\",\"value\":\"[3,4,5,6,7,2]\",\"index\":true},{\"key\":\"store_size\",\"value\":\"\\\"10670080\\\"\",\"index\":true},{\"key\":\"total_deposit\",\"value\":\"\\\"1000000000000000000\\\"\",\"index\":true}]},{\"type\":\"greenfield.virtualgroup.EventCreateLocalVirtualGroup\",\"attributes\":[{\"key\":\"bucket_id\",\"value\":\"\\\"15\\\"\",\"index\":true},{\"key\":\"global_virtual_group_id\",\"value\":\"4\",\"index\":true},{\"key\":\"id\",\"value\":\"1\",\"index\":true},{\"key\":\"stored_size\",\"value\":\"\\\"10670080\\\"\",\"index\":true}]},{\"type\":\"greenfield.storage.EventSealObject\",\"attributes\":[{\"key\":\"bucket_name\",\"value\":\"\\\"phugwly1grq\\\"\",\"index\":true},{\"key\":\"global_virtual_group_id\",\"value\":\"4\",\"index\":true},{\"key\":\"local_virtual_group_id\",\"value\":\"1\",\"index\":true},{\"key\":\"object_id\",\"value\":\"\\\"13\\\"\",\"index\":true},{\"key\":\"object_name\",\"value\":\"\\\"j5lgngcf\\\"\",\"index\":true},{\"key\":\"operator\",\"value\":\"\\\"0xc5890f517eE07D5aAE4872D45c5a71EF7e11a436\\\"\",\"index\":true},{\"key\":\"status\",\"value\":\"\\\"OBJECT_STATUS_SEALED\\\"\",\"index\":true}]}],\"codespace\":\"\"},{\"code\":0,\"data\":\"EjQKMi9ncmVlbmZpZWxkLnN0b3JhZ2UuTXNnVXBkYXRlT2JqZWN0Q29udGVudFJlc3BvbnNlEjoKOC9ncmVlbmZpZWxkLnN0b3JhZ2UuTXNnQ2FuY2VsVXBkYXRlT2JqZWN0Q29udGVudFJlc3BvbnNlGggAAAAAAAFppA==\",\"log\":\"[{\\\"msg_index\\\":0,\\\"events\\\":[{\\\"type\\\":\\\"message\\\",\\\"attributes\\\":[{\\\"key\\\":\\\"action\\\",\\\"value\\\":\\\"/greenfield.storage.MsgUpdateObjectContent\\\"},{\\\"key\\\":\\\"sender\\\",\\\"value\\\":\\\"0x2C88091905582aF5F118C5C9a33f47B9445e78BB\\\"},{\\\"key\\\":\\\"module\\\",\\\"value\\\":\\\"storage\\\"}]},{\\\"type\\\":\\\"coin_spent\\\",\\\"attributes\\\":[{\\\"key\\\":\\\"spender\\\",\\\"value\\\":\\\"0x2C88091905582aF5F118C5C9a33f47B9445e78BB\\\"},{\\\"key\\\":\\\"amount\\\",\\\"value\\\":\\\"1112163778560BNB\\\"}]},{\\\"type\\\":\\\"coin_received\\\",\\\"attributes\\\":[{\\\"key\\\":\\\"receiver\\\",\\\"value\\\":\\\"0x040fFD5925D40E11c67b7238A7fc9957850B8b9a\\\"},{\\\"key\\\":\\\"amount\\\",\\\"value\\\":\\\"1112163778560BNB\\\"}]},{\\\"type\\\":\\\"transfer\\\",\\\"attributes\\\":[{\\\"key\\\":\\\"recipient\\\",\\\"value\\\":\\\"0x040fFD5925D40E11c67b7238A7fc9957850B8b9a\\\"},{\\\"key\\\":\\\"sender\\\",\\\"value\\\":\\\"0x2C88091905582aF5F118C5C9a33f47B9445e78BB\\\"},{\\\"key\\\":\\\"amount\\\",\\\"value\\\":\\\"1112163778560BNB\\\"}]},{\\\"type\\\":\\\"message\\\",\\\"attributes\\\":[{\\\"key\\\":\\\"sender\\\",\\\"value\\\":\\\"0x2C88091905582aF5F118C5C9a33f47B9445e78BB\\\"}]},{\\\"type\\\":\\\"greenfield.payment.EventDeposit\\\",\\\"attributes\\\":[{\\\"key\\\":\\\"amount\\\",\\\"value\\\":\\\"\\\\\\\"1112163778560\\\\\\\"\\\"},{\\\"key\\\":\\\"from\\\",\\\"value\\\":\\\"\\\\\\\"0x2C88091905582aF5F118C5C9a33f47B9445e78BB\\\\\\\"\\\"},{\\\"key\\\":\\\"to\\\",\\\"value\\\":\\\"\\\\\\\"0x2C88091905582aF5F118C5C9a33f47B9445e78BB\\\\\\\"\\\"}]},{\\\"type\\\":\\\"greenfield.payment.EventStreamRecordUpdate\\\",\\\"attributes\\\":[{\\\"key\\\":\\\"account\\\",\\\"value\\\":\\\"\\\\\\\"0x2C88091905582aF5F118C5C9a33f47B9445e78BB\\\\\\\"\\\"},{\\\"key\\\":\\\"buffer_balance\\\",\\\"value\\\":\\\"\\\\\\\"11121643845600\\\\\\\"\\\"},{\\\"key\\\":\\\"crud_timestamp\\\",\\\"value\\\":\\\"\\\\\\\"1707127418\\\\\\\"\\\"},{\\\"key\\\":\\\"frozen_netflow_rate\\\",\\\"value\\\":\\\"\\\\\\\"0\\\\\\\"\\\"},{\\\"key\\\":\\\"lock_balance\\\",\\\"value\\\":\\\"\\\\\\\"1112163778560\\\\\\\"\\\"},{\\\"key\\\":\\\"netflow_rate\\\",\\\"value\\\":\\\"\\\\\\\"-185360730760\\\\\\\"\\\"},{\\\"key\\\":\\\"settle_timestamp\\\",\\\"value\\\":\\\"\\\\\\\"1707127448\\\\\\\"\\\"},{\\\"key\\\":\\\"static_balance\\\",\\\"value\\\":\\\"\\\\\\\"0\\\\\\\"\\\"},{\\\"key\\\":\\\"status\\\",\\\"value\\\":\\\"\\\\\\\"STREAM_ACCOUNT_STATUS_ACTIVE\\\\\\\"\\\"}]},{\\\"type\\\":\\\"greenfield.storage.EventUpdateObjectContent\\\",\\\"attributes\\\":[{\\\"key\\\":\\\"bucket_name\\\",\\\"value\\\":\\\"\\\\\\\"\\\\\\\"\\\"},{\\\"key\\\":\\\"checksums\\\",\\\"value\\\":\\\"[\\\\\\\"AlHQDThmcsFQcqMRtWiBvUcOK7Q1qmGMpFfrREVrWqE=\\\\\\\",\\\\\\\"AlHQDThmcsFQcqMRtWiBvUcOK7Q1qmGMpFfrREVrWqE=\\\\\\\",\\\\\\\"AlHQDThmcsFQcqMRtWiBvUcOK7Q1qmGMpFfrREVrWqE=\\\\\\\",\\\\\\\"AlHQDThmcsFQcqMRtWiBvUcOK7Q1qmGMpFfrREVrWqE=\\\\\\\",\\\\\\\"AlHQDThmcsFQcqMRtWiBvUcOK7Q1qmGMpFfrREVrWqE=\\\\\\\",\\\\\\\"AlHQDThmcsFQcqMRtWiBvUcOK7Q1qmGMpFfrREVrWqE=\\\\\\\",\\\\\\\"AlHQDThmcsFQcqMRtWiBvUcOK7Q1qmGMpFfrREVrWqE=\\\\\\\"]\\\"},{\\\"key\\\":\\\"object_id\\\",\\\"value\\\":\\\"\\\\\\\"13\\\\\\\"\\\"},{\\\"key\\\":\\\"object_name\\\",\\\"value\\\":\\\"\\\\\\\"\\\\\\\"\\\"},{\\\"key\\\":\\\"operator\\\",\\\"value\\\":\\\"\\\\\\\"0x2C88091905582aF5F118C5C9a33f47B9445e78BB\\\\\\\"\\\"},{\\\"key\\\":\\\"payload_size\\\",\\\"value\\\":\\\"\\\\\\\"1067008\\\\\\\"\\\"},{\\\"key\\\":\\\"version\\\",\\\"value\\\":\\\"\\\\\\\"1\\\\\\\"\\\"}]}]},{\\\"msg_index\\\":1,\\\"events\\\":[{\\\"type\\\":\\\"message\\\",\\\"attributes\\\":[{\\\"key\\\":\\\"action\\\",\\\"value\\\":\\\"/greenfield.storage.MsgCancelUpdateObjectContent\\\"},{\\\"key\\\":\\\"sender\\\",\\\"value\\\":\\\"0x2C88091905582aF5F118C5C9a33f47B9445e78BB\\\"},{\\\"key\\\":\\\"module\\\",\\\"value\\\":\\\"storage\\\"}]},{\\\"type\\\":\\\"greenfield.payment.EventStreamRecordUpdate\\\",\\\"attributes\\\":[{\\\"key\\\":\\\"account\\\",\\\"value\\\":\\\"\\\\\\\"0x2C88091905582aF5F118C5C9a33f47B9445e78BB\\\\\\\"\\\"},{\\\"key\\\":\\\"buffer_balance\\\",\\\"value\\\":\\\"\\\\\\\"11121643845600\\\\\\\"\\\"},{\\\"key\\\":\\\"crud_timestamp\\\",\\\"value\\\":\\\"\\\\\\\"1707127418\\\\\\\"\\\"},{\\\"key\\\":\\\"frozen_netflow_rate\\\",\\\"value\\\":\\\"\\\\\\\"0\\\\\\\"\\\"},{\\\"key\\\":\\\"lock_balance\\\",\\\"value\\\":\\\"\\\\\\\"0\\\\\\\"\\\"},{\\\"key\\\":\\\"netflow_rate\\\",\\\"value\\\":\\\"\\\\\\\"-185360730760\\\\\\\"\\\"},{\\\"key\\\":\\\"settle_timestamp\\\",\\\"value\\\":\\\"\\\\\\\"1707127453\\\\\\\"\\\"},{\\\"key\\\":\\\"static_balance\\\",\\\"value\\\":\\\"\\\\\\\"1112163778560\\\\\\\"\\\"},{\\\"key\\\":\\\"status\\\",\\\"value\\\":\\\"\\\\\\\"STREAM_ACCOUNT_STATUS_ACTIVE\\\\\\\"\\\"}]},{\\\"type\\\":\\\"greenfield.storage.EventCancelUpdateObjectContent\\\",\\\"attributes\\\":[{\\\"key\\\":\\\"bucket_name\\\",\\\"value\\\":\\\"\\\\\\\"phugwly1grq\\\\\\\"\\\"},{\\\"key\\\":\\\"object_id\\\",\\\"value\\\":\\\"\\\\\\\"13\\\\\\\"\\\"},{\\\"key\\\":\\\"object_name\\\",\\\"value\\\":\\\"\\\\\\\"j5lgngcf\\\\\\\"\\\"},{\\\"key\\\":\\\"operator\\\",\\\"value\\\":\\\"\\\\\\\"0x2C88091905582aF5F118C5C9a33f47B9445e78BB\\\\\\\"\\\"}]}]}]\",\"info\":\"\",\"gas_wanted\":\"20000\",\"gas_used\":\"2400\",\"events\":[{\"type\":\"coin_spent\",\"attributes\":[{\"key\":\"spender\",\"value\":\"0x2C88091905582aF5F118C5C9a33f47B9445e78BB\",\"index\":true},{\"key\":\"amount\",\"value\":\"100000000000000BNB\",\"index\":true}]},{\"type\":\"coin_received\",\"attributes\":[{\"key\":\"receiver\",\"value\":\"0xf1829676DB577682E944fc3493d451B67Ff3E29F\",\"index\":true},{\"key\":\"amount\",\"value\":\"100000000000000BNB\",\"index\":true}]},{\"type\":\"transfer\",\"attributes\":[{\"key\":\"recipient\",\"value\":\"0xf1829676DB577682E944fc3493d451B67Ff3E29F\",\"index\":true},{\"key\":\"sender\",\"value\":\"0x2C88091905582aF5F118C5C9a33f47B9445e78BB\",\"index\":true},{\"key\":\"amount\",\"value\":\"100000000000000BNB\",\"index\":true}]},{\"type\":\"message\",\"attributes\":[{\"key\":\"sender\",\"value\":\"0x2C88091905582aF5F118C5C9a33f47B9445e78BB\",\"index\":true}]},{\"type\":\"tx\",\"attributes\":[{\"key\":\"fee\",\"value\":\"100000000000000BNB\",\"index\":true},{\"key\":\"fee_payer\",\"value\":\"0x2C88091905582aF5F118C5C9a33f47B9445e78BB\",\"index\":true}]},{\"type\":\"tx\",\"attributes\":[{\"key\":\"acc_seq\",\"value\":\"0x2C88091905582aF5F118C5C9a33f47B9445e78BB/1\",\"index\":true}]},{\"type\":\"tx\",\"attributes\":[{\"key\":\"signature\",\"value\":\"sHbkyex4O/2nuFjINP3+BiFR/2M5RuQrRjdZiFrRUnIR9DFGUez3c933DOhkLYmLu67upQgjg7SFpouD0DhObAE=\",\"index\":true}]},{\"type\":\"message\",\"attributes\":[{\"key\":\"action\",\"value\":\"/greenfield.storage.MsgUpdateObjectContent\",\"index\":true},{\"key\":\"sender\",\"value\":\"0x2C88091905582aF5F118C5C9a33f47B9445e78BB\",\"index\":true},{\"key\":\"module\",\"value\":\"storage\",\"index\":true}]},{\"type\":\"coin_spent\",\"attributes\":[{\"key\":\"spender\",\"value\":\"0x2C88091905582aF5F118C5C9a33f47B9445e78BB\",\"index\":true},{\"key\":\"amount\",\"value\":\"1112163778560BNB\",\"index\":true}]},{\"type\":\"coin_received\",\"attributes\":[{\"key\":\"receiver\",\"value\":\"0x040fFD5925D40E11c67b7238A7fc9957850B8b9a\",\"index\":true},{\"key\":\"amount\",\"value\":\"1112163778560BNB\",\"index\":true}]},{\"type\":\"transfer\",\"attributes\":[{\"key\":\"recipient\",\"value\":\"0x040fFD5925D40E11c67b7238A7fc9957850B8b9a\",\"index\":true},{\"key\":\"sender\",\"value\":\"0x2C88091905582aF5F118C5C9a33f47B9445e78BB\",\"index\":true},{\"key\":\"amount\",\"value\":\"1112163778560BNB\",\"index\":true}]},{\"type\":\"message\",\"attributes\":[{\"key\":\"sender\",\"value\":\"0x2C88091905582aF5F118C5C9a33f47B9445e78BB\",\"index\":true}]},{\"type\":\"greenfield.payment.EventDeposit\",\"attributes\":[{\"key\":\"amount\",\"value\":\"\\\"1112163778560\\\"\",\"index\":true},{\"key\":\"from\",\"value\":\"\\\"0x2C88091905582aF5F118C5C9a33f47B9445e78BB\\\"\",\"index\":true},{\"key\":\"to\",\"value\":\"\\\"0x2C88091905582aF5F118C5C9a33f47B9445e78BB\\\"\",\"index\":true}]},{\"type\":\"greenfield.payment.EventStreamRecordUpdate\",\"attributes\":[{\"key\":\"account\",\"value\":\"\\\"0x2C88091905582aF5F118C5C9a33f47B9445e78BB\\\"\",\"index\":true},{\"key\":\"buffer_balance\",\"value\":\"\\\"11121643845600\\\"\",\"index\":true},{\"key\":\"crud_timestamp\",\"value\":\"\\\"1707127418\\\"\",\"index\":true},{\"key\":\"frozen_netflow_rate\",\"value\":\"\\\"0\\\"\",\"index\":true},{\"key\":\"lock_balance\",\"value\":\"\\\"1112163778560\\\"\",\"index\":true},{\"key\":\"netflow_rate\",\"value\":\"\\\"-185360730760\\\"\",\"index\":true},{\"key\":\"settle_timestamp\",\"value\":\"\\\"1707127448\\\"\",\"index\":true},{\"key\":\"static_balance\",\"value\":\"\\\"0\\\"\",\"index\":true},{\"key\":\"status\",\"value\":\"\\\"STREAM_ACCOUNT_STATUS_ACTIVE\\\"\",\"index\":true}]},{\"type\":\"greenfield.storage.EventUpdateObjectContent\",\"attributes\":[{\"key\":\"bucket_name\",\"value\":\"\\\"\\\"\",\"index\":true},{\"key\":\"checksums\",\"value\":\"[\\\"AlHQDThmcsFQcqMRtWiBvUcOK7Q1qmGMpFfrREVrWqE=\\\",\\\"AlHQDThmcsFQcqMRtWiBvUcOK7Q1qmGMpFfrREVrWqE=\\\",\\\"AlHQDThmcsFQcqMRtWiBvUcOK7Q1qmGMpFfrREVrWqE=\\\",\\\"AlHQDThmcsFQcqMRtWiBvUcOK7Q1qmGMpFfrREVrWqE=\\\",\\\"AlHQDThmcsFQcqMRtWiBvUcOK7Q1qmGMpFfrREVrWqE=\\\",\\\"AlHQDThmcsFQcqMRtWiBvUcOK7Q1qmGMpFfrREVrWqE=\\\",\\\"AlHQDThmcsFQcqMRtWiBvUcOK7Q1qmGMpFfrREVrWqE=\\\"]\",\"index\":true},{\"key\":\"object_id\",\"value\":\"\\\"13\\\"\",\"index\":true},{\"key\":\"object_name\",\"value\":\"\\\"\\\"\",\"index\":true},{\"key\":\"operator\",\"value\":\"\\\"0x2C88091905582aF5F118C5C9a33f47B9445e78BB\\\"\",\"index\":true},{\"key\":\"payload_size\",\"value\":\"\\\"1067008\\\"\",\"index\":true},{\"key\":\"version\",\"value\":\"\\\"1\\\"\",\"index\":true}]},{\"type\":\"message\",\"attributes\":[{\"key\":\"action\",\"value\":\"/greenfield.storage.MsgCancelUpdateObjectContent\",\"index\":true},{\"key\":\"sender\",\"value\":\"0x2C88091905582aF5F118C5C9a33f47B9445e78BB\",\"index\":true},{\"key\":\"module\",\"value\":\"storage\",\"index\":true}]},{\"type\":\"greenfield.payment.EventStreamRecordUpdate\",\"attributes\":[{\"key\":\"account\",\"value\":\"\\\"0x2C88091905582aF5F118C5C9a33f47B9445e78BB\\\"\",\"index\":true},{\"key\":\"buffer_balance\",\"value\":\"\\\"11121643845600\\\"\",\"index\":true},{\"key\":\"crud_timestamp\",\"value\":\"\\\"1707127418\\\"\",\"index\":true},{\"key\":\"frozen_netflow_rate\",\"value\":\"\\\"0\\\"\",\"index\":true},{\"key\":\"lock_balance\",\"value\":\"\\\"0\\\"\",\"index\":true},{\"key\":\"netflow_rate\",\"value\":\"\\\"-185360730760\\\"\",\"index\":true},{\"key\":\"settle_timestamp\",\"value\":\"\\\"1707127453\\\"\",\"index\":true},{\"key\":\"static_balance\",\"value\":\"\\\"1112163778560\\\"\",\"index\":true},{\"key\":\"status\",\"value\":\"\\\"STREAM_ACCOUNT_STATUS_ACTIVE\\\"\",\"index\":true}]},{\"type\":\"greenfield.storage.EventCancelUpdateObjectContent\",\"attributes\":[{\"key\":\"bucket_name\",\"value\":\"\\\"phugwly1grq\\\"\",\"index\":true},{\"key\":\"object_id\",\"value\":\"\\\"13\\\"\",\"index\":true},{\"key\":\"object_name\",\"value\":\"\\\"j5lgngcf\\\"\",\"index\":true},{\"key\":\"operator\",\"value\":\"\\\"0x2C88091905582aF5F118C5C9a33f47B9445e78BB\\\"\",\"index\":true}]}],\"codespace\":\"\"},{\"code\":0,\"data\":\"EjQKMi9ncmVlbmZpZWxkLnN0b3JhZ2UuTXNnVXBkYXRlT2JqZWN0Q29udGVudFJlc3BvbnNlGggAAAAAAAD2Dg==\",\"log\":\"[{\\\"msg_index\\\":0,\\\"events\\\":[{\\\"type\\\":\\\"message\\\",\\\"attributes\\\":[{\\\"key\\\":\\\"action\\\",\\\"value\\\":\\\"/greenfield.storage.MsgUpdateObjectContent\\\"},{\\\"key\\\":\\\"sender\\\",\\\"value\\\":\\\"0x2C88091905582aF5F118C5C9a33f47B9445e78BB\\\"},{\\\"key\\\":\\\"module\\\",\\\"value\\\":\\\"storage\\\"}]},{\\\"type\\\":\\\"greenfield.payment.EventStreamRecordUpdate\\\",\\\"attributes\\\":[{\\\"key\\\":\\\"account\\\",\\\"value\\\":\\\"\\\\\\\"0x2C88091905582aF5F118C5C9a33f47B9445e78BB\\\\\\\"\\\"},{\\\"key\\\":\\\"buffer_balance\\\",\\\"value\\\":\\\"\\\\\\\"11121643845600\\\\\\\"\\\"},{\\\"key\\\":\\\"crud_timestamp\\\",\\\"value\\\":\\\"\\\\\\\"1707127418\\\\\\\"\\\"},{\\\"key\\\":\\\"frozen_netflow_rate\\\",\\\"value\\\":\\\"\\\\\\\"0\\\\\\\"\\\"},{\\\"key\\\":\\\"lock_balance\\\",\\\"value\\\":\\\"\\\\\\\"1112163778560\\\\\\\"\\\"},{\\\"key\\\":\\\"netflow_rate\\\",\\\"value\\\":\\\"\\\\\\\"-185360730760\\\\\\\"\\\"},{\\\"key\\\":\\\"settle_timestamp\\\",\\\"value\\\":\\\"\\\\\\\"1707127448\\\\\\\"\\\"},{\\\"key\\\":\\\"static_balance\\\",\\\"value\\\":\\\"\\\\\\\"0\\\\\\\"\\\"},{\\\"key\\\":\\\"status\\\",\\\"value\\\":\\\"\\\\\\\"STREAM_ACCOUNT_STATUS_ACTIVE\\\\\\\"\\\"}]},{\\\"type\\\":\\\"greenfield.storage.EventUpdateObjectContent\\\",\\\"attributes\\\":[{\\\"key\\\":\\\"bucket_name\\\",\\\"value\\\":\\\"\\\\\\\"\\\\\\\"\\\"},{\\\"key\\\":\\\"checksums\\\",\\\"value\\\":\\\"[\\\\\\\"AlHQDThmcsFQcqMRtWiBvUcOK7Q1qmGMpFfrREVrWqE=\\\\\\\",\\\\\\\"AlHQDThmcsFQcqMRtWiBvUcOK7Q1qmGMpFfrREVrWqE=\\\\\\\",\\\\\\\"AlHQDThmcsFQcqMRtWiBvUcOK7Q1qmGMpFfrREVrWqE=\\\\\\\",\\\\\\\"AlHQDThmcsFQcqMRtWiBvUcOK7Q1qmGMpFfrREVrWqE=\\\\\\\",\\\\\\\"AlHQDThmcsFQcqMRtWiBvUcOK7Q1qmGMpFfrREVrWqE=\\\\\\\",\\\\\\\"AlHQDThmcsFQcqMRtWiBvUcOK7Q1qmGMpFfrREVrWqE=\\\\\\\",\\\\\\\"AlHQDThmcsFQcqMRtWiBvUcOK7Q1qmGMpFfrREVrWqE=\\\\\\\"]\\\"},{\\\"key\\\":\\\"object_id\\\",\\\"value\\\":\\\"\\\\\\\"13\\\\\\\"\\\"},{\\\"key\\\":\\\"object_name\\\",\\\"value\\\":\\\"\\\\\\\"\\\\\\\"\\\"},{\\\"key\\\":\\\"operator\\\",\\\"value\\\":\\\"\\\\\\\"0x2C88091905582aF5F118C5C9a33f47B9445e78BB\\\\\\\"\\\"},{\\\"key\\\":\\\"payload_size\\\",\\\"value\\\":\\\"\\\\\\\"1067008\\\\\\\"\\\"},{\\\"key\\\":\\\"version\\\",\\\"value\\\":\\\"\\\\\\\"1\\\\\\\"\\\"}]}]}]\",\"info\":\"\",\"gas_wanted\":\"20000\",\"gas_used\":\"1200\",\"events\":[{\"type\":\"coin_spent\",\"attributes\":[{\"key\":\"spender\",\"value\":\"0x2C88091905582aF5F118C5C9a33f47B9445e78BB\",\"index\":true},{\"key\":\"amount\",\"value\":\"100000000000000BNB\",\"index\":true}]},{\"type\":\"coin_received\",\"attributes\":[{\"key\":\"receiver\",\"value\":\"0xf1829676DB577682E944fc3493d451B67Ff3E29F\",\"index\":true},{\"key\":\"amount\",\"value\":\"100000000000000BNB\",\"index\":true}]},{\"type\":\"transfer\",\"attributes\":[{\"key\":\"recipient\",\"value\":\"0xf1829676DB577682E944fc3493d451B67Ff3E29F\",\"index\":true},{\"key\":\"sender\",\"value\":\"0x2C88091905582aF5F118C5C9a33f47B9445e78BB\",\"index\":true},{\"key\":\"amount\",\"value\":\"100000000000000BNB\",\"index\":true}]},{\"type\":\"message\",\"attributes\":[{\"key\":\"sender\",\"value\":\"0x2C88091905582aF5F118C5C9a33f47B9445e78BB\",\"index\":true}]},{\"type\":\"tx\",\"attributes\":[{\"key\":\"fee\",\"value\":\"100000000000000BNB\",\"index\":true},{\"key\":\"fee_payer\",\"value\":\"0x2C88091905582aF5F118C5C9a33f47B9445e78BB\",\"index\":true}]},{\"type\":\"tx\",\"attributes\":[{\"key\":\"acc_seq\",\"value\":\"0x2C88091905582aF5F118C5C9a33f47B9445e78BB/2\",\"index\":true}]},{\"type\":\"tx\",\"attributes\":[{\"key\":\"signature\",\"value\":\"xuS1hHbCaNJtB8scH1l2oYT80Tr86DlxSBLB4KTvuphhjum/GYJkBJJQJuHrzkU/5oxQnuAUOQlnfVwsVbVJgAE=\",\"index\":true}]},{\"type\":\"message\",\"attributes\":[{\"key\":\"action\",\"value\":\"/greenfield.storage.MsgUpdateObjectContent\",\"index\":true},{\"key\":\"sender\",\"value\":\"0x2C88091905582aF5F118C5C9a33f47B9445e78BB\",\"index\":true},{\"key\":\"module\",\"value\":\"storage\",\"index\":true}]},{\"type\":\"greenfield.payment.EventStreamRecordUpdate\",\"attributes\":[{\"key\":\"account\",\"value\":\"\\\"0x2C88091905582aF5F118C5C9a33f47B9445e78BB\\\"\",\"index\":true},{\"key\":\"buffer_balance\",\"value\":\"\\\"11121643845600\\\"\",\"index\":true},{\"key\":\"crud_timestamp\",\"value\":\"\\\"1707127418\\\"\",\"index\":true},{\"key\":\"frozen_netflow_rate\",\"value\":\"\\\"0\\\"\",\"index\":true},{\"key\":\"lock_balance\",\"value\":\"\\\"1112163778560\\\"\",\"index\":true},{\"key\":\"netflow_rate\",\"value\":\"\\\"-185360730760\\\"\",\"index\":true},{\"key\":\"settle_timestamp\",\"value\":\"\\\"1707127448\\\"\",\"index\":true},{\"key\":\"static_balance\",\"value\":\"\\\"0\\\"\",\"index\":true},{\"key\":\"status\",\"value\":\"\\\"STREAM_ACCOUNT_STATUS_ACTIVE\\\"\",\"index\":true}]},{\"type\":\"greenfield.storage.EventUpdateObjectContent\",\"attributes\":[{\"key\":\"bucket_name\",\"value\":\"\\\"\\\"\",\"index\":true},{\"key\":\"checksums\",\"value\":\"[\\\"AlHQDThmcsFQcqMRtWiBvUcOK7Q1qmGMpFfrREVrWqE=\\\",\\\"AlHQDThmcsFQcqMRtWiBvUcOK7Q1qmGMpFfrREVrWqE=\\\",\\\"AlHQDThmcsFQcqMRtWiBvUcOK7Q1qmGMpFfrREVrWqE=\\\",\\\"AlHQDThmcsFQcqMRtWiBvUcOK7Q1qmGMpFfrREVrWqE=\\\",\\\"AlHQDThmcsFQcqMRtWiBvUcOK7Q1qmGMpFfrREVrWqE=\\\",\\\"AlHQDThmcsFQcqMRtWiBvUcOK7Q1qmGMpFfrREVrWqE=\\\",\\\"AlHQDThmcsFQcqMRtWiBvUcOK7Q1qmGMpFfrREVrWqE=\\\"]\",\"index\":true},{\"key\":\"object_id\",\"value\":\"\\\"13\\\"\",\"index\":true},{\"key\":\"object_name\",\"value\":\"\\\"\\\"\",\"index\":true},{\"key\":\"operator\",\"value\":\"\\\"0x2C88091905582aF5F118C5C9a33f47B9445e78BB\\\"\",\"index\":true},{\"key\":\"payload_size\",\"value\":\"\\\"1067008\\\"\",\"index\":true},{\"key\":\"version\",\"value\":\"\\\"1\\\"\",\"index\":true}]}],\"codespace\":\"\"},{\"code\":0,\"data\":\"EjEKLy9ncmVlbmZpZWxkLnN0b3JhZ2UuTXNnUmVqZWN0U2VhbE9iamVjdFJlc3BvbnNlGggAAAAAAACd7g==\",\"log\":\"[{\\\"msg_index\\\":0,\\\"events\\\":[{\\\"type\\\":\\\"message\\\",\\\"attributes\\\":[{\\\"key\\\":\\\"action\\\",\\\"value\\\":\\\"/greenfield.storage.MsgRejectSealObject\\\"},{\\\"key\\\":\\\"sender\\\",\\\"value\\\":\\\"0xc5890f517eE07D5aAE4872D45c5a71EF7e11a436\\\"},{\\\"key\\\":\\\"module\\\",\\\"value\\\":\\\"storage\\\"}]},{\\\"type\\\":\\\"greenfield.payment.EventStreamRecordUpdate\\\",\\\"attributes\\\":[{\\\"key\\\":\\\"account\\\",\\\"value\\\":\\\"\\\\\\\"0x2C88091905582aF5F118C5C9a33f47B9445e78BB\\\\\\\"\\\"},{\\\"key\\\":\\\"buffer_balance\\\",\\\"value\\\":\\\"\\\\\\\"11121643845600\\\\\\\"\\\"},{\\\"key\\\":\\\"crud_timestamp\\\",\\\"value\\\":\\\"\\\\\\\"1707127418\\\\\\\"\\\"},{\\\"key\\\":\\\"frozen_netflow_rate\\\",\\\"value\\\":\\\"\\\\\\\"0\\\\\\\"\\\"},{\\\"key\\\":\\\"lock_balance\\\",\\\"value\\\":\\\"\\\\\\\"0\\\\\\\"\\\"},{\\\"key\\\":\\\"netflow_rate\\\",\\\"value\\\":\\\"\\\\\\\"-185360730760\\\\\\\"\\\"},{\\\"key\\\":\\\"settle_timestamp\\\",\\\"value\\\":\\\"\\\\\\\"1707127453\\\\\\\"\\\"},{\\\"key\\\":\\\"static_balance\\\",\\\"value\\\":\\\"\\\\\\\"1112163778560\\\\\\\"\\\"},{\\\"key\\\":\\\"status\\\",\\\"value\\\":\\\"\\\\\\\"STREAM_ACCOUNT_STATUS_ACTIVE\\\\\\\"\\\"}]},{\\\"type\\\":\\\"greenfield.storage.EventRejectSealObject\\\",\\\"attributes\\\":[{\\\"key\\\":\\\"bucket_name\\\",\\\"value\\\":\\\"\\\\\\\"phugwly1grq\\\\\\\"\\\"},{\\\"key\\\":\\\"for_update\\\",\\\"value\\\":\\\"true\\\"},{\\\"key\\\":\\\"object_id\\\",\\\"value\\\":\\\"\\\\\\\"13\\\\\\\"\\\"},{\\\"key\\\":\\\"object_name\\\",\\\"value\\\":\\\"\\\\\\\"j5lgngcf\\\\\\\"\\\"},{\\\"key\\\":\\\"operator\\\",\\\"value\\\":\\\"\\\\\\\"0xc5890f517eE07D5aAE4872D45c5a71EF7e11a436\\\\\\\"\\\"}]}]}]\",\"info\":\"\",\"gas_wanted\":\"20000\",\"gas_used\":\"12000\",\"events\":[{\"type\":\"coin_spent\",\"attributes\":[{\"key\":\"spender\",\"value\":\"0xc5890f517eE07D5aAE4872D45c5a71EF7e11a436\",\"index\":true},{\"key\":\"amount\",\"value\":\"100000000000000BNB\",\"index\":true}]},{\"type\":\"coin_received\",\"attributes\":[{\"key\":\"receiver\",\"value\":\"0xf1829676DB577682E944fc3493d451B67Ff3E29F\",\"index\":true},{\"key\":\"amount\",\"value\":\"100000000000000BNB\",\"index\":true}]},{\"type\":\"transfer\",\"attributes\":[{\"key\":\"recipient\",\"value\":\"0xf1829676DB577682E944fc3493d451B67Ff3E29F\",\"index\":true},{\"key\":\"sender\",\"value\":\"0xc5890f517eE07D5aAE4872D45c5a71EF7e11a436\",\"index\":true},{\"key\":\"amount\",\"value\":\"100000000000000BNB\",\"index\":true}]},{\"type\":\"message\",\"attributes\":[{\"key\":\"sender\",\"value\":\"0xc5890f517eE07D5aAE4872D45c5a71EF7e11a436\",\"index\":true}]},{\"type\":\"tx\",\"attributes\":[{\"key\":\"fee\",\"value\":\"100000000000000BNB\",\"index\":true},{\"key\":\"fee_payer\",\"value\":\"0xc5890f517eE07D5aAE4872D45c5a71EF7e11a436\",\"index\":true}]},{\"type\":\"tx\",\"attributes\":[{\"key\":\"acc_seq\",\"value\":\"0xc5890f517eE07D5aAE4872D45c5a71EF7e11a436/3\",\"index\":true}]},{\"type\":\"tx\",\"attributes\":[{\"key\":\"signature\",\"value\":\"C67q05emXtxnmcvp7vjTXG+uc48PMgT/gFCeRL34CsElcQSJjsGCOLjWuyc7NuaBXHTJe4Gl+7oPqiIrCSdkkQA=\",\"index\":true}]},{\"type\":\"message\",\"attributes\":[{\"key\":\"action\",\"value\":\"/greenfield.storage.MsgRejectSealObject\",\"index\":true},{\"key\":\"sender\",\"value\":\"0xc5890f517eE07D5aAE4872D45c5a71EF7e11a436\",\"index\":true},{\"key\":\"module\",\"value\":\"storage\",\"index\":true}]},{\"type\":\"greenfield.payment.EventStreamRecordUpdate\",\"attributes\":[{\"key\":\"account\",\"value\":\"\\\"0x2C88091905582aF5F118C5C9a33f47B9445e78BB\\\"\",\"index\":true},{\"key\":\"buffer_balance\",\"value\":\"\\\"11121643845600\\\"\",\"index\":true},{\"key\":\"crud_timestamp\",\"value\":\"\\\"1707127418\\\"\",\"index\":true},{\"key\":\"frozen_netflow_rate\",\"value\":\"\\\"0\\\"\",\"index\":true},{\"key\":\"lock_balance\",\"value\":\"\\\"0\\\"\",\"index\":true},{\"key\":\"netflow_rate\",\"value\":\"\\\"-185360730760\\\"\",\"index\":true},{\"key\":\"settle_timestamp\",\"value\":\"\\\"1707127453\\\"\",\"index\":true},{\"key\":\"static_balance\",\"value\":\"\\\"1112163778560\\\"\",\"index\":true},{\"key\":\"status\",\"value\":\"\\\"STREAM_ACCOUNT_STATUS_ACTIVE\\\"\",\"index\":true}]},{\"type\":\"greenfield.storage.EventRejectSealObject\",\"attributes\":[{\"key\":\"bucket_name\",\"value\":\"\\\"phugwly1grq\\\"\",\"index\":true},{\"key\":\"for_update\",\"value\":\"true\",\"index\":true},{\"key\":\"object_id\",\"value\":\"\\\"13\\\"\",\"index\":true},{\"key\":\"object_name\",\"value\":\"\\\"j5lgngcf\\\"\",\"index\":true},{\"key\":\"operator\",\"value\":\"\\\"0xc5890f517eE07D5aAE4872D45c5a71EF7e11a436\\\"\",\"index\":true}]}],\"codespace\":\"\"},{\"code\":0,\"data\":\"EjQKMi9ncmVlbmZpZWxkLnN0b3JhZ2UuTXNnVXBkYXRlT2JqZWN0Q29udGVudFJlc3BvbnNlGggAAAAAAAD2Dg==\",\"log\":\"[{\\\"msg_index\\\":0,\\\"events\\\":[{\\\"type\\\":\\\"message\\\",\\\"attributes\\\":[{\\\"key\\\":\\\"action\\\",\\\"value\\\":\\\"/greenfield.storage.MsgUpdateObjectContent\\\"},{\\\"key\\\":\\\"sender\\\",\\\"value\\\":\\\"0x2C88091905582aF5F118C5C9a33f47B9445e78BB\\\"},{\\\"key\\\":\\\"module\\\",\\\"value\\\":\\\"storage\\\"}]},{\\\"type\\\":\\\"greenfield.payment.EventStreamRecordUpdate\\\",\\\"attributes\\\":[{\\\"key\\\":\\\"account\\\",\\\"value\\\":\\\"\\\\\\\"0x2C88091905582aF5F118C5C9a33f47B9445e78BB\\\\\\\"\\\"},{\\\"key\\\":\\\"buffer_balance\\\",\\\"value\\\":\\\"\\\\\\\"11121643845600\\\\\\\"\\\"},{\\\"key\\\":\\\"crud_timestamp\\\",\\\"value\\\":\\\"\\\\\\\"1707127418\\\\\\\"\\\"},{\\\"key\\\":\\\"frozen_netflow_rate\\\",\\\"value\\\":\\\"\\\\\\\"0\\\\\\\"\\\"},{\\\"key\\\":\\\"lock_balance\\\",\\\"value\\\":\\\"\\\\\\\"1112163778560\\\\\\\"\\\"},{\\\"key\\\":\\\"netflow_rate\\\",\\\"value\\\":\\\"\\\\\\\"-185360730760\\\\\\\"\\\"},{\\\"key\\\":\\\"settle_timestamp\\\",\\\"value\\\":\\\"\\\\\\\"1707127448\\\\\\\"\\\"},{\\\"key\\\":\\\"static_balance\\\",\\\"value\\\":\\\"\\\\\\\"0\\\\\\\"\\\"},{\\\"key\\\":\\\"status\\\",\\\"value\\\":\\\"\\\\\\\"STREAM_ACCOUNT_STATUS_ACTIVE\\\\\\\"\\\"}]},{\\\"type\\\":\\\"greenfield.storage.EventUpdateObjectContent\\\",\\\"attributes\\\":[{\\\"key\\\":\\\"bucket_name\\\",\\\"value\\\":\\\"\\\\\\\"\\\\\\\"\\\"},{\\\"key\\\":\\\"checksums\\\",\\\"value\\\":\\\"[\\\\\\\"AlHQDThmcsFQcqMRtWiBvUcOK7Q1qmGMpFfrREVrWqE=\\\\\\\",\\\\\\\"AlHQDThmcsFQcqMRtWiBvUcOK7Q1qmGMpFfrREVrWqE=\\\\\\\",\\\\\\\"AlHQDThmcsFQcqMRtWiBvUcOK7Q1qmGMpFfrREVrWqE=\\\\\\\",\\\\\\\"AlHQDThmcsFQcqMRtWiBvUcOK7Q1qmGMpFfrREVrWqE=\\\\\\\",\\\\\\\"AlHQDThmcsFQcqMRtWiBvUcOK7Q1qmGMpFfrREVrWqE=\\\\\\\",\\\\\\\"AlHQDThmcsFQcqMRtWiBvUcOK7Q1qmGMpFfrREVrWqE=\\\\\\\",\\\\\\\"AlHQDThmcsFQcqMRtWiBvUcOK7Q1qmGMpFfrREVrWqE=\\\\\\\"]\\\"},{\\\"key\\\":\\\"object_id\\\",\\\"value\\\":\\\"\\\\\\\"13\\\\\\\"\\\"},{\\\"key\\\":\\\"object_name\\\",\\\"value\\\":\\\"\\\\\\\"\\\\\\\"\\\"},{\\\"key\\\":\\\"operator\\\",\\\"value\\\":\\\"\\\\\\\"0x2C88091905582aF5F118C5C9a33f47B9445e78BB\\\\\\\"\\\"},{\\\"key\\\":\\\"payload_size\\\",\\\"value\\\":\\\"\\\\\\\"1067008\\\\\\\"\\\"},{\\\"key\\\":\\\"version\\\",\\\"value\\\":\\\"\\\\\\\"1\\\\\\\"\\\"}]}]}]\",\"info\":\"\",\"gas_wanted\":\"20000\",\"gas_used\":\"1200\",\"events\":[{\"type\":\"coin_spent\",\"attributes\":[{\"key\":\"spender\",\"value\":\"0x2C88091905582aF5F118C5C9a33f47B9445e78BB\",\"index\":true},{\"key\":\"amount\",\"value\":\"100000000000000BNB\",\"index\":true}]},{\"type\":\"coin_received\",\"attributes\":[{\"key\":\"receiver\",\"value\":\"0xf1829676DB577682E944fc3493d451B67Ff3E29F\",\"index\":true},{\"key\":\"amount\",\"value\":\"100000000000000BNB\",\"index\":true}]},{\"type\":\"transfer\",\"attributes\":[{\"key\":\"recipient\",\"value\":\"0xf1829676DB577682E944fc3493d451B67Ff3E29F\",\"index\":true},{\"key\":\"sender\",\"value\":\"0x2C88091905582aF5F118C5C9a33f47B9445e78BB\",\"index\":true},{\"key\":\"amount\",\"value\":\"100000000000000BNB\",\"index\":true}]},{\"type\":\"message\",\"attributes\":[{\"key\":\"sender\",\"value\":\"0x2C88091905582aF5F118C5C9a33f47B9445e78BB\",\"index\":true}]},{\"type\":\"tx\",\"attributes\":[{\"key\":\"fee\",\"value\":\"100000000000000BNB\",\"index\":true},{\"key\":\"fee_payer\",\"value\":\"0x2C88091905582aF5F118C5C9a33f47B9445e78BB\",\"index\":true}]},{\"type\":\"tx\",\"attributes\":[{\"key\":\"acc_seq\",\"value\":\"0x2C88091905582aF5F118C5C9a33f47B9445e78BB/3\",\"index\":true}]},{\"type\":\"tx\",\"attributes\":[{\"key\":\"signature\",\"value\":\"cSuJzLOl+r3DV00QNY1IgOzlcsUpKwPoDxBgQpwZt7x+WncUn4XL4avv0syu864fsF/DFBRez2Wbm2dcvKeGIwA=\",\"index\":true}]},{\"type\":\"message\",\"attributes\":[{\"key\":\"action\",\"value\":\"/greenfield.storage.MsgUpdateObjectContent\",\"index\":true},{\"key\":\"sender\",\"value\":\"0x2C88091905582aF5F118C5C9a33f47B9445e78BB\",\"index\":true},{\"key\":\"module\",\"value\":\"storage\",\"index\":true}]},{\"type\":\"greenfield.payment.EventStreamRecordUpdate\",\"attributes\":[{\"key\":\"account\",\"value\":\"\\\"0x2C88091905582aF5F118C5C9a33f47B9445e78BB\\\"\",\"index\":true},{\"key\":\"buffer_balance\",\"value\":\"\\\"11121643845600\\\"\",\"index\":true},{\"key\":\"crud_timestamp\",\"value\":\"\\\"1707127418\\\"\",\"index\":true},{\"key\":\"frozen_netflow_rate\",\"value\":\"\\\"0\\\"\",\"index\":true},{\"key\":\"lock_balance\",\"value\":\"\\\"1112163778560\\\"\",\"index\":true},{\"key\":\"netflow_rate\",\"value\":\"\\\"-185360730760\\\"\",\"index\":true},{\"key\":\"settle_timestamp\",\"value\":\"\\\"1707127448\\\"\",\"index\":true},{\"key\":\"static_balance\",\"value\":\"\\\"0\\\"\",\"index\":true},{\"key\":\"status\",\"value\":\"\\\"STREAM_ACCOUNT_STATUS_ACTIVE\\\"\",\"index\":true}]},{\"type\":\"greenfield.storage.EventUpdateObjectContent\",\"attributes\":[{\"key\":\"bucket_name\",\"value\":\"\\\"\\\"\",\"index\":true},{\"key\":\"checksums\",\"value\":\"[\\\"AlHQDThmcsFQcqMRtWiBvUcOK7Q1qmGMpFfrREVrWqE=\\\",\\\"AlHQDThmcsFQcqMRtWiBvUcOK7Q1qmGMpFfrREVrWqE=\\\",\\\"AlHQDThmcsFQcqMRtWiBvUcOK7Q1qmGMpFfrREVrWqE=\\\",\\\"AlHQDThmcsFQcqMRtWiBvUcOK7Q1qmGMpFfrREVrWqE=\\\",\\\"AlHQDThmcsFQcqMRtWiBvUcOK7Q1qmGMpFfrREVrWqE=\\\",\\\"AlHQDThmcsFQcqMRtWiBvUcOK7Q1qmGMpFfrREVrWqE=\\\",\\\"AlHQDThmcsFQcqMRtWiBvUcOK7Q1qmGMpFfrREVrWqE=\\\"]\",\"index\":true},{\"key\":\"object_id\",\"value\":\"\\\"13\\\"\",\"index\":true},{\"key\":\"object_name\",\"value\":\"\\\"\\\"\",\"index\":true},{\"key\":\"operator\",\"value\":\"\\\"0x2C88091905582aF5F118C5C9a33f47B9445e78BB\\\"\",\"index\":true},{\"key\":\"payload_size\",\"value\":\"\\\"1067008\\\"\",\"index\":true},{\"key\":\"version\",\"value\":\"\\\"1\\\"\",\"index\":true}]}],\"codespace\":\"\"},{\"code\":0,\"data\":\"EisKKS9ncmVlbmZpZWxkLnN0b3JhZ2UuTXNnU2VhbE9iamVjdFJlc3BvbnNlGggAAAAAAAIkmA==\",\"log\":\"[{\\\"msg_index\\\":0,\\\"events\\\":[{\\\"type\\\":\\\"message\\\",\\\"attributes\\\":[{\\\"key\\\":\\\"action\\\",\\\"value\\\":\\\"/greenfield.storage.MsgSealObject\\\"},{\\\"key\\\":\\\"sender\\\",\\\"value\\\":\\\"0xc5890f517eE07D5aAE4872D45c5a71EF7e11a436\\\"},{\\\"key\\\":\\\"module\\\",\\\"value\\\":\\\"storage\\\"}]},{\\\"type\\\":\\\"greenfield.payment.EventStreamRecordUpdate\\\",\\\"attributes\\\":[{\\\"key\\\":\\\"account\\\",\\\"value\\\":\\\"\\\\\\\"0x2C88091905582aF5F118C5C9a33f47B9445e78BB\\\\\\\"\\\"},{\\\"key\\\":\\\"buffer_balance\\\",\\\"value\\\":\\\"\\\\\\\"6060000\\\\\\\"\\\"},{\\\"key\\\":\\\"crud_timestamp\\\",\\\"value\\\":\\\"\\\\\\\"1707127418\\\\\\\"\\\"},{\\\"key\\\":\\\"frozen_netflow_rate\\\",\\\"value\\\":\\\"\\\\\\\"0\\\\\\\"\\\"},{\\\"key\\\":\\\"lock_balance\\\",\\\"value\\\":\\\"\\\\\\\"1112163778560\\\\\\\"\\\"},{\\\"key\\\":\\\"netflow_rate\\\",\\\"value\\\":\\\"\\\\\\\"-101000\\\\\\\"\\\"},{\\\"key\\\":\\\"settle_timestamp\\\",\\\"value\\\":\\\"\\\\\\\"1817242673\\\\\\\"\\\"},{\\\"key\\\":\\\"static_balance\\\",\\\"value\\\":\\\"\\\\\\\"11121637785600\\\\\\\"\\\"},{\\\"key\\\":\\\"status\\\",\\\"value\\\":\\\"\\\\\\\"STREAM_ACCOUNT_STATUS_ACTIVE\\\\\\\"\\\"}]},{\\\"type\\\":\\\"greenfield.payment.EventStreamRecordUpdate\\\",\\\"attributes\\\":[{\\\"key\\\":\\\"account\\\",\\\"value\\\":\\\"\\\\\\\"0x8D720138eC1f2006dbe283C9A0f6eCe4B5c2fF1e\\\\\\\"\\\"},{\\\"key\\\":\\\"buffer_balance\\\",\\\"value\\\":\\\"\\\\\\\"0\\\\\\\"\\\"},{\\\"key\\\":\\\"crud_timestamp\\\",\\\"value\\\":\\\"\\\\\\\"1707127418\\\\\\\"\\\"},{\\\"key\\\":\\\"frozen_netflow_rate\\\",\\\"value\\\":\\\"\\\\\\\"0\\\\\\\"\\\"},{\\\"key\\\":\\\"lock_balance\\\",\\\"value\\\":\\\"\\\\\\\"0\\\\\\\"\\\"},{\\\"key\\\":\\\"netflow_rate\\\",\\\"value\\\":\\\"\\\\\\\"300000\\\\\\\"\\\"},{\\\"key\\\":\\\"settle_timestamp\\\",\\\"value\\\":\\\"\\\\\\\"0\\\\\\\"\\\"},{\\\"key\\\":\\\"static_balance\\\",\\\"value\\\":\\\"\\\\\\\"352900000\\\\\\\"\\\"},{\\\"key\\\":\\\"status\\\",\\\"value\\\":\\\"\\\\\\\"STREAM_ACCOUNT_STATUS_ACTIVE\\\\\\\"\\\"}]},{\\\"type\\\":\\\"greenfield.payment.EventStreamRecordUpdate\\\",\\\"attributes\\\":[{\\\"key\\\":\\\"account\\\",\\\"value\\\":\\\"\\\\\\\"0xc2500339568AEB167147B1755FA90ede5175A9eF\\\\\\\"\\\"},{\\\"key\\\":\\\"buffer_balance\\\",\\\"value\\\":\\\"\\\\\\\"0\\\\\\\"\\\"},{\\\"key\\\":\\\"crud_timestamp\\\",\\\"value\\\":\\\"\\\\\\\"1707127418\\\\\\\"\\\"},{\\\"key\\\":\\\"frozen_netflow_rate\\\",\\\"value\\\":\\\"\\\\\\\"0\\\\\\\"\\\"},{\\\"key\\\":\\\"lock_balance\\\",\\\"value\\\":\\\"\\\\\\\"0\\\\\\\"\\\"},{\\\"key\\\":\\\"netflow_rate\\\",\\\"value\\\":\\\"\\\\\\\"0\\\\\\\"\\\"},{\\\"key\\\":\\\"settle_timestamp\\\",\\\"value\\\":\\\"\\\\\\\"0\\\\\\\"\\\"},{\\\"key\\\":\\\"static_balance\\\",\\\"value\\\":\\\"\\\\\\\"0\\\\\\\"\\\"},{\\\"key\\\":\\\"status\\\",\\\"value\\\":\\\"\\\\\\\"STREAM_ACCOUNT_STATUS_ACTIVE\\\\\\\"\\\"}]},{\\\"type\\\":\\\"greenfield.payment.EventStreamRecordUpdate\\\",\\\"attributes\\\":[{\\\"key\\\":\\\"account\\\",\\\"value\\\":\\\"\\\\\\\"0xdF5F0588f6B09f0B9E58D3426252db25Dc74E7a1\\\\\\\"\\\"},{\\\"key\\\":\\\"buffer_balance\\\",\\\"value\\\":\\\"\\\\\\\"0\\\\\\\"\\\"},{\\\"key\\\":\\\"crud_timestamp\\\",\\\"value\\\":\\\"\\\\\\\"1707127418\\\\\\\"\\\"},{\\\"key\\\":\\\"frozen_netflow_rate\\\",\\\"value\\\":\\\"\\\\\\\"0\\\\\\\"\\\"},{\\\"key\\\":\\\"lock_balance\\\",\\\"value\\\":\\\"\\\\\\\"0\\\\\\\"\\\"},{\\\"key\\\":\\\"netflow_rate\\\",\\\"value\\\":\\\"\\\\\\\"5505776280\\\\\\\"\\\"},{\\\"key\\\":\\\"settle_timestamp\\\",\\\"value\\\":\\\"\\\\\\\"0\\\\\\\"\\\"},{\\\"key\\\":\\\"static_balance\\\",\\\"value\\\":\\\"\\\\\\\"2297754463520\\\\\\\"\\\"},{\\\"key\\\":\\\"status\\\",\\\"value\\\":\\\"\\\\\\\"STREAM_ACCOUNT_STATUS_ACTIVE\\\\\\\"\\\"}]},{\\\"type\\\":\\\"greenfield.payment.EventStreamRecordUpdate\\\",\\\"attributes\\\":[{\\\"key\\\":\\\"account\\\",\\\"value\\\":\\\"\\\\\\\"0x8D720138eC1f2006dbe283C9A0f6eCe4B5c2fF1e\\\\\\\"\\\"},{\\\"key\\\":\\\"buffer_balance\\\",\\\"value\\\":\\\"\\\\\\\"0\\\\\\\"\\\"},{\\\"key\\\":\\\"crud_timestamp\\\",\\\"value\\\":\\\"\\\\\\\"1707127418\\\\\\\"\\\"},{\\\"key\\\":\\\"frozen_netflow_rate\\\",\\\"value\\\":\\\"\\\\\\\"0\\\\\\\"\\\"},{\\\"key\\\":\\\"lock_balance\\\",\\\"value\\\":\\\"\\\\\\\"0\\\\\\\"\\\"},{\\\"key\\\":\\\"netflow_rate\\\",\\\"value\\\":\\\"\\\\\\\"300000\\\\\\\"\\\"},{\\\"key\\\":\\\"settle_timestamp\\\",\\\"value\\\":\\\"\\\\\\\"0\\\\\\\"\\\"},{\\\"key\\\":\\\"static_balance\\\",\\\"value\\\":\\\"\\\\\\\"6402400900000\\\\\\\"\\\"},{\\\"key\\\":\\\"status\\\",\\\"value\\\":\\\"\\\\\\\"STREAM_ACCOUNT_STATUS_ACTIVE\\\\\\\"\\\"}]},{\\\"type\\\":\\\"greenfield.payment.EventStreamRecordUpdate\\\",\\\"attributes\\\":[{\\\"key\\\":\\\"account\\\",\\\"value\\\":\\\"\\\\\\\"0xc2500339568AEB167147B1755FA90ede5175A9eF\\\\\\\"\\\"},{\\\"key\\\":\\\"buffer_balance\\\",\\\"value\\\":\\\"\\\\\\\"0\\\\\\\"\\\"},{\\\"key\\\":\\\"crud_timestamp\\\",\\\"value\\\":\\\"\\\\\\\"1707127418\\\\\\\"\\\"},{\\\"key\\\":\\\"frozen_netflow_rate\\\",\\\"value\\\":\\\"\\\\\\\"0\\\\\\\"\\\"},{\\\"key\\\":\\\"lock_balance\\\",\\\"value\\\":\\\"\\\\\\\"0\\\\\\\"\\\"},{\\\"key\\\":\\\"netflow_rate\\\",\\\"value\\\":\\\"\\\\\\\"0\\\\\\\"\\\"},{\\\"key\\\":\\\"settle_timestamp\\\",\\\"value\\\":\\\"\\\\\\\"0\\\\\\\"\\\"},{\\\"key\\\":\\\"static_balance\\\",\\\"value\\\":\\\"\\\\\\\"4609474560000\\\\\\\"\\\"},{\\\"key\\\":\\\"status\\\",\\\"value\\\":\\\"\\\\\\\"STREAM_ACCOUNT_STATUS_ACTIVE\\\\\\\"\\\"}]},{\\\"type\\\":\\\"greenfield.payment.EventStreamRecordUpdate\\\",\\\"attributes\\\":[{\\\"key\\\":\\\"account\\\",\\\"value\\\":\\\"\\\\\\\"0xdF5F0588f6B09f0B9E58D3426252db25Dc74E7a1\\\\\\\"\\\"},{\\\"key\\\":\\\"buffer_balance\\\",\\\"value\\\":\\\"\\\\\\\"0\\\\\\\"\\\"},{\\\"key\\\":\\\"crud_timestamp\\\",\\\"value\\\":\\\"\\\\\\\"1707127418\\\\\\\"\\\"},{\\\"key\\\":\\\"frozen_netflow_rate\\\",\\\"value\\\":\\\"\\\\\\\"0\\\\\\\"\\\"},{\\\"key\\\":\\\"lock_balance\\\",\\\"value\\\":\\\"\\\\\\\"0\\\\\\\"\\\"},{\\\"key\\\":\\\"netflow_rate\\\",\\\"value\\\":\\\"\\\\\\\"5505776280\\\\\\\"\\\"},{\\\"key\\\":\\\"settle_timestamp\\\",\\\"value\\\":\\\"\\\\\\\"0\\\\\\\"\\\"},{\\\"key\\\":\\\"static_balance\\\",\\\"value\\\":\\\"\\\\\\\"2407869689120\\\\\\\"\\\"},{\\\"key\\\":\\\"status\\\",\\\"value\\\":\\\"\\\\\\\"STREAM_ACCOUNT_STATUS_ACTIVE\\\\\\\"\\\"}]},{\\\"type\\\":\\\"greenfield.payment.EventStreamRecordUpdate\\\",\\\"attributes\\\":[{\\\"key\\\":\\\"account\\\",\\\"value\\\":\\\"\\\\\\\"0x2C88091905582aF5F118C5C9a33f47B9445e78BB\\\\\\\"\\\"},{\\\"key\\\":\\\"buffer_balance\\\",\\\"value\\\":\\\"\\\\\\\"6060000\\\\\\\"\\\"},{\\\"key\\\":\\\"crud_timestamp\\\",\\\"value\\\":\\\"\\\\\\\"1707127418\\\\\\\"\\\"},{\\\"key\\\":\\\"frozen_netflow_rate\\\",\\\"value\\\":\\\"\\\\\\\"0\\\\\\\"\\\"},{\\\"key\\\":\\\"lock_balance\\\",\\\"value\\\":\\\"\\\\\\\"1112163778560\\\\\\\"\\\"},{\\\"key\\\":\\\"netflow_rate\\\",\\\"value\\\":\\\"\\\\\\\"-101000\\\\\\\"\\\"},{\\\"key\\\":\\\"settle_timestamp\\\",\\\"value\\\":\\\"\\\\\\\"1707127448\\\\\\\"\\\"},{\\\"key\\\":\\\"static_balance\\\",\\\"value\\\":\\\"\\\\\\\"0\\\\\\\"\\\"},{\\\"key\\\":\\\"status\\\",\\\"value\\\":\\\"\\\\\\\"STREAM_ACCOUNT_STATUS_ACTIVE\\\\\\\"\\\"}]},{\\\"type\\\":\\\"greenfield.virtualgroup.EventDeleteLocalVirtualGroup\\\",\\\"attributes\\\":[{\\\"key\\\":\\\"bucket_id\\\",\\\"value\\\":\\\"\\\\\\\"15\\\\\\\"\\\"},{\\\"key\\\":\\\"id\\\",\\\"value\\\":\\\"1\\\"}]},{\\\"type\\\":\\\"greenfield.virtualgroup.EventUpdateGlobalVirtualGroup\\\",\\\"attributes\\\":[{\\\"key\\\":\\\"id\\\",\\\"value\\\":\\\"4\\\"},{\\\"key\\\":\\\"primary_sp_id\\\",\\\"value\\\":\\\"1\\\"},{\\\"key\\\":\\\"secondary_sp_ids\\\",\\\"value\\\":\\\"[3,4,5,6,7,2]\\\"},{\\\"key\\\":\\\"store_size\\\",\\\"value\\\":\\\"\\\\\\\"0\\\\\\\"\\\"},{\\\"key\\\":\\\"total_deposit\\\",\\\"value\\\":\\\"\\\\\\\"1000000000000000000\\\\\\\"\\\"}]},{\\\"type\\\":\\\"greenfield.virtualgroup.EventUpdateLocalVirtualGroup\\\",\\\"attributes\\\":[{\\\"key\\\":\\\"bucket_id\\\",\\\"value\\\":\\\"\\\\\\\"15\\\\\\\"\\\"},{\\\"key\\\":\\\"global_virtual_group_id\\\",\\\"value\\\":\\\"4\\\"},{\\\"key\\\":\\\"id\\\",\\\"value\\\":\\\"1\\\"},{\\\"key\\\":\\\"stored_size\\\",\\\"value\\\":\\\"\\\\\\\"0\\\\\\\"\\\"}]},{\\\"type\\\":\\\"greenfield.payment.EventStreamRecordUpdate\\\",\\\"attributes\\\":[{\\\"key\\\":\\\"account\\\",\\\"value\\\":\\\"\\\\\\\"0x2C88091905582aF5F118C5C9a33f47B9445e78BB\\\\\\\"\\\"},{\\\"key\\\":\\\"buffer_balance\\\",\\\"value\\\":\\\"\\\\\\\"6060000\\\\\\\"\\\"},{\\\"key\\\":\\\"crud_timestamp\\\",\\\"value\\\":\\\"\\\\\\\"1707127418\\\\\\\"\\\"},{\\\"key\\\":\\\"frozen_netflow_rate\\\",\\\"value\\\":\\\"\\\\\\\"0\\\\\\\"\\\"},{\\\"key\\\":\\\"lock_balance\\\",\\\"value\\\":\\\"\\\\\\\"0\\\\\\\"\\\"},{\\\"key\\\":\\\"netflow_rate\\\",\\\"value\\\":\\\"\\\\\\\"-101000\\\\\\\"\\\"},{\\\"key\\\":\\\"settle_timestamp\\\",\\\"value\\\":\\\"\\\\\\\"1718138970\\\\\\\"\\\"},{\\\"key\\\":\\\"static_balance\\\",\\\"value\\\":\\\"\\\\\\\"1112163778560\\\\\\\"\\\"},{\\\"key\\\":\\\"status\\\",\\\"value\\\":\\\"\\\\\\\"STREAM_ACCOUNT_STATUS_ACTIVE\\\\\\\"\\\"}]},{\\\"type\\\":\\\"greenfield.payment.EventStreamRecordUpdate\\\",\\\"attributes\\\":[{\\\"key\\\":\\\"account\\\",\\\"value\\\":\\\"\\\\\\\"0x2C88091905582aF5F118C5C9a33f47B9445e78BB\\\\\\\"\\\"},{\\\"key\\\":\\\"buffer_balance\\\",\\\"value\\\":\\\"\\\\\\\"1112169838560\\\\\\\"\\\"},{\\\"key\\\":\\\"crud_timestamp\\\",\\\"value\\\":\\\"\\\\\\\"1707127418\\\\\\\"\\\"},{\\\"key\\\":\\\"frozen_netflow_rate\\\",\\\"value\\\":\\\"\\\\\\\"0\\\\\\\"\\\"},{\\\"key\\\":\\\"lock_balance\\\",\\\"value\\\":\\\"\\\\\\\"0\\\\\\\"\\\"},{\\\"key\\\":\\\"netflow_rate\\\",\\\"value\\\":\\\"\\\\\\\"-18536163976\\\\\\\"\\\"},{\\\"key\\\":\\\"settle_timestamp\\\",\\\"value\\\":\\\"\\\\\\\"1707127448\\\\\\\"\\\"},{\\\"key\\\":\\\"static_balance\\\",\\\"value\\\":\\\"\\\\\\\"0\\\\\\\"\\\"},{\\\"key\\\":\\\"status\\\",\\\"value\\\":\\\"\\\\\\\"STREAM_ACCOUNT_STATUS_ACTIVE\\\\\\\"\\\"}]},{\\\"type\\\":\\\"greenfield.payment.EventStreamRecordUpdate\\\",\\\"attributes\\\":[{\\\"key\\\":\\\"account\\\",\\\"value\\\":\\\"\\\\\\\"0x8D720138eC1f2006dbe283C9A0f6eCe4B5c2fF1e\\\\\\\"\\\"},{\\\"key\\\":\\\"buffer_balance\\\",\\\"value\\\":\\\"\\\\\\\"0\\\\\\\"\\\"},{\\\"key\\\":\\\"crud_timestamp\\\",\\\"value\\\":\\\"\\\\\\\"1707127418\\\\\\\"\\\"},{\\\"key\\\":\\\"frozen_netflow_rate\\\",\\\"value\\\":\\\"\\\\\\\"0\\\\\\\"\\\"},{\\\"key\\\":\\\"lock_balance\\\",\\\"value\\\":\\\"\\\\\\\"0\\\\\\\"\\\"},{\\\"key\\\":\\\"netflow_rate\\\",\\\"value\\\":\\\"\\\\\\\"10670380000\\\\\\\"\\\"},{\\\"key\\\":\\\"settle_timestamp\\\",\\\"value\\\":\\\"\\\\\\\"0\\\\\\\"\\\"},{\\\"key\\\":\\\"static_balance\\\",\\\"value\\\":\\\"\\\\\\\"6402400900000\\\\\\\"\\\"},{\\\"key\\\":\\\"status\\\",\\\"value\\\":\\\"\\\\\\\"STREAM_ACCOUNT_STATUS_ACTIVE\\\\\\\"\\\"}]},{\\\"type\\\":\\\"greenfield.payment.EventStreamRecordUpdate\\\",\\\"attributes\\\":[{\\\"key\\\":\\\"account\\\",\\\"value\\\":\\\"\\\\\\\"0xc2500339568AEB167147B1755FA90ede5175A9eF\\\\\\\"\\\"},{\\\"key\\\":\\\"buffer_balance\\\",\\\"value\\\":\\\"\\\\\\\"0\\\\\\\"\\\"},{\\\"key\\\":\\\"crud_timestamp\\\",\\\"value\\\":\\\"\\\\\\\"1707127418\\\\\\\"\\\"},{\\\"key\\\":\\\"frozen_netflow_rate\\\",\\\"value\\\":\\\"\\\\\\\"0\\\\\\\"\\\"},{\\\"key\\\":\\\"lock_balance\\\",\\\"value\\\":\\\"\\\\\\\"0\\\\\\\"\\\"},{\\\"key\\\":\\\"netflow_rate\\\",\\\"value\\\":\\\"\\\\\\\"7682457600\\\\\\\"\\\"},{\\\"key\\\":\\\"settle_timestamp\\\",\\\"value\\\":\\\"\\\\\\\"0\\\\\\\"\\\"},{\\\"key\\\":\\\"static_balance\\\",\\\"value\\\":\\\"\\\\\\\"4609474560000\\\\\\\"\\\"},{\\\"key\\\":\\\"status\\\",\\\"value\\\":\\\"\\\\\\\"STREAM_ACCOUNT_STATUS_ACTIVE\\\\\\\"\\\"}]},{\\\"type\\\":\\\"greenfield.payment.EventStreamRecordUpdate\\\",\\\"attributes\\\":[{\\\"key\\\":\\\"account\\\",\\\"value\\\":\\\"\\\\\\\"0xdF5F0588f6B09f0B9E58D3426252db25Dc74E7a1\\\\\\\"\\\"},{\\\"key\\\":\\\"buffer_balance\\\",\\\"value\\\":\\\"\\\\\\\"0\\\\\\\"\\\"},{\\\"key\\\":\\\"crud_timestamp\\\",\\\"value\\\":\\\"\\\\\\\"1707127418\\\\\\\"\\\"},{\\\"key\\\":\\\"frozen_netflow_rate\\\",\\\"value\\\":\\\"\\\\\\\"0\\\\\\\"\\\"},{\\\"key\\\":\\\"lock_balance\\\",\\\"value\\\":\\\"\\\\\\\"0\\\\\\\"\\\"},{\\\"key\\\":\\\"netflow_rate\\\",\\\"value\\\":\\\"\\\\\\\"5689301656\\\\\\\"\\\"},{\\\"key\\\":\\\"settle_timestamp\\\",\\\"value\\\":\\\"\\\\\\\"0\\\\\\\"\\\"},{\\\"key\\\":\\\"static_balance\\\",\\\"value\\\":\\\"\\\\\\\"2407869689120\\\\\\\"\\\"},{\\\"key\\\":\\\"status\\\",\\\"value\\\":\\\"\\\\\\\"STREAM_ACCOUNT_STATUS_ACTIVE\\\\\\\"\\\"}]},{\\\"type\\\":\\\"greenfield.virtualgroup.EventUpdateGlobalVirtualGroup\\\",\\\"attributes\\\":[{\\\"key\\\":\\\"id\\\",\\\"value\\\":\\\"4\\\"},{\\\"key\\\":\\\"primary_sp_id\\\",\\\"value\\\":\\\"1\\\"},{\\\"key\\\":\\\"secondary_sp_ids\\\",\\\"value\\\":\\\"[3,4,5,6,7,2]\\\"},{\\\"key\\\":\\\"store_size\\\",\\\"value\\\":\\\"\\\\\\\"1067008\\\\\\\"\\\"},{\\\"key\\\":\\\"total_deposit\\\",\\\"value\\\":\\\"\\\\\\\"1000000000000000000\\\\\\\"\\\"}]},{\\\"type\\\":\\\"greenfield.virtualgroup.EventCreateLocalVirtualGroup\\\",\\\"attributes\\\":[{\\\"key\\\":\\\"bucket_id\\\",\\\"value\\\":\\\"\\\\\\\"15\\\\\\\"\\\"},{\\\"key\\\":\\\"global_virtual_group_id\\\",\\\"value\\\":\\\"4\\\"},{\\\"key\\\":\\\"id\\\",\\\"value\\\":\\\"1\\\"},{\\\"key\\\":\\\"stored_size\\\",\\\"value\\\":\\\"\\\\\\\"1067008\\\\\\\"\\\"}]},{\\\"type\\\":\\\"greenfield.storage.EventUpdateObjectContentSuccess\\\",\\\"attributes\\\":[{\\\"key\\\":\\\"bucket_name\\\",\\\"value\\\":\\\"\\\\\\\"phugwly1grq\\\\\\\"\\\"},{\\\"key\\\":\\\"content_type\\\",\\\"value\\\":\\\"\\\\\\\"\\\\\\\"\\\"},{\\\"key\\\":\\\"new_checksums\\\",\\\"value\\\":\\\"[\\\\\\\"AlHQDThmcsFQcqMRtWiBvUcOK7Q1qmGMpFfrREVrWqE=\\\\\\\",\\\\\\\"AlHQDThmcsFQcqMRtWiBvUcOK7Q1qmGMpFfrREVrWqE=\\\\\\\",\\\\\\\"AlHQDThmcsFQcqMRtWiBvUcOK7Q1qmGMpFfrREVrWqE=\\\\\\\",\\\\\\\"AlHQDThmcsFQcqMRtWiBvUcOK7Q1qmGMpFfrREVrWqE=\\\\\\\",\\\\\\\"AlHQDThmcsFQcqMRtWiBvUcOK7Q1qmGMpFfrREVrWqE=\\\\\\\",\\\\\\\"AlHQDThmcsFQcqMRtWiBvUcOK7Q1qmGMpFfrREVrWqE=\\\\\\\",\\\\\\\"AlHQDThmcsFQcqMRtWiBvUcOK7Q1qmGMpFfrREVrWqE=\\\\\\\"]\\\"},{\\\"key\\\":\\\"new_payload_size\\\",\\\"value\\\":\\\"\\\\\\\"1067008\\\\\\\"\\\"},{\\\"key\\\":\\\"object_id\\\",\\\"value\\\":\\\"\\\\\\\"13\\\\\\\"\\\"},{\\\"key\\\":\\\"object_name\\\",\\\"value\\\":\\\"\\\\\\\"j5lgngcf\\\\\\\"\\\"},{\\\"key\\\":\\\"operator\\\",\\\"value\\\":\\\"\\\\\\\"0xc5890f517eE07D5aAE4872D45c5a71EF7e11a436\\\\\\\"\\\"},{\\\"key\\\":\\\"prev_checksums\\\",\\\"value\\\":\\\"[\\\\\\\"buySGixCMW9GvxEEgFzXQziZbHmJcSDaDw1To4p++U8=\\\\\\\",\\\\\\\"buySGixCMW9GvxEEgFzXQziZbHmJcSDaDw1To4p++U8=\\\\\\\",\\\\\\\"buySGixCMW9GvxEEgFzXQziZbHmJcSDaDw1To4p++U8=\\\\\\\",\\\\\\\"buySGixCMW9GvxEEgFzXQziZbHmJcSDaDw1To4p++U8=\\\\\\\",\\\\\\\"buySGixCMW9GvxEEgFzXQziZbHmJcSDaDw1To4p++U8=\\\\\\\",\\\\\\\"buySGixCMW9GvxEEgFzXQziZbHmJcSDaDw1To4p++U8=\\\\\\\",\\\\\\\"buySGixCMW9GvxEEgFzXQziZbHmJcSDaDw1To4p++U8=\\\\\\\"]\\\"},{\\\"key\\\":\\\"prev_payload_size\\\",\\\"value\\\":\\\"\\\\\\\"10670080\\\\\\\"\\\"},{\\\"key\\\":\\\"updated_at\\\",\\\"value\\\":\\\"\\\\\\\"1707127418\\\\\\\"\\\"},{\\\"key\\\":\\\"version\\\",\\\"value\\\":\\\"\\\\\\\"1\\\\\\\"\\\"}]},{\\\"type\\\":\\\"greenfield.storage.EventSealObject\\\",\\\"attributes\\\":[{\\\"key\\\":\\\"bucket_name\\\",\\\"value\\\":\\\"\\\\\\\"phugwly1grq\\\\\\\"\\\"},{\\\"key\\\":\\\"global_virtual_group_id\\\",\\\"value\\\":\\\"4\\\"},{\\\"key\\\":\\\"local_virtual_group_id\\\",\\\"value\\\":\\\"1\\\"},{\\\"key\\\":\\\"object_id\\\",\\\"value\\\":\\\"\\\\\\\"13\\\\\\\"\\\"},{\\\"key\\\":\\\"object_name\\\",\\\"value\\\":\\\"\\\\\\\"j5lgngcf\\\\\\\"\\\"},{\\\"key\\\":\\\"operator\\\",\\\"value\\\":\\\"\\\\\\\"0xc5890f517eE07D5aAE4872D45c5a71EF7e11a436\\\\\\\"\\\"},{\\\"key\\\":\\\"status\\\",\\\"value\\\":\\\"\\\\\\\"OBJECT_STATUS_SEALED\\\\\\\"\\\"}]}]}]\",\"info\":\"\",\"gas_wanted\":\"20000\",\"gas_used\":\"120\",\"events\":[{\"type\":\"coin_spent\",\"attributes\":[{\"key\":\"spender\",\"value\":\"0xc5890f517eE07D5aAE4872D45c5a71EF7e11a436\",\"index\":true},{\"key\":\"amount\",\"value\":\"100000000000000BNB\",\"index\":true}]},{\"type\":\"coin_received\",\"attributes\":[{\"key\":\"receiver\",\"value\":\"0xf1829676DB577682E944fc3493d451B67Ff3E29F\",\"index\":true},{\"key\":\"amount\",\"value\":\"100000000000000BNB\",\"index\":true}]},{\"type\":\"transfer\",\"attributes\":[{\"key\":\"recipient\",\"value\":\"0xf1829676DB577682E944fc3493d451B67Ff3E29F\",\"index\":true},{\"key\":\"sender\",\"value\":\"0xc5890f517eE07D5aAE4872D45c5a71EF7e11a436\",\"index\":true},{\"key\":\"amount\",\"value\":\"100000000000000BNB\",\"index\":true}]},{\"type\":\"message\",\"attributes\":[{\"key\":\"sender\",\"value\":\"0xc5890f517eE07D5aAE4872D45c5a71EF7e11a436\",\"index\":true}]},{\"type\":\"tx\",\"attributes\":[{\"key\":\"fee\",\"value\":\"100000000000000BNB\",\"index\":true},{\"key\":\"fee_payer\",\"value\":\"0xc5890f517eE07D5aAE4872D45c5a71EF7e11a436\",\"index\":true}]},{\"type\":\"tx\",\"attributes\":[{\"key\":\"acc_seq\",\"value\":\"0xc5890f517eE07D5aAE4872D45c5a71EF7e11a436/4\",\"index\":true}]},{\"type\":\"tx\",\"attributes\":[{\"key\":\"signature\",\"value\":\"OAjoCYTdt+CukpyStk8ZxzjhFU0AxbCv1f0yr8nULqUPE8pD3lXbfjGORJGSG0uPntk4g+dNBtDfbxf0rxTz8QE=\",\"index\":true}]},{\"type\":\"message\",\"attributes\":[{\"key\":\"action\",\"value\":\"/greenfield.storage.MsgSealObject\",\"index\":true},{\"key\":\"sender\",\"value\":\"0xc5890f517eE07D5aAE4872D45c5a71EF7e11a436\",\"index\":true},{\"key\":\"module\",\"value\":\"storage\",\"index\":true}]},{\"type\":\"greenfield.payment.EventStreamRecordUpdate\",\"attributes\":[{\"key\":\"account\",\"value\":\"\\\"0x2C88091905582aF5F118C5C9a33f47B9445e78BB\\\"\",\"index\":true},{\"key\":\"buffer_balance\",\"value\":\"\\\"6060000\\\"\",\"index\":true},{\"key\":\"crud_timestamp\",\"value\":\"\\\"1707127418\\\"\",\"index\":true},{\"key\":\"frozen_netflow_rate\",\"value\":\"\\\"0\\\"\",\"index\":true},{\"key\":\"lock_balance\",\"value\":\"\\\"1112163778560\\\"\",\"index\":true},{\"key\":\"netflow_rate\",\"value\":\"\\\"-101000\\\"\",\"index\":true},{\"key\":\"settle_timestamp\",\"value\":\"\\\"1817242673\\\"\",\"index\":true},{\"key\":\"static_balance\",\"value\":\"\\\"11121637785600\\\"\",\"index\":true},{\"key\":\"status\",\"value\":\"\\\"STREAM_ACCOUNT_STATUS_ACTIVE\\\"\",\"index\":true}]},{\"type\":\"greenfield.payment.EventStreamRecordUpdate\",\"attributes\":[{\"key\":\"account\",\"value\":\"\\\"0x8D720138eC1f2006dbe283C9A0f6eCe4B5c2fF1e\\\"\",\"index\":true},{\"key\":\"buffer_balance\",\"value\":\"\\\"0\\\"\",\"index\":true},{\"key\":\"crud_timestamp\",\"value\":\"\\\"1707127418\\\"\",\"index\":true},{\"key\":\"frozen_netflow_rate\",\"value\":\"\\\"0\\\"\",\"index\":true},{\"key\":\"lock_balance\",\"value\":\"\\\"0\\\"\",\"index\":true},{\"key\":\"netflow_rate\",\"value\":\"\\\"300000\\\"\",\"index\":true},{\"key\":\"settle_timestamp\",\"value\":\"\\\"0\\\"\",\"index\":true},{\"key\":\"static_balance\",\"value\":\"\\\"352900000\\\"\",\"index\":true},{\"key\":\"status\",\"value\":\"\\\"STREAM_ACCOUNT_STATUS_ACTIVE\\\"\",\"index\":true}]},{\"type\":\"greenfield.payment.EventStreamRecordUpdate\",\"attributes\":[{\"key\":\"account\",\"value\":\"\\\"0xc2500339568AEB167147B1755FA90ede5175A9eF\\\"\",\"index\":true},{\"key\":\"buffer_balance\",\"value\":\"\\\"0\\\"\",\"index\":true},{\"key\":\"crud_timestamp\",\"value\":\"\\\"1707127418\\\"\",\"index\":true},{\"key\":\"frozen_netflow_rate\",\"value\":\"\\\"0\\\"\",\"index\":true},{\"key\":\"lock_balance\",\"value\":\"\\\"0\\\"\",\"index\":true},{\"key\":\"netflow_rate\",\"value\":\"\\\"0\\\"\",\"index\":true},{\"key\":\"settle_timestamp\",\"value\":\"\\\"0\\\"\",\"index\":true},{\"key\":\"static_balance\",\"value\":\"\\\"0\\\"\",\"index\":true},{\"key\":\"status\",\"value\":\"\\\"STREAM_ACCOUNT_STATUS_ACTIVE\\\"\",\"index\":true}]},{\"type\":\"greenfield.payment.EventStreamRecordUpdate\",\"attributes\":[{\"key\":\"account\",\"value\":\"\\\"0xdF5F0588f6B09f0B9E58D3426252db25Dc74E7a1\\\"\",\"index\":true},{\"key\":\"buffer_balance\",\"value\":\"\\\"0\\\"\",\"index\":true},{\"key\":\"crud_timestamp\",\"value\":\"\\\"1707127418\\\"\",\"index\":true},{\"key\":\"frozen_netflow_rate\",\"value\":\"\\\"0\\\"\",\"index\":true},{\"key\":\"lock_balance\",\"value\":\"\\\"0\\\"\",\"index\":true},{\"key\":\"netflow_rate\",\"value\":\"\\\"5505776280\\\"\",\"index\":true},{\"key\":\"settle_timestamp\",\"value\":\"\\\"0\\\"\",\"index\":true},{\"key\":\"static_balance\",\"value\":\"\\\"2297754463520\\\"\",\"index\":true},{\"key\":\"status\",\"value\":\"\\\"STREAM_ACCOUNT_STATUS_ACTIVE\\\"\",\"index\":true}]},{\"type\":\"greenfield.payment.EventStreamRecordUpdate\",\"attributes\":[{\"key\":\"account\",\"value\":\"\\\"0x8D720138eC1f2006dbe283C9A0f6eCe4B5c2fF1e\\\"\",\"index\":true},{\"key\":\"buffer_balance\",\"value\":\"\\\"0\\\"\",\"index\":true},{\"key\":\"crud_timestamp\",\"value\":\"\\\"1707127418\\\"\",\"index\":true},{\"key\":\"frozen_netflow_rate\",\"value\":\"\\\"0\\\"\",\"index\":true},{\"key\":\"lock_balance\",\"value\":\"\\\"0\\\"\",\"index\":true},{\"key\":\"netflow_rate\",\"value\":\"\\\"300000\\\"\",\"index\":true},{\"key\":\"settle_timestamp\",\"value\":\"\\\"0\\\"\",\"index\":true},{\"key\":\"static_balance\",\"value\":\"\\\"6402400900000\\\"\",\"index\":true},{\"key\":\"status\",\"value\":\"\\\"STREAM_ACCOUNT_STATUS_ACTIVE\\\"\",\"index\":true}]},{\"type\":\"greenfield.payment.EventStreamRecordUpdate\",\"attributes\":[{\"key\":\"account\",\"value\":\"\\\"0xc2500339568AEB167147B1755FA90ede5175A9eF\\\"\",\"index\":true},{\"key\":\"buffer_balance\",\"value\":\"\\\"0\\\"\",\"index\":true},{\"key\":\"crud_timestamp\",\"value\":\"\\\"1707127418\\\"\",\"index\":true},{\"key\":\"frozen_netflow_rate\",\"value\":\"\\\"0\\\"\",\"index\":true},{\"key\":\"lock_balance\",\"value\":\"\\\"0\\\"\",\"index\":true},{\"key\":\"netflow_rate\",\"value\":\"\\\"0\\\"\",\"index\":true},{\"key\":\"settle_timestamp\",\"value\":\"\\\"0\\\"\",\"index\":true},{\"key\":\"static_balance\",\"value\":\"\\\"4609474560000\\\"\",\"index\":true},{\"key\":\"status\",\"value\":\"\\\"STREAM_ACCOUNT_STATUS_ACTIVE\\\"\",\"index\":true}]},{\"type\":\"greenfield.payment.EventStreamRecordUpdate\",\"attributes\":[{\"key\":\"account\",\"value\":\"\\\"0xdF5F0588f6B09f0B9E58D3426252db25Dc74E7a1\\\"\",\"index\":true},{\"key\":\"buffer_balance\",\"value\":\"\\\"0\\\"\",\"index\":true},{\"key\":\"crud_timestamp\",\"value\":\"\\\"1707127418\\\"\",\"index\":true},{\"key\":\"frozen_netflow_rate\",\"value\":\"\\\"0\\\"\",\"index\":true},{\"key\":\"lock_balance\",\"value\":\"\\\"0\\\"\",\"index\":true},{\"key\":\"netflow_rate\",\"value\":\"\\\"5505776280\\\"\",\"index\":true},{\"key\":\"settle_timestamp\",\"value\":\"\\\"0\\\"\",\"index\":true},{\"key\":\"static_balance\",\"value\":\"\\\"2407869689120\\\"\",\"index\":true},{\"key\":\"status\",\"value\":\"\\\"STREAM_ACCOUNT_STATUS_ACTIVE\\\"\",\"index\":true}]},{\"type\":\"greenfield.payment.EventStreamRecordUpdate\",\"attributes\":[{\"key\":\"account\",\"value\":\"\\\"0x2C88091905582aF5F118C5C9a33f47B9445e78BB\\\"\",\"index\":true},{\"key\":\"buffer_balance\",\"value\":\"\\\"6060000\\\"\",\"index\":true},{\"key\":\"crud_timestamp\",\"value\":\"\\\"1707127418\\\"\",\"index\":true},{\"key\":\"frozen_netflow_rate\",\"value\":\"\\\"0\\\"\",\"index\":true},{\"key\":\"lock_balance\",\"value\":\"\\\"1112163778560\\\"\",\"index\":true},{\"key\":\"netflow_rate\",\"value\":\"\\\"-101000\\\"\",\"index\":true},{\"key\":\"settle_timestamp\",\"value\":\"\\\"1707127448\\\"\",\"index\":true},{\"key\":\"static_balance\",\"value\":\"\\\"0\\\"\",\"index\":true},{\"key\":\"status\",\"value\":\"\\\"STREAM_ACCOUNT_STATUS_ACTIVE\\\"\",\"index\":true}]},{\"type\":\"greenfield.virtualgroup.EventDeleteLocalVirtualGroup\",\"attributes\":[{\"key\":\"bucket_id\",\"value\":\"\\\"15\\\"\",\"index\":true},{\"key\":\"id\",\"value\":\"1\",\"index\":true}]},{\"type\":\"greenfield.virtualgroup.EventUpdateGlobalVirtualGroup\",\"attributes\":[{\"key\":\"id\",\"value\":\"4\",\"index\":true},{\"key\":\"primary_sp_id\",\"value\":\"1\",\"index\":true},{\"key\":\"secondary_sp_ids\",\"value\":\"[3,4,5,6,7,2]\",\"index\":true},{\"key\":\"store_size\",\"value\":\"\\\"0\\\"\",\"index\":true},{\"key\":\"total_deposit\",\"value\":\"\\\"1000000000000000000\\\"\",\"index\":true}]},{\"type\":\"greenfield.virtualgroup.EventUpdateLocalVirtualGroup\",\"attributes\":[{\"key\":\"bucket_id\",\"value\":\"\\\"15\\\"\",\"index\":true},{\"key\":\"global_virtual_group_id\",\"value\":\"4\",\"index\":true},{\"key\":\"id\",\"value\":\"1\",\"index\":true},{\"key\":\"stored_size\",\"value\":\"\\\"0\\\"\",\"index\":true}]},{\"type\":\"greenfield.payment.EventStreamRecordUpdate\",\"attributes\":[{\"key\":\"account\",\"value\":\"\\\"0x2C88091905582aF5F118C5C9a33f47B9445e78BB\\\"\",\"index\":true},{\"key\":\"buffer_balance\",\"value\":\"\\\"6060000\\\"\",\"index\":true},{\"key\":\"crud_timestamp\",\"value\":\"\\\"1707127418\\\"\",\"index\":true},{\"key\":\"frozen_netflow_rate\",\"value\":\"\\\"0\\\"\",\"index\":true},{\"key\":\"lock_balance\",\"value\":\"\\\"0\\\"\",\"index\":true},{\"key\":\"netflow_rate\",\"value\":\"\\\"-101000\\\"\",\"index\":true},{\"key\":\"settle_timestamp\",\"value\":\"\\\"1718138970\\\"\",\"index\":true},{\"key\":\"static_balance\",\"value\":\"\\\"1112163778560\\\"\",\"index\":true},{\"key\":\"status\",\"value\":\"\\\"STREAM_ACCOUNT_STATUS_ACTIVE\\\"\",\"index\":true}]},{\"type\":\"greenfield.payment.EventStreamRecordUpdate\",\"attributes\":[{\"key\":\"account\",\"value\":\"\\\"0x2C88091905582aF5F118C5C9a33f47B9445e78BB\\\"\",\"index\":true},{\"key\":\"buffer_balance\",\"value\":\"\\\"1112169838560\\\"\",\"index\":true},{\"key\":\"crud_timestamp\",\"value\":\"\\\"1707127418\\\"\",\"index\":true},{\"key\":\"frozen_netflow_rate\",\"value\":\"\\\"0\\\"\",\"index\":true},{\"key\":\"lock_balance\",\"value\":\"\\\"0\\\"\",\"index\":true},{\"key\":\"netflow_rate\",\"value\":\"\\\"-18536163976\\\"\",\"index\":true},{\"key\":\"settle_timestamp\",\"value\":\"\\\"1707127448\\\"\",\"index\":true},{\"key\":\"static_balance\",\"value\":\"\\\"0\\\"\",\"index\":true},{\"key\":\"status\",\"value\":\"\\\"STREAM_ACCOUNT_STATUS_ACTIVE\\\"\",\"index\":true}]},{\"type\":\"greenfield.payment.EventStreamRecordUpdate\",\"attributes\":[{\"key\":\"account\",\"value\":\"\\\"0x8D720138eC1f2006dbe283C9A0f6eCe4B5c2fF1e\\\"\",\"index\":true},{\"key\":\"buffer_balance\",\"value\":\"\\\"0\\\"\",\"index\":true},{\"key\":\"crud_timestamp\",\"value\":\"\\\"1707127418\\\"\",\"index\":true},{\"key\":\"frozen_netflow_rate\",\"value\":\"\\\"0\\\"\",\"index\":true},{\"key\":\"lock_balance\",\"value\":\"\\\"0\\\"\",\"index\":true},{\"key\":\"netflow_rate\",\"value\":\"\\\"10670380000\\\"\",\"index\":true},{\"key\":\"settle_timestamp\",\"value\":\"\\\"0\\\"\",\"index\":true},{\"key\":\"static_balance\",\"value\":\"\\\"6402400900000\\\"\",\"index\":true},{\"key\":\"status\",\"value\":\"\\\"STREAM_ACCOUNT_STATUS_ACTIVE\\\"\",\"index\":true}]},{\"type\":\"greenfield.payment.EventStreamRecordUpdate\",\"attributes\":[{\"key\":\"account\",\"value\":\"\\\"0xc2500339568AEB167147B1755FA90ede5175A9eF\\\"\",\"index\":true},{\"key\":\"buffer_balance\",\"value\":\"\\\"0\\\"\",\"index\":true},{\"key\":\"crud_timestamp\",\"value\":\"\\\"1707127418\\\"\",\"index\":true},{\"key\":\"frozen_netflow_rate\",\"value\":\"\\\"0\\\"\",\"index\":true},{\"key\":\"lock_balance\",\"value\":\"\\\"0\\\"\",\"index\":true},{\"key\":\"netflow_rate\",\"value\":\"\\\"7682457600\\\"\",\"index\":true},{\"key\":\"settle_timestamp\",\"value\":\"\\\"0\\\"\",\"index\":true},{\"key\":\"static_balance\",\"value\":\"\\\"4609474560000\\\"\",\"index\":true},{\"key\":\"status\",\"value\":\"\\\"STREAM_ACCOUNT_STATUS_ACTIVE\\\"\",\"index\":true}]},{\"type\":\"greenfield.payment.EventStreamRecordUpdate\",\"attributes\":[{\"key\":\"account\",\"value\":\"\\\"0xdF5F0588f6B09f0B9E58D3426252db25Dc74E7a1\\\"\",\"index\":true},{\"key\":\"buffer_balance\",\"value\":\"\\\"0\\\"\",\"index\":true},{\"key\":\"crud_timestamp\",\"value\":\"\\\"1707127418\\\"\",\"index\":true},{\"key\":\"frozen_netflow_rate\",\"value\":\"\\\"0\\\"\",\"index\":true},{\"key\":\"lock_balance\",\"value\":\"\\\"0\\\"\",\"index\":true},{\"key\":\"netflow_rate\",\"value\":\"\\\"5689301656\\\"\",\"index\":true},{\"key\":\"settle_timestamp\",\"value\":\"\\\"0\\\"\",\"index\":true},{\"key\":\"static_balance\",\"value\":\"\\\"2407869689120\\\"\",\"index\":true},{\"key\":\"status\",\"value\":\"\\\"STREAM_ACCOUNT_STATUS_ACTIVE\\\"\",\"index\":true}]},{\"type\":\"greenfield.virtualgroup.EventUpdateGlobalVirtualGroup\",\"attributes\":[{\"key\":\"id\",\"value\":\"4\",\"index\":true},{\"key\":\"primary_sp_id\",\"value\":\"1\",\"index\":true},{\"key\":\"secondary_sp_ids\",\"value\":\"[3,4,5,6,7,2]\",\"index\":true},{\"key\":\"store_size\",\"value\":\"\\\"1067008\\\"\",\"index\":true},{\"key\":\"total_deposit\",\"value\":\"\\\"1000000000000000000\\\"\",\"index\":true}]},{\"type\":\"greenfield.virtualgroup.EventCreateLocalVirtualGroup\",\"attributes\":[{\"key\":\"bucket_id\",\"value\":\"\\\"15\\\"\",\"index\":true},{\"key\":\"global_virtual_group_id\",\"value\":\"4\",\"index\":true},{\"key\":\"id\",\"value\":\"1\",\"index\":true},{\"key\":\"stored_size\",\"value\":\"\\\"1067008\\\"\",\"index\":true}]},{\"type\":\"greenfield.storage.EventUpdateObjectContentSuccess\",\"attributes\":[{\"key\":\"bucket_name\",\"value\":\"\\\"phugwly1grq\\\"\",\"index\":true},{\"key\":\"content_type\",\"value\":\"\\\"\\\"\",\"index\":true},{\"key\":\"new_checksums\",\"value\":\"[\\\"AlHQDThmcsFQcqMRtWiBvUcOK7Q1qmGMpFfrREVrWqE=\\\",\\\"AlHQDThmcsFQcqMRtWiBvUcOK7Q1qmGMpFfrREVrWqE=\\\",\\\"AlHQDThmcsFQcqMRtWiBvUcOK7Q1qmGMpFfrREVrWqE=\\\",\\\"AlHQDThmcsFQcqMRtWiBvUcOK7Q1qmGMpFfrREVrWqE=\\\",\\\"AlHQDThmcsFQcqMRtWiBvUcOK7Q1qmGMpFfrREVrWqE=\\\",\\\"AlHQDThmcsFQcqMRtWiBvUcOK7Q1qmGMpFfrREVrWqE=\\\",\\\"AlHQDThmcsFQcqMRtWiBvUcOK7Q1qmGMpFfrREVrWqE=\\\"]\",\"index\":true},{\"key\":\"new_payload_size\",\"value\":\"\\\"1067008\\\"\",\"index\":true},{\"key\":\"object_id\",\"value\":\"\\\"13\\\"\",\"index\":true},{\"key\":\"object_name\",\"value\":\"\\\"j5lgngcf\\\"\",\"index\":true},{\"key\":\"operator\",\"value\":\"\\\"0xc5890f517eE07D5aAE4872D45c5a71EF7e11a436\\\"\",\"index\":true},{\"key\":\"prev_checksums\",\"value\":\"[\\\"buySGixCMW9GvxEEgFzXQziZbHmJcSDaDw1To4p++U8=\\\",\\\"buySGixCMW9GvxEEgFzXQziZbHmJcSDaDw1To4p++U8=\\\",\\\"buySGixCMW9GvxEEgFzXQziZbHmJcSDaDw1To4p++U8=\\\",\\\"buySGixCMW9GvxEEgFzXQziZbHmJcSDaDw1To4p++U8=\\\",\\\"buySGixCMW9GvxEEgFzXQziZbHmJcSDaDw1To4p++U8=\\\",\\\"buySGixCMW9GvxEEgFzXQziZbHmJcSDaDw1To4p++U8=\\\",\\\"buySGixCMW9GvxEEgFzXQziZbHmJcSDaDw1To4p++U8=\\\"]\",\"index\":true},{\"key\":\"prev_payload_size\",\"value\":\"\\\"10670080\\\"\",\"index\":true},{\"key\":\"updated_at\",\"value\":\"\\\"1707127418\\\"\",\"index\":true},{\"key\":\"version\",\"value\":\"\\\"1\\\"\",\"index\":true}]},{\"type\":\"greenfield.storage.EventSealObject\",\"attributes\":[{\"key\":\"bucket_name\",\"value\":\"\\\"phugwly1grq\\\"\",\"index\":true},{\"key\":\"global_virtual_group_id\",\"value\":\"4\",\"index\":true},{\"key\":\"local_virtual_group_id\",\"value\":\"1\",\"index\":true},{\"key\":\"object_id\",\"value\":\"\\\"13\\\"\",\"index\":true},{\"key\":\"object_name\",\"value\":\"\\\"j5lgngcf\\\"\",\"index\":true},{\"key\":\"operator\",\"value\":\"\\\"0xc5890f517eE07D5aAE4872D45c5a71EF7e11a436\\\"\",\"index\":true},{\"key\":\"status\",\"value\":\"\\\"OBJECT_STATUS_SEALED\\\"\",\"index\":true}]}],\"codespace\":\"\"}]}" + }, + { + "name": "update bucket", + "block": "{\"block\":{\"header\":{\"height\":\"68\",\"time\":\"2024-01-17T06:18:32.636521739Z\"},\"data\":{\"txs\":[\"CvoBCvcBCiMvZ3JlZW5maWVsZC5zdG9yYWdlLk1zZ0NyZWF0ZUJ1Y2tldBLPAQoqMHg4NjljNDBkNDk2YTc5NjM0QkVmNDNhZjhFRWI4MTdGMmI4QTFDQjJjEihmdWxsLW5vZGUtdjEtYWNjMDAwMDAwMDA3Mi1idWMwMDAwMDAwMDAwGAIqKjB4MzM0NEVFYTlGQkQ3ZERBMWM3MWJhZTgzYkY3MjNDODVEOTRlODY1OTJJCPCeDBARGkF1QxEUgocG3uzLeeSImESkzZrlsD9RznBjdMSkQsbRKmAfhTBiV5VDpSpwCzOotaZcCcvH7+i8uGQ/hDw7g28EARJ2ClgKTQomL2Nvc21vcy5jcnlwdG8uZXRoLmV0aHNlY3AyNTZrMS5QdWJLZXkSIwohAjPGjCB4AldgyL0SXau5XO9VPOWF0Am7LH3CMogJhcwxEgUKAwjIBRg0EhoKFQoDQk5CEg4xMjAwMDAwMDAwMDAwMBDgEhpBJYtn8jCJvroTA72YUcY0CdkJlVth7xJvt+voqLZi+MlE845j+GX1tvXCpyCPQjcQHs7pibXQPImBrupKxENk5QA=\"]}}}", + "block_results": "{\"height\":\"68\",\"txs_results\":[{\"events\":[{\"type\":\"greenfield.storage.handleEventBucketFlowRateLimitStatus\",\"attributes\":[{\"key\":\"bucket_name\",\"value\":\"\\\"phugwly1grq\\\"\",\"index\":true},{\"key\":\"is_limited\",\"value\":\"\\\"true\\\"\",\"index\":true}]}]}]}" } ] \ No newline at end of file diff --git a/modular/blocksyncer/test/verify.go b/modular/blocksyncer/test/verify.go index 1c83f22bd..62d4f8645 100644 --- a/modular/blocksyncer/test/verify.go +++ b/modular/blocksyncer/test/verify.go @@ -27,7 +27,7 @@ var verifyFuncs = []func(t *testing.T, db *gorm.DB) error{ verify31, verify32, verify33, verify34, verify35, verify36, verify37, verify38, verify39, verify40, verify41, verify42, verify43, verify44, verify45, verify46, verify47, verify48, verify49, verify50, verify51, verify52, verify53, verify54, verify55, verify56, verify57, verify58, verify59, verify60, - verify61, verify62, verify63, verify64, verify65, verify66, verify67, + verify61, verify62, verify63, verify64, verify65, verify66, verify67, verify68, } func Verify(t *testing.T) error { @@ -728,6 +728,18 @@ func verify67(t *testing.T, db *gorm.DB) error { } +func verify68(t *testing.T, db *gorm.DB) error { + var bucket models.Bucket + if err := db.Table((&models.Bucket{}).TableName()).Where("bucket_name=?", "phugwly1grq").Find(&bucket).Error; err != nil { + assert.NoError(t, err) + } + if bucket.OffChainStatus != 0 { + return errors.New("update bucket flow rate limit status error") + } + return nil + +} + const ObjectsNumberOfShards = 64 const ObjectTableName = "objects" diff --git a/modular/gater/metadata_handler_test.go b/modular/gater/metadata_handler_test.go index adcacba47..67a3341bc 100644 --- a/modular/gater/metadata_handler_test.go +++ b/modular/gater/metadata_handler_test.go @@ -1268,7 +1268,7 @@ func TestGateModular_ListPaymentAccountStreamsHandler(t *testing.T) { return req }, wantedResultFn: func(body string) bool { - assert.Equal(t, "0xF72aDa8130f934887755492879496b026665FbABmock-bucket-name010016997810800xF72aDa8130f934887755492879496b026665FbAB300falsefalse00xF72aDa8130f934887755492879496b026665FbAB0x21c349a869bde1f44378936e2a9a15ed3fb2d54a43eaea8787960bba1134cdc20x0cbff0ff3831d61345dbfda5b984e254c4bf87ecf80b45ccbb0635c0547a3b1a12798111699781103", + assert.Equal(t, "0xF72aDa8130f934887755492879496b026665FbABmock-bucket-name010016997810800xF72aDa8130f934887755492879496b026665FbAB300falsefalse00xF72aDa8130f934887755492879496b026665FbAB0x21c349a869bde1f44378936e2a9a15ed3fb2d54a43eaea8787960bba1134cdc20x0cbff0ff3831d61345dbfda5b984e254c4bf87ecf80b45ccbb0635c0547a3b1a127981116997811030", body) return true }, @@ -1481,7 +1481,7 @@ func TestGateModular_ListBucketsByIDsHandler(t *testing.T) { return req }, wantedResultFn: func(body string) bool { - assert.Equal(t, "00xF72aDa8130f934887755492879496b026665FbABmock-bucket-name010016997810800xF72aDa8130f934887755492879496b026665FbAB300falsefalse00xF72aDa8130f934887755492879496b026665FbAB0x21c349a869bde1f44378936e2a9a15ed3fb2d54a43eaea8787960bba1134cdc20x0cbff0ff3831d61345dbfda5b984e254c4bf87ecf80b45ccbb0635c0547a3b1a12798111699781103", + assert.Equal(t, "00xF72aDa8130f934887755492879496b026665FbABmock-bucket-name010016997810800xF72aDa8130f934887755492879496b026665FbAB300falsefalse00xF72aDa8130f934887755492879496b026665FbAB0x21c349a869bde1f44378936e2a9a15ed3fb2d54a43eaea8787960bba1134cdc20x0cbff0ff3831d61345dbfda5b984e254c4bf87ecf80b45ccbb0635c0547a3b1a127981116997811030", body) return true }, @@ -2041,7 +2041,7 @@ func TestGateModular_GetBucketMetaHandler(t *testing.T) { req := httptest.NewRequest(http.MethodGet, path, strings.NewReader("")) return req }, - wantedResult: "0xF72aDa8130f934887755492879496b026665FbABmock-bucket-name010016997810800xF72aDa8130f934887755492879496b026665FbAB300falsefalse00xF72aDa8130f934887755492879496b026665FbAB0x21c349a869bde1f44378936e2a9a15ed3fb2d54a43eaea8787960bba1134cdc20x0cbff0ff3831d61345dbfda5b984e254c4bf87ecf80b45ccbb0635c0547a3b1a12798111699781103030x26281179b8885F21f95b0a246c8AD70957A95A230xF72aDa8130f934887755492879496b026665FbAB16997809940240000000000000001000000", + wantedResult: "0xF72aDa8130f934887755492879496b026665FbABmock-bucket-name010016997810800xF72aDa8130f934887755492879496b026665FbAB300falsefalse00xF72aDa8130f934887755492879496b026665FbAB0x21c349a869bde1f44378936e2a9a15ed3fb2d54a43eaea8787960bba1134cdc20x0cbff0ff3831d61345dbfda5b984e254c4bf87ecf80b45ccbb0635c0547a3b1a12798111699781103030x26281179b8885F21f95b0a246c8AD70957A95A2300xF72aDa8130f934887755492879496b026665FbAB16997809940240000000000000001000000", }, } for _, tt := range cases { @@ -2145,7 +2145,7 @@ func TestGateModular_GetUserBucketsHandler(t *testing.T) { req.Header.Set(GnfdUserAddressHeader, testAccount) return req }, - wantedResult: "0xF72aDa8130f934887755492879496b026665FbABmock-bucket-name010016997810800xF72aDa8130f934887755492879496b026665FbAB300falsefalse00xF72aDa8130f934887755492879496b026665FbAB0x21c349a869bde1f44378936e2a9a15ed3fb2d54a43eaea8787960bba1134cdc20x0cbff0ff3831d61345dbfda5b984e254c4bf87ecf80b45ccbb0635c0547a3b1a12798111699781103030x26281179b8885F21f95b0a246c8AD70957A95A23", + wantedResult: "0xF72aDa8130f934887755492879496b026665FbABmock-bucket-name010016997810800xF72aDa8130f934887755492879496b026665FbAB300falsefalse00xF72aDa8130f934887755492879496b026665FbAB0x21c349a869bde1f44378936e2a9a15ed3fb2d54a43eaea8787960bba1134cdc20x0cbff0ff3831d61345dbfda5b984e254c4bf87ecf80b45ccbb0635c0547a3b1a12798111699781103030x26281179b8885F21f95b0a246c8AD70957A95A230", }, } for _, tt := range cases { diff --git a/modular/metadata/metadata_bucket_service.go b/modular/metadata/metadata_bucket_service.go index a5eaf1436..2759aaf8c 100644 --- a/modular/metadata/metadata_bucket_service.go +++ b/modular/metadata/metadata_bucket_service.go @@ -90,15 +90,16 @@ func (r *MetadataModular) GfSpGetUserBuckets(ctx context.Context, req *types.GfS BucketStatus: storage_types.BucketStatus(storage_types.BucketStatus_value[bucket.Status]), Tags: bucket.GetResourceTags(), }, - Removed: bucket.Removed, - DeleteAt: bucket.DeleteAt, - DeleteReason: bucket.DeleteReason, - Operator: bucket.Operator.String(), - CreateTxHash: bucket.CreateTxHash.String(), - UpdateTxHash: bucket.UpdateTxHash.String(), - UpdateAt: bucket.UpdateAt, - UpdateTime: bucket.UpdateTime, - StorageSize: bucket.StorageSize.String(), + Removed: bucket.Removed, + DeleteAt: bucket.DeleteAt, + DeleteReason: bucket.DeleteReason, + Operator: bucket.Operator.String(), + CreateTxHash: bucket.CreateTxHash.String(), + UpdateTxHash: bucket.UpdateTxHash.String(), + UpdateAt: bucket.UpdateAt, + UpdateTime: bucket.UpdateTime, + StorageSize: bucket.StorageSize.String(), + OffChainStatus: int32(bucket.OffChainStatus), } if vgf != nil { b.Vgf = &virtual_types.GlobalVirtualGroupFamily{ @@ -149,15 +150,16 @@ func (r *MetadataModular) GfSpGetBucketByBucketName(ctx context.Context, req *ty BucketStatus: storage_types.BucketStatus(storage_types.BucketStatus_value[bucket.Status]), Tags: bucket.GetResourceTags(), }, - Removed: bucket.Removed, - DeleteAt: bucket.DeleteAt, - DeleteReason: bucket.DeleteReason, - Operator: bucket.Operator.String(), - CreateTxHash: bucket.CreateTxHash.String(), - UpdateTxHash: bucket.UpdateTxHash.String(), - UpdateAt: bucket.UpdateAt, - UpdateTime: bucket.UpdateTime, - StorageSize: bucket.StorageSize.String(), + Removed: bucket.Removed, + DeleteAt: bucket.DeleteAt, + DeleteReason: bucket.DeleteReason, + Operator: bucket.Operator.String(), + CreateTxHash: bucket.CreateTxHash.String(), + UpdateTxHash: bucket.UpdateTxHash.String(), + UpdateAt: bucket.UpdateAt, + UpdateTime: bucket.UpdateTime, + StorageSize: bucket.StorageSize.String(), + OffChainStatus: int32(bucket.OffChainStatus), } } resp = &types.GfSpGetBucketByBucketNameResponse{Bucket: res} @@ -195,15 +197,16 @@ func (r *MetadataModular) GfSpGetBucketByBucketID(ctx context.Context, req *type BucketStatus: storage_types.BucketStatus(storage_types.BucketStatus_value[bucket.Status]), Tags: bucket.GetResourceTags(), }, - Removed: bucket.Removed, - DeleteAt: bucket.DeleteAt, - DeleteReason: bucket.DeleteReason, - Operator: bucket.Operator.String(), - CreateTxHash: bucket.CreateTxHash.String(), - UpdateTxHash: bucket.UpdateTxHash.String(), - UpdateAt: bucket.UpdateAt, - UpdateTime: bucket.UpdateTime, - StorageSize: bucket.StorageSize.String(), + Removed: bucket.Removed, + DeleteAt: bucket.DeleteAt, + DeleteReason: bucket.DeleteReason, + Operator: bucket.Operator.String(), + CreateTxHash: bucket.CreateTxHash.String(), + UpdateTxHash: bucket.UpdateTxHash.String(), + UpdateAt: bucket.UpdateAt, + UpdateTime: bucket.UpdateTime, + StorageSize: bucket.StorageSize.String(), + OffChainStatus: int32(bucket.OffChainStatus), } } resp = &types.GfSpGetBucketByBucketIDResponse{Bucket: res} @@ -253,9 +256,10 @@ func (r *MetadataModular) GfSpListExpiredBucketsBySp(ctx context.Context, req *t BucketStatus: storage_types.BucketStatus(storage_types.BucketStatus_value[bucket.Status]), Tags: bucket.GetResourceTags(), }, - Removed: bucket.Removed, - DeleteAt: bucket.DeleteAt, - DeleteReason: bucket.DeleteReason, + Removed: bucket.Removed, + DeleteAt: bucket.DeleteAt, + DeleteReason: bucket.DeleteReason, + OffChainStatus: int32(bucket.OffChainStatus), }) } resp = &types.GfSpListExpiredBucketsBySpResponse{Buckets: res} @@ -320,7 +324,8 @@ func (r *MetadataModular) GfSpGetBucketMeta(ctx context.Context, req *types.GfSp GlobalVirtualGroupIds: family[0].GlobalVirtualGroupIds, VirtualPaymentAddress: family[0].VirtualPaymentAddress.String(), }, - StorageSize: bucket.StorageSize.String(), + StorageSize: bucket.StorageSize.String(), + OffChainStatus: int32(bucket.OffChainStatus), } } @@ -626,15 +631,16 @@ func (r *MetadataModular) GfSpListBucketsByIDs(ctx context.Context, req *types.G BucketStatus: storage_types.BucketStatus(storage_types.BucketStatus_value[bucket.Status]), Tags: bucket.GetResourceTags(), }, - Removed: bucket.Removed, - DeleteAt: bucket.DeleteAt, - DeleteReason: bucket.DeleteReason, - Operator: bucket.Operator.String(), - CreateTxHash: bucket.CreateTxHash.String(), - UpdateTxHash: bucket.UpdateTxHash.String(), - UpdateAt: bucket.UpdateAt, - UpdateTime: bucket.UpdateTime, - StorageSize: bucket.StorageSize.String(), + Removed: bucket.Removed, + DeleteAt: bucket.DeleteAt, + DeleteReason: bucket.DeleteReason, + Operator: bucket.Operator.String(), + CreateTxHash: bucket.CreateTxHash.String(), + UpdateTxHash: bucket.UpdateTxHash.String(), + UpdateAt: bucket.UpdateAt, + UpdateTime: bucket.UpdateTime, + StorageSize: bucket.StorageSize.String(), + OffChainStatus: int32(bucket.OffChainStatus), } } resp = &types.GfSpListBucketsByIDsResponse{Buckets: bucketsMap} @@ -694,15 +700,16 @@ func (r *MetadataModular) GfSpGetBucketInfoByBucketName(ctx context.Context, req BucketStatus: storage_types.BucketStatus(storage_types.BucketStatus_value[bucket.Status]), Tags: bucket.GetResourceTags(), }, - Removed: bucket.Removed, - DeleteAt: bucket.DeleteAt, - DeleteReason: bucket.DeleteReason, - Operator: bucket.Operator.String(), - CreateTxHash: bucket.CreateTxHash.String(), - UpdateTxHash: bucket.UpdateTxHash.String(), - UpdateAt: bucket.UpdateAt, - UpdateTime: bucket.UpdateTime, - StorageSize: bucket.StorageSize.String(), + Removed: bucket.Removed, + DeleteAt: bucket.DeleteAt, + DeleteReason: bucket.DeleteReason, + Operator: bucket.Operator.String(), + CreateTxHash: bucket.CreateTxHash.String(), + UpdateTxHash: bucket.UpdateTxHash.String(), + UpdateAt: bucket.UpdateAt, + UpdateTime: bucket.UpdateTime, + StorageSize: bucket.StorageSize.String(), + OffChainStatus: int32(bucket.OffChainStatus), } } resp = &types.GfSpGetBucketInfoByBucketNameResponse{Bucket: res} diff --git a/modular/metadata/metadata_bucket_service_test.go b/modular/metadata/metadata_bucket_service_test.go index 1efc6b383..9bdc3f23d 100644 --- a/modular/metadata/metadata_bucket_service_test.go +++ b/modular/metadata/metadata_bucket_service_test.go @@ -84,6 +84,7 @@ func TestMetadataModular_GfSpGetUserBuckets2(t *testing.T) { UpdateTxHash: common.HexToHash("0x0F508E101FF83B79DF357212029B05D1FCC585B50D479FB7E68D6E1A68E8BDD4"), UpdateTime: 0, StorageSize: decimal.New(100, 2), + OffChainStatus: 1, }}, nil }, ).Times(1) @@ -143,6 +144,7 @@ func TestMetadataModular_GfSpGetUserBuckets_Failed(t *testing.T) { UpdateTxHash: common.HexToHash("0x0F508E101FF83B79DF357212029B05D1FCC585B50D479FB7E68D6E1A68E8BDD4"), UpdateTime: 0, StorageSize: decimal.New(100, 2), + OffChainStatus: 1, }}, nil }, ).Times(1) @@ -222,6 +224,7 @@ func TestMetadataModular_GfSpGetBucketByBucketName_Success2(t *testing.T) { UpdateTxHash: common.HexToHash("0x0F508E101FF83B79DF357212029B05D1FCC585B50D479FB7E68D6E1A68E8BDD4"), UpdateTime: 0, StorageSize: decimal.New(100, 2), + OffChainStatus: 1, }, nil }, ).Times(1) @@ -305,6 +308,7 @@ func TestMetadataModular_GfSpGetBucketByBucketID_Success2(t *testing.T) { UpdateTxHash: common.HexToHash("0x0F508E101FF83B79DF357212029B05D1FCC585B50D479FB7E68D6E1A68E8BDD4"), UpdateTime: 0, StorageSize: decimal.New(100, 2), + OffChainStatus: 1, }, nil }, ).Times(1) @@ -398,6 +402,7 @@ func TestMetadataModular_GfSpListExpiredBucketsBySp_Success(t *testing.T) { UpdateTxHash: common.HexToHash("0x0F508E101FF83B79DF357212029B05D1FCC585B50D479FB7E68D6E1A68E8BDD4"), UpdateTime: 0, StorageSize: decimal.New(100, 2), + OffChainStatus: 1, }}, nil }, ).Times(1) @@ -556,6 +561,7 @@ func TestMetadataModular_GfSpListBucketsByIDs_Success(t *testing.T) { UpdateTxHash: common.HexToHash("0x0F508E101FF83B79DF357212029B05D1FCC585B50D479FB7E68D6E1A68E8BDD4"), UpdateTime: 0, StorageSize: decimal.New(100, 2), + OffChainStatus: 1, }}, nil }, ).Times(1) @@ -726,6 +732,7 @@ func TestMetadataModular_GfSpGetBucketInfoByBucketName_Success2(t *testing.T) { UpdateTxHash: common.HexToHash("0x0F508E101FF83B79DF357212029B05D1FCC585B50D479FB7E68D6E1A68E8BDD4"), UpdateTime: 0, StorageSize: decimal.New(100, 2), + OffChainStatus: 1, }, nil }, ).Times(1) diff --git a/modular/metadata/metadata_object_service.go b/modular/metadata/metadata_object_service.go index 7b467019f..8b80e9be3 100644 --- a/modular/metadata/metadata_object_service.go +++ b/modular/metadata/metadata_object_service.go @@ -389,14 +389,15 @@ func (r *MetadataModular) GfSpListObjectsInGVGAndBucket(ctx context.Context, req BucketStatus: storagetypes.BucketStatus(storagetypes.BucketStatus_value[bucket.Status]), Tags: bucket.GetResourceTags(), }, - Removed: bucket.Removed, - DeleteAt: bucket.DeleteAt, - DeleteReason: bucket.DeleteReason, - Operator: bucket.Operator.String(), - CreateTxHash: bucket.CreateTxHash.String(), - UpdateTxHash: bucket.UpdateTxHash.String(), - UpdateAt: bucket.UpdateAt, - UpdateTime: bucket.UpdateTime, + Removed: bucket.Removed, + DeleteAt: bucket.DeleteAt, + DeleteReason: bucket.DeleteReason, + Operator: bucket.Operator.String(), + CreateTxHash: bucket.CreateTxHash.String(), + UpdateTxHash: bucket.UpdateTxHash.String(), + UpdateAt: bucket.UpdateAt, + UpdateTime: bucket.UpdateTime, + OffChainStatus: int32(bucket.OffChainStatus), } } if gvg != nil { @@ -508,14 +509,15 @@ func (r *MetadataModular) GfSpListObjectsByGVGAndBucketForGC(ctx context.Context BucketStatus: storagetypes.BucketStatus(storagetypes.BucketStatus_value[bucket.Status]), Tags: bucket.GetResourceTags(), }, - Removed: bucket.Removed, - DeleteAt: bucket.DeleteAt, - DeleteReason: bucket.DeleteReason, - Operator: bucket.Operator.String(), - CreateTxHash: bucket.CreateTxHash.String(), - UpdateTxHash: bucket.UpdateTxHash.String(), - UpdateAt: bucket.UpdateAt, - UpdateTime: bucket.UpdateTime, + Removed: bucket.Removed, + DeleteAt: bucket.DeleteAt, + DeleteReason: bucket.DeleteReason, + Operator: bucket.Operator.String(), + CreateTxHash: bucket.CreateTxHash.String(), + UpdateTxHash: bucket.UpdateTxHash.String(), + UpdateAt: bucket.UpdateAt, + UpdateTime: bucket.UpdateTime, + OffChainStatus: int32(bucket.OffChainStatus), } } if gvg != nil { @@ -636,14 +638,15 @@ func (r *MetadataModular) GfSpListObjectsInGVG(ctx context.Context, req *types.G BucketStatus: storagetypes.BucketStatus(storagetypes.BucketStatus_value[bucket.Status]), Tags: bucket.GetResourceTags(), }, - Removed: bucket.Removed, - DeleteAt: bucket.DeleteAt, - DeleteReason: bucket.DeleteReason, - Operator: bucket.Operator.String(), - CreateTxHash: bucket.CreateTxHash.String(), - UpdateTxHash: bucket.UpdateTxHash.String(), - UpdateAt: bucket.UpdateAt, - UpdateTime: bucket.UpdateTime, + Removed: bucket.Removed, + DeleteAt: bucket.DeleteAt, + DeleteReason: bucket.DeleteReason, + Operator: bucket.Operator.String(), + CreateTxHash: bucket.CreateTxHash.String(), + UpdateTxHash: bucket.UpdateTxHash.String(), + UpdateAt: bucket.UpdateAt, + UpdateTime: bucket.UpdateTime, + OffChainStatus: int32(bucket.OffChainStatus), } } if gvg != nil { diff --git a/modular/metadata/metadata_payment_service.go b/modular/metadata/metadata_payment_service.go index 8d8b1bb21..af9504319 100644 --- a/modular/metadata/metadata_payment_service.go +++ b/modular/metadata/metadata_payment_service.go @@ -114,14 +114,15 @@ func (r *MetadataModular) GfSpListPaymentAccountStreams(ctx context.Context, req BucketStatus: storagetypes.BucketStatus(storagetypes.BucketStatus_value[bucket.Status]), Tags: bucket.GetResourceTags(), }, - Removed: bucket.Removed, - DeleteAt: bucket.DeleteAt, - DeleteReason: bucket.DeleteReason, - Operator: bucket.Operator.String(), - CreateTxHash: bucket.CreateTxHash.String(), - UpdateTxHash: bucket.UpdateTxHash.String(), - UpdateAt: bucket.UpdateAt, - UpdateTime: bucket.UpdateTime, + Removed: bucket.Removed, + DeleteAt: bucket.DeleteAt, + DeleteReason: bucket.DeleteReason, + Operator: bucket.Operator.String(), + CreateTxHash: bucket.CreateTxHash.String(), + UpdateTxHash: bucket.UpdateTxHash.String(), + UpdateAt: bucket.UpdateAt, + UpdateTime: bucket.UpdateTime, + OffChainStatus: int32(bucket.OffChainStatus), } } diff --git a/modular/metadata/metadata_payment_service_test.go b/modular/metadata/metadata_payment_service_test.go index b65974961..c788d077b 100644 --- a/modular/metadata/metadata_payment_service_test.go +++ b/modular/metadata/metadata_payment_service_test.go @@ -139,6 +139,7 @@ func TestMetadataModular_GfSpListPaymentAccountStreams_Success(t *testing.T) { UpdateAt: 0, UpdateTxHash: common.HexToHash("0x0F508E101FF83B79DF357212029B05D1FCC585B50D479FB7E68D6E1A68E8BDD4"), UpdateTime: 0, + OffChainStatus: 1, }, }, nil }, diff --git a/modular/metadata/types/metadata.pb.go b/modular/metadata/types/metadata.pb.go index 1c2ffa80a..24996c8f2 100644 --- a/modular/metadata/types/metadata.pb.go +++ b/modular/metadata/types/metadata.pb.go @@ -61,6 +61,8 @@ type Bucket struct { UpdateTime int64 `protobuf:"varint,9,opt,name=update_time,json=updateTime,proto3" json:"update_time,omitempty"` // storage_size defines the size of bucket StorageSize string `protobuf:"bytes,10,opt,name=storage_size,json=storageSize,proto3" json:"storage_size,omitempty"` + // off_chain_status defines the status of a bucket in the off-chain storage + OffChainStatus int32 `protobuf:"varint,11,opt,name=off_chain_status,json=offChainStatus,proto3" json:"off_chain_status,omitempty"` } func (m *Bucket) Reset() { *m = Bucket{} } @@ -166,6 +168,13 @@ func (m *Bucket) GetStorageSize() string { return "" } +func (m *Bucket) GetOffChainStatus() int32 { + if m != nil { + return m.OffChainStatus + } + return 0 +} + // Object is the structure for user object type Object struct { // object_info defines the information of the object. @@ -381,6 +390,8 @@ type VGFInfoBucket struct { Vgf *types1.GlobalVirtualGroupFamily `protobuf:"bytes,10,opt,name=vgf,proto3" json:"vgf,omitempty"` // storage_size defines the size of bucket StorageSize string `protobuf:"bytes,11,opt,name=storage_size,json=storageSize,proto3" json:"storage_size,omitempty"` + // off_chain_status defines the status of a bucket in the off-chain storage + OffChainStatus int32 `protobuf:"varint,12,opt,name=off_chain_status,json=offChainStatus,proto3" json:"off_chain_status,omitempty"` } func (m *VGFInfoBucket) Reset() { *m = VGFInfoBucket{} } @@ -493,6 +504,13 @@ func (m *VGFInfoBucket) GetStorageSize() string { return "" } +func (m *VGFInfoBucket) GetOffChainStatus() int32 { + if m != nil { + return m.OffChainStatus + } + return 0 +} + // PaymentAccount is the structure for user payment account info type PaymentAccount struct { // address defines the address of payment account @@ -7742,384 +7760,386 @@ func init() { } var fileDescriptor_7cdcff708e247f22 = []byte{ - // 6031 bytes of a gzipped FileDescriptorProto - 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xec, 0x3d, 0x5b, 0x8c, 0x1d, 0x47, - 0x56, 0xd3, 0x73, 0xe7, 0x59, 0xf3, 0x74, 0xf9, 0x35, 0xbe, 0x8e, 0xc7, 0x76, 0xdb, 0x8e, 0xc7, - 0x71, 0x3c, 0x13, 0xdb, 0x89, 0x63, 0x3b, 0xb6, 0xe3, 0x79, 0x79, 0x32, 0xca, 0x3a, 0xf6, 0xf6, - 0xb5, 0xbd, 0xbb, 0x59, 0x42, 0x6f, 0xdf, 0xee, 0xba, 0x77, 0x9a, 0xb9, 0xb7, 0xbb, 0xd3, 0xd5, - 0x77, 0x3c, 0xd7, 0x62, 0x05, 0xe2, 0x25, 0x2d, 0x20, 0xde, 0x20, 0xb4, 0xc0, 0x4a, 0x8b, 0x10, - 0x48, 0x68, 0x41, 0x08, 0x56, 0x7c, 0x00, 0x0b, 0x48, 0xfc, 0x44, 0x02, 0xa4, 0x68, 0x3f, 0x00, - 0xad, 0x50, 0xb4, 0x4a, 0x3e, 0x10, 0x3f, 0xfc, 0xf0, 0xcb, 0x07, 0xea, 0x3a, 0xd5, 0xdd, 0xd5, - 0xef, 0x3b, 0x77, 0x66, 0x11, 0x1f, 0xfb, 0x13, 0xdf, 0xae, 0x3a, 0xe7, 0x54, 0xd5, 0xa9, 0x73, - 0x4e, 0x55, 0x9d, 0xc7, 0x04, 0x5d, 0x68, 0xdb, 0x46, 0xa7, 0xa5, 0xb9, 0x4b, 0x6d, 0xe2, 0x69, - 0x86, 0xe6, 0x69, 0x4b, 0x5e, 0xd7, 0x21, 0x34, 0xfc, 0x5c, 0x74, 0x5c, 0xdb, 0xb3, 0xf1, 0x31, - 0x0e, 0xb6, 0x18, 0xb6, 0x33, 0xb0, 0xea, 0xd9, 0xba, 0x46, 0x09, 0x47, 0x69, 0x36, 0xa8, 0x43, - 0x5c, 0xd7, 0x76, 0xe9, 0x12, 0xfb, 0x07, 0x50, 0xab, 0xf3, 0x09, 0x10, 0x4f, 0xa3, 0xdb, 0x4b, - 0xfe, 0x7f, 0x78, 0xff, 0x09, 0xdd, 0xa6, 0x6d, 0x9b, 0xaa, 0xec, 0x6b, 0x09, 0x3e, 0x78, 0xd7, - 0x91, 0xa6, 0xdd, 0xb4, 0xa1, 0xdd, 0xff, 0xc5, 0x5b, 0x5f, 0x6e, 0xba, 0x84, 0x58, 0x0d, 0x93, - 0xb4, 0x8c, 0x25, 0x47, 0xeb, 0xb6, 0x89, 0xe5, 0x2d, 0x51, 0xcf, 0x25, 0x5a, 0x5b, 0x75, 0x89, - 0x6e, 0xbb, 0x06, 0x87, 0x93, 0x45, 0x38, 0xe2, 0xb6, 0x4d, 0x4a, 0x4d, 0xdb, 0x5a, 0xd2, 0xed, - 0x76, 0xdb, 0xb6, 0x38, 0xcc, 0x69, 0x01, 0xc6, 0x25, 0xd4, 0xee, 0xb8, 0x3a, 0x9f, 0x6b, 0x30, - 0x3b, 0x01, 0x80, 0x3a, 0xb1, 0x2e, 0x11, 0x97, 0x7a, 0xb6, 0xab, 0x35, 0xc9, 0x12, 0xd9, 0x21, - 0x96, 0x17, 0x00, 0xcc, 0x67, 0x00, 0x7c, 0xd8, 0x21, 0x6e, 0xb7, 0xa0, 0x5f, 0x1c, 0xe0, 0xbc, - 0xd0, 0xbf, 0x63, 0xba, 0x5e, 0x47, 0x6b, 0x35, 0x5d, 0xbb, 0xe3, 0xc4, 0x47, 0x39, 0x97, 0x07, - 0x25, 0x92, 0x3a, 0xee, 0xd3, 0x0f, 0x76, 0x81, 0xfd, 0x86, 0x0e, 0xf9, 0xbf, 0x06, 0xd1, 0xc8, - 0x4a, 0x47, 0xdf, 0x26, 0x1e, 0x7e, 0x1b, 0x4d, 0xd4, 0xd9, 0x2f, 0xd5, 0xb4, 0x1a, 0xf6, 0x9c, - 0x74, 0x46, 0x5a, 0x98, 0xb8, 0x36, 0xbf, 0x18, 0x91, 0x5f, 0xe4, 0x93, 0x5c, 0x04, 0x84, 0x4d, - 0xab, 0x61, 0x2b, 0xa8, 0x1e, 0xfe, 0xc6, 0x73, 0x68, 0xd4, 0x25, 0x6d, 0x7b, 0x87, 0x18, 0x73, - 0x83, 0x67, 0xa4, 0x85, 0x31, 0x25, 0xf8, 0xc4, 0x27, 0xd1, 0xb8, 0x41, 0x5a, 0xc4, 0x23, 0xaa, - 0xe6, 0xcd, 0x55, 0xce, 0x48, 0x0b, 0x15, 0x65, 0x0c, 0x1a, 0x96, 0x3d, 0x7c, 0x0e, 0x4d, 0xf1, - 0x4e, 0x97, 0x68, 0xd4, 0xb6, 0xe6, 0x86, 0xce, 0x48, 0x0b, 0xe3, 0xca, 0x24, 0x34, 0x2a, 0xac, - 0x0d, 0x57, 0xd1, 0x98, 0xed, 0x10, 0x57, 0xf3, 0x6c, 0x77, 0x6e, 0x98, 0xf5, 0x87, 0xdf, 0xf8, - 0x3c, 0x9a, 0xd6, 0x5d, 0xa2, 0x79, 0x44, 0xf5, 0x76, 0xd5, 0x2d, 0x8d, 0x6e, 0xcd, 0x8d, 0x00, - 0x05, 0x68, 0x7d, 0xb2, 0xfb, 0x8e, 0x46, 0xb7, 0x7c, 0xa8, 0x8e, 0x63, 0x88, 0x50, 0xa3, 0x00, - 0x05, 0xad, 0x1c, 0xea, 0x24, 0x1a, 0xe7, 0x50, 0x9a, 0x37, 0x37, 0x06, 0x33, 0x85, 0x86, 0x65, - 0x0f, 0x9f, 0x46, 0x13, 0x01, 0x09, 0xb3, 0x4d, 0xe6, 0xc6, 0x59, 0x37, 0xe2, 0xf8, 0x66, 0x9b, - 0xe0, 0xb3, 0x68, 0x92, 0xf3, 0x48, 0xa5, 0xe6, 0x0b, 0x32, 0x87, 0xd8, 0x08, 0x13, 0xbc, 0xad, - 0x66, 0xbe, 0x20, 0xf2, 0x7f, 0x0f, 0xa2, 0x91, 0x47, 0xf5, 0x1f, 0x23, 0x3a, 0x63, 0xb8, 0xcd, - 0x7e, 0x95, 0x32, 0x1c, 0x10, 0x80, 0xe1, 0x76, 0xf8, 0x1b, 0x5f, 0x40, 0xd3, 0x2d, 0x5b, 0xdf, - 0x26, 0x86, 0x5a, 0xd7, 0x5a, 0x9a, 0xa5, 0x13, 0xc6, 0xf7, 0x71, 0x65, 0x0a, 0x5a, 0x57, 0xa0, - 0x51, 0xdc, 0x97, 0x4a, 0x6a, 0x5f, 0xa2, 0xd5, 0x0e, 0x25, 0x56, 0x1b, 0xdb, 0xb4, 0xe1, 0xb2, - 0x4d, 0x1b, 0x29, 0xd9, 0xb4, 0xd1, 0xd2, 0x4d, 0x1b, 0xeb, 0x69, 0xd3, 0xc6, 0x33, 0x36, 0xed, - 0x0c, 0x9a, 0xa4, 0x44, 0x6b, 0x85, 0x30, 0xc0, 0x76, 0xe4, 0xb7, 0x01, 0x84, 0xfc, 0xb7, 0x12, - 0x9a, 0x02, 0x26, 0xae, 0x11, 0x4f, 0x33, 0x5b, 0x14, 0xdf, 0x40, 0x23, 0xc0, 0xc9, 0x90, 0xef, - 0xd9, 0x26, 0x8e, 0xf3, 0x5e, 0xe1, 0xd0, 0x3e, 0x1e, 0x88, 0x3c, 0xe3, 0x75, 0x01, 0x1e, 0x28, - 0x89, 0xc2, 0xa1, 0xf1, 0x5d, 0x54, 0x69, 0xee, 0x34, 0xd9, 0x06, 0x4c, 0x5c, 0xbb, 0x2c, 0x6e, - 0xb2, 0xa8, 0xb4, 0x8b, 0x1b, 0x2d, 0xbb, 0xae, 0xb5, 0x9e, 0x41, 0xd3, 0x86, 0xdf, 0xa4, 0xf8, - 0x78, 0xf2, 0x5f, 0x55, 0xd0, 0xd4, 0xb3, 0x8d, 0x07, 0xfe, 0xb6, 0xff, 0x50, 0x5d, 0x0f, 0x4a, - 0x5d, 0x57, 0x51, 0x65, 0xa7, 0xd9, 0x60, 0xe2, 0x32, 0x71, 0xed, 0xea, 0x1e, 0xf6, 0xe4, 0x81, - 0xd6, 0x36, 0x5b, 0x5d, 0xc5, 0xc7, 0x4e, 0xe9, 0xfc, 0x44, 0x5a, 0xe7, 0xbf, 0x21, 0xa1, 0xe9, - 0xc7, 0x70, 0x52, 0x2d, 0xeb, 0xba, 0xdd, 0xb1, 0x3c, 0x9f, 0xf9, 0x9a, 0x61, 0xb8, 0x84, 0x52, - 0xb6, 0x73, 0xe3, 0x4a, 0xf0, 0x89, 0x8f, 0xa0, 0x61, 0xfb, 0xb9, 0x45, 0x5c, 0xae, 0xcb, 0xf0, - 0x81, 0xe7, 0x11, 0x72, 0x49, 0xa3, 0x63, 0x19, 0x5a, 0xbd, 0x45, 0xb8, 0x1a, 0x0b, 0x2d, 0xc5, - 0x9a, 0x9c, 0x60, 0xc4, 0x70, 0x92, 0x11, 0xf2, 0xb7, 0x24, 0x84, 0xe3, 0x13, 0x7c, 0x48, 0x3c, - 0x0d, 0x3f, 0x42, 0x33, 0xfc, 0x80, 0x55, 0x35, 0x68, 0xe6, 0x62, 0xf6, 0x72, 0x9e, 0xd0, 0xc7, - 0x89, 0x28, 0xd3, 0x4e, 0x7c, 0xd5, 0xeb, 0x68, 0x2a, 0x76, 0x52, 0x73, 0x1d, 0x3a, 0x23, 0xb2, - 0x9e, 0xa3, 0x2c, 0xd6, 0x18, 0xa0, 0xc2, 0xe0, 0x94, 0x49, 0x2a, 0x7c, 0xc9, 0x3a, 0x3a, 0xb1, - 0xd1, 0xa8, 0x39, 0x1b, 0xc4, 0x7b, 0x4a, 0x89, 0x0b, 0xe2, 0x4d, 0x15, 0xf2, 0x61, 0x87, 0x50, - 0x0f, 0x9f, 0x42, 0x88, 0x4f, 0x56, 0x35, 0x0d, 0xce, 0xdc, 0x71, 0xde, 0xb2, 0x69, 0xe0, 0x8b, - 0x68, 0xc6, 0xb4, 0xf4, 0x56, 0xc7, 0xf0, 0xe5, 0x57, 0x94, 0xfe, 0x69, 0xde, 0xac, 0x40, 0xab, - 0xfc, 0x01, 0xaa, 0x66, 0x0d, 0x42, 0x1d, 0xdb, 0xa2, 0x04, 0xbf, 0x8d, 0x46, 0x41, 0x95, 0xfc, - 0xfd, 0xab, 0x2c, 0x4c, 0x5c, 0xbb, 0x90, 0xc7, 0x92, 0x98, 0xd6, 0x2a, 0x01, 0x96, 0xfc, 0xa7, - 0x83, 0x48, 0xf6, 0xe9, 0x7f, 0xce, 0xa4, 0x1e, 0x98, 0x18, 0xba, 0xd2, 0x05, 0xa0, 0xf7, 0xb4, - 0x36, 0x09, 0x56, 0x73, 0x3a, 0xd4, 0x72, 0x4b, 0x6b, 0x13, 0xbe, 0x1c, 0xae, 0xc5, 0x3e, 0x5c, - 0x62, 0xb9, 0x83, 0xc9, 0xe5, 0x9e, 0x40, 0x63, 0x6d, 0x6d, 0x57, 0xdd, 0x26, 0x5d, 0xca, 0xa4, - 0x66, 0x48, 0x19, 0x6d, 0x6b, 0xbb, 0xef, 0x92, 0x2e, 0xf5, 0x49, 0x53, 0x4f, 0x73, 0x3d, 0x55, - 0x6b, 0x78, 0xc4, 0xe5, 0x6a, 0x8c, 0x58, 0xd3, 0xb2, 0xdf, 0x82, 0xaf, 0x20, 0xac, 0xdb, 0x96, - 0x67, 0x5a, 0x1d, 0xcd, 0x33, 0x6d, 0x4b, 0xf5, 0xec, 0x6d, 0x62, 0x71, 0x75, 0x3e, 0x24, 0xf6, - 0x3c, 0xf1, 0x3b, 0xf0, 0x4b, 0xcc, 0x6a, 0x98, 0x6d, 0xd3, 0xa7, 0x06, 0x2a, 0x1d, 0x35, 0xe0, - 0x63, 0x68, 0xc4, 0x71, 0x49, 0xc3, 0xdc, 0xe5, 0x7a, 0xcc, 0xbf, 0xb2, 0xf6, 0x63, 0x2c, 0x73, - 0x3f, 0x7e, 0xa3, 0x82, 0xce, 0x15, 0x32, 0x8c, 0xef, 0xcc, 0x4d, 0x34, 0x0a, 0xa6, 0x3a, 0xd8, - 0x99, 0x32, 0xcb, 0x1e, 0x80, 0xfb, 0x3a, 0xb4, 0x4d, 0xba, 0x2a, 0x08, 0xfa, 0x20, 0x63, 0xd6, - 0xd8, 0x36, 0xe9, 0xae, 0x32, 0xd1, 0x2d, 0x60, 0xe4, 0x59, 0x34, 0x69, 0x52, 0xd5, 0x73, 0x3b, - 0x96, 0xae, 0x79, 0xc4, 0x60, 0x9c, 0x1c, 0x53, 0x26, 0x4c, 0xfa, 0x24, 0x68, 0xc2, 0x37, 0xd0, - 0x71, 0x8b, 0xec, 0x7a, 0x6a, 0x2e, 0x3f, 0x8f, 0xfa, 0xdd, 0xab, 0x29, 0x9e, 0x62, 0x34, 0xc4, - 0xf6, 0x1d, 0xd8, 0xc9, 0x7e, 0xe7, 0x72, 0x32, 0xc6, 0xff, 0xb1, 0x24, 0xff, 0x2f, 0xa2, 0x19, - 0xb8, 0xf9, 0xaa, 0x00, 0x4e, 0xe8, 0xdc, 0xf8, 0x99, 0xca, 0xc2, 0xb8, 0x32, 0x0d, 0xcd, 0x8f, - 0x79, 0x6b, 0xce, 0xae, 0xa3, 0x9c, 0x5d, 0x97, 0x5b, 0xe8, 0x0c, 0x57, 0x13, 0xd8, 0x8b, 0xbe, - 0x84, 0x58, 0x10, 0x02, 0xc7, 0x35, 0x77, 0x34, 0x8f, 0x24, 0x94, 0xf2, 0x31, 0xb4, 0xca, 0x5f, - 0x46, 0x67, 0x0b, 0x46, 0xe3, 0x12, 0x10, 0x1d, 0xd1, 0xd2, 0x5e, 0x8e, 0x68, 0xb9, 0x81, 0xe6, - 0x33, 0x89, 0x6f, 0xae, 0x05, 0x0b, 0x39, 0x89, 0xc6, 0x83, 0x33, 0x17, 0x4c, 0x4b, 0x45, 0x19, - 0xe3, 0x27, 0xaa, 0xd1, 0xfb, 0x22, 0xbe, 0x84, 0x4e, 0xe7, 0x8e, 0xb3, 0xcf, 0x25, 0xfc, 0xb9, - 0x84, 0x96, 0x02, 0x25, 0x59, 0x63, 0x07, 0xb2, 0x11, 0xe9, 0x8a, 0x7f, 0x2b, 0x7c, 0xaf, 0xd3, - 0xae, 0x13, 0x57, 0xd1, 0xac, 0x66, 0xb8, 0x3b, 0xaf, 0x22, 0x0c, 0x76, 0xa0, 0xee, 0x03, 0xa8, - 0x16, 0x83, 0xe0, 0xab, 0x9b, 0x65, 0x3d, 0x02, 0x26, 0x5e, 0x40, 0xb3, 0xc4, 0x32, 0xe2, 0xb0, - 0x83, 0x0c, 0x76, 0x9a, 0x58, 0x86, 0x08, 0x99, 0xc1, 0x8f, 0x4a, 0x26, 0x3f, 0x7e, 0x4b, 0x42, - 0xaf, 0xf5, 0x3e, 0xe9, 0x7d, 0xab, 0x79, 0xcf, 0x2b, 0x90, 0xb7, 0x42, 0x81, 0x10, 0x8e, 0x00, - 0x66, 0x0e, 0x0e, 0xfa, 0xb0, 0x79, 0x33, 0x14, 0x89, 0xf4, 0x48, 0x7c, 0xc1, 0x47, 0xd0, 0x70, - 0x74, 0x04, 0x57, 0x14, 0xf8, 0x90, 0x5f, 0x80, 0x42, 0xf8, 0xac, 0x5b, 0xdf, 0x75, 0x4c, 0x97, - 0x18, 0x1c, 0x79, 0xa5, 0x5b, 0x73, 0x04, 0xb1, 0xe5, 0x37, 0x2e, 0x2d, 0x40, 0x1f, 0x83, 0x86, - 0x65, 0x0f, 0xcb, 0x68, 0xca, 0x71, 0xcd, 0xb6, 0xe6, 0x76, 0x55, 0xea, 0x04, 0x67, 0xc8, 0x94, - 0x32, 0xc1, 0x1b, 0x6b, 0xce, 0xa6, 0xe1, 0x8f, 0xcd, 0xec, 0x08, 0xbf, 0x0c, 0xc2, 0x87, 0xfc, - 0xa3, 0xd1, 0x09, 0x96, 0x35, 0x76, 0xb4, 0x51, 0xf1, 0x93, 0xb2, 0x4c, 0x96, 0xc3, 0x23, 0xf2, - 0x67, 0x25, 0x34, 0xc7, 0xb9, 0x02, 0x7b, 0xe8, 0x5f, 0x4a, 0x04, 0x9b, 0xc2, 0x1f, 0x4f, 0xa2, - 0x4d, 0x81, 0x26, 0x66, 0x53, 0x12, 0x46, 0x67, 0xb0, 0x17, 0xa3, 0x93, 0x2d, 0x9f, 0xb5, 0xf0, - 0xba, 0x21, 0x4e, 0x23, 0xd2, 0xd4, 0x7e, 0xde, 0x11, 0x72, 0x3b, 0xb4, 0x64, 0xfc, 0xce, 0xf4, - 0x83, 0x35, 0x9c, 0xdb, 0xb0, 0x57, 0x79, 0xc3, 0xf1, 0xc5, 0xa4, 0xee, 0x67, 0x52, 0x5f, 0xf7, - 0xb3, 0x66, 0x28, 0xcd, 0x89, 0xc1, 0x0e, 0xda, 0x92, 0x9a, 0xe1, 0xe1, 0x93, 0x31, 0xd0, 0xc1, - 0xae, 0xc9, 0x08, 0x65, 0x11, 0x46, 0x48, 0xc8, 0xe2, 0x01, 0x6d, 0xd3, 0x37, 0xa5, 0x50, 0xd6, - 0xc4, 0x61, 0xf8, 0x52, 0xee, 0x26, 0x4e, 0x85, 0x1e, 0xef, 0x9c, 0xc1, 0x13, 0xf4, 0x80, 0x6e, - 0xdf, 0xd7, 0xd1, 0x4b, 0x7c, 0x8a, 0xeb, 0x96, 0xe1, 0xd8, 0xa6, 0xcf, 0xf5, 0x9a, 0x13, 0x6d, - 0xed, 0x61, 0x34, 0x0c, 0x86, 0x44, 0x62, 0x86, 0x64, 0x88, 0x3a, 0x9b, 0x86, 0xfc, 0x16, 0x3a, - 0x95, 0x83, 0xc4, 0xd7, 0x56, 0x45, 0x63, 0x84, 0xf7, 0x70, 0x06, 0x86, 0xdf, 0xf2, 0x4f, 0x84, - 0xc8, 0x7c, 0x45, 0x44, 0x33, 0x3e, 0xdf, 0xb1, 0xa3, 0x0d, 0xd8, 0xf7, 0x5b, 0xf8, 0x14, 0x42, - 0x5d, 0xa2, 0xb9, 0x6a, 0xdb, 0xb6, 0xbc, 0xad, 0xe0, 0x16, 0xed, 0xb7, 0x3c, 0xf4, 0x1b, 0xe4, - 0xff, 0xa8, 0x24, 0xae, 0x06, 0xc2, 0x0c, 0xf8, 0xfc, 0xaf, 0xa1, 0x0a, 0x71, 0xdd, 0x50, 0xb8, - 0xea, 0x1a, 0x25, 0x7c, 0x33, 0x22, 0xbf, 0xe8, 0xa2, 0x4f, 0x63, 0xdd, 0xff, 0xa9, 0xf8, 0xc0, - 0xfe, 0xc9, 0xab, 0x6f, 0x69, 0x6e, 0x93, 0x18, 0xea, 0x87, 0x3e, 0x31, 0x78, 0x40, 0xc2, 0xcd, - 0x73, 0x96, 0xf7, 0xb0, 0x51, 0xfc, 0x57, 0x24, 0xbe, 0x8c, 0x30, 0x75, 0xd4, 0x86, 0x4b, 0x88, - 0x08, 0x0d, 0x77, 0xd1, 0x19, 0xea, 0x3c, 0x70, 0x09, 0x89, 0x80, 0xcf, 0xa1, 0x29, 0xdd, 0xb6, - 0x68, 0xa7, 0x4d, 0x0c, 0x80, 0x1b, 0x62, 0x70, 0x93, 0x41, 0x23, 0x03, 0x7a, 0x03, 0x1d, 0x17, - 0xc8, 0xf1, 0x2e, 0x00, 0x1f, 0x66, 0xe0, 0x47, 0x1a, 0x01, 0xd1, 0x55, 0xe8, 0x64, 0x68, 0xb7, - 0x51, 0x95, 0x3a, 0xc0, 0xaa, 0x56, 0x37, 0x35, 0xa1, 0x11, 0x86, 0x79, 0x8c, 0x3a, 0x0f, 0x01, - 0x20, 0x3e, 0xaf, 0x35, 0x74, 0x3a, 0x03, 0x31, 0x36, 0xf4, 0x28, 0x23, 0x70, 0xb2, 0x9d, 0x40, - 0x17, 0x67, 0xf0, 0x2a, 0xc2, 0x9e, 0xed, 0x69, 0xad, 0x38, 0xe2, 0x18, 0x30, 0x8e, 0xf5, 0x88, - 0xd0, 0xaf, 0xa0, 0x43, 0x2e, 0x69, 0x6b, 0xa6, 0x25, 0x4e, 0x73, 0x1c, 0xf8, 0x06, 0x1d, 0xe1, - 0xfc, 0xe4, 0xd5, 0xd0, 0x4e, 0x26, 0x36, 0x3a, 0x79, 0xec, 0x0b, 0xe2, 0x22, 0x25, 0xc5, 0xc5, - 0x86, 0x97, 0x4a, 0x2e, 0x91, 0x7d, 0x88, 0x4c, 0x78, 0x0b, 0x18, 0x14, 0x6f, 0x01, 0x6d, 0x10, - 0x4f, 0xff, 0x24, 0xce, 0xd1, 0x90, 0xe2, 0x19, 0xfb, 0x6f, 0x0a, 0xbb, 0xd1, 0xa0, 0xdc, 0xab, - 0x35, 0xa5, 0xf0, 0xaf, 0xf8, 0xc1, 0x3f, 0x15, 0x1c, 0xfc, 0xbf, 0x54, 0x41, 0x47, 0x53, 0xe3, - 0xf8, 0xb6, 0xa1, 0xdc, 0x12, 0xc6, 0xec, 0x3e, 0x7f, 0x63, 0x85, 0x76, 0xff, 0x87, 0x12, 0xde, - 0x9f, 0x84, 0xcb, 0xbf, 0x2b, 0xc1, 0x89, 0x9b, 0x29, 0x00, 0xfb, 0x90, 0xb6, 0x75, 0x34, 0xe2, - 0x12, 0xda, 0x69, 0xf9, 0x62, 0xe1, 0x5f, 0xdd, 0xae, 0x94, 0x5c, 0xdd, 0xe2, 0xd2, 0xa0, 0x70, - 0x64, 0x79, 0x25, 0xd4, 0x87, 0xcf, 0x69, 0x1e, 0xc9, 0x95, 0xd1, 0xd4, 0x9d, 0x40, 0x90, 0x0d, - 0xf9, 0xeb, 0x12, 0x3a, 0x5f, 0x4c, 0x64, 0x1f, 0xeb, 0xbc, 0x87, 0x86, 0xd9, 0x36, 0xf1, 0x13, - 0x71, 0x21, 0x89, 0xc5, 0xc2, 0x55, 0x3e, 0x0e, 0x0c, 0xca, 0x06, 0x64, 0x67, 0x08, 0xa0, 0xc9, - 0xdf, 0xcf, 0xe4, 0x3f, 0xe7, 0xc2, 0x41, 0x9d, 0x51, 0xe1, 0x3b, 0xcd, 0x33, 0xdb, 0x84, 0x7a, - 0x5a, 0xdb, 0x51, 0x3b, 0x94, 0xdb, 0x01, 0x78, 0xa7, 0x3d, 0x09, 0x3a, 0x9e, 0x86, 0xaf, 0x9c, - 0x18, 0x6c, 0x25, 0x7c, 0xe5, 0x88, 0x90, 0xe7, 0xd1, 0x74, 0x5b, 0xdb, 0xe5, 0x77, 0x02, 0xff, - 0x41, 0xc4, 0xfd, 0x87, 0x93, 0x6d, 0x6d, 0x17, 0x96, 0xf0, 0x5e, 0xa7, 0x2d, 0xff, 0x85, 0x84, - 0x50, 0xb4, 0xa8, 0xf2, 0xeb, 0xf7, 0x49, 0x34, 0x1e, 0x04, 0x37, 0x42, 0x45, 0xe7, 0xa1, 0x0b, - 0x76, 0xc1, 0x0b, 0x9e, 0x4d, 0x81, 0x17, 0xb4, 0xc2, 0x28, 0x4c, 0xf3, 0xe6, 0x65, 0xee, 0x0c, - 0x3d, 0x8b, 0x26, 0x63, 0x2b, 0x80, 0x99, 0x4d, 0x78, 0xc2, 0xf4, 0x4f, 0xa2, 0x71, 0x97, 0x68, - 0x86, 0xa8, 0xd4, 0x63, 0x7e, 0x03, 0x53, 0x8c, 0xef, 0x49, 0x70, 0x43, 0xcc, 0xde, 0x98, 0x7d, - 0x48, 0xcc, 0xbb, 0x68, 0x92, 0x8d, 0x0a, 0x5c, 0xa3, 0x5c, 0x3f, 0xe4, 0x3c, 0xfd, 0x88, 0x46, - 0x5d, 0x19, 0xfa, 0xe8, 0x93, 0xd3, 0x92, 0x32, 0xe1, 0x86, 0x2d, 0xd4, 0xb7, 0x52, 0xcc, 0x3b, - 0x94, 0xb1, 0xbd, 0xb0, 0x65, 0x47, 0xfc, 0xee, 0x5a, 0x62, 0x8b, 0xe5, 0xbb, 0x60, 0xf5, 0x3f, - 0xdf, 0x21, 0x6e, 0xf7, 0xa9, 0xd3, 0xb2, 0x35, 0xe3, 0xb1, 0x6b, 0x37, 0x7d, 0xbe, 0x09, 0x1a, - 0x15, 0x6d, 0x82, 0x14, 0xdf, 0x04, 0xf9, 0x5b, 0x5c, 0x68, 0x33, 0xf1, 0xf7, 0x75, 0xab, 0x19, - 0xa6, 0x5e, 0x70, 0xc5, 0x9d, 0xbe, 0x76, 0x6c, 0x11, 0xe2, 0x8d, 0x80, 0xf6, 0x44, 0xa3, 0xdb, - 0x35, 0xbf, 0x57, 0x01, 0x20, 0x5f, 0x14, 0x88, 0xeb, 0xaa, 0x06, 0xa1, 0xba, 0x6b, 0x3a, 0x9e, - 0x69, 0x5b, 0x81, 0x28, 0x10, 0xd7, 0x5d, 0x8b, 0x5a, 0xe5, 0x75, 0xf4, 0x72, 0x38, 0x5b, 0x85, - 0xd0, 0x4e, 0x5b, 0xab, 0xb7, 0x08, 0x4c, 0xbb, 0x46, 0x9a, 0xfe, 0xa5, 0xb5, 0xa7, 0x55, 0xff, - 0x94, 0x84, 0x2e, 0x96, 0xd2, 0xd9, 0xc7, 0xea, 0xcf, 0xa1, 0x29, 0x0a, 0x64, 0x04, 0x47, 0xe2, - 0x94, 0x32, 0xc9, 0x1b, 0xd9, 0x0d, 0x40, 0xfe, 0xfa, 0x20, 0x1a, 0x66, 0x81, 0x04, 0x7c, 0x1d, - 0x0d, 0xb3, 0x20, 0x03, 0x1f, 0xe4, 0x54, 0x96, 0x3d, 0x60, 0x90, 0x60, 0x6e, 0x18, 0x6c, 0x2c, - 0xba, 0x32, 0x98, 0x88, 0xae, 0xc4, 0xde, 0xfa, 0x95, 0xc4, 0x5b, 0xff, 0x34, 0x9a, 0x08, 0x42, - 0x2f, 0x66, 0x9b, 0x70, 0x6d, 0x42, 0x3c, 0xee, 0x62, 0xb6, 0x13, 0x61, 0x84, 0xe1, 0xe2, 0x30, - 0xc2, 0x48, 0x2a, 0x9e, 0xf2, 0x0a, 0x3a, 0x04, 0xfe, 0x14, 0xd5, 0x6e, 0xa8, 0x6d, 0xe2, 0xff, - 0xa2, 0xec, 0xb0, 0xab, 0x28, 0x33, 0xd0, 0xf1, 0xa8, 0xf1, 0x10, 0x9a, 0xc5, 0xe8, 0xd3, 0x58, - 0x2c, 0xfa, 0x24, 0xff, 0xcd, 0x20, 0x9a, 0x60, 0x4b, 0x06, 0xd0, 0xfe, 0x58, 0x54, 0xe2, 0x16, - 0x17, 0x39, 0x58, 0x29, 0xe2, 0xe0, 0x50, 0x31, 0x07, 0x87, 0x8b, 0x39, 0x38, 0x52, 0xcc, 0xc1, - 0xd1, 0x14, 0x07, 0x73, 0xb9, 0xc2, 0xf4, 0x64, 0xd7, 0x31, 0x5d, 0xee, 0x94, 0x8d, 0x02, 0x5a, - 0xd3, 0x51, 0x33, 0x8b, 0xe5, 0x7c, 0x47, 0x42, 0xc7, 0xf9, 0x41, 0xc9, 0xb8, 0xe2, 0x9b, 0xbe, - 0x40, 0x33, 0x02, 0x77, 0xb2, 0x94, 0xe9, 0x4e, 0x1e, 0x8c, 0xb9, 0x93, 0x4f, 0xa3, 0x09, 0xc8, - 0x87, 0x50, 0x7d, 0x91, 0xe7, 0x5c, 0x42, 0xd0, 0xf4, 0xa4, 0xeb, 0x90, 0xe8, 0x6e, 0x38, 0x24, - 0x38, 0x85, 0x84, 0x9b, 0x24, 0xf0, 0x26, 0xb8, 0x49, 0x66, 0xb8, 0xc2, 0x46, 0x32, 0x5d, 0x61, - 0xcd, 0xf0, 0xa1, 0x2d, 0x4c, 0x9f, 0x2b, 0xe4, 0x1b, 0x68, 0x84, 0x6d, 0x6f, 0xe0, 0x4a, 0x3a, - 0x95, 0x67, 0x6f, 0x21, 0x72, 0xca, 0x81, 0x73, 0x2e, 0xcd, 0x04, 0x9d, 0x8c, 0x1f, 0x0d, 0x74, - 0xa5, 0xbb, 0xb9, 0x26, 0xc6, 0x91, 0xc2, 0xdb, 0x08, 0x8c, 0x37, 0xa4, 0x8c, 0x07, 0xd7, 0x11, - 0xda, 0xbb, 0x6b, 0xef, 0x5f, 0x25, 0x78, 0x2f, 0xa7, 0xc7, 0xe1, 0x8b, 0xfa, 0x72, 0xd2, 0x41, - 0xb6, 0x9c, 0xbb, 0xaa, 0x02, 0x32, 0xfc, 0xd6, 0x40, 0xd7, 0x2d, 0xcf, 0xed, 0x86, 0x3e, 0xb4, - 0xea, 0xfb, 0x68, 0x52, 0xec, 0xc0, 0xb3, 0xa8, 0xb2, 0x4d, 0xba, 0xdc, 0x2a, 0xfa, 0x3f, 0xf1, - 0xeb, 0x68, 0x78, 0x47, 0x6b, 0x75, 0x48, 0x8f, 0xf1, 0x6c, 0x00, 0xbe, 0x3d, 0x78, 0x53, 0x12, - 0x19, 0x18, 0xfa, 0x6b, 0xe3, 0x0c, 0x0c, 0xcd, 0x70, 0xc8, 0xc0, 0xc0, 0x0e, 0xf7, 0xc9, 0xc0, - 0xf8, 0x38, 0x11, 0x03, 0xe3, 0xae, 0xe0, 0x52, 0x06, 0x66, 0x91, 0xe1, 0x0e, 0xba, 0x80, 0x81, - 0x9c, 0xa2, 0xcf, 0x40, 0xb1, 0x63, 0x1f, 0x0c, 0xe4, 0x0e, 0x40, 0x81, 0x81, 0x3f, 0x33, 0x08, - 0x27, 0xf0, 0x33, 0xe2, 0x9a, 0x8d, 0xee, 0xe3, 0x30, 0x47, 0xc9, 0x9f, 0x57, 0xc0, 0xc5, 0xd7, - 0x05, 0x4b, 0xc5, 0xd4, 0x76, 0x65, 0xee, 0xbb, 0xdf, 0xbe, 0x72, 0x84, 0xe7, 0x49, 0xf1, 0x7b, - 0x52, 0xcd, 0x73, 0x4d, 0xab, 0x29, 0xd8, 0xb0, 0x07, 0x68, 0x2a, 0x48, 0x67, 0x02, 0xf5, 0x85, - 0xb3, 0xf8, 0xac, 0x68, 0x3b, 0x03, 0x80, 0x45, 0x85, 0x44, 0x5a, 0xad, 0x4c, 0xba, 0xc2, 0x97, - 0x6f, 0x04, 0x42, 0x3a, 0xa6, 0xc1, 0x9f, 0x62, 0x28, 0x68, 0xda, 0x34, 0xf0, 0x0a, 0x9a, 0xd0, - 0x74, 0x30, 0x49, 0xfe, 0x30, 0x43, 0xe9, 0x61, 0xa2, 0xd4, 0xab, 0xc5, 0x65, 0x06, 0xc9, 0x86, - 0x41, 0x5a, 0xf8, 0x5b, 0xfe, 0x12, 0xdc, 0xd1, 0xb2, 0xb9, 0x10, 0x69, 0x3e, 0x69, 0x34, 0x02, - 0x37, 0xeb, 0x74, 0xfc, 0x14, 0x10, 0x86, 0x58, 0x67, 0x40, 0x0a, 0x07, 0x96, 0xef, 0xa3, 0x4b, - 0xc1, 0x9e, 0xa7, 0xe2, 0xf7, 0x26, 0xa1, 0x3d, 0x38, 0xae, 0x7e, 0x5f, 0x42, 0xaf, 0xf4, 0x42, - 0x82, 0xcf, 0xd3, 0x43, 0xa7, 0x9a, 0x2c, 0x5d, 0x40, 0xe5, 0x29, 0x04, 0x2a, 0xb3, 0x41, 0x6a, - 0x83, 0x83, 0x73, 0x09, 0xed, 0x23, 0xd9, 0xa0, 0xda, 0xcc, 0xee, 0x31, 0x09, 0x95, 0xef, 0xc3, - 0x9d, 0xc6, 0xb7, 0x99, 0x29, 0xa0, 0x95, 0xee, 0xc6, 0x4e, 0x33, 0x5a, 0xe4, 0x51, 0x34, 0xd2, - 0xdc, 0x69, 0x46, 0xab, 0x1c, 0x6e, 0xee, 0x34, 0x37, 0x0d, 0xf9, 0x6b, 0x12, 0x5a, 0x28, 0x27, - 0xc1, 0x17, 0xf9, 0x01, 0x3a, 0x92, 0xb5, 0x48, 0x7e, 0x40, 0xef, 0x29, 0xb9, 0x05, 0xa7, 0x57, - 0x25, 0xdf, 0x0a, 0xbd, 0xba, 0x19, 0x6c, 0x88, 0x96, 0xb1, 0xd3, 0x6c, 0x08, 0xcb, 0xd8, 0x69, - 0x36, 0x36, 0x0d, 0x79, 0x2b, 0xf4, 0xaa, 0x67, 0xa1, 0xf2, 0xe9, 0xf3, 0xb4, 0x0f, 0x69, 0x3f, - 0x69, 0x1f, 0xf2, 0xb3, 0x70, 0x92, 0x19, 0xab, 0xea, 0xe1, 0x41, 0xeb, 0xaf, 0xa0, 0x05, 0x1b, - 0x31, 0xc8, 0x7d, 0x2b, 0x6c, 0x23, 0xea, 0xe1, 0x0a, 0xb2, 0xe8, 0x86, 0x8e, 0x60, 0x96, 0x4c, - 0x24, 0xf5, 0x99, 0x4c, 0xb4, 0x9d, 0x32, 0xdc, 0x9b, 0xd6, 0xc6, 0xb3, 0x8d, 0x62, 0x11, 0x49, - 0xe6, 0x0b, 0x70, 0x5b, 0x20, 0xe4, 0x0b, 0xc4, 0x2e, 0x04, 0xa1, 0xb3, 0x48, 0x4d, 0x59, 0x6f, - 0x3e, 0x58, 0x94, 0x49, 0x11, 0xb7, 0xde, 0x17, 0x8a, 0x0d, 0x28, 0x4f, 0xe0, 0x0a, 0x2d, 0xb4, - 0xfc, 0xab, 0xdc, 0x33, 0x90, 0x1c, 0x61, 0xd9, 0x32, 0x82, 0x27, 0x5f, 0xe1, 0xba, 0x0a, 0x5d, - 0x52, 0x7d, 0x2e, 0x7a, 0x0b, 0x5d, 0x28, 0x99, 0xd2, 0x41, 0xad, 0xfe, 0xf7, 0xa4, 0xc8, 0xc4, - 0x85, 0xc7, 0x9a, 0x38, 0xd4, 0x03, 0xdb, 0xdd, 0x58, 0x0d, 0x58, 0xf0, 0x12, 0x42, 0x06, 0xf5, - 0xd4, 0x18, 0x1b, 0xc6, 0x0c, 0xea, 0x6d, 0xfc, 0xc0, 0x38, 0xd1, 0x8e, 0xcc, 0x67, 0xd1, 0xf4, - 0x0e, 0x8a, 0x1d, 0x4f, 0xa2, 0x98, 0xe4, 0x43, 0xb3, 0xe9, 0x6a, 0x1e, 0x81, 0x61, 0xd6, 0x59, - 0xca, 0x6c, 0xc0, 0x86, 0x13, 0x68, 0x0c, 0xc2, 0xbf, 0xa1, 0x5e, 0x8e, 0xb2, 0xef, 0x4d, 0x23, - 0x3a, 0x04, 0x06, 0x85, 0x43, 0xe0, 0x5f, 0x06, 0xd1, 0xf1, 0x1c, 0x92, 0xf8, 0x1e, 0x1a, 0x66, - 0xf9, 0xb8, 0x5c, 0x1b, 0x17, 0xb2, 0x9e, 0x27, 0x0c, 0x14, 0x90, 0xfd, 0x83, 0x8d, 0xdf, 0xa4, - 0x18, 0x1a, 0xfe, 0x3c, 0x9a, 0xd4, 0x35, 0x4b, 0x27, 0x2d, 0x15, 0xc8, 0xc0, 0x2d, 0x62, 0x31, - 0x97, 0xcc, 0x2a, 0x03, 0x4e, 0x12, 0x9b, 0x00, 0x1a, 0x0c, 0x02, 0x7f, 0x01, 0x4d, 0xeb, 0x76, - 0xdb, 0x61, 0x49, 0x7a, 0x40, 0x14, 0xd2, 0x0e, 0x5f, 0xcb, 0x27, 0xca, 0xc1, 0x93, 0x64, 0xa7, - 0x02, 0x3a, 0x40, 0xf8, 0x11, 0x9a, 0x74, 0x09, 0xbb, 0xd2, 0x01, 0xd9, 0x21, 0x46, 0xf6, 0xd5, - 0x5c, 0xb2, 0x0a, 0x03, 0x8e, 0x71, 0x4d, 0x99, 0x00, 0x0a, 0xac, 0x5f, 0xb6, 0xa2, 0x9c, 0x9e, - 0xcc, 0xed, 0xe2, 0x62, 0xb1, 0x81, 0x46, 0x20, 0xe7, 0x99, 0x4b, 0xc5, 0x52, 0x9e, 0x54, 0xe4, - 0x11, 0xe2, 0xe8, 0x32, 0x41, 0xaf, 0x06, 0xe3, 0xe5, 0x2c, 0xb9, 0x67, 0x41, 0xa9, 0xa2, 0x71, - 0xea, 0xea, 0xb1, 0x98, 0xf9, 0x28, 0x75, 0xf5, 0x9a, 0x2f, 0x2f, 0x3f, 0x2f, 0xa1, 0x2b, 0x3d, - 0x8e, 0xc3, 0x57, 0xf8, 0x25, 0x96, 0x9e, 0x23, 0x6c, 0x59, 0xb0, 0xd4, 0xbd, 0xef, 0xd9, 0x74, - 0x6c, 0xcf, 0xa8, 0xfc, 0x5e, 0x64, 0x80, 0x6b, 0xcf, 0x35, 0xe7, 0x51, 0x67, 0x9f, 0xca, 0xf0, - 0x3f, 0x12, 0x3a, 0x94, 0x22, 0x86, 0xef, 0x0a, 0x5b, 0x04, 0xb1, 0xc9, 0xbc, 0x53, 0x89, 0x21, - 0x70, 0xe4, 0x60, 0x63, 0xf0, 0x63, 0x34, 0x25, 0x6a, 0x01, 0xe5, 0x6a, 0x70, 0xb9, 0x98, 0x0a, - 0xe8, 0x42, 0x40, 0x6b, 0x52, 0xd0, 0x01, 0x8a, 0x9f, 0xa5, 0x39, 0x0a, 0x5a, 0x70, 0xa5, 0x84, - 0x26, 0x47, 0x0a, 0xa8, 0x26, 0xd9, 0x59, 0x87, 0x60, 0x64, 0x06, 0x3b, 0xf9, 0x56, 0x2e, 0x27, - 0x84, 0xf5, 0x52, 0x91, 0xb0, 0xc6, 0x49, 0x04, 0x62, 0xfa, 0x20, 0xca, 0xe2, 0x49, 0x9f, 0xe1, - 0xfe, 0x95, 0x93, 0xe8, 0xb6, 0x65, 0x68, 0x6e, 0xb7, 0xf6, 0xb8, 0xf0, 0xf2, 0xfa, 0x3c, 0x4a, - 0xac, 0x29, 0xa7, 0x13, 0xde, 0x8e, 0xe2, 0x6f, 0xec, 0x3d, 0x5d, 0x2f, 0x38, 0xaa, 0xbc, 0x19, - 0x59, 0xfd, 0xcc, 0x81, 0xe3, 0x07, 0x73, 0xa1, 0xe3, 0xdf, 0x45, 0x97, 0x7b, 0x22, 0x75, 0x90, - 0xd3, 0x7f, 0x18, 0x5d, 0x90, 0x6a, 0xce, 0xfa, 0xae, 0xb9, 0x4f, 0x8d, 0xf9, 0x8e, 0x84, 0x66, - 0x93, 0xb4, 0xf0, 0x46, 0xfc, 0xdc, 0xb8, 0x5a, 0xa2, 0x2f, 0xa0, 0xf9, 0x8f, 0x5d, 0x7b, 0xc7, - 0x34, 0x88, 0xeb, 0xd3, 0x09, 0x0e, 0x90, 0xaf, 0xa4, 0xac, 0x3d, 0xe8, 0xce, 0xad, 0x1e, 0xe5, - 0x3c, 0x83, 0x72, 0xdc, 0xec, 0xcb, 0x5f, 0x11, 0x2c, 0x48, 0x8c, 0x1d, 0x9c, 0xe7, 0xf7, 0x13, - 0xba, 0xbf, 0x50, 0x28, 0xf1, 0x22, 0x85, 0x40, 0xe0, 0x97, 0xd1, 0x11, 0x7e, 0xeb, 0xad, 0x3d, - 0x66, 0x6e, 0x3c, 0xce, 0xe9, 0x4b, 0x68, 0x36, 0x78, 0xd3, 0xaa, 0xf1, 0x7c, 0xe9, 0x99, 0xa0, - 0x9d, 0x3f, 0x81, 0xe5, 0x3a, 0x3a, 0x9a, 0x20, 0xc1, 0x67, 0xb7, 0x89, 0x66, 0x83, 0x04, 0x6d, - 0x87, 0x2f, 0x32, 0x33, 0xfa, 0xe2, 0x2c, 0x26, 0x58, 0xa1, 0xcc, 0xd0, 0x78, 0x83, 0x7c, 0x13, - 0x2e, 0xe7, 0x8f, 0xc3, 0xd4, 0x28, 0x4b, 0xb7, 0xdb, 0x24, 0xb8, 0x84, 0x14, 0x69, 0xe2, 0x5f, - 0x4b, 0x70, 0x31, 0xc9, 0x43, 0xe5, 0x73, 0xbd, 0x8c, 0x0e, 0xe9, 0x1d, 0xd7, 0x25, 0x96, 0x10, - 0x06, 0x08, 0x52, 0xf1, 0x78, 0x47, 0x18, 0x01, 0xc0, 0x5b, 0xe8, 0x84, 0x98, 0xb9, 0xc5, 0x08, - 0xaa, 0x06, 0x50, 0x2c, 0x0b, 0xd8, 0x65, 0xce, 0x43, 0x39, 0xe6, 0x64, 0x4e, 0x4f, 0xfe, 0x47, - 0x09, 0x1d, 0xcd, 0xc4, 0xc8, 0x79, 0x87, 0x1d, 0x50, 0xaa, 0x09, 0x7e, 0x82, 0x46, 0x60, 0x59, - 0xcc, 0x74, 0x4f, 0xae, 0xdc, 0xf9, 0xe8, 0x93, 0xd3, 0x03, 0xdf, 0xfb, 0xe4, 0xf4, 0xcb, 0x4d, - 0xd3, 0xdb, 0xea, 0xd4, 0x17, 0x75, 0xbb, 0xcd, 0x2b, 0xc6, 0xf8, 0x3f, 0x57, 0xa8, 0xb1, 0xcd, - 0x0b, 0x9f, 0x36, 0x2d, 0xef, 0xbb, 0xdf, 0xbe, 0x82, 0xb8, 0xa3, 0x64, 0xd3, 0xf2, 0x14, 0x4e, - 0x4b, 0xbe, 0x0d, 0x97, 0x8e, 0xc8, 0xf8, 0xed, 0x61, 0x1f, 0xff, 0x81, 0x3f, 0x36, 0xf2, 0x91, - 0xfb, 0xd9, 0x49, 0x0b, 0x9d, 0xa4, 0x01, 0xc1, 0xdc, 0xbd, 0xcc, 0xbd, 0xf4, 0xe4, 0xcc, 0x45, - 0x99, 0xa3, 0x39, 0x93, 0x94, 0xff, 0x59, 0x42, 0xc7, 0x73, 0xb0, 0xf2, 0x5e, 0x49, 0xff, 0xaf, - 0x77, 0xf4, 0x9f, 0x2a, 0x68, 0xa4, 0xe6, 0x69, 0x5e, 0x87, 0x62, 0x15, 0x1d, 0x4d, 0x6a, 0xbb, - 0x18, 0x70, 0xbd, 0x9c, 0xcb, 0xc4, 0xb8, 0xaa, 0x33, 0x0b, 0x72, 0x98, 0xa6, 0x1b, 0x71, 0x0d, - 0x1d, 0x02, 0xe3, 0x4f, 0xbb, 0x96, 0x1e, 0x10, 0x07, 0x66, 0x5c, 0xcc, 0xf5, 0x9d, 0xfa, 0x08, - 0x35, 0x06, 0xcf, 0x08, 0xcf, 0xd4, 0xe3, 0x0d, 0xf8, 0x3e, 0x42, 0xfa, 0x96, 0x66, 0x5a, 0x40, - 0x0d, 0xee, 0x29, 0x67, 0xf3, 0xa8, 0xad, 0xfa, 0x90, 0x8c, 0xce, 0xb8, 0x1e, 0xfc, 0xc4, 0x0f, - 0xd0, 0x64, 0x5b, 0xb3, 0xb4, 0x66, 0x30, 0x23, 0xb8, 0x9a, 0x9f, 0xcb, 0xa3, 0xf1, 0x10, 0x60, - 0x19, 0x95, 0x89, 0x76, 0xf4, 0x81, 0x37, 0xd1, 0x14, 0xd9, 0x25, 0x7a, 0xc7, 0xb7, 0xb8, 0x8c, - 0xd0, 0x30, 0x23, 0x74, 0x3e, 0x8f, 0xd0, 0x3a, 0x07, 0x66, 0x94, 0x26, 0x89, 0xf0, 0x85, 0xdf, - 0x44, 0xa3, 0x4d, 0x1d, 0x88, 0x8c, 0x14, 0xbb, 0x46, 0x37, 0x56, 0x19, 0xfa, 0x48, 0x53, 0xf7, - 0xff, 0x95, 0x7f, 0xbd, 0x82, 0x66, 0x12, 0x2c, 0xc3, 0x2f, 0xa3, 0x99, 0x3a, 0xe5, 0x49, 0xbb, - 0x5b, 0xc4, 0x6c, 0x6e, 0x05, 0x99, 0xac, 0x53, 0x75, 0xca, 0x60, 0xdf, 0x61, 0x8d, 0x58, 0x46, - 0x53, 0x11, 0x9c, 0x46, 0x83, 0x64, 0xae, 0x89, 0x00, 0x8a, 0xd7, 0x16, 0xd5, 0xa9, 0x2a, 0x46, - 0x62, 0x20, 0x50, 0x36, 0x59, 0xa7, 0x4f, 0xa3, 0x58, 0xcc, 0x02, 0x9a, 0xad, 0x53, 0xb5, 0xdd, - 0xa5, 0x1f, 0xb6, 0xd4, 0x1d, 0xe2, 0x52, 0x33, 0xac, 0x75, 0x9a, 0xae, 0xd3, 0x87, 0x7e, 0xf3, - 0x33, 0x68, 0xc5, 0xf7, 0xd1, 0xa9, 0x3a, 0x55, 0x0d, 0xd2, 0xd0, 0x3a, 0x2d, 0x4f, 0xd5, 0xb7, - 0x34, 0x57, 0xd3, 0x3d, 0xe2, 0xaa, 0x34, 0xc8, 0x83, 0x81, 0x1c, 0xff, 0x13, 0x75, 0xba, 0x06, - 0x30, 0xab, 0x01, 0x48, 0x8d, 0xa7, 0xc5, 0xdc, 0x42, 0x27, 0x44, 0x0a, 0x76, 0xab, 0x05, 0x71, - 0x1e, 0x21, 0xf9, 0xff, 0x58, 0x84, 0x1d, 0x74, 0x07, 0x05, 0x20, 0xfe, 0x34, 0x7d, 0xc6, 0x12, - 0x3a, 0x37, 0xca, 0x72, 0xfa, 0xc7, 0xeb, 0xf4, 0x21, 0x34, 0xf0, 0xee, 0xe7, 0xb6, 0xbb, 0x4d, - 0x5c, 0xca, 0x82, 0x4a, 0x53, 0x7e, 0xf7, 0x17, 0xa0, 0x01, 0x5f, 0x42, 0x87, 0xea, 0x54, 0x25, - 0x96, 0x56, 0x6f, 0x11, 0xd5, 0xe8, 0x68, 0x2d, 0xd5, 0xa8, 0xb3, 0xc0, 0xd2, 0x98, 0xbf, 0xca, - 0x75, 0xd6, 0xbe, 0xd6, 0xd1, 0x5a, 0x6b, 0x75, 0xf9, 0x5d, 0x34, 0x1e, 0x4a, 0x9e, 0x7f, 0x05, - 0xe2, 0x02, 0x1b, 0xa4, 0x3d, 0x8f, 0x82, 0x2c, 0x1a, 0x2c, 0x31, 0x87, 0x75, 0x05, 0x07, 0xf6, - 0x20, 0x9b, 0xd3, 0x24, 0x6b, 0x0c, 0x4e, 0xeb, 0xff, 0x1c, 0x44, 0x87, 0x33, 0x54, 0xce, 0xdf, - 0x66, 0xea, 0xa8, 0xba, 0x6d, 0x90, 0x90, 0xe7, 0x40, 0x7e, 0x8a, 0x3a, 0xab, 0xb6, 0x41, 0x02, - 0x96, 0x9f, 0x47, 0xd3, 0x01, 0x9c, 0x6e, 0xb7, 0xdb, 0xa6, 0xc7, 0xf7, 0x79, 0x12, 0xc0, 0x56, - 0x59, 0x1b, 0xbe, 0xc8, 0xa8, 0x69, 0xae, 0xbe, 0x65, 0x7a, 0x44, 0xf7, 0x3a, 0x6e, 0x10, 0xc7, - 0x9a, 0xa6, 0xce, 0xb2, 0xd0, 0xea, 0x4b, 0x0d, 0x75, 0xd4, 0xa6, 0x9d, 0xd8, 0xe8, 0x09, 0xea, - 0x6c, 0xd8, 0xc1, 0x90, 0x8b, 0xe8, 0x30, 0x75, 0x54, 0xb8, 0x76, 0x98, 0x56, 0x53, 0xa5, 0x5d, - 0xea, 0x91, 0x76, 0x50, 0x0f, 0x43, 0x9d, 0x47, 0x41, 0x4f, 0x8d, 0x75, 0xc4, 0xe0, 0x85, 0xeb, - 0xcb, 0x48, 0x1c, 0x3e, 0xbc, 0xc0, 0xf0, 0x25, 0x19, 0x36, 0xcb, 0x54, 0x63, 0x1b, 0x3f, 0x1a, - 0x2c, 0x69, 0x8d, 0x35, 0xb2, 0xed, 0xbe, 0x8a, 0x8e, 0x66, 0xa6, 0x26, 0xf1, 0xdc, 0x20, 0x9c, - 0xce, 0x4a, 0x92, 0xff, 0x58, 0x42, 0x13, 0x82, 0xbe, 0x43, 0x6a, 0x08, 0xdb, 0xf0, 0x96, 0xad, - 0x19, 0xaa, 0xa7, 0xd1, 0x6d, 0xc6, 0xe4, 0x31, 0x65, 0x1a, 0xda, 0x3f, 0x67, 0x6b, 0xc6, 0x13, - 0x8d, 0x6e, 0xe3, 0x6b, 0xe8, 0x28, 0x87, 0xdc, 0x22, 0x5a, 0xcb, 0xdb, 0x52, 0xf5, 0x2d, 0xa2, - 0x6f, 0xf3, 0x7c, 0xf9, 0x31, 0xe5, 0x30, 0x74, 0xbe, 0xc3, 0xfa, 0x56, 0xa1, 0x0b, 0xdf, 0x45, - 0x27, 0x39, 0x8e, 0x4f, 0x58, 0x75, 0x89, 0xe7, 0x9f, 0x69, 0xfa, 0x16, 0xf1, 0xe5, 0xd1, 0xe5, - 0x29, 0xd6, 0x73, 0x00, 0xe2, 0x0f, 0xa2, 0xf8, 0x00, 0xb5, 0xa0, 0xdf, 0x3f, 0x60, 0x27, 0x45, - 0x9b, 0xe2, 0xab, 0x46, 0xcb, 0xa4, 0x1e, 0xb1, 0x54, 0x56, 0xe3, 0x09, 0xf4, 0x7c, 0xa5, 0xb5, - 0x3b, 0x81, 0x09, 0x38, 0x06, 0x00, 0x35, 0xa2, 0xb5, 0x18, 0xb5, 0x27, 0xd0, 0x8b, 0xef, 0xa1, - 0x97, 0xf8, 0xbb, 0xc2, 0x73, 0xb5, 0x46, 0xc3, 0xd4, 0xd5, 0x6d, 0x42, 0x1c, 0x86, 0xac, 0x1a, - 0x5a, 0x97, 0x87, 0x03, 0xe7, 0x00, 0xe6, 0x09, 0x80, 0xbc, 0x4b, 0x88, 0xe3, 0xe3, 0xaf, 0x69, - 0x5d, 0x7c, 0x13, 0x9d, 0x10, 0x92, 0x3c, 0x12, 0xc8, 0x60, 0x32, 0x8e, 0x46, 0x79, 0x1c, 0x02, - 0xa6, 0xfc, 0x0b, 0x12, 0x1a, 0x01, 0xa3, 0x26, 0x70, 0xbb, 0xa9, 0xab, 0x2f, 0xec, 0x76, 0xdd, - 0x24, 0x71, 0x6e, 0x6f, 0xe8, 0xef, 0xb3, 0x56, 0x5f, 0x00, 0x22, 0x48, 0xdf, 0x42, 0x72, 0x36, - 0x4f, 0x06, 0x70, 0xac, 0x28, 0xef, 0x2a, 0x3a, 0xca, 0xbb, 0x61, 0x2e, 0xa6, 0xe5, 0x11, 0x77, - 0x47, 0x6b, 0xf1, 0x09, 0xe1, 0x26, 0x03, 0xf3, 0x27, 0xb2, 0xc9, 0x7b, 0xe4, 0x63, 0xd1, 0xed, - 0x9a, 0x1d, 0x92, 0xfc, 0x86, 0x23, 0x3f, 0x8a, 0xae, 0xcc, 0xbc, 0x3d, 0x4a, 0x6a, 0xa7, 0xac, - 0xa5, 0x2c, 0xa9, 0x9d, 0xe3, 0x71, 0x68, 0xd9, 0x09, 0x63, 0xb7, 0x4f, 0x29, 0x71, 0xe1, 0x85, - 0xd6, 0x63, 0xa9, 0x44, 0xe8, 0x3d, 0x1c, 0x14, 0xbc, 0x87, 0xa5, 0x4e, 0x47, 0xf9, 0x8b, 0xb1, - 0x52, 0xc0, 0x60, 0x44, 0xbe, 0x8c, 0xb7, 0x12, 0x6f, 0xc1, 0x73, 0x85, 0xe1, 0x62, 0x48, 0x37, - 0x08, 0xdf, 0x80, 0x56, 0x58, 0xff, 0x27, 0xf4, 0x8a, 0x4f, 0x40, 0x08, 0xec, 0x44, 0x4f, 0x40, - 0xf6, 0xbd, 0x97, 0x95, 0xc4, 0xaa, 0xed, 0xe4, 0xf7, 0xe1, 0xcd, 0x99, 0x1a, 0xef, 0x20, 0xd6, - 0xd2, 0x09, 0x13, 0xa8, 0x7d, 0x2e, 0x3d, 0x7a, 0x6e, 0x11, 0xe3, 0xff, 0x62, 0x73, 0x3e, 0x88, - 0xd5, 0xcf, 0xc4, 0x86, 0x3d, 0x88, 0x55, 0xfd, 0xfd, 0x20, 0x1a, 0x79, 0x6c, 0xb7, 0x4c, 0xbd, - 0x8b, 0x2f, 0xa0, 0x69, 0xc7, 0x35, 0x2d, 0xdd, 0x74, 0xb4, 0x16, 0x44, 0x22, 0xfd, 0x35, 0x0c, - 0x2b, 0x53, 0x61, 0x2b, 0x0b, 0x67, 0x5e, 0x44, 0x33, 0x11, 0x58, 0x14, 0xb4, 0x1d, 0x57, 0x22, - 0xec, 0x67, 0x7e, 0x6b, 0x3a, 0x7e, 0x5a, 0x39, 0x90, 0xf8, 0x29, 0xaf, 0xb1, 0x14, 0xe2, 0xa7, - 0x97, 0xd0, 0xac, 0x90, 0x4f, 0x02, 0xaf, 0x04, 0x48, 0x9c, 0x98, 0x89, 0x92, 0x4a, 0xe0, 0x91, - 0x70, 0x09, 0xcd, 0x0a, 0x57, 0x16, 0x00, 0x85, 0x04, 0x93, 0x99, 0x28, 0x83, 0x04, 0x40, 0x33, - 0x92, 0x45, 0x46, 0x33, 0x93, 0x45, 0xfe, 0x5d, 0x8a, 0xbc, 0x59, 0xe0, 0x51, 0x67, 0x0c, 0x35, - 0x09, 0x3d, 0xb8, 0x3a, 0x9b, 0x44, 0x88, 0xb8, 0xd2, 0x47, 0x88, 0x38, 0x3b, 0xb6, 0x90, 0x14, - 0xc0, 0xe1, 0x94, 0x00, 0xfe, 0x48, 0x94, 0x17, 0x9d, 0x5c, 0x1d, 0x17, 0xc0, 0xdb, 0x68, 0xcc, - 0xe1, 0x6d, 0x65, 0xe5, 0x49, 0x20, 0x6a, 0x4a, 0x08, 0x2f, 0x3f, 0x8a, 0xe2, 0x4e, 0xf1, 0xba, - 0x67, 0x78, 0xff, 0x84, 0x2c, 0xbc, 0x98, 0x5d, 0x46, 0x3d, 0x9e, 0x2c, 0x8f, 0x96, 0xb5, 0x28, - 0x6a, 0x94, 0x43, 0x70, 0xdf, 0x35, 0x55, 0xab, 0x51, 0x7c, 0xc4, 0xd7, 0xc9, 0xf8, 0x30, 0x3d, - 0x9a, 0x03, 0xf9, 0xc7, 0x23, 0xaf, 0x7d, 0x26, 0x11, 0x3e, 0xcb, 0xa7, 0x68, 0x36, 0xb1, 0xee, - 0xe0, 0x29, 0xfb, 0x4a, 0x6f, 0xf5, 0xe3, 0xac, 0xf8, 0x65, 0x26, 0xce, 0x24, 0x2a, 0xdf, 0x02, - 0xc3, 0xcc, 0x1c, 0x82, 0xdc, 0x07, 0x28, 0x64, 0x9d, 0x9c, 0x44, 0xe3, 0x81, 0x61, 0x0e, 0x92, - 0x4e, 0xc6, 0xb8, 0x65, 0xa6, 0xf2, 0xc7, 0x52, 0xe4, 0xd8, 0x8b, 0xe1, 0xf2, 0x19, 0x7f, 0x21, - 0x61, 0x8e, 0xde, 0x2e, 0x4b, 0x24, 0xc9, 0x20, 0x02, 0xa6, 0x8a, 0xa7, 0x91, 0x70, 0x72, 0xd5, - 0x2f, 0xf2, 0x94, 0xb6, 0xdc, 0x24, 0x92, 0xeb, 0xf1, 0x24, 0x92, 0x92, 0xc4, 0x26, 0x21, 0x87, - 0xe4, 0x0e, 0xc8, 0x0c, 0x73, 0x7b, 0xf1, 0x48, 0x80, 0xd5, 0xe4, 0xa5, 0x5d, 0x50, 0x36, 0x59, - 0xe4, 0xce, 0xb8, 0x07, 0x49, 0x95, 0x45, 0xd8, 0x59, 0xe5, 0x87, 0x43, 0x41, 0x0e, 0xd5, 0x73, - 0x18, 0x1d, 0x52, 0x37, 0x78, 0xe0, 0x65, 0xe3, 0xd9, 0x46, 0x94, 0xc4, 0xd1, 0x6b, 0x28, 0xbc, - 0x19, 0x0b, 0x85, 0x83, 0xcb, 0xa1, 0x8a, 0xc6, 0x0d, 0xea, 0xf1, 0x08, 0x0b, 0x14, 0x20, 0x8c, - 0x1a, 0xd4, 0x63, 0x11, 0x16, 0x15, 0x26, 0x5e, 0x34, 0xf0, 0xfe, 0x32, 0x47, 0xde, 0x4c, 0xd4, - 0x7b, 0xd5, 0xcc, 0x17, 0xa4, 0x27, 0x7f, 0xf5, 0x9d, 0x44, 0x05, 0x17, 0x20, 0xf2, 0xc9, 0x44, - 0xc6, 0x92, 0xa5, 0x2b, 0xc7, 0xea, 0x23, 0x58, 0xc2, 0xf2, 0x7c, 0x58, 0x5c, 0x05, 0x59, 0xee, - 0xfc, 0x2f, 0xbf, 0x04, 0xe9, 0x1b, 0xf2, 0x9d, 0xf0, 0x24, 0x4f, 0xf6, 0xf3, 0x11, 0x0a, 0x93, - 0x5f, 0x37, 0xc2, 0x1c, 0xfa, 0x28, 0xc7, 0xbc, 0x9f, 0xba, 0x43, 0x59, 0x0d, 0xa5, 0x2e, 0x8f, - 0xd0, 0xfe, 0x0a, 0x99, 0xaf, 0xfd, 0xe1, 0x5d, 0x74, 0xd8, 0x1f, 0xe1, 0x21, 0x87, 0xaa, 0x11, - 0x77, 0xc7, 0xd4, 0x09, 0xfe, 0x2a, 0xc2, 0xe9, 0x42, 0x59, 0x7c, 0xb5, 0x48, 0x4f, 0x33, 0xff, - 0x4c, 0x44, 0xf5, 0xda, 0x5e, 0x50, 0x60, 0x31, 0xf2, 0x00, 0xfe, 0x6d, 0x29, 0x23, 0xe7, 0x2d, - 0x5a, 0x36, 0xbe, 0xdd, 0x73, 0xe6, 0x59, 0x8a, 0xe9, 0xd5, 0xb7, 0xfa, 0xc2, 0x0d, 0xa7, 0xf6, - 0x6b, 0xc9, 0xd2, 0xc1, 0xd8, 0xc4, 0x6e, 0x96, 0x2c, 0x37, 0xb7, 0x78, 0xbf, 0x7a, 0xab, 0x0f, - 0xcc, 0x70, 0x52, 0xbf, 0x18, 0x25, 0xa3, 0x26, 0x6b, 0xdd, 0xf1, 0x8d, 0x3d, 0x11, 0x0e, 0x55, - 0xa0, 0xfa, 0xe6, 0x9e, 0xf1, 0xc2, 0xe9, 0xfc, 0x1d, 0xcf, 0x72, 0xea, 0xa5, 0xd2, 0x1c, 0x6f, - 0x94, 0xed, 0x47, 0x8f, 0x05, 0xf6, 0xd5, 0x77, 0xf6, 0x4f, 0x28, 0x8b, 0xa1, 0xc9, 0x4a, 0xf1, - 0x52, 0x86, 0xe6, 0x14, 0xb1, 0x97, 0x32, 0x34, 0xaf, 0x24, 0x5d, 0x1e, 0xc0, 0xbf, 0x29, 0x45, - 0x87, 0x71, 0xba, 0x06, 0x1c, 0xdf, 0x2a, 0x5b, 0x79, 0x6e, 0xcd, 0x7a, 0xf5, 0x76, 0x3f, 0xa8, - 0xe1, 0xbc, 0x5e, 0xa0, 0x43, 0xa9, 0x92, 0x6d, 0xfc, 0x5a, 0xc9, 0x3a, 0x53, 0x45, 0xe6, 0xd5, - 0xab, 0x7b, 0xc0, 0x08, 0xc7, 0xfe, 0x39, 0x29, 0x7c, 0x56, 0xc7, 0x6d, 0x34, 0x7e, 0xbd, 0x84, - 0x5c, 0xa6, 0xc9, 0xaf, 0xbe, 0xb1, 0x47, 0xac, 0xd4, 0xe6, 0x64, 0x17, 0x7d, 0xe3, 0x32, 0xc5, - 0xce, 0xaf, 0x4b, 0x2f, 0xde, 0x9c, 0xe2, 0x1a, 0x73, 0x79, 0x00, 0xff, 0x72, 0x54, 0xd7, 0x9f, - 0x2a, 0xdb, 0xc6, 0x6f, 0xee, 0x8d, 0x74, 0xc4, 0xa6, 0x9b, 0x7b, 0x47, 0x0c, 0x67, 0xf4, 0x55, - 0x70, 0x90, 0x24, 0x33, 0x50, 0x71, 0x66, 0xf2, 0x05, 0xab, 0x1c, 0x49, 0x82, 0x46, 0x12, 0xd3, - 0x3b, 0x46, 0x86, 0xb4, 0x46, 0x45, 0xdf, 0xa5, 0xd2, 0x9a, 0x2a, 0x43, 0x2f, 0x95, 0xd6, 0x74, - 0x45, 0x79, 0x5c, 0x5a, 0xe3, 0x95, 0xd9, 0xa5, 0xd2, 0x9a, 0x59, 0xfd, 0x5d, 0x2a, 0xad, 0xd9, - 0xe5, 0xdf, 0xf2, 0x00, 0xfe, 0x9a, 0x84, 0x8e, 0x65, 0x57, 0xcd, 0xe2, 0x37, 0x7a, 0x5a, 0x58, - 0xb2, 0x9e, 0xb0, 0x7a, 0x63, 0xaf, 0x68, 0x29, 0x2b, 0x9b, 0x51, 0x4f, 0x59, 0x6c, 0x65, 0xf3, - 0x2b, 0x70, 0x8b, 0xad, 0x6c, 0x41, 0xe1, 0xa6, 0x70, 0xeb, 0xc8, 0x29, 0x28, 0xc6, 0xb7, 0xf7, - 0xb6, 0xd0, 0x98, 0xf1, 0x7f, 0xab, 0x2f, 0xdc, 0x70, 0x6a, 0xbf, 0x23, 0x25, 0x2e, 0xac, 0x49, - 0x76, 0xbd, 0xd5, 0x93, 0xf5, 0xca, 0xe1, 0xd9, 0x9d, 0xfe, 0x90, 0x53, 0x96, 0x26, 0xab, 0xfc, - 0x0f, 0xef, 0x61, 0x43, 0x62, 0x95, 0x9c, 0xc5, 0x96, 0xa6, 0xa8, 0xd2, 0x50, 0x90, 0xac, 0x8c, - 0xa2, 0xbb, 0x62, 0xc9, 0xca, 0xaf, 0xf2, 0x2b, 0x96, 0xac, 0x82, 0xea, 0x3e, 0x79, 0x00, 0xff, - 0x81, 0x58, 0x03, 0x98, 0x5d, 0x0d, 0x87, 0xef, 0x95, 0x92, 0x2f, 0x2c, 0xc7, 0xab, 0xbe, 0xdd, - 0x37, 0x7e, 0x38, 0xcd, 0xe7, 0x68, 0x36, 0x59, 0x13, 0x84, 0x97, 0x4a, 0x64, 0x23, 0x59, 0xfc, - 0x54, 0x7d, 0xad, 0x77, 0x84, 0x70, 0xe0, 0x9f, 0x96, 0xe0, 0x64, 0x48, 0x56, 0xdd, 0xe0, 0xeb, - 0x7b, 0xab, 0xd1, 0x81, 0x19, 0xbc, 0xde, 0x4f, 0x61, 0x4f, 0x62, 0x16, 0x62, 0xe9, 0x4a, 0xf9, - 0x2c, 0x32, 0xea, 0x72, 0xca, 0x67, 0x91, 0x55, 0x1d, 0x23, 0x28, 0x53, 0x56, 0x9d, 0x46, 0xb1, - 0x32, 0x15, 0xd4, 0xb7, 0x14, 0x2b, 0x53, 0x51, 0x49, 0x88, 0x3c, 0x80, 0xff, 0x44, 0x8a, 0xbc, - 0x59, 0xf9, 0xb5, 0x19, 0xb8, 0xb4, 0x1c, 0xa8, 0xb4, 0x34, 0xa4, 0xba, 0xb2, 0x1f, 0x12, 0xe1, - 0x7c, 0xff, 0x48, 0x2a, 0x28, 0x1a, 0xe0, 0x45, 0x16, 0xf8, 0xed, 0x32, 0x31, 0x2d, 0xa9, 0xf0, - 0xa8, 0xde, 0xef, 0x9f, 0x40, 0xd6, 0x63, 0x32, 0x5d, 0x00, 0x51, 0xfa, 0x98, 0xcc, 0x2d, 0xdb, - 0x28, 0x7d, 0x4c, 0xe6, 0x57, 0x6d, 0xc4, 0x27, 0x95, 0x5e, 0x43, 0xe9, 0xa4, 0x72, 0xcb, 0x34, - 0x4a, 0x27, 0x95, 0x5f, 0x88, 0x91, 0xad, 0x9b, 0x2c, 0xd5, 0xbf, 0x67, 0xdd, 0x14, 0x4b, 0x2f, - 0x7a, 0xd6, 0xcd, 0x58, 0x09, 0x85, 0x3c, 0x80, 0xbf, 0x91, 0xf2, 0xe3, 0x27, 0x0a, 0x0e, 0xf0, - 0x9d, 0xbd, 0x50, 0x4e, 0x96, 0x4e, 0x54, 0xef, 0xf6, 0x89, 0x9d, 0xa9, 0xaa, 0xf9, 0x75, 0x00, - 0xb8, 0xf7, 0xca, 0xbd, 0xbc, 0x12, 0x87, 0x72, 0x55, 0x2d, 0x2f, 0x43, 0x48, 0x78, 0x0a, 0xca, - 0x52, 0x67, 0xcb, 0x3d, 0x05, 0x3d, 0x26, 0xf1, 0x96, 0x7b, 0x0a, 0x7a, 0xcd, 0xe2, 0x95, 0x07, - 0xf0, 0x9f, 0x49, 0x91, 0x97, 0xbe, 0x20, 0x71, 0x16, 0xaf, 0xf4, 0x35, 0x66, 0x5c, 0x3c, 0x56, - 0xf7, 0x45, 0x23, 0xd3, 0xbb, 0x96, 0x55, 0x6a, 0x51, 0xea, 0x13, 0xc8, 0x2f, 0xf9, 0x28, 0xf7, - 0xae, 0x15, 0xd4, 0x1f, 0xc8, 0x03, 0xf8, 0x2f, 0xa5, 0x28, 0x36, 0x53, 0x98, 0xd1, 0x8f, 0xd7, - 0xca, 0x06, 0xea, 0xa5, 0xf0, 0xa0, 0xba, 0xbe, 0x4f, 0x2a, 0xa9, 0xf7, 0x5d, 0x3a, 0x63, 0xbf, - 0xd4, 0xd6, 0x64, 0x55, 0x0b, 0x14, 0xbf, 0xef, 0x72, 0x93, 0xe2, 0x13, 0x86, 0x32, 0x96, 0x08, - 0x5d, 0x6a, 0x28, 0x33, 0x52, 0xb0, 0xcb, 0x0d, 0x65, 0x56, 0xa2, 0xb2, 0x3c, 0x80, 0x2d, 0x34, - 0x15, 0xcb, 0x12, 0xc6, 0xaf, 0x96, 0x18, 0xff, 0x58, 0x3e, 0x72, 0xf5, 0x4a, 0x8f, 0xd0, 0x59, - 0xe3, 0x41, 0x7e, 0x62, 0xe9, 0x78, 0x62, 0x86, 0x46, 0xf9, 0x78, 0xb1, 0xbc, 0x8d, 0x98, 0x2b, - 0x21, 0xca, 0x87, 0x28, 0x75, 0x25, 0xa4, 0x92, 0x35, 0xaa, 0x57, 0xf7, 0x80, 0x11, 0x8e, 0xfd, - 0x93, 0x12, 0xf8, 0xec, 0x13, 0x29, 0x0c, 0xf8, 0x5a, 0x2f, 0x17, 0xef, 0x78, 0x7e, 0x45, 0xf5, - 0xfa, 0x9e, 0x70, 0xb2, 0x9c, 0x08, 0x89, 0x94, 0x83, 0x52, 0x27, 0x42, 0x76, 0x66, 0x44, 0xf5, - 0xc6, 0x5e, 0xd1, 0x52, 0x73, 0x49, 0x47, 0x9f, 0xf1, 0x1b, 0xbd, 0x9d, 0x51, 0x89, 0x58, 0x7c, - 0xf5, 0xc6, 0x5e, 0xd1, 0x32, 0xef, 0x07, 0x99, 0xa1, 0xe5, 0xf2, 0xfb, 0x41, 0x51, 0x88, 0xbb, - 0xfc, 0x7e, 0x50, 0x18, 0xcf, 0x4e, 0x98, 0xfe, 0x8c, 0x98, 0x72, 0xb9, 0xe9, 0xcf, 0x8f, 0x66, - 0x97, 0x9b, 0xfe, 0x82, 0x20, 0xb6, 0x20, 0xd6, 0x89, 0x78, 0x6f, 0xb1, 0x58, 0x67, 0x47, 0xa7, - 0xab, 0xd7, 0xfb, 0x08, 0x28, 0xcb, 0x03, 0xf8, 0x9b, 0x52, 0x98, 0x49, 0x93, 0x13, 0xa7, 0xc5, - 0x77, 0x4b, 0x2d, 0x53, 0x51, 0x74, 0xb8, 0x7a, 0xaf, 0x5f, 0xf4, 0xd4, 0x1c, 0xf3, 0x43, 0xb2, - 0xc5, 0x73, 0x2c, 0x8d, 0x21, 0x17, 0xcf, 0xb1, 0x3c, 0x12, 0x9c, 0xe1, 0x68, 0x65, 0x7f, 0x6a, - 0xad, 0x37, 0x47, 0xab, 0x10, 0xff, 0xed, 0xd1, 0xd1, 0x2a, 0x06, 0x7e, 0x05, 0x6f, 0x7c, 0x76, - 0x05, 0x48, 0xb1, 0x37, 0xbe, 0xb0, 0xe0, 0xa4, 0xd8, 0x1b, 0x5f, 0x5c, 0x70, 0x22, 0x78, 0xf0, - 0xf2, 0x2a, 0x1a, 0x8a, 0x3d, 0x78, 0x25, 0x45, 0x14, 0xc5, 0x1e, 0xbc, 0xb2, 0x22, 0x0a, 0xc1, - 0x70, 0xe5, 0x46, 0x9a, 0xf1, 0x9d, 0x9e, 0x36, 0x23, 0x27, 0xd2, 0x5d, 0xbd, 0xdb, 0x27, 0x76, - 0x30, 0xc1, 0x15, 0xed, 0xa3, 0x4f, 0xe7, 0xa5, 0x8f, 0x3f, 0x9d, 0x97, 0xbe, 0xff, 0xe9, 0xbc, - 0xf4, 0x2b, 0x9f, 0xcd, 0x0f, 0x7c, 0xfc, 0xd9, 0xfc, 0xc0, 0xbf, 0x7d, 0x36, 0x3f, 0xf0, 0xfe, - 0x86, 0x50, 0xd2, 0x50, 0xb7, 0xea, 0x57, 0x58, 0xfe, 0xf3, 0x52, 0x14, 0x1e, 0xb8, 0xc2, 0xc3, - 0x03, 0x57, 0x82, 0x3a, 0x85, 0xa5, 0xec, 0xff, 0x17, 0x53, 0x7d, 0x84, 0xfd, 0xaf, 0x7a, 0xae, - 0xff, 0x6f, 0x00, 0x00, 0x00, 0xff, 0xff, 0xaf, 0x3b, 0x29, 0x0b, 0xac, 0x69, 0x00, 0x00, + // 6063 bytes of a gzipped FileDescriptorProto + 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xec, 0x3d, 0x5b, 0x8c, 0x1c, 0x49, + 0x52, 0x53, 0xd3, 0xf3, 0xcc, 0xe9, 0x79, 0x38, 0xfd, 0x1a, 0xb7, 0xd7, 0x63, 0xbb, 0x6c, 0xaf, + 0xc7, 0xeb, 0xf5, 0xcc, 0xda, 0xde, 0xf5, 0xda, 0x5e, 0xdb, 0xeb, 0x79, 0x79, 0x76, 0xb4, 0xe7, + 0xb5, 0xaf, 0xda, 0xf6, 0xdd, 0xed, 0xb1, 0xd4, 0x55, 0x57, 0x65, 0xf7, 0x14, 0xd3, 0x5d, 0x55, + 0x5b, 0x59, 0x3d, 0x9e, 0xb6, 0x38, 0x81, 0x78, 0x49, 0x07, 0x88, 0x37, 0xe8, 0x74, 0xc0, 0x49, + 0x87, 0x10, 0x48, 0xe8, 0x40, 0x08, 0x4e, 0xfc, 0xc0, 0x01, 0x12, 0x3f, 0x2b, 0x01, 0xd2, 0xea, + 0x3e, 0x00, 0x9d, 0xd0, 0xea, 0xb4, 0x8b, 0x84, 0xf8, 0xe6, 0x97, 0x0f, 0x54, 0x19, 0x59, 0x55, + 0x59, 0xd5, 0xf5, 0xe8, 0xee, 0x99, 0x43, 0x7c, 0xdc, 0xcf, 0xba, 0x2b, 0x33, 0x22, 0x32, 0x33, + 0x32, 0x22, 0x32, 0x33, 0x1e, 0xb3, 0xe8, 0x42, 0xcb, 0x36, 0xda, 0x4d, 0xcd, 0x5d, 0x6e, 0x11, + 0x4f, 0x33, 0x34, 0x4f, 0x5b, 0xf6, 0x3a, 0x0e, 0xa1, 0xe1, 0xe7, 0x92, 0xe3, 0xda, 0x9e, 0x8d, + 0x8f, 0x71, 0xb0, 0xa5, 0xb0, 0x9d, 0x81, 0x55, 0xce, 0xd6, 0x34, 0x4a, 0x38, 0x4a, 0xa3, 0x4e, + 0x1d, 0xe2, 0xba, 0xb6, 0x4b, 0x97, 0xd9, 0x3f, 0x80, 0x5a, 0x59, 0x48, 0x80, 0x78, 0x1a, 0xdd, + 0x59, 0xf6, 0xff, 0xc3, 0xfb, 0x4f, 0xe8, 0x36, 0x6d, 0xd9, 0x54, 0x65, 0x5f, 0xcb, 0xf0, 0xc1, + 0xbb, 0x8e, 0x34, 0xec, 0x86, 0x0d, 0xed, 0xfe, 0x2f, 0xde, 0xfa, 0x72, 0xc3, 0x25, 0xc4, 0xaa, + 0x9b, 0xa4, 0x69, 0x2c, 0x3b, 0x5a, 0xa7, 0x45, 0x2c, 0x6f, 0x99, 0x7a, 0x2e, 0xd1, 0x5a, 0xaa, + 0x4b, 0x74, 0xdb, 0x35, 0x38, 0x9c, 0x2c, 0xc2, 0x11, 0xb7, 0x65, 0x52, 0x6a, 0xda, 0xd6, 0xb2, + 0x6e, 0xb7, 0x5a, 0xb6, 0xc5, 0x61, 0x4e, 0x0b, 0x30, 0x2e, 0xa1, 0x76, 0xdb, 0xd5, 0xf9, 0x5c, + 0x83, 0xd9, 0x09, 0x00, 0xd4, 0x89, 0x75, 0x89, 0xb8, 0xd4, 0xb3, 0x5d, 0xad, 0x41, 0x96, 0xc9, + 0x2e, 0xb1, 0xbc, 0x00, 0x60, 0x21, 0x05, 0xe0, 0xc3, 0x36, 0x71, 0x3b, 0x39, 0xfd, 0xe2, 0x00, + 0xe7, 0x85, 0xfe, 0x5d, 0xd3, 0xf5, 0xda, 0x5a, 0xb3, 0xe1, 0xda, 0x6d, 0x27, 0x3e, 0xca, 0xb9, + 0x2c, 0x28, 0x91, 0xd4, 0x71, 0x9f, 0x7e, 0xb0, 0x0b, 0xec, 0x37, 0x74, 0xc8, 0x5f, 0x2f, 0xa1, + 0xb1, 0xd5, 0xb6, 0xbe, 0x43, 0x3c, 0xfc, 0x36, 0x9a, 0xaa, 0xb1, 0x5f, 0xaa, 0x69, 0xd5, 0xed, + 0x79, 0xe9, 0x8c, 0xb4, 0x38, 0x75, 0x6d, 0x61, 0x29, 0x22, 0xbf, 0xc4, 0x27, 0xb9, 0x04, 0x08, + 0x5b, 0x56, 0xdd, 0x56, 0x50, 0x2d, 0xfc, 0x8d, 0xe7, 0xd1, 0xb8, 0x4b, 0x5a, 0xf6, 0x2e, 0x31, + 0xe6, 0x87, 0xcf, 0x48, 0x8b, 0x13, 0x4a, 0xf0, 0x89, 0x4f, 0xa2, 0x49, 0x83, 0x34, 0x89, 0x47, + 0x54, 0xcd, 0x9b, 0x2f, 0x9d, 0x91, 0x16, 0x4b, 0xca, 0x04, 0x34, 0xac, 0x78, 0xf8, 0x1c, 0x9a, + 0xe6, 0x9d, 0x2e, 0xd1, 0xa8, 0x6d, 0xcd, 0x8f, 0x9c, 0x91, 0x16, 0x27, 0x95, 0x32, 0x34, 0x2a, + 0xac, 0x0d, 0x57, 0xd0, 0x84, 0xed, 0x10, 0x57, 0xf3, 0x6c, 0x77, 0x7e, 0x94, 0xf5, 0x87, 0xdf, + 0xf8, 0x3c, 0x9a, 0xd1, 0x5d, 0xa2, 0x79, 0x44, 0xf5, 0xf6, 0xd4, 0x6d, 0x8d, 0x6e, 0xcf, 0x8f, + 0x01, 0x05, 0x68, 0x7d, 0xb2, 0xf7, 0x8e, 0x46, 0xb7, 0x7d, 0xa8, 0xb6, 0x63, 0x88, 0x50, 0xe3, + 0x00, 0x05, 0xad, 0x1c, 0xea, 0x24, 0x9a, 0xe4, 0x50, 0x9a, 0x37, 0x3f, 0x01, 0x33, 0x85, 0x86, + 0x15, 0x0f, 0x9f, 0x46, 0x53, 0x01, 0x09, 0xb3, 0x45, 0xe6, 0x27, 0x59, 0x37, 0xe2, 0xf8, 0x66, + 0x8b, 0xe0, 0xb3, 0xa8, 0xcc, 0x79, 0xa4, 0x52, 0xf3, 0x05, 0x99, 0x47, 0x6c, 0x84, 0x29, 0xde, + 0x56, 0x35, 0x5f, 0x10, 0xbc, 0x88, 0xe6, 0xec, 0x7a, 0x5d, 0xd5, 0xb7, 0x35, 0xd3, 0x52, 0xa9, + 0xa7, 0x79, 0x6d, 0x3a, 0x3f, 0x75, 0x46, 0x5a, 0x1c, 0x55, 0x66, 0xec, 0x7a, 0x7d, 0xcd, 0x6f, + 0xae, 0xb2, 0x56, 0xf9, 0xbf, 0x87, 0xd1, 0xd8, 0xa3, 0xda, 0x4f, 0x10, 0x9d, 0x6d, 0x8d, 0xcd, + 0x7e, 0x15, 0x6e, 0x0d, 0x20, 0xc0, 0xd6, 0xd8, 0xe1, 0x6f, 0x7c, 0x01, 0xcd, 0x34, 0x6d, 0x7d, + 0x87, 0x18, 0x6a, 0x4d, 0x6b, 0x6a, 0x96, 0x4e, 0xd8, 0x0e, 0x4d, 0x2a, 0xd3, 0xd0, 0xba, 0x0a, + 0x8d, 0xe2, 0x0e, 0x96, 0xba, 0x76, 0x30, 0xe2, 0xcb, 0x48, 0x82, 0x2f, 0xb1, 0xed, 0x1d, 0x2d, + 0xda, 0xde, 0xb1, 0x82, 0xed, 0x1d, 0x2f, 0xdc, 0xde, 0x89, 0x9e, 0xb6, 0x77, 0x32, 0x65, 0x7b, + 0xcf, 0xa0, 0x32, 0x25, 0x5a, 0x33, 0x84, 0x81, 0x0d, 0x42, 0x7e, 0x1b, 0x40, 0xc8, 0x7f, 0x2b, + 0xa1, 0x69, 0x60, 0xe2, 0x3a, 0xf1, 0x34, 0xb3, 0x49, 0xf1, 0x0d, 0x34, 0x06, 0x9c, 0x0c, 0xf9, + 0x9e, 0x6e, 0x0c, 0x39, 0xef, 0x15, 0x0e, 0xed, 0xe3, 0x81, 0x72, 0x30, 0x5e, 0xe7, 0xe0, 0x81, + 0x3a, 0x29, 0x1c, 0x1a, 0xdf, 0x45, 0xa5, 0xc6, 0x6e, 0x83, 0x6d, 0xc0, 0xd4, 0xb5, 0xcb, 0xe2, + 0x26, 0x8b, 0xea, 0xbd, 0xb4, 0xd9, 0xb4, 0x6b, 0x5a, 0xf3, 0x19, 0x34, 0x6d, 0xfa, 0x4d, 0x8a, + 0x8f, 0x27, 0xff, 0x47, 0x09, 0x4d, 0x3f, 0xdb, 0x7c, 0xe0, 0x6f, 0xfb, 0x8f, 0x14, 0xfb, 0xa0, + 0x14, 0x7b, 0x0d, 0x95, 0x76, 0x1b, 0x75, 0x26, 0x2e, 0x53, 0xd7, 0xae, 0xf6, 0xb1, 0x27, 0x0f, + 0xb4, 0x96, 0xd9, 0xec, 0x28, 0x3e, 0x76, 0x97, 0x75, 0x98, 0xea, 0xcd, 0x3a, 0x94, 0x53, 0xad, + 0xc3, 0x37, 0x25, 0x34, 0xf3, 0x18, 0x4e, 0xbf, 0x15, 0x5d, 0xb7, 0xdb, 0x96, 0xe7, 0x6f, 0x93, + 0x66, 0x18, 0x2e, 0xa1, 0x94, 0xed, 0xf1, 0xa4, 0x12, 0x7c, 0xe2, 0x23, 0x68, 0xd4, 0x7e, 0x6e, + 0x11, 0x97, 0x6b, 0x3d, 0x7c, 0xe0, 0x05, 0x84, 0x5c, 0x52, 0x6f, 0x5b, 0x86, 0x56, 0x6b, 0x12, + 0xae, 0xf0, 0x42, 0x4b, 0xbe, 0xce, 0x27, 0x58, 0x36, 0x9a, 0x64, 0x99, 0xfc, 0x6d, 0x09, 0xe1, + 0xf8, 0x04, 0x1f, 0x12, 0x4f, 0xc3, 0x8f, 0xd0, 0x2c, 0x3f, 0xb4, 0x55, 0x0d, 0x9a, 0xb9, 0x40, + 0xbe, 0x9c, 0xa5, 0x1e, 0x71, 0x22, 0xca, 0x8c, 0x13, 0x5f, 0xf5, 0x06, 0x9a, 0x8e, 0x9d, 0xfe, + 0x5c, 0xdb, 0xce, 0x88, 0x9b, 0xc4, 0x51, 0x96, 0xaa, 0x0c, 0x50, 0x61, 0x70, 0x4a, 0x99, 0x0a, + 0x5f, 0xb2, 0x8e, 0x4e, 0x6c, 0xd6, 0xab, 0xce, 0x26, 0xf1, 0x9e, 0x52, 0xe2, 0x82, 0x22, 0x50, + 0x85, 0x7c, 0xd8, 0x26, 0xd4, 0xc3, 0xa7, 0x10, 0xe2, 0x93, 0x55, 0x4d, 0x83, 0x33, 0x77, 0x92, + 0xb7, 0x6c, 0x19, 0xf8, 0x22, 0x9a, 0x35, 0x2d, 0xbd, 0xd9, 0x36, 0x7c, 0x49, 0x17, 0xf5, 0x64, + 0x86, 0x37, 0x2b, 0xd0, 0x2a, 0x7f, 0x80, 0x2a, 0x69, 0x83, 0x50, 0xc7, 0xb6, 0x28, 0xc1, 0x6f, + 0xa3, 0x71, 0x50, 0x3a, 0x7f, 0xff, 0x4a, 0x8b, 0x53, 0xd7, 0x2e, 0x64, 0xb1, 0x24, 0xa6, 0xdf, + 0x4a, 0x80, 0x25, 0xff, 0xd9, 0x30, 0x92, 0x7d, 0xfa, 0x9f, 0x33, 0xa9, 0x07, 0xc6, 0x88, 0xae, + 0x76, 0x00, 0xe8, 0x3d, 0xad, 0x45, 0x82, 0xd5, 0x9c, 0x0e, 0xed, 0x81, 0xa5, 0xb5, 0x08, 0x5f, + 0x0e, 0xd7, 0x77, 0x1f, 0x2e, 0xb1, 0xdc, 0xe1, 0xe4, 0x72, 0x4f, 0xa0, 0x89, 0x96, 0xb6, 0xa7, + 0xee, 0x90, 0x0e, 0x65, 0x52, 0x33, 0xa2, 0x8c, 0xb7, 0xb4, 0xbd, 0x77, 0x49, 0x87, 0xfa, 0xa4, + 0xa9, 0xa7, 0xb9, 0x9e, 0xaa, 0xd5, 0x3d, 0xe2, 0x72, 0x85, 0x47, 0xac, 0x69, 0xc5, 0x6f, 0xc1, + 0x57, 0x10, 0xd6, 0x6d, 0xcb, 0x33, 0xad, 0xb6, 0xe6, 0x99, 0xb6, 0xa5, 0x7a, 0xf6, 0x0e, 0xb1, + 0xb8, 0xe2, 0x1f, 0x12, 0x7b, 0x9e, 0xf8, 0x1d, 0xf8, 0x25, 0x66, 0x5f, 0xcc, 0x96, 0xe9, 0x53, + 0x03, 0xe5, 0x8f, 0x1a, 0xf0, 0x31, 0x34, 0xe6, 0xb8, 0xa4, 0x6e, 0xee, 0x71, 0x8d, 0xe7, 0x5f, + 0x69, 0xfb, 0x31, 0x91, 0xba, 0x1f, 0xbf, 0x55, 0x42, 0xe7, 0x72, 0x19, 0xc6, 0x77, 0xe6, 0x26, + 0x1a, 0x07, 0xa3, 0x1e, 0xec, 0x4c, 0xd1, 0x19, 0x10, 0x80, 0xfb, 0x3a, 0xb4, 0x43, 0x3a, 0x2a, + 0x08, 0xfa, 0x30, 0x63, 0xd6, 0xc4, 0x0e, 0xe9, 0xac, 0x31, 0xd1, 0xcd, 0x61, 0xe4, 0x59, 0x54, + 0x36, 0xa9, 0xea, 0xb9, 0x6d, 0x4b, 0xd7, 0x3c, 0x62, 0x30, 0x4e, 0x4e, 0x28, 0x53, 0x26, 0x7d, + 0x12, 0x34, 0xe1, 0x1b, 0xe8, 0xb8, 0x45, 0xf6, 0x3c, 0x35, 0x93, 0x9f, 0x47, 0xfd, 0xee, 0xb5, + 0x2e, 0x9e, 0x62, 0x34, 0xc2, 0xf6, 0x1d, 0xd8, 0xc9, 0x7e, 0x67, 0x72, 0x32, 0xc6, 0xff, 0x89, + 0x24, 0xff, 0x2f, 0xa2, 0x59, 0xb8, 0x4d, 0xab, 0x00, 0x4e, 0xe8, 0xfc, 0xe4, 0x99, 0xd2, 0xe2, + 0xa4, 0x32, 0x03, 0xcd, 0x8f, 0x79, 0x6b, 0xc6, 0xae, 0xa3, 0x8c, 0x5d, 0x97, 0x9b, 0xe8, 0x0c, + 0x57, 0x13, 0xd8, 0x8b, 0x81, 0x84, 0x58, 0x10, 0x02, 0xc7, 0x35, 0x77, 0x35, 0x8f, 0x24, 0x94, + 0xf2, 0x31, 0xb4, 0xca, 0x5f, 0x46, 0x67, 0x73, 0x46, 0xe3, 0x12, 0x10, 0x1d, 0xe6, 0x52, 0x3f, + 0x87, 0xb9, 0x5c, 0x47, 0x0b, 0xa9, 0xc4, 0xb7, 0xd6, 0x83, 0x85, 0x9c, 0x44, 0x93, 0xc1, 0xe9, + 0x0c, 0xa6, 0xa5, 0xa4, 0x4c, 0xf0, 0xb3, 0xd7, 0xe8, 0x7d, 0x11, 0x5f, 0x42, 0xa7, 0x33, 0xc7, + 0xd9, 0xe7, 0x12, 0xfe, 0x42, 0x42, 0xcb, 0x81, 0x92, 0xac, 0xb3, 0xa3, 0xdb, 0x88, 0x74, 0xc5, + 0xbf, 0x3f, 0xbe, 0xd7, 0x6e, 0xd5, 0x88, 0xab, 0x68, 0x56, 0x23, 0xdc, 0x9d, 0x57, 0x11, 0x06, + 0x3b, 0x50, 0xf3, 0x01, 0x54, 0x8b, 0x41, 0xf0, 0xd5, 0xcd, 0xb1, 0x1e, 0x01, 0xd3, 0x3f, 0xf5, + 0x88, 0x65, 0xc4, 0x61, 0x87, 0x19, 0xec, 0x0c, 0xb1, 0x0c, 0x11, 0x32, 0x85, 0x1f, 0xa5, 0x54, + 0x7e, 0xfc, 0x8e, 0x84, 0x5e, 0xeb, 0x7d, 0xd2, 0xfb, 0x56, 0xf3, 0x9e, 0x57, 0x20, 0x6f, 0x87, + 0x02, 0x21, 0x1c, 0x01, 0xcc, 0x1c, 0x1c, 0xf4, 0x61, 0xf3, 0x66, 0x28, 0x12, 0xdd, 0x23, 0xf1, + 0x05, 0x1f, 0x41, 0xa3, 0xd1, 0x11, 0x5c, 0x52, 0xe0, 0x43, 0x7e, 0x01, 0x0a, 0xe1, 0xb3, 0x6e, + 0x63, 0xcf, 0x31, 0x5d, 0x62, 0x70, 0xe4, 0xd5, 0x4e, 0xd5, 0x11, 0xc4, 0x96, 0xdf, 0xcd, 0xb4, + 0x00, 0x7d, 0x02, 0x1a, 0x56, 0x3c, 0x2c, 0xa3, 0x69, 0xc7, 0x35, 0x5b, 0x9a, 0xdb, 0x51, 0xa9, + 0x13, 0x9c, 0x21, 0xd3, 0xca, 0x14, 0x6f, 0xac, 0x3a, 0x5b, 0x86, 0x3f, 0x36, 0xb3, 0x23, 0xfc, + 0xda, 0x08, 0x1f, 0xf2, 0x8f, 0x47, 0x27, 0x58, 0xda, 0xd8, 0xd1, 0x46, 0xc5, 0x4f, 0xca, 0x22, + 0x59, 0x0e, 0x8f, 0xc8, 0x9f, 0x97, 0xd0, 0x3c, 0xe7, 0x0a, 0xec, 0xa1, 0x7f, 0x29, 0x11, 0x6c, + 0x0a, 0x7f, 0x66, 0x89, 0x36, 0x05, 0x9a, 0x98, 0x4d, 0x49, 0x18, 0x9d, 0xe1, 0x5e, 0x8c, 0x4e, + 0xba, 0x7c, 0x56, 0xc3, 0xeb, 0x86, 0x38, 0x8d, 0x48, 0x53, 0x07, 0x79, 0x71, 0xc8, 0xad, 0xd0, + 0x92, 0xf1, 0x3b, 0xd3, 0x0f, 0xd7, 0x70, 0xee, 0xc0, 0x5e, 0x65, 0x0d, 0xc7, 0x17, 0xd3, 0x75, + 0x3f, 0x93, 0x06, 0xba, 0x9f, 0x35, 0x42, 0x69, 0x4e, 0x0c, 0x76, 0xd0, 0x96, 0xd4, 0x0c, 0x0f, + 0x9f, 0x94, 0x81, 0x0e, 0x76, 0x4d, 0x46, 0x28, 0x8b, 0x30, 0x42, 0x42, 0x16, 0x0f, 0x68, 0x9b, + 0xbe, 0x25, 0x85, 0xb2, 0x26, 0x0e, 0xc3, 0x97, 0x72, 0x37, 0x71, 0x2a, 0xf4, 0x78, 0xe7, 0x0c, + 0x1e, 0xab, 0x07, 0x74, 0xfb, 0xbe, 0x8e, 0x5e, 0xe2, 0x53, 0xdc, 0xb0, 0x0c, 0xc7, 0x36, 0x7d, + 0xae, 0x57, 0x9d, 0x68, 0x6b, 0x0f, 0xa3, 0x51, 0x30, 0x24, 0x12, 0x33, 0x24, 0x23, 0xd4, 0xd9, + 0x32, 0xe4, 0xb7, 0xd0, 0xa9, 0x0c, 0x24, 0xbe, 0xb6, 0x0a, 0x9a, 0x20, 0xbc, 0x87, 0x33, 0x30, + 0xfc, 0x96, 0x7f, 0x2a, 0x44, 0xe6, 0x2b, 0x22, 0x9a, 0xf1, 0xf9, 0xb6, 0x1d, 0x6d, 0xc0, 0xbe, + 0x5f, 0xcd, 0xa7, 0x10, 0xea, 0x10, 0xcd, 0x55, 0x5b, 0xb6, 0xe5, 0x6d, 0x07, 0xb7, 0x68, 0xbf, + 0xe5, 0xa1, 0xdf, 0x20, 0xff, 0x67, 0x29, 0x71, 0x35, 0x10, 0x66, 0xc0, 0xe7, 0x7f, 0x0d, 0x95, + 0x88, 0xeb, 0x86, 0xc2, 0x55, 0xd3, 0x28, 0xe1, 0x9b, 0x11, 0xf9, 0x5a, 0x97, 0x7c, 0x1a, 0x1b, + 0xfe, 0x4f, 0xc5, 0x07, 0xf6, 0x4f, 0x5e, 0x7d, 0x5b, 0x73, 0x1b, 0xc4, 0x50, 0x3f, 0xf4, 0x89, + 0xc1, 0x53, 0x13, 0x6e, 0x9e, 0x73, 0xbc, 0x87, 0x8d, 0xc2, 0xde, 0x9b, 0x97, 0x11, 0xa6, 0x8e, + 0x5a, 0x77, 0x09, 0x11, 0xa1, 0xe1, 0x2e, 0x3a, 0x4b, 0x9d, 0x07, 0x2e, 0x21, 0x11, 0xf0, 0x39, + 0x34, 0xad, 0xdb, 0x16, 0x6d, 0xb7, 0x88, 0x01, 0x70, 0x23, 0x0c, 0xae, 0x1c, 0x34, 0x32, 0xa0, + 0x37, 0xd0, 0x71, 0x81, 0x1c, 0xef, 0x02, 0xf0, 0x51, 0x06, 0x7e, 0xa4, 0x1e, 0x10, 0x5d, 0x83, + 0x4e, 0x86, 0x76, 0x1b, 0x55, 0xa8, 0x03, 0xac, 0x6a, 0x76, 0xba, 0x26, 0x34, 0xc6, 0x30, 0x8f, + 0x51, 0xe7, 0x21, 0x00, 0xc4, 0xe7, 0xb5, 0x8e, 0x4e, 0xa7, 0x20, 0xc6, 0x86, 0x1e, 0x67, 0x04, + 0x4e, 0xb6, 0x12, 0xe8, 0xe2, 0x0c, 0x5e, 0x45, 0xd8, 0xb3, 0x3d, 0xad, 0x19, 0x47, 0x9c, 0x00, + 0xc6, 0xb1, 0x1e, 0x11, 0xfa, 0x15, 0x74, 0xc8, 0x25, 0x2d, 0xff, 0x95, 0x2e, 0x4c, 0x73, 0x12, + 0xf8, 0x06, 0x1d, 0xe1, 0xfc, 0xe4, 0xb5, 0xd0, 0x4e, 0x26, 0x36, 0x3a, 0x79, 0xec, 0x0b, 0xe2, + 0x22, 0x25, 0xc5, 0xc5, 0x86, 0x97, 0x4a, 0x26, 0x91, 0x7d, 0x88, 0x4c, 0x78, 0x0b, 0x18, 0x16, + 0x6f, 0x01, 0x2d, 0x10, 0x4f, 0xff, 0x24, 0xce, 0xd0, 0x90, 0xfc, 0x19, 0xfb, 0x6f, 0x0a, 0xbb, + 0x5e, 0xa7, 0xdc, 0xff, 0x35, 0xad, 0xf0, 0xaf, 0xf8, 0xc1, 0x3f, 0x1d, 0x1c, 0xfc, 0xbf, 0x52, + 0x42, 0x47, 0xbb, 0xc6, 0xf1, 0x6d, 0x43, 0xb1, 0x25, 0x8c, 0xd9, 0x7d, 0xfe, 0xc6, 0x0a, 0xed, + 0xfe, 0x8f, 0x24, 0x7c, 0x30, 0x09, 0x97, 0x7f, 0x4f, 0x82, 0x13, 0x37, 0x55, 0x00, 0xf6, 0x21, + 0x6d, 0x1b, 0x68, 0xcc, 0x25, 0xb4, 0xdd, 0xf4, 0xc5, 0xc2, 0xbf, 0xba, 0x5d, 0x29, 0xb8, 0xba, + 0xc5, 0xa5, 0x41, 0xe1, 0xc8, 0xf2, 0x6a, 0xa8, 0x0f, 0x9f, 0xd3, 0x3c, 0x92, 0x29, 0xa3, 0x5d, + 0x77, 0x02, 0x41, 0x36, 0xe4, 0x6f, 0x48, 0xe8, 0x7c, 0x3e, 0x91, 0x7d, 0xac, 0xf3, 0x1e, 0x1a, + 0x65, 0xdb, 0xc4, 0x4f, 0xc4, 0xc5, 0x24, 0x16, 0x0b, 0x81, 0xf9, 0x38, 0x30, 0x28, 0x1b, 0x90, + 0x9d, 0x21, 0x80, 0x26, 0xff, 0x20, 0x95, 0xff, 0x9c, 0x0b, 0x07, 0x75, 0x46, 0x85, 0xef, 0x34, + 0xcf, 0x6c, 0x11, 0xea, 0x69, 0x2d, 0x47, 0x6d, 0x53, 0x6e, 0x07, 0xe0, 0x9d, 0xf6, 0x24, 0xe8, + 0x78, 0x1a, 0xbe, 0x72, 0x62, 0xb0, 0xa5, 0xf0, 0x95, 0x23, 0x42, 0x9e, 0x47, 0x33, 0x2d, 0x6d, + 0x8f, 0xdf, 0x09, 0xfc, 0x07, 0x11, 0xf7, 0x1f, 0x96, 0x5b, 0xda, 0x1e, 0x2c, 0xe1, 0xbd, 0x76, + 0x4b, 0xfe, 0x4b, 0x09, 0xa1, 0x68, 0x51, 0xc5, 0xd7, 0xef, 0x93, 0x68, 0x32, 0x08, 0x83, 0x84, + 0x8a, 0xce, 0x83, 0x1c, 0xec, 0x82, 0x17, 0x3c, 0x9b, 0x02, 0x2f, 0x68, 0x89, 0x51, 0x98, 0xe1, + 0xcd, 0x2b, 0xdc, 0x19, 0x7a, 0x16, 0x95, 0x63, 0x2b, 0x80, 0x99, 0x4d, 0x79, 0xc2, 0xf4, 0x4f, + 0xa2, 0x49, 0x97, 0x68, 0x86, 0xa8, 0xd4, 0x13, 0x7e, 0x03, 0x53, 0x8c, 0xef, 0x4b, 0x70, 0x43, + 0x4c, 0xdf, 0x98, 0x7d, 0x48, 0xcc, 0xbb, 0xa8, 0xcc, 0x46, 0x05, 0xae, 0x51, 0xae, 0x1f, 0x72, + 0x96, 0x7e, 0x44, 0xa3, 0xae, 0x8e, 0x7c, 0xf4, 0xc9, 0x69, 0x49, 0x99, 0x72, 0xc3, 0x16, 0xea, + 0x5b, 0x29, 0xe6, 0x1d, 0x4a, 0xd9, 0x5e, 0xd8, 0xb2, 0x23, 0x7e, 0x77, 0x35, 0xb1, 0xc5, 0xf2, + 0x5d, 0xb0, 0xfa, 0x9f, 0x6f, 0x13, 0xb7, 0xf3, 0xd4, 0x69, 0xda, 0x9a, 0xf1, 0xd8, 0xb5, 0x1b, + 0x3e, 0xdf, 0x04, 0x8d, 0x8a, 0x36, 0x41, 0x8a, 0x6f, 0x82, 0xfc, 0x6d, 0x2e, 0xb4, 0xa9, 0xf8, + 0xfb, 0xba, 0xd5, 0x8c, 0x52, 0x2f, 0xb8, 0xe2, 0xce, 0x5c, 0x3b, 0xb6, 0x04, 0x31, 0x4c, 0x40, + 0x7b, 0xa2, 0xd1, 0x9d, 0xaa, 0xdf, 0xab, 0x00, 0x90, 0x2f, 0x0a, 0xc4, 0x75, 0x55, 0x83, 0x50, + 0xdd, 0x35, 0x1d, 0xcf, 0xb4, 0xad, 0x40, 0x14, 0x88, 0xeb, 0xae, 0x47, 0xad, 0xf2, 0x06, 0x7a, + 0x39, 0x9c, 0xad, 0x42, 0x68, 0xbb, 0xa5, 0xd5, 0x9a, 0x04, 0xa6, 0x5d, 0x25, 0x0d, 0xff, 0xd2, + 0xda, 0xd3, 0xaa, 0x7f, 0x46, 0x42, 0x17, 0x0b, 0xe9, 0xec, 0x63, 0xf5, 0xe7, 0xd0, 0x34, 0x05, + 0x32, 0x82, 0x23, 0x71, 0x5a, 0x29, 0xf3, 0x46, 0x76, 0x03, 0x90, 0xbf, 0x31, 0x8c, 0x46, 0x59, + 0xc8, 0x01, 0x5f, 0x47, 0xa3, 0x2c, 0x1c, 0xc1, 0x07, 0x39, 0x95, 0x66, 0x0f, 0x18, 0x24, 0x98, + 0x1b, 0x06, 0x1b, 0x8b, 0xc3, 0x0c, 0x27, 0xe2, 0x30, 0xb1, 0xb7, 0x7e, 0x29, 0xf1, 0xd6, 0x3f, + 0x8d, 0xa6, 0x82, 0x20, 0x8d, 0xd9, 0x22, 0x5c, 0x9b, 0x10, 0x8f, 0xd0, 0x98, 0xad, 0x44, 0x18, + 0x61, 0x34, 0x3f, 0x8c, 0x30, 0xd6, 0x15, 0x79, 0x79, 0x05, 0x1d, 0x02, 0x7f, 0x8a, 0x6a, 0xd7, + 0xd5, 0x16, 0xf1, 0x7f, 0x51, 0x76, 0xd8, 0x95, 0x94, 0x59, 0xe8, 0x78, 0x54, 0x7f, 0x08, 0xcd, + 0x62, 0x9c, 0x6a, 0x22, 0x16, 0xa7, 0x92, 0xff, 0x66, 0x18, 0x4d, 0xb1, 0x25, 0x03, 0xe8, 0x60, + 0x2c, 0x2a, 0x70, 0x8b, 0x8b, 0x1c, 0x2c, 0xe5, 0x71, 0x70, 0x24, 0x9f, 0x83, 0xa3, 0xf9, 0x1c, + 0x1c, 0xcb, 0xe7, 0xe0, 0x78, 0x17, 0x07, 0x33, 0xb9, 0xc2, 0xf4, 0x64, 0xcf, 0x31, 0x5d, 0xee, + 0x94, 0x8d, 0x42, 0x5f, 0x33, 0x51, 0x33, 0x8b, 0xe5, 0x7c, 0x57, 0x42, 0xc7, 0xf9, 0x41, 0xc9, + 0xb8, 0xe2, 0x9b, 0xbe, 0x40, 0x33, 0x02, 0x77, 0xb2, 0x94, 0xea, 0x4e, 0x1e, 0x8e, 0xb9, 0x93, + 0x4f, 0xa3, 0x29, 0xc8, 0xb1, 0x50, 0x7d, 0x91, 0xe7, 0x5c, 0x42, 0xd0, 0xf4, 0xa4, 0xe3, 0x90, + 0xe8, 0x6e, 0x38, 0x22, 0x38, 0x85, 0x84, 0x9b, 0x24, 0xf0, 0x26, 0xb8, 0x49, 0xa6, 0xb8, 0xc2, + 0xc6, 0x52, 0x5d, 0x61, 0x8d, 0xf0, 0xa1, 0x2d, 0x4c, 0x9f, 0x2b, 0xe4, 0x1b, 0x68, 0x8c, 0x6d, + 0x6f, 0xe0, 0x4a, 0x3a, 0x95, 0x65, 0x6f, 0x21, 0xc6, 0xca, 0x81, 0x33, 0x2e, 0xcd, 0x04, 0x9d, + 0x8c, 0x1f, 0x0d, 0x74, 0xb5, 0xb3, 0xb5, 0x2e, 0xc6, 0x91, 0xc2, 0xdb, 0x08, 0x8c, 0x37, 0xa2, + 0x4c, 0x06, 0xd7, 0x11, 0xda, 0xbb, 0x6b, 0xef, 0x5f, 0x25, 0x78, 0x2f, 0x77, 0x8f, 0xc3, 0x17, + 0xf5, 0xe5, 0xa4, 0x83, 0x6c, 0x25, 0x73, 0x55, 0x39, 0x64, 0xf8, 0xad, 0x81, 0x6e, 0x58, 0x9e, + 0xdb, 0x09, 0x7d, 0x68, 0x95, 0xf7, 0x51, 0x59, 0xec, 0xc0, 0x73, 0xa8, 0xb4, 0x43, 0x3a, 0xdc, + 0x2a, 0xfa, 0x3f, 0xf1, 0xeb, 0x68, 0x74, 0x57, 0x6b, 0xb6, 0x49, 0x8f, 0x91, 0x6f, 0x00, 0xbe, + 0x3d, 0x7c, 0x53, 0x12, 0x19, 0x18, 0xfa, 0x6b, 0xe3, 0x0c, 0x0c, 0xcd, 0x70, 0xc8, 0xc0, 0xc0, + 0x0e, 0x0f, 0xc8, 0xc0, 0xf8, 0x38, 0x11, 0x03, 0xe3, 0xae, 0xe0, 0x42, 0x06, 0xa6, 0x91, 0xe1, + 0x0e, 0xba, 0x80, 0x81, 0x9c, 0xa2, 0xcf, 0x40, 0xb1, 0x63, 0x1f, 0x0c, 0xe4, 0x0e, 0x40, 0x81, + 0x81, 0x3f, 0x37, 0x0c, 0x27, 0xf0, 0x33, 0xe2, 0x9a, 0xf5, 0xce, 0xe3, 0x30, 0xef, 0xc9, 0x9f, + 0x57, 0xc0, 0xc5, 0xd7, 0x05, 0x4b, 0xc5, 0xd4, 0x76, 0x75, 0xfe, 0x7b, 0xdf, 0xb9, 0x72, 0x84, + 0xe7, 0x5e, 0xf1, 0x7b, 0x52, 0xd5, 0x73, 0x4d, 0xab, 0x21, 0xd8, 0xb0, 0x07, 0x68, 0x3a, 0x48, + 0x91, 0x02, 0xf5, 0x85, 0xb3, 0xf8, 0xac, 0x68, 0x3b, 0x03, 0x80, 0x25, 0x85, 0x44, 0x5a, 0xad, + 0x94, 0x5d, 0xe1, 0xcb, 0x37, 0x02, 0x21, 0x1d, 0xd3, 0xe0, 0x4f, 0x31, 0x14, 0x34, 0x6d, 0x19, + 0x78, 0x15, 0x4d, 0x69, 0x3a, 0x98, 0x24, 0x7f, 0x98, 0x91, 0xee, 0x61, 0xa2, 0x74, 0xae, 0xa5, + 0x15, 0x06, 0xc9, 0x86, 0x41, 0x5a, 0xf8, 0x5b, 0xfe, 0x12, 0xdc, 0xd1, 0xd2, 0xb9, 0x10, 0x69, + 0x3e, 0xa9, 0xd7, 0x03, 0x37, 0xeb, 0x4c, 0xfc, 0x14, 0x10, 0x86, 0xd8, 0x60, 0x40, 0x0a, 0x07, + 0x96, 0xef, 0xa3, 0x4b, 0xc1, 0x9e, 0x77, 0x45, 0xfa, 0x4d, 0x42, 0x7b, 0x70, 0x5c, 0xfd, 0x81, + 0x84, 0x5e, 0xe9, 0x85, 0x04, 0x9f, 0xa7, 0x87, 0x4e, 0x35, 0x58, 0x62, 0x81, 0xca, 0x93, 0x0d, + 0x54, 0x66, 0x83, 0xd4, 0x3a, 0x07, 0xe7, 0x12, 0x3a, 0x40, 0x5a, 0x42, 0xa5, 0x91, 0xde, 0x63, + 0x12, 0x2a, 0xdf, 0x87, 0x3b, 0x8d, 0x6f, 0x33, 0xbb, 0x80, 0x56, 0x3b, 0x9b, 0xbb, 0x8d, 0x68, + 0x91, 0x47, 0xd1, 0x58, 0x63, 0xb7, 0x11, 0xad, 0x72, 0xb4, 0xb1, 0xdb, 0xd8, 0x32, 0xe4, 0xaf, + 0x49, 0x68, 0xb1, 0x98, 0x04, 0x5f, 0xe4, 0x07, 0xe8, 0x48, 0xda, 0x22, 0xf9, 0x01, 0xdd, 0x57, + 0x1a, 0x0c, 0xee, 0x5e, 0x95, 0x7c, 0x2b, 0xf4, 0xea, 0xa6, 0xb0, 0x21, 0x5a, 0xc6, 0x6e, 0xa3, + 0x2e, 0x2c, 0x63, 0xb7, 0x51, 0xdf, 0x32, 0xe4, 0xed, 0xd0, 0xab, 0x9e, 0x86, 0xca, 0xa7, 0xcf, + 0x13, 0x44, 0xa4, 0xfd, 0x24, 0x88, 0xc8, 0xcf, 0xc2, 0x49, 0xa6, 0xac, 0xaa, 0x87, 0x07, 0xad, + 0xbf, 0x82, 0x26, 0x6c, 0xc4, 0x30, 0xf7, 0xad, 0xb0, 0x8d, 0xa8, 0x85, 0x2b, 0x48, 0xa3, 0x1b, + 0x3a, 0x82, 0x59, 0xda, 0x91, 0x34, 0x60, 0xda, 0xd1, 0x4e, 0x97, 0xe1, 0xde, 0xb2, 0x36, 0x9f, + 0x6d, 0xe6, 0x8b, 0x48, 0x32, 0x5f, 0x80, 0xdb, 0x02, 0x21, 0x5f, 0x20, 0x76, 0x21, 0x08, 0x9d, + 0x45, 0x6a, 0x97, 0xf5, 0xe6, 0x83, 0x45, 0x99, 0x14, 0x71, 0xeb, 0x7d, 0x21, 0xdf, 0x80, 0xf2, + 0x54, 0xaf, 0xd0, 0x42, 0xcb, 0xbf, 0xce, 0x3d, 0x03, 0xc9, 0x11, 0x56, 0x2c, 0x23, 0x78, 0xf2, + 0xe5, 0xae, 0x2b, 0xd7, 0x25, 0x35, 0xe0, 0xa2, 0xb7, 0xd1, 0x85, 0x82, 0x29, 0x1d, 0xd4, 0xea, + 0x7f, 0x5f, 0x8a, 0x4c, 0x5c, 0x78, 0xac, 0x89, 0x43, 0x3d, 0xb0, 0xdd, 0xcd, 0xb5, 0x80, 0x05, + 0x2f, 0x21, 0x64, 0x50, 0x4f, 0x8d, 0xb1, 0x61, 0xc2, 0xa0, 0xde, 0xe6, 0x0f, 0x8d, 0x13, 0xad, + 0xc8, 0x7c, 0xe6, 0x4d, 0xef, 0xa0, 0xd8, 0xf1, 0x24, 0x8a, 0x49, 0x3e, 0x34, 0x1b, 0xae, 0xe6, + 0x11, 0x18, 0x66, 0x83, 0xa5, 0xe1, 0x06, 0x6c, 0x38, 0x81, 0x26, 0x20, 0xfc, 0x1b, 0xea, 0xe5, + 0x38, 0xfb, 0xde, 0x32, 0xa2, 0x43, 0x60, 0x58, 0x38, 0x04, 0xfe, 0x65, 0x18, 0x1d, 0xcf, 0x20, + 0x89, 0xef, 0xa1, 0x51, 0x96, 0xe3, 0xcb, 0xb5, 0x71, 0x31, 0xed, 0x79, 0xc2, 0x40, 0x01, 0xd9, + 0x3f, 0xd8, 0xf8, 0x4d, 0x8a, 0xa1, 0xe1, 0xcf, 0xa3, 0xb2, 0xae, 0x59, 0x3a, 0x69, 0xaa, 0x40, + 0x06, 0x6e, 0x11, 0x4b, 0x99, 0x64, 0xd6, 0x18, 0x70, 0x92, 0xd8, 0x14, 0xd0, 0x60, 0x10, 0xf8, + 0x0b, 0x68, 0x46, 0xb7, 0x5b, 0x0e, 0x4b, 0xe7, 0x03, 0xa2, 0x90, 0xa0, 0xf8, 0x5a, 0x36, 0x51, + 0x0e, 0x9e, 0x24, 0x3b, 0x1d, 0xd0, 0x01, 0xc2, 0x8f, 0x50, 0xd9, 0x25, 0xec, 0x4a, 0x07, 0x64, + 0x47, 0x18, 0xd9, 0x57, 0x33, 0xc9, 0x2a, 0x0c, 0x38, 0xc6, 0x35, 0x65, 0x0a, 0x28, 0xb0, 0x7e, + 0xd9, 0x8a, 0x72, 0x7a, 0x52, 0xb7, 0x8b, 0x8b, 0xc5, 0x26, 0x1a, 0x83, 0x3c, 0x6a, 0x2e, 0x15, + 0xcb, 0x59, 0x52, 0x91, 0x45, 0x88, 0xa3, 0xcb, 0x04, 0xbd, 0x1a, 0x8c, 0x97, 0xb1, 0xe4, 0x9e, + 0x05, 0xa5, 0x82, 0x26, 0xa9, 0xab, 0xc7, 0x62, 0xe6, 0xe3, 0xd4, 0xd5, 0xab, 0xbe, 0xbc, 0xfc, + 0xa2, 0x84, 0xae, 0xf4, 0x38, 0x0e, 0x5f, 0xe1, 0x97, 0x58, 0x7a, 0x8e, 0xb0, 0x65, 0xc1, 0x52, + 0xfb, 0xdf, 0xb3, 0x99, 0xd8, 0x9e, 0x51, 0xf9, 0xbd, 0xc8, 0x00, 0x57, 0x9f, 0x6b, 0xce, 0xa3, + 0xf6, 0x3e, 0x95, 0xe1, 0x7f, 0x24, 0x74, 0xa8, 0x8b, 0x18, 0xbe, 0x2b, 0x6c, 0x11, 0xc4, 0x26, + 0xb3, 0x4e, 0x25, 0x86, 0xc0, 0x91, 0x83, 0x8d, 0xc1, 0x8f, 0xd1, 0xb4, 0xa8, 0x05, 0x94, 0xab, + 0xc1, 0xe5, 0x7c, 0x2a, 0xa0, 0x0b, 0x01, 0xad, 0xb2, 0xa0, 0x03, 0x14, 0x3f, 0xeb, 0xe6, 0x28, + 0x68, 0xc1, 0x95, 0x02, 0x9a, 0x1c, 0x29, 0xa0, 0x9a, 0x64, 0x67, 0x0d, 0x82, 0x91, 0x29, 0xec, + 0xe4, 0x5b, 0xb9, 0x92, 0x10, 0xd6, 0x4b, 0x79, 0xc2, 0x1a, 0x27, 0x11, 0x88, 0xe9, 0x83, 0x28, + 0x8b, 0xa7, 0xfb, 0x0c, 0xf7, 0xaf, 0x9c, 0x44, 0xb7, 0x2d, 0x43, 0x73, 0x3b, 0xd5, 0xc7, 0xb9, + 0x97, 0xd7, 0xe7, 0x51, 0x62, 0x4d, 0x31, 0x9d, 0xf0, 0x76, 0x14, 0x7f, 0x63, 0xf7, 0x75, 0xbd, + 0xe0, 0xa8, 0xf2, 0x56, 0x64, 0xf5, 0x53, 0x07, 0x8e, 0x1f, 0xcc, 0xb9, 0x8e, 0x7f, 0x17, 0x5d, + 0xee, 0x89, 0xd4, 0x41, 0x4e, 0xff, 0x61, 0x74, 0x41, 0xaa, 0x3a, 0x1b, 0x7b, 0xe6, 0x3e, 0x35, + 0xe6, 0xbb, 0x12, 0x9a, 0x4b, 0xd2, 0xc2, 0x9b, 0xf1, 0x73, 0xe3, 0x6a, 0x81, 0xbe, 0x80, 0xe6, + 0x3f, 0x76, 0xed, 0x5d, 0xd3, 0x20, 0xae, 0x4f, 0x27, 0x38, 0x40, 0xbe, 0xd2, 0x65, 0xed, 0x41, + 0x77, 0x6e, 0xf5, 0x28, 0xe7, 0x29, 0x94, 0xe3, 0x66, 0x5f, 0xfe, 0x8a, 0x60, 0x41, 0x62, 0xec, + 0xe0, 0x3c, 0xbf, 0x9f, 0xd0, 0xfd, 0xc5, 0x5c, 0x89, 0x17, 0x29, 0x04, 0x02, 0xbf, 0x82, 0x8e, + 0xf0, 0x5b, 0x6f, 0xf5, 0x31, 0x73, 0xe3, 0x71, 0x4e, 0x5f, 0x42, 0x73, 0xc1, 0x9b, 0x56, 0x8d, + 0xe7, 0x4b, 0xcf, 0x06, 0xed, 0xfc, 0x09, 0x2c, 0xd7, 0xd0, 0xd1, 0x04, 0x09, 0x3e, 0xbb, 0x2d, + 0x34, 0x17, 0xa4, 0x72, 0x3b, 0x7c, 0x91, 0xa9, 0xd1, 0x17, 0x67, 0x29, 0xc1, 0x0a, 0x65, 0x96, + 0xc6, 0x1b, 0xe4, 0x9b, 0x70, 0x39, 0x7f, 0x1c, 0xa6, 0x46, 0x59, 0xba, 0xdd, 0x22, 0xc1, 0x25, + 0x24, 0x4f, 0x13, 0xff, 0x5a, 0x82, 0x8b, 0x49, 0x16, 0x2a, 0x9f, 0xeb, 0x65, 0x74, 0x48, 0x6f, + 0xbb, 0x2e, 0xb1, 0x84, 0x30, 0x40, 0x90, 0x8a, 0xc7, 0x3b, 0xc2, 0x08, 0x00, 0xde, 0x46, 0x27, + 0xc4, 0xcc, 0x2d, 0x46, 0x50, 0x35, 0x80, 0x62, 0x51, 0xc0, 0x2e, 0x75, 0x1e, 0xca, 0x31, 0x27, + 0x75, 0x7a, 0xf2, 0x3f, 0x4a, 0xe8, 0x68, 0x2a, 0x46, 0xc6, 0x3b, 0xec, 0x80, 0x52, 0x4d, 0xf0, + 0x13, 0x34, 0x06, 0xcb, 0x62, 0xa6, 0xbb, 0xbc, 0x7a, 0xe7, 0xa3, 0x4f, 0x4e, 0x0f, 0x7d, 0xff, + 0x93, 0xd3, 0x2f, 0x37, 0x4c, 0x6f, 0xbb, 0x5d, 0x5b, 0xd2, 0xed, 0x16, 0xaf, 0x42, 0xe3, 0xff, + 0x5c, 0xa1, 0xc6, 0x0e, 0x2f, 0xa6, 0xda, 0xb2, 0xbc, 0xef, 0x7d, 0xe7, 0x0a, 0xe2, 0x8e, 0x92, + 0x2d, 0xcb, 0x53, 0x38, 0x2d, 0xf9, 0x36, 0x5c, 0x3a, 0x22, 0xe3, 0xd7, 0xc7, 0x3e, 0xfe, 0x03, + 0x7f, 0x6c, 0x64, 0x23, 0x0f, 0xb2, 0x93, 0x16, 0x3a, 0x49, 0x03, 0x82, 0x99, 0x7b, 0x99, 0x79, + 0xe9, 0xc9, 0x98, 0x8b, 0x32, 0x4f, 0x33, 0x26, 0x29, 0xff, 0xb3, 0x84, 0x8e, 0x67, 0x60, 0x65, + 0xbd, 0x92, 0xfe, 0x5f, 0xef, 0xe8, 0x3f, 0x95, 0xd0, 0x18, 0xd4, 0x5a, 0x60, 0x15, 0x1d, 0x4d, + 0x6a, 0xbb, 0x18, 0x70, 0xbd, 0x9c, 0xc9, 0xc4, 0xb8, 0xaa, 0x33, 0x0b, 0x72, 0x98, 0x76, 0x37, + 0xe2, 0x2a, 0x3a, 0x04, 0xc6, 0x9f, 0x76, 0x2c, 0x3d, 0x20, 0x0e, 0xcc, 0xb8, 0x98, 0xe9, 0x3b, + 0xf5, 0x11, 0xaa, 0x0c, 0x9e, 0x11, 0x9e, 0xad, 0xc5, 0x1b, 0xf0, 0x7d, 0x84, 0xa0, 0x8e, 0x84, + 0x51, 0x83, 0x7b, 0xca, 0xd9, 0x2c, 0x6a, 0xac, 0xb4, 0x84, 0xd1, 0x99, 0xd4, 0x83, 0x9f, 0xf8, + 0x01, 0x2a, 0xb7, 0x34, 0x4b, 0x6b, 0x04, 0x33, 0x82, 0xab, 0xf9, 0xb9, 0x2c, 0x1a, 0x0f, 0x01, + 0x96, 0x51, 0x99, 0x6a, 0x45, 0x1f, 0x78, 0x0b, 0x4d, 0x93, 0x3d, 0xa2, 0xb7, 0x7d, 0x8b, 0xcb, + 0x08, 0x8d, 0x32, 0x42, 0xe7, 0xb3, 0x08, 0x6d, 0x70, 0x60, 0x46, 0xa9, 0x4c, 0x84, 0x2f, 0xfc, + 0x26, 0x1a, 0x6f, 0xe8, 0x40, 0x64, 0x2c, 0xdf, 0x35, 0xba, 0xb9, 0xc6, 0xd0, 0xc7, 0x1a, 0xba, + 0xff, 0xaf, 0xfc, 0x9b, 0x25, 0x34, 0x9b, 0x60, 0x19, 0x7e, 0x19, 0xcd, 0xd6, 0x28, 0x4f, 0xda, + 0xdd, 0x26, 0x66, 0x63, 0x3b, 0xc8, 0x64, 0x9d, 0xae, 0x51, 0x06, 0xfb, 0x0e, 0x6b, 0xc4, 0x32, + 0x9a, 0x8e, 0xe0, 0x34, 0x1a, 0x24, 0x73, 0x4d, 0x05, 0x50, 0xbc, 0x0a, 0xa9, 0x46, 0x55, 0x31, + 0x12, 0x03, 0x81, 0xb2, 0x72, 0x8d, 0x3e, 0x8d, 0x62, 0x31, 0x8b, 0x68, 0xae, 0x46, 0xd5, 0x56, + 0x87, 0x7e, 0xd8, 0x54, 0x77, 0x89, 0x4b, 0xcd, 0xb0, 0x2a, 0x6a, 0xa6, 0x46, 0x1f, 0xfa, 0xcd, + 0xcf, 0xa0, 0x15, 0xdf, 0x47, 0xa7, 0x6a, 0x54, 0x35, 0x48, 0x5d, 0x6b, 0x37, 0x3d, 0x55, 0xdf, + 0xd6, 0x5c, 0x4d, 0xf7, 0x88, 0xab, 0xd2, 0x20, 0x0f, 0x06, 0x72, 0xfc, 0x4f, 0xd4, 0xe8, 0x3a, + 0xc0, 0xac, 0x05, 0x20, 0x55, 0x9e, 0x16, 0x73, 0x0b, 0x9d, 0x10, 0x29, 0xd8, 0xcd, 0x26, 0xc4, + 0x79, 0x84, 0xe4, 0xff, 0x63, 0x11, 0x76, 0xd0, 0x1d, 0x14, 0x80, 0xf8, 0xd3, 0xf4, 0x19, 0x4b, + 0xe8, 0xfc, 0x38, 0xcb, 0xe9, 0x9f, 0xac, 0xd1, 0x87, 0xd0, 0xc0, 0xbb, 0x9f, 0xdb, 0xee, 0x0e, + 0x71, 0x29, 0x0b, 0x2a, 0x4d, 0xfb, 0xdd, 0x5f, 0x80, 0x06, 0x7c, 0x09, 0x1d, 0xaa, 0x51, 0x95, + 0x58, 0x5a, 0xad, 0x49, 0x54, 0xa3, 0xad, 0x35, 0x55, 0xa3, 0xc6, 0x02, 0x4b, 0x13, 0xfe, 0x2a, + 0x37, 0x58, 0xfb, 0x7a, 0x5b, 0x6b, 0xae, 0xd7, 0xe4, 0x77, 0xd1, 0x64, 0x28, 0x79, 0xfe, 0x15, + 0x88, 0x0b, 0x6c, 0x90, 0xf6, 0x3c, 0x0e, 0xb2, 0x68, 0xb0, 0xc4, 0x1c, 0xd6, 0x15, 0x1c, 0xd8, + 0xc3, 0x6c, 0x4e, 0x65, 0xd6, 0x18, 0x9c, 0xd6, 0xff, 0x35, 0x8c, 0x0e, 0xa7, 0xa8, 0x9c, 0xbf, + 0xcd, 0xd4, 0x51, 0x75, 0xdb, 0x20, 0x21, 0xcf, 0x81, 0xfc, 0x34, 0x75, 0xd6, 0x6c, 0x83, 0x04, + 0x2c, 0x3f, 0x8f, 0x66, 0x02, 0x38, 0xdd, 0x6e, 0xb5, 0x4c, 0x8f, 0xef, 0x73, 0x19, 0xc0, 0xd6, + 0x58, 0x1b, 0xbe, 0xc8, 0xa8, 0x69, 0xae, 0xbe, 0x6d, 0x7a, 0x44, 0xf7, 0xda, 0x6e, 0x10, 0xc7, + 0x9a, 0xa1, 0xce, 0x8a, 0xd0, 0xea, 0x4b, 0x0d, 0x75, 0xd4, 0x86, 0x9d, 0xd8, 0xe8, 0x29, 0xea, + 0x6c, 0xda, 0xc1, 0x90, 0x4b, 0xe8, 0x30, 0x75, 0x54, 0xb8, 0x76, 0x98, 0x56, 0x43, 0xa5, 0x1d, + 0xea, 0x91, 0x56, 0x50, 0x0f, 0x43, 0x9d, 0x47, 0x41, 0x4f, 0x95, 0x75, 0xc4, 0xe0, 0x85, 0xeb, + 0xcb, 0x58, 0x1c, 0x3e, 0xbc, 0xc0, 0xf0, 0x25, 0x19, 0x36, 0xcb, 0x54, 0x63, 0x1b, 0x3f, 0x1e, + 0x2c, 0x69, 0x9d, 0x35, 0xb2, 0xed, 0xbe, 0x8a, 0x8e, 0xa6, 0xa6, 0x26, 0xf1, 0xdc, 0x20, 0xdc, + 0x9d, 0x95, 0x24, 0xff, 0x89, 0x84, 0xa6, 0x04, 0x7d, 0x87, 0xd4, 0x10, 0xb6, 0xe1, 0x4d, 0x5b, + 0x33, 0x54, 0x4f, 0xa3, 0x3b, 0x8c, 0xc9, 0x13, 0xca, 0x0c, 0xb4, 0x7f, 0xce, 0xd6, 0x8c, 0x27, + 0x1a, 0xdd, 0xc1, 0xd7, 0xd0, 0x51, 0x0e, 0xb9, 0x4d, 0xb4, 0xa6, 0xb7, 0xad, 0xea, 0xdb, 0x44, + 0xdf, 0xe1, 0xf9, 0xf2, 0x13, 0xca, 0x61, 0xe8, 0x7c, 0x87, 0xf5, 0xad, 0x41, 0x17, 0xbe, 0x8b, + 0x4e, 0x72, 0x1c, 0x9f, 0xb0, 0xea, 0x12, 0xcf, 0x3f, 0xd3, 0xf4, 0x6d, 0xe2, 0xcb, 0xa3, 0xcb, + 0x53, 0xac, 0xe7, 0x01, 0xc4, 0x1f, 0x44, 0xf1, 0x01, 0xaa, 0x41, 0xbf, 0x7f, 0xc0, 0x96, 0x45, + 0x9b, 0xe2, 0xab, 0x46, 0xd3, 0xa4, 0x1e, 0xb1, 0x54, 0x56, 0x0d, 0x0a, 0xf4, 0x7c, 0xa5, 0xb5, + 0xdb, 0x81, 0x09, 0x38, 0x06, 0x00, 0x55, 0xa2, 0x35, 0x19, 0xb5, 0x27, 0xd0, 0x8b, 0xef, 0xa1, + 0x97, 0xf8, 0xbb, 0xc2, 0x73, 0xb5, 0x7a, 0xdd, 0xd4, 0xd5, 0x1d, 0x42, 0x1c, 0x86, 0xac, 0x1a, + 0x5a, 0x87, 0x87, 0x03, 0xe7, 0x01, 0xe6, 0x09, 0x80, 0xbc, 0x4b, 0x88, 0xe3, 0xe3, 0xaf, 0x6b, + 0x1d, 0x7c, 0x13, 0x9d, 0x10, 0x92, 0x3c, 0x12, 0xc8, 0x60, 0x32, 0x8e, 0x46, 0x79, 0x1c, 0x02, + 0xa6, 0xfc, 0x4b, 0x12, 0x1a, 0x03, 0xa3, 0x26, 0x70, 0xbb, 0xa1, 0xab, 0x2f, 0xec, 0x56, 0xcd, + 0x24, 0x71, 0x6e, 0x6f, 0xea, 0xef, 0xb3, 0x56, 0x5f, 0x00, 0x22, 0x48, 0xdf, 0x42, 0x72, 0x36, + 0x97, 0x03, 0x38, 0x56, 0x94, 0x77, 0x15, 0x1d, 0xe5, 0xdd, 0x30, 0x17, 0xd3, 0xf2, 0x88, 0xbb, + 0xab, 0x35, 0xf9, 0x84, 0x70, 0x83, 0x81, 0xf9, 0x13, 0xd9, 0xe2, 0x3d, 0xf2, 0xb1, 0xe8, 0x76, + 0xcd, 0x0e, 0x49, 0x7e, 0xc3, 0x91, 0x1f, 0x45, 0x57, 0x66, 0xde, 0x1e, 0x25, 0xb5, 0xf3, 0x82, + 0xc6, 0x82, 0xa4, 0x76, 0x8e, 0xc7, 0xa1, 0x65, 0x27, 0x8c, 0xdd, 0x3e, 0xa5, 0xc4, 0x85, 0x17, + 0x5a, 0x8f, 0xa5, 0x12, 0xa1, 0xf7, 0x70, 0x58, 0xf0, 0x1e, 0x16, 0x3a, 0x1d, 0xe5, 0x2f, 0xc6, + 0x4a, 0x01, 0x83, 0x11, 0xf9, 0x32, 0xde, 0x4a, 0xbc, 0x05, 0xcf, 0xe5, 0x86, 0x8b, 0x21, 0xdd, + 0x20, 0x7c, 0x03, 0x5a, 0x61, 0xfd, 0x9f, 0xd0, 0x2b, 0x3e, 0x01, 0x21, 0xb0, 0x13, 0x3d, 0x01, + 0xd9, 0x77, 0x3f, 0x2b, 0x89, 0x55, 0xdb, 0xc9, 0xef, 0xc3, 0x9b, 0xb3, 0x6b, 0xbc, 0x83, 0x58, + 0x4b, 0x3b, 0x4c, 0xa0, 0xf6, 0xb9, 0xf4, 0xe8, 0xb9, 0x45, 0x8c, 0xff, 0x8b, 0xcd, 0xf9, 0x20, + 0x56, 0x3f, 0x13, 0x1b, 0xf6, 0x20, 0x56, 0xf5, 0xf7, 0xc3, 0x68, 0xec, 0xb1, 0xdd, 0x34, 0xf5, + 0x0e, 0xbe, 0x80, 0x66, 0x1c, 0xd7, 0xb4, 0x74, 0xd3, 0xd1, 0x9a, 0x10, 0x89, 0x94, 0x58, 0x25, + 0xee, 0x74, 0xd8, 0xca, 0xc2, 0x99, 0x17, 0xd1, 0x6c, 0x04, 0x16, 0x05, 0x6d, 0x27, 0x95, 0x08, + 0xfb, 0x99, 0xdf, 0xda, 0x1d, 0x3f, 0x2d, 0x1d, 0x48, 0xfc, 0x94, 0xd7, 0x58, 0x0a, 0xf1, 0xd3, + 0x4b, 0x68, 0x4e, 0xc8, 0x27, 0x81, 0x57, 0x02, 0x24, 0x4e, 0xcc, 0x46, 0x49, 0x25, 0xf0, 0x48, + 0xb8, 0x84, 0xe6, 0x84, 0x2b, 0x0b, 0x80, 0x42, 0x82, 0xc9, 0x6c, 0x94, 0x41, 0x02, 0xa0, 0x29, + 0xc9, 0x22, 0xe3, 0xa9, 0xc9, 0x22, 0xff, 0x2e, 0x45, 0xde, 0x2c, 0xf0, 0xa8, 0x33, 0x86, 0x9a, + 0x84, 0x1e, 0x5c, 0x9d, 0x4d, 0x22, 0x44, 0x5c, 0x1a, 0x20, 0x44, 0x9c, 0x1e, 0x5b, 0x48, 0x0a, + 0xe0, 0x68, 0x97, 0x00, 0xfe, 0x58, 0x94, 0x17, 0x9d, 0x5c, 0x1d, 0x17, 0xc0, 0xdb, 0x68, 0xc2, + 0xe1, 0x6d, 0x45, 0xe5, 0x49, 0x20, 0x6a, 0x4a, 0x08, 0x2f, 0x3f, 0x8a, 0xe2, 0x4e, 0xf1, 0xba, + 0x67, 0x78, 0xff, 0x84, 0x2c, 0xbc, 0x98, 0x5e, 0x46, 0x3d, 0x99, 0x2c, 0x8f, 0x96, 0xb5, 0x28, + 0x6a, 0x94, 0x41, 0x70, 0xdf, 0x35, 0x55, 0x6b, 0x51, 0x7c, 0xc4, 0xd7, 0xc9, 0xf8, 0x30, 0x3d, + 0x9a, 0x03, 0xf9, 0x27, 0x23, 0xaf, 0x7d, 0x2a, 0x11, 0x3e, 0xcb, 0xa7, 0x68, 0x2e, 0xb1, 0xee, + 0xe0, 0x29, 0xfb, 0x4a, 0x6f, 0xf5, 0xe3, 0xac, 0xf8, 0x65, 0x36, 0xce, 0x24, 0x2a, 0xdf, 0x02, + 0xc3, 0xcc, 0x1c, 0x82, 0xdc, 0x07, 0x28, 0x64, 0x9d, 0x9c, 0x44, 0x93, 0x81, 0x61, 0x0e, 0x92, + 0x4e, 0x26, 0xb8, 0x65, 0xa6, 0xf2, 0xc7, 0x52, 0xe4, 0xd8, 0x8b, 0xe1, 0xf2, 0x19, 0x7f, 0x21, + 0x61, 0x8e, 0xde, 0x2e, 0x4a, 0x24, 0x49, 0x21, 0x02, 0xa6, 0x8a, 0xa7, 0x91, 0x70, 0x72, 0x95, + 0x2f, 0xf2, 0x94, 0xb6, 0xcc, 0x24, 0x92, 0xeb, 0xf1, 0x24, 0x92, 0x82, 0xc4, 0x26, 0x21, 0x87, + 0xe4, 0x0e, 0xc8, 0x0c, 0x73, 0x7b, 0xf1, 0x48, 0x80, 0xd5, 0xe0, 0xa5, 0x5d, 0x50, 0x36, 0x99, + 0xe7, 0xce, 0xb8, 0x07, 0x49, 0x95, 0x79, 0xd8, 0x69, 0xe5, 0x87, 0x23, 0x41, 0x0e, 0xd5, 0x73, + 0x18, 0x1d, 0x52, 0x37, 0x78, 0xe0, 0x65, 0xf3, 0xd9, 0x66, 0x94, 0xc4, 0xd1, 0x6b, 0x28, 0xbc, + 0x11, 0x0b, 0x85, 0x83, 0xcb, 0xa1, 0x82, 0x26, 0x0d, 0xea, 0xf1, 0x08, 0x0b, 0x14, 0x20, 0x8c, + 0x1b, 0xd4, 0x63, 0x11, 0x16, 0x15, 0x26, 0x9e, 0x37, 0xf0, 0xfe, 0x32, 0x47, 0xde, 0x4c, 0xd4, + 0x7b, 0x55, 0xcd, 0x17, 0xa4, 0x27, 0x7f, 0xf5, 0x9d, 0x44, 0x05, 0x17, 0x20, 0xf2, 0xc9, 0x44, + 0xc6, 0x92, 0xa5, 0x2b, 0xc7, 0xea, 0x23, 0x58, 0xc2, 0xf2, 0x42, 0x58, 0x5c, 0x05, 0x59, 0xee, + 0xfc, 0x6f, 0xc4, 0x04, 0xe9, 0x1b, 0xf2, 0x9d, 0xf0, 0x24, 0x4f, 0xf6, 0xf3, 0x11, 0x72, 0x93, + 0x5f, 0x37, 0xc3, 0x1c, 0xfa, 0x28, 0xc7, 0x7c, 0x90, 0xba, 0x43, 0x59, 0x0d, 0xa5, 0x2e, 0x8b, + 0xd0, 0xfe, 0x0a, 0x99, 0xaf, 0xfd, 0xd1, 0x5d, 0x74, 0xd8, 0x1f, 0xe1, 0x21, 0x87, 0xaa, 0x12, + 0x77, 0xd7, 0xd4, 0x09, 0xfe, 0x2a, 0xc2, 0xdd, 0x85, 0xb2, 0xf8, 0x6a, 0x9e, 0x9e, 0xa6, 0xfe, + 0x99, 0x88, 0xca, 0xb5, 0x7e, 0x50, 0x60, 0x31, 0xf2, 0x10, 0xfe, 0xba, 0x94, 0x92, 0xf3, 0x16, + 0x2d, 0x1b, 0xdf, 0xee, 0x39, 0xf3, 0xac, 0x8b, 0xe9, 0x95, 0xb7, 0x06, 0xc2, 0x0d, 0xa7, 0xf6, + 0x1b, 0xc9, 0xd2, 0xc1, 0xd8, 0xc4, 0x6e, 0x16, 0x2c, 0x37, 0xb3, 0x78, 0xbf, 0x72, 0x6b, 0x00, + 0xcc, 0x70, 0x52, 0xbf, 0x1c, 0x25, 0xa3, 0x26, 0x6b, 0xdd, 0xf1, 0x8d, 0xbe, 0x08, 0x87, 0x2a, + 0x50, 0x79, 0xb3, 0x6f, 0xbc, 0x70, 0x3a, 0x7f, 0xc7, 0xb3, 0x9c, 0x7a, 0xa9, 0x34, 0xc7, 0x9b, + 0x45, 0xfb, 0xd1, 0x63, 0x81, 0x7d, 0xe5, 0x9d, 0xfd, 0x13, 0x4a, 0x63, 0x68, 0xb2, 0x52, 0xbc, + 0x90, 0xa1, 0x19, 0x45, 0xec, 0x85, 0x0c, 0xcd, 0x2a, 0x49, 0x97, 0x87, 0xf0, 0x6f, 0x4b, 0xd1, + 0x61, 0xdc, 0x5d, 0x03, 0x8e, 0x6f, 0x15, 0xad, 0x3c, 0xb3, 0x66, 0xbd, 0x72, 0x7b, 0x10, 0xd4, + 0x70, 0x5e, 0x2f, 0xd0, 0xa1, 0xae, 0x92, 0x6d, 0xfc, 0x5a, 0xc1, 0x3a, 0xbb, 0x8a, 0xcc, 0x2b, + 0x57, 0xfb, 0xc0, 0x08, 0xc7, 0xfe, 0x05, 0x29, 0x7c, 0x56, 0xc7, 0x6d, 0x34, 0x7e, 0xbd, 0x80, + 0x5c, 0xaa, 0xc9, 0xaf, 0xbc, 0xd1, 0x27, 0x56, 0xd7, 0xe6, 0xa4, 0x17, 0x7d, 0xe3, 0x22, 0xc5, + 0xce, 0xae, 0x4b, 0xcf, 0xdf, 0x9c, 0xfc, 0x1a, 0x73, 0x79, 0x08, 0xff, 0x6a, 0x54, 0xd7, 0xdf, + 0x55, 0xb6, 0x8d, 0xdf, 0xec, 0x8f, 0x74, 0xc4, 0xa6, 0x9b, 0xfd, 0x23, 0x86, 0x33, 0xfa, 0x2a, + 0x38, 0x48, 0x92, 0x19, 0xa8, 0x38, 0x35, 0xf9, 0x82, 0x55, 0x8e, 0x24, 0x41, 0x23, 0x89, 0xe9, + 0x1d, 0x23, 0x45, 0x5a, 0xa3, 0xa2, 0xef, 0x42, 0x69, 0xed, 0x2a, 0x43, 0x2f, 0x94, 0xd6, 0xee, + 0x8a, 0xf2, 0xb8, 0xb4, 0xc6, 0x2b, 0xb3, 0x0b, 0xa5, 0x35, 0xb5, 0xfa, 0xbb, 0x50, 0x5a, 0xd3, + 0xcb, 0xbf, 0xe5, 0x21, 0xfc, 0x35, 0x09, 0x1d, 0x4b, 0xaf, 0x9a, 0xc5, 0x6f, 0xf4, 0xb4, 0xb0, + 0x64, 0x3d, 0x61, 0xe5, 0x46, 0xbf, 0x68, 0x5d, 0x56, 0x36, 0xa5, 0x9e, 0x32, 0xdf, 0xca, 0x66, + 0x57, 0xe0, 0xe6, 0x5b, 0xd9, 0x9c, 0xc2, 0x4d, 0xe1, 0xd6, 0x91, 0x51, 0x50, 0x8c, 0x6f, 0xf7, + 0xb7, 0xd0, 0x98, 0xf1, 0x7f, 0x6b, 0x20, 0xdc, 0x70, 0x6a, 0xbf, 0x2b, 0x25, 0x2e, 0xac, 0x49, + 0x76, 0xbd, 0xd5, 0x93, 0xf5, 0xca, 0xe0, 0xd9, 0x9d, 0xc1, 0x90, 0xbb, 0x2c, 0x4d, 0x5a, 0xf9, + 0x1f, 0xee, 0x63, 0x43, 0x62, 0x95, 0x9c, 0xf9, 0x96, 0x26, 0xaf, 0xd2, 0x50, 0x90, 0xac, 0x94, + 0xa2, 0xbb, 0x7c, 0xc9, 0xca, 0xae, 0xf2, 0xcb, 0x97, 0xac, 0x9c, 0xea, 0x3e, 0x79, 0x08, 0xff, + 0xa1, 0x58, 0x03, 0x98, 0x5e, 0x0d, 0x87, 0xef, 0x15, 0x92, 0xcf, 0x2d, 0xc7, 0xab, 0xbc, 0x3d, + 0x30, 0x7e, 0x38, 0xcd, 0xe7, 0x68, 0x2e, 0x59, 0x13, 0x84, 0x97, 0x0b, 0x64, 0x23, 0x59, 0xfc, + 0x54, 0x79, 0xad, 0x77, 0x84, 0x70, 0xe0, 0x9f, 0x95, 0xe0, 0x64, 0x48, 0x56, 0xdd, 0xe0, 0xeb, + 0xfd, 0xd5, 0xe8, 0xc0, 0x0c, 0x5e, 0x1f, 0xa4, 0xb0, 0x27, 0x31, 0x0b, 0xb1, 0x74, 0xa5, 0x78, + 0x16, 0x29, 0x75, 0x39, 0xc5, 0xb3, 0x48, 0xab, 0x8e, 0x11, 0x94, 0x29, 0xad, 0x4e, 0x23, 0x5f, + 0x99, 0x72, 0xea, 0x5b, 0xf2, 0x95, 0x29, 0xaf, 0x24, 0x44, 0x1e, 0xc2, 0x7f, 0x2a, 0x45, 0xde, + 0xac, 0xec, 0xda, 0x0c, 0x5c, 0x58, 0x0e, 0x54, 0x58, 0x1a, 0x52, 0x59, 0xdd, 0x0f, 0x89, 0x70, + 0xbe, 0x7f, 0x2c, 0xe5, 0x14, 0x0d, 0xf0, 0x22, 0x0b, 0xfc, 0x76, 0x91, 0x98, 0x16, 0x54, 0x78, + 0x54, 0xee, 0x0f, 0x4e, 0x20, 0xed, 0x31, 0xd9, 0x5d, 0x00, 0x51, 0xf8, 0x98, 0xcc, 0x2c, 0xdb, + 0x28, 0x7c, 0x4c, 0x66, 0x57, 0x6d, 0xc4, 0x27, 0xd5, 0xbd, 0x86, 0xc2, 0x49, 0x65, 0x96, 0x69, + 0x14, 0x4e, 0x2a, 0xbb, 0x10, 0x23, 0x5d, 0x37, 0x59, 0xaa, 0x7f, 0xcf, 0xba, 0x29, 0x96, 0x5e, + 0xf4, 0xac, 0x9b, 0xb1, 0x12, 0x0a, 0x79, 0x08, 0x7f, 0xb3, 0xcb, 0x8f, 0x9f, 0x28, 0x38, 0xc0, + 0x77, 0xfa, 0xa1, 0x9c, 0x2c, 0x9d, 0xa8, 0xdc, 0x1d, 0x10, 0x3b, 0x55, 0x55, 0xb3, 0xeb, 0x00, + 0x70, 0xef, 0x95, 0x7b, 0x59, 0x25, 0x0e, 0xc5, 0xaa, 0x5a, 0x5c, 0x86, 0x90, 0xf0, 0x14, 0x14, + 0xa5, 0xce, 0x16, 0x7b, 0x0a, 0x7a, 0x4c, 0xe2, 0x2d, 0xf6, 0x14, 0xf4, 0x9a, 0xc5, 0x2b, 0x0f, + 0xe1, 0x3f, 0x97, 0x22, 0x2f, 0x7d, 0x4e, 0xe2, 0x2c, 0x5e, 0x1d, 0x68, 0xcc, 0xb8, 0x78, 0xac, + 0xed, 0x8b, 0x46, 0xaa, 0x77, 0x2d, 0xad, 0xd4, 0xa2, 0xd0, 0x27, 0x90, 0x5d, 0xf2, 0x51, 0xec, + 0x5d, 0xcb, 0xa9, 0x3f, 0x90, 0x87, 0xf0, 0x5f, 0x49, 0x51, 0x6c, 0x26, 0x37, 0xa3, 0x1f, 0xaf, + 0x17, 0x0d, 0xd4, 0x4b, 0xe1, 0x41, 0x65, 0x63, 0x9f, 0x54, 0xba, 0xde, 0x77, 0xdd, 0x19, 0xfb, + 0x85, 0xb6, 0x26, 0xad, 0x5a, 0x20, 0xff, 0x7d, 0x97, 0x99, 0x14, 0x9f, 0x30, 0x94, 0xb1, 0x44, + 0xe8, 0x42, 0x43, 0x99, 0x92, 0x82, 0x5d, 0x6c, 0x28, 0xd3, 0x12, 0x95, 0xe5, 0x21, 0x6c, 0xa1, + 0xe9, 0x58, 0x96, 0x30, 0x7e, 0xb5, 0xc0, 0xf8, 0xc7, 0xf2, 0x91, 0x2b, 0x57, 0x7a, 0x84, 0x4e, + 0x1b, 0x0f, 0xf2, 0x13, 0x0b, 0xc7, 0x13, 0x33, 0x34, 0x8a, 0xc7, 0x8b, 0xe5, 0x6d, 0xc4, 0x5c, + 0x09, 0x51, 0x3e, 0x44, 0xa1, 0x2b, 0xa1, 0x2b, 0x59, 0xa3, 0x72, 0xb5, 0x0f, 0x8c, 0x70, 0xec, + 0x9f, 0x96, 0xc0, 0x67, 0x9f, 0x48, 0x61, 0xc0, 0xd7, 0x7a, 0xb9, 0x78, 0xc7, 0xf3, 0x2b, 0x2a, + 0xd7, 0xfb, 0xc2, 0x49, 0x73, 0x22, 0x24, 0x52, 0x0e, 0x0a, 0x9d, 0x08, 0xe9, 0x99, 0x11, 0x95, + 0x1b, 0xfd, 0xa2, 0x75, 0xcd, 0xa5, 0x3b, 0xfa, 0x8c, 0xdf, 0xe8, 0xed, 0x8c, 0x4a, 0xc4, 0xe2, + 0x2b, 0x37, 0xfa, 0x45, 0x4b, 0xbd, 0x1f, 0xa4, 0x86, 0x96, 0x8b, 0xef, 0x07, 0x79, 0x21, 0xee, + 0xe2, 0xfb, 0x41, 0x6e, 0x3c, 0x3b, 0x61, 0xfa, 0x53, 0x62, 0xca, 0xc5, 0xa6, 0x3f, 0x3b, 0x9a, + 0x5d, 0x6c, 0xfa, 0x73, 0x82, 0xd8, 0x82, 0x58, 0x27, 0xe2, 0xbd, 0xf9, 0x62, 0x9d, 0x1e, 0x9d, + 0xae, 0x5c, 0x1f, 0x20, 0xa0, 0x2c, 0x0f, 0xe1, 0x6f, 0x49, 0x61, 0x26, 0x4d, 0x46, 0x9c, 0x16, + 0xdf, 0x2d, 0xb4, 0x4c, 0x79, 0xd1, 0xe1, 0xca, 0xbd, 0x41, 0xd1, 0xbb, 0xe6, 0x98, 0x1d, 0x92, + 0xcd, 0x9f, 0x63, 0x61, 0x0c, 0x39, 0x7f, 0x8e, 0xc5, 0x91, 0xe0, 0x14, 0x47, 0x2b, 0xfb, 0x53, + 0x6b, 0xbd, 0x39, 0x5a, 0x85, 0xf8, 0x6f, 0x8f, 0x8e, 0x56, 0x31, 0xf0, 0x2b, 0x78, 0xe3, 0xd3, + 0x2b, 0x40, 0xf2, 0xbd, 0xf1, 0xb9, 0x05, 0x27, 0xf9, 0xde, 0xf8, 0xfc, 0x82, 0x13, 0xc1, 0x83, + 0x97, 0x55, 0xd1, 0x90, 0xef, 0xc1, 0x2b, 0x28, 0xa2, 0xc8, 0xf7, 0xe0, 0x15, 0x15, 0x51, 0x08, + 0x86, 0x2b, 0x33, 0xd2, 0x8c, 0xef, 0xf4, 0xb4, 0x19, 0x19, 0x91, 0xee, 0xca, 0xdd, 0x01, 0xb1, + 0x83, 0x09, 0xae, 0x6a, 0x1f, 0x7d, 0xba, 0x20, 0x7d, 0xfc, 0xe9, 0x82, 0xf4, 0x83, 0x4f, 0x17, + 0xa4, 0x5f, 0xfb, 0x6c, 0x61, 0xe8, 0xe3, 0xcf, 0x16, 0x86, 0xfe, 0xed, 0xb3, 0x85, 0xa1, 0xf7, + 0x37, 0x85, 0x92, 0x86, 0x9a, 0x55, 0xbb, 0xc2, 0xf2, 0x9f, 0x97, 0xa3, 0xf0, 0xc0, 0x15, 0x1e, + 0x1e, 0xb8, 0x12, 0xd4, 0x29, 0x2c, 0xa7, 0xff, 0xff, 0x9d, 0x6a, 0x63, 0xec, 0x7f, 0xff, 0x73, + 0xfd, 0x7f, 0x03, 0x00, 0x00, 0xff, 0xff, 0x34, 0x2c, 0x89, 0x83, 0x00, 0x6a, 0x00, 0x00, } // Reference imports to suppress errors if they are not otherwise used. @@ -10094,6 +10114,11 @@ func (m *Bucket) MarshalToSizedBuffer(dAtA []byte) (int, error) { _ = i var l int _ = l + if m.OffChainStatus != 0 { + i = encodeVarintMetadata(dAtA, i, uint64(m.OffChainStatus)) + i-- + dAtA[i] = 0x58 + } if len(m.StorageSize) > 0 { i -= len(m.StorageSize) copy(dAtA[i:], m.StorageSize) @@ -10345,6 +10370,11 @@ func (m *VGFInfoBucket) MarshalToSizedBuffer(dAtA []byte) (int, error) { _ = i var l int _ = l + if m.OffChainStatus != 0 { + i = encodeVarintMetadata(dAtA, i, uint64(m.OffChainStatus)) + i-- + dAtA[i] = 0x60 + } if len(m.StorageSize) > 0 { i -= len(m.StorageSize) copy(dAtA[i:], m.StorageSize) @@ -15626,6 +15656,9 @@ func (m *Bucket) Size() (n int) { if l > 0 { n += 1 + l + sovMetadata(uint64(l)) } + if m.OffChainStatus != 0 { + n += 1 + sovMetadata(uint64(m.OffChainStatus)) + } return n } @@ -15742,6 +15775,9 @@ func (m *VGFInfoBucket) Size() (n int) { if l > 0 { n += 1 + l + sovMetadata(uint64(l)) } + if m.OffChainStatus != 0 { + n += 1 + sovMetadata(uint64(m.OffChainStatus)) + } return n } @@ -18243,6 +18279,25 @@ func (m *Bucket) Unmarshal(dAtA []byte) error { } m.StorageSize = string(dAtA[iNdEx:postIndex]) iNdEx = postIndex + case 11: + if wireType != 0 { + return fmt.Errorf("proto: wrong wireType = %d for field OffChainStatus", wireType) + } + m.OffChainStatus = 0 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowMetadata + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + m.OffChainStatus |= int32(b&0x7F) << shift + if b < 0x80 { + break + } + } default: iNdEx = preIndex skippy, err := skipMetadata(dAtA[iNdEx:]) @@ -19096,6 +19151,25 @@ func (m *VGFInfoBucket) Unmarshal(dAtA []byte) error { } m.StorageSize = string(dAtA[iNdEx:postIndex]) iNdEx = postIndex + case 12: + if wireType != 0 { + return fmt.Errorf("proto: wrong wireType = %d for field OffChainStatus", wireType) + } + m.OffChainStatus = 0 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowMetadata + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + m.OffChainStatus |= int32(b&0x7F) << shift + if b < 0x80 { + break + } + } default: iNdEx = preIndex skippy, err := skipMetadata(dAtA[iNdEx:]) diff --git a/proto/buf.lock b/proto/buf.lock index 06bf2d66f..a8ea9c03a 100644 --- a/proto/buf.lock +++ b/proto/buf.lock @@ -4,8 +4,8 @@ deps: - remote: buf.build owner: bnb-chain repository: greenfield - commit: 16b960188d01415ebab7842e0072229b - digest: shake256:b0110cdf6cddc068063cf750dedef8a8cc9f8c8797ed82ae7f3f8853c521c7d83a2d798d6b36c1eff9ae469c8d20dec11a4dcfe5dcf0ca49b32d43297802e15b + commit: 02a0dc41f2ea4c5091af30b8df030b01 + digest: shake256:8cf6ee362658819720536083b7136fd4bc4bc3d43b327f885d005cb95f2b024372ac591aff60505bcaf6bd4bd4286860dd15376c8d7d3a35d96ebac49095ed71 - remote: buf.build owner: cosmos repository: cosmos-proto diff --git a/proto/modular/metadata/types/metadata.proto b/proto/modular/metadata/types/metadata.proto index cf2a89f5c..2d2241110 100644 --- a/proto/modular/metadata/types/metadata.proto +++ b/proto/modular/metadata/types/metadata.proto @@ -40,6 +40,8 @@ message Bucket { int64 update_time = 9; // storage_size defines the size of bucket string storage_size = 10; + // off_chain_status defines the status of a bucket in the off-chain storage + int32 off_chain_status = 11; } // Object is the structure for user object @@ -100,6 +102,8 @@ message VGFInfoBucket { greenfield.virtualgroup.GlobalVirtualGroupFamily vgf = 10; // storage_size defines the size of bucket string storage_size = 11; + // off_chain_status defines the status of a bucket in the off-chain storage + int32 off_chain_status = 12; } // PaymentAccount is the structure for user payment account info diff --git a/store/bsdb/bucket_schema.go b/store/bsdb/bucket_schema.go index b34efc71a..f94ebf191 100644 --- a/store/bsdb/bucket_schema.go +++ b/store/bsdb/bucket_schema.go @@ -61,6 +61,11 @@ type Bucket struct { UpdateTime int64 `gorm:"column:update_time"` // Tags Tags datatypes.JSON `gorm:"column:tags;TYPE:json"` // tags + // OffChainStatus represents the status of a bucket in the off-chain storage. + // It is used to track the current state of the bucket with respect to off-chain operations, + // 1 means 0001 -> OffChainStatusIsLimited is true + // 0 means 0000 -> OffChainStatusIsLimited is false + OffChainStatus int `gorm:"column:off_chain_status;type:int"` } // TableName is used to set Bucket table name in database