mirror of
https://github.com/luxfi/utxo.git
synced 2026-07-27 03:39:23 +00:00
chore: sync with node requirements
This commit is contained in:
+3
-3
@@ -7,7 +7,7 @@ import (
|
||||
"errors"
|
||||
"fmt"
|
||||
|
||||
consensusctx "github.com/luxfi/consensus/context"
|
||||
"github.com/luxfi/consensus/runtime"
|
||||
|
||||
"github.com/luxfi/address"
|
||||
"github.com/luxfi/constants"
|
||||
@@ -45,10 +45,10 @@ type AddressManager interface {
|
||||
}
|
||||
|
||||
type addressManager struct {
|
||||
ctx *consensusctx.Context
|
||||
ctx *runtime.Runtime
|
||||
}
|
||||
|
||||
func NewAddressManager(ctx *consensusctx.Context) AddressManager {
|
||||
func NewAddressManager(ctx *runtime.Runtime) AddressManager {
|
||||
return &addressManager{
|
||||
ctx: ctx,
|
||||
}
|
||||
|
||||
+2
-2
@@ -7,7 +7,7 @@ import (
|
||||
"errors"
|
||||
"fmt"
|
||||
|
||||
consensusctx "github.com/luxfi/consensus/context"
|
||||
"github.com/luxfi/consensus/runtime"
|
||||
|
||||
"github.com/luxfi/ids"
|
||||
"github.com/luxfi/vm/types"
|
||||
@@ -47,7 +47,7 @@ func (t *BaseTx) NumCredentials() int {
|
||||
}
|
||||
|
||||
// Verify ensures that transaction metadata is valid
|
||||
func (t *BaseTx) Verify(ctx *consensusctx.Context) error {
|
||||
func (t *BaseTx) Verify(ctx *runtime.Runtime) error {
|
||||
switch {
|
||||
case t == nil:
|
||||
return ErrNilTx
|
||||
|
||||
@@ -14,7 +14,7 @@ require (
|
||||
github.com/luxfi/geth v1.16.69
|
||||
github.com/luxfi/ids v1.2.9
|
||||
github.com/luxfi/keychain v1.0.1
|
||||
github.com/luxfi/log v1.2.1
|
||||
github.com/luxfi/log v1.3.0
|
||||
github.com/luxfi/math v1.2.3
|
||||
github.com/luxfi/metric v1.4.10
|
||||
github.com/luxfi/timer v1.0.1
|
||||
@@ -47,6 +47,8 @@ require (
|
||||
github.com/luxfi/sampler v1.0.0 // indirect
|
||||
github.com/luxfi/sdk v1.16.42 // indirect
|
||||
github.com/luxfi/tls v1.0.2 // indirect
|
||||
github.com/mattn/go-colorable v0.1.14 // indirect
|
||||
github.com/mattn/go-isatty v0.0.20 // indirect
|
||||
github.com/melbahja/goph v1.4.0 // indirect
|
||||
github.com/mr-tron/base58 v1.2.0 // indirect
|
||||
github.com/munnerz/goautoneg v0.0.0-20191010083416-a7dc8b61c822 // indirect
|
||||
@@ -69,6 +71,11 @@ require (
|
||||
golang.org/x/sys v0.39.0 // indirect
|
||||
gonum.org/v1/gonum v0.16.0 // indirect
|
||||
google.golang.org/protobuf v1.36.11 // indirect
|
||||
gopkg.in/natefinch/lumberjack.v2 v2.2.1 // indirect
|
||||
gopkg.in/yaml.v3 v3.0.1 // indirect
|
||||
)
|
||||
|
||||
replace github.com/luxfi/log => ../log
|
||||
|
||||
replace github.com/luxfi/consensus => ../consensus
|
||||
|
||||
replace github.com/luxfi/api => ../api
|
||||
|
||||
@@ -110,8 +110,7 @@ github.com/luxfi/ids v1.2.9 h1:+yjdhXW99drnd2Zlp1u/p8k3G23W3/1btJQ4ogHawUI=
|
||||
github.com/luxfi/ids v1.2.9/go.mod h1:khJOEdOPxd22yn0jcVrnbX1ADa0GHn5Y74gvCzN5BYc=
|
||||
github.com/luxfi/keychain v1.0.1 h1:8tTzPnZSi0M6UtKRBCypnGFrLNry9BvWfS5ol33yDF0=
|
||||
github.com/luxfi/keychain v1.0.1/go.mod h1:X7HLk5QRZ1VHJxovAyBL6z7f/nlosoXlveEtvUGhoaw=
|
||||
github.com/luxfi/log v1.2.1 h1:L2JM8MjGPF8rBnY+EXODS9x5OQTGSgeQ1SPFmeB+oPY=
|
||||
github.com/luxfi/log v1.2.1/go.mod h1:0vJzb4Hl9fvgwWDMKcbCD/SYH3bO0iSmgZMcYdfdl1o=
|
||||
github.com/luxfi/logger v1.3.0 h1:Bo0jw40+QTqSBttGCkWe94tVz405Oo5w8qPgCo6Qp1g=
|
||||
github.com/luxfi/math v1.2.3 h1:BgvIFw/srPXFLbcqtoDhLJOfmBsn86GPA1iWgsoyUb4=
|
||||
github.com/luxfi/math v1.2.3/go.mod h1:C8STnF2H+D6rqBPt248CiWY2TGuJgdtv/+4UqrT15iM=
|
||||
github.com/luxfi/math/big v0.1.0 h1:Vz4c0RsZVPdIKPsHPgAJChH/R3p15WHRUz7LkLf+NIQ=
|
||||
@@ -134,6 +133,8 @@ github.com/luxfi/utils v1.1.1 h1:pbzLLmwt+FPZX23sPur4FHfe0TodnGIj0FK7G/mIxf0=
|
||||
github.com/luxfi/utils v1.1.1/go.mod h1:DL7634uXEcCu2tCBll0bmX0SVnMJeABbmhm5NkLMu78=
|
||||
github.com/luxfi/vm v1.0.16 h1:IOTuMZUAKJ5i40GcWHs9FqhnC4Dd/j2Rq34kdPPYb1U=
|
||||
github.com/luxfi/vm v1.0.16/go.mod h1:WVRRGWk2xbCDEMfsYmTrDIo839O1eIInlR8JT+BhZgo=
|
||||
github.com/mattn/go-colorable v0.1.14 h1:9A9LHSqF/7dyVVX6g0U9cwm9pG3kP9gSzcuIPHPsaIE=
|
||||
github.com/mattn/go-isatty v0.0.20 h1:xfD0iDuEKnDkl03q4limB+vH+GxLEtL/jb4xVJSWWEY=
|
||||
github.com/melbahja/goph v1.4.0 h1:z0PgDbBFe66lRYl3v5dGb9aFgPy0kotuQ37QOwSQFqs=
|
||||
github.com/melbahja/goph v1.4.0/go.mod h1:uG+VfK2Dlhk+O32zFrRlc3kYKTlV6+BtvPWd/kK7U68=
|
||||
github.com/mr-tron/base58 v1.2.0 h1:T/HDJBh4ZCPbU39/+c3rRvE0uKBQlU27+QI8LJ4t64o=
|
||||
@@ -273,8 +274,6 @@ gopkg.in/check.v1 v0.0.0-20161208181325-20d25e280405/go.mod h1:Co6ibVJAznAaIkqp8
|
||||
gopkg.in/check.v1 v1.0.0-20201130134442-10cb98267c6c h1:Hei/4ADfdWqJk1ZMxUNpqntNwaWcugrBjAiHlqqRiVk=
|
||||
gopkg.in/check.v1 v1.0.0-20201130134442-10cb98267c6c/go.mod h1:JHkPIbrfpd72SG/EVd6muEfDQjcINNoR0C8j2r3qZ4Q=
|
||||
gopkg.in/fsnotify.v1 v1.4.7/go.mod h1:Tz8NjZHkW78fSQdbUxIjBTcgA1z1m8ZHf0WmKUhAMys=
|
||||
gopkg.in/natefinch/lumberjack.v2 v2.2.1 h1:bBRl1b0OH9s/DuPhuXpNl+VtCaJXFZ5/uEFST95x9zc=
|
||||
gopkg.in/natefinch/lumberjack.v2 v2.2.1/go.mod h1:YD8tP3GAjkrDg1eZH7EGmyESg/lsYskCTPBJVb9jqSc=
|
||||
gopkg.in/tomb.v1 v1.0.0-20141024135613-dd632973f1e7/go.mod h1:dt/ZhP58zS4L8KSrWDmTeBkI65Dw0HsyUHuEVlX15mw=
|
||||
gopkg.in/yaml.v2 v2.2.1/go.mod h1:hI93XBmqTisBFMUTm0b8Fm+jr3Dg1NNxqwp+5A1VGuI=
|
||||
gopkg.in/yaml.v2 v2.2.4/go.mod h1:hI93XBmqTisBFMUTm0b8Fm+jr3Dg1NNxqwp+5A1VGuI=
|
||||
|
||||
@@ -17,7 +17,7 @@ import (
|
||||
|
||||
reflect "reflect"
|
||||
|
||||
consensusctx "github.com/luxfi/consensus/context"
|
||||
"github.com/luxfi/consensus/runtime"
|
||||
|
||||
gomock "go.uber.org/mock/gomock"
|
||||
)
|
||||
@@ -75,7 +75,7 @@ func (mr *MockTransferableInMockRecorder) Cost() *gomock.Call {
|
||||
}
|
||||
|
||||
// InitCtx mocks base method.
|
||||
func (m *MockTransferableIn) InitCtx(arg0 *consensusctx.Context) {
|
||||
func (m *MockTransferableIn) InitCtx(arg0 *runtime.Runtime) {
|
||||
m.ctrl.T.Helper()
|
||||
m.ctrl.Call(m, "InitCtx", arg0)
|
||||
}
|
||||
|
||||
@@ -16,7 +16,7 @@ import (
|
||||
"context"
|
||||
"reflect"
|
||||
|
||||
consensusctx "github.com/luxfi/consensus/context"
|
||||
"github.com/luxfi/consensus/runtime"
|
||||
verify "github.com/luxfi/vm/components/verify"
|
||||
gomock "go.uber.org/mock/gomock"
|
||||
)
|
||||
@@ -61,7 +61,7 @@ func (mr *MockTransferableOutMockRecorder) Amount() *gomock.Call {
|
||||
}
|
||||
|
||||
// InitCtx mocks base method.
|
||||
func (m *MockTransferableOut) InitCtx(arg0 *consensusctx.Context) {
|
||||
func (m *MockTransferableOut) InitCtx(arg0 *runtime.Runtime) {
|
||||
m.ctrl.T.Helper()
|
||||
m.ctrl.Call(m, "InitCtx", arg0)
|
||||
}
|
||||
|
||||
+1
-1
@@ -13,7 +13,7 @@ import (
|
||||
"github.com/luxfi/crypto/hash"
|
||||
"github.com/luxfi/crypto/secp256k1"
|
||||
"github.com/luxfi/ids"
|
||||
"github.com/luxfi/log"
|
||||
log "github.com/luxfi/log"
|
||||
"github.com/luxfi/utxo/secp256k1fx"
|
||||
)
|
||||
|
||||
|
||||
@@ -6,7 +6,7 @@ package nftfx
|
||||
import (
|
||||
"errors"
|
||||
|
||||
consensusctx "github.com/luxfi/consensus/context"
|
||||
"github.com/luxfi/consensus/runtime"
|
||||
|
||||
"github.com/luxfi/vm/components/verify"
|
||||
"github.com/luxfi/utxo/secp256k1fx"
|
||||
@@ -22,13 +22,13 @@ type MintOperation struct {
|
||||
Outputs []*secp256k1fx.OutputOwners `serialize:"true" json:"outputs"`
|
||||
}
|
||||
|
||||
func (op *MintOperation) InitCtx(ctx *consensusctx.Context) {
|
||||
func (op *MintOperation) InitCtx(ctx *runtime.Runtime) {
|
||||
for _, out := range op.Outputs {
|
||||
out.InitCtx(ctx)
|
||||
}
|
||||
}
|
||||
|
||||
func (op *MintOperation) InitializeContext(ctx *consensusctx.Context) error {
|
||||
func (op *MintOperation) InitializeContext(ctx *runtime.Runtime) error {
|
||||
op.InitCtx(ctx)
|
||||
return nil
|
||||
}
|
||||
|
||||
@@ -6,7 +6,7 @@ package nftfx
|
||||
import (
|
||||
"errors"
|
||||
|
||||
consensusctx "github.com/luxfi/consensus/context"
|
||||
"github.com/luxfi/consensus/runtime"
|
||||
|
||||
"github.com/luxfi/vm/components/verify"
|
||||
"github.com/luxfi/utxo/secp256k1fx"
|
||||
@@ -19,11 +19,11 @@ type TransferOperation struct {
|
||||
Output TransferOutput `serialize:"true" json:"output"`
|
||||
}
|
||||
|
||||
func (op *TransferOperation) InitCtx(ctx *consensusctx.Context) {
|
||||
func (op *TransferOperation) InitCtx(ctx *runtime.Runtime) {
|
||||
op.Output.OutputOwners.InitCtx(ctx)
|
||||
}
|
||||
|
||||
func (op *TransferOperation) InitializeContext(ctx *consensusctx.Context) error {
|
||||
func (op *TransferOperation) InitializeContext(ctx *runtime.Runtime) error {
|
||||
op.InitCtx(ctx)
|
||||
return nil
|
||||
}
|
||||
|
||||
@@ -4,7 +4,7 @@
|
||||
package propertyfx
|
||||
|
||||
import (
|
||||
consensusctx "github.com/luxfi/consensus/context"
|
||||
"github.com/luxfi/consensus/runtime"
|
||||
"github.com/luxfi/vm/components/verify"
|
||||
"github.com/luxfi/utxo/secp256k1fx"
|
||||
)
|
||||
@@ -13,10 +13,10 @@ type BurnOperation struct {
|
||||
secp256k1fx.Input `serialize:"true"`
|
||||
}
|
||||
|
||||
func (*BurnOperation) InitCtx(*consensusctx.Context) {}
|
||||
func (*BurnOperation) InitCtx(*runtime.Runtime) {}
|
||||
|
||||
// InitializeContext implements the fxs.FxOperation interface
|
||||
func (*BurnOperation) InitializeContext(*consensusctx.Context) error {
|
||||
func (*BurnOperation) InitializeContext(*runtime.Runtime) error {
|
||||
return nil
|
||||
}
|
||||
|
||||
|
||||
@@ -13,7 +13,7 @@ import (
|
||||
"github.com/luxfi/crypto/hash"
|
||||
"github.com/luxfi/crypto/secp256k1"
|
||||
"github.com/luxfi/ids"
|
||||
"github.com/luxfi/log"
|
||||
log "github.com/luxfi/log"
|
||||
"github.com/luxfi/utxo/secp256k1fx"
|
||||
)
|
||||
|
||||
|
||||
@@ -6,7 +6,7 @@ package propertyfx
|
||||
import (
|
||||
"errors"
|
||||
|
||||
consensusctx "github.com/luxfi/consensus/context"
|
||||
"github.com/luxfi/consensus/runtime"
|
||||
|
||||
"github.com/luxfi/vm/components/verify"
|
||||
"github.com/luxfi/utxo/secp256k1fx"
|
||||
@@ -20,13 +20,13 @@ type MintOperation struct {
|
||||
OwnedOutput OwnedOutput `serialize:"true" json:"ownedOutput"`
|
||||
}
|
||||
|
||||
func (op *MintOperation) InitCtx(ctx *consensusctx.Context) {
|
||||
func (op *MintOperation) InitCtx(ctx *runtime.Runtime) {
|
||||
op.MintOutput.OutputOwners.InitCtx(ctx)
|
||||
op.OwnedOutput.OutputOwners.InitCtx(ctx)
|
||||
}
|
||||
|
||||
// InitializeContext implements the fxs.FxOperation interface
|
||||
func (op *MintOperation) InitializeContext(ctx *consensusctx.Context) error {
|
||||
func (op *MintOperation) InitializeContext(ctx *runtime.Runtime) error {
|
||||
op.InitCtx(ctx)
|
||||
return nil
|
||||
}
|
||||
|
||||
@@ -4,7 +4,7 @@
|
||||
package propertyfx
|
||||
|
||||
import (
|
||||
consensusctx "github.com/luxfi/consensus/context"
|
||||
"github.com/luxfi/consensus/runtime"
|
||||
|
||||
"github.com/luxfi/vm/components/verify"
|
||||
"github.com/luxfi/utxo/secp256k1fx"
|
||||
@@ -18,6 +18,6 @@ type MintOutput struct {
|
||||
secp256k1fx.OutputOwners `serialize:"true"`
|
||||
}
|
||||
|
||||
func (out *MintOutput) InitCtx(ctx *consensusctx.Context) {
|
||||
func (out *MintOutput) InitCtx(ctx *runtime.Runtime) {
|
||||
out.OutputOwners.InitCtx(ctx)
|
||||
}
|
||||
|
||||
+1
-1
@@ -53,7 +53,7 @@ func (fx *Fx) Initialize(vmIntf interface{}) error {
|
||||
}
|
||||
|
||||
log := fx.VM.Logger()
|
||||
if log != nil {
|
||||
if !log.IsZero() {
|
||||
log.Debug("initializing secp256k1 fx")
|
||||
}
|
||||
|
||||
|
||||
@@ -12,7 +12,7 @@ import (
|
||||
"github.com/luxfi/codec/linearcodec"
|
||||
"github.com/luxfi/crypto/secp256k1"
|
||||
"github.com/luxfi/ids"
|
||||
"github.com/luxfi/log"
|
||||
log "github.com/luxfi/log"
|
||||
"github.com/luxfi/crypto/cb58"
|
||||
)
|
||||
|
||||
|
||||
@@ -6,7 +6,7 @@ package secp256k1fx
|
||||
import (
|
||||
"errors"
|
||||
|
||||
consensusctx "github.com/luxfi/consensus/context"
|
||||
"github.com/luxfi/consensus/runtime"
|
||||
"github.com/luxfi/vm/components/verify"
|
||||
)
|
||||
|
||||
@@ -18,12 +18,12 @@ type MintOperation struct {
|
||||
TransferOutput TransferOutput `serialize:"true" json:"transferOutput"`
|
||||
}
|
||||
|
||||
func (op *MintOperation) InitCtx(ctx *consensusctx.Context) {
|
||||
func (op *MintOperation) InitCtx(ctx *runtime.Runtime) {
|
||||
op.MintOutput.OutputOwners.InitCtx(ctx)
|
||||
op.TransferOutput.OutputOwners.InitCtx(ctx)
|
||||
}
|
||||
|
||||
func (op *MintOperation) InitializeContext(ctx *consensusctx.Context) error {
|
||||
func (op *MintOperation) InitializeContext(ctx *runtime.Runtime) error {
|
||||
op.InitCtx(ctx)
|
||||
return nil
|
||||
}
|
||||
|
||||
@@ -8,7 +8,7 @@ import (
|
||||
"errors"
|
||||
"reflect"
|
||||
|
||||
consensusctx "github.com/luxfi/consensus/context"
|
||||
"github.com/luxfi/consensus/runtime"
|
||||
|
||||
"github.com/luxfi/address"
|
||||
"github.com/luxfi/ids"
|
||||
@@ -33,12 +33,12 @@ type OutputOwners struct {
|
||||
// ctx is used in MarshalJSON to convert Addrs into human readable
|
||||
// format with ChainID and NetworkID. Unexported because we don't use
|
||||
// it outside this object.
|
||||
ctx *consensusctx.Context `serialize:"-"`
|
||||
ctx *runtime.Runtime `serialize:"-"`
|
||||
}
|
||||
|
||||
// InitCtx allows addresses to be formatted into their human readable format
|
||||
// during json marshalling.
|
||||
func (out *OutputOwners) InitCtx(ctx *consensusctx.Context) {
|
||||
func (out *OutputOwners) InitCtx(ctx *runtime.Runtime) {
|
||||
out.ctx = ctx
|
||||
}
|
||||
|
||||
@@ -132,7 +132,7 @@ func (out *OutputOwners) Sort() {
|
||||
// formatAddress formats a given [addr] into human readable format using
|
||||
// [ChainID] and [NetworkID] if a non-nil [ctx] is provided. If [ctx] is not
|
||||
// provided, the address will be returned in cb58 format.
|
||||
func formatAddress(ctx *consensusctx.Context, addr ids.ShortID) (string, error) {
|
||||
func formatAddress(ctx *runtime.Runtime, addr ids.ShortID) (string, error) {
|
||||
if ctx == nil {
|
||||
return addr.String(), nil
|
||||
}
|
||||
|
||||
@@ -6,7 +6,7 @@ package secp256k1fx
|
||||
import (
|
||||
"errors"
|
||||
|
||||
consensusctx "github.com/luxfi/consensus/context"
|
||||
"github.com/luxfi/consensus/runtime"
|
||||
)
|
||||
|
||||
var ErrNoValueInput = errors.New("input has no value")
|
||||
@@ -16,7 +16,7 @@ type TransferInput struct {
|
||||
Input `serialize:"true"`
|
||||
}
|
||||
|
||||
func (*TransferInput) InitCtx(*consensusctx.Context) {}
|
||||
func (*TransferInput) InitCtx(*runtime.Runtime) {}
|
||||
|
||||
// Amount returns the quantity of the asset this input produces
|
||||
func (in *TransferInput) Amount() uint64 {
|
||||
|
||||
@@ -8,7 +8,7 @@ import (
|
||||
"encoding/json"
|
||||
"errors"
|
||||
|
||||
consensusctx "github.com/luxfi/consensus/context"
|
||||
"github.com/luxfi/consensus/runtime"
|
||||
"github.com/luxfi/vm/components/verify"
|
||||
)
|
||||
|
||||
@@ -31,7 +31,7 @@ func (out *TransferOutput) InitializeWithContext(ctx context.Context) error {
|
||||
}
|
||||
|
||||
// InitCtx sets the context for address formatting
|
||||
func (out *TransferOutput) InitCtx(ctx *consensusctx.Context) {
|
||||
func (out *TransferOutput) InitCtx(ctx *runtime.Runtime) {
|
||||
out.OutputOwners.InitCtx(ctx)
|
||||
}
|
||||
|
||||
|
||||
+1
-1
@@ -5,7 +5,7 @@ package secp256k1fx
|
||||
|
||||
import (
|
||||
"github.com/luxfi/codec"
|
||||
"github.com/luxfi/log"
|
||||
log "github.com/luxfi/log"
|
||||
"github.com/luxfi/timer/mockable"
|
||||
)
|
||||
|
||||
|
||||
+3
-3
@@ -4,7 +4,7 @@
|
||||
package utxo
|
||||
|
||||
import (
|
||||
consensusctx "github.com/luxfi/consensus/context"
|
||||
"github.com/luxfi/consensus/runtime"
|
||||
"github.com/luxfi/vm/components/verify"
|
||||
)
|
||||
|
||||
@@ -20,7 +20,7 @@ type TestState struct {
|
||||
Err error `serialize:"-" json:"-"`
|
||||
}
|
||||
|
||||
func (*TestState) InitCtx(*consensusctx.Context) {}
|
||||
func (*TestState) InitCtx(*runtime.Runtime) {}
|
||||
|
||||
func (v *TestState) Verify() error {
|
||||
return v.Err
|
||||
@@ -32,7 +32,7 @@ type TestTransferable struct {
|
||||
Val uint64 `serialize:"true"`
|
||||
}
|
||||
|
||||
func (*TestTransferable) InitCtx(*consensusctx.Context) {}
|
||||
func (*TestTransferable) InitCtx(*runtime.Runtime) {}
|
||||
|
||||
func (t *TestTransferable) Amount() uint64 {
|
||||
return t.Val
|
||||
|
||||
+3
-3
@@ -9,7 +9,7 @@ import (
|
||||
"sort"
|
||||
|
||||
"github.com/luxfi/codec"
|
||||
consensusctx "github.com/luxfi/consensus/context"
|
||||
"github.com/luxfi/consensus/runtime"
|
||||
"github.com/luxfi/crypto/secp256k1"
|
||||
"github.com/luxfi/ids"
|
||||
"github.com/luxfi/vm/components/verify"
|
||||
@@ -56,7 +56,7 @@ type TransferableIn interface {
|
||||
type TransferableOut interface {
|
||||
verify.State
|
||||
Amounter
|
||||
InitCtx(*consensusctx.Context)
|
||||
InitCtx(*runtime.Runtime)
|
||||
}
|
||||
|
||||
type TransferableOutput struct {
|
||||
@@ -66,7 +66,7 @@ type TransferableOutput struct {
|
||||
Out TransferableOut `serialize:"true" json:"output"`
|
||||
}
|
||||
|
||||
func (out *TransferableOutput) InitCtx(ctx *consensusctx.Context) {
|
||||
func (out *TransferableOutput) InitCtx(ctx *runtime.Runtime) {
|
||||
out.Out.InitCtx(ctx)
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user